@voithos-labs/aragonite 0.10.1

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 (900) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +365 -0
  3. package/THIRD-PARTY-NOTICES.md +102 -0
  4. package/dist/a11y-strings.d.ts +46 -0
  5. package/dist/a11y-strings.js +62 -0
  6. package/dist/action-contracts.d.ts +301 -0
  7. package/dist/action-contracts.js +5 -0
  8. package/dist/active-editor.d.ts +16 -0
  9. package/dist/active-editor.js +67 -0
  10. package/dist/ambient/ambient-cursor.d.ts +41 -0
  11. package/dist/ambient/ambient-cursor.js +120 -0
  12. package/dist/ambient/ambient-dom.d.ts +9 -0
  13. package/dist/ambient/ambient-dom.js +102 -0
  14. package/dist/assert.d.ts +6 -0
  15. package/dist/assert.js +17 -0
  16. package/dist/block-component.d.ts +274 -0
  17. package/dist/block-component.js +43 -0
  18. package/dist/block-id.d.ts +14 -0
  19. package/dist/block-id.js +34 -0
  20. package/dist/bounded-memo.d.ts +14 -0
  21. package/dist/bounded-memo.js +32 -0
  22. package/dist/components/BlockDragHandle.svelte +66 -0
  23. package/dist/components/BlockDragHandle.svelte.d.ts +18 -0
  24. package/dist/components/BlockHost.svelte +328 -0
  25. package/dist/components/BlockHost.svelte.d.ts +15 -0
  26. package/dist/components/BlockList.svelte +114 -0
  27. package/dist/components/BlockList.svelte.d.ts +16 -0
  28. package/dist/components/DecorationOverlay.svelte +156 -0
  29. package/dist/components/DecorationOverlay.svelte.d.ts +14 -0
  30. package/dist/components/Editor.svelte +1849 -0
  31. package/dist/components/Editor.svelte.d.ts +49 -0
  32. package/dist/components/GapCaret.svelte +226 -0
  33. package/dist/components/GapCaret.svelte.d.ts +9 -0
  34. package/dist/components/SearchBar.svelte +243 -0
  35. package/dist/components/SearchBar.svelte.d.ts +7 -0
  36. package/dist/components/SelectionOverlay.svelte +171 -0
  37. package/dist/components/SelectionOverlay.svelte.d.ts +14 -0
  38. package/dist/components/block-content-selector.d.ts +12 -0
  39. package/dist/components/block-content-selector.js +12 -0
  40. package/dist/components/blocks/BlockquoteBlock.svelte +32 -0
  41. package/dist/components/blocks/BlockquoteBlock.svelte.d.ts +11 -0
  42. package/dist/components/blocks/ThematicBreakBlock.svelte +156 -0
  43. package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +17 -0
  44. package/dist/components/blocks/code/CodeBlock.svelte +726 -0
  45. package/dist/components/blocks/code/CodeBlock.svelte.d.ts +23 -0
  46. package/dist/components/blocks/code/CodeLanguageChip.svelte +127 -0
  47. package/dist/components/blocks/code/CodeLanguageChip.svelte.d.ts +14 -0
  48. package/dist/components/blocks/code/code-beforeinput.d.ts +30 -0
  49. package/dist/components/blocks/code/code-beforeinput.js +40 -0
  50. package/dist/components/blocks/code/code-bootstrap.d.ts +8 -0
  51. package/dist/components/blocks/code/code-bootstrap.js +54 -0
  52. package/dist/components/blocks/code/code-editing.d.ts +28 -0
  53. package/dist/components/blocks/code/code-editing.js +79 -0
  54. package/dist/components/blocks/code/code-enter.d.ts +22 -0
  55. package/dist/components/blocks/code/code-enter.js +19 -0
  56. package/dist/components/blocks/code/code-fence-boundary.d.ts +77 -0
  57. package/dist/components/blocks/code/code-fence-boundary.js +169 -0
  58. package/dist/components/blocks/code/code-fence-exit.d.ts +24 -0
  59. package/dist/components/blocks/code/code-fence-exit.js +36 -0
  60. package/dist/components/blocks/code/code-indent.d.ts +14 -0
  61. package/dist/components/blocks/code/code-indent.js +87 -0
  62. package/dist/components/blocks/code/code-languages.d.ts +15 -0
  63. package/dist/components/blocks/code/code-languages.js +30 -0
  64. package/dist/components/blocks/code/code-paste-surface.d.ts +6 -0
  65. package/dist/components/blocks/code/code-paste-surface.js +29 -0
  66. package/dist/components/blocks/code/code-paste.d.ts +24 -0
  67. package/dist/components/blocks/code/code-paste.js +21 -0
  68. package/dist/components/blocks/code/code-renderer.d.ts +18 -0
  69. package/dist/components/blocks/code/code-renderer.js +249 -0
  70. package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +51 -0
  71. package/dist/components/blocks/directive/DirectiveContainerBlock.svelte.d.ts +11 -0
  72. package/dist/components/blocks/directive/activate-directives.d.ts +7 -0
  73. package/dist/components/blocks/directive/activate-directives.js +23 -0
  74. package/dist/components/blocks/editable-leaf.d.ts +126 -0
  75. package/dist/components/blocks/editable-leaf.js +410 -0
  76. package/dist/components/blocks/editable-surface.d.ts +209 -0
  77. package/dist/components/blocks/editable-surface.js +331 -0
  78. package/dist/components/blocks/list/ListBlock.svelte +162 -0
  79. package/dist/components/blocks/list/ListBlock.svelte.d.ts +11 -0
  80. package/dist/components/blocks/list/ListItemBlock.svelte +324 -0
  81. package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +14 -0
  82. package/dist/components/blocks/list/task-checkbox.d.ts +3 -0
  83. package/dist/components/blocks/list/task-checkbox.js +33 -0
  84. package/dist/components/blocks/plain-text-backend.d.ts +21 -0
  85. package/dist/components/blocks/plain-text-backend.js +47 -0
  86. package/dist/components/blocks/surface-wiring.svelte.d.ts +18 -0
  87. package/dist/components/blocks/surface-wiring.svelte.js +68 -0
  88. package/dist/components/blocks/table/TableActionMenu.svelte +267 -0
  89. package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +15 -0
  90. package/dist/components/blocks/table/TableBlock.svelte +765 -0
  91. package/dist/components/blocks/table/TableBlock.svelte.d.ts +30 -0
  92. package/dist/components/blocks/table/TableCellBlock.svelte +1075 -0
  93. package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +30 -0
  94. package/dist/components/blocks/table/TableGrip.svelte +91 -0
  95. package/dist/components/blocks/table/TableGrip.svelte.d.ts +8 -0
  96. package/dist/components/blocks/table/TableRowBlock.svelte +233 -0
  97. package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +34 -0
  98. package/dist/components/blocks/table/cell-clipboard.d.ts +23 -0
  99. package/dist/components/blocks/table/cell-clipboard.js +34 -0
  100. package/dist/components/blocks/table/cell-keydown-plan.d.ts +37 -0
  101. package/dist/components/blocks/table/cell-keydown-plan.js +66 -0
  102. package/dist/components/blocks/table/cell-pointer.d.ts +58 -0
  103. package/dist/components/blocks/table/cell-pointer.js +153 -0
  104. package/dist/components/blocks/table/cell-render.d.ts +51 -0
  105. package/dist/components/blocks/table/cell-render.js +98 -0
  106. package/dist/components/blocks/table/cell-table-commands.d.ts +12 -0
  107. package/dist/components/blocks/table/cell-table-commands.js +21 -0
  108. package/dist/components/blocks/table/cell-x-mapping.d.ts +6 -0
  109. package/dist/components/blocks/table/cell-x-mapping.js +16 -0
  110. package/dist/components/blocks/table/selected-cells.d.ts +19 -0
  111. package/dist/components/blocks/table/selected-cells.js +35 -0
  112. package/dist/components/blocks/table/table-caret-at-point.d.ts +8 -0
  113. package/dist/components/blocks/table/table-caret-at-point.js +35 -0
  114. package/dist/components/blocks/table/table-cell-paste.d.ts +16 -0
  115. package/dist/components/blocks/table/table-cell-paste.js +75 -0
  116. package/dist/components/blocks/table/table-drag-hit-test.d.ts +5 -0
  117. package/dist/components/blocks/table/table-drag-hit-test.js +20 -0
  118. package/dist/components/blocks/table/table-drop-target.d.ts +1 -0
  119. package/dist/components/blocks/table/table-drop-target.js +16 -0
  120. package/dist/components/blocks/table/table-menu-model.d.ts +52 -0
  121. package/dist/components/blocks/table/table-menu-model.js +78 -0
  122. package/dist/components/blocks/table/table-navigation.d.ts +8 -0
  123. package/dist/components/blocks/table/table-navigation.js +22 -0
  124. package/dist/components/blocks/table/table-reorder-drag.d.ts +78 -0
  125. package/dist/components/blocks/table/table-reorder-drag.js +97 -0
  126. package/dist/components/blocks/text/TextEditableBlock.svelte +1012 -0
  127. package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +33 -0
  128. package/dist/components/blocks/text/click-snap-guard.d.ts +8 -0
  129. package/dist/components/blocks/text/click-snap-guard.js +19 -0
  130. package/dist/components/blocks/text/composition-seat.d.ts +50 -0
  131. package/dist/components/blocks/text/composition-seat.js +65 -0
  132. package/dist/components/blocks/text/construct-edge-delete.d.ts +47 -0
  133. package/dist/components/blocks/text/construct-edge-delete.js +164 -0
  134. package/dist/components/blocks/text/construct-reveal.d.ts +39 -0
  135. package/dist/components/blocks/text/construct-reveal.js +164 -0
  136. package/dist/components/blocks/text/edge-policy-dispatch.d.ts +91 -0
  137. package/dist/components/blocks/text/edge-policy-dispatch.js +457 -0
  138. package/dist/components/blocks/text/edge-seat.d.ts +42 -0
  139. package/dist/components/blocks/text/edge-seat.js +197 -0
  140. package/dist/components/blocks/text/hidden-suffix.d.ts +10 -0
  141. package/dist/components/blocks/text/hidden-suffix.js +15 -0
  142. package/dist/components/blocks/text/link-at-point.d.ts +33 -0
  143. package/dist/components/blocks/text/link-at-point.js +47 -0
  144. package/dist/components/blocks/text/link-source-bytes.d.ts +37 -0
  145. package/dist/components/blocks/text/link-source-bytes.js +161 -0
  146. package/dist/components/blocks/text/live-join-seam.d.ts +15 -0
  147. package/dist/components/blocks/text/live-join-seam.js +327 -0
  148. package/dist/components/blocks/text/live-selection-edit.d.ts +68 -0
  149. package/dist/components/blocks/text/live-selection-edit.js +120 -0
  150. package/dist/components/blocks/text/live-split-rebalance.d.ts +56 -0
  151. package/dist/components/blocks/text/live-split-rebalance.js +239 -0
  152. package/dist/components/blocks/text/marker-completion.d.ts +18 -0
  153. package/dist/components/blocks/text/marker-completion.js +29 -0
  154. package/dist/components/blocks/text/pending-mark-insert.d.ts +37 -0
  155. package/dist/components/blocks/text/pending-mark-insert.js +188 -0
  156. package/dist/components/blocks/text/screen-diff.d.ts +20 -0
  157. package/dist/components/blocks/text/screen-diff.js +39 -0
  158. package/dist/components/blocks/text/text-clipboard.d.ts +70 -0
  159. package/dist/components/blocks/text/text-clipboard.js +131 -0
  160. package/dist/components/blocks/text/text-keydown.d.ts +39 -0
  161. package/dist/components/blocks/text/text-keydown.js +80 -0
  162. package/dist/components/blocks/text/text-render.d.ts +67 -0
  163. package/dist/components/blocks/text/text-render.js +215 -0
  164. package/dist/components/blocks/text/widget-adjacency.d.ts +30 -0
  165. package/dist/components/blocks/text/widget-adjacency.js +68 -0
  166. package/dist/components/blocks/text/widget-interaction.d.ts +90 -0
  167. package/dist/components/blocks/text/widget-interaction.js +591 -0
  168. package/dist/components/blocks/widget-portal.d.ts +54 -0
  169. package/dist/components/blocks/widget-portal.js +136 -0
  170. package/dist/components/built-in-blocks.d.ts +7 -0
  171. package/dist/components/built-in-blocks.js +77 -0
  172. package/dist/components/editor-root-clipboard.d.ts +29 -0
  173. package/dist/components/editor-root-clipboard.js +105 -0
  174. package/dist/components/editor-root-keydown.d.ts +47 -0
  175. package/dist/components/editor-root-keydown.js +88 -0
  176. package/dist/components/editor-root-listeners.d.ts +44 -0
  177. package/dist/components/editor-root-listeners.js +112 -0
  178. package/dist/components/image/ImageOverlayHost.svelte +115 -0
  179. package/dist/components/image/ImageOverlayHost.svelte.d.ts +20 -0
  180. package/dist/components/image/ImageProperties.svelte +153 -0
  181. package/dist/components/image/ImageProperties.svelte.d.ts +14 -0
  182. package/dist/components/image/ImageResizeHandles.svelte +188 -0
  183. package/dist/components/image/ImageResizeHandles.svelte.d.ts +10 -0
  184. package/dist/components/image/image-edit-commit.d.ts +38 -0
  185. package/dist/components/image/image-edit-commit.js +159 -0
  186. package/dist/components/image/image-resize.d.ts +11 -0
  187. package/dist/components/image/image-resize.js +38 -0
  188. package/dist/components/image/image-source-bytes.d.ts +15 -0
  189. package/dist/components/image/image-source-bytes.js +73 -0
  190. package/dist/components/image/image-widget-editing.d.ts +7 -0
  191. package/dist/components/image/image-widget-editing.js +41 -0
  192. package/dist/components/image/widget-dom.d.ts +11 -0
  193. package/dist/components/image/widget-dom.js +110 -0
  194. package/dist/components/image/widget-selection-state.svelte.d.ts +18 -0
  195. package/dist/components/image/widget-selection-state.svelte.js +26 -0
  196. package/dist/components/link-card/LinkCard.svelte +190 -0
  197. package/dist/components/link-card/LinkCard.svelte.d.ts +18 -0
  198. package/dist/components/link-card/LinkCardHost.svelte +181 -0
  199. package/dist/components/link-card/LinkCardHost.svelte.d.ts +25 -0
  200. package/dist/components/link-card/link-card-commit.d.ts +50 -0
  201. package/dist/components/link-card/link-card-commit.js +134 -0
  202. package/dist/components/link-card/link-card-entry.d.ts +39 -0
  203. package/dist/components/link-card/link-card-entry.js +51 -0
  204. package/dist/components/link-card/link-card-state.svelte.d.ts +44 -0
  205. package/dist/components/link-card/link-card-state.svelte.js +46 -0
  206. package/dist/components/lrd-map-gate.d.ts +18 -0
  207. package/dist/components/lrd-map-gate.js +22 -0
  208. package/dist/components/paste-image-arm.d.ts +29 -0
  209. package/dist/components/paste-image-arm.js +61 -0
  210. package/dist/components/portal.d.ts +11 -0
  211. package/dist/components/portal.js +29 -0
  212. package/dist/core/directive/activate.d.ts +8 -0
  213. package/dist/core/directive/activate.js +25 -0
  214. package/dist/core/directive/container-opener.d.ts +7 -0
  215. package/dist/core/directive/container-opener.js +162 -0
  216. package/dist/core/directive/grammar.d.ts +50 -0
  217. package/dist/core/directive/grammar.js +88 -0
  218. package/dist/core/directive/kinds.d.ts +31 -0
  219. package/dist/core/directive/kinds.js +137 -0
  220. package/dist/core/directive/registry.d.ts +39 -0
  221. package/dist/core/directive/registry.js +49 -0
  222. package/dist/core/directive/text-recognizer.d.ts +8 -0
  223. package/dist/core/directive/text-recognizer.js +87 -0
  224. package/dist/core/escapable.d.ts +6 -0
  225. package/dist/core/escapable.js +6 -0
  226. package/dist/core/inline/backticks.d.ts +16 -0
  227. package/dist/core/inline/backticks.js +62 -0
  228. package/dist/core/inline/character-refs.d.ts +7 -0
  229. package/dist/core/inline/character-refs.js +70 -0
  230. package/dist/core/inline/destination-bytes.d.ts +7 -0
  231. package/dist/core/inline/destination-bytes.js +14 -0
  232. package/dist/core/inline/entity-widget.d.ts +11 -0
  233. package/dist/core/inline/entity-widget.js +21 -0
  234. package/dist/core/inline/format-toggle.d.ts +50 -0
  235. package/dist/core/inline/format-toggle.js +533 -0
  236. package/dist/core/inline/html-entities.d.ts +8 -0
  237. package/dist/core/inline/html-entities.js +2134 -0
  238. package/dist/core/inline/html-tag-grammar.d.ts +16 -0
  239. package/dist/core/inline/html-tag-grammar.js +58 -0
  240. package/dist/core/inline/image-dimensions.d.ts +6 -0
  241. package/dist/core/inline/image-dimensions.js +42 -0
  242. package/dist/core/inline/index.d.ts +42 -0
  243. package/dist/core/inline/index.js +77 -0
  244. package/dist/core/inline/inline-cache.d.ts +20 -0
  245. package/dist/core/inline/inline-cache.js +28 -0
  246. package/dist/core/inline/inline-widgets.d.ts +124 -0
  247. package/dist/core/inline/inline-widgets.js +131 -0
  248. package/dist/core/inline/link-reference-resolver.d.ts +21 -0
  249. package/dist/core/inline/link-reference-resolver.js +46 -0
  250. package/dist/core/inline/raw-html-widget.d.ts +10 -0
  251. package/dist/core/inline/raw-html-widget.js +22 -0
  252. package/dist/core/inline/scan/autolinks.d.ts +23 -0
  253. package/dist/core/inline/scan/autolinks.js +354 -0
  254. package/dist/core/inline/scan/brackets.d.ts +11 -0
  255. package/dist/core/inline/scan/brackets.js +284 -0
  256. package/dist/core/inline/scan/code-spans.d.ts +7 -0
  257. package/dist/core/inline/scan/code-spans.js +27 -0
  258. package/dist/core/inline/scan/emphasis.d.ts +10 -0
  259. package/dist/core/inline/scan/emphasis.js +276 -0
  260. package/dist/core/inline/scan/index.d.ts +7 -0
  261. package/dist/core/inline/scan/index.js +176 -0
  262. package/dist/core/inline/scan/plugin-syntax.d.ts +62 -0
  263. package/dist/core/inline/scan/plugin-syntax.js +150 -0
  264. package/dist/core/inline/scan/scan-state.d.ts +47 -0
  265. package/dist/core/inline/scan/scan-state.js +48 -0
  266. package/dist/core/inline/scan/simple-nodes.d.ts +14 -0
  267. package/dist/core/inline/scan/simple-nodes.js +53 -0
  268. package/dist/core/inline/scan/url.d.ts +12 -0
  269. package/dist/core/inline/scan/url.js +82 -0
  270. package/dist/core/inline/transparency.d.ts +8 -0
  271. package/dist/core/inline/transparency.js +39 -0
  272. package/dist/core/inline/visibility.d.ts +81 -0
  273. package/dist/core/inline/visibility.js +144 -0
  274. package/dist/core/inline/walk.d.ts +14 -0
  275. package/dist/core/inline/walk.js +29 -0
  276. package/dist/core/inline-render.d.ts +48 -0
  277. package/dist/core/inline-render.js +322 -0
  278. package/dist/core/lines.d.ts +44 -0
  279. package/dist/core/lines.js +91 -0
  280. package/dist/core/node-views.d.ts +22 -0
  281. package/dist/core/node-views.js +8 -0
  282. package/dist/core/nodes.d.ts +297 -0
  283. package/dist/core/nodes.js +83 -0
  284. package/dist/core/parser.d.ts +68 -0
  285. package/dist/core/parser.js +189 -0
  286. package/dist/core/parsers/blockquote.d.ts +17 -0
  287. package/dist/core/parsers/blockquote.js +69 -0
  288. package/dist/core/parsers/built-in-openers.d.ts +8 -0
  289. package/dist/core/parsers/built-in-openers.js +124 -0
  290. package/dist/core/parsers/fence-syntax.d.ts +24 -0
  291. package/dist/core/parsers/fence-syntax.js +44 -0
  292. package/dist/core/parsers/fenced-code.d.ts +7 -0
  293. package/dist/core/parsers/fenced-code.js +29 -0
  294. package/dist/core/parsers/heading.d.ts +3 -0
  295. package/dist/core/parsers/heading.js +6 -0
  296. package/dist/core/parsers/html-block.d.ts +17 -0
  297. package/dist/core/parsers/html-block.js +94 -0
  298. package/dist/core/parsers/indented-code.d.ts +4 -0
  299. package/dist/core/parsers/indented-code.js +41 -0
  300. package/dist/core/parsers/link-reference.d.ts +7 -0
  301. package/dist/core/parsers/link-reference.js +152 -0
  302. package/dist/core/parsers/list.d.ts +19 -0
  303. package/dist/core/parsers/list.js +133 -0
  304. package/dist/core/parsers/paragraph.d.ts +10 -0
  305. package/dist/core/parsers/paragraph.js +42 -0
  306. package/dist/core/parsers/table-completion.d.ts +13 -0
  307. package/dist/core/parsers/table-completion.js +48 -0
  308. package/dist/core/parsers/table.d.ts +18 -0
  309. package/dist/core/parsers/table.js +110 -0
  310. package/dist/core/parsers/thematic-break.d.ts +1 -0
  311. package/dist/core/parsers/thematic-break.js +19 -0
  312. package/dist/core/serializer.d.ts +15 -0
  313. package/dist/core/serializer.js +11 -0
  314. package/dist/core/terminator-escalation.d.ts +8 -0
  315. package/dist/core/terminator-escalation.js +18 -0
  316. package/dist/core/url-policy.d.ts +14 -0
  317. package/dist/core/url-policy.js +44 -0
  318. package/dist/cursor/content-offsets.d.ts +29 -0
  319. package/dist/cursor/content-offsets.js +151 -0
  320. package/dist/cursor/coordinate-spaces.d.ts +65 -0
  321. package/dist/cursor/coordinate-spaces.js +66 -0
  322. package/dist/cursor/dom-walk.d.ts +18 -0
  323. package/dist/cursor/dom-walk.js +31 -0
  324. package/dist/cursor/edge-affinity.d.ts +44 -0
  325. package/dist/cursor/edge-affinity.js +60 -0
  326. package/dist/cursor/focused-caret.d.ts +10 -0
  327. package/dist/cursor/focused-caret.js +24 -0
  328. package/dist/cursor/height-model.d.ts +24 -0
  329. package/dist/cursor/height-model.js +72 -0
  330. package/dist/cursor/height-oracle.d.ts +24 -0
  331. package/dist/cursor/height-oracle.js +94 -0
  332. package/dist/cursor/overlay-rects.d.ts +8 -0
  333. package/dist/cursor/overlay-rects.js +19 -0
  334. package/dist/cursor/overlay-remeasure.d.ts +17 -0
  335. package/dist/cursor/overlay-remeasure.js +31 -0
  336. package/dist/cursor/pending-marks.d.ts +24 -0
  337. package/dist/cursor/pending-marks.js +36 -0
  338. package/dist/cursor/point-offset.d.ts +21 -0
  339. package/dist/cursor/point-offset.js +48 -0
  340. package/dist/cursor/reveal-anchor.d.ts +30 -0
  341. package/dist/cursor/reveal-anchor.js +31 -0
  342. package/dist/cursor/reveal-source.d.ts +35 -0
  343. package/dist/cursor/reveal-source.js +51 -0
  344. package/dist/cursor/scroll-ancestors.d.ts +28 -0
  345. package/dist/cursor/scroll-ancestors.js +89 -0
  346. package/dist/cursor/scrollport.d.ts +20 -0
  347. package/dist/cursor/scrollport.js +41 -0
  348. package/dist/cursor/sticky-column.d.ts +35 -0
  349. package/dist/cursor/sticky-column.js +64 -0
  350. package/dist/cursor/sticky-measure.d.ts +16 -0
  351. package/dist/cursor/sticky-measure.js +97 -0
  352. package/dist/cursor/typography-estimates.d.ts +21 -0
  353. package/dist/cursor/typography-estimates.js +21 -0
  354. package/dist/cursor/visual-lines.d.ts +25 -0
  355. package/dist/cursor/visual-lines.js +125 -0
  356. package/dist/cursor/widget-offset.d.ts +132 -0
  357. package/dist/cursor/widget-offset.js +543 -0
  358. package/dist/debug/diagnostics-report.d.ts +17 -0
  359. package/dist/debug/diagnostics-report.js +25 -0
  360. package/dist/debug/dump-tree.d.ts +6 -0
  361. package/dist/debug/dump-tree.js +114 -0
  362. package/dist/debug/inspect.d.ts +19 -0
  363. package/dist/debug/inspect.js +116 -0
  364. package/dist/debug/interaction-trace.d.ts +39 -0
  365. package/dist/debug/interaction-trace.js +105 -0
  366. package/dist/debug/operations-log.d.ts +14 -0
  367. package/dist/debug/operations-log.js +30 -0
  368. package/dist/decorations/buckets.d.ts +40 -0
  369. package/dist/decorations/buckets.js +87 -0
  370. package/dist/decorations/decoration-state.svelte.d.ts +20 -0
  371. package/dist/decorations/decoration-state.svelte.js +195 -0
  372. package/dist/decorations/island-dom.d.ts +35 -0
  373. package/dist/decorations/island-dom.js +148 -0
  374. package/dist/decorations/reserved-attrs.d.ts +12 -0
  375. package/dist/decorations/reserved-attrs.js +47 -0
  376. package/dist/decorations/types.d.ts +68 -0
  377. package/dist/decorations/types.js +5 -0
  378. package/dist/decorations/widget-dom.d.ts +15 -0
  379. package/dist/decorations/widget-dom.js +35 -0
  380. package/dist/dev-warn.d.ts +13 -0
  381. package/dist/dev-warn.js +28 -0
  382. package/dist/editor-actions/ancestry-folds.d.ts +32 -0
  383. package/dist/editor-actions/ancestry-folds.js +106 -0
  384. package/dist/editor-actions/block-edit-core.d.ts +29 -0
  385. package/dist/editor-actions/block-edit-core.js +277 -0
  386. package/dist/editor-actions/block-edit-scope.d.ts +79 -0
  387. package/dist/editor-actions/block-edit-scope.js +76 -0
  388. package/dist/editor-actions/block-edit.d.ts +8 -0
  389. package/dist/editor-actions/block-edit.js +111 -0
  390. package/dist/editor-actions/commit/history.d.ts +9 -0
  391. package/dist/editor-actions/commit/history.js +77 -0
  392. package/dist/editor-actions/commit/text-batch.d.ts +34 -0
  393. package/dist/editor-actions/commit/text-batch.js +61 -0
  394. package/dist/editor-actions/commit/undo-controller.d.ts +7 -0
  395. package/dist/editor-actions/commit/undo-controller.js +570 -0
  396. package/dist/editor-actions/container-block-component.d.ts +85 -0
  397. package/dist/editor-actions/container-block-component.js +228 -0
  398. package/dist/editor-actions/container-edit.d.ts +7 -0
  399. package/dist/editor-actions/container-edit.js +49 -0
  400. package/dist/editor-actions/container-exit-overrides.d.ts +16 -0
  401. package/dist/editor-actions/container-exit-overrides.js +38 -0
  402. package/dist/editor-actions/deps.d.ts +60 -0
  403. package/dist/editor-actions/deps.js +1 -0
  404. package/dist/editor-actions/enter-completion.d.ts +25 -0
  405. package/dist/editor-actions/enter-completion.js +76 -0
  406. package/dist/editor-actions/focus/focus-dispatch.d.ts +36 -0
  407. package/dist/editor-actions/focus/focus-dispatch.js +106 -0
  408. package/dist/editor-actions/focus/focus-landing.d.ts +7 -0
  409. package/dist/editor-actions/focus/focus-landing.js +39 -0
  410. package/dist/editor-actions/focus/focus.d.ts +7 -0
  411. package/dist/editor-actions/focus/focus.js +74 -0
  412. package/dist/editor-actions/index.d.ts +15 -0
  413. package/dist/editor-actions/index.js +19 -0
  414. package/dist/editor-actions/inline-range-commit.d.ts +20 -0
  415. package/dist/editor-actions/inline-range-commit.js +63 -0
  416. package/dist/editor-actions/list-context.d.ts +25 -0
  417. package/dist/editor-actions/list-context.js +285 -0
  418. package/dist/editor-actions/list-overrides.d.ts +13 -0
  419. package/dist/editor-actions/list-overrides.js +26 -0
  420. package/dist/editor-actions/merge-fallback.d.ts +19 -0
  421. package/dist/editor-actions/merge-fallback.js +27 -0
  422. package/dist/editor-actions/nested/nested-actions.d.ts +65 -0
  423. package/dist/editor-actions/nested/nested-actions.js +59 -0
  424. package/dist/editor-actions/nested/nested-block-edit.d.ts +10 -0
  425. package/dist/editor-actions/nested/nested-block-edit.js +181 -0
  426. package/dist/editor-actions/nested/nested-focus.d.ts +9 -0
  427. package/dist/editor-actions/nested/nested-focus.js +30 -0
  428. package/dist/editor-actions/paste-coordinator.d.ts +4 -0
  429. package/dist/editor-actions/paste-coordinator.js +20 -0
  430. package/dist/editor-actions/plugin/chrome-leaf.d.ts +25 -0
  431. package/dist/editor-actions/plugin/chrome-leaf.js +80 -0
  432. package/dist/editor-actions/plugin/container.d.ts +137 -0
  433. package/dist/editor-actions/plugin/container.js +351 -0
  434. package/dist/editor-actions/plugin/directive-container.d.ts +13 -0
  435. package/dist/editor-actions/plugin/directive-container.js +31 -0
  436. package/dist/editor-actions/reorder-action.d.ts +17 -0
  437. package/dist/editor-actions/reorder-action.js +104 -0
  438. package/dist/editor-actions/reorder-drag.d.ts +34 -0
  439. package/dist/editor-actions/reorder-drag.js +152 -0
  440. package/dist/editor-actions/replacement-focus.d.ts +27 -0
  441. package/dist/editor-actions/replacement-focus.js +60 -0
  442. package/dist/editor-actions/search-replace.d.ts +6 -0
  443. package/dist/editor-actions/search-replace.js +145 -0
  444. package/dist/editor-actions/table-context.d.ts +34 -0
  445. package/dist/editor-actions/table-context.js +292 -0
  446. package/dist/editor-actions/unwrap-strategies.d.ts +14 -0
  447. package/dist/editor-actions/unwrap-strategies.js +131 -0
  448. package/dist/editor-actions/whole-block-focus-surface.d.ts +51 -0
  449. package/dist/editor-actions/whole-block-focus-surface.js +171 -0
  450. package/dist/editor-events.d.ts +89 -0
  451. package/dist/editor-events.js +96 -0
  452. package/dist/editor-keys.d.ts +197 -0
  453. package/dist/editor-keys.js +40 -0
  454. package/dist/editor-props.d.ts +164 -0
  455. package/dist/editor-props.js +1 -0
  456. package/dist/editor-rects.d.ts +58 -0
  457. package/dist/editor-rects.js +114 -0
  458. package/dist/env.d.ts +12 -0
  459. package/dist/env.js +20 -0
  460. package/dist/index.d.ts +27 -0
  461. package/dist/index.js +19 -0
  462. package/dist/invariants/commit-paths.d.ts +10 -0
  463. package/dist/invariants/commit-paths.js +25 -0
  464. package/dist/invariants/commit-scope.d.ts +9 -0
  465. package/dist/invariants/commit-scope.js +16 -0
  466. package/dist/invariants/context-keys.d.ts +7 -0
  467. package/dist/invariants/context-keys.js +14 -0
  468. package/dist/invariants/descriptor.d.ts +10 -0
  469. package/dist/invariants/descriptor.js +24 -0
  470. package/dist/invariants/inline-transitions.d.ts +23 -0
  471. package/dist/invariants/inline-transitions.js +52 -0
  472. package/dist/invariants/install.d.ts +36 -0
  473. package/dist/invariants/install.js +66 -0
  474. package/dist/invariants/landable-caret.d.ts +12 -0
  475. package/dist/invariants/landable-caret.js +31 -0
  476. package/dist/invariants/marker-css-parity.d.ts +10 -0
  477. package/dist/invariants/marker-css-parity.js +87 -0
  478. package/dist/invariants/node-shape.d.ts +44 -0
  479. package/dist/invariants/node-shape.js +258 -0
  480. package/dist/invariants/registry.d.ts +126 -0
  481. package/dist/invariants/registry.js +349 -0
  482. package/dist/invariants/render-fidelity.d.ts +8 -0
  483. package/dist/invariants/render-fidelity.js +33 -0
  484. package/dist/invariants/selection-endpoints.d.ts +19 -0
  485. package/dist/invariants/selection-endpoints.js +78 -0
  486. package/dist/invariants/single-node-sink.d.ts +9 -0
  487. package/dist/invariants/single-node-sink.js +16 -0
  488. package/dist/invariants/snapshot-integrity.d.ts +17 -0
  489. package/dist/invariants/snapshot-integrity.js +24 -0
  490. package/dist/invariants/split-landing.d.ts +8 -0
  491. package/dist/invariants/split-landing.js +15 -0
  492. package/dist/invariants/structural-descriptor.d.ts +21 -0
  493. package/dist/invariants/structural-descriptor.js +50 -0
  494. package/dist/perf/instruments.d.ts +49 -0
  495. package/dist/perf/instruments.js +154 -0
  496. package/dist/perf/use-mount-gauge.svelte.d.ts +1 -0
  497. package/dist/perf/use-mount-gauge.svelte.js +15 -0
  498. package/dist/plugin.d.ts +102 -0
  499. package/dist/plugin.js +156 -0
  500. package/dist/plugins/admonitions/AdmonitionBlock.svelte +144 -0
  501. package/dist/plugins/admonitions/AdmonitionBlock.svelte.d.ts +11 -0
  502. package/dist/plugins/admonitions/admonition-kind.d.ts +8 -0
  503. package/dist/plugins/admonitions/admonition-kind.js +97 -0
  504. package/dist/plugins/admonitions/convert-document.d.ts +11 -0
  505. package/dist/plugins/admonitions/convert-document.js +39 -0
  506. package/dist/plugins/admonitions/gh-alert.d.ts +13 -0
  507. package/dist/plugins/admonitions/gh-alert.js +83 -0
  508. package/dist/plugins/admonitions/github-alert-kind.d.ts +12 -0
  509. package/dist/plugins/admonitions/github-alert-kind.js +125 -0
  510. package/dist/plugins/admonitions/index.d.ts +6 -0
  511. package/dist/plugins/admonitions/index.js +8 -0
  512. package/dist/plugins/admonitions/kinds.d.ts +26 -0
  513. package/dist/plugins/admonitions/kinds.js +18 -0
  514. package/dist/plugins/admonitions/register.d.ts +7 -0
  515. package/dist/plugins/admonitions/register.js +12 -0
  516. package/dist/plugins/details/DetailsBlock.svelte +129 -0
  517. package/dist/plugins/details/DetailsBlock.svelte.d.ts +11 -0
  518. package/dist/plugins/details/details-disclosure.svelte.d.ts +17 -0
  519. package/dist/plugins/details/details-disclosure.svelte.js +24 -0
  520. package/dist/plugins/details/details-kind.d.ts +25 -0
  521. package/dist/plugins/details/details-kind.js +237 -0
  522. package/dist/plugins/details/index.d.ts +2 -0
  523. package/dist/plugins/details/index.js +2 -0
  524. package/dist/plugins/details/register.d.ts +6 -0
  525. package/dist/plugins/details/register.js +15 -0
  526. package/dist/plugins/emoji/emoji-plugin.d.ts +2 -0
  527. package/dist/plugins/emoji/emoji-plugin.js +10 -0
  528. package/dist/plugins/emoji/emoji-recognizer.d.ts +18 -0
  529. package/dist/plugins/emoji/emoji-recognizer.js +63 -0
  530. package/dist/plugins/emoji/emoji-table.d.ts +1 -0
  531. package/dist/plugins/emoji/emoji-table.js +1919 -0
  532. package/dist/plugins/emoji/index.d.ts +3 -0
  533. package/dist/plugins/emoji/index.js +4 -0
  534. package/dist/plugins/footnotes/FootnoteDefinition.svelte +103 -0
  535. package/dist/plugins/footnotes/FootnoteDefinition.svelte.d.ts +13 -0
  536. package/dist/plugins/footnotes/FootnoteReference.svelte +50 -0
  537. package/dist/plugins/footnotes/FootnoteReference.svelte.d.ts +4 -0
  538. package/dist/plugins/footnotes/constants.d.ts +2 -0
  539. package/dist/plugins/footnotes/constants.js +4 -0
  540. package/dist/plugins/footnotes/footnote-definition.d.ts +14 -0
  541. package/dist/plugins/footnotes/footnote-definition.js +147 -0
  542. package/dist/plugins/footnotes/footnote-lookup.d.ts +9 -0
  543. package/dist/plugins/footnotes/footnote-lookup.js +33 -0
  544. package/dist/plugins/footnotes/footnote-numbering.d.ts +23 -0
  545. package/dist/plugins/footnotes/footnote-numbering.js +78 -0
  546. package/dist/plugins/footnotes/footnote-reference.d.ts +7 -0
  547. package/dist/plugins/footnotes/footnote-reference.js +54 -0
  548. package/dist/plugins/footnotes/footnotes-plugin.d.ts +7 -0
  549. package/dist/plugins/footnotes/footnotes-plugin.js +17 -0
  550. package/dist/plugins/footnotes/index.d.ts +5 -0
  551. package/dist/plugins/footnotes/index.js +6 -0
  552. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +17 -0
  553. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +31 -0
  554. package/dist/plugins/highlight-occurrences/index.d.ts +1 -0
  555. package/dist/plugins/highlight-occurrences/index.js +1 -0
  556. package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +26 -0
  557. package/dist/plugins/highlight-occurrences/occurrence-source.js +54 -0
  558. package/dist/plugins/highlight-occurrences/occurrences.d.ts +33 -0
  559. package/dist/plugins/highlight-occurrences/occurrences.js +108 -0
  560. package/dist/plugins/latex/BlockMath.svelte +119 -0
  561. package/dist/plugins/latex/BlockMath.svelte.d.ts +21 -0
  562. package/dist/plugins/latex/MathInline.svelte +28 -0
  563. package/dist/plugins/latex/MathInline.svelte.d.ts +4 -0
  564. package/dist/plugins/latex/index.d.ts +3 -0
  565. package/dist/plugins/latex/index.js +4 -0
  566. package/dist/plugins/latex/latex-kind.d.ts +17 -0
  567. package/dist/plugins/latex/latex-kind.js +224 -0
  568. package/dist/plugins/latex/math-completion.d.ts +10 -0
  569. package/dist/plugins/latex/math-completion.js +19 -0
  570. package/dist/plugins/latex/math-renderer.d.ts +26 -0
  571. package/dist/plugins/latex/math-renderer.js +42 -0
  572. package/dist/plugins/latex/register.d.ts +10 -0
  573. package/dist/plugins/latex/register.js +23 -0
  574. package/dist/plugins/latex/renderer.d.ts +13 -0
  575. package/dist/plugins/latex/renderer.js +34 -0
  576. package/dist/plugins/mermaid/MermaidBlock.svelte +572 -0
  577. package/dist/plugins/mermaid/MermaidBlock.svelte.d.ts +11 -0
  578. package/dist/plugins/mermaid/index.d.ts +3 -0
  579. package/dist/plugins/mermaid/index.js +3 -0
  580. package/dist/plugins/mermaid/mermaid-kind.d.ts +38 -0
  581. package/dist/plugins/mermaid/mermaid-kind.js +176 -0
  582. package/dist/plugins/mermaid/mermaid-renderer.d.ts +28 -0
  583. package/dist/plugins/mermaid/mermaid-renderer.js +35 -0
  584. package/dist/plugins/mermaid/register.d.ts +10 -0
  585. package/dist/plugins/mermaid/register.js +20 -0
  586. package/dist/plugins/mermaid/renderer.d.ts +11 -0
  587. package/dist/plugins/mermaid/renderer.js +53 -0
  588. package/dist/plugins/parrot/ParrotBlock.svelte +342 -0
  589. package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +21 -0
  590. package/dist/plugins/parrot/index.d.ts +1 -0
  591. package/dist/plugins/parrot/index.js +2 -0
  592. package/dist/plugins/parrot/parrot-plugin.d.ts +3 -0
  593. package/dist/plugins/parrot/parrot-plugin.js +49 -0
  594. package/dist/plugins/toc/TocBlock.svelte +218 -0
  595. package/dist/plugins/toc/TocBlock.svelte.d.ts +24 -0
  596. package/dist/plugins/toc/heading-outline.d.ts +28 -0
  597. package/dist/plugins/toc/heading-outline.js +65 -0
  598. package/dist/plugins/toc/index.d.ts +2 -0
  599. package/dist/plugins/toc/index.js +2 -0
  600. package/dist/plugins/toc/navigation-queue.d.ts +12 -0
  601. package/dist/plugins/toc/navigation-queue.js +21 -0
  602. package/dist/plugins/toc/toc-plugin.d.ts +16 -0
  603. package/dist/plugins/toc/toc-plugin.js +71 -0
  604. package/dist/presentation-mode.d.ts +32 -0
  605. package/dist/presentation-mode.js +50 -0
  606. package/dist/reactivity/block-list-state.svelte.d.ts +22 -0
  607. package/dist/reactivity/block-list-state.svelte.js +46 -0
  608. package/dist/reactivity/block-window.svelte.d.ts +41 -0
  609. package/dist/reactivity/block-window.svelte.js +93 -0
  610. package/dist/reactivity/content-version.svelte.d.ts +14 -0
  611. package/dist/reactivity/content-version.svelte.js +16 -0
  612. package/dist/reactivity/list-windowing.svelte.d.ts +100 -0
  613. package/dist/reactivity/list-windowing.svelte.js +402 -0
  614. package/dist/reactivity/measure-batch.d.ts +15 -0
  615. package/dist/reactivity/measure-batch.js +18 -0
  616. package/dist/reactivity/publish-ref.svelte.d.ts +54 -0
  617. package/dist/reactivity/publish-ref.svelte.js +128 -0
  618. package/dist/reactivity/scope-geometry.d.ts +18 -0
  619. package/dist/reactivity/scope-geometry.js +29 -0
  620. package/dist/reactivity/state-registry.d.ts +10 -0
  621. package/dist/reactivity/state-registry.js +44 -0
  622. package/dist/reactivity/use-container-windowing.svelte.d.ts +35 -0
  623. package/dist/reactivity/use-container-windowing.svelte.js +95 -0
  624. package/dist/reactivity/window-slice.d.ts +11 -0
  625. package/dist/reactivity/window-slice.js +9 -0
  626. package/dist/scan-index.d.ts +11 -0
  627. package/dist/scan-index.js +27 -0
  628. package/dist/schema/block-commands.d.ts +105 -0
  629. package/dist/schema/block-commands.js +179 -0
  630. package/dist/schema/block-completions.d.ts +33 -0
  631. package/dist/schema/block-completions.js +49 -0
  632. package/dist/schema/block-component-registry.d.ts +33 -0
  633. package/dist/schema/block-component-registry.js +33 -0
  634. package/dist/schema/block-kind-descriptor.d.ts +281 -0
  635. package/dist/schema/block-kind-descriptor.js +187 -0
  636. package/dist/schema/block-openers.d.ts +94 -0
  637. package/dist/schema/block-openers.js +150 -0
  638. package/dist/schema/built-in-descriptors.d.ts +8 -0
  639. package/dist/schema/built-in-descriptors.js +560 -0
  640. package/dist/schema/child-spans.d.ts +25 -0
  641. package/dist/schema/child-spans.js +161 -0
  642. package/dist/schema/closure.d.ts +39 -0
  643. package/dist/schema/closure.js +55 -0
  644. package/dist/schema/command-id.d.ts +20 -0
  645. package/dist/schema/command-id.js +42 -0
  646. package/dist/schema/commands.d.ts +147 -0
  647. package/dist/schema/commands.js +294 -0
  648. package/dist/schema/container-raw.d.ts +21 -0
  649. package/dist/schema/container-raw.js +43 -0
  650. package/dist/schema/container-rebuilders.d.ts +32 -0
  651. package/dist/schema/container-rebuilders.js +95 -0
  652. package/dist/schema/define-plugin-block.d.ts +15 -0
  653. package/dist/schema/define-plugin-block.js +18 -0
  654. package/dist/schema/fenced-code-raw.d.ts +43 -0
  655. package/dist/schema/fenced-code-raw.js +220 -0
  656. package/dist/schema/global-commands.d.ts +11 -0
  657. package/dist/schema/global-commands.js +40 -0
  658. package/dist/schema/inline-construct-policy.d.ts +131 -0
  659. package/dist/schema/inline-construct-policy.js +96 -0
  660. package/dist/schema/keybinding-overrides.d.ts +39 -0
  661. package/dist/schema/keybinding-overrides.js +43 -0
  662. package/dist/schema/keybindings.d.ts +36 -0
  663. package/dist/schema/keybindings.js +75 -0
  664. package/dist/schema/merge-rules.d.ts +28 -0
  665. package/dist/schema/merge-rules.js +57 -0
  666. package/dist/schema/opener-priorities.d.ts +16 -0
  667. package/dist/schema/opener-priorities.js +16 -0
  668. package/dist/schema/operations.d.ts +110 -0
  669. package/dist/schema/operations.js +6 -0
  670. package/dist/schema/plugin-activation.d.ts +13 -0
  671. package/dist/schema/plugin-activation.js +18 -0
  672. package/dist/schema/plugin-editor-context.d.ts +33 -0
  673. package/dist/schema/plugin-editor-context.js +65 -0
  674. package/dist/schema/plugin-install.d.ts +58 -0
  675. package/dist/schema/plugin-install.js +132 -0
  676. package/dist/schema/plugin-kind.d.ts +21 -0
  677. package/dist/schema/plugin-kind.js +86 -0
  678. package/dist/schema/plugin-name.d.ts +1 -0
  679. package/dist/schema/plugin-name.js +7 -0
  680. package/dist/schema/register-once.d.ts +9 -0
  681. package/dist/schema/register-once.js +35 -0
  682. package/dist/schema/registration-checks.d.ts +32 -0
  683. package/dist/schema/registration-checks.js +122 -0
  684. package/dist/schema/registration-pending.d.ts +28 -0
  685. package/dist/schema/registration-pending.js +48 -0
  686. package/dist/schema/registry-reset.d.ts +7 -0
  687. package/dist/schema/registry-reset.js +30 -0
  688. package/dist/schema/registry-view.d.ts +30 -0
  689. package/dist/schema/registry-view.js +39 -0
  690. package/dist/schema/reserved-chords.d.ts +35 -0
  691. package/dist/schema/reserved-chords.js +313 -0
  692. package/dist/schema/reserved-chrome.d.ts +23 -0
  693. package/dist/schema/reserved-chrome.js +33 -0
  694. package/dist/schema/table-cell-raw.d.ts +14 -0
  695. package/dist/schema/table-cell-raw.js +30 -0
  696. package/dist/schema/whole-block-unit.d.ts +8 -0
  697. package/dist/schema/whole-block-unit.js +12 -0
  698. package/dist/search/document-scan.d.ts +22 -0
  699. package/dist/search/document-scan.js +39 -0
  700. package/dist/search/matcher.d.ts +31 -0
  701. package/dist/search/matcher.js +70 -0
  702. package/dist/search/regex-executor.d.ts +41 -0
  703. package/dist/search/regex-executor.js +165 -0
  704. package/dist/search/replace.d.ts +15 -0
  705. package/dist/search/replace.js +29 -0
  706. package/dist/search/search-state.svelte.d.ts +59 -0
  707. package/dist/search/search-state.svelte.js +231 -0
  708. package/dist/selection/autoscroll.d.ts +26 -0
  709. package/dist/selection/autoscroll.js +91 -0
  710. package/dist/selection/block-hit-test.d.ts +37 -0
  711. package/dist/selection/block-hit-test.js +59 -0
  712. package/dist/selection/caret-doors.d.ts +20 -0
  713. package/dist/selection/caret-doors.js +44 -0
  714. package/dist/selection/caret-restore.d.ts +15 -0
  715. package/dist/selection/caret-restore.js +32 -0
  716. package/dist/selection/char-endpoint-snap.d.ts +15 -0
  717. package/dist/selection/char-endpoint-snap.js +39 -0
  718. package/dist/selection/clipboard-text.d.ts +13 -0
  719. package/dist/selection/clipboard-text.js +314 -0
  720. package/dist/selection/cross-block/clipboard.d.ts +14 -0
  721. package/dist/selection/cross-block/clipboard.js +20 -0
  722. package/dist/selection/cross-block/dispatch.d.ts +78 -0
  723. package/dist/selection/cross-block/dispatch.js +57 -0
  724. package/dist/selection/cross-block/format-range.d.ts +38 -0
  725. package/dist/selection/cross-block/format-range.js +193 -0
  726. package/dist/selection/cross-block/format-toggle.d.ts +27 -0
  727. package/dist/selection/cross-block/format-toggle.js +109 -0
  728. package/dist/selection/cross-block/keydown.d.ts +11 -0
  729. package/dist/selection/cross-block/keydown.js +339 -0
  730. package/dist/selection/cross-block/ops.d.ts +56 -0
  731. package/dist/selection/cross-block/ops.js +210 -0
  732. package/dist/selection/cross-block/paste.d.ts +8 -0
  733. package/dist/selection/cross-block/paste.js +156 -0
  734. package/dist/selection/cross-block/pointer.d.ts +19 -0
  735. package/dist/selection/cross-block/pointer.js +80 -0
  736. package/dist/selection/cross-block/type-replace.d.ts +10 -0
  737. package/dist/selection/cross-block/type-replace.js +129 -0
  738. package/dist/selection/dead-space-caret.d.ts +39 -0
  739. package/dist/selection/dead-space-caret.js +173 -0
  740. package/dist/selection/drag-pointer.d.ts +22 -0
  741. package/dist/selection/drag-pointer.js +89 -0
  742. package/dist/selection/gap-caret.d.ts +47 -0
  743. package/dist/selection/gap-caret.js +72 -0
  744. package/dist/selection/keyboard-extend.d.ts +43 -0
  745. package/dist/selection/keyboard-extend.js +257 -0
  746. package/dist/selection/native-bridge.d.ts +47 -0
  747. package/dist/selection/native-bridge.js +204 -0
  748. package/dist/selection/nearest-block.d.ts +43 -0
  749. package/dist/selection/nearest-block.js +73 -0
  750. package/dist/selection/path-lookup.d.ts +32 -0
  751. package/dist/selection/path-lookup.js +132 -0
  752. package/dist/selection/path-math.d.ts +35 -0
  753. package/dist/selection/path-math.js +90 -0
  754. package/dist/selection/pointer-session.d.ts +43 -0
  755. package/dist/selection/pointer-session.js +111 -0
  756. package/dist/selection/primitives.d.ts +75 -0
  757. package/dist/selection/primitives.js +91 -0
  758. package/dist/selection/range-delete-ceremony.d.ts +85 -0
  759. package/dist/selection/range-delete-ceremony.js +197 -0
  760. package/dist/selection/range-delete-chrome.d.ts +39 -0
  761. package/dist/selection/range-delete-chrome.js +105 -0
  762. package/dist/selection/range-delete-table-coverage.d.ts +28 -0
  763. package/dist/selection/range-delete-table-coverage.js +168 -0
  764. package/dist/selection/range-delete-table.d.ts +16 -0
  765. package/dist/selection/range-delete-table.js +347 -0
  766. package/dist/selection/range-delete.d.ts +33 -0
  767. package/dist/selection/range-delete.js +121 -0
  768. package/dist/selection/selection-description.d.ts +7 -0
  769. package/dist/selection/selection-description.js +18 -0
  770. package/dist/selection/selection-restore.d.ts +46 -0
  771. package/dist/selection/selection-restore.js +66 -0
  772. package/dist/selection/selection-state.svelte.d.ts +72 -0
  773. package/dist/selection/selection-state.svelte.js +247 -0
  774. package/dist/selection/shared-keydown.d.ts +61 -0
  775. package/dist/selection/shared-keydown.js +150 -0
  776. package/dist/selection/table-endpoint-snap.d.ts +55 -0
  777. package/dist/selection/table-endpoint-snap.js +143 -0
  778. package/dist/selection/table-rect-extend.d.ts +23 -0
  779. package/dist/selection/table-rect-extend.js +46 -0
  780. package/dist/selection/widget-range-paint.d.ts +12 -0
  781. package/dist/selection/widget-range-paint.js +44 -0
  782. package/dist/styles/editor-theme.css +151 -0
  783. package/dist/styles/editor.css +585 -0
  784. package/dist/testing/conformance-core.d.ts +45 -0
  785. package/dist/testing/conformance-core.js +105 -0
  786. package/dist/testing/container-conformance.d.ts +137 -0
  787. package/dist/testing/container-conformance.js +533 -0
  788. package/dist/testing/headless-actions.d.ts +37 -0
  789. package/dist/testing/headless-actions.js +118 -0
  790. package/dist/testing/inline-conformance.d.ts +50 -0
  791. package/dist/testing/inline-conformance.js +442 -0
  792. package/dist/testing/kind-conformance.d.ts +54 -0
  793. package/dist/testing/kind-conformance.js +325 -0
  794. package/dist/testing/mount-dom-stubs.d.ts +8 -0
  795. package/dist/testing/mount-dom-stubs.js +19 -0
  796. package/dist/testing/parse-convergence.d.ts +14 -0
  797. package/dist/testing/parse-convergence.js +81 -0
  798. package/dist/testing.d.ts +20 -0
  799. package/dist/testing.js +61 -0
  800. package/dist/tree-operations/blockquote.d.ts +18 -0
  801. package/dist/tree-operations/blockquote.js +59 -0
  802. package/dist/tree-operations/children.d.ts +17 -0
  803. package/dist/tree-operations/children.js +56 -0
  804. package/dist/tree-operations/cleanup.d.ts +10 -0
  805. package/dist/tree-operations/cleanup.js +25 -0
  806. package/dist/tree-operations/clone.d.ts +5 -0
  807. package/dist/tree-operations/clone.js +43 -0
  808. package/dist/tree-operations/container-lift.d.ts +9 -0
  809. package/dist/tree-operations/container-lift.js +29 -0
  810. package/dist/tree-operations/index.d.ts +16 -0
  811. package/dist/tree-operations/index.js +14 -0
  812. package/dist/tree-operations/list/empty-check.d.ts +7 -0
  813. package/dist/tree-operations/list/empty-check.js +19 -0
  814. package/dist/tree-operations/list/exit-replacement.d.ts +13 -0
  815. package/dist/tree-operations/list/exit-replacement.js +49 -0
  816. package/dist/tree-operations/list/item-partition.d.ts +13 -0
  817. package/dist/tree-operations/list/item-partition.js +33 -0
  818. package/dist/tree-operations/list/list-builders.d.ts +44 -0
  819. package/dist/tree-operations/list/list-builders.js +129 -0
  820. package/dist/tree-operations/list/ordered-markers.d.ts +36 -0
  821. package/dist/tree-operations/list/ordered-markers.js +114 -0
  822. package/dist/tree-operations/list/reconcile-task.d.ts +12 -0
  823. package/dist/tree-operations/list/reconcile-task.js +47 -0
  824. package/dist/tree-operations/list/sublist-separator.d.ts +13 -0
  825. package/dist/tree-operations/list/sublist-separator.js +34 -0
  826. package/dist/tree-operations/list/terminator.d.ts +17 -0
  827. package/dist/tree-operations/list/terminator.js +60 -0
  828. package/dist/tree-operations/list/unwrap-merge.d.ts +29 -0
  829. package/dist/tree-operations/list/unwrap-merge.js +202 -0
  830. package/dist/tree-operations/node-ops.d.ts +296 -0
  831. package/dist/tree-operations/node-ops.js +1428 -0
  832. package/dist/tree-operations/parse-block.d.ts +3 -0
  833. package/dist/tree-operations/parse-block.js +8 -0
  834. package/dist/tree-operations/paste/apply.d.ts +12 -0
  835. package/dist/tree-operations/paste/apply.js +75 -0
  836. package/dist/tree-operations/paste/body-write.d.ts +19 -0
  837. package/dist/tree-operations/paste/body-write.js +53 -0
  838. package/dist/tree-operations/paste/container-match.d.ts +32 -0
  839. package/dist/tree-operations/paste/container-match.js +238 -0
  840. package/dist/tree-operations/paste/container-paste.d.ts +10 -0
  841. package/dist/tree-operations/paste/container-paste.js +27 -0
  842. package/dist/tree-operations/paste/dispatch.d.ts +61 -0
  843. package/dist/tree-operations/paste/dispatch.js +138 -0
  844. package/dist/tree-operations/paste/find-enclosing-list.d.ts +8 -0
  845. package/dist/tree-operations/paste/find-enclosing-list.js +30 -0
  846. package/dist/tree-operations/paste/focus-target.d.ts +27 -0
  847. package/dist/tree-operations/paste/focus-target.js +40 -0
  848. package/dist/tree-operations/paste/hooks.d.ts +17 -0
  849. package/dist/tree-operations/paste/hooks.js +80 -0
  850. package/dist/tree-operations/paste/list-absorb.d.ts +29 -0
  851. package/dist/tree-operations/paste/list-absorb.js +106 -0
  852. package/dist/tree-operations/paste/list-break-out.d.ts +42 -0
  853. package/dist/tree-operations/paste/list-break-out.js +136 -0
  854. package/dist/tree-operations/paste/parent-scope.d.ts +17 -0
  855. package/dist/tree-operations/paste/parent-scope.js +35 -0
  856. package/dist/tree-operations/paste/paste-deps.d.ts +20 -0
  857. package/dist/tree-operations/paste/paste-deps.js +6 -0
  858. package/dist/tree-operations/paste/paste-replacement.d.ts +8 -0
  859. package/dist/tree-operations/paste/paste-replacement.js +60 -0
  860. package/dist/tree-operations/paste/paste-transforms.d.ts +25 -0
  861. package/dist/tree-operations/paste/paste-transforms.js +72 -0
  862. package/dist/tree-operations/paste/replace-block-at-parent.d.ts +29 -0
  863. package/dist/tree-operations/paste/replace-block-at-parent.js +75 -0
  864. package/dist/tree-operations/paste/strategy.d.ts +9 -0
  865. package/dist/tree-operations/paste/strategy.js +20 -0
  866. package/dist/tree-operations/paste/table-slice.d.ts +10 -0
  867. package/dist/tree-operations/paste/table-slice.js +39 -0
  868. package/dist/tree-operations/paste-surfaces.d.ts +61 -0
  869. package/dist/tree-operations/paste-surfaces.js +15 -0
  870. package/dist/tree-operations/path-mutate.d.ts +12 -0
  871. package/dist/tree-operations/path-mutate.js +20 -0
  872. package/dist/tree-operations/reorder-unit.d.ts +17 -0
  873. package/dist/tree-operations/reorder-unit.js +37 -0
  874. package/dist/tree-operations/reorder.d.ts +13 -0
  875. package/dist/tree-operations/reorder.js +57 -0
  876. package/dist/tree-operations/sharing.d.ts +18 -0
  877. package/dist/tree-operations/sharing.js +14 -0
  878. package/dist/tree-operations/splice-many.d.ts +9 -0
  879. package/dist/tree-operations/splice-many.js +22 -0
  880. package/dist/tree-operations/structural-change.d.ts +65 -0
  881. package/dist/tree-operations/structural-change.js +117 -0
  882. package/dist/tree-operations/sub-table-copy.d.ts +6 -0
  883. package/dist/tree-operations/sub-table-copy.js +43 -0
  884. package/dist/tree-operations/table-mutations.d.ts +17 -0
  885. package/dist/tree-operations/table-mutations.js +101 -0
  886. package/dist/tree-operations/unshare.d.ts +101 -0
  887. package/dist/tree-operations/unshare.js +248 -0
  888. package/dist/undo/manager.d.ts +2 -0
  889. package/dist/undo/manager.js +50 -0
  890. package/dist/undo/types.d.ts +44 -0
  891. package/dist/undo/types.js +7 -0
  892. package/docs/guide/consumer-guide.md +1098 -0
  893. package/docs/guide/directives.md +223 -0
  894. package/docs/guide/plugin-api.md +329 -0
  895. package/docs/guide/plugin-guide/conspiracy.gif +0 -0
  896. package/docs/guide/plugin-guide/parrot-frames.md +209 -0
  897. package/docs/guide/plugin-guide/parrot.gif +0 -0
  898. package/docs/guide/plugin-guide.md +1693 -0
  899. package/docs/guide/plugin-testing.md +463 -0
  900. package/package.json +238 -0
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Single-pass GFM block parser, producing a CST where serialize(parse(source)) === source.
3
+ * Per-kind parsers live in parsers/; this file holds dispatch and shared utilities only.
4
+ */
5
+ import { DEV } from 'esm-env';
6
+ import { splitLines } from './lines';
7
+ import { perfEnabled, recordParse } from '../perf/instruments';
8
+ import { defaultGrammarView } from '../schema/block-openers';
9
+ import { assertInvariant } from '../assert';
10
+ import { parseParagraph } from './parsers/paragraph';
11
+ import { registerBuiltInOpeners } from './parsers/built-in-openers';
12
+ import { registerTableCompleter } from './parsers/table-completion';
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.
16
+ registerTableCompleter();
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.
22
+ */
23
+ 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
+ */
31
+ export function parse(source, opts) {
32
+ const t0 = perfEnabled() ? performance.now() : 0;
33
+ const lines = splitLines(source);
34
+ const result = parseBlocks(lines, 0, lines.length, opts?.grammar ?? defaultGrammarView, 0, (opts?.scope ?? 'document') === 'document');
35
+ if (perfEnabled())
36
+ recordParse(performance.now() - t0, result.children.length);
37
+ return { kind: 'document', prefix: '', children: result.children, suffix: result.suffix };
38
+ }
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.
45
+ */
46
+ export function parseBlocks(lines, start, end, grammar = defaultGrammarView, depth = 0, isDocumentParse = false) {
47
+ const children = [];
48
+ 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.
51
+ let separatorSpent = true;
52
+ let index = start;
53
+ while (index < end) {
54
+ const line = lines[index];
55
+ if (isBlankLine(line.text)) {
56
+ // A zero-byte line is a container strip's artifact, not one the author wrote: it can
57
+ // neither separate nor render.
58
+ if (line.raw !== '') {
59
+ if (separatorSpent) {
60
+ children.push({ kind: 'paragraph', leadingTrivia: pendingTrivia, raw: line.raw });
61
+ pendingTrivia = '';
62
+ }
63
+ else {
64
+ pendingTrivia += line.raw;
65
+ separatorSpent = true;
66
+ }
67
+ }
68
+ index++;
69
+ continue;
70
+ }
71
+ // Minted fresh per block, so an opener that retains the context is never re-stamped.
72
+ const ctx = {
73
+ lines,
74
+ index,
75
+ end,
76
+ line,
77
+ leadingTrivia: pendingTrivia,
78
+ isDocumentParse,
79
+ grammar,
80
+ depth
81
+ };
82
+ const { node, consumed } = parseNextBlock(ctx);
83
+ children.push(node);
84
+ pendingTrivia = '';
85
+ separatorSpent = false;
86
+ index += consumed;
87
+ }
88
+ return { children, suffix: pendingTrivia };
89
+ }
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
+ */
97
+ export function parseContainerBody(bodyText, wrap, opts) {
98
+ const lines = splitLines(bodyText);
99
+ let first = 0;
100
+ let last = lines.length;
101
+ let prefix = '';
102
+ let suffix = '';
103
+ if (wrap.afterOpenerLine && last - first >= 2 && isBlankLine(lines[first].text)) {
104
+ prefix = lines[first].raw;
105
+ first++;
106
+ }
107
+ if (wrap.beforeCloserLine && last - first >= 2 && isBlankLine(lines[last - 1].text)) {
108
+ last--;
109
+ suffix = lines[last].raw;
110
+ }
111
+ const inner = parseBlocks(lines, first, last, defaultGrammarView, opts.depth ?? 0, opts.scope === 'document');
112
+ return { kind: 'document', prefix, children: inner.children, suffix: inner.suffix + suffix };
113
+ }
114
+ // ── Dispatch ────────────────────────────────────────────────────────────
115
+ function parseNextBlock(ctx) {
116
+ // At the cap everything folds into a paragraph, covering the bytes without another frame.
117
+ if (ctx.depth >= MAX_NESTING_DEPTH) {
118
+ return parseParagraph(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia);
119
+ }
120
+ for (const opener of ctx.grammar.orderedOpeners()) {
121
+ const result = opener.tryOpen(ctx);
122
+ if (!result)
123
+ continue;
124
+ if (result.consumed <= 0) {
125
+ reportNonAdvancingOpener(ctx, result);
126
+ continue;
127
+ }
128
+ if (DEV)
129
+ assertOpenerRawMatches(ctx, result);
130
+ return result;
131
+ }
132
+ // Paragraph is the total fallback; it also detects setext headings and tables.
133
+ return parseParagraph(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia);
134
+ }
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
+ */
140
+ function reportNonAdvancingOpener(ctx, result) {
141
+ assertInvariant('opener-advance', () => ({
142
+ 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)`,
145
+ detail: result.node.kind
146
+ }));
147
+ }
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
+ */
153
+ function assertOpenerRawMatches(ctx, result) {
154
+ assertInvariant('opener-raw', () => result.node.raw === joinRaw(ctx.lines, ctx.index, ctx.index + result.consumed)
155
+ ? null
156
+ : {
157
+ code: 'opener-stale-raw',
158
+ message: `opener for kind "${result.node.kind}" built raw that does not byte-match its ` +
159
+ `${result.consumed} consumed source line(s)`,
160
+ detail: result.node.kind
161
+ });
162
+ }
163
+ // ── 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
+ }
180
+ export function isBlankParagraph(node) {
181
+ return node.kind === 'paragraph' && isBlankSource(node.raw);
182
+ }
183
+ export function joinRaw(lines, startIndex, endIndex) {
184
+ let result = '';
185
+ for (let i = startIndex; i < endIndex; i++) {
186
+ result += lines[i].raw;
187
+ }
188
+ return result;
189
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Blockquote parser with CommonMark §5.1 lazy continuation. "Open paragraph" is
3
+ * approximated per line (non-blank, not a block opener), not tracked as parser state.
4
+ */
5
+ import { type ParsedLine } from '../lines';
6
+ import { type BlockOpenerResult } from '../../schema/block-openers';
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): {
14
+ raw: string;
15
+ nextIndex: number;
16
+ };
17
+ export declare function parseBlockquote(lines: ParsedLine[], startIndex: number, endIndex: number, leadingTrivia: string, depth?: number, isDocumentParse?: boolean): BlockOpenerResult;
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Blockquote parser with CommonMark §5.1 lazy continuation. "Open paragraph" is
3
+ * approximated per line (non-blank, not a block opener), not tracked as parser state.
4
+ */
5
+ import { remapStrippedLines } from '../lines';
6
+ import { joinRaw, parseBlocks, isBlankLine } from '../parser';
7
+ import { defaultGrammarView, lineInterruptsParagraph, lineStartsOuterBlock } from '../../schema/block-openers';
8
+ export function matchBlockquote(text) {
9
+ return /^ {0,3}>/.test(text);
10
+ }
11
+ function stripBlockquotePrefix(text) {
12
+ return text.replace(/^ {0,3}>[ \t]?/, '');
13
+ }
14
+ /** Lazy continuation extends only an open paragraph, not an open list or other container. */
15
+ function wouldKeepParagraphOpen(strippedText) {
16
+ if (isBlankLine(strippedText))
17
+ return false;
18
+ if (lineInterruptsParagraph(strippedText))
19
+ return false;
20
+ if (matchBlockquote(strippedText))
21
+ return false;
22
+ return true;
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) {
30
+ let i = startIndex;
31
+ let paragraphOpen = false;
32
+ while (i < endIndex) {
33
+ const lineText = lines[i].text;
34
+ if (matchBlockquote(lineText)) {
35
+ const stripped = stripBlockquotePrefix(lineText);
36
+ paragraphOpen = wouldKeepParagraphOpen(stripped);
37
+ i++;
38
+ continue;
39
+ }
40
+ if (paragraphOpen &&
41
+ wouldKeepParagraphOpen(lineText) &&
42
+ !lineStartsOuterBlock(lines[i], { paragraphOpen: true })) {
43
+ i++;
44
+ continue;
45
+ }
46
+ break;
47
+ }
48
+ return { raw: joinRaw(lines, startIndex, i), nextIndex: i };
49
+ }
50
+ export function parseBlockquote(lines, startIndex, endIndex, leadingTrivia, depth = 0, isDocumentParse = false) {
51
+ const { raw, nextIndex: i } = blockquoteExtent(lines, startIndex, endIndex);
52
+ // Lazy lines have no `> ` to strip; verbatim keeps the recursive parse seeing one paragraph.
53
+ 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);
55
+ const quotePrefix = lines[startIndex].text.match(/^ {0,3}(>[ \t]?)+/)[0];
56
+ const quoteDepth = quotePrefix.match(/>/g).length;
57
+ return {
58
+ node: {
59
+ kind: 'blockquote',
60
+ leadingTrivia,
61
+ raw,
62
+ metadata: { quoteDepth },
63
+ innerPrefix: '',
64
+ children: inner.children,
65
+ innerSuffix: inner.suffix
66
+ },
67
+ consumed: i - startIndex
68
+ };
69
+ }
@@ -0,0 +1,8 @@
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.
7
+ */
8
+ export declare function registerBuiltInOpeners(): void;
@@ -0,0 +1,124 @@
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.
7
+ */
8
+ import { registerBlockOpener } from '../../schema/block-openers';
9
+ import { OPENER_PRIORITIES } from '../../schema/opener-priorities';
10
+ import { matchFenceOpen } from './fence-syntax';
11
+ import { parseFencedCode } from './fenced-code';
12
+ import { matchHeading } from './heading';
13
+ import { matchThematicBreak } from './thematic-break';
14
+ import { matchBlockquote, parseBlockquote } from './blockquote';
15
+ import { matchListItem, parseList, canInterruptParagraph as listCanInterrupt } from './list';
16
+ import { matchIndentedCode, parseIndentedCode } from './indented-code';
17
+ import { matchHtmlBlock, parseHtmlBlock, canInterruptParagraph as htmlCanInterrupt } from './html-block';
18
+ import { parseLinkReferenceDefinition } from './link-reference';
19
+ // Idempotence guard, not a registry bypass: a dev-server re-eval resets it so
20
+ // the register-once dev valve still replaces.
21
+ let registered = false;
22
+ export function registerBuiltInOpeners() {
23
+ if (registered)
24
+ return;
25
+ registered = true;
26
+ registerBlockOpener('fencedCode', {
27
+ priority: OPENER_PRIORITIES.fencedCode,
28
+ tryOpen(ctx) {
29
+ const fence = matchFenceOpen(ctx.line.text);
30
+ if (!fence)
31
+ return null;
32
+ return parseFencedCode(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia, fence);
33
+ },
34
+ interruptsParagraph: (t) => matchFenceOpen(t) !== null
35
+ });
36
+ registerBlockOpener('heading', {
37
+ priority: OPENER_PRIORITIES.heading,
38
+ tryOpen(ctx) {
39
+ const heading = matchHeading(ctx.line.text);
40
+ if (!heading)
41
+ return null;
42
+ return {
43
+ node: {
44
+ kind: 'heading',
45
+ leadingTrivia: ctx.leadingTrivia,
46
+ raw: ctx.line.raw,
47
+ metadata: { level: heading.level }
48
+ },
49
+ consumed: 1
50
+ };
51
+ },
52
+ interruptsParagraph: (t) => matchHeading(t) !== null
53
+ });
54
+ // Setext heading's `---` underline is disambiguated inside parseParagraph;
55
+ // at dispatch a bare thematic line can't be an underline (no open paragraph).
56
+ registerBlockOpener('thematicBreak', {
57
+ priority: OPENER_PRIORITIES.thematicBreak,
58
+ tryOpen(ctx) {
59
+ const marker = matchThematicBreak(ctx.line.text);
60
+ if (!marker)
61
+ return null;
62
+ return {
63
+ node: {
64
+ kind: 'thematicBreak',
65
+ leadingTrivia: ctx.leadingTrivia,
66
+ raw: ctx.line.raw,
67
+ metadata: { marker }
68
+ },
69
+ consumed: 1
70
+ };
71
+ },
72
+ // `---` is ambiguous with a setext L2 underline, which has first claim.
73
+ interruptsParagraph: (t) => {
74
+ const marker = matchThematicBreak(t);
75
+ return marker === '*' || marker === '_';
76
+ }
77
+ });
78
+ registerBlockOpener('blockquote', {
79
+ priority: OPENER_PRIORITIES.blockquote,
80
+ tryOpen(ctx) {
81
+ if (!matchBlockquote(ctx.line.text))
82
+ return null;
83
+ return parseBlockquote(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia, ctx.depth, ctx.isDocumentParse);
84
+ },
85
+ interruptsParagraph: matchBlockquote
86
+ });
87
+ registerBlockOpener('list', {
88
+ priority: OPENER_PRIORITIES.list,
89
+ tryOpen(ctx) {
90
+ if (!matchListItem(ctx.line.text))
91
+ return null;
92
+ return parseList(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia, ctx.depth, ctx.isDocumentParse);
93
+ },
94
+ interruptsParagraph: listCanInterrupt
95
+ });
96
+ registerBlockOpener('indentedCode', {
97
+ priority: OPENER_PRIORITIES.indentedCode,
98
+ tryOpen(ctx) {
99
+ if (!matchIndentedCode(ctx.line.text))
100
+ return null;
101
+ return parseIndentedCode(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia);
102
+ },
103
+ // GFM §4.4: indented code cannot interrupt a paragraph. An open paragraph absorbs the
104
+ // indented line lazily, so this opener only sees lines with no paragraph open.
105
+ interruptsParagraph: false
106
+ });
107
+ registerBlockOpener('htmlBlock', {
108
+ priority: OPENER_PRIORITIES.htmlBlock,
109
+ tryOpen(ctx) {
110
+ const type = matchHtmlBlock(ctx.line.text);
111
+ if (type === null)
112
+ return null;
113
+ return parseHtmlBlock(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia, type);
114
+ },
115
+ interruptsParagraph: htmlCanInterrupt
116
+ });
117
+ registerBlockOpener('linkReferenceDefinition', {
118
+ priority: OPENER_PRIORITIES.linkReferenceDefinition,
119
+ tryOpen(ctx) {
120
+ return parseLinkReferenceDefinition(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia);
121
+ },
122
+ interruptsParagraph: false
123
+ });
124
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * The fence grammar's line predicates, split from the block parser so the write-side rule
3
+ * (`schema/fenced-code-raw.ts`) can read them without pulling `core/parser` into schema.
4
+ */
5
+ /**
6
+ * The fence-open shape, re-exported on `@voithos-labs/aragonite/plugin` for fence-claiming openers:
7
+ * `info` is the trimmed dispatch string; `indent`/`infoRaw` are the verbatim rebuild bytes.
8
+ */
9
+ export interface FenceOpen {
10
+ marker: '`' | '~';
11
+ length: number;
12
+ info: string;
13
+ indent: string;
14
+ infoRaw: string;
15
+ }
16
+ export declare function matchFenceOpen(text: string): FenceOpen | null;
17
+ export declare function matchFenceClose(text: string, marker: '`' | '~', minLength: number): boolean;
18
+ /**
19
+ * The fence length needed to wrap `body`: one past every body line the parser would read
20
+ * as this block's closer, never below `minimum`. Without it a body line reproducing the
21
+ * terminator closes the block early and ejects everything below it on reparse. A floor,
22
+ * not a target: it never shortens an existing fence.
23
+ */
24
+ export declare function escalatedFenceLength(body: string, marker: '`' | '~', minimum: number): number;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * The fence grammar's line predicates, split from the block parser so the write-side rule
3
+ * (`schema/fenced-code-raw.ts`) can read them without pulling `core/parser` into schema.
4
+ */
5
+ import { escalateTerminatorRun } from '../terminator-escalation';
6
+ // Backtick info may not contain backticks (CommonMark §4.5); tilde info may.
7
+ const BACKTICK_OPEN = /^( {0,3})(`{3,})([^`]*)$/;
8
+ const TILDE_OPEN = /^( {0,3})(~{3,})(.*)$/;
9
+ export function matchFenceOpen(text) {
10
+ const m = text.match(BACKTICK_OPEN) ?? text.match(TILDE_OPEN);
11
+ if (!m)
12
+ return null;
13
+ const [, indent, fence, infoRaw] = m;
14
+ return {
15
+ marker: fence[0],
16
+ length: fence.length,
17
+ info: infoRaw.trim(),
18
+ indent,
19
+ infoRaw
20
+ };
21
+ }
22
+ export function matchFenceClose(text, marker, minLength) {
23
+ const pattern = marker === '`' ? /^ {0,3}(`{3,})\s*$/ : /^ {0,3}(~{3,})\s*$/;
24
+ const m = text.match(pattern);
25
+ return Boolean(m && m[1].length >= minLength);
26
+ }
27
+ /**
28
+ * The fence length needed to wrap `body`: one past every body line the parser would read
29
+ * as this block's closer, never below `minimum`. Without it a body line reproducing the
30
+ * terminator closes the block early and ejects everything below it on reparse. A floor,
31
+ * not a target: it never shortens an existing fence.
32
+ */
33
+ export function escalatedFenceLength(body, marker, minimum) {
34
+ return escalateTerminatorRun(body, minimum, (text, required) => matchFenceClose(text, marker, required) ? fenceRunLength(text, marker) : null);
35
+ }
36
+ function fenceRunLength(text, marker) {
37
+ let index = 0;
38
+ while (text[index] === ' ')
39
+ index++;
40
+ let run = 0;
41
+ while (text[index + run] === marker)
42
+ run++;
43
+ return run;
44
+ }
@@ -0,0 +1,7 @@
1
+ import type { ParsedLine } from '../lines';
2
+ import type { BlockOpenerResult } from '../../schema/block-openers';
3
+ export declare function parseFencedCode(lines: ParsedLine[], startIndex: number, endIndex: number, leadingTrivia: string, fence: {
4
+ marker: '`' | '~';
5
+ length: number;
6
+ info: string;
7
+ }): BlockOpenerResult;
@@ -0,0 +1,29 @@
1
+ import { joinRaw } from '../parser';
2
+ import { matchFenceClose } from './fence-syntax';
3
+ export function parseFencedCode(lines, startIndex, endIndex, leadingTrivia, fence) {
4
+ let i = startIndex + 1;
5
+ let closed = false;
6
+ while (i < endIndex) {
7
+ if (matchFenceClose(lines[i].text, fence.marker, fence.length)) {
8
+ i++;
9
+ closed = true;
10
+ break;
11
+ }
12
+ i++;
13
+ }
14
+ const raw = joinRaw(lines, startIndex, i);
15
+ return {
16
+ node: {
17
+ kind: 'fencedCode',
18
+ leadingTrivia,
19
+ raw,
20
+ metadata: {
21
+ fenceMarker: fence.marker,
22
+ fenceLength: fence.length,
23
+ info: fence.info,
24
+ closed
25
+ }
26
+ },
27
+ consumed: i - startIndex
28
+ };
29
+ }
@@ -0,0 +1,3 @@
1
+ export declare function matchHeading(text: string): {
2
+ level: number;
3
+ } | null;
@@ -0,0 +1,6 @@
1
+ // ATX headings only. Setext (`===` / `---` underline) lives in paragraph.ts
2
+ // because it emerges from paragraph continuation.
3
+ export function matchHeading(text) {
4
+ const m = text.match(/^ {0,3}(#{1,6})(?:\s|$)/);
5
+ return m ? { level: m[1].length } : null;
6
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * HTML block parser, CommonMark §4.6: seven block types, each with its own close
3
+ * condition. Types 1-5 close on a per-type pattern; types 6-7 close on a blank line.
4
+ */
5
+ import type { ParsedLine } from '../lines';
6
+ import type { BlockOpenerResult } from '../../schema/block-openers';
7
+ export type HtmlBlockType = 1 | 2 | 3 | 4 | 5 | 6 | 7;
8
+ /**
9
+ * Recognize a type-6 tag line for ONE listed tag name, open or close. Built from the same
10
+ * shape as the type-6 union so a container whose terminator is an html tag line tests the
11
+ * spec's looseness (` </details>`, `</DETAILS>`, `<details >`) rather than a copy of it.
12
+ */
13
+ export declare function htmlBlockTagLineMatcher(tagName: string): (text: string) => 'open' | 'close' | null;
14
+ export declare function matchHtmlBlock(text: string): HtmlBlockType | null;
15
+ /** Types 1-6 interrupt a paragraph; type 7 (catch-all complete tags) cannot, per §4.6. */
16
+ export declare function canInterruptParagraph(text: string): boolean;
17
+ export declare function parseHtmlBlock(lines: ParsedLine[], startIndex: number, endIndex: number, leadingTrivia: string, type: HtmlBlockType): BlockOpenerResult;
@@ -0,0 +1,94 @@
1
+ /**
2
+ * HTML block parser, CommonMark §4.6: seven block types, each with its own close
3
+ * condition. Types 1-5 close on a per-type pattern; types 6-7 close on a blank line.
4
+ */
5
+ import { joinRaw, isBlankLine } from '../parser';
6
+ import { OPEN_TAG_SOURCE, CLOSE_TAG_SOURCE } from '../inline/html-tag-grammar';
7
+ // ── Per-type opener patterns ────────────────────────────────────────────────
8
+ // Priority 1 → 7, first match wins. script/pre/style/textarea must stay out of type 6's
9
+ // tag union: they close on their end tag, not on a blank line.
10
+ const TYPE_1_OPEN = /^ {0,3}<(?:script|pre|style|textarea)(?:[\s/>]|$)/i;
11
+ const TYPE_2_OPEN = /^ {0,3}<!--/;
12
+ const TYPE_3_OPEN = /^ {0,3}<\?/;
13
+ const TYPE_4_OPEN = /^ {0,3}<![A-Za-z]/;
14
+ const TYPE_5_OPEN = /^ {0,3}<!\[CDATA\[/;
15
+ const TYPE_6_TAGS = 'address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|template|tfoot|th|thead|title|tr|track|ul';
16
+ function type6Shape(names) {
17
+ return `^ {0,3}<(/?)(?:${names})(?:[\\s/>]|$)`;
18
+ }
19
+ const TYPE_6_OPEN = new RegExp(type6Shape(TYPE_6_TAGS), 'i');
20
+ /**
21
+ * Recognize a type-6 tag line for ONE listed tag name, open or close. Built from the same
22
+ * shape as the type-6 union so a container whose terminator is an html tag line tests the
23
+ * spec's looseness (` </details>`, `</DETAILS>`, `<details >`) rather than a copy of it.
24
+ */
25
+ export function htmlBlockTagLineMatcher(tagName) {
26
+ const pattern = new RegExp(type6Shape(tagName), 'i');
27
+ return (text) => {
28
+ const m = pattern.exec(text);
29
+ return m === null ? null : m[1] === '/' ? 'close' : 'open';
30
+ };
31
+ }
32
+ // CommonMark §6.6 complete-tag grammar at line scope, reusing the inline raw-HTML sources
33
+ // (core/inline/html-tag-grammar.ts). Priority LAST: types 1 and 6 claim their names first,
34
+ // which is what implements the spec's exclusion of the type-1 tag names.
35
+ const TYPE_7_OPEN = new RegExp(`^ {0,3}(?:${OPEN_TAG_SOURCE}|${CLOSE_TAG_SOURCE})\\s*$`);
36
+ export function matchHtmlBlock(text) {
37
+ if (TYPE_1_OPEN.test(text))
38
+ return 1;
39
+ if (TYPE_2_OPEN.test(text))
40
+ return 2;
41
+ if (TYPE_3_OPEN.test(text))
42
+ return 3;
43
+ if (TYPE_4_OPEN.test(text))
44
+ return 4;
45
+ if (TYPE_5_OPEN.test(text))
46
+ return 5;
47
+ if (TYPE_6_OPEN.test(text))
48
+ return 6;
49
+ if (TYPE_7_OPEN.test(text))
50
+ return 7;
51
+ return null;
52
+ }
53
+ /** Types 1-6 interrupt a paragraph; type 7 (catch-all complete tags) cannot, per §4.6. */
54
+ export function canInterruptParagraph(text) {
55
+ const type = matchHtmlBlock(text);
56
+ return type !== null && type !== 7;
57
+ }
58
+ // ── Per-type close conditions ───────────────────────────────────────────────
59
+ const TYPE_1_CLOSE = /<\/(?:script|pre|style|textarea)>/i;
60
+ function closesOnLine(type, text) {
61
+ switch (type) {
62
+ case 1:
63
+ return TYPE_1_CLOSE.test(text);
64
+ case 2:
65
+ return text.includes('-->');
66
+ case 3:
67
+ return text.includes('?>');
68
+ case 4:
69
+ return text.includes('>');
70
+ case 5:
71
+ return text.includes(']]>');
72
+ case 6:
73
+ case 7:
74
+ return isBlankLine(text);
75
+ }
76
+ }
77
+ // ── Parser ──────────────────────────────────────────────────────────────────
78
+ export function parseHtmlBlock(lines, startIndex, endIndex, leadingTrivia, type) {
79
+ let i = startIndex;
80
+ while (i < endIndex) {
81
+ if (closesOnLine(type, lines[i].text)) {
82
+ // Types 6-7 leave their closing blank line out so parseBlocks takes it as pendingTrivia.
83
+ if (type !== 6 && type !== 7)
84
+ i++;
85
+ break;
86
+ }
87
+ i++;
88
+ }
89
+ const raw = joinRaw(lines, startIndex, i);
90
+ return {
91
+ node: { kind: 'htmlBlock', leadingTrivia, raw },
92
+ consumed: i - startIndex
93
+ };
94
+ }
@@ -0,0 +1,4 @@
1
+ import type { ParsedLine } from '../lines';
2
+ import type { BlockOpenerResult } from '../../schema/block-openers';
3
+ export declare function matchIndentedCode(text: string): boolean;
4
+ export declare function parseIndentedCode(lines: ParsedLine[], startIndex: number, endIndex: number, leadingTrivia: string): BlockOpenerResult;