quoin-editor 1.2.0 → 1.2.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 (106) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +15 -5
  3. package/dist/ai.cjs +66 -66
  4. package/dist/ai.js +5 -5
  5. package/dist/catalogue.cjs +20 -20
  6. package/dist/catalogue.js +12 -12
  7. package/dist/{chunk-BKEHG4QV.js → chunk-25HNTVEI.js} +3 -3
  8. package/dist/{chunk-BKEHG4QV.js.map → chunk-25HNTVEI.js.map} +1 -1
  9. package/dist/{chunk-TWFMNDOC.cjs → chunk-35CHEARK.cjs} +38 -38
  10. package/dist/{chunk-TWFMNDOC.cjs.map → chunk-35CHEARK.cjs.map} +1 -1
  11. package/dist/{chunk-KIU5MPZ4.js → chunk-4D7HZRNC.js} +3 -3
  12. package/dist/{chunk-KIU5MPZ4.js.map → chunk-4D7HZRNC.js.map} +1 -1
  13. package/dist/{chunk-TG5T7BEJ.js → chunk-4HFE3YFF.js} +6 -6
  14. package/dist/{chunk-TG5T7BEJ.js.map → chunk-4HFE3YFF.js.map} +1 -1
  15. package/dist/{chunk-K7E2DR5W.cjs → chunk-5ANJW76W.cjs} +20 -20
  16. package/dist/{chunk-K7E2DR5W.cjs.map → chunk-5ANJW76W.cjs.map} +1 -1
  17. package/dist/{chunk-RENKFSFD.cjs → chunk-A5LIN7FO.cjs} +26 -26
  18. package/dist/{chunk-RENKFSFD.cjs.map → chunk-A5LIN7FO.cjs.map} +1 -1
  19. package/dist/{chunk-TLMO46OV.cjs → chunk-BJIWN7BQ.cjs} +10 -10
  20. package/dist/{chunk-TLMO46OV.cjs.map → chunk-BJIWN7BQ.cjs.map} +1 -1
  21. package/dist/{chunk-OWX3Y5UU.js → chunk-BNUQ647G.js} +6 -6
  22. package/dist/{chunk-OWX3Y5UU.js.map → chunk-BNUQ647G.js.map} +1 -1
  23. package/dist/{chunk-MEXDDWJF.js → chunk-BR25RE7U.js} +5 -5
  24. package/dist/{chunk-MEXDDWJF.js.map → chunk-BR25RE7U.js.map} +1 -1
  25. package/dist/{chunk-PVCXTSUO.js → chunk-CCOPHCXX.js} +46 -6
  26. package/dist/chunk-CCOPHCXX.js.map +1 -0
  27. package/dist/{chunk-6X5A4DUQ.cjs → chunk-CZ5ZXBWC.cjs} +226 -227
  28. package/dist/chunk-CZ5ZXBWC.cjs.map +1 -0
  29. package/dist/{chunk-IQ2DE3Y3.cjs → chunk-DQV37F7J.cjs} +66 -66
  30. package/dist/{chunk-IQ2DE3Y3.cjs.map → chunk-DQV37F7J.cjs.map} +1 -1
  31. package/dist/{chunk-X4FDLUXJ.js → chunk-FOEEDJ5R.js} +5 -5
  32. package/dist/{chunk-X4FDLUXJ.js.map → chunk-FOEEDJ5R.js.map} +1 -1
  33. package/dist/{chunk-4F2IWBFM.cjs → chunk-G37GQ5JE.cjs} +4 -3
  34. package/dist/{chunk-4F2IWBFM.cjs.map → chunk-G37GQ5JE.cjs.map} +1 -1
  35. package/dist/{chunk-I4NEX6SZ.js → chunk-I7OOIEZZ.js} +5 -5
  36. package/dist/{chunk-I4NEX6SZ.js.map → chunk-I7OOIEZZ.js.map} +1 -1
  37. package/dist/{chunk-R45RJQRD.cjs → chunk-IGEWAL2J.cjs} +29 -29
  38. package/dist/{chunk-R45RJQRD.cjs.map → chunk-IGEWAL2J.cjs.map} +1 -1
  39. package/dist/{chunk-3BCP6ZUM.js → chunk-J552D3A7.js} +13 -14
  40. package/dist/chunk-J552D3A7.js.map +1 -0
  41. package/dist/{chunk-VNRBCUBV.cjs → chunk-JYKSWEXT.cjs} +6 -6
  42. package/dist/{chunk-VNRBCUBV.cjs.map → chunk-JYKSWEXT.cjs.map} +1 -1
  43. package/dist/{chunk-UMTKQVOX.cjs → chunk-K7JEN3KT.cjs} +4 -4
  44. package/dist/{chunk-UMTKQVOX.cjs.map → chunk-K7JEN3KT.cjs.map} +1 -1
  45. package/dist/{chunk-TN32PKUI.cjs → chunk-KMIWUFNM.cjs} +75 -75
  46. package/dist/{chunk-TN32PKUI.cjs.map → chunk-KMIWUFNM.cjs.map} +1 -1
  47. package/dist/{chunk-4EU4BTLZ.js → chunk-KXOAV7AT.js} +4 -4
  48. package/dist/{chunk-4EU4BTLZ.js.map → chunk-KXOAV7AT.js.map} +1 -1
  49. package/dist/{chunk-NNDLIP2C.cjs → chunk-OGBD74IR.cjs} +126 -86
  50. package/dist/chunk-OGBD74IR.cjs.map +1 -0
  51. package/dist/{chunk-PMJ3VCSR.js → chunk-SAPLIQF2.js} +4 -4
  52. package/dist/{chunk-PMJ3VCSR.js.map → chunk-SAPLIQF2.js.map} +1 -1
  53. package/dist/{chunk-UHAAYYMX.cjs → chunk-SCFW4JFT.cjs} +38 -38
  54. package/dist/{chunk-UHAAYYMX.cjs.map → chunk-SCFW4JFT.cjs.map} +1 -1
  55. package/dist/{chunk-IHTHOAUY.js → chunk-TARBFPWC.js} +6 -6
  56. package/dist/{chunk-IHTHOAUY.js.map → chunk-TARBFPWC.js.map} +1 -1
  57. package/dist/{chunk-WCAUPASG.js → chunk-Y7UKOBSY.js} +5 -5
  58. package/dist/{chunk-WCAUPASG.js.map → chunk-Y7UKOBSY.js.map} +1 -1
  59. package/dist/{chunk-I4CSCA3O.js → chunk-YCVNFRL3.js} +4 -4
  60. package/dist/{chunk-I4CSCA3O.js.map → chunk-YCVNFRL3.js.map} +1 -1
  61. package/dist/{chunk-EQKFQK3C.cjs → chunk-ZVCBTQA3.cjs} +10 -10
  62. package/dist/{chunk-EQKFQK3C.cjs.map → chunk-ZVCBTQA3.cjs.map} +1 -1
  63. package/dist/comments.cjs +48 -48
  64. package/dist/comments.js +4 -4
  65. package/dist/docx.cjs +1 -1
  66. package/dist/docx.js +1 -1
  67. package/dist/embed.cjs +6 -6
  68. package/dist/embed.js +4 -4
  69. package/dist/emoji.cjs +7 -7
  70. package/dist/emoji.js +4 -4
  71. package/dist/engine.cjs +43 -43
  72. package/dist/engine.js +1 -1
  73. package/dist/find.cjs +8 -8
  74. package/dist/find.js +4 -4
  75. package/dist/headless.cjs +59 -59
  76. package/dist/headless.d.cts +2 -2
  77. package/dist/headless.d.ts +2 -2
  78. package/dist/headless.js +2 -2
  79. package/dist/index.cjs +71 -71
  80. package/dist/index.d.cts +2 -2
  81. package/dist/index.d.ts +2 -2
  82. package/dist/index.js +3 -3
  83. package/dist/math.cjs +7 -7
  84. package/dist/math.js +5 -5
  85. package/dist/mention.cjs +7 -7
  86. package/dist/mention.js +5 -5
  87. package/dist/presence.cjs +33 -33
  88. package/dist/presence.js +5 -5
  89. package/dist/stats.cjs +7 -7
  90. package/dist/stats.d.cts +1 -1
  91. package/dist/stats.d.ts +1 -1
  92. package/dist/stats.js +4 -4
  93. package/dist/styles.css +1 -1
  94. package/dist/table.cjs +23 -23
  95. package/dist/table.js +4 -4
  96. package/dist/toc.cjs +7 -7
  97. package/dist/toc.js +4 -4
  98. package/dist/{view-controller-BD1KwYfE.d.cts → view-controller-cxQJ5rQb.d.cts} +7 -0
  99. package/dist/{view-controller-y4cb60ue.d.ts → view-controller-zNqHm_Qg.d.ts} +7 -0
  100. package/dist/yjs.cjs +99 -99
  101. package/dist/yjs.js +3 -3
  102. package/package.json +1 -1
  103. package/dist/chunk-3BCP6ZUM.js.map +0 -1
  104. package/dist/chunk-6X5A4DUQ.cjs.map +0 -1
  105. package/dist/chunk-NNDLIP2C.cjs.map +0 -1
  106. package/dist/chunk-PVCXTSUO.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,28 @@
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.2.2 (2026-11-01)
6
+
7
+ ### Fixed
8
+ - Popovers, the bubble toolbar, dialogs, the AI response bar, the find panel, the mobile toolbar and the keys in the shortcuts dialog draw a soft hairline edge in `--quoin-border`, where they drew a near-black one. The stylesheet's reset gives every border that names no colour `--quoin-border`, instead of the text colour Tailwind 4 falls back to.
9
+ - An editor whose first block has no text, such as a table of contents, an image, a divider or an embed, no longer draws that block as selected or says "1 block selected" as soon as the page loads, server-rendered HTML included. The block is drawn as selected once focus enters the editor or a menu of it, or once the reader or the host sets a selection, and stays so when focus leaves.
10
+
11
+ ### Changed
12
+ - Fields draw their border in `--quoin-input`, a lighter grey that still reaches 3:1 on the page, a popover and a highlighted row, and darken it on hover. A focused field shows the focus outline alone, where its border also turned to the ring colour. Outline buttons draw their border in `--quoin-border`.
13
+ - Menus, popovers, the AI response bar and the find panel are rounded to `--quoin-radius`, and dialogs a step more, over a lightly blurred backdrop.
14
+ - The rule beside a streaming AI answer is drawn in `--quoin-ring`, cobalt by default, where it used `--quoin-primary`.
15
+
16
+ ## 1.2.1 (2026-11-01)
17
+
18
+ ### Changed
19
+ - The default theme is slate with a cobalt accent. The focus ring, text selection, the ring of a selected block and the bar of a highlighted menu row are cobalt where they were near-black or grey, and the neutrals carry a slight cool tint. A host that sets its own `--quoin-` tokens keeps its values, except that the bar of a highlighted row now reads `--quoin-ring` where it read `--quoin-foreground`.
20
+ - A tip callout draws its rule and wash from a new `--quoin-tip` token, violet by default, where it used `--quoin-primary` and drew grey. Set `--quoin-tip` to your primary colour to keep the old look.
21
+ - Menus, popovers and toolbars cast a softer two-layer shadow, coloured by a new `--quoin-shadow` token.
22
+ - Blocks have 2px of room above and below, so consecutive list items and paragraphs no longer touch.
23
+
24
+ ### Fixed
25
+ - A callout whose text starts with a line of pipes and dashes, such as `|-`, is written to markdown with a blank line after its alert marker, so it reads back as the callout and not as a one-column table.
26
+
5
27
  ## 1.2.0 (2026-10-31)
6
28
 
7
29
  ### Fixed
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  **Blocks on screen. Markdown on disk.**
4
4
 
5
- Quoin is a block editor for React that keeps every text block as readable markdown inside a typed array you hold in your own state; images, files, code, dividers, tables and the catalogue blocks are typed data beside them. Writers get live formatting, a slash menu and drag handles; you get a document you can save, diff in git or hand to an LLM without a conversion step.
5
+ Quoin is a block editor for React that keeps every text block as readable markdown inside a typed array you hold in your own state; images, files, code, dividers, tables and the catalogue blocks are typed data beside them. Writers get live formatting, a slash menu, drag handles, real-time co-editing and AI that writes into the page; you get a document you can save, diff in git or hand to an LLM without a conversion step.
6
6
 
7
7
  [![npm](https://img.shields.io/npm/v/quoin-editor)](https://www.npmjs.com/package/quoin-editor) [![CI](https://github.com/AmineSeboui/quoin-editor/actions/workflows/ci.yml/badge.svg)](https://github.com/AmineSeboui/quoin-editor/actions/workflows/ci.yml) [![licence](https://img.shields.io/npm/l/quoin-editor)](LICENSE)
8
8
 
@@ -10,11 +10,21 @@ Quoin is a block editor for React that keeps every text block as readable markdo
10
10
 
11
11
  ![A heading typed with a hash and a space, a bulleted list, two words made bold from the toolbar, a callout inserted from the slash menu and dragged into place, while the panel beside shows the markdown onChange hands back](demo/public/quoin-demo.gif)
12
12
 
13
- - **Live formatting, markdown on disk.** Type `**bold**` or `# ` and see bold text or a heading; the block stores the markdown. Blocks you never edit are never rewritten (`src/engine/blocks/codec.test.ts`).
13
+ - **Live formatting, markdown on disk.** Type `**bold**` or `# ` and see bold text or a heading; the block stores the markdown. Blocks you never edit are never rewritten.
14
14
  - **Typed blocks you control like an input.** A document is `QuoinBlock[]`, plain JSON, passed as `blocks` and returned through `onChange`, so saving, versioning and validation stay in your code.
15
15
  - **Notion-style UI included, MIT.** Slash menu, bubble toolbar, block menu, drag handles, a mobile toolbar and a shortcuts dialog, with no account and no paid tier.
16
16
  - **Custom blocks as plain React.** `defineBlock` takes an editor, a preview, or both, as React components; no schema language to learn.
17
- - **Accessible, with tested keyboard and screen reader support.** In CI, axe runs over the canvas and its menus in light and dark mode (`e2e/tests/canvas/a11y.spec.ts`), a document is written with the keyboard alone (`keyboard-only.spec.ts`), and moves and deletions are announced (`shortcuts.spec.ts`). [What is not checked yet](https://amineseboui.github.io/quoin-editor/docs/accessibility/#what-is-not-checked-yet).
17
+ - **Accessible, with tested keyboard and screen reader support.** In CI, axe runs over the canvas and its menus in light and dark mode, a document is written with the keyboard alone, and moves and deletions are announced. [What is not checked yet](https://amineseboui.github.io/quoin-editor/docs/accessibility/#what-is-not-checked-yet).
18
+
19
+ ## Write together, with AI
20
+
21
+ ![Two editors side by side, Ada and Grace: Ada adds a task while her caret shows in Grace's copy, Grace renames the heading and ticks a task, and Ada drags a block that moves in both](demo/public/quoin-collaboration.gif)
22
+
23
+ **Real-time collaboration.** Each person sees the other's typing, ticked tasks and moved blocks arrive as they happen, with a named caret showing where they are. Quoin syncs through your own Yjs provider, and comment threads stay anchored to the text they discuss. [Try it live](https://amineseboui.github.io/quoin-editor/collaboration/)
24
+
25
+ ![A draft line with spelling mistakes is selected, Ask AI is opened from the toolbar and Fix spelling and grammar streams a corrected line that is accepted, then Continue writing adds a sentence below](demo/public/quoin-ai.gif)
26
+
27
+ **AI that writes into the document.** Select text and ask AI to fix, rewrite, shorten, translate or continue it. The answer streams in as markdown beside the original, and one click accepts or discards it, in a single undo step. Quoin never calls a model: you pass it a stream from the one you use (the recording answers from the demo's simulated model). [Try it live](https://amineseboui.github.io/quoin-editor/ai/)
18
28
 
19
29
  ## Install
20
30
 
@@ -61,7 +71,7 @@ What `onChange` hands you, and what you store:
61
71
 
62
72
  ## Why Quoin
63
73
 
64
- Each competitor cell links to the page that shows it, and Quoin's cite the files listed below the table; the Tiptap UI cell also draws on the review in [#73](https://github.com/AmineSeboui/quoin-editor/issues/73) (2026-10-12).
74
+ Each competitor cell links to the page that shows it; the Tiptap UI cell also draws on the review in [#73](https://github.com/AmineSeboui/quoin-editor/issues/73) (2026-10-12).
65
75
 
66
76
  | Feature | Quoin 1.0 | Tiptap 3 | BlockNote | Editor.js |
67
77
  | --- | --- | --- | --- | --- |
@@ -73,7 +83,7 @@ Each competitor cell links to the page that shows it, and Quoin's cite the files
73
83
  | Comments | Opt-in, your store | [Paid plan][tt-comments] | [Built in, on Yjs or a thread store][bn-comments] | [Community plugin][ej-awesome] |
74
84
  | Framework | React | [React, Vue, Svelte, plain JavaScript and more][tt-install] | [React][bn-start] | [Plain JavaScript][ej-start] |
75
85
 
76
- Sources, checked on 2026-10-23: Tiptap [persistence][tt-store], [markdown][tt-md], [Notion-like template][tt-notion], [repository][tt-repo], [collaboration][tt-collab], [comments][tt-comments], [install][tt-install]; BlockNote [home][bn-home], [formats][bn-formats], [repository][bn-repo], [collaboration][bn-collab], [comments][bn-comments], [getting started][bn-start]; Editor.js [home][ej-home], [repository][ej-repo], [getting started][ej-start], [awesome-editorjs][ej-awesome]. Quoin: storage in `src/engine/blocks/markdown-spec.ts`, untouched blocks in `src/engine/blocks/codec.test.ts`, collaboration in `e2e/tests/canvas/presence.spec.ts`, comments in `e2e/tests/canvas/comments.spec.ts`.
86
+ Sources, checked on 2026-10-23: Tiptap [persistence][tt-store], [markdown][tt-md], [Notion-like template][tt-notion], [repository][tt-repo], [collaboration][tt-collab], [comments][tt-comments], [install][tt-install]; BlockNote [home][bn-home], [formats][bn-formats], [repository][bn-repo], [collaboration][bn-collab], [comments][bn-comments], [getting started][bn-start]; Editor.js [home][ej-home], [repository][ej-repo], [getting started][ej-start], [awesome-editorjs][ej-awesome].
77
87
 
78
88
  [tt-store]: https://tiptap.dev/docs/editor/core-concepts/persistence
79
89
  [tt-md]: https://tiptap.dev/docs/editor/markdown
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 chunkUMTKQVOX_cjs = require('./chunk-UMTKQVOX.cjs');
6
- var chunk6X5A4DUQ_cjs = require('./chunk-6X5A4DUQ.cjs');
7
- var chunkNNDLIP2C_cjs = require('./chunk-NNDLIP2C.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');
8
8
  require('./chunk-A6PGQVTR.cjs');
9
- var chunk4F2IWBFM_cjs = require('./chunk-4F2IWBFM.cjs');
9
+ var chunkG37GQ5JE_cjs = require('./chunk-G37GQ5JE.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 = chunk4F2IWBFM_cjs.primaryRegion(schema, first);
117
- const end = chunk4F2IWBFM_cjs.primaryRegion(schema, last);
116
+ const start = chunkG37GQ5JE_cjs.primaryRegion(schema, first);
117
+ const end = chunkG37GQ5JE_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: chunk4F2IWBFM_cjs.regionLength(last, end) }, selected: ids.length > 1 };
120
+ return { from, to: { block: last.id, region: end, offset: chunkG37GQ5JE_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, chunk4F2IWBFM_cjs.selectedBlockIds(doc, selection));
126
- const { from, to } = chunk4F2IWBFM_cjs.orderedRange(doc, selection.anchor, selection.head);
127
- if (chunk4F2IWBFM_cjs.comparePos(doc, from, to) !== 0) return { from, to, selected: true };
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 };
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: chunk4F2IWBFM_cjs.regionLength(block, from.region) }, selected: false };
130
+ return { from: { ...whole, offset: 0 }, to: { ...whole, offset: chunkG37GQ5JE_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 = chunk4F2IWBFM_cjs.primaryRegion(tr.before.schema, block) ?? "";
148
- const length = region === "" ? 0 : chunk4F2IWBFM_cjs.regionLength(block, region);
147
+ const region = chunkG37GQ5JE_cjs.primaryRegion(tr.before.schema, block) ?? "";
148
+ const length = region === "" ? 0 : chunkG37GQ5JE_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 = chunk4F2IWBFM_cjs.comparePos(tr.doc, from, mapped2) > 0 ? from : mapped2;
160
+ const to = chunkG37GQ5JE_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 && chunk4F2IWBFM_cjs.comparePos(doc, target.from, target.to) === 0;
163
+ var targetGone = (doc, target) => target.lost !== void 0 || target.selected && chunkG37GQ5JE_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 : chunk4F2IWBFM_cjs.primaryRegion(schema, block);
169
+ const region = i === 0 ? from.region : block.id === to.block ? to.region : chunkG37GQ5JE_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 : chunk4F2IWBFM_cjs.regionLength(block, region);
172
+ const right = block.id === to.block ? to.offset : chunkG37GQ5JE_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 = chunk4F2IWBFM_cjs.createPluginKey("ai");
178
+ var aiKey = chunkG37GQ5JE_cjs.createPluginKey("ai");
179
179
  var AI = "ai";
180
180
  var IDLE = { target: null, menu: null, ghost: null, held: [] };
181
- var aiState = (state) => chunk4F2IWBFM_cjs.getPluginState(state, aiKey);
182
- var aiTransaction = (state, act2) => new chunk4F2IWBFM_cjs.Transaction(state).setMeta(AI, act2).setMeta("addToHistory", false);
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);
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) => chunk4F2IWBFM_cjs.regionLength(block, region) > 0);
215
+ return block !== void 0 && Object.keys(block.regions).some((region) => chunkG37GQ5JE_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) => chunk4F2IWBFM_cjs.toMarkdown(blocks, { schema: state.schema, comments: false });
313
+ var markdownOf = (state, blocks) => chunkG37GQ5JE_cjs.toMarkdown(blocks, { schema: state.schema, comments: false });
314
314
  function rangeMarkdown(state, from, to) {
315
- const slice = chunk4F2IWBFM_cjs.sliceFromSelection({ ...state, selection: chunk4F2IWBFM_cjs.textSelection(from, to) }, chunkWZA5S5EJ_cjs.createBlockCodec(state.schema));
315
+ const slice = chunkG37GQ5JE_cjs.sliceFromSelection({ ...state, selection: chunkG37GQ5JE_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(chunk6X5A4DUQ_cjs.toError(error));
380
+ link.report(chunkCZ5ZXBWC_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" || !chunk4F2IWBFM_cjs.isCollapsed(selection) || ai.menu !== null || ai.ghost !== null) return false;
555
+ if (selection?.kind !== "text" || !chunkG37GQ5JE_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 || chunk4F2IWBFM_cjs.regionLength(block, head.region) > 0 || ai.held.includes(block.id)) return false;
559
+ if (!paragraph || chunkG37GQ5JE_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 ? chunk4F2IWBFM_cjs.descendantsEnd(tr.doc, index) : index;
570
- const fresh = chunk4F2IWBFM_cjs.freshBlocks(pieces, tr.doc.blocks[index].indent, makeId);
571
- tr.step(chunk4F2IWBFM_cjs.insertBlocksStep(at, fresh));
572
- chunk4F2IWBFM_cjs.capIndents(tr, at, at + fresh.length);
573
- tr.setSelection(chunk4F2IWBFM_cjs.endOf(tr.doc, schema, fresh[fresh.length - 1].id));
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));
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 ? chunk4F2IWBFM_cjs.deleteRange(tr, schema, target.from, target.to, makeId) : target.to;
592
- chunk4F2IWBFM_cjs.pasteAtCaret(tr, schema, caret, open, pieces, makeId);
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);
593
593
  } else {
594
594
  const block = tr.doc.blocks[tr.doc.index.get(target.to.block)];
595
- const end = { ...target.to, offset: chunk4F2IWBFM_cjs.regionLength(block, target.to.region) };
596
- chunk4F2IWBFM_cjs.pasteAtCaret(tr, schema, end, { openStart: false, openEnd: false }, pieces, makeId);
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);
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
- chunkNNDLIP2C_cjs.useIsomorphicLayoutEffect(() => {
611
+ chunkOGBD74IR_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
- chunkNNDLIP2C_cjs.useIsomorphicLayoutEffect(() => {
616
+ chunkOGBD74IR_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]);
@@ -649,7 +649,7 @@ function AiBar({ env, ghost, gone, barId }) {
649
649
  id: barId,
650
650
  role: "group",
651
651
  "aria-label": labels.response,
652
- className: "quoin-ai-bar flex flex-wrap items-center gap-2 rounded-md border bg-popover p-2 text-popover-foreground shadow-md",
652
+ className: "quoin-ai-bar flex flex-wrap items-center gap-2 rounded-lg border bg-popover p-2 text-popover-foreground shadow-md",
653
653
  onFocus: () => inside.current = true,
654
654
  onBlur: (event) => inside.current = content.current?.contains(event.relatedTarget) ?? false,
655
655
  onKeyDown: (event) => {
@@ -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(chunk6X5A4DUQ_cjs.Button, { ...primary, size: "sm", variant: "outline", onClick: () => stop(editor), children: labels.stop })
664
+ /* @__PURE__ */ jsxRuntime.jsx(chunkCZ5ZXBWC_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(chunk6X5A4DUQ_cjs.Button, { ...primary, size: "sm", onClick: () => retry(editor, stream), children: labels.retry }),
669
- /* @__PURE__ */ jsxRuntime.jsx(chunk6X5A4DUQ_cjs.Button, { size: "sm", variant: "ghost", onClick: onDiscard, children: labels.discard })
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 })
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(chunk6X5A4DUQ_cjs.Button, { ...primary, size: "sm", onClick: onAccept, children: labels.accept }),
675
- /* @__PURE__ */ jsxRuntime.jsx(chunk6X5A4DUQ_cjs.Button, { size: "sm", variant: "ghost", onClick: onDiscard, children: labels.discard }),
676
- /* @__PURE__ */ jsxRuntime.jsx(chunk6X5A4DUQ_cjs.Button, { size: "sm", variant: "ghost", onClick: () => retry(editor, stream), children: labels.retry }),
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 }),
677
677
  /* @__PURE__ */ jsxRuntime.jsx("form", { className: "w-full", onSubmit: onFollowUp, children: /* @__PURE__ */ jsxRuntime.jsx(
678
- chunk6X5A4DUQ_cjs.Input,
678
+ chunkCZ5ZXBWC_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 = chunk4F2IWBFM_cjs.primaryRegion(schema, piece);
716
- if (region === null) element.textContent = chunk4F2IWBFM_cjs.toPlainText([codec.toQuoin(piece)], { schema });
717
- else chunkNNDLIP2C_cjs.renderInline(element, piece.regions[region], []);
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], []);
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
- chunkNNDLIP2C_cjs.useIsomorphicLayoutEffect(() => {
794
+ chunkOGBD74IR_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
- chunkNNDLIP2C_cjs.useIsomorphicLayoutEffect(() => {
833
+ chunkOGBD74IR_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
- chunkNNDLIP2C_cjs.useIsomorphicLayoutEffect(() => {
847
+ chunkOGBD74IR_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: chunk6X5A4DUQ_cjs.virtualAnchor(
857
- () => chunk6X5A4DUQ_cjs.rangeRect(controller, end()),
856
+ current: chunkCZ5ZXBWC_cjs.virtualAnchor(
857
+ () => chunkCZ5ZXBWC_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
- chunk6X5A4DUQ_cjs.Popover,
911
+ chunkCZ5ZXBWC_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(chunk6X5A4DUQ_cjs.PopoverAnchor, { virtualRef: anchor }),
919
+ /* @__PURE__ */ jsxRuntime.jsx(chunkCZ5ZXBWC_cjs.PopoverAnchor, { virtualRef: anchor }),
920
920
  /* @__PURE__ */ jsxRuntime.jsxs(
921
- chunk6X5A4DUQ_cjs.PopoverContent,
921
+ chunkCZ5ZXBWC_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
- chunk6X5A4DUQ_cjs.Input,
938
+ chunkCZ5ZXBWC_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: chunk6X5A4DUQ_cjs.cn(chunk6X5A4DUQ_cjs.MENU_ITEM, index === current && "bg-accent text-accent-foreground"),
962
+ className: chunkCZ5ZXBWC_cjs.cn(chunkCZ5ZXBWC_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) => chunk4F2IWBFM_cjs.toPlainText(chunkWZA5S5EJ_cjs.fromMarkdown(markdown));
980
+ var plainText = (markdown) => chunkG37GQ5JE_cjs.toPlainText(chunkWZA5S5EJ_cjs.fromMarkdown(markdown));
981
981
  function AiOverlay({ controller, stream, labels }) {
982
- const { onError } = chunk6X5A4DUQ_cjs.useQuoin();
982
+ const { onError } = chunkCZ5ZXBWC_cjs.useQuoin();
983
983
  const link = linkOf(controller.editor);
984
- chunkNNDLIP2C_cjs.useIsomorphicLayoutEffect(() => {
984
+ chunkOGBD74IR_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 = chunkNNDLIP2C_cjs.useEditorState(controller, aiState);
989
- const gone = chunkNNDLIP2C_cjs.useEditorState(controller, goneOf);
990
- const readOnly = chunkNNDLIP2C_cjs.useReadOnly(controller);
988
+ const value = chunkOGBD74IR_cjs.useEditorState(controller, aiState);
989
+ const gone = chunkOGBD74IR_cjs.useEditorState(controller, goneOf);
990
+ const readOnly = chunkOGBD74IR_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 chunkUMTKQVOX_cjs.watchCanvasFocus(controller, root.ownerDocument, (inside, node) => {
1009
+ return chunkK7JEN3KT_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 chunk4F2IWBFM_cjs.defineExtension({
1045
+ return chunkG37GQ5JE_cjs.defineExtension({
1046
1046
  name: "ai",
1047
1047
  plugins: [aiPlugin],
1048
1048
  decorations: aiDecorations,
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-KIU5MPZ4.js';
4
- import { useQuoin, Popover, PopoverAnchor, PopoverContent, Input, cn, MENU_ITEM, virtualAnchor, rangeRect, Button, toError } from './chunk-3BCP6ZUM.js';
5
- import { useIsomorphicLayoutEffect, useEditorState, useReadOnly, renderInline } from './chunk-PVCXTSUO.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';
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-4EU4BTLZ.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';
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';
@@ -647,7 +647,7 @@ function AiBar({ env, ghost, gone, barId }) {
647
647
  id: barId,
648
648
  role: "group",
649
649
  "aria-label": labels.response,
650
- className: "quoin-ai-bar flex flex-wrap items-center gap-2 rounded-md border bg-popover p-2 text-popover-foreground shadow-md",
650
+ className: "quoin-ai-bar flex flex-wrap items-center gap-2 rounded-lg border bg-popover p-2 text-popover-foreground shadow-md",
651
651
  onFocus: () => inside.current = true,
652
652
  onBlur: (event) => inside.current = content.current?.contains(event.relatedTarget) ?? false,
653
653
  onKeyDown: (event) => {
@@ -1,21 +1,21 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkUHAAYYMX_cjs = require('./chunk-UHAAYYMX.cjs');
5
- var chunkTLMO46OV_cjs = require('./chunk-TLMO46OV.cjs');
6
- var chunkTN32PKUI_cjs = require('./chunk-TN32PKUI.cjs');
7
- var chunkIQ2DE3Y3_cjs = require('./chunk-IQ2DE3Y3.cjs');
8
- var chunkTWFMNDOC_cjs = require('./chunk-TWFMNDOC.cjs');
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');
9
9
  require('./chunk-XZ4NC3Q7.cjs');
10
- var chunkK7E2DR5W_cjs = require('./chunk-K7E2DR5W.cjs');
11
- var chunkRENKFSFD_cjs = require('./chunk-RENKFSFD.cjs');
10
+ var chunk5ANJW76W_cjs = require('./chunk-5ANJW76W.cjs');
11
+ var chunkA5LIN7FO_cjs = require('./chunk-A5LIN7FO.cjs');
12
12
  require('./chunk-H3C3MJW5.cjs');
13
- require('./chunk-EQKFQK3C.cjs');
14
- var chunkR45RJQRD_cjs = require('./chunk-R45RJQRD.cjs');
15
- require('./chunk-6X5A4DUQ.cjs');
16
- require('./chunk-NNDLIP2C.cjs');
13
+ require('./chunk-ZVCBTQA3.cjs');
14
+ var chunkIGEWAL2J_cjs = require('./chunk-IGEWAL2J.cjs');
15
+ require('./chunk-CZ5ZXBWC.cjs');
16
+ require('./chunk-OGBD74IR.cjs');
17
17
  require('./chunk-A6PGQVTR.cjs');
18
- require('./chunk-4F2IWBFM.cjs');
18
+ require('./chunk-G37GQ5JE.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: chunkTN32PKUI_cjs.tableExtension,
33
- embed: chunkIQ2DE3Y3_cjs.embedExtension,
34
- math: chunkTWFMNDOC_cjs.mathExtension,
35
- toc: chunkK7E2DR5W_cjs.tocExtension,
36
- mention: chunkRENKFSFD_cjs.mentionExtension,
37
- emoji: chunkR45RJQRD_cjs.emojiExtension,
38
- find: chunkUHAAYYMX_cjs.findExtension,
39
- stats: chunkTLMO46OV_cjs.statsExtension
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
40
40
  };
41
41
  var catalogue = createCatalogue(features);
42
42
 
package/dist/catalogue.js CHANGED
@@ -1,19 +1,19 @@
1
1
  'use client';
2
- import { findExtension } from './chunk-OWX3Y5UU.js';
3
- import { statsExtension } from './chunk-I4CSCA3O.js';
4
- import { tableExtension } from './chunk-MEXDDWJF.js';
5
- import { embedExtension } from './chunk-I4NEX6SZ.js';
6
- import { mathExtension } from './chunk-TG5T7BEJ.js';
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';
7
7
  import './chunk-AD3NY7NA.js';
8
- import { tocExtension } from './chunk-WCAUPASG.js';
9
- import { mentionExtension } from './chunk-IHTHOAUY.js';
8
+ import { tocExtension } from './chunk-Y7UKOBSY.js';
9
+ import { mentionExtension } from './chunk-TARBFPWC.js';
10
10
  import './chunk-GHNQKJMD.js';
11
- import './chunk-PMJ3VCSR.js';
12
- import { emojiExtension } from './chunk-X4FDLUXJ.js';
13
- import './chunk-3BCP6ZUM.js';
14
- import './chunk-PVCXTSUO.js';
11
+ import './chunk-SAPLIQF2.js';
12
+ import { emojiExtension } from './chunk-FOEEDJ5R.js';
13
+ import './chunk-J552D3A7.js';
14
+ import './chunk-CCOPHCXX.js';
15
15
  import './chunk-HDJ653LM.js';
16
- import './chunk-4EU4BTLZ.js';
16
+ import './chunk-KXOAV7AT.js';
17
17
  import './chunk-CSKKSXCE.js';
18
18
  import './chunk-BJTOLCRR.js';
19
19
 
@@ -1,4 +1,4 @@
1
- import { sameSelection, validateSelection, removeMarkStep, addMarkStep, replaceInlineStep } from './chunk-4EU4BTLZ.js';
1
+ import { sameSelection, validateSelection, removeMarkStep, addMarkStep, replaceInlineStep } from './chunk-KXOAV7AT.js';
2
2
  import { inlineLength, markKey, nodeLength, normalizeInline, text, atom } from './chunk-BJTOLCRR.js';
3
3
  import * as Y from 'yjs';
4
4
 
@@ -317,5 +317,5 @@ function restoreSelection(text2, layout, held) {
317
317
  }
318
318
 
319
319
  export { absolute, applyRemote, attrsMap, cleanEntry, createLayout, definedEntries, deleteText, emptySpan, grow, holdBinding, holdSelection, indexOf, inlineOfOps, insertInline, isAtomEmbed, markAttribute, markerOf, offsetIn, piecesOf, placeEntries, pointOf, readMarker, regionNameOf, regionOf, regionStart, relative, restoreSelection, sharedChange, sharedOf, spanAt, spanStart, textLength, textSteps, writeBlock, writeBlocks };
320
- //# sourceMappingURL=chunk-BKEHG4QV.js.map
321
- //# sourceMappingURL=chunk-BKEHG4QV.js.map
320
+ //# sourceMappingURL=chunk-25HNTVEI.js.map
321
+ //# sourceMappingURL=chunk-25HNTVEI.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/engine/collab/apply-remote.ts","../src/yjs/bound.ts","../src/yjs/layout.ts","../src/yjs/marks-codec.ts","../src/yjs/inline-codec.ts","../src/yjs/doc-shape.ts","../src/yjs/text-steps.ts","../src/yjs/carets.ts"],"names":["text","Y2"],"mappings":"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","file":"chunk-BKEHG4QV.js"}
1
+ {"version":3,"sources":["../src/engine/collab/apply-remote.ts","../src/yjs/bound.ts","../src/yjs/layout.ts","../src/yjs/marks-codec.ts","../src/yjs/inline-codec.ts","../src/yjs/doc-shape.ts","../src/yjs/text-steps.ts","../src/yjs/carets.ts"],"names":["text","Y2"],"mappings":"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","file":"chunk-25HNTVEI.js"}