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
@@ -25,16 +25,16 @@
25
25
 
26
26
 
27
27
 
28
- var _chunkGTTPVJSDcjs = require('./chunk-GTTPVJSD.cjs');
29
28
 
29
+ var _chunkP6KYXFZCcjs = require('./chunk-P6KYXFZC.cjs');
30
30
 
31
31
 
32
32
 
33
33
 
34
34
 
35
- var _chunkOMOBMXD5cjs = require('./chunk-OMOBMXD5.cjs');
36
35
 
37
36
 
37
+ var _chunkEH5KXQXYcjs = require('./chunk-EH5KXQXY.cjs');
38
38
 
39
39
 
40
40
 
@@ -98,12 +98,12 @@ var _chunkOMOBMXD5cjs = require('./chunk-OMOBMXD5.cjs');
98
98
 
99
99
 
100
100
 
101
- var _chunkPZ4GT5JOcjs = require('./chunk-PZ4GT5JO.cjs');
102
101
 
103
102
 
104
- var _chunk2QCRZ7OLcjs = require('./chunk-2QCRZ7OL.cjs');
103
+ var _chunkZKVOS57Qcjs = require('./chunk-ZKVOS57Q.cjs');
105
104
 
106
105
 
106
+ var _chunk6V6GGBDKcjs = require('./chunk-6V6GGBDK.cjs');
107
107
 
108
108
 
109
109
 
@@ -127,7 +127,9 @@ var _chunk2QCRZ7OLcjs = require('./chunk-2QCRZ7OL.cjs');
127
127
 
128
128
 
129
129
 
130
- var _chunkND5XJVK2cjs = require('./chunk-ND5XJVK2.cjs');
130
+
131
+
132
+ var _chunk4SLJNZSMcjs = require('./chunk-4SLJNZSM.cjs');
131
133
 
132
134
  // src/canvas/BlockCanvas.tsx
133
135
  var _react = require('react'); var React = _interopRequireWildcard(_react); var React2 = _interopRequireWildcard(_react); var React3 = _interopRequireWildcard(_react); var React4 = _interopRequireWildcard(_react); var React5 = _interopRequireWildcard(_react); var React6 = _interopRequireWildcard(_react); var React7 = _interopRequireWildcard(_react); var React8 = _interopRequireWildcard(_react); var React9 = _interopRequireWildcard(_react); var React10 = _interopRequireWildcard(_react);
@@ -387,17 +389,17 @@ function useLabels() {
387
389
  }
388
390
 
389
391
  // src/blocks/caption-markdown.ts
390
- var captionText = (markdown) => _chunkND5XJVK2cjs.inlineText.call(void 0, _chunkND5XJVK2cjs.parseInline.call(void 0, markdown), () => "");
392
+ var captionText = (markdown) => _chunk4SLJNZSMcjs.inlineText.call(void 0, _chunk4SLJNZSMcjs.parseInline.call(void 0, markdown), () => "");
391
393
 
392
394
  // src/blocks/code/HighlightOverlay.tsx
393
395
 
394
396
 
395
397
  function Token({ text: text2, color, className }) {
396
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { style: { color }, className, children: text2 });
398
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { style: { color: _chunkEH5KXQXYcjs.tokenColour.call(void 0, color) }, className, children: text2 });
397
399
  }
398
400
  function HighlightOverlay({ code, language: language2, drawnRef, ...props }) {
399
401
  const { highlight } = useQuoin();
400
- const lines = _react.useMemo.call(void 0, () => _chunkOMOBMXD5cjs.highlightedLines.call(void 0, highlight, code, language2), [highlight, code, language2]);
402
+ const lines = _react.useMemo.call(void 0, () => _chunkEH5KXQXYcjs.highlightedLines.call(void 0, highlight, code, language2), [highlight, code, language2]);
401
403
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "pre", { ...props, ref: drawnRef, className: "quoin-code-text", children: [
402
404
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "code", { children: lines === null ? code : lines.map((line, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _react.Fragment, { children: [
403
405
  index > 0 && "\n",
@@ -412,17 +414,17 @@ function assetHref(resolveAssetUrl, storageKey) {
412
414
  if (storageKey === "") return null;
413
415
  try {
414
416
  const src = resolveAssetUrl(storageKey);
415
- return typeof src === "string" && _chunkND5XJVK2cjs.sanitizeAssetUrl.call(void 0, src) || null;
417
+ return typeof src === "string" && _chunk4SLJNZSMcjs.sanitizeAssetUrl.call(void 0, src) || null;
416
418
  } catch (e2) {
417
419
  return null;
418
420
  }
419
421
  }
420
422
 
421
423
  // src/blocks/image/image-source.ts
422
- var hasPicture = (attrs) => _chunkND5XJVK2cjs.str.call(void 0, attrs.url) !== "" || _chunkND5XJVK2cjs.str.call(void 0, attrs.storageKey) !== "";
424
+ var hasPicture = (attrs) => _chunk4SLJNZSMcjs.str.call(void 0, attrs.url) !== "" || _chunk4SLJNZSMcjs.str.call(void 0, attrs.storageKey) !== "";
423
425
  function imageSource(attrs, resolveAssetUrl) {
424
- const url = _chunkND5XJVK2cjs.str.call(void 0, attrs.url);
425
- return url === "" ? assetHref(resolveAssetUrl, _chunkND5XJVK2cjs.str.call(void 0, attrs.storageKey)) : _chunkND5XJVK2cjs.sanitizeHref.call(void 0, url);
426
+ const url = _chunk4SLJNZSMcjs.str.call(void 0, attrs.url);
427
+ return url === "" ? assetHref(resolveAssetUrl, _chunk4SLJNZSMcjs.str.call(void 0, attrs.storageKey)) : _chunk4SLJNZSMcjs.sanitizeHref.call(void 0, url);
426
428
  }
427
429
 
428
430
  // src/blocks/previews.tsx
@@ -437,69 +439,69 @@ var TONE = {
437
439
  };
438
440
  function MarkdownPreview({ data }) {
439
441
  const labels = useLabels();
440
- const markdown = _chunkND5XJVK2cjs.str.call(void 0, data.markdown);
442
+ const markdown = _chunk4SLJNZSMcjs.str.call(void 0, data.markdown);
441
443
  if (markdown.trim() === "") return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: HINT, children: labels.emptyMarkdown });
442
444
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "whitespace-pre-wrap text-base leading-7", children: markdown });
443
445
  }
444
446
  function CodePreview({ data }) {
445
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { dir: "ltr", className: "quoin-code quoin-code-scroll pt-3", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HighlightOverlay, { code: _chunkND5XJVK2cjs.str.call(void 0, data.code), language: _chunkND5XJVK2cjs.str.call(void 0, data.language) }) });
447
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { dir: "ltr", className: "quoin-code quoin-code-scroll pt-3", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HighlightOverlay, { code: _chunk4SLJNZSMcjs.str.call(void 0, data.code), language: _chunk4SLJNZSMcjs.str.call(void 0, data.language) }) });
446
448
  }
447
449
  function ImagePreview({ data }) {
448
450
  const { resolveAssetUrl, labels } = useQuoin();
449
451
  const src = imageSource(data, resolveAssetUrl);
450
452
  if (src === null) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: HINT, children: labels.emptyImage });
451
- const caption = captionText(_chunkND5XJVK2cjs.str.call(void 0, data.caption));
453
+ const caption = captionText(_chunk4SLJNZSMcjs.str.call(void 0, data.caption));
452
454
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "figure", { children: [
453
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "img", { src, alt: _chunkND5XJVK2cjs.str.call(void 0, data.alt) || labels.imageNoAlt, className: "max-w-full rounded-md" }),
455
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "img", { src, alt: _chunk4SLJNZSMcjs.str.call(void 0, data.alt) || labels.imageNoAlt, className: "max-w-full rounded-md" }),
454
456
  caption && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "figcaption", { className: HINT, children: caption })
455
457
  ] });
456
458
  }
457
459
  function FilePreview({ data }) {
458
460
  const labels = useLabels();
459
- const name = _chunkND5XJVK2cjs.str.call(void 0, data.filename);
461
+ const name = _chunk4SLJNZSMcjs.str.call(void 0, data.filename);
460
462
  if (name === "") return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: HINT, children: labels.emptyFile });
461
463
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-sm", children: name });
462
464
  }
463
465
  function CalloutPreview({ data }) {
464
466
  const labels = useLabels();
465
- const body = _chunkND5XJVK2cjs.str.call(void 0, data.body);
467
+ const body = _chunk4SLJNZSMcjs.str.call(void 0, data.body);
466
468
  if (body.trim() === "") return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: HINT, children: labels.emptyCallout });
467
- const tone = _chunkND5XJVK2cjs.str.call(void 0, data.tone) || "info";
469
+ const tone = _chunk4SLJNZSMcjs.str.call(void 0, data.tone) || "info";
468
470
  const paint = _nullishCoalesce(TONE[tone], () => ( "border-border bg-muted/50"));
469
471
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "data-tone": tone, className: `rounded-md border-l-4 ${paint} p-3 text-sm`, children: body });
470
472
  }
471
473
 
472
474
  // src/blocks/core.ts
473
475
  var coreBlocks = [
474
- _chunkOMOBMXD5cjs.defineBlock.call(void 0, {
476
+ _chunkEH5KXQXYcjs.defineBlock.call(void 0, {
475
477
  type: "MARKDOWN",
476
478
  label: "Markdown",
477
479
  icon: _lucidereact.FileText,
478
480
  preview: MarkdownPreview,
479
481
  initialData: () => ({ markdown: "" })
480
482
  }),
481
- _chunkOMOBMXD5cjs.defineBlock.call(void 0, {
483
+ _chunkEH5KXQXYcjs.defineBlock.call(void 0, {
482
484
  type: "CALLOUT",
483
485
  label: "Callout",
484
486
  icon: _lucidereact.MessageSquare,
485
487
  preview: CalloutPreview,
486
488
  initialData: () => ({ tone: "info", body: "" })
487
489
  }),
488
- _chunkOMOBMXD5cjs.defineBlock.call(void 0, {
490
+ _chunkEH5KXQXYcjs.defineBlock.call(void 0, {
489
491
  type: "CODE",
490
492
  label: "Code",
491
493
  icon: _lucidereact.Code,
492
494
  preview: CodePreview,
493
495
  initialData: () => ({ language: "", code: "" })
494
496
  }),
495
- _chunkOMOBMXD5cjs.defineBlock.call(void 0, {
497
+ _chunkEH5KXQXYcjs.defineBlock.call(void 0, {
496
498
  type: "IMAGE",
497
499
  label: "Image",
498
500
  icon: _lucidereact.Image,
499
501
  preview: ImagePreview,
500
502
  initialData: () => ({ storageKey: "", alt: "" })
501
503
  }),
502
- _chunkOMOBMXD5cjs.defineBlock.call(void 0, {
504
+ _chunkEH5KXQXYcjs.defineBlock.call(void 0, {
503
505
  type: "FILE",
504
506
  label: "File",
505
507
  icon: _lucidereact.Paperclip,
@@ -516,7 +518,7 @@ function selectNode(controller, blockId) {
516
518
  const { editor } = controller;
517
519
  const { selection } = editor.state;
518
520
  if (_optionalChain([selection, 'optionalAccess', _2 => _2.kind]) === "node" && selection.block === blockId) return;
519
- _chunkGTTPVJSDcjs.dispatchSelection.call(void 0, controller, _chunkPZ4GT5JOcjs.nodeSelection.call(void 0, blockId));
521
+ _chunkP6KYXFZCcjs.dispatchSelection.call(void 0, controller, _chunkZKVOS57Qcjs.nodeSelection.call(void 0, blockId));
520
522
  }
521
523
  function focusNode(controller, blockId) {
522
524
  selectNode(controller, blockId);
@@ -546,8 +548,8 @@ var OPEN_EDITOR = "openEditor";
546
548
  var ABOVE_CORE_KEYS = 200;
547
549
  function turnedBlock(tr, { doc, selection }) {
548
550
  if (_optionalChain([selection, 'optionalAccess', _3 => _3.kind]) !== "node" || tr.origin === "remote" || tr.origin === "reconcile") return void 0;
549
- const before = _chunkND5XJVK2cjs.blockById.call(void 0, tr.before.doc, selection.block);
550
- return before !== void 0 && before.type !== _optionalChain([_chunkND5XJVK2cjs.blockById.call(void 0, doc, selection.block), 'optionalAccess', _4 => _4.type]) ? selection.block : void 0;
551
+ const before = _chunk4SLJNZSMcjs.blockById.call(void 0, tr.before.doc, selection.block);
552
+ return before !== void 0 && before.type !== _optionalChain([_chunk4SLJNZSMcjs.blockById.call(void 0, doc, selection.block), 'optionalAccess', _4 => _4.type]) ? selection.block : void 0;
551
553
  }
552
554
  function createVoidEditing() {
553
555
  const starters = /* @__PURE__ */ new Map();
@@ -567,7 +569,7 @@ function createVoidEditing() {
567
569
  _optionalChain([start, 'optionalCall', _6 => _6()]);
568
570
  };
569
571
  return {
570
- extension: _chunkPZ4GT5JOcjs.defineExtension.call(void 0, {
572
+ extension: _chunkZKVOS57Qcjs.defineExtension.call(void 0, {
571
573
  name: "void-editing",
572
574
  priority: ABOVE_CORE_KEYS,
573
575
  keymap: { Enter: openEditor },
@@ -864,32 +866,32 @@ function settle(tr, before) {
864
866
  const { schema } = tr.before;
865
867
  const result = tr.selection;
866
868
  if (_optionalChain([result, 'optionalAccess', _21 => _21.kind]) !== "blocks" || _optionalChain([before, 'optionalAccess', _22 => _22.kind]) === "blocks") return result;
867
- const ids = _chunkPZ4GT5JOcjs.selectedBlockIds.call(void 0, doc, result);
868
- const head = _chunkPZ4GT5JOcjs.headBlockId.call(void 0, before);
869
- if (head !== null && ids.includes(head) && _chunkPZ4GT5JOcjs.validateSelection.call(void 0, doc, schema, before) === before) return before;
870
- return _chunkPZ4GT5JOcjs.endOf.call(void 0, doc, schema, ids[0]);
869
+ const ids = _chunkZKVOS57Qcjs.selectedBlockIds.call(void 0, doc, result);
870
+ const head = _chunkZKVOS57Qcjs.headBlockId.call(void 0, before);
871
+ if (head !== null && ids.includes(head) && _chunkZKVOS57Qcjs.validateSelection.call(void 0, doc, schema, before) === before) return before;
872
+ return _chunkZKVOS57Qcjs.endOf.call(void 0, doc, schema, ids[0]);
871
873
  }
872
874
  function runOnBlocks(controller, blockIds, command) {
873
875
  const { state } = controller.editor;
874
876
  const ids = blockIds.filter((id) => state.doc.index.has(id));
875
877
  if (ids.length === 0) return false;
876
878
  const before = state.selection;
877
- const exact = _chunkND5XJVK2cjs.sameItems.call(void 0, _chunkPZ4GT5JOcjs.selectedBlockIds.call(void 0, state.doc, before), ids);
878
- const ran = exact ? before : _chunkPZ4GT5JOcjs.blockRangeSelection.call(void 0, ids[0], ids[ids.length - 1]);
879
- const { ok, tr } = _chunkPZ4GT5JOcjs.runCommands.call(void 0, state, [_chunkPZ4GT5JOcjs.setSelection.call(void 0, ran), command]);
880
- const result = ok && tr !== null ? tr : new (0, _chunkPZ4GT5JOcjs.Transaction)(state).setSelection(ran);
879
+ const exact = _chunk4SLJNZSMcjs.sameItems.call(void 0, _chunkZKVOS57Qcjs.selectedBlockIds.call(void 0, state.doc, before), ids);
880
+ const ran = exact ? before : _chunkZKVOS57Qcjs.blockRangeSelection.call(void 0, ids[0], ids[ids.length - 1]);
881
+ const { ok, tr } = _chunkZKVOS57Qcjs.runCommands.call(void 0, state, [_chunkZKVOS57Qcjs.setSelection.call(void 0, ran), command]);
882
+ const result = ok && tr !== null ? tr : new (0, _chunkZKVOS57Qcjs.Transaction)(state).setSelection(ran);
881
883
  const settled = exact ? result.selection : settle(result, before);
882
- if (!_chunkPZ4GT5JOcjs.sameSelection.call(void 0, settled, result.selection)) result.setSelection(settled);
883
- if (result.docChanged || !_chunkPZ4GT5JOcjs.sameSelection.call(void 0, result.selection, before)) controller.dispatch(result);
884
+ if (!_chunkZKVOS57Qcjs.sameSelection.call(void 0, settled, result.selection)) result.setSelection(settled);
885
+ if (result.docChanged || !_chunkZKVOS57Qcjs.sameSelection.call(void 0, result.selection, before)) controller.dispatch(result);
884
886
  return ok;
885
887
  }
886
888
  var noChange = () => true;
887
889
 
888
890
  // src/gutter/block-menu-items.ts
889
- var rangeOf = (blockIds) => _chunkPZ4GT5JOcjs.blockRangeSelection.call(void 0, blockIds[0], blockIds[blockIds.length - 1]);
891
+ var rangeOf = (blockIds) => _chunkZKVOS57Qcjs.blockRangeSelection.call(void 0, blockIds[0], blockIds[blockIds.length - 1]);
890
892
  function selectedWith(state, blockId) {
891
893
  const { doc, selection } = state;
892
- const selected = _chunkPZ4GT5JOcjs.selectedBlockIds.call(void 0, doc, selection);
894
+ const selected = _chunkZKVOS57Qcjs.selectedBlockIds.call(void 0, doc, selection);
893
895
  const ofBlocks = _optionalChain([selection, 'optionalAccess', _23 => _23.kind]) === "blocks" || _optionalChain([selection, 'optionalAccess', _24 => _24.kind]) === "text" && selected.length > 1;
894
896
  return ofBlocks && selected.includes(blockId) ? selected : null;
895
897
  }
@@ -897,8 +899,8 @@ function menuTargets(state, blockId) {
897
899
  const selected = selectedWith(state, blockId);
898
900
  if (selected !== null) return selected;
899
901
  const { doc } = state;
900
- const index = _chunkND5XJVK2cjs.requireBlockIndex.call(void 0, doc, blockId);
901
- return doc.blocks.slice(index, _chunkPZ4GT5JOcjs.descendantsEnd.call(void 0, doc, index)).map((block) => block.id);
902
+ const index = _chunk4SLJNZSMcjs.requireBlockIndex.call(void 0, doc, blockId);
903
+ return doc.blocks.slice(index, _chunkZKVOS57Qcjs.descendantsEnd.call(void 0, doc, index)).map((block) => block.id);
902
904
  }
903
905
  function styleTargets(state, blockId) {
904
906
  return _nullishCoalesce(selectedWith(state, blockId), () => ( [blockId]));
@@ -908,12 +910,12 @@ function menuActions(core, extra = []) {
908
910
  }
909
911
  function markdownOf(editor, blockIds, resolveAssetUrl) {
910
912
  const { doc } = editor.state;
911
- const range = _chunkPZ4GT5JOcjs.selectedBlockRange.call(void 0, doc, rangeOf(blockIds));
913
+ const range = _chunkZKVOS57Qcjs.selectedBlockRange.call(void 0, doc, rangeOf(blockIds));
912
914
  if (range === null) return "";
913
- const blocks = editor.codec.blocksFromDoc(_chunkND5XJVK2cjs.createDoc.call(void 0, doc.blocks.slice(range.start, range.end)));
914
- return _chunkPZ4GT5JOcjs.toMarkdown.call(void 0, blocks, { schema: editor.schema, resolveAssetUrl, comments: false });
915
+ const blocks = editor.codec.blocksFromDoc(_chunk4SLJNZSMcjs.createDoc.call(void 0, doc.blocks.slice(range.start, range.end)));
916
+ return _chunkZKVOS57Qcjs.toMarkdown.call(void 0, blocks, { schema: editor.schema, resolveAssetUrl, comments: false });
915
917
  }
916
- var applies = (command) => (state, blockIds) => blockIds.every((id) => state.doc.index.has(id)) && _chunkPZ4GT5JOcjs.runCommands.call(void 0, state, [_chunkPZ4GT5JOcjs.setSelection.call(void 0, rangeOf(blockIds)), command]).ok;
918
+ var applies = (command) => (state, blockIds) => blockIds.every((id) => state.doc.index.has(id)) && _chunkZKVOS57Qcjs.runCommands.call(void 0, state, [_chunkZKVOS57Qcjs.setSelection.call(void 0, rangeOf(blockIds)), command]).ok;
917
919
  function coreBlockMenuActions(labels, options) {
918
920
  const copy = (controller, blockIds, text2) => {
919
921
  void copyText(text2).then((copied) => {
@@ -927,7 +929,7 @@ function coreBlockMenuActions(labels, options) {
927
929
  label: labels.duplicate,
928
930
  icon: _lucidereact.CopyPlus,
929
931
  shortcut: "Mod-d",
930
- run: (controller, blockIds) => runOnBlocks(controller, blockIds, _chunkPZ4GT5JOcjs.duplicateBlocks.call(void 0, ))
932
+ run: (controller, blockIds) => runOnBlocks(controller, blockIds, _chunkZKVOS57Qcjs.duplicateBlocks.call(void 0, ))
931
933
  },
932
934
  {
933
935
  id: "copy",
@@ -946,23 +948,23 @@ function coreBlockMenuActions(labels, options) {
946
948
  label: labels.moveUp,
947
949
  icon: _lucidereact.ArrowUp,
948
950
  shortcut: "Mod-Shift-ArrowUp",
949
- run: (controller, blockIds) => runOnBlocks(controller, blockIds, _chunkPZ4GT5JOcjs.moveBlocksUp),
950
- available: applies(_chunkPZ4GT5JOcjs.moveBlocksUp)
951
+ run: (controller, blockIds) => runOnBlocks(controller, blockIds, _chunkZKVOS57Qcjs.moveBlocksUp),
952
+ available: applies(_chunkZKVOS57Qcjs.moveBlocksUp)
951
953
  },
952
954
  {
953
955
  id: "move-down",
954
956
  label: labels.moveDown,
955
957
  icon: _lucidereact.ArrowDown,
956
958
  shortcut: "Mod-Shift-ArrowDown",
957
- run: (controller, blockIds) => runOnBlocks(controller, blockIds, _chunkPZ4GT5JOcjs.moveBlocksDown),
958
- available: applies(_chunkPZ4GT5JOcjs.moveBlocksDown)
959
+ run: (controller, blockIds) => runOnBlocks(controller, blockIds, _chunkZKVOS57Qcjs.moveBlocksDown),
960
+ available: applies(_chunkZKVOS57Qcjs.moveBlocksDown)
959
961
  },
960
962
  {
961
963
  id: "delete",
962
964
  label: labels.delete,
963
965
  icon: _lucidereact.Trash,
964
966
  destructive: true,
965
- run: (controller, blockIds) => runOnBlocks(controller, blockIds, _chunkPZ4GT5JOcjs.deleteBlocks)
967
+ run: (controller, blockIds) => runOnBlocks(controller, blockIds, _chunkZKVOS57Qcjs.deleteBlocks)
966
968
  }
967
969
  ];
968
970
  }
@@ -1020,7 +1022,7 @@ var sharedTone = (blocks) => {
1020
1022
  function CalloutMenus({ kit, controller, blocks }) {
1021
1023
  const labels = useLabels();
1022
1024
  const blockIds = blocks.map((block) => block.id);
1023
- const apply = (patch) => runOnBlocks(controller, blockIds, _chunkPZ4GT5JOcjs.setAttrs.call(void 0, patch));
1025
+ const apply = (patch) => runOnBlocks(controller, blockIds, _chunkZKVOS57Qcjs.setAttrs.call(void 0, patch));
1024
1026
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1025
1027
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, kit.Sub, { children: [
1026
1028
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, kit.SubTrigger, { children: [
@@ -1045,7 +1047,7 @@ function CalloutMenus({ kit, controller, blocks }) {
1045
1047
 
1046
1048
  function sharedColor(blocks, key) {
1047
1049
  const coloured = blocks.filter((block) => block.type === "MARKDOWN");
1048
- const colors = new Set(coloured.map((block) => _nullishCoalesce(_chunkND5XJVK2cjs.paletteOrUndefined.call(void 0, block.attrs[key]), () => ( "default"))));
1050
+ const colors = new Set(coloured.map((block) => _nullishCoalesce(_chunk4SLJNZSMcjs.paletteOrUndefined.call(void 0, block.attrs[key]), () => ( "default"))));
1049
1051
  return colors.size === 1 ? [...colors][0] : "";
1050
1052
  }
1051
1053
  var swatches = {
@@ -1058,7 +1060,7 @@ function ColorGroups({ kit, value, onPick }) {
1058
1060
  const backgroundTitle = _react.useId.call(void 0, );
1059
1061
  const group = (key, title, titleId) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1060
1062
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, kit.Label, { id: titleId, children: title }),
1061
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, kit.RadioGroup, { "aria-labelledby": titleId, value: value[key], onValueChange: (name) => onPick(key, name), children: _chunkND5XJVK2cjs.PALETTE.map((name) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, kit.RadioItem, { value: name, indicator: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.CheckIcon, { className: "size-4" }), children: [
1063
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, kit.RadioGroup, { "aria-labelledby": titleId, value: value[key], onValueChange: (name) => onPick(key, name), children: _chunk4SLJNZSMcjs.PALETTE.map((name) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, kit.RadioItem, { value: name, indicator: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.CheckIcon, { className: "size-4" }), children: [
1062
1064
  swatches[key](name),
1063
1065
  labels.colors[name]
1064
1066
  ] }, name)) })
@@ -1073,7 +1075,7 @@ function ColorMenu({ kit, controller, blocks }) {
1073
1075
  const labels = useLabels();
1074
1076
  const blockIds = blocks.map((block) => block.id);
1075
1077
  const value = { color: sharedColor(blocks, "color"), background: sharedColor(blocks, "background") };
1076
- const pick = (key, name) => runOnBlocks(controller, blockIds, _chunkPZ4GT5JOcjs.setBlockColor.call(void 0, { [key]: name === "default" ? null : name }));
1078
+ const pick = (key, name) => runOnBlocks(controller, blockIds, _chunkZKVOS57Qcjs.setBlockColor.call(void 0, { [key]: name === "default" ? null : name }));
1077
1079
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, kit.Sub, { children: [
1078
1080
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, kit.SubTrigger, { children: [
1079
1081
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MenuIcon, { icon: _lucidereact.Palette }),
@@ -1104,7 +1106,7 @@ function modifierText(modifier, isMac, { keyNames }) {
1104
1106
  return Object.hasOwn(MODIFIERS, name) ? keyNames[MODIFIERS[name]] : capitalized(modifier);
1105
1107
  }
1106
1108
  function formatShortcut(shortcut, platform = {}) {
1107
- const { isMac = _chunkPZ4GT5JOcjs.detectMac.call(void 0, ), labels = englishLabels } = platform;
1109
+ const { isMac = _chunkZKVOS57Qcjs.detectMac.call(void 0, ), labels = englishLabels } = platform;
1108
1110
  const parts = shortcut.split(shortcut.includes("+") ? "+" : "-");
1109
1111
  const key = _nullishCoalesce(parts.pop(), () => ( shortcut));
1110
1112
  const written = [...parts.map((modifier) => modifierText(modifier, isMac, labels)), keyText(key, labels)];
@@ -1193,21 +1195,21 @@ function languageOptions(query, plainText) {
1193
1195
 
1194
1196
 
1195
1197
  // src/blocks/insert-blocks.ts
1196
- var isEmptyParagraph = (schema, block) => _chunkPZ4GT5JOcjs.isParagraph.call(void 0, block) && _chunkPZ4GT5JOcjs.regionLength.call(void 0, block, _nullishCoalesce(_chunkPZ4GT5JOcjs.primaryRegion.call(void 0, schema, block), () => ( ""))) === 0;
1198
+ var isEmptyParagraph = (schema, block) => _chunkZKVOS57Qcjs.isParagraph.call(void 0, block) && _chunkZKVOS57Qcjs.regionLength.call(void 0, block, _nullishCoalesce(_chunkZKVOS57Qcjs.primaryRegion.call(void 0, schema, block), () => ( ""))) === 0;
1197
1199
  function fresh(schema, { id, type, attrs, regions }, indent3) {
1198
- const block = _chunkPZ4GT5JOcjs.createBlock.call(void 0, schema, type, attrs, indent3, id);
1200
+ const block = _chunkZKVOS57Qcjs.createBlock.call(void 0, schema, type, attrs, indent3, id);
1199
1201
  return regions === void 0 ? block : { ...block, regions };
1200
1202
  }
1201
1203
  function landOnLine(tr, schema, index, indent3) {
1202
1204
  const next = tr.doc.blocks[index];
1203
1205
  const reused = next !== void 0 && next.indent === indent3 && isEmptyParagraph(schema, next);
1204
- const line = reused ? next : _chunkPZ4GT5JOcjs.createBlock.call(void 0, schema, schema.defaultTextBlock, {}, indent3);
1205
- if (!reused) tr.step(_chunkPZ4GT5JOcjs.insertBlocksStep.call(void 0, index, [line]));
1206
- tr.setSelection(_chunkPZ4GT5JOcjs.startOf.call(void 0, tr.doc, schema, line.id));
1206
+ const line = reused ? next : _chunkZKVOS57Qcjs.createBlock.call(void 0, schema, schema.defaultTextBlock, {}, indent3);
1207
+ if (!reused) tr.step(_chunkZKVOS57Qcjs.insertBlocksStep.call(void 0, index, [line]));
1208
+ tr.setSelection(_chunkZKVOS57Qcjs.startOf.call(void 0, tr.doc, schema, line.id));
1207
1209
  }
1208
1210
  function land(tr, schema, landing, first, after) {
1209
- if (landing === "text") tr.setSelection(_chunkPZ4GT5JOcjs.startOf.call(void 0, tr.doc, schema, first.id));
1210
- if (landing === "editor") tr.setSelection(_chunkPZ4GT5JOcjs.nodeSelection.call(void 0, first.id)).setMeta(OPEN_EDITOR, first.id);
1211
+ if (landing === "text") tr.setSelection(_chunkZKVOS57Qcjs.startOf.call(void 0, tr.doc, schema, first.id));
1212
+ if (landing === "editor") tr.setSelection(_chunkZKVOS57Qcjs.nodeSelection.call(void 0, first.id)).setMeta(OPEN_EDITOR, first.id);
1211
1213
  if (landing === "line") landOnLine(tr, schema, after, first.indent);
1212
1214
  }
1213
1215
  function anchorIndex(doc, id) {
@@ -1217,24 +1219,24 @@ function anchorIndex(doc, id) {
1217
1219
  function insertBlocks(blocks, landing, anchorId) {
1218
1220
  return (state, dispatch) => {
1219
1221
  const { doc, schema } = state;
1220
- const id = anchorId === void 0 ? _chunkPZ4GT5JOcjs.headBlockId.call(void 0, state.selection) : anchorId;
1222
+ const id = anchorId === void 0 ? _chunkZKVOS57Qcjs.headBlockId.call(void 0, state.selection) : anchorId;
1221
1223
  const index = anchorIndex(doc, id);
1222
1224
  if (index === void 0 || blocks.length === 0) return false;
1223
1225
  const anchor = id === null ? void 0 : doc.blocks[index];
1224
1226
  const created2 = blocks.map((block) => fresh(schema, block, _nullishCoalesce(_optionalChain([anchor, 'optionalAccess', _33 => _33.indent]), () => ( 0))));
1225
- const tr = new (0, _chunkPZ4GT5JOcjs.Transaction)(state);
1227
+ const tr = new (0, _chunkZKVOS57Qcjs.Transaction)(state);
1226
1228
  const empty = anchor !== void 0 && landing !== "stay" && isEmptyParagraph(schema, anchor);
1227
1229
  if (empty && landing === "line") {
1228
- tr.step(_chunkPZ4GT5JOcjs.insertBlocksStep.call(void 0, index, created2)).setSelection(_chunkPZ4GT5JOcjs.startOf.call(void 0, tr.doc, schema, anchor.id));
1230
+ tr.step(_chunkZKVOS57Qcjs.insertBlocksStep.call(void 0, index, created2)).setSelection(_chunkZKVOS57Qcjs.startOf.call(void 0, tr.doc, schema, anchor.id));
1229
1231
  } else if (empty) {
1230
1232
  const [first, ...rest] = created2;
1231
1233
  const filled = { ...first, id: anchor.id };
1232
- tr.step(_chunkPZ4GT5JOcjs.replaceBlockStep.call(void 0, filled));
1233
- if (rest.length > 0) tr.step(_chunkPZ4GT5JOcjs.insertBlocksStep.call(void 0, index + 1, rest));
1234
+ tr.step(_chunkZKVOS57Qcjs.replaceBlockStep.call(void 0, filled));
1235
+ if (rest.length > 0) tr.step(_chunkZKVOS57Qcjs.insertBlocksStep.call(void 0, index + 1, rest));
1234
1236
  land(tr, schema, landing, filled, index + created2.length);
1235
1237
  } else {
1236
- const at = anchor === void 0 ? 0 : _chunkPZ4GT5JOcjs.descendantsEnd.call(void 0, doc, index);
1237
- tr.step(_chunkPZ4GT5JOcjs.insertBlocksStep.call(void 0, at, created2));
1238
+ const at = anchor === void 0 ? 0 : _chunkZKVOS57Qcjs.descendantsEnd.call(void 0, doc, index);
1239
+ tr.step(_chunkZKVOS57Qcjs.insertBlocksStep.call(void 0, at, created2));
1238
1240
  land(tr, schema, landing, created2[0], at + created2.length);
1239
1241
  }
1240
1242
  _optionalChain([dispatch, 'optionalCall', _34 => _34(tr)]);
@@ -1247,7 +1249,7 @@ function landingFor(flow, hasEditor) {
1247
1249
  }
1248
1250
  function insertBlockToWrite(block, hasEditor, anchorId) {
1249
1251
  return (state, dispatch) => {
1250
- const landing = landingFor(_chunkND5XJVK2cjs.specFor.call(void 0, state.schema, block.type).flow, hasEditor);
1252
+ const landing = landingFor(_chunk4SLJNZSMcjs.specFor.call(void 0, state.schema, block.type).flow, hasEditor);
1251
1253
  return insertBlocks([block], landing, anchorId)(state, dispatch);
1252
1254
  };
1253
1255
  }
@@ -1255,20 +1257,20 @@ function insertBlockToWrite(block, hasEditor, anchorId) {
1255
1257
  // src/blocks/code/code-actions.ts
1256
1258
  function writeCode(controller, blockId, code, group) {
1257
1259
  const { editor } = controller;
1258
- const block = _chunkND5XJVK2cjs.blockById.call(void 0, editor.state.doc, blockId);
1260
+ const block = _chunk4SLJNZSMcjs.blockById.call(void 0, editor.state.doc, blockId);
1259
1261
  if (block === void 0 || block.attrs.code === code) return;
1260
- controller.dispatch(editor.createTransaction().step(_chunkPZ4GT5JOcjs.setAttrsStep.call(void 0, blockId, { code })).setMeta(_chunkPZ4GT5JOcjs.HISTORY_GROUP, group));
1262
+ controller.dispatch(editor.createTransaction().step(_chunkZKVOS57Qcjs.setAttrsStep.call(void 0, blockId, { code })).setMeta(_chunkZKVOS57Qcjs.HISTORY_GROUP, group));
1261
1263
  }
1262
1264
  function codeToParagraph(blockId) {
1263
1265
  return (state, dispatch) => {
1264
- const turn = _chunkPZ4GT5JOcjs.setBlockType.call(void 0, "MARKDOWN", { kind: "paragraph" });
1265
- const { ok, tr } = _chunkPZ4GT5JOcjs.runCommands.call(void 0, state, [_chunkPZ4GT5JOcjs.setSelection.call(void 0, _chunkPZ4GT5JOcjs.nodeSelection.call(void 0, blockId)), turn]);
1266
+ const turn = _chunkZKVOS57Qcjs.setBlockType.call(void 0, "MARKDOWN", { kind: "paragraph" });
1267
+ const { ok, tr } = _chunkZKVOS57Qcjs.runCommands.call(void 0, state, [_chunkZKVOS57Qcjs.setSelection.call(void 0, _chunkZKVOS57Qcjs.nodeSelection.call(void 0, blockId)), turn]);
1266
1268
  if (ok && tr !== null) _optionalChain([dispatch, 'optionalCall', _35 => _35(tr)]);
1267
1269
  return ok;
1268
1270
  };
1269
1271
  }
1270
1272
  function leaveCode(controller, blockId, direction, addsLine = false) {
1271
- const moved = _chunkGTTPVJSDcjs.moveToNeighbour.call(void 0, controller, blockId, direction);
1273
+ const moved = _chunkP6KYXFZCcjs.moveToNeighbour.call(void 0, controller, blockId, direction);
1272
1274
  if (!moved && !(addsLine && controller.run(insertBlocks([{ type: "MARKDOWN" }], "text", blockId)))) return false;
1273
1275
  controller.focus();
1274
1276
  return true;
@@ -1346,8 +1348,8 @@ var MOD_KEYS = [
1346
1348
  ["Mod-a", ({ value, start, end }) => start === 0 && end === value.length ? { kind: "selectAll" } : null]
1347
1349
  ];
1348
1350
  function codeKeyAction(event, field, isMac) {
1349
- const name = _chunkPZ4GT5JOcjs.keyName.call(void 0, event, isMac);
1350
- const modKey = MOD_KEYS.find(([key]) => _chunkPZ4GT5JOcjs.normalizeKey.call(void 0, key, isMac) === name);
1351
+ const name = _chunkZKVOS57Qcjs.keyName.call(void 0, event, isMac);
1352
+ const modKey = MOD_KEYS.find(([key]) => _chunkZKVOS57Qcjs.normalizeKey.call(void 0, key, isMac) === name);
1351
1353
  const handler = _nullishCoalesce(_optionalChain([modKey, 'optionalAccess', _39 => _39[1]]), () => ( (Object.hasOwn(KEYS, name) ? KEYS[name] : void 0)));
1352
1354
  return _nullishCoalesce(_optionalChain([handler, 'optionalCall', _40 => _40(field)]), () => ( null));
1353
1355
  }
@@ -1393,7 +1395,7 @@ function travel({ controller, blockId, area }, command) {
1393
1395
  const before = area.value;
1394
1396
  controller.run(command);
1395
1397
  const { selection } = controller.editor.state;
1396
- const edit2 = _chunkGTTPVJSDcjs.textDiff.call(void 0, before, area.value);
1398
+ const edit2 = _chunkP6KYXFZCcjs.textDiff.call(void 0, before, area.value);
1397
1399
  if (_optionalChain([selection, 'optionalAccess', _44 => _44.kind]) !== "node" || selection.block !== blockId) controller.focus();
1398
1400
  else if (edit2 !== null) area.setSelectionRange(edit2.from + edit2.insert.length, edit2.from + edit2.insert.length);
1399
1401
  return true;
@@ -1409,13 +1411,13 @@ function runCodeAction(action, context) {
1409
1411
  case "paragraph":
1410
1412
  return selectAndFocus(context, codeToParagraph(blockId));
1411
1413
  case "undo":
1412
- return travel(context, _chunkPZ4GT5JOcjs.undo);
1414
+ return travel(context, _chunkZKVOS57Qcjs.undo);
1413
1415
  case "redo":
1414
- return travel(context, _chunkPZ4GT5JOcjs.redo);
1416
+ return travel(context, _chunkZKVOS57Qcjs.redo);
1415
1417
  case "selectAll":
1416
- return selectAndFocus(context, _chunkPZ4GT5JOcjs.selectAll);
1418
+ return selectAndFocus(context, _chunkZKVOS57Qcjs.selectAll);
1417
1419
  case "escape":
1418
- return selectAndFocus(context, _chunkPZ4GT5JOcjs.setSelection.call(void 0, _chunkPZ4GT5JOcjs.blockRangeSelection.call(void 0, blockId)));
1420
+ return selectAndFocus(context, _chunkZKVOS57Qcjs.setSelection.call(void 0, _chunkZKVOS57Qcjs.blockRangeSelection.call(void 0, blockId)));
1419
1421
  case "controls":
1420
1422
  context.focusControls();
1421
1423
  return true;
@@ -1484,18 +1486,18 @@ function CodeEditor({ block, controller, field, focusControls }) {
1484
1486
  useTypeIntoCode(controller, blockId, field, edit2);
1485
1487
  const onKeyDown = (event) => {
1486
1488
  const area = event.currentTarget;
1487
- if (_chunkGTTPVJSDcjs.isComposingKey.call(void 0, controller, event.nativeEvent)) return;
1489
+ if (_chunkP6KYXFZCcjs.isComposingKey.call(void 0, controller, event.nativeEvent)) return;
1488
1490
  const action = codeKeyAction(event, fieldOf(area), controller.isMac);
1489
1491
  if (action !== null && runCodeAction(action, { controller, blockId, area, edit: edit2, focusControls })) event.preventDefault();
1490
1492
  };
1491
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ...{ [_chunkGTTPVJSDcjs.NATIVE_INTERACTION]: "" }, dir: "ltr", className: "quoin-code-scroll", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "quoin-code-lines", children: [
1493
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ...{ [_chunkP6KYXFZCcjs.NATIVE_INTERACTION]: "" }, dir: "ltr", className: "quoin-code-scroll", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "quoin-code-lines", children: [
1492
1494
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1493
1495
  HighlightOverlay,
1494
1496
  {
1495
1497
  "aria-hidden": "true",
1496
1498
  drawnRef: drawn,
1497
- code: _chunkND5XJVK2cjs.str.call(void 0, block.attrs.code),
1498
- language: _chunkND5XJVK2cjs.str.call(void 0, block.attrs.language)
1499
+ code: _chunk4SLJNZSMcjs.str.call(void 0, block.attrs.code),
1500
+ language: _chunk4SLJNZSMcjs.str.call(void 0, block.attrs.language)
1499
1501
  }
1500
1502
  ),
1501
1503
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { ref: mark, "aria-hidden": "true", className: "quoin-code-caret" }),
@@ -1505,7 +1507,7 @@ function CodeEditor({ block, controller, field, focusControls }) {
1505
1507
  ref: field,
1506
1508
  "aria-label": labels.codeText,
1507
1509
  "aria-keyshortcuts": "Alt+F10",
1508
- value: _chunkND5XJVK2cjs.str.call(void 0, block.attrs.code),
1510
+ value: _chunk4SLJNZSMcjs.str.call(void 0, block.attrs.code),
1509
1511
  wrap: "off",
1510
1512
  tabIndex: -1,
1511
1513
  spellCheck: false,
@@ -1570,7 +1572,7 @@ var Button = React3.forwardRef(function Button2({ className, variant = "default"
1570
1572
  var COPIED_FOR_MS = 1500;
1571
1573
  function CopyCodeButton({ code, controller }) {
1572
1574
  const labels = useLabels();
1573
- const readOnly = _chunkGTTPVJSDcjs.useReadOnly.call(void 0, controller);
1575
+ const readOnly = _chunkP6KYXFZCcjs.useReadOnly.call(void 0, controller);
1574
1576
  const [copied, setCopied] = _react.useState.call(void 0, false);
1575
1577
  _react.useEffect.call(void 0, () => {
1576
1578
  if (!copied) return;
@@ -1664,7 +1666,7 @@ var preventDefault = (event) => event.preventDefault();
1664
1666
 
1665
1667
  // src/blocks/text/set-block-attrs.ts
1666
1668
  function setBlockAttrs(controller, blockId, patch) {
1667
- if (!controller.readOnly) controller.run(_chunkGTTPVJSDcjs.onBlock.call(void 0, blockId, _chunkPZ4GT5JOcjs.setAttrs.call(void 0, patch)));
1669
+ if (!controller.readOnly) controller.run(_chunkP6KYXFZCcjs.onBlock.call(void 0, blockId, _chunkZKVOS57Qcjs.setAttrs.call(void 0, patch)));
1668
1670
  }
1669
1671
 
1670
1672
  // src/blocks/code/LanguageCombobox.tsx
@@ -1683,7 +1685,7 @@ function LanguageCombobox({ blockId, controller, language: language2, field, onD
1683
1685
  const options = draft === null ? [] : languageOptions(draft === shown ? "" : draft, labels.plainText);
1684
1686
  const open = options.length > 0;
1685
1687
  const optionId = (index) => `${listboxId}-${index}`;
1686
- _chunkGTTPVJSDcjs.useIsomorphicLayoutEffect.call(void 0, () => {
1688
+ _chunkP6KYXFZCcjs.useIsomorphicLayoutEffect.call(void 0, () => {
1687
1689
  _optionalChain([list, 'access', _48 => _48.current, 'optionalAccess', _49 => _49.querySelector, 'call', _50 => _50('[aria-selected="true"]'), 'optionalAccess', _51 => _51.scrollIntoView, 'call', _52 => _52({ block: "nearest" })]);
1688
1690
  }, [active]);
1689
1691
  const close = () => {
@@ -1709,7 +1711,7 @@ function LanguageCombobox({ blockId, controller, language: language2, field, onD
1709
1711
  onDone();
1710
1712
  };
1711
1713
  const onKeyDown = (event) => {
1712
- if (_chunkGTTPVJSDcjs.isComposingKey.call(void 0, controller, event.nativeEvent)) return;
1714
+ if (_chunkP6KYXFZCcjs.isComposingKey.call(void 0, controller, event.nativeEvent)) return;
1713
1715
  if (event.key === "ArrowDown" || event.key === "ArrowUp") {
1714
1716
  event.preventDefault();
1715
1717
  const step = event.key === "ArrowDown" ? 1 : -1;
@@ -1786,11 +1788,11 @@ function LanguageCombobox({ blockId, controller, language: language2, field, onD
1786
1788
 
1787
1789
  var CodeBlock = ({ block, controller }) => {
1788
1790
  const labels = useLabels();
1789
- const readOnly = _chunkGTTPVJSDcjs.useReadOnly.call(void 0, controller);
1791
+ const readOnly = _chunkP6KYXFZCcjs.useReadOnly.call(void 0, controller);
1790
1792
  const languageField = _react.useRef.call(void 0, null);
1791
1793
  const codeField = _react.useRef.call(void 0, null);
1792
- const code = _chunkND5XJVK2cjs.str.call(void 0, block.attrs.code);
1793
- const language2 = _chunkND5XJVK2cjs.str.call(void 0, block.attrs.language);
1794
+ const code = _chunk4SLJNZSMcjs.str.call(void 0, block.attrs.code);
1795
+ const language2 = _chunk4SLJNZSMcjs.str.call(void 0, block.attrs.language);
1794
1796
  const name = _nullishCoalesce(languageName(language2), () => ( language2));
1795
1797
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { role: "group", "aria-label": labels.blockNames.code, contentEditable: false, className: "quoin-code", children: [
1796
1798
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "quoin-code-header", children: [
@@ -1899,7 +1901,7 @@ function selectHandlers(controller, blockId, root, onSelect) {
1899
1901
  return {
1900
1902
  onKeyDown(event) {
1901
1903
  const key = event.nativeEvent;
1902
- if (_chunkGTTPVJSDcjs.isComposingKey.call(void 0, controller, key)) return;
1904
+ if (_chunkP6KYXFZCcjs.isComposingKey.call(void 0, controller, key)) return;
1903
1905
  if (event.key === "Escape") select();
1904
1906
  else if (!(event.metaKey || event.ctrlKey) || event.target.matches("input:not([type=file])") || !controller.edit(() => controller.editor.handleKey(key)))
1905
1907
  return;
@@ -2053,7 +2055,7 @@ var kindOf = (value) => _optionalChain([KINDS, 'access', _87 => _87.find, 'call'
2053
2055
  var fileIcon = (mime, filename) => _nullishCoalesce(_nullishCoalesce(kindOf(mime), () => ( kindOf(_nullishCoalesce(_optionalChain([/\.([^.]+)$/, 'access', _90 => _90.exec, 'call', _91 => _91(filename), 'optionalAccess', _92 => _92[1], 'access', _93 => _93.toLowerCase, 'call', _94 => _94()]), () => ( ""))))), () => ( _lucidereact.FileIcon));
2054
2056
 
2055
2057
  // src/blocks/file/file-source.ts
2056
- var fileName = (attrs) => _chunkND5XJVK2cjs.str.call(void 0, attrs.filename) || _chunkND5XJVK2cjs.str.call(void 0, attrs.storageKey);
2058
+ var fileName = (attrs) => _chunk4SLJNZSMcjs.str.call(void 0, attrs.filename) || _chunk4SLJNZSMcjs.str.call(void 0, attrs.storageKey);
2057
2059
  var hasFile = (attrs) => fileName(attrs) !== "";
2058
2060
 
2059
2061
  // src/blocks/file/FileCard.tsx
@@ -2063,9 +2065,9 @@ function FileCard({ block, controller, readOnly }) {
2063
2065
  const card = _react.useRef.call(void 0, null);
2064
2066
  const { id, attrs } = block;
2065
2067
  const name = fileName(attrs);
2066
- const size = _chunkND5XJVK2cjs.optionalNumber.call(void 0, attrs.size);
2067
- const href = assetHref(resolveAssetUrl, _chunkND5XJVK2cjs.str.call(void 0, attrs.storageKey));
2068
- const Icon = fileIcon(_chunkND5XJVK2cjs.str.call(void 0, attrs.mime), name);
2068
+ const size = _chunk4SLJNZSMcjs.optionalNumber.call(void 0, attrs.size);
2069
+ const href = assetHref(resolveAssetUrl, _chunk4SLJNZSMcjs.str.call(void 0, attrs.storageKey));
2070
+ const Icon = fileIcon(_chunk4SLJNZSMcjs.str.call(void 0, attrs.mime), name);
2069
2071
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref: card, className: "quoin-file-card", ...selectHandlers(controller, id, card), children: [
2070
2072
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Icon, { "aria-hidden": "true", className: "quoin-file-icon" }),
2071
2073
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "quoin-file-name", children: name }),
@@ -2074,7 +2076,7 @@ function FileCard({ block, controller, readOnly }) {
2074
2076
  "a",
2075
2077
  {
2076
2078
  href,
2077
- download: _chunkND5XJVK2cjs.str.call(void 0, attrs.filename),
2079
+ download: _chunk4SLJNZSMcjs.str.call(void 0, attrs.filename),
2078
2080
  target: "_blank",
2079
2081
  rel: "noopener",
2080
2082
  "aria-label": labels.downloadFile(name),
@@ -2100,14 +2102,14 @@ function claimUpload(controller, blockId) {
2100
2102
  }
2101
2103
  var isNewestUpload = (controller, blockId, token) => _optionalChain([newestUploads, 'access', _95 => _95.get, 'call', _96 => _96(controller), 'optionalAccess', _97 => _97.get, 'call', _98 => _98(blockId)]) === token;
2102
2104
  function assetOf(controller, blockId, type) {
2103
- const block = _chunkND5XJVK2cjs.blockById.call(void 0, controller.editor.state.doc, blockId);
2105
+ const block = _chunk4SLJNZSMcjs.blockById.call(void 0, controller.editor.state.doc, blockId);
2104
2106
  if (_optionalChain([block, 'optionalAccess', _99 => _99.type]) !== type || controller.readOnly) return null;
2105
- return { url: _chunkND5XJVK2cjs.str.call(void 0, block.attrs.url), storageKey: _chunkND5XJVK2cjs.str.call(void 0, block.attrs.storageKey) };
2107
+ return { url: _chunk4SLJNZSMcjs.str.call(void 0, block.attrs.url), storageKey: _chunk4SLJNZSMcjs.str.call(void 0, block.attrs.storageKey) };
2106
2108
  }
2107
2109
  var sameAsset = (a, b) => a !== null && b !== null && a.url === b.url && a.storageKey === b.storageKey;
2108
2110
  function writeAttrs(controller, blockId, patch, recorded) {
2109
2111
  const { editor } = controller;
2110
- const tr = editor.createTransaction().step(_chunkPZ4GT5JOcjs.setAttrsStep.call(void 0, blockId, patch));
2112
+ const tr = editor.createTransaction().step(_chunkZKVOS57Qcjs.setAttrsStep.call(void 0, blockId, patch));
2111
2113
  editor.dispatch(recorded ? tr : tr.setMeta("addToHistory", false));
2112
2114
  }
2113
2115
  async function uploadInto(controller, blockId, file, { type, category }, { upload, onLand }, land2) {
@@ -2141,7 +2143,7 @@ var uploadFile = (controller, blockId, file, host) => uploadInto(
2141
2143
  var anyFile = () => true;
2142
2144
  var FileBlock = ({ block, controller }) => {
2143
2145
  const labels = useLabels();
2144
- const readOnly = _chunkGTTPVJSDcjs.useReadOnly.call(void 0, controller);
2146
+ const readOnly = _chunkP6KYXFZCcjs.useReadOnly.call(void 0, controller);
2145
2147
  const root = _react.useRef.call(void 0, null);
2146
2148
  const filled = hasFile(block.attrs);
2147
2149
  useNodeKeys(controller, block.id, !readOnly, !filled, root);
@@ -2219,7 +2221,7 @@ var deleteItem = (blockId, title) => ({
2219
2221
  title,
2220
2222
  icon: _lucidereact.Trash,
2221
2223
  run: (controller) => {
2222
- runOnBlocks(controller, [blockId], _chunkPZ4GT5JOcjs.deleteBlocks);
2224
+ runOnBlocks(controller, [blockId], _chunkZKVOS57Qcjs.deleteBlocks);
2223
2225
  controller.focus();
2224
2226
  }
2225
2227
  });
@@ -2233,8 +2235,8 @@ function markItem(mark, title, icon) {
2233
2235
  id: mark,
2234
2236
  title,
2235
2237
  icon,
2236
- isActive: (state) => _chunkPZ4GT5JOcjs.isActive.call(void 0, state, mark),
2237
- run: (controller) => void controller.run(_chunkPZ4GT5JOcjs.toggleMark.call(void 0, mark))
2238
+ isActive: (state) => _chunkZKVOS57Qcjs.isActive.call(void 0, state, mark),
2239
+ run: (controller) => void controller.run(_chunkZKVOS57Qcjs.toggleMark.call(void 0, mark))
2238
2240
  };
2239
2241
  }
2240
2242
  var linkItem = (labels, openLink) => ({
@@ -2307,7 +2309,7 @@ function useRovingFocus() {
2307
2309
  },
2308
2310
  [syncTabStop]
2309
2311
  );
2310
- _chunkGTTPVJSDcjs.useIsomorphicLayoutEffect.call(void 0, syncTabStop);
2312
+ _chunkP6KYXFZCcjs.useIsomorphicLayoutEffect.call(void 0, syncTabStop);
2311
2313
  const onFocus = (event) => {
2312
2314
  if (!owns(event.target)) return;
2313
2315
  current.current = event.target;
@@ -2326,7 +2328,7 @@ function useRovingFocus() {
2326
2328
  // src/menus/floating/use-focus-key.ts
2327
2329
  var isFocusKey = (event) => event.key === "F10" && event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey;
2328
2330
  function useFocusKey(controller, focus) {
2329
- _chunkGTTPVJSDcjs.useIsomorphicLayoutEffect.call(void 0, () => {
2331
+ _chunkP6KYXFZCcjs.useIsomorphicLayoutEffect.call(void 0, () => {
2330
2332
  const intercept = (event) => {
2331
2333
  if (!isFocusKey(event)) return false;
2332
2334
  event.preventDefault();
@@ -2341,11 +2343,11 @@ function useFocusKey(controller, focus) {
2341
2343
 
2342
2344
  function NodeToolbar(props) {
2343
2345
  const { blockId, controller, label, anchor, items, next, buttonRefs, children, popover } = props;
2344
- const state = _chunkGTTPVJSDcjs.useEditorState.call(void 0, controller, _chunkGTTPVJSDcjs.wholeState);
2346
+ const state = _chunkP6KYXFZCcjs.useEditorState.call(void 0, controller, _chunkP6KYXFZCcjs.wholeState);
2345
2347
  const roving = useRovingFocus();
2346
2348
  useFocusKey(controller, roving.focusCurrent);
2347
2349
  const onKeyDown = (event) => {
2348
- if (!roving.owns(event.target) || _chunkGTTPVJSDcjs.isComposingKey.call(void 0, controller, event.nativeEvent)) return;
2350
+ if (!roving.owns(event.target) || _chunkP6KYXFZCcjs.isComposingKey.call(void 0, controller, event.nativeEvent)) return;
2349
2351
  const tab = event.key === "Tab" && !event.altKey && !event.ctrlKey && !event.metaKey;
2350
2352
  const ahead = tab && !event.shiftKey && next !== void 0 ? blockPart(controller, blockId, next) : void 0;
2351
2353
  if (ahead !== void 0) ahead.focus();
@@ -2425,12 +2427,12 @@ function useSelectionSettled(controller) {
2425
2427
 
2426
2428
  // src/blocks/void/use-toolbar-block.ts
2427
2429
  var selectedBlock = (type, filled) => ({ doc, selection }) => {
2428
- const block = _optionalChain([selection, 'optionalAccess', _129 => _129.kind]) === "node" ? _chunkND5XJVK2cjs.blockById.call(void 0, doc, selection.block) : void 0;
2430
+ const block = _optionalChain([selection, 'optionalAccess', _129 => _129.kind]) === "node" ? _chunk4SLJNZSMcjs.blockById.call(void 0, doc, selection.block) : void 0;
2429
2431
  return _optionalChain([block, 'optionalAccess', _130 => _130.type]) === type && filled(block.attrs) ? block.id : null;
2430
2432
  };
2431
2433
  function useToolbarBlock(controller, selected, keptFor = null) {
2432
- const blockId = _chunkGTTPVJSDcjs.useEditorState.call(void 0, controller, selected);
2433
- const readOnly = _chunkGTTPVJSDcjs.useReadOnly.call(void 0, controller);
2434
+ const blockId = _chunkP6KYXFZCcjs.useEditorState.call(void 0, controller, selected);
2435
+ const readOnly = _chunkP6KYXFZCcjs.useReadOnly.call(void 0, controller);
2434
2436
  const settled = useSelectionSettled(controller);
2435
2437
  return blockId !== null && !readOnly && (settled || keptFor === blockId) ? blockId : null;
2436
2438
  }
@@ -2516,7 +2518,7 @@ function ResizeHandles({ blockId, controller, frame, percent, centred, onPreview
2516
2518
  const value = _nullishCoalesce(percent, () => ( drawn));
2517
2519
  const write = (widthPercent) => setBlockAttrs(controller, blockId, { widthPercent });
2518
2520
  const onKeyDown = (event) => {
2519
- if (_chunkGTTPVJSDcjs.isComposingKey.call(void 0, controller, event.nativeEvent)) return;
2521
+ if (_chunkP6KYXFZCcjs.isComposingKey.call(void 0, controller, event.nativeEvent)) return;
2520
2522
  const next = keyedWidth(event.key, value);
2521
2523
  if (event.key === "Escape") controller.focus();
2522
2524
  else if (next === null) return;
@@ -2558,7 +2560,7 @@ function ResizeHandles({ blockId, controller, frame, percent, centred, onPreview
2558
2560
  "aria-valuetext": labels.widthValue(value),
2559
2561
  "data-side": side,
2560
2562
  className: "quoin-image-handle",
2561
- ...{ [_chunkGTTPVJSDcjs.NATIVE_INTERACTION]: "" },
2563
+ ...{ [_chunkP6KYXFZCcjs.NATIVE_INTERACTION]: "" },
2562
2564
  ...bubblePart(controller),
2563
2565
  onKeyDown,
2564
2566
  onPointerDown: onPointerDown(side),
@@ -2582,9 +2584,9 @@ function ImageFigure({ block, controller, readOnly }) {
2582
2584
  const [failed, setFailed] = _react.useState.call(void 0, null);
2583
2585
  const { id, attrs, regions } = block;
2584
2586
  const src = imageSource(attrs, resolveAssetUrl);
2585
- const alt = _chunkND5XJVK2cjs.str.call(void 0, attrs.alt);
2587
+ const alt = _chunk4SLJNZSMcjs.str.call(void 0, attrs.alt);
2586
2588
  const name = alt || labels.imageNoAlt;
2587
- const percent = _chunkND5XJVK2cjs.optionalNumber.call(void 0, attrs.widthPercent);
2589
+ const percent = _chunk4SLJNZSMcjs.optionalNumber.call(void 0, attrs.widthPercent);
2588
2590
  const width = _nullishCoalesce(preview, () => ( percent));
2589
2591
  const select = () => focusNode(controller, id);
2590
2592
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
@@ -2594,8 +2596,8 @@ function ImageFigure({ block, controller, readOnly }) {
2594
2596
  {
2595
2597
  src,
2596
2598
  alt: name,
2597
- width: _chunkND5XJVK2cjs.optionalNumber.call(void 0, attrs.width),
2598
- height: _chunkND5XJVK2cjs.optionalNumber.call(void 0, attrs.height),
2599
+ width: _chunk4SLJNZSMcjs.optionalNumber.call(void 0, attrs.width),
2600
+ height: _chunk4SLJNZSMcjs.optionalNumber.call(void 0, attrs.height),
2599
2601
  draggable: false,
2600
2602
  onError: () => setFailed(src),
2601
2603
  onClick: select
@@ -2617,7 +2619,7 @@ function ImageFigure({ block, controller, readOnly }) {
2617
2619
  )
2618
2620
  ] }),
2619
2621
  (!readOnly || (_nullishCoalesce(_optionalChain([regions, 'access', _140 => _140.caption, 'optionalAccess', _141 => _141.length]), () => ( 0))) > 0) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2620
- _chunkGTTPVJSDcjs.EditableRegion,
2622
+ _chunkP6KYXFZCcjs.EditableRegion,
2621
2623
  {
2622
2624
  block: id,
2623
2625
  region: "caption",
@@ -2643,8 +2645,8 @@ var WHITESPACE = /\s/;
2643
2645
  function linkAddress(typed2) {
2644
2646
  const address = typed2.trim();
2645
2647
  if (WHITESPACE.test(address)) return null;
2646
- const completed = !_chunkND5XJVK2cjs.SCHEME.test(address) && BARE_DOMAIN.test(address) ? `https://${address}` : address;
2647
- const href = _chunkND5XJVK2cjs.sanitizeHref.call(void 0, completed);
2648
+ const completed = !_chunk4SLJNZSMcjs.SCHEME.test(address) && BARE_DOMAIN.test(address) ? `https://${address}` : address;
2649
+ const href = _chunk4SLJNZSMcjs.sanitizeHref.call(void 0, completed);
2648
2650
  return href || null;
2649
2651
  }
2650
2652
 
@@ -2764,8 +2766,8 @@ function ImageUploadArea({ blockId, controller }) {
2764
2766
  // src/blocks/image/use-image-keys.ts
2765
2767
 
2766
2768
  function captionEnd(controller, blockId) {
2767
- const caption = _nullishCoalesce(_optionalChain([_chunkND5XJVK2cjs.blockById.call(void 0, controller.editor.state.doc, blockId), 'optionalAccess', _142 => _142.regions, 'access', _143 => _143.caption]), () => ( []));
2768
- return { block: blockId, region: "caption", offset: _chunkND5XJVK2cjs.inlineLength.call(void 0, caption) };
2769
+ const caption = _nullishCoalesce(_optionalChain([_chunk4SLJNZSMcjs.blockById.call(void 0, controller.editor.state.doc, blockId), 'optionalAccess', _142 => _142.regions, 'access', _143 => _143.caption]), () => ( []));
2770
+ return { block: blockId, region: "caption", offset: _chunk4SLJNZSMcjs.inlineLength.call(void 0, caption) };
2769
2771
  }
2770
2772
  var plainEnter = (event) => event.key === "Enter" && !event.shiftKey && !event.altKey && !event.ctrlKey && !event.metaKey;
2771
2773
  var menuOpenOn = (host) => _optionalChain([host, 'optionalAccess', _144 => _144.getAttribute, 'call', _145 => _145("aria-expanded")]) === "true";
@@ -2777,7 +2779,7 @@ function useImageKeys(controller, blockId, picture, editable, root) {
2777
2779
  // then follows.
2778
2780
  enter() {
2779
2781
  const { editor } = controller;
2780
- editor.dispatch(editor.createTransaction().setSelection(_chunkPZ4GT5JOcjs.textSelection.call(void 0, captionEnd(controller, blockId))));
2782
+ editor.dispatch(editor.createTransaction().setSelection(_chunkZKVOS57Qcjs.textSelection.call(void 0, captionEnd(controller, blockId))));
2781
2783
  controller.focus();
2782
2784
  },
2783
2785
  type(key) {
@@ -2805,7 +2807,7 @@ function useImageKeys(controller, blockId, picture, editable, root) {
2805
2807
 
2806
2808
  var ImageBlock = ({ block, controller }) => {
2807
2809
  const labels = useLabels();
2808
- const readOnly = _chunkGTTPVJSDcjs.useReadOnly.call(void 0, controller);
2810
+ const readOnly = _chunkP6KYXFZCcjs.useReadOnly.call(void 0, controller);
2809
2811
  const root = _react.useRef.call(void 0, null);
2810
2812
  const picture = hasPicture(block.attrs);
2811
2813
  useImageKeys(controller, block.id, picture, !readOnly, root);
@@ -2818,7 +2820,7 @@ var ImageBlock = ({ block, controller }) => {
2818
2820
  "aria-label": labels.blockNames.image,
2819
2821
  contentEditable: false,
2820
2822
  className: "quoin-image",
2821
- ...picture ? { [_chunkGTTPVJSDcjs.NODE_ENTRY]: "" } : void 0,
2823
+ ...picture ? { [_chunkP6KYXFZCcjs.NODE_ENTRY]: "" } : void 0,
2822
2824
  children: picture ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ImageFigure, { block, controller, readOnly }) : empty
2823
2825
  }
2824
2826
  );
@@ -2834,10 +2836,10 @@ var ImageBlock = ({ block, controller }) => {
2834
2836
 
2835
2837
  function useOutsidePress(element, ownerDocument, onPress) {
2836
2838
  const latest = _react.useRef.call(void 0, onPress);
2837
- _chunkGTTPVJSDcjs.useIsomorphicLayoutEffect.call(void 0, () => {
2839
+ _chunkP6KYXFZCcjs.useIsomorphicLayoutEffect.call(void 0, () => {
2838
2840
  latest.current = onPress;
2839
2841
  });
2840
- _chunkGTTPVJSDcjs.useIsomorphicLayoutEffect.call(void 0, () => {
2842
+ _chunkP6KYXFZCcjs.useIsomorphicLayoutEffect.call(void 0, () => {
2841
2843
  const doc = ownerDocument();
2842
2844
  const inside = (target) => _optionalChain([element, 'access', _147 => _147.current, 'optionalAccess', _148 => _148.contains, 'call', _149 => _149(target)]) === true;
2843
2845
  let touched = null;
@@ -2852,12 +2854,7 @@ function useOutsidePress(element, ownerDocument, onPress) {
2852
2854
  if (touched !== null && !inside(event.target)) latest.current(touched);
2853
2855
  touched = null;
2854
2856
  };
2855
- doc.addEventListener("pointerdown", down, true);
2856
- doc.addEventListener("click", click, true);
2857
- return () => {
2858
- doc.removeEventListener("pointerdown", down, true);
2859
- doc.removeEventListener("click", click, true);
2860
- };
2857
+ return _chunkP6KYXFZCcjs.listen.call(void 0, doc, { pointerdown: down, click }, true);
2861
2858
  }, [element, ownerDocument]);
2862
2859
  }
2863
2860
 
@@ -2865,9 +2862,9 @@ function useOutsidePress(element, ownerDocument, onPress) {
2865
2862
 
2866
2863
  function storeAlt(controller, blockId, opened, alt) {
2867
2864
  const { editor } = controller;
2868
- const current = _optionalChain([_chunkND5XJVK2cjs.blockById.call(void 0, editor.state.doc, blockId), 'optionalAccess', _150 => _150.attrs, 'access', _151 => _151.alt]);
2869
- if (controller.readOnly || controller.root === null || _chunkND5XJVK2cjs.str.call(void 0, current) !== opened) return;
2870
- _chunkGTTPVJSDcjs.onBlock.call(void 0, blockId, _chunkPZ4GT5JOcjs.setAttrs.call(void 0, { alt }))(editor.state, (tr) => editor.dispatch(tr));
2865
+ const current = _optionalChain([_chunk4SLJNZSMcjs.blockById.call(void 0, editor.state.doc, blockId), 'optionalAccess', _150 => _150.attrs, 'access', _151 => _151.alt]);
2866
+ if (controller.readOnly || controller.root === null || _chunk4SLJNZSMcjs.str.call(void 0, current) !== opened) return;
2867
+ _chunkP6KYXFZCcjs.onBlock.call(void 0, blockId, _chunkZKVOS57Qcjs.setAttrs.call(void 0, { alt }))(editor.state, (tr) => editor.dispatch(tr));
2871
2868
  }
2872
2869
  function AltTextPopover({ blockId, controller, anchor, opener, alt, onClose }) {
2873
2870
  const labels = useLabels();
@@ -2907,7 +2904,7 @@ function AltTextPopover({ blockId, controller, anchor, opener, alt, onClose }) {
2907
2904
  close(true);
2908
2905
  };
2909
2906
  const onKeyDown = (event) => {
2910
- if (event.key !== "Tab" || _chunkGTTPVJSDcjs.isComposingKey.call(void 0, controller, event.nativeEvent)) return;
2907
+ if (event.key !== "Tab" || _chunkP6KYXFZCcjs.isComposingKey.call(void 0, controller, event.nativeEvent)) return;
2911
2908
  const [field, save2] = event.currentTarget.elements;
2912
2909
  const fromField = event.target === field;
2913
2910
  event.preventDefault();
@@ -2935,7 +2932,7 @@ function AltTextPopover({ blockId, controller, anchor, opener, alt, onClose }) {
2935
2932
  onCloseAutoFocus: preventDefault,
2936
2933
  onEscapeKeyDown: (event) => {
2937
2934
  event.preventDefault();
2938
- if (!_chunkGTTPVJSDcjs.isComposingKey.call(void 0, controller, event)) close(false);
2935
+ if (!_chunkP6KYXFZCcjs.isComposingKey.call(void 0, controller, event)) close(false);
2939
2936
  },
2940
2937
  ...bubblePart(controller),
2941
2938
  children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { noValidate: true, className: "quoin-image-alt", onSubmit: save, onKeyDown, children: [
@@ -2973,7 +2970,7 @@ function imageToolbarItems(blockId, labels, actions) {
2973
2970
  id: align,
2974
2971
  title: labels[label],
2975
2972
  icon,
2976
- isActive: (state) => (_nullishCoalesce(_chunkND5XJVK2cjs.alignOrUndefined.call(void 0, _optionalChain([_chunkND5XJVK2cjs.blockById.call(void 0, state.doc, blockId), 'optionalAccess', _157 => _157.attrs, 'access', _158 => _158.align])), () => ( "left"))) === align,
2973
+ isActive: (state) => (_nullishCoalesce(_chunk4SLJNZSMcjs.alignOrUndefined.call(void 0, _optionalChain([_chunk4SLJNZSMcjs.blockById.call(void 0, state.doc, blockId), 'optionalAccess', _157 => _157.attrs, 'access', _158 => _158.align])), () => ( "left"))) === align,
2977
2974
  run: (controller) => setBlockAttrs(controller, blockId, { align })
2978
2975
  })
2979
2976
  );
@@ -3017,11 +3014,11 @@ function ImageToolbarOverlay({ controller }) {
3017
3014
  }
3018
3015
  function ImageToolbar({ blockId, controller, editingAlt, onEditAlt }) {
3019
3016
  const { labels, resolveAssetUrl } = useQuoin();
3020
- const state = _chunkGTTPVJSDcjs.useEditorState.call(void 0, controller, _chunkGTTPVJSDcjs.wholeState);
3017
+ const state = _chunkP6KYXFZCcjs.useEditorState.call(void 0, controller, _chunkP6KYXFZCcjs.wholeState);
3021
3018
  const picker = useReplacePicker(controller, blockId, uploadImage, "image/*");
3022
3019
  const altButton = _react.useRef.call(void 0, null);
3023
3020
  const anchor = usePartAnchor(controller, blockId, ".quoin-image-frame");
3024
- const attrs = _nullishCoalesce(_optionalChain([_chunkND5XJVK2cjs.blockById.call(void 0, state.doc, blockId), 'optionalAccess', _159 => _159.attrs]), () => ( {}));
3021
+ const attrs = _nullishCoalesce(_optionalChain([_chunk4SLJNZSMcjs.blockById.call(void 0, state.doc, blockId), 'optionalAccess', _159 => _159.attrs]), () => ( {}));
3025
3022
  const items = imageToolbarItems(blockId, labels, {
3026
3023
  replace: picker.open,
3027
3024
  editAlt: () => {
@@ -3047,7 +3044,7 @@ function ImageToolbar({ blockId, controller, editingAlt, onEditAlt }) {
3047
3044
  controller,
3048
3045
  anchor,
3049
3046
  opener: altButton,
3050
- alt: _chunkND5XJVK2cjs.str.call(void 0, attrs.alt),
3047
+ alt: _chunk4SLJNZSMcjs.str.call(void 0, attrs.alt),
3051
3048
  onClose: () => onEditAlt(null)
3052
3049
  }
3053
3050
  ),
@@ -3263,13 +3260,13 @@ function CalloutToneMenu({ blockId, controller, tone }) {
3263
3260
 
3264
3261
  var CalloutBlock = ({ block, controller }) => {
3265
3262
  const labels = useLabels();
3266
- const readOnly = _chunkGTTPVJSDcjs.useReadOnly.call(void 0, controller);
3263
+ const readOnly = _chunkP6KYXFZCcjs.useReadOnly.call(void 0, controller);
3267
3264
  const tone = calloutTone(block.attrs.tone);
3268
3265
  const icon = calloutIcon(block.attrs, tone);
3269
3266
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: cn("quoin-callout group/callout flex items-start gap-2", TONE[tone]), "data-tone": tone, children: [
3270
3267
  readOnly ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", className: "flex size-6 items-center justify-center text-base", children: icon }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CalloutIconMenu, { blockId: block.id, controller, icon }),
3271
3268
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3272
- _chunkGTTPVJSDcjs.EditableRegion,
3269
+ _chunkP6KYXFZCcjs.EditableRegion,
3273
3270
  {
3274
3271
  block: block.id,
3275
3272
  region: "body",
@@ -3339,13 +3336,6 @@ function ListMarker(props) {
3339
3336
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "quoin-marker", "aria-hidden": "true", children: text2 });
3340
3337
  }
3341
3338
 
3342
- // src/blocks/text/TaskCheckbox.tsx
3343
-
3344
- function TaskCheckbox2({ block, controller, labelledBy }) {
3345
- const labels = useLabels();
3346
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGTTPVJSDcjs.TaskCheckbox, { block, controller, label: labels.task, labelledBy });
3347
- }
3348
-
3349
3339
  // src/blocks/text/MarkdownBlock.tsx
3350
3340
 
3351
3341
  var REGION = "text";
@@ -3353,23 +3343,23 @@ var HEADING_LEVELS = ["mt-6 text-3xl", "mt-5 text-2xl", "mt-4 text-xl", "mt-3 te
3353
3343
  var headingStyles = (level) => `quoin-heading mb-1 font-semibold leading-tight in-[[data-quoin-block]:first-child]:mt-0 ${HEADING_LEVELS[level - 1]}`;
3354
3344
  function Heading({ block }) {
3355
3345
  const labels = useLabels();
3356
- const level = _chunkND5XJVK2cjs.headingLevel.call(void 0, block.attrs.level);
3357
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { role: "heading", "aria-level": level, className: headingStyles(level), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGTTPVJSDcjs.EditableRegion, { block: block.id, region: REGION, label: labels.heading(level) }) });
3346
+ const level = _chunk4SLJNZSMcjs.headingLevel.call(void 0, block.attrs.level);
3347
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { role: "heading", "aria-level": level, className: headingStyles(level), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkP6KYXFZCcjs.EditableRegion, { block: block.id, region: REGION, label: labels.heading(level) }) });
3358
3348
  }
3359
3349
  function NumberedItem({ block, controller }) {
3360
3350
  const labels = useLabels();
3361
- const number = _chunkGTTPVJSDcjs.useOrderedNumber.call(void 0, controller, block.id);
3351
+ const number = _chunkP6KYXFZCcjs.useOrderedNumber.call(void 0, controller, block.id);
3362
3352
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "quoin-list-item", "data-list": "ordered", children: [
3363
3353
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ListMarker, { list: "ordered", number, depth: block.indent }),
3364
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGTTPVJSDcjs.EditableRegion, { block: block.id, region: REGION, label: labels.numberedItem(number) })
3354
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkP6KYXFZCcjs.EditableRegion, { block: block.id, region: REGION, label: labels.numberedItem(number) })
3365
3355
  ] });
3366
3356
  }
3367
3357
  function TaskItem({ block, controller }) {
3368
3358
  const labels = useLabels();
3369
- const hostId = _chunkGTTPVJSDcjs.useRegionDomId.call(void 0, block.id, REGION);
3359
+ const hostId = _chunkP6KYXFZCcjs.useRegionDomId.call(void 0, block.id, REGION);
3370
3360
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "quoin-task", "data-checked": block.attrs.checked === true, children: [
3371
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TaskCheckbox2, { block, controller, labelledBy: hostId }),
3372
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGTTPVJSDcjs.EditableRegion, { id: hostId, block: block.id, region: REGION, label: labels.task })
3361
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkP6KYXFZCcjs.TaskCheckbox, { block, controller, label: labels.task, labelledBy: hostId }),
3362
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkP6KYXFZCcjs.EditableRegion, { id: hostId, block: block.id, region: REGION, label: labels.task })
3373
3363
  ] });
3374
3364
  }
3375
3365
  var MarkdownBlock = (props) => {
@@ -3381,16 +3371,16 @@ var MarkdownBlock = (props) => {
3381
3371
  case "bullet":
3382
3372
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "quoin-list-item", "data-list": "bullet", children: [
3383
3373
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ListMarker, { list: "bullet", depth: block.indent }),
3384
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGTTPVJSDcjs.EditableRegion, { block: block.id, region: REGION, label: labels.bulletItem })
3374
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkP6KYXFZCcjs.EditableRegion, { block: block.id, region: REGION, label: labels.bulletItem })
3385
3375
  ] });
3386
3376
  case "ordered":
3387
3377
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, NumberedItem, { ...props });
3388
3378
  case "task":
3389
3379
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TaskItem, { ...props });
3390
3380
  case "quote":
3391
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "quoin-quote", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGTTPVJSDcjs.EditableRegion, { block: block.id, region: REGION, label: labels.quote }) });
3381
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "quoin-quote", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkP6KYXFZCcjs.EditableRegion, { block: block.id, region: REGION, label: labels.quote }) });
3392
3382
  default:
3393
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGTTPVJSDcjs.EditableRegion, { block: block.id, region: REGION, label: labels.paragraph });
3383
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkP6KYXFZCcjs.EditableRegion, { block: block.id, region: REGION, label: labels.paragraph });
3394
3384
  }
3395
3385
  };
3396
3386
 
@@ -3398,22 +3388,22 @@ var MarkdownBlock = (props) => {
3398
3388
  function nestedBlockIds({ doc }, blockId) {
3399
3389
  const index = doc.index.get(blockId);
3400
3390
  if (index === void 0) return [];
3401
- return doc.blocks.slice(index + 1, _chunkPZ4GT5JOcjs.descendantsEnd.call(void 0, doc, index)).map((block) => block.id);
3391
+ return doc.blocks.slice(index + 1, _chunkZKVOS57Qcjs.descendantsEnd.call(void 0, doc, index)).map((block) => block.id);
3402
3392
  }
3403
3393
  function useNestedBlocks(controller, blockId) {
3404
- return _chunkGTTPVJSDcjs.useEditorState.call(void 0, controller, (state) => nestedBlockIds(state, blockId), _chunkND5XJVK2cjs.sameItems);
3394
+ return _chunkP6KYXFZCcjs.useEditorState.call(void 0, controller, (state) => nestedBlockIds(state, blockId), _chunk4SLJNZSMcjs.sameItems);
3405
3395
  }
3406
3396
 
3407
3397
  // src/blocks/text/ToggleBlock.tsx
3408
3398
 
3409
3399
  var ToggleBlock = ({ block, controller }) => {
3410
3400
  const labels = useLabels();
3411
- const domId = _chunkGTTPVJSDcjs.useBlockDomId.call(void 0, );
3401
+ const domId = _chunkP6KYXFZCcjs.useBlockDomId.call(void 0, );
3412
3402
  const nested = useNestedBlocks(controller, block.id);
3413
- const open = _chunkGTTPVJSDcjs.useToggleOpen.call(void 0, controller, block);
3403
+ const open = _chunkP6KYXFZCcjs.useToggleOpen.call(void 0, controller, block);
3414
3404
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "quoin-toggle", "data-open": open, children: [
3415
3405
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3416
- _chunkGTTPVJSDcjs.ToggleChevron,
3406
+ _chunkP6KYXFZCcjs.ToggleChevron,
3417
3407
  {
3418
3408
  block,
3419
3409
  controller,
@@ -3421,7 +3411,7 @@ var ToggleBlock = ({ block, controller }) => {
3421
3411
  controls: nested.length === 0 ? void 0 : nested.map(domId).join(" ")
3422
3412
  }
3423
3413
  ),
3424
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGTTPVJSDcjs.EditableRegion, { block: block.id, region: "text", label: labels.toggle })
3414
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkP6KYXFZCcjs.EditableRegion, { block: block.id, region: "text", label: labels.toggle })
3425
3415
  ] });
3426
3416
  };
3427
3417
 
@@ -3437,7 +3427,7 @@ var textRenderers = {
3437
3427
  var QUOIN_DEFINITIONS = new Map(coreBlocks.map((core) => [core.type, core]));
3438
3428
  var TYPED_IN_PLACE = ["MARKDOWN", "CALLOUT", "TOGGLE"];
3439
3429
  function hostDefines(definitions, type) {
3440
- const definition = _chunkOMOBMXD5cjs.blockByType.call(void 0, definitions, type);
3430
+ const definition = _chunkEH5KXQXYcjs.blockByType.call(void 0, definitions, type);
3441
3431
  const core = QUOIN_DEFINITIONS.get(type);
3442
3432
  if (definition === void 0) return false;
3443
3433
  return core === void 0 || definition.preview !== core.preview || definition.editor !== core.editor;
@@ -3448,10 +3438,10 @@ function drawnAsText(definitions, type, readOnly) {
3448
3438
  }
3449
3439
  var definedTypedInPlace = (definitions) => TYPED_IN_PLACE.filter((type) => hostDefines(definitions, type));
3450
3440
  function drawnInPlace(definitions, type) {
3451
- return Object.hasOwn(inPlaceRenderers, type) && _chunkOMOBMXD5cjs.blockByType.call(void 0, definitions, type) !== void 0 && !hostDefines(definitions, type);
3441
+ return Object.hasOwn(inPlaceRenderers, type) && _chunkEH5KXQXYcjs.blockByType.call(void 0, definitions, type) !== void 0 && !hostDefines(definitions, type);
3452
3442
  }
3453
- var drawsType = (definitions, type) => !Object.hasOwn(inPlaceRenderers, type) || _chunkOMOBMXD5cjs.blockByType.call(void 0, definitions, type) !== void 0;
3454
- var opensEditor = (definitions, type) => drawnInPlace(definitions, type) || !drawnAsText(definitions, type, false) && _optionalChain([_chunkOMOBMXD5cjs.blockByType.call(void 0, definitions, type), 'optionalAccess', _162 => _162.editor]) !== void 0;
3443
+ var drawsType = (definitions, type) => !Object.hasOwn(inPlaceRenderers, type) || _chunkEH5KXQXYcjs.blockByType.call(void 0, definitions, type) !== void 0;
3444
+ var opensEditor = (definitions, type) => drawnInPlace(definitions, type) || !drawnAsText(definitions, type, false) && _optionalChain([_chunkEH5KXQXYcjs.blockByType.call(void 0, definitions, type), 'optionalAccess', _162 => _162.editor]) !== void 0;
3455
3445
 
3456
3446
  // src/gutter/turn-into-targets.ts
3457
3447
 
@@ -3498,7 +3488,7 @@ function turnIntoTargets(labels) {
3498
3488
  function TurnIntoItems({ kit, controller, blockIds }) {
3499
3489
  const { blockTypes, labels } = useQuoin();
3500
3490
  const targets = turnIntoTargets(labels).filter((target) => drawsType(blockTypes, target.type));
3501
- return targets.map((target) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, kit.Item, { onSelect: () => runOnBlocks(controller, blockIds, _chunkPZ4GT5JOcjs.setBlockType.call(void 0, target.type, target.attrs)), children: [
3491
+ return targets.map((target) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, kit.Item, { onSelect: () => runOnBlocks(controller, blockIds, _chunkZKVOS57Qcjs.setBlockType.call(void 0, target.type, target.attrs)), children: [
3502
3492
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MenuIcon, { icon: target.icon }),
3503
3493
  target.label
3504
3494
  ] }, target.id));
@@ -3536,10 +3526,10 @@ function ActionItem({ kit, controller, action, blockIds }) {
3536
3526
  );
3537
3527
  }
3538
3528
  function BlockMenuItems({ kit, controller, blocks, styled, title, actions }) {
3539
- const state = _chunkGTTPVJSDcjs.useEditorState.call(void 0, controller, _chunkGTTPVJSDcjs.wholeState);
3529
+ const state = _chunkP6KYXFZCcjs.useEditorState.call(void 0, controller, _chunkP6KYXFZCcjs.wholeState);
3540
3530
  const blockIds = blocks.map((block) => block.id);
3541
3531
  const shown = actions.filter((action) => _nullishCoalesce(_optionalChain([action, 'access', _164 => _164.available, 'optionalCall', _165 => _165(state, blockIds)]), () => ( true)));
3542
- const anyText = styled.some((block) => _chunkPZ4GT5JOcjs.isTextFlow.call(void 0, state.schema, block));
3532
+ const anyText = styled.some((block) => _chunkZKVOS57Qcjs.isTextFlow.call(void 0, state.schema, block));
3543
3533
  const anyMarkdown = styled.some((block) => block.type === "MARKDOWN");
3544
3534
  const allCallouts = styled.length > 0 && styled.every((block) => block.type === "CALLOUT");
3545
3535
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
@@ -3584,7 +3574,7 @@ var CONTEXT_KIT = {
3584
3574
  // src/gutter/use-context-menu-opener.ts
3585
3575
 
3586
3576
  var GUTTER_BLOCK = "data-quoin-gutter-block";
3587
- var OWN_MENU = `[${_chunkGTTPVJSDcjs.NATIVE_INTERACTION}], input, textarea, select`;
3577
+ var OWN_MENU = `[${_chunkP6KYXFZCcjs.NATIVE_INTERACTION}], input, textarea, select`;
3588
3578
  function contextBlock(controller, target) {
3589
3579
  const { state } = controller.editor;
3590
3580
  const gutter = _optionalChain([target, 'access', _166 => _166.closest, 'call', _167 => _167(`[${GUTTER_BLOCK}]`), 'optionalAccess', _168 => _168.getAttribute, 'call', _169 => _169(GUTTER_BLOCK)]);
@@ -3593,8 +3583,8 @@ function contextBlock(controller, target) {
3593
3583
  if (_optionalChain([selection, 'optionalAccess', _170 => _170.kind]) === "blocks") return selection.head;
3594
3584
  if (target.closest(OWN_MENU) || controller.registry.locate(target) !== null) return null;
3595
3585
  const id = controller.blockAt(target);
3596
- const block = id === void 0 ? void 0 : _chunkND5XJVK2cjs.blockById.call(void 0, state.doc, id);
3597
- return block === void 0 || _chunkPZ4GT5JOcjs.isTextFlow.call(void 0, state.schema, block) ? null : block.id;
3586
+ const block = id === void 0 ? void 0 : _chunk4SLJNZSMcjs.blockById.call(void 0, state.doc, id);
3587
+ return block === void 0 || _chunkZKVOS57Qcjs.isTextFlow.call(void 0, state.schema, block) ? null : block.id;
3598
3588
  }
3599
3589
  function useContextMenuOpener(controller, store, trigger) {
3600
3590
  _react.useEffect.call(void 0, () => {
@@ -3613,12 +3603,7 @@ function useContextMenuOpener(controller, store, trigger) {
3613
3603
  openBlockMenuAt(store, controller.editor.state, block, clientX, clientY);
3614
3604
  hidden.dispatchEvent(new MouseEvent("contextmenu", { bubbles: true, cancelable: true, clientX, clientY }));
3615
3605
  };
3616
- root.addEventListener("mousedown", onMouseDown);
3617
- root.addEventListener("contextmenu", onContextMenu);
3618
- return () => {
3619
- root.removeEventListener("mousedown", onMouseDown);
3620
- root.removeEventListener("contextmenu", onContextMenu);
3621
- };
3606
+ return _chunkP6KYXFZCcjs.listen.call(void 0, root, { mousedown: onMouseDown, contextmenu: onContextMenu });
3622
3607
  }, [controller, store, trigger]);
3623
3608
  }
3624
3609
 
@@ -3647,7 +3632,7 @@ function blockTypeLabel(labels, block, definitions, extensionNames = {}) {
3647
3632
  if (block.type === "MARKDOWN" && kind === "heading") return labels.heading(typeof level === "number" ? level : 1);
3648
3633
  const name = block.type === "MARKDOWN" ? nameIn(KIND_NAMES, kind) : nameIn(TYPE_NAMES, block.type);
3649
3634
  if (name !== void 0) return labels.blockNames[name];
3650
- return _nullishCoalesce(_nullishCoalesce(nameIn(extensionNames, block.type), () => ( _optionalChain([_chunkOMOBMXD5cjs.blockByType.call(void 0, definitions, block.type), 'optionalAccess', _171 => _171.label]))), () => ( labels.unsupportedBlock));
3635
+ return _nullishCoalesce(_nullishCoalesce(nameIn(extensionNames, block.type), () => ( _optionalChain([_chunkEH5KXQXYcjs.blockByType.call(void 0, definitions, block.type), 'optionalAccess', _171 => _171.label]))), () => ( labels.unsupportedBlock));
3651
3636
  }
3652
3637
 
3653
3638
  // src/gutter/extension-block-names.ts
@@ -3657,10 +3642,10 @@ var ExtensionBlockNames = _react.createContext.call(void 0, {});
3657
3642
  // src/gutter/use-menu-blocks.ts
3658
3643
  function useLiveBlocks(controller, blockIds) {
3659
3644
  const select = _react.useCallback.call(void 0,
3660
- (state) => blockIds.flatMap((id) => _nullishCoalesce(_chunkND5XJVK2cjs.blockById.call(void 0, state.doc, id), () => ( []))),
3645
+ (state) => blockIds.flatMap((id) => _nullishCoalesce(_chunk4SLJNZSMcjs.blockById.call(void 0, state.doc, id), () => ( []))),
3661
3646
  [blockIds]
3662
3647
  );
3663
- return _chunkGTTPVJSDcjs.useEditorState.call(void 0, controller, select, _chunkND5XJVK2cjs.sameItems);
3648
+ return _chunkP6KYXFZCcjs.useEditorState.call(void 0, controller, select, _chunk4SLJNZSMcjs.sameItems);
3664
3649
  }
3665
3650
  function useMenuBlocks(controller, store, menu) {
3666
3651
  const labels = useLabels();
@@ -3716,12 +3701,12 @@ function BlockContextMenu({ controller, store, actions }) {
3716
3701
  // src/gutter/block-menu-keymap.ts
3717
3702
  function blockMenuKeymap(store) {
3718
3703
  const openForHead = (state, dispatch) => {
3719
- const head = _chunkPZ4GT5JOcjs.headBlockId.call(void 0, state.selection);
3704
+ const head = _chunkZKVOS57Qcjs.headBlockId.call(void 0, state.selection);
3720
3705
  if (head === null || !state.doc.index.has(head)) return false;
3721
3706
  if (dispatch) openBlockMenu(store, state, head);
3722
3707
  return true;
3723
3708
  };
3724
- return _chunkPZ4GT5JOcjs.defineExtension.call(void 0, { name: "block-menu", keymap: { "Mod-/": openForHead } });
3709
+ return _chunkZKVOS57Qcjs.defineExtension.call(void 0, { name: "block-menu", keymap: { "Mod-/": openForHead } });
3725
3710
  }
3726
3711
 
3727
3712
  // src/gutter/Gutter.tsx
@@ -3801,7 +3786,7 @@ var DragOverlay = _react.forwardRef.call(void 0, function DragOverlay2(_props, r
3801
3786
  var DELETION_STEPS = /* @__PURE__ */ new Set(["removeBlocks", "setIndent"]);
3802
3787
  function drawnPosition(doc, blockId) {
3803
3788
  const index = _nullishCoalesce(doc.index.get(blockId), () => ( 0));
3804
- return [_chunkGTTPVJSDcjs.drawnBlockCount.call(void 0, doc, 0, index) + 1, _chunkGTTPVJSDcjs.drawnBlockCount.call(void 0, doc)];
3789
+ return [_chunkP6KYXFZCcjs.drawnBlockCount.call(void 0, doc, 0, index) + 1, _chunkP6KYXFZCcjs.drawnBlockCount.call(void 0, doc)];
3805
3790
  }
3806
3791
  function blockMovedMessage(doc, blockId, labels) {
3807
3792
  return labels.blockMoved(...drawnPosition(doc, blockId));
@@ -3817,11 +3802,11 @@ function deletedCount(tr) {
3817
3802
  return tr.steps.reduce((deleted, step, i) => {
3818
3803
  const { index, count } = step.toJSON();
3819
3804
  if (step.stepType !== "removeBlocks" || typeof index !== "number" || typeof count !== "number") return deleted;
3820
- return deleted + _chunkGTTPVJSDcjs.drawnBlockCount.call(void 0, tr.docs[i], index, index + count);
3805
+ return deleted + _chunkP6KYXFZCcjs.drawnBlockCount.call(void 0, tr.docs[i], index, index + count);
3821
3806
  }, 0);
3822
3807
  }
3823
3808
  function insertedBlock(tr) {
3824
- if (tr.getMeta(_chunkPZ4GT5JOcjs.LINE_SPLIT) === true || tr.steps.some((step) => step.stepType === "removeBlocks")) return null;
3809
+ if (tr.getMeta(_chunkZKVOS57Qcjs.LINE_SPLIT) === true || tr.steps.some((step) => step.stepType === "removeBlocks")) return null;
3825
3810
  const inserted = tr.steps.flatMap((step) => {
3826
3811
  const { blocks } = step.toJSON();
3827
3812
  return step.stepType === "insertBlocks" && Array.isArray(blocks) ? blocks : [];
@@ -3829,7 +3814,7 @@ function insertedBlock(tr) {
3829
3814
  return _nullishCoalesce(_optionalChain([inserted, 'access', _181 => _181.find, 'call', _182 => _182((block) => tr.doc.index.has(block.id)), 'optionalAccess', _183 => _183.id]), () => ( null));
3830
3815
  }
3831
3816
  function structureAnnouncement(tr, labels, undoKeys) {
3832
- if (tr.origin !== "command" || tr.getMeta(_chunkPZ4GT5JOcjs.LINE_JOIN) === true) return null;
3817
+ if (tr.origin !== "command" || tr.getMeta(_chunkZKVOS57Qcjs.LINE_JOIN) === true) return null;
3833
3818
  const moved = movedBlock(tr);
3834
3819
  if (moved !== null) return blockMovedMessage(tr.doc, moved, labels);
3835
3820
  const deleted = deletedCount(tr);
@@ -3859,7 +3844,7 @@ function inlineEdges(shell, box, rtl) {
3859
3844
  function measure(controller, root, moved, rtl) {
3860
3845
  const { doc } = controller.editor.state;
3861
3846
  const origin = rootOrigin(root);
3862
- return _chunkGTTPVJSDcjs.visibleBlockIndexes.call(void 0, doc).flatMap((index) => {
3847
+ return _chunkP6KYXFZCcjs.visibleBlockIndexes.call(void 0, doc).flatMap((index) => {
3863
3848
  const { id, indent: indent3 } = doc.blocks[index];
3864
3849
  const shell = controller.blockElement(id);
3865
3850
  if (shell === void 0) return [];
@@ -3874,7 +3859,7 @@ function measureDrag(controller, root, ids) {
3874
3859
  const { doc } = controller.editor.state;
3875
3860
  const direction = inlineDirection(root);
3876
3861
  const rtl = direction === "rtl";
3877
- const moved = new Set(_chunkPZ4GT5JOcjs.movedBlockIds.call(void 0, doc, ids));
3862
+ const moved = new Set(_chunkZKVOS57Qcjs.movedBlockIds.call(void 0, doc, ids));
3878
3863
  const blocks = measure(controller, root, moved, rtl);
3879
3864
  const dragged = blocks.filter((block) => block.dragged);
3880
3865
  if (dragged.length === 0) return null;
@@ -3934,7 +3919,7 @@ function draggedBlocks(controller, blockId) {
3934
3919
  function followPress(press, root, view) {
3935
3920
  const { controller, store, overlay, handle: handle2, pointerId } = press;
3936
3921
  const doc = view.document;
3937
- const scroll = _chunkGTTPVJSDcjs.createAutoScroll.call(void 0, root, follow, SCROLL_EDGE);
3922
+ const scroll = _chunkP6KYXFZCcjs.createAutoScroll.call(void 0, root, follow, SCROLL_EDGE);
3938
3923
  let pointer = { x: press.x, y: press.y };
3939
3924
  let active = null;
3940
3925
  let unsubscribe = () => {
@@ -3971,11 +3956,9 @@ function followPress(press, root, view) {
3971
3956
  function finish() {
3972
3957
  if (done) return;
3973
3958
  done = true;
3974
- doc.removeEventListener("pointermove", onPointerMove);
3975
- doc.removeEventListener("pointerup", onPointerUp);
3976
- doc.removeEventListener("pointercancel", finish);
3977
- view.removeEventListener("blur", finish);
3978
- view.removeEventListener("keydown", onKeyDown, true);
3959
+ unlistenDocument();
3960
+ unlistenBlur();
3961
+ unlistenKeys();
3979
3962
  scroll.stop();
3980
3963
  unsubscribe();
3981
3964
  if (active === null) return;
@@ -3989,7 +3972,7 @@ function followPress(press, root, view) {
3989
3972
  finish();
3990
3973
  if (dropped === null || dropped.target === null || controller.readOnly) return;
3991
3974
  const { ids, layout, target } = dropped;
3992
- if (!controller.run(_chunkPZ4GT5JOcjs.moveBlocksTo.call(void 0, ids, layout.toIndex(target.index), target.indent))) return;
3975
+ if (!controller.run(_chunkZKVOS57Qcjs.moveBlocksTo.call(void 0, ids, layout.toIndex(target.index), target.indent))) return;
3993
3976
  controller.focus();
3994
3977
  press.onMoved(ids[0]);
3995
3978
  }
@@ -4011,11 +3994,9 @@ function followPress(press, root, view) {
4011
3994
  event.stopPropagation();
4012
3995
  finish();
4013
3996
  }
4014
- doc.addEventListener("pointermove", onPointerMove);
4015
- doc.addEventListener("pointerup", onPointerUp);
4016
- doc.addEventListener("pointercancel", finish);
4017
- view.addEventListener("blur", finish);
4018
- view.addEventListener("keydown", onKeyDown, true);
3997
+ const unlistenDocument = _chunkP6KYXFZCcjs.listen.call(void 0, doc, { pointermove: onPointerMove, pointerup: onPointerUp, pointercancel: finish });
3998
+ const unlistenBlur = _chunkP6KYXFZCcjs.listen.call(void 0, view, { blur: finish });
3999
+ const unlistenKeys = _chunkP6KYXFZCcjs.listen.call(void 0, view, { keydown: onKeyDown }, true);
4019
4000
  return finish;
4020
4001
  }
4021
4002
  function pressDragHandle(press) {
@@ -4067,12 +4048,12 @@ function useBlockDrag(controller, store, blockId, overlay) {
4067
4048
  function addBlockBelow(controller, blockId) {
4068
4049
  const { state } = controller.editor;
4069
4050
  const { doc, schema } = state;
4070
- const block = _chunkND5XJVK2cjs.blockById.call(void 0, doc, blockId);
4051
+ const block = _chunk4SLJNZSMcjs.blockById.call(void 0, doc, blockId);
4071
4052
  if (block === void 0) return false;
4072
- const empty = _chunkPZ4GT5JOcjs.isParagraph.call(void 0, block) && _chunkPZ4GT5JOcjs.regionLength.call(void 0, block, _nullishCoalesce(_chunkPZ4GT5JOcjs.primaryRegion.call(void 0, schema, block), () => ( ""))) === 0;
4073
- const fill = empty ? _chunkPZ4GT5JOcjs.setSelection.call(void 0, _chunkPZ4GT5JOcjs.startOf.call(void 0, doc, schema, blockId)) : _chunkPZ4GT5JOcjs.insertBlockAfter.call(void 0, "MARKDOWN", { kind: "paragraph" });
4074
- const slash = _chunkPZ4GT5JOcjs.insertText.call(void 0, "/", { origin: "command" });
4075
- const { ok, tr } = _chunkPZ4GT5JOcjs.runCommands.call(void 0, state, [_chunkPZ4GT5JOcjs.setSelection.call(void 0, _chunkPZ4GT5JOcjs.blockRangeSelection.call(void 0, blockId)), fill, slash]);
4053
+ const empty = _chunkZKVOS57Qcjs.isParagraph.call(void 0, block) && _chunkZKVOS57Qcjs.regionLength.call(void 0, block, _nullishCoalesce(_chunkZKVOS57Qcjs.primaryRegion.call(void 0, schema, block), () => ( ""))) === 0;
4054
+ const fill = empty ? _chunkZKVOS57Qcjs.setSelection.call(void 0, _chunkZKVOS57Qcjs.startOf.call(void 0, doc, schema, blockId)) : _chunkZKVOS57Qcjs.insertBlockAfter.call(void 0, "MARKDOWN", { kind: "paragraph" });
4055
+ const slash = _chunkZKVOS57Qcjs.insertText.call(void 0, "/", { origin: "command" });
4056
+ const { ok, tr } = _chunkZKVOS57Qcjs.runCommands.call(void 0, state, [_chunkZKVOS57Qcjs.setSelection.call(void 0, _chunkZKVOS57Qcjs.blockRangeSelection.call(void 0, blockId)), fill, slash]);
4076
4057
  if (ok && tr !== null) controller.dispatch(tr);
4077
4058
  controller.focus();
4078
4059
  return ok;
@@ -4153,7 +4134,7 @@ function place2(controller, root, gutter, block) {
4153
4134
  gutter.style.visibility = "";
4154
4135
  }
4155
4136
  function useGutterPosition(controller, gutter, block) {
4156
- _chunkGTTPVJSDcjs.useIsomorphicLayoutEffect.call(void 0, () => {
4137
+ _chunkP6KYXFZCcjs.useIsomorphicLayoutEffect.call(void 0, () => {
4157
4138
  const element = gutter.current;
4158
4139
  const root = controller.root;
4159
4140
  const view = _optionalChain([root, 'optionalAccess', _193 => _193.ownerDocument, 'access', _194 => _194.defaultView]);
@@ -4180,7 +4161,7 @@ function useGutterPosition(controller, gutter, block) {
4180
4161
 
4181
4162
  // src/gutter/use-gutter-target.ts
4182
4163
 
4183
- var headOf = (state) => _chunkPZ4GT5JOcjs.headBlockId.call(void 0, state.selection);
4164
+ var headOf = (state) => _chunkZKVOS57Qcjs.headBlockId.call(void 0, state.selection);
4184
4165
  function blockAcross(controller, root, y) {
4185
4166
  const box = root.getBoundingClientRect();
4186
4167
  const probe = _optionalChain([root, 'access', _195 => _195.ownerDocument, 'access', _196 => _196.elementFromPoint, 'optionalCall', _197 => _197(box.left + box.width / 2, y)]);
@@ -4188,7 +4169,7 @@ function blockAcross(controller, root, y) {
4188
4169
  }
4189
4170
  function useGutterTarget(controller, store, gutter) {
4190
4171
  const hovered = useCanvasUi(store, (state) => state.hoveredBlock);
4191
- const head = _chunkGTTPVJSDcjs.useEditorState.call(void 0, controller, headOf);
4172
+ const head = _chunkP6KYXFZCcjs.useEditorState.call(void 0, controller, headOf);
4192
4173
  const [focusWithin, setFocusWithin] = _react.useState.call(void 0, false);
4193
4174
  _react.useEffect.call(void 0, () => {
4194
4175
  const root = controller.root;
@@ -4206,16 +4187,7 @@ function useGutterTarget(controller, store, gutter) {
4206
4187
  const onFocusIn = () => setFocusWithin(true);
4207
4188
  const onFocusOut = (event) => setFocusWithin(root.contains(event.relatedTarget));
4208
4189
  setFocusWithin(root.contains(root.ownerDocument.activeElement));
4209
- root.addEventListener("pointermove", onPointerMove);
4210
- root.addEventListener("pointerleave", onPointerLeave);
4211
- root.addEventListener("focusin", onFocusIn);
4212
- root.addEventListener("focusout", onFocusOut);
4213
- return () => {
4214
- root.removeEventListener("pointermove", onPointerMove);
4215
- root.removeEventListener("pointerleave", onPointerLeave);
4216
- root.removeEventListener("focusin", onFocusIn);
4217
- root.removeEventListener("focusout", onFocusOut);
4218
- };
4190
+ return _chunkP6KYXFZCcjs.listen.call(void 0, root, { pointermove: onPointerMove, pointerleave: onPointerLeave, focusin: onFocusIn, focusout: onFocusOut });
4219
4191
  }, [controller, store, gutter]);
4220
4192
  const fallback = focusWithin ? head : null;
4221
4193
  const target = _nullishCoalesce(hovered, () => ( fallback));
@@ -4324,7 +4296,7 @@ function pointInHost(host, { node, offset }) {
4324
4296
  return host.contains(node) ? { node, offset: Math.min(offset, nodeLength(node)) } : null;
4325
4297
  }
4326
4298
  function textRect(host, { from, to }) {
4327
- const map = _chunkGTTPVJSDcjs.domMapOf.call(void 0, host);
4299
+ const map = _chunkP6KYXFZCcjs.domMapOf.call(void 0, host);
4328
4300
  const range = host.ownerDocument.createRange();
4329
4301
  if (map === void 0 || typeof range.getBoundingClientRect !== "function") return null;
4330
4302
  const start = pointInHost(host, map.toDom(from, 1));
@@ -4337,7 +4309,7 @@ function textRect(host, { from, to }) {
4337
4309
  }
4338
4310
  function rangeRect(controller, range) {
4339
4311
  const host = controller.registry.get(range.block, range.region);
4340
- if (host === void 0 || !host.isConnected || controller.composingKey === _chunkGTTPVJSDcjs.hostKey.call(void 0, range.block, range.region)) {
4312
+ if (host === void 0 || !host.isConnected || controller.composingKey === _chunkP6KYXFZCcjs.hostKey.call(void 0, range.block, range.region)) {
4341
4313
  return null;
4342
4314
  }
4343
4315
  const rect = textRect(host, range);
@@ -4353,7 +4325,7 @@ function union(a, b) {
4353
4325
  function selectionRect(controller) {
4354
4326
  const { state } = controller.editor;
4355
4327
  if (_optionalChain([state, 'access', _205 => _205.selection, 'optionalAccess', _206 => _206.kind]) !== "text") return null;
4356
- const ranges = _chunkPZ4GT5JOcjs.markRanges.call(void 0, state);
4328
+ const ranges = _chunkZKVOS57Qcjs.markRanges.call(void 0, state);
4357
4329
  if (ranges.length === 0) return null;
4358
4330
  const first = rangeRect(controller, ranges[0]);
4359
4331
  if (ranges.length === 1) return first;
@@ -4364,7 +4336,7 @@ function selectionRect(controller) {
4364
4336
  // src/menus/floating/use-selection-anchor.ts
4365
4337
  var ROOM_ABOVE = 56;
4366
4338
  function selectionHost(controller) {
4367
- const [first] = _chunkPZ4GT5JOcjs.markRanges.call(void 0, controller.editor.state);
4339
+ const [first] = _chunkZKVOS57Qcjs.markRanges.call(void 0, controller.editor.state);
4368
4340
  return _nullishCoalesce(_nullishCoalesce((first && controller.registry.get(first.block, first.region)), () => ( controller.root)), () => ( void 0));
4369
4341
  }
4370
4342
  function useSelectionAnchor(controller, state) {
@@ -4378,7 +4350,7 @@ function useSelectionAnchor(controller, state) {
4378
4350
  [controller, state]
4379
4351
  );
4380
4352
  const [side, setSide] = _react.useState.call(void 0, "top");
4381
- _chunkGTTPVJSDcjs.useIsomorphicLayoutEffect.call(void 0, () => {
4353
+ _chunkP6KYXFZCcjs.useIsomorphicLayoutEffect.call(void 0, () => {
4382
4354
  const rect = selectionRect(controller);
4383
4355
  if (rect) setSide(rect.top < ROOM_ABOVE ? "bottom" : "top");
4384
4356
  }, [controller, state]);
@@ -4423,9 +4395,9 @@ var ICONS = { left: _lucidereact.AlignLeft, center: _lucidereact.AlignCenter, ri
4423
4395
  var ALIGNS2 = Object.keys(ICONS);
4424
4396
  var LABEL_KEYS = { left: "alignLeft", center: "alignCenter", right: "alignRight", justify: "alignJustify" };
4425
4397
  function sharedAlign(state) {
4426
- const blocks = _chunkPZ4GT5JOcjs.selectedBlockIds.call(void 0, state.doc, state.selection).map((id) => _chunkND5XJVK2cjs.blockById.call(void 0, state.doc, id)).filter((block) => _optionalChain([block, 'optionalAccess', _207 => _207.type]) === "MARKDOWN");
4398
+ const blocks = _chunkZKVOS57Qcjs.selectedBlockIds.call(void 0, state.doc, state.selection).map((id) => _chunk4SLJNZSMcjs.blockById.call(void 0, state.doc, id)).filter((block) => _optionalChain([block, 'optionalAccess', _207 => _207.type]) === "MARKDOWN");
4427
4399
  if (blocks.length === 0) return null;
4428
- const aligns = new Set(blocks.map((block) => _nullishCoalesce(_chunkND5XJVK2cjs.alignOrUndefined.call(void 0, _optionalChain([block, 'optionalAccess', _208 => _208.attrs, 'access', _209 => _209.align])), () => ( "left"))));
4400
+ const aligns = new Set(blocks.map((block) => _nullishCoalesce(_chunk4SLJNZSMcjs.alignOrUndefined.call(void 0, _optionalChain([block, 'optionalAccess', _208 => _208.attrs, 'access', _209 => _209.align])), () => ( "left"))));
4429
4401
  return aligns.size === 1 ? [...aligns][0] : "";
4430
4402
  }
4431
4403
  function AlignDropdown({ controller, state }) {
@@ -4434,7 +4406,7 @@ function AlignDropdown({ controller, state }) {
4434
4406
  if (value === null) return null;
4435
4407
  const Icon = value === "" ? _lucidereact.AlignLeft : ICONS[value];
4436
4408
  const trigger = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Button, { type: "button", variant: "ghost", size: "icon-sm", "aria-label": labels.align, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Icon, {}) });
4437
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ToolbarMenu, { controller, trigger, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DropdownMenuRadioGroup, { value, onValueChange: (align) => controller.run(_chunkPZ4GT5JOcjs.setTextAlign.call(void 0, align)), children: ALIGNS2.map((align) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, DropdownMenuRadioItem, { value: align, indicator: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.CheckIcon, { className: "size-4" }), children: [
4409
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ToolbarMenu, { controller, trigger, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DropdownMenuRadioGroup, { value, onValueChange: (align) => controller.run(_chunkZKVOS57Qcjs.setTextAlign.call(void 0, align)), children: ALIGNS2.map((align) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, DropdownMenuRadioItem, { value: align, indicator: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.CheckIcon, { className: "size-4" }), children: [
4438
4410
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MenuIcon, { icon: ICONS[align] }),
4439
4411
  labels[LABEL_KEYS[align]]
4440
4412
  ] }, align)) }) });
@@ -4446,8 +4418,8 @@ function AlignDropdown({ controller, state }) {
4446
4418
  var MARKS = { color: "color", background: "highlight" };
4447
4419
  function selectionColor(state, mark) {
4448
4420
  const names = /* @__PURE__ */ new Set();
4449
- for (const range of _chunkPZ4GT5JOcjs.markRanges.call(void 0, state)) {
4450
- for (const node of _chunkPZ4GT5JOcjs.rangeContent.call(void 0, state, range)) {
4421
+ for (const range of _chunkZKVOS57Qcjs.markRanges.call(void 0, state)) {
4422
+ for (const node of _chunkZKVOS57Qcjs.rangeContent.call(void 0, state, range)) {
4451
4423
  const found = node.marks.find((candidate) => candidate.type === mark);
4452
4424
  names.add(found === void 0 ? "default" : _optionalChain([found, 'access', _210 => _210.attrs, 'optionalAccess', _211 => _211.color]));
4453
4425
  }
@@ -4456,7 +4428,7 @@ function selectionColor(state, mark) {
4456
4428
  return names.size === 1 && typeof only === "string" ? only : "";
4457
4429
  }
4458
4430
  function colorCommand(key, name) {
4459
- return name === "default" ? _chunkPZ4GT5JOcjs.unsetMark.call(void 0, MARKS[key]) : _chunkPZ4GT5JOcjs.setMark.call(void 0, MARKS[key], { color: name });
4431
+ return name === "default" ? _chunkZKVOS57Qcjs.unsetMark.call(void 0, MARKS[key]) : _chunkZKVOS57Qcjs.setMark.call(void 0, MARKS[key], { color: name });
4460
4432
  }
4461
4433
  function ColorPopover({ controller, state }) {
4462
4434
  const labels = useLabels();
@@ -4474,14 +4446,14 @@ function TurnIntoDropdown({ controller, state }) {
4474
4446
  labels.turnInto,
4475
4447
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronDown, {})
4476
4448
  ] });
4477
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ToolbarMenu, { controller, trigger, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TurnIntoItems, { kit: DROPDOWN_KIT, controller, blockIds: _chunkPZ4GT5JOcjs.selectedBlockIds.call(void 0, state.doc, state.selection) }) });
4449
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ToolbarMenu, { controller, trigger, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TurnIntoItems, { kit: DROPDOWN_KIT, controller, blockIds: _chunkZKVOS57Qcjs.selectedBlockIds.call(void 0, state.doc, state.selection) }) });
4478
4450
  }
4479
4451
 
4480
4452
  // src/menus/bubble/BubbleToolbar.tsx
4481
4453
 
4482
4454
  var DIVIDER = "mx-0.5 h-5 w-px shrink-0 bg-border";
4483
4455
  function BubbleToolbar({ controller, labels, store, extraItems }) {
4484
- const state = _chunkGTTPVJSDcjs.useEditorState.call(void 0, controller, _chunkGTTPVJSDcjs.wholeState);
4456
+ const state = _chunkP6KYXFZCcjs.useEditorState.call(void 0, controller, _chunkP6KYXFZCcjs.wholeState);
4485
4457
  const { anchor, side } = useSelectionAnchor(controller, state);
4486
4458
  const roving = useRovingFocus();
4487
4459
  const items = _react.useMemo.call(void 0, () => bubbleItems(labels, () => store.set({ linkPopover: { open: true } })), [labels, store]);
@@ -4546,10 +4518,10 @@ function useMediaQuery(query, unsupported) {
4546
4518
  var useFinePointer = () => useMediaQuery("(pointer: fine)", true);
4547
4519
 
4548
4520
  // src/menus/bubble/use-bubble-visibility.ts
4549
- var hasTextRange = (state) => _optionalChain([state, 'access', _218 => _218.selection, 'optionalAccess', _219 => _219.kind]) === "text" && !_chunkPZ4GT5JOcjs.isCollapsed.call(void 0, state.selection) && _chunkPZ4GT5JOcjs.markRanges.call(void 0, state).length > 0;
4521
+ var hasTextRange = (state) => _optionalChain([state, 'access', _218 => _218.selection, 'optionalAccess', _219 => _219.kind]) === "text" && !_chunkZKVOS57Qcjs.isCollapsed.call(void 0, state.selection) && _chunkZKVOS57Qcjs.markRanges.call(void 0, state).length > 0;
4550
4522
  function useBubbleVisibility(controller) {
4551
- const range = _chunkGTTPVJSDcjs.useEditorState.call(void 0, controller, hasTextRange);
4552
- const readOnly = _chunkGTTPVJSDcjs.useReadOnly.call(void 0, controller);
4523
+ const range = _chunkP6KYXFZCcjs.useEditorState.call(void 0, controller, hasTextRange);
4524
+ const readOnly = _chunkP6KYXFZCcjs.useReadOnly.call(void 0, controller);
4553
4525
  const fine = useFinePointer();
4554
4526
  const settled = useSelectionSettled(controller);
4555
4527
  return range && !readOnly && fine && settled;
@@ -4569,7 +4541,7 @@ function BubbleOverlay({ controller }) {
4569
4541
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BubbleToolbar, { controller, labels, store, extraItems });
4570
4542
  }
4571
4543
  function bubbleExtension() {
4572
- return _chunkPZ4GT5JOcjs.defineExtension.call(void 0, { name: "bubble", ui: { overlays: [BubbleOverlay] } });
4544
+ return _chunkZKVOS57Qcjs.defineExtension.call(void 0, { name: "bubble", ui: { overlays: [BubbleOverlay] } });
4573
4545
  }
4574
4546
 
4575
4547
  // src/menus/link/link-extension.tsx
@@ -4582,10 +4554,10 @@ function bubbleExtension() {
4582
4554
  // src/menus/link/link-at-selection.ts
4583
4555
  function linkAround(state, from, to = from) {
4584
4556
  if (from.block !== to.block || from.region !== to.region) return null;
4585
- const inline = _nullishCoalesce(_chunkGTTPVJSDcjs.regionInline.call(void 0, state, from.block, from.region), () => ( []));
4586
- const extent = _chunkPZ4GT5JOcjs.markExtent.call(void 0, inline, from.offset, "link");
4557
+ const inline = _nullishCoalesce(_chunkP6KYXFZCcjs.regionInline.call(void 0, state, from.block, from.region), () => ( []));
4558
+ const extent = _chunkZKVOS57Qcjs.markExtent.call(void 0, inline, from.offset, "link");
4587
4559
  if (extent === null || to.offset > extent.to) return null;
4588
- const attrs = _optionalChain([_chunkND5XJVK2cjs.sliceInline.call(void 0, inline, extent.from, extent.to), 'access', _220 => _220[0], 'optionalAccess', _221 => _221.marks, 'access', _222 => _222.find, 'call', _223 => _223((mark) => mark.type === "link"), 'optionalAccess', _224 => _224.attrs]);
4560
+ const attrs = _optionalChain([_chunk4SLJNZSMcjs.sliceInline.call(void 0, inline, extent.from, extent.to), 'access', _220 => _220[0], 'optionalAccess', _221 => _221.marks, 'access', _222 => _222.find, 'call', _223 => _223((mark) => mark.type === "link"), 'optionalAccess', _224 => _224.attrs]);
4589
4561
  if (_optionalChain([attrs, 'optionalAccess', _225 => _225.href]) === void 0) return null;
4590
4562
  const range = { block: from.block, region: from.region, ...extent };
4591
4563
  return { href: attrs.href, title: attrs.title || void 0, range };
@@ -4593,7 +4565,7 @@ function linkAround(state, from, to = from) {
4593
4565
  function linkAtSelection(state) {
4594
4566
  const { selection } = state;
4595
4567
  if (_optionalChain([selection, 'optionalAccess', _226 => _226.kind]) !== "text") return null;
4596
- const { from, to } = _chunkPZ4GT5JOcjs.orderedRange.call(void 0, state.doc, selection.anchor, selection.head);
4568
+ const { from, to } = _chunkZKVOS57Qcjs.orderedRange.call(void 0, state.doc, selection.anchor, selection.head);
4597
4569
  return linkAround(state, from, to);
4598
4570
  }
4599
4571
 
@@ -4605,7 +4577,7 @@ function linkElementAt(controller, target) {
4605
4577
  }
4606
4578
  function linkAtElement(controller, state, element) {
4607
4579
  const host = controller.registry.locate(element);
4608
- const offset = host === null ? null : _nullishCoalesce(_optionalChain([_chunkGTTPVJSDcjs.domMapOf.call(void 0, host.element), 'optionalAccess', _227 => _227.fromDom, 'call', _228 => _228(element, 0)]), () => ( null));
4580
+ const offset = host === null ? null : _nullishCoalesce(_optionalChain([_chunkP6KYXFZCcjs.domMapOf.call(void 0, host.element), 'optionalAccess', _227 => _227.fromDom, 'call', _228 => _228(element, 0)]), () => ( null));
4609
4581
  if (host === null || offset === null) return null;
4610
4582
  return linkAround(state, { block: host.block, region: host.region, offset });
4611
4583
  }
@@ -4631,7 +4603,7 @@ function truncateMiddle(text2, max) {
4631
4603
  // src/menus/link/unlink-range.ts
4632
4604
  function unlinkRange({ block, region, from, to }) {
4633
4605
  return (state, dispatch) => {
4634
- const tr = new (0, _chunkPZ4GT5JOcjs.Transaction)(state).step(_chunkPZ4GT5JOcjs.removeMarkStep.call(void 0, block, region, from, to, "link"));
4606
+ const tr = new (0, _chunkZKVOS57Qcjs.Transaction)(state).step(_chunkZKVOS57Qcjs.removeMarkStep.call(void 0, block, region, from, to, "link"));
4635
4607
  if (!tr.docChanged) return false;
4636
4608
  _optionalChain([dispatch, 'optionalCall', _233 => _233(tr)]);
4637
4609
  return true;
@@ -4656,12 +4628,12 @@ function useRestedValue(value, delay) {
4656
4628
  // src/menus/link/use-caret-in-link.ts
4657
4629
  function caretLinkKey(state) {
4658
4630
  const { selection } = state;
4659
- if (_optionalChain([selection, 'optionalAccess', _234 => _234.kind]) !== "text" || !_chunkPZ4GT5JOcjs.isCollapsed.call(void 0, selection)) return null;
4631
+ if (_optionalChain([selection, 'optionalAccess', _234 => _234.kind]) !== "text" || !_chunkZKVOS57Qcjs.isCollapsed.call(void 0, selection)) return null;
4660
4632
  const link = linkAtSelection(state);
4661
4633
  return link && [link.range.block, link.range.region, link.range.from, link.href].join("\0");
4662
4634
  }
4663
4635
  function useCaretInLink(controller, delay) {
4664
- const key = _chunkGTTPVJSDcjs.useEditorState.call(void 0, controller, caretLinkKey);
4636
+ const key = _chunkP6KYXFZCcjs.useEditorState.call(void 0, controller, caretLinkKey);
4665
4637
  const settled = useSelectionSettled(controller);
4666
4638
  return useRestedValue(settled ? key : null, delay) !== null;
4667
4639
  }
@@ -4701,7 +4673,7 @@ var URL_LENGTH = 48;
4701
4673
  var CARD = "flex w-auto items-center gap-0.5 py-1 ps-3 pe-1 shadow-md";
4702
4674
  var ADDRESS = "me-1 whitespace-nowrap text-sm text-muted-foreground";
4703
4675
  function LinkCard({ controller, labels, store, cardRef, element, onUnlinked }) {
4704
- const state = _chunkGTTPVJSDcjs.useEditorState.call(void 0, controller, _chunkGTTPVJSDcjs.wholeState);
4676
+ const state = _chunkP6KYXFZCcjs.useEditorState.call(void 0, controller, _chunkP6KYXFZCcjs.wholeState);
4705
4677
  const link = _react.useMemo.call(void 0,
4706
4678
  () => element === null ? linkAtSelection(state) : linkAtElement(controller, state, element),
4707
4679
  [controller, state, element]
@@ -4714,12 +4686,12 @@ function LinkCard({ controller, labels, store, cardRef, element, onUnlinked }) {
4714
4686
  }, [controller, link]);
4715
4687
  if (link === null) return null;
4716
4688
  const { block, region, from, to } = link.range;
4717
- const href = _chunkND5XJVK2cjs.sanitizeHref.call(void 0, link.href);
4689
+ const href = _chunk4SLJNZSMcjs.sanitizeHref.call(void 0, link.href);
4718
4690
  const address = truncateMiddle(link.href, URL_LENGTH);
4719
4691
  const edit2 = () => {
4720
4692
  if (element !== null) {
4721
- const selection = _chunkPZ4GT5JOcjs.textSelection.call(void 0, { block, region, offset: from }, { block, region, offset: to });
4722
- _chunkGTTPVJSDcjs.dispatchSelection.call(void 0, controller, selection);
4693
+ const selection = _chunkZKVOS57Qcjs.textSelection.call(void 0, { block, region, offset: from }, { block, region, offset: to });
4694
+ _chunkP6KYXFZCcjs.dispatchSelection.call(void 0, controller, selection);
4723
4695
  }
4724
4696
  store.set({ linkPopover: { open: true } });
4725
4697
  };
@@ -4765,12 +4737,12 @@ function LinkHoverCard(props) {
4765
4737
 
4766
4738
  // src/menus/link/apply-link.ts
4767
4739
  function insertLinkedText(value, href, caret) {
4768
- const safe = _chunkND5XJVK2cjs.sanitizeHref.call(void 0, href);
4740
+ const safe = _chunk4SLJNZSMcjs.sanitizeHref.call(void 0, href);
4769
4741
  return (state, dispatch) => {
4770
4742
  if (!safe) return false;
4771
4743
  const link = { type: "link", attrs: { href: safe } };
4772
- const marks = _chunkND5XJVK2cjs.addMark.call(void 0, _chunkPZ4GT5JOcjs.caretMarks.call(void 0, state.doc, state.schema, state.storedMarks, caret), link);
4773
- const tr = new (0, _chunkPZ4GT5JOcjs.Transaction)(state).step(_chunkPZ4GT5JOcjs.replaceInlineStep.call(void 0, caret.block, caret.region, caret.offset, caret.offset, [_chunkND5XJVK2cjs.text.call(void 0, value, marks)])).setSelection(_chunkPZ4GT5JOcjs.textSelection.call(void 0, { ...caret, offset: caret.offset + value.length }));
4744
+ const marks = _chunk4SLJNZSMcjs.addMark.call(void 0, _chunkZKVOS57Qcjs.caretMarks.call(void 0, state.doc, state.schema, state.storedMarks, caret), link);
4745
+ const tr = new (0, _chunkZKVOS57Qcjs.Transaction)(state).step(_chunkZKVOS57Qcjs.replaceInlineStep.call(void 0, caret.block, caret.region, caret.offset, caret.offset, [_chunk4SLJNZSMcjs.text.call(void 0, value, marks)])).setSelection(_chunkZKVOS57Qcjs.textSelection.call(void 0, { ...caret, offset: caret.offset + value.length }));
4774
4746
  _optionalChain([dispatch, 'optionalCall', _238 => _238(tr)]);
4775
4747
  return true;
4776
4748
  };
@@ -4779,10 +4751,10 @@ function applyLink(href, value) {
4779
4751
  return (state, dispatch) => {
4780
4752
  const { selection } = state;
4781
4753
  const link = linkAtSelection(state);
4782
- if (_optionalChain([selection, 'optionalAccess', _239 => _239.kind]) === "text" && _chunkPZ4GT5JOcjs.isCollapsed.call(void 0, selection) && link === null) {
4754
+ if (_optionalChain([selection, 'optionalAccess', _239 => _239.kind]) === "text" && _chunkZKVOS57Qcjs.isCollapsed.call(void 0, selection) && link === null) {
4783
4755
  return insertLinkedText(value, href, selection.head)(state, dispatch);
4784
4756
  }
4785
- return _chunkPZ4GT5JOcjs.setLink.call(void 0, href, _optionalChain([link, 'optionalAccess', _240 => _240.title]))(state, dispatch);
4757
+ return _chunkZKVOS57Qcjs.setLink.call(void 0, href, _optionalChain([link, 'optionalAccess', _240 => _240.title]))(state, dispatch);
4786
4758
  };
4787
4759
  }
4788
4760
 
@@ -4796,7 +4768,7 @@ function popoverAnchor(controller, link) {
4796
4768
  if (_optionalChain([selection, 'optionalAccess', _241 => _241.kind]) !== "text") return null;
4797
4769
  const { block, region, offset } = selection.head;
4798
4770
  const caret = _nullishCoalesce(_optionalChain([link, 'optionalAccess', _242 => _242.range]), () => ( { block, region, from: offset, to: offset }));
4799
- const collapsed = _chunkPZ4GT5JOcjs.isCollapsed.call(void 0, selection);
4771
+ const collapsed = _chunkZKVOS57Qcjs.isCollapsed.call(void 0, selection);
4800
4772
  return virtualAnchor(
4801
4773
  () => collapsed ? rangeRect(controller, caret) : selectionRect(controller),
4802
4774
  () => controller.registry.get(block, region)
@@ -4808,7 +4780,7 @@ function LinkPopover({ controller, labels, onClose }) {
4808
4780
  const [invalid, setInvalid] = _react.useState.call(void 0, false);
4809
4781
  const messageId = _react.useId.call(void 0, );
4810
4782
  const anchor = _react.useMemo.call(void 0, () => ({ current: popoverAnchor(controller, link) }), [controller, link]);
4811
- const openHref = link && _chunkND5XJVK2cjs.sanitizeHref.call(void 0, link.href);
4783
+ const openHref = link && _chunk4SLJNZSMcjs.sanitizeHref.call(void 0, link.href);
4812
4784
  const backToText = () => {
4813
4785
  onClose();
4814
4786
  controller.focus();
@@ -4825,7 +4797,7 @@ function LinkPopover({ controller, labels, onClose }) {
4825
4797
  backToText();
4826
4798
  };
4827
4799
  const remove = () => {
4828
- controller.run(_chunkPZ4GT5JOcjs.unsetLink);
4800
+ controller.run(_chunkZKVOS57Qcjs.unsetLink);
4829
4801
  backToText();
4830
4802
  };
4831
4803
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
@@ -4899,7 +4871,7 @@ function LinkOverlay({ controller }) {
4899
4871
  const labels = useLabels();
4900
4872
  const store = useCanvasUiStore();
4901
4873
  const popoverOpen = useCanvasUi(store, isPopoverOpen);
4902
- const readOnly = _chunkGTTPVJSDcjs.useReadOnly.call(void 0, controller);
4874
+ const readOnly = _chunkP6KYXFZCcjs.useReadOnly.call(void 0, controller);
4903
4875
  useLinkClicks(controller);
4904
4876
  _react.useEffect.call(void 0, () => {
4905
4877
  if (readOnly && store.get().linkPopover.open) store.set({ linkPopover: { open: false } });
@@ -4914,7 +4886,7 @@ function linkExtension(store) {
4914
4886
  if (dispatch) store.set({ linkPopover: { open: true } });
4915
4887
  return true;
4916
4888
  };
4917
- return _chunkPZ4GT5JOcjs.defineExtension.call(void 0, { name: "link", keymap: { "Mod-k": openPopover }, ui: { overlays: [LinkOverlay] } });
4889
+ return _chunkZKVOS57Qcjs.defineExtension.call(void 0, { name: "link", keymap: { "Mod-k": openPopover }, ui: { overlays: [LinkOverlay] } });
4918
4890
  }
4919
4891
 
4920
4892
  // src/menus/slash/slash-extension.tsx
@@ -4925,7 +4897,7 @@ var DEFAULT_MAX_LENGTH = 40;
4925
4897
  var NO_TRIGGER_TYPES = /* @__PURE__ */ new Set(["CODE", "TABLE"]);
4926
4898
  var WHITESPACE2 = /\s/;
4927
4899
  var ATOM = "\uFFFC";
4928
- var hasCode = (inline) => inline.some((node) => _chunkND5XJVK2cjs.hasMark.call(void 0, node.marks, "code"));
4900
+ var hasCode = (inline) => inline.some((node) => _chunk4SLJNZSMcjs.hasMark.call(void 0, node.marks, "code"));
4929
4901
  function triggerOffset(text2, start, config) {
4930
4902
  const { char, allowSpaces = false, startOfLine = false } = config;
4931
4903
  const earliest = Math.max(0, text2.length - (_nullishCoalesce(config.maxLength, () => ( DEFAULT_MAX_LENGTH))) - 1);
@@ -4942,15 +4914,15 @@ function triggerOffset(text2, start, config) {
4942
4914
  }
4943
4915
  function findTrigger(state, config) {
4944
4916
  const { doc, selection } = state;
4945
- if (_optionalChain([selection, 'optionalAccess', _246 => _246.kind]) !== "text" || !_chunkPZ4GT5JOcjs.isCollapsed.call(void 0, selection)) return null;
4917
+ if (_optionalChain([selection, 'optionalAccess', _246 => _246.kind]) !== "text" || !_chunkZKVOS57Qcjs.isCollapsed.call(void 0, selection)) return null;
4946
4918
  const { block: blockId, region, offset: caret } = selection.head;
4947
- const block = _chunkND5XJVK2cjs.blockById.call(void 0, doc, blockId);
4919
+ const block = _chunk4SLJNZSMcjs.blockById.call(void 0, doc, blockId);
4948
4920
  if (block === void 0 || NO_TRIGGER_TYPES.has(block.type) || !Object.hasOwn(block.regions, region)) return null;
4949
4921
  const inline = block.regions[region];
4950
4922
  const start = Math.max(0, caret - (_nullishCoalesce(config.maxLength, () => ( DEFAULT_MAX_LENGTH))) - 2);
4951
- const from = triggerOffset(_chunkND5XJVK2cjs.inlineText.call(void 0, _chunkND5XJVK2cjs.sliceInline.call(void 0, inline, start, caret)), start, config);
4952
- if (from === null || hasCode(_chunkND5XJVK2cjs.sliceInline.call(void 0, inline, from, caret))) return null;
4953
- const query = _chunkND5XJVK2cjs.inlineText.call(void 0, _chunkND5XJVK2cjs.sliceInline.call(void 0, inline, from + 1, caret));
4923
+ const from = triggerOffset(_chunk4SLJNZSMcjs.inlineText.call(void 0, _chunk4SLJNZSMcjs.sliceInline.call(void 0, inline, start, caret)), start, config);
4924
+ if (from === null || hasCode(_chunk4SLJNZSMcjs.sliceInline.call(void 0, inline, from, caret))) return null;
4925
+ const query = _chunk4SLJNZSMcjs.inlineText.call(void 0, _chunk4SLJNZSMcjs.sliceInline.call(void 0, inline, from + 1, caret));
4954
4926
  return { block: blockId, region, from, to: caret, query };
4955
4927
  }
4956
4928
 
@@ -4980,7 +4952,7 @@ function suggestionPlugin(key, config) {
4980
4952
  init: (state) => ({ active: nearest(state, findTrigger(state, config)), dismissedAt: null }),
4981
4953
  apply(tr, value, oldState, newState) {
4982
4954
  const dismissing = tr.getMeta(DISMISS) === key.name;
4983
- if (!dismissing && !tr.docChanged && _chunkPZ4GT5JOcjs.sameSelection.call(void 0, oldState.selection, newState.selection)) return value;
4955
+ if (!dismissing && !tr.docChanged && _chunkZKVOS57Qcjs.sameSelection.call(void 0, oldState.selection, newState.selection)) return value;
4984
4956
  const found = findTrigger(newState, config);
4985
4957
  let dismissedAt = null;
4986
4958
  if (dismissing) dismissedAt = found && rangeOf2(found);
@@ -4997,14 +4969,14 @@ function suggestionPlugin(key, config) {
4997
4969
  }
4998
4970
  function dismissSuggestion(key) {
4999
4971
  return (state, dispatch) => {
5000
- if (_chunkPZ4GT5JOcjs.getPluginState.call(void 0, state, key).active === null) return false;
5001
- _optionalChain([dispatch, 'optionalCall', _249 => _249(new (0, _chunkPZ4GT5JOcjs.Transaction)(state).setMeta(DISMISS, key.name))]);
4972
+ if (_chunkZKVOS57Qcjs.getPluginState.call(void 0, state, key).active === null) return false;
4973
+ _optionalChain([dispatch, 'optionalCall', _249 => _249(new (0, _chunkZKVOS57Qcjs.Transaction)(state).setMeta(DISMISS, key.name))]);
5002
4974
  return true;
5003
4975
  };
5004
4976
  }
5005
4977
 
5006
4978
  // src/menus/slash/slash-key.ts
5007
- var slashKey = _chunkPZ4GT5JOcjs.createPluginKey.call(void 0, "slash");
4979
+ var slashKey = _chunkZKVOS57Qcjs.createPluginKey.call(void 0, "slash");
5008
4980
 
5009
4981
  // src/menus/slash/slash-items.ts
5010
4982
 
@@ -5053,10 +5025,10 @@ function builtInSlashItems(labels, definitions) {
5053
5025
  function initialBlock({ schema }, { type, initialData }) {
5054
5026
  const data = _optionalChain([initialData, 'optionalCall', _250 => _250()]);
5055
5027
  if (data === void 0) return { type };
5056
- return { type, ..._chunkND5XJVK2cjs.specFor.call(void 0, schema, type).fromData(data, _chunkND5XJVK2cjs.createBlockCodec.call(void 0, schema).context) };
5028
+ return { type, ..._chunk4SLJNZSMcjs.specFor.call(void 0, schema, type).fromData(data, _chunk4SLJNZSMcjs.createBlockCodec.call(void 0, schema).context) };
5057
5029
  }
5058
5030
  function blockTypeSlashItems(definitions) {
5059
- return _chunkOMOBMXD5cjs.paletteBlocks.call(void 0, definitions).filter((definition) => !BUILT_IN_TYPES.has(definition.type)).map((definition) => ({
5031
+ return _chunkEH5KXQXYcjs.paletteBlocks.call(void 0, definitions).filter((definition) => !BUILT_IN_TYPES.has(definition.type)).map((definition) => ({
5060
5032
  id: `block:${definition.type}`,
5061
5033
  title: definition.label,
5062
5034
  group: "custom",
@@ -5086,10 +5058,10 @@ function useRangeAnchor(controller, range) {
5086
5058
  const [side, setSide] = _react.useState.call(void 0, "bottom");
5087
5059
  const latest = _react.useRef.call(void 0, range);
5088
5060
  const start = range === null ? null : `${range.block} ${range.region} ${range.from}`;
5089
- _chunkGTTPVJSDcjs.useIsomorphicLayoutEffect.call(void 0, () => {
5061
+ _chunkP6KYXFZCcjs.useIsomorphicLayoutEffect.call(void 0, () => {
5090
5062
  latest.current = range;
5091
5063
  });
5092
- _chunkGTTPVJSDcjs.useIsomorphicLayoutEffect.call(void 0, () => {
5064
+ _chunkP6KYXFZCcjs.useIsomorphicLayoutEffect.call(void 0, () => {
5093
5065
  const rect = latest.current && rangeRect(controller, latest.current);
5094
5066
  if (rect) setSide(sideFor(rect, window.innerHeight));
5095
5067
  }, [controller, start]);
@@ -5121,11 +5093,11 @@ function openCombobox(host, listboxId) {
5121
5093
  }
5122
5094
  function useComboboxHost(controller, block, region, listboxId, activeOptionId) {
5123
5095
  const host = _react.useRef.call(void 0, null);
5124
- _chunkGTTPVJSDcjs.useIsomorphicLayoutEffect.call(void 0, () => {
5096
+ _chunkP6KYXFZCcjs.useIsomorphicLayoutEffect.call(void 0, () => {
5125
5097
  host.current = block === null || region === null ? null : _nullishCoalesce(controller.registry.get(block, region), () => ( null));
5126
5098
  return host.current === null ? void 0 : openCombobox(host.current, listboxId);
5127
5099
  }, [controller, block, region, listboxId]);
5128
- _chunkGTTPVJSDcjs.useIsomorphicLayoutEffect.call(void 0, () => {
5100
+ _chunkP6KYXFZCcjs.useIsomorphicLayoutEffect.call(void 0, () => {
5129
5101
  if (host.current !== null) restore(host.current, "aria-activedescendant", activeOptionId);
5130
5102
  }, [block, region, activeOptionId]);
5131
5103
  }
@@ -5174,10 +5146,10 @@ function handle(event, menu) {
5174
5146
  }
5175
5147
  function useSuggestionKeys(controller, open, menu) {
5176
5148
  const latest = _react.useRef.call(void 0, menu);
5177
- _chunkGTTPVJSDcjs.useIsomorphicLayoutEffect.call(void 0, () => {
5149
+ _chunkP6KYXFZCcjs.useIsomorphicLayoutEffect.call(void 0, () => {
5178
5150
  latest.current = menu;
5179
5151
  });
5180
- _chunkGTTPVJSDcjs.useIsomorphicLayoutEffect.call(void 0, () => {
5152
+ _chunkP6KYXFZCcjs.useIsomorphicLayoutEffect.call(void 0, () => {
5181
5153
  if (!open) return;
5182
5154
  const intercept = (event) => {
5183
5155
  const handled = handle(event, latest.current);
@@ -5201,10 +5173,10 @@ var isPromise = (value) => typeof _optionalChain([value, 'optionalAccess', _252
5201
5173
  function useSuggestionResults(source, query, onError) {
5202
5174
  const [answer, setAnswer] = _react.useState.call(void 0, FORGOTTEN);
5203
5175
  const report = _react.useRef.call(void 0, onError);
5204
- _chunkGTTPVJSDcjs.useIsomorphicLayoutEffect.call(void 0, () => {
5176
+ _chunkP6KYXFZCcjs.useIsomorphicLayoutEffect.call(void 0, () => {
5205
5177
  report.current = onError;
5206
5178
  });
5207
- _chunkGTTPVJSDcjs.useIsomorphicLayoutEffect.call(void 0, () => {
5179
+ _chunkP6KYXFZCcjs.useIsomorphicLayoutEffect.call(void 0, () => {
5208
5180
  if (query === null) {
5209
5181
  setAnswer(FORGOTTEN);
5210
5182
  return;
@@ -5248,9 +5220,9 @@ function useSuggestion({
5248
5220
  emptyLabel
5249
5221
  }) {
5250
5222
  const { labels, onError } = useQuoin();
5251
- const readOnly = _chunkGTTPVJSDcjs.useReadOnly.call(void 0, controller);
5252
- const selectTrigger = _react.useCallback.call(void 0, (state) => _chunkPZ4GT5JOcjs.getPluginState.call(void 0, state, pluginKey).active, [pluginKey]);
5253
- const active = _chunkGTTPVJSDcjs.useEditorState.call(void 0, controller, selectTrigger);
5223
+ const readOnly = _chunkP6KYXFZCcjs.useReadOnly.call(void 0, controller);
5224
+ const selectTrigger = _react.useCallback.call(void 0, (state) => _chunkZKVOS57Qcjs.getPluginState.call(void 0, state, pluginKey).active, [pluginKey]);
5225
+ const active = _chunkP6KYXFZCcjs.useEditorState.call(void 0, controller, selectTrigger);
5254
5226
  const trigger = readOnly ? null : active;
5255
5227
  const results = useSuggestionResults(source, _nullishCoalesce(_optionalChain([trigger, 'optionalAccess', _253 => _253.query]), () => ( null)), onError);
5256
5228
  const sections = _react.useMemo.call(void 0, () => groupItems(results.items, groupOf2), [results.items, groupOf2]);
@@ -5272,7 +5244,7 @@ function useSuggestion({
5272
5244
  );
5273
5245
  const select = _react.useCallback.call(void 0,
5274
5246
  (index) => {
5275
- const current = _chunkPZ4GT5JOcjs.getPluginState.call(void 0, controller.editor.state, pluginKey).active;
5247
+ const current = _chunkZKVOS57Qcjs.getPluginState.call(void 0, controller.editor.state, pluginKey).active;
5276
5248
  if (current !== null && index < ordered.length) onSelect(ordered[index], rangeOf2(current));
5277
5249
  },
5278
5250
  [controller, pluginKey, ordered, onSelect]
@@ -5323,7 +5295,7 @@ function SuggestionMenu(props) {
5323
5295
  const { trigger, sections, activeIndex, listboxId } = suggestion;
5324
5296
  const { anchor, side } = useRangeAnchor(controller, trigger);
5325
5297
  const listbox = _react.useRef.call(void 0, null);
5326
- _chunkGTTPVJSDcjs.useIsomorphicLayoutEffect.call(void 0, () => {
5298
+ _chunkP6KYXFZCcjs.useIsomorphicLayoutEffect.call(void 0, () => {
5327
5299
  _optionalChain([listbox, 'access', _259 => _259.current, 'optionalAccess', _260 => _260.querySelector, 'call', _261 => _261('[aria-selected="true"]'), 'optionalAccess', _262 => _262.scrollIntoView, 'call', _263 => _263({ block: "nearest" })]);
5328
5300
  }, [activeIndex, sections]);
5329
5301
  if (trigger === null) return null;
@@ -5382,14 +5354,14 @@ function SuggestionMenu(props) {
5382
5354
  // src/menus/suggestion/replace-trigger.ts
5383
5355
  function deleteTrigger({ block, region, from, to }) {
5384
5356
  return (state, dispatch) => {
5385
- const tr = new (0, _chunkPZ4GT5JOcjs.Transaction)(state);
5386
- if (from >= to || !tr.maybeStep(_chunkPZ4GT5JOcjs.replaceInlineStep.call(void 0, block, region, from, to, []))) return false;
5387
- _optionalChain([dispatch, 'optionalCall', _270 => _270(tr.setSelection(_chunkPZ4GT5JOcjs.textSelection.call(void 0, { block, region, offset: from })))]);
5357
+ const tr = new (0, _chunkZKVOS57Qcjs.Transaction)(state);
5358
+ if (from >= to || !tr.maybeStep(_chunkZKVOS57Qcjs.replaceInlineStep.call(void 0, block, region, from, to, []))) return false;
5359
+ _optionalChain([dispatch, 'optionalCall', _270 => _270(tr.setSelection(_chunkZKVOS57Qcjs.textSelection.call(void 0, { block, region, offset: from })))]);
5388
5360
  return true;
5389
5361
  };
5390
5362
  }
5391
5363
  function triggerReplacement(state, range, command) {
5392
- return _chunkPZ4GT5JOcjs.runCommands.call(void 0, state, command === void 0 ? [deleteTrigger(range)] : [deleteTrigger(range), command]);
5364
+ return _chunkZKVOS57Qcjs.runCommands.call(void 0, state, command === void 0 ? [deleteTrigger(range)] : [deleteTrigger(range), command]);
5393
5365
  }
5394
5366
  function replaceTrigger(controller, range, command) {
5395
5367
  const { ok, tr } = triggerReplacement(controller.editor.state, range, command);
@@ -5402,9 +5374,9 @@ var TEXT_STEPS = /* @__PURE__ */ new Set(["replaceInline", "addMark", "removeMar
5402
5374
  var WHITESPACE3 = /\s/;
5403
5375
  var changesBlocks = (tr) => tr !== null && tr.steps.some((step) => !TEXT_STEPS.has(step.stepType));
5404
5376
  function withSpaceBefore(state, range) {
5405
- const inline = _chunkGTTPVJSDcjs.regionInline.call(void 0, state, range.block, range.region);
5377
+ const inline = _chunkP6KYXFZCcjs.regionInline.call(void 0, state, range.block, range.region);
5406
5378
  if (inline === void 0 || range.from === 0) return null;
5407
- const text2 = _chunkND5XJVK2cjs.inlineText.call(void 0, inline);
5379
+ const text2 = _chunk4SLJNZSMcjs.inlineText.call(void 0, inline);
5408
5380
  const after = text2.charAt(range.to);
5409
5381
  const spaced = text2.charAt(range.from - 1) === " " && (after === "" || WHITESPACE3.test(after));
5410
5382
  return spaced ? { ...range, from: range.from - 1 } : null;
@@ -5515,7 +5487,7 @@ function SlashOverlay({ controller }) {
5515
5487
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SlashMenu, { controller, labels, items });
5516
5488
  }
5517
5489
  function slashExtension() {
5518
- return _chunkPZ4GT5JOcjs.defineExtension.call(void 0, {
5490
+ return _chunkZKVOS57Qcjs.defineExtension.call(void 0, {
5519
5491
  name: "slash",
5520
5492
  plugins: [suggestionPlugin(slashKey, { char: "/" })],
5521
5493
  ui: { overlays: [SlashOverlay] }
@@ -5542,7 +5514,7 @@ function commandItem(id, title, icon, command) {
5542
5514
  return { id, title, icon, run: (controller) => void controller.run(command) };
5543
5515
  }
5544
5516
  function addBlockAtCaret(controller) {
5545
- const block = _chunkPZ4GT5JOcjs.headBlockId.call(void 0, controller.editor.state.selection);
5517
+ const block = _chunkZKVOS57Qcjs.headBlockId.call(void 0, controller.editor.state.selection);
5546
5518
  if (block !== null) addBlockBelow(controller, block);
5547
5519
  }
5548
5520
  function mobileItems(labels, openLink) {
@@ -5554,10 +5526,10 @@ function mobileItems(labels, openLink) {
5554
5526
  markItem("strike", labels.strike, _lucidereact.Strikethrough),
5555
5527
  markItem("code", labels.code, _lucidereact.Code),
5556
5528
  linkItem(labels, openLink),
5557
- commandItem("indent", labels.indent, _lucidereact.ListIndentIncrease, _chunkPZ4GT5JOcjs.indent),
5558
- commandItem("outdent", labels.outdent, _lucidereact.ListIndentDecrease, _chunkPZ4GT5JOcjs.outdent),
5559
- commandItem("undo", labels.undo, _lucidereact.Undo2, _chunkPZ4GT5JOcjs.undo),
5560
- commandItem("redo", labels.redo, _lucidereact.Redo2, _chunkPZ4GT5JOcjs.redo)
5529
+ commandItem("indent", labels.indent, _lucidereact.ListIndentIncrease, _chunkZKVOS57Qcjs.indent),
5530
+ commandItem("outdent", labels.outdent, _lucidereact.ListIndentDecrease, _chunkZKVOS57Qcjs.outdent),
5531
+ commandItem("undo", labels.undo, _lucidereact.Undo2, _chunkZKVOS57Qcjs.undo),
5532
+ commandItem("redo", labels.redo, _lucidereact.Redo2, _chunkZKVOS57Qcjs.redo)
5561
5533
  ]
5562
5534
  };
5563
5535
  }
@@ -5620,7 +5592,7 @@ function placement(viewport) {
5620
5592
  function EditingTools({ controller }) {
5621
5593
  const labels = useLabels();
5622
5594
  const store = useCanvasUiStore();
5623
- const state = _chunkGTTPVJSDcjs.useEditorState.call(void 0, controller, _chunkGTTPVJSDcjs.wholeState);
5595
+ const state = _chunkP6KYXFZCcjs.useEditorState.call(void 0, controller, _chunkP6KYXFZCcjs.wholeState);
5624
5596
  const viewport = useVisualViewport();
5625
5597
  const roving = useRovingFocus();
5626
5598
  const items = _react.useMemo.call(void 0, () => mobileItems(labels, () => store.set({ linkPopover: { open: true } })), [labels, store]);
@@ -5895,7 +5867,7 @@ function shortcutsExtension(store) {
5895
5867
  if (dispatch) store.set({ shortcutsOpen: true });
5896
5868
  return true;
5897
5869
  };
5898
- return _chunkPZ4GT5JOcjs.defineExtension.call(void 0, {
5870
+ return _chunkZKVOS57Qcjs.defineExtension.call(void 0, {
5899
5871
  name: "shortcuts",
5900
5872
  keymap: { [SHORTCUT]: open, "Mod-Shift-?": open },
5901
5873
  ui: { overlays: [ShortcutsOverlay] }
@@ -5936,15 +5908,15 @@ function writeBlockData(controller, blockId, data) {
5936
5908
  const index = doc.index.get(blockId);
5937
5909
  if (index === void 0) return;
5938
5910
  const block = doc.blocks[index];
5939
- const { attrs, regions } = _chunkND5XJVK2cjs.specFor.call(void 0, schema, block.type).fromData(data, editor.codec.context);
5940
- if (_chunk2QCRZ7OLcjs.sameValue.call(void 0, attrs, block.attrs) && _chunk2QCRZ7OLcjs.sameValue.call(void 0, regions, block.regions)) return;
5941
- const tr = editor.createTransaction().step(_chunkPZ4GT5JOcjs.replaceBlockStep.call(void 0, { ...block, attrs, regions }));
5942
- editor.dispatch(tr.setMeta(_chunkPZ4GT5JOcjs.HISTORY_GROUP, `block-data:${blockId}`));
5911
+ const { attrs, regions } = _chunk4SLJNZSMcjs.specFor.call(void 0, schema, block.type).fromData(data, editor.codec.context);
5912
+ if (_chunk6V6GGBDKcjs.sameValue.call(void 0, attrs, block.attrs) && _chunk6V6GGBDKcjs.sameValue.call(void 0, regions, block.regions)) return;
5913
+ const tr = editor.createTransaction().step(_chunkZKVOS57Qcjs.replaceBlockStep.call(void 0, { ...block, attrs, regions }));
5914
+ editor.dispatch(tr.setMeta(_chunkZKVOS57Qcjs.HISTORY_GROUP, `block-data:${blockId}`));
5943
5915
  }
5944
5916
  function insertAfterBlock(controller, blockId, type, definitions) {
5945
5917
  const editor = internal(controller);
5946
- const data = _optionalChain([_chunkOMOBMXD5cjs.blockByType.call(void 0, definitions, type), 'optionalAccess', _278 => _278.initialData, 'optionalCall', _279 => _279()]);
5947
- const content = data && _chunkND5XJVK2cjs.specFor.call(void 0, editor.state.schema, type).fromData(data, editor.codec.context);
5918
+ const data = _optionalChain([_chunkEH5KXQXYcjs.blockByType.call(void 0, definitions, type), 'optionalAccess', _278 => _278.initialData, 'optionalCall', _279 => _279()]);
5919
+ const content = data && _chunk4SLJNZSMcjs.specFor.call(void 0, editor.state.schema, type).fromData(data, editor.codec.context);
5948
5920
  controller.run(insertBlockToWrite({ type, ...content }, opensEditor(definitions, type), blockId));
5949
5921
  }
5950
5922
 
@@ -5975,13 +5947,11 @@ function useEditingFocus(root, editing, stop) {
5975
5947
  const leaveUnlessInside = (event) => {
5976
5948
  if (!inside.current.has(event)) stop();
5977
5949
  };
5978
- doc.addEventListener("pointerdown", leaveForCanvas, true);
5979
- doc.addEventListener("pointerdown", leaveUnlessInside);
5980
- doc.addEventListener("focusin", leaveUnlessInside);
5950
+ const unlistenCapture = _chunkP6KYXFZCcjs.listen.call(void 0, doc, { pointerdown: leaveForCanvas }, true);
5951
+ const unlisten = _chunkP6KYXFZCcjs.listen.call(void 0, doc, { pointerdown: leaveUnlessInside, focusin: leaveUnlessInside });
5981
5952
  return () => {
5982
- doc.removeEventListener("pointerdown", leaveForCanvas, true);
5983
- doc.removeEventListener("pointerdown", leaveUnlessInside);
5984
- doc.removeEventListener("focusin", leaveUnlessInside);
5953
+ unlistenCapture();
5954
+ unlisten();
5985
5955
  };
5986
5956
  }, [root, editing, stop]);
5987
5957
  return _react.useMemo.call(void 0, () => {
@@ -5995,7 +5965,7 @@ function useEditingFocus(root, editing, stop) {
5995
5965
  function useMissingPreviewWarning(readOnly, { type, preview }) {
5996
5966
  _react.useEffect.call(void 0, () => {
5997
5967
  if (!readOnly || preview !== void 0) return;
5998
- _chunkOMOBMXD5cjs.devWarn.call(void 0,
5968
+ _chunkEH5KXQXYcjs.devWarn.call(void 0,
5999
5969
  `the block type "${type}" has no \`preview\`, so a read-only canvas can draw only its label. Give its definition a \`preview\` to render the block itself.`
6000
5970
  );
6001
5971
  }, [readOnly, type, preview]);
@@ -6006,7 +5976,7 @@ function VoidPreview({ definition: { preview: Preview }, name, ...props }) {
6006
5976
  }
6007
5977
  function VoidBlock({ block, controller, definition }) {
6008
5978
  const { blockTypes, labels } = useQuoin();
6009
- const readOnly = _chunkGTTPVJSDcjs.useReadOnly.call(void 0, controller);
5979
+ const readOnly = _chunkP6KYXFZCcjs.useReadOnly.call(void 0, controller);
6010
5980
  const { editor: Editor, alwaysEditing = false } = definition;
6011
5981
  const name = blockTypeLabel(labels, block, blockTypes);
6012
5982
  const blockId = block.id;
@@ -6054,7 +6024,7 @@ function VoidBlock({ block, controller, definition }) {
6054
6024
  role: "group",
6055
6025
  "aria-label": name,
6056
6026
  tabIndex: editorShown ? -1 : void 0,
6057
- ...{ [_chunkGTTPVJSDcjs.NATIVE_INTERACTION]: editorShown ? "" : void 0 },
6027
+ ...{ [_chunkP6KYXFZCcjs.NATIVE_INTERACTION]: editorShown ? "" : void 0 },
6058
6028
  onKeyDown,
6059
6029
  ...focusHandlers,
6060
6030
  onClick,
@@ -6129,12 +6099,12 @@ function collectUi(extensions, definitions, readOnly = false) {
6129
6099
 
6130
6100
  // src/canvas/insert-uploads.ts
6131
6101
  function fileBlock(file, stored) {
6132
- if (isImageFile(file)) return { id: _chunkND5XJVK2cjs.newId.call(void 0, ), type: "IMAGE", attrs: { storageKey: stored.storageKey, alt: "" } };
6102
+ if (isImageFile(file)) return { id: _chunk4SLJNZSMcjs.newId.call(void 0, ), type: "IMAGE", attrs: { storageKey: stored.storageKey, alt: "" } };
6133
6103
  return { type: "FILE", attrs: fileAttrs(file, stored) };
6134
6104
  }
6135
6105
  function anchorBlock(controller, at) {
6136
6106
  const { doc, selection } = controller.editor.state;
6137
- const candidates = [_optionalChain([at, 'optionalAccess', _289 => _289.block]), _chunkPZ4GT5JOcjs.headBlockId.call(void 0, selection), _optionalChain([doc, 'access', _290 => _290.blocks, 'access', _291 => _291[doc.blocks.length - 1], 'optionalAccess', _292 => _292.id])];
6107
+ const candidates = [_optionalChain([at, 'optionalAccess', _289 => _289.block]), _chunkZKVOS57Qcjs.headBlockId.call(void 0, selection), _optionalChain([doc, 'access', _290 => _290.blocks, 'access', _291 => _291[doc.blocks.length - 1], 'optionalAccess', _292 => _292.id])];
6138
6108
  return _nullishCoalesce(candidates.find((id) => typeof id === "string" && doc.index.has(id)), () => ( null));
6139
6109
  }
6140
6110
  var writerOf = (controller) => ({
@@ -6143,7 +6113,7 @@ var writerOf = (controller) => ({
6143
6113
  });
6144
6114
  function movedOn(controller, before) {
6145
6115
  const now = writerOf(controller);
6146
- return now.focus !== before.focus || !_chunkPZ4GT5JOcjs.sameSelection.call(void 0, now.selection, before.selection);
6116
+ return now.focus !== before.focus || !_chunkZKVOS57Qcjs.sameSelection.call(void 0, now.selection, before.selection);
6147
6117
  }
6148
6118
  async function insertUploads(controller, files, at, { upload, resolveAssetUrl, onError, unavailable, failed }) {
6149
6119
  if (!upload) return onError(new Error(unavailable));
@@ -6171,15 +6141,15 @@ function holdsHead({ selection }, block) {
6171
6141
  }
6172
6142
  function markdownPlaceholder(state, block, labels) {
6173
6143
  const { kind, level } = block.attrs;
6174
- if (kind === "heading") return labels.placeholderHeading(_chunkND5XJVK2cjs.headingLevel.call(void 0, level));
6144
+ if (kind === "heading") return labels.placeholderHeading(_chunk4SLJNZSMcjs.headingLevel.call(void 0, level));
6175
6145
  if (LIST_KINDS.has(kind)) return labels.placeholderList;
6176
6146
  if (kind === "quote") return labels.placeholderQuote;
6177
6147
  if (kind !== "paragraph") return void 0;
6178
6148
  return holdsHead(state, block) || state.doc.blocks.length === 1 ? labels.placeholderEmpty : void 0;
6179
6149
  }
6180
6150
  function placeholderFor(state, block, labels) {
6181
- const region = _chunkPZ4GT5JOcjs.primaryRegion.call(void 0, state.schema, block);
6182
- if (region === null || _chunkPZ4GT5JOcjs.regionLength.call(void 0, block, region) > 0) return void 0;
6151
+ const region = _chunkZKVOS57Qcjs.primaryRegion.call(void 0, state.schema, block);
6152
+ if (region === null || _chunkZKVOS57Qcjs.regionLength.call(void 0, block, region) > 0) return void 0;
6183
6153
  switch (block.type) {
6184
6154
  case "MARKDOWN":
6185
6155
  return markdownPlaceholder(state, block, labels);
@@ -6200,13 +6170,13 @@ function firstLine2(text2) {
6200
6170
  }
6201
6171
  var selectedBlockLabel = (labels, definitions, extensionNames) => (block, schema) => {
6202
6172
  const { attrs } = block;
6203
- if (block.type === "IMAGE") return hasPicture(attrs) ? _chunkND5XJVK2cjs.str.call(void 0, attrs.alt) || labels.imageNoAlt : labels.emptyImage;
6173
+ if (block.type === "IMAGE") return hasPicture(attrs) ? _chunk4SLJNZSMcjs.str.call(void 0, attrs.alt) || labels.imageNoAlt : labels.emptyImage;
6204
6174
  if (block.type === "CODE") {
6205
- const language2 = _chunkND5XJVK2cjs.str.call(void 0, attrs.language);
6175
+ const language2 = _chunk4SLJNZSMcjs.str.call(void 0, attrs.language);
6206
6176
  return labels.codeBlockName(_nullishCoalesce(languageName(language2), () => ( (language2 || labels.plainText))));
6207
6177
  }
6208
6178
  if (block.type === "FILE" && hasFile(attrs)) return labels.fileBlockName(firstLine2(fileName(attrs)));
6209
- return firstLine2(_chunkND5XJVK2cjs.blockPlainText.call(void 0, block, schema)) || blockTypeLabel(labels, block, definitions, extensionNames);
6179
+ return firstLine2(_chunk4SLJNZSMcjs.blockPlainText.call(void 0, block, schema)) || blockTypeLabel(labels, block, definitions, extensionNames);
6210
6180
  };
6211
6181
 
6212
6182
  // src/canvas/use-block-link-target.ts
@@ -6217,7 +6187,7 @@ function revealLinkedBlock(controller, hash) {
6217
6187
  if (id === null || shell === void 0) return false;
6218
6188
  const { editor } = controller;
6219
6189
  const { doc, schema } = editor.state;
6220
- editor.dispatch(editor.createTransaction().setSelection(_chunkPZ4GT5JOcjs.startOf.call(void 0, doc, schema, id)));
6190
+ editor.dispatch(editor.createTransaction().setSelection(_chunkZKVOS57Qcjs.startOf.call(void 0, doc, schema, id)));
6221
6191
  shell.scrollIntoView({ block: "center" });
6222
6192
  return true;
6223
6193
  }
@@ -6237,8 +6207,8 @@ function useBlockLinkTarget(controller, focusOnMount) {
6237
6207
  // src/canvas/use-delete-reporter.ts
6238
6208
 
6239
6209
  var WRITER_ORIGINS = /* @__PURE__ */ new Set(["command", "input", "paste"]);
6240
- var isBlockDeletion = (tr) => WRITER_ORIGINS.has(tr.origin) && tr.getMeta(_chunkPZ4GT5JOcjs.LINE_JOIN) !== true;
6241
- var isEmptyText = (schema, block) => _chunkPZ4GT5JOcjs.isTextFlow.call(void 0, schema, block) && _chunkPZ4GT5JOcjs.regionLength.call(void 0, block, _nullishCoalesce(_chunkPZ4GT5JOcjs.primaryRegion.call(void 0, schema, block), () => ( ""))) === 0;
6210
+ var isBlockDeletion = (tr) => WRITER_ORIGINS.has(tr.origin) && tr.getMeta(_chunkZKVOS57Qcjs.LINE_JOIN) !== true;
6211
+ var isEmptyText = (schema, block) => _chunkZKVOS57Qcjs.isTextFlow.call(void 0, schema, block) && _chunkZKVOS57Qcjs.regionLength.call(void 0, block, _nullishCoalesce(_chunkZKVOS57Qcjs.primaryRegion.call(void 0, schema, block), () => ( ""))) === 0;
6242
6212
  function filledLine({ origin, before }, schema) {
6243
6213
  const { selection } = before;
6244
6214
  if (origin !== "paste" || _optionalChain([selection, 'optionalAccess', _303 => _303.kind]) !== "text") return () => false;
@@ -6252,13 +6222,13 @@ function deletions(codec, tr) {
6252
6222
  const { index, count } = step.toJSON();
6253
6223
  if (typeof index !== "number" || typeof count !== "number") return [];
6254
6224
  const { blocks } = tr.docs[i];
6255
- const first = codec.blocksFromDoc(_chunkND5XJVK2cjs.createDoc.call(void 0, blocks.slice(0, index))).length;
6225
+ const first = codec.blocksFromDoc(_chunk4SLJNZSMcjs.createDoc.call(void 0, blocks.slice(0, index))).length;
6256
6226
  return blocks.slice(index, index + count).flatMap((block, offset) => filled(block) ? [] : [{ block: codec.toQuoin(block), index: first + offset }]);
6257
6227
  });
6258
6228
  }
6259
6229
  function useDeleteReporter(controller, onDelete) {
6260
6230
  const latest = _react.useRef.call(void 0, onDelete);
6261
- _chunkGTTPVJSDcjs.useIsomorphicLayoutEffect.call(void 0, () => {
6231
+ _chunkP6KYXFZCcjs.useIsomorphicLayoutEffect.call(void 0, () => {
6262
6232
  latest.current = onDelete;
6263
6233
  });
6264
6234
  _react.useEffect.call(void 0, () => {
@@ -6289,7 +6259,7 @@ function useTypedInPlaceWarning(definitions, readOnly) {
6289
6259
  _react.useEffect.call(void 0, () => {
6290
6260
  if (readOnly) return;
6291
6261
  for (const type of definedTypedInPlace(definitions)) {
6292
- _chunkOMOBMXD5cjs.devWarn.call(void 0,
6262
+ _chunkEH5KXQXYcjs.devWarn.call(void 0,
6293
6263
  `the block type "${type}" has a definition of its own, which only a read-only canvas draws. An editable canvas keeps drawing ${type} blocks itself, since they are typed into in place.`
6294
6264
  );
6295
6265
  }
@@ -6321,7 +6291,7 @@ var BlockCanvas = _react.forwardRef.call(void 0, function BlockCanvas2({
6321
6291
  const [voidEditing] = _react.useState.call(void 0, createVoidEditing);
6322
6292
  const [uiStore] = _react.useState.call(void 0, createCanvasUiStore);
6323
6293
  const [allExtensions] = _react.useState.call(void 0, () => [
6324
- ..._chunkPZ4GT5JOcjs.coreExtensions.call(void 0, ),
6294
+ ..._chunkZKVOS57Qcjs.coreExtensions.call(void 0, ),
6325
6295
  voidEditing.extension,
6326
6296
  blockMenuKeymap(uiStore),
6327
6297
  slashExtension(),
@@ -6334,7 +6304,7 @@ var BlockCanvas = _react.forwardRef.call(void 0, function BlockCanvas2({
6334
6304
  const ui = _react.useMemo.call(void 0, () => collectUi(allExtensions, blockTypes, readOnly), [allExtensions, blockTypes, readOnly]);
6335
6305
  useTypedInPlaceWarning(blockTypes, readOnly);
6336
6306
  const [focusOnMount] = _react.useState.call(void 0, autoFocus);
6337
- const controller = _chunkGTTPVJSDcjs.useQuoinEditor.call(void 0, {
6307
+ const controller = _chunkP6KYXFZCcjs.useQuoinEditor.call(void 0, {
6338
6308
  blocks,
6339
6309
  onChange,
6340
6310
  readOnly,
@@ -6378,7 +6348,7 @@ var BlockCanvas = _react.forwardRef.call(void 0, function BlockCanvas2({
6378
6348
  [controller, resolveAssetUrl]
6379
6349
  );
6380
6350
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, QuoinProvider, { value: { blockTypes, upload, resolveAssetUrl, onError, highlight, controller, labels }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, VoidEditingContext.Provider, { value: voidEditing, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SlashItemsProvider, { value: slashItems, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BubbleItemsProvider, { value: ui.bubbleItems, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CanvasUiProvider, { value: uiStore, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
6381
- _chunkGTTPVJSDcjs.EditorView,
6351
+ _chunkP6KYXFZCcjs.EditorView,
6382
6352
  {
6383
6353
  controller,
6384
6354
  renderers: ui.renderers,
@@ -6577,7 +6547,7 @@ function useAutosave({
6577
6547
  const seen = seenRef.current;
6578
6548
  seenRef.current = deps;
6579
6549
  if (seen === null) return;
6580
- const unchanged = _chunkND5XJVK2cjs.sameItems.call(void 0, seen, deps);
6550
+ const unchanged = _chunk4SLJNZSMcjs.sameItems.call(void 0, seen, deps);
6581
6551
  if (!unchanged) runner.markDirty();
6582
6552
  }, deps);
6583
6553
  React10.useEffect(() => {
@@ -6663,4 +6633,4 @@ function useAutosave({
6663
6633
 
6664
6634
 
6665
6635
  exports.englishLabels = englishLabels; exports.QuoinProvider = QuoinProvider; exports.useQuoin = useQuoin; exports.useLabels = useLabels; exports.coreBlocks = coreBlocks; exports.selectNode = selectNode; exports.focusNode = focusNode; exports.returnFocusToText = returnFocusToText; exports.cn = cn; exports.FOCUS_RING = FOCUS_RING; exports.FLOATING_TOOLBAR = FLOATING_TOOLBAR; exports.MENU_ITEM = MENU_ITEM; exports.runOnBlocks = runOnBlocks; exports.noChange = noChange; exports.styleTargets = styleTargets; exports.MenuIcon = MenuIcon; exports.formatShortcut = formatShortcut; exports.insertBlocks = insertBlocks; exports.insertBlockToWrite = insertBlockToWrite; exports.interceptKeys = interceptKeys; exports.Button = Button; exports.keepFocus = keepFocus; exports.Popover = Popover; exports.PopoverAnchor = PopoverAnchor; exports.PopoverContent = PopoverContent; exports.preventDefault = preventDefault; exports.FilePickerButton = FilePickerButton; exports.selectHandlers = selectHandlers; exports.useNodeKeys = useNodeKeys; exports.bubblePart = bubblePart; exports.virtualAnchor = virtualAnchor; exports.usePartAnchor = usePartAnchor; exports.useRovingFocus = useRovingFocus; exports.useFocusKey = useFocusKey; exports.linkAddress = linkAddress; exports.Input = Input; exports.useOutsidePress = useOutsidePress; exports.DropdownMenu = DropdownMenu; exports.DropdownMenuTrigger = DropdownMenuTrigger; exports.DropdownMenuContent = DropdownMenuContent; exports.DropdownMenuItem = DropdownMenuItem; exports.DropdownMenuCheckboxItem = DropdownMenuCheckboxItem; exports.DropdownMenuRadioGroup = DropdownMenuRadioGroup; exports.DropdownMenuRadioItem = DropdownMenuRadioItem; exports.DropdownMenuSeparator = DropdownMenuSeparator; exports.inlineDirection = inlineDirection; exports.resolveLabels = resolveLabels; exports.rangeRect = rangeRect; exports.suggestionPlugin = suggestionPlugin; exports.dismissSuggestion = dismissSuggestion; exports.useRangeAnchor = useRangeAnchor; exports.toError = toError; exports.SuggestionMenu = SuggestionMenu; exports.replaceTrigger = replaceTrigger; exports.blockFragment = blockFragment; exports.linkedBlockId = linkedBlockId; exports.BlockCanvas = BlockCanvas; exports.UploadField = UploadField; exports.useAutosave = useAutosave;
6666
- //# sourceMappingURL=chunk-2VDK27IF.cjs.map
6636
+ //# sourceMappingURL=chunk-CW3AFJBR.cjs.map