quoin-editor 1.2.2 → 1.3.0

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 (154) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/ai.cjs +65 -65
  3. package/dist/ai.d.cts +2 -2
  4. package/dist/ai.d.ts +2 -2
  5. package/dist/ai.js +4 -4
  6. package/dist/catalogue.cjs +20 -20
  7. package/dist/catalogue.d.cts +8 -8
  8. package/dist/catalogue.d.ts +8 -8
  9. package/dist/catalogue.js +12 -12
  10. package/dist/{chunk-SCFW4JFT.cjs → chunk-3YXV6LP7.cjs} +37 -37
  11. package/dist/{chunk-SCFW4JFT.cjs.map → chunk-3YXV6LP7.cjs.map} +1 -1
  12. package/dist/{chunk-DQV37F7J.cjs → chunk-5ILVILAJ.cjs} +66 -66
  13. package/dist/{chunk-DQV37F7J.cjs.map → chunk-5ILVILAJ.cjs.map} +1 -1
  14. package/dist/{chunk-CZ5ZXBWC.cjs → chunk-5MQ2AL7L.cjs} +217 -217
  15. package/dist/{chunk-CZ5ZXBWC.cjs.map → chunk-5MQ2AL7L.cjs.map} +1 -1
  16. package/dist/{chunk-TARBFPWC.js → chunk-5YQKKFYB.js} +6 -6
  17. package/dist/{chunk-TARBFPWC.js.map → chunk-5YQKKFYB.js.map} +1 -1
  18. package/dist/{chunk-KMIWUFNM.cjs → chunk-7RZNJR4J.cjs} +75 -75
  19. package/dist/{chunk-KMIWUFNM.cjs.map → chunk-7RZNJR4J.cjs.map} +1 -1
  20. package/dist/{chunk-A5LIN7FO.cjs → chunk-AY5ANGXK.cjs} +26 -26
  21. package/dist/{chunk-A5LIN7FO.cjs.map → chunk-AY5ANGXK.cjs.map} +1 -1
  22. package/dist/{chunk-ZVCBTQA3.cjs → chunk-AZF7B2AE.cjs} +10 -10
  23. package/dist/{chunk-ZVCBTQA3.cjs.map → chunk-AZF7B2AE.cjs.map} +1 -1
  24. package/dist/{chunk-4HFE3YFF.js → chunk-DGWAVYTO.js} +6 -6
  25. package/dist/{chunk-4HFE3YFF.js.map → chunk-DGWAVYTO.js.map} +1 -1
  26. package/dist/{chunk-BNUQ647G.js → chunk-FWETDMCE.js} +5 -5
  27. package/dist/{chunk-BNUQ647G.js.map → chunk-FWETDMCE.js.map} +1 -1
  28. package/dist/{chunk-25HNTVEI.js → chunk-G25FMFEZ.js} +3 -3
  29. package/dist/{chunk-25HNTVEI.js.map → chunk-G25FMFEZ.js.map} +1 -1
  30. package/dist/{chunk-35CHEARK.cjs → chunk-HRTIY6NY.cjs} +38 -38
  31. package/dist/{chunk-35CHEARK.cjs.map → chunk-HRTIY6NY.cjs.map} +1 -1
  32. package/dist/{chunk-YCVNFRL3.js → chunk-IJKGF6SC.js} +4 -4
  33. package/dist/{chunk-YCVNFRL3.js.map → chunk-IJKGF6SC.js.map} +1 -1
  34. package/dist/{chunk-KXOAV7AT.js → chunk-OS2O6IKX.js} +135 -12
  35. package/dist/chunk-OS2O6IKX.js.map +1 -0
  36. package/dist/{chunk-Y7UKOBSY.js → chunk-OZIRHN5H.js} +5 -5
  37. package/dist/{chunk-Y7UKOBSY.js.map → chunk-OZIRHN5H.js.map} +1 -1
  38. package/dist/{chunk-BR25RE7U.js → chunk-QGQFA5HD.js} +5 -5
  39. package/dist/{chunk-BR25RE7U.js.map → chunk-QGQFA5HD.js.map} +1 -1
  40. package/dist/{chunk-OGBD74IR.cjs → chunk-QJ34MOFV.cjs} +187 -117
  41. package/dist/chunk-QJ34MOFV.cjs.map +1 -0
  42. package/dist/{chunk-SAPLIQF2.js → chunk-QOIVLYMW.js} +4 -4
  43. package/dist/{chunk-SAPLIQF2.js.map → chunk-QOIVLYMW.js.map} +1 -1
  44. package/dist/{chunk-K7JEN3KT.cjs → chunk-QR2NIDUK.cjs} +4 -4
  45. package/dist/{chunk-K7JEN3KT.cjs.map → chunk-QR2NIDUK.cjs.map} +1 -1
  46. package/dist/{chunk-FOEEDJ5R.js → chunk-R5RI4SFY.js} +5 -5
  47. package/dist/{chunk-FOEEDJ5R.js.map → chunk-R5RI4SFY.js.map} +1 -1
  48. package/dist/{chunk-4D7HZRNC.js → chunk-R7MYG522.js} +3 -3
  49. package/dist/{chunk-4D7HZRNC.js.map → chunk-R7MYG522.js.map} +1 -1
  50. package/dist/{chunk-BJIWN7BQ.cjs → chunk-STKGRXSA.cjs} +10 -10
  51. package/dist/{chunk-BJIWN7BQ.cjs.map → chunk-STKGRXSA.cjs.map} +1 -1
  52. package/dist/{chunk-I7OOIEZZ.js → chunk-UWTU4V3G.js} +5 -5
  53. package/dist/{chunk-I7OOIEZZ.js.map → chunk-UWTU4V3G.js.map} +1 -1
  54. package/dist/{chunk-G37GQ5JE.cjs → chunk-VZZPCYA3.cjs} +135 -12
  55. package/dist/chunk-VZZPCYA3.cjs.map +1 -0
  56. package/dist/{chunk-JYKSWEXT.cjs → chunk-WN7BZDNH.cjs} +6 -6
  57. package/dist/{chunk-JYKSWEXT.cjs.map → chunk-WN7BZDNH.cjs.map} +1 -1
  58. package/dist/{chunk-5ANJW76W.cjs → chunk-X2CN6FXA.cjs} +20 -20
  59. package/dist/{chunk-5ANJW76W.cjs.map → chunk-X2CN6FXA.cjs.map} +1 -1
  60. package/dist/{chunk-CCOPHCXX.js → chunk-XFEDJEJF.js} +109 -39
  61. package/dist/chunk-XFEDJEJF.js.map +1 -0
  62. package/dist/{chunk-J552D3A7.js → chunk-YFPEJP6W.js} +4 -4
  63. package/dist/{chunk-J552D3A7.js.map → chunk-YFPEJP6W.js.map} +1 -1
  64. package/dist/{chunk-IGEWAL2J.cjs → chunk-YWYOLZWB.cjs} +29 -29
  65. package/dist/{chunk-IGEWAL2J.cjs.map → chunk-YWYOLZWB.cjs.map} +1 -1
  66. package/dist/comments.cjs +48 -48
  67. package/dist/comments.d.cts +2 -2
  68. package/dist/comments.d.ts +2 -2
  69. package/dist/comments.js +4 -4
  70. package/dist/diff.d.cts +2 -2
  71. package/dist/diff.d.ts +2 -2
  72. package/dist/docx.cjs +1 -1
  73. package/dist/docx.d.cts +1 -1
  74. package/dist/docx.d.ts +1 -1
  75. package/dist/docx.js +1 -1
  76. package/dist/embed.cjs +6 -6
  77. package/dist/embed.d.cts +2 -2
  78. package/dist/embed.d.ts +2 -2
  79. package/dist/embed.js +4 -4
  80. package/dist/{emoji-extension-CmPlRssm.d.ts → emoji-extension-W7WYXOxF.d.ts} +1 -1
  81. package/dist/{emoji-extension-zJ6F7hW8.d.cts → emoji-extension-j6FdAXPA.d.cts} +1 -1
  82. package/dist/emoji.cjs +7 -7
  83. package/dist/emoji.d.cts +4 -4
  84. package/dist/emoji.d.ts +4 -4
  85. package/dist/emoji.js +4 -4
  86. package/dist/engine.cjs +43 -43
  87. package/dist/engine.d.cts +5 -5
  88. package/dist/engine.d.ts +5 -5
  89. package/dist/engine.js +1 -1
  90. package/dist/{find-extension-CmFehyul.d.ts → find-extension-CwhUbnM7.d.ts} +1 -1
  91. package/dist/{find-extension-BcRyE9K4.d.cts → find-extension-DhVtoyGx.d.cts} +1 -1
  92. package/dist/find.cjs +8 -8
  93. package/dist/find.d.cts +3 -3
  94. package/dist/find.d.ts +3 -3
  95. package/dist/find.js +4 -4
  96. package/dist/headless.cjs +59 -59
  97. package/dist/headless.d.cts +7 -7
  98. package/dist/headless.d.ts +7 -7
  99. package/dist/headless.js +2 -2
  100. package/dist/{index-DiCGV60d.d.ts → index-CLSQdbjq.d.ts} +1 -1
  101. package/dist/{index-CFPmCee4.d.cts → index-KM5kJs7H.d.cts} +1 -1
  102. package/dist/index.cjs +71 -71
  103. package/dist/index.d.cts +7 -7
  104. package/dist/index.d.ts +7 -7
  105. package/dist/index.js +3 -3
  106. package/dist/math.cjs +7 -7
  107. package/dist/math.d.cts +3 -3
  108. package/dist/math.d.ts +3 -3
  109. package/dist/math.js +5 -5
  110. package/dist/mention.cjs +7 -7
  111. package/dist/mention.d.cts +2 -2
  112. package/dist/mention.d.ts +2 -2
  113. package/dist/mention.js +5 -5
  114. package/dist/presence.cjs +33 -33
  115. package/dist/presence.d.cts +3 -3
  116. package/dist/presence.d.ts +3 -3
  117. package/dist/presence.js +5 -5
  118. package/dist/{stats-extension-Dt1lgP3m.d.cts → stats-extension-ByKYtIB5.d.cts} +1 -1
  119. package/dist/{stats-extension-DisOEbbI.d.ts → stats-extension-DNEtte9E.d.ts} +1 -1
  120. package/dist/stats.cjs +7 -7
  121. package/dist/stats.d.cts +4 -4
  122. package/dist/stats.d.ts +4 -4
  123. package/dist/stats.js +4 -4
  124. package/dist/{table-extension-BTMJnT7J.d.ts → table-extension-BT6DTOXL.d.ts} +1 -1
  125. package/dist/{table-extension-DxZz3jqp.d.cts → table-extension-DuphgC4v.d.cts} +1 -1
  126. package/dist/table.cjs +23 -23
  127. package/dist/table.d.cts +3 -3
  128. package/dist/table.d.ts +3 -3
  129. package/dist/table.js +4 -4
  130. package/dist/{to-html-C5t7xyaM.d.ts → to-html-B_NwgPSz.d.ts} +1 -1
  131. package/dist/{to-html-CNCITCln.d.cts → to-html-DwhNK6-9.d.cts} +1 -1
  132. package/dist/{toc-extension-CR9U-l6j.d.ts → toc-extension-B0Datrvu.d.ts} +1 -1
  133. package/dist/{toc-extension-DGHywOBv.d.cts → toc-extension-RtMspT0A.d.cts} +1 -1
  134. package/dist/toc.cjs +7 -7
  135. package/dist/toc.d.cts +3 -3
  136. package/dist/toc.d.ts +3 -3
  137. package/dist/toc.js +4 -4
  138. package/dist/{types-DULc8wwg.d.ts → types-CQ8Vw_7N.d.cts} +27 -1
  139. package/dist/{types-DULc8wwg.d.cts → types-CQ8Vw_7N.d.ts} +27 -1
  140. package/dist/{types-C6_QkXzy.d.ts → types-DM6gsVga.d.cts} +2 -26
  141. package/dist/{types-CJ7Gq3GX.d.cts → types-rf9DGNaS.d.ts} +2 -26
  142. package/dist/{view-controller-cxQJ5rQb.d.cts → view-controller-BzXblb44.d.cts} +2 -2
  143. package/dist/{view-controller-zNqHm_Qg.d.ts → view-controller-CdzfG_xK.d.ts} +2 -2
  144. package/dist/view.d.cts +2 -2
  145. package/dist/view.d.ts +2 -2
  146. package/dist/yjs.cjs +99 -99
  147. package/dist/yjs.d.cts +4 -4
  148. package/dist/yjs.d.ts +4 -4
  149. package/dist/yjs.js +3 -3
  150. package/package.json +1 -1
  151. package/dist/chunk-CCOPHCXX.js.map +0 -1
  152. package/dist/chunk-G37GQ5JE.cjs.map +0 -1
  153. package/dist/chunk-KXOAV7AT.js.map +0 -1
  154. package/dist/chunk-OGBD74IR.cjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,23 @@
2
2
 
3
3
  Every release of `quoin-editor` is listed here, newest first, in the spirit of [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). From 1.0.0 the package follows [semantic versioning](https://semver.org/): a breaking change waits for the next major version. Until then, Quoin was 0.x and a minor version could contain breaking changes; those known at release were marked "Breaking". The 0.x sections are kept as they were released, "Docs" headings included. Moving from 0.4 to 1.0 is covered step by step in [MIGRATION.md](MIGRATION.md). Review finding ids such as F-17 are those of the 0.4.0 review in [#73](https://github.com/AmineSeboui/quoin-editor/issues/73).
4
4
 
5
+ ## 1.3.0 (2026-11-01)
6
+
7
+ ### Added
8
+ - `TextSelection` has a new optional `assoc`, `-1` for a caret drawn at the end of the line before a soft wrap. The editor sets it when ↑, ↓ or a click leaves the caret there; a host that never sets it sees the same selections as before. It is never written to step, document or Yjs JSON.
9
+
10
+ ### Changed
11
+ - Markdown shortcuts convert list items as well as paragraphs: `# `, `> `, `1. `, `- ` and `[] ` typed at the start of a bullet, a numbered item or a task turn it into that block and keep its indent, as in Notion. A prefix for the kind the item already is, such as `- ` in a bullet, stays text, and the divider, `$$ ` and code fence shortcuts still turn paragraphs only.
12
+
13
+ ### Fixed
14
+ - The undo history survives a change the editor does not record, such as a new `blocks` array, a transaction with `addToHistory: false` or a remote change without a collaboration history, where it was cleared. Undo and redo carry the writer's edits over that change and never remove text it added; an edit whose text it removed or rewrote is dropped, and older edits still undo. A Yjs collaboration keeps its own history as before.
15
+ - ↑ and ↓ keep the caret on the line they move to where a soft wrap ends it. With the caret's horizontal position past the end of a wrapped line, the caret was drawn at the start of the next line in some cases, and typed text started the next line; the caret now stops before the space the line wraps at, or, where it wraps after another character such as a hyphen, is drawn at the end of the line. A click past the end of a wrapped line keeps that side too, so the next ↑ or ↓ starts from the line clicked.
16
+
17
+ ## 1.2.3 (2026-11-01)
18
+
19
+ ### Fixed
20
+ - Nothing in the package changes from 1.2.2. The test that bounds the work done when a collaborator retypes a block counts the blocks it reads instead of timing them, so a release no longer fails on a slow runner.
21
+
5
22
  ## 1.2.2 (2026-11-01)
6
23
 
7
24
  ### Fixed
package/dist/ai.cjs CHANGED
@@ -2,11 +2,11 @@
2
2
  'use strict';
3
3
 
4
4
  var chunkLE5XMIFJ_cjs = require('./chunk-LE5XMIFJ.cjs');
5
- var chunkK7JEN3KT_cjs = require('./chunk-K7JEN3KT.cjs');
6
- var chunkCZ5ZXBWC_cjs = require('./chunk-CZ5ZXBWC.cjs');
7
- var chunkOGBD74IR_cjs = require('./chunk-OGBD74IR.cjs');
5
+ var chunkQR2NIDUK_cjs = require('./chunk-QR2NIDUK.cjs');
6
+ var chunk5MQ2AL7L_cjs = require('./chunk-5MQ2AL7L.cjs');
7
+ var chunkQJ34MOFV_cjs = require('./chunk-QJ34MOFV.cjs');
8
8
  require('./chunk-A6PGQVTR.cjs');
9
- var chunkG37GQ5JE_cjs = require('./chunk-G37GQ5JE.cjs');
9
+ var chunkVZZPCYA3_cjs = require('./chunk-VZZPCYA3.cjs');
10
10
  require('./chunk-BM2GRZNM.cjs');
11
11
  var chunkWZA5S5EJ_cjs = require('./chunk-WZA5S5EJ.cjs');
12
12
  var lucideReact = require('lucide-react');
@@ -113,21 +113,21 @@ function targetOfBlocks(state, ids) {
113
113
  const first = chunkWZA5S5EJ_cjs.blockById(doc, ids[0]);
114
114
  const last = chunkWZA5S5EJ_cjs.blockById(doc, ids[ids.length - 1]);
115
115
  if (first === void 0 || last === void 0) return null;
116
- const start = chunkG37GQ5JE_cjs.primaryRegion(schema, first);
117
- const end = chunkG37GQ5JE_cjs.primaryRegion(schema, last);
116
+ const start = chunkVZZPCYA3_cjs.primaryRegion(schema, first);
117
+ const end = chunkVZZPCYA3_cjs.primaryRegion(schema, last);
118
118
  if (start === null || end === null) return null;
119
119
  const from = { block: first.id, region: start, offset: 0 };
120
- return { from, to: { block: last.id, region: end, offset: chunkG37GQ5JE_cjs.regionLength(last, end) }, selected: ids.length > 1 };
120
+ return { from, to: { block: last.id, region: end, offset: chunkVZZPCYA3_cjs.regionLength(last, end) }, selected: ids.length > 1 };
121
121
  }
122
122
  function targetOfSelection(state) {
123
123
  const { doc, selection } = state;
124
124
  if (selection === null) return null;
125
- if (selection.kind !== "text") return targetOfBlocks(state, chunkG37GQ5JE_cjs.selectedBlockIds(doc, selection));
126
- const { from, to } = chunkG37GQ5JE_cjs.orderedRange(doc, selection.anchor, selection.head);
127
- if (chunkG37GQ5JE_cjs.comparePos(doc, from, to) !== 0) return { from, to, selected: true };
125
+ if (selection.kind !== "text") return targetOfBlocks(state, chunkVZZPCYA3_cjs.selectedBlockIds(doc, selection));
126
+ const { from, to } = chunkVZZPCYA3_cjs.orderedRange(doc, selection.anchor, selection.head);
127
+ if (chunkVZZPCYA3_cjs.comparePos(doc, from, to) !== 0) return { from, to, selected: true };
128
128
  const block = doc.blocks[doc.index.get(from.block)];
129
129
  const whole = { block: from.block, region: from.region };
130
- return { from: { ...whole, offset: 0 }, to: { ...whole, offset: chunkG37GQ5JE_cjs.regionLength(block, from.region) }, selected: false };
130
+ return { from: { ...whole, offset: 0 }, to: { ...whole, offset: chunkVZZPCYA3_cjs.regionLength(block, from.region) }, selected: false };
131
131
  }
132
132
  function nearestKept(tr, target) {
133
133
  const { doc } = tr.before;
@@ -144,8 +144,8 @@ function edgeOf(tr, target) {
144
144
  const point = tr.mapPos(target.from, -1);
145
145
  const block = chunkWZA5S5EJ_cjs.blockById(tr.doc, point.block) ?? nearestKept(tr, target);
146
146
  if (block === void 0) return null;
147
- const region = chunkG37GQ5JE_cjs.primaryRegion(tr.before.schema, block) ?? "";
148
- const length = region === "" ? 0 : chunkG37GQ5JE_cjs.regionLength(block, region);
147
+ const region = chunkVZZPCYA3_cjs.primaryRegion(tr.before.schema, block) ?? "";
148
+ const length = region === "" ? 0 : chunkVZZPCYA3_cjs.regionLength(block, region);
149
149
  const offset = block.id === point.block ? Math.min(point.offset, length) : length;
150
150
  const after = offset > 0 || length === 0;
151
151
  const at = { block: block.id, region, offset: after ? length : 0 };
@@ -157,29 +157,29 @@ function mapTarget(tr, target) {
157
157
  const from = tr.mapPos(target.from, inside);
158
158
  const mapped2 = tr.mapPos(target.to, -inside);
159
159
  if (!tr.doc.index.has(from.block) || !tr.doc.index.has(mapped2.block)) return edgeOf(tr, target);
160
- const to = chunkG37GQ5JE_cjs.comparePos(tr.doc, from, mapped2) > 0 ? from : mapped2;
160
+ const to = chunkVZZPCYA3_cjs.comparePos(tr.doc, from, mapped2) > 0 ? from : mapped2;
161
161
  return from === target.from && to === target.to ? target : { ...target, from, to };
162
162
  }
163
- var targetGone = (doc, target) => target.lost !== void 0 || target.selected && chunkG37GQ5JE_cjs.comparePos(doc, target.from, target.to) === 0;
163
+ var targetGone = (doc, target) => target.lost !== void 0 || target.selected && chunkVZZPCYA3_cjs.comparePos(doc, target.from, target.to) === 0;
164
164
  function targetRanges(state, { from, to }) {
165
165
  const { doc, schema } = state;
166
166
  const start = doc.index.get(from.block);
167
167
  const end = doc.index.get(to.block);
168
168
  return doc.blocks.slice(start, end + 1).flatMap((block, i) => {
169
- const region = i === 0 ? from.region : block.id === to.block ? to.region : chunkG37GQ5JE_cjs.primaryRegion(schema, block);
169
+ const region = i === 0 ? from.region : block.id === to.block ? to.region : chunkVZZPCYA3_cjs.primaryRegion(schema, block);
170
170
  if (region === null || !Object.hasOwn(block.regions, region)) return [];
171
171
  const left = i === 0 ? from.offset : 0;
172
- const right = block.id === to.block ? to.offset : chunkG37GQ5JE_cjs.regionLength(block, region);
172
+ const right = block.id === to.block ? to.offset : chunkVZZPCYA3_cjs.regionLength(block, region);
173
173
  return right > left ? [{ block: block.id, region, from: left, to: right }] : [];
174
174
  });
175
175
  }
176
176
 
177
177
  // src/extensions/ai/ai-plugin.ts
178
- var aiKey = chunkG37GQ5JE_cjs.createPluginKey("ai");
178
+ var aiKey = chunkVZZPCYA3_cjs.createPluginKey("ai");
179
179
  var AI = "ai";
180
180
  var IDLE = { target: null, menu: null, ghost: null, held: [] };
181
- var aiState = (state) => chunkG37GQ5JE_cjs.getPluginState(state, aiKey);
182
- var aiTransaction = (state, act2) => new chunkG37GQ5JE_cjs.Transaction(state).setMeta(AI, act2).setMeta("addToHistory", false);
181
+ var aiState = (state) => chunkVZZPCYA3_cjs.getPluginState(state, aiKey);
182
+ var aiTransaction = (state, act2) => new chunkVZZPCYA3_cjs.Transaction(state).setMeta(AI, act2).setMeta("addToHistory", false);
183
183
  function written(ghost, key, phase, output) {
184
184
  return ghost.key !== key ? ghost : { ...ghost, phase, output, shown: closeStreaming(output) };
185
185
  }
@@ -212,7 +212,7 @@ function caretBlock(state) {
212
212
  }
213
213
  function hasText(state, id) {
214
214
  const block = chunkWZA5S5EJ_cjs.blockById(state.doc, id);
215
- return block !== void 0 && Object.keys(block.regions).some((region) => chunkG37GQ5JE_cjs.regionLength(block, region) > 0);
215
+ return block !== void 0 && Object.keys(block.regions).some((region) => chunkVZZPCYA3_cjs.regionLength(block, region) > 0);
216
216
  }
217
217
  function heldText(tr, value, before, after) {
218
218
  if (!tr.docChanged) return value.held;
@@ -310,9 +310,9 @@ function aroundSelection(text, start, end, limit = CONTEXT_LIMIT) {
310
310
  }
311
311
  var WHITESPACE_ENTITY = /(?<!\\)&#(32|9);/g;
312
312
  var plain = (markdown) => markdown.replace(WHITESPACE_ENTITY, (_, code) => code === "32" ? " " : " ");
313
- var markdownOf = (state, blocks) => chunkG37GQ5JE_cjs.toMarkdown(blocks, { schema: state.schema, comments: false });
313
+ var markdownOf = (state, blocks) => chunkVZZPCYA3_cjs.toMarkdown(blocks, { schema: state.schema, comments: false });
314
314
  function rangeMarkdown(state, from, to) {
315
- const slice = chunkG37GQ5JE_cjs.sliceFromSelection({ ...state, selection: chunkG37GQ5JE_cjs.textSelection(from, to) }, chunkWZA5S5EJ_cjs.createBlockCodec(state.schema));
315
+ const slice = chunkVZZPCYA3_cjs.sliceFromSelection({ ...state, selection: chunkVZZPCYA3_cjs.textSelection(from, to) }, chunkWZA5S5EJ_cjs.createBlockCodec(state.schema));
316
316
  return slice === null ? "" : markdownOf(state, slice.blocks).replace(/\n$/, "");
317
317
  }
318
318
  function documentContext(state, target, selection) {
@@ -377,7 +377,7 @@ async function read(editor, link, run, stream, request) {
377
377
  } catch (error) {
378
378
  if (!live()) return;
379
379
  end("error");
380
- link.report(chunkCZ5ZXBWC_cjs.toError(error));
380
+ link.report(chunk5MQ2AL7L_cjs.toError(error));
381
381
  }
382
382
  }
383
383
  function startStream(editor, link, stream, request, replace) {
@@ -552,11 +552,11 @@ function resolveAiLabels(overrides) {
552
552
  var openOnSpace = (state, dispatch) => {
553
553
  const { selection, doc } = state;
554
554
  const ai = aiState(state);
555
- if (selection?.kind !== "text" || !chunkG37GQ5JE_cjs.isCollapsed(selection) || ai.menu !== null || ai.ghost !== null) return false;
555
+ if (selection?.kind !== "text" || !chunkVZZPCYA3_cjs.isCollapsed(selection) || ai.menu !== null || ai.ghost !== null) return false;
556
556
  const { head } = selection;
557
557
  const block = doc.blocks[doc.index.get(head.block)];
558
558
  const paragraph = block.type === "MARKDOWN" && block.attrs.kind === "paragraph";
559
- if (!paragraph || chunkG37GQ5JE_cjs.regionLength(block, head.region) > 0 || ai.held.includes(block.id)) return false;
559
+ if (!paragraph || chunkVZZPCYA3_cjs.regionLength(block, head.region) > 0 || ai.held.includes(block.id)) return false;
560
560
  dispatch?.(aiTransaction(state, { type: "open", target: { from: head, to: head, selected: false }, fromSpace: true }));
561
561
  return true;
562
562
  };
@@ -566,11 +566,11 @@ var isParagraph = (block) => block?.type === "MARKDOWN" && chunkWZA5S5EJ_cjs.par
566
566
  var DISCARD = { type: "discard" };
567
567
  function insertBeside(tr, schema, target, pieces, makeId) {
568
568
  const index = tr.doc.index.get(target.to.block);
569
- const at = target.lost?.after ? chunkG37GQ5JE_cjs.descendantsEnd(tr.doc, index) : index;
570
- const fresh = chunkG37GQ5JE_cjs.freshBlocks(pieces, tr.doc.blocks[index].indent, makeId);
571
- tr.step(chunkG37GQ5JE_cjs.insertBlocksStep(at, fresh));
572
- chunkG37GQ5JE_cjs.capIndents(tr, at, at + fresh.length);
573
- tr.setSelection(chunkG37GQ5JE_cjs.endOf(tr.doc, schema, fresh[fresh.length - 1].id));
569
+ const at = target.lost?.after ? chunkVZZPCYA3_cjs.descendantsEnd(tr.doc, index) : index;
570
+ const fresh = chunkVZZPCYA3_cjs.freshBlocks(pieces, tr.doc.blocks[index].indent, makeId);
571
+ tr.step(chunkVZZPCYA3_cjs.insertBlocksStep(at, fresh));
572
+ chunkVZZPCYA3_cjs.capIndents(tr, at, at + fresh.length);
573
+ tr.setSelection(chunkVZZPCYA3_cjs.endOf(tr.doc, schema, fresh[fresh.length - 1].id));
574
574
  }
575
575
  function acceptAnswer(editor) {
576
576
  const { state } = editor;
@@ -588,12 +588,12 @@ function acceptAnswer(editor) {
588
588
  const { schema } = state;
589
589
  const open = { openStart: isParagraph(blocks[0]), openEnd: isParagraph(blocks[blocks.length - 1]) };
590
590
  if (ghost.replace || gone) {
591
- const caret = ghost.replace && !gone ? chunkG37GQ5JE_cjs.deleteRange(tr, schema, target.from, target.to, makeId) : target.to;
592
- chunkG37GQ5JE_cjs.pasteAtCaret(tr, schema, caret, open, pieces, makeId);
591
+ const caret = ghost.replace && !gone ? chunkVZZPCYA3_cjs.deleteRange(tr, schema, target.from, target.to, makeId) : target.to;
592
+ chunkVZZPCYA3_cjs.pasteAtCaret(tr, schema, caret, open, pieces, makeId);
593
593
  } else {
594
594
  const block = tr.doc.blocks[tr.doc.index.get(target.to.block)];
595
- const end = { ...target.to, offset: chunkG37GQ5JE_cjs.regionLength(block, target.to.region) };
596
- chunkG37GQ5JE_cjs.pasteAtCaret(tr, schema, end, { openStart: false, openEnd: false }, pieces, makeId);
595
+ const end = { ...target.to, offset: chunkVZZPCYA3_cjs.regionLength(block, target.to.region) };
596
+ chunkVZZPCYA3_cjs.pasteAtCaret(tr, schema, end, { openStart: false, openEnd: false }, pieces, makeId);
597
597
  }
598
598
  }
599
599
  editor.dispatch(tr);
@@ -608,12 +608,12 @@ function AiBar({ env, ghost, gone, barId }) {
608
608
  const [next, setNext] = react.useState("");
609
609
  const { phase } = ghost;
610
610
  const focusPrimary = () => content.current?.querySelector(`[${PRIMARY}]`)?.focus();
611
- chunkOGBD74IR_cjs.useIsomorphicLayoutEffect(() => {
611
+ chunkQJ34MOFV_cjs.useIsomorphicLayoutEffect(() => {
612
612
  const active = content.current?.ownerDocument.activeElement;
613
613
  inside.current = active == null || active === active.ownerDocument.body;
614
614
  if (inside.current) focusPrimary();
615
615
  }, []);
616
- chunkOGBD74IR_cjs.useIsomorphicLayoutEffect(() => {
616
+ chunkQJ34MOFV_cjs.useIsomorphicLayoutEffect(() => {
617
617
  const active = content.current?.ownerDocument.activeElement;
618
618
  if (inside.current && !content.current?.contains(active ?? null)) focusPrimary();
619
619
  }, [phase, ghost.key]);
@@ -661,21 +661,21 @@ function AiBar({ env, ghost, gone, barId }) {
661
661
  children: [
662
662
  phase === "streaming" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
663
663
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground", children: labels.writing }),
664
- /* @__PURE__ */ jsxRuntime.jsx(chunkCZ5ZXBWC_cjs.Button, { ...primary, size: "sm", variant: "outline", onClick: () => stop(editor), children: labels.stop })
664
+ /* @__PURE__ */ jsxRuntime.jsx(chunk5MQ2AL7L_cjs.Button, { ...primary, size: "sm", variant: "outline", onClick: () => stop(editor), children: labels.stop })
665
665
  ] }),
666
666
  phase === "error" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
667
667
  /* @__PURE__ */ jsxRuntime.jsx("p", { role: "alert", className: "text-sm text-destructive", children: labels.failed }),
668
- /* @__PURE__ */ jsxRuntime.jsx(chunkCZ5ZXBWC_cjs.Button, { ...primary, size: "sm", onClick: () => retry(editor, stream), children: labels.retry }),
669
- /* @__PURE__ */ jsxRuntime.jsx(chunkCZ5ZXBWC_cjs.Button, { size: "sm", variant: "ghost", onClick: onDiscard, children: labels.discard })
668
+ /* @__PURE__ */ jsxRuntime.jsx(chunk5MQ2AL7L_cjs.Button, { ...primary, size: "sm", onClick: () => retry(editor, stream), children: labels.retry }),
669
+ /* @__PURE__ */ jsxRuntime.jsx(chunk5MQ2AL7L_cjs.Button, { size: "sm", variant: "ghost", onClick: onDiscard, children: labels.discard })
670
670
  ] }),
671
671
  (phase === "done" || phase === "stopped") && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
672
672
  phase === "stopped" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground", children: labels.stopped }),
673
673
  gone && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "w-full text-xs text-muted-foreground", children: labels.targetGone }),
674
- /* @__PURE__ */ jsxRuntime.jsx(chunkCZ5ZXBWC_cjs.Button, { ...primary, size: "sm", onClick: onAccept, children: labels.accept }),
675
- /* @__PURE__ */ jsxRuntime.jsx(chunkCZ5ZXBWC_cjs.Button, { size: "sm", variant: "ghost", onClick: onDiscard, children: labels.discard }),
676
- /* @__PURE__ */ jsxRuntime.jsx(chunkCZ5ZXBWC_cjs.Button, { size: "sm", variant: "ghost", onClick: () => retry(editor, stream), children: labels.retry }),
674
+ /* @__PURE__ */ jsxRuntime.jsx(chunk5MQ2AL7L_cjs.Button, { ...primary, size: "sm", onClick: onAccept, children: labels.accept }),
675
+ /* @__PURE__ */ jsxRuntime.jsx(chunk5MQ2AL7L_cjs.Button, { size: "sm", variant: "ghost", onClick: onDiscard, children: labels.discard }),
676
+ /* @__PURE__ */ jsxRuntime.jsx(chunk5MQ2AL7L_cjs.Button, { size: "sm", variant: "ghost", onClick: () => retry(editor, stream), children: labels.retry }),
677
677
  /* @__PURE__ */ jsxRuntime.jsx("form", { className: "w-full", onSubmit: onFollowUp, children: /* @__PURE__ */ jsxRuntime.jsx(
678
- chunkCZ5ZXBWC_cjs.Input,
678
+ chunk5MQ2AL7L_cjs.Input,
679
679
  {
680
680
  "aria-label": labels.followUp,
681
681
  placeholder: labels.followUp,
@@ -712,9 +712,9 @@ function fillGhost(ghost, markdown) {
712
712
  element.dataset.kind = String(piece.attrs.kind ?? piece.type.toLowerCase());
713
713
  if (piece.attrs.level !== void 0) element.dataset.level = String(piece.attrs.level);
714
714
  if (piece.indent > 0) element.style.setProperty("--quoin-ai-indent", String(piece.indent));
715
- const region = chunkG37GQ5JE_cjs.primaryRegion(schema, piece);
716
- if (region === null) element.textContent = chunkG37GQ5JE_cjs.toPlainText([codec.toQuoin(piece)], { schema });
717
- else chunkOGBD74IR_cjs.renderInline(element, piece.regions[region], []);
715
+ const region = chunkVZZPCYA3_cjs.primaryRegion(schema, piece);
716
+ if (region === null) element.textContent = chunkVZZPCYA3_cjs.toPlainText([codec.toQuoin(piece)], { schema });
717
+ else chunkQJ34MOFV_cjs.renderInline(element, piece.regions[region], []);
718
718
  drawn2.push(element);
719
719
  }
720
720
  }
@@ -791,7 +791,7 @@ function clipAside(layer, text, areas, scale) {
791
791
  function useGhostPlace(controller, layer, block, region) {
792
792
  const placeNow = react.useRef(() => {
793
793
  });
794
- chunkOGBD74IR_cjs.useIsomorphicLayoutEffect(() => {
794
+ chunkQJ34MOFV_cjs.useIsomorphicLayoutEffect(() => {
795
795
  const root = controller.root;
796
796
  const element = layer.current;
797
797
  const view = root?.ownerDocument.defaultView;
@@ -830,7 +830,7 @@ function AiGhost({ env, ghost, target, gone, barId }) {
830
830
  const layer = react.useRef(null);
831
831
  const drawn2 = react.useRef(null);
832
832
  const place2 = useGhostPlace(env.controller, layer, target.to.block, target.to.region);
833
- chunkOGBD74IR_cjs.useIsomorphicLayoutEffect(() => {
833
+ chunkQJ34MOFV_cjs.useIsomorphicLayoutEffect(() => {
834
834
  const element = drawn2.current;
835
835
  if (element === null) return;
836
836
  element.setAttribute("inert", "");
@@ -844,7 +844,7 @@ function AiGhost({ env, ghost, target, gone, barId }) {
844
844
  }
845
845
  function useTargetAnchor(controller, target) {
846
846
  const latest = react.useRef(target);
847
- chunkOGBD74IR_cjs.useIsomorphicLayoutEffect(() => {
847
+ chunkQJ34MOFV_cjs.useIsomorphicLayoutEffect(() => {
848
848
  latest.current = target;
849
849
  });
850
850
  return react.useMemo(() => {
@@ -853,8 +853,8 @@ function useTargetAnchor(controller, target) {
853
853
  return { block: to.block, region: to.region, from: to.offset, to: to.offset };
854
854
  };
855
855
  return {
856
- current: chunkCZ5ZXBWC_cjs.virtualAnchor(
857
- () => chunkCZ5ZXBWC_cjs.rangeRect(controller, end()),
856
+ current: chunk5MQ2AL7L_cjs.virtualAnchor(
857
+ () => chunk5MQ2AL7L_cjs.rangeRect(controller, end()),
858
858
  () => controller.registry.get(end().block, end().region)
859
859
  )
860
860
  };
@@ -908,7 +908,7 @@ function AiMenu({ env, target, fromSpace }) {
908
908
  };
909
909
  const fieldLabel = asking === "tone" ? labels.tonePrompt : asking === "translate" ? labels.translatePrompt : labels.prompt;
910
910
  return /* @__PURE__ */ jsxRuntime.jsxs(
911
- chunkCZ5ZXBWC_cjs.Popover,
911
+ chunk5MQ2AL7L_cjs.Popover,
912
912
  {
913
913
  open: true,
914
914
  modal: false,
@@ -916,9 +916,9 @@ function AiMenu({ env, target, fromSpace }) {
916
916
  if (!next) closeMenu(controller.editor);
917
917
  },
918
918
  children: [
919
- /* @__PURE__ */ jsxRuntime.jsx(chunkCZ5ZXBWC_cjs.PopoverAnchor, { virtualRef: anchor }),
919
+ /* @__PURE__ */ jsxRuntime.jsx(chunk5MQ2AL7L_cjs.PopoverAnchor, { virtualRef: anchor }),
920
920
  /* @__PURE__ */ jsxRuntime.jsxs(
921
- chunkCZ5ZXBWC_cjs.PopoverContent,
921
+ chunk5MQ2AL7L_cjs.PopoverContent,
922
922
  {
923
923
  "aria-label": labels.askAi,
924
924
  side: "bottom",
@@ -935,7 +935,7 @@ function AiMenu({ env, target, fromSpace }) {
935
935
  },
936
936
  children: [
937
937
  /* @__PURE__ */ jsxRuntime.jsx(
938
- chunkCZ5ZXBWC_cjs.Input,
938
+ chunk5MQ2AL7L_cjs.Input,
939
939
  {
940
940
  ref: field,
941
941
  role: "combobox",
@@ -959,7 +959,7 @@ function AiMenu({ env, target, fromSpace }) {
959
959
  id: optionId(index),
960
960
  role: "option",
961
961
  "aria-selected": index === current,
962
- className: chunkCZ5ZXBWC_cjs.cn(chunkCZ5ZXBWC_cjs.MENU_ITEM, index === current && "bg-accent text-accent-foreground"),
962
+ className: chunk5MQ2AL7L_cjs.cn(chunk5MQ2AL7L_cjs.MENU_ITEM, index === current && "bg-accent text-accent-foreground"),
963
963
  onMouseDown: (event) => event.preventDefault(),
964
964
  onClick: () => choose(choice),
965
965
  children: choice.label
@@ -977,17 +977,17 @@ var goneOf = (state) => {
977
977
  const { target, ghost } = aiState(state);
978
978
  return target !== null && ghost !== null && targetGone(state.doc, target);
979
979
  };
980
- var plainText = (markdown) => chunkG37GQ5JE_cjs.toPlainText(chunkWZA5S5EJ_cjs.fromMarkdown(markdown));
980
+ var plainText = (markdown) => chunkVZZPCYA3_cjs.toPlainText(chunkWZA5S5EJ_cjs.fromMarkdown(markdown));
981
981
  function AiOverlay({ controller, stream, labels }) {
982
- const { onError } = chunkCZ5ZXBWC_cjs.useQuoin();
982
+ const { onError } = chunk5MQ2AL7L_cjs.useQuoin();
983
983
  const link = linkOf(controller.editor);
984
- chunkOGBD74IR_cjs.useIsomorphicLayoutEffect(() => {
984
+ chunkQJ34MOFV_cjs.useIsomorphicLayoutEffect(() => {
985
985
  link.report = onError;
986
986
  link.ended = (phase, output) => controller.announce((phase === "done" ? labels.written : labels.halted)(plainText(output)));
987
987
  }, [link, onError, controller, labels]);
988
- const value = chunkOGBD74IR_cjs.useEditorState(controller, aiState);
989
- const gone = chunkOGBD74IR_cjs.useEditorState(controller, goneOf);
990
- const readOnly = chunkOGBD74IR_cjs.useReadOnly(controller);
988
+ const value = chunkQJ34MOFV_cjs.useEditorState(controller, aiState);
989
+ const gone = chunkQJ34MOFV_cjs.useEditorState(controller, goneOf);
990
+ const readOnly = chunkQJ34MOFV_cjs.useReadOnly(controller);
991
991
  const env = react.useMemo(() => ({ controller, stream, labels }), [controller, stream, labels]);
992
992
  const barId = react.useId();
993
993
  const showing = value.ghost !== null;
@@ -1006,7 +1006,7 @@ function AiOverlay({ controller, stream, labels }) {
1006
1006
  const root = controller.root;
1007
1007
  if (!root) return;
1008
1008
  let away = true;
1009
- return chunkK7JEN3KT_cjs.watchCanvasFocus(controller, root.ownerDocument, (inside, node) => {
1009
+ return chunkQR2NIDUK_cjs.watchCanvasFocus(controller, root.ownerDocument, (inside, node) => {
1010
1010
  if (!inside) away = true;
1011
1011
  else if (root.contains(node)) {
1012
1012
  if (away) noteFocus(controller.editor);
@@ -1042,7 +1042,7 @@ function aiExtension(options) {
1042
1042
  blockMenuItems: [aiBlockMenuItem(labels)],
1043
1043
  overlays: [Overlay]
1044
1044
  };
1045
- return chunkG37GQ5JE_cjs.defineExtension({
1045
+ return chunkVZZPCYA3_cjs.defineExtension({
1046
1046
  name: "ai",
1047
1047
  plugins: [aiPlugin],
1048
1048
  decorations: aiDecorations,
package/dist/ai.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { E as Extension } from './types-CJ7Gq3GX.cjs';
2
- import './types-DULc8wwg.cjs';
1
+ import { E as Extension } from './types-DM6gsVga.cjs';
2
+ import './types-CQ8Vw_7N.cjs';
3
3
 
4
4
  type AiAction = 'continue' | 'improve' | 'fix' | 'shorten' | 'lengthen' | 'simplify' | 'tone' | 'translate' | 'summarize' | 'explain' | 'custom';
5
5
  /** What the host is asked: `selection` and `context` are markdown, `language` the canvas's `lang` when it has one. */
package/dist/ai.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { E as Extension } from './types-C6_QkXzy.js';
2
- import './types-DULc8wwg.js';
1
+ import { E as Extension } from './types-rf9DGNaS.js';
2
+ import './types-CQ8Vw_7N.js';
3
3
 
4
4
  type AiAction = 'continue' | 'improve' | 'fix' | 'shorten' | 'lengthen' | 'simplify' | 'tone' | 'translate' | 'summarize' | 'explain' | 'custom';
5
5
  /** What the host is asked: `selection` and `context` are markdown, `language` the canvas's `lang` when it has one. */
package/dist/ai.js CHANGED
@@ -1,10 +1,10 @@
1
1
  'use client';
2
2
  import { clipBoxes } from './chunk-MQUCCSWG.js';
3
- import { watchCanvasFocus } from './chunk-4D7HZRNC.js';
4
- import { useQuoin, Popover, PopoverAnchor, PopoverContent, Input, cn, MENU_ITEM, virtualAnchor, rangeRect, Button, toError } from './chunk-J552D3A7.js';
5
- import { useIsomorphicLayoutEffect, useEditorState, useReadOnly, renderInline } from './chunk-CCOPHCXX.js';
3
+ import { watchCanvasFocus } from './chunk-R7MYG522.js';
4
+ import { useQuoin, Popover, PopoverAnchor, PopoverContent, Input, cn, MENU_ITEM, virtualAnchor, rangeRect, Button, toError } from './chunk-YFPEJP6W.js';
5
+ import { useIsomorphicLayoutEffect, useEditorState, useReadOnly, renderInline } from './chunk-XFEDJEJF.js';
6
6
  import './chunk-HDJ653LM.js';
7
- import { createPluginKey, defineExtension, isCollapsed, regionLength, primaryRegion, getPluginState, Transaction, toPlainText, selectedBlockIds, orderedRange, comparePos, sliceFromSelection, textSelection, deleteRange, pasteAtCaret, toMarkdown, descendantsEnd, freshBlocks, insertBlocksStep, capIndents, endOf } from './chunk-KXOAV7AT.js';
7
+ import { createPluginKey, defineExtension, isCollapsed, regionLength, primaryRegion, getPluginState, Transaction, toPlainText, selectedBlockIds, orderedRange, comparePos, sliceFromSelection, textSelection, deleteRange, pasteAtCaret, toMarkdown, descendantsEnd, freshBlocks, insertBlocksStep, capIndents, endOf } from './chunk-OS2O6IKX.js';
8
8
  import './chunk-CSKKSXCE.js';
9
9
  import { blockById, fromMarkdown, createSchema, createBlockCodec, parseLine } from './chunk-BJTOLCRR.js';
10
10
  import { Sparkles, PenLine } from 'lucide-react';
@@ -1,21 +1,21 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkSCFW4JFT_cjs = require('./chunk-SCFW4JFT.cjs');
5
- var chunkBJIWN7BQ_cjs = require('./chunk-BJIWN7BQ.cjs');
6
- var chunkKMIWUFNM_cjs = require('./chunk-KMIWUFNM.cjs');
7
- var chunkDQV37F7J_cjs = require('./chunk-DQV37F7J.cjs');
8
- var chunk35CHEARK_cjs = require('./chunk-35CHEARK.cjs');
4
+ var chunk3YXV6LP7_cjs = require('./chunk-3YXV6LP7.cjs');
5
+ var chunkSTKGRXSA_cjs = require('./chunk-STKGRXSA.cjs');
6
+ var chunk7RZNJR4J_cjs = require('./chunk-7RZNJR4J.cjs');
7
+ var chunk5ILVILAJ_cjs = require('./chunk-5ILVILAJ.cjs');
8
+ var chunkHRTIY6NY_cjs = require('./chunk-HRTIY6NY.cjs');
9
9
  require('./chunk-XZ4NC3Q7.cjs');
10
- var chunk5ANJW76W_cjs = require('./chunk-5ANJW76W.cjs');
11
- var chunkA5LIN7FO_cjs = require('./chunk-A5LIN7FO.cjs');
10
+ var chunkX2CN6FXA_cjs = require('./chunk-X2CN6FXA.cjs');
11
+ var chunkAY5ANGXK_cjs = require('./chunk-AY5ANGXK.cjs');
12
12
  require('./chunk-H3C3MJW5.cjs');
13
- require('./chunk-ZVCBTQA3.cjs');
14
- var chunkIGEWAL2J_cjs = require('./chunk-IGEWAL2J.cjs');
15
- require('./chunk-CZ5ZXBWC.cjs');
16
- require('./chunk-OGBD74IR.cjs');
13
+ require('./chunk-AZF7B2AE.cjs');
14
+ var chunkYWYOLZWB_cjs = require('./chunk-YWYOLZWB.cjs');
15
+ require('./chunk-5MQ2AL7L.cjs');
16
+ require('./chunk-QJ34MOFV.cjs');
17
17
  require('./chunk-A6PGQVTR.cjs');
18
- require('./chunk-G37GQ5JE.cjs');
18
+ require('./chunk-VZZPCYA3.cjs');
19
19
  require('./chunk-BM2GRZNM.cjs');
20
20
  require('./chunk-WZA5S5EJ.cjs');
21
21
 
@@ -29,14 +29,14 @@ function createCatalogue(features2) {
29
29
 
30
30
  // src/catalogue.ts
31
31
  var features = {
32
- table: chunkKMIWUFNM_cjs.tableExtension,
33
- embed: chunkDQV37F7J_cjs.embedExtension,
34
- math: chunk35CHEARK_cjs.mathExtension,
35
- toc: chunk5ANJW76W_cjs.tocExtension,
36
- mention: chunkA5LIN7FO_cjs.mentionExtension,
37
- emoji: chunkIGEWAL2J_cjs.emojiExtension,
38
- find: chunkSCFW4JFT_cjs.findExtension,
39
- stats: chunkBJIWN7BQ_cjs.statsExtension
32
+ table: chunk7RZNJR4J_cjs.tableExtension,
33
+ embed: chunk5ILVILAJ_cjs.embedExtension,
34
+ math: chunkHRTIY6NY_cjs.mathExtension,
35
+ toc: chunkX2CN6FXA_cjs.tocExtension,
36
+ mention: chunkAY5ANGXK_cjs.mentionExtension,
37
+ emoji: chunkYWYOLZWB_cjs.emojiExtension,
38
+ find: chunk3YXV6LP7_cjs.findExtension,
39
+ stats: chunkSTKGRXSA_cjs.statsExtension
40
40
  };
41
41
  var catalogue = createCatalogue(features);
42
42
 
@@ -1,15 +1,15 @@
1
- import { E as Extension } from './types-CJ7Gq3GX.cjs';
1
+ import { E as Extension } from './types-DM6gsVga.cjs';
2
2
  import { embedExtension } from './embed.cjs';
3
- import { e as emojiExtension } from './emoji-extension-zJ6F7hW8.cjs';
4
- import { f as findExtension } from './find-extension-BcRyE9K4.cjs';
3
+ import { e as emojiExtension } from './emoji-extension-j6FdAXPA.cjs';
4
+ import { f as findExtension } from './find-extension-DhVtoyGx.cjs';
5
5
  import { mathExtension } from './math.cjs';
6
6
  import { mentionExtension } from './mention.cjs';
7
- import { s as statsExtension } from './stats-extension-Dt1lgP3m.cjs';
8
- import { t as tableExtension } from './table-extension-DxZz3jqp.cjs';
9
- import { t as tocExtension } from './toc-extension-DGHywOBv.cjs';
10
- import './types-DULc8wwg.cjs';
7
+ import { s as statsExtension } from './stats-extension-ByKYtIB5.cjs';
8
+ import { t as tableExtension } from './table-extension-DuphgC4v.cjs';
9
+ import { t as tocExtension } from './toc-extension-RtMspT0A.cjs';
10
+ import './types-CQ8Vw_7N.cjs';
11
11
  import './embed-provider-jXwlRmnp.cjs';
12
- import './to-html-CNCITCln.cjs';
12
+ import './to-html-DwhNK6-9.cjs';
13
13
 
14
14
  type Feature = (options?: never) => Extension;
15
15
  type Features = Readonly<Record<string, Feature>>;
@@ -1,15 +1,15 @@
1
- import { E as Extension } from './types-C6_QkXzy.js';
1
+ import { E as Extension } from './types-rf9DGNaS.js';
2
2
  import { embedExtension } from './embed.js';
3
- import { e as emojiExtension } from './emoji-extension-CmPlRssm.js';
4
- import { f as findExtension } from './find-extension-CmFehyul.js';
3
+ import { e as emojiExtension } from './emoji-extension-W7WYXOxF.js';
4
+ import { f as findExtension } from './find-extension-CwhUbnM7.js';
5
5
  import { mathExtension } from './math.js';
6
6
  import { mentionExtension } from './mention.js';
7
- import { s as statsExtension } from './stats-extension-DisOEbbI.js';
8
- import { t as tableExtension } from './table-extension-BTMJnT7J.js';
9
- import { t as tocExtension } from './toc-extension-CR9U-l6j.js';
10
- import './types-DULc8wwg.js';
7
+ import { s as statsExtension } from './stats-extension-DNEtte9E.js';
8
+ import { t as tableExtension } from './table-extension-BT6DTOXL.js';
9
+ import { t as tocExtension } from './toc-extension-B0Datrvu.js';
10
+ import './types-CQ8Vw_7N.js';
11
11
  import './embed-provider-jXwlRmnp.js';
12
- import './to-html-C5t7xyaM.js';
12
+ import './to-html-B_NwgPSz.js';
13
13
 
14
14
  type Feature = (options?: never) => Extension;
15
15
  type Features = Readonly<Record<string, Feature>>;
package/dist/catalogue.js CHANGED
@@ -1,19 +1,19 @@
1
1
  'use client';
2
- import { findExtension } from './chunk-BNUQ647G.js';
3
- import { statsExtension } from './chunk-YCVNFRL3.js';
4
- import { tableExtension } from './chunk-BR25RE7U.js';
5
- import { embedExtension } from './chunk-I7OOIEZZ.js';
6
- import { mathExtension } from './chunk-4HFE3YFF.js';
2
+ import { findExtension } from './chunk-FWETDMCE.js';
3
+ import { statsExtension } from './chunk-IJKGF6SC.js';
4
+ import { tableExtension } from './chunk-QGQFA5HD.js';
5
+ import { embedExtension } from './chunk-UWTU4V3G.js';
6
+ import { mathExtension } from './chunk-DGWAVYTO.js';
7
7
  import './chunk-AD3NY7NA.js';
8
- import { tocExtension } from './chunk-Y7UKOBSY.js';
9
- import { mentionExtension } from './chunk-TARBFPWC.js';
8
+ import { tocExtension } from './chunk-OZIRHN5H.js';
9
+ import { mentionExtension } from './chunk-5YQKKFYB.js';
10
10
  import './chunk-GHNQKJMD.js';
11
- import './chunk-SAPLIQF2.js';
12
- import { emojiExtension } from './chunk-FOEEDJ5R.js';
13
- import './chunk-J552D3A7.js';
14
- import './chunk-CCOPHCXX.js';
11
+ import './chunk-QOIVLYMW.js';
12
+ import { emojiExtension } from './chunk-R5RI4SFY.js';
13
+ import './chunk-YFPEJP6W.js';
14
+ import './chunk-XFEDJEJF.js';
15
15
  import './chunk-HDJ653LM.js';
16
- import './chunk-KXOAV7AT.js';
16
+ import './chunk-OS2O6IKX.js';
17
17
  import './chunk-CSKKSXCE.js';
18
18
  import './chunk-BJTOLCRR.js';
19
19