@voithos-labs/aragonite 0.10.4 → 0.10.7

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 (1021) hide show
  1. package/README.md +2 -2
  2. package/dist/a11y-strings.d.ts +11 -5
  3. package/dist/a11y-strings.js +60 -5
  4. package/dist/action-contracts.d.ts +242 -155
  5. package/dist/action-contracts.js +2 -2
  6. package/dist/active-editor.d.ts +3 -3
  7. package/dist/active-editor.js +8 -9
  8. package/dist/ambient/ambient-dom.d.ts +2 -5
  9. package/dist/ambient/ambient-dom.js +16 -62
  10. package/dist/assert.js +6 -5
  11. package/dist/block-component.d.ts +135 -109
  12. package/dist/block-component.js +30 -22
  13. package/dist/block-id.d.ts +6 -10
  14. package/dist/block-id.js +25 -14
  15. package/dist/bounded-memo.d.ts +5 -5
  16. package/dist/bounded-memo.js +6 -6
  17. package/dist/components/BlockDragHandle.svelte +12 -21
  18. package/dist/components/BlockHost.svelte +56 -134
  19. package/dist/components/BlockList.svelte +22 -19
  20. package/dist/components/DecorationOverlay.svelte +9 -10
  21. package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
  22. package/dist/components/Editor.svelte +603 -1126
  23. package/dist/components/Editor.svelte.d.ts +9 -20
  24. package/dist/components/GapCaret.svelte +26 -59
  25. package/dist/components/SelectionOverlay.svelte +26 -51
  26. package/dist/components/SelectionOverlay.svelte.d.ts +5 -3
  27. package/dist/components/TailInsert.svelte +8 -55
  28. package/dist/components/TailInsert.svelte.d.ts +4 -6
  29. package/dist/components/block-content-selector.d.ts +11 -11
  30. package/dist/components/block-content-selector.js +11 -11
  31. package/dist/components/block-el-lookup.d.ts +6 -0
  32. package/dist/components/block-el-lookup.js +27 -0
  33. package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
  34. package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
  35. package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
  36. package/dist/components/blocks/code/CodeBlock.svelte +255 -276
  37. package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
  38. package/dist/components/blocks/code/CodeBlockRail.svelte +72 -87
  39. package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
  40. package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
  41. package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
  42. package/dist/components/blocks/code/code-bootstrap.js +29 -34
  43. package/dist/components/blocks/code/code-context-actions.js +5 -4
  44. package/dist/components/blocks/code/code-enter.js +2 -2
  45. package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
  46. package/dist/components/blocks/code/code-fence-boundary.js +40 -66
  47. package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
  48. package/dist/components/blocks/code/code-fence-exit.js +24 -25
  49. package/dist/components/blocks/code/code-indent.d.ts +2 -2
  50. package/dist/components/blocks/code/code-indent.js +4 -7
  51. package/dist/components/blocks/code/code-languages.d.ts +16 -12
  52. package/dist/components/blocks/code/code-languages.js +57 -39
  53. package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
  54. package/dist/components/blocks/code/code-paste-surface.js +9 -18
  55. package/dist/components/blocks/code/code-renderer.d.ts +21 -5
  56. package/dist/components/blocks/code/code-renderer.js +90 -125
  57. package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
  58. package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
  59. package/dist/components/blocks/directive/activate-directives.js +18 -13
  60. package/dist/components/blocks/editable-leaf.d.ts +50 -74
  61. package/dist/components/blocks/editable-leaf.js +141 -203
  62. package/dist/components/blocks/editable-surface.d.ts +96 -100
  63. package/dist/components/blocks/editable-surface.js +101 -109
  64. package/dist/components/blocks/list/ListBlock.svelte +45 -90
  65. package/dist/components/blocks/list/ListItemBlock.svelte +93 -147
  66. package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +1 -0
  67. package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
  68. package/dist/components/blocks/list/task-checkbox.js +12 -7
  69. package/dist/components/blocks/plain-text-backend.d.ts +4 -20
  70. package/dist/components/blocks/plain-text-backend.js +9 -43
  71. package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
  72. package/dist/components/blocks/surface-wiring.svelte.js +15 -34
  73. package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
  74. package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
  75. package/dist/components/blocks/table/TableBlock.svelte +100 -165
  76. package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
  77. package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
  78. package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
  79. package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
  80. package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
  81. package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
  82. package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
  83. package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
  84. package/dist/components/blocks/table/cell-pointer.js +49 -71
  85. package/dist/components/blocks/table/cell-render.d.ts +24 -29
  86. package/dist/components/blocks/table/cell-render.js +29 -31
  87. package/dist/components/blocks/table/selected-cells.d.ts +7 -7
  88. package/dist/components/blocks/table/selected-cells.js +9 -13
  89. package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
  90. package/dist/components/blocks/table/table-caret-at-point.js +5 -5
  91. package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
  92. package/dist/components/blocks/table/table-cell-paste.js +27 -43
  93. package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
  94. package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
  95. package/dist/components/blocks/table/table-menu-model.js +6 -10
  96. package/dist/components/blocks/table/table-navigation.js +2 -2
  97. package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
  98. package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
  99. package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
  100. package/dist/components/blocks/text/auto-pair-record.js +51 -0
  101. package/dist/components/blocks/text/click-snap-guard.d.ts +8 -6
  102. package/dist/components/blocks/text/click-snap-guard.js +10 -7
  103. package/dist/components/blocks/text/composition-seat.d.ts +17 -14
  104. package/dist/components/blocks/text/composition-seat.js +11 -11
  105. package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
  106. package/dist/components/blocks/text/construct-edge-delete.js +50 -65
  107. package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
  108. package/dist/components/blocks/text/construct-reveal.js +13 -14
  109. package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
  110. package/dist/components/blocks/text/delimiter-autopair.js +87 -103
  111. package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
  112. package/dist/components/blocks/text/edge-policy-dispatch.js +150 -181
  113. package/dist/components/blocks/text/edge-seat.d.ts +17 -26
  114. package/dist/components/blocks/text/edge-seat.js +43 -70
  115. package/dist/components/blocks/text/link-at-point.d.ts +9 -9
  116. package/dist/components/blocks/text/link-at-point.js +12 -15
  117. package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
  118. package/dist/components/blocks/text/live-join-seam.js +75 -112
  119. package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
  120. package/dist/components/blocks/text/live-selection-edit.js +32 -108
  121. package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
  122. package/dist/components/blocks/text/live-split-rebalance.js +50 -67
  123. package/dist/components/blocks/text/marker-completion.d.ts +7 -12
  124. package/dist/components/blocks/text/marker-completion.js +17 -10
  125. package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
  126. package/dist/components/blocks/text/pending-mark-insert.js +30 -49
  127. package/dist/components/blocks/text/screen-diff.d.ts +5 -15
  128. package/dist/components/blocks/text/screen-diff.js +5 -19
  129. package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
  130. package/dist/components/blocks/text/text-clipboard.js +27 -32
  131. package/dist/components/blocks/text/text-keydown.d.ts +20 -30
  132. package/dist/components/blocks/text/text-keydown.js +54 -51
  133. package/dist/components/blocks/text/text-render.d.ts +25 -35
  134. package/dist/components/blocks/text/text-render.js +82 -61
  135. package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
  136. package/dist/components/blocks/text/widget-adjacency.js +17 -17
  137. package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
  138. package/dist/components/blocks/text/widget-interaction.js +212 -199
  139. package/dist/components/blocks/widget-portal.d.ts +20 -29
  140. package/dist/components/blocks/widget-portal.js +16 -14
  141. package/dist/components/built-in-blocks.d.ts +3 -4
  142. package/dist/components/built-in-blocks.js +17 -18
  143. package/dist/components/drag-handle.d.ts +12 -35
  144. package/dist/components/drag-handle.js +22 -68
  145. package/dist/components/editor-built-ins.d.ts +1 -0
  146. package/dist/components/editor-built-ins.js +16 -0
  147. package/dist/components/editor-root-clipboard.d.ts +6 -6
  148. package/dist/components/editor-root-clipboard.js +16 -27
  149. package/dist/components/editor-root-document-swap.d.ts +49 -0
  150. package/dist/components/editor-root-document-swap.js +54 -0
  151. package/dist/components/editor-root-focus.d.ts +5 -4
  152. package/dist/components/editor-root-focus.js +51 -22
  153. package/dist/components/editor-root-focused-surface.d.ts +35 -0
  154. package/dist/components/editor-root-focused-surface.js +65 -0
  155. package/dist/components/editor-root-geometry.d.ts +15 -24
  156. package/dist/components/editor-root-geometry.js +27 -31
  157. package/dist/components/editor-root-gestures.d.ts +39 -0
  158. package/dist/components/editor-root-gestures.js +189 -0
  159. package/dist/components/editor-root-keydown.d.ts +10 -25
  160. package/dist/components/editor-root-keydown.js +19 -43
  161. package/dist/components/editor-root-listeners.d.ts +22 -24
  162. package/dist/components/editor-root-listeners.js +49 -24
  163. package/dist/components/editor-root-menus.d.ts +51 -0
  164. package/dist/components/editor-root-menus.js +147 -0
  165. package/dist/components/editor-root-mode-flip.d.ts +16 -11
  166. package/dist/components/editor-root-mode-flip.js +36 -34
  167. package/dist/components/editor-root-scroll-host.d.ts +22 -0
  168. package/dist/components/editor-root-scroll-host.js +34 -0
  169. package/dist/components/editor-root-test-surface.d.ts +48 -0
  170. package/dist/components/editor-root-test-surface.js +6 -0
  171. package/dist/components/image/ImageOverlayHost.svelte +44 -35
  172. package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
  173. package/dist/components/image/ImageProperties.svelte +37 -41
  174. package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
  175. package/dist/components/image/ImageResizeHandles.svelte +14 -26
  176. package/dist/components/image/image-crop.d.ts +5 -11
  177. package/dist/components/image/image-crop.js +5 -11
  178. package/dist/components/image/image-edit-commit.d.ts +19 -16
  179. package/dist/components/image/image-edit-commit.js +74 -38
  180. package/dist/components/image/image-resize.d.ts +2 -5
  181. package/dist/components/image/image-resize.js +3 -6
  182. package/dist/components/image/image-widget-editing.d.ts +3 -3
  183. package/dist/components/image/image-widget-editing.js +9 -9
  184. package/dist/components/image/widget-dom.d.ts +2 -3
  185. package/dist/components/image/widget-dom.js +19 -24
  186. package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
  187. package/dist/components/image/widget-selection-state.svelte.js +26 -19
  188. package/dist/components/kind-cue.svelte.d.ts +21 -0
  189. package/dist/components/kind-cue.svelte.js +35 -0
  190. package/dist/components/link-card/LinkCard.svelte +115 -64
  191. package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
  192. package/dist/components/link-card/LinkCardHost.svelte +42 -33
  193. package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
  194. package/dist/components/link-card/link-card-commit.d.ts +16 -19
  195. package/dist/components/link-card/link-card-commit.js +21 -30
  196. package/dist/components/link-card/link-card-entry.d.ts +13 -23
  197. package/dist/components/link-card/link-card-entry.js +16 -24
  198. package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
  199. package/dist/components/link-card/link-card-state.svelte.js +2 -2
  200. package/dist/components/lrd-map-gate.d.ts +4 -11
  201. package/dist/components/lrd-map-gate.js +5 -11
  202. package/dist/components/menu/BlockMenu.svelte +20 -81
  203. package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
  204. package/dist/components/menu/InlineMenuHost.svelte +191 -0
  205. package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
  206. package/dist/components/menu/MenuIcon.svelte +3 -103
  207. package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
  208. package/dist/components/menu/SelectionToolbar.svelte +30 -35
  209. package/dist/components/menu/SelectionToolbar.svelte.d.ts +3 -5
  210. package/dist/components/menu/clipboard-actions.d.ts +3 -4
  211. package/dist/components/menu/clipboard-actions.js +3 -4
  212. package/dist/components/menu/default-context-actions.d.ts +4 -13
  213. package/dist/components/menu/default-context-actions.js +49 -67
  214. package/dist/components/menu/flyout-placement.d.ts +2 -2
  215. package/dist/components/menu/flyout-placement.js +2 -2
  216. package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
  217. package/dist/components/menu/menu-presence.svelte.js +19 -0
  218. package/dist/components/paste-image-arm.d.ts +6 -11
  219. package/dist/components/paste-image-arm.js +11 -18
  220. package/dist/components/portal.d.ts +2 -5
  221. package/dist/components/portal.js +4 -7
  222. package/dist/core/directive/activate.d.ts +4 -5
  223. package/dist/core/directive/activate.js +8 -9
  224. package/dist/core/directive/container-opener.js +13 -12
  225. package/dist/core/directive/grammar.d.ts +2 -5
  226. package/dist/core/directive/grammar.js +10 -10
  227. package/dist/core/directive/kinds.d.ts +4 -7
  228. package/dist/core/directive/kinds.js +14 -16
  229. package/dist/core/directive/registry.d.ts +12 -9
  230. package/dist/core/directive/registry.js +19 -20
  231. package/dist/core/directive/text-recognizer.d.ts +3 -2
  232. package/dist/core/directive/text-recognizer.js +5 -9
  233. package/dist/core/escapable.d.ts +1 -5
  234. package/dist/core/escapable.js +1 -5
  235. package/dist/core/inline/backticks.d.ts +3 -4
  236. package/dist/core/inline/backticks.js +3 -4
  237. package/dist/core/inline/character-refs.js +2 -1
  238. package/dist/core/inline/destination-bytes.d.ts +6 -3
  239. package/dist/core/inline/destination-bytes.js +50 -8
  240. package/dist/core/inline/entity-widget.d.ts +4 -3
  241. package/dist/core/inline/entity-widget.js +6 -6
  242. package/dist/core/inline/format-toggle.d.ts +22 -28
  243. package/dist/core/inline/format-toggle.js +97 -129
  244. package/dist/core/inline/html-entities.d.ts +2 -3
  245. package/dist/core/inline/html-entities.js +2 -3
  246. package/dist/core/inline/html-tag-grammar.js +6 -2
  247. package/dist/core/inline/image-dimensions.d.ts +2 -0
  248. package/dist/core/inline/image-dimensions.js +19 -2
  249. package/dist/core/inline/image-source-bytes.d.ts +11 -0
  250. package/dist/core/inline/image-source-bytes.js +71 -0
  251. package/dist/core/inline/index.d.ts +28 -21
  252. package/dist/core/inline/index.js +56 -34
  253. package/dist/core/inline/inline-cache.d.ts +12 -15
  254. package/dist/core/inline/inline-cache.js +11 -14
  255. package/dist/core/inline/inline-widgets.d.ts +54 -75
  256. package/dist/core/inline/inline-widgets.js +54 -62
  257. package/dist/core/inline/link-destination.d.ts +31 -0
  258. package/dist/core/inline/link-destination.js +129 -0
  259. package/dist/core/inline/link-reference-resolver.d.ts +8 -6
  260. package/dist/core/inline/link-reference-resolver.js +10 -6
  261. package/dist/core/inline/link-source-bytes.d.ts +31 -0
  262. package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
  263. package/dist/core/inline/live-edit/read-back.d.ts +29 -0
  264. package/dist/core/inline/live-edit/read-back.js +50 -0
  265. package/dist/core/inline/picture.d.ts +10 -0
  266. package/dist/core/inline/picture.js +40 -0
  267. package/dist/core/inline/scan/autolinks.d.ts +7 -8
  268. package/dist/core/inline/scan/autolinks.js +80 -59
  269. package/dist/core/inline/scan/brackets.d.ts +2 -2
  270. package/dist/core/inline/scan/brackets.js +6 -103
  271. package/dist/core/inline/scan/code-spans.d.ts +4 -0
  272. package/dist/core/inline/scan/code-spans.js +8 -0
  273. package/dist/core/inline/scan/emphasis.js +10 -14
  274. package/dist/core/inline/scan/index.d.ts +3 -1
  275. package/dist/core/inline/scan/index.js +32 -33
  276. package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
  277. package/dist/core/inline/scan/plugin-syntax.js +75 -89
  278. package/dist/core/inline/scan/scan-state.d.ts +2 -0
  279. package/dist/core/inline/scan/scan-state.js +1 -0
  280. package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
  281. package/dist/core/inline/scan/simple-nodes.js +2 -5
  282. package/dist/core/inline/scan/triggers.d.ts +17 -0
  283. package/dist/core/inline/scan/triggers.js +26 -0
  284. package/dist/core/inline/scan/url.js +8 -10
  285. package/dist/core/inline/transparency.d.ts +2 -1
  286. package/dist/core/inline/transparency.js +31 -15
  287. package/dist/core/inline/visibility.d.ts +30 -49
  288. package/dist/core/inline/visibility.js +31 -49
  289. package/dist/core/inline/walk.d.ts +4 -10
  290. package/dist/core/inline/walk.js +4 -10
  291. package/dist/core/inline-render.d.ts +22 -27
  292. package/dist/core/inline-render.js +51 -60
  293. package/dist/core/lines.d.ts +67 -26
  294. package/dist/core/lines.js +164 -33
  295. package/dist/core/metadata-parity.d.ts +9 -0
  296. package/dist/core/metadata-parity.js +25 -0
  297. package/dist/core/node-views.d.ts +7 -6
  298. package/dist/core/node-views.js +5 -5
  299. package/dist/core/nodes.d.ts +34 -44
  300. package/dist/core/nodes.js +4 -12
  301. package/dist/core/parser.d.ts +27 -34
  302. package/dist/core/parser.js +53 -67
  303. package/dist/core/parsers/blockquote.d.ts +5 -8
  304. package/dist/core/parsers/blockquote.js +11 -10
  305. package/dist/core/parsers/built-in-openers.d.ts +2 -5
  306. package/dist/core/parsers/built-in-openers.js +5 -8
  307. package/dist/core/parsers/fence-syntax.d.ts +36 -7
  308. package/dist/core/parsers/fence-syntax.js +61 -11
  309. package/dist/core/parsers/fenced-code.d.ts +16 -0
  310. package/dist/core/parsers/fenced-code.js +16 -15
  311. package/dist/core/parsers/heading.d.ts +19 -2
  312. package/dist/core/parsers/heading.js +50 -2
  313. package/dist/core/parsers/html-block.d.ts +3 -6
  314. package/dist/core/parsers/html-block.js +10 -11
  315. package/dist/core/parsers/indented-code.d.ts +1 -1
  316. package/dist/core/parsers/indented-code.js +2 -8
  317. package/dist/core/parsers/link-reference.d.ts +5 -3
  318. package/dist/core/parsers/link-reference.js +116 -120
  319. package/dist/core/parsers/list.d.ts +12 -5
  320. package/dist/core/parsers/list.js +53 -36
  321. package/dist/core/parsers/paragraph.d.ts +3 -3
  322. package/dist/core/parsers/paragraph.js +14 -5
  323. package/dist/core/parsers/table-completion.d.ts +2 -5
  324. package/dist/core/parsers/table-completion.js +7 -10
  325. package/dist/core/parsers/table.d.ts +8 -8
  326. package/dist/core/parsers/table.js +23 -26
  327. package/dist/core/parsers/thematic-break.js +15 -14
  328. package/dist/core/paths.d.ts +13 -0
  329. package/dist/core/paths.js +31 -0
  330. package/dist/core/terminator-escalation.d.ts +0 -7
  331. package/dist/core/terminator-escalation.js +5 -8
  332. package/dist/core/url-policy.d.ts +2 -5
  333. package/dist/core/url-policy.js +8 -12
  334. package/dist/cursor/caret-memory.d.ts +34 -0
  335. package/dist/cursor/caret-memory.js +82 -0
  336. package/dist/cursor/coordinate-spaces.d.ts +26 -19
  337. package/dist/cursor/coordinate-spaces.js +32 -20
  338. package/dist/cursor/dom-walk.d.ts +7 -13
  339. package/dist/cursor/dom-walk.js +7 -13
  340. package/dist/cursor/edge-affinity.d.ts +7 -35
  341. package/dist/cursor/edge-affinity.js +13 -44
  342. package/dist/cursor/focused-caret.d.ts +6 -8
  343. package/dist/cursor/focused-caret.js +7 -16
  344. package/dist/cursor/height-model.d.ts +3 -3
  345. package/dist/cursor/height-model.js +5 -5
  346. package/dist/cursor/height-oracle.d.ts +10 -6
  347. package/dist/cursor/height-oracle.js +26 -74
  348. package/dist/cursor/observe-resize.d.ts +13 -0
  349. package/dist/cursor/observe-resize.js +43 -0
  350. package/dist/cursor/overlay-rects.d.ts +2 -5
  351. package/dist/cursor/overlay-rects.js +2 -5
  352. package/dist/cursor/overlay-remeasure.d.ts +6 -7
  353. package/dist/cursor/overlay-remeasure.js +10 -14
  354. package/dist/cursor/pending-marks.d.ts +7 -9
  355. package/dist/cursor/pending-marks.js +6 -27
  356. package/dist/cursor/point-offset.d.ts +16 -10
  357. package/dist/cursor/point-offset.js +60 -25
  358. package/dist/cursor/reveal-source.d.ts +7 -11
  359. package/dist/cursor/reveal-source.js +10 -18
  360. package/dist/cursor/scroll-ancestors.d.ts +9 -20
  361. package/dist/cursor/scroll-ancestors.js +14 -26
  362. package/dist/cursor/scroll-owner.d.ts +92 -0
  363. package/dist/cursor/scroll-owner.js +283 -0
  364. package/dist/cursor/scrollport.d.ts +14 -15
  365. package/dist/cursor/scrollport.js +7 -13
  366. package/dist/cursor/sticky-column.d.ts +6 -29
  367. package/dist/cursor/sticky-column.js +6 -49
  368. package/dist/cursor/sticky-measure.d.ts +14 -9
  369. package/dist/cursor/sticky-measure.js +99 -49
  370. package/dist/cursor/surface-backend.d.ts +41 -0
  371. package/dist/cursor/surface-backend.js +78 -0
  372. package/dist/cursor/typography-estimates.d.ts +3 -3
  373. package/dist/cursor/typography-estimates.js +3 -3
  374. package/dist/cursor/visual-lines.d.ts +25 -14
  375. package/dist/cursor/visual-lines.js +45 -46
  376. package/dist/cursor/widget-edge-snap.d.ts +10 -15
  377. package/dist/cursor/widget-edge-snap.js +13 -12
  378. package/dist/cursor/widget-offset.d.ts +110 -104
  379. package/dist/cursor/widget-offset.js +344 -179
  380. package/dist/debug/diagnostics-report.d.ts +6 -6
  381. package/dist/debug/diagnostics-report.js +5 -5
  382. package/dist/debug/dump-tree.js +2 -2
  383. package/dist/debug/editor-diagnostics.d.ts +15 -0
  384. package/dist/debug/editor-diagnostics.js +33 -0
  385. package/dist/debug/inspect.d.ts +2 -2
  386. package/dist/debug/inspect.js +4 -4
  387. package/dist/debug/interaction-trace.d.ts +14 -15
  388. package/dist/debug/interaction-trace.js +19 -20
  389. package/dist/debug/operations-log.d.ts +1 -1
  390. package/dist/debug/operations-log.js +1 -1
  391. package/dist/decorations/buckets.d.ts +6 -12
  392. package/dist/decorations/buckets.js +4 -11
  393. package/dist/decorations/decoration-state.svelte.d.ts +2 -3
  394. package/dist/decorations/decoration-state.svelte.js +24 -26
  395. package/dist/decorations/island-dom.d.ts +10 -18
  396. package/dist/decorations/island-dom.js +25 -50
  397. package/dist/decorations/reserved-attrs.d.ts +6 -8
  398. package/dist/decorations/reserved-attrs.js +30 -17
  399. package/dist/decorations/types.d.ts +6 -7
  400. package/dist/decorations/types.js +2 -1
  401. package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
  402. package/dist/decorations/use-block-decorations.svelte.js +71 -0
  403. package/dist/decorations/widget-dom.d.ts +3 -3
  404. package/dist/decorations/widget-dom.js +5 -5
  405. package/dist/dev-warn.d.ts +5 -2
  406. package/dist/dev-warn.js +16 -4
  407. package/dist/editor-actions/ancestry-folds.d.ts +9 -14
  408. package/dist/editor-actions/ancestry-folds.js +13 -18
  409. package/dist/editor-actions/block-edit-core.d.ts +49 -22
  410. package/dist/editor-actions/block-edit-core.js +279 -151
  411. package/dist/editor-actions/block-edit-scope.d.ts +63 -50
  412. package/dist/editor-actions/block-edit-scope.js +100 -48
  413. package/dist/editor-actions/block-edit.d.ts +2 -3
  414. package/dist/editor-actions/block-edit.js +14 -90
  415. package/dist/editor-actions/commit/history.d.ts +4 -4
  416. package/dist/editor-actions/commit/history.js +33 -34
  417. package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
  418. package/dist/editor-actions/commit/reading-write-gate.js +56 -0
  419. package/dist/editor-actions/commit/text-batch.d.ts +7 -11
  420. package/dist/editor-actions/commit/text-batch.js +6 -7
  421. package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
  422. package/dist/editor-actions/commit/undo-controller.js +346 -216
  423. package/dist/editor-actions/container-block-component.d.ts +32 -51
  424. package/dist/editor-actions/container-block-component.js +66 -92
  425. package/dist/editor-actions/container-edit.d.ts +4 -2
  426. package/dist/editor-actions/container-edit.js +14 -44
  427. package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
  428. package/dist/editor-actions/container-exit-overrides.js +19 -21
  429. package/dist/editor-actions/deps.d.ts +25 -32
  430. package/dist/editor-actions/enter-completion.d.ts +12 -15
  431. package/dist/editor-actions/enter-completion.js +49 -51
  432. package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
  433. package/dist/editor-actions/focus/focus-dispatch.js +28 -50
  434. package/dist/editor-actions/focus/focus-landing.d.ts +8 -11
  435. package/dist/editor-actions/focus/focus-landing.js +15 -14
  436. package/dist/editor-actions/focus/focus.d.ts +3 -2
  437. package/dist/editor-actions/focus/focus.js +42 -59
  438. package/dist/editor-actions/index.d.ts +4 -3
  439. package/dist/editor-actions/index.js +5 -4
  440. package/dist/editor-actions/inline-range-commit.d.ts +18 -16
  441. package/dist/editor-actions/inline-range-commit.js +45 -54
  442. package/dist/editor-actions/leaf-write.d.ts +11 -0
  443. package/dist/editor-actions/leaf-write.js +102 -0
  444. package/dist/editor-actions/list-context.d.ts +9 -10
  445. package/dist/editor-actions/list-context.js +115 -110
  446. package/dist/editor-actions/list-overrides.d.ts +13 -5
  447. package/dist/editor-actions/list-overrides.js +36 -12
  448. package/dist/editor-actions/merge-fallback.d.ts +10 -16
  449. package/dist/editor-actions/merge-fallback.js +11 -22
  450. package/dist/editor-actions/nested/container-actions.d.ts +37 -0
  451. package/dist/editor-actions/nested/container-actions.js +42 -0
  452. package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
  453. package/dist/editor-actions/nested/emptied-container.js +5 -0
  454. package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
  455. package/dist/editor-actions/nested/nested-actions.js +17 -15
  456. package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
  457. package/dist/editor-actions/nested/nested-block-edit.js +40 -134
  458. package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
  459. package/dist/editor-actions/nested/nested-focus.js +33 -21
  460. package/dist/editor-actions/paste-coordinator.d.ts +3 -2
  461. package/dist/editor-actions/paste-coordinator.js +17 -13
  462. package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
  463. package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
  464. package/dist/editor-actions/plugin/container.d.ts +54 -82
  465. package/dist/editor-actions/plugin/container.js +105 -188
  466. package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
  467. package/dist/editor-actions/plugin/directive-container.js +7 -8
  468. package/dist/editor-actions/reorder-action.d.ts +7 -12
  469. package/dist/editor-actions/reorder-action.js +32 -48
  470. package/dist/editor-actions/reorder-drag.d.ts +12 -8
  471. package/dist/editor-actions/reorder-drag.js +45 -41
  472. package/dist/editor-actions/replacement-focus.d.ts +13 -21
  473. package/dist/editor-actions/replacement-focus.js +32 -33
  474. package/dist/editor-actions/search-replace.js +71 -67
  475. package/dist/editor-actions/stored-caret.d.ts +7 -0
  476. package/dist/editor-actions/stored-caret.js +10 -0
  477. package/dist/editor-actions/table-context.d.ts +9 -11
  478. package/dist/editor-actions/table-context.js +70 -93
  479. package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
  480. package/dist/editor-actions/unwrap-strategies.js +52 -63
  481. package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
  482. package/dist/editor-actions/whole-block-focus-surface.js +43 -53
  483. package/dist/editor-events.d.ts +25 -29
  484. package/dist/editor-events.js +17 -28
  485. package/dist/editor-keys.d.ts +96 -104
  486. package/dist/editor-keys.js +11 -24
  487. package/dist/editor-props.d.ts +88 -71
  488. package/dist/editor-rects.d.ts +23 -34
  489. package/dist/editor-rects.js +9 -77
  490. package/dist/env.d.ts +6 -4
  491. package/dist/env.js +8 -4
  492. package/dist/index.d.ts +6 -2
  493. package/dist/index.js +5 -2
  494. package/dist/inline-menu/inline-menu-session.d.ts +37 -0
  495. package/dist/inline-menu/inline-menu-session.js +98 -0
  496. package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
  497. package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
  498. package/dist/inline-menu/types.d.ts +77 -0
  499. package/dist/inline-menu/types.js +7 -0
  500. package/dist/invariants/child-id-parity.d.ts +23 -0
  501. package/dist/invariants/child-id-parity.js +39 -0
  502. package/dist/invariants/commit-paths.d.ts +4 -4
  503. package/dist/invariants/commit-paths.js +4 -4
  504. package/dist/invariants/commit-scope.d.ts +4 -4
  505. package/dist/invariants/commit-scope.js +9 -8
  506. package/dist/invariants/context-keys.d.ts +2 -5
  507. package/dist/invariants/context-keys.js +3 -6
  508. package/dist/invariants/descriptor.d.ts +2 -6
  509. package/dist/invariants/descriptor.js +2 -6
  510. package/dist/invariants/inline-transitions.d.ts +9 -16
  511. package/dist/invariants/inline-transitions.js +10 -18
  512. package/dist/invariants/install.d.ts +18 -27
  513. package/dist/invariants/install.js +29 -30
  514. package/dist/invariants/keeps-a-block.d.ts +7 -0
  515. package/dist/invariants/keeps-a-block.js +14 -0
  516. package/dist/invariants/landable-caret.d.ts +5 -7
  517. package/dist/invariants/landable-caret.js +8 -11
  518. package/dist/invariants/landing-focus-scroll.d.ts +7 -0
  519. package/dist/invariants/landing-focus-scroll.js +13 -0
  520. package/dist/invariants/landing-value.d.ts +13 -0
  521. package/dist/invariants/landing-value.js +27 -0
  522. package/dist/invariants/marker-css-parity.d.ts +5 -6
  523. package/dist/invariants/marker-css-parity.js +11 -12
  524. package/dist/invariants/measures-in-own-list.d.ts +6 -0
  525. package/dist/invariants/measures-in-own-list.js +13 -0
  526. package/dist/invariants/node-shape.d.ts +18 -37
  527. package/dist/invariants/node-shape.js +123 -79
  528. package/dist/invariants/open-tail.d.ts +7 -0
  529. package/dist/invariants/open-tail.js +45 -0
  530. package/dist/invariants/placement-ends-widget.d.ts +8 -0
  531. package/dist/invariants/placement-ends-widget.js +13 -0
  532. package/dist/invariants/registry.d.ts +27 -66
  533. package/dist/invariants/registry.js +61 -137
  534. package/dist/invariants/render-fidelity.d.ts +4 -4
  535. package/dist/invariants/render-fidelity.js +5 -5
  536. package/dist/invariants/selection-endpoints.d.ts +6 -7
  537. package/dist/invariants/selection-endpoints.js +18 -16
  538. package/dist/invariants/single-node-sink.d.ts +4 -5
  539. package/dist/invariants/single-node-sink.js +4 -5
  540. package/dist/invariants/snapshot-integrity.d.ts +5 -6
  541. package/dist/invariants/snapshot-integrity.js +1 -1
  542. package/dist/invariants/structural-descriptor.d.ts +6 -15
  543. package/dist/invariants/structural-descriptor.js +6 -15
  544. package/dist/menu-icons.d.ts +47 -0
  545. package/dist/menu-icons.js +113 -0
  546. package/dist/perf/instruments.d.ts +20 -5
  547. package/dist/perf/instruments.js +35 -15
  548. package/dist/perf/use-mount-gauge.svelte.js +4 -4
  549. package/dist/plugin.d.ts +37 -8
  550. package/dist/plugin.js +100 -77
  551. package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
  552. package/dist/plugins/admonitions/admonition-kind.js +12 -10
  553. package/dist/plugins/admonitions/convert-document.d.ts +5 -5
  554. package/dist/plugins/admonitions/convert-document.js +8 -7
  555. package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
  556. package/dist/plugins/admonitions/gh-alert.js +21 -22
  557. package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
  558. package/dist/plugins/admonitions/github-alert-kind.js +28 -37
  559. package/dist/plugins/admonitions/index.js +2 -2
  560. package/dist/plugins/admonitions/kinds.d.ts +1 -1
  561. package/dist/plugins/admonitions/register.js +11 -2
  562. package/dist/plugins/details/DetailsBlock.svelte +20 -20
  563. package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
  564. package/dist/plugins/details/details-disclosure.svelte.js +6 -7
  565. package/dist/plugins/details/details-kind.d.ts +6 -7
  566. package/dist/plugins/details/details-kind.js +44 -59
  567. package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
  568. package/dist/plugins/emoji/emoji-recognizer.js +7 -14
  569. package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
  570. package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
  571. package/dist/plugins/footnotes/constants.d.ts +2 -0
  572. package/dist/plugins/footnotes/constants.js +3 -0
  573. package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
  574. package/dist/plugins/footnotes/footnote-definition.js +69 -45
  575. package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
  576. package/dist/plugins/footnotes/footnote-lookup.js +14 -26
  577. package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
  578. package/dist/plugins/footnotes/footnote-numbering.js +22 -31
  579. package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
  580. package/dist/plugins/footnotes/footnote-reference.js +8 -13
  581. package/dist/plugins/footnotes/index.js +2 -3
  582. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
  583. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
  584. package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
  585. package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
  586. package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
  587. package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
  588. package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
  589. package/dist/plugins/highlight-occurrences/word-char.js +4 -0
  590. package/dist/plugins/latex/BlockMath.svelte +58 -75
  591. package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
  592. package/dist/plugins/latex/MathInline.svelte +10 -9
  593. package/dist/plugins/latex/flanking.d.ts +1 -0
  594. package/dist/plugins/latex/flanking.js +3 -0
  595. package/dist/plugins/latex/index.d.ts +1 -1
  596. package/dist/plugins/latex/latex-kind.d.ts +4 -4
  597. package/dist/plugins/latex/latex-kind.js +78 -67
  598. package/dist/plugins/latex/math-completion.d.ts +1 -1
  599. package/dist/plugins/latex/math-completion.js +5 -8
  600. package/dist/plugins/latex/math-layout.d.ts +2 -8
  601. package/dist/plugins/latex/math-layout.js +0 -9
  602. package/dist/plugins/latex/math-renderer.d.ts +17 -20
  603. package/dist/plugins/latex/math-renderer.js +21 -38
  604. package/dist/plugins/latex/math-source.d.ts +4 -8
  605. package/dist/plugins/latex/math-source.js +36 -81
  606. package/dist/plugins/latex/register.d.ts +10 -11
  607. package/dist/plugins/latex/register.js +24 -10
  608. package/dist/plugins/latex/renderer.d.ts +9 -10
  609. package/dist/plugins/latex/renderer.js +9 -24
  610. package/dist/plugins/mermaid/MermaidBlock.svelte +51 -45
  611. package/dist/plugins/mermaid/index.js +1 -1
  612. package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
  613. package/dist/plugins/mermaid/mermaid-kind.js +30 -47
  614. package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
  615. package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
  616. package/dist/plugins/mermaid/register.d.ts +3 -3
  617. package/dist/plugins/mermaid/register.js +5 -5
  618. package/dist/plugins/mermaid/renderer.d.ts +5 -5
  619. package/dist/plugins/mermaid/renderer.js +8 -11
  620. package/dist/plugins/parrot/ParrotBlock.svelte +15 -6
  621. package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
  622. package/dist/plugins/parrot/parrot-plugin.js +3 -3
  623. package/dist/plugins/slash-commands/filter.d.ts +23 -0
  624. package/dist/plugins/slash-commands/filter.js +31 -0
  625. package/dist/plugins/slash-commands/index.d.ts +2 -0
  626. package/dist/plugins/slash-commands/index.js +2 -0
  627. package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
  628. package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
  629. package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
  630. package/dist/plugins/slash-commands/slash-source.js +108 -0
  631. package/dist/plugins/toc/TocBlock.svelte +23 -22
  632. package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
  633. package/dist/plugins/toc/heading-outline.d.ts +7 -12
  634. package/dist/plugins/toc/heading-outline.js +22 -36
  635. package/dist/plugins/toc/navigation-queue.d.ts +2 -4
  636. package/dist/plugins/toc/toc-plugin.d.ts +5 -5
  637. package/dist/plugins/toc/toc-plugin.js +20 -13
  638. package/dist/presentation-mode.d.ts +15 -23
  639. package/dist/presentation-mode.js +19 -25
  640. package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
  641. package/dist/reactivity/block-list-state.svelte.js +8 -9
  642. package/dist/reactivity/block-window.svelte.d.ts +12 -6
  643. package/dist/reactivity/block-window.svelte.js +44 -17
  644. package/dist/reactivity/child-list.d.ts +34 -0
  645. package/dist/reactivity/child-list.js +48 -0
  646. package/dist/reactivity/content-version.svelte.d.ts +4 -7
  647. package/dist/reactivity/content-version.svelte.js +3 -5
  648. package/dist/reactivity/hold-across.d.ts +39 -0
  649. package/dist/reactivity/hold-across.js +57 -0
  650. package/dist/reactivity/layout-state.svelte.d.ts +27 -0
  651. package/dist/reactivity/layout-state.svelte.js +51 -0
  652. package/dist/reactivity/list-tree.d.ts +39 -0
  653. package/dist/reactivity/list-tree.js +132 -0
  654. package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
  655. package/dist/reactivity/list-windowing.svelte.js +141 -310
  656. package/dist/reactivity/measure-batch.d.ts +6 -8
  657. package/dist/reactivity/measure-batch.js +5 -6
  658. package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
  659. package/dist/reactivity/publish-ref.svelte.js +21 -85
  660. package/dist/reactivity/scope-geometry.d.ts +6 -13
  661. package/dist/reactivity/scope-geometry.js +7 -14
  662. package/dist/reactivity/state-registry.d.ts +5 -5
  663. package/dist/reactivity/state-registry.js +11 -15
  664. package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
  665. package/dist/reactivity/use-container-windowing.svelte.js +64 -74
  666. package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
  667. package/dist/reactivity/use-measured-child.svelte.js +41 -0
  668. package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
  669. package/dist/reactivity/use-window-floor.svelte.js +27 -0
  670. package/dist/reactivity/window-slice.d.ts +4 -4
  671. package/dist/reactivity/window-slice.js +0 -2
  672. package/dist/renderer-slot.d.ts +48 -0
  673. package/dist/renderer-slot.js +85 -0
  674. package/dist/scan-index.d.ts +4 -4
  675. package/dist/scan-index.js +4 -4
  676. package/dist/schema/block-commands.d.ts +69 -54
  677. package/dist/schema/block-commands.js +91 -104
  678. package/dist/schema/block-completions.d.ts +16 -19
  679. package/dist/schema/block-completions.js +25 -32
  680. package/dist/schema/block-component-registry.d.ts +13 -14
  681. package/dist/schema/block-component-registry.js +19 -17
  682. package/dist/schema/block-kind-descriptor.d.ts +234 -168
  683. package/dist/schema/block-kind-descriptor.js +151 -66
  684. package/dist/schema/block-openers.d.ts +48 -39
  685. package/dist/schema/block-openers.js +73 -83
  686. package/dist/schema/built-in-descriptors.d.ts +3 -5
  687. package/dist/schema/built-in-descriptors.js +96 -80
  688. package/dist/schema/child-spans.d.ts +12 -10
  689. package/dist/schema/child-spans.js +68 -34
  690. package/dist/schema/closure.d.ts +18 -16
  691. package/dist/schema/closure.js +24 -14
  692. package/dist/schema/command-id.d.ts +6 -8
  693. package/dist/schema/command-id.js +20 -25
  694. package/dist/schema/commands.d.ts +78 -84
  695. package/dist/schema/commands.js +152 -117
  696. package/dist/schema/container-raw.d.ts +51 -11
  697. package/dist/schema/container-raw.js +143 -14
  698. package/dist/schema/container-rebuilders.d.ts +17 -15
  699. package/dist/schema/container-rebuilders.js +30 -22
  700. package/dist/schema/context-actions.d.ts +25 -13
  701. package/dist/schema/context-actions.js +32 -17
  702. package/dist/schema/define-plugin-block.d.ts +8 -6
  703. package/dist/schema/define-plugin-block.js +6 -4
  704. package/dist/schema/fenced-code-raw.d.ts +30 -17
  705. package/dist/schema/fenced-code-raw.js +155 -107
  706. package/dist/schema/global-commands.d.ts +6 -6
  707. package/dist/schema/global-commands.js +14 -22
  708. package/dist/schema/height-estimates.d.ts +31 -0
  709. package/dist/schema/height-estimates.js +64 -0
  710. package/dist/schema/inline-construct-policy.d.ts +42 -55
  711. package/dist/schema/inline-construct-policy.js +36 -35
  712. package/dist/schema/insert-catalogue.d.ts +30 -0
  713. package/dist/schema/insert-catalogue.js +95 -0
  714. package/dist/schema/keybinding-overrides.d.ts +9 -11
  715. package/dist/schema/keybinding-overrides.js +1 -1
  716. package/dist/schema/keybindings.d.ts +15 -7
  717. package/dist/schema/keybindings.js +21 -9
  718. package/dist/schema/merge-rules.d.ts +5 -7
  719. package/dist/schema/merge-rules.js +7 -9
  720. package/dist/schema/opener-priorities.d.ts +4 -4
  721. package/dist/schema/opener-priorities.js +4 -4
  722. package/dist/schema/operations.d.ts +8 -10
  723. package/dist/schema/operations.js +3 -3
  724. package/dist/schema/page-role.d.ts +14 -0
  725. package/dist/schema/page-role.js +19 -0
  726. package/dist/schema/plugin-activation.d.ts +4 -6
  727. package/dist/schema/plugin-activation.js +12 -10
  728. package/dist/schema/plugin-editor-context.d.ts +25 -10
  729. package/dist/schema/plugin-editor-context.js +40 -9
  730. package/dist/schema/plugin-install.d.ts +49 -17
  731. package/dist/schema/plugin-install.js +51 -25
  732. package/dist/schema/plugin-kind.d.ts +12 -8
  733. package/dist/schema/plugin-kind.js +35 -42
  734. package/dist/schema/plugin-name.js +3 -3
  735. package/dist/schema/plugin-registry.d.ts +54 -0
  736. package/dist/schema/plugin-registry.js +70 -0
  737. package/dist/schema/reading.d.ts +23 -0
  738. package/dist/schema/reading.js +7 -0
  739. package/dist/schema/register-once.d.ts +3 -5
  740. package/dist/schema/register-once.js +7 -16
  741. package/dist/schema/registration-checks.d.ts +12 -16
  742. package/dist/schema/registration-checks.js +35 -51
  743. package/dist/schema/registration-pairs.d.ts +54 -0
  744. package/dist/schema/registration-pairs.js +48 -0
  745. package/dist/schema/registration-pending.d.ts +8 -12
  746. package/dist/schema/registration-pending.js +9 -9
  747. package/dist/schema/registry-reset.d.ts +8 -4
  748. package/dist/schema/registry-reset.js +13 -26
  749. package/dist/schema/registry-view.d.ts +25 -13
  750. package/dist/schema/registry-view.js +26 -20
  751. package/dist/schema/reserved-chords.d.ts +9 -10
  752. package/dist/schema/reserved-chords.js +63 -80
  753. package/dist/schema/reserved-chrome.d.ts +12 -11
  754. package/dist/schema/reserved-chrome.js +15 -11
  755. package/dist/schema/setext-raw.d.ts +13 -0
  756. package/dist/schema/setext-raw.js +33 -0
  757. package/dist/schema/stored-as.d.ts +20 -0
  758. package/dist/schema/stored-as.js +6 -0
  759. package/dist/schema/table-cell-raw.d.ts +18 -7
  760. package/dist/schema/table-cell-raw.js +28 -7
  761. package/dist/schema/whole-block-unit.d.ts +5 -4
  762. package/dist/schema/whole-block-unit.js +5 -4
  763. package/dist/search/document-scan.d.ts +3 -3
  764. package/dist/search/document-scan.js +2 -2
  765. package/dist/search/matcher.d.ts +1 -1
  766. package/dist/search/regex-executor.d.ts +5 -6
  767. package/dist/search/regex-executor.js +6 -8
  768. package/dist/search/replace.d.ts +2 -5
  769. package/dist/search/replace.js +2 -5
  770. package/dist/search/search-state.svelte.d.ts +5 -5
  771. package/dist/search/search-state.svelte.js +12 -16
  772. package/dist/selection/autoscroll.d.ts +6 -9
  773. package/dist/selection/block-hit-test.d.ts +16 -24
  774. package/dist/selection/block-hit-test.js +29 -22
  775. package/dist/selection/caret-doors.d.ts +15 -14
  776. package/dist/selection/caret-doors.js +37 -26
  777. package/dist/selection/caret-landing.d.ts +62 -0
  778. package/dist/selection/caret-landing.js +157 -0
  779. package/dist/selection/caret-restore.d.ts +17 -10
  780. package/dist/selection/caret-restore.js +10 -22
  781. package/dist/selection/caret-target.d.ts +30 -0
  782. package/dist/selection/caret-target.js +84 -0
  783. package/dist/selection/char-endpoint-snap.d.ts +6 -10
  784. package/dist/selection/char-endpoint-snap.js +8 -14
  785. package/dist/selection/clipboard-text.d.ts +5 -12
  786. package/dist/selection/clipboard-text.js +69 -172
  787. package/dist/selection/covered-block.d.ts +6 -8
  788. package/dist/selection/covered-block.js +8 -19
  789. package/dist/selection/cross-block/clipboard.d.ts +3 -2
  790. package/dist/selection/cross-block/clipboard.js +13 -4
  791. package/dist/selection/cross-block/dispatch.d.ts +47 -43
  792. package/dist/selection/cross-block/dispatch.js +12 -23
  793. package/dist/selection/cross-block/format-range.d.ts +18 -21
  794. package/dist/selection/cross-block/format-range.js +104 -103
  795. package/dist/selection/cross-block/format-toggle.d.ts +10 -15
  796. package/dist/selection/cross-block/format-toggle.js +28 -33
  797. package/dist/selection/cross-block/keydown.d.ts +4 -4
  798. package/dist/selection/cross-block/keydown.js +92 -125
  799. package/dist/selection/cross-block/ops.d.ts +19 -34
  800. package/dist/selection/cross-block/ops.js +110 -95
  801. package/dist/selection/cross-block/paste.d.ts +2 -3
  802. package/dist/selection/cross-block/paste.js +59 -96
  803. package/dist/selection/cross-block/pointer.d.ts +17 -15
  804. package/dist/selection/cross-block/pointer.js +74 -25
  805. package/dist/selection/cross-block/type-replace.d.ts +4 -6
  806. package/dist/selection/cross-block/type-replace.js +51 -134
  807. package/dist/selection/dead-space-caret.d.ts +19 -30
  808. package/dist/selection/dead-space-caret.js +70 -88
  809. package/dist/selection/drag-pointer.d.ts +7 -9
  810. package/dist/selection/drag-pointer.js +23 -33
  811. package/dist/selection/gap-caret.d.ts +17 -28
  812. package/dist/selection/gap-caret.js +14 -26
  813. package/dist/selection/grid-selection.d.ts +12 -0
  814. package/dist/selection/grid-selection.js +22 -0
  815. package/dist/selection/keyboard-extend.d.ts +27 -40
  816. package/dist/selection/keyboard-extend.js +94 -117
  817. package/dist/selection/multi-click.d.ts +13 -18
  818. package/dist/selection/multi-click.js +32 -38
  819. package/dist/selection/native-bridge.d.ts +29 -39
  820. package/dist/selection/native-bridge.js +78 -127
  821. package/dist/selection/nearest-block.d.ts +17 -12
  822. package/dist/selection/nearest-block.js +37 -18
  823. package/dist/selection/path-lookup.d.ts +25 -16
  824. package/dist/selection/path-lookup.js +101 -18
  825. package/dist/selection/path-math.d.ts +9 -11
  826. package/dist/selection/path-math.js +5 -7
  827. package/dist/selection/pointer-gesture.d.ts +5 -5
  828. package/dist/selection/pointer-gesture.js +5 -5
  829. package/dist/selection/pointer-session.d.ts +10 -16
  830. package/dist/selection/pointer-session.js +6 -7
  831. package/dist/selection/primitives.d.ts +64 -40
  832. package/dist/selection/primitives.js +57 -67
  833. package/dist/selection/range-coverage.d.ts +94 -0
  834. package/dist/selection/range-coverage.js +365 -0
  835. package/dist/selection/range-delete-ceremony.d.ts +28 -74
  836. package/dist/selection/range-delete-ceremony.js +100 -141
  837. package/dist/selection/range-delete-chrome.d.ts +20 -33
  838. package/dist/selection/range-delete-chrome.js +53 -78
  839. package/dist/selection/range-delete-table-coverage.d.ts +11 -25
  840. package/dist/selection/range-delete-table-coverage.js +42 -112
  841. package/dist/selection/range-delete-table.d.ts +14 -12
  842. package/dist/selection/range-delete-table.js +106 -310
  843. package/dist/selection/range-delete.d.ts +18 -23
  844. package/dist/selection/range-delete.js +83 -123
  845. package/dist/selection/round-trip-restore.d.ts +18 -0
  846. package/dist/selection/round-trip-restore.js +19 -0
  847. package/dist/selection/selection-announcer.d.ts +17 -0
  848. package/dist/selection/selection-announcer.js +25 -0
  849. package/dist/selection/selection-description.d.ts +4 -3
  850. package/dist/selection/selection-description.js +5 -4
  851. package/dist/selection/selection-drop.d.ts +34 -16
  852. package/dist/selection/selection-drop.js +159 -95
  853. package/dist/selection/selection-restore.d.ts +20 -33
  854. package/dist/selection/selection-restore.js +21 -44
  855. package/dist/selection/selection-state.svelte.d.ts +50 -42
  856. package/dist/selection/selection-state.svelte.js +144 -98
  857. package/dist/selection/shared-keydown.d.ts +22 -27
  858. package/dist/selection/shared-keydown.js +25 -45
  859. package/dist/selection/table-endpoint-snap.d.ts +17 -41
  860. package/dist/selection/table-endpoint-snap.js +54 -80
  861. package/dist/selection/table-rect-extend.d.ts +3 -6
  862. package/dist/selection/table-rect-extend.js +19 -14
  863. package/dist/styles/editor-theme.css +60 -53
  864. package/dist/styles/editor.css +201 -143
  865. package/dist/testing/conformance-core.d.ts +50 -18
  866. package/dist/testing/conformance-core.js +88 -50
  867. package/dist/testing/container-conformance.d.ts +48 -84
  868. package/dist/testing/container-conformance.js +159 -285
  869. package/dist/testing/headless-actions.d.ts +34 -19
  870. package/dist/testing/headless-actions.js +116 -65
  871. package/dist/testing/headless-block-list.svelte.d.ts +16 -0
  872. package/dist/testing/headless-block-list.svelte.js +22 -0
  873. package/dist/testing/inline-conformance.d.ts +15 -22
  874. package/dist/testing/inline-conformance.js +131 -148
  875. package/dist/testing/kind-conformance.d.ts +19 -24
  876. package/dist/testing/kind-conformance.js +204 -117
  877. package/dist/testing/kit-reading.d.ts +7 -0
  878. package/dist/testing/kit-reading.js +16 -0
  879. package/dist/testing/mount-dom-stubs.d.ts +4 -5
  880. package/dist/testing/mount-dom-stubs.js +8 -5
  881. package/dist/testing/parse-convergence.d.ts +10 -10
  882. package/dist/testing/parse-convergence.js +14 -49
  883. package/dist/testing.d.ts +13 -9
  884. package/dist/testing.js +28 -38
  885. package/dist/tree-operations/blockquote.d.ts +8 -14
  886. package/dist/tree-operations/blockquote.js +25 -45
  887. package/dist/tree-operations/chain-rebuild.d.ts +34 -25
  888. package/dist/tree-operations/chain-rebuild.js +115 -52
  889. package/dist/tree-operations/children.d.ts +5 -9
  890. package/dist/tree-operations/children.js +7 -11
  891. package/dist/tree-operations/cleanup.d.ts +6 -7
  892. package/dist/tree-operations/cleanup.js +14 -11
  893. package/dist/tree-operations/clone.js +5 -4
  894. package/dist/tree-operations/container-lift.d.ts +10 -5
  895. package/dist/tree-operations/container-lift.js +20 -14
  896. package/dist/tree-operations/container-offsets.d.ts +22 -0
  897. package/dist/tree-operations/container-offsets.js +89 -0
  898. package/dist/tree-operations/content-write.d.ts +52 -29
  899. package/dist/tree-operations/content-write.js +155 -110
  900. package/dist/tree-operations/index.d.ts +4 -4
  901. package/dist/tree-operations/index.js +4 -4
  902. package/dist/tree-operations/keep-one-block.d.ts +10 -0
  903. package/dist/tree-operations/keep-one-block.js +19 -0
  904. package/dist/tree-operations/leaf-range.d.ts +33 -0
  905. package/dist/tree-operations/leaf-range.js +67 -0
  906. package/dist/tree-operations/list/empty-check.d.ts +2 -3
  907. package/dist/tree-operations/list/empty-check.js +4 -4
  908. package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
  909. package/dist/tree-operations/list/exit-replacement.js +4 -9
  910. package/dist/tree-operations/list/item-partition.d.ts +2 -2
  911. package/dist/tree-operations/list/item-partition.js +2 -2
  912. package/dist/tree-operations/list/list-builders.d.ts +18 -16
  913. package/dist/tree-operations/list/list-builders.js +59 -30
  914. package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
  915. package/dist/tree-operations/list/ordered-markers.js +7 -16
  916. package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
  917. package/dist/tree-operations/list/reconcile-task.js +80 -23
  918. package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
  919. package/dist/tree-operations/list/sublist-separator.js +20 -27
  920. package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
  921. package/dist/tree-operations/list/task-paragraph.js +54 -0
  922. package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
  923. package/dist/tree-operations/list/unwrap-merge.js +44 -79
  924. package/dist/tree-operations/node-ops.d.ts +30 -52
  925. package/dist/tree-operations/node-ops.js +152 -218
  926. package/dist/tree-operations/node-primitives.d.ts +44 -31
  927. package/dist/tree-operations/node-primitives.js +84 -60
  928. package/dist/tree-operations/open-tail.d.ts +25 -0
  929. package/dist/tree-operations/open-tail.js +100 -0
  930. package/dist/tree-operations/parse-block.d.ts +15 -2
  931. package/dist/tree-operations/parse-block.js +19 -4
  932. package/dist/tree-operations/paste/apply.d.ts +7 -8
  933. package/dist/tree-operations/paste/apply.js +33 -63
  934. package/dist/tree-operations/paste/body-write.d.ts +8 -6
  935. package/dist/tree-operations/paste/body-write.js +13 -14
  936. package/dist/tree-operations/paste/container-match.d.ts +7 -10
  937. package/dist/tree-operations/paste/container-match.js +76 -58
  938. package/dist/tree-operations/paste/container-paste.d.ts +3 -3
  939. package/dist/tree-operations/paste/container-paste.js +3 -3
  940. package/dist/tree-operations/paste/dispatch.d.ts +26 -29
  941. package/dist/tree-operations/paste/dispatch.js +68 -53
  942. package/dist/tree-operations/paste/focus-target.d.ts +11 -14
  943. package/dist/tree-operations/paste/focus-target.js +13 -18
  944. package/dist/tree-operations/paste/hooks.d.ts +7 -12
  945. package/dist/tree-operations/paste/hooks.js +49 -46
  946. package/dist/tree-operations/paste/line-ending.d.ts +11 -0
  947. package/dist/tree-operations/paste/line-ending.js +32 -0
  948. package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
  949. package/dist/tree-operations/paste/list-absorb.js +17 -19
  950. package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
  951. package/dist/tree-operations/paste/list-break-out.js +24 -32
  952. package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
  953. package/dist/tree-operations/paste/parent-scope.js +9 -16
  954. package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
  955. package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
  956. package/dist/tree-operations/paste/paste-replacement.js +73 -42
  957. package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
  958. package/dist/tree-operations/paste/paste-transforms.js +18 -27
  959. package/dist/tree-operations/paste/replacement-parse.d.ts +9 -7
  960. package/dist/tree-operations/paste/replacement-parse.js +12 -10
  961. package/dist/tree-operations/paste/strategy.d.ts +1 -1
  962. package/dist/tree-operations/paste/strategy.js +1 -1
  963. package/dist/tree-operations/paste/table-slice.js +15 -10
  964. package/dist/tree-operations/paste-surfaces.d.ts +18 -29
  965. package/dist/tree-operations/paste-surfaces.js +14 -10
  966. package/dist/tree-operations/path-mutate.d.ts +7 -8
  967. package/dist/tree-operations/path-mutate.js +4 -4
  968. package/dist/tree-operations/reorder-unit.d.ts +4 -5
  969. package/dist/tree-operations/reorder-unit.js +5 -6
  970. package/dist/tree-operations/reorder.d.ts +7 -9
  971. package/dist/tree-operations/reorder.js +39 -40
  972. package/dist/tree-operations/settle.d.ts +42 -53
  973. package/dist/tree-operations/settle.js +241 -162
  974. package/dist/tree-operations/sharing.d.ts +5 -5
  975. package/dist/tree-operations/splice-many.d.ts +5 -5
  976. package/dist/tree-operations/splice-many.js +5 -5
  977. package/dist/tree-operations/stored-as.d.ts +13 -0
  978. package/dist/tree-operations/stored-as.js +48 -0
  979. package/dist/tree-operations/structural-change.d.ts +11 -15
  980. package/dist/tree-operations/structural-change.js +10 -14
  981. package/dist/tree-operations/structural-suffix.d.ts +22 -0
  982. package/dist/tree-operations/structural-suffix.js +61 -0
  983. package/dist/tree-operations/sub-table-copy.d.ts +7 -0
  984. package/dist/tree-operations/sub-table-copy.js +40 -36
  985. package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
  986. package/dist/tree-operations/table-grid-clipboard.js +11 -36
  987. package/dist/tree-operations/table-mutations.d.ts +7 -3
  988. package/dist/tree-operations/table-mutations.js +45 -9
  989. package/dist/tree-operations/unshare.d.ts +11 -15
  990. package/dist/tree-operations/unshare.js +15 -17
  991. package/dist/undo/manager.js +1 -1
  992. package/dist/undo/types.d.ts +2 -2
  993. package/docs/guide/consumer-guide.md +327 -205
  994. package/docs/guide/directives.md +7 -7
  995. package/docs/guide/plugin-api.md +253 -185
  996. package/docs/guide/plugin-guide.md +332 -235
  997. package/docs/guide/plugin-testing.md +96 -82
  998. package/package.json +12 -16
  999. package/dist/ambient/ambient-cursor.d.ts +0 -41
  1000. package/dist/ambient/ambient-cursor.js +0 -120
  1001. package/dist/components/blocks/code/code-paste.d.ts +0 -24
  1002. package/dist/components/blocks/code/code-paste.js +0 -21
  1003. package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
  1004. package/dist/components/blocks/table/cell-clipboard.js +0 -67
  1005. package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
  1006. package/dist/components/blocks/text/hidden-suffix.js +0 -15
  1007. package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
  1008. package/dist/components/image/image-source-bytes.d.ts +0 -15
  1009. package/dist/components/image/image-source-bytes.js +0 -80
  1010. package/dist/cursor/content-offsets.d.ts +0 -29
  1011. package/dist/cursor/content-offsets.js +0 -151
  1012. package/dist/cursor/reveal-anchor.d.ts +0 -30
  1013. package/dist/cursor/reveal-anchor.js +0 -31
  1014. package/dist/cursor/scroll-hold.d.ts +0 -10
  1015. package/dist/cursor/scroll-hold.js +0 -22
  1016. package/dist/invariants/split-landing.d.ts +0 -8
  1017. package/dist/invariants/split-landing.js +0 -15
  1018. package/dist/tree-operations/list/terminator.d.ts +0 -17
  1019. package/dist/tree-operations/list/terminator.js +0 -60
  1020. package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -31
  1021. package/dist/tree-operations/paste/replace-block-at-parent.js +0 -78
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Public prop and instance-handle types for <Editor>. Editor.svelte annotates its
3
- * $props() and instance surface against these, so neither can drift from the component.
3
+ * $props() and its instance methods against these, so neither can drift from the component.
4
4
  */
5
5
  import type { Snippet } from 'svelte';
6
6
  import type { AnyBlockKind } from './core/nodes';
@@ -13,9 +13,13 @@ import type { EditorEvents } from './editor-events';
13
13
  import type { SearchState } from './search/search-state.svelte';
14
14
  import type { DecorationRegistry } from './decorations/types';
15
15
  import type { EditorRects } from './editor-rects';
16
+ import type { InlineMenuRegistry } from './inline-menu/types';
17
+ import type { InsertEntry } from './schema/insert-catalogue';
16
18
  import type { EditorPluginEntry } from './schema/plugin-install';
19
+ import type { SyntaxOptions } from './schema/registry-view';
17
20
  import type { InteractionTraceEntry } from './debug/interaction-trace';
18
21
  export type { EditorPluginEntry } from './schema/plugin-install';
22
+ export type { SyntaxOptions } from './schema/registry-view';
19
23
  export type { InteractionTraceEntry } from './debug/interaction-trace';
20
24
  export interface EditorProps {
21
25
  source?: string;
@@ -25,39 +29,37 @@ export interface EditorProps {
25
29
  onLinkActivate?: (url: string, event: MouseEvent) => void;
26
30
  /** Import hook for image-bearing pastes, set once at mount. Each image file is offered
27
31
  * in order and the markdown returned is inserted at the caret; `null` skips it.
28
- * Installing it takes the WHOLE paste — the clipboard's `text/plain` is not pasted. */
32
+ * Installing it takes the whole paste: the clipboard's `text/plain` is not pasted. */
29
33
  onPasteImage?: PasteImageHook;
30
34
  /** Execution hook for code blocks, set once at mount. The editor runs nothing itself:
31
- * installing this is what puts the run affordance on a code block's rail, and the host
32
- * owns the engine, the result, and where output goes. Absent, no run affordance renders. */
35
+ * installing this is what puts the run button in a code block's side gutter, and the host
36
+ * owns the runtime, the result, and where output goes. Absent, no run button renders. */
33
37
  onRunCode?: RunCodeHook;
34
38
  /** Overflow-menu hook for code blocks, set once at mount and consulted each time a menu
35
39
  * opens so items can read live state. Absent, or returning nothing, renders no overflow
36
- * affordance — the editor has no app-level actions of its own to offer there. */
40
+ * button: the editor has no app-level actions of its own to offer there. */
37
41
  codeMenuItems?: CodeMenuItemsHook;
38
- /** Host chrome rendered INSIDE the editor's scroll container, above the first block
39
- * (a title, properties panel, tag row). It scrolls away with the document rather than
40
- * pinning, which is what lets the editor keep its own scrollport and windowing. */
42
+ /** The host's own content, rendered inside the editor's scroll container above the first
43
+ * block (a title, properties panel, tag row). It scrolls away with the document rather than
44
+ * staying fixed, which is what lets the editor keep its own scroll container and windowing. */
41
45
  header?: Snippet;
42
- /** The block drag handle (default on; reading mode never shows it). A hover reveals it;
43
- * touch, which has none, shows it outright. Only the blocks a reader picks up whole carry
44
- * one — code, tables, equations, diagrams, pictures, list items, dividers, cards — never
45
- * prose (paragraph, heading, quote, note). `false` removes them, except on a picture,
46
- * whose grip is the only pointer road to move it. Keyboard reorder (Alt+Arrow) is always
47
- * available, as is the table's right-click cell menu. */
46
+ /** The block drag handle (default on; never in reading mode), shown on hover, or outright on
47
+ * touch. Only blocks a user picks up whole have one (code, tables, equations, diagrams,
48
+ * pictures, list items, dividers, cards), never prose. `false` removes them, except on a
49
+ * picture, whose handle is its only pointer move. Alt+Arrow reorder always works. */
48
50
  blockDragHandles?: boolean;
49
51
  searchBar?: boolean;
50
52
  /** The editor's own formatting popover beside a prose selection (default on; reading mode
51
53
  * never shows it). A host with its own bar over `runCommand` passes false. */
52
54
  selectionToolbar?: boolean;
53
- /** Where the editor's own find/replace bar renders. Default (absent) keeps it pinned inside
54
- * the editor root; an element relocates the SAME bar into it, theme scope included, so
55
- * host-scroll embeds can put it in a pane's chrome instead of mid-page. Read live, and
55
+ /** Where the editor's own find/replace bar renders. Absent, it stays fixed inside the editor
56
+ * root; an element moves that same bar into it, theme styling included, so an embed that
57
+ * scrolls in the host can put it in a pane's own frame instead of mid-page. Read live, and
56
58
  * ignored while `searchBar` is false. Positioning inside it is the element's own business. */
57
59
  searchBarAnchor?: HTMLElement | null;
58
- /** Who owns the scroll, set once at mount. `'self'` (default) makes the root its own
59
- * scrollport. `'host'` lets an ancestor scroll it, and the editor windows against that
60
- * scroller instead — so the mounted set stays O(viewport) either way. The one behavioural
60
+ /** Who owns the scroll, set once at mount. `'self'` (default) makes the editor root its own
61
+ * scroll container. `'host'` lets an ancestor scroll it, and the editor windows against that
62
+ * scroller instead, so the mounted set stays O(viewport) either way. The one behavioural
61
63
  * difference is scroll anchoring; the consumer guide's scrollMode section has the trade. */
62
64
  scrollMode?: 'self' | 'host';
63
65
  /** Theme name reflected to `data-editor-theme` on the editor root. Built-ins:
@@ -67,18 +69,28 @@ export interface EditorProps {
67
69
  * wrapper keys its own palette off the same attribute set on the wrapper. */
68
70
  theme?: string;
69
71
  /** How the document presents, read live like `theme`; `'source'` by default. The consumer
70
- * guide's Presentation modes section describes what each rung shows and allows. */
72
+ * guide's Presentation modes section describes what each mode shows and allows. */
71
73
  presentationMode?: PresentationMode;
72
74
  /** Per-instance keymap overrides over the built-in command vocabulary. */
73
75
  keybindings?: KeybindingOverride[];
74
- /** Plugins installed once, in array order, at mount. Set-once: a later change to
75
- * this prop is ignored — installation is process-global and cannot re-run. An
76
- * entry may be a bare unit or `{ plugin, options }` for per-instance options.
77
- * The array is the enablement set too: this editor activates exactly what it
76
+ /** Plugins installed once, in array order, at mount. Set-once: a later change to this
77
+ * prop is ignored, because installation is process-global and cannot re-run. An entry
78
+ * may be a plugin on its own or `{ plugin, options }` for per-instance options. The
79
+ * array also says which plugins are enabled: this editor activates exactly what it
78
80
  * lists, and no prop at all activates everything installed. */
79
81
  plugins?: readonly EditorPluginEntry[];
82
+ /** GFM syntaxes to switch off in this editor, each on by default and read once at mount:
83
+ * `indentedCode: false` reads a line indented by a tab or four spaces as prose, and
84
+ * `setextHeading: false` reads `===` or `---` under text as prose or a divider. Only the
85
+ * reading changes: a loaded file keeps every byte, and saves as it came. */
86
+ syntax?: SyntaxOptions;
80
87
  }
81
- /** The `bind:this` surface a consumer can name and hold a ref to. */
88
+ export interface InsertMarkdownOptions {
89
+ /** `caret` (the default) inserts where the caret is; `below` inserts into a new paragraph
90
+ * after the top-level block that holds it. */
91
+ placement?: 'caret' | 'below';
92
+ }
93
+ /** The `bind:this` handle a consumer can name and hold a ref to. */
82
94
  export interface EditorInstance {
83
95
  getSource(): string;
84
96
  /**
@@ -88,80 +100,85 @@ export interface EditorInstance {
88
100
  * own declared kind name.
89
101
  */
90
102
  getBlockKindAt(path: number[]): AnyBlockKind | null;
103
+ /**
104
+ * The live selection, or null when nothing is focused. While an image is selected whole it is
105
+ * a caret at the image's edge its selection came from (its end after a click).
106
+ */
91
107
  getSelection(): EditorSelection | null;
92
108
  /**
93
- * Restore a `getSelection()` snapshot. Async because the target is scrolled into view
94
- * first, and true means it got there, not merely that it mounted. Never throws: an
95
- * out-of-range offset clamps in that endpoint's own coordinate space (a TABLE
96
- * endpoint's row-major cell index clamps to the last cell, not a character position),
97
- * and an unresolvable path or an unsettled scroll resolves false.
109
+ * Restore a `getSelection()` snapshot. Async because the target is scrolled into view first,
110
+ * and true means it got there, not merely that it mounted. Never throws: an out-of-range
111
+ * offset clamps in its own coordinate space (a table's cell index to the last cell), and an
112
+ * unresolvable path, or a scroll that never arrives, resolves false. A caret at the start of a
113
+ * list lands in its first item; one inside a closed body lands on its title row.
98
114
  */
99
115
  setSelection(selection: EditorSelection): Promise<boolean>;
100
116
  /**
101
- * Land the caret at a viewport point exactly as a click there would: the point clamps into the
102
- * nearest block's box, the block under it resolves the landing, a live cross-block range ends
103
- * first. For a shell owning chrome beside the document: the shell decides whether a click on
104
- * its own territory comes here, the editor decides where the caret goes. False when no
105
- * focusable landing resolves. A point below the whole document resolves against the CST, not
106
- * the rendered slice: past a windowed-out tail it claims the point and lands after the reveal.
117
+ * Put the caret at a viewport point exactly as a click there would: the point clamps into the
118
+ * nearest block's box, the block under it picks the spot, and a live cross-block range ends
119
+ * first. A host decides which of its clicks come here. False when no focusable position
120
+ * resolves; a point past an unmounted tail lands there once that mounts.
107
121
  */
108
122
  placeCaretAtPoint(x: number, y: number): boolean;
109
123
  /**
110
- * Insert markdown at the caret exactly as pasting it would, minus the clipboard: paste
111
- * transforms, every container-aware strategy, delete-selection-first, one undo entry, and
112
- * focus at the end of the insertion. True means the pipeline took the text, not that its
113
- * commit has flushed — read the result back through the `edit` event. False, and nothing
114
- * mutates, when this editor holds no caret, in reading mode, or at a gap caret.
124
+ * Insert markdown exactly as pasting it would, minus the clipboard: paste transforms,
125
+ * delete-selection-first, one undo entry, focus at the end. Resolves true once the insert has
126
+ * landed; false, with nothing changed, with no caret, in reading mode, or at a gap caret.
127
+ * `placement: 'below'` first adds an empty paragraph after the caret's top-level block.
115
128
  */
116
- insertMarkdown(md: string): boolean;
129
+ insertMarkdown(md: string, options?: InsertMarkdownOptions): Promise<boolean>;
117
130
  /**
118
- * Run a command by id at the focused surface, or across a painted range where the id has a
119
- * cross-block arm (a format toggle marks every block it touches, a table by its cells). False,
120
- * and nothing mutates, on an unknown id, in reading mode, with nothing focused, and on the link
121
- * editor over a range. `arg` reaches the arm as a keybinding's argument would (`heading.cycle`
122
- * takes the level, 0 for plain text); an arm that takes none ignores it.
131
+ * Run a command by id at the focused element, or across a painted range where the id has a
132
+ * cross-block handler (a format toggle marks every block it touches, a table works by its
133
+ * cells). False, and nothing mutates, on an unknown id, in reading mode, with nothing focused,
134
+ * and on the link editor over a range. `arg` reaches the handler as a keybinding's argument
135
+ * would (`heading.cycle` takes the level, 0 for plain text); a handler that takes none ignores it.
123
136
  */
124
137
  runCommand(commandId: string, arg?: unknown): boolean;
125
138
  /**
126
- * Whether `runCommand(id)` would reach that command's arm right now, asked at the seam that
127
- * would run it, so a host can grey a toolbar button out instead of hiding the affordance.
128
- * False wherever the door declines before dispatch: an unknown id, reading mode, a block-local
129
- * id with nothing focused (a gap caret included, where only the global ids stay live), and the
130
- * link editor while a cross-block range is painted. True is reachability, not success: the arm
131
- * that would run still decides whether it writes, and over a range it may reach no block at all.
139
+ * Whether `runCommand(id)` would reach that command's handler right now, so a host can grey a
140
+ * toolbar button out instead of hiding it. False wherever dispatch declines before it starts:
141
+ * an unknown id, reading mode, a block-local id with nothing focused (a gap caret included,
142
+ * where only the global ids stay live), and the link editor while a cross-block range is
143
+ * painted. True means reachable, not successful: the handler still decides whether it writes.
132
144
  */
133
145
  canRunCommand(commandId: string): boolean;
134
146
  /**
135
- * Whether the command's toggle-state reads ON where a press would land — the read a toolbar
136
- * paints pressed from, answered by the same bytes the toggle would rewrite. State, not
137
- * admissibility, so a disabled button may still paint pressed. Over a cross-block range the
138
- * answer is the range's own coverage: true only where every block it touches carries the
139
- * mark; the link editor reads ON inside the construct its card would edit, in live mode
140
- * alone. False for an id with no state of its own, and with nothing focused.
147
+ * Whether the command's toggle reads on where a keypress would land: a toolbar's pressed
148
+ * state, from the same bytes the toggle would rewrite. State, not permission, so a disabled
149
+ * button may still paint pressed. Over a cross-block range, true only where every touched block
150
+ * has the mark. False for an id with no state, and with nothing focused.
141
151
  */
142
152
  isCommandActive(commandId: string): boolean;
143
153
  getEvents(): EditorEvents;
144
154
  getSearch(): SearchState;
145
155
  getDecorations(): DecorationRegistry;
156
+ /** The same registry a plugin reaches as `editor.inlineMenus`, for a host that owns the menu's
157
+ * data (its document index, its tag list) rather than shipping a plugin for it. */
158
+ getInlineMenus(): InlineMenuRegistry;
159
+ /**
160
+ * The blocks the insert menus offer, in menu order: the built-ins, then each block a plugin this
161
+ * editor activated registered. The list the right-click flyout draws, for a host building its own
162
+ * insert button; each entry's `markdown` is what to hand `insertMarkdown`. A fresh frozen list per call.
163
+ */
164
+ getInsertCatalogue(): readonly InsertEntry[];
146
165
  getRects(): EditorRects;
147
166
  getDiagnostics(): EditorDiagnostics;
148
167
  /**
149
- * Every MODIFIER chord this instance consumes, normalized (`Mod` covers Ctrl and Cmd).
150
- * Composed live from the kind keymaps, the command tables, the plugins this editor activated,
151
- * the `keybindings` overrides and the search option, so a host accelerator table is derived,
152
- * not hand-copied. Bare keys are out of contract: a focused document owns them. So is a
153
- * DISABLED chord (`command: null`), released for the host to claim app-wide yet still
154
- * swallowed INSIDE the editor, whose native fall-through would bypass the CST undo stack.
168
+ * Every modifier chord this instance consumes, normalized (`Mod` covers Ctrl and Cmd), composed
169
+ * live from the kind keymaps, command tables, active plugins, `keybindings` overrides and search,
170
+ * so a host's accelerator table is derived. Bare keys aren't listed, nor is a chord turned off
171
+ * with `command: null`, which the editor still swallows so it can't bypass the undo stack.
155
172
  */
156
173
  reservedChords(): ReadonlySet<string>;
157
174
  /** Whether this instance consumes that keystroke, answered with the editor's own chord
158
- * normalization so a host never re-implements the Ctrl/Cmd fold. */
175
+ * normalization so a host never re-implements the Ctrl-equals-Cmd rule. */
159
176
  claimsChord(event: KeyboardEvent): boolean;
160
177
  }
161
178
  /**
162
- * The diagnostics door: arm the interaction trace, read it, and serialize an attachable
163
- * field report. The recorder ships default-off, so a consumer opts in, reproduces, then
164
- * serializes. The trace is process-global — two instances interleave their entries.
179
+ * Diagnostics for a bug report: turn the interaction trace on, read it, and serialize a
180
+ * report a user can attach. Recording is off by default, so a consumer opts in, reproduces
181
+ * the problem, then serializes. The trace is process-global: two instances interleave entries.
165
182
  */
166
183
  export interface EditorDiagnostics {
167
184
  enableTrace(): void;
@@ -170,7 +187,7 @@ export interface EditorDiagnostics {
170
187
  traceSnapshot(): InteractionTraceEntry[];
171
188
  /**
172
189
  * A fenced-markdown snapshot (timestamp, trace tail, ops-log tail, selection). The
173
- * document source is EXCLUDED by default; pass `{ includeSource: true }` to opt in.
190
+ * document source is left out by default; pass `{ includeSource: true }` to opt in.
174
191
  */
175
192
  serializeDiagnostics(opts?: {
176
193
  includeSource?: boolean;
@@ -1,58 +1,47 @@
1
+ /**
2
+ * Viewport-space geometry over the rendered document, the public face of the measurement calls
3
+ * block components expose. Offsets mean what `measurePartialRects` means for that block (raw
4
+ * offsets on prose, cell coordinates in a grid). jsdom reports boxes of about zero size, so e2e
5
+ * covers this file rather than unit tests.
6
+ */
1
7
  import type { BlockComponent } from './block-component';
2
- import type { RevealAnchorState } from './cursor/reveal-anchor';
8
+ import type { ScrollOwner } from './cursor/scroll-owner';
3
9
  export interface EditorRects {
4
10
  /** The block's outermost box, or null when it isn't mounted. */
5
11
  blockRect(path: number[]): DOMRect | null;
6
- /**
7
- * Rects covering `[start, end)` in the block's measurable content — one per visual
8
- * line on a wrapped prose leaf, one per cell on a grid surface. `SELECTION_END` is
9
- * accepted as `end`. Empty when the block isn't mounted or can't measure.
10
- */
12
+ /** Rects covering `[start, end)` of the block's measurable content: one per visual line of prose,
13
+ * one per grid cell. `end` accepts `SELECTION_END`; empty when the block isn't mounted. */
11
14
  rangeRects(path: number[], start: number, end: number): DOMRect[];
12
15
  /**
13
- * The live native single-block caret, or null — including in cross-block mode, whose
14
- * parked range is not a caret and must not leak out as one.
16
+ * The browser's caret when it sits in one block, or null. Null in cross-block mode too,
17
+ * where the held range is not a caret and must not leak out as one.
15
18
  */
16
19
  caretRect(): DOMRect | null;
17
- /** Scroll a windowed-out block into its window and await its mount. Resolves
18
- * true once the block's element is present. */
20
+ /** Scroll a block that is not rendered yet into the mounted range and await its mount.
21
+ * Resolves true once the block's element is present. */
19
22
  reveal(path: number[]): Promise<boolean>;
20
- /**
21
- * Reveal (mount) the block at `path`, then scroll the viewport to it. `block` defaults to
22
- * `'nearest'`; `hold` (default true) keeps the reveal's pin afterward, so a later layout
23
- * shift cannot push the target back out. Resolves true only once the position settles; a
24
- * reveal superseded by a later one stops refining and reports honest visibility.
25
- */
23
+ /** Mount the block at `path` and scroll to it (`block` defaults to `'nearest'`); `hold`, default
24
+ * true, keeps it where it landed against later layout shifts. True once in view and settled. */
26
25
  scrollTo(path: readonly number[], opts?: {
27
26
  block?: 'nearest' | 'center';
28
27
  hold?: boolean;
29
28
  }): Promise<boolean>;
30
- /**
31
- * Navigate to `path`: reveal, scroll, and land the caret at `offset` in it (default 0),
32
- * so the next keystroke (Ctrl+Z included) addresses the document rather than the
33
- * affordance that was clicked. Runs the same restore road undo and `setSelection` use.
34
- * True means the caret landed AND the target settled into view.
35
- */
29
+ /** Mount `path`, scroll there and land the caret at `offset` (default 0) as an edit does, so the
30
+ * next key addresses the document; a closed `<details>` on the way opens. True once in view. */
36
31
  navigateTo(path: readonly number[], offset?: number): Promise<boolean>;
37
32
  }
38
33
  export declare function createEditorRects(deps: {
39
34
  getBlockElByPath: (path: number[]) => HTMLElement | null;
40
- getBlockComponentByPath: (path: number[]) => BlockComponent | null;
35
+ getBlockComponent: (path: number[]) => BlockComponent | null;
36
+ /** Mounts `path`, opening a collapsed body on the way: every caller here is a navigation. */
41
37
  revealPath: (path: number[]) => Promise<unknown>;
42
38
  getEditorRoot: () => HTMLElement | null;
43
- /** True when an ancestor owns the scroll (`scrollMode="host"`): the root is then no
44
- * scrollport but spans the WHOLE document, so intersecting a block with it answers
45
- * "is this in the document" rather than "is this visible". */
46
- isHostScroll: () => boolean;
47
- /** Host mode's ancestors that bound what can be seen. Intersected WITH the window
48
- * viewport, never instead of it: a bound that clips nothing would swallow the fold. */
49
- getClipBounds: () => HTMLElement[];
39
+ scroll: Pick<ScrollOwner, 'place'>;
50
40
  isCrossBlock: () => boolean;
51
- /** True for nodes in the host's `header` slot — inside the root, but not this
41
+ /** True for nodes in the host's `header` snippet: inside the root, but not this
52
42
  * editor's content. */
53
43
  isHostChrome: (node: Node | null) => boolean;
54
- revealAnchor: RevealAnchorState;
55
- /** Land a caret at a raw offset in `path` through the shared restore road. Injected
56
- * because this surface owns geometry, not the selection model. */
44
+ /** Put a caret at a raw offset in `path` through the caret landing, as a navigation. Injected
45
+ * because this file owns geometry, not the selection model. */
57
46
  landCaretAt: (path: number[], offset: number) => Promise<boolean>;
58
47
  }): EditorRects;
@@ -1,72 +1,14 @@
1
- /**
2
- * Viewport-space geometry over the rendered document, the public face of the measurement
3
- * primitives block components expose. Offsets inherit `measurePartialRects`' per-surface
4
- * meaning (raw offsets on prose leaves, cell-index coordinates on grid surfaces). Rects
5
- * are real only in a browser — jsdom reports ~0-sized boxes — so e2e covers this surface,
6
- * not unit tests.
7
- */
8
- import { tick } from 'svelte';
9
- // Post-mount measure passes settle within a few Svelte flushes; `tick` is the repo's only
10
- // sequencing primitive, so the wait is a bounded count of them.
11
- const REVEAL_SETTLE_TICKS = 12;
12
1
  export function createEditorRects(deps) {
13
- function isInView(el, root) {
14
- const br = el.getBoundingClientRect();
15
- // Self mode: the root IS the scrollport, and what lies outside it is the host
16
- // page's business, not the editor's.
17
- if (!deps.isHostScroll()) {
18
- const er = root.getBoundingClientRect();
19
- return br.top < er.bottom && br.bottom > er.top;
20
- }
21
- if (br.top >= window.innerHeight || br.bottom <= 0)
22
- return false;
23
- for (const bound of deps.getClipBounds()) {
24
- const cr = bound.getBoundingClientRect();
25
- if (br.top >= cr.bottom || br.bottom <= cr.top)
26
- return false;
27
- }
28
- return true;
29
- }
30
- // The anchor's re-assertion (`correctAnchor`) is model-based and runs pre-flush, so it
31
- // can lag the DOM by a boundary block's height; each tick refines placement AFTER the
32
- // flush, when DOM reads are exact, and stops once the target stops moving. A SUPERSEDED
33
- // claim bails at once (the viewport belongs to the newer reveal), but one that merely
34
- // lost its pin to a user gesture keeps refining — it is still arriving.
35
- async function settleInView(path, block, claim) {
36
- const root = deps.getEditorRoot();
37
- if (!root)
38
- return deps.getBlockElByPath(path) != null;
39
- let placedTop = null;
40
- for (let i = 0; i < REVEAL_SETTLE_TICKS; i++) {
41
- await tick();
42
- if (claim.isSuperseded())
43
- break;
44
- const el = deps.getBlockElByPath(path);
45
- if (!el) {
46
- placedTop = null; // transiently unmounted mid re-slice — keep settling
47
- continue;
48
- }
49
- // Converged: the anchor correction no longer disturbs the prior precise placement.
50
- const afterAnchor = el.getBoundingClientRect().top;
51
- if (afterAnchor === placedTop)
52
- break;
53
- el.scrollIntoView({ block });
54
- placedTop = el.getBoundingClientRect().top;
55
- }
56
- const el = deps.getBlockElByPath(path);
57
- return el != null && isInView(el, root);
58
- }
59
2
  return {
60
3
  blockRect(path) {
61
4
  return deps.getBlockElByPath(path)?.getBoundingClientRect() ?? null;
62
5
  },
63
6
  rangeRects(path, start, end) {
64
- return deps.getBlockComponentByPath(path)?.measurePartialRects?.(start, end) ?? [];
7
+ return deps.getBlockComponent(path)?.measurePartialRects?.(start, end) ?? [];
65
8
  },
66
9
  caretRect() {
67
- // Read SelectionState, not the `data-cross-block` DOM mirror: that attribute is
68
- // written by a deferred $effect and lags the synchronous selectionChange emit, so
69
- // a subscriber reading mid-emit would get the parked range as a caret.
10
+ // Read `SelectionState`, not the `data-cross-block` attribute: a deferred `$effect`
11
+ // writes the attribute, so it lags the synchronous `selectionChange` emit.
70
12
  if (deps.isCrossBlock())
71
13
  return null;
72
14
  const root = deps.getEditorRoot();
@@ -78,8 +20,8 @@ export function createEditorRects(deps) {
78
20
  const range = selection.getRangeAt(0);
79
21
  if (!root.contains(range.commonAncestorContainer))
80
22
  return null;
81
- // A caret in the host's header slot is inside the root but is not a document
82
- // caret; reporting it would float caret-following chrome over the host's field.
23
+ // A caret in the host's header snippet is inside the root but is not a document
24
+ // caret; reporting it would float caret-following controls over the host's field.
83
25
  if (deps.isHostChrome(range.commonAncestorContainer))
84
26
  return null;
85
27
  return range.getBoundingClientRect();
@@ -91,21 +33,11 @@ export function createEditorRects(deps) {
91
33
  async scrollTo(path, opts) {
92
34
  const p = [...path];
93
35
  const block = opts?.block ?? 'nearest';
94
- // Claim before the first await so the pin survives a clearing gesture that
95
- // triggered this reveal (a match click's pointerdown releases, then this re-claims).
96
- const claim = deps.revealAnchor.claim(p, block);
36
+ // Placed before the first await so the hold survives the gesture that started this
37
+ // scroll (a match click's pointerdown releases, then this places again).
38
+ const placement = deps.scroll.place(p, { block, hold: opts?.hold !== false });
97
39
  await deps.revealPath(p);
98
- // Gated: a claim superseded during a long mount wait would otherwise yank the
99
- // viewport once, before the settle's first tick could bail it.
100
- if (!claim.isSuperseded())
101
- deps.getBlockElByPath(p)?.scrollIntoView({ block });
102
- const landed = await settleInView(p, block, claim);
103
- // Release on 'center': the anchor holds only a coarse pin, whose later corrections
104
- // would drift a target the settle already placed exactly. 'nearest' holds by
105
- // default — the coarse top-pin IS its contract. A failed reveal never pins.
106
- if (block === 'center' || !landed || opts?.hold === false)
107
- claim.release();
108
- return landed;
40
+ return placement.scroll();
109
41
  },
110
42
  navigateTo(path, offset = 0) {
111
43
  return deps.landCaretAt([...path], offset);
package/dist/env.d.ts CHANGED
@@ -1,12 +1,14 @@
1
1
  /**
2
- * The editor's toolchain-coupling seam: build flags come from `esm-env`, here and at the
3
- * `if (DEV)` gates whose constant a production build folds away. The override door for a
4
- * toolchain those defaults read wrong (a bundler resolving no export conditions, a runner
5
- * other than Vitest) is published on the `@voithos-labs/aragonite/testing` subpath, not from here.
2
+ * Where the editor reads its build flags, and the one module that imports `esm-env`. The way to
3
+ * override them for a toolchain these defaults read wrong (a bundler resolving no export
4
+ * conditions, a runner other than Vitest) is published on the `@voithos-labs/aragonite/testing`
5
+ * subpath, not here.
6
6
  */
7
7
  export declare const editorEnv: {
8
8
  isDev: boolean;
9
9
  isTest: boolean;
10
10
  };
11
+ /** Whether dev-only checks run: in a dev build, or wherever the override turned dev on. */
12
+ export declare function isDevChecks(): boolean;
11
13
  export declare function configureEditorEnv(partial: Partial<typeof editorEnv>): void;
12
14
  export declare function resetEditorEnv(): void;
package/dist/env.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
- * The editor's toolchain-coupling seam: build flags come from `esm-env`, here and at the
3
- * `if (DEV)` gates whose constant a production build folds away. The override door for a
4
- * toolchain those defaults read wrong (a bundler resolving no export conditions, a runner
5
- * other than Vitest) is published on the `@voithos-labs/aragonite/testing` subpath, not from here.
2
+ * Where the editor reads its build flags, and the one module that imports `esm-env`. The way to
3
+ * override them for a toolchain these defaults read wrong (a bundler resolving no export
4
+ * conditions, a runner other than Vitest) is published on the `@voithos-labs/aragonite/testing`
5
+ * subpath, not here.
6
6
  */
7
7
  import { DEV } from 'esm-env';
8
8
  function computeDefaults() {
@@ -12,6 +12,10 @@ function computeDefaults() {
12
12
  };
13
13
  }
14
14
  export const editorEnv = computeDefaults();
15
+ /** Whether dev-only checks run: in a dev build, or wherever the override turned dev on. */
16
+ export function isDevChecks() {
17
+ return DEV || editorEnv.isDev;
18
+ }
15
19
  export function configureEditorEnv(partial) {
16
20
  Object.assign(editorEnv, partial);
17
21
  }
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { default as Editor } from './components/Editor.svelte';
2
- export type { EditorProps, EditorInstance } from './editor-props';
2
+ export type { EditorProps, EditorInstance, InsertMarkdownOptions, SyntaxOptions } from './editor-props';
3
3
  export type { EditorDiagnostics, InteractionTraceEntry } from './editor-props';
4
4
  export type { BlockComponent } from './block-component';
5
5
  export type { ResolveImageUrl, ResolveLinkUrl, PastedImage, PasteImageHook, CodeRunRequest, RunCodeHook, CodeMenuItem, CodeMenuItemsHook } from './editor-keys';
@@ -20,8 +20,12 @@ export { parseInline, getContentRange, isProseKind } from './core/inline';
20
20
  export type { ContentRange } from './core/inline';
21
21
  export type { BlockKind, LeafBlockKind, ContainerBlockKind, AnyBlockKind, CstNode, Document, BlockMetadata, HeadingMetadata, SetextHeadingMetadata, FencedCodeMetadata, ThematicBreakMetadata, LinkReferenceDefinitionMetadata, TableMetadata, BlockquoteMetadata, ListMetadata, ListItemMetadata, InlineNodeKind, InlineNode } from './core/nodes';
22
22
  export type { NodeView, DocumentView } from './core/node-views';
23
- export type { EditorEvents, EditEvent, EditorEventMap, EditorError, SelectionChangeEvent } from './editor-events';
23
+ export type { EditorEvents, EditEvent, EditorEventMap, EditorError, SelectionChangeEvent, SourceSwapEvent } from './editor-events';
24
24
  export type { Decoration, MarkDecoration, WidgetDecoration, ReplaceDecoration, BlockDecoration, DecorationWidgetSpec, ProvideContext, DecorationSource, DecorationSourceHandle, DecorationRegistry } from './decorations/types';
25
25
  export type { EditorRects } from './editor-rects';
26
26
  export { SELECTION_END } from './block-component';
27
27
  export type { SelectionEnd } from './block-component';
28
+ export type { InlineMenuRegistry, InlineMenuOpenOptions, InlineMenuSource, InlineMenuSourceHandle, InlineMenuItem, InlineMenuQuery, InlineMenuRowProps } from './inline-menu/types';
29
+ export { registerInsertEntry } from './schema/insert-catalogue';
30
+ export type { InsertEntry } from './schema/insert-catalogue';
31
+ export type { MenuIconName } from './menu-icons';
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- // Public, supported surface of the editor module: adding an export is non-breaking,
1
+ // The editor module's public, supported API: adding an export is non-breaking,
2
2
  // removing one is breaking. Anything not re-exported here is internal.
3
3
  // ── Component ────────────────────────────────────────────────────────────────
4
4
  export { default as Editor } from './components/Editor.svelte';
@@ -10,10 +10,13 @@ export { installPlugins } from './schema/plugin-install';
10
10
  // re-derive path-lexicographic comparison.
11
11
  export { normalize as normalizeSelection } from './selection/primitives';
12
12
  // ── Commands (pre-freeze: the id space opens up when the command registry unifies) ──
13
- // The ids `editor.runCommand()` supports — what a selection toolbar needs.
13
+ // The ids `editor.runCommand()` supports: what a selection toolbar needs.
14
14
  export { TOOLBAR_COMMANDS } from './schema/commands';
15
15
  // ── CST utilities ────────────────────────────────────────────────────────────
16
16
  export { parse } from './core/parser';
17
17
  export { serialize } from './core/serializer';
18
18
  export { parseInline, getContentRange, isProseKind } from './core/inline';
19
19
  export { SELECTION_END } from './block-component';
20
+ // ── Insert catalogue ───────────────────────────────────────────────────────────
21
+ // The blocks the insert menus offer, plugin blocks included, via `editor.getInsertCatalogue()`.
22
+ export { registerInsertEntry } from './schema/insert-catalogue';
@@ -0,0 +1,37 @@
1
+ /**
2
+ * The inline menu's rules: which source a just-typed trigger opens, where in a line of prose it
3
+ * may open at all, and what an open session's query is now. Pure, so all three are testable
4
+ * without an editor.
5
+ */
6
+ import type { InlineNode } from '../core/nodes';
7
+ import type { GrammarView } from '../schema/block-openers';
8
+ import type { InlineMenuSource } from './types';
9
+ /** Identity only, never a captured node: every keystroke writes a new leaf to state. */
10
+ export interface InlineMenuSession {
11
+ source: string;
12
+ path: number[];
13
+ /** Raw offset of the trigger's first byte. */
14
+ start: number;
15
+ triggerLength: number;
16
+ }
17
+ export interface InlineMenuOpening {
18
+ source: InlineMenuSource;
19
+ start: number;
20
+ }
21
+ /** The source a just-typed run opens; `from` is where the run began, since a burst of keystrokes
22
+ * arrives as one change. The trigger nearest the caret wins, then the longer, so `[[` beats `[`. */
23
+ export declare function findOpening(sources: Iterable<InlineMenuSource>, raw: string, caret: number, from: number): InlineMenuOpening | null;
24
+ /** Whether a trigger at this offset sits in prose the author is writing, as each construct's
25
+ * policy row declares: a link's text is prose, its destination and a code span are not. */
26
+ export declare function isProseOffset(nodes: InlineNode[], offset: number, grammar: GrammarView): boolean;
27
+ /** Whether the offset sits in a destination opened with `](` and not yet closed: those bytes are
28
+ * text until the `)` lands, so the inline tree has no link to decline. */
29
+ export declare function isUnclosedDestination(raw: string, offset: number): boolean;
30
+ /** Where the just-typed run began, or null when the change from `previous` to `raw` is anything
31
+ * but bytes inserted to end at the caret (a deletion, a caret move, an edit elsewhere). */
32
+ export declare function typedRunStart(previous: string, raw: string, caret: number): number | null;
33
+ /** The open session's query at this caret, or null once the session is over: the trigger is
34
+ * gone, the caret stepped in front of the query, or the source declines what was typed. */
35
+ export declare function sessionQuery(session: InlineMenuSession, source: InlineMenuSource, raw: string, caret: number): string | null;
36
+ /** Step the active row, wrapping at both ends; a list of none has no active row. */
37
+ export declare function stepActive(index: number, delta: 1 | -1, count: number): number;