Quill文档中的瞬态格式化?

时间:2017-05-18 22:03:11

标签: javascript quill

我想在Quill文档中实现瞬态突出显示。

例如,设想一个SEARCH按钮,用户可以通过设置匹配文本范围的文本颜色来突出显示当前文档中关键字的所有实例。

今天我能做到这一点,有这样的事情:

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();

我甚至想让用户选择启用瞬态高亮显示,同时他们继续使用自己的破坏性更改来编辑和修改文档。

基本上,我想要两种不同的格式:

  • 破坏性格式始终记录在文档历史记录中保留的增量序列中。
  • 文档历史记录中会忽略瞬态格式,因为它仅适用于当前视图。

实现这样的事情的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我建议在保存之前对delta进行后期处理。使用compose

可以非常轻松地实现这一目标
var length = aboutToBeStored.length();
var toStore = aboutToBeStored.compose(new Delta().retain(0, length, { color: null }));