@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,19 +1,18 @@
1
1
  /**
2
- * `renderer` is required because there is no baked-in default engine; `katexRenderer`
3
- * is the one-import path. The plugin unit installs this setup once per process, so it
4
- * runs unguarded.
2
+ * `katexRenderer` is the one-import way to supply `renderer`; without one, each formula shows its
3
+ * source. The plugin installs this setup once per process, so it runs unguarded.
5
4
  */
6
5
  import { type EditorPlugin } from '../../plugin';
7
6
  import { type MathRenderer } from './math-renderer';
8
7
  import { type MathBlockLayout } from './math-layout';
9
8
  export interface LatexPluginOptions {
10
- renderer: MathRenderer;
11
- /**
12
- * How a `$$` block opens for editing: `split` (source beside the preview, the default),
13
- * `stacked` (preview below), or `source` (no preview). Definition-time, so it is the
14
- * bare-install default; an editor's `{ plugin, options: { blockLayout } }` entry overrides it
15
- * per instance. The block's own toggle cycles from whichever applies.
16
- */
9
+ renderer?: MathRenderer;
10
+ /** How a `$$` block opens for editing (`math-layout.ts`); an editor's
11
+ * `{ plugin, options: { blockLayout } }` entry overrides it. */
17
12
  blockLayout?: MathBlockLayout;
18
13
  }
19
- export declare function latexPlugin(options: LatexPluginOptions): EditorPlugin;
14
+ /** What one editor reads: the renderer is process-wide, so only the layout varies per editor. */
15
+ export interface LatexEditorOptions {
16
+ blockLayout: MathBlockLayout;
17
+ }
18
+ export declare function latexPlugin(options?: LatexPluginOptions): EditorPlugin;
@@ -1,25 +1,39 @@
1
1
  /**
2
- * `renderer` is required because there is no baked-in default engine; `katexRenderer`
3
- * is the one-import path. The plugin unit installs this setup once per process, so it
4
- * runs unguarded.
2
+ * `katexRenderer` is the one-import way to supply `renderer`; without one, each formula shows its
3
+ * source. The plugin installs this setup once per process, so it runs unguarded.
5
4
  */
6
- import { definePlugin, registerBlockComponent, defineBlockComponent, declaredPluginKind } from '../../plugin';
5
+ import { definePlugin, registerBlockComponent, defineBlockComponent, declaredPluginKind, registerInsertEntry } from '../../plugin';
7
6
  import { registerMathInline, registerMathBlock, MATH_BLOCK, MATH_FENCE } from './latex-kind';
8
- import { setMathRenderer } from './math-renderer';
7
+ import { mathSlot } from './math-renderer';
9
8
  import { isMathBlockLayout } from './math-layout';
10
9
  import BlockMath from './BlockMath.svelte';
11
- export function latexPlugin(options) {
12
- const blockLayout = isMathBlockLayout(options.blockLayout) ? options.blockLayout : 'split';
10
+ export function latexPlugin(options = {}) {
11
+ const { renderer } = options;
13
12
  return definePlugin({
14
13
  name: 'latex',
14
+ defaults: {
15
+ blockLayout: isMathBlockLayout(options.blockLayout) ? options.blockLayout : 'split'
16
+ },
17
+ // An unknown layout keeps the default rather than breaking the block.
18
+ parseOptions(raw) {
19
+ const blockLayout = raw?.blockLayout;
20
+ return isMathBlockLayout(blockLayout) ? { blockLayout } : {};
21
+ },
15
22
  setup() {
16
- setMathRenderer(options.renderer);
23
+ mathSlot.set(renderer ? ({ source, display }, { theme }) => renderer(source, { display, theme }) : null);
17
24
  registerMathInline();
18
- // registerMathBlock co-registers the ```math fence kind; both render through BlockMath.
25
+ // registerMathBlock also registers the ```math fence kind; both render through BlockMath.
19
26
  registerMathBlock();
20
- const blockMath = defineBlockComponent(BlockMath, () => ({ blockLayout }));
27
+ const blockMath = defineBlockComponent(BlockMath);
21
28
  registerBlockComponent(declaredPluginKind(MATH_BLOCK), blockMath);
22
29
  registerBlockComponent(declaredPluginKind(MATH_FENCE), blockMath);
30
+ registerInsertEntry({
31
+ id: 'math',
32
+ label: 'Math block',
33
+ icon: 'sigma',
34
+ keywords: ['math', 'latex', 'equation', 'tex'],
35
+ markdown: '$$\n\n$$\n'
36
+ });
23
37
  }
24
38
  });
25
39
  }
@@ -1,13 +1,12 @@
1
1
  /**
2
- * The engine adapter behind the `@voithos-labs/aragonite/plugins/latex/renderer` subpath. Importing
3
- * it is how a consumer opts into `katex`, an optional peer the engine-free core never
4
- * pulls.
2
+ * The KaTeX adapter behind the `@voithos-labs/aragonite/plugins/latex/renderer` subpath.
3
+ * Importing it is how a consumer opts into `katex`, an optional peer dependency nothing else
4
+ * pulls in.
5
5
  */
6
6
  import 'katex/dist/katex.min.css';
7
- import type { MathRenderer } from './math-renderer';
8
- /**
9
- * `throwOnError: false` keeps a malformed formula from crashing the editor; its fallback is
10
- * swapped for the source painted as an error — red, in the code face, the parser's message on
11
- * hover — so a broken formula reads as what the author typed, not as a sentence about it.
12
- */
13
- export declare const katexRenderer: MathRenderer;
7
+ import { type MathRender } from './math-renderer';
8
+ /** `throwOnError: false` paints a malformed formula as `mathErrorNode` rather than throwing.
9
+ * KaTeX draws no colors of its own, so it has no use for the theme. */
10
+ export declare const katexRenderer: (source: string, { display }: {
11
+ display: boolean;
12
+ }) => MathRender;
@@ -1,17 +1,15 @@
1
1
  /**
2
- * The engine adapter behind the `@voithos-labs/aragonite/plugins/latex/renderer` subpath. Importing
3
- * it is how a consumer opts into `katex`, an optional peer the engine-free core never
4
- * pulls.
2
+ * The KaTeX adapter behind the `@voithos-labs/aragonite/plugins/latex/renderer` subpath.
3
+ * Importing it is how a consumer opts into `katex`, an optional peer dependency nothing else
4
+ * pulls in.
5
5
  */
6
6
  import katex from 'katex';
7
- // Rides this module so a consumer wiring the adapter cannot forget it: `htmlAndMathml` emits
8
- // a `.katex-mathml` a11y tree this CSS clips to 1px, and unloaded every equation paints twice.
7
+ // Imported here so a consumer wiring the adapter cannot forget it: `htmlAndMathml` emits a
8
+ // `.katex-mathml` accessibility tree this CSS clips to 1px; without it every equation paints twice.
9
9
  import 'katex/dist/katex.min.css';
10
- /**
11
- * `throwOnError: false` keeps a malformed formula from crashing the editor; its fallback is
12
- * swapped for the source painted as an error — red, in the code face, the parser's message on
13
- * hover — so a broken formula reads as what the author typed, not as a sentence about it.
14
- */
10
+ import { mathErrorNode } from './math-renderer';
11
+ /** `throwOnError: false` paints a malformed formula as `mathErrorNode` rather than throwing.
12
+ * KaTeX draws no colors of its own, so it has no use for the theme. */
15
13
  export const katexRenderer = (source, { display }) => {
16
14
  const container = document.createElement('span');
17
15
  container.innerHTML = katex.renderToString(source, {
@@ -22,20 +20,7 @@ export const katexRenderer = (source, { display }) => {
22
20
  const errorSpan = container.querySelector('.katex-error');
23
21
  if (errorSpan) {
24
22
  const message = (errorSpan.getAttribute('title') ?? 'invalid LaTeX').replace(/^ParseError:\s*/, '');
25
- return { dom: buildErrorNode(source, message), error: message };
23
+ return { dom: mathErrorNode(source, message), error: message };
26
24
  }
27
25
  return { dom: container };
28
26
  };
29
- function buildErrorNode(source, message) {
30
- const span = document.createElement('span');
31
- span.className = 'math-error';
32
- span.textContent = source;
33
- span.title = message;
34
- // Inline style rather than a stylesheet: the span lands inside any prose block, where no
35
- // plugin sheet is guaranteed to be mounted.
36
- span.style.color = 'var(--color-error, #d03025)';
37
- span.style.fontFamily = 'var(--font-code, ui-monospace, monospace)';
38
- span.style.fontSize = '0.9em';
39
- span.style.cursor = 'help';
40
- return span;
41
- }
@@ -1,25 +1,26 @@
1
1
  <script lang="ts">
2
- // Render-primary on the public seam: `createContainerBlock` supplies the metadata
3
- // commit and kind-command keydown, but the body renders the diagram, with no
4
- // BlockList. Editing swaps in a plugin-owned textarea whose draft commits through
5
- // the metadata seam as one undoable entry.
2
+ // Render-primary, built on the public API: `createContainerBlock` supplies the metadata
3
+ // commit and the keydown for kind commands, but the body renders the diagram, with no
4
+ // BlockList. Editing swaps in a textarea this plugin owns, whose text commits through the
5
+ // metadata update as one undo entry.
6
6
  import { tick } from 'svelte';
7
7
  import {
8
8
  createContainerBlock,
9
9
  getPluginMetadata,
10
10
  trimTrailingLineEnding,
11
11
  normalizeLineEndings,
12
+ POINTER_GESTURE_ATTR,
12
13
  type NodeView
13
14
  } from '../../plugin';
14
15
  import { joinMermaidBody, type MermaidMetadata } from './mermaid-kind';
15
- import { hasMermaidRenderer, renderMermaid, type MermaidRenderResult } from './mermaid-renderer';
16
+ import { mermaidSlot, type MermaidRenderResult } from './mermaid-renderer';
16
17
 
17
18
  let { node, index, myPath = [] }: { node: NodeView; index: number; myPath?: number[] } = $props();
18
19
 
19
20
  let boxEl: HTMLElement | undefined = $state();
20
21
 
21
- // Every steady state carries a focus surface — the edit textarea included, so a broken or
22
- // empty diagram is an arrow stop and a recovery entry point rather than a caret trap.
22
+ // Every state has something focusable, the edit textarea included, so a broken or empty
23
+ // diagram is a stop for the arrow keys and a way back in rather than a caret trap.
23
24
  function focusSurfaceEl(): HTMLElement | null {
24
25
  return (
25
26
  boxEl?.querySelector<HTMLElement>('.mermaid-source, .mermaid-viewport, .mermaid-surface') ??
@@ -46,15 +47,15 @@
46
47
  commandHooks: () => ({ openEdit, openFocusView })
47
48
  });
48
49
 
49
- // The factory routes whole-block focus, delete, traversal and reorder, and carries
50
- // the `measurePartialRects` the overlays paint off: there are no child hosts here.
50
+ // The factory handles whole-block focus, delete, traversal and reorder, and provides the
51
+ // `measurePartialRects` the overlays are painted from: there are no child blocks here.
51
52
  export { containerApi };
52
53
 
53
54
  const code = $derived(getPluginMetadata<MermaidMetadata>(node)?.code ?? '');
54
55
  const displayCode = $derived(trimTrailingLineEnding(code));
55
56
 
56
- // An empty diagram has no picture to draw and the engine rejects it, so its natural view is
57
- // the edit surface; reading mode, which writes no bytes, gets a placeholder instead.
57
+ // An empty diagram has no picture to draw and mermaid rejects it, so it opens straight into
58
+ // the textarea; reading mode, which writes no bytes, gets a placeholder instead.
58
59
  const isEmpty = $derived(displayCode.trim() === '');
59
60
  const isReading = $derived(getPresentationMode() === 'reading');
60
61
 
@@ -63,15 +64,15 @@
63
64
  let rendered = $state<MermaidRenderResult | null>(null);
64
65
  $effect(() => {
65
66
  const current = code;
66
- // Reading the theme here is what subscribes this effect to a flip, which has to
67
- // redraw because the engine writes colors into the SVG.
67
+ // Reading the theme here is what makes this effect re-run when the theme changes, and
68
+ // it must redraw because mermaid writes colors into the SVG.
68
69
  const theme = getTheme();
69
- if (isEmpty || !hasMermaidRenderer()) return;
70
+ if (isEmpty || !mermaidSlot.configured) return;
70
71
  let stale = false;
71
- void renderMermaid(current, theme).then(async (result) => {
72
+ void mermaidSlot.render(current, { theme }).then(async (result) => {
72
73
  if (stale) return;
73
- // A swap replaces the rendered surface alone, so only focus INSIDE it is re-handed:
74
- // the editor hidden input host and the toolbar are box children and survive untouched.
74
+ // A redraw replaces only the rendered element, so only focus inside it is handed back:
75
+ // the editor's hidden input and the toolbar are children of the box and survive.
75
76
  const hadFocus = focusSurfaceEl()?.contains(document.activeElement) ?? false;
76
77
  rendered = result;
77
78
  if (hadFocus) {
@@ -87,7 +88,7 @@
87
88
  const surfaceState = $derived(
88
89
  isEmpty
89
90
  ? 'empty'
90
- : !hasMermaidRenderer()
91
+ : !mermaidSlot.configured
91
92
  ? 'no-renderer'
92
93
  : rendered?.error
93
94
  ? 'error'
@@ -143,9 +144,12 @@
143
144
  const view = createPanZoom();
144
145
  const overlayView = createPanZoom();
145
146
 
146
- // Armed by focus, so an unfocused diagram hijacks neither the page nor the editor's own drag.
147
- // Tracked rather than probed: the editor reads the same fact as markup, so there is one value.
147
+ // Turned on by focus, so an unfocused diagram hijacks neither the page nor the editor's own
148
+ // drag. The markup attribute is written from this one value.
148
149
  let gestureArmed = $state(false);
150
+ // The attribute that tells the editor's pointer handling a drag here is the diagram's own.
151
+ const viewportGesture = $derived({ [POINTER_GESTURE_ATTR]: gestureArmed ? '' : undefined });
152
+ const overlayGesture = { [POINTER_GESTURE_ATTR]: '' };
149
153
 
150
154
  function onViewportWheel(e: WheelEvent): void {
151
155
  if (!gestureArmed || !(e.ctrlKey || e.metaKey)) return;
@@ -160,15 +164,15 @@
160
164
  }
161
165
 
162
166
  function onOverlayWheel(e: WheelEvent): void {
163
- // A dedicated zoom surface with nothing behind to scroll, so unlike the
164
- // in-document view a bare wheel zooms.
167
+ // A zoom view of its own with nothing behind it to scroll, so unlike the in-document
168
+ // view a plain wheel zooms.
165
169
  e.preventDefault();
166
170
  e.stopPropagation();
167
171
  overlayView.zoomBy(e.deltaY);
168
172
  }
169
173
 
170
- // One click contract for the viewport and the non-rendered cards, so dblclick stays
171
- // the recovery path out of a broken diagram.
174
+ // The viewport and the cards that show no picture answer clicks the same way, so a double
175
+ // click stays the way out of a broken diagram.
172
176
  function onSurfacePointerDown(e: PointerEvent): void {
173
177
  e.stopPropagation();
174
178
  }
@@ -218,11 +222,11 @@
218
222
  // there too, so this closes the command path.
219
223
  if (isReading) return;
220
224
  if (!editing) seedDraft();
221
- // Captured BEFORE the flip: the card reaches its fitted height only after mounting, and
222
- // a scrollport at the document's end clamps against the short layout in between.
225
+ // Captured before the swap: the card reaches its fitted height only after mounting, and
226
+ // a scroll container at the document's end clamps against the short layout in between.
223
227
  const restoreScroll = captureScrollPosition();
224
228
  editRequested = true;
225
- void restoreScroll().then(() => textareaEl?.focus());
229
+ void restoreScroll().then(() => textareaEl?.focus({ preventScroll: true }));
226
230
  }
227
231
 
228
232
  function cancelEdit(): void {
@@ -241,10 +245,12 @@
241
245
  // an untouched CRLF block must not rewrite its bytes on blur.
242
246
  if (value === normalizeLineEndings(editSeed)) return;
243
247
  const lineEnding = getPluginMetadata<MermaidMetadata>(node)?.openerLineEnding ?? '\n';
244
- updateOwnMetadata({ code: joinMermaidBody(value, lineEnding) });
245
- // Only a keyboard commit refocuses; a blur commit must not yank focus back from
246
- // wherever the user clicked.
247
- if (refocus) refocusBlock();
248
+ // Only a keyboard commit puts the caret back on the block; a blur commit must not yank
249
+ // focus back from wherever the user clicked.
250
+ updateOwnMetadata(
251
+ { code: joinMermaidBody(value, lineEnding) },
252
+ refocus ? { caret: { path: [], offset: 0 } } : undefined
253
+ );
248
254
  }
249
255
 
250
256
  // Logical lines, not visual: the box carries no editor caret geometry, so the newlines
@@ -271,8 +277,8 @@
271
277
  e.preventDefault();
272
278
  cancelEdit();
273
279
  } else if (atEditBoxEdge(e.key) && moveFocusOut(e)) {
274
- // Focus leaves the box, so `focusout` commits the draft: the arrow exit forks
275
- // nothing off the blur path.
280
+ // Focus leaves the box, so `focusout` commits the text: leaving by arrow key takes
281
+ // the same path as a blur.
276
282
  e.preventDefault();
277
283
  } else if (e.key === 'Tab') {
278
284
  // Escape is the exit, so Tab indents in place. execCommand inserts through the
@@ -338,7 +344,7 @@
338
344
  <!-- svelte-ignore a11y_no_noninteractive_tabindex -->
339
345
  <div
340
346
  class="mermaid-viewport"
341
- data-pointer-gesture={gestureArmed ? '' : undefined}
347
+ {...viewportGesture}
342
348
  tabindex="0"
343
349
  role="img"
344
350
  aria-label="Mermaid diagram"
@@ -354,8 +360,8 @@
354
360
  </div>
355
361
  </div>
356
362
  {:else}
357
- <!-- {#key} keeps the per-arm remount: a state flip replaces the surface element,
358
- and its focus/blur timing with it. -->
363
+ <!-- {#key} remounts once per state: a change of state replaces the element, and
364
+ its focus and blur timing with it. -->
359
365
  {#key surfaceState}
360
366
  <!-- svelte-ignore a11y_no_noninteractive_tabindex -->
361
367
  <div
@@ -367,7 +373,7 @@
367
373
  ondblclick={onSurfaceDblClick}
368
374
  >
369
375
  {#if surfaceState === 'empty'}
370
- <!-- Reading mode only: everywhere else an empty diagram renders its edit surface. -->
376
+ <!-- Reading mode only: everywhere else an empty diagram opens its textarea. -->
371
377
  <div class="mermaid-empty">Empty diagram</div>
372
378
  {:else if surfaceState === 'no-renderer'}
373
379
  <pre class="mermaid-static">{displayCode}</pre>
@@ -401,7 +407,7 @@
401
407
  </div>
402
408
  <div
403
409
  class="mermaid-overlay-viewport"
404
- data-pointer-gesture
410
+ {...overlayGesture}
405
411
  onwheel={onOverlayWheel}
406
412
  onpointerdown={(e) => {
407
413
  e.stopPropagation();
@@ -442,8 +448,8 @@
442
448
  background: var(--color-bg-secondary, rgba(128, 128, 128, 0.12));
443
449
  }
444
450
 
445
- /* Revealed on hover/focus so the diagram carries no chrome at rest (SearchBar's
446
- elevated-surface + ghost-button convention). */
451
+ /* Shown on hover or focus so the diagram has no buttons over it at rest, following
452
+ SearchBar's raised panel and plain buttons. */
447
453
  .mermaid-toolbar {
448
454
  position: absolute;
449
455
  top: 6px;
@@ -467,7 +473,7 @@
467
473
  pointer-events: auto;
468
474
  }
469
475
 
470
- /* Reading mode drops the edit affordance; Focus/Reset are view-only and stay. */
476
+ /* Reading mode drops the edit button; Focus and Reset only change the view, so they stay. */
471
477
  :global([data-presentation='reading']) .mermaid-toolbar :global([data-testid='mermaid-edit']) {
472
478
  display: none;
473
479
  }
@@ -502,8 +508,8 @@
502
508
  outline: none;
503
509
  }
504
510
 
505
- /* Only a focused block pans, so only then does the viewport hint with the grab cursor.
506
- `:focus-within`: whole-block focus lands on the editor's hidden input host beside it. */
511
+ /* Only a focused block pans, so only then does the viewport show the grab cursor.
512
+ `:focus-within`, because whole-block focus goes to the editor's hidden input beside it. */
507
513
  .mermaid-block:focus-within .mermaid-viewport {
508
514
  cursor: grab;
509
515
  }
@@ -514,8 +520,8 @@
514
520
  justify-content: center;
515
521
  }
516
522
 
517
- /* Deltas over the shared .md-source-surface (editor.css). Height is written by the
518
- fit-to-content effect; `overflow-y: hidden` keeps the grow visible instead of scrolled. */
523
+ /* Only the differences from the shared .md-source-surface (editor.css). Height is written by
524
+ the fit-to-content effect; `overflow-y: hidden` lets the box grow rather than scroll. */
519
525
  .mermaid-source {
520
526
  padding: 8px;
521
527
  overflow-y: hidden;
@@ -1,3 +1,3 @@
1
- // Importing this pulls no rendering engine; the adapter lives at the `/renderer` subpath.
1
+ // Importing this pulls in no renderer; the adapter lives at the `/renderer` subpath.
2
2
  export { mermaidPlugin } from './register';
3
3
  export { MERMAID } from './mermaid-kind';
@@ -1,7 +1,7 @@
1
1
  /**
2
- * The reference whole-block container, on public registration seams only: an opaque
2
+ * The worked example of a whole-block container, using public registration only: an opaque
3
3
  * container with no children, its diagram code in typed metadata, so an
4
- * `updateOwnMetadata({ code })` commit is the whole edit path. Uninstall safety is by
4
+ * `updateOwnMetadata({ code })` commit is the whole edit path. Uninstalling is safe by
5
5
  * construction: without this opener the same bytes parse as plain `fencedCode`.
6
6
  */
7
7
  import { type CstNode } from '../../plugin';
@@ -25,11 +25,8 @@ export interface MermaidMetadata {
25
25
  * ending put back on every body line. An emptied body commits as `''`, no stray line.
26
26
  */
27
27
  export declare function joinMermaidBody(draft: string, lineEnding: string): string;
28
- /**
29
- * The opener's inverse, and the byte path every code edit rides. The body is a metadata string
30
- * this kind never re-parses, so the fence is sized against it here — a diagram line that reads as
31
- * this block's closer would otherwise truncate the block on its next load.
32
- */
28
+ /** The opener's inverse, which every code edit goes through; the fence is sized against the body
29
+ * here, since a diagram line reading as the closer would cut the block short on reload. */
33
30
  export declare function rebuildMermaidRaw(node: CstNode): void;
34
31
  export interface MermaidUiHooks {
35
32
  openEdit(): void;
@@ -1,18 +1,15 @@
1
1
  /**
2
- * The reference whole-block container, on public registration seams only: an opaque
2
+ * The worked example of a whole-block container, using public registration only: an opaque
3
3
  * container with no children, its diagram code in typed metadata, so an
4
- * `updateOwnMetadata({ code })` commit is the whole edit path. Uninstall safety is by
4
+ * `updateOwnMetadata({ code })` commit is the whole edit path. Uninstalling is safe by
5
5
  * construction: without this opener the same bytes parse as plain `fencedCode`.
6
6
  */
7
- import { declarePluginKind, registerBlockKind, registerBlockOpener, registerBlockCommand, setPluginMetadata, getPluginMetadata, matchFenceOpen, matchFenceClose, escalatedFenceLength, OPENER_PRIORITIES } from '../../plugin';
7
+ import { declarePluginKind, registerBlockKind, registerBlockOpener, registerBlockCommand, setPluginMetadata, getPluginMetadata, matchFenceInfo, escalatedFenceLength, fenceRawWrite, fenceShapeOfRaw, scanFence, OPENER_PRIORITIES } from '../../plugin';
8
8
  export const MERMAID = 'mermaid';
9
9
  // ── Fence grammar ─────────────────────────────────────────────────────────────
10
- // The barrel's built-in matcher, gated on the info string's first word, so the
11
- // CommonMark fence rules stay the editor's and never become a plugin copy.
12
- function matchMermaidFence(text) {
13
- const fence = matchFenceOpen(text);
14
- return fence && fence.info.split(/\s+/)[0] === MERMAID ? fence : null;
15
- }
10
+ // The editor's own fence matcher, filtered on the info string's first word, so the CommonMark
11
+ // fence rules stay in one place and never become a plugin's copy of them.
12
+ const matchMermaidFence = matchFenceInfo(MERMAID);
16
13
  /**
17
14
  * The edit textarea normalizes to LF, so a CRLF-authored diagram needs its authored
18
15
  * ending put back on every body line. An emptied body commits as `''`, no stray line.
@@ -22,11 +19,8 @@ export function joinMermaidBody(draft, lineEnding) {
22
19
  return '';
23
20
  return draft.replaceAll('\n', lineEnding) + lineEnding;
24
21
  }
25
- /**
26
- * The opener's inverse, and the byte path every code edit rides. The body is a metadata string
27
- * this kind never re-parses, so the fence is sized against it here — a diagram line that reads as
28
- * this block's closer would otherwise truncate the block on its next load.
29
- */
22
+ /** The opener's inverse, which every code edit goes through; the fence is sized against the body
23
+ * here, since a diagram line reading as the closer would cut the block short on reload. */
30
24
  export function rebuildMermaidRaw(node) {
31
25
  const meta = getPluginMetadata(node);
32
26
  if (!meta)
@@ -43,13 +37,10 @@ export function rebuildMermaidRaw(node) {
43
37
  ? grownCloser(meta.closerRaw, marker, fenceLength)
44
38
  : meta.closerRaw);
45
39
  }
46
- /**
47
- * Grow a verbatim closer line's run to `length`, keeping its indent, trailing spaces and line
48
- * ending. An unterminated block has no closer line and gains none: the parser reads it to the end
49
- * of input either way.
50
- */
40
+ /** Grow a verbatim closer line's run to `length`, keeping its indent, trailing spaces and ending;
41
+ * an unterminated block has no closer line and gains none. */
51
42
  function grownCloser(closerRaw, marker, length) {
52
- const match = /^( {0,3})([`~]+)([\s\S]*)$/.exec(closerRaw);
43
+ const match = /^( {0,3})([`~]+)(.*)$/s.exec(closerRaw);
53
44
  if (!match)
54
45
  return closerRaw;
55
46
  return match[1] + marker.repeat(Math.max(match[2].length, length)) + match[3];
@@ -57,8 +48,8 @@ function grownCloser(closerRaw, marker, length) {
57
48
  // ── Registration ─────────────────────────────────────────────────────────────
58
49
  export function registerMermaidKind() {
59
50
  const mermaid = declarePluginKind(MERMAID);
60
- // No default chord: the edit affordance is the button, and this command exists for
61
- // consumer keymap bindings.
51
+ // No default key binding: the button is how you edit, and this command exists so a
52
+ // consumer can bind its own.
62
53
  registerBlockCommand(mermaid, 'mermaid.edit', (ctx) => {
63
54
  const hooks = ctx.hooks;
64
55
  if (!hooks)
@@ -74,25 +65,28 @@ export function registerMermaidKind() {
74
65
  return true;
75
66
  });
76
67
  registerBlockKind(mermaid, {
68
+ label: 'Diagram',
69
+ dragLabel: 'Diagram',
77
70
  // Backspace from the block below must never merge text into a diagram.
78
71
  mergeRole: 'not-mergeable',
79
72
  editable: true,
80
73
  supportsInline: false,
81
- // ThematicBreak's focus-then-delete model: arrows stop on it, and a caret-adjacent
82
- // Backspace focuses before a second press deletes.
74
+ // Focus first, then delete, as a thematic break does: arrows stop on it, and Backspace
75
+ // from the next block focuses it before a second Backspace deletes it.
83
76
  blockFocus: 'whole-block',
84
- // Leading edge only, for the same reason as thematicBreak: its focused Enter already
85
- // inserts a paragraph below.
77
+ // Leading edge only, for the same reason as a thematic break: pressing Enter while it
78
+ // is focused already inserts a paragraph below.
86
79
  gapEdges: 'before',
87
80
  container: {
88
- // Raw is rebuilt from metadata alone, so it is exempt from the strip byte-check
89
- // and guarded by the reparse + determinism probes instead.
81
+ // Raw is rebuilt from metadata alone, so the strip byte-check is skipped and the
82
+ // reparse and determinism checks cover it instead.
90
83
  contract: 'opaque',
91
84
  rebuildRaw: rebuildMermaidRaw
92
85
  },
93
- // The char-based default would seed a rendered diagram at ~one line; the measured
94
- // height supersedes this on mount.
86
+ // The character-count default would estimate a rendered diagram at about one line; the
87
+ // measured height replaces this on mount.
95
88
  estimateHeight: () => 320,
89
+ rawWrite: fenceRawWrite(fenceShapeOfRaw),
96
90
  keymap: [{ chord: 'Mod+M', command: focusCommand }],
97
91
  conformanceFixture: '```mermaid\ngraph TD\n```\n',
98
92
  closure: {
@@ -132,27 +126,16 @@ export function registerMermaidKind() {
132
126
  }
133
127
  });
134
128
  registerBlockOpener(mermaid, {
135
- // `fencedCode` accepts every fence, ```mermaid included, so this must price ahead
136
- // of that superset matcher rather than slot into a gap between built-ins.
129
+ // `fencedCode` accepts every fence, ```mermaid included, so this has to be tried
130
+ // before it rather than sit between two built-ins.
137
131
  priority: OPENER_PRIORITIES.fencedCode - 5,
138
132
  interruptsParagraph: (line) => matchMermaidFence(line) !== null,
139
133
  tryOpen(ctx) {
140
134
  const fence = matchMermaidFence(ctx.line.text);
141
135
  if (!fence)
142
136
  return null;
143
- let closeIdx = -1;
144
- for (let i = ctx.index + 1; i < ctx.end; i++) {
145
- if (matchFenceClose(ctx.lines[i].text, fence.marker, fence.length)) {
146
- closeIdx = i;
147
- break;
148
- }
149
- }
150
137
  // Unterminated consumes to end of input, like the built-in fence.
151
- const codeEnd = closeIdx === -1 ? ctx.end : closeIdx;
152
- const code = ctx.lines
153
- .slice(ctx.index + 1, codeEnd)
154
- .map((l) => l.raw)
155
- .join('');
138
+ const scan = scanFence(ctx, fence);
156
139
  const node = {
157
140
  kind: mermaid,
158
141
  leadingTrivia: ctx.leadingTrivia,
@@ -160,17 +143,17 @@ export function registerMermaidKind() {
160
143
  children: []
161
144
  };
162
145
  setPluginMetadata(node, {
163
- code,
146
+ code: scan.body,
164
147
  openerIndent: fence.indent,
165
148
  fenceChar: fence.marker,
166
149
  fenceLength: fence.length,
167
150
  infoRaw: fence.infoRaw,
168
151
  openerLineEnding: ctx.line.lineEnding,
169
- closerRaw: closeIdx === -1 ? '' : ctx.lines[closeIdx].raw
152
+ closerRaw: scan.closer === -1 ? '' : ctx.lines[scan.closer].raw
170
153
  });
171
154
  // Raw comes from the rebuild, so opener and rebuild agree by construction.
172
155
  rebuildMermaidRaw(node);
173
- return { node, consumed: (closeIdx === -1 ? ctx.end : closeIdx + 1) - ctx.index };
156
+ return { node, consumed: scan.consumed };
174
157
  }
175
158
  });
176
159
  }
@@ -1,13 +1,13 @@
1
1
  /**
2
- * The renderer-adapter seam: this module holds the injected renderer slot and the
3
- * memo, never the engine, which is confined to the `/renderer` subpath so it never
4
- * rides the core bundle. The engine travels by module because `MermaidBlock` mounts
5
- * with standard block props. No default: absent a renderer the code renders statically.
2
+ * Where the mermaid renderer is plugged in: `mermaidSlot` holds it and its cache, never mermaid
3
+ * itself, which stays behind the `/renderer` subpath so it never lands in the main bundle.
4
+ * `MermaidBlock` mounts with the standard block props, so it reads the renderer from here.
6
5
  */
6
+ import { type RenderContext } from '../../plugin';
7
7
  /** What the editor knows at render time that the diagram text does not carry. */
8
8
  export interface MermaidRenderContext {
9
- /** The engine paints colors into the SVG, so a stylesheet cannot retheme a drawn
10
- * diagram: the renderer has to draw for the theme. */
9
+ /** Mermaid paints colors into the SVG, so a stylesheet cannot retheme a drawn diagram:
10
+ * the renderer has to draw for the theme. */
11
11
  theme: string;
12
12
  }
13
13
  /** Third parameter, so an existing `(code, id) => …` renderer stays assignable. */
@@ -16,13 +16,6 @@ export interface MermaidRenderResult {
16
16
  svg?: string;
17
17
  error?: string;
18
18
  }
19
- /** Exported so the eviction test derives its churn count from the real bound. */
20
- export declare const MERMAID_MEMO_CAP = 256;
21
- export declare function setMermaidRenderer(renderer: MermaidRenderer | null): void;
22
- export declare function hasMermaidRenderer(): boolean;
23
- /**
24
- * Theme belongs in the memo key rather than in a cache reset, so flipping back is a hit; an
25
- * SVG string needs no per-caller clone. A parse failure resolves to an `error` and caches
26
- * like a success. `theme` is required, so a caller cannot forget it and still compile.
27
- */
28
- export declare function renderMermaid(code: string, theme: string): Promise<MermaidRenderResult>;
19
+ export declare const mermaidSlot: import("../../plugin").AsyncRendererSlot<string, MermaidRenderResult>;
20
+ /** Mermaid needs a fresh element id per render, which the slot's `(code, ctx)` call leaves out. */
21
+ export declare function adaptMermaidRenderer(renderer: MermaidRenderer): (code: string, ctx: RenderContext) => Promise<MermaidRenderResult>;