@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,118 @@
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 { createEditorEvents } from '../editor-events';
8
+ import { createBlockListState } from '../reactivity/block-list-state.svelte';
9
+ import { refSlotsOver, replaceRefs } from '../reactivity/publish-ref.svelte';
10
+ import { createSelectionState } from '../selection/selection-state.svelte';
11
+ import { createSharingState } from '../tree-operations/sharing';
12
+ import { createUndoManager } from '../undo/manager';
13
+ // ── Stubs ────────────────────────────────────────────────────────────────────
14
+ export function stubBlockComponent() {
15
+ return {
16
+ focus: () => { },
17
+ parkCaret: () => { },
18
+ getCursorOffset: () => null,
19
+ editable: true,
20
+ focusable: true
21
+ };
22
+ }
23
+ export function stubStickyColumn() {
24
+ return { get: () => null, reset: () => { }, capture: () => { }, noteKey: () => { } };
25
+ }
26
+ export function stubEdgeAffinity() {
27
+ return {
28
+ get: () => null,
29
+ reset: () => { },
30
+ note: () => { },
31
+ noteTyping: () => { },
32
+ noteExtreme: () => { }
33
+ };
34
+ }
35
+ export function stubBlockEdit() {
36
+ return {
37
+ splitBlock: () => { },
38
+ descendToBody: () => { },
39
+ insertParagraph: () => { },
40
+ mergeWithPrevious: () => { },
41
+ mergeWithNext: () => { },
42
+ deleteBlock: () => { },
43
+ updateBlockContent: () => { },
44
+ updateBlockMetadata: () => { },
45
+ replaceBlock: () => { }
46
+ };
47
+ }
48
+ export function recordingFocus() {
49
+ const moveFocusCalls = [];
50
+ return {
51
+ moveFocusCalls,
52
+ moveFocus: (...args) => {
53
+ moveFocusCalls.push(args);
54
+ },
55
+ // The focus-bubble consumers assert on moveFocus, never on a resolved component.
56
+ revealPath: async () => null,
57
+ // Headless: no rendered boundary to park a gap caret at.
58
+ tryGapStop: () => false
59
+ };
60
+ }
61
+ // ── Block-list state ─────────────────────────────────────────────────────────
62
+ /**
63
+ * A BlockListState seeded with one ref per child (the `$effect` that fills refs never
64
+ * runs headlessly). `getNode` must read the LIVE node: the commit primitives replace the
65
+ * spine's nodes, so a captured reference goes stale after the first commit.
66
+ */
67
+ export function mountBlockListState(getNode) {
68
+ const state = createBlockListState(() => getNode());
69
+ replaceRefs(state.innerBlockRefs, (getNode().children ?? []).map(() => stubBlockComponent()));
70
+ return state;
71
+ }
72
+ /** An `EditorActionsDeps` over `docChildren`, with every block treated as mounted. */
73
+ export function createHeadlessActions(docChildren) {
74
+ const doc = { kind: 'document', prefix: '', children: docChildren, suffix: '' };
75
+ let blockIds = docChildren.map((_, i) => `block-${i}`);
76
+ const blockRefs = docChildren.map(() => stubBlockComponent());
77
+ const events = createEditorEvents();
78
+ const deps = {
79
+ get doc() {
80
+ return doc;
81
+ },
82
+ get blockIds() {
83
+ return blockIds;
84
+ },
85
+ get blockRefs() {
86
+ return blockRefs;
87
+ },
88
+ blockRefSlots: refSlotsOver(blockRefs),
89
+ setDoc: (v) => {
90
+ Object.assign(doc, v);
91
+ },
92
+ setBlockIds: (v) => {
93
+ blockIds = v;
94
+ },
95
+ setBlockRefs: (v) => {
96
+ replaceRefs(blockRefs, v);
97
+ },
98
+ bumpContentVersion: () => { },
99
+ undoManager: createUndoManager(),
100
+ sharing: createSharingState(),
101
+ stickyColumn: stubStickyColumn(),
102
+ edgeAffinity: stubEdgeAffinity(),
103
+ selectionState: createSelectionState(),
104
+ getBlockElByPath: () => null,
105
+ revealPath: async (path) => {
106
+ if (path.length === 0)
107
+ return null;
108
+ const ref = blockRefs[path[0]];
109
+ if (!ref)
110
+ return null;
111
+ if (path.length === 1)
112
+ return ref;
113
+ return ref.getBlockComponentByPath?.(path.slice(1)) ?? null;
114
+ },
115
+ events
116
+ };
117
+ return { deps, doc, events };
118
+ }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * The inline-rung conformance kit, published at `@voithos-labs/aragonite/testing` — sibling of the block
3
+ * layer's `runKindConformance` and the container kit. Reads the LIVE registry, so it
4
+ * composes with `resetPluginPlatformForTests()` cycles. The four profile-declared cells are
5
+ * required, not optional, since every one is invisible to byte round-trip; an exemption the
6
+ * kit can falsify, it falsifies. Failures throw a plain `Error`.
7
+ */
8
+ import { type AnyInlineKind } from '../core/nodes';
9
+ import { type ConformanceCoverage } from './conformance-core';
10
+ export interface InlineConformanceProfile {
11
+ /** The single character the rung registered on. */
12
+ trigger: string;
13
+ /** The rung's multi-char prefix; omit for a bare-trigger registration. */
14
+ prefix?: string;
15
+ /** Disambiguator when two rungs share a prefix on one trigger at different priorities. */
16
+ priority?: number;
17
+ /**
18
+ * The inline kind the rung mints as its own. Omit for a rung that only mints
19
+ * built-in kinds over its own bytes (the `![[…]]`-as-`image` shape).
20
+ */
21
+ kind?: AnyInlineKind;
22
+ /** Single-line sources the rung CLAIMS. Non-empty: every other cell reads their nodes. */
23
+ fixtures: string[];
24
+ /**
25
+ * Single-line sources whose bytes the rung's prefix matches but a built-in (or an
26
+ * earlier rung) owns. Required when `overlapDecline` asserts.
27
+ */
28
+ overlapFixtures?: string[];
29
+ overlapDecline: ConformanceCoverage;
30
+ widget: ConformanceCoverage;
31
+ editingPolicy: ConformanceCoverage;
32
+ imageClaim: ConformanceCoverage;
33
+ }
34
+ export type InlineConformanceCell = 'claims' | 'roundTrip' | 'overlapDecline' | 'widget' | 'editingPolicy' | 'imageClaim' | 'registration';
35
+ export interface InlineCellReport {
36
+ cell: InlineConformanceCell;
37
+ status: 'asserted' | 'exempt' | 'boundary';
38
+ /** Why a cell was excused, or which mechanism an asserted cell drove. */
39
+ detail?: string;
40
+ }
41
+ export interface InlineConformanceReport {
42
+ trigger: string;
43
+ prefix: string;
44
+ cells: InlineCellReport[];
45
+ }
46
+ /**
47
+ * Run every conformance cell for the registered rung the profile names. Returns the
48
+ * coverage report, or throws an `Error` naming every failed cell.
49
+ */
50
+ export declare function runInlineKindConformance(profile: InlineConformanceProfile): InlineConformanceReport;
@@ -0,0 +1,442 @@
1
+ /**
2
+ * The inline-rung conformance kit, published at `@voithos-labs/aragonite/testing` — sibling of the block
3
+ * layer's `runKindConformance` and the container kit. Reads the LIVE registry, so it
4
+ * composes with `resetPluginPlatformForTests()` cycles. The four profile-declared cells are
5
+ * required, not optional, since every one is invisible to byte round-trip; an exemption the
6
+ * kit can falsify, it falsifies. Failures throw a plain `Error`.
7
+ */
8
+ import { isBuiltinInlineKind } from '../core/nodes';
9
+ import { parse } from '../core/parser';
10
+ import { serialize } from '../core/serializer';
11
+ import { parseInline } from '../core/inline';
12
+ import { renderInlineNodes } from '../core/inline-render';
13
+ import { buildCoreInlineWidget, getInlineWidgetComponent, getInlineWidgetEditing, isInlineWidget, DELETE_GRANULARITIES, ON_EDGE_POLICIES } from '../core/inline/inline-widgets';
14
+ import { INLINE_PRIORITIES, getInlineRungs, isReservedInlineTrigger, isScanProbeTrigger } from '../core/inline/scan/plugin-syntax';
15
+ import { containerDomTextLength } from '../cursor/widget-offset';
16
+ import { assert, assertExemptionDocumented, assertIs, fail } from './conformance-core';
17
+ /**
18
+ * Run every conformance cell for the registered rung the profile names. Returns the
19
+ * coverage report, or throws an `Error` naming every failed cell.
20
+ */
21
+ export function runInlineKindConformance(profile) {
22
+ const prefix = profile.prefix ?? profile.trigger;
23
+ validateProfile(profile, prefix);
24
+ const rung = locateRung(profile, prefix);
25
+ const cells = [];
26
+ const failures = [];
27
+ const runCell = (cell, coverage, assertion) => {
28
+ try {
29
+ if (coverage.mode === 'assert') {
30
+ const outcome = assertion();
31
+ cells.push(typeof outcome === 'string'
32
+ ? { cell, status: 'asserted', detail: outcome }
33
+ : { cell, ...outcome });
34
+ }
35
+ else {
36
+ assertExemptionDocumented(coverage, `${prefix} ${cell}`);
37
+ falsifyExcuse(cell, profile, rung);
38
+ cells.push({ cell, status: coverage.mode, detail: coverage.reason });
39
+ }
40
+ }
41
+ catch (error) {
42
+ failures.push(`${cell}: ${error.message}`);
43
+ }
44
+ };
45
+ runCell('claims', { mode: 'assert' }, () => checkClaimsItsFixtures(profile, rung));
46
+ runCell('roundTrip', { mode: 'assert' }, () => checkRoundTrip(profile, rung));
47
+ runCell('overlapDecline', profile.overlapDecline, () => checkOverlapDecline(profile, rung));
48
+ runCell('widget', profile.widget, () => checkWidgetAtomicity(profile, rung));
49
+ runCell('editingPolicy', profile.editingPolicy, () => checkEditingPolicy(profile, rung));
50
+ runCell('imageClaim', profile.imageClaim, () => checkImageClaimStamp(profile, rung));
51
+ runCell('registration', { mode: 'assert' }, () => checkRegistrationHygiene(profile, prefix, rung));
52
+ if (failures.length > 0) {
53
+ fail(`inline conformance failed for rung "${prefix}":\n - ${failures.join('\n - ')}`);
54
+ }
55
+ return { trigger: profile.trigger, prefix, cells };
56
+ }
57
+ // ── Profile validation + rung lookup ─────────────────────────────────────────
58
+ function validateProfile(profile, prefix) {
59
+ assertIs(profile.trigger.length, 1, 'trigger is a single character');
60
+ assert(prefix.startsWith(profile.trigger), `prefix ${JSON.stringify(prefix)} begins with the trigger ${JSON.stringify(profile.trigger)}`);
61
+ assert(profile.fixtures.length > 0, 'the profile supplies at least one fixture the rung claims');
62
+ for (const fixture of profile.fixtures)
63
+ assertSingleLine(fixture, 'fixture');
64
+ // A prefix rung is consulted BEFORE the built-in case it shadows, so the overlap
65
+ // always exists and there is nothing to excuse.
66
+ if (isReservedInlineTrigger(profile.trigger) && profile.overlapDecline.mode !== 'assert') {
67
+ fail(`${JSON.stringify(profile.trigger)} is claimed by the built-in scanner, so this rung is ` +
68
+ `consulted ahead of it and MUST decline the overlap — overlapDecline cannot be ` +
69
+ `${profile.overlapDecline.mode} on a reserved trigger`);
70
+ }
71
+ if (profile.overlapDecline.mode === 'assert') {
72
+ assert((profile.overlapFixtures?.length ?? 0) > 0, 'overlapDecline asserts but the profile supplies no overlapFixtures');
73
+ }
74
+ for (const fixture of profile.overlapFixtures ?? [])
75
+ assertSingleLine(fixture, 'overlap fixture');
76
+ }
77
+ function assertSingleLine(source, label) {
78
+ assert(source.length > 0, `${label} is non-empty`);
79
+ assert(!source.includes('\n'), `${label} ${JSON.stringify(source)} is a single line — the kit interleaves it into block contexts`);
80
+ }
81
+ function locateRung(profile, prefix) {
82
+ const matches = getInlineRungs(profile.trigger).filter((r) => r.prefix === prefix && (profile.priority === undefined || r.priority === profile.priority));
83
+ if (matches.length === 0) {
84
+ fail(`no rung is registered on ${JSON.stringify(profile.trigger)} at prefix ` +
85
+ `${JSON.stringify(prefix)}${profile.priority === undefined ? '' : `, priority ${profile.priority}`} — ` +
86
+ `register the plugin before running the kit, and check nothing else claimed the trigger first`);
87
+ }
88
+ if (matches.length > 1) {
89
+ fail(`${matches.length} rungs share prefix ${JSON.stringify(prefix)} on ` +
90
+ `${JSON.stringify(profile.trigger)} — name the rung's priority in the profile`);
91
+ }
92
+ return matches[0];
93
+ }
94
+ // ── Claim resolution ─────────────────────────────────────────────────────────
95
+ /**
96
+ * Every node this rung minted from `source`, in document order. Ownership reads two
97
+ * ways because a rung's own kind carries no stamp by design: the declared kind, or the
98
+ * claim the scan stamps on a BUILT-IN kind minted over the rung's bytes.
99
+ */
100
+ function mintedNodes(source, profile, rung) {
101
+ const out = [];
102
+ const visit = (nodes) => {
103
+ for (const node of nodes) {
104
+ if (node.kind === profile.kind || node.syntaxClaim?.prefix === rung.prefix)
105
+ out.push(node);
106
+ else if (node.children)
107
+ visit(node.children);
108
+ }
109
+ };
110
+ visit(parseInline(source, 0, source.length));
111
+ return out;
112
+ }
113
+ /**
114
+ * Every claim in a fixture, or a failure naming it. A fixture may carry more than one
115
+ * (`see [^a] and [^b]`), and every cell below walks all of them.
116
+ */
117
+ function claimsIn(fixture, profile, rung) {
118
+ const minted = mintedNodes(fixture, profile, rung);
119
+ assert(minted.length > 0, `fixture ${JSON.stringify(fixture)} is not claimed by the "${rung.prefix}" rung — ` +
120
+ `the kit would enroll the rung without exercising it`);
121
+ return minted;
122
+ }
123
+ // ── claims ───────────────────────────────────────────────────────────────────
124
+ function checkClaimsItsFixtures(profile, rung) {
125
+ let claims = 0;
126
+ for (const fixture of profile.fixtures) {
127
+ for (const node of claimsIn(fixture, profile, rung)) {
128
+ assert(node.end > node.start, `the claim over ${JSON.stringify(fixture)} advances`);
129
+ assert(node.start >= 0 && node.end <= fixture.length, `the claim over ${JSON.stringify(fixture)} stays inside the source`);
130
+ assert(fixture.startsWith(rung.prefix, node.start), `the claim over ${JSON.stringify(fixture)} starts at the rung's own prefix`);
131
+ claims++;
132
+ }
133
+ }
134
+ return `${claims} claim(s) across ${profile.fixtures.length} fixture(s)`;
135
+ }
136
+ // ── roundTrip ────────────────────────────────────────────────────────────────
137
+ /**
138
+ * Adjacencies a rung's `end` arithmetic gets wrong: a construct starting where the
139
+ * claim ended, the rung's own trigger on its edges, a wrapper contesting the bytes.
140
+ */
141
+ function interleavings(fixture, trigger) {
142
+ return [
143
+ fixture,
144
+ `before ${fixture} after`,
145
+ `${fixture} ${fixture}`,
146
+ `${fixture}${fixture}`,
147
+ `*${fixture}*`,
148
+ `\`${fixture}\``,
149
+ `[${fixture}](https://example.com)`,
150
+ `> ${fixture}`,
151
+ `${trigger}${fixture}`,
152
+ `${fixture}${trigger}`
153
+ ];
154
+ }
155
+ /**
156
+ * How far into `fixture` its own opener ends. Cutting a scan range there puts the last
157
+ * consultation on a prefix whose closer is out of range — the shape a heading's
158
+ * excluded `#` run makes of any construct straddling it.
159
+ */
160
+ function openerWidth(fixture, prefix) {
161
+ const at = fixture.indexOf(prefix);
162
+ return at < 0 ? prefix.length : at + prefix.length;
163
+ }
164
+ function checkRoundTrip(profile, rung) {
165
+ let count = 0;
166
+ for (const fixture of profile.fixtures) {
167
+ for (const source of interleavings(fixture, profile.trigger)) {
168
+ const withEnding = `${source}\n`;
169
+ assertIs(serialize(parse(withEnding)), withEnding, `serialize(parse(source)) round-trips ${JSON.stringify(withEnding)}`);
170
+ assertScanTiles(source, source.length);
171
+ // Scan ranges that stop short of the raw (a heading's excluded `#` run, a table
172
+ // cell's `|`): the tail is real grammar, so a terminator search written without
173
+ // an `end` bound reaches into it. Two cut points because where the boundary falls
174
+ // relative to a construct is the variable.
175
+ assertScanTiles(source + fixture, source.length);
176
+ assertScanTiles(source + fixture, source.length + openerWidth(fixture, rung.prefix));
177
+ count++;
178
+ }
179
+ }
180
+ return `${count} source(s) round-trip byte-for-byte and tile their scan range`;
181
+ }
182
+ /**
183
+ * The inline layer's own byte round-trip: `serialize(parse(s))` is raw-driven and cannot
184
+ * see a rung at all, so the property a rung can break is the scanner's contract — nodes
185
+ * tile `[0, end)` with no gap or overlap and their slices reassemble the scanned bytes.
186
+ * An overrun past `end` never reaches here; the dispatch throws on it (scan/index.ts).
187
+ */
188
+ function assertScanTiles(raw, end) {
189
+ const nodes = parseInline(raw, 0, end);
190
+ let cursor = 0;
191
+ for (const node of nodes) {
192
+ assertIs(node.start, cursor, `the scan of ${JSON.stringify(raw.slice(0, end))} tiles without a gap or overlap at ${cursor}`);
193
+ cursor = node.end;
194
+ }
195
+ assertIs(cursor, end, `the scan of ${JSON.stringify(raw.slice(0, end))} covers its whole range`);
196
+ assertIs(nodes.map((n) => raw.slice(n.start, n.end)).join(''), raw.slice(0, end), `the scanned spans of ${JSON.stringify(raw.slice(0, end))} reassemble its bytes`);
197
+ }
198
+ // ── overlapDecline ───────────────────────────────────────────────────────────
199
+ /**
200
+ * At every position the scan would consult this rung the recognizer must return null.
201
+ * A decline leaves the scan context untouched, so declining everywhere IS the guarantee
202
+ * that the built-in reads byte-identical bytes.
203
+ */
204
+ function checkOverlapDecline(profile, rung) {
205
+ const fixtures = profile.overlapFixtures ?? [];
206
+ let consulted = 0;
207
+ for (const source of fixtures) {
208
+ let positions = 0;
209
+ for (let pos = 0; pos < source.length; pos++) {
210
+ if (!source.startsWith(rung.prefix, pos))
211
+ continue;
212
+ positions++;
213
+ const claimed = rung.recognizer(source, pos, source.length);
214
+ if (claimed !== null) {
215
+ fail(`the "${rung.prefix}" rung swallowed the overlap in ${JSON.stringify(source)} at ` +
216
+ `offset ${pos} — it claimed [${claimed.start}, ${claimed.end}) as "${claimed.kind}", ` +
217
+ `so the built-in construct those bytes spell never reaches the scanner`);
218
+ }
219
+ }
220
+ assert(positions > 0, `overlap fixture ${JSON.stringify(source)} never presents the rung's prefix ` +
221
+ `${JSON.stringify(rung.prefix)} — it exercises no overlap`);
222
+ consulted += positions;
223
+ const minted = mintedNodes(source, profile, rung);
224
+ assertIs(minted.length, 0, `the parse of ${JSON.stringify(source)} holds no node the "${rung.prefix}" rung claimed`);
225
+ const withEnding = `${source}\n`;
226
+ assertIs(serialize(parse(withEnding)), withEnding, `the declined overlap ${JSON.stringify(withEnding)} round-trips`);
227
+ }
228
+ return `${consulted} prefix position(s) declined across ${fixtures.length} overlap fixture(s)`;
229
+ }
230
+ // ── widget ───────────────────────────────────────────────────────────────────
231
+ const NO_DOM = 'no DOM in this environment — the island half of the widget cell needs one; run this ' +
232
+ 'suite under jsdom/happy-dom (Vitest: a `// @vitest-environment jsdom` docblock)';
233
+ const RECOGNITION_HALF = 'recognition + self-delimiting claim';
234
+ function checkWidgetAtomicity(profile, rung) {
235
+ const kind = profile.kind;
236
+ assert(kind !== undefined, 'the widget cell asserts but the profile names no kind — a rung minting only built-in ' +
237
+ 'kinds renders through the built-in widget and declares this cell exempt');
238
+ for (const fixture of profile.fixtures) {
239
+ for (const node of claimsIn(fixture, profile, rung)) {
240
+ assert(isInlineWidget(node, fixture), `the "${kind}" node from ${JSON.stringify(fixture)} is a registered live widget`);
241
+ assertSelfDelimiting(fixture, node, kind);
242
+ }
243
+ }
244
+ // Both early exits report BOUNDARY, not asserted: the island contract did not run.
245
+ if (getInlineWidgetComponent(kind) !== undefined) {
246
+ return {
247
+ status: 'boundary',
248
+ detail: `${RECOGNITION_HALF} executed; the island wrapper of a \`component\` kind is minted by ` +
249
+ `the render layer, not by the plugin, so it is not the plugin’s to get wrong`
250
+ };
251
+ }
252
+ if (typeof document === 'undefined') {
253
+ return { status: 'boundary', detail: `${RECOGNITION_HALF} executed — ${NO_DOM}` };
254
+ }
255
+ for (const fixture of profile.fixtures) {
256
+ for (const node of claimsIn(fixture, profile, rung)) {
257
+ assertIslandContract(fixture, node, kind);
258
+ }
259
+ assertWalkLengthIsRawLength(fixture);
260
+ }
261
+ return 'recognition, self-delimiting claim, island contract, and offset-walk length';
262
+ }
263
+ /**
264
+ * The claimed bytes must stand alone: `data-source-*` hands exactly this slice to the
265
+ * clipboard and to a source reveal, and a slice that only forms in its original context
266
+ * pastes back as broken prose while the document it came from round-trips perfectly.
267
+ */
268
+ function assertSelfDelimiting(fixture, node, kind) {
269
+ const slice = fixture.slice(node.start, node.end);
270
+ const alone = parseInline(slice, 0, slice.length);
271
+ const first = alone[0];
272
+ assert(first !== undefined && first.kind === kind && first.start === 0 && first.end === slice.length, `the claimed slice ${JSON.stringify(slice)} re-forms as a whole "${kind}" on its own — ` +
273
+ `the bytes data-source-* hands the clipboard and the reveal`);
274
+ }
275
+ function assertIslandContract(fixture, node, kind) {
276
+ const island = buildCoreInlineWidget(node, fixture);
277
+ assert(island !== null, `the "${kind}" widget builds an island from ${JSON.stringify(fixture)}`);
278
+ assert(island.hasAttribute('data-inline-widget'), `the "${kind}" island carries [data-inline-widget] — the offset walk's only handle`);
279
+ assertIs(island.getAttribute('contenteditable'), 'false', `the "${kind}" island is contenteditable=false`);
280
+ assertIs(Number(island.getAttribute('data-source-start')), node.start, `the "${kind}" island's data-source-start is the node's own offset`);
281
+ assertIs(Number(island.getAttribute('data-source-end')), node.end, `the "${kind}" island's data-source-end is the node's own offset`);
282
+ }
283
+ /**
284
+ * The offset walk counts a widget as its SOURCE span, never as what it renders — an
285
+ * emoji island showing one glyph for seven raw bytes still walks seven. Every caret
286
+ * offset in the block rides on this, and no byte moves when it is wrong.
287
+ */
288
+ function assertWalkLengthIsRawLength(fixture) {
289
+ const container = document.createElement('div');
290
+ container.appendChild(renderInlineNodes(parseInline(fixture, 0, fixture.length), fixture));
291
+ assertIs(Number(containerDomTextLength(container)), fixture.length, `the offset walk over the rendered ${JSON.stringify(fixture)} measures its raw length`);
292
+ }
293
+ // ── editingPolicy ────────────────────────────────────────────────────────────
294
+ /**
295
+ * A policy field outside the caret-edge dispatch's vocabulary is read as absent and the
296
+ * kind silently takes the default, with no byte differing.
297
+ */
298
+ function checkEditingPolicy(profile, rung) {
299
+ const kind = profile.kind;
300
+ assert(kind !== undefined, 'the editingPolicy cell asserts but the profile names no kind');
301
+ const policy = getInlineWidgetEditing(kind);
302
+ assert(policy !== undefined, `"${kind}" declares no editing policy — register one, or declare this cell exempt if the ` +
303
+ `widget takes the default select-then-delete behavior deliberately`);
304
+ // An all-absent object is what the dispatch reads as no policy, so accepting one lets a kind
305
+ // clear the cell with a declaration that changes not one byte of behavior.
306
+ assert(Object.values(policy).some((field) => field !== undefined), `"${kind}" registers an editing policy with every field absent, which the caret-edge ` +
307
+ `dispatch reads exactly as no policy at all — declare a field, or declare this cell exempt`);
308
+ assertPolicyVocabulary(policy, kind);
309
+ if (policy.deleteGranularity === 'atomic') {
310
+ for (const fixture of profile.fixtures) {
311
+ // One press deletes ONE widget, so each claim is excised on its own.
312
+ for (const node of claimsIn(fixture, profile, rung)) {
313
+ const excised = `${fixture.slice(0, node.start)}${fixture.slice(node.end)}\n`;
314
+ assertIs(serialize(parse(excised)), excised, `the one-press whole-delete of the claim at ${node.start} in ` +
315
+ `${JSON.stringify(fixture)} leaves bytes that round-trip`);
316
+ }
317
+ }
318
+ return 'policy vocabulary + atomic whole-delete leaves round-tripping bytes';
319
+ }
320
+ return 'policy vocabulary';
321
+ }
322
+ function assertPolicyVocabulary(policy, kind) {
323
+ if (policy.revealSource !== undefined) {
324
+ assertIs(typeof policy.revealSource, 'boolean', `"${kind}" revealSource is a boolean`);
325
+ }
326
+ if (policy.deleteGranularity !== undefined) {
327
+ assert(DELETE_GRANULARITIES.includes(policy.deleteGranularity), `"${kind}" deleteGranularity is one of ${DELETE_GRANULARITIES.join(' | ')}`);
328
+ }
329
+ if (policy.onEdge !== undefined) {
330
+ assert(ON_EDGE_POLICIES.includes(policy.onEdge), `"${kind}" onEdge is one of ${ON_EDGE_POLICIES.join(' | ')}`);
331
+ }
332
+ if (policy.onSelectedKey !== undefined) {
333
+ assertIs(typeof policy.onSelectedKey, 'function', `"${kind}" onSelectedKey is callable`);
334
+ }
335
+ if (policy.claimsActivationClick !== undefined) {
336
+ assertIs(typeof policy.claimsActivationClick, 'boolean', `"${kind}" claimsActivationClick is a boolean`);
337
+ }
338
+ }
339
+ // ── imageClaim ───────────────────────────────────────────────────────────────
340
+ /**
341
+ * A rung minting a BUILT-IN kind borrows the editor's model for bytes of its own, and the
342
+ * editor's inverse emits the built-in grammar — so without `rewriteImage` a resize turns
343
+ * `![[cat.png|300]]` into GFM. The document round-trips throughout; it is simply a
344
+ * different document.
345
+ */
346
+ function checkImageClaimStamp(profile, rung) {
347
+ let stamped = 0;
348
+ for (const fixture of profile.fixtures) {
349
+ for (const node of mintedNodes(fixture, profile, rung)) {
350
+ if (node.kind === profile.kind) {
351
+ assertIs(node.syntaxClaim, undefined, `the rung's own "${node.kind}" is left unstamped — nothing outside the plugin ` +
352
+ `could re-serialize it, so the stamp would have no reader`);
353
+ continue;
354
+ }
355
+ assert(isBuiltinInlineKind(node.kind), `the claimed "${node.kind}" node is a built-in kind the scan stamps`);
356
+ assertIs(node.syntaxClaim?.prefix, rung.prefix, `the built-in "${node.kind}" minted over the rung's bytes carries its claim`);
357
+ stamped++;
358
+ if (node.kind === 'image')
359
+ assertRewriteReproducesSource(fixture, node, rung);
360
+ }
361
+ }
362
+ assert(stamped > 0, `imageClaim asserts but no fixture mints a built-in kind — declare the cell exempt if the ` +
363
+ `rung mints only its own kind`);
364
+ return `${stamped} built-in node(s) stamped, rewriteImage reproduces its own input`;
365
+ }
366
+ /**
367
+ * The hook must re-emit the node it was handed, unedited. A byte-identical result is
368
+ * dropped by the commit's equality guard with no warning, so a hook that cannot
369
+ * reproduce its own input surfaces as an edit that silently does nothing.
370
+ */
371
+ function assertRewriteReproducesSource(fixture, node, rung) {
372
+ assert(rung.rewriteImage !== undefined, `the "${rung.prefix}" rung mints a built-in image but registers no rewriteImage — every ` +
373
+ `image edit on it is declined, and without the hook the editor would write GFM over ` +
374
+ `the rung's own syntax`);
375
+ const source = fixture.slice(node.start, node.end);
376
+ const fields = {
377
+ alt: node.alt ?? '',
378
+ url: node.url ?? '',
379
+ ...(node.title !== undefined ? { title: node.title } : {}),
380
+ ...(node.label !== undefined ? { label: node.label } : {}),
381
+ ...(node.width !== undefined ? { width: node.width } : {}),
382
+ ...(node.height !== undefined ? { height: node.height } : {})
383
+ };
384
+ assertIs(rung.rewriteImage(source, fields), source, `rewriteImage re-emits ${JSON.stringify(source)} from the fields the scan read out of it`);
385
+ }
386
+ // ── registration ─────────────────────────────────────────────────────────────
387
+ function checkRegistrationHygiene(profile, prefix, rung) {
388
+ const reserved = isReservedInlineTrigger(profile.trigger);
389
+ // Two rungs MAY share a prefix at different priorities (emoji and the directive text
390
+ // tier coexist on `:`); two at the SAME priority could not be ordered by dispatch.
391
+ const sameRung = getInlineRungs(profile.trigger).filter((r) => r.prefix === prefix && r.priority === rung.priority);
392
+ assertIs(sameRung.length, 1, `exactly one rung holds prefix ${JSON.stringify(prefix)} at priority ${rung.priority}`);
393
+ if (reserved) {
394
+ assert(prefix.length >= 2, 'a reserved trigger is reachable only through a multi-char prefix');
395
+ assert(rung.priority < INLINE_PRIORITIES.builtin, `a reserved-trigger rung is priced below the built-in boundary ` +
396
+ `(${INLINE_PRIORITIES.builtin}) so its prefix outranks the built-in case; got ${rung.priority}`);
397
+ }
398
+ else {
399
+ // The scan's fast bail skips an unreserved trigger unless a registration turns
400
+ // its per-character probe on; without it the recognizer never runs in prose.
401
+ assert(isScanProbeTrigger(profile.trigger), `the scan's fast bail visits ${JSON.stringify(profile.trigger)} — a trigger it skips ` +
402
+ `makes the recognizer unreachable in plain text`);
403
+ }
404
+ return reserved
405
+ ? `prefix rung at priority ${rung.priority}, below the built-in boundary`
406
+ : `bare rung at priority ${rung.priority} on a scan-probed trigger`;
407
+ }
408
+ // ── Falsifiable excuses ──────────────────────────────────────────────────────
409
+ /**
410
+ * An excuse the kit can check, it checks: a reason is a claim about the rung, not a
411
+ * waiver, so a profile excusing a cell that has something to bite on fails.
412
+ */
413
+ function falsifyExcuse(cell, profile, rung) {
414
+ if (cell === 'overlapDecline' && (profile.overlapFixtures?.length ?? 0) > 0) {
415
+ fail('the profile supplies overlapFixtures but declares overlapDecline excused — the fixtures ' +
416
+ 'say the overlap exists, so assert the cell');
417
+ }
418
+ if (cell === 'widget' && profile.kind !== undefined) {
419
+ const claimed = profile.fixtures
420
+ .flatMap((f) => mintedNodes(f, profile, rung).map((n) => ({ f, n })))
421
+ .find(({ f, n }) => n.kind === profile.kind && isInlineWidget(n, f));
422
+ if (claimed) {
423
+ fail(`"${profile.kind}" IS a registered live widget (from ${JSON.stringify(claimed.f)}), so ` +
424
+ `the widget cell has something to bite on and cannot be excused`);
425
+ }
426
+ }
427
+ if (cell === 'editingPolicy' && profile.kind !== undefined) {
428
+ const policy = getInlineWidgetEditing(profile.kind);
429
+ if (policy && Object.keys(policy).length > 0) {
430
+ fail(`"${profile.kind}" declares an editing policy, so the editingPolicy cell cannot be excused`);
431
+ }
432
+ }
433
+ if (cell === 'imageClaim') {
434
+ const stamped = profile.fixtures
435
+ .flatMap((f) => mintedNodes(f, profile, rung))
436
+ .find((n) => n.syntaxClaim?.prefix === rung.prefix);
437
+ if (stamped) {
438
+ fail(`a fixture mints a stamped built-in "${stamped.kind}", so the imageClaim cell has ` +
439
+ `something to bite on and cannot be excused`);
440
+ }
441
+ }
442
+ }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * The generic per-kind conformance battery — the executable half of the closure matrix.
3
+ * Registering a block kind enrolls it: one cell per `ClosureColumn`, derived from the
4
+ * kind's `closure` block and `conformanceFixture`. A cell is executed only where its
5
+ * mechanism is headlessly observable; everything else is recorded as `boundary` or
6
+ * `exempt`, never stubbed green. Runner-agnostic — plain `Error`s, no runner import.
7
+ */
8
+ import type { AnyBlockKind, CstNode, Document } from '../core/nodes';
9
+ import type { ClosureCell, ClosureColumn } from '../schema/closure';
10
+ import { type BlockKindDescriptor } from '../schema/block-kind-descriptor';
11
+ export type KindCellStatus = 'executed' | 'boundary' | 'exempt';
12
+ export interface KindCellReport {
13
+ column: ClosureColumn;
14
+ mode: ClosureCell['mode'];
15
+ status: KindCellStatus;
16
+ /** Why a cell is boundary/exempt, or which mechanism an executed cell drove. */
17
+ detail: string;
18
+ }
19
+ export interface KindConformanceReport {
20
+ kind: AnyBlockKind;
21
+ cells: KindCellReport[];
22
+ }
23
+ /** The parsed fixture context a cell executor reads; absent without a `conformanceFixture`. */
24
+ export interface KindCellContext {
25
+ kind: AnyBlockKind;
26
+ descriptor: BlockKindDescriptor;
27
+ fixture: string;
28
+ doc: Document;
29
+ node: CstNode;
30
+ nodePath: number[];
31
+ }
32
+ export interface KindCellCheck {
33
+ check: (ctx: KindCellContext) => void | Promise<void>;
34
+ }
35
+ /**
36
+ * Profile-supplied overrides. A column with a custom `check` runs it instead of the
37
+ * generic executor, for a mechanism the runner cannot observe (table's rectangular copy).
38
+ */
39
+ export interface KindConformanceProfile {
40
+ cells?: Partial<Record<ClosureColumn, KindCellCheck>>;
41
+ }
42
+ /**
43
+ * Execute every headless closure cell for `kind`, or throw an `Error` naming each failed
44
+ * cell. A `conformanceFixture` parsing to no node of the kind fails the run outright.
45
+ */
46
+ export declare function runKindConformance(kind: AnyBlockKind, profile?: KindConformanceProfile): Promise<KindConformanceReport>;
47
+ /**
48
+ * Assert the default cross-block copy over `kind`'s fixture carries its bytes with no
49
+ * kind-specific synthesis, at BOTH endpoint roles — the honest meaning of
50
+ * `clipboard: inherit-default`. Endpoints ride the real selection funnel, so the expectation is
51
+ * the contract, never a re-derivation of the slice under test. Fixture contract: `fixture`
52
+ * parses to `kind` at `children[0]`; the kit adds its sentinel block on the sweeping side.
53
+ */
54
+ export declare function checkCopyIsRawByteSlice(kind: AnyBlockKind, fixture: string): void;