@voithos-labs/aragonite 0.10.3 → 0.10.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1021) hide show
  1. package/README.md +2 -2
  2. package/dist/a11y-strings.d.ts +12 -5
  3. package/dist/a11y-strings.js +61 -5
  4. package/dist/action-contracts.d.ts +242 -155
  5. package/dist/action-contracts.js +2 -2
  6. package/dist/active-editor.d.ts +3 -3
  7. package/dist/active-editor.js +8 -9
  8. package/dist/ambient/ambient-dom.d.ts +2 -5
  9. package/dist/ambient/ambient-dom.js +16 -62
  10. package/dist/assert.js +6 -5
  11. package/dist/block-component.d.ts +135 -109
  12. package/dist/block-component.js +30 -22
  13. package/dist/block-id.d.ts +6 -10
  14. package/dist/block-id.js +25 -14
  15. package/dist/bounded-memo.d.ts +5 -5
  16. package/dist/bounded-memo.js +6 -6
  17. package/dist/components/BlockDragHandle.svelte +13 -20
  18. package/dist/components/BlockHost.svelte +56 -134
  19. package/dist/components/BlockList.svelte +22 -19
  20. package/dist/components/DecorationOverlay.svelte +9 -10
  21. package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
  22. package/dist/components/Editor.svelte +619 -1089
  23. package/dist/components/Editor.svelte.d.ts +9 -20
  24. package/dist/components/GapCaret.svelte +26 -59
  25. package/dist/components/SelectionOverlay.svelte +36 -67
  26. package/dist/components/SelectionOverlay.svelte.d.ts +6 -4
  27. package/dist/components/TailInsert.svelte +8 -55
  28. package/dist/components/TailInsert.svelte.d.ts +4 -6
  29. package/dist/components/block-content-selector.d.ts +11 -11
  30. package/dist/components/block-content-selector.js +11 -11
  31. package/dist/components/block-el-lookup.d.ts +6 -0
  32. package/dist/components/block-el-lookup.js +27 -0
  33. package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
  34. package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
  35. package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
  36. package/dist/components/blocks/code/CodeBlock.svelte +255 -276
  37. package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
  38. package/dist/components/blocks/code/CodeBlockRail.svelte +103 -100
  39. package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
  40. package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
  41. package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
  42. package/dist/components/blocks/code/code-bootstrap.js +35 -28
  43. package/dist/components/blocks/code/code-context-actions.js +5 -4
  44. package/dist/components/blocks/code/code-enter.js +2 -2
  45. package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
  46. package/dist/components/blocks/code/code-fence-boundary.js +40 -66
  47. package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
  48. package/dist/components/blocks/code/code-fence-exit.js +24 -25
  49. package/dist/components/blocks/code/code-indent.d.ts +2 -2
  50. package/dist/components/blocks/code/code-indent.js +4 -7
  51. package/dist/components/blocks/code/code-languages.d.ts +16 -12
  52. package/dist/components/blocks/code/code-languages.js +58 -32
  53. package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
  54. package/dist/components/blocks/code/code-paste-surface.js +9 -18
  55. package/dist/components/blocks/code/code-renderer.d.ts +21 -5
  56. package/dist/components/blocks/code/code-renderer.js +90 -125
  57. package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
  58. package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
  59. package/dist/components/blocks/directive/activate-directives.js +18 -13
  60. package/dist/components/blocks/editable-leaf.d.ts +50 -74
  61. package/dist/components/blocks/editable-leaf.js +144 -202
  62. package/dist/components/blocks/editable-surface.d.ts +96 -100
  63. package/dist/components/blocks/editable-surface.js +101 -109
  64. package/dist/components/blocks/list/ListBlock.svelte +46 -90
  65. package/dist/components/blocks/list/ListItemBlock.svelte +99 -144
  66. package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +3 -0
  67. package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
  68. package/dist/components/blocks/list/task-checkbox.js +12 -7
  69. package/dist/components/blocks/plain-text-backend.d.ts +4 -20
  70. package/dist/components/blocks/plain-text-backend.js +9 -43
  71. package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
  72. package/dist/components/blocks/surface-wiring.svelte.js +15 -34
  73. package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
  74. package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
  75. package/dist/components/blocks/table/TableBlock.svelte +100 -165
  76. package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
  77. package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
  78. package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
  79. package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
  80. package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
  81. package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
  82. package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
  83. package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
  84. package/dist/components/blocks/table/cell-pointer.js +49 -71
  85. package/dist/components/blocks/table/cell-render.d.ts +24 -29
  86. package/dist/components/blocks/table/cell-render.js +29 -31
  87. package/dist/components/blocks/table/selected-cells.d.ts +7 -7
  88. package/dist/components/blocks/table/selected-cells.js +9 -13
  89. package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
  90. package/dist/components/blocks/table/table-caret-at-point.js +5 -5
  91. package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
  92. package/dist/components/blocks/table/table-cell-paste.js +27 -43
  93. package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
  94. package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
  95. package/dist/components/blocks/table/table-menu-model.js +6 -10
  96. package/dist/components/blocks/table/table-navigation.js +2 -2
  97. package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
  98. package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
  99. package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
  100. package/dist/components/blocks/text/auto-pair-record.js +51 -0
  101. package/dist/components/blocks/text/click-snap-guard.d.ts +9 -4
  102. package/dist/components/blocks/text/click-snap-guard.js +16 -5
  103. package/dist/components/blocks/text/composition-seat.d.ts +17 -14
  104. package/dist/components/blocks/text/composition-seat.js +11 -11
  105. package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
  106. package/dist/components/blocks/text/construct-edge-delete.js +50 -65
  107. package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
  108. package/dist/components/blocks/text/construct-reveal.js +13 -14
  109. package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
  110. package/dist/components/blocks/text/delimiter-autopair.js +87 -103
  111. package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
  112. package/dist/components/blocks/text/edge-policy-dispatch.js +164 -180
  113. package/dist/components/blocks/text/edge-seat.d.ts +17 -26
  114. package/dist/components/blocks/text/edge-seat.js +43 -70
  115. package/dist/components/blocks/text/link-at-point.d.ts +9 -9
  116. package/dist/components/blocks/text/link-at-point.js +12 -15
  117. package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
  118. package/dist/components/blocks/text/live-join-seam.js +75 -112
  119. package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
  120. package/dist/components/blocks/text/live-selection-edit.js +32 -105
  121. package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
  122. package/dist/components/blocks/text/live-split-rebalance.js +50 -67
  123. package/dist/components/blocks/text/marker-completion.d.ts +7 -12
  124. package/dist/components/blocks/text/marker-completion.js +17 -10
  125. package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
  126. package/dist/components/blocks/text/pending-mark-insert.js +30 -49
  127. package/dist/components/blocks/text/screen-diff.d.ts +5 -15
  128. package/dist/components/blocks/text/screen-diff.js +5 -19
  129. package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
  130. package/dist/components/blocks/text/text-clipboard.js +27 -32
  131. package/dist/components/blocks/text/text-keydown.d.ts +20 -30
  132. package/dist/components/blocks/text/text-keydown.js +54 -51
  133. package/dist/components/blocks/text/text-render.d.ts +25 -35
  134. package/dist/components/blocks/text/text-render.js +82 -61
  135. package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
  136. package/dist/components/blocks/text/widget-adjacency.js +17 -17
  137. package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
  138. package/dist/components/blocks/text/widget-interaction.js +243 -208
  139. package/dist/components/blocks/widget-portal.d.ts +20 -29
  140. package/dist/components/blocks/widget-portal.js +16 -14
  141. package/dist/components/built-in-blocks.d.ts +3 -4
  142. package/dist/components/built-in-blocks.js +17 -18
  143. package/dist/components/drag-handle.d.ts +13 -30
  144. package/dist/components/drag-handle.js +25 -63
  145. package/dist/components/editor-built-ins.d.ts +1 -0
  146. package/dist/components/editor-built-ins.js +16 -0
  147. package/dist/components/editor-root-clipboard.d.ts +6 -6
  148. package/dist/components/editor-root-clipboard.js +16 -27
  149. package/dist/components/editor-root-document-swap.d.ts +49 -0
  150. package/dist/components/editor-root-document-swap.js +54 -0
  151. package/dist/components/editor-root-focus.d.ts +5 -4
  152. package/dist/components/editor-root-focus.js +51 -22
  153. package/dist/components/editor-root-focused-surface.d.ts +35 -0
  154. package/dist/components/editor-root-focused-surface.js +65 -0
  155. package/dist/components/editor-root-geometry.d.ts +15 -24
  156. package/dist/components/editor-root-geometry.js +27 -31
  157. package/dist/components/editor-root-gestures.d.ts +39 -0
  158. package/dist/components/editor-root-gestures.js +189 -0
  159. package/dist/components/editor-root-keydown.d.ts +10 -25
  160. package/dist/components/editor-root-keydown.js +19 -43
  161. package/dist/components/editor-root-listeners.d.ts +22 -31
  162. package/dist/components/editor-root-listeners.js +49 -46
  163. package/dist/components/editor-root-menus.d.ts +51 -0
  164. package/dist/components/editor-root-menus.js +147 -0
  165. package/dist/components/editor-root-mode-flip.d.ts +16 -11
  166. package/dist/components/editor-root-mode-flip.js +36 -34
  167. package/dist/components/editor-root-scroll-host.d.ts +22 -0
  168. package/dist/components/editor-root-scroll-host.js +34 -0
  169. package/dist/components/editor-root-test-surface.d.ts +48 -0
  170. package/dist/components/editor-root-test-surface.js +6 -0
  171. package/dist/components/image/ImageOverlayHost.svelte +44 -35
  172. package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
  173. package/dist/components/image/ImageProperties.svelte +37 -41
  174. package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
  175. package/dist/components/image/ImageResizeHandles.svelte +26 -30
  176. package/dist/components/image/image-crop.d.ts +5 -11
  177. package/dist/components/image/image-crop.js +5 -11
  178. package/dist/components/image/image-edit-commit.d.ts +19 -16
  179. package/dist/components/image/image-edit-commit.js +74 -38
  180. package/dist/components/image/image-resize.d.ts +2 -5
  181. package/dist/components/image/image-resize.js +3 -6
  182. package/dist/components/image/image-widget-editing.d.ts +3 -3
  183. package/dist/components/image/image-widget-editing.js +9 -9
  184. package/dist/components/image/widget-dom.d.ts +2 -3
  185. package/dist/components/image/widget-dom.js +19 -24
  186. package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
  187. package/dist/components/image/widget-selection-state.svelte.js +26 -19
  188. package/dist/components/kind-cue.svelte.d.ts +21 -0
  189. package/dist/components/kind-cue.svelte.js +35 -0
  190. package/dist/components/link-card/LinkCard.svelte +115 -64
  191. package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
  192. package/dist/components/link-card/LinkCardHost.svelte +42 -33
  193. package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
  194. package/dist/components/link-card/link-card-commit.d.ts +16 -19
  195. package/dist/components/link-card/link-card-commit.js +21 -30
  196. package/dist/components/link-card/link-card-entry.d.ts +13 -23
  197. package/dist/components/link-card/link-card-entry.js +16 -24
  198. package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
  199. package/dist/components/link-card/link-card-state.svelte.js +2 -2
  200. package/dist/components/lrd-map-gate.d.ts +4 -11
  201. package/dist/components/lrd-map-gate.js +5 -11
  202. package/dist/components/menu/BlockMenu.svelte +20 -81
  203. package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
  204. package/dist/components/menu/InlineMenuHost.svelte +191 -0
  205. package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
  206. package/dist/components/menu/MenuIcon.svelte +3 -103
  207. package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
  208. package/dist/components/menu/SelectionToolbar.svelte +380 -0
  209. package/dist/components/menu/SelectionToolbar.svelte.d.ts +14 -0
  210. package/dist/components/menu/clipboard-actions.d.ts +3 -4
  211. package/dist/components/menu/clipboard-actions.js +3 -4
  212. package/dist/components/menu/default-context-actions.d.ts +4 -13
  213. package/dist/components/menu/default-context-actions.js +49 -67
  214. package/dist/components/menu/flyout-placement.d.ts +2 -2
  215. package/dist/components/menu/flyout-placement.js +2 -2
  216. package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
  217. package/dist/components/menu/menu-presence.svelte.js +19 -0
  218. package/dist/components/paste-image-arm.d.ts +6 -11
  219. package/dist/components/paste-image-arm.js +11 -18
  220. package/dist/components/portal.d.ts +2 -5
  221. package/dist/components/portal.js +4 -7
  222. package/dist/core/directive/activate.d.ts +4 -5
  223. package/dist/core/directive/activate.js +8 -9
  224. package/dist/core/directive/container-opener.js +13 -12
  225. package/dist/core/directive/grammar.d.ts +2 -5
  226. package/dist/core/directive/grammar.js +10 -10
  227. package/dist/core/directive/kinds.d.ts +4 -7
  228. package/dist/core/directive/kinds.js +14 -16
  229. package/dist/core/directive/registry.d.ts +12 -9
  230. package/dist/core/directive/registry.js +19 -20
  231. package/dist/core/directive/text-recognizer.d.ts +3 -2
  232. package/dist/core/directive/text-recognizer.js +5 -9
  233. package/dist/core/escapable.d.ts +1 -5
  234. package/dist/core/escapable.js +1 -5
  235. package/dist/core/inline/backticks.d.ts +3 -4
  236. package/dist/core/inline/backticks.js +3 -4
  237. package/dist/core/inline/character-refs.js +2 -1
  238. package/dist/core/inline/destination-bytes.d.ts +6 -3
  239. package/dist/core/inline/destination-bytes.js +50 -8
  240. package/dist/core/inline/entity-widget.d.ts +4 -3
  241. package/dist/core/inline/entity-widget.js +6 -6
  242. package/dist/core/inline/format-toggle.d.ts +22 -28
  243. package/dist/core/inline/format-toggle.js +97 -129
  244. package/dist/core/inline/html-entities.d.ts +2 -3
  245. package/dist/core/inline/html-entities.js +2 -3
  246. package/dist/core/inline/html-tag-grammar.js +6 -2
  247. package/dist/core/inline/image-dimensions.d.ts +2 -0
  248. package/dist/core/inline/image-dimensions.js +19 -2
  249. package/dist/core/inline/image-source-bytes.d.ts +11 -0
  250. package/dist/core/inline/image-source-bytes.js +71 -0
  251. package/dist/core/inline/index.d.ts +28 -21
  252. package/dist/core/inline/index.js +56 -34
  253. package/dist/core/inline/inline-cache.d.ts +12 -15
  254. package/dist/core/inline/inline-cache.js +11 -14
  255. package/dist/core/inline/inline-widgets.d.ts +55 -68
  256. package/dist/core/inline/inline-widgets.js +55 -58
  257. package/dist/core/inline/link-destination.d.ts +31 -0
  258. package/dist/core/inline/link-destination.js +129 -0
  259. package/dist/core/inline/link-reference-resolver.d.ts +8 -6
  260. package/dist/core/inline/link-reference-resolver.js +10 -6
  261. package/dist/core/inline/link-source-bytes.d.ts +31 -0
  262. package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
  263. package/dist/core/inline/live-edit/read-back.d.ts +29 -0
  264. package/dist/core/inline/live-edit/read-back.js +50 -0
  265. package/dist/core/inline/picture.d.ts +10 -0
  266. package/dist/core/inline/picture.js +40 -0
  267. package/dist/core/inline/scan/autolinks.d.ts +7 -8
  268. package/dist/core/inline/scan/autolinks.js +80 -59
  269. package/dist/core/inline/scan/brackets.d.ts +2 -2
  270. package/dist/core/inline/scan/brackets.js +6 -103
  271. package/dist/core/inline/scan/code-spans.d.ts +4 -0
  272. package/dist/core/inline/scan/code-spans.js +8 -0
  273. package/dist/core/inline/scan/emphasis.js +10 -14
  274. package/dist/core/inline/scan/index.d.ts +3 -1
  275. package/dist/core/inline/scan/index.js +32 -33
  276. package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
  277. package/dist/core/inline/scan/plugin-syntax.js +75 -89
  278. package/dist/core/inline/scan/scan-state.d.ts +2 -0
  279. package/dist/core/inline/scan/scan-state.js +1 -0
  280. package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
  281. package/dist/core/inline/scan/simple-nodes.js +2 -5
  282. package/dist/core/inline/scan/triggers.d.ts +17 -0
  283. package/dist/core/inline/scan/triggers.js +26 -0
  284. package/dist/core/inline/scan/url.js +8 -10
  285. package/dist/core/inline/transparency.d.ts +2 -1
  286. package/dist/core/inline/transparency.js +33 -17
  287. package/dist/core/inline/visibility.d.ts +30 -49
  288. package/dist/core/inline/visibility.js +31 -49
  289. package/dist/core/inline/walk.d.ts +4 -10
  290. package/dist/core/inline/walk.js +4 -10
  291. package/dist/core/inline-render.d.ts +22 -27
  292. package/dist/core/inline-render.js +51 -60
  293. package/dist/core/lines.d.ts +67 -26
  294. package/dist/core/lines.js +164 -33
  295. package/dist/core/metadata-parity.d.ts +9 -0
  296. package/dist/core/metadata-parity.js +25 -0
  297. package/dist/core/node-views.d.ts +7 -6
  298. package/dist/core/node-views.js +5 -5
  299. package/dist/core/nodes.d.ts +34 -44
  300. package/dist/core/nodes.js +4 -12
  301. package/dist/core/parser.d.ts +27 -34
  302. package/dist/core/parser.js +53 -67
  303. package/dist/core/parsers/blockquote.d.ts +5 -8
  304. package/dist/core/parsers/blockquote.js +11 -10
  305. package/dist/core/parsers/built-in-openers.d.ts +2 -5
  306. package/dist/core/parsers/built-in-openers.js +5 -8
  307. package/dist/core/parsers/fence-syntax.d.ts +36 -7
  308. package/dist/core/parsers/fence-syntax.js +61 -11
  309. package/dist/core/parsers/fenced-code.d.ts +16 -0
  310. package/dist/core/parsers/fenced-code.js +16 -15
  311. package/dist/core/parsers/heading.d.ts +19 -2
  312. package/dist/core/parsers/heading.js +50 -2
  313. package/dist/core/parsers/html-block.d.ts +3 -6
  314. package/dist/core/parsers/html-block.js +10 -11
  315. package/dist/core/parsers/indented-code.d.ts +1 -1
  316. package/dist/core/parsers/indented-code.js +2 -8
  317. package/dist/core/parsers/link-reference.d.ts +5 -3
  318. package/dist/core/parsers/link-reference.js +116 -120
  319. package/dist/core/parsers/list.d.ts +12 -5
  320. package/dist/core/parsers/list.js +53 -36
  321. package/dist/core/parsers/paragraph.d.ts +3 -3
  322. package/dist/core/parsers/paragraph.js +14 -5
  323. package/dist/core/parsers/table-completion.d.ts +2 -5
  324. package/dist/core/parsers/table-completion.js +7 -10
  325. package/dist/core/parsers/table.d.ts +8 -8
  326. package/dist/core/parsers/table.js +23 -26
  327. package/dist/core/parsers/thematic-break.js +15 -14
  328. package/dist/core/paths.d.ts +13 -0
  329. package/dist/core/paths.js +31 -0
  330. package/dist/core/terminator-escalation.d.ts +0 -7
  331. package/dist/core/terminator-escalation.js +5 -8
  332. package/dist/core/url-policy.d.ts +2 -5
  333. package/dist/core/url-policy.js +8 -12
  334. package/dist/cursor/caret-memory.d.ts +34 -0
  335. package/dist/cursor/caret-memory.js +82 -0
  336. package/dist/cursor/coordinate-spaces.d.ts +26 -19
  337. package/dist/cursor/coordinate-spaces.js +32 -20
  338. package/dist/cursor/dom-walk.d.ts +7 -13
  339. package/dist/cursor/dom-walk.js +7 -13
  340. package/dist/cursor/edge-affinity.d.ts +7 -35
  341. package/dist/cursor/edge-affinity.js +13 -44
  342. package/dist/cursor/focused-caret.d.ts +6 -8
  343. package/dist/cursor/focused-caret.js +7 -16
  344. package/dist/cursor/height-model.d.ts +3 -3
  345. package/dist/cursor/height-model.js +5 -5
  346. package/dist/cursor/height-oracle.d.ts +10 -7
  347. package/dist/cursor/height-oracle.js +26 -75
  348. package/dist/cursor/observe-resize.d.ts +13 -0
  349. package/dist/cursor/observe-resize.js +43 -0
  350. package/dist/cursor/overlay-rects.d.ts +2 -5
  351. package/dist/cursor/overlay-rects.js +2 -5
  352. package/dist/cursor/overlay-remeasure.d.ts +6 -7
  353. package/dist/cursor/overlay-remeasure.js +10 -14
  354. package/dist/cursor/pending-marks.d.ts +7 -9
  355. package/dist/cursor/pending-marks.js +6 -27
  356. package/dist/cursor/point-offset.d.ts +16 -10
  357. package/dist/cursor/point-offset.js +60 -25
  358. package/dist/cursor/reveal-source.d.ts +7 -11
  359. package/dist/cursor/reveal-source.js +10 -18
  360. package/dist/cursor/scroll-ancestors.d.ts +9 -20
  361. package/dist/cursor/scroll-ancestors.js +14 -26
  362. package/dist/cursor/scroll-owner.d.ts +92 -0
  363. package/dist/cursor/scroll-owner.js +283 -0
  364. package/dist/cursor/scrollport.d.ts +16 -8
  365. package/dist/cursor/scrollport.js +28 -5
  366. package/dist/cursor/sticky-column.d.ts +6 -29
  367. package/dist/cursor/sticky-column.js +6 -49
  368. package/dist/cursor/sticky-measure.d.ts +14 -9
  369. package/dist/cursor/sticky-measure.js +99 -49
  370. package/dist/cursor/surface-backend.d.ts +41 -0
  371. package/dist/cursor/surface-backend.js +78 -0
  372. package/dist/cursor/typography-estimates.d.ts +3 -3
  373. package/dist/cursor/typography-estimates.js +3 -3
  374. package/dist/cursor/visual-lines.d.ts +25 -13
  375. package/dist/cursor/visual-lines.js +72 -28
  376. package/dist/cursor/widget-edge-snap.d.ts +23 -0
  377. package/dist/cursor/widget-edge-snap.js +39 -0
  378. package/dist/cursor/widget-offset.d.ts +111 -102
  379. package/dist/cursor/widget-offset.js +352 -177
  380. package/dist/debug/diagnostics-report.d.ts +6 -6
  381. package/dist/debug/diagnostics-report.js +5 -5
  382. package/dist/debug/dump-tree.js +2 -2
  383. package/dist/debug/editor-diagnostics.d.ts +15 -0
  384. package/dist/debug/editor-diagnostics.js +33 -0
  385. package/dist/debug/inspect.d.ts +2 -2
  386. package/dist/debug/inspect.js +4 -4
  387. package/dist/debug/interaction-trace.d.ts +14 -15
  388. package/dist/debug/interaction-trace.js +19 -20
  389. package/dist/debug/operations-log.d.ts +1 -1
  390. package/dist/debug/operations-log.js +1 -1
  391. package/dist/decorations/buckets.d.ts +6 -12
  392. package/dist/decorations/buckets.js +4 -11
  393. package/dist/decorations/decoration-state.svelte.d.ts +2 -3
  394. package/dist/decorations/decoration-state.svelte.js +24 -26
  395. package/dist/decorations/island-dom.d.ts +10 -18
  396. package/dist/decorations/island-dom.js +25 -50
  397. package/dist/decorations/reserved-attrs.d.ts +6 -8
  398. package/dist/decorations/reserved-attrs.js +31 -17
  399. package/dist/decorations/types.d.ts +6 -7
  400. package/dist/decorations/types.js +2 -1
  401. package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
  402. package/dist/decorations/use-block-decorations.svelte.js +71 -0
  403. package/dist/decorations/widget-dom.d.ts +3 -3
  404. package/dist/decorations/widget-dom.js +5 -5
  405. package/dist/dev-warn.d.ts +5 -2
  406. package/dist/dev-warn.js +16 -4
  407. package/dist/editor-actions/ancestry-folds.d.ts +9 -14
  408. package/dist/editor-actions/ancestry-folds.js +13 -18
  409. package/dist/editor-actions/block-edit-core.d.ts +49 -22
  410. package/dist/editor-actions/block-edit-core.js +279 -151
  411. package/dist/editor-actions/block-edit-scope.d.ts +63 -50
  412. package/dist/editor-actions/block-edit-scope.js +100 -48
  413. package/dist/editor-actions/block-edit.d.ts +2 -3
  414. package/dist/editor-actions/block-edit.js +14 -90
  415. package/dist/editor-actions/commit/history.d.ts +4 -4
  416. package/dist/editor-actions/commit/history.js +33 -34
  417. package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
  418. package/dist/editor-actions/commit/reading-write-gate.js +56 -0
  419. package/dist/editor-actions/commit/text-batch.d.ts +7 -11
  420. package/dist/editor-actions/commit/text-batch.js +6 -7
  421. package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
  422. package/dist/editor-actions/commit/undo-controller.js +346 -216
  423. package/dist/editor-actions/container-block-component.d.ts +32 -51
  424. package/dist/editor-actions/container-block-component.js +66 -92
  425. package/dist/editor-actions/container-edit.d.ts +4 -2
  426. package/dist/editor-actions/container-edit.js +14 -44
  427. package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
  428. package/dist/editor-actions/container-exit-overrides.js +19 -21
  429. package/dist/editor-actions/deps.d.ts +25 -32
  430. package/dist/editor-actions/enter-completion.d.ts +12 -15
  431. package/dist/editor-actions/enter-completion.js +49 -51
  432. package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
  433. package/dist/editor-actions/focus/focus-dispatch.js +33 -52
  434. package/dist/editor-actions/focus/focus-landing.d.ts +11 -5
  435. package/dist/editor-actions/focus/focus-landing.js +29 -14
  436. package/dist/editor-actions/focus/focus.d.ts +3 -2
  437. package/dist/editor-actions/focus/focus.js +42 -59
  438. package/dist/editor-actions/index.d.ts +4 -3
  439. package/dist/editor-actions/index.js +5 -4
  440. package/dist/editor-actions/inline-range-commit.d.ts +18 -16
  441. package/dist/editor-actions/inline-range-commit.js +45 -54
  442. package/dist/editor-actions/leaf-write.d.ts +11 -0
  443. package/dist/editor-actions/leaf-write.js +102 -0
  444. package/dist/editor-actions/list-context.d.ts +9 -10
  445. package/dist/editor-actions/list-context.js +115 -110
  446. package/dist/editor-actions/list-overrides.d.ts +13 -5
  447. package/dist/editor-actions/list-overrides.js +36 -12
  448. package/dist/editor-actions/merge-fallback.d.ts +10 -16
  449. package/dist/editor-actions/merge-fallback.js +11 -22
  450. package/dist/editor-actions/nested/container-actions.d.ts +37 -0
  451. package/dist/editor-actions/nested/container-actions.js +42 -0
  452. package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
  453. package/dist/editor-actions/nested/emptied-container.js +5 -0
  454. package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
  455. package/dist/editor-actions/nested/nested-actions.js +17 -15
  456. package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
  457. package/dist/editor-actions/nested/nested-block-edit.js +40 -134
  458. package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
  459. package/dist/editor-actions/nested/nested-focus.js +33 -21
  460. package/dist/editor-actions/paste-coordinator.d.ts +3 -2
  461. package/dist/editor-actions/paste-coordinator.js +17 -13
  462. package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
  463. package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
  464. package/dist/editor-actions/plugin/container.d.ts +55 -76
  465. package/dist/editor-actions/plugin/container.js +105 -186
  466. package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
  467. package/dist/editor-actions/plugin/directive-container.js +7 -8
  468. package/dist/editor-actions/reorder-action.d.ts +7 -12
  469. package/dist/editor-actions/reorder-action.js +32 -48
  470. package/dist/editor-actions/reorder-drag.d.ts +12 -8
  471. package/dist/editor-actions/reorder-drag.js +45 -41
  472. package/dist/editor-actions/replacement-focus.d.ts +13 -21
  473. package/dist/editor-actions/replacement-focus.js +32 -33
  474. package/dist/editor-actions/search-replace.js +71 -67
  475. package/dist/editor-actions/stored-caret.d.ts +7 -0
  476. package/dist/editor-actions/stored-caret.js +10 -0
  477. package/dist/editor-actions/table-context.d.ts +9 -11
  478. package/dist/editor-actions/table-context.js +70 -93
  479. package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
  480. package/dist/editor-actions/unwrap-strategies.js +52 -63
  481. package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
  482. package/dist/editor-actions/whole-block-focus-surface.js +43 -53
  483. package/dist/editor-events.d.ts +25 -29
  484. package/dist/editor-events.js +17 -28
  485. package/dist/editor-keys.d.ts +96 -104
  486. package/dist/editor-keys.js +11 -24
  487. package/dist/editor-props.d.ts +91 -71
  488. package/dist/editor-rects.d.ts +23 -34
  489. package/dist/editor-rects.js +9 -77
  490. package/dist/env.d.ts +6 -4
  491. package/dist/env.js +8 -4
  492. package/dist/index.d.ts +6 -2
  493. package/dist/index.js +5 -2
  494. package/dist/inline-menu/inline-menu-session.d.ts +37 -0
  495. package/dist/inline-menu/inline-menu-session.js +98 -0
  496. package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
  497. package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
  498. package/dist/inline-menu/types.d.ts +77 -0
  499. package/dist/inline-menu/types.js +7 -0
  500. package/dist/invariants/child-id-parity.d.ts +23 -0
  501. package/dist/invariants/child-id-parity.js +39 -0
  502. package/dist/invariants/commit-paths.d.ts +4 -4
  503. package/dist/invariants/commit-paths.js +4 -4
  504. package/dist/invariants/commit-scope.d.ts +4 -4
  505. package/dist/invariants/commit-scope.js +9 -8
  506. package/dist/invariants/context-keys.d.ts +2 -5
  507. package/dist/invariants/context-keys.js +3 -6
  508. package/dist/invariants/descriptor.d.ts +2 -6
  509. package/dist/invariants/descriptor.js +2 -6
  510. package/dist/invariants/inline-transitions.d.ts +9 -16
  511. package/dist/invariants/inline-transitions.js +10 -18
  512. package/dist/invariants/install.d.ts +18 -27
  513. package/dist/invariants/install.js +29 -30
  514. package/dist/invariants/keeps-a-block.d.ts +7 -0
  515. package/dist/invariants/keeps-a-block.js +14 -0
  516. package/dist/invariants/landable-caret.d.ts +5 -7
  517. package/dist/invariants/landable-caret.js +8 -11
  518. package/dist/invariants/landing-focus-scroll.d.ts +7 -0
  519. package/dist/invariants/landing-focus-scroll.js +13 -0
  520. package/dist/invariants/landing-value.d.ts +13 -0
  521. package/dist/invariants/landing-value.js +27 -0
  522. package/dist/invariants/marker-css-parity.d.ts +5 -6
  523. package/dist/invariants/marker-css-parity.js +11 -12
  524. package/dist/invariants/measures-in-own-list.d.ts +6 -0
  525. package/dist/invariants/measures-in-own-list.js +13 -0
  526. package/dist/invariants/node-shape.d.ts +18 -37
  527. package/dist/invariants/node-shape.js +123 -79
  528. package/dist/invariants/open-tail.d.ts +7 -0
  529. package/dist/invariants/open-tail.js +45 -0
  530. package/dist/invariants/placement-ends-widget.d.ts +8 -0
  531. package/dist/invariants/placement-ends-widget.js +13 -0
  532. package/dist/invariants/registry.d.ts +27 -66
  533. package/dist/invariants/registry.js +61 -137
  534. package/dist/invariants/render-fidelity.d.ts +4 -4
  535. package/dist/invariants/render-fidelity.js +5 -5
  536. package/dist/invariants/selection-endpoints.d.ts +6 -7
  537. package/dist/invariants/selection-endpoints.js +18 -16
  538. package/dist/invariants/single-node-sink.d.ts +4 -5
  539. package/dist/invariants/single-node-sink.js +4 -5
  540. package/dist/invariants/snapshot-integrity.d.ts +5 -6
  541. package/dist/invariants/snapshot-integrity.js +1 -1
  542. package/dist/invariants/structural-descriptor.d.ts +6 -15
  543. package/dist/invariants/structural-descriptor.js +6 -15
  544. package/dist/menu-icons.d.ts +47 -0
  545. package/dist/menu-icons.js +113 -0
  546. package/dist/perf/instruments.d.ts +20 -5
  547. package/dist/perf/instruments.js +35 -15
  548. package/dist/perf/use-mount-gauge.svelte.js +4 -4
  549. package/dist/plugin.d.ts +38 -8
  550. package/dist/plugin.js +102 -74
  551. package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
  552. package/dist/plugins/admonitions/admonition-kind.js +12 -10
  553. package/dist/plugins/admonitions/convert-document.d.ts +5 -5
  554. package/dist/plugins/admonitions/convert-document.js +8 -7
  555. package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
  556. package/dist/plugins/admonitions/gh-alert.js +21 -22
  557. package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
  558. package/dist/plugins/admonitions/github-alert-kind.js +28 -37
  559. package/dist/plugins/admonitions/index.js +2 -2
  560. package/dist/plugins/admonitions/kinds.d.ts +1 -1
  561. package/dist/plugins/admonitions/register.js +11 -2
  562. package/dist/plugins/details/DetailsBlock.svelte +20 -20
  563. package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
  564. package/dist/plugins/details/details-disclosure.svelte.js +6 -7
  565. package/dist/plugins/details/details-kind.d.ts +6 -7
  566. package/dist/plugins/details/details-kind.js +44 -59
  567. package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
  568. package/dist/plugins/emoji/emoji-recognizer.js +7 -14
  569. package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
  570. package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
  571. package/dist/plugins/footnotes/constants.d.ts +2 -0
  572. package/dist/plugins/footnotes/constants.js +3 -0
  573. package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
  574. package/dist/plugins/footnotes/footnote-definition.js +69 -45
  575. package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
  576. package/dist/plugins/footnotes/footnote-lookup.js +14 -26
  577. package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
  578. package/dist/plugins/footnotes/footnote-numbering.js +22 -31
  579. package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
  580. package/dist/plugins/footnotes/footnote-reference.js +8 -13
  581. package/dist/plugins/footnotes/index.js +2 -3
  582. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
  583. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
  584. package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
  585. package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
  586. package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
  587. package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
  588. package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
  589. package/dist/plugins/highlight-occurrences/word-char.js +4 -0
  590. package/dist/plugins/latex/BlockMath.svelte +58 -75
  591. package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
  592. package/dist/plugins/latex/MathInline.svelte +10 -9
  593. package/dist/plugins/latex/flanking.d.ts +1 -0
  594. package/dist/plugins/latex/flanking.js +3 -0
  595. package/dist/plugins/latex/index.d.ts +1 -1
  596. package/dist/plugins/latex/latex-kind.d.ts +4 -4
  597. package/dist/plugins/latex/latex-kind.js +113 -85
  598. package/dist/plugins/latex/math-completion.d.ts +1 -1
  599. package/dist/plugins/latex/math-completion.js +5 -8
  600. package/dist/plugins/latex/math-layout.d.ts +2 -8
  601. package/dist/plugins/latex/math-layout.js +0 -9
  602. package/dist/plugins/latex/math-renderer.d.ts +17 -20
  603. package/dist/plugins/latex/math-renderer.js +21 -38
  604. package/dist/plugins/latex/math-source.d.ts +4 -8
  605. package/dist/plugins/latex/math-source.js +36 -75
  606. package/dist/plugins/latex/register.d.ts +10 -11
  607. package/dist/plugins/latex/register.js +24 -10
  608. package/dist/plugins/latex/renderer.d.ts +9 -10
  609. package/dist/plugins/latex/renderer.js +9 -24
  610. package/dist/plugins/mermaid/MermaidBlock.svelte +63 -47
  611. package/dist/plugins/mermaid/index.js +1 -1
  612. package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
  613. package/dist/plugins/mermaid/mermaid-kind.js +30 -47
  614. package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
  615. package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
  616. package/dist/plugins/mermaid/register.d.ts +3 -3
  617. package/dist/plugins/mermaid/register.js +5 -5
  618. package/dist/plugins/mermaid/renderer.d.ts +5 -5
  619. package/dist/plugins/mermaid/renderer.js +8 -11
  620. package/dist/plugins/parrot/ParrotBlock.svelte +18 -7
  621. package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
  622. package/dist/plugins/parrot/parrot-plugin.js +3 -3
  623. package/dist/plugins/slash-commands/filter.d.ts +23 -0
  624. package/dist/plugins/slash-commands/filter.js +31 -0
  625. package/dist/plugins/slash-commands/index.d.ts +2 -0
  626. package/dist/plugins/slash-commands/index.js +2 -0
  627. package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
  628. package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
  629. package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
  630. package/dist/plugins/slash-commands/slash-source.js +108 -0
  631. package/dist/plugins/toc/TocBlock.svelte +23 -22
  632. package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
  633. package/dist/plugins/toc/heading-outline.d.ts +7 -12
  634. package/dist/plugins/toc/heading-outline.js +22 -36
  635. package/dist/plugins/toc/navigation-queue.d.ts +2 -4
  636. package/dist/plugins/toc/toc-plugin.d.ts +5 -5
  637. package/dist/plugins/toc/toc-plugin.js +20 -13
  638. package/dist/presentation-mode.d.ts +15 -23
  639. package/dist/presentation-mode.js +19 -25
  640. package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
  641. package/dist/reactivity/block-list-state.svelte.js +8 -9
  642. package/dist/reactivity/block-window.svelte.d.ts +12 -6
  643. package/dist/reactivity/block-window.svelte.js +44 -17
  644. package/dist/reactivity/child-list.d.ts +34 -0
  645. package/dist/reactivity/child-list.js +48 -0
  646. package/dist/reactivity/content-version.svelte.d.ts +4 -7
  647. package/dist/reactivity/content-version.svelte.js +3 -5
  648. package/dist/reactivity/hold-across.d.ts +39 -0
  649. package/dist/reactivity/hold-across.js +57 -0
  650. package/dist/reactivity/layout-state.svelte.d.ts +27 -0
  651. package/dist/reactivity/layout-state.svelte.js +51 -0
  652. package/dist/reactivity/list-tree.d.ts +39 -0
  653. package/dist/reactivity/list-tree.js +132 -0
  654. package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
  655. package/dist/reactivity/list-windowing.svelte.js +143 -292
  656. package/dist/reactivity/measure-batch.d.ts +6 -8
  657. package/dist/reactivity/measure-batch.js +5 -6
  658. package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
  659. package/dist/reactivity/publish-ref.svelte.js +21 -85
  660. package/dist/reactivity/scope-geometry.d.ts +6 -13
  661. package/dist/reactivity/scope-geometry.js +7 -14
  662. package/dist/reactivity/state-registry.d.ts +5 -5
  663. package/dist/reactivity/state-registry.js +11 -15
  664. package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
  665. package/dist/reactivity/use-container-windowing.svelte.js +64 -74
  666. package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
  667. package/dist/reactivity/use-measured-child.svelte.js +41 -0
  668. package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
  669. package/dist/reactivity/use-window-floor.svelte.js +27 -0
  670. package/dist/reactivity/window-slice.d.ts +4 -4
  671. package/dist/reactivity/window-slice.js +0 -2
  672. package/dist/renderer-slot.d.ts +48 -0
  673. package/dist/renderer-slot.js +85 -0
  674. package/dist/scan-index.d.ts +4 -4
  675. package/dist/scan-index.js +4 -4
  676. package/dist/schema/block-commands.d.ts +69 -54
  677. package/dist/schema/block-commands.js +91 -104
  678. package/dist/schema/block-completions.d.ts +16 -19
  679. package/dist/schema/block-completions.js +25 -32
  680. package/dist/schema/block-component-registry.d.ts +13 -14
  681. package/dist/schema/block-component-registry.js +19 -17
  682. package/dist/schema/block-kind-descriptor.d.ts +234 -168
  683. package/dist/schema/block-kind-descriptor.js +151 -66
  684. package/dist/schema/block-openers.d.ts +48 -39
  685. package/dist/schema/block-openers.js +73 -83
  686. package/dist/schema/built-in-descriptors.d.ts +3 -5
  687. package/dist/schema/built-in-descriptors.js +96 -80
  688. package/dist/schema/child-spans.d.ts +12 -10
  689. package/dist/schema/child-spans.js +68 -34
  690. package/dist/schema/closure.d.ts +18 -16
  691. package/dist/schema/closure.js +24 -14
  692. package/dist/schema/command-id.d.ts +6 -8
  693. package/dist/schema/command-id.js +20 -25
  694. package/dist/schema/commands.d.ts +79 -81
  695. package/dist/schema/commands.js +156 -116
  696. package/dist/schema/container-raw.d.ts +51 -11
  697. package/dist/schema/container-raw.js +143 -14
  698. package/dist/schema/container-rebuilders.d.ts +17 -15
  699. package/dist/schema/container-rebuilders.js +30 -22
  700. package/dist/schema/context-actions.d.ts +25 -13
  701. package/dist/schema/context-actions.js +32 -17
  702. package/dist/schema/define-plugin-block.d.ts +8 -6
  703. package/dist/schema/define-plugin-block.js +6 -4
  704. package/dist/schema/fenced-code-raw.d.ts +30 -17
  705. package/dist/schema/fenced-code-raw.js +155 -107
  706. package/dist/schema/global-commands.d.ts +6 -6
  707. package/dist/schema/global-commands.js +14 -22
  708. package/dist/schema/height-estimates.d.ts +31 -0
  709. package/dist/schema/height-estimates.js +64 -0
  710. package/dist/schema/inline-construct-policy.d.ts +42 -55
  711. package/dist/schema/inline-construct-policy.js +36 -35
  712. package/dist/schema/insert-catalogue.d.ts +30 -0
  713. package/dist/schema/insert-catalogue.js +95 -0
  714. package/dist/schema/keybinding-overrides.d.ts +9 -11
  715. package/dist/schema/keybinding-overrides.js +1 -1
  716. package/dist/schema/keybindings.d.ts +15 -7
  717. package/dist/schema/keybindings.js +21 -9
  718. package/dist/schema/merge-rules.d.ts +5 -7
  719. package/dist/schema/merge-rules.js +7 -9
  720. package/dist/schema/opener-priorities.d.ts +4 -4
  721. package/dist/schema/opener-priorities.js +4 -4
  722. package/dist/schema/operations.d.ts +9 -11
  723. package/dist/schema/operations.js +3 -3
  724. package/dist/schema/page-role.d.ts +14 -0
  725. package/dist/schema/page-role.js +19 -0
  726. package/dist/schema/plugin-activation.d.ts +4 -6
  727. package/dist/schema/plugin-activation.js +12 -10
  728. package/dist/schema/plugin-editor-context.d.ts +25 -10
  729. package/dist/schema/plugin-editor-context.js +40 -9
  730. package/dist/schema/plugin-install.d.ts +49 -17
  731. package/dist/schema/plugin-install.js +51 -25
  732. package/dist/schema/plugin-kind.d.ts +12 -8
  733. package/dist/schema/plugin-kind.js +35 -42
  734. package/dist/schema/plugin-name.js +3 -3
  735. package/dist/schema/plugin-registry.d.ts +54 -0
  736. package/dist/schema/plugin-registry.js +70 -0
  737. package/dist/schema/reading.d.ts +23 -0
  738. package/dist/schema/reading.js +7 -0
  739. package/dist/schema/register-once.d.ts +3 -5
  740. package/dist/schema/register-once.js +7 -16
  741. package/dist/schema/registration-checks.d.ts +12 -16
  742. package/dist/schema/registration-checks.js +35 -51
  743. package/dist/schema/registration-pairs.d.ts +54 -0
  744. package/dist/schema/registration-pairs.js +48 -0
  745. package/dist/schema/registration-pending.d.ts +8 -12
  746. package/dist/schema/registration-pending.js +9 -9
  747. package/dist/schema/registry-reset.d.ts +8 -4
  748. package/dist/schema/registry-reset.js +13 -26
  749. package/dist/schema/registry-view.d.ts +25 -13
  750. package/dist/schema/registry-view.js +26 -20
  751. package/dist/schema/reserved-chords.d.ts +9 -10
  752. package/dist/schema/reserved-chords.js +73 -78
  753. package/dist/schema/reserved-chrome.d.ts +12 -11
  754. package/dist/schema/reserved-chrome.js +15 -11
  755. package/dist/schema/setext-raw.d.ts +13 -0
  756. package/dist/schema/setext-raw.js +33 -0
  757. package/dist/schema/stored-as.d.ts +20 -0
  758. package/dist/schema/stored-as.js +6 -0
  759. package/dist/schema/table-cell-raw.d.ts +18 -7
  760. package/dist/schema/table-cell-raw.js +28 -7
  761. package/dist/schema/whole-block-unit.d.ts +5 -4
  762. package/dist/schema/whole-block-unit.js +5 -4
  763. package/dist/search/document-scan.d.ts +3 -3
  764. package/dist/search/document-scan.js +2 -2
  765. package/dist/search/matcher.d.ts +1 -1
  766. package/dist/search/regex-executor.d.ts +5 -6
  767. package/dist/search/regex-executor.js +6 -8
  768. package/dist/search/replace.d.ts +2 -5
  769. package/dist/search/replace.js +2 -5
  770. package/dist/search/search-state.svelte.d.ts +5 -5
  771. package/dist/search/search-state.svelte.js +12 -16
  772. package/dist/selection/autoscroll.d.ts +6 -9
  773. package/dist/selection/block-hit-test.d.ts +16 -24
  774. package/dist/selection/block-hit-test.js +29 -22
  775. package/dist/selection/caret-doors.d.ts +15 -14
  776. package/dist/selection/caret-doors.js +37 -26
  777. package/dist/selection/caret-landing.d.ts +62 -0
  778. package/dist/selection/caret-landing.js +157 -0
  779. package/dist/selection/caret-restore.d.ts +17 -10
  780. package/dist/selection/caret-restore.js +10 -22
  781. package/dist/selection/caret-target.d.ts +30 -0
  782. package/dist/selection/caret-target.js +84 -0
  783. package/dist/selection/char-endpoint-snap.d.ts +6 -10
  784. package/dist/selection/char-endpoint-snap.js +8 -14
  785. package/dist/selection/clipboard-text.d.ts +5 -12
  786. package/dist/selection/clipboard-text.js +69 -172
  787. package/dist/selection/covered-block.d.ts +6 -8
  788. package/dist/selection/covered-block.js +8 -19
  789. package/dist/selection/cross-block/clipboard.d.ts +3 -2
  790. package/dist/selection/cross-block/clipboard.js +13 -4
  791. package/dist/selection/cross-block/dispatch.d.ts +47 -43
  792. package/dist/selection/cross-block/dispatch.js +12 -23
  793. package/dist/selection/cross-block/format-range.d.ts +18 -21
  794. package/dist/selection/cross-block/format-range.js +104 -103
  795. package/dist/selection/cross-block/format-toggle.d.ts +10 -15
  796. package/dist/selection/cross-block/format-toggle.js +28 -33
  797. package/dist/selection/cross-block/keydown.d.ts +4 -4
  798. package/dist/selection/cross-block/keydown.js +93 -152
  799. package/dist/selection/cross-block/ops.d.ts +19 -34
  800. package/dist/selection/cross-block/ops.js +110 -95
  801. package/dist/selection/cross-block/paste.d.ts +2 -3
  802. package/dist/selection/cross-block/paste.js +61 -104
  803. package/dist/selection/cross-block/pointer.d.ts +17 -15
  804. package/dist/selection/cross-block/pointer.js +74 -25
  805. package/dist/selection/cross-block/type-replace.d.ts +4 -6
  806. package/dist/selection/cross-block/type-replace.js +53 -146
  807. package/dist/selection/dead-space-caret.d.ts +20 -28
  808. package/dist/selection/dead-space-caret.js +79 -87
  809. package/dist/selection/drag-pointer.d.ts +22 -5
  810. package/dist/selection/drag-pointer.js +63 -31
  811. package/dist/selection/gap-caret.d.ts +17 -28
  812. package/dist/selection/gap-caret.js +14 -26
  813. package/dist/selection/grid-selection.d.ts +12 -0
  814. package/dist/selection/grid-selection.js +22 -0
  815. package/dist/selection/keyboard-extend.d.ts +27 -39
  816. package/dist/selection/keyboard-extend.js +94 -116
  817. package/dist/selection/multi-click.d.ts +37 -0
  818. package/dist/selection/multi-click.js +197 -0
  819. package/dist/selection/native-bridge.d.ts +30 -37
  820. package/dist/selection/native-bridge.js +80 -100
  821. package/dist/selection/nearest-block.d.ts +17 -12
  822. package/dist/selection/nearest-block.js +37 -18
  823. package/dist/selection/path-lookup.d.ts +31 -14
  824. package/dist/selection/path-lookup.js +110 -20
  825. package/dist/selection/path-math.d.ts +9 -11
  826. package/dist/selection/path-math.js +5 -7
  827. package/dist/selection/pointer-gesture.d.ts +9 -0
  828. package/dist/selection/pointer-gesture.js +11 -0
  829. package/dist/selection/pointer-session.d.ts +10 -16
  830. package/dist/selection/pointer-session.js +6 -7
  831. package/dist/selection/primitives.d.ts +64 -33
  832. package/dist/selection/primitives.js +61 -53
  833. package/dist/selection/range-coverage.d.ts +94 -0
  834. package/dist/selection/range-coverage.js +365 -0
  835. package/dist/selection/range-delete-ceremony.d.ts +28 -74
  836. package/dist/selection/range-delete-ceremony.js +100 -141
  837. package/dist/selection/range-delete-chrome.d.ts +20 -33
  838. package/dist/selection/range-delete-chrome.js +53 -78
  839. package/dist/selection/range-delete-table-coverage.d.ts +11 -25
  840. package/dist/selection/range-delete-table-coverage.js +42 -112
  841. package/dist/selection/range-delete-table.d.ts +14 -12
  842. package/dist/selection/range-delete-table.js +106 -310
  843. package/dist/selection/range-delete.d.ts +18 -19
  844. package/dist/selection/range-delete.js +83 -123
  845. package/dist/selection/round-trip-restore.d.ts +18 -0
  846. package/dist/selection/round-trip-restore.js +19 -0
  847. package/dist/selection/selection-announcer.d.ts +17 -0
  848. package/dist/selection/selection-announcer.js +25 -0
  849. package/dist/selection/selection-description.d.ts +4 -3
  850. package/dist/selection/selection-description.js +5 -4
  851. package/dist/selection/selection-drop.d.ts +52 -0
  852. package/dist/selection/selection-drop.js +317 -0
  853. package/dist/selection/selection-restore.d.ts +20 -33
  854. package/dist/selection/selection-restore.js +21 -44
  855. package/dist/selection/selection-state.svelte.d.ts +50 -42
  856. package/dist/selection/selection-state.svelte.js +144 -98
  857. package/dist/selection/shared-keydown.d.ts +22 -27
  858. package/dist/selection/shared-keydown.js +25 -45
  859. package/dist/selection/table-endpoint-snap.d.ts +17 -41
  860. package/dist/selection/table-endpoint-snap.js +54 -80
  861. package/dist/selection/table-rect-extend.d.ts +3 -6
  862. package/dist/selection/table-rect-extend.js +19 -14
  863. package/dist/styles/editor-theme.css +75 -53
  864. package/dist/styles/editor.css +248 -139
  865. package/dist/testing/conformance-core.d.ts +50 -18
  866. package/dist/testing/conformance-core.js +88 -50
  867. package/dist/testing/container-conformance.d.ts +48 -84
  868. package/dist/testing/container-conformance.js +159 -285
  869. package/dist/testing/headless-actions.d.ts +34 -19
  870. package/dist/testing/headless-actions.js +116 -65
  871. package/dist/testing/headless-block-list.svelte.d.ts +16 -0
  872. package/dist/testing/headless-block-list.svelte.js +22 -0
  873. package/dist/testing/inline-conformance.d.ts +15 -22
  874. package/dist/testing/inline-conformance.js +131 -148
  875. package/dist/testing/kind-conformance.d.ts +19 -24
  876. package/dist/testing/kind-conformance.js +204 -117
  877. package/dist/testing/kit-reading.d.ts +7 -0
  878. package/dist/testing/kit-reading.js +16 -0
  879. package/dist/testing/mount-dom-stubs.d.ts +4 -5
  880. package/dist/testing/mount-dom-stubs.js +8 -5
  881. package/dist/testing/parse-convergence.d.ts +10 -10
  882. package/dist/testing/parse-convergence.js +14 -49
  883. package/dist/testing.d.ts +13 -9
  884. package/dist/testing.js +28 -38
  885. package/dist/tree-operations/blockquote.d.ts +8 -14
  886. package/dist/tree-operations/blockquote.js +25 -45
  887. package/dist/tree-operations/chain-rebuild.d.ts +34 -25
  888. package/dist/tree-operations/chain-rebuild.js +115 -52
  889. package/dist/tree-operations/children.d.ts +5 -9
  890. package/dist/tree-operations/children.js +7 -11
  891. package/dist/tree-operations/cleanup.d.ts +6 -7
  892. package/dist/tree-operations/cleanup.js +14 -11
  893. package/dist/tree-operations/clone.js +5 -4
  894. package/dist/tree-operations/container-lift.d.ts +10 -5
  895. package/dist/tree-operations/container-lift.js +20 -14
  896. package/dist/tree-operations/container-offsets.d.ts +22 -0
  897. package/dist/tree-operations/container-offsets.js +89 -0
  898. package/dist/tree-operations/content-write.d.ts +52 -29
  899. package/dist/tree-operations/content-write.js +155 -110
  900. package/dist/tree-operations/index.d.ts +4 -4
  901. package/dist/tree-operations/index.js +4 -4
  902. package/dist/tree-operations/keep-one-block.d.ts +10 -0
  903. package/dist/tree-operations/keep-one-block.js +19 -0
  904. package/dist/tree-operations/leaf-range.d.ts +33 -0
  905. package/dist/tree-operations/leaf-range.js +67 -0
  906. package/dist/tree-operations/list/empty-check.d.ts +2 -3
  907. package/dist/tree-operations/list/empty-check.js +4 -4
  908. package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
  909. package/dist/tree-operations/list/exit-replacement.js +4 -9
  910. package/dist/tree-operations/list/item-partition.d.ts +2 -2
  911. package/dist/tree-operations/list/item-partition.js +2 -2
  912. package/dist/tree-operations/list/list-builders.d.ts +18 -16
  913. package/dist/tree-operations/list/list-builders.js +59 -30
  914. package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
  915. package/dist/tree-operations/list/ordered-markers.js +7 -16
  916. package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
  917. package/dist/tree-operations/list/reconcile-task.js +80 -23
  918. package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
  919. package/dist/tree-operations/list/sublist-separator.js +20 -27
  920. package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
  921. package/dist/tree-operations/list/task-paragraph.js +54 -0
  922. package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
  923. package/dist/tree-operations/list/unwrap-merge.js +44 -79
  924. package/dist/tree-operations/node-ops.d.ts +30 -52
  925. package/dist/tree-operations/node-ops.js +152 -218
  926. package/dist/tree-operations/node-primitives.d.ts +44 -31
  927. package/dist/tree-operations/node-primitives.js +84 -60
  928. package/dist/tree-operations/open-tail.d.ts +25 -0
  929. package/dist/tree-operations/open-tail.js +100 -0
  930. package/dist/tree-operations/parse-block.d.ts +15 -2
  931. package/dist/tree-operations/parse-block.js +19 -4
  932. package/dist/tree-operations/paste/apply.d.ts +7 -8
  933. package/dist/tree-operations/paste/apply.js +33 -63
  934. package/dist/tree-operations/paste/body-write.d.ts +8 -6
  935. package/dist/tree-operations/paste/body-write.js +13 -14
  936. package/dist/tree-operations/paste/container-match.d.ts +7 -10
  937. package/dist/tree-operations/paste/container-match.js +76 -58
  938. package/dist/tree-operations/paste/container-paste.d.ts +3 -3
  939. package/dist/tree-operations/paste/container-paste.js +3 -3
  940. package/dist/tree-operations/paste/dispatch.d.ts +26 -29
  941. package/dist/tree-operations/paste/dispatch.js +68 -53
  942. package/dist/tree-operations/paste/focus-target.d.ts +11 -14
  943. package/dist/tree-operations/paste/focus-target.js +13 -18
  944. package/dist/tree-operations/paste/hooks.d.ts +7 -12
  945. package/dist/tree-operations/paste/hooks.js +49 -46
  946. package/dist/tree-operations/paste/line-ending.d.ts +11 -0
  947. package/dist/tree-operations/paste/line-ending.js +32 -0
  948. package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
  949. package/dist/tree-operations/paste/list-absorb.js +17 -19
  950. package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
  951. package/dist/tree-operations/paste/list-break-out.js +24 -32
  952. package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
  953. package/dist/tree-operations/paste/parent-scope.js +9 -16
  954. package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
  955. package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
  956. package/dist/tree-operations/paste/paste-replacement.js +73 -42
  957. package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
  958. package/dist/tree-operations/paste/paste-transforms.js +18 -27
  959. package/dist/tree-operations/paste/replacement-parse.d.ts +19 -0
  960. package/dist/tree-operations/paste/replacement-parse.js +24 -0
  961. package/dist/tree-operations/paste/strategy.d.ts +1 -1
  962. package/dist/tree-operations/paste/strategy.js +1 -1
  963. package/dist/tree-operations/paste/table-slice.js +15 -10
  964. package/dist/tree-operations/paste-surfaces.d.ts +18 -29
  965. package/dist/tree-operations/paste-surfaces.js +14 -10
  966. package/dist/tree-operations/path-mutate.d.ts +7 -8
  967. package/dist/tree-operations/path-mutate.js +4 -4
  968. package/dist/tree-operations/reorder-unit.d.ts +4 -5
  969. package/dist/tree-operations/reorder-unit.js +5 -6
  970. package/dist/tree-operations/reorder.d.ts +7 -9
  971. package/dist/tree-operations/reorder.js +39 -40
  972. package/dist/tree-operations/settle.d.ts +42 -53
  973. package/dist/tree-operations/settle.js +241 -162
  974. package/dist/tree-operations/sharing.d.ts +5 -5
  975. package/dist/tree-operations/splice-many.d.ts +5 -5
  976. package/dist/tree-operations/splice-many.js +5 -5
  977. package/dist/tree-operations/stored-as.d.ts +13 -0
  978. package/dist/tree-operations/stored-as.js +48 -0
  979. package/dist/tree-operations/structural-change.d.ts +11 -15
  980. package/dist/tree-operations/structural-change.js +10 -14
  981. package/dist/tree-operations/structural-suffix.d.ts +22 -0
  982. package/dist/tree-operations/structural-suffix.js +61 -0
  983. package/dist/tree-operations/sub-table-copy.d.ts +7 -0
  984. package/dist/tree-operations/sub-table-copy.js +40 -36
  985. package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
  986. package/dist/tree-operations/table-grid-clipboard.js +11 -36
  987. package/dist/tree-operations/table-mutations.d.ts +7 -3
  988. package/dist/tree-operations/table-mutations.js +45 -9
  989. package/dist/tree-operations/unshare.d.ts +11 -15
  990. package/dist/tree-operations/unshare.js +15 -17
  991. package/dist/undo/manager.js +1 -1
  992. package/dist/undo/types.d.ts +2 -2
  993. package/docs/guide/consumer-guide.md +329 -205
  994. package/docs/guide/directives.md +7 -7
  995. package/docs/guide/plugin-api.md +267 -183
  996. package/docs/guide/plugin-guide.md +341 -235
  997. package/docs/guide/plugin-testing.md +96 -82
  998. package/package.json +17 -21
  999. package/dist/ambient/ambient-cursor.d.ts +0 -41
  1000. package/dist/ambient/ambient-cursor.js +0 -120
  1001. package/dist/components/blocks/code/code-paste.d.ts +0 -24
  1002. package/dist/components/blocks/code/code-paste.js +0 -21
  1003. package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
  1004. package/dist/components/blocks/table/cell-clipboard.js +0 -67
  1005. package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
  1006. package/dist/components/blocks/text/hidden-suffix.js +0 -15
  1007. package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
  1008. package/dist/components/image/image-source-bytes.d.ts +0 -15
  1009. package/dist/components/image/image-source-bytes.js +0 -80
  1010. package/dist/cursor/content-offsets.d.ts +0 -29
  1011. package/dist/cursor/content-offsets.js +0 -151
  1012. package/dist/cursor/reveal-anchor.d.ts +0 -30
  1013. package/dist/cursor/reveal-anchor.js +0 -31
  1014. package/dist/invariants/split-landing.d.ts +0 -8
  1015. package/dist/invariants/split-landing.js +0 -15
  1016. package/dist/selection/double-click-trim.d.ts +0 -17
  1017. package/dist/selection/double-click-trim.js +0 -57
  1018. package/dist/tree-operations/list/terminator.d.ts +0 -17
  1019. package/dist/tree-operations/list/terminator.js +0 -60
  1020. package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -29
  1021. package/dist/tree-operations/paste/replace-block-at-parent.js +0 -75
@@ -1,9 +1,8 @@
1
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`.
2
+ * The conformance kit for an inline syntax handler (`InlineRung`), published at
3
+ * `@voithos-labs/aragonite/testing`. It reads the live registry, so it works across
4
+ * `resetPluginPlatformForTests()` cycles. The four cells a profile declares are required because
5
+ * byte round-trip sees none of them, and the kit disproves an exemption where it can.
7
6
  */
8
7
  import { isBuiltinInlineKind } from '../core/nodes';
9
8
  import { parse } from '../core/parser';
@@ -13,55 +12,59 @@ import { renderInlineNodes } from '../core/inline-render';
13
12
  import { buildCoreInlineWidget, getInlineWidgetComponent, getInlineWidgetEditing, isInlineWidget, DELETE_GRANULARITIES, ON_EDGE_POLICIES } from '../core/inline/inline-widgets';
14
13
  import { INLINE_PRIORITIES, getInlineRungs, isReservedInlineTrigger, isScanProbeTrigger } from '../core/inline/scan/plugin-syntax';
15
14
  import { containerDomTextLength } from '../cursor/widget-offset';
16
- import { assert, assertExemptionDocumented, assertIs, fail } from './conformance-core';
15
+ import { assert, assertIs, fail, runCells } from './conformance-core';
16
+ import { defaultGrammarView } from '../schema/block-openers';
17
+ const INLINE_CELLS = [
18
+ { cell: 'claims', run: ({ profile, rung }) => checkClaimsItsFixtures(profile, rung) },
19
+ { cell: 'roundTrip', run: ({ profile, rung }) => checkRoundTrip(profile, rung) },
20
+ {
21
+ cell: 'overlapDecline',
22
+ coverage: ({ profile }) => profile.overlapDecline,
23
+ run: ({ profile, rung }) => checkOverlapDecline(profile, rung),
24
+ falsify: ({ profile }) => refuseExcusedOverlap(profile)
25
+ },
26
+ {
27
+ cell: 'widget',
28
+ coverage: ({ profile }) => profile.widget,
29
+ run: ({ profile, rung }) => checkWidgetAtomicity(profile, rung),
30
+ falsify: ({ profile, rung }) => refuseExcusedWidget(profile, rung)
31
+ },
32
+ {
33
+ cell: 'editingPolicy',
34
+ coverage: ({ profile }) => profile.editingPolicy,
35
+ run: ({ profile, rung }) => checkEditingPolicy(profile, rung),
36
+ falsify: ({ profile }) => refuseExcusedEditingPolicy(profile)
37
+ },
38
+ {
39
+ cell: 'imageClaim',
40
+ coverage: ({ profile }) => profile.imageClaim,
41
+ run: ({ profile, rung }) => checkImageClaimStamp(profile, rung),
42
+ falsify: ({ profile, rung }) => refuseExcusedImageClaim(profile, rung)
43
+ },
44
+ {
45
+ cell: 'registration',
46
+ run: ({ profile, prefix, rung }) => checkRegistrationHygiene(profile, prefix, rung)
47
+ }
48
+ ];
17
49
  /**
18
- * Run every conformance cell for the registered rung the profile names. Returns the
50
+ * Runs every conformance cell for the registered handler the profile names. Resolves with the
19
51
  * coverage report, or throws an `Error` naming every failed cell.
20
52
  */
21
- export function runInlineKindConformance(profile) {
53
+ export async function runInlineKindConformance(profile) {
22
54
  const prefix = profile.prefix ?? profile.trigger;
23
55
  validateProfile(profile, prefix);
24
56
  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
- }
57
+ const cells = await runCells(INLINE_CELLS, { profile, prefix, rung }, { subject: prefix, heading: `inline conformance failed for rung "${prefix}"` });
55
58
  return { trigger: profile.trigger, prefix, cells };
56
59
  }
57
- // ── Profile validation + rung lookup ─────────────────────────────────────────
60
+ // ── Profile validation + handler lookup ──────────────────────────────────────
58
61
  function validateProfile(profile, prefix) {
59
62
  assertIs(profile.trigger.length, 1, 'trigger is a single character');
60
63
  assert(prefix.startsWith(profile.trigger), `prefix ${JSON.stringify(prefix)} begins with the trigger ${JSON.stringify(profile.trigger)}`);
61
64
  assert(profile.fixtures.length > 0, 'the profile supplies at least one fixture the rung claims');
62
65
  for (const fixture of profile.fixtures)
63
66
  assertSingleLine(fixture, 'fixture');
64
- // A prefix rung is consulted BEFORE the built-in case it shadows, so the overlap
67
+ // A prefix handler is consulted before the built-in case it shadows, so the overlap
65
68
  // always exists and there is nothing to excuse.
66
69
  if (isReservedInlineTrigger(profile.trigger) && profile.overlapDecline.mode !== 'assert') {
67
70
  fail(`${JSON.stringify(profile.trigger)} is claimed by the built-in scanner, so this rung is ` +
@@ -92,11 +95,8 @@ function locateRung(profile, prefix) {
92
95
  return matches[0];
93
96
  }
94
97
  // ── 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
- */
98
+ /** Every node this handler produced from `source`, in document order: its declared kind (which
99
+ * carries no mark), or a built-in node the scan marked with the handler's `syntaxClaim`. */
100
100
  function mintedNodes(source, profile, rung) {
101
101
  const out = [];
102
102
  const visit = (nodes) => {
@@ -112,7 +112,7 @@ function mintedNodes(source, profile, rung) {
112
112
  }
113
113
  /**
114
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.
115
+ * (`see [^a] and [^b]`), and every cell below goes through all of them.
116
116
  */
117
117
  function claimsIn(fixture, profile, rung) {
118
118
  const minted = mintedNodes(fixture, profile, rung);
@@ -120,6 +120,16 @@ function claimsIn(fixture, profile, rung) {
120
120
  `the kit would enroll the rung without exercising it`);
121
121
  return minted;
122
122
  }
123
+ /** The claims of `kind` across every fixture, failing when there is none, so a cell about the kind
124
+ * never reports `asserted` over only the built-in nodes the handler claimed. */
125
+ function claimsOfKind(profile, rung, kind) {
126
+ const claims = profile.fixtures.flatMap((fixture) => claimsIn(fixture, profile, rung)
127
+ .filter((node) => node.kind === kind)
128
+ .map((node) => ({ fixture, node })));
129
+ assert(claims.length > 0, `no fixture mints a "${kind}" node — the "${rung.prefix}" rung's claims are all built-ins ` +
130
+ `it stamps, which the imageClaim cell covers`);
131
+ return claims;
132
+ }
123
133
  // ── claims ───────────────────────────────────────────────────────────────────
124
134
  function checkClaimsItsFixtures(profile, rung) {
125
135
  let claims = 0;
@@ -135,8 +145,8 @@ function checkClaimsItsFixtures(profile, rung) {
135
145
  }
136
146
  // ── roundTrip ────────────────────────────────────────────────────────────────
137
147
  /**
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.
148
+ * The neighbours a handler's `end` arithmetic tends to get wrong: a construct starting where the
149
+ * claim ended, the handler's own trigger on either edge, a wrapper competing for the bytes.
140
150
  */
141
151
  function interleavings(fixture, trigger) {
142
152
  return [
@@ -152,11 +162,8 @@ function interleavings(fixture, trigger) {
152
162
  `${fixture}${trigger}`
153
163
  ];
154
164
  }
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
- */
165
+ /** How far into `fixture` its own opener ends; a scan range cut there strands a prefix whose
166
+ * closer is out of range, as a heading's excluded `#` run does. */
160
167
  function openerWidth(fixture, prefix) {
161
168
  const at = fixture.indexOf(prefix);
162
169
  return at < 0 ? prefix.length : at + prefix.length;
@@ -168,10 +175,8 @@ function checkRoundTrip(profile, rung) {
168
175
  const withEnding = `${source}\n`;
169
176
  assertIs(serialize(parse(withEnding)), withEnding, `serialize(parse(source)) round-trips ${JSON.stringify(withEnding)}`);
170
177
  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.
178
+ // A scan range short of the raw (a heading's excluded `#` run) catches a terminator
179
+ // search with no `end` bound; two cut points vary where the boundary falls.
175
180
  assertScanTiles(source + fixture, source.length);
176
181
  assertScanTiles(source + fixture, source.length + openerWidth(fixture, rung.prefix));
177
182
  count++;
@@ -179,12 +184,8 @@ function checkRoundTrip(profile, rung) {
179
184
  }
180
185
  return `${count} source(s) round-trip byte-for-byte and tile their scan range`;
181
186
  }
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
- */
187
+ /** Round-trip never sees a handler, so check the scanner's contract: the nodes tile `[0, end)`
188
+ * with no gap or overlap and their slices reassemble the bytes. */
188
189
  function assertScanTiles(raw, end) {
189
190
  const nodes = parseInline(raw, 0, end);
190
191
  let cursor = 0;
@@ -196,11 +197,8 @@ function assertScanTiles(raw, end) {
196
197
  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
  }
198
199
  // ── 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
- */
200
+ /** At every position the scan would consult this handler the recognizer returns null, so the
201
+ * built-in construct sees byte-identical input. */
204
202
  function checkOverlapDecline(profile, rung) {
205
203
  const fixtures = profile.overlapFixtures ?? [];
206
204
  let consulted = 0;
@@ -210,7 +208,7 @@ function checkOverlapDecline(profile, rung) {
210
208
  if (!source.startsWith(rung.prefix, pos))
211
209
  continue;
212
210
  positions++;
213
- const claimed = rung.recognizer(source, pos, source.length);
211
+ const claimed = rung.recognizer(source, pos, source.length, defaultGrammarView);
214
212
  if (claimed !== null) {
215
213
  fail(`the "${rung.prefix}" rung swallowed the overlap in ${JSON.stringify(source)} at ` +
216
214
  `offset ${pos} — it claimed [${claimed.start}, ${claimed.end}) as "${claimed.kind}", ` +
@@ -235,36 +233,30 @@ function checkWidgetAtomicity(profile, rung) {
235
233
  const kind = profile.kind;
236
234
  assert(kind !== undefined, 'the widget cell asserts but the profile names no kind — a rung minting only built-in ' +
237
235
  '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
- }
236
+ const claims = claimsOfKind(profile, rung, kind);
237
+ for (const { fixture, node } of claims) {
238
+ assert(isInlineWidget(node, fixture, defaultGrammarView), `the "${kind}" node from ${JSON.stringify(fixture)} is a registered live widget`);
239
+ assertSelfDelimiting(fixture, node, kind);
243
240
  }
244
- // Both early exits report BOUNDARY, not asserted: the island contract did not run.
245
- if (getInlineWidgetComponent(kind) !== undefined) {
241
+ // Both early exits report boundary, not asserted: the inline-widget contract did not run.
242
+ if (getInlineWidgetComponent(kind, defaultGrammarView) !== undefined) {
246
243
  return {
247
244
  status: 'boundary',
248
- detail: `${RECOGNITION_HALF} executed; the island wrapper of a \`component\` kind is minted by ` +
245
+ detail: `${RECOGNITION_HALF} executed; the widget wrapper of a \`component\` kind is created by ` +
249
246
  `the render layer, not by the plugin, so it is not the plugin’s to get wrong`
250
247
  };
251
248
  }
252
249
  if (typeof document === 'undefined') {
253
- return { status: 'boundary', detail: `${RECOGNITION_HALF} executed — ${NO_DOM}` };
250
+ return { status: 'boundary', detail: `${RECOGNITION_HALF} executed: ${NO_DOM}` };
254
251
  }
255
- for (const fixture of profile.fixtures) {
256
- for (const node of claimsIn(fixture, profile, rung)) {
257
- assertIslandContract(fixture, node, kind);
258
- }
252
+ for (const { fixture, node } of claims)
253
+ assertIslandContract(fixture, node, kind);
254
+ for (const fixture of profile.fixtures)
259
255
  assertWalkLengthIsRawLength(fixture);
260
- }
261
256
  return 'recognition, self-delimiting claim, island contract, and offset-walk length';
262
257
  }
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
- */
258
+ /** The claimed bytes must re-form on their own: `data-source-*` hands exactly this slice to the
259
+ * clipboard and a source view, where a context-dependent slice pastes back broken. */
268
260
  function assertSelfDelimiting(fixture, node, kind) {
269
261
  const slice = fixture.slice(node.start, node.end);
270
262
  const alone = parseInline(slice, 0, slice.length);
@@ -273,21 +265,20 @@ function assertSelfDelimiting(fixture, node, kind) {
273
265
  `the bytes data-source-* hands the clipboard and the reveal`);
274
266
  }
275
267
  function assertIslandContract(fixture, node, kind) {
276
- const island = buildCoreInlineWidget(node, fixture);
268
+ const island = buildCoreInlineWidget(node, fixture, undefined, defaultGrammarView);
277
269
  assert(island !== null, `the "${kind}" widget builds an island from ${JSON.stringify(fixture)}`);
278
270
  assert(island.hasAttribute('data-inline-widget'), `the "${kind}" island carries [data-inline-widget] — the offset walk's only handle`);
279
271
  assertIs(island.getAttribute('contenteditable'), 'false', `the "${kind}" island is contenteditable=false`);
280
272
  assertIs(Number(island.getAttribute('data-source-start')), node.start, `the "${kind}" island's data-source-start is the node's own offset`);
281
273
  assertIs(Number(island.getAttribute('data-source-end')), node.end, `the "${kind}" island's data-source-end is the node's own offset`);
282
274
  }
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
- */
275
+ /** The DOM-to-offset traversal counts a widget as its source span, not what it renders (seven
276
+ * bytes for one emoji glyph); every caret offset in the block depends on it. */
288
277
  function assertWalkLengthIsRawLength(fixture) {
289
278
  const container = document.createElement('div');
290
- container.appendChild(renderInlineNodes(parseInline(fixture, 0, fixture.length), fixture));
279
+ container.appendChild(renderInlineNodes(parseInline(fixture, 0, fixture.length), fixture, {
280
+ grammar: defaultGrammarView
281
+ }));
291
282
  assertIs(Number(containerDomTextLength(container)), fixture.length, `the offset walk over the rendered ${JSON.stringify(fixture)} measures its raw length`);
292
283
  }
293
284
  // ── editingPolicy ────────────────────────────────────────────────────────────
@@ -298,7 +289,7 @@ function assertWalkLengthIsRawLength(fixture) {
298
289
  function checkEditingPolicy(profile, rung) {
299
290
  const kind = profile.kind;
300
291
  assert(kind !== undefined, 'the editingPolicy cell asserts but the profile names no kind');
301
- const policy = getInlineWidgetEditing(kind);
292
+ const policy = getInlineWidgetEditing(kind, defaultGrammarView);
302
293
  assert(policy !== undefined, `"${kind}" declares no editing policy — register one, or declare this cell exempt if the ` +
303
294
  `widget takes the default select-then-delete behavior deliberately`);
304
295
  // An all-absent object is what the dispatch reads as no policy, so accepting one lets a kind
@@ -307,13 +298,11 @@ function checkEditingPolicy(profile, rung) {
307
298
  `dispatch reads exactly as no policy at all — declare a field, or declare this cell exempt`);
308
299
  assertPolicyVocabulary(policy, kind);
309
300
  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
- }
301
+ // One keypress deletes one widget, so each claim is removed on its own.
302
+ for (const { fixture, node } of claimsOfKind(profile, rung, kind)) {
303
+ const excised = `${fixture.slice(0, node.start)}${fixture.slice(node.end)}\n`;
304
+ assertIs(serialize(parse(excised)), excised, `the one-press whole-delete of the claim at ${node.start} in ` +
305
+ `${JSON.stringify(fixture)} leaves bytes that round-trip`);
317
306
  }
318
307
  return 'policy vocabulary + atomic whole-delete leaves round-tripping bytes';
319
308
  }
@@ -337,12 +326,8 @@ function assertPolicyVocabulary(policy, kind) {
337
326
  }
338
327
  }
339
328
  // ── 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
- */
329
+ /** A handler producing a built-in kind borrows the editor's model for its own bytes, so without
330
+ * `rewriteImage` a resize writes `![[cat.png|300]]` back as GFM, which still round-trips. */
346
331
  function checkImageClaimStamp(profile, rung) {
347
332
  let stamped = 0;
348
333
  for (const fixture of profile.fixtures) {
@@ -363,11 +348,8 @@ function checkImageClaimStamp(profile, rung) {
363
348
  `rung mints only its own kind`);
364
349
  return `${stamped} built-in node(s) stamped, rewriteImage reproduces its own input`;
365
350
  }
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
- */
351
+ /** The hook must re-emit the node it was handed unedited; the commit drops a byte-identical
352
+ * result, so a hook that cannot reproduce its input shows up as an edit that does nothing. */
371
353
  function assertRewriteReproducesSource(fixture, node, rung) {
372
354
  assert(rung.rewriteImage !== undefined, `the "${rung.prefix}" rung mints a built-in image but registers no rewriteImage — every ` +
373
355
  `image edit on it is declined, and without the hook the editor would write GFM over ` +
@@ -387,8 +369,8 @@ function assertRewriteReproducesSource(fixture, node, rung) {
387
369
  // ── registration ─────────────────────────────────────────────────────────────
388
370
  function checkRegistrationHygiene(profile, prefix, rung) {
389
371
  const reserved = isReservedInlineTrigger(profile.trigger);
390
- // Two rungs MAY share a prefix at different priorities (emoji and the directive text
391
- // tier coexist on `:`); two at the SAME priority could not be ordered by dispatch.
372
+ // Two handlers may share a prefix at different priorities (emoji and directive text both
373
+ // live on `:`), but two at the same priority could not be ordered by the dispatch.
392
374
  const sameRung = getInlineRungs(profile.trigger).filter((r) => r.prefix === prefix && r.priority === rung.priority);
393
375
  assertIs(sameRung.length, 1, `exactly one rung holds prefix ${JSON.stringify(prefix)} at priority ${rung.priority}`);
394
376
  if (reserved) {
@@ -397,8 +379,8 @@ function checkRegistrationHygiene(profile, prefix, rung) {
397
379
  `(${INLINE_PRIORITIES.builtin}) so its prefix outranks the built-in case; got ${rung.priority}`);
398
380
  }
399
381
  else {
400
- // The scan's fast bail skips an unreserved trigger unless a registration turns
401
- // its per-character probe on; without it the recognizer never runs in prose.
382
+ // The scan's fast bail skips an unreserved trigger unless a registration turns its
383
+ // per-character check on; without that the recognizer never runs in prose.
402
384
  assert(isScanProbeTrigger(profile.trigger), `the scan's fast bail visits ${JSON.stringify(profile.trigger)} — a trigger it skips ` +
403
385
  `makes the recognizer unreachable in plain text`);
404
386
  }
@@ -407,37 +389,38 @@ function checkRegistrationHygiene(profile, prefix, rung) {
407
389
  : `bare rung at priority ${rung.priority} on a scan-probed trigger`;
408
390
  }
409
391
  // ── Falsifiable excuses ──────────────────────────────────────────────────────
410
- /**
411
- * An excuse the kit can check, it checks: a reason is a claim about the rung, not a
412
- * waiver, so a profile excusing a cell that has something to bite on fails.
413
- */
414
- function falsifyExcuse(cell, profile, rung) {
415
- if (cell === 'overlapDecline' && (profile.overlapFixtures?.length ?? 0) > 0) {
416
- fail('the profile supplies overlapFixtures but declares overlapDecline excused — the fixtures ' +
417
- 'say the overlap exists, so assert the cell');
418
- }
419
- if (cell === 'widget' && profile.kind !== undefined) {
420
- const claimed = profile.fixtures
421
- .flatMap((f) => mintedNodes(f, profile, rung).map((n) => ({ f, n })))
422
- .find(({ f, n }) => n.kind === profile.kind && isInlineWidget(n, f));
423
- if (claimed) {
424
- fail(`"${profile.kind}" IS a registered live widget (from ${JSON.stringify(claimed.f)}), so ` +
425
- `the widget cell has something to bite on and cannot be excused`);
426
- }
392
+ // Where the kit can check an excuse, it does: a reason is a claim about the handler, not a waiver.
393
+ function refuseExcusedOverlap(profile) {
394
+ if ((profile.overlapFixtures?.length ?? 0) === 0)
395
+ return;
396
+ fail('the profile supplies overlapFixtures but declares overlapDecline excused — the fixtures ' +
397
+ 'say the overlap exists, so assert the cell');
398
+ }
399
+ function refuseExcusedWidget(profile, rung) {
400
+ if (profile.kind === undefined)
401
+ return;
402
+ const claimed = profile.fixtures
403
+ .flatMap((f) => mintedNodes(f, profile, rung).map((n) => ({ f, n })))
404
+ .find(({ f, n }) => n.kind === profile.kind && isInlineWidget(n, f, defaultGrammarView));
405
+ if (claimed) {
406
+ fail(`"${profile.kind}" is a registered live widget (from ${JSON.stringify(claimed.f)}), so ` +
407
+ `the widget cell has something to bite on and cannot be excused`);
427
408
  }
428
- if (cell === 'editingPolicy' && profile.kind !== undefined) {
429
- const policy = getInlineWidgetEditing(profile.kind);
430
- if (policy && Object.keys(policy).length > 0) {
431
- fail(`"${profile.kind}" declares an editing policy, so the editingPolicy cell cannot be excused`);
432
- }
409
+ }
410
+ function refuseExcusedEditingPolicy(profile) {
411
+ if (profile.kind === undefined)
412
+ return;
413
+ const policy = getInlineWidgetEditing(profile.kind, defaultGrammarView);
414
+ if (policy && Object.keys(policy).length > 0) {
415
+ fail(`"${profile.kind}" declares an editing policy, so the editingPolicy cell cannot be excused`);
433
416
  }
434
- if (cell === 'imageClaim') {
435
- const stamped = profile.fixtures
436
- .flatMap((f) => mintedNodes(f, profile, rung))
437
- .find((n) => n.syntaxClaim?.prefix === rung.prefix);
438
- if (stamped) {
439
- fail(`a fixture mints a stamped built-in "${stamped.kind}", so the imageClaim cell has ` +
440
- `something to bite on and cannot be excused`);
441
- }
417
+ }
418
+ function refuseExcusedImageClaim(profile, rung) {
419
+ const stamped = profile.fixtures
420
+ .flatMap((f) => mintedNodes(f, profile, rung))
421
+ .find((n) => n.syntaxClaim?.prefix === rung.prefix);
422
+ if (stamped) {
423
+ fail(`a fixture mints a stamped built-in "${stamped.kind}", so the imageClaim cell has ` +
424
+ `something to bite on and cannot be excused`);
442
425
  }
443
426
  }
@@ -1,20 +1,18 @@
1
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.
2
+ * The generic per-kind conformance battery: registering a block kind enrolls it, one cell per
3
+ * `ClosureColumn` plus the raw-write cell, read from its descriptor and `conformanceFixture`. A
4
+ * cell runs only where headless code can observe what it checks; the rest is reported `boundary`
5
+ * or `exempt`, never stubbed green.
7
6
  */
8
7
  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;
8
+ import { type ClosureCell, type ClosureColumn } from '../schema/closure';
9
+ import { type WriteRule } from '../schema/block-kind-descriptor';
10
+ import { type CellReport } from './conformance-core';
11
+ /** A closure column, plus `rawWrite`, which reads the descriptor rather than the closure block. */
12
+ export type KindCell = ClosureColumn | 'rawWrite';
13
+ export interface KindCellReport extends CellReport<KindCell> {
14
+ /** The closure mode the kind declared for the cell; absent on `rawWrite`. */
15
+ mode?: ClosureCell['mode'];
18
16
  }
19
17
  export interface KindConformanceReport {
20
18
  kind: AnyBlockKind;
@@ -23,7 +21,6 @@ export interface KindConformanceReport {
23
21
  /** The parsed fixture context a cell executor reads; absent without a `conformanceFixture`. */
24
22
  export interface KindCellContext {
25
23
  kind: AnyBlockKind;
26
- descriptor: BlockKindDescriptor;
27
24
  fixture: string;
28
25
  doc: Document;
29
26
  node: CstNode;
@@ -40,15 +37,13 @@ export interface KindConformanceProfile {
40
37
  cells?: Partial<Record<ClosureColumn, KindCellCheck>>;
41
38
  }
42
39
  /**
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.
40
+ * Runs every headless closure cell for `kind`, or throws an `Error` naming each failed cell. A
41
+ * `conformanceFixture` that parses to no node of the kind fails the run outright.
45
42
  */
46
43
  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
- */
44
+ /** Asserts the default cross-block copy over `kind`'s fixture is a raw byte slice at both endpoint
45
+ * roles, which is what `clipboard: inherit-default` means; the fixture opens with `kind`. */
54
46
  export declare function checkCopyIsRawByteSlice(kind: AnyBlockKind, fixture: string): void;
47
+ /** Drives five writes over `kind`'s fixture through its `rawWrite` rule; each result must be a
48
+ * fixed point of the rule, leave the next block its own, and have an agreeing caret map. */
49
+ export declare function checkLeafRawWrite(kind: AnyBlockKind, fixture: string, rule?: WriteRule | undefined): void;