2017-05-18 4 views
0

私はQuillドキュメントで一時的なハイライトを実装したいと思います。Quillドキュメントの一時的な書式設定は?

たとえば、一致するテキスト範囲のテキストの色を設定することによって、現在のドキュメント内のキーワードのすべてのインスタンスをユーザーが強調表示できる[検索]ボタンを想像してください。

私はこのようなもので、今日はそれを行うことができます。

var keyword = "hello"; 
var text = quill.getText(); 

var matchIndex = text.indexOf(keyword); 
while (matchIndex >= 0) { 
    quill.formatText(matchIndex, keyword.length, { "color" : "#f00" }); 
    matchIndex = text.indexOf(keyword, matchIndex + keyword.length); 
} 

しかし、私は、得られたデルタは、このドキュメントの正式な変更履歴に組み込むことにしたくありません。

quill.clearTransientFormats(); 

私もユーザーが有効になって過渡ハイライトを残しての選択肢を提供したいのですが...これらは単なる一過性のハイライトであり、私はこのような何かを離れてそれらをすべてクリアできるようにしたいのですが一方、彼らは自身の破壊的な変更を伴って文書を編集し、修正し続ける。

  • 破壊フォーマットは常に文書の歴史の中で持続デルタのシーケンスに記録されます。

    は基本的に、私は、フォーマットの2種類を持っていると思います。

  • 一時的な書式設定は、現在のビューにのみ適用されるため、ドキュメント履歴では無視されます。

このようなものを実装するにはどうすればよいでしょうか?

答えて

1

保存する前にデルタを後処理することをお勧めします。 composeで簡単に実現できます。

var length = aboutToBeStored.length(); 
var toStore = aboutToBeStored.compose(new Delta().retain(0, length, { color: null })); 
+0

意味があります。それは実際に私が期待していたよりもはるかにエレガントです...ありがとう。 – benjismith

関連する問題