Javascript 如何合并羽毛状三角洲中的相邻变化

Javascript 如何合并羽毛状三角洲中的相邻变化,javascript,quill,Javascript,Quill,我正在编写一个应用程序,它可以永久记录对富文本文档的所有更改。我使用Quill作为文本编辑器,因此通过订阅text change事件,我可以在用户对文档所做的所有更改发生时收到通知。问题是,更改是单个字符的更改,因此比我需要的更详细 如果我使用Delta.concat将更改收集成一个Delta(然后序列化并保存到数据库),那么用户键入的每个字母都将由retain和insert条目表示,因此数据库记录将比需要的大很多倍,而历史将变得不必要的琐碎 理想情况下,如果用户键入一整段文本,然后将一个词加粗

我正在编写一个应用程序,它可以永久记录对富文本文档的所有更改。我使用Quill作为文本编辑器,因此通过订阅
text change
事件,我可以在用户对文档所做的所有更改发生时收到通知。问题是,更改是单个字符的更改,因此比我需要的更详细

如果我使用
Delta.concat
将更改收集成一个Delta(然后序列化并保存到数据库),那么用户键入的每个字母都将由
retain
insert
条目表示,因此数据库记录将比需要的大很多倍,而历史将变得不必要的琐碎

理想情况下,如果用户键入一整段文本,然后将一个词加粗,然后再键入一些,那么我希望用增量中的大约三个操作来表示,而不是数百个操作

如果我使用
Delta.compose
来收集更改(如中),它会将更改平展到最小数量,但它会丢失进行更改的顺序。因此,如果用户键入一整段文本,将一个词加粗,然后再键入一些,它将变平为常规文本+加粗文本+常规文本,这不是更改的顺序

我想我需要的是一种展平相邻更改的方法,而不是非相邻更改-有没有任何方法可以在不手动读取和修改增量的情况下做到这一点