quoin-editor 1.0.0 → 1.0.2

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 (213) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/dist/ai.cjs +135 -94
  3. package/dist/ai.cjs.map +1 -1
  4. package/dist/ai.d.cts +1 -1
  5. package/dist/ai.d.ts +1 -1
  6. package/dist/ai.js +62 -21
  7. package/dist/ai.js.map +1 -1
  8. package/dist/catalogue.cjs +25 -25
  9. package/dist/catalogue.d.cts +6 -6
  10. package/dist/catalogue.d.ts +6 -6
  11. package/dist/catalogue.js +17 -17
  12. package/dist/{chunk-ND5XJVK2.cjs → chunk-4SLJNZSM.cjs} +27 -23
  13. package/dist/chunk-4SLJNZSM.cjs.map +1 -0
  14. package/dist/{chunk-LCQSG4M6.js → chunk-4XFXB37X.js} +22 -18
  15. package/dist/chunk-4XFXB37X.js.map +1 -0
  16. package/dist/{chunk-AEJXZBVR.cjs → chunk-5MAYUGTE.cjs} +110 -103
  17. package/dist/chunk-5MAYUGTE.cjs.map +1 -0
  18. package/dist/{chunk-JDPTZUBW.js → chunk-623AOJM2.js} +4 -4
  19. package/dist/chunk-6NULZPVC.js +374 -0
  20. package/dist/chunk-6NULZPVC.js.map +1 -0
  21. package/dist/{chunk-2QCRZ7OL.cjs → chunk-6V6GGBDK.cjs} +12 -11
  22. package/dist/{chunk-2QCRZ7OL.cjs.map → chunk-6V6GGBDK.cjs.map} +1 -1
  23. package/dist/{chunk-WXMYDXPN.cjs → chunk-73653CJ4.cjs} +4 -3
  24. package/dist/chunk-73653CJ4.cjs.map +1 -0
  25. package/dist/{chunk-47MLKSI2.js → chunk-ADSJ42DO.js} +6 -6
  26. package/dist/{chunk-PWUEPDA3.cjs → chunk-AUOEM3SF.cjs} +44 -44
  27. package/dist/{chunk-PWUEPDA3.cjs.map → chunk-AUOEM3SF.cjs.map} +1 -1
  28. package/dist/{chunk-WQHV3MRE.cjs → chunk-BQANU5BH.cjs} +12 -12
  29. package/dist/{chunk-WQHV3MRE.cjs.map → chunk-BQANU5BH.cjs.map} +1 -1
  30. package/dist/{chunk-KXOBZGQO.js → chunk-C23RQVRK.js} +21 -14
  31. package/dist/chunk-C23RQVRK.js.map +1 -0
  32. package/dist/{chunk-2VDK27IF.cjs → chunk-CW3AFJBR.cjs} +312 -342
  33. package/dist/chunk-CW3AFJBR.cjs.map +1 -0
  34. package/dist/{chunk-MQ2XQ4MX.js → chunk-DUE3HCZD.js} +6 -6
  35. package/dist/chunk-DUE3HCZD.js.map +1 -0
  36. package/dist/{chunk-OMOBMXD5.cjs → chunk-EH5KXQXY.cjs} +7 -2
  37. package/dist/chunk-EH5KXQXY.cjs.map +1 -0
  38. package/dist/{chunk-ZS2WA357.js → chunk-EPARJI4V.js} +147 -129
  39. package/dist/chunk-EPARJI4V.js.map +1 -0
  40. package/dist/{chunk-HZSSEYJS.cjs → chunk-FDRUAL3Z.cjs} +30 -30
  41. package/dist/{chunk-HZSSEYJS.cjs.map → chunk-FDRUAL3Z.cjs.map} +1 -1
  42. package/dist/{chunk-T7SW6OWV.js → chunk-IQBMAE3F.js} +5 -5
  43. package/dist/{chunk-RUDWMKYX.js → chunk-JHQUHFLX.js} +8 -8
  44. package/dist/{chunk-HELJTLNC.cjs → chunk-KUYZMSMF.cjs} +12 -12
  45. package/dist/chunk-KUYZMSMF.cjs.map +1 -0
  46. package/dist/chunk-LE5XMIFJ.cjs +14 -0
  47. package/dist/chunk-LE5XMIFJ.cjs.map +1 -0
  48. package/dist/{chunk-EL2OEJQC.cjs → chunk-LLTEGXWZ.cjs} +56 -56
  49. package/dist/{chunk-EL2OEJQC.cjs.map → chunk-LLTEGXWZ.cjs.map} +1 -1
  50. package/dist/chunk-MQUCCSWG.js +14 -0
  51. package/dist/chunk-MQUCCSWG.js.map +1 -0
  52. package/dist/{chunk-NNDYYEW5.js → chunk-N4FGA3H4.js} +5 -5
  53. package/dist/{chunk-ZHOSSWUM.js → chunk-NEZJ7ZP5.js} +4 -3
  54. package/dist/chunk-NEZJ7ZP5.js.map +1 -0
  55. package/dist/{chunk-XEBWC7ZL.js → chunk-O4Z2WMFF.js} +7 -2
  56. package/dist/chunk-O4Z2WMFF.js.map +1 -0
  57. package/dist/{chunk-HJIQT3S5.js → chunk-OBMBSU2S.js} +100 -84
  58. package/dist/chunk-OBMBSU2S.js.map +1 -0
  59. package/dist/{chunk-KAVU6T6J.js → chunk-OSHZQR3W.js} +5 -5
  60. package/dist/{chunk-GTTPVJSD.cjs → chunk-P6KYXFZC.cjs} +265 -247
  61. package/dist/chunk-P6KYXFZC.cjs.map +1 -0
  62. package/dist/{chunk-CDELOHDY.cjs → chunk-R2BLBV43.cjs} +23 -23
  63. package/dist/{chunk-CDELOHDY.cjs.map → chunk-R2BLBV43.cjs.map} +1 -1
  64. package/dist/{chunk-NOKWNK2O.js → chunk-RJRX34BZ.js} +3 -2
  65. package/dist/{chunk-ZGZEJCRV.js → chunk-T43RZTUT.js} +166 -196
  66. package/dist/chunk-T43RZTUT.js.map +1 -0
  67. package/dist/chunk-TLGX43P6.cjs +374 -0
  68. package/dist/chunk-TLGX43P6.cjs.map +1 -0
  69. package/dist/{chunk-POBM7MGR.js → chunk-U3LOLYAU.js} +2 -2
  70. package/dist/{chunk-RDG4VI6E.cjs → chunk-UEKXVCKC.cjs} +103 -93
  71. package/dist/chunk-UEKXVCKC.cjs.map +1 -0
  72. package/dist/{chunk-PMWCQSQX.js → chunk-VCLL5C7J.js} +5 -5
  73. package/dist/{chunk-SG37UBDO.js → chunk-VRS6WCEK.js} +20 -10
  74. package/dist/chunk-VRS6WCEK.js.map +1 -0
  75. package/dist/{chunk-ZC24WB7Y.cjs → chunk-WEYDDIBQ.cjs} +14 -14
  76. package/dist/{chunk-ZC24WB7Y.cjs.map → chunk-WEYDDIBQ.cjs.map} +1 -1
  77. package/dist/{chunk-5DNCCN6X.cjs → chunk-X4HDKFW5.cjs} +27 -27
  78. package/dist/{chunk-5DNCCN6X.cjs.map → chunk-X4HDKFW5.cjs.map} +1 -1
  79. package/dist/{chunk-SLVDAHHK.cjs → chunk-X4P4TQXH.cjs} +5 -5
  80. package/dist/{chunk-SLVDAHHK.cjs.map → chunk-X4P4TQXH.cjs.map} +1 -1
  81. package/dist/{chunk-GLLXHMH2.cjs → chunk-XA3UEJIW.cjs} +3 -3
  82. package/dist/{chunk-GLLXHMH2.cjs.map → chunk-XA3UEJIW.cjs.map} +1 -1
  83. package/dist/{chunk-K574XHMM.js → chunk-YBMUEEM5.js} +2 -2
  84. package/dist/{chunk-PZ4GT5JO.cjs → chunk-ZKVOS57Q.cjs} +316 -300
  85. package/dist/chunk-ZKVOS57Q.cjs.map +1 -0
  86. package/dist/comments.cjs +113 -98
  87. package/dist/comments.cjs.map +1 -1
  88. package/dist/comments.d.cts +6 -1
  89. package/dist/comments.d.ts +6 -1
  90. package/dist/comments.js +32 -17
  91. package/dist/comments.js.map +1 -1
  92. package/dist/diff.cjs +44 -40
  93. package/dist/diff.cjs.map +1 -1
  94. package/dist/diff.js +17 -13
  95. package/dist/diff.js.map +1 -1
  96. package/dist/docx.cjs +60 -40
  97. package/dist/docx.cjs.map +1 -1
  98. package/dist/docx.d.cts +6 -0
  99. package/dist/docx.d.ts +6 -0
  100. package/dist/docx.js +32 -12
  101. package/dist/docx.js.map +1 -1
  102. package/dist/embed.cjs +9 -9
  103. package/dist/embed.d.cts +1 -1
  104. package/dist/embed.d.ts +1 -1
  105. package/dist/embed.js +8 -8
  106. package/dist/{emoji-extension-DpQ43HjE.d.ts → emoji-extension-CmPlRssm.d.ts} +1 -1
  107. package/dist/{emoji-extension-C12gDPm6.d.cts → emoji-extension-zJ6F7hW8.d.cts} +1 -1
  108. package/dist/emoji.cjs +8 -8
  109. package/dist/emoji.d.cts +3 -3
  110. package/dist/emoji.d.ts +3 -3
  111. package/dist/emoji.js +7 -7
  112. package/dist/engine.cjs +4 -4
  113. package/dist/engine.d.cts +2 -2
  114. package/dist/engine.d.ts +2 -2
  115. package/dist/engine.js +3 -3
  116. package/dist/{find-extension-_sbZEt3R.d.cts → find-extension-BcRyE9K4.d.cts} +1 -1
  117. package/dist/{find-extension-DKqLLSuP.d.ts → find-extension-CmFehyul.d.ts} +1 -1
  118. package/dist/find.cjs +8 -8
  119. package/dist/find.d.cts +2 -2
  120. package/dist/find.d.ts +2 -2
  121. package/dist/find.js +7 -7
  122. package/dist/headless.cjs +5 -5
  123. package/dist/headless.d.cts +4 -4
  124. package/dist/headless.d.ts +4 -4
  125. package/dist/headless.js +4 -4
  126. package/dist/{index-CgD72kHB.d.cts → index-CFPmCee4.d.cts} +5 -2
  127. package/dist/{index-DNYbTK3w.d.ts → index-DiCGV60d.d.ts} +5 -2
  128. package/dist/index.cjs +7 -7
  129. package/dist/index.d.cts +4 -4
  130. package/dist/index.d.ts +4 -4
  131. package/dist/index.js +6 -6
  132. package/dist/math.cjs +10 -10
  133. package/dist/math.d.cts +1 -1
  134. package/dist/math.d.ts +1 -1
  135. package/dist/math.js +9 -9
  136. package/dist/mention.cjs +10 -10
  137. package/dist/mention.d.cts +1 -1
  138. package/dist/mention.d.ts +1 -1
  139. package/dist/mention.js +9 -9
  140. package/dist/presence.cjs +98 -104
  141. package/dist/presence.cjs.map +1 -1
  142. package/dist/presence.d.cts +2 -2
  143. package/dist/presence.d.ts +2 -2
  144. package/dist/presence.js +66 -72
  145. package/dist/presence.js.map +1 -1
  146. package/dist/{stats-extension-Bly88uio.d.ts → stats-extension-DisOEbbI.d.ts} +1 -1
  147. package/dist/{stats-extension-CJPijvUb.d.cts → stats-extension-Dt1lgP3m.d.cts} +1 -1
  148. package/dist/stats.cjs +9 -9
  149. package/dist/stats.d.cts +3 -3
  150. package/dist/stats.d.ts +3 -3
  151. package/dist/stats.js +8 -8
  152. package/dist/styles.css +1 -1
  153. package/dist/{table-extension-Dzf4k6hI.d.ts → table-extension-BTMJnT7J.d.ts} +1 -1
  154. package/dist/{table-extension-BTLxFy2S.d.cts → table-extension-DxZz3jqp.d.cts} +1 -1
  155. package/dist/table.cjs +8 -8
  156. package/dist/table.d.cts +2 -2
  157. package/dist/table.d.ts +2 -2
  158. package/dist/table.js +7 -7
  159. package/dist/{toc-extension-DWm5alVj.d.ts → toc-extension-CR9U-l6j.d.ts} +1 -1
  160. package/dist/{toc-extension-B3-s6h2x.d.cts → toc-extension-DGHywOBv.d.cts} +1 -1
  161. package/dist/toc.cjs +8 -8
  162. package/dist/toc.d.cts +2 -2
  163. package/dist/toc.d.ts +2 -2
  164. package/dist/toc.js +7 -7
  165. package/dist/{types-a1CRBlEh.d.ts → types-C6_QkXzy.d.ts} +1 -9
  166. package/dist/{types-Cz7XJLaK.d.cts → types-CJ7Gq3GX.d.cts} +1 -9
  167. package/dist/{view-controller-DSHw0ltQ.d.cts → view-controller-BD1KwYfE.d.cts} +6 -19
  168. package/dist/{view-controller-UbpzblGl.d.ts → view-controller-y4cb60ue.d.ts} +6 -19
  169. package/dist/view.cjs +6 -6
  170. package/dist/view.js +3 -3
  171. package/dist/yjs.cjs +302 -412
  172. package/dist/yjs.cjs.map +1 -1
  173. package/dist/yjs.d.cts +3 -3
  174. package/dist/yjs.d.ts +3 -3
  175. package/dist/yjs.js +211 -321
  176. package/dist/yjs.js.map +1 -1
  177. package/package.json +1 -1
  178. package/dist/chunk-2VDK27IF.cjs.map +0 -1
  179. package/dist/chunk-AEJXZBVR.cjs.map +0 -1
  180. package/dist/chunk-E75EHRPA.cjs +0 -175
  181. package/dist/chunk-E75EHRPA.cjs.map +0 -1
  182. package/dist/chunk-GTTPVJSD.cjs.map +0 -1
  183. package/dist/chunk-HELJTLNC.cjs.map +0 -1
  184. package/dist/chunk-HJIQT3S5.js.map +0 -1
  185. package/dist/chunk-JEIFJHEI.js +0 -14
  186. package/dist/chunk-JEIFJHEI.js.map +0 -1
  187. package/dist/chunk-KXOBZGQO.js.map +0 -1
  188. package/dist/chunk-LCQSG4M6.js.map +0 -1
  189. package/dist/chunk-MQ2XQ4MX.js.map +0 -1
  190. package/dist/chunk-ND5XJVK2.cjs.map +0 -1
  191. package/dist/chunk-OMOBMXD5.cjs.map +0 -1
  192. package/dist/chunk-PZ4GT5JO.cjs.map +0 -1
  193. package/dist/chunk-QAW5NH6S.cjs +0 -14
  194. package/dist/chunk-QAW5NH6S.cjs.map +0 -1
  195. package/dist/chunk-RDG4VI6E.cjs.map +0 -1
  196. package/dist/chunk-SG37UBDO.js.map +0 -1
  197. package/dist/chunk-TC4DARU2.js +0 -175
  198. package/dist/chunk-TC4DARU2.js.map +0 -1
  199. package/dist/chunk-WXMYDXPN.cjs.map +0 -1
  200. package/dist/chunk-XEBWC7ZL.js.map +0 -1
  201. package/dist/chunk-ZGZEJCRV.js.map +0 -1
  202. package/dist/chunk-ZHOSSWUM.js.map +0 -1
  203. package/dist/chunk-ZS2WA357.js.map +0 -1
  204. /package/dist/{chunk-JDPTZUBW.js.map → chunk-623AOJM2.js.map} +0 -0
  205. /package/dist/{chunk-47MLKSI2.js.map → chunk-ADSJ42DO.js.map} +0 -0
  206. /package/dist/{chunk-T7SW6OWV.js.map → chunk-IQBMAE3F.js.map} +0 -0
  207. /package/dist/{chunk-RUDWMKYX.js.map → chunk-JHQUHFLX.js.map} +0 -0
  208. /package/dist/{chunk-NNDYYEW5.js.map → chunk-N4FGA3H4.js.map} +0 -0
  209. /package/dist/{chunk-KAVU6T6J.js.map → chunk-OSHZQR3W.js.map} +0 -0
  210. /package/dist/{chunk-NOKWNK2O.js.map → chunk-RJRX34BZ.js.map} +0 -0
  211. /package/dist/{chunk-POBM7MGR.js.map → chunk-U3LOLYAU.js.map} +0 -0
  212. /package/dist/{chunk-PMWCQSQX.js.map → chunk-VCLL5C7J.js.map} +0 -0
  213. /package/dist/{chunk-K574XHMM.js.map → chunk-YBMUEEM5.js.map} +0 -0
@@ -1,7 +1,7 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunk2QCRZ7OLcjs = require('./chunk-2QCRZ7OL.cjs');
4
3
 
4
+ var _chunk6V6GGBDKcjs = require('./chunk-6V6GGBDK.cjs');
5
5
 
6
6
 
7
7
 
@@ -55,7 +55,8 @@ var _chunk2QCRZ7OLcjs = require('./chunk-2QCRZ7OL.cjs');
55
55
 
56
56
 
57
57
 
58
- var _chunkND5XJVK2cjs = require('./chunk-ND5XJVK2.cjs');
58
+
59
+ var _chunk4SLJNZSMcjs = require('./chunk-4SLJNZSM.cjs');
59
60
 
60
61
  // src/engine/transform/step.ts
61
62
  var StepError = class extends Error {
@@ -64,7 +65,7 @@ var identityMap = (pos) => pos;
64
65
 
65
66
  // src/engine/transform/step-access.ts
66
67
  function requireBlock(doc, id) {
67
- const block = _chunkND5XJVK2cjs.blockById.call(void 0, doc, id);
68
+ const block = _chunk4SLJNZSMcjs.blockById.call(void 0, doc, id);
68
69
  if (block === void 0) throw new StepError(`no block "${id}"`);
69
70
  return block;
70
71
  }
@@ -74,7 +75,7 @@ function requireRegion(block, region) {
74
75
  }
75
76
  function requireRange(block, region, from, to) {
76
77
  const inline = requireRegion(block, region);
77
- const length = _chunkND5XJVK2cjs.inlineLength.call(void 0, inline);
78
+ const length = _chunk4SLJNZSMcjs.inlineLength.call(void 0, inline);
78
79
  if (!(Number.isInteger(from) && Number.isInteger(to) && from >= 0 && from <= to && to <= length)) {
79
80
  throw new StepError(`range ${from} to ${to} is outside 0 to ${length} in "${block.id}" ${region}`);
80
81
  }
@@ -98,7 +99,7 @@ function patchAttrs(attrs, patch) {
98
99
  }
99
100
  function patchChangesAttrs(attrs, patch) {
100
101
  return Object.keys(patch).some(
101
- (key) => patch[key] === void 0 ? Object.hasOwn(attrs, key) : !_chunk2QCRZ7OLcjs.sameValue.call(void 0, attrs[key], patch[key])
102
+ (key) => patch[key] === void 0 ? Object.hasOwn(attrs, key) : !_chunk6V6GGBDKcjs.sameValue.call(void 0, attrs[key], patch[key])
102
103
  );
103
104
  }
104
105
  function previousValues(attrs, patch) {
@@ -120,7 +121,7 @@ function setAttrsStep(block, patch) {
120
121
  stepType: "setAttrs",
121
122
  apply(doc) {
122
123
  requireBlock(doc, block);
123
- return { doc: _chunkND5XJVK2cjs.updateBlock.call(void 0, doc, block, (b) => ({ ...b, attrs: patchAttrs(b.attrs, patch) })), map: identityMap };
124
+ return { doc: _chunk4SLJNZSMcjs.updateBlock.call(void 0, doc, block, (b) => ({ ...b, attrs: patchAttrs(b.attrs, patch) })), map: identityMap };
124
125
  },
125
126
  invert: (before) => setAttrsStep(block, previousValues(requireBlock(before, block).attrs, patch)),
126
127
  toJSON: () => ({ stepType: "setAttrs", block, patch: patchToJSON(patch) })
@@ -134,7 +135,7 @@ function setIndentStep(block, indent2) {
134
135
  if (!Number.isInteger(indent2) || indent2 < 0) {
135
136
  throw new StepError(`indent ${indent2} is not a non-negative integer`);
136
137
  }
137
- return { doc: _chunkND5XJVK2cjs.updateBlock.call(void 0, doc, block, (b) => ({ ...b, indent: indent2 })), map: identityMap };
138
+ return { doc: _chunk4SLJNZSMcjs.updateBlock.call(void 0, doc, block, (b) => ({ ...b, indent: indent2 })), map: identityMap };
138
139
  },
139
140
  invert: (before) => setIndentStep(block, requireBlock(before, block).indent),
140
141
  toJSON: () => ({ stepType: "setIndent", block, indent: indent2 })
@@ -143,7 +144,7 @@ function setIndentStep(block, indent2) {
143
144
 
144
145
  // src/engine/transform/block-edges.ts
145
146
  function orderedRegions(block) {
146
- return Object.keys(block.regions).sort(_chunkND5XJVK2cjs.compareRegionNames);
147
+ return Object.keys(block.regions).sort(_chunk4SLJNZSMcjs.compareRegionNames);
147
148
  }
148
149
  function firstRegion(block) {
149
150
  return _nullishCoalesce(orderedRegions(block)[0], () => ( null));
@@ -156,12 +157,12 @@ function blockEnd(block) {
156
157
  return {
157
158
  block: block.id,
158
159
  region: _nullishCoalesce(region, () => ( "")),
159
- offset: region === void 0 ? 0 : _chunkND5XJVK2cjs.inlineLength.call(void 0, block.regions[region])
160
+ offset: region === void 0 ? 0 : _chunk4SLJNZSMcjs.inlineLength.call(void 0, block.regions[region])
160
161
  };
161
162
  }
162
163
  function clampPos(block, pos) {
163
164
  if (!Object.hasOwn(block.regions, pos.region)) return blockStart(block);
164
- const length = _chunkND5XJVK2cjs.inlineLength.call(void 0, block.regions[pos.region]);
165
+ const length = _chunk4SLJNZSMcjs.inlineLength.call(void 0, block.regions[pos.region]);
165
166
  return pos.offset > length ? { ...pos, offset: length } : pos;
166
167
  }
167
168
 
@@ -176,7 +177,7 @@ function insertBlocksStep(index, blocks) {
176
177
  if (doc.index.has(id) || ids.has(id)) throw new StepError(`block "${id}" is already in the document`);
177
178
  ids.add(id);
178
179
  }
179
- return { doc: _chunkND5XJVK2cjs.replaceBlocks.call(void 0, doc, index, 0, blocks), map: identityMap };
180
+ return { doc: _chunk4SLJNZSMcjs.replaceBlocks.call(void 0, doc, index, 0, blocks), map: identityMap };
180
181
  },
181
182
  invert: () => removeBlocksStep(index, blocks.length),
182
183
  toJSON: () => ({ stepType: "insertBlocks", index, blocks })
@@ -196,7 +197,7 @@ function removeBlocksStep(index, count2) {
196
197
  const after = following && blockStart(following);
197
198
  return _nullishCoalesce((assoc === -1 ? _nullishCoalesce(before, () => ( after)) : _nullishCoalesce(after, () => ( before))), () => ( pos));
198
199
  };
199
- return { doc: _chunkND5XJVK2cjs.replaceBlocks.call(void 0, doc, index, count2, []), map };
200
+ return { doc: _chunk4SLJNZSMcjs.replaceBlocks.call(void 0, doc, index, count2, []), map };
200
201
  },
201
202
  invert: (before) => insertBlocksStep(index, before.blocks.slice(index, index + count2)),
202
203
  toJSON: () => ({ stepType: "removeBlocks", index, count: count2 })
@@ -210,14 +211,14 @@ function moveBlocksStep(from, count2, to) {
210
211
  requireSpan(to, count2, doc.blocks.length);
211
212
  const moved2 = doc.blocks.slice(from, from + count2);
212
213
  const rest = [...doc.blocks.slice(0, from), ...doc.blocks.slice(from + count2)];
213
- return { doc: _chunkND5XJVK2cjs.createDoc.call(void 0, [...rest.slice(0, to), ...moved2, ...rest.slice(to)]), map: identityMap };
214
+ return { doc: _chunk4SLJNZSMcjs.createDoc.call(void 0, [...rest.slice(0, to), ...moved2, ...rest.slice(to)]), map: identityMap };
214
215
  },
215
216
  invert: () => moveBlocksStep(to, count2, from),
216
217
  toJSON: () => ({ stepType: "moveBlocks", from, count: count2, to })
217
218
  });
218
219
  }
219
220
  var keepsRegions = (before, after) => Object.entries(before.regions).every(
220
- ([name, inline]) => Object.hasOwn(after.regions, name) && _chunkND5XJVK2cjs.equalInline.call(void 0, inline, after.regions[name])
221
+ ([name, inline]) => Object.hasOwn(after.regions, name) && _chunk4SLJNZSMcjs.equalInline.call(void 0, inline, after.regions[name])
221
222
  );
222
223
  function replaceBlockStep(block) {
223
224
  const clamp = (pos) => pos.block === block.id ? clampPos(block, pos) : pos;
@@ -225,7 +226,7 @@ function replaceBlockStep(block) {
225
226
  stepType: "replaceBlock",
226
227
  apply(doc) {
227
228
  const map = keepsRegions(requireBlock(doc, block.id), block) ? identityMap : clamp;
228
- return { doc: _chunkND5XJVK2cjs.updateBlock.call(void 0, doc, block.id, () => block), map };
229
+ return { doc: _chunk4SLJNZSMcjs.updateBlock.call(void 0, doc, block.id, () => block), map };
229
230
  },
230
231
  invert: (before) => replaceBlockStep(requireBlock(before, block.id)),
231
232
  toJSON: () => ({ stepType: "replaceBlock", block })
@@ -234,7 +235,7 @@ function replaceBlockStep(block) {
234
235
 
235
236
  // src/engine/transform/replace-inline-step.ts
236
237
  function replaceInlineStep(block, region, from, to, slice) {
237
- const inserted = _chunkND5XJVK2cjs.inlineLength.call(void 0, slice);
238
+ const inserted = _chunk4SLJNZSMcjs.inlineLength.call(void 0, slice);
238
239
  const map = (pos, assoc = 1) => {
239
240
  if (pos.block !== block || pos.region !== region || pos.offset < from) return pos;
240
241
  if (pos.offset > to) return { ...pos, offset: pos.offset + inserted - (to - from) };
@@ -244,12 +245,12 @@ function replaceInlineStep(block, region, from, to, slice) {
244
245
  stepType: "replaceInline",
245
246
  apply(doc) {
246
247
  const inline = requireRange(requireBlock(doc, block), region, from, to);
247
- const next = _chunkND5XJVK2cjs.updateBlock.call(void 0, doc, block, (b) => withRegion(b, region, _chunkND5XJVK2cjs.replaceInline.call(void 0, inline, from, to, slice)));
248
+ const next = _chunk4SLJNZSMcjs.updateBlock.call(void 0, doc, block, (b) => withRegion(b, region, _chunk4SLJNZSMcjs.replaceInline.call(void 0, inline, from, to, slice)));
248
249
  return { doc: next, map };
249
250
  },
250
251
  invert(before) {
251
252
  const inline = requireRange(requireBlock(before, block), region, from, to);
252
- return replaceInlineStep(block, region, from, from + inserted, _chunkND5XJVK2cjs.sliceInline.call(void 0, inline, from, to));
253
+ return replaceInlineStep(block, region, from, from + inserted, _chunk4SLJNZSMcjs.sliceInline.call(void 0, inline, from, to));
253
254
  },
254
255
  toJSON: () => ({ stepType: "replaceInline", block, region, from, to, slice })
255
256
  });
@@ -262,24 +263,24 @@ function markStep(stepType, target, mark, change) {
262
263
  stepType,
263
264
  apply(doc) {
264
265
  const inline = requireRange(requireBlock(doc, block), region, from, to);
265
- return { doc: _chunkND5XJVK2cjs.updateBlock.call(void 0, doc, block, (b) => withRegion(b, region, change(inline))), map: identityMap };
266
+ return { doc: _chunk4SLJNZSMcjs.updateBlock.call(void 0, doc, block, (b) => withRegion(b, region, change(inline))), map: identityMap };
266
267
  },
267
268
  invert(before) {
268
269
  const inline = requireRange(requireBlock(before, block), region, from, to);
269
- return replaceInlineStep(block, region, from, to, _chunkND5XJVK2cjs.sliceInline.call(void 0, inline, from, to));
270
+ return replaceInlineStep(block, region, from, to, _chunk4SLJNZSMcjs.sliceInline.call(void 0, inline, from, to));
270
271
  },
271
272
  toJSON: () => ({ stepType, ...target, mark })
272
273
  });
273
274
  }
274
275
  function addMarkStep(block, region, from, to, mark) {
275
- return markStep("addMark", { block, region, from, to }, mark, (inline) => _chunkND5XJVK2cjs.addMarkRange.call(void 0, inline, from, to, mark));
276
+ return markStep("addMark", { block, region, from, to }, mark, (inline) => _chunk4SLJNZSMcjs.addMarkRange.call(void 0, inline, from, to, mark));
276
277
  }
277
278
  function removeMarkStep(block, region, from, to, mark) {
278
279
  return markStep(
279
280
  "removeMark",
280
281
  { block, region, from, to },
281
282
  mark,
282
- (inline) => _chunkND5XJVK2cjs.removeMarkRange.call(void 0, inline, from, to, mark)
283
+ (inline) => _chunk4SLJNZSMcjs.removeMarkRange.call(void 0, inline, from, to, mark)
283
284
  );
284
285
  }
285
286
 
@@ -300,10 +301,31 @@ function commonSuffix(a, b) {
300
301
  }
301
302
 
302
303
  // src/engine/transform/map-text-change.ts
304
+ var DIFF_LIMIT = 1e3;
303
305
  function mapTextChange(before, after) {
304
306
  const from = commonPrefix(before, after);
305
- const inserted = from + commonSuffix(before, after) >= before.length;
306
- return (offset, assoc) => offset > from || offset === from && inserted && assoc > 0 ? Math.max(offset + after.length - before.length, from) : offset;
307
+ const to = Math.min(commonSuffix(before, after), before.length - from, after.length - from);
308
+ const removed = before.slice(from, before.length - to);
309
+ const added = after.slice(from, after.length - to);
310
+ const ops = removed.length + added.length > DIFF_LIMIT ? [
311
+ { op: "delete", items: removed },
312
+ { op: "insert", items: added }
313
+ ] : _chunk6V6GGBDKcjs.diffSequences.call(void 0, removed.split(""), added.split(""));
314
+ return (offset, assoc) => {
315
+ let b = from;
316
+ let a = from;
317
+ let replaced = false;
318
+ if (offset < b) return offset;
319
+ for (const { op, items } of ops) {
320
+ const n = items.length;
321
+ if (op !== "insert" && offset < b + n) return op === "equal" ? a + offset - b : a;
322
+ if (op === "insert" && offset === b && !replaced && assoc < 0) return a;
323
+ replaced = op === "delete" && n > 0;
324
+ if (op !== "insert") b += n;
325
+ if (op !== "delete") a += n;
326
+ }
327
+ return a + offset - b;
328
+ };
307
329
  }
308
330
 
309
331
  // src/engine/transform/replace-doc-step.ts
@@ -314,13 +336,13 @@ function replaceDocStep(next) {
314
336
  const regionMaps = /* @__PURE__ */ new Map();
315
337
  const map = (pos, assoc = 1) => {
316
338
  const { block, region } = pos;
317
- const survivor = _chunkND5XJVK2cjs.blockById.call(void 0, next, block);
339
+ const survivor = _chunk4SLJNZSMcjs.blockById.call(void 0, next, block);
318
340
  if (survivor !== void 0) {
319
341
  const key = JSON.stringify([block, region]);
320
342
  let regionMap = regionMaps.get(key);
321
343
  if (regionMap === void 0) {
322
- const before = _chunkND5XJVK2cjs.inlineText.call(void 0, _nullishCoalesce(_optionalChain([_chunkND5XJVK2cjs.blockById.call(void 0, doc, block), 'optionalAccess', _2 => _2.regions, 'access', _3 => _3[region]]), () => ( [])));
323
- regionMap = mapTextChange(before, _chunkND5XJVK2cjs.inlineText.call(void 0, _nullishCoalesce(survivor.regions[region], () => ( []))));
344
+ const before = _chunk4SLJNZSMcjs.inlineText.call(void 0, _nullishCoalesce(_optionalChain([_chunk4SLJNZSMcjs.blockById.call(void 0, doc, block), 'optionalAccess', _2 => _2.regions, 'access', _3 => _3[region]]), () => ( [])));
345
+ regionMap = mapTextChange(before, _chunk4SLJNZSMcjs.inlineText.call(void 0, _nullishCoalesce(survivor.regions[region], () => ( []))));
324
346
  regionMaps.set(key, regionMap);
325
347
  }
326
348
  const offset = regionMap(pos.offset, assoc);
@@ -354,10 +376,10 @@ function splitBlockStep(block, region, offset, created) {
354
376
  type: created.type,
355
377
  indent: created.indent,
356
378
  attrs: created.attrs,
357
- regions: { ...created.regions, [created.region]: _chunkND5XJVK2cjs.sliceInline.call(void 0, inline, offset, _chunkND5XJVK2cjs.inlineLength.call(void 0, inline)) }
379
+ regions: { ...created.regions, [created.region]: _chunk4SLJNZSMcjs.sliceInline.call(void 0, inline, offset, _chunk4SLJNZSMcjs.inlineLength.call(void 0, inline)) }
358
380
  };
359
- const head = withRegion(target, region, _chunkND5XJVK2cjs.sliceInline.call(void 0, inline, 0, offset));
360
- return { doc: _chunkND5XJVK2cjs.replaceBlocks.call(void 0, doc, _chunkND5XJVK2cjs.indexOfBlock.call(void 0, doc, block), 1, [head, tail]), map };
381
+ const head = withRegion(target, region, _chunk4SLJNZSMcjs.sliceInline.call(void 0, inline, 0, offset));
382
+ return { doc: _chunk4SLJNZSMcjs.replaceBlocks.call(void 0, doc, _chunk4SLJNZSMcjs.indexOfBlock.call(void 0, doc, block), 1, [head, tail]), map };
361
383
  },
362
384
  invert: () => joinBlocksStep(block, region, created.id, created.region),
363
385
  toJSON: () => ({ stepType: "splitBlock", block, region, offset, created })
@@ -369,17 +391,17 @@ function joinBlocksStep(target, targetRegion, source, sourceRegion) {
369
391
  apply(doc) {
370
392
  const first = requireBlock(doc, target);
371
393
  const second = requireBlock(doc, source);
372
- const index = _chunkND5XJVK2cjs.indexOfBlock.call(void 0, doc, target);
373
- if (_chunkND5XJVK2cjs.indexOfBlock.call(void 0, doc, source) !== index + 1) throw new StepError(`block "${source}" does not follow "${target}"`);
394
+ const index = _chunk4SLJNZSMcjs.indexOfBlock.call(void 0, doc, target);
395
+ if (_chunk4SLJNZSMcjs.indexOfBlock.call(void 0, doc, source) !== index + 1) throw new StepError(`block "${source}" does not follow "${target}"`);
374
396
  const head = requireRegion(first, targetRegion);
375
- const length = _chunkND5XJVK2cjs.inlineLength.call(void 0, head);
376
- const merged = _chunkND5XJVK2cjs.replaceInline.call(void 0, head, length, length, requireRegion(second, sourceRegion));
397
+ const length = _chunk4SLJNZSMcjs.inlineLength.call(void 0, head);
398
+ const merged = _chunk4SLJNZSMcjs.replaceInline.call(void 0, head, length, length, requireRegion(second, sourceRegion));
377
399
  const map = (pos) => pos.block === source ? { block: target, region: targetRegion, offset: length + (pos.region === sourceRegion ? pos.offset : 0) } : pos;
378
- return { doc: _chunkND5XJVK2cjs.replaceBlocks.call(void 0, doc, index, 2, [withRegion(first, targetRegion, merged)]), map };
400
+ return { doc: _chunk4SLJNZSMcjs.replaceBlocks.call(void 0, doc, index, 2, [withRegion(first, targetRegion, merged)]), map };
379
401
  },
380
402
  invert(before) {
381
403
  const { id, type, attrs, indent: indent2, regions } = requireBlock(before, source);
382
- const length = _chunkND5XJVK2cjs.inlineLength.call(void 0, requireRegion(requireBlock(before, target), targetRegion));
404
+ const length = _chunk4SLJNZSMcjs.inlineLength.call(void 0, requireRegion(requireBlock(before, target), targetRegion));
383
405
  const created = { id, type, attrs, indent: indent2, region: sourceRegion, regions };
384
406
  return splitBlockStep(target, targetRegion, length, created);
385
407
  },
@@ -388,9 +410,9 @@ function joinBlocksStep(target, targetRegion, source, sourceRegion) {
388
410
  }
389
411
 
390
412
  // src/engine/transform/step-json.ts
391
- var isRegions = (value) => _chunkND5XJVK2cjs.isRecord.call(void 0, value) && Object.values(value).every(Array.isArray);
392
- var isMark = (value) => _chunkND5XJVK2cjs.isRecord.call(void 0, value) && typeof value.type === "string" && (value.attrs === void 0 || _chunkND5XJVK2cjs.isRecord.call(void 0, value.attrs));
393
- var isBlockShape = (value) => _chunkND5XJVK2cjs.isRecord.call(void 0, value) && typeof value.id === "string" && typeof value.type === "string" && Number.isInteger(value.indent) && _chunkND5XJVK2cjs.isRecord.call(void 0, value.attrs);
413
+ var isRegions = (value) => _chunk4SLJNZSMcjs.isRecord.call(void 0, value) && Object.values(value).every(Array.isArray);
414
+ var isMark = (value) => _chunk4SLJNZSMcjs.isRecord.call(void 0, value) && typeof value.type === "string" && (value.attrs === void 0 || _chunk4SLJNZSMcjs.isRecord.call(void 0, value.attrs));
415
+ var isBlockShape = (value) => _chunk4SLJNZSMcjs.isRecord.call(void 0, value) && typeof value.id === "string" && typeof value.type === "string" && Number.isInteger(value.indent) && _chunk4SLJNZSMcjs.isRecord.call(void 0, value.attrs);
394
416
  var isBlock = (value) => isBlockShape(value) && isRegions(value.regions);
395
417
  var isCreated = (value) => isBlockShape(value) && typeof value.region === "string" && (value.regions === void 0 || isRegions(value.regions));
396
418
  var isString = (value) => typeof value === "string";
@@ -402,75 +424,69 @@ function docOf(blocks) {
402
424
  if (new Set(blocks.map((block) => block.id)).size !== blocks.length) {
403
425
  throw new StepError("a replaceDoc step repeats a block id");
404
426
  }
405
- return _chunkND5XJVK2cjs.createDoc.call(void 0, blocks);
427
+ return _chunk4SLJNZSMcjs.createDoc.call(void 0, blocks);
406
428
  }
407
429
  function reader(json) {
408
- const read = (key, accept) => {
430
+ return (key, accept) => {
409
431
  const value = json[key];
410
432
  if (!accept(value)) throw new StepError(`invalid "${key}" in a ${json.stepType} step`);
411
433
  return value;
412
434
  };
413
- return {
414
- string: (key) => read(key, isString),
415
- integer: (key) => read(key, isInteger),
416
- inline: (key) => read(key, isInline),
417
- record: (key) => read(key, _chunkND5XJVK2cjs.isRecord),
418
- mark: (key) => read(key, isMark),
419
- markOrType: (key) => read(key, isMarkOrType),
420
- block: (key) => read(key, isBlock),
421
- blocks: (key) => read(key, areBlocks),
422
- created: (key) => read(key, isCreated)
423
- };
424
435
  }
425
436
  function stepFromJSON(json) {
426
- const get = reader(json);
437
+ const read = reader(json);
427
438
  switch (json.stepType) {
428
439
  case "replaceInline":
429
440
  return replaceInlineStep(
430
- get.string("block"),
431
- get.string("region"),
432
- get.integer("from"),
433
- get.integer("to"),
434
- get.inline("slice")
441
+ read("block", isString),
442
+ read("region", isString),
443
+ read("from", isInteger),
444
+ read("to", isInteger),
445
+ read("slice", isInline)
435
446
  );
436
447
  case "addMark":
437
448
  return addMarkStep(
438
- get.string("block"),
439
- get.string("region"),
440
- get.integer("from"),
441
- get.integer("to"),
442
- get.mark("mark")
449
+ read("block", isString),
450
+ read("region", isString),
451
+ read("from", isInteger),
452
+ read("to", isInteger),
453
+ read("mark", isMark)
443
454
  );
444
455
  case "removeMark":
445
456
  return removeMarkStep(
446
- get.string("block"),
447
- get.string("region"),
448
- get.integer("from"),
449
- get.integer("to"),
450
- get.markOrType("mark")
457
+ read("block", isString),
458
+ read("region", isString),
459
+ read("from", isInteger),
460
+ read("to", isInteger),
461
+ read("mark", isMarkOrType)
451
462
  );
452
463
  case "setAttrs":
453
- return setAttrsStep(get.string("block"), patchFromJSON(get.record("patch")));
464
+ return setAttrsStep(read("block", isString), patchFromJSON(read("patch", _chunk4SLJNZSMcjs.isRecord)));
454
465
  case "setIndent":
455
- return setIndentStep(get.string("block"), get.integer("indent"));
466
+ return setIndentStep(read("block", isString), read("indent", isInteger));
456
467
  case "insertBlocks":
457
- return insertBlocksStep(get.integer("index"), get.blocks("blocks"));
468
+ return insertBlocksStep(read("index", isInteger), read("blocks", areBlocks));
458
469
  case "removeBlocks":
459
- return removeBlocksStep(get.integer("index"), get.integer("count"));
470
+ return removeBlocksStep(read("index", isInteger), read("count", isInteger));
460
471
  case "moveBlocks":
461
- return moveBlocksStep(get.integer("from"), get.integer("count"), get.integer("to"));
472
+ return moveBlocksStep(read("from", isInteger), read("count", isInteger), read("to", isInteger));
462
473
  case "replaceBlock":
463
- return replaceBlockStep(get.block("block"));
474
+ return replaceBlockStep(read("block", isBlock));
464
475
  case "replaceDoc":
465
- return replaceDocStep(docOf(get.blocks("blocks")));
476
+ return replaceDocStep(docOf(read("blocks", areBlocks)));
466
477
  case "splitBlock":
467
- return splitBlockStep(get.string("block"), get.string("region"), get.integer("offset"), get.created("created"));
478
+ return splitBlockStep(
479
+ read("block", isString),
480
+ read("region", isString),
481
+ read("offset", isInteger),
482
+ read("created", isCreated)
483
+ );
468
484
  case "joinBlocks":
469
485
  return joinBlocksStep(
470
- get.string("target"),
471
- get.string("targetRegion"),
472
- get.string("source"),
473
- get.string("sourceRegion")
486
+ read("target", isString),
487
+ read("targetRegion", isString),
488
+ read("source", isString),
489
+ read("sourceRegion", isString)
474
490
  );
475
491
  default:
476
492
  throw new StepError(`unknown step type "${json.stepType}"`);
@@ -479,7 +495,7 @@ function stepFromJSON(json) {
479
495
 
480
496
  // src/engine/model/position.ts
481
497
  function comparePos(doc, a, b) {
482
- return _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, a.block) - _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, b.block) || _chunkND5XJVK2cjs.compareRegionNames.call(void 0, a.region, b.region) || a.offset - b.offset;
498
+ return _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, a.block) - _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, b.block) || _chunk4SLJNZSMcjs.compareRegionNames.call(void 0, a.region, b.region) || a.offset - b.offset;
483
499
  }
484
500
  function orderedRange(doc, anchor, head) {
485
501
  return comparePos(doc, anchor, head) <= 0 ? { from: anchor, to: head } : { from: head, to: anchor };
@@ -518,7 +534,7 @@ function selectedBlockIds(doc, selection) {
518
534
  if (selection === null) return [];
519
535
  if (selection.kind === "node") return [selection.block];
520
536
  const ends = selection.kind === "text" ? [selection.anchor.block, selection.head.block] : [selection.anchor, selection.head];
521
- const [first, second] = ends.map((id) => _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, id));
537
+ const [first, second] = ends.map((id) => _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, id));
522
538
  return doc.blocks.slice(Math.min(first, second), Math.max(first, second) + 1).map((block) => block.id);
523
539
  }
524
540
  function isBackward(doc, selection) {
@@ -526,7 +542,7 @@ function isBackward(doc, selection) {
526
542
  const { anchor, head } = selection;
527
543
  return doc.index.has(anchor.block) && doc.index.has(head.block) && comparePos(doc, anchor, head) > 0;
528
544
  }
529
- return doc.index.has(selection.anchor) && doc.index.has(selection.head) && _chunkND5XJVK2cjs.indexOfBlock.call(void 0, doc, selection.anchor) > _chunkND5XJVK2cjs.indexOfBlock.call(void 0, doc, selection.head);
545
+ return doc.index.has(selection.anchor) && doc.index.has(selection.head) && _chunk4SLJNZSMcjs.indexOfBlock.call(void 0, doc, selection.anchor) > _chunk4SLJNZSMcjs.indexOfBlock.call(void 0, doc, selection.head);
530
546
  }
531
547
  var blockProbe = (block) => ({ block, region: "", offset: 0 });
532
548
  function mapSelection(selection, map, doc) {
@@ -545,18 +561,18 @@ function mapSelection(selection, map, doc) {
545
561
  return anchor === selection.anchor && head === selection.head ? selection : textSelection(anchor, head);
546
562
  }
547
563
  function primaryRegion(schema, block) {
548
- const spec = _chunkND5XJVK2cjs.specFor.call(void 0, schema, block.type);
564
+ const spec = _chunk4SLJNZSMcjs.specFor.call(void 0, schema, block.type);
549
565
  if (spec.flow === "text" && spec.primaryRegion !== void 0 && Object.hasOwn(block.regions, spec.primaryRegion)) {
550
566
  return spec.primaryRegion;
551
567
  }
552
568
  return firstRegion(block);
553
569
  }
554
570
  function flowEdge(schema, block, atEnd) {
555
- const region = _chunkND5XJVK2cjs.specFor.call(void 0, schema, block.type).flow === "text" ? primaryRegion(schema, block) : null;
556
- return region === null ? null : { block: block.id, region, offset: atEnd ? _chunkND5XJVK2cjs.inlineLength.call(void 0, block.regions[region]) : 0 };
571
+ const region = _chunk4SLJNZSMcjs.specFor.call(void 0, schema, block.type).flow === "text" ? primaryRegion(schema, block) : null;
572
+ return region === null ? null : { block: block.id, region, offset: atEnd ? _chunk4SLJNZSMcjs.inlineLength.call(void 0, block.regions[region]) : 0 };
557
573
  }
558
574
  function edge(doc, schema, blockId, atEnd) {
559
- const block = doc.blocks[_chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, blockId)];
575
+ const block = doc.blocks[_chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, blockId)];
560
576
  const flow = flowEdge(schema, block, atEnd);
561
577
  if (flow !== null) return textSelection(flow);
562
578
  if (Object.keys(block.regions).length === 0) return nodeSelection(blockId);
@@ -572,13 +588,13 @@ function defaultSelection(doc, schema) {
572
588
  return doc.blocks.length === 0 ? null : startOf(doc, schema, doc.blocks[0].id);
573
589
  }
574
590
  function validatePos(doc, schema, pos) {
575
- const block = _chunkND5XJVK2cjs.blockById.call(void 0, doc, pos.block);
591
+ const block = _chunk4SLJNZSMcjs.blockById.call(void 0, doc, pos.block);
576
592
  if (block === void 0) return null;
577
593
  if (!Object.hasOwn(block.regions, pos.region)) {
578
594
  const region = primaryRegion(schema, block);
579
595
  return region === null ? nodeSelection(block.id) : { block: block.id, region, offset: 0 };
580
596
  }
581
- const length = _chunkND5XJVK2cjs.inlineLength.call(void 0, block.regions[pos.region]);
597
+ const length = _chunk4SLJNZSMcjs.inlineLength.call(void 0, block.regions[pos.region]);
582
598
  return pos.offset >= 0 && pos.offset <= length ? pos : { ...pos, offset: Math.min(Math.max(pos.offset, 0), length) };
583
599
  }
584
600
  function nearestFlow(doc, schema, from, to, atEnd) {
@@ -589,14 +605,14 @@ function nearestFlow(doc, schema, from, to, atEnd) {
589
605
  }
590
606
  return null;
591
607
  }
592
- var inFlow = (doc, schema, pos) => _optionalChain([flowEdge, 'call', _6 => _6(schema, doc.blocks[_chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, pos.block)], false), 'optionalAccess', _7 => _7.region]) === pos.region;
608
+ var inFlow = (doc, schema, pos) => _optionalChain([flowEdge, 'call', _6 => _6(schema, doc.blocks[_chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, pos.block)], false), 'optionalAccess', _7 => _7.region]) === pos.region;
593
609
  function clampToFlow(doc, schema, selection) {
594
610
  const { anchor, head } = selection;
595
611
  if (anchor.block === head.block) return selection;
596
612
  const backward = comparePos(doc, anchor, head) > 0;
597
613
  const [from, to] = backward ? [head, anchor] : [anchor, head];
598
- const first = _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, from.block);
599
- const last = _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, to.block);
614
+ const first = _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, from.block);
615
+ const last = _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, to.block);
600
616
  const start = inFlow(doc, schema, from) ? from : nearestFlow(doc, schema, first + 1, last, false);
601
617
  const end = inFlow(doc, schema, to) ? to : nearestFlow(doc, schema, last - 1, first, true);
602
618
  if (start === from && end === to) return selection;
@@ -615,9 +631,9 @@ function validateText(doc, schema, selection) {
615
631
  return clampToFlow(doc, schema, valid);
616
632
  }
617
633
  function validateNode(doc, schema, selection) {
618
- const block = _chunkND5XJVK2cjs.blockById.call(void 0, doc, selection.block);
634
+ const block = _chunk4SLJNZSMcjs.blockById.call(void 0, doc, selection.block);
619
635
  if (block === void 0) return defaultSelection(doc, schema);
620
- return _chunkND5XJVK2cjs.specFor.call(void 0, schema, block.type).flow === "text" ? startOf(doc, schema, block.id) : selection;
636
+ return _chunk4SLJNZSMcjs.specFor.call(void 0, schema, block.type).flow === "text" ? startOf(doc, schema, block.id) : selection;
621
637
  }
622
638
  function validateSelection(doc, schema, selection) {
623
639
  if (doc.blocks.length === 0) return null;
@@ -648,7 +664,7 @@ function hidingToggle(doc, index, isClosed = isClosedToggle) {
648
664
  }
649
665
 
650
666
  // src/engine/state/visible-selection.ts
651
- var hiderOf = (doc, id) => hidingToggle(doc, _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, id) + 1);
667
+ var hiderOf = (doc, id) => hidingToggle(doc, _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, id) + 1);
652
668
  function toggleEnd(doc, schema, toggle) {
653
669
  const end = endOf(doc, schema, doc.blocks[toggle].id);
654
670
  return end.kind === "text" ? end.head : blockEnd(doc.blocks[toggle]);
@@ -662,7 +678,7 @@ function visibleText(doc, schema, selection) {
662
678
  }
663
679
  function visibleBlocks(doc, schema, selection) {
664
680
  const ids = [selection.anchor, selection.head];
665
- const indexes = ids.map((id) => _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, id));
681
+ const indexes = ids.map((id) => _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, id));
666
682
  const from = Math.min(...indexes);
667
683
  const to = Math.max(...indexes);
668
684
  const hiders = indexes.map((index) => hidingToggle(doc, index + 1));
@@ -738,54 +754,54 @@ function createPluginKey(name) {
738
754
  // src/engine/state/transaction.ts
739
755
  var foreignOrigins = ["remote", "reconcile", "history"];
740
756
  var UNFILTERED = "unfiltered";
741
- var Transaction = (_class = class {
742
-
743
-
757
+ var Transaction = class {
744
758
 
745
759
 
746
-
747
- __init() {this.selectionWasSet = false}
748
- __init2() {this.storedMarksWereSet = false}
749
- __init3() {this.stepList = []}
750
- __init4() {this.docList = []}
751
- __init5() {this.mapList = []}
752
- __init6() {this.metaValues = /* @__PURE__ */ new Map()}
753
- constructor(state, time = state.clock()) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this);_class.prototype.__init4.call(this);_class.prototype.__init5.call(this);_class.prototype.__init6.call(this);
760
+ #currentDoc;
761
+ #currentSelection;
762
+ #currentStoredMarks;
763
+ #selectionWasSet = false;
764
+ #storedMarksWereSet = false;
765
+ #stepList = [];
766
+ #docList = [];
767
+ #mapList = [];
768
+ #metaValues = /* @__PURE__ */ new Map();
769
+ constructor(state, time = state.clock()) {
754
770
  this.before = state;
755
771
  this.time = time;
756
- this.currentDoc = state.doc;
757
- this.currentSelection = state.selection;
758
- this.currentStoredMarks = state.storedMarks;
772
+ this.#currentDoc = state.doc;
773
+ this.#currentSelection = state.selection;
774
+ this.#currentStoredMarks = state.storedMarks;
759
775
  }
760
776
  get doc() {
761
- return this.currentDoc;
777
+ return this.#currentDoc;
762
778
  }
763
779
  get docs() {
764
- return this.docList;
780
+ return this.#docList;
765
781
  }
766
782
  get steps() {
767
- return this.stepList;
783
+ return this.#stepList;
768
784
  }
769
785
  get maps() {
770
- return this.mapList;
786
+ return this.#mapList;
771
787
  }
772
788
  get docChanged() {
773
- return this.stepList.length > 0;
789
+ return this.#stepList.length > 0;
774
790
  }
775
791
  get selection() {
776
- return this.currentSelection;
792
+ return this.#currentSelection;
777
793
  }
778
794
  get selectionSet() {
779
- return this.selectionWasSet;
795
+ return this.#selectionWasSet;
780
796
  }
781
797
  get storedMarks() {
782
- return this.currentStoredMarks;
798
+ return this.#currentStoredMarks;
783
799
  }
784
800
  get storedMarksSet() {
785
- return this.storedMarksWereSet;
801
+ return this.#storedMarksWereSet;
786
802
  }
787
803
  get meta() {
788
- return this.metaValues;
804
+ return this.#metaValues;
789
805
  }
790
806
  get origin() {
791
807
  return _nullishCoalesce(this.getMeta("origin"), () => ( "command"));
@@ -794,14 +810,14 @@ var Transaction = (_class = class {
794
810
  return this.getMeta("addToHistory") !== false;
795
811
  }
796
812
  step(step) {
797
- const { doc, map } = step.apply(this.currentDoc);
798
- if (this.currentSelection !== null) {
799
- this.currentSelection = mapSelection(this.currentSelection, map, this.currentDoc);
813
+ const { doc, map } = step.apply(this.#currentDoc);
814
+ if (this.#currentSelection !== null) {
815
+ this.#currentSelection = mapSelection(this.#currentSelection, map, this.#currentDoc);
800
816
  }
801
- this.docList.push(this.currentDoc);
802
- this.stepList.push(step);
803
- this.mapList.push(map);
804
- this.currentDoc = doc;
817
+ this.#docList.push(this.#currentDoc);
818
+ this.#stepList.push(step);
819
+ this.#mapList.push(map);
820
+ this.#currentDoc = doc;
805
821
  return this;
806
822
  }
807
823
  maybeStep(step) {
@@ -814,37 +830,37 @@ var Transaction = (_class = class {
814
830
  }
815
831
  }
816
832
  setSelection(selection) {
817
- this.currentSelection = selection;
818
- this.selectionWasSet = true;
833
+ this.#currentSelection = selection;
834
+ this.#selectionWasSet = true;
819
835
  return this;
820
836
  }
821
837
  setStoredMarks(marks) {
822
- this.currentStoredMarks = marks;
823
- this.storedMarksWereSet = true;
838
+ this.#currentStoredMarks = marks;
839
+ this.#storedMarksWereSet = true;
824
840
  return this;
825
841
  }
826
842
  setOrigin(origin) {
827
843
  return this.setMeta("origin", origin);
828
844
  }
829
845
  setMeta(key, value) {
830
- this.metaValues.set(key, value);
846
+ this.#metaValues.set(key, value);
831
847
  return this;
832
848
  }
833
849
  getMeta(key) {
834
- return this.metaValues.get(key);
850
+ return this.#metaValues.get(key);
835
851
  }
836
852
  mapPos(pos, assoc = 1, fromStep = 0) {
837
853
  let mapped = pos;
838
- for (let i = fromStep; i < this.mapList.length; i++) mapped = this.mapList[i](mapped, assoc);
854
+ for (let i = fromStep; i < this.#mapList.length; i++) mapped = this.#mapList[i](mapped, assoc);
839
855
  return mapped;
840
856
  }
841
- }, _class);
857
+ };
842
858
 
843
859
  // src/engine/commands/caret-marks.ts
844
860
  function caretMarks(doc, schema, storedMarks, pos) {
845
861
  if (storedMarks !== null) return storedMarks;
846
- const inline = _nullishCoalesce(_optionalChain([_chunkND5XJVK2cjs.blockById.call(void 0, doc, pos.block), 'optionalAccess', _8 => _8.regions, 'access', _9 => _9[pos.region]]), () => ( []));
847
- return _chunkND5XJVK2cjs.marksAt.call(void 0, inline, pos.offset, (mark) => _nullishCoalesce(_optionalChain([schema, 'access', _10 => _10.marks, 'access', _11 => _11.get, 'call', _12 => _12(mark.type), 'optionalAccess', _13 => _13.inclusive]), () => ( true)));
862
+ const inline = _nullishCoalesce(_optionalChain([_chunk4SLJNZSMcjs.blockById.call(void 0, doc, pos.block), 'optionalAccess', _8 => _8.regions, 'access', _9 => _9[pos.region]]), () => ( []));
863
+ return _chunk4SLJNZSMcjs.marksAt.call(void 0, inline, pos.offset, (mark) => _nullishCoalesce(_optionalChain([schema, 'access', _10 => _10.marks, 'access', _11 => _11.get, 'call', _12 => _12(mark.type), 'optionalAccess', _13 => _13.inclusive]), () => ( true)));
848
864
  }
849
865
 
850
866
  // src/engine/commands/run-commands.ts
@@ -880,7 +896,7 @@ function runCommands(state, commands) {
880
896
  parts.push(tr);
881
897
  current = applyTransaction(current, tr);
882
898
  };
883
- chainDispatches.add(collect);
899
+ if (commands.length > 1) chainDispatches.add(collect);
884
900
  for (const command of commands) {
885
901
  if (!command(current, collect)) return { ok: false, tr: null };
886
902
  }
@@ -988,7 +1004,7 @@ var undoInputRule = (state, dispatch) => {
988
1004
  const { steps, undoText, at, marks } = record;
989
1005
  const tr = new Transaction(state).setMeta(UNFILTERED, true);
990
1006
  steps.forEach((step) => tr.step(step));
991
- tr.step(replaceInlineStep(at.block, at.region, at.offset, at.offset, [_chunkND5XJVK2cjs.text.call(void 0, undoText, marks)]));
1007
+ tr.step(replaceInlineStep(at.block, at.region, at.offset, at.offset, [_chunk4SLJNZSMcjs.text.call(void 0, undoText, marks)]));
992
1008
  dispatch(tr.setSelection(textSelection({ ...at, offset: at.offset + undoText.length })));
993
1009
  }
994
1010
  return true;
@@ -997,7 +1013,7 @@ var undoInputRule = (state, dispatch) => {
997
1013
  // src/engine/commands/block-helpers.ts
998
1014
  var ITEM_KINDS = /* @__PURE__ */ new Set(["bullet", "ordered", "task", "quote"]);
999
1015
  function specOf(schema, block) {
1000
- return _chunkND5XJVK2cjs.specFor.call(void 0, schema, block.type);
1016
+ return _chunk4SLJNZSMcjs.specFor.call(void 0, schema, block.type);
1001
1017
  }
1002
1018
  function isTextFlow(schema, block) {
1003
1019
  return specOf(schema, block).flow === "text";
@@ -1009,7 +1025,7 @@ function isItem(block) {
1009
1025
  return block.type === "MARKDOWN" && typeof block.attrs.kind === "string" && ITEM_KINDS.has(block.attrs.kind);
1010
1026
  }
1011
1027
  function regionLength(block, region) {
1012
- return Object.hasOwn(block.regions, region) ? _chunkND5XJVK2cjs.inlineLength.call(void 0, block.regions[region]) : 0;
1028
+ return Object.hasOwn(block.regions, region) ? _chunk4SLJNZSMcjs.inlineLength.call(void 0, block.regions[region]) : 0;
1013
1029
  }
1014
1030
  function descendantsEnd(doc, index) {
1015
1031
  const { indent: indent2 } = doc.blocks[index];
@@ -1017,8 +1033,8 @@ function descendantsEnd(doc, index) {
1017
1033
  while (end < doc.blocks.length && doc.blocks[end].indent > indent2) end++;
1018
1034
  return end;
1019
1035
  }
1020
- function createBlock(schema, type, attrs = {}, indent2 = 0, id = _chunkND5XJVK2cjs.newId.call(void 0, )) {
1021
- const initial = _chunkND5XJVK2cjs.specFor.call(void 0, schema, type).initial();
1036
+ function createBlock(schema, type, attrs = {}, indent2 = 0, id = _chunk4SLJNZSMcjs.newId.call(void 0, )) {
1037
+ const initial = _chunk4SLJNZSMcjs.specFor.call(void 0, schema, type).initial();
1022
1038
  return { id, type, indent: indent2, attrs: { ...initial.attrs, ...attrs }, regions: initial.regions };
1023
1039
  }
1024
1040
  function withContent(schema, block, content) {
@@ -1036,7 +1052,7 @@ function headBlockId(selection) {
1036
1052
  function selectedBlockRange(doc, selection) {
1037
1053
  const ids = selectedBlockIds(doc, selection);
1038
1054
  if (ids.length === 0) return null;
1039
- const start = _chunkND5XJVK2cjs.indexOfBlock.call(void 0, doc, ids[0]);
1055
+ const start = _chunk4SLJNZSMcjs.indexOfBlock.call(void 0, doc, ids[0]);
1040
1056
  let end = start + ids.length;
1041
1057
  for (let index = start; index < start + ids.length; index++) end = Math.max(end, descendantsEnd(doc, index));
1042
1058
  return { start, end };
@@ -1080,7 +1096,7 @@ function shiftSubtree(tr, index, delta) {
1080
1096
  // src/engine/commands/block-structure.ts
1081
1097
  var toggleTask = (state, dispatch) => {
1082
1098
  const { doc, selection } = state;
1083
- const tasks = selectedBlockIds(doc, selection).map((id) => doc.blocks[_chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, id)]).filter((block) => block.type === "MARKDOWN" && block.attrs.kind === "task");
1099
+ const tasks = selectedBlockIds(doc, selection).map((id) => doc.blocks[_chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, id)]).filter((block) => block.type === "MARKDOWN" && block.attrs.kind === "task");
1084
1100
  if (tasks.length === 0) return false;
1085
1101
  const checked = !tasks.every((block) => block.attrs.checked === true);
1086
1102
  const tr = new Transaction(state);
@@ -1145,7 +1161,7 @@ function copiedSelection(selection, copies) {
1145
1161
  }
1146
1162
  }
1147
1163
  function duplicateBlocks(options = {}) {
1148
- const makeId = _nullishCoalesce(options.newId, () => ( _chunkND5XJVK2cjs.newId));
1164
+ const makeId = _nullishCoalesce(options.newId, () => ( _chunk4SLJNZSMcjs.newId));
1149
1165
  return (state, dispatch) => {
1150
1166
  const { doc, selection } = state;
1151
1167
  const range = selectedBlockRange(doc, selection);
@@ -1167,12 +1183,12 @@ var deleteBlocks = (state, dispatch) => {
1167
1183
  return true;
1168
1184
  };
1169
1185
  function insertBlockAfter(type, attrs, options = {}) {
1170
- const makeId = _nullishCoalesce(options.newId, () => ( _chunkND5XJVK2cjs.newId));
1186
+ const makeId = _nullishCoalesce(options.newId, () => ( _chunk4SLJNZSMcjs.newId));
1171
1187
  return (state, dispatch) => {
1172
1188
  const { doc, schema } = state;
1173
1189
  const id = headBlockId(state.selection);
1174
1190
  if (id === null) return false;
1175
- const index = _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, id);
1191
+ const index = _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, id);
1176
1192
  const current = doc.blocks[index];
1177
1193
  const fillsCurrent = isParagraph(current) && regionLength(current, _nullishCoalesce(primaryRegion(schema, current), () => ( ""))) === 0;
1178
1194
  const block = createBlock(schema, type, attrs, current.indent, fillsCurrent ? current.id : makeId());
@@ -1192,10 +1208,10 @@ function deleteWithinBlock(tr, from, to) {
1192
1208
  clear(tr, from, from.offset, to.offset);
1193
1209
  return from;
1194
1210
  }
1195
- const block = tr.doc.blocks[_chunkND5XJVK2cjs.requireBlockIndex.call(void 0, tr.doc, from.block)];
1211
+ const block = tr.doc.blocks[_chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, tr.doc, from.block)];
1196
1212
  clear(tr, from, from.offset, regionLength(block, from.region));
1197
1213
  for (const region of Object.keys(block.regions)) {
1198
- const between = _chunkND5XJVK2cjs.compareRegionNames.call(void 0, from.region, region) < 0 && _chunkND5XJVK2cjs.compareRegionNames.call(void 0, region, to.region) < 0;
1214
+ const between = _chunk4SLJNZSMcjs.compareRegionNames.call(void 0, from.region, region) < 0 && _chunk4SLJNZSMcjs.compareRegionNames.call(void 0, region, to.region) < 0;
1199
1215
  if (between) clear(tr, { ...from, region }, 0, regionLength(block, region));
1200
1216
  }
1201
1217
  clear(tr, to, 0, to.offset);
@@ -1204,8 +1220,8 @@ function deleteWithinBlock(tr, from, to) {
1204
1220
  function deleteRange(tr, schema, from, to, newId2) {
1205
1221
  if (from.block === to.block) return deleteWithinBlock(tr, from, to);
1206
1222
  const { doc } = tr;
1207
- const start = _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, from.block);
1208
- const end = _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, to.block);
1223
+ const start = _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, from.block);
1224
+ const end = _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, to.block);
1209
1225
  const first = doc.blocks[start];
1210
1226
  const last = doc.blocks[end];
1211
1227
  const keepFirst = isTextFlow(schema, first);
@@ -1232,7 +1248,7 @@ function deleteRange(tr, schema, from, to, newId2) {
1232
1248
 
1233
1249
  // src/engine/commands/insert-text-at.ts
1234
1250
  function insertTextAt(tr, schema, pos, value) {
1235
- const slice = [_chunkND5XJVK2cjs.text.call(void 0, value, caretMarks(tr.doc, schema, tr.storedMarks, pos))];
1251
+ const slice = [_chunk4SLJNZSMcjs.text.call(void 0, value, caretMarks(tr.doc, schema, tr.storedMarks, pos))];
1236
1252
  tr.step(replaceInlineStep(pos.block, pos.region, pos.offset, pos.offset, slice));
1237
1253
  return { ...pos, offset: pos.offset + value.length };
1238
1254
  }
@@ -1244,12 +1260,12 @@ function replaceBlocksWithText(tr, schema, range, value, makeId) {
1244
1260
  const indent2 = range === null ? 0 : doc.blocks[index].indent;
1245
1261
  if (range !== null) tr.step(removeBlocksStep(index, range.end - range.start));
1246
1262
  const empty = createBlock(schema, schema.defaultTextBlock, {}, indent2, makeId());
1247
- const paragraph = withContent(schema, empty, [_chunkND5XJVK2cjs.text.call(void 0, value)]);
1263
+ const paragraph = withContent(schema, empty, [_chunk4SLJNZSMcjs.text.call(void 0, value)]);
1248
1264
  tr.step(insertBlocksStep(index, [paragraph]));
1249
1265
  tr.setSelection(endOf(tr.doc, schema, paragraph.id));
1250
1266
  }
1251
1267
  function insertText(value, options = {}) {
1252
- const makeId = _nullishCoalesce(options.newId, () => ( _chunkND5XJVK2cjs.newId));
1268
+ const makeId = _nullishCoalesce(options.newId, () => ( _chunk4SLJNZSMcjs.newId));
1253
1269
  return (state, dispatch) => {
1254
1270
  if (value === "") return false;
1255
1271
  const { doc, schema, selection } = state;
@@ -1272,9 +1288,9 @@ function markExtent(inline, offset, type) {
1272
1288
  let position = 0;
1273
1289
  for (const node of inline) {
1274
1290
  starts.push(position);
1275
- position += _chunkND5XJVK2cjs.nodeLength.call(void 0, node);
1291
+ position += _chunk4SLJNZSMcjs.nodeLength.call(void 0, node);
1276
1292
  }
1277
- const containing = (at) => inline.findIndex((node, i) => starts[i] <= at && at < starts[i] + _chunkND5XJVK2cjs.nodeLength.call(void 0, node));
1293
+ const containing = (at) => inline.findIndex((node, i) => starts[i] <= at && at < starts[i] + _chunk4SLJNZSMcjs.nodeLength.call(void 0, node));
1278
1294
  const markOf = (index) => _optionalChain([inline, 'access', _33 => _33[index], 'optionalAccess', _34 => _34.marks, 'access', _35 => _35.find, 'call', _36 => _36((mark2) => mark2.type === type)]);
1279
1295
  let seed = containing(offset);
1280
1296
  let mark = markOf(seed);
@@ -1283,29 +1299,29 @@ function markExtent(inline, offset, type) {
1283
1299
  mark = markOf(seed);
1284
1300
  }
1285
1301
  if (mark === void 0) return null;
1286
- const shares = (index) => inline[index].marks.some((other) => _chunkND5XJVK2cjs.sameMark.call(void 0, other, mark));
1302
+ const shares = (index) => inline[index].marks.some((other) => _chunk4SLJNZSMcjs.sameMark.call(void 0, other, mark));
1287
1303
  let first = seed;
1288
1304
  while (first > 0 && shares(first - 1)) first--;
1289
1305
  let last = seed;
1290
1306
  while (last < inline.length - 1 && shares(last + 1)) last++;
1291
- return { from: starts[first], to: starts[last] + _chunkND5XJVK2cjs.nodeLength.call(void 0, inline[last]) };
1307
+ return { from: starts[first], to: starts[last] + _chunk4SLJNZSMcjs.nodeLength.call(void 0, inline[last]) };
1292
1308
  }
1293
1309
 
1294
1310
  // src/engine/commands/storable-mark.ts
1295
1311
  function readsBack(inline) {
1296
- return _chunkND5XJVK2cjs.equalInline.call(void 0, _chunkND5XJVK2cjs.parseInline.call(void 0, _chunkND5XJVK2cjs.serializeInline.call(void 0, inline)), _chunkND5XJVK2cjs.normalizeInline.call(void 0, inline));
1312
+ return _chunk4SLJNZSMcjs.equalInline.call(void 0, _chunk4SLJNZSMcjs.parseInline.call(void 0, _chunk4SLJNZSMcjs.serializeInline.call(void 0, inline)), _chunk4SLJNZSMcjs.normalizeInline.call(void 0, inline));
1297
1313
  }
1298
1314
  function safeLink(mark) {
1299
1315
  const href = _optionalChain([mark, 'access', _37 => _37.attrs, 'optionalAccess', _38 => _38.href]);
1300
- const safe = typeof href === "string" ? _chunkND5XJVK2cjs.sanitizeHref.call(void 0, href) : null;
1316
+ const safe = typeof href === "string" ? _chunk4SLJNZSMcjs.sanitizeHref.call(void 0, href) : null;
1301
1317
  return safe ? { type: "link", attrs: { ...mark.attrs, href: safe } } : null;
1302
1318
  }
1303
1319
  function storableMark(mark) {
1304
1320
  const candidate = mark.type === "link" ? safeLink(mark) : mark;
1305
- return candidate !== null && readsBack([_chunkND5XJVK2cjs.text.call(void 0, "a", [candidate])]) ? candidate : null;
1321
+ return candidate !== null && readsBack([_chunk4SLJNZSMcjs.text.call(void 0, "a", [candidate])]) ? candidate : null;
1306
1322
  }
1307
1323
  function storableAtom(type, attrs) {
1308
- return readsBack([_chunkND5XJVK2cjs.atom.call(void 0, type, attrs)]);
1324
+ return readsBack([_chunk4SLJNZSMcjs.atom.call(void 0, type, attrs)]);
1309
1325
  }
1310
1326
 
1311
1327
  // src/engine/commands/selection-marks.ts
@@ -1324,8 +1340,8 @@ function textRanges(state, selection) {
1324
1340
  if (from.region !== to.region) return [];
1325
1341
  return [{ block: from.block, region: from.region, from: from.offset, to: to.offset }];
1326
1342
  }
1327
- const first = _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, from.block);
1328
- const last = _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, to.block);
1343
+ const first = _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, from.block);
1344
+ const last = _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, to.block);
1329
1345
  return doc.blocks.slice(first, last + 1).flatMap((block, i) => {
1330
1346
  const whole = wholeRegion(schema, block);
1331
1347
  if (whole === null) return [];
@@ -1337,7 +1353,7 @@ function textRanges(state, selection) {
1337
1353
  function selectionRanges(state, selection) {
1338
1354
  if (selection.kind === "text") return textRanges(state, selection);
1339
1355
  return selectedBlockIds(state.doc, selection).flatMap((id) => {
1340
- const whole = wholeRegion(state.schema, state.doc.blocks[_chunkND5XJVK2cjs.requireBlockIndex.call(void 0, state.doc, id)]);
1356
+ const whole = wholeRegion(state.schema, state.doc.blocks[_chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, state.doc, id)]);
1341
1357
  return whole === null ? [] : [whole];
1342
1358
  });
1343
1359
  }
@@ -1346,8 +1362,8 @@ function markRanges(state) {
1346
1362
  return selection === null ? [] : selectionRanges(state, selection).filter((range) => range.from < range.to);
1347
1363
  }
1348
1364
  function rangeContent(state, range) {
1349
- const inline = _nullishCoalesce(_optionalChain([_chunkND5XJVK2cjs.blockById.call(void 0, state.doc, range.block), 'optionalAccess', _41 => _41.regions, 'access', _42 => _42[range.region]]), () => ( []));
1350
- return _chunkND5XJVK2cjs.sliceInline.call(void 0, inline, range.from, range.to);
1365
+ const inline = _nullishCoalesce(_optionalChain([_chunk4SLJNZSMcjs.blockById.call(void 0, state.doc, range.block), 'optionalAccess', _41 => _41.regions, 'access', _42 => _42[range.region]]), () => ( []));
1366
+ return _chunk4SLJNZSMcjs.sliceInline.call(void 0, inline, range.from, range.to);
1351
1367
  }
1352
1368
  function markCoverage(content, type, attrs) {
1353
1369
  const carries = (node) => node.marks.some((mark) => matchesMark(mark, type, attrs));
@@ -1390,8 +1406,8 @@ function applyMark(type, attrs, mode) {
1390
1406
  const current = caretMarks(state.doc, state.schema, state.storedMarks, caret);
1391
1407
  const active = current.some((existing) => matchesMark(existing, type, mark.attrs));
1392
1408
  const remove2 = mode === "remove" || mode === "toggle" && active;
1393
- const next = remove2 ? _chunkND5XJVK2cjs.removeMark.call(void 0, current, target) : _chunkND5XJVK2cjs.addMark.call(void 0, current, mark);
1394
- if (_chunkND5XJVK2cjs.sameMarkSet.call(void 0, next, current)) return false;
1409
+ const next = remove2 ? _chunk4SLJNZSMcjs.removeMark.call(void 0, current, target) : _chunk4SLJNZSMcjs.addMark.call(void 0, current, mark);
1410
+ if (_chunk4SLJNZSMcjs.sameMarkSet.call(void 0, next, current)) return false;
1395
1411
  _optionalChain([dispatch, 'optionalCall', _46 => _46(new Transaction(state).setStoredMarks(next))]);
1396
1412
  return true;
1397
1413
  }
@@ -1415,17 +1431,17 @@ function unsetMark(type) {
1415
1431
  function linkRanges(state) {
1416
1432
  const caret = collapsedCaret(state);
1417
1433
  if (caret === null) return markRanges(state);
1418
- const inline = _nullishCoalesce(_optionalChain([_chunkND5XJVK2cjs.blockById.call(void 0, state.doc, caret.block), 'optionalAccess', _47 => _47.regions, 'access', _48 => _48[caret.region]]), () => ( []));
1434
+ const inline = _nullishCoalesce(_optionalChain([_chunk4SLJNZSMcjs.blockById.call(void 0, state.doc, caret.block), 'optionalAccess', _47 => _47.regions, 'access', _48 => _48[caret.region]]), () => ( []));
1419
1435
  const extent = markExtent(inline, caret.offset, "link");
1420
1436
  return extent === null ? [] : [{ block: caret.block, region: caret.region, ...extent }];
1421
1437
  }
1422
1438
  function setLink(href, title) {
1423
- const safe = _chunkND5XJVK2cjs.sanitizeHref.call(void 0, href);
1439
+ const safe = _chunk4SLJNZSMcjs.sanitizeHref.call(void 0, href);
1424
1440
  return (state, dispatch) => {
1425
1441
  if (safe === null || safe === "") return false;
1426
1442
  const link = { type: "link", attrs: title ? { href: safe, title } : { href: safe } };
1427
1443
  return editRanges(state, dispatch, linkRanges(state), (tr, { block, region, from, to }, content) => {
1428
- const linked2 = content.every((node) => node.marks.some((mark) => _chunkND5XJVK2cjs.sameMark.call(void 0, mark, link)));
1444
+ const linked2 = content.every((node) => node.marks.some((mark) => _chunk4SLJNZSMcjs.sameMark.call(void 0, mark, link)));
1429
1445
  if (!linked2) tr.step(addMarkStep(block, region, from, to, link));
1430
1446
  });
1431
1447
  };
@@ -1455,7 +1471,7 @@ function insertAtom(type, attrs) {
1455
1471
  const tr = new Transaction(state);
1456
1472
  const { from, to } = orderedRange(doc, selection.anchor, selection.head);
1457
1473
  const caret = deleteRange(tr, schema, from, to);
1458
- const node = _chunkND5XJVK2cjs.atom.call(void 0, type, attrs, caretMarks(tr.doc, schema, tr.storedMarks, caret));
1474
+ const node = _chunk4SLJNZSMcjs.atom.call(void 0, type, attrs, caretMarks(tr.doc, schema, tr.storedMarks, caret));
1459
1475
  tr.step(replaceInlineStep(caret.block, caret.region, caret.offset, caret.offset, [node]));
1460
1476
  tr.setSelection(textSelection({ ...caret, offset: caret.offset + 1 }));
1461
1477
  _optionalChain([dispatch, 'optionalCall', _51 => _51(tr)]);
@@ -1473,19 +1489,19 @@ var TEXT_ATTRIBUTE = /* @__PURE__ */ new Map([
1473
1489
  ["MATH", "latex"]
1474
1490
  ]);
1475
1491
  function holdsText(schema, type) {
1476
- return TEXT_ATTRIBUTE.has(type) || _chunkND5XJVK2cjs.specFor.call(void 0, schema, type).flow === "text";
1492
+ return TEXT_ATTRIBUTE.has(type) || _chunk4SLJNZSMcjs.specFor.call(void 0, schema, type).flow === "text";
1477
1493
  }
1478
1494
  function sourceContent(schema, block) {
1479
1495
  const field = TEXT_ATTRIBUTE.get(block.type);
1480
1496
  if (field !== void 0) {
1481
1497
  const value = block.attrs[field];
1482
- return typeof value === "string" && value !== "" ? [_chunkND5XJVK2cjs.text.call(void 0, value)] : [];
1498
+ return typeof value === "string" && value !== "" ? [_chunk4SLJNZSMcjs.text.call(void 0, value)] : [];
1483
1499
  }
1484
1500
  const region = primaryRegion(schema, block);
1485
1501
  return region === null ? [] : block.regions[region];
1486
1502
  }
1487
1503
  function plainText(schema, content) {
1488
- return _chunkND5XJVK2cjs.inlineText.call(void 0, content, (node) => _nullishCoalesce(_optionalChain([schema, 'access', _52 => _52.atoms, 'access', _53 => _53.get, 'call', _54 => _54(node.type), 'optionalAccess', _55 => _55.plainText, 'call', _56 => _56(node.attrs)]), () => ( "")));
1504
+ return _chunk4SLJNZSMcjs.inlineText.call(void 0, content, (node) => _nullishCoalesce(_optionalChain([schema, 'access', _52 => _52.atoms, 'access', _53 => _53.get, 'call', _54 => _54(node.type), 'optionalAccess', _55 => _55.plainText, 'call', _56 => _56(node.attrs)]), () => ( "")));
1489
1505
  }
1490
1506
  function convert(schema, block, type, attrs) {
1491
1507
  const content = sourceContent(schema, block);
@@ -1504,7 +1520,7 @@ function setBlockType(type, attrs = {}) {
1504
1520
  if (!holdsText(schema, type)) return false;
1505
1521
  const ids = selectedBlockIds(doc, selection);
1506
1522
  const convertible = (block) => isTextFlow(schema, block) || _optionalChain([selection, 'optionalAccess', _57 => _57.kind]) === "node" && TEXT_ATTRIBUTE.has(block.type);
1507
- const blocks = ids.flatMap((id) => _nullishCoalesce(_chunkND5XJVK2cjs.blockById.call(void 0, doc, id), () => ( []))).filter(convertible);
1523
+ const blocks = ids.flatMap((id) => _nullishCoalesce(_chunk4SLJNZSMcjs.blockById.call(void 0, doc, id), () => ( []))).filter(convertible);
1508
1524
  if (blocks.length === 0) return false;
1509
1525
  const tr = new Transaction(state);
1510
1526
  const moved2 = /* @__PURE__ */ new Map();
@@ -1518,7 +1534,7 @@ function setBlockType(type, attrs = {}) {
1518
1534
  tr.step(replaceBlockStep(next));
1519
1535
  const from = primaryRegion(schema, block);
1520
1536
  const to = primaryRegion(schema, next);
1521
- if (from !== null && to !== null) moved2.set(block.id, { from, to, length: _chunkND5XJVK2cjs.inlineLength.call(void 0, next.regions[to]) });
1537
+ if (from !== null && to !== null) moved2.set(block.id, { from, to, length: _chunk4SLJNZSMcjs.inlineLength.call(void 0, next.regions[to]) });
1522
1538
  }
1523
1539
  if (!tr.docChanged) return false;
1524
1540
  if (_optionalChain([selection, 'optionalAccess', _58 => _58.kind]) === "text" && moved2.size > 0) {
@@ -1529,7 +1545,7 @@ function setBlockType(type, attrs = {}) {
1529
1545
  };
1530
1546
  tr.setSelection(textSelection(carry(selection.anchor), carry(selection.head)));
1531
1547
  }
1532
- const converted = _optionalChain([selection, 'optionalAccess', _59 => _59.kind]) === "node" ? _chunkND5XJVK2cjs.blockById.call(void 0, tr.doc, selection.block) : void 0;
1548
+ const converted = _optionalChain([selection, 'optionalAccess', _59 => _59.kind]) === "node" ? _chunk4SLJNZSMcjs.blockById.call(void 0, tr.doc, selection.block) : void 0;
1533
1549
  if (converted !== void 0 && isTextFlow(schema, converted)) tr.setSelection(endOf(tr.doc, schema, converted.id));
1534
1550
  _optionalChain([dispatch, 'optionalCall', _60 => _60(tr)]);
1535
1551
  return true;
@@ -1547,10 +1563,10 @@ function ruleTransaction(state, rules, context) {
1547
1563
  const { selection, doc } = state;
1548
1564
  if (_optionalChain([selection, 'optionalAccess', _61 => _61.kind]) !== "text") return null;
1549
1565
  const { block: id, region, offset } = selection.head;
1550
- const block = doc.blocks[_chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, id)];
1566
+ const block = doc.blocks[_chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, id)];
1551
1567
  const inline = block.regions[region];
1552
- if (_chunkND5XJVK2cjs.hasMark.call(void 0, _chunkND5XJVK2cjs.marksAt.call(void 0, inline, offset, () => true), "code")) return null;
1553
- const before = _chunkND5XJVK2cjs.inlineText.call(void 0, _chunkND5XJVK2cjs.sliceInline.call(void 0, inline, 0, offset));
1568
+ if (_chunk4SLJNZSMcjs.hasMark.call(void 0, _chunk4SLJNZSMcjs.marksAt.call(void 0, inline, offset, () => true), "code")) return null;
1569
+ const before = _chunk4SLJNZSMcjs.inlineText.call(void 0, _chunk4SLJNZSMcjs.sliceInline.call(void 0, inline, 0, offset));
1554
1570
  for (const rule of rules) {
1555
1571
  const match = appliesTo(rule, block) ? rule.match.exec(before) : null;
1556
1572
  if (match === null) continue;
@@ -1560,7 +1576,7 @@ function ruleTransaction(state, rules, context) {
1560
1576
  return null;
1561
1577
  }
1562
1578
  function insertTextWithRules(value, rules, options = {}) {
1563
- const context = { newId: _nullishCoalesce(options.newId, () => ( _chunkND5XJVK2cjs.newId)) };
1579
+ const context = { newId: _nullishCoalesce(options.newId, () => ( _chunk4SLJNZSMcjs.newId)) };
1564
1580
  const insert = insertText(value, { origin: "input", newId: context.newId });
1565
1581
  return (state, dispatch) => {
1566
1582
  let fired = false;
@@ -1608,11 +1624,11 @@ var divider = {
1608
1624
  kinds: PARAGRAPH,
1609
1625
  handler(state, _match, range, context) {
1610
1626
  const { doc, schema } = state;
1611
- const index = _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, range.block);
1627
+ const index = _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, range.block);
1612
1628
  const block = doc.blocks[index];
1613
1629
  const content = block.regions[range.region];
1614
- const tail = _chunkND5XJVK2cjs.sliceInline.call(void 0, content, range.to, _chunkND5XJVK2cjs.inlineLength.call(void 0, content));
1615
- const empty = createBlock(schema, schema.defaultTextBlock, {}, block.indent, (_nullishCoalesce(_optionalChain([context, 'optionalAccess', _65 => _65.newId]), () => ( (0, _chunkND5XJVK2cjs.newId))))());
1630
+ const tail = _chunk4SLJNZSMcjs.sliceInline.call(void 0, content, range.to, _chunk4SLJNZSMcjs.inlineLength.call(void 0, content));
1631
+ const empty = createBlock(schema, schema.defaultTextBlock, {}, block.indent, (_nullishCoalesce(_optionalChain([context, 'optionalAccess', _65 => _65.newId]), () => ( (0, _chunk4SLJNZSMcjs.newId))))());
1616
1632
  const next = withContent(schema, empty, tail);
1617
1633
  const tr = new Transaction(state);
1618
1634
  tr.step(replaceBlockStep(createBlock(schema, "DIVIDER", {}, block.indent, block.id)));
@@ -1648,7 +1664,7 @@ var blockInputRules = [
1648
1664
 
1649
1665
  // src/engine/markdown/autolink-href.ts
1650
1666
  function autolinkHref(url) {
1651
- return _chunkND5XJVK2cjs.sanitizeHref.call(void 0, /^www\./i.test(url) ? `https://${url}` : url);
1667
+ return _chunk4SLJNZSMcjs.sanitizeHref.call(void 0, /^www\./i.test(url) ? `https://${url}` : url);
1652
1668
  }
1653
1669
 
1654
1670
  // src/engine/markdown/trim-url-end.ts
@@ -1670,12 +1686,12 @@ function trimUrlEnd(url) {
1670
1686
 
1671
1687
  // src/engine/rules/region-inline.ts
1672
1688
  function regionInline(state, range) {
1673
- return state.doc.blocks[_chunkND5XJVK2cjs.requireBlockIndex.call(void 0, state.doc, range.block)].regions[range.region];
1689
+ return state.doc.blocks[_chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, state.doc, range.block)].regions[range.region];
1674
1690
  }
1675
1691
 
1676
1692
  // src/engine/rules/touches-mark.ts
1677
1693
  function touchesMark(inline, from, to, type) {
1678
- return _chunkND5XJVK2cjs.sliceInline.call(void 0, inline, from, to).some((node) => _chunkND5XJVK2cjs.hasMark.call(void 0, node.marks, type));
1694
+ return _chunk4SLJNZSMcjs.sliceInline.call(void 0, inline, from, to).some((node) => _chunk4SLJNZSMcjs.hasMark.call(void 0, node.marks, type));
1679
1695
  }
1680
1696
 
1681
1697
  // src/engine/rules/autolink.ts
@@ -1709,7 +1725,7 @@ function markRule({ name, match, open, close, wordBounded = false, mark }) {
1709
1725
  const contentTo = to - (_nullishCoalesce(_optionalChain([close, 'optionalCall', _66 => _66(found)]), () => ( open)));
1710
1726
  const contentFrom = contentTo - found[1].length;
1711
1727
  const from = contentFrom - open;
1712
- if (wordBounded && WORD_CHARACTER.test(_chunkND5XJVK2cjs.inlineText.call(void 0, _chunkND5XJVK2cjs.sliceInline.call(void 0, inline, to, to + 1)))) return null;
1728
+ if (wordBounded && WORD_CHARACTER.test(_chunk4SLJNZSMcjs.inlineText.call(void 0, _chunk4SLJNZSMcjs.sliceInline.call(void 0, inline, to, to + 1)))) return null;
1713
1729
  if (touchesMark(inline, from, contentFrom, "code") || touchesMark(inline, contentTo, to, "code")) return null;
1714
1730
  const tr = new Transaction(state);
1715
1731
  tr.step(addMarkStep(block, region, contentFrom, contentTo, added));
@@ -1717,7 +1733,7 @@ function markRule({ name, match, open, close, wordBounded = false, mark }) {
1717
1733
  tr.step(replaceInlineStep(block, region, from, contentFrom, []));
1718
1734
  const caret = { block, region, offset: from + found[1].length };
1719
1735
  const carried = caretMarks(tr.doc, state.schema, null, caret);
1720
- return tr.setSelection(textSelection(caret)).setStoredMarks(_chunkND5XJVK2cjs.removeMark.call(void 0, carried, added.type));
1736
+ return tr.setSelection(textSelection(caret)).setStoredMarks(_chunk4SLJNZSMcjs.removeMark.call(void 0, carried, added.type));
1721
1737
  }
1722
1738
  };
1723
1739
  }
@@ -1738,7 +1754,7 @@ var markInputRules = [
1738
1754
  open: 1,
1739
1755
  close: (match) => match[2].length + 3,
1740
1756
  mark(match) {
1741
- const href = _chunkND5XJVK2cjs.sanitizeHref.call(void 0, match[2]);
1757
+ const href = _chunk4SLJNZSMcjs.sanitizeHref.call(void 0, match[2]);
1742
1758
  return href === null ? null : { type: "link", attrs: { href } };
1743
1759
  }
1744
1760
  }),
@@ -1756,7 +1772,7 @@ function replacing(name, match, replacement) {
1756
1772
  handler(state, found, range) {
1757
1773
  const value = typeof replacement === "string" ? replacement : replacement(found);
1758
1774
  const from = range.to - (_nullishCoalesce(found[1], () => ( found[0]))).length;
1759
- const node = _chunkND5XJVK2cjs.text.call(void 0, value, _chunkND5XJVK2cjs.marksAt.call(void 0, regionInline(state, range), range.to, () => true));
1775
+ const node = _chunk4SLJNZSMcjs.text.call(void 0, value, _chunk4SLJNZSMcjs.marksAt.call(void 0, regionInline(state, range), range.to, () => true));
1760
1776
  return new Transaction(state).step(replaceInlineStep(range.block, range.region, from, range.to, [node]));
1761
1777
  }
1762
1778
  };
@@ -1909,7 +1925,7 @@ function preText(node, depth = 0) {
1909
1925
  return depth > 0 && isBlockTag(node) && !text2.endsWith("\n") ? `${text2}
1910
1926
  ` : text2;
1911
1927
  }
1912
- var languageOf = (element) => element === null ? void 0 : _optionalChain([LANGUAGE, 'access', _67 => _67.exec, 'call', _68 => _68(_nullishCoalesce(element.getAttribute("class"), () => ( ""))), 'optionalAccess', _69 => _69[1]]);
1928
+ var languageOf = (element) => element ? _optionalChain([LANGUAGE, 'access', _67 => _67.exec, 'call', _68 => _68(_nullishCoalesce(element.getAttribute("class"), () => ( ""))), 'optionalAccess', _69 => _69[1]]) : void 0;
1913
1929
  function codeBlock(pre, ctx, sink) {
1914
1930
  const code = preText(pre).replace(/\r\n?/g, "\n").replace(/\n$/, "");
1915
1931
  const language = _nullishCoalesce(_nullishCoalesce(languageOf(pre), () => ( languageOf(pre.querySelector("code")))), () => ( ""));
@@ -2040,7 +2056,7 @@ function nearestPaletteColor(css, kind) {
2040
2056
  const table = PALETTE_RGB[kind];
2041
2057
  let best = "default";
2042
2058
  let least = Infinity;
2043
- for (const name of _chunkND5XJVK2cjs.PALETTE) {
2059
+ for (const name of _chunk4SLJNZSMcjs.PALETTE) {
2044
2060
  for (const reference of table[name]) {
2045
2061
  const gap = distance(rgb, reference);
2046
2062
  if (gap < least) {
@@ -2054,31 +2070,31 @@ function nearestPaletteColor(css, kind) {
2054
2070
 
2055
2071
  // src/engine/clipboard/html-marks.ts
2056
2072
  function linkMark(element) {
2057
- const href = _chunkND5XJVK2cjs.sanitizeHref.call(void 0, _nullishCoalesce(element.getAttribute("href"), () => ( "")));
2073
+ const href = _chunk4SLJNZSMcjs.sanitizeHref.call(void 0, _nullishCoalesce(element.getAttribute("href"), () => ( "")));
2058
2074
  if (href === null || href === "") return null;
2059
2075
  const title = element.getAttribute("title");
2060
2076
  return { type: "link", attrs: title ? { href, title } : { href } };
2061
2077
  }
2062
2078
  function highlightMark(element) {
2063
2079
  const color = _nullishCoalesce(element.getAttribute("data-color"), () => ( ""));
2064
- return _chunkND5XJVK2cjs.isPaletteColor.call(void 0, color) ? { type: "highlight", attrs: { color } } : { type: "highlight" };
2080
+ return _chunk4SLJNZSMcjs.isPaletteColor.call(void 0, color) ? { type: "highlight", attrs: { color } } : { type: "highlight" };
2065
2081
  }
2066
2082
  function elementMarks(element, inherited) {
2067
2083
  const tag = tagName(element);
2068
2084
  const styles = parseStyle(element.getAttribute("style"));
2069
2085
  let marks = inherited;
2070
2086
  const add = (mark) => {
2071
- marks = _chunkND5XJVK2cjs.addMark.call(void 0, marks, mark);
2087
+ marks = _chunk4SLJNZSMcjs.addMark.call(void 0, marks, mark);
2072
2088
  };
2073
2089
  const link = tag === "a" ? linkMark(element) : null;
2074
2090
  if (link !== null) add(link);
2075
- const linked2 = _chunkND5XJVK2cjs.hasMark.call(void 0, marks, "link");
2091
+ const linked2 = _chunk4SLJNZSMcjs.hasMark.call(void 0, marks, "link");
2076
2092
  const weight = fontWeight(styles);
2077
2093
  if (weight !== null ? weight >= 600 : tag === "b" || tag === "strong") add({ type: "bold" });
2078
- else if (weight !== null) marks = _chunkND5XJVK2cjs.removeMark.call(void 0, marks, "bold");
2094
+ else if (weight !== null) marks = _chunk4SLJNZSMcjs.removeMark.call(void 0, marks, "bold");
2079
2095
  const slanted = isItalicStyle(styles);
2080
2096
  if (_nullishCoalesce(slanted, () => ( (tag === "i" || tag === "em")))) add({ type: "italic" });
2081
- else if (slanted === false) marks = _chunkND5XJVK2cjs.removeMark.call(void 0, marks, "italic");
2097
+ else if (slanted === false) marks = _chunk4SLJNZSMcjs.removeMark.call(void 0, marks, "italic");
2082
2098
  if (tag === "u" || !linked2 && hasDecoration(styles, "underline")) add({ type: "underline" });
2083
2099
  if (tag === "s" || tag === "del" || tag === "strike" || hasDecoration(styles, "line-through")) {
2084
2100
  add({ type: "strike" });
@@ -2097,7 +2113,7 @@ function elementMarks(element, inherited) {
2097
2113
  }
2098
2114
 
2099
2115
  // src/engine/clipboard/hoist-spaces.ts
2100
- var shared = (a, b) => a.filter((mark) => b.some((other) => _chunkND5XJVK2cjs.sameMark.call(void 0, mark, other)));
2116
+ var shared = (a, b) => a.filter((mark) => b.some((other) => _chunk4SLJNZSMcjs.sameMark.call(void 0, mark, other)));
2101
2117
  function hoistEdgeSpaces(pieces) {
2102
2118
  const result = [];
2103
2119
  pieces.forEach((piece, at) => {
@@ -2160,7 +2176,7 @@ function finish({ pieces }) {
2160
2176
  break;
2161
2177
  }
2162
2178
  }
2163
- const inline = _chunkND5XJVK2cjs.normalizeInline.call(void 0, hoistEdgeSpaces(pieces).map((piece) => _chunkND5XJVK2cjs.text.call(void 0, piece.text, piece.marks)));
2179
+ const inline = _chunk4SLJNZSMcjs.normalizeInline.call(void 0, hoistEdgeSpaces(pieces).map((piece) => _chunk4SLJNZSMcjs.text.call(void 0, piece.text, piece.marks)));
2164
2180
  return inline.every((node) => node.kind === "text" && node.text.trim() === "") ? [] : inline;
2165
2181
  }
2166
2182
  function visit(acc, node, style, depth) {
@@ -2257,7 +2273,7 @@ function wordListItem(paragraph, ctx, sink) {
2257
2273
 
2258
2274
  // src/engine/clipboard/html-media.ts
2259
2275
  function imageBlock(img, caption, ctx, sink) {
2260
- const url = _chunkND5XJVK2cjs.sanitizeHref.call(void 0, _nullishCoalesce(img.getAttribute("src"), () => ( "")));
2276
+ const url = _chunk4SLJNZSMcjs.sanitizeHref.call(void 0, _nullishCoalesce(img.getAttribute("src"), () => ( "")));
2261
2277
  if (url === null || url === "") return;
2262
2278
  emit(sink, "IMAGE", ctx.indent, { storageKey: "", alt: _nullishCoalesce(img.getAttribute("alt"), () => ( "")), url }, { caption });
2263
2279
  }
@@ -2295,7 +2311,7 @@ function tableBlock(table, ctx, sink) {
2295
2311
  rows.forEach((row, r) => {
2296
2312
  for (let c = 0; c < cols; c++) {
2297
2313
  const cell = row.cells[c];
2298
- regions[_chunkND5XJVK2cjs.cellKey.call(void 0, r, c)] = cell === void 0 ? [] : inlineFromNodes(cell.childNodes, ctx);
2314
+ regions[_chunk4SLJNZSMcjs.cellKey.call(void 0, r, c)] = cell === void 0 ? [] : inlineFromNodes(cell.childNodes, ctx);
2299
2315
  }
2300
2316
  });
2301
2317
  const header = rows[0].head || rows[0].cells.some((cell) => tagName(cell) === "th");
@@ -2308,7 +2324,7 @@ var HEADING = /^h([1-6])$/;
2308
2324
  function emitRun(run, ctx, sink) {
2309
2325
  const inline = inlineFromNodes(run, ctx);
2310
2326
  if (inline.length === 0) return;
2311
- const plain = ctx.run.kind === "heading" ? _chunkND5XJVK2cjs.removeMarkRange.call(void 0, inline, 0, _chunkND5XJVK2cjs.inlineLength.call(void 0, inline), "bold") : inline;
2327
+ const plain = ctx.run.kind === "heading" ? _chunk4SLJNZSMcjs.removeMarkRange.call(void 0, inline, 0, _chunk4SLJNZSMcjs.inlineLength.call(void 0, inline), "bold") : inline;
2312
2328
  emitText(sink, ctx.indent, ctx.run, plain);
2313
2329
  }
2314
2330
  function details(element, ctx, sink) {
@@ -2393,8 +2409,8 @@ function availableParser(parser) {
2393
2409
  function fromHTML(html, options = {}) {
2394
2410
  const parser = availableParser(options.parser);
2395
2411
  if (parser === null) throw new Error("fromHTML needs a DOMParser");
2396
- const makeId = _nullishCoalesce(options.newId, () => ( _chunkND5XJVK2cjs.newId));
2397
- const codec = _chunkND5XJVK2cjs.createBlockCodec.call(void 0, _chunkND5XJVK2cjs.createSchema.call(void 0, ), { newId: makeId });
2412
+ const makeId = _nullishCoalesce(options.newId, () => ( _chunk4SLJNZSMcjs.newId));
2413
+ const codec = _chunk4SLJNZSMcjs.createBlockCodec.call(void 0, _chunk4SLJNZSMcjs.createSchema.call(void 0, ), { newId: makeId });
2398
2414
  const { body } = parser.parseFromString(html, "text/html");
2399
2415
  return blocksFromBody(body, makeId).map((block) => codec.toQuoin(block));
2400
2416
  }
@@ -2415,7 +2431,7 @@ function quoteLines(text2) {
2415
2431
 
2416
2432
  // src/engine/markdown/document/block-forms.ts
2417
2433
  var ALERT_NAMES = new Map(
2418
- Object.entries(_chunkND5XJVK2cjs.ALERT_TONES).map(([name, tone]) => [tone, name])
2434
+ Object.entries(_chunk4SLJNZSMcjs.ALERT_TONES).map(([name, tone]) => [tone, name])
2419
2435
  );
2420
2436
  var DELIMITERS = /* @__PURE__ */ new Map([
2421
2437
  ["left", ":--"],
@@ -2425,8 +2441,8 @@ var DELIMITERS = /* @__PURE__ */ new Map([
2425
2441
  var MIN_FENCE = 3;
2426
2442
  var FENCE_LIKE_MATH_LINE = /^ {0,3}\${2,}[ \t]*$/m;
2427
2443
  function calloutMarkdown(data) {
2428
- const name = _nullishCoalesce(ALERT_NAMES.get(_chunkND5XJVK2cjs.str.call(void 0, data.tone)), () => ( "NOTE"));
2429
- const body = _chunkND5XJVK2cjs.str.call(void 0, data.body);
2444
+ const name = _nullishCoalesce(ALERT_NAMES.get(_chunk4SLJNZSMcjs.str.call(void 0, data.tone)), () => ( "NOTE"));
2445
+ const body = _chunk4SLJNZSMcjs.str.call(void 0, data.body);
2430
2446
  return quoteLines(body === "" ? `[!${name}]` : `[!${name}]
2431
2447
  ${body}`);
2432
2448
  }
@@ -2440,18 +2456,18 @@ function longestRun(value, char) {
2440
2456
  return longest;
2441
2457
  }
2442
2458
  function codeMarkdown(data) {
2443
- const code = _chunkND5XJVK2cjs.str.call(void 0, data.code);
2444
- const info = _chunkND5XJVK2cjs.str.call(void 0, data.language);
2459
+ const code = _chunk4SLJNZSMcjs.str.call(void 0, data.code);
2460
+ const info = _chunk4SLJNZSMcjs.str.call(void 0, data.language);
2445
2461
  const char = info.includes("`") ? "~" : "`";
2446
2462
  const fence = char.repeat(Math.max(MIN_FENCE, longestRun(code, char) + 1));
2447
2463
  return [fence + info.replace(/[\\&]/g, "\\$&"), ...code === "" ? [] : code.split("\n"), fence].join("\n");
2448
2464
  }
2449
2465
  function mathMarkdown(data) {
2450
- const latex = _chunkND5XJVK2cjs.str.call(void 0, data.latex);
2466
+ const latex = _chunk4SLJNZSMcjs.str.call(void 0, data.latex);
2451
2467
  if (FENCE_LIKE_MATH_LINE.test(latex)) return null;
2452
2468
  return ["$$", ...latex === "" ? [] : latex.split("\n"), "$$"].join("\n");
2453
2469
  }
2454
- var cellsOf = (row) => Array.isArray(row) ? row.map(_chunkND5XJVK2cjs.str) : [];
2470
+ var cellsOf = (row) => Array.isArray(row) ? row.map(_chunk4SLJNZSMcjs.str) : [];
2455
2471
  var rowMarkdown = (cells) => `| ${cells.join(" | ")} |`;
2456
2472
  function tableMarkdown(data) {
2457
2473
  const rows = Array.isArray(data.rows) ? data.rows.map(cellsOf) : [];
@@ -2478,7 +2494,7 @@ function needsComment(block, residual, schema, ctx) {
2478
2494
  const native = NATIVE_KEYS.get(block.type);
2479
2495
  if (!native) return false;
2480
2496
  if (residual > 0) return true;
2481
- return Object.keys(_chunkND5XJVK2cjs.specFor.call(void 0, schema, block.type).toData(block, ctx)).some((key) => !native.includes(key));
2497
+ return Object.keys(_chunk4SLJNZSMcjs.specFor.call(void 0, schema, block.type).toData(block, ctx)).some((key) => !native.includes(key));
2482
2498
  }
2483
2499
 
2484
2500
  // src/engine/markdown/document/comment-markdown.ts
@@ -2492,41 +2508,41 @@ function quoinComment(type, data, indent2) {
2492
2508
  // src/engine/markdown/document/link-forms.ts
2493
2509
  var oneLine = (value) => value.replace(/[\r\n]+/g, " ");
2494
2510
  function linked(label, href, ctx) {
2495
- return ctx.inline.serialize([_chunkND5XJVK2cjs.text.call(void 0, label || href, [{ type: "link", attrs: { href } }])]);
2511
+ return ctx.inline.serialize([_chunk4SLJNZSMcjs.text.call(void 0, label || href, [{ type: "link", attrs: { href } }])]);
2496
2512
  }
2497
2513
  var assetUrl = (storageKey, ctx) => storageKey === "" ? "" : ctx.resolveAssetUrl(storageKey);
2498
2514
  function imageMarkdown(data, ctx) {
2499
- const href = _chunkND5XJVK2cjs.str.call(void 0, data.url) || assetUrl(_chunkND5XJVK2cjs.str.call(void 0, data.storageKey), ctx);
2515
+ const href = _chunk4SLJNZSMcjs.str.call(void 0, data.url) || assetUrl(_chunk4SLJNZSMcjs.str.call(void 0, data.storageKey), ctx);
2500
2516
  if (href === "") return null;
2501
- const caption = _chunkND5XJVK2cjs.str.call(void 0, data.caption);
2502
- const alt = ctx.inline.serialize([_chunkND5XJVK2cjs.text.call(void 0, oneLine(_chunkND5XJVK2cjs.str.call(void 0, data.alt)))]);
2503
- return `![${alt}${_chunkND5XJVK2cjs.linkClose.call(void 0, { type: "link", attrs: caption ? { href, title: caption } : { href } }, false)}`;
2517
+ const caption = _chunk4SLJNZSMcjs.str.call(void 0, data.caption);
2518
+ const alt = ctx.inline.serialize([_chunk4SLJNZSMcjs.text.call(void 0, oneLine(_chunk4SLJNZSMcjs.str.call(void 0, data.alt)))]);
2519
+ return `![${alt}${_chunk4SLJNZSMcjs.linkClose.call(void 0, { type: "link", attrs: caption ? { href, title: caption } : { href } }, false)}`;
2504
2520
  }
2505
2521
  function fileMarkdown(data, ctx) {
2506
- const href = assetUrl(_chunkND5XJVK2cjs.str.call(void 0, data.storageKey), ctx);
2507
- return href === "" ? null : linked(oneLine(_chunkND5XJVK2cjs.str.call(void 0, data.filename)), href, ctx);
2522
+ const href = assetUrl(_chunk4SLJNZSMcjs.str.call(void 0, data.storageKey), ctx);
2523
+ return href === "" ? null : linked(oneLine(_chunk4SLJNZSMcjs.str.call(void 0, data.filename)), href, ctx);
2508
2524
  }
2509
2525
  function embedMarkdown(data, ctx) {
2510
- const url = _chunkND5XJVK2cjs.str.call(void 0, data.url);
2526
+ const url = _chunk4SLJNZSMcjs.str.call(void 0, data.url);
2511
2527
  return url === "" ? null : linked(url, url, ctx);
2512
2528
  }
2513
2529
  function bookmarkMarkdown(data, ctx) {
2514
- const url = _chunkND5XJVK2cjs.str.call(void 0, data.url);
2515
- return url === "" ? null : linked(oneLine(_chunkND5XJVK2cjs.str.call(void 0, data.title)), url, ctx);
2530
+ const url = _chunk4SLJNZSMcjs.str.call(void 0, data.url);
2531
+ return url === "" ? null : linked(oneLine(_chunk4SLJNZSMcjs.str.call(void 0, data.title)), url, ctx);
2516
2532
  }
2517
2533
 
2518
2534
  // src/engine/markdown/document/block-markdown.ts
2519
2535
  var QUOTE_PREFIX = "> ";
2520
2536
  function markdownLine(block, data) {
2521
2537
  const kind = _nullishCoalesce(block.attrs.kind, () => ( "paragraph"));
2522
- const markdown = _chunkND5XJVK2cjs.str.call(void 0, data.markdown);
2523
- const empty = _chunkND5XJVK2cjs.inlineLength.call(void 0, _nullishCoalesce(block.regions.text, () => ( []))) === 0;
2538
+ const markdown = _chunk4SLJNZSMcjs.str.call(void 0, data.markdown);
2539
+ const empty = _chunk4SLJNZSMcjs.inlineLength.call(void 0, _nullishCoalesce(block.regions.text, () => ( []))) === 0;
2524
2540
  if (empty && (kind === "paragraph" || kind === "quote")) return null;
2525
2541
  return kind === "quote" ? quoteLines(markdown.slice(QUOTE_PREFIX.length)) : markdown;
2526
2542
  }
2527
2543
  function toggleMarkdown(data) {
2528
2544
  return `<details${data.open === true ? " open" : ""}>
2529
- <summary>${_chunkND5XJVK2cjs.str.call(void 0, data.markdown)}</summary>`;
2545
+ <summary>${_chunk4SLJNZSMcjs.str.call(void 0, data.markdown)}</summary>`;
2530
2546
  }
2531
2547
  function coreMarkdown(block, data, env, residual) {
2532
2548
  switch (block.type) {
@@ -2559,9 +2575,9 @@ function coreMarkdown(block, data, env, residual) {
2559
2575
  }
2560
2576
  }
2561
2577
  function blockMarkdown(block, env, { residual, asComment }) {
2562
- const spec = _chunkND5XJVK2cjs.specFor.call(void 0, env.schema, block.type);
2578
+ const spec = _chunk4SLJNZSMcjs.specFor.call(void 0, env.schema, block.type);
2563
2579
  const data = spec.toData(block, env.ctx);
2564
- const comment = () => _chunkND5XJVK2cjs.isQuoinType.call(void 0, block.type) ? quoinComment(block.type, data, residual) : null;
2580
+ const comment = () => _chunk4SLJNZSMcjs.isQuoinType.call(void 0, block.type) ? quoinComment(block.type, data, residual) : null;
2565
2581
  if (asComment || env.lossless && !hasNativeForm(block.type)) return comment();
2566
2582
  const written = spec.toMarkdown ? spec.toMarkdown(block, env.ctx) : coreMarkdown(block, data, env, residual);
2567
2583
  if (written !== null) return written;
@@ -2591,7 +2607,7 @@ function createListContext() {
2591
2607
  let placed = block;
2592
2608
  let number = 1;
2593
2609
  if (line2 === "ordered") {
2594
- number = Math.min(_nullishCoalesce(runs.get(block.indent), () => ( _chunkND5XJVK2cjs.orderedStart.call(void 0, block.attrs.start))), _chunkND5XJVK2cjs.MAX_MARKER_NUMBER);
2610
+ number = Math.min(_nullishCoalesce(runs.get(block.indent), () => ( _chunk4SLJNZSMcjs.orderedStart.call(void 0, block.attrs.start))), _chunk4SLJNZSMcjs.MAX_MARKER_NUMBER);
2595
2611
  runs.set(block.indent, number + 1);
2596
2612
  if (number !== block.attrs.start) placed = { ...block, attrs: { ...block.attrs, start: number } };
2597
2613
  } else {
@@ -2601,7 +2617,7 @@ function createListContext() {
2601
2617
  const hang = isItem2 ? (line2 === "ordered" ? String(number).length : 0) + 2 : 0;
2602
2618
  const container = comment ? void 0 : openedBy(block, prefix, hang);
2603
2619
  if (container) stack.push(container);
2604
- const bare = !comment && (line2 === "bullet" || line2 === "ordered") && _chunkND5XJVK2cjs.inlineLength.call(void 0, _nullishCoalesce(block.regions.text, () => ( []))) === 0;
2620
+ const bare = !comment && (line2 === "bullet" || line2 === "ordered") && _chunk4SLJNZSMcjs.inlineLength.call(void 0, _nullishCoalesce(block.regions.text, () => ( []))) === 0;
2605
2621
  const fragile = isItem2 && (bare || line2 === "ordered" && number !== 1);
2606
2622
  const shown = comment ? void 0 : line2;
2607
2623
  return { block: placed, line: shown, prefix, hang, residual, parent, container, closed, bare, fragile, comment };
@@ -2619,7 +2635,7 @@ function stripComments(block) {
2619
2635
  regions: Object.fromEntries(
2620
2636
  regions.map(([name, inline]) => [
2621
2637
  name,
2622
- hasCommentMark(inline) ? _chunkND5XJVK2cjs.removeMarkRange.call(void 0, inline, 0, _chunkND5XJVK2cjs.inlineLength.call(void 0, inline), "comment") : inline
2638
+ hasCommentMark(inline) ? _chunk4SLJNZSMcjs.removeMarkRange.call(void 0, inline, 0, _chunk4SLJNZSMcjs.inlineLength.call(void 0, inline), "comment") : inline
2623
2639
  ])
2624
2640
  )
2625
2641
  };
@@ -2648,7 +2664,7 @@ function pieceOf(text2, placement) {
2648
2664
  opened: placement.container,
2649
2665
  bare: placement.bare,
2650
2666
  fragile: placement.fragile,
2651
- leadsHtml: hang > 0 && _chunkND5XJVK2cjs.startsHtmlBlock.call(void 0, text2.split("\n")[0].slice(hang))
2667
+ leadsHtml: hang > 0 && _chunk4SLJNZSMcjs.startsHtmlBlock.call(void 0, text2.split("\n")[0].slice(hang))
2652
2668
  };
2653
2669
  }
2654
2670
  function takenAsItemText(previous, { parent, line: line2 }) {
@@ -2673,8 +2689,8 @@ function join(pieces) {
2673
2689
  `;
2674
2690
  }
2675
2691
  function toMarkdown(blocks, options = {}) {
2676
- const schema = _nullishCoalesce(options.schema, () => ( _chunkND5XJVK2cjs.createSchema.call(void 0, )));
2677
- const codec = _chunkND5XJVK2cjs.createBlockCodec.call(void 0, schema);
2692
+ const schema = _nullishCoalesce(options.schema, () => ( _chunk4SLJNZSMcjs.createSchema.call(void 0, )));
2693
+ const codec = _chunk4SLJNZSMcjs.createBlockCodec.call(void 0, schema);
2678
2694
  const env = {
2679
2695
  schema,
2680
2696
  lossless: options.lossless === true,
@@ -2716,20 +2732,20 @@ function escapeAttr(value) {
2716
2732
 
2717
2733
  // src/engine/render/serialize-html.ts
2718
2734
  var VOID = /* @__PURE__ */ new Set(["br", "hr", "img", "input"]);
2719
- var attrsHtml = (node) => _chunkND5XJVK2cjs.writtenAttrs.call(void 0, node.attrs).map(([name, value]) => value === true ? ` ${name}` : ` ${name}="${escapeAttr(value)}"`).join("");
2735
+ var attrsHtml = (node) => _chunk4SLJNZSMcjs.writtenAttrs.call(void 0, node.attrs).map(([name, value]) => value === true ? ` ${name}` : ` ${name}="${escapeAttr(value)}"`).join("");
2720
2736
  var serializeHtml = (nodes) => nodes.map(
2721
2737
  (node) => typeof node === "string" ? escapeHtml(node) : `<${node.tag}${attrsHtml(node)}>${VOID.has(node.tag) ? "" : `${_nullishCoalesce(node.html, () => ( serializeHtml(node.children)))}</${node.tag}>`}`
2722
2738
  ).join("");
2723
2739
 
2724
2740
  // src/engine/render/to-html.ts
2725
- var toHTML = (blocks, options = {}) => serializeHtml(_chunkND5XJVK2cjs.documentNodes.call(void 0, blocks, options));
2741
+ var toHTML = (blocks, options = {}) => serializeHtml(_chunk4SLJNZSMcjs.documentNodes.call(void 0, blocks, options));
2726
2742
 
2727
2743
  // src/engine/render/to-plain-text.ts
2728
2744
  function plainTextBlocks(blocks, schema) {
2729
- return _chunkND5XJVK2cjs.engineBlocksOf.call(void 0, blocks, schema).map((block) => _chunkND5XJVK2cjs.blockPlainText.call(void 0, block, schema));
2745
+ return _chunk4SLJNZSMcjs.engineBlocksOf.call(void 0, blocks, schema).map((block) => _chunk4SLJNZSMcjs.blockPlainText.call(void 0, block, schema));
2730
2746
  }
2731
2747
  function toPlainText(blocks, options = {}) {
2732
- return plainTextBlocks(blocks, _nullishCoalesce(options.schema, () => ( _chunkND5XJVK2cjs.createSchema.call(void 0, )))).join("\n");
2748
+ return plainTextBlocks(blocks, _nullishCoalesce(options.schema, () => ( _chunk4SLJNZSMcjs.createSchema.call(void 0, )))).join("\n");
2733
2749
  }
2734
2750
 
2735
2751
  // src/engine/model/graphemes.ts
@@ -2781,7 +2797,7 @@ function countBlock(block, schema) {
2781
2797
  if (!blocks) counted.set(schema, blocks = /* @__PURE__ */ new WeakMap());
2782
2798
  const known = blocks.get(block);
2783
2799
  if (known) return known;
2784
- const text2 = _chunkND5XJVK2cjs.blockPlainText.call(void 0, block, schema);
2800
+ const text2 = _chunk4SLJNZSMcjs.blockPlainText.call(void 0, block, schema);
2785
2801
  const stats = { characters: graphemeCount(text2), words: wordCount(text2) };
2786
2802
  blocks.set(block, stats);
2787
2803
  return stats;
@@ -2800,17 +2816,17 @@ function sum(blocks, schema) {
2800
2816
  return { characters, words: words2 };
2801
2817
  }
2802
2818
  function countText(blocks, options = {}) {
2803
- const schema = _nullishCoalesce(options.schema, () => ( (defaultSchema ??= _chunkND5XJVK2cjs.createSchema.call(void 0, ))));
2804
- return sum(_chunkND5XJVK2cjs.engineBlocksOf.call(void 0, blocks, schema), schema);
2819
+ const schema = _nullishCoalesce(options.schema, () => ( (defaultSchema ??= _chunk4SLJNZSMcjs.createSchema.call(void 0, ))));
2820
+ return sum(_chunk4SLJNZSMcjs.engineBlocksOf.call(void 0, blocks, schema), schema);
2805
2821
  }
2806
2822
  function countDoc(doc, options = {}) {
2807
- return sum(doc.blocks, _nullishCoalesce(options.schema, () => ( (defaultSchema ??= _chunkND5XJVK2cjs.createSchema.call(void 0, )))));
2823
+ return sum(doc.blocks, _nullishCoalesce(options.schema, () => ( (defaultSchema ??= _chunk4SLJNZSMcjs.createSchema.call(void 0, )))));
2808
2824
  }
2809
2825
 
2810
2826
  // src/engine/commands/block-style.ts
2811
2827
  function patchBlocks(state, patch, only) {
2812
2828
  const changing = selectedBlockIds(state.doc, state.selection).filter((id) => {
2813
- const block = _chunkND5XJVK2cjs.blockById.call(void 0, state.doc, id);
2829
+ const block = _chunk4SLJNZSMcjs.blockById.call(void 0, state.doc, id);
2814
2830
  return block !== void 0 && (only === void 0 || block.type === only) && patchChangesAttrs(block.attrs, patch);
2815
2831
  });
2816
2832
  if (changing.length === 0) return null;
@@ -2838,7 +2854,7 @@ function setBlockColor(colors) {
2838
2854
  const value = colors[key];
2839
2855
  if (value !== void 0) patch[key] = _nullishCoalesce(value, () => ( void 0));
2840
2856
  }
2841
- const valid = Object.values(patch).every((value) => value === void 0 || _chunkND5XJVK2cjs.isPaletteColor.call(void 0, value));
2857
+ const valid = Object.values(patch).every((value) => value === void 0 || _chunk4SLJNZSMcjs.isPaletteColor.call(void 0, value));
2842
2858
  return valid ? patchCommand(patch, "MARKDOWN") : () => false;
2843
2859
  }
2844
2860
 
@@ -2858,7 +2874,7 @@ function textCaret(state) {
2858
2874
  const { doc, schema, selection } = state;
2859
2875
  if (_optionalChain([selection, 'optionalAccess', _89 => _89.kind]) !== "text" || !isCollapsed(selection)) return null;
2860
2876
  const pos = selection.head;
2861
- const index = _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, pos.block);
2877
+ const index = _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, pos.block);
2862
2878
  const block = doc.blocks[index];
2863
2879
  const inFlow2 = isTextFlow(schema, block) && pos.region === primaryRegion(schema, block);
2864
2880
  return inFlow2 ? { block, index, pos } : null;
@@ -2866,14 +2882,14 @@ function textCaret(state) {
2866
2882
  function joinInto(tr, schema, target, source) {
2867
2883
  const targetRegion = _nullishCoalesce(primaryRegion(schema, target), () => ( ""));
2868
2884
  tr.step(joinBlocksStep(target.id, targetRegion, source.id, _nullishCoalesce(primaryRegion(schema, source), () => ( ""))));
2869
- capIndents(tr, _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, tr.doc, target.id) + 1);
2885
+ capIndents(tr, _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, tr.doc, target.id) + 1);
2870
2886
  const offset = regionLength(target, targetRegion);
2871
2887
  tr.setSelection(textSelection({ block: target.id, region: targetRegion, offset }));
2872
2888
  }
2873
2889
  function joinIntoSummary(tr, schema, summary, source) {
2874
2890
  const region = _nullishCoalesce(primaryRegion(schema, summary), () => ( ""));
2875
2891
  const offset = regionLength(summary, region);
2876
- const index = _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, tr.doc, source.id);
2892
+ const index = _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, tr.doc, source.id);
2877
2893
  const content = source.regions[_nullishCoalesce(primaryRegion(schema, source), () => ( ""))];
2878
2894
  if (content.length > 0) tr.step(replaceInlineStep(summary.id, region, offset, offset, content));
2879
2895
  tr.step(removeBlocksStep(index, 1));
@@ -2945,7 +2961,7 @@ function deleteReaching(forward, reach) {
2945
2961
  const { selection } = state;
2946
2962
  if (_optionalChain([selection, 'optionalAccess', _94 => _94.kind]) !== "text" || !isCollapsed(selection)) return deleteSelection(state, dispatch);
2947
2963
  const { head } = selection;
2948
- const value = _chunkND5XJVK2cjs.inlineText.call(void 0, state.doc.blocks[_chunkND5XJVK2cjs.requireBlockIndex.call(void 0, state.doc, head.block)].regions[head.region]);
2964
+ const value = _chunk4SLJNZSMcjs.inlineText.call(void 0, state.doc.blocks[_chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, state.doc, head.block)].regions[head.region]);
2949
2965
  if (forward ? head.offset >= value.length : head.offset <= 0) {
2950
2966
  return (forward ? deleteAtEnd : deleteAtStart)(state, dispatch);
2951
2967
  }
@@ -2999,8 +3015,8 @@ function movedBlockIds(doc, ids) {
2999
3015
  function gather(tr, runs, above) {
3000
3016
  let anchor = above;
3001
3017
  for (const run of runs) {
3002
- const from = _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, tr.doc, run[0]);
3003
- const at = anchor === null ? -1 : _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, tr.doc, anchor);
3018
+ const from = _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, tr.doc, run[0]);
3019
+ const at = anchor === null ? -1 : _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, tr.doc, anchor);
3004
3020
  const to = at < from ? at + 1 : at + 1 - run.length;
3005
3021
  if (to !== from) tr.step(moveBlocksStep(from, run.length, to));
3006
3022
  anchor = run[run.length - 1];
@@ -3028,7 +3044,7 @@ function moveBlocksTo(ids, toIndex, indent2) {
3028
3044
  const first = runs[0][0];
3029
3045
  const last = runs[runs.length - 1];
3030
3046
  const clamped = Math.min(Math.max(indent2, 0), above ? above.indent + 1 : 0);
3031
- reindent(tr, _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, tr.doc, first), moved2.size, clamped);
3047
+ reindent(tr, _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, tr.doc, first), moved2.size, clamped);
3032
3048
  if (!tr.docChanged) return false;
3033
3049
  _optionalChain([dispatch, 'optionalCall', _100 => _100(tr.setSelection(blockRangeSelection(first, last[last.length - 1])))]);
3034
3050
  return true;
@@ -3042,7 +3058,7 @@ var selectAll = (state, dispatch) => {
3042
3058
  let next = blockRangeSelection(doc.blocks[0].id, doc.blocks[doc.blocks.length - 1].id);
3043
3059
  if (_optionalChain([selection, 'optionalAccess', _101 => _101.kind]) === "text") {
3044
3060
  const { anchor, head } = selection;
3045
- const length = _chunkND5XJVK2cjs.inlineLength.call(void 0, _nullishCoalesce(doc.blocks[_chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, head.block)].regions[head.region], () => ( [])));
3061
+ const length = _chunk4SLJNZSMcjs.inlineLength.call(void 0, _nullishCoalesce(doc.blocks[_chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, head.block)].regions[head.region], () => ( [])));
3046
3062
  const withinRegion = anchor.block === head.block && anchor.region === head.region;
3047
3063
  const covers = Math.min(anchor.offset, head.offset) === 0 && Math.max(anchor.offset, head.offset) === length;
3048
3064
  if (withinRegion && !covers) next = textSelection({ ...head, offset: 0 }, { ...head, offset: length });
@@ -3079,7 +3095,7 @@ function splitStep(schema, block, region, offset, id) {
3079
3095
  // src/engine/commands/split-at.ts
3080
3096
  function enterInHardBreakBlock({ tr, schema, block, index, pos, makeId }) {
3081
3097
  const length = regionLength(block, pos.region);
3082
- if (pos.offset === length && _chunkND5XJVK2cjs.inlineText.call(void 0, block.regions[pos.region]).endsWith("\n")) {
3098
+ if (pos.offset === length && _chunk4SLJNZSMcjs.inlineText.call(void 0, block.regions[pos.region]).endsWith("\n")) {
3083
3099
  tr.step(replaceInlineStep(block.id, pos.region, length - 1, length, []));
3084
3100
  const paragraph = createBlock(schema, schema.defaultTextBlock, {}, block.indent, makeId());
3085
3101
  tr.step(insertBlocksStep(descendantsEnd(tr.doc, index), [paragraph]));
@@ -3102,7 +3118,7 @@ function insertEmptyBefore({ tr, schema, block, index, pos, makeId }) {
3102
3118
  function splitToggle({ tr, schema, block, index, pos, makeId }) {
3103
3119
  const length = regionLength(block, pos.region);
3104
3120
  const open = block.attrs.open === true;
3105
- const tail = _chunkND5XJVK2cjs.sliceInline.call(void 0, block.regions[pos.region], pos.offset, length);
3121
+ const tail = _chunk4SLJNZSMcjs.sliceInline.call(void 0, block.regions[pos.region], pos.offset, length);
3106
3122
  const empty = createBlock(schema, schema.defaultTextBlock, {}, open ? block.indent + 1 : block.indent, makeId());
3107
3123
  if (pos.offset < length) tr.step(replaceInlineStep(block.id, pos.region, pos.offset, length, []));
3108
3124
  tr.step(insertBlocksStep(open ? index + 1 : descendantsEnd(tr.doc, index), [withContent(schema, empty, tail)]));
@@ -3114,7 +3130,7 @@ function splitInTwo({ tr, schema, block, pos, makeId }) {
3114
3130
  tr.setSelection(textSelection({ block: tail.id, region: tail.region, offset: 0 }));
3115
3131
  }
3116
3132
  function splitAt(tr, schema, pos, collapsed, makeId) {
3117
- const index = _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, tr.doc, pos.block);
3133
+ const index = _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, tr.doc, pos.block);
3118
3134
  const block = tr.doc.blocks[index];
3119
3135
  if (!isTextFlow(schema, block) || pos.region !== primaryRegion(schema, block)) return false;
3120
3136
  const target = { tr, schema, block, index, pos, makeId };
@@ -3129,13 +3145,13 @@ function splitAt(tr, schema, pos, collapsed, makeId) {
3129
3145
 
3130
3146
  // src/engine/commands/split-block.ts
3131
3147
  function splitBlock(options = {}) {
3132
- const makeId = _nullishCoalesce(options.newId, () => ( _chunkND5XJVK2cjs.newId));
3148
+ const makeId = _nullishCoalesce(options.newId, () => ( _chunk4SLJNZSMcjs.newId));
3133
3149
  return (state, dispatch) => {
3134
3150
  const { doc, schema, selection } = state;
3135
3151
  if (selection === null || selection.kind === "blocks") return false;
3136
3152
  const tr = new Transaction(state).setMeta(LINE_SPLIT, true);
3137
3153
  if (selection.kind === "node") {
3138
- const index = _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, selection.block);
3154
+ const index = _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, selection.block);
3139
3155
  const paragraph = createBlock(schema, schema.defaultTextBlock, {}, doc.blocks[index].indent, makeId());
3140
3156
  tr.step(insertBlocksStep(descendantsEnd(doc, index), [paragraph]));
3141
3157
  tr.setSelection(startOf(tr.doc, schema, paragraph.id));
@@ -3245,7 +3261,7 @@ function replaceEmpty(tr, schema, index, blocks) {
3245
3261
  tr.setSelection(endOf(tr.doc, schema, blocks[blocks.length - 1].id));
3246
3262
  }
3247
3263
  function pasteAtCaret(tr, schema, caret, ends, pieces, makeId) {
3248
- const index = _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, tr.doc, caret.block);
3264
+ const index = _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, tr.doc, caret.block);
3249
3265
  const current = tr.doc.blocks[index];
3250
3266
  const { region } = caret;
3251
3267
  const first = pieces[0];
@@ -3254,7 +3270,7 @@ function pasteAtCaret(tr, schema, caret, ends, pieces, makeId) {
3254
3270
  if (pieces.length === 1 && ends.openStart && ends.openEnd && textual(first)) {
3255
3271
  const content = contentOf(schema, first);
3256
3272
  insertAt(tr, caret, content);
3257
- tr.setSelection(textSelection({ ...caret, offset: caret.offset + _chunkND5XJVK2cjs.inlineLength.call(void 0, content) }));
3273
+ tr.setSelection(textSelection({ ...caret, offset: caret.offset + _chunk4SLJNZSMcjs.inlineLength.call(void 0, content) }));
3258
3274
  return;
3259
3275
  }
3260
3276
  const fresh = freshBlocks(pieces, current.indent, makeId);
@@ -3276,18 +3292,18 @@ function pasteAtCaret(tr, schema, caret, ends, pieces, makeId) {
3276
3292
  if (atStart && !atEnd) {
3277
3293
  if (middle.length > 0) insertCapped(tr, index, middle);
3278
3294
  insertAt(tr, { ...caret, offset: 0 }, lastContent);
3279
- tr.setSelection(textSelection({ ...caret, offset: _chunkND5XJVK2cjs.inlineLength.call(void 0, lastContent) }));
3295
+ tr.setSelection(textSelection({ ...caret, offset: _chunk4SLJNZSMcjs.inlineLength.call(void 0, lastContent) }));
3280
3296
  return;
3281
3297
  }
3282
3298
  const firstContent = mergeFirst ? contentOf(schema, fresh[0]) : [];
3283
3299
  insertAt(tr, caret, firstContent);
3284
- const offset = caret.offset + _chunkND5XJVK2cjs.inlineLength.call(void 0, firstContent);
3300
+ const offset = caret.offset + _chunk4SLJNZSMcjs.inlineLength.call(void 0, firstContent);
3285
3301
  const tail = !atEnd && (mergeLast || middle.length > 0) ? splitStep(schema, current, region, offset, makeId()) : null;
3286
3302
  if (tail !== null) tr.step(tail.step);
3287
3303
  if (middle.length > 0) insertCapped(tr, index + 1, middle);
3288
3304
  if (tail !== null && mergeLast) {
3289
3305
  insertAt(tr, { block: tail.tail.id, region: tail.tail.region, offset: 0 }, lastContent);
3290
- tr.setSelection(textSelection({ block: tail.tail.id, region: tail.tail.region, offset: _chunkND5XJVK2cjs.inlineLength.call(void 0, lastContent) }));
3306
+ tr.setSelection(textSelection({ block: tail.tail.id, region: tail.tail.region, offset: _chunk4SLJNZSMcjs.inlineLength.call(void 0, lastContent) }));
3291
3307
  } else if (middle.length > 0) {
3292
3308
  tr.setSelection(endOf(tr.doc, schema, middle[middle.length - 1].id));
3293
3309
  } else {
@@ -3313,10 +3329,10 @@ function appendAtEnd(tr, schema, pieces, makeId) {
3313
3329
  tr.setSelection(endOf(tr.doc, schema, fresh[fresh.length - 1].id));
3314
3330
  }
3315
3331
  function insertSlice(slice, options = {}) {
3316
- const makeId = _nullishCoalesce(options.newId, () => ( _chunkND5XJVK2cjs.newId));
3332
+ const makeId = _nullishCoalesce(options.newId, () => ( _chunk4SLJNZSMcjs.newId));
3317
3333
  return (state, dispatch) => {
3318
3334
  const { doc, schema, selection } = state;
3319
- const codec = _chunkND5XJVK2cjs.createBlockCodec.call(void 0, schema, { newId: makeId });
3335
+ const codec = _chunk4SLJNZSMcjs.createBlockCodec.call(void 0, schema, { newId: makeId });
3320
3336
  const pieces = slice.blocks.flatMap((block) => codec.toEngineBlocks(block));
3321
3337
  if (pieces.length === 0) return false;
3322
3338
  const tr = new Transaction(state).setOrigin("paste");
@@ -3365,9 +3381,9 @@ function fenceTransaction(state) {
3365
3381
  const { selection, doc } = state;
3366
3382
  if (_optionalChain([selection, 'optionalAccess', _118 => _118.kind]) !== "text" || !isCollapsed(selection)) return null;
3367
3383
  const { block: id, region, offset } = selection.head;
3368
- const block = _chunkND5XJVK2cjs.blockById.call(void 0, doc, id);
3384
+ const block = _chunk4SLJNZSMcjs.blockById.call(void 0, doc, id);
3369
3385
  if (block === void 0 || !isParagraph(block) || offset !== regionLength(block, region)) return null;
3370
- const fence = FENCE.exec(_chunkND5XJVK2cjs.inlineText.call(void 0, block.regions[region]));
3386
+ const fence = FENCE.exec(_chunk4SLJNZSMcjs.inlineText.call(void 0, block.regions[region]));
3371
3387
  if (fence === null) return null;
3372
3388
  return convertPrefix(state, { block: id, region, from: 0, to: offset }, setBlockType("CODE", { language: fence[1] }));
3373
3389
  }
@@ -3434,9 +3450,9 @@ function coreExtensions(options = {}) {
3434
3450
  return [
3435
3451
  defineExtension({
3436
3452
  name: "core",
3437
- blocks: _chunkND5XJVK2cjs.coreBlockSpecs,
3438
- marks: _chunkND5XJVK2cjs.coreMarkSpecs,
3439
- atoms: _chunkND5XJVK2cjs.coreAtomSpecs,
3453
+ blocks: _chunk4SLJNZSMcjs.coreBlockSpecs,
3454
+ marks: _chunk4SLJNZSMcjs.coreMarkSpecs,
3455
+ atoms: _chunk4SLJNZSMcjs.coreAtomSpecs,
3440
3456
  commands: coreCommands,
3441
3457
  pasteRules: [linkOverSelection]
3442
3458
  }),
@@ -3453,12 +3469,12 @@ function coreExtensions(options = {}) {
3453
3469
 
3454
3470
  // src/engine/clipboard/serialize-slice.ts
3455
3471
  function sliceText(slice, options) {
3456
- const schema = _nullishCoalesce(options.schema, () => ( _chunkND5XJVK2cjs.createSchema.call(void 0, )));
3472
+ const schema = _nullishCoalesce(options.schema, () => ( _chunk4SLJNZSMcjs.createSchema.call(void 0, )));
3457
3473
  if (slice.blocks.length === 1 && slice.openStart && slice.openEnd) {
3458
- const pieces = _chunkND5XJVK2cjs.createBlockCodec.call(void 0, schema).toEngineBlocks(slice.blocks[0]);
3474
+ const pieces = _chunk4SLJNZSMcjs.createBlockCodec.call(void 0, schema).toEngineBlocks(slice.blocks[0]);
3459
3475
  const block = pieces.length === 1 ? stripComments(pieces[0]) : null;
3460
3476
  const region = block === null || !isTextFlow(schema, block) ? null : primaryRegion(schema, block);
3461
- if (block !== null && region !== null) return _chunkND5XJVK2cjs.inlinePlainText.call(void 0, _nullishCoalesce(block.regions[region], () => ( [])), schema);
3477
+ if (block !== null && region !== null) return _chunk4SLJNZSMcjs.inlinePlainText.call(void 0, _nullishCoalesce(block.regions[region], () => ( [])), schema);
3462
3478
  }
3463
3479
  const markdown = toMarkdown(slice.blocks, { schema, resolveAssetUrl: options.resolveAssetUrl, comments: false });
3464
3480
  return markdown.replace(/\n$/, "");
@@ -3476,17 +3492,17 @@ function isFlowRegion(schema, block, region) {
3476
3492
  return isTextFlow(schema, block) && region === primaryRegion(schema, block);
3477
3493
  }
3478
3494
  function trimmed(block, region, from, to) {
3479
- return { ...block, regions: { ...block.regions, [region]: _chunkND5XJVK2cjs.sliceInline.call(void 0, block.regions[region], from, to) } };
3495
+ return { ...block, regions: { ...block.regions, [region]: _chunk4SLJNZSMcjs.sliceInline.call(void 0, block.regions[region], from, to) } };
3480
3496
  }
3481
3497
  function insideOneRegion(schema, block, region, from, to) {
3482
3498
  if (isFlowRegion(schema, block, region)) return trimmed(block, region, from, to);
3483
3499
  const paragraph = createBlock(schema, schema.defaultTextBlock, {}, block.indent, block.id);
3484
- return withContent(schema, paragraph, _chunkND5XJVK2cjs.sliceInline.call(void 0, block.regions[region], from, to));
3500
+ return withContent(schema, paragraph, _chunk4SLJNZSMcjs.sliceInline.call(void 0, block.regions[region], from, to));
3485
3501
  }
3486
3502
  function textBlocks({ doc, schema }, selection) {
3487
3503
  const { from, to } = orderedRange(doc, selection.anchor, selection.head);
3488
- const start = _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, from.block);
3489
- const end = _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, to.block);
3504
+ const start = _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, from.block);
3505
+ const end = _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, to.block);
3490
3506
  const first = doc.blocks[start];
3491
3507
  if (start === end) {
3492
3508
  if (from.region !== to.region) return [first];
@@ -3532,18 +3548,18 @@ var INLINE_SYNTAX = [/\*\*[^*\n]+\*\*/, /__[^_\n]+__/, /\[[^\]\n]+\]\([^)\s]+[^)
3532
3548
  function looksLikeMarkdown(value) {
3533
3549
  return value.split(/\r\n|\r|\n/).some((line2) => BLOCK_MARKERS.some((marker) => marker.test(line2))) || INLINE_SYNTAX.some((syntax) => syntax.test(value));
3534
3550
  }
3535
- function plainTextToBlocks(value, makeId = _chunkND5XJVK2cjs.newId) {
3551
+ function plainTextToBlocks(value, makeId = _chunk4SLJNZSMcjs.newId) {
3536
3552
  return value.split(/\r\n|\r|\n/).filter((line2) => line2.trim() !== "").map((line2) => ({
3537
3553
  id: makeId(),
3538
3554
  type: "MARKDOWN",
3539
- data: { markdown: _chunkND5XJVK2cjs.serializeInline.call(void 0, [_chunkND5XJVK2cjs.text.call(void 0, line2)], { escapeLineStart: true }) }
3555
+ data: { markdown: _chunk4SLJNZSMcjs.serializeInline.call(void 0, [_chunk4SLJNZSMcjs.text.call(void 0, line2)], { escapeLineStart: true }) }
3540
3556
  }));
3541
3557
  }
3542
3558
 
3543
3559
  // src/engine/clipboard/parse-slice-json.ts
3544
3560
  function isBlock2(value) {
3545
- if (!_chunkND5XJVK2cjs.isRecord.call(void 0, value) || typeof value.id !== "string" || typeof value.type !== "string") return false;
3546
- if (!_chunkND5XJVK2cjs.isRecord.call(void 0, value.data)) return false;
3561
+ if (!_chunk4SLJNZSMcjs.isRecord.call(void 0, value) || typeof value.id !== "string" || typeof value.type !== "string") return false;
3562
+ if (!_chunk4SLJNZSMcjs.isRecord.call(void 0, value.data)) return false;
3547
3563
  return value.indent === void 0 || Number.isInteger(value.indent) && value.indent >= 0;
3548
3564
  }
3549
3565
  function parseSliceJSON(json) {
@@ -3553,7 +3569,7 @@ function parseSliceJSON(json) {
3553
3569
  } catch (e) {
3554
3570
  return null;
3555
3571
  }
3556
- if (!_chunkND5XJVK2cjs.isRecord.call(void 0, parsed) || parsed.quoin !== 1 || !_chunkND5XJVK2cjs.isRecord.call(void 0, parsed.slice)) return null;
3572
+ if (!_chunk4SLJNZSMcjs.isRecord.call(void 0, parsed) || parsed.quoin !== 1 || !_chunk4SLJNZSMcjs.isRecord.call(void 0, parsed.slice)) return null;
3557
3573
  const { blocks, openStart, openEnd } = parsed.slice;
3558
3574
  if (!Array.isArray(blocks) || blocks.length === 0 || !blocks.every(isBlock2)) return null;
3559
3575
  if (typeof openStart !== "boolean" || typeof openEnd !== "boolean") return null;
@@ -3561,7 +3577,7 @@ function parseSliceJSON(json) {
3561
3577
  }
3562
3578
 
3563
3579
  // src/engine/clipboard/slice-from-clipboard.ts
3564
- var isParagraph2 = (block) => block.type === "MARKDOWN" && _chunkND5XJVK2cjs.parseLine.call(void 0, String(_nullishCoalesce(block.data.markdown, () => ( "")))).kind === "paragraph";
3580
+ var isParagraph2 = (block) => block.type === "MARKDOWN" && _chunk4SLJNZSMcjs.parseLine.call(void 0, String(_nullishCoalesce(block.data.markdown, () => ( "")))).kind === "paragraph";
3565
3581
  function openSlice(blocks, plainText2 = false) {
3566
3582
  if (blocks.length === 0) return null;
3567
3583
  const slice = { blocks, openStart: isParagraph2(blocks[0]), openEnd: isParagraph2(blocks[blocks.length - 1]) };
@@ -3571,14 +3587,14 @@ function linkBlocks(text2, makeId) {
3571
3587
  const link = pastedLink(text2);
3572
3588
  if (link === null) return null;
3573
3589
  const { url, href, rest } = link;
3574
- const linked2 = _chunkND5XJVK2cjs.text.call(void 0, url, [{ type: "link", attrs: { href } }]);
3575
- const markdown = _chunkND5XJVK2cjs.serializeInline.call(void 0, rest === "" ? [linked2] : [linked2, _chunkND5XJVK2cjs.text.call(void 0, rest)]);
3590
+ const linked2 = _chunk4SLJNZSMcjs.text.call(void 0, url, [{ type: "link", attrs: { href } }]);
3591
+ const markdown = _chunk4SLJNZSMcjs.serializeInline.call(void 0, rest === "" ? [linked2] : [linked2, _chunk4SLJNZSMcjs.text.call(void 0, rest)]);
3576
3592
  return [{ id: makeId(), type: "MARKDOWN", data: { markdown } }];
3577
3593
  }
3578
3594
  function textBlocks2(text2, makeId) {
3579
3595
  const link = linkBlocks(text2, makeId);
3580
3596
  if (link !== null) return link;
3581
- return looksLikeMarkdown(text2) ? _chunkND5XJVK2cjs.fromMarkdown.call(void 0, text2, { newId: makeId }) : plainTextToBlocks(text2, makeId);
3597
+ return looksLikeMarkdown(text2) ? _chunk4SLJNZSMcjs.fromMarkdown.call(void 0, text2, { newId: makeId }) : plainTextToBlocks(text2, makeId);
3582
3598
  }
3583
3599
  function htmlSlice(html, options) {
3584
3600
  if (html === void 0) return null;
@@ -3590,7 +3606,7 @@ function sliceFromClipboard(data, options = {}) {
3590
3606
  if (fromJson !== null) return fromJson;
3591
3607
  const fromHtml = htmlSlice(data.html, options);
3592
3608
  if (fromHtml !== null) return fromHtml;
3593
- return data.text === void 0 ? null : openSlice(textBlocks2(data.text, _nullishCoalesce(options.newId, () => ( _chunkND5XJVK2cjs.newId))), true);
3609
+ return data.text === void 0 ? null : openSlice(textBlocks2(data.text, _nullishCoalesce(options.newId, () => ( _chunk4SLJNZSMcjs.newId))), true);
3594
3610
  }
3595
3611
 
3596
3612
  // src/engine/commands/is-active.ts
@@ -3599,7 +3615,7 @@ function hasAttrs(block, attrs) {
3599
3615
  }
3600
3616
  function isActive(state, name, attrs) {
3601
3617
  if (state.schema.marks.has(name)) return selectionHasMark(state, name, attrs);
3602
- const blocks = selectedBlockIds(state.doc, state.selection).flatMap((id) => _nullishCoalesce(_chunkND5XJVK2cjs.blockById.call(void 0, state.doc, id), () => ( [])));
3618
+ const blocks = selectedBlockIds(state.doc, state.selection).flatMap((id) => _nullishCoalesce(_chunk4SLJNZSMcjs.blockById.call(void 0, state.doc, id), () => ( [])));
3603
3619
  const isBlockType = state.schema.blocks.has(name);
3604
3620
  const matches = (block) => isBlockType ? block.type === name : block.type === "MARKDOWN" && block.attrs.kind === name;
3605
3621
  return blocks.length > 0 && blocks.every((block) => matches(block) && hasAttrs(block, attrs));
@@ -3608,19 +3624,19 @@ function isActive(state, name, attrs) {
3608
3624
  // src/engine/model/same-doc.ts
3609
3625
  function sameDoc(a, b) {
3610
3626
  if (a === b) return true;
3611
- return a.blocks.length === b.blocks.length && a.blocks.every((block, i) => _chunk2QCRZ7OLcjs.sameValue.call(void 0, block, b.blocks[i]));
3627
+ return a.blocks.length === b.blocks.length && a.blocks.every((block, i) => _chunk6V6GGBDKcjs.sameValue.call(void 0, block, b.blocks[i]));
3612
3628
  }
3613
3629
 
3614
3630
  // src/engine/extension/same-blocks.ts
3615
3631
  function sameBlock(a, b) {
3616
- return a === b || a.id === b.id && a.type === b.type && (_nullishCoalesce(a.indent, () => ( 0))) === (_nullishCoalesce(b.indent, () => ( 0))) && _chunk2QCRZ7OLcjs.sameValue.call(void 0, a.data, b.data);
3632
+ return a === b || a.id === b.id && a.type === b.type && (_nullishCoalesce(a.indent, () => ( 0))) === (_nullishCoalesce(b.indent, () => ( 0))) && _chunk6V6GGBDKcjs.sameValue.call(void 0, a.data, b.data);
3617
3633
  }
3618
3634
  function sameBlocks(a, b) {
3619
- return a === b || _chunkND5XJVK2cjs.sameItems.call(void 0, a, b, sameBlock);
3635
+ return a === b || _chunk4SLJNZSMcjs.sameItems.call(void 0, a, b, sameBlock);
3620
3636
  }
3621
3637
 
3622
3638
  // src/engine/extension/structural-echo.ts
3623
- var sameIds = (a, b) => _chunkND5XJVK2cjs.sameItems.call(void 0, a, b, (x, y) => x.id === y.id);
3639
+ var sameIds = (a, b) => _chunk4SLJNZSMcjs.sameItems.call(void 0, a, b, (x, y) => x.id === y.id);
3624
3640
  function copiedSequence(emissions, incoming) {
3625
3641
  const verdicts = /* @__PURE__ */ new Map();
3626
3642
  const sameAt = (block, index) => {
@@ -3801,7 +3817,7 @@ function resolveExtensions(extensions, isMac) {
3801
3817
  );
3802
3818
  return {
3803
3819
  extensions: sorted,
3804
- schema: _chunkND5XJVK2cjs.createSchema.call(void 0, {
3820
+ schema: _chunk4SLJNZSMcjs.createSchema.call(void 0, {
3805
3821
  blocks: sorted.flatMap((extension) => _nullishCoalesce(extension.blocks, () => ( []))),
3806
3822
  marks: sorted.flatMap((extension) => _nullishCoalesce(extension.marks, () => ( []))),
3807
3823
  atoms: sorted.flatMap((extension) => _nullishCoalesce(extension.atoms, () => ( [])))
@@ -3825,7 +3841,7 @@ function createInternalEditor(options) {
3825
3841
  const isMac = _nullishCoalesce(options.isMac, () => ( detectMac()));
3826
3842
  const resolved = resolveExtensions(_nullishCoalesce(options.extensions, () => ( coreExtensions({ newId: newId2 }))), isMac);
3827
3843
  const { schema, plugins } = resolved;
3828
- const codec = _chunkND5XJVK2cjs.createBlockCodec.call(void 0, schema, { newId: newId2 });
3844
+ const codec = _chunk4SLJNZSMcjs.createBlockCodec.call(void 0, schema, { newId: newId2 });
3829
3845
  const listeners = /* @__PURE__ */ new Set();
3830
3846
  const mounts = /* @__PURE__ */ new Set();
3831
3847
  let state = createState({ doc: codec.docFromBlocks(options.blocks), schema, plugins, clock: options.now });
@@ -4043,5 +4059,5 @@ function createInternalEditor(options) {
4043
4059
 
4044
4060
 
4045
4061
 
4046
- exports.setAttrsStep = setAttrsStep; exports.setIndentStep = setIndentStep; exports.insertBlocksStep = insertBlocksStep; exports.removeBlocksStep = removeBlocksStep; exports.moveBlocksStep = moveBlocksStep; exports.replaceBlockStep = replaceBlockStep; exports.replaceInlineStep = replaceInlineStep; exports.addMarkStep = addMarkStep; exports.removeMarkStep = removeMarkStep; exports.commonPrefix = commonPrefix; exports.commonSuffix = commonSuffix; exports.replaceDocStep = replaceDocStep; exports.splitBlockStep = splitBlockStep; exports.joinBlocksStep = joinBlocksStep; exports.stepFromJSON = stepFromJSON; exports.comparePos = comparePos; exports.orderedRange = orderedRange; exports.textSelection = textSelection; exports.nodeSelection = nodeSelection; exports.blockRangeSelection = blockRangeSelection; exports.isCollapsed = isCollapsed; exports.sameSelection = sameSelection; exports.selectionRange = selectionRange; exports.selectedBlockIds = selectedBlockIds; exports.mapSelection = mapSelection; exports.primaryRegion = primaryRegion; exports.startOf = startOf; exports.endOf = endOf; exports.validateSelection = validateSelection; exports.isClosedToggle = isClosedToggle; exports.hidingToggle = hidingToggle; exports.createState = createState; exports.applyTransaction = applyTransaction; exports.getPluginState = getPluginState; exports.createPluginKey = createPluginKey; exports.foreignOrigins = foreignOrigins; exports.Transaction = Transaction; exports.caretMarks = caretMarks; exports.runCommands = runCommands; exports.HISTORY_PROVIDER = HISTORY_PROVIDER; exports.HISTORY_GROUP = HISTORY_GROUP; exports.undo = undo; exports.redo = redo; exports.undoInputRule = undoInputRule; exports.isTextFlow = isTextFlow; exports.isParagraph = isParagraph; exports.regionLength = regionLength; exports.descendantsEnd = descendantsEnd; exports.createBlock = createBlock; exports.withContent = withContent; exports.headBlockId = headBlockId; exports.selectedBlockRange = selectedBlockRange; exports.capIndents = capIndents; exports.toggleTask = toggleTask; exports.indent = indent; exports.outdent = outdent; exports.moveBlocksUp = moveBlocksUp; exports.moveBlocksDown = moveBlocksDown; exports.duplicateBlocks = duplicateBlocks; exports.deleteBlocks = deleteBlocks; exports.insertBlockAfter = insertBlockAfter; exports.deleteRange = deleteRange; exports.insertTextAt = insertTextAt; exports.insertText = insertText; exports.markExtent = markExtent; exports.markRanges = markRanges; exports.rangeContent = rangeContent; exports.markCoverage = markCoverage; exports.toggleMark = toggleMark; exports.setMark = setMark; exports.unsetMark = unsetMark; exports.setLink = setLink; exports.unsetLink = unsetLink; exports.insertMention = insertMention; exports.setBlockType = setBlockType; exports.insertTextWithRules = insertTextWithRules; exports.blockInputRules = blockInputRules; exports.regionInline = regionInline; exports.markInputRules = markInputRules; exports.typographyRules = typographyRules; exports.fromHTML = fromHTML; exports.toMarkdown = toMarkdown; exports.toHTML = toHTML; exports.toPlainText = toPlainText; exports.graphemeCount = graphemeCount; exports.wordCount = wordCount; exports.nextGraphemeOffset = nextGraphemeOffset; exports.prevGraphemeOffset = prevGraphemeOffset; exports.countBlock = countBlock; exports.countText = countText; exports.countDoc = countDoc; exports.setAttrs = setAttrs; exports.setTextAlign = setTextAlign; exports.setBlockColor = setBlockColor; exports.LINE_JOIN = LINE_JOIN; exports.deleteSelection = deleteSelection; exports.deleteBackward = deleteBackward; exports.deleteForward = deleteForward; exports.deleteWordBackward = deleteWordBackward; exports.deleteWordForward = deleteWordForward; exports.deleteToLineStart = deleteToLineStart; exports.deleteToLineEnd = deleteToLineEnd; exports.insertHardBreak = insertHardBreak; exports.movedBlockIds = movedBlockIds; exports.moveBlocksTo = moveBlocksTo; exports.selectAll = selectAll; exports.setSelection = setSelection; exports.LINE_SPLIT = LINE_SPLIT; exports.freshBlocks = freshBlocks; exports.pasteAtCaret = pasteAtCaret; exports.insertSlice = insertSlice; exports.pastedLink = pastedLink; exports.defineExtension = defineExtension; exports.coreExtensions = coreExtensions; exports.sliceFromSelection = sliceFromSelection; exports.sliceFromClipboard = sliceFromClipboard; exports.isActive = isActive; exports.sameDoc = sameDoc; exports.detectMac = detectMac; exports.normalizeKey = normalizeKey; exports.keyName = keyName; exports.createEditor = createEditor;
4047
- //# sourceMappingURL=chunk-PZ4GT5JO.cjs.map
4062
+ exports.setAttrsStep = setAttrsStep; exports.setIndentStep = setIndentStep; exports.insertBlocksStep = insertBlocksStep; exports.removeBlocksStep = removeBlocksStep; exports.moveBlocksStep = moveBlocksStep; exports.replaceBlockStep = replaceBlockStep; exports.replaceInlineStep = replaceInlineStep; exports.addMarkStep = addMarkStep; exports.removeMarkStep = removeMarkStep; exports.commonPrefix = commonPrefix; exports.commonSuffix = commonSuffix; exports.replaceDocStep = replaceDocStep; exports.splitBlockStep = splitBlockStep; exports.joinBlocksStep = joinBlocksStep; exports.stepFromJSON = stepFromJSON; exports.comparePos = comparePos; exports.orderedRange = orderedRange; exports.textSelection = textSelection; exports.nodeSelection = nodeSelection; exports.blockRangeSelection = blockRangeSelection; exports.isCollapsed = isCollapsed; exports.sameSelection = sameSelection; exports.selectionRange = selectionRange; exports.selectedBlockIds = selectedBlockIds; exports.mapSelection = mapSelection; exports.primaryRegion = primaryRegion; exports.startOf = startOf; exports.endOf = endOf; exports.validateSelection = validateSelection; exports.isClosedToggle = isClosedToggle; exports.hidingToggle = hidingToggle; exports.createState = createState; exports.applyTransaction = applyTransaction; exports.getPluginState = getPluginState; exports.createPluginKey = createPluginKey; exports.Transaction = Transaction; exports.caretMarks = caretMarks; exports.runCommands = runCommands; exports.HISTORY_PROVIDER = HISTORY_PROVIDER; exports.HISTORY_GROUP = HISTORY_GROUP; exports.groupOf = groupOf; exports.undo = undo; exports.redo = redo; exports.undoInputRule = undoInputRule; exports.isTextFlow = isTextFlow; exports.isParagraph = isParagraph; exports.regionLength = regionLength; exports.descendantsEnd = descendantsEnd; exports.createBlock = createBlock; exports.withContent = withContent; exports.headBlockId = headBlockId; exports.selectedBlockRange = selectedBlockRange; exports.capIndents = capIndents; exports.toggleTask = toggleTask; exports.indent = indent; exports.outdent = outdent; exports.moveBlocksUp = moveBlocksUp; exports.moveBlocksDown = moveBlocksDown; exports.duplicateBlocks = duplicateBlocks; exports.deleteBlocks = deleteBlocks; exports.insertBlockAfter = insertBlockAfter; exports.deleteRange = deleteRange; exports.insertTextAt = insertTextAt; exports.insertText = insertText; exports.markExtent = markExtent; exports.markRanges = markRanges; exports.rangeContent = rangeContent; exports.markCoverage = markCoverage; exports.toggleMark = toggleMark; exports.setMark = setMark; exports.unsetMark = unsetMark; exports.setLink = setLink; exports.unsetLink = unsetLink; exports.insertMention = insertMention; exports.setBlockType = setBlockType; exports.insertTextWithRules = insertTextWithRules; exports.blockInputRules = blockInputRules; exports.regionInline = regionInline; exports.markInputRules = markInputRules; exports.typographyRules = typographyRules; exports.fromHTML = fromHTML; exports.toMarkdown = toMarkdown; exports.toHTML = toHTML; exports.toPlainText = toPlainText; exports.graphemeCount = graphemeCount; exports.wordCount = wordCount; exports.nextGraphemeOffset = nextGraphemeOffset; exports.prevGraphemeOffset = prevGraphemeOffset; exports.countBlock = countBlock; exports.countText = countText; exports.countDoc = countDoc; exports.setAttrs = setAttrs; exports.setTextAlign = setTextAlign; exports.setBlockColor = setBlockColor; exports.LINE_JOIN = LINE_JOIN; exports.deleteSelection = deleteSelection; exports.deleteBackward = deleteBackward; exports.deleteForward = deleteForward; exports.deleteWordBackward = deleteWordBackward; exports.deleteWordForward = deleteWordForward; exports.deleteToLineStart = deleteToLineStart; exports.deleteToLineEnd = deleteToLineEnd; exports.insertHardBreak = insertHardBreak; exports.movedBlockIds = movedBlockIds; exports.moveBlocksTo = moveBlocksTo; exports.selectAll = selectAll; exports.setSelection = setSelection; exports.LINE_SPLIT = LINE_SPLIT; exports.freshBlocks = freshBlocks; exports.pasteAtCaret = pasteAtCaret; exports.insertSlice = insertSlice; exports.pastedLink = pastedLink; exports.defineExtension = defineExtension; exports.coreExtensions = coreExtensions; exports.sliceFromSelection = sliceFromSelection; exports.sliceFromClipboard = sliceFromClipboard; exports.isActive = isActive; exports.sameDoc = sameDoc; exports.detectMac = detectMac; exports.normalizeKey = normalizeKey; exports.keyName = keyName; exports.createEditor = createEditor;
4063
+ //# sourceMappingURL=chunk-ZKVOS57Q.cjs.map