Quill 文档中的瞬态格式?

Transient formatting in a Quill document?

我想在 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();

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

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

实现类似功能的最佳方式是什么?

我建议只 post- 在保存之前处理增量。使用 compose:

可以很容易地实现
var length = aboutToBeStored.length();
var toStore = aboutToBeStored.compose(new Delta().retain(0, length, { color: null }));