@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,33 @@
1
+ /**
2
+ * Runtime `BlockKind → component` map. BlockHost looks up by kind; plugin
3
+ * kinds register a descriptor plus a component entry.
4
+ */
5
+ import { isBuiltinBlockKind } from '../core/nodes';
6
+ import { deletePluginEntries, registerOnce } from './register-once';
7
+ /**
8
+ * Typed constructor for a registry entry: the component publishes one of the two sanctioned
9
+ * surface shapes, and its props are a subset of what BlockHost passes. A container that forgot
10
+ * its `containerApi` fails here rather than mounting as a block nothing can focus. The internal
11
+ * cast widens contravariant props to the registry's `Record<string, unknown>`.
12
+ */
13
+ export function defineBlockComponent(component, extraProps) {
14
+ return { component: component, extraProps };
15
+ }
16
+ const registry = new Map();
17
+ export function registerBlockComponent(kind, entry) {
18
+ registerOnce(registry.has(kind), () => registry.set(kind, entry), `registerBlockComponent: "${kind}" is already registered. Components are register-once.`);
19
+ }
20
+ export function getBlockComponent(kind) {
21
+ return registry.get(kind);
22
+ }
23
+ /**
24
+ * Probe whether a component is registered — `registerBlockComponent` throws on duplicate, so a
25
+ * plugin registering idempotently (HMR / re-import) guards on this. Takes a plain name.
26
+ */
27
+ export function isBlockComponentRegistered(kind) {
28
+ return registry.has(kind);
29
+ }
30
+ /** Test-only. Removes every non-built-in component entry; built-ins survive. */
31
+ export function __removePluginComponentsForTests() {
32
+ deletePluginEntries(registry, isBuiltinBlockKind);
33
+ }
@@ -0,0 +1,281 @@
1
+ import { type AnyBlockKind, type CstNode } from '../core/nodes';
2
+ import type { NodeView } from '../core/node-views';
3
+ import type { ContainerBodyWrap } from '../core/parser';
4
+ import type { ChildRawChange } from './child-spans';
5
+ import type { ClosureBlock } from './closure';
6
+ import type { KeyBinding } from './keybindings';
7
+ /**
8
+ * Backspace-merge role. Full spec: `docs/design/editor.md` — Merge eligibility: roles, not pairs.
9
+ * Lives here, not `merge-rules.ts`, so the descriptor registry can reference it without a cycle.
10
+ * The tuple is the one home: G1.30's runtime vocabulary is derived from it, not re-listed.
11
+ */
12
+ export declare const MERGE_ROLES: readonly ["prose", "prose-absorber", "container", "self-merge", "not-mergeable"];
13
+ export type MergeRole = (typeof MERGE_ROLES)[number];
14
+ /** G1.30's runtime half, for the registrations a `MergeRole` parameter cannot bind (plugin casts). */
15
+ export declare const isKnownMergeRole: (role: string) => boolean;
16
+ /**
17
+ * The first-child Backspace strategies, each answering whether it carries child 0 out of the
18
+ * container. G1.37's chrome arms read that answer, so a new strategy cannot arrive without one.
19
+ */
20
+ declare const FIRST_CHILD_BACKSPACE_LIFTS: {
21
+ readonly 'lift-first-child-drop-opener': true;
22
+ readonly 'lift-first-child-keep-container': true;
23
+ readonly 'keep-reserved-chrome': false;
24
+ readonly 'list-item-cascade': false;
25
+ };
26
+ export type FirstChildBackspace = keyof typeof FIRST_CHILD_BACKSPACE_LIFTS;
27
+ export declare const liftsFirstChild: (strategy: FirstChildBackspace) => boolean;
28
+ /**
29
+ * Backspace-at-start behavior for a container's children; strategies live in
30
+ * `editor-actions/unwrap-strategies.ts`. Absent = default (first child delegates upward;
31
+ * middle children follow merge-rules).
32
+ */
33
+ export interface UnwrapRole {
34
+ /**
35
+ * `'-drop-opener'` is the quote shape, whose opener line goes with the lift so the
36
+ * remainder reparses as a plain quote; `'-keep-container'` is the shape `rebuildRaw`
37
+ * re-emits, so the remainder keeps its kind; `'keep-reserved-chrome'` declines, because
38
+ * child 0 is the container's chrome and a lift would carry it out.
39
+ */
40
+ firstChildBackspace: FirstChildBackspace;
41
+ middleChildBackspace: 'default-merge' | 'list-item-cascade';
42
+ }
43
+ /**
44
+ * A container whose direct children reorder among themselves (Alt+Arrow / drag handle). The
45
+ * reorder walk resolves the unit at the nearest ancestor declaring this; absent = children are
46
+ * NOT independently reorderable, and the container declines the reorder at its boundary.
47
+ */
48
+ export interface ReorderChildrenRole {
49
+ /**
50
+ * Direct children carry position-dependent markers needing a renumber after a permutation
51
+ * (ordered-list numbering). Absent = position-independent, so `rebuildRaw` alone re-emits.
52
+ */
53
+ renumberMarkers?: true;
54
+ }
55
+ /**
56
+ * A caret landing inside a kind's own addressing: the child path a `focusByPath` walks (empty
57
+ * for a leaf, which is its own landing) and the offset within the leaf it names. `CURSOR_END`
58
+ * is a legal offset here, and the one way to say "wherever that leaf ends".
59
+ */
60
+ export interface CaretTarget {
61
+ path: number[];
62
+ offset: number;
63
+ }
64
+ export interface BlockKindDescriptor {
65
+ mergeRole: MergeRole;
66
+ editable: boolean;
67
+ /**
68
+ * The kind's closure-matrix row: its answer to every cross-cutting editor system. Required,
69
+ * so a kind cannot ship closed under a subsystem nobody asked about.
70
+ */
71
+ closure: ClosureBlock;
72
+ /**
73
+ * Markdown parsing to a tree containing this kind, for the conformance battery; omit for
74
+ * kinds no document scan yields in isolation. G1.24 checks a declared fixture, not existence.
75
+ */
76
+ conformanceFixture?: string;
77
+ /**
78
+ * `'whole-block'` opts an opaque, childless block into the focus-then-delete model: arrow
79
+ * traversal stops on it, and Backspace/Delete focuses it before a second press deletes.
80
+ */
81
+ blockFocus?: 'whole-block';
82
+ /**
83
+ * Edges whose sibling-paragraph insertion this kind's own editing surface cannot host, so an
84
+ * eligible boundary beside it gets a gap caret (`selection/gap-caret.ts`). Required, with
85
+ * `'none'` the explicit answer: the surface, or an existing affordance, already covers
86
+ * insertion at both edges. An omission once read as that decision; now it cannot compile.
87
+ */
88
+ gapEdges: 'before' | 'after' | 'both' | 'none';
89
+ isContainer: boolean;
90
+ /**
91
+ * Shape of a container's raw↔children relationship (container kinds only).
92
+ * `'strip'` — outer syntax wraps a strip-and-recurse body: `strip(raw) === serialize(children)`.
93
+ * `'grid'` — cells parse straight from `raw`, and that does not hold. A cell index addresses
94
+ * the OUTER grid as `row * width + column`: rows of equal-width cells, the width read off row 0.
95
+ * `'opaque'` — `raw` is authoritative, not a strip-decomposition; exempt from the stale-raw
96
+ * byte-check, and its `rebuildRaw` must be deterministic over children/metadata/inner trivia.
97
+ */
98
+ containerContract?: 'strip' | 'grid' | 'opaque';
99
+ /**
100
+ * The wrap this container's opener parses its body with, when the body sits between chrome
101
+ * lines of the container's own: a parse then peels the chrome-adjacent blank line into
102
+ * `innerPrefix`/`innerSuffix` (`core/parser.parseContainerBody`), which is what makes that
103
+ * line the wrap's rather than a body block. Absent = the body starts at the container's own
104
+ * first line (blockquote, list item) and `innerPrefix` is always empty.
105
+ */
106
+ bodyWrap?: ContainerBodyWrap;
107
+ /**
108
+ * The kind has no standalone line recognizer, so `parse(raw)` would NOT reproduce it: its
109
+ * container's rebuildRaw owns the syntax, and a content edit writes `raw` without re-deriving.
110
+ */
111
+ contextDependentKind?: boolean;
112
+ /**
113
+ * Make `raw` legal as this kind's own bytes: escape what the grammar would restructure, and
114
+ * restore, drop, escalate or sanitize the block's own syntax around a write that broke it
115
+ * (`schema/fenced-code-raw.ts` is the worked rule). Reads `node` for the block's own shape,
116
+ * must be idempotent, and owes callers a caret image when it is not prefix-composable. Every
117
+ * write sink applies it.
118
+ */
119
+ normalizeRawWrite?: (raw: string, node: NodeView) => string;
120
+ /**
121
+ * Make text legal as a CHILD's raw inside this container's body (container kinds only) —
122
+ * `normalizeRawWrite`'s ancestor-side counterpart, for a container whose FIXED terminator
123
+ * (`</details>`) a body write could otherwise reproduce and truncate on. Applied at the write
124
+ * sinks upstream of the kind-deriving reparse, since the escape changes what the bytes parse
125
+ * to. `normalize` is idempotent and LINE-LOCAL; `mapOffset` is its exact caret image.
126
+ */
127
+ bodyWrite?: {
128
+ normalize: (raw: string) => string;
129
+ mapOffset: (raw: string, offset: number) => number;
130
+ };
131
+ /**
132
+ * Child index 0 is a reserved chrome leaf of the given kind — a title whose bytes live in the
133
+ * container's own raw. Enforced: always present, single-line, cleared-not-deleted by range
134
+ * ops, kind-stable. Register the chrome kind itself via `registerChromeLeaf`.
135
+ */
136
+ reservedChrome?: {
137
+ kind: AnyBlockKind;
138
+ /**
139
+ * PURE model probe (node in, bool out; no DOM, no component state) for collapsed state.
140
+ * Collapse-aware walks stop at the chrome leaf rather than reach into a clamped-out body.
141
+ */
142
+ isCollapsed?: (node: NodeView) => boolean;
143
+ /**
144
+ * Pure patch that expands a collapsed node, so a reveal aimed at a clamped-out body child
145
+ * opens the container. Absent or null = no door, and the reveal degrades to the chrome row.
146
+ */
147
+ expandPatch?: (node: NodeView) => Record<string, unknown> | null;
148
+ };
149
+ /**
150
+ * How a clipboard whose TOP block is this kind merges into a same-kind ancestor instead of
151
+ * nesting as a sub-container. Absent = always nest (the default structural path).
152
+ */
153
+ containerPaste?: {
154
+ /** Confirms the merge against the candidate ancestor (e.g. equal list ordered flags). */
155
+ matchesAncestor: (clipboardTop: CstNode, ancestor: CstNode) => boolean;
156
+ /**
157
+ * Non-empty single-block targets: splice clipboard items as siblings in the enclosing
158
+ * container when it matches, split it when it doesn't. The apply path is list-shaped.
159
+ */
160
+ siblingAbsorb: boolean;
161
+ };
162
+ /** Backspace-at-start unwrap strategies for this container's children. Absent = default dispatch. */
163
+ unwrapRole?: UnwrapRole;
164
+ /**
165
+ * `'complete-marker'` consumes EVERY space typed at the content start of an empty child, at
166
+ * any child index, repeated presses included. A `rebuildRaw` that canonicalizes the marker's
167
+ * trailing space is what makes the first press byte-honest: the space it took reappears the
168
+ * moment content arrives. Without one, every press is simply eaten.
169
+ */
170
+ contentStartSpace?: 'complete-marker';
171
+ /** This container's direct children reorder among themselves. Absent = not reorder-within. */
172
+ reorderChildren?: ReorderChildrenRole;
173
+ /** Chord -> command map, consulted before the global table so a kind can shadow a global. */
174
+ keymap?: KeyBinding[];
175
+ /** True when the block's raw contains inline syntax the inline parser should process on every edit. */
176
+ supportsInline: boolean;
177
+ /**
178
+ * Content range (post-marker offsets) in a node's raw, for prose kinds whose markers occupy
179
+ * a prefix of it. Absent = the default `start=0, end=displayLength`.
180
+ */
181
+ getContentRange?: (node: NodeView) => {
182
+ start: number;
183
+ end: number;
184
+ };
185
+ /**
186
+ * `'demote-first'` makes Backspace at the CONTENT start give up this kind's own structural
187
+ * bytes before merging — the first press a user can aim at markers they cannot see
188
+ * (live-mode.md § 4.4).
189
+ * Marker-hiding modes only; requires `getContentRange` (G1.32). Absent = the merge cascade.
190
+ */
191
+ contentStartBackspace?: 'demote-first';
192
+ /**
193
+ * Recompute `raw` from children + metadata; built-ins in `schema/container-rebuilders.ts`.
194
+ * `changed` names the one child whose own raw just moved, for a rebuilder that can rewrite
195
+ * that child's region instead of re-reading every child. Ignoring it is always correct.
196
+ */
197
+ rebuildRaw?: (node: CstNode, changed?: ChildRawChange) => void;
198
+ /** Inline image nodes render as widgets in this kind; opt out (e.g. tableCell) for alt-only fallback. */
199
+ renderImagesAsWidgets?: boolean;
200
+ /**
201
+ * Translate a foreign drag's viewport point into an internal focus offset, for a kind with
202
+ * its own coordinate addressing; null when the point is outside an addressable region.
203
+ * Patched in from `components/built-in-blocks.ts`, so schema keeps no component import.
204
+ */
205
+ foreignDragHitTest?: (blockEl: HTMLElement, clientX: number, clientY: number) => number | null;
206
+ /**
207
+ * Translate a point in this block's box into a caret landing in the kind's own addressing.
208
+ * TOTAL within the box, unlike {@link foreignDragHitTest}: snap to the NEAREST leaf where a
209
+ * drag declines off-cell.
210
+ */
211
+ caretTargetAtPoint?: (blockEl: HTMLElement, clientX: number, clientY: number) => CaretTarget | null;
212
+ /** O(1) content-height estimate in px for virtual rendering — no subtree walk.
213
+ * The oracle adds block chrome; the measured cache still supersedes. */
214
+ estimateHeight?: (node: NodeView, env: {
215
+ width: number;
216
+ }) => number;
217
+ }
218
+ /**
219
+ * The descriptor's fields as data, for the census that holds the published field reference
220
+ * (`docs/design/plugin-contract.md`) to this type. Complete in both directions below, so the
221
+ * manifest cannot drift from the shape it enumerates.
222
+ */
223
+ export declare const DESCRIPTOR_FIELDS: readonly ["mergeRole", "editable", "closure", "conformanceFixture", "blockFocus", "gapEdges", "isContainer", "containerContract", "bodyWrap", "contextDependentKind", "normalizeRawWrite", "bodyWrite", "reservedChrome", "containerPaste", "unwrapRole", "contentStartSpace", "reorderChildren", "keymap", "supportsInline", "getContentRange", "contentStartBackspace", "rebuildRaw", "renderImagesAsWidgets", "foreignDragHitTest", "caretTargetAtPoint", "estimateHeight"];
224
+ /**
225
+ * Container-only fields as one unit: `contract` and `rebuildRaw` are required together, and a
226
+ * leaf has no way to carry any of them. Field semantics live on `BlockKindDescriptor`, the flat
227
+ * read-side shape the group normalizes into.
228
+ */
229
+ export interface ContainerDescriptorGroup {
230
+ contract: 'strip' | 'grid' | 'opaque';
231
+ rebuildRaw: (node: CstNode, changed?: ChildRawChange) => void;
232
+ bodyWrap?: ContainerBodyWrap;
233
+ reservedChrome?: BlockKindDescriptor['reservedChrome'];
234
+ containerPaste?: BlockKindDescriptor['containerPaste'];
235
+ unwrapRole?: UnwrapRole;
236
+ contentStartSpace?: BlockKindDescriptor['contentStartSpace'];
237
+ reorderChildren?: ReorderChildrenRole;
238
+ bodyWrite?: BlockKindDescriptor['bodyWrite'];
239
+ }
240
+ export declare const CONTAINER_ONLY_KEYS: readonly ["isContainer", "containerContract", "bodyWrap", "rebuildRaw", "reservedChrome", "containerPaste", "unwrapRole", "contentStartSpace", "reorderChildren", "bodyWrite"];
241
+ type ContainerOnlyKey = (typeof CONTAINER_ONLY_KEYS)[number];
242
+ /**
243
+ * The write-side shape `registerBlockKind` accepts. `isContainer` is derived
244
+ * (`container !== undefined`), never declared.
245
+ */
246
+ export interface BlockKindRegistration extends Omit<BlockKindDescriptor, ContainerOnlyKey> {
247
+ container?: ContainerDescriptorGroup;
248
+ }
249
+ /**
250
+ * The augment shape: top-level fields replace; a partial `container` group merges into the
251
+ * existing group, and is refused outright for a kind registered as a leaf.
252
+ */
253
+ export type BlockKindAugmentation = Partial<Omit<BlockKindRegistration, 'container'>> & {
254
+ container?: Partial<ContainerDescriptorGroup>;
255
+ };
256
+ export declare function registerBlockKind(kind: AnyBlockKind, registration: BlockKindRegistration): void;
257
+ /**
258
+ * Merge fields into a plugin's own registration — the public authoring entry. Rejects built-in
259
+ * kinds (built-in wire-up uses the internal `augmentBuiltin` seam) and kinds owned by a
260
+ * different plugin, so cross-plugin last-writer-wins is a loud throw rather than a silent
261
+ * override. A kind with no recorded owner (declared outside any plugin install) stays open.
262
+ */
263
+ export declare function augmentBlockKind(kind: AnyBlockKind, fields: BlockKindAugmentation): void;
264
+ /**
265
+ * Internal seam for augmenting a BUILT-IN descriptor: top-of-DAG wire-up
266
+ * (`components/built-in-blocks.ts`) patches in behavior this file cannot import. Kept off the
267
+ * public `@voithos-labs/aragonite/plugin` surface so a plugin can't rewrite a built-in.
268
+ */
269
+ export declare function augmentBuiltin(kind: AnyBlockKind, fields: BlockKindAugmentation): void;
270
+ export declare function getBlockKindDescriptor(kind: AnyBlockKind): BlockKindDescriptor;
271
+ export declare function tryGetBlockKindDescriptor(kind: AnyBlockKind): BlockKindDescriptor | undefined;
272
+ /**
273
+ * Probe whether a kind descriptor exists — `registerBlockKind` throws on duplicate, so a plugin
274
+ * registering idempotently (HMR / re-import) guards on this. Takes a plain, unbranded name.
275
+ */
276
+ export declare function isBlockKindRegistered(kind: string): boolean;
277
+ /** Every kind currently registered. Caller must not mutate. */
278
+ export declare function getAllRegisteredKinds(): AnyBlockKind[];
279
+ /** Test-only. Removes every non-built-in descriptor; built-ins survive. */
280
+ export declare function __removePluginBlockKindsForTests(): void;
281
+ export {};
@@ -0,0 +1,187 @@
1
+ import { isBuiltinBlockKind } from '../core/nodes';
2
+ import { enqueueRegistrationCheck } from './registration-pending';
3
+ import { currentInstallingPlugin, pluginKindOwner } from './plugin-install';
4
+ import { deletePluginEntries, registerOnce } from './register-once';
5
+ /**
6
+ * Backspace-merge role. Full spec: `docs/design/editor.md` — Merge eligibility: roles, not pairs.
7
+ * Lives here, not `merge-rules.ts`, so the descriptor registry can reference it without a cycle.
8
+ * The tuple is the one home: G1.30's runtime vocabulary is derived from it, not re-listed.
9
+ */
10
+ export const MERGE_ROLES = [
11
+ 'prose',
12
+ 'prose-absorber',
13
+ 'container',
14
+ 'self-merge',
15
+ 'not-mergeable'
16
+ ];
17
+ /** G1.30's runtime half, for the registrations a `MergeRole` parameter cannot bind (plugin casts). */
18
+ export const isKnownMergeRole = (role) => MERGE_ROLES.includes(role);
19
+ /**
20
+ * The first-child Backspace strategies, each answering whether it carries child 0 out of the
21
+ * container. G1.37's chrome arms read that answer, so a new strategy cannot arrive without one.
22
+ */
23
+ const FIRST_CHILD_BACKSPACE_LIFTS = {
24
+ 'lift-first-child-drop-opener': true,
25
+ 'lift-first-child-keep-container': true,
26
+ 'keep-reserved-chrome': false,
27
+ 'list-item-cascade': false
28
+ };
29
+ export const liftsFirstChild = (strategy) => FIRST_CHILD_BACKSPACE_LIFTS[strategy];
30
+ /**
31
+ * The descriptor's fields as data, for the census that holds the published field reference
32
+ * (`docs/design/plugin-contract.md`) to this type. Complete in both directions below, so the
33
+ * manifest cannot drift from the shape it enumerates.
34
+ */
35
+ export const DESCRIPTOR_FIELDS = [
36
+ 'mergeRole',
37
+ 'editable',
38
+ 'closure',
39
+ 'conformanceFixture',
40
+ 'blockFocus',
41
+ 'gapEdges',
42
+ 'isContainer',
43
+ 'containerContract',
44
+ 'bodyWrap',
45
+ 'contextDependentKind',
46
+ 'normalizeRawWrite',
47
+ 'bodyWrite',
48
+ 'reservedChrome',
49
+ 'containerPaste',
50
+ 'unwrapRole',
51
+ 'contentStartSpace',
52
+ 'reorderChildren',
53
+ 'keymap',
54
+ 'supportsInline',
55
+ 'getContentRange',
56
+ 'contentStartBackspace',
57
+ 'rebuildRaw',
58
+ 'renderImagesAsWidgets',
59
+ 'foreignDragHitTest',
60
+ 'caretTargetAtPoint',
61
+ 'estimateHeight'
62
+ ];
63
+ const _descriptorFieldsAreComplete = true;
64
+ void _descriptorFieldsAreComplete;
65
+ // One source for both the type-level Omit and the runtime strip: excess-property checks bite
66
+ // only fresh literals, so a widened value can structurally smuggle these keys past the types.
67
+ export const CONTAINER_ONLY_KEYS = [
68
+ 'isContainer',
69
+ 'containerContract',
70
+ 'bodyWrap',
71
+ 'rebuildRaw',
72
+ 'reservedChrome',
73
+ 'containerPaste',
74
+ 'unwrapRole',
75
+ 'contentStartSpace',
76
+ 'reorderChildren',
77
+ 'bodyWrite'
78
+ ];
79
+ const _containerOnlyKeysAreComplete = true;
80
+ void _containerOnlyKeysAreComplete;
81
+ function stripContainerOnlyKeys(fields) {
82
+ const stripped = { ...fields };
83
+ for (const key of CONTAINER_ONLY_KEYS)
84
+ delete stripped[key];
85
+ return stripped;
86
+ }
87
+ // ── Registry ────────────────────────────────────────────────────────────────
88
+ const registry = new Map();
89
+ // ── Public API ──────────────────────────────────────────────────────────────
90
+ export function registerBlockKind(kind, registration) {
91
+ const isDuplicate = registry.has(kind);
92
+ const owner = isDuplicate ? pluginKindOwner(kind) : null;
93
+ registerOnce(isDuplicate, () => {
94
+ registry.set(kind, normalizeRegistration(registration));
95
+ enqueueRegistrationCheck(kind);
96
+ }, `registerBlockKind: "${kind}" is already registered. Kinds are register-once — ` +
97
+ `use augmentBlockKind to merge fields into an existing registration.` +
98
+ (owner ? ` — first declared by plugin '${owner}'` : ''));
99
+ }
100
+ // The flat part is stripped and isContainer derived, so the `container` group is the only
101
+ // source of container fields — a widened or stale-keyed registration object cannot leak.
102
+ function normalizeRegistration(registration) {
103
+ const { container, ...rest } = registration;
104
+ const flat = stripContainerOnlyKeys(rest);
105
+ if (!container)
106
+ return { ...flat, isContainer: false };
107
+ const { contract, ...containerFields } = container;
108
+ return { ...flat, ...containerFields, isContainer: true, containerContract: contract };
109
+ }
110
+ // Throws if the kind was never registered (no accidental creation via partial data). The
111
+ // built-in-vs-plugin gate lives in the two public entries below; the leaf/container gate lives
112
+ // here so both entries inherit it.
113
+ function mergeBlockKindFields(entry, kind, fields) {
114
+ const existing = registry.get(kind);
115
+ if (!existing) {
116
+ throw new Error(`${entry}: cannot augment "${kind}" — no base descriptor. Call registerBlockKind first.`);
117
+ }
118
+ const { container, ...rest } = fields;
119
+ const next = { ...existing, ...stripContainerOnlyKeys(rest) };
120
+ if (container) {
121
+ if (!existing.isContainer) {
122
+ throw new Error(`${entry}: cannot augment "${kind}" with container fields — it was registered as a leaf`);
123
+ }
124
+ // Merge, never unset: skipping undefined keeps an explicitly-undefined group field from
125
+ // breaking the contract/rebuild pairing. Keyed off the group, not a hand-kept field list.
126
+ const { contract, ...group } = container;
127
+ next.containerContract = contract ?? existing.containerContract;
128
+ Object.assign(next, Object.fromEntries(Object.entries(group).filter(([, value]) => value !== undefined)));
129
+ }
130
+ registry.set(kind, next);
131
+ enqueueRegistrationCheck(kind);
132
+ }
133
+ /**
134
+ * Merge fields into a plugin's own registration — the public authoring entry. Rejects built-in
135
+ * kinds (built-in wire-up uses the internal `augmentBuiltin` seam) and kinds owned by a
136
+ * different plugin, so cross-plugin last-writer-wins is a loud throw rather than a silent
137
+ * override. A kind with no recorded owner (declared outside any plugin install) stays open.
138
+ */
139
+ export function augmentBlockKind(kind, fields) {
140
+ if (isBuiltinBlockKind(kind)) {
141
+ throw new Error(`augmentBlockKind: "${kind}" is a built-in kind — the plugin surface may only augment ` +
142
+ `plugin-declared kinds.`);
143
+ }
144
+ const owner = pluginKindOwner(kind);
145
+ const installer = currentInstallingPlugin();
146
+ if (owner !== null && owner !== installer) {
147
+ throw new Error(`augmentBlockKind: "${kind}" is owned by plugin '${owner}' — ` +
148
+ (installer
149
+ ? `plugin '${installer}' may not augment another plugin's kind.`
150
+ : `only plugin '${owner}' may augment its own kind, from its setup.`));
151
+ }
152
+ mergeBlockKindFields('augmentBlockKind', kind, fields);
153
+ }
154
+ /**
155
+ * Internal seam for augmenting a BUILT-IN descriptor: top-of-DAG wire-up
156
+ * (`components/built-in-blocks.ts`) patches in behavior this file cannot import. Kept off the
157
+ * public `@voithos-labs/aragonite/plugin` surface so a plugin can't rewrite a built-in.
158
+ */
159
+ export function augmentBuiltin(kind, fields) {
160
+ mergeBlockKindFields('augmentBuiltin', kind, fields);
161
+ }
162
+ export function getBlockKindDescriptor(kind) {
163
+ const d = registry.get(kind);
164
+ if (!d) {
165
+ throw new Error(`getBlockKindDescriptor: no descriptor registered for kind "${kind}". ` +
166
+ `Register at module load (see built-in-descriptors.ts).`);
167
+ }
168
+ return d;
169
+ }
170
+ export function tryGetBlockKindDescriptor(kind) {
171
+ return registry.get(kind);
172
+ }
173
+ /**
174
+ * Probe whether a kind descriptor exists — `registerBlockKind` throws on duplicate, so a plugin
175
+ * registering idempotently (HMR / re-import) guards on this. Takes a plain, unbranded name.
176
+ */
177
+ export function isBlockKindRegistered(kind) {
178
+ return registry.has(kind);
179
+ }
180
+ /** Every kind currently registered. Caller must not mutate. */
181
+ export function getAllRegisteredKinds() {
182
+ return Array.from(registry.keys());
183
+ }
184
+ /** Test-only. Removes every non-built-in descriptor; built-ins survive. */
185
+ export function __removePluginBlockKindsForTests() {
186
+ deletePluginEntries(registry, isBuiltinBlockKind);
187
+ }
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Per-kind block-opener registry: the parser's dispatch order and the paragraph-interrupt scan
3
+ * both derive from these declarations, so a registered opener is automatically in both.
4
+ * Paragraph is the unregistered total fallback; setext headings and tables emerge from its
5
+ * continuation scan, not from openers.
6
+ */
7
+ import { type AnyBlockKind, type CstNode } from '../core/nodes';
8
+ import type { ParsedLine } from '../core/lines';
9
+ /** Minted fresh per block and read synchronously; never a handle to keep past the return. */
10
+ export interface OpenContext {
11
+ lines: ParsedLine[];
12
+ index: number;
13
+ end: number;
14
+ /** The line at `index`, precomputed once per dispatch. */
15
+ line: ParsedLine;
16
+ /** Blank-line bytes folded above this block: non-empty is the "preceded by blank" interrupt context (GFM §4.4). */
17
+ leadingTrivia: string;
18
+ /** True when this parse entry was given a whole document (`parse` scope `'document'`), false for one block's bytes read standalone. Constant through nested container recursion, so a document-position gate composes it with `index`/`depth`/`leadingTrivia`. */
19
+ isDocumentParse: boolean;
20
+ /** Container-nesting depth of this parse level (0 at the document root). A container opener that reparses its body recurses at `depth + 1`; the cap (`MAX_NESTING_DEPTH`) folds deeper input into paragraph content. */
21
+ depth: number;
22
+ /**
23
+ * The instance seam over the global openers. Nested container reparses create their own
24
+ * context and default to the global grammar (the enablement boundary — see `parse`).
25
+ */
26
+ grammar: GrammarView;
27
+ }
28
+ /**
29
+ * A claim on the lines starting at `ctx.index`. `consumed` is a count, not a resume position,
30
+ * and must be >= 1 — claiming nothing would spin the parse loop, so the dispatch declines it.
31
+ */
32
+ export interface BlockOpenerResult {
33
+ node: CstNode;
34
+ consumed: number;
35
+ }
36
+ export interface BlockOpener {
37
+ priority: number;
38
+ /** Attempt to open this kind at ctx.index; null declines. */
39
+ tryOpen(ctx: OpenContext): BlockOpenerResult | null;
40
+ /** Whether a line of this kind interrupts an open paragraph (GFM continuation rules); `false` = never. */
41
+ interruptsParagraph: ((lineText: string) => boolean) | false;
42
+ }
43
+ export declare function registerBlockOpener(kind: AnyBlockKind, opener: BlockOpener): void;
44
+ /**
45
+ * Probe whether an opener is registered — `registerBlockOpener` throws on duplicate, so a
46
+ * plugin registering idempotently (HMR / re-import) guards on this. Takes a plain name.
47
+ */
48
+ export declare function isBlockOpenerRegistered(kind: string): boolean;
49
+ /** A per-instance enablement predicate: `true` keeps the kind's opener in the grammar. */
50
+ export type OpenerEnablement = (kind: AnyBlockKind) => boolean;
51
+ /**
52
+ * The parser's dispatch order (G1.10 warns on a priority tie). The grammar-consumption seam:
53
+ * pending registrations are validated before this read, and flush-before-mark keeps a registrant
54
+ * racing the first read out of the late-opener warn (G1.17). `isEnabled` filters plugin kinds
55
+ * per instance; absent = all definitions, cached. Built-ins are never filtered.
56
+ */
57
+ export declare function getOrderedOpeners(isEnabled?: OpenerEnablement): readonly BlockOpener[];
58
+ /**
59
+ * Registry-derived paragraph-interrupt check, carrying the same seam duties as
60
+ * `getOrderedOpeners`. NOT enablement-filtered: the parsers call it directly rather than
61
+ * through a GrammarView, so the interrupt scan is the global-grammar boundary.
62
+ */
63
+ export declare function lineInterruptsParagraph(lineText: string): boolean;
64
+ /**
65
+ * The grammar as a per-instance resolution object over the global openers, threaded by
66
+ * `parse(source, { grammar })`. Only the opener dispatch is instance-resolved; the
67
+ * paragraph-interrupt scan stays on the global-grammar boundary.
68
+ */
69
+ export interface GrammarView {
70
+ orderedOpeners(): readonly BlockOpener[];
71
+ }
72
+ export declare const defaultGrammarView: GrammarView;
73
+ export declare function createGrammarView(isEnabled: OpenerEnablement): GrammarView;
74
+ /** What a line means at the outer level, which turns on whether a paragraph is open above it. */
75
+ export interface OuterBlockScan {
76
+ /** A lazy continuation: an open paragraph absorbs the starts §4.4 forbids from interrupting. */
77
+ paragraphOpen: boolean;
78
+ /** Defaults to the global openers, the boundary `lineInterruptsParagraph` also reads. */
79
+ grammar?: GrammarView;
80
+ }
81
+ /**
82
+ * Does `line` start a block at the outer level? cmark-gfm ends both a lazy continuation and a
83
+ * table's row scan there, and the paragraph-interrupt exceptions do not apply. Two claims are
84
+ * transparent: a link reference definition is carved out of a paragraph at finalize rather than
85
+ * opened as a block, and indented code cannot open while a paragraph is open to absorb the line.
86
+ */
87
+ export declare function lineStartsOuterBlock(line: ParsedLine, scan: OuterBlockScan): boolean;
88
+ /** Registry introspection for the invariant guard (G1.10). */
89
+ export declare function listRegisteredOpeners(): {
90
+ kind: AnyBlockKind;
91
+ priority: number;
92
+ }[];
93
+ export declare function __resetBlockOpenersForTests(): void;
94
+ export declare function __removePluginOpenersForTests(): void;