@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
@@ -1,44 +1,16 @@
1
1
  /**
2
2
  * Edge affinity: which of the two raw offsets a caret means when it sits beside a hidden
3
- * marker run, whose interior paints nothing so both offsets land on one pixel. CAPTURE: the
4
- * arrival that put the caret there, via `note` on the shared keydown door. CONSUME: the
5
- * typing seat, which reads `get()` and keeps its own default when it answers null.
3
+ * marker run, whose interior paints nothing so both offsets land on one pixel. The caret memory
4
+ * (`cursor/caret-memory.ts`) holds the answer; this module decides it from the key.
6
5
  */
7
6
  /**
8
- * Which raw offset a hidden run's one pixel names. Two answers are positional — the run's
9
- * `near` (earlier) or `far` (later) walk-order side — and one is construct-relative:
10
- * `outside` means past the construct's delimiters whichever side that lands on, so it reads
11
- * as the run's start at an opener and its end at a closer.
7
+ * Which raw offset a hidden run's one pixel names. Two answers are positional, the run's `near`
8
+ * (earlier) or `far` (later) side in walk order, and one is relative to the construct: `outside`
9
+ * means past the construct's delimiters whichever side that is, so it reads as the run's start
10
+ * at an opener and its end at a closer.
12
11
  */
13
12
  export type EdgeAffinity = 'near' | 'far' | 'outside';
14
- export interface EdgeAffinityState {
15
- get(): EdgeAffinity | null;
16
- /**
17
- * The only door a keydown handler may use; `reset()` stays public for the lifecycle,
18
- * commit, undo and pointer callers, whose unconditional clear has no key to classify.
19
- */
20
- note(e: Pick<KeyboardEvent, 'key' | 'altKey'> & Partial<Pick<KeyboardEvent, 'metaKey'>>): void;
21
- /** A committed keystroke belongs to the content whatever arrival preceded it. */
22
- noteTyping(): void;
23
- /**
24
- * A caret seated at an EXTREME rather than stepped there — a range collapsing onto its own
25
- * edge. The key that triggered it is directional, but the caret took no step, so the side it
26
- * means is construct-relative, the same answer a line extreme gives.
27
- */
28
- noteExtreme(): void;
29
- reset(): void;
30
- }
31
- export interface EdgeAffinityDeps {
32
- /**
33
- * Ephemeral caret state with this same lifetime rides the invalidation (pending marks,
34
- * `cursor/pending-marks.ts`). Composed rather than copied at each seam: every seat below
35
- * already reaches exactly one of these three doors.
36
- */
37
- onInvalidate?: () => void;
38
- }
39
- export declare function createEdgeAffinityState(deps?: EdgeAffinityDeps): EdgeAffinityState;
40
13
  /** What a keydown does to the affinity. */
41
14
  export type EdgeAffinityAction = EdgeAffinity | 'preserve' | 'reset';
42
- /** The decision {@link EdgeAffinityState.note} enacts. Pure on the key, so the matrix is
43
- * testable without a DOM or a state instance. */
15
+ /** Pure on the key, so the matrix is testable without a DOM or a memory instance. */
44
16
  export declare function classifyArrivalKey(key: string, metaKey?: boolean): EdgeAffinityAction;
@@ -1,61 +1,30 @@
1
1
  /**
2
2
  * Edge affinity: which of the two raw offsets a caret means when it sits beside a hidden
3
- * marker run, whose interior paints nothing so both offsets land on one pixel. CAPTURE: the
4
- * arrival that put the caret there, via `note` on the shared keydown door. CONSUME: the
5
- * typing seat, which reads `get()` and keeps its own default when it answers null.
3
+ * marker run, whose interior paints nothing so both offsets land on one pixel. The caret memory
4
+ * (`cursor/caret-memory.ts`) holds the answer; this module decides it from the key.
6
5
  */
7
6
  import { BARE_MODIFIER_KEYS, isCharacterKey } from '../schema/keybindings';
8
- export function createEdgeAffinityState(deps = {}) {
9
- let affinity = null;
10
- /** Sets the side AND settles everything riding on it — the two are one act, so no caller
11
- * can do the first without the second. */
12
- function settle(next) {
13
- affinity = next;
14
- deps.onInvalidate?.();
15
- }
16
- return {
17
- get: () => affinity,
18
- noteTyping: () => settle('near'),
19
- noteExtreme: () => settle('outside'),
20
- reset: () => settle(null),
21
- note: (e) => {
22
- // Alt+Arrow is the block-reorder chord, not caret nav.
23
- if (e.altKey && (e.key === 'ArrowUp' || e.key === 'ArrowDown'))
24
- return;
25
- const action = classifyArrivalKey(e.key, e.metaKey);
26
- // A preserved key left the caret where it was — the chord that pends a mark and the
27
- // byte that spends it are both preserved, so neither may invalidate.
28
- if (action === 'preserve')
29
- return;
30
- settle(action === 'reset' ? null : action);
31
- }
32
- };
33
- }
34
- /** The decision {@link EdgeAffinityState.note} enacts. Pure on the key, so the matrix is
35
- * testable without a DOM or a state instance. */
7
+ /** Pure on the key, so the matrix is testable without a DOM or a memory instance. */
36
8
  export function classifyArrivalKey(key, metaKey = false) {
37
- // macOS Cmd+Arrow is the line extreme — a seat, not a step, so it takes Home/End's
38
- // construct-relative answer. Windows/Linux never deliver meta+arrow to the page.
9
+ // macOS Cmd+Arrow jumps to the line's end, a placement rather than a step, so it takes
10
+ // Home/End's answer. Windows and Linux never deliver meta+arrow to the page.
39
11
  if (metaKey && (key === 'ArrowLeft' || key === 'ArrowRight'))
40
12
  return 'outside';
41
- // A step stops on the side of the run it approached from, so one press never changes which
42
- // construct the caret is in (live-mode.md § 4.2); leaving a construct is a typed closer's job
43
- // (delimiter-autopair.ts) or a toggle's, not the arrow's.
13
+ // A step stops on the side of the run it came from, so one keypress never changes which construct
14
+ // the caret is in (`docs/design/live-mode.md` § 4.2 Typing at a hidden edge).
44
15
  if (key === 'ArrowRight' || key === 'ArrowDown' || key === 'PageDown')
45
16
  return 'near';
46
17
  if (key === 'ArrowLeft' || key === 'ArrowUp' || key === 'PageUp')
47
18
  return 'far';
48
- // A line extreme is construct-relative, not directional: `Home` before a line-leading
49
- // construct means before its opener, which is the run's EARLIER side — the opposite
50
- // walk-order answer from `End` after a line-trailing one.
19
+ // Home and End are relative to the construct: `Home` before a construct starting the line means
20
+ // before its opener, the run's earlier side, the opposite of `End` after one ending the line.
51
21
  if (key === 'Home' || key === 'End')
52
22
  return 'outside';
53
- // Bare modifiers are read from the chord parser rather than re-listed — a local copy
54
- // missing AltGraph is how a modifier tap mid-arrow-run drops the side. A printable key
55
- // preserves because its write seat reads the side later in this same keydown.
23
+ // Bare modifiers come from the key-combination parser, which knows AltGraph. A printable key
24
+ // preserves because the typing path reads the side later in this same keydown.
56
25
  if (BARE_MODIFIER_KEYS.includes(key) || isCharacterKey(key))
57
26
  return 'preserve';
58
- // Anything left lands by a mutation or a command, not by an arrival; the commit seams
59
- // re-arm through `noteTyping`.
27
+ // Anything left moves the caret by a mutation or a command, not by a key; the commit path
28
+ // sets the side again through `noteTyping`.
60
29
  return 'reset';
61
30
  }
@@ -1,10 +1,8 @@
1
1
  /**
2
- * Carry a focused caret across an imperative DOM rebuild. A decoration-driven rebuild
3
- * mints fresh spans with no edit-path pending offset, so the render path captures the
4
- * caret in walk space before the rebuild and restores it after — through the single-home
5
- * offset walk (`widget-offset.ts`), shared by the prose and table-cell render paths.
2
+ * Keep a focused caret across an imperative DOM rebuild: a decoration-driven rebuild creates
3
+ * fresh spans with no pending offset from an edit, so the render path reads the caret as a raw
4
+ * offset before the rebuild and writes it back after (`placeCaretAtRaw`, exact).
6
5
  */
7
- import type { DomTextOffset } from './coordinate-spaces';
8
- /** The live caret as a walk-space offset, or null when `el` does not own focus. */
9
- export declare function captureFocusedCaretWalkOffset(el: HTMLElement): DomTextOffset | null;
10
- export declare function restoreCaretAtWalkOffset(el: HTMLElement, walkOffset: DomTextOffset): void;
6
+ import type { RawOffset } from './coordinate-spaces';
7
+ /** The live caret as a raw offset, or null when `el` does not own focus. */
8
+ export declare function captureFocusedCaret(el: HTMLElement): RawOffset | null;
@@ -1,24 +1,15 @@
1
1
  /**
2
- * Carry a focused caret across an imperative DOM rebuild. A decoration-driven rebuild
3
- * mints fresh spans with no edit-path pending offset, so the render path captures the
4
- * caret in walk space before the rebuild and restores it after — through the single-home
5
- * offset walk (`widget-offset.ts`), shared by the prose and table-cell render paths.
2
+ * Keep a focused caret across an imperative DOM rebuild: a decoration-driven rebuild creates
3
+ * fresh spans with no pending offset from an edit, so the render path reads the caret as a raw
4
+ * offset before the rebuild and writes it back after (`placeCaretAtRaw`, exact).
6
5
  */
7
- import { createRangeAtDomTextOffsets, domTextOffsetAtNode } from './widget-offset';
8
- /** The live caret as a walk-space offset, or null when `el` does not own focus. */
9
- export function captureFocusedCaretWalkOffset(el) {
6
+ import { rawOffsetAt } from './widget-offset';
7
+ /** The live caret as a raw offset, or null when `el` does not own focus. */
8
+ export function captureFocusedCaret(el) {
10
9
  if (!document.activeElement || !el.contains(document.activeElement))
11
10
  return null;
12
11
  const sel = window.getSelection();
13
12
  if (!sel?.focusNode || !el.contains(sel.focusNode))
14
13
  return null;
15
- return domTextOffsetAtNode(el, sel.focusNode, sel.focusOffset);
16
- }
17
- export function restoreCaretAtWalkOffset(el, walkOffset) {
18
- const range = createRangeAtDomTextOffsets(el, walkOffset, walkOffset);
19
- if (!range)
20
- return;
21
- const sel = window.getSelection();
22
- sel?.removeAllRanges();
23
- sel?.addRange(range);
14
+ return rawOffsetAt(el, sel.focusNode, sel.focusOffset);
24
15
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Cumulative block-height model for one BlockList: a Fenwick tree giving O(log n)
3
- * prefix-sum, offset→index lookup, and per-index update. Virtual rendering maps scrollTop
4
- * to a window range through it without laying off-screen blocks out.
2
+ * The table of block heights for one BlockList: a Fenwick tree giving O(log n) prefix sums,
3
+ * offset-to-index lookup, and per-index update. Virtual rendering maps scrollTop to a mounted
4
+ * range through it without laying out off-screen blocks.
5
5
  */
6
6
  export declare class HeightModel {
7
7
  private tree;
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Cumulative block-height model for one BlockList: a Fenwick tree giving O(log n)
3
- * prefix-sum, offset→index lookup, and per-index update. Virtual rendering maps scrollTop
4
- * to a window range through it without laying off-screen blocks out.
2
+ * The table of block heights for one BlockList: a Fenwick tree giving O(log n) prefix sums,
3
+ * offset-to-index lookup, and per-index update. Virtual rendering maps scrollTop to a mounted
4
+ * range through it without laying out off-screen blocks.
5
5
  */
6
6
  export class HeightModel {
7
7
  tree; // 1-indexed Fenwick sums
@@ -23,7 +23,7 @@ export class HeightModel {
23
23
  }
24
24
  /** Pixel offset of the top of index `i` (sum of heights[0..i)); `offsetOf(count)` == total. */
25
25
  offsetOf(i) {
26
- // prefix(i) past `count` reads off the Fenwick array → NaN into every spacer.
26
+ // prefix(i) past `count` reads off the end of the Fenwick array and puts NaN into every spacer.
27
27
  return this.prefix(Math.max(0, Math.min(i, this.count)));
28
28
  }
29
29
  /** Current height stored for index `i`. */
@@ -32,7 +32,7 @@ export class HeightModel {
32
32
  }
33
33
  /** Set index `i` to `height` in O(log n). No-op when unchanged or out of range. */
34
34
  setHeight(i, height) {
35
- // Out of range corrupts the model: i >= count poisons heights[] with no tree update,
35
+ // Out of range corrupts the table: i >= count poisons heights[] with no tree update,
36
36
  // and i < 0 makes bump's `p += p & -p` stall at p=0 forever.
37
37
  if (i < 0 || i >= this.count)
38
38
  return;
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Per-kind block-height estimator plus a measured-height cache for virtual rendering.
3
- * `estimate` is O(1) from `node.raw` length even for containers (their raw is
4
- * materialized, so no subtree walk). Measured heights supersede estimates and are keyed by
2
+ * Per-block height estimates plus a measured-height cache for virtual rendering. Each kind's
3
+ * descriptor makes the estimate (`schema/height-estimates.ts`), O(1) from `node.raw` even for
4
+ * containers, whose raw is materialized. Measured heights supersede estimates and are keyed by
5
5
  * stable block id, so structural index shifts and undo don't invalidate them.
6
6
  */
7
7
  import type { NodeView } from '../core/node-views';
@@ -16,8 +16,12 @@ export interface HeightOracle {
16
16
  estimate(node: NodeView, width: number): number;
17
17
  measured(id: string): number | undefined;
18
18
  recordMeasured(id: string, height: number): void;
19
- /** Drop every measured height. A live scope carries its own across a rebuild (VR-15), so
20
- * estimates seed only a scope built after the drop, and any block with a fresh id. */
19
+ }
20
+ /** The editor's own estimator, which can also drop and list what it has measured. */
21
+ export interface MeasuredHeightOracle extends HeightOracle {
22
+ /** Drop every measured height; only layout state calls it (G4.98). A mounted list keeps its
23
+ * table's heights across a structural rebuild, so only a later list or a fresh id starts from estimates. */
21
24
  dropMeasured(): void;
25
+ measuredIds(): string[];
22
26
  }
23
- export declare function createHeightOracle(opts: HeightOracleOptions): HeightOracle;
27
+ export declare function createHeightOracle(opts: HeightOracleOptions): MeasuredHeightOracle;
@@ -1,86 +1,37 @@
1
1
  import { isCollapsedByDescriptor } from '../schema/reserved-chrome';
2
2
  import { tryGetBlockKindDescriptor } from '../schema/block-kind-descriptor';
3
- // Any image form, capturing the alt segment for its `|WxH` size hint. The char-based prose
4
- // estimate badly undercounts a rendered image, so an image-bearing block sizes off this.
5
- const IMAGE_ALT = /!\[([^\]]*)\]/g;
6
- // Size hint inside the alt, e.g. `Square|200x200` or `photo|400` (width only).
7
- const SIZE_HINT = /\|(\d+)(?:x(\d+))?/;
8
- const NEWLINE = 10;
3
+ import { containerEstimate, proseEstimate } from '../schema/height-estimates';
9
4
  export function createHeightOracle(opts) {
10
5
  const measuredById = new Map();
11
- function wrappedLines(visibleLen, width) {
12
- const perLine = Math.max(1, Math.floor(width / opts.avgCharWidth));
13
- return Math.max(1, Math.ceil(visibleLen / perLine));
14
- }
15
- function sourceLines(raw) {
16
- let n = 1;
17
- // Code units, not `raw[i]`: the indexed read mints a one-character string per byte.
18
- for (let i = 0; i < raw.length; i++)
19
- if (raw.charCodeAt(i) === NEWLINE)
20
- n++;
21
- if (raw.endsWith('\n'))
22
- n--; // trailing newline shouldn't add a phantom line
23
- return Math.max(1, n);
24
- }
25
- // Each image contributes its `|WxH` hint height, else the min-height floor — an unsized
26
- // image isn't knowable until decode, which the ResizeObserver corrects post-mount.
27
- function imageHeights(raw) {
28
- let total = 0;
29
- IMAGE_ALT.lastIndex = 0;
30
- let m;
31
- while ((m = IMAGE_ALT.exec(raw)) !== null) {
32
- const hint = SIZE_HINT.exec(m[1]);
33
- total += hint && hint[2] ? Number(hint[2]) : opts.imageBlockMinHeight;
6
+ // One object for every call, since the height table estimates each block of the document: the
7
+ // metrics read through to `opts`, whose getters follow the editor's type scale.
8
+ const env = {
9
+ width: 0,
10
+ get lineHeight() {
11
+ return opts.lineHeight;
12
+ },
13
+ get codeLineHeight() {
14
+ return opts.codeLineHeight;
15
+ },
16
+ get avgCharWidth() {
17
+ return opts.avgCharWidth;
18
+ },
19
+ get blockChrome() {
20
+ return opts.blockChrome;
21
+ },
22
+ get imageBlockMinHeight() {
23
+ return opts.imageBlockMinHeight;
34
24
  }
35
- return total;
36
- }
25
+ };
37
26
  function estimate(node, width) {
38
- // One registry lookup, read twice: the model seeds this once per block of the document.
39
27
  const descriptor = tryGetBlockKindDescriptor(node.kind);
40
28
  // A collapsed container's body lives in `raw` but never renders, so estimating from
41
- // full `raw` over-counts it several-fold; only the chrome row paints.
29
+ // full `raw` over-counts it several-fold; only the title row paints.
42
30
  if (isCollapsedByDescriptor(descriptor, node))
43
31
  return opts.lineHeight + opts.blockChrome;
44
- // A descriptor's own O(1) estimate supersedes the built-in arms (a rendered artifact
45
- // is far taller than its source text); the oracle still adds chrome.
46
- const custom = descriptor?.estimateHeight;
47
- if (custom)
48
- return custom(node, { width }) + opts.blockChrome;
49
- const kind = node.kind;
50
- const raw = node.raw;
51
- switch (kind) {
52
- case 'thematicBreak':
53
- return opts.lineHeight + opts.blockChrome;
54
- case 'fencedCode':
55
- case 'indentedCode':
56
- case 'htmlBlock':
57
- return sourceLines(raw) * opts.codeLineHeight + opts.blockChrome;
58
- case 'table':
59
- case 'tableRow':
60
- // Source lines model a normal table; a wide one wraps its cells far beyond its
61
- // row count, which the blob-wrap of the whole raw catches.
62
- return (Math.max(sourceLines(raw), wrappedLines(raw.length, width)) * opts.lineHeight +
63
- opts.blockChrome);
64
- case 'blockquote':
65
- case 'list':
66
- case 'listItem': {
67
- // Max of two terms, each alone wrong: the blob term ignores newlines and
68
- // per-child chrome, the child-count term ignores wrap. Still O(1), no walk.
69
- const childCount = Math.max(1, node.children?.length ?? 1);
70
- const byChildren = childCount * (opts.lineHeight + opts.blockChrome);
71
- const byText = wrappedLines(raw.length, width) * opts.lineHeight + opts.blockChrome;
72
- return Math.max(byChildren, byText);
73
- }
74
- default: {
75
- const prose = wrappedLines(raw.length, width) * opts.lineHeight + opts.blockChrome;
76
- // Substring test first: the alt-capturing scan otherwise runs over every prose
77
- // block in the document, and all but a handful carry no image at all.
78
- if (!raw.includes('!['))
79
- return prose;
80
- const images = imageHeights(raw);
81
- return images > 0 ? Math.max(prose, images) : prose;
82
- }
83
- }
32
+ const content = descriptor?.estimateHeight ?? (descriptor?.isContainer ? containerEstimate : proseEstimate);
33
+ env.width = width;
34
+ return content(node, env) + opts.blockChrome;
84
35
  }
85
36
  return {
86
37
  estimate,
@@ -88,6 +39,7 @@ export function createHeightOracle(opts) {
88
39
  recordMeasured: (id, height) => {
89
40
  measuredById.set(id, height);
90
41
  },
91
- dropMeasured: () => measuredById.clear()
42
+ dropMeasured: () => measuredById.clear(),
43
+ measuredIds: () => [...measuredById.keys()]
92
44
  };
93
45
  }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Watches one element's size for a component that can mount while the browser delivers resize
3
+ * notifications. An element first observed during that delivery is skipped at its depth and
4
+ * reported as a ResizeObserver loop error, so observation starts at the next frame; the first
5
+ * notification then still carries the element's size as of that frame. Returns the disposer.
6
+ */
7
+ export declare function observeResize(el: Element, onResize: ResizeObserverCallback): () => void;
8
+ export interface SharedResizeWatch {
9
+ /** Watches `el` from the next frame on; returns the disposer. */
10
+ watch(el: Element, onResize: (entry: ResizeObserverEntry) => void): () => void;
11
+ }
12
+ /** One observer for many elements, each watched from the next frame, made after the width watcher. */
13
+ export declare function createSharedResizeWatch(): SharedResizeWatch;
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Watches one element's size for a component that can mount while the browser delivers resize
3
+ * notifications. An element first observed during that delivery is skipped at its depth and
4
+ * reported as a ResizeObserver loop error, so observation starts at the next frame; the first
5
+ * notification then still carries the element's size as of that frame. Returns the disposer.
6
+ */
7
+ export function observeResize(el, onResize) {
8
+ // jsdom has no ResizeObserver; callers keep their other measuring paths there.
9
+ if (typeof ResizeObserver !== 'function')
10
+ return () => { };
11
+ const observer = new ResizeObserver(onResize);
12
+ const frame = requestAnimationFrame(() => observer.observe(el));
13
+ return () => {
14
+ cancelAnimationFrame(frame);
15
+ observer.disconnect();
16
+ };
17
+ }
18
+ /** One observer for many elements, each watched from the next frame, made after the width watcher. */
19
+ export function createSharedResizeWatch() {
20
+ const listeners = new Map();
21
+ let observer = null;
22
+ const deliver = (entries) => {
23
+ for (const entry of entries)
24
+ listeners.get(entry.target)?.(entry);
25
+ };
26
+ return {
27
+ watch(el, onResize) {
28
+ if (typeof ResizeObserver !== 'function')
29
+ return () => { };
30
+ listeners.set(el, onResize);
31
+ const frame = requestAnimationFrame(() => {
32
+ observer ??= new ResizeObserver(deliver);
33
+ observer.observe(el);
34
+ });
35
+ return () => {
36
+ cancelAnimationFrame(frame);
37
+ observer?.unobserve(el);
38
+ if (listeners.get(el) === onResize)
39
+ listeners.delete(el);
40
+ };
41
+ }
42
+ };
43
+ }
@@ -1,8 +1,5 @@
1
1
  /** The client rects a block contributes when it is an endpoint of a cross-block selection. */
2
2
  import type { DomTextOffset } from './coordinate-spaces';
3
- /**
4
- * Client rects covering the walk-space range [startOffset, endOffset) within `el` (see
5
- * `cursor/widget-offset.ts`). The `getClientRects` guard keeps jsdom unit tests from
6
- * crashing; real pixel geometry is covered by e2e.
7
- */
3
+ /** Client rects covering the DOM-walk range [startOffset, endOffset) within `el`. The
4
+ * `getClientRects` check keeps jsdom unit tests from crashing. */
8
5
  export declare function measurePartialRectsInContentEditable(el: HTMLElement, startOffset: DomTextOffset, endOffset: DomTextOffset): DOMRect[];
@@ -1,10 +1,7 @@
1
1
  /** The client rects a block contributes when it is an endpoint of a cross-block selection. */
2
2
  import { createRangeAtDomTextOffsets, widgetsIntersectingRange } from './widget-offset';
3
- /**
4
- * Client rects covering the walk-space range [startOffset, endOffset) within `el` (see
5
- * `cursor/widget-offset.ts`). The `getClientRects` guard keeps jsdom unit tests from
6
- * crashing; real pixel geometry is covered by e2e.
7
- */
3
+ /** Client rects covering the DOM-walk range [startOffset, endOffset) within `el`. The
4
+ * `getClientRects` check keeps jsdom unit tests from crashing. */
8
5
  export function measurePartialRectsInContentEditable(el, startOffset, endOffset) {
9
6
  if (startOffset === endOffset)
10
7
  return [];
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Shared scroll-listener wiring for DecorationOverlay and SelectionOverlay: measure on
3
- * mount, on scroll, and on the table's row-window `$derived` moving. That third trigger is
4
- * load-bearing for windowed tables — a raw 'scroll' fires BEFORE the windowed `{#each}`
5
- * mounts the new rows, so only the dep-based re-run measures post-commit.
2
+ * Shared scroll-listener wiring for DecorationOverlay and SelectionOverlay: measure on mount, on
3
+ * scroll, and when the table's row-window `$derived` moves. Windowed tables need that third
4
+ * trigger: a raw 'scroll' fires before the windowed `{#each}` mounts the new rows, so only the
5
+ * dependency-driven re-run measures after the commit.
6
6
  */
7
7
  import type { BlockComponent } from '../block-component';
8
8
  export declare function wireOverlayRemeasure(opts: {
@@ -10,8 +10,7 @@ export declare function wireOverlayRemeasure(opts: {
10
10
  editorRoot: HTMLElement | null;
11
11
  blockRef: BlockComponent | undefined;
12
12
  measure: () => void;
13
- /** Run the SETUP measure untracked, for a caller whose `measure` reads the document: tracking
14
- * it would tear down and re-wire these listeners on every keystroke. Scoped to that one call,
15
- * never the whole wiring — the row-window read below must stay tracked either way. */
13
+ /** Run the setup measure untracked, so a `measure` that reads the document doesn't re-wire these
14
+ * listeners on every keystroke. Only that call: the row-window read below must stay tracked. */
16
15
  untrackSetupMeasure?: boolean;
17
16
  }): () => void;
@@ -1,15 +1,16 @@
1
1
  /**
2
- * Shared scroll-listener wiring for DecorationOverlay and SelectionOverlay: measure on
3
- * mount, on scroll, and on the table's row-window `$derived` moving. That third trigger is
4
- * load-bearing for windowed tables — a raw 'scroll' fires BEFORE the windowed `{#each}`
5
- * mounts the new rows, so only the dep-based re-run measures post-commit.
2
+ * Shared scroll-listener wiring for DecorationOverlay and SelectionOverlay: measure on mount, on
3
+ * scroll, and when the table's row-window `$derived` moves. Windowed tables need that third
4
+ * trigger: a raw 'scroll' fires before the windowed `{#each}` mounts the new rows, so only the
5
+ * dependency-driven re-run measures after the commit.
6
6
  */
7
7
  import { untrack } from 'svelte';
8
8
  import { firstScrollableDescendant, nearestScrollContainer } from './scroll-ancestors';
9
+ import { observeResize } from './observe-resize';
9
10
  export function wireOverlayRemeasure(opts) {
10
11
  const { el, editorRoot, blockRef, measure } = opts;
11
- // Plain synchronous read so the enclosing $effect registers as a dep of the table's win
12
- // $derived. Must NOT be inside untrack().
12
+ // Plain synchronous read so the enclosing $effect depends on the table's row-window
13
+ // $derived; it must not be inside untrack().
13
14
  blockRef?.mountedRowWindow?.();
14
15
  if (opts.untrackSetupMeasure)
15
16
  untrack(measure);
@@ -27,13 +28,8 @@ export function wireOverlayRemeasure(opts) {
27
28
  editorRoot.addEventListener('scroll', measure, { passive: true });
28
29
  disposers.push(() => editorRoot.removeEventListener('scroll', measure));
29
30
  }
30
- // The block's own box changing under a live range — a paragraph set to a heading, a font
31
- // load, a resize — moves the text the rects were measured against. Layout-driven, so it
32
- // fires after the change has painted; absent (jsdom) the scroll paths above still hold.
33
- if (typeof ResizeObserver === 'function') {
34
- const observer = new ResizeObserver(() => measure());
35
- observer.observe(el);
36
- disposers.push(() => observer.disconnect());
37
- }
31
+ // The block's own box changing under a live range (a paragraph set to a heading, a font
32
+ // load) moves the text the rects were measured against.
33
+ disposers.push(observeResize(el, () => measure()));
38
34
  return () => disposers.forEach((dispose) => dispose());
39
35
  }
@@ -1,12 +1,12 @@
1
1
  /**
2
- * Pending marks: the inline constructs a collapsed-caret toggle promises the NEXT insertion,
3
- * relative to the caret's construct chain — a kind already in the chain is a removal, one absent
4
- * is an application. Live mode paints no delimiter, so materializing an empty pair in the bytes
5
- * would leave invisible `****` behind on an abandoned toggle. SET by the toggle command, CONSUMED
6
- * by the typing and composition seats, INVALIDATED by the edge affinity (live-mode.md § 4.3).
2
+ * Pending marks: the inline formats a toggle at a collapsed caret promises the next insertion,
3
+ * relative to the constructs around the caret (a kind already active is a removal, one absent is
4
+ * an application). Live mode paints no delimiter, so writing an empty pair into the bytes would
5
+ * leave an invisible `****` behind on an abandoned toggle. The toggle command sets them, the typing
6
+ * and composition paths consume them, and the caret memory drops them (live-mode.md § 4.3).
7
7
  */
8
8
  import type { InlineMarkKind } from '../schema/inline-construct-policy';
9
- export interface PendingMarksState {
9
+ export interface PendingMarks {
10
10
  /** Null when nothing is pending; never an empty set, so a read is the whole question. */
11
11
  get(): ReadonlySet<InlineMarkKind> | null;
12
12
  /** A toggle chord at a collapsed caret. The same chord twice pends nothing again. */
@@ -16,9 +16,7 @@ export interface PendingMarksState {
16
16
  /** Hand back a set taken for an insertion that never happened (an IME cancel). Declines once
17
17
  * anything else is pending: that is a newer instruction about the same caret. */
18
18
  restore(marks: ReadonlySet<InlineMarkKind>): void;
19
- reset(): void;
20
19
  }
21
- export declare function createPendingMarksState(): PendingMarksState;
22
- /** The set a chord press produces, or null once it empties. Pure, so the toggle matrix is
20
+ /** The set one toggle chord produces, or null once it empties. Pure, so the toggle matrix is
23
21
  * testable without an instance. */
24
22
  export declare function flipMark(marks: ReadonlySet<InlineMarkKind> | null, kind: InlineMarkKind): ReadonlySet<InlineMarkKind> | null;
@@ -1,32 +1,11 @@
1
1
  /**
2
- * Pending marks: the inline constructs a collapsed-caret toggle promises the NEXT insertion,
3
- * relative to the caret's construct chain — a kind already in the chain is a removal, one absent
4
- * is an application. Live mode paints no delimiter, so materializing an empty pair in the bytes
5
- * would leave invisible `****` behind on an abandoned toggle. SET by the toggle command, CONSUMED
6
- * by the typing and composition seats, INVALIDATED by the edge affinity (live-mode.md § 4.3).
2
+ * Pending marks: the inline formats a toggle at a collapsed caret promises the next insertion,
3
+ * relative to the constructs around the caret (a kind already active is a removal, one absent is
4
+ * an application). Live mode paints no delimiter, so writing an empty pair into the bytes would
5
+ * leave an invisible `****` behind on an abandoned toggle. The toggle command sets them, the typing
6
+ * and composition paths consume them, and the caret memory drops them (live-mode.md § 4.3).
7
7
  */
8
- export function createPendingMarksState() {
9
- let marks = null;
10
- return {
11
- get: () => marks,
12
- toggle: (kind) => {
13
- marks = flipMark(marks, kind);
14
- },
15
- consume: () => {
16
- const spent = marks;
17
- marks = null;
18
- return spent;
19
- },
20
- restore: (unspent) => {
21
- if (marks === null)
22
- marks = unspent;
23
- },
24
- reset: () => {
25
- marks = null;
26
- }
27
- };
28
- }
29
- /** The set a chord press produces, or null once it empties. Pure, so the toggle matrix is
8
+ /** The set one toggle chord produces, or null once it empties. Pure, so the toggle matrix is
30
9
  * testable without an instance. */
31
10
  export function flipMark(marks, kind) {
32
11
  const next = new Set(marks ?? []);