@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
package/dist/plugin.js CHANGED
@@ -1,26 +1,30 @@
1
- // The plugin-authoring surface, published at the `@voithos-labs/aragonite/plugin` subpath. Only the
2
- // authoring API belongs here — not the `<Editor>` embedding barrel (index.ts), no test
3
- // helpers, no internal dispatch. Sections tagged (pre-freeze) may change until the 1.0
4
- // freeze.
1
+ // The plugin-authoring API, published at the `@voithos-labs/aragonite/plugin` subpath. Only the
2
+ // authoring API belongs here: not the `<Editor>` embedding barrel (index.ts), no test
3
+ // helpers, no internal dispatch. Nothing is frozen before 1.0: a (pre-freeze) section may change
4
+ // shape, and an untagged one keeps its model while its call shapes can still change.
5
5
  import TextEditableBlock from './components/blocks/text/TextEditableBlock.svelte';
6
6
  import { registerChromeLeaf as bindChromeLeaf } from './editor-actions/plugin/chrome-leaf';
7
7
  import { computeInlineContent as parseLeafInline } from './core/inline';
8
+ import { defaultGrammarView } from './schema/block-openers';
9
+ import { everyInstalledPlugin } from './schema/plugin-activation';
10
+ import { getLanguageAliases as aliasesIn, listLanguages as languagesIn } from './components/blocks/code/code-languages';
11
+ import { tokenizeBody } from './components/blocks/code/code-renderer';
8
12
  // ── Plugin unit (pre-freeze) ─────────────────────────────────────────────────
9
- // Installation is once per process — the editor's `plugins` prop does it, so a
10
- // consumer rarely calls installPlugins directly.
13
+ // Installation happens once per process; the editor's `plugins` prop does it, so a
14
+ // consumer rarely calls `installPlugins` directly.
11
15
  export { definePlugin, isPluginInstalled } from './schema/plugin-install';
12
16
  // The single-block shortcut: one kind, one component, one register step.
13
17
  export { definePluginBlock } from './schema/define-plugin-block';
14
18
  // ── Kind declaration ─────────────────────────────────────────────────────────
15
19
  export { declarePluginKind, declaredPluginKind } from './schema/plugin-kind';
16
- // ── Inline authoring surface (pre-freeze) ────────────────────────────────────
17
- // Mint an inline kind, hook the scanner on a trigger character, register a live atomic widget.
20
+ // ── Inline authoring API (pre-freeze) ────────────────────────────────────────
21
+ // Declare an inline kind, hook the scanner on a trigger character, register a live widget.
18
22
  export { declarePluginInlineKind, declaredPluginInlineKind, isInlineKindDeclared } from './schema/plugin-kind';
19
23
  export { registerInlineSyntax, INLINE_PRIORITIES } from './core/inline/scan/plugin-syntax';
20
24
  export { registerInlineWidgetKind, mintWidgetShell, isWidgetActivationClick } from './core/inline/inline-widgets';
21
25
  // ── Block-kind descriptor registry ───────────────────────────────────────────
22
- // BlockKindRegistration is the write-side shape; BlockKindDescriptor is the flat
23
- // read-side one, still exported as the referent of ContainerDescriptorGroup's fields.
26
+ // `BlockKindRegistration` is the shape you register; fields that only mean something together
27
+ // are declared together, so an incoherent pair fails to compile.
24
28
  export { registerBlockKind, augmentBlockKind } from './schema/block-kind-descriptor';
25
29
  export { simpleLeafClosure, containerClosure } from './schema/closure';
26
30
  // ── Component registry ───────────────────────────────────────────────────────
@@ -30,30 +34,40 @@ export { registerBlockOpener } from './schema/block-openers';
30
34
  // The shared "does this line start a block at the outer level" gate, so a container opener
31
35
  // scanning its own extent ends it where cmark-gfm does instead of forking the rule.
32
36
  export { lineStartsOuterBlock } from './schema/block-openers';
33
- // The built-in priority ladder a plugin opener prices against (pre-freeze) — see the
37
+ // The built-in priority order a plugin opener places itself in (pre-freeze); see the
34
38
  // plugin guide's opener-priority section for the two placement rules.
35
39
  export { OPENER_PRIORITIES } from './schema/opener-priorities';
36
40
  // ── Enter-completion registry (pre-freeze) ───────────────────────────────────
37
- // The opener's sibling for a grammar whose lines must be adjacent, which Enter alone can
38
- // never type into existence: a completer reads one typed line and answers the lines that
39
- // complete it, plus where the caret seats inside the mint.
41
+ // A completer reads one typed line and answers the lines that complete it, plus the caret: for a
42
+ // grammar whose lines must be adjacent, which Enter alone never types.
40
43
  export { registerBlockCompleter } from './schema/block-completions';
41
44
  // ── Code-block languages (pre-freeze) ────────────────────────────────────────
42
- // The registry behind fenced-code highlighting. The editor bootstraps a curated set (every
43
- // grammar is bundle weight for every consumer), so a host needing more registers them itself,
44
- // BEFORE mounting an editor: a block on screen re-tokenizes only when its bytes next change.
45
- // An unregistered language is not an error — the fence still round-trips, just untokenized.
46
- // `listLanguages` lists each language once; `getLanguageAliases` holds the other spellings.
47
- export { registerLanguage, listLanguages, getLanguageAliases } from './components/blocks/code/code-languages';
48
- // The code block's own tokenizer, for a plugin whose source surface wants the same highlighting
49
- // (block math paints its LaTeX with it). Text-preserving: the fragment's textContent is `body`.
50
- export { tokenizeBody as highlightCode } from './components/blocks/code/code-renderer';
51
- // ── Command mint (pre-freeze) ────────────────────────────────────────────────
52
- // A (kind, name) block-command mints a PluginCommandId; AnyCommandId spans built-in and minted.
45
+ // The registry behind fenced-code highlighting: register extra languages before mounting (an
46
+ // unregistered one round-trips untokenized). The reads below see every installed plugin's.
47
+ export { registerLanguage } from './components/blocks/code/code-languages';
48
+ /** Every language once, under its canonical name, sorted. */
49
+ export function listLanguages() {
50
+ return languagesIn(everyInstalledPlugin);
51
+ }
52
+ /** The other spellings a language answers to, asked by any of them. */
53
+ export function getLanguageAliases(name) {
54
+ return aliasesIn(name, everyInstalledPlugin);
55
+ }
56
+ /** The code block's own tokenizer, for a plugin's own source view (block math paints its LaTeX
57
+ * with it). Text-preserving: the fragment's `textContent` is `body`. */
58
+ export function highlightCode(body, language) {
59
+ return tokenizeBody(body, language, everyInstalledPlugin);
60
+ }
61
+ // The code block's own drawing of a fenced source, for a kind that holds its own fence: split
62
+ // with `sliceFencedSource`, draw with `renderFencedSource` and your body painter.
63
+ export { sliceFencedSource, renderFencedSource, fenceBodyAsDrawn } from './components/blocks/code/code-renderer';
64
+ // ── Registering commands (pre-freeze) ────────────────────────────────────────
65
+ // A (kind, name) block command creates a `PluginCommandId`; `AnyCommandId` covers both.
53
66
  export { registerBlockCommand } from './schema/block-commands';
54
67
  // The block context menu: a kind's right-click actions, empty unless something registers them.
55
68
  export { registerBlockContextActions } from './schema/context-actions';
56
- // A global command is process-wide but runs against the dispatching instance's EditorContext.
69
+ // A global command is process-wide but runs against the dispatching instance's `EditorContext`,
70
+ // with the argument `runCommand(id, arg)` or the chord's binding carried.
57
71
  export { registerGlobalCommand } from './schema/global-commands';
58
72
  // ── Parse / serialize helpers (pre-freeze) ───────────────────────────────────
59
73
  // Re-exported so an opener needn't reach into core/ deep paths the packaged artifact
@@ -61,50 +75,57 @@ export { registerGlobalCommand } from './schema/global-commands';
61
75
  export { parse } from './core/parser';
62
76
  export { serialize, concatChildren as serializeChildren } from './core/serializer';
63
77
  export { trimTrailingLineEnding, normalizeLineEndings } from './core/lines';
64
- // The `ParsedLine[]` every line-scoped seam here consumes — without it a `source →
78
+ // The `ParsedLine[]` every line-based helper here takes; without it a `source →
65
79
  // source` transform holding nothing but a string could not reach `blockquoteExtent`.
66
80
  export { splitLines } from './core/lines';
67
- // GFM §2.1's blank line (spaces and tabs only). `String.trim()` would admit the whole
68
- // Unicode whitespace set and split a block on a pasted non-breaking space.
81
+ // A line a plugin writes takes the document's ending, and per-line work reads a line's text
82
+ // without its ending, so a CRLF document stays CRLF through a plugin's write rule.
83
+ export { documentLineEnding, firstLineEnding, ownTrailingLineEnding, trailingLineEnding, displayLines, joinDisplayLines } from './core/lines';
84
+ // GFM §2.1's blank line (spaces and tabs only) and its whitespace, for a plugin's grammar.
85
+ // `String.trim()` and JS `\s` would also take a non-breaking space, which is content.
69
86
  export { isBlankLine } from './core/parser';
70
- // A container whose body sits between chrome lines of its own (`:::note` … `:::`,
71
- // `<summary>` … `</details>`) parses that body here, not with `parse`: the blank line
72
- // against a chrome line is a separator, and only this seam knows to keep it out of the
73
- // children. See `design/syntax-tree.md` § blank lines.
87
+ export { isBlankText, isWhitespaceChar, trimWhitespace } from './core/lines';
88
+ // A body between marker lines of its own (`:::note` … `:::`) parses here, not with `parse`: the
89
+ // blank line against a marker line is a separator (`docs/design/syntax-tree.md` § Blank lines).
74
90
  export { parseContainerBody } from './core/parser';
75
91
  // ── Fence grammar (pre-freeze) ───────────────────────────────────────────────
76
- // The built-in CommonMark fence recognizers, so a plugin claiming a fence (```mermaid) never
77
- // reimplements the rules. The opener match keeps verbatim indent/info bytes, for byte-exact
78
- // rebuilds; `escalatedFenceLength` is `escalatedColonCount`'s fence twin, owed by any kind that
79
- // rebuilds its own raw around a body it did not parse.
80
- export { matchFenceOpen, matchFenceClose, escalatedFenceLength } from './core/parsers/fence-syntax';
92
+ // The CommonMark fence grammar, so a plugin taking over a fence (```mermaid) never reimplements
93
+ // it: `fenceRawWrite` serves as its `rawWrite`, and `escalatedFenceLength` sizes a rebuilt fence.
94
+ export { matchFenceOpen, matchFenceClose, escalatedFenceLength, findFenceCloser, fenceAnatomy, matchFenceInfo } from './core/parsers/fence-syntax';
95
+ export { scanFence } from './core/parsers/fenced-code';
96
+ export { fenceRawWrite, fenceShapeOfRaw } from './schema/fenced-code-raw';
81
97
  // ── HTML tag-line grammar (pre-freeze) ───────────────────────────────────────
82
- // CommonMark's type-6 tag-line shape for one tag name. What actually closes such a
83
- // container is everything the spec passes through raw (indented, upper-cased, trailing
84
- // space) — looser than any canonical form a rebuild emits.
98
+ // CommonMark's type-6 tag-line shape for one tag name. What closes such a container is anything
99
+ // the spec passes through raw, looser than the canonical form a rebuild emits.
85
100
  export { htmlBlockTagLineMatcher } from './core/parsers/html-block';
86
101
  // ── Blockquote grammar (pre-freeze) ──────────────────────────────────────────
87
- // The built-in blockquote extent scanner, so a plugin claiming a blockquote-shaped
88
- // construct (`> [!NOTE]`) reuses CommonMark §5.1 lazy continuation instead of forking it.
102
+ // The built-in blockquote extent scanner, so a plugin that takes over a blockquote-shaped
103
+ // construct (`> [!NOTE]`) reuses CommonMark §5.1 lazy continuation instead of writing its own.
89
104
  export { blockquoteExtent } from './core/parsers/blockquote';
90
105
  // Store/read a plugin kind's own metadata shape without casting through `BlockMetadata`.
91
106
  export { setPluginMetadata, getPluginMetadata } from './core/nodes';
92
107
  // The content span within a block's raw, syntax markers excluded (a heading's `#` prefix).
93
108
  export { getContentRange } from './core/inline';
94
- // A heading's level (ATX or setext), null otherwise: the typed path past the
95
- // built-in-node narrowing this barrel keeps internal.
109
+ // A heading's level (ATX or setext), null otherwise: the typed way to ask, since the
110
+ // built-in node narrowing stays internal to this barrel.
96
111
  export { headingLevel } from './core/nodes';
97
- // Pure and uncached — the reactive-safe path a widget's `$derived` reads. `isProseKind`
98
- // gates the walk so a code block's bytes are never inline-scanned.
112
+ // Pure and uncached, so a widget's `$derived` can read it safely. `isProseKind` guards the
113
+ // traversal so a code block's bytes are never inline-scanned.
99
114
  export { isProseKind } from './core/inline';
115
+ // Pre-order over a document or subtree, with 'skip' and 'stop', so a plugin writes no recursion.
116
+ export { walkBlocks } from './core/paths';
117
+ // The block at a path, or null for the root or a path that leads nowhere.
118
+ export { blockNodeAt } from './tree-operations/node-primitives';
100
119
  /**
101
- * Inline-parse a prose leaf. No link-reference resolver is available to a plugin, so
102
- * reference links parse as `unresolvedReference`; every other construct fully resolves.
120
+ * Inline-parse a prose leaf with every installed plugin's syntax, for a pipeline with no editor
121
+ * mounted. Inside an editor use `EditorContext.computeInlineContent`, which reads only the plugins
122
+ * that editor lists and resolves the document's reference links. With no document here, a
123
+ * reference link reads as its bracketed text.
103
124
  */
104
125
  export function computeInlineContent(node) {
105
- return parseLeafInline(node);
126
+ return parseLeafInline(node, undefined, defaultGrammarView);
106
127
  }
107
- // ── Idempotent-registration probes ─────────────────────────────────────────────
128
+ // ── Re-registration checks ─────────────────────────────────────────────────────
108
129
  // The register-once registries throw on duplicate; a plugin re-registers safely
109
130
  // (HMR / re-import) by guarding on these.
110
131
  export { isBlockKindDeclared } from './schema/plugin-kind';
@@ -113,60 +134,62 @@ export { isBlockComponentRegistered } from './schema/block-component-registry';
113
134
  export { isBlockOpenerRegistered } from './schema/block-openers';
114
135
  export { isBlockCompleterRegistered } from './schema/block-completions';
115
136
  export { isPasteTransformRegistered } from './tree-operations/paste/paste-transforms';
116
- // ── Container-authoring surface (pre-freeze) ─────────────────────────────────
137
+ export { isLanguageRegistered } from './components/blocks/code/code-languages';
138
+ // ── Container-authoring API (pre-freeze) ─────────────────────────────────────
117
139
  // Lets a plugin build an editable nested container as thinly as the built-in
118
140
  // blockquote, without touching any editor context key.
119
141
  export { default as BlockList } from './components/BlockList.svelte';
120
142
  export { createContainerBlock } from './editor-actions/plugin/container';
121
- // The one seam allowed to import components/, so editor-actions keeps no upward
122
- // value edge to the component tree.
143
+ // The one place allowed to import from `components/`, so `editor-actions` keeps no upward
144
+ // value dependency on the component tree.
123
145
  export function registerChromeLeaf(kind, opts) {
124
146
  bindChromeLeaf(kind, TextEditableBlock, opts);
125
147
  }
126
- // Mint the reserved child-0 node for a container's chrome leaf: text plus its newline.
148
+ // Create the reserved child-0 node for a container's title leaf: the text plus its newline.
127
149
  export { chromeChild } from './editor-actions/plugin/chrome-leaf';
128
- // One definition of collapsed, shared by a component's getter and the model-layer walks.
150
+ // One definition of collapsed, shared by a component's getter and the traversals over the CST.
129
151
  export { isCollapsedContainer } from './schema/reserved-chrome';
130
- // ── Editable-leaf authoring surface (pre-freeze) ─────────────────────────────
131
- // A text-editing leaf with native caret/IME/undo/selection parity, plain (per-keystroke
132
- // commits) or render-primary (reveal-to-edit, one commit on blur). The
133
- // createContainerBlock sibling for leaves.
152
+ // ── Editable-leaf authoring API (pre-freeze) ─────────────────────────────────
153
+ // A text-editing leaf with the browser's own caret, IME, undo and selection: plain (a commit per
154
+ // keystroke) or render-first (source while the caret is inside, one commit on blur).
134
155
  export { createEditableLeaf } from './components/blocks/editable-leaf';
135
156
  // ── Directive authoring (pre-freeze) ─────────────────────────────────────────
136
- // `activateDirectives()` claims `:::` — call it once at startup, before the editor
137
- // parses. The other symbols are inert: importing them does NOT claim the grammar.
157
+ // `activateDirectives()` takes over `:::`; call it once at startup, before the editor
158
+ // parses. The other symbols do nothing on their own: importing them takes over no grammar.
138
159
  export { activateDirectives } from './components/blocks/directive/activate-directives';
139
160
  export { registerDirective, isDirectiveRegistered } from './core/directive/registry';
140
- // `escalatedColonCount` is the rule `serializeDirective` already applies; exported for
141
- // emitters that build `:::name` text by concatenation instead of through the CST, where
142
- // a body line reproducing the fence would otherwise close the container early.
161
+ // `escalatedColonCount` is the rule `serializeDirective` applies, for emitters building `:::name`
162
+ // text by concatenation, where a body line reproducing the fence would close it early.
143
163
  export { escalatedColonCount, parseDirectiveAttributes, serializeDirective } from './core/directive/grammar';
144
164
  // The `rebuildRaw` for a directive container whose child 0 is an editable title.
145
165
  export { createDirectiveRebuild } from './editor-actions/plugin/directive-container';
146
166
  // The wrap every `:::` body parses with; a directive kind declares it as its `container.bodyWrap`
147
- // so the editor's separator settle knows the blank line against the fence belongs to the fence.
167
+ // so the editor's blank-line fix-up knows the blank line against the fence belongs to the fence.
148
168
  export { DIRECTIVE_BODY_WRAP } from './core/directive/kinds';
149
169
  // ── Renderer utilities (pre-freeze) ──────────────────────────────────────────
150
- // A bounded LRU memo for a renderer's per-source work, sync or async (store the
151
- // promise). See the plugin guide's renderer recipe.
170
+ // Where an injected renderer is set and cached per theme, with the plugin's own fallback when it's
171
+ // missing or throws; and the bounded LRU memo under it. See the plugin guide's renderer recipe.
152
172
  export { createBoundedMemo } from './bounded-memo';
173
+ export { createRendererSlot, createAsyncRendererSlot, renderSourceFallback } from './renderer-slot';
153
174
  // ── Recognizer scan index (pre-freeze) ───────────────────────────────────────
154
- // The bounded decline for a grammar with no early-stop byte (the guide's inline-kinds
155
- // section): a per-block position collector becomes a memoized lookup answering the first
156
- // candidate at or after `from` (-1 when none), one scan per block behind a cap-2 memo.
175
+ // For a grammar with no early-stop byte: collect candidate positions once per block, then answer
176
+ // the first at or after `from` (-1 when none) behind a two-entry memo.
157
177
  export { createScanIndex } from './scan-index';
158
178
  // ── Paste transforms (pre-freeze) ────────────────────────────────────────────
159
179
  // A pre-parse clipboard rewrite: inspect the raw pasted text, replace it or decline
160
- // (null). Transforms run in install order at every paste site — never on load or typing.
180
+ // (null). Transforms run in install order at every paste, never on load or while typing.
161
181
  export { registerPasteTransform } from './tree-operations/paste/paste-transforms';
182
+ // ── Insert catalogue (pre-freeze) ────────────────────────────────────────────
183
+ // The blocks the insert menus offer, read through `editor.insertCatalogue`. A plugin adds its own
184
+ // block from `setup`, listed only in the editors that activate it; the icon is a menu glyph name.
185
+ export { registerInsertEntry } from './schema/insert-catalogue';
162
186
  // ── Caret geometry (pre-freeze) ──────────────────────────────────────────────
163
- // The kit a kind answers `caretTargetAtPoint` with: the landing shape, the probe that turns a
164
- // point in one of your own elements into an offset (NEAREST, so a press on your chrome still
165
- // names one), and the sentinel for "wherever this leaf ends".
187
+ // What a kind answers `caretTargetAtPoint` with, the helper that turns a point in your element
188
+ // into the nearest offset, and the value for wherever the leaf ends.
166
189
  export { caretOffsetAtPoint } from './cursor/point-offset';
167
190
  export { CURSOR_END } from './block-component';
168
191
  // ── Pointer gestures (pre-freeze) ────────────────────────────────────────────
169
- // Put this attribute on an element whose drags are your widget's own (a pan, a brush) and the
170
- // editor's pointer arms leave a press inside it alone: no block range, no click ladder.
192
+ // Put this attribute on an element whose drags belong to your widget (a pan, a brush) and the
193
+ // editor's pointer handlers leave a click inside it alone: no block range, no click handling.
171
194
  export { POINTER_GESTURE_ATTR } from './selection/pointer-gesture';
172
195
  export { SELECTION_END } from './block-component';
@@ -1,11 +1,15 @@
1
1
  <!--
2
- One alert box for both admonition kinds: the directive admonition (editable title
3
- chrome leaf at child 0) and the GitHub alert (no title, a static badge instead).
4
- createContainerBlock hides all child-list state, so this owns only its chrome;
5
- node/index/path go in as thunks so each is re-read live, never snapshotted.
2
+ One alert box for both kinds: the directive admonition (an editable title at child 0)
3
+ and the GitHub alert (no title, a static badge instead).
6
4
  -->
7
5
  <script lang="ts">
8
- import { BlockList, createContainerBlock, getPluginMetadata, type NodeView } from '../../plugin';
6
+ import {
7
+ BlockList,
8
+ createContainerBlock,
9
+ getPluginMetadata,
10
+ isBlankText,
11
+ type NodeView
12
+ } from '../../plugin';
9
13
  import {
10
14
  capitalize,
11
15
  coerceAdmonitionName,
@@ -30,7 +34,7 @@
30
34
  ? coerceAdmonitionName(getPluginMetadata<GithubAlertMetadata>(node)?.alertType?.toLowerCase())
31
35
  : coerceAdmonitionName(getPluginMetadata<AdmonitionMetadata>(node)?.name)
32
36
  );
33
- const titleEmpty = $derived(isAlert || (node.children?.[0]?.raw ?? '').trim() === '');
37
+ const titleEmpty = $derived(isAlert || isBlankText(node.children?.[0]?.raw ?? ''));
34
38
 
35
39
  export { containerApi };
36
40
  </script>
@@ -54,7 +58,7 @@
54
58
  </div>
55
59
 
56
60
  <style>
57
- /* A gutter rail, not a card: a document, not a boxed callout. */
61
+ /* A line down the left margin, not a card: this reads as a document, not a boxed callout. */
58
62
  .admonition {
59
63
  position: relative;
60
64
  margin: 0.8em 0;
@@ -62,9 +66,8 @@
62
66
  border-left: 3px solid var(--adm-accent);
63
67
  }
64
68
 
65
- /* One block per kind carries the whole axis: accent, icon glyph, untitled label. Fixed hex,
66
- not theme tokens: GitHub's alert palette is canonically one color per kind, so admonitions
67
- read identically across host themes. */
69
+ /* One block per kind sets what varies, in fixed hex after GitHub's one-color-per-kind alert
70
+ palette, so an admonition looks the same whatever theme the host uses. */
68
71
  .admonition[data-kind='note'] {
69
72
  --adm-accent: #1f6feb;
70
73
  --adm-label: 'Note';
@@ -101,7 +104,7 @@
101
104
  line-height: 1.4em;
102
105
  }
103
106
 
104
- /* The alert badge is static chrome, never a caret target. */
107
+ /* The alert badge is decoration, never a caret target. */
105
108
  .admonition[data-alert-source='github'] :global(.admonition-title) {
106
109
  user-select: none;
107
110
  cursor: default;
@@ -2,7 +2,7 @@
2
2
  * The reference `:::name` directive container. Reuses the shared directive grammar rather
3
3
  * than a hand-written opener, so the fence bytes stay the round-trip truth.
4
4
  */
5
- import { activateDirectives, chromeChild, containerClosure, createDirectiveRebuild, declarePluginKind, defineBlockComponent, DIRECTIVE_BODY_WRAP, registerBlockComponent, registerBlockKind, registerBlockCommand, registerChromeLeaf, registerDirective, registerPasteTransform, isDirectiveRegistered, setPluginMetadata, getPluginMetadata } from '../../plugin';
5
+ import { activateDirectives, chromeChild, containerClosure, createDirectiveRebuild, declarePluginKind, defineBlockComponent, DIRECTIVE_BODY_WRAP, registerBlockComponent, registerBlockKind, registerBlockCommand, registerChromeLeaf, registerDirective, registerPasteTransform, isDirectiveRegistered, setPluginMetadata, getPluginMetadata, trimWhitespace } from '../../plugin';
6
6
  import { ADMONITION, ADMONITION_KINDS, ADMONITION_TITLE, coerceAdmonitionName } from './kinds';
7
7
  import { githubAlertsPasteTransform } from './convert-document';
8
8
  import { registerGithubAlert } from './github-alert-kind';
@@ -10,7 +10,7 @@ import AdmonitionBlock from './AdmonitionBlock.svelte';
10
10
  /** Child 0 is the title (the opener line's info, editable); children 1+ are the body. */
11
11
  function admonitionFromDirective(kind, titleKind) {
12
12
  return (parsed) => {
13
- const title = parsed.fence.info.trim();
13
+ const title = trimWhitespace(parsed.fence.info);
14
14
  const node = {
15
15
  kind,
16
16
  leadingTrivia: parsed.leadingTrivia,
@@ -35,13 +35,14 @@ export function registerAdmonitions(options) {
35
35
  const admonition = declarePluginKind(ADMONITION);
36
36
  const title = declarePluginKind(ADMONITION_TITLE);
37
37
  const build = admonitionFromDirective(admonition, title);
38
- // Every name resolves to one kind, which reads its variant back from metadata.
38
+ // Every name resolves to one kind, which reads its variant back from metadata. A name
39
+ // something else claimed first stays theirs.
39
40
  for (const name of ADMONITION_KINDS) {
40
41
  if (!isDirectiveRegistered('container', name)) {
41
42
  registerDirective('container', name, { kind: admonition, fromDirective: build });
42
43
  }
43
44
  }
44
- // `updateMetadata` is the sanctioned commit path: patch, rebuildRaw, one undoable edit.
45
+ // `updateMetadata` is the only supported commit path: patch, rebuildRaw, one undoable edit.
45
46
  const cycleKind = registerBlockCommand(admonition, 'admonition.cycleKind', (ctx) => {
46
47
  const meta = getPluginMetadata(ctx.node);
47
48
  const dir = ctx.arg === 'prev' ? -1 : 1;
@@ -51,10 +52,14 @@ export function registerAdmonitions(options) {
51
52
  return true;
52
53
  });
53
54
  registerBlockKind(admonition, {
55
+ label: 'Admonition',
56
+ // A note reads as part of the text around it, so it shows no drag handle.
57
+ pageRole: 'prose',
54
58
  mergeRole: 'container',
55
59
  editable: true,
56
60
  supportsInline: false,
57
- // Opaque tier rule: no textual escape hatch at either edge, so both take the gap caret.
61
+ // An opaque container has no text at either edge for the caret to step into, so both
62
+ // edges take the gap caret.
58
63
  gapEdges: 'both',
59
64
  container: {
60
65
  // The title lives in the opener line, so raw is not a strip of the children.
@@ -62,10 +67,7 @@ export function registerAdmonitions(options) {
62
67
  rebuildRaw: rebuildAdmonitionRaw,
63
68
  bodyWrap: DIRECTIVE_BODY_WRAP,
64
69
  reservedChrome: { kind: title },
65
- unwrapRole: {
66
- firstChildBackspace: 'keep-reserved-chrome',
67
- middleChildBackspace: 'default-merge'
68
- }
70
+ unwrapRole: { middleChildBackspace: 'default-merge' }
69
71
  },
70
72
  keymap: [{ chord: 'Mod+7', command: cycleKind }],
71
73
  conformanceFixture: ':::note Heads up\n\nbody\n\n:::\n',
@@ -87,7 +89,7 @@ export function registerAdmonitions(options) {
87
89
  }
88
90
  })
89
91
  });
90
- registerChromeLeaf(title, { blockClass: 'admonition-title' });
92
+ registerChromeLeaf(title, { label: 'Title', blockClass: 'admonition-title' });
91
93
  registerBlockComponent(admonition, defineBlockComponent(AdmonitionBlock));
92
94
  if (options?.convertAlertsOnPaste) {
93
95
  registerPasteTransform(githubAlertsPasteTransform);
@@ -1,11 +1,11 @@
1
1
  /**
2
- * Document-scoped GitHub-alert conversion, the sanctioned rewrite pattern:
3
- * `getSource()` → transform → write the `source` prop back. Scoping through
4
- * `parse` rather than line scanning is what makes it fence-safe; nested alerts are
5
- * skipped because rewriting one would mean rebuilding its ancestors' raw.
2
+ * GitHub-alert conversion over a whole document, and the supported way to rewrite one:
3
+ * `getSource()` → transform → write the `source` prop back. Going through `parse` rather
4
+ * than scanning lines is what makes it fence-safe; nested alerts are skipped because
5
+ * rewriting one would mean rebuilding its ancestors' raw.
6
6
  */
7
7
  import { type PasteTransform } from '../../plugin';
8
8
  import { type AlertConversion } from './gh-alert';
9
9
  export declare function convertGithubAlertsInDocument(source: string): AlertConversion;
10
- /** The line probe short-circuits the common no-alert paste before the parse. */
10
+ /** The line scan short-circuits the common no-alert paste before the parse. */
11
11
  export declare const githubAlertsPasteTransform: PasteTransform;
@@ -1,13 +1,14 @@
1
1
  /**
2
- * Document-scoped GitHub-alert conversion, the sanctioned rewrite pattern:
3
- * `getSource()` → transform → write the `source` prop back. Scoping through
4
- * `parse` rather than line scanning is what makes it fence-safe; nested alerts are
5
- * skipped because rewriting one would mean rebuilding its ancestors' raw.
2
+ * GitHub-alert conversion over a whole document, and the supported way to rewrite one:
3
+ * `getSource()` → transform → write the `source` prop back. Going through `parse` rather
4
+ * than scanning lines is what makes it fence-safe; nested alerts are skipped because
5
+ * rewriting one would mean rebuilding its ancestors' raw.
6
6
  */
7
- import { parse } from '../../plugin';
7
+ import { documentLineEnding, parse } from '../../plugin';
8
8
  import { convertAlertBlockquoteRaw, hasGithubAlert } from './gh-alert';
9
9
  export function convertGithubAlertsInDocument(source) {
10
10
  const doc = parse(source, { scope: 'document' });
11
+ const ending = documentLineEnding(doc);
11
12
  let changed = false;
12
13
  const parts = [doc.prefix];
13
14
  for (const child of doc.children) {
@@ -15,7 +16,7 @@ export function convertGithubAlertsInDocument(source) {
15
16
  // Both kinds feed the same first-line converter: a plain blockquote may still
16
17
  // hold a mid-quote marker, which must stay literal.
17
18
  const isAlertShaped = child.kind === 'blockquote' || child.kind === 'githubAlert';
18
- const converted = isAlertShaped ? convertAlertBlockquoteRaw(child.raw) : null;
19
+ const converted = isAlertShaped ? convertAlertBlockquoteRaw(child.raw, ending) : null;
19
20
  if (converted !== null) {
20
21
  parts.push(converted);
21
22
  changed = true;
@@ -27,7 +28,7 @@ export function convertGithubAlertsInDocument(source) {
27
28
  parts.push(doc.suffix);
28
29
  return { converted: parts.join(''), changed };
29
30
  }
30
- /** The line probe short-circuits the common no-alert paste before the parse. */
31
+ /** The line scan short-circuits the common no-alert paste before the parse. */
31
32
  export const githubAlertsPasteTransform = {
32
33
  name: 'admonitions.github-alerts',
33
34
  transform(text) {
@@ -1,3 +1,10 @@
1
+ /**
2
+ * The one place `> [!TYPE]` is recognized, shared with the native `githubAlert` opener.
3
+ * Both converters ask the parser how far the blockquote runs, so CommonMark §5.1 lazy
4
+ * continuation is handled identically. For a whole document use `convert-document.ts`
5
+ * instead: the scanner here is not fence-safe.
6
+ */
7
+ import { type LineEnding } from '../../plugin';
1
8
  /** The type as typed (`NOTE`, `Note`); the opener stores it verbatim so source casing
2
9
  * survives a rebuild. */
3
10
  export declare function matchAlertMarker(line: string): string | null;
@@ -8,6 +15,6 @@ export interface AlertConversion {
8
15
  }
9
16
  /** GitHub honors `[!TYPE]` only on the blockquote's first line; everything after,
10
17
  * lazy-continuation lines and later literal markers alike, is body. */
11
- export declare function convertAlertBlockquoteRaw(raw: string): string | null;
18
+ export declare function convertAlertBlockquoteRaw(raw: string, ending: LineEnding): string | null;
12
19
  export declare function convertGithubAlerts(text: string): AlertConversion;
13
20
  export declare function hasGithubAlert(text: string): boolean;
@@ -1,15 +1,15 @@
1
1
  /**
2
- * The single home for `> [!TYPE]` recognition, reused by the native `githubAlert` opener.
3
- * Both converters run the parser's own extent authority so CommonMark §5.1 lazy
4
- * continuation lands identically. On a whole document prefer the wrapper in
5
- * `convert-document.ts`: the stream scanner here is not fence-safe.
2
+ * The one place `> [!TYPE]` is recognized, shared with the native `githubAlert` opener.
3
+ * Both converters ask the parser how far the blockquote runs, so CommonMark §5.1 lazy
4
+ * continuation is handled identically. For a whole document use `convert-document.ts`
5
+ * instead: the scanner here is not fence-safe.
6
6
  */
7
- import { blockquoteExtent, escalatedColonCount, splitLines } from '../../plugin';
7
+ import { blockquoteExtent, escalatedColonCount, firstLineEnding, splitLines } from '../../plugin';
8
8
  import { ADMONITION_KINDS } from './kinds';
9
9
  const ALERT_NAMES = new Set(ADMONITION_KINDS);
10
10
  const CANONICAL_COLONS = 3;
11
- /** Every `>` pattern here caps indent at CommonMark's 0–3 spaces: past that the line is
12
- * indented code, and claiming it would promote a literal `>` to a marker on rebuild. */
11
+ /** Every `>` pattern here caps indent at CommonMark's 0 to 3 spaces: past that the line is
12
+ * indented code, and taking it would promote a literal `>` to a marker on rebuild. */
13
13
  const MARKER = /^ {0,3}>[ \t]*\[!([A-Za-z]+)\][ \t]*$/;
14
14
  const QUOTE_OPEN = /^ {0,3}>/;
15
15
  /** The type as typed (`NOTE`, `Note`); the opener stores it verbatim so source casing
@@ -22,20 +22,16 @@ export function stripQuoteMarker(line) {
22
22
  const m = /^ {0,3}>[ \t]?/.exec(line);
23
23
  return m ? line.slice(m[0].length) : line;
24
24
  }
25
- /**
26
- * Each emitted line keeps its source line ending so CRLF survives; the closer runs one line past
27
- * the source, which is what the fallback covers. The body converts in the same pass: stripping a
28
- * quote level promotes a nested `> [!TIP]` to a top-level marker a later pass would convert again.
29
- */
30
- function emitDirective(name, source) {
31
- const fallback = source.find((line) => line.lineEnding !== '')?.lineEnding ?? '\n';
25
+ /** Each emitted line keeps its own ending, else `ending`, so CRLF survives. The body converts in
26
+ * the same pass, since stripping a quote level exposes a nested `> [!TIP]` to a second pass. */
27
+ function emitDirective(name, source, fallback) {
32
28
  const stripped = source
33
29
  .slice(1)
34
30
  .map((line) => stripQuoteMarker(line.text) + (line.lineEnding || fallback))
35
31
  .join('');
36
- const body = splitLines(convertGithubAlerts(stripped).converted);
37
- // Fence lengthened past any colon run in the body, which would otherwise read as the
38
- // container's own closer once this output is written into the document.
32
+ const body = splitLines(convertAlerts(stripped, fallback).converted);
33
+ // The fence runs longer than any colon run in the body, which would otherwise read as
34
+ // this container's own closer once the output is written into the document.
39
35
  const colons = ':'.repeat(escalatedColonCount(body.map((line) => line.text).join('\n'), CANONICAL_COLONS));
40
36
  let out = `${colons}${name}${source[0].lineEnding || fallback}`;
41
37
  for (let i = 0; i < body.length; i++)
@@ -44,14 +40,17 @@ function emitDirective(name, source) {
44
40
  }
45
41
  /** GitHub honors `[!TYPE]` only on the blockquote's first line; everything after,
46
42
  * lazy-continuation lines and later literal markers alike, is body. */
47
- export function convertAlertBlockquoteRaw(raw) {
43
+ export function convertAlertBlockquoteRaw(raw, ending) {
48
44
  const lines = splitLines(raw);
49
45
  if (lines.length === 0)
50
46
  return null;
51
47
  const typed = matchAlertMarker(lines[0].text);
52
- return typed ? emitDirective(typed.toLowerCase(), lines) : null;
48
+ return typed ? emitDirective(typed.toLowerCase(), lines, ending) : null;
53
49
  }
54
50
  export function convertGithubAlerts(text) {
51
+ return convertAlerts(text, firstLineEnding(text) ?? '\n');
52
+ }
53
+ function convertAlerts(text, ending) {
55
54
  const lines = splitLines(text);
56
55
  let converted = '';
57
56
  let changed = false;
@@ -60,10 +59,10 @@ export function convertGithubAlerts(text) {
60
59
  const typed = matchAlertMarker(lines[i].text);
61
60
  if (typed && startsBlockquote(lines, i)) {
62
61
  const { nextIndex } = blockquoteExtent(lines, i, lines.length);
63
- // A marker line always opens a quote, so the extent claims at least this line;
64
- // floored anyway because a loosened indent cap would hang this loop.
62
+ // A marker line always opens a quote, so the extent covers at least this line;
63
+ // checked anyway because a loosened indent cap would hang this loop.
65
64
  if (nextIndex > i) {
66
- converted += emitDirective(typed.toLowerCase(), lines.slice(i, nextIndex));
65
+ converted += emitDirective(typed.toLowerCase(), lines.slice(i, nextIndex), ending);
67
66
  changed = true;
68
67
  i = nextIndex;
69
68
  continue;
@@ -1,12 +1,10 @@
1
1
  /**
2
- * Native GitHub alerts as a strip container in the blockquote mold, bytes kept and
3
- * never rewritten to `:::note`. The marker lives only in the container's raw +
4
- * metadata, so `strip(raw)` equals the serialized children. A separate kind rather
5
- * than a directive-admonition variant, so kind stability and rebuildRaw stay
6
- * unambiguous per kind (the ATX/setext heading precedent).
2
+ * Native GitHub alerts as a strip container shaped like a blockquote: the source bytes are
3
+ * kept, never rewritten to `:::note`. The marker lives only in the container's raw and
4
+ * metadata, so `strip(raw)` equals the serialized children. Its own kind rather than a
5
+ * variant of the directive admonition, so kind stability and rebuildRaw stay unambiguous.
7
6
  */
8
7
  import { type CstNode } from '../../plugin';
9
- /** Splitting the body on `\n` keeps a `\r` at each segment's tail, so CRLF rides through;
10
- * the marker's own ending is read off the current raw. */
8
+ /** Every body line keeps its own ending; the marker line keeps the one the current raw gives it. */
11
9
  export declare function rebuildGithubAlertRaw(node: CstNode): void;
12
10
  export declare function registerGithubAlert(): void;