React / Draft.js:WYSIWYGエディタのページ分割
React + contenteditable要素もしくはDraft.jsを用いたワードプロセッサに、MS Wordのようなページの概念を導入する手法についての質問です。
現在、日本語組版に対応したワープロWebアプリケーションを作成したいと考えています。
それにあたって、いくつかの要件を定めました。
- WYSIWYGであること
- リッチテキストであること
- 縦書きであること
- 日本語組版に対応した文書を作成できること
- 改ページの概念があること
厳密な書式調整を行うため、1文字毎に対応するblock要素で囲みます。
縦書きの文章であるため、文字の向きは右→左。ページの方向もそれに合わせ、見開きになるように1段に2ページずつ配置します。
ページ区切りの具体的な実現方法についてですが、
- 入力している文章はすべてひとつのcontenteditable要素に含まれている
(1ページ毎にcontenteditableな要素や、Draft.jsのEditorコンポーネントを配置しない。あくまでページ部分はcontenteditableな要素の子要素) - 追加の文字入力時に、ページから文字がはみ出す場合は以降の文字をずらす
という要件を考慮した上で、以下のようなものを考えました。
ページ間で文字が移動するとき、ページを示すBlock要素自体を前後にシフトさせるというものです。
以上を踏まえて2点、知恵をお借りしたいことがあります。
- 文字入力を検出したとき、block要素の位置をずらす方法はありますか?
(DOMを操作する感じでしょうか?) - 他にもっと良い方法等あればご教示下さい。(ただしJqueryを使わない方法でお願いします)