@voithos-labs/aragonite 0.10.4 → 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 +11 -5
  3. package/dist/a11y-strings.js +60 -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 +12 -21
  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 +603 -1126
  23. package/dist/components/Editor.svelte.d.ts +9 -20
  24. package/dist/components/GapCaret.svelte +26 -59
  25. package/dist/components/SelectionOverlay.svelte +26 -51
  26. package/dist/components/SelectionOverlay.svelte.d.ts +5 -3
  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 +72 -87
  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 +29 -34
  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 +57 -39
  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 +141 -203
  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 +45 -90
  65. package/dist/components/blocks/list/ListItemBlock.svelte +93 -147
  66. package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +1 -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 +8 -6
  102. package/dist/components/blocks/text/click-snap-guard.js +10 -7
  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 +150 -181
  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 -108
  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 +212 -199
  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 +12 -35
  144. package/dist/components/drag-handle.js +22 -68
  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 -24
  162. package/dist/components/editor-root-listeners.js +49 -24
  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 +14 -26
  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 +30 -35
  209. package/dist/components/menu/SelectionToolbar.svelte.d.ts +3 -5
  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 +54 -75
  256. package/dist/core/inline/inline-widgets.js +54 -62
  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 +31 -15
  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 -6
  347. package/dist/cursor/height-oracle.js +26 -74
  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 +14 -15
  365. package/dist/cursor/scrollport.js +7 -13
  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 -14
  375. package/dist/cursor/visual-lines.js +45 -46
  376. package/dist/cursor/widget-edge-snap.d.ts +10 -15
  377. package/dist/cursor/widget-edge-snap.js +13 -12
  378. package/dist/cursor/widget-offset.d.ts +110 -104
  379. package/dist/cursor/widget-offset.js +344 -179
  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 +30 -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 +28 -50
  434. package/dist/editor-actions/focus/focus-landing.d.ts +8 -11
  435. package/dist/editor-actions/focus/focus-landing.js +15 -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 +54 -82
  465. package/dist/editor-actions/plugin/container.js +105 -188
  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 +88 -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 +37 -8
  550. package/dist/plugin.js +100 -77
  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 +78 -67
  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 -81
  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 +51 -45
  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 +15 -6
  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 +141 -310
  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 +78 -84
  695. package/dist/schema/commands.js +152 -117
  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 +8 -10
  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 +63 -80
  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 +92 -125
  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 +59 -96
  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 +51 -134
  807. package/dist/selection/dead-space-caret.d.ts +19 -30
  808. package/dist/selection/dead-space-caret.js +70 -88
  809. package/dist/selection/drag-pointer.d.ts +7 -9
  810. package/dist/selection/drag-pointer.js +23 -33
  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 -40
  816. package/dist/selection/keyboard-extend.js +94 -117
  817. package/dist/selection/multi-click.d.ts +13 -18
  818. package/dist/selection/multi-click.js +32 -38
  819. package/dist/selection/native-bridge.d.ts +29 -39
  820. package/dist/selection/native-bridge.js +78 -127
  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 +25 -16
  824. package/dist/selection/path-lookup.js +101 -18
  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 +5 -5
  828. package/dist/selection/pointer-gesture.js +5 -5
  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 -40
  832. package/dist/selection/primitives.js +57 -67
  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 -23
  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 +34 -16
  852. package/dist/selection/selection-drop.js +159 -95
  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 +60 -53
  864. package/dist/styles/editor.css +201 -143
  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 +9 -7
  960. package/dist/tree-operations/paste/replacement-parse.js +12 -10
  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 +327 -205
  994. package/docs/guide/directives.md +7 -7
  995. package/docs/guide/plugin-api.md +253 -185
  996. package/docs/guide/plugin-guide.md +332 -235
  997. package/docs/guide/plugin-testing.md +96 -82
  998. package/package.json +12 -16
  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/cursor/scroll-hold.d.ts +0 -10
  1015. package/dist/cursor/scroll-hold.js +0 -22
  1016. package/dist/invariants/split-landing.d.ts +0 -8
  1017. package/dist/invariants/split-landing.js +0 -15
  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 -31
  1021. package/dist/tree-operations/paste/replace-block-at-parent.js +0 -78
@@ -0,0 +1,39 @@
1
+ /**
2
+ * A keyed container's `childIds` hold one id per child, at every depth: a container whose
3
+ * `children` outgrow its ids hands the keyed each block undefined keys, and the redraw after undo
4
+ * reconciles to something other than the tree. A container that never mounted has no `childIds`
5
+ * yet and passes, unless the caller seeded every container first and asks for `everyKeyed`.
6
+ */
7
+ export function checkChildIdParity(node, options = {}) {
8
+ const [first] = childIdDrifts(node, options, 1);
9
+ if (!first)
10
+ return null;
11
+ return {
12
+ code: 'child-id-parity',
13
+ message: `${first.trail}: ${first.ids ?? 'no'} child ids for ${first.children} children`,
14
+ detail: { kind: first.kind, children: first.children, ids: first.ids }
15
+ };
16
+ }
17
+ /** Every container under `node` (itself included) whose ids are out of step, in document order. */
18
+ export function childIdDrifts(node, options = {}, limit = Infinity) {
19
+ const drifts = [];
20
+ const everyKeyed = options.everyKeyed ?? false;
21
+ const stack = [
22
+ { node, path: [], trail: node.kind }
23
+ ];
24
+ while (stack.length > 0 && drifts.length < limit) {
25
+ const { node: at, path, trail } = stack.pop();
26
+ if (!at.children)
27
+ continue;
28
+ const ids = at.childIds;
29
+ if (ids === undefined ? everyKeyed : ids.length !== at.children.length) {
30
+ drifts.push({ path, kind: at.kind, children: at.children.length, ids: ids?.length, trail });
31
+ }
32
+ // Reversed push, so the pops come out in document order.
33
+ for (let i = at.children.length - 1; i >= 0; i--) {
34
+ const child = at.children[i];
35
+ stack.push({ node: child, path: [...path, i], trail: `${trail}[${i}] ${child.kind}` });
36
+ }
37
+ }
38
+ return drifts;
39
+ }
@@ -1,8 +1,8 @@
1
1
  /**
2
- * G1.16 — every path a commit declares is doc-absolute: each prefix resolves to an
3
- * existing child from the document root. The final index may be one past the end, since
4
- * insert-shaped ops legitimately name the slot they create. The `DocPath` param is the
5
- * compile-time gate; this stays the runtime belt for the JS callers types don't bind.
2
+ * G1.16: every path a commit declares is document-absolute, so each prefix resolves to an
3
+ * existing child from the document root. The last index may be one past the end, because an
4
+ * insert names the position it is about to create. The `DocPath` type checks this at compile
5
+ * time; this is the runtime check for the JavaScript callers types do not bind.
6
6
  */
7
7
  import type { Document } from '../core/nodes';
8
8
  import type { DocPath } from '../selection/path-math';
@@ -1,8 +1,8 @@
1
1
  /**
2
- * G1.16 — every path a commit declares is doc-absolute: each prefix resolves to an
3
- * existing child from the document root. The final index may be one past the end, since
4
- * insert-shaped ops legitimately name the slot they create. The `DocPath` param is the
5
- * compile-time gate; this stays the runtime belt for the JS callers types don't bind.
2
+ * G1.16: every path a commit declares is document-absolute, so each prefix resolves to an
3
+ * existing child from the document root. The last index may be one past the end, because an
4
+ * insert names the position it is about to create. The `DocPath` type checks this at compile
5
+ * time; this is the runtime check for the JavaScript callers types do not bind.
6
6
  */
7
7
  export function checkCommitPathAddressable(doc, path, role) {
8
8
  let parent = doc;
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Commit-in-progress flag. The ceremony (editor-actions) brackets its synchronous body; the
3
- * decoration engine (reactivity) reads it to keep a source off a half-applied tree. A leaf,
4
- * so both read it downward — a flag in editor-actions would close a cycle. Never behind a
5
- * build flag: the deferral is production behavior (G4.61).
2
+ * Says whether a commit is running. The commit steps in `editor-actions` bracket their synchronous
3
+ * body with it, and `reactivity` reads it so decorations never read a half-applied tree. It lives
4
+ * here because both sides import downward, and it ships in production because the deferral it
5
+ * drives is production behavior (G4.61).
6
6
  */
7
7
  export declare function beginCommit(): void;
8
8
  export declare function endCommit(): void;
@@ -1,16 +1,17 @@
1
1
  /**
2
- * Commit-in-progress flag. The ceremony (editor-actions) brackets its synchronous body; the
3
- * decoration engine (reactivity) reads it to keep a source off a half-applied tree. A leaf,
4
- * so both read it downward — a flag in editor-actions would close a cycle. Never behind a
5
- * build flag: the deferral is production behavior (G4.61).
2
+ * Says whether a commit is running. The commit steps in `editor-actions` bracket their synchronous
3
+ * body with it, and `reactivity` reads it so decorations never read a half-applied tree. It lives
4
+ * here because both sides import downward, and it ships in production because the deferral it
5
+ * drives is production behavior (G4.61).
6
6
  */
7
- let inCommit = false;
7
+ // A depth, not a boolean: a commit started from an `edit` handler must not end the outer one.
8
+ let depth = 0;
8
9
  export function beginCommit() {
9
- inCommit = true;
10
+ depth++;
10
11
  }
11
12
  export function endCommit() {
12
- inCommit = false;
13
+ depth--;
13
14
  }
14
15
  export function isCommitInProgress() {
15
- return inCommit;
16
+ return depth > 0;
16
17
  }
@@ -1,7 +1,4 @@
1
1
  import type { InvariantViolation } from '../assert';
2
- /**
3
- * G1.4 — a container's provided context keys must not include the editor's
4
- * HISTORY_KEY. Containers re-provide nested action contexts to descendants but
5
- * must let history flow from the root; shadowing it would split the undo stack.
6
- */
2
+ /** G1.4: a container may not provide `HISTORY_KEY` to its descendants: history reaches nested
3
+ * action contexts from the root, and shadowing the key would split the undo stack. */
7
4
  export declare function checkNoContainerHistoryKey(setKeys: symbol[], historyKey: symbol): InvariantViolation | null;
@@ -1,13 +1,10 @@
1
- /**
2
- * G1.4 — a container's provided context keys must not include the editor's
3
- * HISTORY_KEY. Containers re-provide nested action contexts to descendants but
4
- * must let history flow from the root; shadowing it would split the undo stack.
5
- */
1
+ /** G1.4: a container may not provide `HISTORY_KEY` to its descendants: history reaches nested
2
+ * action contexts from the root, and shadowing the key would split the undo stack. */
6
3
  export function checkNoContainerHistoryKey(setKeys, historyKey) {
7
4
  if (setKeys.includes(historyKey)) {
8
5
  return {
9
6
  code: 'container-sets-history-key',
10
- message: 'container provides HISTORY_KEY to descendants — undo stack would split'
7
+ message: 'container provides HISTORY_KEY to descendants: undo stack would split'
11
8
  };
12
9
  }
13
10
  return null;
@@ -1,10 +1,6 @@
1
1
  import type { CstNode } from '../core/nodes';
2
2
  import { type ContentRange } from '../core/inline';
3
3
  import type { InvariantViolation } from '../assert';
4
- /**
5
- * G1.8 — a content range stays within its raw: `0 <= start <= end <= displayLength(raw)`.
6
- * Every kind that HAS a range is covered, not just the prose ones: a non-prose kind may declare
7
- * `getContentRange` (the directive leaf does) and the range is consumed unconditionally.
8
- * `getRange` is a parameter so a negative test can inject a bad range without touching the registry.
9
- */
4
+ /** G1.8: a content range stays inside its raw bytes, for every kind that declares one, since
5
+ * callers use the range unchecked. `getRange` is a parameter so a test can inject a bad range. */
10
6
  export declare function checkContentRange(node: CstNode, getRange?: (node: CstNode) => ContentRange): InvariantViolation | null;
@@ -1,12 +1,8 @@
1
1
  import { displayLength } from '../core/lines';
2
2
  import { getBlockKindDescriptor } from '../schema/block-kind-descriptor';
3
3
  import { getContentRange } from '../core/inline';
4
- /**
5
- * G1.8 — a content range stays within its raw: `0 <= start <= end <= displayLength(raw)`.
6
- * Every kind that HAS a range is covered, not just the prose ones: a non-prose kind may declare
7
- * `getContentRange` (the directive leaf does) and the range is consumed unconditionally.
8
- * `getRange` is a parameter so a negative test can inject a bad range without touching the registry.
9
- */
4
+ /** G1.8: a content range stays inside its raw bytes, for every kind that declares one, since
5
+ * callers use the range unchecked. `getRange` is a parameter so a test can inject a bad range. */
10
6
  export function checkContentRange(node, getRange = getContentRange) {
11
7
  const descriptor = getBlockKindDescriptor(node.kind);
12
8
  if (!descriptor.supportsInline && descriptor.getContentRange === undefined)
@@ -1,23 +1,16 @@
1
1
  /**
2
- * Predicates for the inline layer's transition guards (G1.25–G1.27): the widget-pool pass
3
- * bracket, the reveal kernel's source-length precondition, and the IME composition window.
2
+ * The checks behind the inline transition guards (G1.25 to G1.27): the widget pool's
3
+ * begin/sweep bracket, the source-length rule for a revealed construct, and the window during
4
+ * which an IME composition is open.
4
5
  */
5
6
  import type { InvariantViolation } from '../assert';
6
7
  export type PoolBracketAction = 'acquire' | 'beginPass' | 'sweep';
7
- /**
8
- * G1.25 — every pool mutation respects the beginPass/sweep bracket. Outside one, adoption
9
- * flags and pass tallies are meaningless and key-only lookup cannot tell byte-identical
10
- * duplicate widgets apart.
11
- */
8
+ /** G1.25: every pool change happens between `beginPass` and `sweep`; outside that bracket a
9
+ * lookup by key alone cannot tell two byte-identical widgets apart. */
12
10
  export declare function checkPoolBracket(passOpen: boolean, action: PoolBracketAction): InvariantViolation | null;
13
- /**
14
- * G1.26 (kernel leg) — a reveal's source bytes span exactly its [sourceStart, sourceEnd)
15
- * range; a mismatch shifts every raw offset outside the source, desyncing the offset walk.
16
- */
11
+ /** G1.26, the shared editable core's half: a revealed construct's source bytes span exactly
12
+ * `[sourceStart, sourceEnd)`, or every raw offset after the source shifts. */
17
13
  export declare function checkRevealSourceLength(sourceLength: number, sourceStart: number, sourceEnd: number): InvariantViolation | null;
18
- /**
19
- * G1.27 — a compositionend lands only inside a composition the surface saw start. Browsers
20
- * pair the events per element, so an unpaired end means a consumer wired `compositionend`
21
- * without `compositionstart` and every composition keystroke reached the CST mid-IME.
22
- */
14
+ /** G1.27: a `compositionend` arrives only inside a composition the element saw start, so an
15
+ * unpaired end means `compositionstart` was never wired and IME keystrokes reached the tree. */
23
16
  export declare function checkCompositionEndPaired(composing: boolean): InvariantViolation | null;
@@ -1,14 +1,11 @@
1
- /**
2
- * G1.25 — every pool mutation respects the beginPass/sweep bracket. Outside one, adoption
3
- * flags and pass tallies are meaningless and key-only lookup cannot tell byte-identical
4
- * duplicate widgets apart.
5
- */
1
+ /** G1.25: every pool change happens between `beginPass` and `sweep`; outside that bracket a
2
+ * lookup by key alone cannot tell two byte-identical widgets apart. */
6
3
  export function checkPoolBracket(passOpen, action) {
7
4
  if (action === 'beginPass') {
8
5
  return passOpen
9
6
  ? {
10
7
  code: 'begin-unswept',
11
- message: 'beginPass while a bracket is already open — the previous pass was never swept'
8
+ message: 'beginPass while a bracket is already open: the previous pass was never swept'
12
9
  }
13
10
  : null;
14
11
  }
@@ -17,17 +14,15 @@ export function checkPoolBracket(passOpen, action) {
17
14
  return action === 'acquire'
18
15
  ? {
19
16
  code: 'acquire-outside-bracket',
20
- message: 'acquire outside a beginPass/sweep bracket — adoption is only meaningful inside a rebuild pass'
17
+ message: 'acquire outside a beginPass/sweep bracket: adoption is only meaningful inside a rebuild pass'
21
18
  }
22
19
  : {
23
20
  code: 'sweep-outside-bracket',
24
- message: 'sweep without an open bracket — nothing was adopted, so it would destroy every live widget'
21
+ message: 'sweep without an open bracket, nothing was adopted, so it would destroy every live widget'
25
22
  };
26
23
  }
27
- /**
28
- * G1.26 (kernel leg) — a reveal's source bytes span exactly its [sourceStart, sourceEnd)
29
- * range; a mismatch shifts every raw offset outside the source, desyncing the offset walk.
30
- */
24
+ /** G1.26, the shared editable core's half: a revealed construct's source bytes span exactly
25
+ * `[sourceStart, sourceEnd)`, or every raw offset after the source shifts. */
31
26
  export function checkRevealSourceLength(sourceLength, sourceStart, sourceEnd) {
32
27
  if (sourceLength === sourceEnd - sourceStart)
33
28
  return null;
@@ -37,16 +32,13 @@ export function checkRevealSourceLength(sourceLength, sourceStart, sourceEnd) {
37
32
  detail: { sourceLength, sourceStart, sourceEnd }
38
33
  };
39
34
  }
40
- /**
41
- * G1.27 — a compositionend lands only inside a composition the surface saw start. Browsers
42
- * pair the events per element, so an unpaired end means a consumer wired `compositionend`
43
- * without `compositionstart` and every composition keystroke reached the CST mid-IME.
44
- */
35
+ /** G1.27: a `compositionend` arrives only inside a composition the element saw start, so an
36
+ * unpaired end means `compositionstart` was never wired and IME keystrokes reached the tree. */
45
37
  export function checkCompositionEndPaired(composing) {
46
38
  if (composing)
47
39
  return null;
48
40
  return {
49
41
  code: 'end-without-start',
50
- message: 'compositionend with no open composition — the surface never saw compositionstart'
42
+ message: 'compositionend with no open composition: the surface never saw compositionstart'
51
43
  };
52
44
  }
@@ -1,36 +1,27 @@
1
1
  /**
2
- * Seam-side glue between the pure predicates and the `assertInvariant` channel, so the
3
- * predicates themselves stay pure and unaware of it.
2
+ * Wires the pure predicates to `assertInvariant`, so the predicates stay pure and know nothing
3
+ * about how a violation is reported.
4
4
  */
5
5
  import type { CstNode, Document } from '../core/nodes';
6
+ import type { GrammarView } from '../schema/block-openers';
6
7
  import type { DocPath } from '../selection/path-math';
7
8
  import { type SnapshotEntry } from './snapshot-integrity';
8
- /**
9
- * Per-commit check for the nodes a commit touched, never a whole-tree walk. Each predicate
10
- * self-filters by kind. Run AFTER the commit's rebuildRaw, so a strip container's raw is
11
- * its freshly-rebuilt output.
12
- */
13
- export declare function assertCommittedNodes(nodes: CstNode[]): void;
14
- /**
15
- * Pre-mutate commit-seam check that both declared coordinates are doc-absolute (G1.16,
16
- * `commit-paths.ts`). Null skips a coordinate the commit doesn't carry.
17
- */
9
+ /** Checks only the nodes a commit touched. Call it after the commit's `rebuildRaw`, so a strip
10
+ * container's raw is that rebuild's output. */
11
+ export declare function assertCommittedNodes(nodes: CstNode[], grammar: GrammarView): void;
12
+ /** Checks, before the commit mutates anything, that both declared paths are document-absolute
13
+ * (G1.16); null skips a path the commit does not carry. */
18
14
  export declare function assertCommitPaths(doc: Document, snapshotPath: DocPath | null, eventPath: DocPath | null): void;
19
- /**
20
- * G1.9 per-commit seam: the freshest undo entry is the one this commit's mutations could
21
- * have corrupted, so only its digest is re-verified. Deeper entries stay covered by the
22
- * restore-time check in `editor-actions/commit/history.ts`.
23
- */
15
+ /** G1.9, once per commit: only the newest undo entry can have been corrupted by this commit, so
16
+ * only its digest is re-checked; older entries are checked when they are restored. */
24
17
  export declare function assertUndoTopIntegrity(entry: SnapshotEntry | undefined): void;
25
- /**
26
- * G1.36 consumer half, at each publish seam: the descriptor's own bounds check cannot see a
27
- * change that fits its array while describing the wrong window, and a short id array reaches
28
- * Svelte's keyed each as missing keys.
29
- */
18
+ /** G1.41, after every structural commit publishes: `wasOpen` is `endsOpen` read before it mutated. */
19
+ export declare function assertLastLineKept(doc: Document, wasOpen: boolean): void;
20
+ /** G1.44, after every structural commit publishes: `touched` is what the commit wrote. */
21
+ export declare function assertKeepsABlock(doc: Document, touched: CstNode[]): void;
22
+ /** G1.36, the reading half, run wherever ids are written to state: an id array that is too short
23
+ * reaches Svelte's keyed each as missing keys. */
30
24
  export declare function assertIdsInLockstep(seam: string, idCount: number, childCount: number): void;
31
- /**
32
- * Registry-wide checks at the mount seam. The flush owns the once-latch: the first sweeps
33
- * the whole world, later mounts validate only registrations since the previous flush. The
34
- * inline-policy check sits outside it — mount-only, and table-wide on every mount (G1.31).
35
- */
25
+ /** The registry-wide checks, run on mount: the full sweep the first time, then only the
26
+ * registrations added since. The inline-policy check runs on every mount (G1.31). */
36
27
  export declare function runStartupInvariantChecks(): void;
@@ -1,34 +1,34 @@
1
1
  /**
2
- * Seam-side glue between the pure predicates and the `assertInvariant` channel, so the
3
- * predicates themselves stay pure and unaware of it.
2
+ * Wires the pure predicates to `assertInvariant`, so the predicates stay pure and know nothing
3
+ * about how a violation is reported.
4
4
  */
5
5
  import { assertInvariant } from '../assert';
6
6
  import { checkCommitPathAddressable } from './commit-paths';
7
7
  import { flushPendingRegistrationChecks, checkInlineConstructPoliciesAtMount } from '../schema/registration-checks';
8
- import { checkStaleRaw, checkOpaqueStaleRaw, checkOpaqueRebuildDeterminism, checkReservedChromeSlot, checkCategoryFields } from './node-shape';
8
+ import { checkStaleRaw, checkOpaqueStaleRaw, checkOpaqueRebuildDeterminism, checkReservedChromeSlot, checkCategoryFields, checkTaskMarkerSlot } from './node-shape';
9
9
  import { checkContentRange } from './descriptor';
10
+ import { checkChildIdParity } from './child-id-parity';
10
11
  import { checkChildSpansLockstep, checkIdsChildrenLockstep } from './structural-descriptor';
11
12
  import { checkSnapshotIntegrity } from './snapshot-integrity';
12
- /**
13
- * Per-commit check for the nodes a commit touched, never a whole-tree walk. Each predicate
14
- * self-filters by kind. Run AFTER the commit's rebuildRaw, so a strip container's raw is
15
- * its freshly-rebuilt output.
16
- */
17
- export function assertCommittedNodes(nodes) {
13
+ import { checkLastLineKept } from './open-tail';
14
+ import { checkKeepsABlock } from './keeps-a-block';
15
+ /** Checks only the nodes a commit touched. Call it after the commit's `rebuildRaw`, so a strip
16
+ * container's raw is that rebuild's output. */
17
+ export function assertCommittedNodes(nodes, grammar) {
18
18
  for (const node of nodes) {
19
- assertInvariant('stale-raw', () => checkStaleRaw(node));
20
- assertInvariant('opaque-stale-raw', () => checkOpaqueStaleRaw(node));
19
+ assertInvariant('stale-raw', () => checkStaleRaw(node, grammar));
20
+ assertInvariant('opaque-stale-raw', () => checkOpaqueStaleRaw(node, grammar));
21
21
  assertInvariant('opaque-rebuild-determinism', () => checkOpaqueRebuildDeterminism(node));
22
22
  assertInvariant('reserved-chrome-slot', () => checkReservedChromeSlot(node));
23
23
  assertInvariant('category-fields', () => checkCategoryFields(node));
24
24
  assertInvariant('content-range', () => checkContentRange(node));
25
25
  assertInvariant('child-spans-lockstep', () => checkChildSpansLockstep(node));
26
+ assertInvariant('child-id-parity', () => checkChildIdParity(node));
27
+ assertInvariant('task-marker-slot', () => checkTaskMarkerSlot(node, grammar));
26
28
  }
27
29
  }
28
- /**
29
- * Pre-mutate commit-seam check that both declared coordinates are doc-absolute (G1.16,
30
- * `commit-paths.ts`). Null skips a coordinate the commit doesn't carry.
31
- */
30
+ /** Checks, before the commit mutates anything, that both declared paths are document-absolute
31
+ * (G1.16); null skips a path the commit does not carry. */
32
32
  export function assertCommitPaths(doc, snapshotPath, eventPath) {
33
33
  if (snapshotPath) {
34
34
  assertInvariant('commit-path-dialect', () => checkCommitPathAddressable(doc, snapshotPath, 'snapshot.path'));
@@ -37,29 +37,28 @@ export function assertCommitPaths(doc, snapshotPath, eventPath) {
37
37
  assertInvariant('commit-path-dialect', () => checkCommitPathAddressable(doc, eventPath, 'eventPath'));
38
38
  }
39
39
  }
40
- /**
41
- * G1.9 per-commit seam: the freshest undo entry is the one this commit's mutations could
42
- * have corrupted, so only its digest is re-verified. Deeper entries stay covered by the
43
- * restore-time check in `editor-actions/commit/history.ts`.
44
- */
40
+ /** G1.9, once per commit: only the newest undo entry can have been corrupted by this commit, so
41
+ * only its digest is re-checked; older entries are checked when they are restored. */
45
42
  export function assertUndoTopIntegrity(entry) {
46
43
  if (!entry)
47
44
  return;
48
45
  assertInvariant('snapshot-integrity', () => checkSnapshotIntegrity(entry));
49
46
  }
50
- /**
51
- * G1.36 consumer half, at each publish seam: the descriptor's own bounds check cannot see a
52
- * change that fits its array while describing the wrong window, and a short id array reaches
53
- * Svelte's keyed each as missing keys.
54
- */
47
+ /** G1.41, after every structural commit publishes: `wasOpen` is `endsOpen` read before it mutated. */
48
+ export function assertLastLineKept(doc, wasOpen) {
49
+ assertInvariant('last-line-kept', () => checkLastLineKept(doc, wasOpen));
50
+ }
51
+ /** G1.44, after every structural commit publishes: `touched` is what the commit wrote. */
52
+ export function assertKeepsABlock(doc, touched) {
53
+ assertInvariant('keeps-a-block', () => checkKeepsABlock(doc, touched));
54
+ }
55
+ /** G1.36, the reading half, run wherever ids are written to state: an id array that is too short
56
+ * reaches Svelte's keyed each as missing keys. */
55
57
  export function assertIdsInLockstep(seam, idCount, childCount) {
56
58
  assertInvariant('ids-children-lockstep', () => checkIdsChildrenLockstep(seam, idCount, childCount));
57
59
  }
58
- /**
59
- * Registry-wide checks at the mount seam. The flush owns the once-latch: the first sweeps
60
- * the whole world, later mounts validate only registrations since the previous flush. The
61
- * inline-policy check sits outside it — mount-only, and table-wide on every mount (G1.31).
62
- */
60
+ /** The registry-wide checks, run on mount: the full sweep the first time, then only the
61
+ * registrations added since. The inline-policy check runs on every mount (G1.31). */
63
62
  export function runStartupInvariantChecks() {
64
63
  flushPendingRegistrationChecks();
65
64
  checkInlineConstructPoliciesAtMount();
@@ -0,0 +1,7 @@
1
+ /**
2
+ * G1.44: after a structural commit the document holds a block, and no container the commit
3
+ * touched that must hold a child is left with none.
4
+ */
5
+ import type { DocumentView, NodeView } from '../core/node-views';
6
+ import type { InvariantViolation } from '../assert';
7
+ export declare function checkKeepsABlock(doc: DocumentView, touched: readonly NodeView[]): InvariantViolation | null;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * G1.44: after a structural commit the document holds a block, and no container the commit
3
+ * touched that must hold a child is left with none.
4
+ */
5
+ import { mustHoldChild } from '../schema/block-kind-descriptor';
6
+ export function checkKeepsABlock(doc, touched) {
7
+ if (doc.children.length === 0)
8
+ return violation('the document holds no block');
9
+ const emptied = touched.find((n) => mustHoldChild(n.kind) && (n.children?.length ?? 0) === 0);
10
+ return emptied ? violation(`a ${emptied.kind} holds no block`) : null;
11
+ }
12
+ function violation(message) {
13
+ return { code: 'keeps-a-block', message };
14
+ }
@@ -1,11 +1,9 @@
1
1
  /**
2
- * G1.33 — a block a caret is being seated in, under an editable marker-hiding rung, paints at
3
- * least one landable caret position. A surface whose whole content is a hidden marker run takes
4
- * the keystroke at an element boundary between `display:none` spans, and the engine seats the
5
- * byte on whichever side it likes. Built-ins satisfy it by painting chrome that stands over no
6
- * content (`docs/design/live-mode.md` § 4.1); this catches a plugin surface that does not.
7
- * Reported at block-host granularity: a table cell has no host of its own, so a cell violation
8
- * names its table's path while the predicate still resolves the cell's own surface.
2
+ * G1.33: in a mode that hides markers, a block the caret is about to enter paints at least one
3
+ * position the caret can sit at; if every content byte is a hidden marker, the browser puts the
4
+ * keystroke on whichever side of the hidden spans it likes. Built-in blocks paint markers that
5
+ * stand over no content (`docs/design/live-mode.md` § 4.1 What live never writes); the check is
6
+ * for plugin blocks. A table cell has no block host, so it reports its table's path.
9
7
  */
10
8
  import { type PresentationMode } from '../presentation-mode';
11
9
  import type { InvariantViolation } from '../assert';
@@ -1,11 +1,9 @@
1
1
  /**
2
- * G1.33 — a block a caret is being seated in, under an editable marker-hiding rung, paints at
3
- * least one landable caret position. A surface whose whole content is a hidden marker run takes
4
- * the keystroke at an element boundary between `display:none` spans, and the engine seats the
5
- * byte on whichever side it likes. Built-ins satisfy it by painting chrome that stands over no
6
- * content (`docs/design/live-mode.md` § 4.1); this catches a plugin surface that does not.
7
- * Reported at block-host granularity: a table cell has no host of its own, so a cell violation
8
- * names its table's path while the predicate still resolves the cell's own surface.
2
+ * G1.33: in a mode that hides markers, a block the caret is about to enter paints at least one
3
+ * position the caret can sit at; if every content byte is a hidden marker, the browser puts the
4
+ * keystroke on whichever side of the hidden spans it likes. Built-in blocks paint markers that
5
+ * stand over no content (`docs/design/live-mode.md` § 4.1 What live never writes); the check is
6
+ * for plugin blocks. A table cell has no block host, so it reports its table's path.
9
7
  */
10
8
  import { hidesMarkers } from '../presentation-mode';
11
9
  import { paintsNoLandableContent } from '../cursor/widget-offset';
@@ -18,13 +16,12 @@ export function checkLandableCaret(focused, mode, blockPath) {
18
16
  return null;
19
17
  return {
20
18
  code: 'landable-caret',
21
- message: `the block at [${blockPath}] is every byte a hidden marker run, so "${mode}" paints it nowhere and the caret being seated there has no position of its own — paint the chrome while it stands over no content`,
19
+ message: `the block at [${blockPath}] is every byte a hidden marker run, so "${mode}" paints it nowhere and the caret being placed there has no position of its own: paint the chrome while it stands over no content`,
22
20
  detail: { path: [...blockPath], mode }
23
21
  };
24
22
  }
25
- /** The walk container behind a focus landing: the seam offers every landing, block chrome and
26
- * inner spans included, and only a surface that takes a keystroke can trap a caret. By
27
- * attribute, not `isContentEditable`, which jsdom leaves false on an editable div. */
23
+ /** The editable element behind the focus, which may sit on a marker or an inner span. Read from
24
+ * the attribute, since jsdom leaves `isContentEditable` false on an editable div. */
28
25
  function editableSurfaceOf(focused) {
29
26
  const el = focused.closest('[contenteditable]');
30
27
  return el && el.getAttribute('contenteditable') !== 'false' ? el : null;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * G1.45: a caret landing's focus call and DOM placement scroll nothing. The landing's reveal policy
3
+ * is the one scroll it makes, through the scroll owner; a focus without `preventScroll` is a
4
+ * second writer nobody owns.
5
+ */
6
+ import type { InvariantViolation } from '../assert';
7
+ export declare function checkLandingFocusScrollsNothing(before: number | null, after: number | null): InvariantViolation | null;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * G1.45: a caret landing's focus call and DOM placement scroll nothing. The landing's reveal policy
3
+ * is the one scroll it makes, through the scroll owner; a focus without `preventScroll` is a
4
+ * second writer nobody owns.
5
+ */
6
+ export function checkLandingFocusScrollsNothing(before, after) {
7
+ if (before === null || after === null || before === after)
8
+ return null;
9
+ return {
10
+ code: 'landing-focus-scrolls-nothing',
11
+ message: `a caret landing's focus moved the scroll position (${before} to ${after}): pass \`preventScroll\` and let the reveal policy scroll`
12
+ };
13
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * G1.43: reading a commit's landing moves no caret. The landing is a value the commit puts down
3
+ * itself, so a landing function that focuses or selects is placing a second caret behind its back.
4
+ */
5
+ import type { InvariantViolation } from '../assert';
6
+ /** Where focus and the selection's anchor are, compared by identity. */
7
+ export interface CaretWhereabouts {
8
+ readonly active: Element | null;
9
+ readonly anchorNode: Node | null;
10
+ readonly anchorOffset: number;
11
+ }
12
+ export declare function readCaretWhereabouts(): CaretWhereabouts | null;
13
+ export declare function checkLandingIsAValue(before: CaretWhereabouts | null, after: CaretWhereabouts | null): InvariantViolation | null;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * G1.43: reading a commit's landing moves no caret. The landing is a value the commit puts down
3
+ * itself, so a landing function that focuses or selects is placing a second caret behind its back.
4
+ */
5
+ export function readCaretWhereabouts() {
6
+ if (typeof document === 'undefined')
7
+ return null;
8
+ const selection = document.getSelection();
9
+ return {
10
+ active: document.activeElement,
11
+ anchorNode: selection?.anchorNode ?? null,
12
+ anchorOffset: selection?.anchorOffset ?? 0
13
+ };
14
+ }
15
+ export function checkLandingIsAValue(before, after) {
16
+ if (!before || !after)
17
+ return null;
18
+ const moved = before.active !== after.active ||
19
+ before.anchorNode !== after.anchorNode ||
20
+ before.anchorOffset !== after.anchorOffset;
21
+ if (!moved)
22
+ return null;
23
+ return {
24
+ code: 'landing-is-a-value',
25
+ message: "a commit's landing function moved focus or the selection: return the position and let the commit put the caret there"
26
+ };
27
+ }
@@ -1,10 +1,9 @@
1
1
  /**
2
- * CSS↔TS parity for the hidden-run predicate: `cursor/widget-offset.ts` mirrors the
3
- * stylesheet's class scoping structurally, because a getComputedStyle per keystroke is
4
- * unaffordable — so the two can drift. This probe pays for the comparison once per mode
5
- * change, per marker family, over three answers: the stylesheet's, the walk's, and the
6
- * node-space model both are stated over. It declines wherever no stylesheet demonstrably hides
7
- * anything (jsdom, source mode); the presentation e2e battery is the real assertion there.
2
+ * Checks that the stylesheet and `cursor/widget-offset.ts` agree on which marker runs are hidden:
3
+ * the TypeScript side mirrors the stylesheet by hand, since `getComputedStyle` per keystroke is
4
+ * too slow. Once per mode change it compares, per marker family, the stylesheet, the DOM-to-offset
5
+ * traversal and the node-space rule both are stated over. Where no stylesheet hides anything
6
+ * (jsdom, source mode) it does nothing, and the presentation e2e battery asserts instead.
8
7
  */
9
8
  import type { InvariantViolation } from '../assert';
10
9
  export declare function checkMarkerCssParity(editorRoot: HTMLElement): InvariantViolation | null;