@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
@@ -35,8 +35,11 @@ export interface ThematicBreakMetadata {
35
35
  marker: string;
36
36
  }
37
37
  export interface LinkReferenceDefinitionMetadata {
38
+ /** The label's text, unnormalized; a label spanning lines keeps its breaks as `\n`. */
38
39
  label: string;
40
+ /** Escapes resolved and percent-encoded, the value an inline link's `url` holds. */
39
41
  url?: string;
42
+ /** Escapes resolved, the value an inline link's `title` holds. */
40
43
  title?: string;
41
44
  }
42
45
  export type TableAlignment = 'none' | 'left' | 'center' | 'right';
@@ -46,6 +49,9 @@ export interface TableMetadata {
46
49
  }
47
50
  export interface TableRowMetadata {
48
51
  isHeader: boolean;
52
+ /** A body row's cells past the header's count, as written: GFM renders none of them, and the
53
+ * row's rebuild writes them back after its rendered cells. Absent when there are none. */
54
+ surplusCells?: readonly string[];
49
55
  }
50
56
  export interface BlockquoteMetadata {
51
57
  quoteDepth: number;
@@ -73,18 +79,12 @@ export interface BlockMetadataByKind {
73
79
  list: ListMetadata;
74
80
  listItem: ListItemMetadata;
75
81
  }
76
- /**
77
- * The one sanctioned metadata cast, for contexts a narrowed `BuiltinCstNode` arm cannot reach:
78
- * a generic `K`, or a full `CstNode` whose branded plugin arm blocks `kind` narrowing. Prefer
79
- * reading `node.metadata` off a narrowed arm. Pass the kind you have already established.
80
- */
82
+ /** The one allowed metadata cast, for a generic `K` or a full `CstNode` that cannot narrow; prefer
83
+ * a narrowed node's `node.metadata`. Pass the kind you have already established. */
81
84
  export declare function metadataOf<K extends keyof BlockMetadataByKind>(node: CstNode, kind: K): BlockMetadataByKind[K];
82
85
  export declare function metadataOf<K extends keyof BlockMetadataByKind>(node: NodeView, kind: K): BytesView<BlockMetadataByKind[K]>;
83
- /**
84
- * `BlockMetadata` is closed over the built-ins, so bridging a plugin's shape needs a cast and
85
- * this pair is the one place it lives. Keep the stored shape primitive-valued: the one-level
86
- * undo clone (G1.6) shallow-copies metadata.
87
- */
86
+ /** The one cast bridging a plugin's shape into the built-in `BlockMetadata`. Keep the shape
87
+ * primitive-valued: undo's one-level clone shallow-copies metadata (G1.6). */
88
88
  export declare function setPluginMetadata<T>(node: CstNode, data: T): void;
89
89
  export declare function getPluginMetadata<T>(node: NodeView): T | undefined;
90
90
  /**
@@ -99,8 +99,8 @@ interface BlockNodeBase {
99
99
  ownerEpoch?: number;
100
100
  }
101
101
  /**
102
- * G1.5 forbids `children` and the container structural fields on non-containers, so the arms pin
103
- * them `undefined` and the union rejects a leaf that grew a child at the type level.
102
+ * A leaf never has `children` or the container fields (G1.5), so the leaf members type them
103
+ * `undefined` and the union rejects a leaf that grew a child at compile time.
104
104
  */
105
105
  interface LeafBlockNodeBase extends BlockNodeBase {
106
106
  children?: undefined;
@@ -109,11 +109,8 @@ interface LeafBlockNodeBase extends BlockNodeBase {
109
109
  childIds?: undefined;
110
110
  childSpans?: undefined;
111
111
  }
112
- /**
113
- * G1.5 is one-directional (a container may be transiently childless mid-edit), so every
114
- * structural field stays optional. `childIds` mirrors `children` for keyed rendering;
115
- * `childSpans` records where each child's bytes sit in `raw` (`schema/child-spans.ts`).
116
- */
112
+ /** A container may be briefly childless mid-edit (G1.5), so every structural field stays optional;
113
+ * `childSpans` records where each child's bytes sit in `raw`. */
117
114
  interface ContainerBlockNodeBase extends BlockNodeBase {
118
115
  children?: CstNode[];
119
116
  innerPrefix?: string;
@@ -182,9 +179,9 @@ export interface TableRowNode extends ContainerBlockNodeBase {
182
179
  metadata: TableRowMetadata;
183
180
  }
184
181
  /**
185
- * A branded-string kind, so this arm is NOT discriminable by `switch (node.kind)`: narrow past
186
- * it with `isBuiltinBlockNode` first. A plugin block may be a leaf or a container, so the
187
- * structural fields stay optional.
182
+ * A branded-string kind, so `switch (node.kind)` cannot narrow this member: narrow past it with
183
+ * `isBuiltinBlockNode` first. A plugin block may be a leaf or a container, so the structural
184
+ * fields stay optional.
188
185
  */
189
186
  export interface PluginBlockNode extends BlockNodeBase {
190
187
  kind: PluginBlockKind;
@@ -198,24 +195,19 @@ export interface PluginBlockNode extends BlockNodeBase {
198
195
  /** A genuine discriminated union: `switch (node.kind)` narrows `node.metadata` with no cast. */
199
196
  export type BuiltinCstNode = ParagraphNode | HeadingNode | SetextHeadingNode | FencedCodeNode | ThematicBreakNode | IndentedCodeNode | HtmlBlockNode | LinkReferenceDefinitionNode | TableCellNode | UnrecognizedNode | BlockquoteNode | ListNode | ListItemNode | TableNode | TableRowNode;
200
197
  /**
201
- * The open `PluginBlockNode` arm does not discriminate, so full-union `kind` checks do not
202
- * narrow: reach the discriminated world through `isBuiltinBlockNode`. Common fields (`raw`,
203
- * `leadingTrivia`, `kind`) project across every arm and read without narrowing.
198
+ * The open `PluginBlockNode` member has no literal kind, so `kind` checks on the full union do
199
+ * not narrow: go through `isBuiltinBlockNode` first. Common fields (`raw`, `leadingTrivia`,
200
+ * `kind`) exist on every member and read without narrowing.
204
201
  */
205
202
  export type CstNode = BuiltinCstNode | PluginBlockNode;
206
203
  /**
207
- * The door to the `switch (node.kind)` narrowing the branded plugin arm blocks. Mirrored for
208
- * views, so a reader that narrows a `NodeView` reads each arm's metadata with no `metadataOf`.
204
+ * The one way into the `switch (node.kind)` narrowing the plugin member blocks. Overloaded for
205
+ * views, so code that narrows a `NodeView` reads each member's metadata with no `metadataOf`.
209
206
  */
210
207
  export declare function isBuiltinBlockNode(node: CstNode): node is BuiltinCstNode;
211
208
  export declare function isBuiltinBlockNode(node: NodeView): node is BytesView<BuiltinCstNode>;
212
- /**
213
- * The ONE place the runtime-kind construction cast lives. A construction door, not the
214
- * view-to-mutable strip door: the spread returns a FRESH object, so passing a view mints a copy
215
- * instead of stripping its readonly-ness, which is why G4.13 sanctions this file. Fields are not
216
- * checked against the arm, so a metadata-less node of a metadata-carrying kind is mintable (a
217
- * transient re-parse probe does this) and its `metadata` must not be read before re-parse.
218
- */
209
+ /** The one cast from a runtime kind string to `CstNode`; the spread copies, so a view stays read-only
210
+ * (G4.13). Metadata isn't checked: a node made without it must not be read before its re-parse. */
219
211
  export declare function makeBlockNode(fields: {
220
212
  kind: AnyBlockKind;
221
213
  leadingTrivia: string;
@@ -232,8 +224,8 @@ export interface Document {
232
224
  prefix: string;
233
225
  children: CstNode[];
234
226
  suffix: string;
235
- /** The root's parallel id array while a caller keeps one here — the editor's own live ids
236
- * are editor state, but the splice doors maintain whatever array the parent carries. */
227
+ /** The root's parallel id array, when a caller keeps one here: the editor's own live ids are
228
+ * editor state, but the splice operations maintain whatever array the parent carries. */
237
229
  childIds?: string[];
238
230
  }
239
231
  export type InlineNodeKind = 'text' | 'emphasis' | 'strong' | 'strikethrough' | 'inlineCode' | 'link' | 'image' | 'autolink' | 'hardLineBreak' | 'escape' | 'entityReference' | 'unresolvedReference' | 'rawHtml';
@@ -245,7 +237,8 @@ export type PluginInlineKind = string & {
245
237
  export type AnyInlineKind = InlineNodeKind | PluginInlineKind;
246
238
  export declare const INLINE_KIND_TABLE: Record<InlineNodeKind, true>;
247
239
  export declare function isBuiltinInlineKind(kind: AnyInlineKind): kind is InlineNodeKind;
248
- /** start/end are byte offsets into the parent block's raw, including markers. */
240
+ /** start/end are byte offsets into the parent block's raw, including markers. Optional keys are
241
+ * omitted, never set to `undefined`, so a serializer can tell "no title" from "empty title". */
249
242
  export interface InlineNode {
250
243
  kind: AnyInlineKind;
251
244
  start: number;
@@ -264,15 +257,11 @@ export interface InlineNode {
264
257
  /** Discriminator for `unresolvedReference` nodes: which form they would have been. */
265
258
  refKind?: 'link' | 'image';
266
259
  /**
267
- * Stamped by the scan when a plugin rung claimed these bytes, derived per scan and never
260
+ * Set by the scan when a plugin handler claimed these bytes, derived per scan and never
268
261
  * persisted. Write paths read it to re-serialize in the claiming syntax, not built-in GFM.
269
262
  */
270
263
  syntaxClaim?: InlineSyntaxClaim;
271
264
  }
272
- /**
273
- * Optional keys are omitted rather than set to `undefined`, so a serializer can tell "no title"
274
- * from "empty title" and reproduce a node that never carried one.
275
- */
276
265
  /**
277
266
  * How an image sits inside its `|WxH` frame: the image point (`x`%, `y`%) pinned to the same
278
267
  * point of the frame, at `z` times the smallest scale that fills it. `{50, 50, 1}` is a plain
@@ -298,13 +287,14 @@ export interface ImageFields {
298
287
  label?: string;
299
288
  }
300
289
  /**
301
- * Re-serializes an image an inline rung minted over its own bytes: `source` in, its replacement
302
- * in the rung's syntax out, or `null` to decline the edit rather than rewrite the bytes as GFM.
290
+ * Re-serializes an image a plugin handler created over its own bytes: `source` in, its
291
+ * replacement in the plugin's syntax out, or `null` to decline the edit rather than rewrite the
292
+ * bytes as GFM.
303
293
  */
304
294
  export type ImageSyntaxRewriter = (source: string, fields: ImageFields) => string | null;
305
- /** What the scan records on a node an inline rung claimed. */
295
+ /** What the scan records on a node a plugin inline handler claimed. */
306
296
  export interface InlineSyntaxClaim {
307
- /** The claiming rung's prefix: its bare trigger, or its multi-char prefix. */
297
+ /** The claiming handler's prefix: its bare trigger, or its multi-character prefix. */
308
298
  prefix: string;
309
299
  rewriteImage?: ImageSyntaxRewriter;
310
300
  }
@@ -28,11 +28,8 @@ export function metadataOf(node, kind) {
28
28
  void kind;
29
29
  return node.metadata;
30
30
  }
31
- /**
32
- * `BlockMetadata` is closed over the built-ins, so bridging a plugin's shape needs a cast and
33
- * this pair is the one place it lives. Keep the stored shape primitive-valued: the one-level
34
- * undo clone (G1.6) shallow-copies metadata.
35
- */
31
+ /** The one cast bridging a plugin's shape into the built-in `BlockMetadata`. Keep the shape
32
+ * primitive-valued: undo's one-level clone shallow-copies metadata (G1.6). */
36
33
  export function setPluginMetadata(node, data) {
37
34
  node.metadata = data;
38
35
  }
@@ -53,13 +50,8 @@ export function headingLevel(node) {
53
50
  export function isBuiltinBlockNode(node) {
54
51
  return isBuiltinBlockKind(node.kind);
55
52
  }
56
- /**
57
- * The ONE place the runtime-kind construction cast lives. A construction door, not the
58
- * view-to-mutable strip door: the spread returns a FRESH object, so passing a view mints a copy
59
- * instead of stripping its readonly-ness, which is why G4.13 sanctions this file. Fields are not
60
- * checked against the arm, so a metadata-less node of a metadata-carrying kind is mintable (a
61
- * transient re-parse probe does this) and its `metadata` must not be read before re-parse.
62
- */
53
+ /** The one cast from a runtime kind string to `CstNode`; the spread copies, so a view stays read-only
54
+ * (G4.13). Metadata isn't checked: a node made without it must not be read before its re-parse. */
63
55
  export function makeBlockNode(fields) {
64
56
  return { ...fields };
65
57
  }
@@ -3,66 +3,59 @@
3
3
  * Per-kind parsers live in parsers/; this file holds dispatch and shared utilities only.
4
4
  */
5
5
  import type { CstNode, Document } from './nodes';
6
- import { type ParsedLine } from './lines';
6
+ import { isBlankLine, type ParsedLine } from './lines';
7
7
  import { type GrammarView } from '../schema/block-openers';
8
8
  /**
9
- * Container-nesting cap: past it the remaining prefix parses as paragraph content instead of
10
- * recursing, so pathological input degrades rather than overflowing the stack. Sits well under
11
- * the empirical crash point, with headroom for the tree walks that recurse to the same depth.
12
- * Byte-preserving, since only a top-level node's `raw` serializes and that is fixed first.
9
+ * Container-nesting cap: past it the rest parses as paragraph text instead of recursing, so deep
10
+ * input cannot overflow the stack. Bytes are unaffected: the top-level `raw` is fixed first.
13
11
  */
14
12
  export declare const MAX_NESTING_DEPTH = 512;
15
13
  /** Whether `source` is a whole document or one block's bytes read standalone. */
16
14
  export type ParseScope = 'document' | 'fragment';
17
- /**
18
- * Parse GFM to a lossless CST. `opts.grammar` is the per-instance grammar view, defaulting to
19
- * the global openers. It filters only the TOP-LEVEL opener dispatch: nested container reparses
20
- * and the paragraph-interrupt scan read the global grammar, the documented enablement boundary,
21
- * so a top-level disabled kind is skipped and a nested one is not. `opts.scope` reaches openers
22
- * as `ctx.isDocumentParse`; it defaults to `'document'`, so whole-source callers need nothing.
23
- */
15
+ /** Parse GFM to a lossless CST, with every installed plugin's openers and `'document'` scope by
16
+ * default. Code inside the editor calls {@link readBlocks}, which takes both. */
24
17
  export declare function parse(source: string, opts?: {
25
18
  grammar?: GrammarView;
26
19
  scope?: ParseScope;
27
20
  }): Document;
21
+ /** `parse` for code inside the editor: the grammar is the editor's, so it is never left out. */
22
+ export declare function readBlocks(source: string, read: {
23
+ grammar: GrammarView;
24
+ scope: ParseScope;
25
+ }): Document;
28
26
  interface ParseBlocksResult {
29
27
  children: CstNode[];
30
28
  suffix: string;
31
29
  }
32
30
  /**
33
- * The seam block-incremental parsing re-parses ranges through: a block-aligned window parses
34
- * identically to a full parse of the window's text. A window is a FRAGMENT unless its caller
35
- * says otherwise, so `parse` alone defaults to document scope. Blank-line rule
36
- * (`design/syntax-tree.md`): the first blank line of a run separates and folds into trivia;
37
- * every later one is an empty paragraph carrying its own bytes.
31
+ * A task item's body read on its own, as a write into the item's first paragraph reads it: the
32
+ * line after the task marker is paragraph text (GFM task lists), and later lines parse as blocks.
38
33
  */
39
- export declare function parseBlocks(lines: ParsedLine[], start: number, end: number, grammar?: GrammarView, depth?: number, isDocumentParse?: boolean): ParseBlocksResult;
34
+ export declare function parseTaskItemBody(source: string, grammar: GrammarView): Document;
35
+ /** Parse `lines[start, end)` into blocks; a block-aligned window parses as its text would whole
36
+ * (`docs/design/syntax-tree.md` § Blank lines). `firstLineIsParagraph` forces paragraph text. */
37
+ export declare function parseBlocks(lines: ParsedLine[], start: number, end: number, read: {
38
+ grammar: GrammarView;
39
+ scope: ParseScope;
40
+ depth?: number;
41
+ firstLineIsParagraph?: boolean;
42
+ }): ParseBlocksResult;
40
43
  export interface ContainerBodyWrap {
41
- /** A chrome line of the container's own sits above the body (`:::note`, `<summary>`). */
44
+ /** A fence line of the container's own sits above the body (`:::note`, `<summary>`). */
42
45
  afterOpenerLine?: boolean;
43
- /** A chrome line of the container's own sits below the body (`:::`, `</details>`). */
46
+ /** A fence line of the container's own sits below the body (`:::`, `</details>`). */
44
47
  beforeCloserLine?: boolean;
45
48
  }
46
- /**
47
- * Parse a container body between the container's own chrome lines; a body starting at the
48
- * container's own first line (blockquote, list item) has no wrap and uses `parse`. A blank line
49
- * against a chrome line separates as it does between blocks, landing in `prefix`/`suffix` while
50
- * the rest of its run materializes as body content; one with no body on its far side separated
51
- * nothing and stays content. `opts.scope` is required: a new entry cannot recover it (G4.27).
52
- */
49
+ /** Parse a body between the container's own fence lines (`docs/design/syntax-tree.md` § Blank
50
+ * lines); a body on the container's first line uses `parse`. `opts.scope` is required (G4.27). */
53
51
  export declare function parseContainerBody(bodyText: string, wrap: ContainerBodyWrap, opts: {
54
52
  scope: ParseScope;
55
53
  depth?: number;
54
+ grammar: GrammarView;
56
55
  }): Document;
57
- export declare function isBlankLine(text: string): boolean;
58
- /**
59
- * Nothing but blank lines — what the blank-line rule mints a block from. Blankness is the
60
- * parser's (GFM §2.1), never `String.trim()`: a non-breaking space is content.
61
- */
62
- export declare function isBlankSource(source: string): boolean;
56
+ export { isBlankLine };
63
57
  export declare function isBlankParagraph(node: {
64
58
  kind: string;
65
59
  raw: string;
66
60
  }): boolean;
67
61
  export declare function joinRaw(lines: ParsedLine[], startIndex: number, endIndex: number): string;
68
- export {};
@@ -2,8 +2,8 @@
2
2
  * Single-pass GFM block parser, producing a CST where serialize(parse(source)) === source.
3
3
  * Per-kind parsers live in parsers/; this file holds dispatch and shared utilities only.
4
4
  */
5
- import { DEV } from 'esm-env';
6
- import { splitLines } from './lines';
5
+ import { isDevChecks } from '../env';
6
+ import { isBlankLine, isBlankText, splitLines } from './lines';
7
7
  import { perfEnabled, recordParse } from '../perf/instruments';
8
8
  import { defaultGrammarView } from '../schema/block-openers';
9
9
  import { assertInvariant } from '../assert';
@@ -11,43 +11,53 @@ import { parseParagraph } from './parsers/paragraph';
11
11
  import { registerBuiltInOpeners } from './parsers/built-in-openers';
12
12
  import { registerTableCompleter } from './parsers/table-completion';
13
13
  registerBuiltInOpeners();
14
- // The Enter completer is the typed-entry twin of the table grammar, so it loads here rather
15
- // than behind a side-effect import the production build tree-shakes away.
14
+ // The Enter completer is the typing-side counterpart of the table grammar, so it loads here
15
+ // rather than behind a side-effect import the production build tree-shakes away.
16
16
  registerTableCompleter();
17
17
  /**
18
- * Container-nesting cap: past it the remaining prefix parses as paragraph content instead of
19
- * recursing, so pathological input degrades rather than overflowing the stack. Sits well under
20
- * the empirical crash point, with headroom for the tree walks that recurse to the same depth.
21
- * Byte-preserving, since only a top-level node's `raw` serializes and that is fixed first.
18
+ * Container-nesting cap: past it the rest parses as paragraph text instead of recursing, so deep
19
+ * input cannot overflow the stack. Bytes are unaffected: the top-level `raw` is fixed first.
22
20
  */
23
21
  export const MAX_NESTING_DEPTH = 512;
24
- /**
25
- * Parse GFM to a lossless CST. `opts.grammar` is the per-instance grammar view, defaulting to
26
- * the global openers. It filters only the TOP-LEVEL opener dispatch: nested container reparses
27
- * and the paragraph-interrupt scan read the global grammar, the documented enablement boundary,
28
- * so a top-level disabled kind is skipped and a nested one is not. `opts.scope` reaches openers
29
- * as `ctx.isDocumentParse`; it defaults to `'document'`, so whole-source callers need nothing.
30
- */
22
+ /** Parse GFM to a lossless CST, with every installed plugin's openers and `'document'` scope by
23
+ * default. Code inside the editor calls {@link readBlocks}, which takes both. */
31
24
  export function parse(source, opts) {
25
+ return readBlocks(source, {
26
+ grammar: opts?.grammar ?? defaultGrammarView,
27
+ scope: opts?.scope ?? 'document'
28
+ });
29
+ }
30
+ /** `parse` for code inside the editor: the grammar is the editor's, so it is never left out. */
31
+ export function readBlocks(source, read) {
32
32
  const t0 = perfEnabled() ? performance.now() : 0;
33
33
  const lines = splitLines(source);
34
- const result = parseBlocks(lines, 0, lines.length, opts?.grammar ?? defaultGrammarView, 0, (opts?.scope ?? 'document') === 'document');
34
+ const result = parseBlocks(lines, 0, lines.length, read);
35
35
  if (perfEnabled())
36
36
  recordParse(performance.now() - t0, result.children.length);
37
37
  return { kind: 'document', prefix: '', children: result.children, suffix: result.suffix };
38
38
  }
39
39
  /**
40
- * The seam block-incremental parsing re-parses ranges through: a block-aligned window parses
41
- * identically to a full parse of the window's text. A window is a FRAGMENT unless its caller
42
- * says otherwise, so `parse` alone defaults to document scope. Blank-line rule
43
- * (`design/syntax-tree.md`): the first blank line of a run separates and folds into trivia;
44
- * every later one is an empty paragraph carrying its own bytes.
40
+ * A task item's body read on its own, as a write into the item's first paragraph reads it: the
41
+ * line after the task marker is paragraph text (GFM task lists), and later lines parse as blocks.
45
42
  */
46
- export function parseBlocks(lines, start, end, grammar = defaultGrammarView, depth = 0, isDocumentParse = false) {
43
+ export function parseTaskItemBody(source, grammar) {
44
+ const lines = splitLines(source);
45
+ const result = parseBlocks(lines, 0, lines.length, {
46
+ grammar,
47
+ scope: 'fragment',
48
+ firstLineIsParagraph: true
49
+ });
50
+ return { kind: 'document', prefix: '', children: result.children, suffix: result.suffix };
51
+ }
52
+ /** Parse `lines[start, end)` into blocks; a block-aligned window parses as its text would whole
53
+ * (`docs/design/syntax-tree.md` § Blank lines). `firstLineIsParagraph` forces paragraph text. */
54
+ export function parseBlocks(lines, start, end, read) {
55
+ const { grammar, depth = 0, firstLineIsParagraph = false } = read;
56
+ const isDocumentParse = read.scope === 'document';
47
57
  const children = [];
48
58
  let pendingTrivia = '';
49
- // Nothing precedes the window's first block, so its separator slot opens already spent —
50
- // which is what makes a leading run materialize in full.
59
+ // Nothing precedes the window's first block, so its separator is already spent, which is
60
+ // what makes a leading run of blank lines materialize in full.
51
61
  let separatorSpent = true;
52
62
  let index = start;
53
63
  while (index < end) {
@@ -68,7 +78,7 @@ export function parseBlocks(lines, start, end, grammar = defaultGrammarView, dep
68
78
  index++;
69
79
  continue;
70
80
  }
71
- // Minted fresh per block, so an opener that retains the context is never re-stamped.
81
+ // Created fresh per block, so an opener that keeps the context never sees it rewritten.
72
82
  const ctx = {
73
83
  lines,
74
84
  index,
@@ -79,7 +89,9 @@ export function parseBlocks(lines, start, end, grammar = defaultGrammarView, dep
79
89
  grammar,
80
90
  depth
81
91
  };
82
- const { node, consumed } = parseNextBlock(ctx);
92
+ const { node, consumed } = firstLineIsParagraph && index === start
93
+ ? parseParagraph(lines, index, end, pendingTrivia, grammar)
94
+ : parseNextBlock(ctx);
83
95
  children.push(node);
84
96
  pendingTrivia = '';
85
97
  separatorSpent = false;
@@ -87,13 +99,8 @@ export function parseBlocks(lines, start, end, grammar = defaultGrammarView, dep
87
99
  }
88
100
  return { children, suffix: pendingTrivia };
89
101
  }
90
- /**
91
- * Parse a container body between the container's own chrome lines; a body starting at the
92
- * container's own first line (blockquote, list item) has no wrap and uses `parse`. A blank line
93
- * against a chrome line separates as it does between blocks, landing in `prefix`/`suffix` while
94
- * the rest of its run materializes as body content; one with no body on its far side separated
95
- * nothing and stays content. `opts.scope` is required: a new entry cannot recover it (G4.27).
96
- */
102
+ /** Parse a body between the container's own fence lines (`docs/design/syntax-tree.md` § Blank
103
+ * lines); a body on the container's first line uses `parse`. `opts.scope` is required (G4.27). */
97
104
  export function parseContainerBody(bodyText, wrap, opts) {
98
105
  const lines = splitLines(bodyText);
99
106
  let first = 0;
@@ -108,14 +115,14 @@ export function parseContainerBody(bodyText, wrap, opts) {
108
115
  last--;
109
116
  suffix = lines[last].raw;
110
117
  }
111
- const inner = parseBlocks(lines, first, last, defaultGrammarView, opts.depth ?? 0, opts.scope === 'document');
118
+ const inner = parseBlocks(lines, first, last, opts);
112
119
  return { kind: 'document', prefix, children: inner.children, suffix: inner.suffix + suffix };
113
120
  }
114
121
  // ── Dispatch ────────────────────────────────────────────────────────────
115
122
  function parseNextBlock(ctx) {
116
- // At the cap everything folds into a paragraph, covering the bytes without another frame.
123
+ // At the cap everything becomes a paragraph, covering the bytes without another stack frame.
117
124
  if (ctx.depth >= MAX_NESTING_DEPTH) {
118
- return parseParagraph(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia);
125
+ return parseParagraph(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia, ctx.grammar);
119
126
  }
120
127
  for (const opener of ctx.grammar.orderedOpeners()) {
121
128
  const result = opener.tryOpen(ctx);
@@ -125,31 +132,25 @@ function parseNextBlock(ctx) {
125
132
  reportNonAdvancingOpener(ctx, result);
126
133
  continue;
127
134
  }
128
- if (DEV)
135
+ if (isDevChecks())
129
136
  assertOpenerRawMatches(ctx, result);
130
137
  return result;
131
138
  }
132
139
  // Paragraph is the total fallback; it also detects setext headings and tables.
133
- return parseParagraph(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia);
140
+ return parseParagraph(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia, ctx.grammar);
134
141
  }
135
- /**
136
- * The `[invariant:...]` fire behind the call site's decline. An opener that consumed nothing is
137
- * declined in every build, not just DEV: returning it would leave `index` put and spin the parse
138
- * loop forever, and declining is always safe because the paragraph fallback covers the line.
139
- */
142
+ /** The dev warning behind the call site's decline. An opener that consumed nothing is declined in
143
+ * every build, or it would spin the parse loop; the paragraph fallback covers the line. */
140
144
  function reportNonAdvancingOpener(ctx, result) {
141
145
  assertInvariant('opener-advance', () => ({
142
146
  code: 'opener-did-not-advance',
143
- message: `block opener for kind "${result.node.kind}" claimed no line at ${ctx.index} and was ` +
144
- `declined — an opener must consume at least one line (return consumed >= 1)`,
147
+ message: `block opener for kind "${result.node.kind}" claimed no line at ${ctx.index} and was declined:` +
148
+ ` an opener must consume at least one line (return consumed >= 1)`,
145
149
  detail: result.node.kind
146
150
  }));
147
151
  }
148
- /**
149
- * DEV-only trust check on a plugin opener's `raw`, at the one site the parser consumes it:
150
- * bytes that do not match the consumed lines silently break the round-trip, since serialize
151
- * reads `raw` alone. Tree-shaken in production.
152
- */
152
+ /** Dev-only check that a plugin opener's `raw` matches the lines it consumed: serialize reads `raw`
153
+ * alone, so a mismatch silently breaks the round-trip. */
153
154
  function assertOpenerRawMatches(ctx, result) {
154
155
  assertInvariant('opener-raw', () => result.node.raw === joinRaw(ctx.lines, ctx.index, ctx.index + result.consumed)
155
156
  ? null
@@ -161,24 +162,9 @@ function assertOpenerRawMatches(ctx, result) {
161
162
  });
162
163
  }
163
164
  // ── Shared utilities ────────────────────────────────────────────────────
164
- /**
165
- * GFM §2.1: a blank line holds nothing but spaces and tabs. Deliberately not `String.trim()`,
166
- * which admits all Unicode whitespace: a non-breaking space is content, and a line holding one
167
- * continues its block.
168
- */
169
- const NON_BLANK_CHAR = /[^ \t]/;
170
- export function isBlankLine(text) {
171
- return !NON_BLANK_CHAR.test(text);
172
- }
173
- /**
174
- * Nothing but blank lines — what the blank-line rule mints a block from. Blankness is the
175
- * parser's (GFM §2.1), never `String.trim()`: a non-breaking space is content.
176
- */
177
- export function isBlankSource(source) {
178
- return splitLines(source).every((line) => isBlankLine(line.text));
179
- }
165
+ export { isBlankLine };
180
166
  export function isBlankParagraph(node) {
181
- return node.kind === 'paragraph' && isBlankSource(node.raw);
167
+ return node.kind === 'paragraph' && isBlankText(node.raw);
182
168
  }
183
169
  export function joinRaw(lines, startIndex, endIndex) {
184
170
  let result = '';
@@ -3,15 +3,12 @@
3
3
  * approximated per line (non-blank, not a block opener), not tracked as parser state.
4
4
  */
5
5
  import { type ParsedLine } from '../lines';
6
- import { type BlockOpenerResult } from '../../schema/block-openers';
6
+ import { type BlockOpenerResult, type GrammarView } from '../../schema/block-openers';
7
7
  export declare function matchBlockquote(text: string): boolean;
8
- /**
9
- * Byte-exact `raw` of a blockquote's extent (CommonMark §5.1 lazy continuation) plus the
10
- * index past it, no child decomposition: what a blockquote-shaped opener needs when it
11
- * decomposes its own body (`> [!NOTE]` alerts strip the marker line before parsing children).
12
- */
13
- export declare function blockquoteExtent(lines: ParsedLine[], startIndex: number, endIndex: number): {
8
+ /** Byte-exact `raw` of a blockquote's extent plus the index past it, with no child decomposition,
9
+ * for an opener that decomposes its own body (`> [!NOTE]`). The grammar defaults to every plugin. */
10
+ export declare function blockquoteExtent(lines: ParsedLine[], startIndex: number, endIndex: number, grammar?: GrammarView): {
14
11
  raw: string;
15
12
  nextIndex: number;
16
13
  };
17
- export declare function parseBlockquote(lines: ParsedLine[], startIndex: number, endIndex: number, leadingTrivia: string, depth?: number, isDocumentParse?: boolean): BlockOpenerResult;
14
+ export declare function parseBlockquote(lines: ParsedLine[], startIndex: number, endIndex: number, leadingTrivia: string, grammar: GrammarView, depth?: number, isDocumentParse?: boolean): BlockOpenerResult;
@@ -21,12 +21,9 @@ function wouldKeepParagraphOpen(strippedText) {
21
21
  return false;
22
22
  return true;
23
23
  }
24
- /**
25
- * Byte-exact `raw` of a blockquote's extent (CommonMark §5.1 lazy continuation) plus the
26
- * index past it, no child decomposition: what a blockquote-shaped opener needs when it
27
- * decomposes its own body (`> [!NOTE]` alerts strip the marker line before parsing children).
28
- */
29
- export function blockquoteExtent(lines, startIndex, endIndex) {
24
+ /** Byte-exact `raw` of a blockquote's extent plus the index past it, with no child decomposition,
25
+ * for an opener that decomposes its own body (`> [!NOTE]`). The grammar defaults to every plugin. */
26
+ export function blockquoteExtent(lines, startIndex, endIndex, grammar = defaultGrammarView) {
30
27
  let i = startIndex;
31
28
  let paragraphOpen = false;
32
29
  while (i < endIndex) {
@@ -39,7 +36,7 @@ export function blockquoteExtent(lines, startIndex, endIndex) {
39
36
  }
40
37
  if (paragraphOpen &&
41
38
  wouldKeepParagraphOpen(lineText) &&
42
- !lineStartsOuterBlock(lines[i], { paragraphOpen: true })) {
39
+ !lineStartsOuterBlock(lines[i], { paragraphOpen: true, grammar })) {
43
40
  i++;
44
41
  continue;
45
42
  }
@@ -47,11 +44,15 @@ export function blockquoteExtent(lines, startIndex, endIndex) {
47
44
  }
48
45
  return { raw: joinRaw(lines, startIndex, i), nextIndex: i };
49
46
  }
50
- export function parseBlockquote(lines, startIndex, endIndex, leadingTrivia, depth = 0, isDocumentParse = false) {
51
- const { raw, nextIndex: i } = blockquoteExtent(lines, startIndex, endIndex);
47
+ export function parseBlockquote(lines, startIndex, endIndex, leadingTrivia, grammar, depth = 0, isDocumentParse = false) {
48
+ const { raw, nextIndex: i } = blockquoteExtent(lines, startIndex, endIndex, grammar);
52
49
  // Lazy lines have no `> ` to strip; verbatim keeps the recursive parse seeing one paragraph.
53
50
  const strippedLines = remapStrippedLines(lines.slice(startIndex, i), (line) => matchBlockquote(line.text) ? stripBlockquotePrefix(line.text) : line.text);
54
- const inner = parseBlocks(strippedLines, 0, strippedLines.length, defaultGrammarView, depth + 1, isDocumentParse);
51
+ const inner = parseBlocks(strippedLines, 0, strippedLines.length, {
52
+ grammar,
53
+ scope: isDocumentParse ? 'document' : 'fragment',
54
+ depth: depth + 1
55
+ });
55
56
  const quotePrefix = lines[startIndex].text.match(/^ {0,3}(>[ \t]?)+/)[0];
56
57
  const quoteDepth = quotePrefix.match(/>/g).length;
57
58
  return {
@@ -1,8 +1,5 @@
1
1
  /**
2
- * Registers the built-in block openers. Lives beside the matchers because
3
- * schema/block-kind-descriptor.ts importing them would cycle (parsers/* import
4
- * parser.ts, which reads the opener registry). Called explicitly from core/parser.ts: the
5
- * `sideEffects` allowlist names dist paths, never the src specifier used here, so a bare
6
- * side-effect import would be droppable.
2
+ * Registers the built-in block openers. Called explicitly from `core/parser.ts`, since a bare
3
+ * side-effect import would be tree-shaken from the production build.
7
4
  */
8
5
  export declare function registerBuiltInOpeners(): void;
@@ -1,9 +1,6 @@
1
1
  /**
2
- * Registers the built-in block openers. Lives beside the matchers because
3
- * schema/block-kind-descriptor.ts importing them would cycle (parsers/* import
4
- * parser.ts, which reads the opener registry). Called explicitly from core/parser.ts: the
5
- * `sideEffects` allowlist names dist paths, never the src specifier used here, so a bare
6
- * side-effect import would be droppable.
2
+ * Registers the built-in block openers. Called explicitly from `core/parser.ts`, since a bare
3
+ * side-effect import would be tree-shaken from the production build.
7
4
  */
8
5
  import { registerBlockOpener } from '../../schema/block-openers';
9
6
  import { OPENER_PRIORITIES } from '../../schema/opener-priorities';
@@ -17,7 +14,7 @@ import { matchIndentedCode, parseIndentedCode } from './indented-code';
17
14
  import { matchHtmlBlock, parseHtmlBlock, canInterruptParagraph as htmlCanInterrupt } from './html-block';
18
15
  import { parseLinkReferenceDefinition } from './link-reference';
19
16
  // Idempotence guard, not a registry bypass: a dev-server re-eval resets it so
20
- // the register-once dev valve still replaces.
17
+ // the register-once dev path still replaces.
21
18
  let registered = false;
22
19
  export function registerBuiltInOpeners() {
23
20
  if (registered)
@@ -80,7 +77,7 @@ export function registerBuiltInOpeners() {
80
77
  tryOpen(ctx) {
81
78
  if (!matchBlockquote(ctx.line.text))
82
79
  return null;
83
- return parseBlockquote(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia, ctx.depth, ctx.isDocumentParse);
80
+ return parseBlockquote(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia, ctx.grammar, ctx.depth, ctx.isDocumentParse);
84
81
  },
85
82
  interruptsParagraph: matchBlockquote
86
83
  });
@@ -89,7 +86,7 @@ export function registerBuiltInOpeners() {
89
86
  tryOpen(ctx) {
90
87
  if (!matchListItem(ctx.line.text))
91
88
  return null;
92
- return parseList(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia, ctx.depth, ctx.isDocumentParse);
89
+ return parseList(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia, ctx.grammar, ctx.depth, ctx.isDocumentParse);
93
90
  },
94
91
  interruptsParagraph: listCanInterrupt
95
92
  });