quoin-editor 1.1.2 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/ai.cjs +78 -78
  3. package/dist/ai.js +6 -6
  4. package/dist/catalogue.cjs +24 -24
  5. package/dist/catalogue.js +16 -16
  6. package/dist/{chunk-OIQAO7QU.js → chunk-2IY3LET7.js} +4 -4
  7. package/dist/{chunk-OIQAO7QU.js.map → chunk-2IY3LET7.js.map} +1 -1
  8. package/dist/{chunk-EDKQQKQR.js → chunk-3XPVCSFT.js} +6 -6
  9. package/dist/{chunk-EDKQQKQR.js.map → chunk-3XPVCSFT.js.map} +1 -1
  10. package/dist/{chunk-IVWFPFUG.js → chunk-4EJ4EGGH.js} +83 -35
  11. package/dist/chunk-4EJ4EGGH.js.map +1 -0
  12. package/dist/{chunk-VSUGJZ7G.cjs → chunk-4SRXM2VS.cjs} +161 -136
  13. package/dist/chunk-4SRXM2VS.cjs.map +1 -0
  14. package/dist/{chunk-K5HWMBWH.cjs → chunk-4T4TJ2QS.cjs} +9 -9
  15. package/dist/{chunk-K5HWMBWH.cjs.map → chunk-4T4TJ2QS.cjs.map} +1 -1
  16. package/dist/{chunk-V2ZBA5VC.js → chunk-4WRIGF7F.js} +8 -8
  17. package/dist/{chunk-V2ZBA5VC.js.map → chunk-4WRIGF7F.js.map} +1 -1
  18. package/dist/{chunk-AQNVYFEU.js → chunk-535R45JI.js} +6 -6
  19. package/dist/{chunk-AQNVYFEU.js.map → chunk-535R45JI.js.map} +1 -1
  20. package/dist/{chunk-PNMBRBAT.cjs → chunk-5QLDX75X.cjs} +4 -4
  21. package/dist/{chunk-PNMBRBAT.cjs.map → chunk-5QLDX75X.cjs.map} +1 -1
  22. package/dist/{chunk-PRXIYHSX.js → chunk-7GDKCDU4.js} +6 -6
  23. package/dist/{chunk-PRXIYHSX.js.map → chunk-7GDKCDU4.js.map} +1 -1
  24. package/dist/{chunk-JYO2T4MC.js → chunk-AD3NY7NA.js} +3 -3
  25. package/dist/{chunk-JYO2T4MC.js.map → chunk-AD3NY7NA.js.map} +1 -1
  26. package/dist/{chunk-J37ORWSG.js → chunk-B3RY7TN2.js} +7 -7
  27. package/dist/{chunk-J37ORWSG.js.map → chunk-B3RY7TN2.js.map} +1 -1
  28. package/dist/{chunk-EABO523V.cjs → chunk-BGPFGNCL.cjs} +31 -31
  29. package/dist/{chunk-EABO523V.cjs.map → chunk-BGPFGNCL.cjs.map} +1 -1
  30. package/dist/{chunk-QLDXQOHQ.js → chunk-BJTOLCRR.js} +7 -4
  31. package/dist/{chunk-QLDXQOHQ.js.map → chunk-BJTOLCRR.js.map} +1 -1
  32. package/dist/{chunk-OAAYF2EI.cjs → chunk-BM2GRZNM.cjs} +47 -30
  33. package/dist/chunk-BM2GRZNM.cjs.map +1 -0
  34. package/dist/{chunk-5LWJDRWD.js → chunk-BXSWZEA5.js} +3 -3
  35. package/dist/{chunk-5LWJDRWD.js.map → chunk-BXSWZEA5.js.map} +1 -1
  36. package/dist/{chunk-KFIE4OJE.cjs → chunk-C4MLW2QA.cjs} +15 -15
  37. package/dist/{chunk-KFIE4OJE.cjs.map → chunk-C4MLW2QA.cjs.map} +1 -1
  38. package/dist/{chunk-3G4ZWUUY.js → chunk-CSKKSXCE.js} +38 -19
  39. package/dist/chunk-CSKKSXCE.js.map +1 -0
  40. package/dist/{chunk-ZEQXMRJW.js → chunk-D4ISVKWS.js} +3 -3
  41. package/dist/{chunk-ZEQXMRJW.js.map → chunk-D4ISVKWS.js.map} +1 -1
  42. package/dist/{chunk-UGAOEZ3O.cjs → chunk-EXSNIIOR.cjs} +15 -15
  43. package/dist/{chunk-UGAOEZ3O.cjs.map → chunk-EXSNIIOR.cjs.map} +1 -1
  44. package/dist/{chunk-RUC5OZXO.js → chunk-GHNQKJMD.js} +3 -3
  45. package/dist/{chunk-RUC5OZXO.js.map → chunk-GHNQKJMD.js.map} +1 -1
  46. package/dist/{chunk-E52VO5JT.cjs → chunk-H3C3MJW5.cjs} +4 -4
  47. package/dist/{chunk-E52VO5JT.cjs.map → chunk-H3C3MJW5.cjs.map} +1 -1
  48. package/dist/{chunk-36OSSZDK.js → chunk-HPQM33PG.js} +6 -6
  49. package/dist/{chunk-36OSSZDK.js.map → chunk-HPQM33PG.js.map} +1 -1
  50. package/dist/{chunk-5DEPLPDS.cjs → chunk-I4KBYVSC.cjs} +28 -28
  51. package/dist/{chunk-5DEPLPDS.cjs.map → chunk-I4KBYVSC.cjs.map} +1 -1
  52. package/dist/{chunk-M5FREXRQ.cjs → chunk-LROGC3SI.cjs} +295 -245
  53. package/dist/chunk-LROGC3SI.cjs.map +1 -0
  54. package/dist/{chunk-XJ32XESJ.cjs → chunk-LXSVDRMH.cjs} +98 -98
  55. package/dist/{chunk-XJ32XESJ.cjs.map → chunk-LXSVDRMH.cjs.map} +1 -1
  56. package/dist/{chunk-KKRQDVBJ.cjs → chunk-O2VMWE4B.cjs} +24 -24
  57. package/dist/{chunk-KKRQDVBJ.cjs.map → chunk-O2VMWE4B.cjs.map} +1 -1
  58. package/dist/{chunk-JEFQNZO4.js → chunk-O4APV37F.js} +7 -7
  59. package/dist/{chunk-JEFQNZO4.js.map → chunk-O4APV37F.js.map} +1 -1
  60. package/dist/{chunk-5QNNF5ZJ.js → chunk-PX5CFG5J.js} +5 -5
  61. package/dist/{chunk-5QNNF5ZJ.js.map → chunk-PX5CFG5J.js.map} +1 -1
  62. package/dist/{chunk-BMEEEI43.cjs → chunk-RBYK3RGX.cjs} +13 -13
  63. package/dist/{chunk-BMEEEI43.cjs.map → chunk-RBYK3RGX.cjs.map} +1 -1
  64. package/dist/{chunk-JHA23OOK.js → chunk-RIGAO2QT.js} +6 -6
  65. package/dist/{chunk-JHA23OOK.js.map → chunk-RIGAO2QT.js.map} +1 -1
  66. package/dist/{chunk-6QLA3JOU.cjs → chunk-WYGSUSZF.cjs} +90 -90
  67. package/dist/{chunk-6QLA3JOU.cjs.map → chunk-WYGSUSZF.cjs.map} +1 -1
  68. package/dist/{chunk-6H76FAI3.cjs → chunk-WZA5S5EJ.cjs} +7 -4
  69. package/dist/{chunk-6H76FAI3.cjs.map → chunk-WZA5S5EJ.cjs.map} +1 -1
  70. package/dist/{chunk-ES2QYHXL.cjs → chunk-XT2ZKIYS.cjs} +45 -45
  71. package/dist/{chunk-ES2QYHXL.cjs.map → chunk-XT2ZKIYS.cjs.map} +1 -1
  72. package/dist/{chunk-G7HK4OHE.js → chunk-XWKFBLFO.js} +49 -24
  73. package/dist/chunk-XWKFBLFO.js.map +1 -0
  74. package/dist/{chunk-ZPGA5UIY.js → chunk-XYR7JW23.js} +7 -7
  75. package/dist/{chunk-ZPGA5UIY.js.map → chunk-XYR7JW23.js.map} +1 -1
  76. package/dist/{chunk-P3T5XBYW.cjs → chunk-XZ4NC3Q7.cjs} +6 -6
  77. package/dist/{chunk-P3T5XBYW.cjs.map → chunk-XZ4NC3Q7.cjs.map} +1 -1
  78. package/dist/{chunk-ABVSP2XR.cjs → chunk-YVMPIIMO.cjs} +292 -292
  79. package/dist/{chunk-ABVSP2XR.cjs.map → chunk-YVMPIIMO.cjs.map} +1 -1
  80. package/dist/{chunk-QAI3CM7V.cjs → chunk-YWPFC2PX.cjs} +55 -55
  81. package/dist/{chunk-QAI3CM7V.cjs.map → chunk-YWPFC2PX.cjs.map} +1 -1
  82. package/dist/comments.cjs +58 -58
  83. package/dist/comments.js +7 -7
  84. package/dist/diff.cjs +29 -32
  85. package/dist/diff.cjs.map +1 -1
  86. package/dist/diff.js +8 -11
  87. package/dist/diff.js.map +1 -1
  88. package/dist/docx.cjs +30 -30
  89. package/dist/docx.js +3 -3
  90. package/dist/embed.cjs +9 -9
  91. package/dist/embed.js +7 -7
  92. package/dist/emoji.cjs +9 -9
  93. package/dist/emoji.js +6 -6
  94. package/dist/engine.cjs +58 -58
  95. package/dist/engine.d.cts +4 -1
  96. package/dist/engine.d.ts +4 -1
  97. package/dist/engine.js +3 -3
  98. package/dist/find.cjs +10 -10
  99. package/dist/find.js +6 -6
  100. package/dist/headless.cjs +74 -74
  101. package/dist/headless.js +4 -4
  102. package/dist/index.cjs +86 -86
  103. package/dist/index.js +5 -5
  104. package/dist/math.cjs +10 -10
  105. package/dist/math.js +8 -8
  106. package/dist/mention.cjs +10 -10
  107. package/dist/mention.js +8 -8
  108. package/dist/presence.cjs +38 -38
  109. package/dist/presence.js +7 -7
  110. package/dist/stats.cjs +10 -10
  111. package/dist/stats.js +7 -7
  112. package/dist/styles.css +1 -1
  113. package/dist/table.cjs +25 -25
  114. package/dist/table.js +6 -6
  115. package/dist/toc.cjs +9 -9
  116. package/dist/toc.js +6 -6
  117. package/dist/view.cjs +4 -4
  118. package/dist/view.js +2 -2
  119. package/dist/yjs.cjs +125 -120
  120. package/dist/yjs.cjs.map +1 -1
  121. package/dist/yjs.js +11 -6
  122. package/dist/yjs.js.map +1 -1
  123. package/package.json +1 -1
  124. package/dist/chunk-3G4ZWUUY.js.map +0 -1
  125. package/dist/chunk-G7HK4OHE.js.map +0 -1
  126. package/dist/chunk-IVWFPFUG.js.map +0 -1
  127. package/dist/chunk-M5FREXRQ.cjs.map +0 -1
  128. package/dist/chunk-OAAYF2EI.cjs.map +0 -1
  129. package/dist/chunk-VSUGJZ7G.cjs.map +0 -1
package/dist/yjs.cjs CHANGED
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunkKFIE4OJE_cjs = require('./chunk-KFIE4OJE.cjs');
4
- var chunkM5FREXRQ_cjs = require('./chunk-M5FREXRQ.cjs');
5
- require('./chunk-OAAYF2EI.cjs');
6
- var chunk6H76FAI3_cjs = require('./chunk-6H76FAI3.cjs');
3
+ var chunkC4MLW2QA_cjs = require('./chunk-C4MLW2QA.cjs');
4
+ var chunkLROGC3SI_cjs = require('./chunk-LROGC3SI.cjs');
5
+ require('./chunk-BM2GRZNM.cjs');
6
+ var chunkWZA5S5EJ_cjs = require('./chunk-WZA5S5EJ.cjs');
7
7
  var Y = require('yjs');
8
8
 
9
9
  function _interopNamespace(e) {
@@ -43,7 +43,7 @@ function requiredRegions(schema) {
43
43
 
44
44
  // src/yjs/read-shared.ts
45
45
  function reader(required) {
46
- const spans = [chunkKFIE4OJE_cjs.emptySpan()];
46
+ const spans = [chunkC4MLW2QA_cjs.emptySpan()];
47
47
  const entries = /* @__PURE__ */ new Map();
48
48
  const markers = /* @__PURE__ */ new Map();
49
49
  const order = [];
@@ -78,11 +78,11 @@ function reader(required) {
78
78
  }
79
79
  }
80
80
  function marker(map) {
81
- span = chunkKFIE4OJE_cjs.emptySpan();
81
+ span = chunkC4MLW2QA_cjs.emptySpan();
82
82
  span.index = spans.length;
83
83
  spans.push(span);
84
84
  [open, stray] = [null, null];
85
- const fields = chunkKFIE4OJE_cjs.readMarker(map);
85
+ const fields = chunkC4MLW2QA_cjs.readMarker(map);
86
86
  const kept = fields !== null && !entries.has(fields.id);
87
87
  entry = kept ? { id: fields.id, map, span, regions: [], copies: [] } : null;
88
88
  if (entry !== null) {
@@ -95,7 +95,7 @@ function reader(required) {
95
95
  }
96
96
  }
97
97
  function embed(value) {
98
- let name = chunkKFIE4OJE_cjs.regionNameOf(value);
98
+ let name = chunkC4MLW2QA_cjs.regionNameOf(value);
99
99
  stray = null;
100
100
  const missing = (one) => !entry.regions.some((region2) => region2.name === one);
101
101
  if (name !== null && entry !== null) {
@@ -114,7 +114,7 @@ function reader(required) {
114
114
  return {
115
115
  read(op) {
116
116
  const { insert } = op;
117
- if (typeof insert === "string" || chunkKFIE4OJE_cjs.isAtomEmbed(insert)) {
117
+ if (typeof insert === "string" || chunkC4MLW2QA_cjs.isAtomEmbed(insert)) {
118
118
  const length = typeof insert === "string" ? insert.length : 1;
119
119
  content(op, length);
120
120
  span.length += length;
@@ -144,12 +144,12 @@ function reader(required) {
144
144
  for (const name of required(type)) {
145
145
  if (!kept.regions.some((region2) => region2.name === name)) kept.regions.push({ name, entry: kept, segs: [] });
146
146
  }
147
- const inline = (segs) => chunkKFIE4OJE_cjs.inlineOfOps(segs.flatMap((seg) => held2.get(seg)));
147
+ const inline = (segs) => chunkC4MLW2QA_cjs.inlineOfOps(segs.flatMap((seg) => held2.get(seg)));
148
148
  const regions = kept.regions.map(({ name, segs }) => [name, inline(segs)]);
149
149
  return { id: kept.id, type, indent, attrs: attrs?.toJSON() ?? {}, regions: Object.fromEntries(regions) };
150
150
  });
151
- const layout = chunkKFIE4OJE_cjs.createLayout(spans, entries, { read, leading: new Set(leading), unread });
152
- return { doc: chunk6H76FAI3_cjs.createDoc(blocks), layout };
151
+ const layout = chunkC4MLW2QA_cjs.createLayout(spans, entries, { read, leading: new Set(leading), unread });
152
+ return { doc: chunkWZA5S5EJ_cjs.createDoc(blocks), layout };
153
153
  }
154
154
  };
155
155
  }
@@ -183,41 +183,41 @@ function reread(shared) {
183
183
  function insertContent(shared, region2, offset, inline) {
184
184
  if (inline.length === 0) return;
185
185
  if (region2.segs.length === 0) return openRegion(shared, region2, inline);
186
- const { seg, rel } = chunkKFIE4OJE_cjs.pointOf(region2, offset);
187
- chunkKFIE4OJE_cjs.insertInline(shared.text, chunkKFIE4OJE_cjs.spanStart(shared.layout, seg.host) + rel, inline);
188
- chunkKFIE4OJE_cjs.grow(shared.layout, seg, rel, chunk6H76FAI3_cjs.inlineLength(inline));
186
+ const { seg, rel } = chunkC4MLW2QA_cjs.pointOf(region2, offset);
187
+ chunkC4MLW2QA_cjs.insertInline(shared.text, chunkC4MLW2QA_cjs.spanStart(shared.layout, seg.host) + rel, inline);
188
+ chunkC4MLW2QA_cjs.grow(shared.layout, seg, rel, chunkWZA5S5EJ_cjs.inlineLength(inline));
189
189
  }
190
190
  function deleteContent(shared, region2, from, to) {
191
- for (const { seg, rel, length } of chunkKFIE4OJE_cjs.piecesOf(region2, from, to).reverse()) {
192
- chunkKFIE4OJE_cjs.deleteText(shared.text, chunkKFIE4OJE_cjs.spanStart(shared.layout, seg.host) + rel, length);
193
- chunkKFIE4OJE_cjs.grow(shared.layout, seg, rel, -length);
191
+ for (const { seg, rel, length } of chunkC4MLW2QA_cjs.piecesOf(region2, from, to).reverse()) {
192
+ chunkC4MLW2QA_cjs.deleteText(shared.text, chunkC4MLW2QA_cjs.spanStart(shared.layout, seg.host) + rel, length);
193
+ chunkC4MLW2QA_cjs.grow(shared.layout, seg, rel, -length);
194
194
  }
195
195
  }
196
196
  function formatContent(shared, region2, from, to, attributes) {
197
- for (const { seg, rel, length } of chunkKFIE4OJE_cjs.piecesOf(region2, from, to)) {
198
- shared.text.format(chunkKFIE4OJE_cjs.spanStart(shared.layout, seg.host) + rel, length, attributes);
197
+ for (const { seg, rel, length } of chunkC4MLW2QA_cjs.piecesOf(region2, from, to)) {
198
+ shared.text.format(chunkC4MLW2QA_cjs.spanStart(shared.layout, seg.host) + rel, length, attributes);
199
199
  }
200
200
  }
201
201
  function openRegion(shared, { name, entry }, inline) {
202
- const at = chunkKFIE4OJE_cjs.spanStart(shared.layout, entry.span) + entry.span.length;
203
- shared.text.insertEmbed(at, chunkKFIE4OJE_cjs.regionStart(name), {});
204
- chunkKFIE4OJE_cjs.insertInline(shared.text, at + 1, inline);
202
+ const at = chunkC4MLW2QA_cjs.spanStart(shared.layout, entry.span) + entry.span.length;
203
+ shared.text.insertEmbed(at, chunkC4MLW2QA_cjs.regionStart(name), {});
204
+ chunkC4MLW2QA_cjs.insertInline(shared.text, at + 1, inline);
205
205
  reread(shared);
206
206
  }
207
207
 
208
208
  // src/yjs/inline-span.ts
209
209
  var units = (inline) => inline.flatMap(
210
- (node) => node.kind === "text" ? Array.from({ length: node.text.length }, (_, i) => chunk6H76FAI3_cjs.text(node.text[i], node.marks)) : [node]
210
+ (node) => node.kind === "text" ? Array.from({ length: node.text.length }, (_, i) => chunkWZA5S5EJ_cjs.text(node.text[i], node.marks)) : [node]
211
211
  );
212
212
  function changedSpan(before, after) {
213
213
  const a = units(before);
214
214
  const b = units(after);
215
215
  let start = 0;
216
- while (start < a.length && start < b.length && chunk6H76FAI3_cjs.equalNode(a[start], b[start])) start += 1;
216
+ while (start < a.length && start < b.length && chunkWZA5S5EJ_cjs.equalNode(a[start], b[start])) start += 1;
217
217
  let end = 0;
218
218
  const shared = Math.min(a.length, b.length) - start;
219
- while (end < shared && chunk6H76FAI3_cjs.equalNode(a[a.length - 1 - end], b[b.length - 1 - end])) end += 1;
220
- return { from: start, to: chunk6H76FAI3_cjs.inlineLength(before) - end, slice: chunk6H76FAI3_cjs.sliceInline(after, start, chunk6H76FAI3_cjs.inlineLength(after) - end) };
219
+ while (end < shared && chunkWZA5S5EJ_cjs.equalNode(a[a.length - 1 - end], b[b.length - 1 - end])) end += 1;
220
+ return { from: start, to: chunkWZA5S5EJ_cjs.inlineLength(before) - end, slice: chunkWZA5S5EJ_cjs.sliceInline(after, start, chunkWZA5S5EJ_cjs.inlineLength(after) - end) };
221
221
  }
222
222
 
223
223
  // src/yjs/plain.ts
@@ -235,12 +235,12 @@ function adopted(entry, next) {
235
235
  for (const copy of next.copies) copy.copyOf = next;
236
236
  return next;
237
237
  }
238
- var rewritten = (entry, block, map = entry.map) => adopted(entry, chunkKFIE4OJE_cjs.cleanEntry(block, map));
238
+ var rewritten = (entry, block, map = entry.map) => adopted(entry, chunkC4MLW2QA_cjs.cleanEntry(block, map));
239
239
  function crossesStray(layout, index) {
240
240
  const { read, leading, unread } = layout.strays;
241
241
  return unread || read.some((seg) => {
242
- const region2 = chunkKFIE4OJE_cjs.indexOf(layout, seg.region.entry.span);
243
- return leading.has(seg) ? index <= region2 : region2 < index && index <= chunkKFIE4OJE_cjs.indexOf(layout, seg.host);
242
+ const region2 = chunkC4MLW2QA_cjs.indexOf(layout, seg.region.entry.span);
243
+ return leading.has(seg) ? index <= region2 : region2 < index && index <= chunkC4MLW2QA_cjs.indexOf(layout, seg.host);
244
244
  });
245
245
  }
246
246
 
@@ -248,11 +248,11 @@ function crossesStray(layout, index) {
248
248
  function insertBlocks(shared, next, blocks) {
249
249
  const { layout, text: text2 } = shared;
250
250
  const span = next === null ? null : layout.entries.get(next).span;
251
- const index = span === null ? layout.spans.length : chunkKFIE4OJE_cjs.indexOf(layout, span);
251
+ const index = span === null ? layout.spans.length : chunkC4MLW2QA_cjs.indexOf(layout, span);
252
252
  const crosses = blocks.some((block) => Object.keys(block.regions).length > 0) && crossesStray(layout, index);
253
- const maps = chunkKFIE4OJE_cjs.writeBlocks(text2, span === null ? chunkKFIE4OJE_cjs.textLength(layout) : chunkKFIE4OJE_cjs.spanStart(layout, span), blocks);
253
+ const maps = chunkC4MLW2QA_cjs.writeBlocks(text2, span === null ? chunkC4MLW2QA_cjs.textLength(layout) : chunkC4MLW2QA_cjs.spanStart(layout, span), blocks);
254
254
  if (crosses) reread(shared);
255
- else chunkKFIE4OJE_cjs.placeEntries(layout, index, 0, blocks.map((block, i) => chunkKFIE4OJE_cjs.cleanEntry(block, maps[i])));
255
+ else chunkC4MLW2QA_cjs.placeEntries(layout, index, 0, blocks.map((block, i) => chunkC4MLW2QA_cjs.cleanEntry(block, maps[i])));
256
256
  }
257
257
  function ownParts(entry, span) {
258
258
  const parts = [];
@@ -267,15 +267,15 @@ function ownParts(entry, span) {
267
267
  }
268
268
  function dropSpans(shared, spans) {
269
269
  const { layout, text: text2 } = shared;
270
- for (const span of [...spans].sort((a, b) => chunkKFIE4OJE_cjs.indexOf(layout, b) - chunkKFIE4OJE_cjs.indexOf(layout, a))) {
271
- const at = chunkKFIE4OJE_cjs.indexOf(layout, span);
272
- chunkKFIE4OJE_cjs.deleteText(text2, chunkKFIE4OJE_cjs.spanStart(layout, span), span.length);
273
- chunkKFIE4OJE_cjs.placeEntries(layout, at, 1, []);
270
+ for (const span of [...spans].sort((a, b) => chunkC4MLW2QA_cjs.indexOf(layout, b) - chunkC4MLW2QA_cjs.indexOf(layout, a))) {
271
+ const at = chunkC4MLW2QA_cjs.indexOf(layout, span);
272
+ chunkC4MLW2QA_cjs.deleteText(text2, chunkC4MLW2QA_cjs.spanStart(layout, span), span.length);
273
+ chunkC4MLW2QA_cjs.placeEntries(layout, at, 1, []);
274
274
  }
275
275
  }
276
276
  function unreadBefore(layout, span) {
277
277
  const before = [];
278
- for (let at = chunkKFIE4OJE_cjs.indexOf(layout, span) - 1; at > 0 && layout.spans[at].entry === null; at--) {
278
+ for (let at = chunkC4MLW2QA_cjs.indexOf(layout, span) - 1; at > 0 && layout.spans[at].entry === null; at--) {
279
279
  before.push(layout.spans[at]);
280
280
  }
281
281
  return before;
@@ -287,22 +287,22 @@ function removeBlock(shared, id) {
287
287
  if (isPlain(entry)) return dropSpans(shared, [.../* @__PURE__ */ new Set([entry.span, ...unread])]);
288
288
  dropSpans(shared, [...new Set(unread)]);
289
289
  const ranges = [];
290
- const start = chunkKFIE4OJE_cjs.spanStart(layout, entry.span);
290
+ const start = chunkC4MLW2QA_cjs.spanStart(layout, entry.span);
291
291
  ranges.push(...ownParts(entry, entry.span).map(([at, length]) => [start + at, length]));
292
292
  for (const seg of entry.regions.flatMap((region2) => region2.segs)) {
293
- if (seg.host !== entry.span) ranges.push([chunkKFIE4OJE_cjs.spanStart(layout, seg.host) + seg.at, seg.length]);
293
+ if (seg.host !== entry.span) ranges.push([chunkC4MLW2QA_cjs.spanStart(layout, seg.host) + seg.at, seg.length]);
294
294
  }
295
- for (const [at, length] of ranges.sort((a, b) => b[0] - a[0])) if (length > 0) chunkKFIE4OJE_cjs.deleteText(text2, at, length);
295
+ for (const [at, length] of ranges.sort((a, b) => b[0] - a[0])) if (length > 0) chunkC4MLW2QA_cjs.deleteText(text2, at, length);
296
296
  reread(shared);
297
297
  }
298
298
 
299
299
  // src/yjs/sync-block.ts
300
300
  function syncAttrs(map, before, after) {
301
- const current = chunkKFIE4OJE_cjs.attrsMap(map, after);
301
+ const current = chunkC4MLW2QA_cjs.attrsMap(map, after);
302
302
  if (current === null) return;
303
- const kept = new Map(chunkKFIE4OJE_cjs.definedEntries(after));
303
+ const kept = new Map(chunkC4MLW2QA_cjs.definedEntries(after));
304
304
  for (const key of [...current.keys()]) if (!kept.has(key)) current.delete(key);
305
- for (const [key, value] of kept) if (!chunk6H76FAI3_cjs.sameValue(before[key], value)) current.set(key, value);
305
+ for (const [key, value] of kept) if (!chunkWZA5S5EJ_cjs.sameValue(before[key], value)) current.set(key, value);
306
306
  }
307
307
  function keptNames(before, after) {
308
308
  const kept = /* @__PURE__ */ new Set();
@@ -320,31 +320,31 @@ function syncRegions(shared, entry, before, after) {
320
320
  const names = Object.keys(after.regions);
321
321
  const queue = entry.regions.map(({ name }) => [name, before.regions[name]]);
322
322
  const kept = keptNames(queue.map(([name]) => name), names);
323
- let at = chunkKFIE4OJE_cjs.spanStart(layout, entry.span) + 1;
323
+ let at = chunkC4MLW2QA_cjs.spanStart(layout, entry.span) + 1;
324
324
  const dropGone = () => {
325
- while (queue.length > 0 && !kept.has(queue[0][0])) chunkKFIE4OJE_cjs.deleteText(text2, at, 1 + chunk6H76FAI3_cjs.inlineLength(queue.shift()[1]));
325
+ while (queue.length > 0 && !kept.has(queue[0][0])) chunkC4MLW2QA_cjs.deleteText(text2, at, 1 + chunkWZA5S5EJ_cjs.inlineLength(queue.shift()[1]));
326
326
  };
327
327
  for (const name of names) {
328
328
  dropGone();
329
329
  const inline = after.regions[name];
330
330
  if (kept.has(name)) {
331
331
  const { from, to, slice } = changedSpan(queue.shift()[1], inline);
332
- if (to > from) chunkKFIE4OJE_cjs.deleteText(text2, at + 1 + from, to - from);
333
- chunkKFIE4OJE_cjs.insertInline(text2, at + 1 + from, slice);
332
+ if (to > from) chunkC4MLW2QA_cjs.deleteText(text2, at + 1 + from, to - from);
333
+ chunkC4MLW2QA_cjs.insertInline(text2, at + 1 + from, slice);
334
334
  } else {
335
- text2.insertEmbed(at, chunkKFIE4OJE_cjs.regionStart(name), {});
336
- chunkKFIE4OJE_cjs.insertInline(text2, at + 1, inline);
335
+ text2.insertEmbed(at, chunkC4MLW2QA_cjs.regionStart(name), {});
336
+ chunkC4MLW2QA_cjs.insertInline(text2, at + 1, inline);
337
337
  }
338
- at += 1 + chunk6H76FAI3_cjs.inlineLength(inline);
338
+ at += 1 + chunkWZA5S5EJ_cjs.inlineLength(inline);
339
339
  }
340
340
  dropGone();
341
- chunkKFIE4OJE_cjs.placeEntries(layout, chunkKFIE4OJE_cjs.indexOf(layout, entry.span), 1, [rewritten(entry, after)]);
341
+ chunkC4MLW2QA_cjs.placeEntries(layout, chunkC4MLW2QA_cjs.indexOf(layout, entry.span), 1, [rewritten(entry, after)]);
342
342
  }
343
343
  function syncBlock(shared, before, after, next) {
344
344
  if (before === after) return;
345
345
  const entry = shared.layout.entries.get(before.id);
346
346
  const plain = isPlain(entry);
347
- if (!plain && !chunk6H76FAI3_cjs.sameValue(Object.keys(before.regions), Object.keys(after.regions))) {
347
+ if (!plain && !chunkWZA5S5EJ_cjs.sameValue(Object.keys(before.regions), Object.keys(after.regions))) {
348
348
  removeBlock(shared, before.id);
349
349
  insertBlocks(shared, next, [after]);
350
350
  return;
@@ -353,16 +353,16 @@ function syncBlock(shared, before, after, next) {
353
353
  syncAttrs(entry.map, before.attrs, after.attrs);
354
354
  if (plain) {
355
355
  const gains = Object.keys(before.regions).length === 0 && Object.keys(after.regions).length > 0;
356
- const crosses = gains && crossesStray(shared.layout, chunkKFIE4OJE_cjs.indexOf(shared.layout, entry.span));
356
+ const crosses = gains && crossesStray(shared.layout, chunkC4MLW2QA_cjs.indexOf(shared.layout, entry.span));
357
357
  syncRegions(shared, entry, before, after);
358
358
  if (crosses) reread(shared);
359
359
  return;
360
360
  }
361
361
  for (const name of entry.regions.map((region2) => region2.name)) {
362
362
  const [was, now] = [before.regions[name], after.regions[name]];
363
- if (chunk6H76FAI3_cjs.equalInline(was, now)) continue;
363
+ if (chunkWZA5S5EJ_cjs.equalInline(was, now)) continue;
364
364
  const { from, to, slice } = changedSpan(was, now);
365
- const region2 = chunkKFIE4OJE_cjs.regionOf(shared.layout, before.id, name);
365
+ const region2 = chunkC4MLW2QA_cjs.regionOf(shared.layout, before.id, name);
366
366
  deleteContent(shared, region2, from, to);
367
367
  insertContent(shared, region2, from, slice);
368
368
  }
@@ -396,18 +396,18 @@ var held = (region2) => region2 !== void 0 && region2.segs.length > 0;
396
396
  function writeSplit(shared, after, { block, region: region2, offset, created }) {
397
397
  const { layout, text: text2 } = shared;
398
398
  const entry = layout.entries.get(block);
399
- const tail = chunk6H76FAI3_cjs.blockById(after, created.id);
399
+ const tail = chunkWZA5S5EJ_cjs.blockById(after, created.id);
400
400
  const last = entry.regions[entry.regions.length - 1];
401
401
  if (!held(last) || last.name !== region2 || Object.keys(tail.regions).at(-1) !== created.region) return false;
402
- const { seg, rel } = chunkKFIE4OJE_cjs.pointOf(last, offset);
403
- const map = chunkKFIE4OJE_cjs.markerOf(tail);
404
- chunkKFIE4OJE_cjs.writeBlock(text2, chunkKFIE4OJE_cjs.spanStart(layout, seg.host) + rel, tail, map, created.region);
402
+ const { seg, rel } = chunkC4MLW2QA_cjs.pointOf(last, offset);
403
+ const map = chunkC4MLW2QA_cjs.markerOf(tail);
404
+ chunkC4MLW2QA_cjs.writeBlock(text2, chunkC4MLW2QA_cjs.spanStart(layout, seg.host) + rel, tail, map, created.region);
405
405
  if (!isPlain(entry)) {
406
406
  reread(shared);
407
407
  return true;
408
408
  }
409
- const head = rewritten(entry, chunk6H76FAI3_cjs.blockById(after, block));
410
- chunkKFIE4OJE_cjs.placeEntries(layout, chunkKFIE4OJE_cjs.indexOf(layout, entry.span), 1, [head, chunkKFIE4OJE_cjs.cleanEntry(tail, map)]);
409
+ const head = rewritten(entry, chunkWZA5S5EJ_cjs.blockById(after, block));
410
+ chunkC4MLW2QA_cjs.placeEntries(layout, chunkC4MLW2QA_cjs.indexOf(layout, entry.span), 1, [head, chunkC4MLW2QA_cjs.cleanEntry(tail, map)]);
411
411
  return true;
412
412
  }
413
413
  function writeJoin(shared, after, join2) {
@@ -416,27 +416,27 @@ function writeJoin(shared, after, join2) {
416
416
  const [into, from] = [target, source].map((id) => layout.entries.get(id));
417
417
  const [end, start] = [into.regions.at(-1), from.regions[0]];
418
418
  if (!held(end) || !held(start) || end.name !== targetRegion || start.name !== sourceRegion) return false;
419
- const between = layout.spans.slice(chunkKFIE4OJE_cjs.indexOf(layout, into.span) + 1, chunkKFIE4OJE_cjs.indexOf(layout, from.span));
419
+ const between = layout.spans.slice(chunkC4MLW2QA_cjs.indexOf(layout, into.span) + 1, chunkC4MLW2QA_cjs.indexOf(layout, from.span));
420
420
  dropSpans(shared, [...from.copies, ...between]);
421
- const at = chunkKFIE4OJE_cjs.spanStart(layout, from.span);
421
+ const at = chunkC4MLW2QA_cjs.spanStart(layout, from.span);
422
422
  if (!isPlain(into) || !isPlain(from)) {
423
423
  const own = start.segs.find((seg) => seg.host === from.span);
424
- chunkKFIE4OJE_cjs.deleteText(text2, at + own.at - 1, 1);
425
- chunkKFIE4OJE_cjs.deleteText(text2, at, 1);
424
+ chunkC4MLW2QA_cjs.deleteText(text2, at + own.at - 1, 1);
425
+ chunkC4MLW2QA_cjs.deleteText(text2, at, 1);
426
426
  reread(shared);
427
427
  return true;
428
428
  }
429
- const index = chunkKFIE4OJE_cjs.indexOf(layout, into.span);
429
+ const index = chunkC4MLW2QA_cjs.indexOf(layout, into.span);
430
430
  const moved = from.regions[0].segs[0].length;
431
431
  const rest = from.span.length - 2 - moved;
432
- if (rest > 0) chunkKFIE4OJE_cjs.deleteText(text2, at + 2 + moved, rest);
433
- chunkKFIE4OJE_cjs.deleteText(text2, at, 2);
434
- chunkKFIE4OJE_cjs.placeEntries(layout, index, 2, [rewritten(into, chunk6H76FAI3_cjs.blockById(after, target))]);
432
+ if (rest > 0) chunkC4MLW2QA_cjs.deleteText(text2, at + 2 + moved, rest);
433
+ chunkC4MLW2QA_cjs.deleteText(text2, at, 2);
434
+ chunkC4MLW2QA_cjs.placeEntries(layout, index, 2, [rewritten(into, chunkWZA5S5EJ_cjs.blockById(after, target))]);
435
435
  return true;
436
436
  }
437
437
 
438
438
  // src/yjs/local-to-yjs.ts
439
- var region = ({ shared, params }) => chunkKFIE4OJE_cjs.regionOf(shared.layout, params.block, params.region);
439
+ var region = ({ shared, params }) => chunkC4MLW2QA_cjs.regionOf(shared.layout, params.block, params.region);
440
440
  var following = (doc, id) => doc.blocks[doc.index.get(id) + 1]?.id ?? null;
441
441
  function replaceInline(context) {
442
442
  const { from, to, slice } = context.params;
@@ -447,19 +447,19 @@ function replaceInline(context) {
447
447
  function format(context, keys) {
448
448
  const { block, region: name, from, to } = context.params;
449
449
  if (to === from) return;
450
- const inline = chunk6H76FAI3_cjs.blockById(context.before, block).regions[name];
451
- formatContent(context.shared, region(context), from, to, keys(chunk6H76FAI3_cjs.sliceInline(inline, from, to)));
450
+ const inline = chunkWZA5S5EJ_cjs.blockById(context.before, block).regions[name];
451
+ formatContent(context.shared, region(context), from, to, keys(chunkWZA5S5EJ_cjs.sliceInline(inline, from, to)));
452
452
  }
453
453
  function removedKeys(mark, inline) {
454
- if (typeof mark !== "string") return { [chunkKFIE4OJE_cjs.markAttribute(mark)[0]]: null };
454
+ if (typeof mark !== "string") return { [chunkC4MLW2QA_cjs.markAttribute(mark)[0]]: null };
455
455
  const marks = inline.flatMap((node) => node.marks.filter((candidate) => candidate.type === mark));
456
- return Object.fromEntries(marks.map((found) => [chunkKFIE4OJE_cjs.markAttribute(found)[0], null]));
456
+ return Object.fromEntries(marks.map((found) => [chunkC4MLW2QA_cjs.markAttribute(found)[0], null]));
457
457
  }
458
458
  function setAttrs({ shared, after, params }) {
459
459
  const id = params.block;
460
460
  const { map } = shared.layout.entries.get(id);
461
- const next = chunk6H76FAI3_cjs.blockById(after, id).attrs;
462
- const attrs = chunkKFIE4OJE_cjs.attrsMap(map, next);
461
+ const next = chunkWZA5S5EJ_cjs.blockById(after, id).attrs;
462
+ const attrs = chunkC4MLW2QA_cjs.attrsMap(map, next);
463
463
  if (attrs === null) return;
464
464
  for (const key of Object.keys(params.patch)) {
465
465
  if (next[key] === void 0) attrs.delete(key);
@@ -475,7 +475,7 @@ function moveBlocks({ shared, before, after, params }) {
475
475
  }
476
476
  var WRITERS = {
477
477
  replaceInline,
478
- addMark: (context) => format(context, () => Object.fromEntries([chunkKFIE4OJE_cjs.markAttribute(context.params.mark)])),
478
+ addMark: (context) => format(context, () => Object.fromEntries([chunkC4MLW2QA_cjs.markAttribute(context.params.mark)])),
479
479
  removeMark: (context) => format(context, (inline) => removedKeys(context.params.mark, inline)),
480
480
  setAttrs,
481
481
  setIndent: ({ shared, params }) => shared.layout.entries.get(params.block).map.set("indent", params.indent),
@@ -497,7 +497,7 @@ var WRITERS = {
497
497
  },
498
498
  replaceBlock: ({ shared, before, params }) => {
499
499
  const block = params.block;
500
- syncBlock(shared, chunk6H76FAI3_cjs.blockById(before, block.id), block, following(before, block.id));
500
+ syncBlock(shared, chunkWZA5S5EJ_cjs.blockById(before, block.id), block, following(before, block.id));
501
501
  }
502
502
  };
503
503
  function writeLocalSteps(shared, steps, docs) {
@@ -514,13 +514,13 @@ function seedOrLoad(editor, text2, { origin, seed, required }) {
514
514
  const { blocks } = editor.state.doc;
515
515
  if (text2.length === 0 && seed === "if-empty") {
516
516
  let maps = [];
517
- text2.doc.transact(() => maps = chunkKFIE4OJE_cjs.writeBlocks(text2, 0, blocks), origin);
518
- const layout2 = chunkKFIE4OJE_cjs.createLayout([chunkKFIE4OJE_cjs.emptySpan()], /* @__PURE__ */ new Map());
519
- chunkKFIE4OJE_cjs.placeEntries(layout2, 1, 0, blocks.map((block, i) => chunkKFIE4OJE_cjs.cleanEntry(block, maps[i])));
517
+ text2.doc.transact(() => maps = chunkC4MLW2QA_cjs.writeBlocks(text2, 0, blocks), origin);
518
+ const layout2 = chunkC4MLW2QA_cjs.createLayout([chunkC4MLW2QA_cjs.emptySpan()], /* @__PURE__ */ new Map());
519
+ chunkC4MLW2QA_cjs.placeEntries(layout2, 1, 0, blocks.map((block, i) => chunkC4MLW2QA_cjs.cleanEntry(block, maps[i])));
520
520
  return layout2;
521
521
  }
522
522
  const { doc, layout } = readShared(text2, required);
523
- if (!chunkM5FREXRQ_cjs.sameDoc(doc, editor.state.doc)) chunkKFIE4OJE_cjs.applyRemote(editor, [chunkM5FREXRQ_cjs.replaceDocStep(doc)]);
523
+ if (!chunkLROGC3SI_cjs.sameDoc(doc, editor.state.doc)) chunkC4MLW2QA_cjs.applyRemote(editor, [chunkLROGC3SI_cjs.replaceDocStep(doc)]);
524
524
  return layout;
525
525
  }
526
526
  function touchedEntries(layout, delta) {
@@ -530,8 +530,8 @@ function touchedEntries(layout, delta) {
530
530
  const length = op.retain ?? op.delete ?? 0;
531
531
  if (op.insert instanceof Y__namespace.Map || op.retain && op.attributes) return null;
532
532
  if (op.retain === void 0) {
533
- const span = chunkKFIE4OJE_cjs.spanAt(layout, at, op.insert === void 0);
534
- const start = chunkKFIE4OJE_cjs.spanStart(layout, span);
533
+ const span = chunkC4MLW2QA_cjs.spanAt(layout, at, op.insert === void 0);
534
+ const start = chunkC4MLW2QA_cjs.spanStart(layout, span);
535
535
  if (span.entry === null || start === at || at + length > start + span.length) return null;
536
536
  touched.set(span.entry.map, span.entry);
537
537
  }
@@ -551,10 +551,10 @@ function readBlocks(shared, entries, doc) {
551
551
  for (const [map, entry] of entries) {
552
552
  const { doc: one, layout: own } = readers.get(map).finish();
553
553
  const next = own.spans[1].entry;
554
- const at = chunkKFIE4OJE_cjs.indexOf(layout, entry.span);
554
+ const at = chunkC4MLW2QA_cjs.indexOf(layout, entry.span);
555
555
  if (crossesStray(own, 1) || crossesStray(layout, at)) return null;
556
- chunkKFIE4OJE_cjs.placeEntries(layout, at, 1, [adopted(entry, next)]);
557
- if (!chunk6H76FAI3_cjs.sameValue(chunk6H76FAI3_cjs.blockById(doc, entry.id), one.blocks[0])) steps.push(chunkM5FREXRQ_cjs.replaceBlockStep(one.blocks[0]));
556
+ chunkC4MLW2QA_cjs.placeEntries(layout, at, 1, [adopted(entry, next)]);
557
+ if (!chunkWZA5S5EJ_cjs.sameValue(chunkWZA5S5EJ_cjs.blockById(doc, entry.id), one.blocks[0])) steps.push(chunkLROGC3SI_cjs.replaceBlockStep(one.blocks[0]));
558
558
  }
559
559
  return steps;
560
560
  }
@@ -562,31 +562,31 @@ var bare = (op) => op === void 0 || op.attributes === void 0;
562
562
  function split(layout, delta, required) {
563
563
  const [at, ops] = delta[0]?.retain === void 0 ? [0, delta] : [delta[0].retain, delta.slice(1)];
564
564
  const map = ops[0]?.insert;
565
- const name = chunkKFIE4OJE_cjs.regionNameOf(ops[1]?.insert);
565
+ const name = chunkC4MLW2QA_cjs.regionNameOf(ops[1]?.insert);
566
566
  if (ops.length !== 2 || !(map instanceof Y__namespace.Map) || name === null || !bare(delta[0])) return null;
567
- const marker = chunkKFIE4OJE_cjs.readMarker(map);
568
- const span = chunkKFIE4OJE_cjs.spanAt(layout, at);
567
+ const marker = chunkC4MLW2QA_cjs.readMarker(map);
568
+ const span = chunkC4MLW2QA_cjs.spanAt(layout, at);
569
569
  if (span.entry === null || !isPlain(span.entry)) return null;
570
570
  const region2 = span.entry.regions.at(-1);
571
571
  const seg = region2?.segs[0];
572
- const rel = at - chunkKFIE4OJE_cjs.spanStart(layout, span);
572
+ const rel = at - chunkC4MLW2QA_cjs.spanStart(layout, span);
573
573
  if (marker === null || layout.entries.has(marker.id) || seg === void 0) return null;
574
574
  if (rel < seg.at || rel > seg.at + seg.length) return null;
575
575
  if (required(marker.type).some((needed) => needed !== name)) return null;
576
576
  const { id, type, indent, attrs } = marker;
577
577
  const created = { id, type, indent, attrs: attrs?.toJSON() ?? {}, region: name, regions: {} };
578
- return { step: chunkM5FREXRQ_cjs.splitBlockStep(span.entry.id, region2.name, chunkKFIE4OJE_cjs.offsetIn(seg, rel), created), map };
578
+ return { step: chunkLROGC3SI_cjs.splitBlockStep(span.entry.id, region2.name, chunkC4MLW2QA_cjs.offsetIn(seg, rel), created), map };
579
579
  }
580
580
  function join(layout, delta) {
581
581
  const [at, ops] = delta[0]?.retain === void 0 ? [0, delta] : [delta[0].retain, delta.slice(1)];
582
582
  if (ops.length !== 1 || ops[0].delete !== 2 || !bare(delta[0])) return null;
583
- const span = chunkKFIE4OJE_cjs.spanAt(layout, at, true);
583
+ const span = chunkC4MLW2QA_cjs.spanAt(layout, at, true);
584
584
  const source = span.entry;
585
585
  const target = layout.spans[span.index - 1]?.entry ?? null;
586
- if (chunkKFIE4OJE_cjs.spanStart(layout, span) !== at || source === null || target === null) return null;
586
+ if (chunkC4MLW2QA_cjs.spanStart(layout, span) !== at || source === null || target === null) return null;
587
587
  if (source.regions.length !== 1 || target.regions.length === 0 || source.copies.length > 0) return null;
588
588
  if (!isPlain(source) || !isPlain(target)) return null;
589
- return chunkM5FREXRQ_cjs.joinBlocksStep(target.id, target.regions.at(-1).name, source.id, source.regions[0].name);
589
+ return chunkLROGC3SI_cjs.joinBlocksStep(target.id, target.regions.at(-1).name, source.id, source.regions[0].name);
590
590
  }
591
591
  function splitOrJoin(layout, delta, doc, required) {
592
592
  const found = split(layout, delta, required);
@@ -595,9 +595,9 @@ function splitOrJoin(layout, delta, doc, required) {
595
595
  const after = step.apply(doc).doc;
596
596
  const { block, target, created } = step.toJSON();
597
597
  const kept = layout.entries.get(block ?? target);
598
- const entries = [rewritten(kept, chunk6H76FAI3_cjs.blockById(after, kept.id))];
599
- if (found !== null) entries.push(chunkKFIE4OJE_cjs.cleanEntry(chunk6H76FAI3_cjs.blockById(after, created.id), found.map));
600
- chunkKFIE4OJE_cjs.placeEntries(layout, chunkKFIE4OJE_cjs.indexOf(layout, kept.span), found === null ? 2 : 1, entries);
598
+ const entries = [rewritten(kept, chunkWZA5S5EJ_cjs.blockById(after, kept.id))];
599
+ if (found !== null) entries.push(chunkC4MLW2QA_cjs.cleanEntry(chunkWZA5S5EJ_cjs.blockById(after, created.id), found.map));
600
+ chunkC4MLW2QA_cjs.placeEntries(layout, chunkC4MLW2QA_cjs.indexOf(layout, kept.span), found === null ? 2 : 1, entries);
601
601
  return step;
602
602
  }
603
603
 
@@ -608,28 +608,28 @@ function markerSteps(shared, event, doc, read) {
608
608
  const marker = target.parent === shared.text ? target : target.parent;
609
609
  const keys = [...event.keysChanged];
610
610
  if (target === marker && keys.includes("id")) throw REREAD;
611
- const fields = chunkKFIE4OJE_cjs.readMarker(marker);
612
- const block = fields === null ? void 0 : chunk6H76FAI3_cjs.blockById(doc, fields.id);
611
+ const fields = chunkC4MLW2QA_cjs.readMarker(marker);
612
+ const block = fields === null ? void 0 : chunkWZA5S5EJ_cjs.blockById(doc, fields.id);
613
613
  const entry = block === void 0 ? void 0 : shared.layout.entries.get(block.id);
614
614
  if (block === void 0 || entry?.map !== marker || read.has(marker)) return [];
615
615
  if (target !== marker) {
616
616
  if (fields.attrs !== target) return [];
617
- return [chunkM5FREXRQ_cjs.setAttrsStep(block.id, Object.fromEntries(keys.map((key) => [key, target.get(key)])))];
617
+ return [chunkLROGC3SI_cjs.setAttrsStep(block.id, Object.fromEntries(keys.map((key) => [key, target.get(key)])))];
618
618
  }
619
619
  if (keys.includes("type")) {
620
620
  read.set(marker, entry);
621
621
  return [];
622
622
  }
623
623
  const { indent, attrs } = fields;
624
- if (keys.every((key) => key === "indent")) return [chunkM5FREXRQ_cjs.setIndentStep(block.id, indent)];
625
- return [chunkM5FREXRQ_cjs.replaceBlockStep({ ...block, indent, attrs: attrs?.toJSON() ?? {} })];
624
+ if (keys.every((key) => key === "indent")) return [chunkLROGC3SI_cjs.setIndentStep(block.id, indent)];
625
+ return [chunkLROGC3SI_cjs.replaceBlockStep({ ...block, indent, attrs: attrs?.toJSON() ?? {} })];
626
626
  }
627
627
  function contentSteps(shared, events, doc) {
628
628
  const textEvent = events.find((event) => event.target === shared.text);
629
629
  const delta = textEvent?.delta ?? [];
630
630
  const touched = touchedEntries(shared.layout, delta);
631
631
  const structure = splitOrJoin(shared.layout, delta, doc, shared.required);
632
- const steps = structure === null ? chunkKFIE4OJE_cjs.textSteps(shared.layout, delta) : [structure];
632
+ const steps = structure === null ? chunkC4MLW2QA_cjs.textSteps(shared.layout, delta) : [structure];
633
633
  if (steps === null && touched === null) throw REREAD;
634
634
  const read = steps === null ? touched : /* @__PURE__ */ new Map();
635
635
  const all = [];
@@ -653,12 +653,12 @@ function readRemote(shared, events, doc) {
653
653
  const read = readShared(shared.text, shared.required);
654
654
  shared.layout = read.layout;
655
655
  const blocks = read.doc.blocks.map((block) => {
656
- const held2 = chunk6H76FAI3_cjs.blockById(doc, block.id);
657
- return held2 !== void 0 && chunk6H76FAI3_cjs.sameValue(held2, block) ? held2 : block;
656
+ const held2 = chunkWZA5S5EJ_cjs.blockById(doc, block.id);
657
+ return held2 !== void 0 && chunkWZA5S5EJ_cjs.sameValue(held2, block) ? held2 : block;
658
658
  });
659
- const next = chunk6H76FAI3_cjs.createDoc(blocks);
659
+ const next = chunkWZA5S5EJ_cjs.createDoc(blocks);
660
660
  const failed = error === REREAD ? void 0 : error;
661
- return { steps: chunkM5FREXRQ_cjs.sameDoc(next, doc) ? [] : [chunkM5FREXRQ_cjs.replaceDocStep(next)], structural: true, failed };
661
+ return { steps: chunkLROGC3SI_cjs.sameDoc(next, doc) ? [] : [chunkLROGC3SI_cjs.replaceDocStep(next)], structural: true, failed };
662
662
  }
663
663
  }
664
664
 
@@ -674,15 +674,15 @@ function bind(editor, text2, options) {
674
674
  const held2 = /* @__PURE__ */ new WeakMap();
675
675
  const written = /* @__PURE__ */ new WeakSet();
676
676
  const hold = (transaction) => {
677
- if (!ours(transaction.origin)) held2.set(transaction, chunkKFIE4OJE_cjs.holdSelection(text2, shared.layout, editor.state.selection));
677
+ if (!ours(transaction.origin)) held2.set(transaction, chunkC4MLW2QA_cjs.holdSelection(text2, shared.layout, editor.state.selection));
678
678
  };
679
679
  const observer = (events, transaction) => {
680
680
  if (ours(transaction.origin)) return;
681
681
  const { steps, structural, failed } = readRemote(shared, events, editor.state.doc);
682
682
  if (steps.length > 0 && transaction.origin !== history.manager) {
683
- chunkKFIE4OJE_cjs.applyRemote(editor, steps, structural ? chunkKFIE4OJE_cjs.restoreSelection(text2, shared.layout, held2.get(transaction)) : null);
683
+ chunkC4MLW2QA_cjs.applyRemote(editor, steps, structural ? chunkC4MLW2QA_cjs.restoreSelection(text2, shared.layout, held2.get(transaction)) : null);
684
684
  } else if (steps.length > 0) {
685
- const tr = chunkKFIE4OJE_cjs.sharedChange(editor, steps, history.hint(), "history");
685
+ const tr = chunkC4MLW2QA_cjs.sharedChange(editor, steps, history.hint(), "history");
686
686
  written.add(tr);
687
687
  editor.dispatch(tr);
688
688
  }
@@ -719,6 +719,7 @@ function undoHistory(text2, origin) {
719
719
  const manager = new Y__namespace.UndoManager(text2, { trackedOrigins: /* @__PURE__ */ new Set([origin]), captureTimeout: Infinity });
720
720
  let group = null;
721
721
  let time = 0;
722
+ let end = null;
722
723
  let before = null;
723
724
  let hint = null;
724
725
  manager.on("stack-item-added", ({ stackItem }) => stackItem.meta.set(SELECTION, before));
@@ -729,9 +730,12 @@ function undoHistory(text2, origin) {
729
730
  if (tr.getMeta("closeHistory") === true) group = null;
730
731
  return;
731
732
  }
732
- const next = chunkM5FREXRQ_cjs.groupOf(tr);
733
- if (next === null || next !== group || tr.time - time >= GROUP_DELAY) manager.stopCapturing();
733
+ const next = chunkLROGC3SI_cjs.groupOf(tr);
734
+ const continues = tr.getMeta(chunkLROGC3SI_cjs.HISTORY_GROUP) !== void 0 || chunkLROGC3SI_cjs.continuesEdit(tr, end);
735
+ const captured = next !== null && next === group && tr.time - time < GROUP_DELAY && continues;
736
+ if (!captured) manager.stopCapturing();
734
737
  group = next;
738
+ end = chunkLROGC3SI_cjs.editEnd(tr) ?? (captured ? end : null);
735
739
  time = tr.time;
736
740
  before = tr.before.selection;
737
741
  },
@@ -741,6 +745,7 @@ function undoHistory(text2, origin) {
741
745
  hint = item.meta.get(SELECTION) ?? null;
742
746
  before = editor.state.selection;
743
747
  group = null;
748
+ end = null;
744
749
  try {
745
750
  return manager[direction]() !== null;
746
751
  } finally {
@@ -799,18 +804,18 @@ function yjsCollaboration(options) {
799
804
  canRedo: () => binding !== null && history.manager.canRedo()
800
805
  }
801
806
  };
802
- chunkKFIE4OJE_cjs.holdBinding(collaboration, () => binding);
807
+ chunkC4MLW2QA_cjs.holdBinding(collaboration, () => binding);
803
808
  return collaboration;
804
809
  }
805
810
 
806
811
  // src/engine/collab/collaboration-link.ts
807
- var linkKey = chunkM5FREXRQ_cjs.createPluginKey("collaborationLink");
812
+ var linkKey = chunkLROGC3SI_cjs.createPluginKey("collaborationLink");
808
813
  var linkPlugin = {
809
814
  key: linkKey,
810
815
  init: () => ({ mounts: 0, disconnect: null, warned: false }),
811
816
  apply: (_tr, link) => link
812
817
  };
813
- var linkOf = (state) => chunkM5FREXRQ_cjs.getPluginState(state, linkKey);
818
+ var linkOf = (state) => chunkLROGC3SI_cjs.getPluginState(state, linkKey);
814
819
 
815
820
  // src/engine/collab/warn-host-blocks.ts
816
821
  function warnHostBlocks() {
@@ -821,7 +826,7 @@ function warnHostBlocks() {
821
826
  }
822
827
 
823
828
  // src/engine/collab/collaboration-extension.ts
824
- var providerKey = chunkM5FREXRQ_cjs.createPluginKey(chunkM5FREXRQ_cjs.HISTORY_PROVIDER);
829
+ var providerKey = chunkLROGC3SI_cjs.createPluginKey(chunkLROGC3SI_cjs.HISTORY_PROVIDER);
825
830
  function providing(history) {
826
831
  const provider = {
827
832
  undo: (dryRun) => dryRun ? history.canUndo() : history.undo(),
@@ -831,7 +836,7 @@ function providing(history) {
831
836
  }
832
837
  function collaborationExtension(adapter) {
833
838
  const { history } = adapter;
834
- return chunkM5FREXRQ_cjs.defineExtension({
839
+ return chunkLROGC3SI_cjs.defineExtension({
835
840
  name: "collaboration",
836
841
  plugins: history === void 0 ? [linkPlugin] : [linkPlugin, providing(history)],
837
842
  onMount(editor) {
@@ -866,7 +871,7 @@ function collaborationExtension(adapter) {
866
871
 
867
872
  Object.defineProperty(exports, "applyRemote", {
868
873
  enumerable: true,
869
- get: function () { return chunkKFIE4OJE_cjs.applyRemote; }
874
+ get: function () { return chunkC4MLW2QA_cjs.applyRemote; }
870
875
  });
871
876
  exports.collaborationExtension = collaborationExtension;
872
877
  exports.yjsCollaboration = yjsCollaboration;