React + contenteditable要素もしくはDraft.jsを用いたワードプロセッサに、MS Wordのようなページの概念を導入する手法についての質問です。

現在、日本語組版に対応したワープロWebアプリケーションを作成したいと考えています。
それにあたって、いくつかの要件を定めました。

  • WYSIWYGであること
  • リッチテキストであること
  • 縦書きであること
  • 日本語組版に対応した文書を作成できること
  • 改ページの概念があること

具体的なイメージとして、以下のようなものを想定しています。
ページ区切りのイメージ



厳密な書式調整を行うため、1文字毎に対応するblock要素で囲みます。
縦書きの文章であるため、文字の向きは右→左。ページの方向もそれに合わせ、見開きになるように1段に2ページずつ配置します。


ページ区切りの具体的な実現方法についてですが、

  • 入力している文章はすべてひとつのcontenteditable要素に含まれている
    (1ページ毎にcontenteditableな要素や、Draft.jsのEditorコンポーネントを配置しない。あくまでページ部分はcontenteditableな要素の子要素)
  • 追加の文字入力時に、ページから文字がはみ出す場合は以降の文字をずらす

という要件を考慮した上で、以下のようなものを考えました。

画像の説明をここに入力

ページ間で文字が移動するとき、ページを示すBlock要素自体を前後にシフトさせるというものです。



以上を踏まえて2点、知恵をお借りしたいことがあります。

  • 文字入力を検出したとき、block要素の位置をずらす方法はありますか?
    (DOMを操作する感じでしょうか?)
  • 他にもっと良い方法等あればご教示下さい。(ただしJqueryを使わない方法でお願いします)