@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,533 @@
1
+ /**
2
+ * G4.3 — container conformance kit, published at `@voithos-labs/aragonite/testing`. Register your kind, then
3
+ * point the kit at it with fixtures plus a coverage matrix declaring per invariant whether it
4
+ * asserts or is excused (never a silent skip; a thin reason fails the run). Which answer a
5
+ * container owes each cell is in the plugin guide's "Conformance-testing a container". Asserted
6
+ * checks drive the real per-kind action path, stopping at the nested-action default and at a DOM.
7
+ */
8
+ import { splitLines, trailingLineEnding } from '../core/lines';
9
+ import { parse } from '../core/parser';
10
+ import { createContainerEditActions } from '../editor-actions/container-edit';
11
+ import { createUndoController } from '../editor-actions/commit/undo-controller';
12
+ import { createListContext } from '../editor-actions/list-context';
13
+ import { createStandardNestedActions } from '../editor-actions/nested/nested-actions';
14
+ import { createNestedFocus } from '../editor-actions/nested/nested-focus';
15
+ import { createTableMutationsContext } from '../editor-actions/table-context';
16
+ import { firstChildUnwrapStrategies, middleChildUnwrapStrategies } from '../editor-actions/unwrap-strategies';
17
+ import { isDirectiveKind } from '../core/directive/registry';
18
+ import { isBlockOpenerRegistered } from '../schema/block-openers';
19
+ import { getBlockKindDescriptor } from '../schema/block-kind-descriptor';
20
+ import { rebuildContainerRawIfContainer } from '../schema/container-raw';
21
+ import { createSharingState } from '../tree-operations/sharing';
22
+ import { rebuildUnsharedAncestry } from '../tree-operations/unshare';
23
+ import { assertParseConverged } from './parse-convergence';
24
+ import { createHeadlessActions, mountBlockListState, recordingFocus, stubBlockEdit, stubStickyColumn } from './headless-actions';
25
+ import { assert, assertExemptionDocumented, assertIndices, assertIs, assertRebuildIsParseCanonical, assertReasonDocumented, fail, findFirstOfKind, firstChildOfKind, nodeAtPath, pathPassesThroughKind } from './conformance-core';
26
+ /**
27
+ * The kit's cells as data, so every sweep runs the same set: {@link runContainerConformance} and
28
+ * the registry-derived built-in sweep both iterate this rather than listing cells by hand, which
29
+ * is what makes cell N+1 unmissable at either caller.
30
+ */
31
+ export const CONTAINER_CONFORMANCE_CELLS = [
32
+ {
33
+ cell: 'localIndex',
34
+ coverage: (profile) => profile.localIndex,
35
+ run: (kind, profile) => getBlockKindDescriptor(kind).containerContract === 'grid'
36
+ ? checkGridLocalIndexAddressing()
37
+ : checkStripLocalIndexAddressing(profile)
38
+ },
39
+ { cell: 'ancestry', coverage: (profile) => profile.ancestry, run: checkInnermostFirstAncestry },
40
+ {
41
+ cell: 'multiScope',
42
+ coverage: (profile) => profile.multiScope,
43
+ run: checkOneUndoPerMultiScope
44
+ },
45
+ {
46
+ cell: 'focusBubble',
47
+ coverage: (profile) => profile.focusBubble,
48
+ run: checkFocusBubbleTermination
49
+ },
50
+ {
51
+ cell: 'terminatorCollision',
52
+ coverage: (profile) => profile.terminatorCollision,
53
+ run: checkTerminatorCollision
54
+ },
55
+ { cell: 'declarations', coverage: () => ({ mode: 'assert' }), run: checkDeclarationSanity }
56
+ ];
57
+ /** The cells whose coverage a profile declares — `declarations` is the kit's, not the author's. */
58
+ const BEHAVIORAL_CELLS = CONTAINER_CONFORMANCE_CELLS.filter((c) => c.cell !== 'declarations');
59
+ /**
60
+ * A profile owes at least one asserting behavioral cell. `declarations` is excluded on purpose:
61
+ * it asserts for every kind, so counting it would let an all-excused profile clear the floor.
62
+ */
63
+ export function assertProfileCoverageFloor(kind, profile) {
64
+ const asserts = BEHAVIORAL_CELLS.filter((c) => c.coverage(profile).mode === 'assert');
65
+ if (asserts.length > 0) {
66
+ assert(profile.wholeProfileExemption === undefined, `${kind} declares a wholeProfileExemption while ${asserts.length} behavioral cell(s) assert`);
67
+ return;
68
+ }
69
+ assert(profile.wholeProfileExemption !== undefined, `${kind} excuses every behavioral cell, so the kit asserts nothing about it — declare ` +
70
+ `wholeProfileExemption with the reason the kind is covered elsewhere, or assert a cell`);
71
+ assertReasonDocumented(profile.wholeProfileExemption, `${kind} wholeProfileExemption`);
72
+ }
73
+ // ── Runner ───────────────────────────────────────────────────────────────────
74
+ /**
75
+ * Run every conformance cell for `kind`. Resolves with the coverage report, or throws an
76
+ * `Error` naming every failed cell.
77
+ */
78
+ export async function runContainerConformance(kind, profile) {
79
+ const cells = [];
80
+ const failures = [];
81
+ try {
82
+ assertProfileCoverageFloor(kind, profile);
83
+ }
84
+ catch (error) {
85
+ failures.push(`coverageFloor: ${error.message}`);
86
+ }
87
+ for (const { cell, coverage: read, run } of CONTAINER_CONFORMANCE_CELLS) {
88
+ const coverage = read(profile);
89
+ try {
90
+ if (coverage.mode === 'assert') {
91
+ await run(kind, profile);
92
+ cells.push({ cell, status: 'asserted' });
93
+ }
94
+ else {
95
+ assertExemptionDocumented(coverage, `${kind} ${cell}`);
96
+ cells.push({ cell, status: coverage.mode, reason: coverage.reason });
97
+ }
98
+ }
99
+ catch (error) {
100
+ failures.push(`${cell}: ${error.message}`);
101
+ }
102
+ }
103
+ if (failures.length > 0) {
104
+ throw new Error(`container conformance failed for "${kind}":\n - ${failures.join('\n - ')}`);
105
+ }
106
+ return { kind, cells };
107
+ }
108
+ // ── (a) local-index addressing ───────────────────────────────────────────────
109
+ /**
110
+ * Assert the addressed child is the one that mutated (by content) and that the emitted
111
+ * path is the chain of LOCAL indices. The non-first / non-zero setup is what
112
+ * discriminates local from global addressing; at chain [0,0] child 0 the two coincide.
113
+ */
114
+ export async function checkStripLocalIndexAddressing(profile) {
115
+ const fixture = profile.localIndexFixture;
116
+ if (!fixture)
117
+ fail('localIndex asserts but the profile carries no localIndexFixture');
118
+ const { containerChain, targetChild } = fixture;
119
+ assert(containerChain.length > 1, 'chain has a top-level container + ≥1 nested level');
120
+ assert(targetChild > 0 || containerChain.some((idx) => idx > 0), 'localIndexFixture must edit a non-first child or descend through a non-zero chain position (else the local-vs-global check is vacuous)');
121
+ const outer = parse(fixture.source).children[0];
122
+ const { deps, doc, events } = createHeadlessActions([outer]);
123
+ const controller = createUndoController(deps);
124
+ const rootContainerEdit = createContainerEditActions(deps, controller);
125
+ let parentBundle = null;
126
+ let parentContainerEdit = rootContainerEdit;
127
+ let node = outer;
128
+ for (let depth = 0; depth < containerChain.length; depth++) {
129
+ const captured = node;
130
+ const state = mountBlockListState(() => captured);
131
+ const bundle = createStandardNestedActions(state, {
132
+ scope: {
133
+ index: containerChain[depth],
134
+ get node() {
135
+ return captured;
136
+ },
137
+ path: containerChain.slice(0, depth + 1)
138
+ },
139
+ stickyColumn: stubStickyColumn(),
140
+ getPresentationMode: undefined,
141
+ linkRef: undefined,
142
+ parent: {
143
+ blockEdit: parentBundle?.blockEdit ?? stubBlockEdit(),
144
+ focus: parentBundle?.focus ?? recordingFocus(),
145
+ containerEdit: parentContainerEdit
146
+ }
147
+ });
148
+ parentBundle = bundle;
149
+ parentContainerEdit = bundle.containerEdit;
150
+ if (depth < containerChain.length - 1)
151
+ node = node.children[containerChain[depth + 1]];
152
+ }
153
+ const kindNode = node;
154
+ assert(kindNode.children.length > 1, 'kind node has ≥2 children to target a non-first one');
155
+ const targetMarker = kindNode.children[targetChild].raw;
156
+ const seen = [];
157
+ events.on('edit', (e) => seen.push(e));
158
+ await parentBundle.blockEdit.deleteBlock(targetChild);
159
+ // The commit replaced the spine's nodes — re-resolve through the live doc.
160
+ const liveKind = nodeAtPath(doc, containerChain);
161
+ const remaining = (liveKind.children ?? []).map((c) => c.raw);
162
+ assert(!remaining.includes(targetMarker), `local index ${targetChild} was the child removed`);
163
+ const editEvent = seen.find((e) => e.op === 'delete');
164
+ assert(editEvent, 'a delete edit event fired');
165
+ assertIndices(editEvent.path.slice(0, containerChain.length), containerChain, 'path is the local-index chain');
166
+ assertIs(editEvent.path.at(-1), targetChild, 'path ends at the targeted local child index');
167
+ // Convergence, not byte round-trip (which is a tautology here): a local-index op
168
+ // leaving a stale container raw or a divergent shape fires.
169
+ assertParseConverged(doc, 'doc converges after a local-index op');
170
+ }
171
+ /**
172
+ * Grid local addressing: a table column op addresses cells by (rowIdx, colIdx) and emits
173
+ * the table's own local path. The leading paragraph keeps the table at a non-zero doc
174
+ * index, so a flat global offset would not coincide with the local one.
175
+ */
176
+ export async function checkGridLocalIndexAddressing() {
177
+ const parsed = parse('lead para\n\n| h1 | h2 |\n| --- | --- |\n| a | b |\n');
178
+ assertIs(parsed.children[1].kind, 'table', 'table at non-zero doc index');
179
+ const { ctx, deps, doc, events } = mountTableMutations(parsed.children, 1);
180
+ const seen = [];
181
+ events.on('edit', (e) => seen.push(e));
182
+ // Pinning the new cell's POSITION by content is what proves cells are addressed by
183
+ // local col index rather than appended at the end.
184
+ await ctx.insertColumnRight(0);
185
+ const liveTable = deps.doc.children[1];
186
+ for (const row of liveTable.children) {
187
+ const cells = row.children.map((c) => c.raw);
188
+ assertIs(cells.length, 3, 'every row gained one cell');
189
+ assert(cells[0] !== '', 'column 0 unchanged');
190
+ assertIs(cells[1], '', 'new empty cell landed at the addressed colIdx 1');
191
+ assert(cells[2] !== '', 'original second cell shifted to colIdx 2');
192
+ }
193
+ const editEvent = seen.find((e) => e.op === 'tableInsertColumn');
194
+ assert(editEvent, 'tableInsertColumn edit event fired');
195
+ assertIndices(editEvent.path, [1], 'column op emits the table’s own local path');
196
+ // The strip twin's oracle, which the grid arm went without: a column op leaving a stale
197
+ // table raw or a row the delimiter no longer describes fires here, not at a byte round-trip.
198
+ assertParseConverged(doc, 'doc converges after a grid column op');
199
+ }
200
+ /** The table-mutations mount both grid cells share: headless deps, controller, row states, ctx. */
201
+ function mountTableMutations(children, tableIndex) {
202
+ const table = children[tableIndex];
203
+ const { deps, doc, events } = createHeadlessActions(children);
204
+ const controller = createUndoController(deps);
205
+ const rootContainerEdit = createContainerEditActions(deps, controller);
206
+ const rowsState = mountBlockListState(() => table);
207
+ // commitColumnEdit resolves each row via expectStateForNode — register them.
208
+ for (const row of table.children)
209
+ mountBlockListState(() => row);
210
+ const ctx = createTableMutationsContext({
211
+ get node() {
212
+ return table;
213
+ },
214
+ get myPath() {
215
+ return [tableIndex];
216
+ },
217
+ get rowsState() {
218
+ return rowsState;
219
+ },
220
+ get focusedCell() {
221
+ return { rowIdx: 0, colIdx: 0 };
222
+ },
223
+ parentContainerEdit: rootContainerEdit,
224
+ controller,
225
+ focusCell: () => { },
226
+ announceReorder: () => { }
227
+ });
228
+ return { ctx, deps, doc, events };
229
+ }
230
+ // ── (b) innermost-first ancestry rebuild ─────────────────────────────────────
231
+ export function checkInnermostFirstAncestry(kind, profile) {
232
+ const { source, leafPath } = profile.deepNesting;
233
+ const doc = parse(source);
234
+ const root = doc.children[0];
235
+ assert(pathPassesThroughKind(doc, leafPath, kind), `"${kind}" is on the leaf's ancestry`);
236
+ const leaf = nodeAtPath(doc, leafPath);
237
+ assert(!leaf.children, 'leaf is editable (no children)');
238
+ const marker = `zzmark-${kind}`;
239
+ leaf.raw = marker + '\n';
240
+ // Fresh sharing state, no fold sink and the global grammar: this probe asserts raw propagation
241
+ // only, and a kit owning neither ids nor refs can reconcile no parent-scope splice.
242
+ rebuildUnsharedAncestry(doc, leafPath, createSharingState(), null, undefined);
243
+ assert(root.raw.includes(marker), `root raw reflects the deep leaf edit through "${kind}"`);
244
+ }
245
+ /**
246
+ * Mutation probe proving the ancestry check is non-vacuous: a reversed (outer→inner)
247
+ * rebuild leaves the root stale for a strip/opaque container. Returns false for a
248
+ * container that re-derives its whole subtree (grid), which is why grid excuses ancestry.
249
+ */
250
+ export function reversedAncestryLeavesRootStale(profile) {
251
+ const { source, leafPath } = profile.deepNesting;
252
+ const doc = parse(source);
253
+ const root = doc.children[0];
254
+ const leaf = nodeAtPath(doc, leafPath);
255
+ const marker = 'reversed-mark';
256
+ leaf.raw = marker + '\n';
257
+ const ancestors = [];
258
+ let cur = doc;
259
+ for (let depth = 0; depth < leafPath.length - 1; depth++) {
260
+ cur = cur.children[leafPath[depth]];
261
+ ancestors.push(cur);
262
+ }
263
+ // Outermost-first: each ancestor rebuilt before its descendants are fresh.
264
+ for (const a of ancestors)
265
+ rebuildContainerRawIfContainer(a);
266
+ return !root.raw.includes(marker);
267
+ }
268
+ // ── (c) one undo entry per multi-scope op ────────────────────────────────────
269
+ /**
270
+ * A multi-scope op is kind-specific: it drives through the kind's own context, not a
271
+ * generic bundle, so only the built-ins that own one are dispatched here.
272
+ */
273
+ export async function checkOneUndoPerMultiScope(kind) {
274
+ if (kind === 'list')
275
+ return checkListIndentOneUndo();
276
+ if (kind === 'table')
277
+ return checkTableColumnOneUndo();
278
+ fail(`"${kind}" asserts multiScope but the kit drives no multi-scope op for it — ` +
279
+ `declare the cell exempt if the kind owns no ≥2-scope op`);
280
+ }
281
+ async function checkListIndentOneUndo() {
282
+ // Indenting item 1 under item 0 spans outer-list + the new nested-list scope.
283
+ const list = firstChildOfKind('- alpha\n- beta\n', 'list');
284
+ const { deps } = createHeadlessActions([list]);
285
+ const controller = createUndoController(deps);
286
+ const listState = mountBlockListState(() => list);
287
+ // indentItem reaches into prevItem (item 0) via expectStateForNode — register each item.
288
+ for (const item of list.children)
289
+ mountBlockListState(() => item);
290
+ const ctx = createListContext({
291
+ scope: {
292
+ get index() {
293
+ return 0;
294
+ },
295
+ get node() {
296
+ return list;
297
+ },
298
+ get path() {
299
+ return [0];
300
+ }
301
+ },
302
+ state: listState,
303
+ parentBlockEdit: stubBlockEdit(),
304
+ parentFocus: recordingFocus(),
305
+ parentListContext: undefined,
306
+ controller,
307
+ getPresentationMode: undefined,
308
+ linkRef: undefined
309
+ });
310
+ const before = deps.undoManager.getStacks().undo.length;
311
+ await ctx.indentItem(1);
312
+ const after = deps.undoManager.getStacks().undo.length;
313
+ assertIs(after - before, 1, 'list indentItem (multi-scope) pushes exactly ONE undo entry');
314
+ assertIs(deps.doc.children[0].children.length, 1, 'item 1 was indented out of the outer list');
315
+ assertParseConverged(deps.doc, 'doc converges after a multi-scope strip op');
316
+ }
317
+ async function checkTableColumnOneUndo() {
318
+ const table = firstChildOfKind('| h1 | h2 |\n| --- | --- |\n| a | b |\n| c | d |\n', 'table');
319
+ const { ctx, deps } = mountTableMutations([table], 0);
320
+ const before = deps.undoManager.getStacks().undo.length;
321
+ await ctx.insertColumnRight(0);
322
+ const after = deps.undoManager.getStacks().undo.length;
323
+ assertIs(after - before, 1, 'table insertColumn (multi-scope) pushes exactly ONE undo entry');
324
+ assertParseConverged(deps.doc, 'doc converges after a multi-scope grid op');
325
+ }
326
+ // ── (d) focus-bubble termination at root ─────────────────────────────────────
327
+ /**
328
+ * Bubble an out-of-range ArrowUp through a real 2-level chain (kind-under-test → strip
329
+ * outer at its own top edge → recording root) and assert it reaches the root exactly
330
+ * once. Driving the kind's own bundle rather than `dispatchMoveFocus` is what catches a
331
+ * container whose focus wiring re-enters or double-escapes.
332
+ */
333
+ export async function checkFocusBubbleTermination(kind, profile) {
334
+ const source = profile.focusSource;
335
+ if (!source)
336
+ fail('focusBubble asserts but the profile carries no focusSource');
337
+ const innerNode = findFirstOfKind(parse(source), kind);
338
+ assert(innerNode, `focusSource contains a "${kind}" node`);
339
+ assert((innerNode.children?.length ?? 0) > 0, `"${kind}" node has children`);
340
+ const rootFocus = recordingFocus();
341
+ const focusRung = (node, index, focus) => createNestedFocus(mountBlockListState(() => node), {
342
+ index,
343
+ get node() {
344
+ return node;
345
+ },
346
+ path: [index],
347
+ stickyColumn: stubStickyColumn(),
348
+ getPresentationMode: undefined,
349
+ linkRef: undefined,
350
+ parent: { blockEdit: stubBlockEdit(), focus, containerEdit: {} }
351
+ });
352
+ // At its own top edge, so moveFocus(-1) must delegate to root rather than re-enter.
353
+ const outerNode = parse('> a\n>\n> b\n').children[0];
354
+ const outerFocus = focusRung(outerNode, 3, rootFocus);
355
+ const innerFocus = focusRung(innerNode, 0, outerFocus);
356
+ // Inner delegates to outer.moveFocus(-1); outer is at its own top (index 3), so the
357
+ // root sees index 2 exactly once.
358
+ await innerFocus.moveFocus(-1, 'end');
359
+ assertIs(rootFocus.moveFocusCalls.length, 1, 'bubble terminated at root exactly once');
360
+ const bubbled = rootFocus.moveFocusCalls[0] ?? [];
361
+ assertIs(bubbled.length, 2, 'root received exactly (index, position)');
362
+ assertIs(bubbled[0], 2, 'root received the bubbled index');
363
+ assertIs(bubbled[1], 'end', 'root received the bubbled position');
364
+ }
365
+ // ── (f) terminator collision ─────────────────────────────────────────────────
366
+ /**
367
+ * Write a terminator-shaped line into the container's body through `bodyWrite` (the door the
368
+ * commit path uses) and require the live tree to still converge with a fresh parse. Convergence
369
+ * is the oracle, not byte round-trip: `serialize(parse(s)) === s` holds throughout a collision
370
+ * while the container silently stops containing what it says it does. A childless container
371
+ * (body in metadata) seats the same bytes through the fixture's own `writeBody`.
372
+ */
373
+ export function checkTerminatorCollision(kind, profile) {
374
+ const fixture = profile.terminatorCollisionFixture;
375
+ if (!fixture)
376
+ fail('terminatorCollision asserts but the profile carries no terminatorCollisionFixture');
377
+ const doc = parse(fixture.source);
378
+ const node = doc.children[0];
379
+ assertIs(node?.kind, kind, 'terminatorCollisionFixture source opens with a node of the kind');
380
+ const bodyWrite = getBlockKindDescriptor(kind).bodyWrite;
381
+ const body = bodyWrite ? bodyWrite.normalize(fixture.bodyRaw) : fixture.bodyRaw;
382
+ const children = node.children ?? [];
383
+ const before = node.raw;
384
+ if (children.length > 0) {
385
+ children[children.length - 1].raw = body;
386
+ }
387
+ else {
388
+ if (!fixture.writeBody) {
389
+ fail(`"${kind}" parses childless, so there is no last child to overwrite — carry a ` +
390
+ `writeBody seating the body where this container keeps it (metadata, typically)`);
391
+ }
392
+ fixture.writeBody(node, body);
393
+ }
394
+ rebuildContainerRawIfContainer(node);
395
+ // Without this the cell passes over a container the write never reached, which is how a
396
+ // mis-seated childless body would read as surviving a collision it never saw.
397
+ assert(node.raw !== before, `the fixture body reached "${kind}"'s own bytes`);
398
+ assertParseConverged(doc, `${kind} survives a body line reproducing its terminator`);
399
+ }
400
+ // ── (e) declaration sanity ───────────────────────────────────────────────────
401
+ /**
402
+ * Hold the kind to its schema declarations. A declared `unwrapRole` must name implemented
403
+ * strategies because the nested dispatcher indexes them unguarded, and a capability whose only
404
+ * job is a cell's repair may not ship behind that cell's excuse.
405
+ */
406
+ export function checkDeclarationSanity(kind, profile) {
407
+ const descriptor = getBlockKindDescriptor(kind);
408
+ // Grammatical, not declared: an opaque container wraps its body between chrome lines of its
409
+ // own, so a body line CAN reproduce its closer whether or not the kind declares the repair.
410
+ // The bodyWrite arm stays because a declared repair must be probed on any contract.
411
+ const owesCollisionAnswer = descriptor.containerContract === 'opaque' || !!descriptor.bodyWrite;
412
+ if (owesCollisionAnswer && profile.terminatorCollision.mode !== 'assert') {
413
+ fail(`${kind} ${descriptor.bodyWrite ? 'declares container.bodyWrite' : 'is an opaque container'} ` +
414
+ `but its profile marks terminatorCollision "${profile.terminatorCollision.mode}" — a body ` +
415
+ `line reproducing the terminator truncates the container, so assert the cell with a ` +
416
+ `fixture whose body does`);
417
+ }
418
+ const role = descriptor.unwrapRole;
419
+ if (role) {
420
+ assertIs(typeof firstChildUnwrapStrategies[role.firstChildBackspace], 'function', `${kind} first-child unwrap strategy "${role.firstChildBackspace}" is implemented`);
421
+ if (role.middleChildBackspace !== 'default-merge') {
422
+ assertIs(typeof middleChildUnwrapStrategies[role.middleChildBackspace], 'function', `${kind} middle-child unwrap strategy "${role.middleChildBackspace}" is implemented`);
423
+ }
424
+ }
425
+ if (descriptor.containerPaste) {
426
+ assertIs(typeof descriptor.containerPaste.matchesAncestor, 'function', `${kind} containerPaste.matchesAncestor is callable`);
427
+ assertIs(typeof descriptor.containerPaste.siblingAbsorb, 'boolean', `${kind} containerPaste.siblingAbsorb is boolean`);
428
+ }
429
+ assertIs(typeof descriptor.rebuildRaw, 'function', `${kind} declares rebuildRaw`);
430
+ const node = findFirstOfKind(parse(profile.deepNesting.source), kind);
431
+ assert(node, `deepNesting fixture contains a "${kind}" node`);
432
+ assertRebuildIsParseCanonical(descriptor, node, kind);
433
+ assertHintedRebuildMatchesFull(kind, descriptor, node);
434
+ assertBodyWrapMatchesParse(kind, descriptor);
435
+ assertContentStartSpaceIsRebuilt(kind, descriptor);
436
+ }
437
+ /**
438
+ * `rebuildRaw`'s changed-child hint is a shortcut, never a different answer: the same children
439
+ * rebuilt with and without it are the same bytes. A rebuilder that ignores the hint passes here
440
+ * by construction, which is what makes the argument optional to adopt.
441
+ */
442
+ function assertHintedRebuildMatchesFull(kind, descriptor, node) {
443
+ const children = node.children;
444
+ if (!children?.length)
445
+ return;
446
+ const index = children.length - 1;
447
+ const previousRaw = children[index].raw;
448
+ // Doubling keeps whatever line shape the fixture's own child had; one operand, so the
449
+ // cross-node join census still reads this as a kind re-emitting its own bytes.
450
+ children[index].raw = previousRaw.repeat(2);
451
+ descriptor.rebuildRaw(node, { index, previousRaw });
452
+ const hinted = node.raw;
453
+ descriptor.rebuildRaw(node);
454
+ assertIs(hinted, node.raw, `${kind} rebuildRaw writes the same bytes for a changed-child hint as for a full rebuild`);
455
+ }
456
+ /** The content a probe writes into a body child; distinctive enough that no fixture line ends
457
+ * in it by accident. */
458
+ const CONTENT_START_PROBE = 'probe';
459
+ /**
460
+ * `container.contentStartSpace` consumes the user's space, so it is byte-honest only where the
461
+ * rebuild mints that space back on a content line. A declarer whose rebuild does not eats the
462
+ * keystroke instead of deferring it.
463
+ */
464
+ function assertContentStartSpaceIsRebuilt(kind, descriptor) {
465
+ if (descriptor.contentStartSpace !== 'complete-marker')
466
+ return;
467
+ const fixture = descriptor.conformanceFixture;
468
+ if (fixture === undefined) {
469
+ fail(`${kind} declares container.contentStartSpace but carries no conformanceFixture to probe`);
470
+ }
471
+ const node = parse(fixture).children.find((child) => child.kind === kind);
472
+ assert(node?.children?.length, `${kind} conformanceFixture opens a "${kind}" with a body child`);
473
+ // The LAST child, so a reserved-chrome head (a title, a summary) stays in place: its own line
474
+ // already carries the opener's space, and rebuilding over it would answer for the wrong line.
475
+ const last = node.children[node.children.length - 1];
476
+ last.raw = CONTENT_START_PROBE + (trailingLineEnding(last.raw) || '\n');
477
+ descriptor.rebuildRaw(node);
478
+ const lines = splitLines(node.raw)
479
+ .map((line) => line.text)
480
+ .filter((text) => text.endsWith(CONTENT_START_PROBE));
481
+ assertIs(lines.length, 1, `${kind} rebuild emits exactly one line for the probed body child`);
482
+ const line = lines[0];
483
+ assert(line.endsWith(` ${CONTENT_START_PROBE}`) && line.length > CONTENT_START_PROBE.length + 1, `${kind} declares container.contentStartSpace but its rebuildRaw emits "${line}" for a body ` +
484
+ `child holding "${CONTENT_START_PROBE}" — the consumed space is only deferred where the ` +
485
+ `rebuild re-emits the marker's own trailing space on a content line`);
486
+ }
487
+ /**
488
+ * `container.bodyWrap` is probed, never trusted: the separator settle reads it to decide whether
489
+ * a freed blank line belongs to the wrap, and a kind whose parse disagrees loses its body head
490
+ * on reload (`tree-operations/node-ops.clearRedundantSeparator`).
491
+ */
492
+ function assertBodyWrapMatchesParse(kind, descriptor) {
493
+ if (descriptor.containerContract === 'grid')
494
+ return;
495
+ const fixture = descriptor.conformanceFixture;
496
+ if (fixture === undefined) {
497
+ fail(`${kind} declares no conformanceFixture, so the bodyWrap probe cannot run — it asserts ` +
498
+ `the declaration in both directions, so every non-grid container needs a fixture ` +
499
+ `whose top level opens a "${kind}" carrying a body`);
500
+ }
501
+ // A kind with no standalone recognizer (listItem) can only ever be nested, so it is probed
502
+ // where the fixture puts it; openers alone misread directive kinds, whose recognizer is the
503
+ // shared `:::`.
504
+ const doc = parse(fixture);
505
+ const opensAtTop = isBlockOpenerRegistered(kind) || isDirectiveKind(kind);
506
+ const node = opensAtTop
507
+ ? doc.children.find((child) => child.kind === kind)
508
+ : findFirstOfKind(doc, kind);
509
+ assert(node, `${kind} conformanceFixture must ${opensAtTop ? 'open' : 'carry'} a "${kind}"` +
510
+ `${opensAtTop ? ' at the top level' : ''} — the bodyWrap probe rebuilds and reparses that ` +
511
+ `node, and a fixture without one would skip it silently while the declarations cell reads ` +
512
+ `asserted`);
513
+ // A container that keeps its body in metadata parses childless, so there is no body child for a
514
+ // blank line to peel off — the probe has nothing to run and the declaration must be absent,
515
+ // since a wrap the parse can never perform would tell the separator settle a falsehood.
516
+ if (!node.children?.length) {
517
+ assertIs(descriptor.bodyWrap?.afterOpenerLine, undefined, `${kind} parses childless (its body lives in metadata), so a blank line against its ` +
518
+ `opener belongs to that body — drop the container.bodyWrap declaration`);
519
+ return;
520
+ }
521
+ const expected = node.children.length;
522
+ const ending = trailingLineEnding(node.raw) || '\n';
523
+ node.innerPrefix = '';
524
+ descriptor.rebuildRaw(node);
525
+ const withoutPrefix = node.raw;
526
+ node.innerPrefix = ending;
527
+ descriptor.rebuildRaw(node);
528
+ // A rebuild that ignores innerPrefix leaves the field inert, which is a non-wrapping kind.
529
+ const peels = node.raw !== withoutPrefix &&
530
+ findFirstOfKind(parse(node.raw), kind)?.children?.length === expected;
531
+ assertIs(peels, descriptor.bodyWrap?.afterOpenerLine === true, `${kind} container.bodyWrap.afterOpenerLine agrees with what its parse does with a blank ` +
532
+ `line against the opener`);
533
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Headless editor-actions environment for the published conformance kit. These stubs
3
+ * restate rather than reuse the in-repo `test/harness` mocks, which are `vi.fn()`-based:
4
+ * `@voithos-labs/aragonite/testing` is imported into an author's own suite, so a static runner import
5
+ * would load Vitest for anyone reaching for `resetPluginPlatformForTests` alone.
6
+ */
7
+ import type { BlockEditActions, FocusActions } from '../action-contracts';
8
+ import type { BlockComponent } from '../block-component';
9
+ import type { CstNode, Document } from '../core/nodes';
10
+ import type { StickyColumnState } from '../cursor/sticky-column';
11
+ import type { EdgeAffinityState } from '../cursor/edge-affinity';
12
+ import type { EditorActionsDeps } from '../editor-actions/deps';
13
+ import { type EditorEvents } from '../editor-events';
14
+ import { type BlockListState } from '../reactivity/block-list-state.svelte';
15
+ export declare function stubBlockComponent(): BlockComponent;
16
+ export declare function stubStickyColumn(): StickyColumnState;
17
+ export declare function stubEdgeAffinity(): EdgeAffinityState;
18
+ export declare function stubBlockEdit(): BlockEditActions;
19
+ /** A focus bundle that records what bubbled up to it — the focus-bubble check's oracle. */
20
+ export interface RecordingFocus extends FocusActions {
21
+ /** Whole argument lists, so a check pins arity as well as values. */
22
+ readonly moveFocusCalls: readonly unknown[][];
23
+ }
24
+ export declare function recordingFocus(): RecordingFocus;
25
+ /**
26
+ * A BlockListState seeded with one ref per child (the `$effect` that fills refs never
27
+ * runs headlessly). `getNode` must read the LIVE node: the commit primitives replace the
28
+ * spine's nodes, so a captured reference goes stale after the first commit.
29
+ */
30
+ export declare function mountBlockListState(getNode: () => CstNode): BlockListState;
31
+ export interface HeadlessActions {
32
+ deps: EditorActionsDeps;
33
+ doc: Document;
34
+ events: EditorEvents;
35
+ }
36
+ /** An `EditorActionsDeps` over `docChildren`, with every block treated as mounted. */
37
+ export declare function createHeadlessActions(docChildren: CstNode[]): HeadlessActions;