Как выровнять дельта-вывод Quill?

#quill

#quill

Вопрос:

Похоже, что Quill представляет выходные данные в виде дельт для постепенного создания документа. Это полезно для отмены или во время редактирования документа. Но после сохранения документа этот дельта-вывод вообще бесполезен, требует больших затрат на хранение и затрудняет структурный переход по документу.

Например, содержимое одного блока кода будет:

 while (1) {
 i  ;
 j  ;
}
  

И дельта-выходные данные

 ops: Array(8)
0: {insert: "↵while (1) {"}
1: {attributes: {…}, insert: "↵"}
2: {insert: " i  ;"}
3: {attributes: {…}, insert: "↵"}
4: {insert: " j  ;"}
5: {attributes: {…}, insert: "↵"}
6: {insert: "}"}
7: {attributes: {…}, insert: "↵"}
length: 8
  

Как мне сгладить дельта-выходные данные до более простого вывода, который представляет документ структурно. В этом случае одна вставка с атрибутом «code block»?

Ответ №1:

Для сглаживания изменений можно использовать метод Delta.compose.

Вот пример из документации:

 const a = new Delta().insert('abc');
const b = new Delta().retain(1).delete(1);

const composed = a.compose(b);  // composed == new Delta().insert('ac');
  

Есть еще один пример того, как это использовать в примере с автосохранением на игровой площадке.