@voithos-labs/aragonite 0.10.3 → 0.10.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1021) hide show
  1. package/README.md +2 -2
  2. package/dist/a11y-strings.d.ts +12 -5
  3. package/dist/a11y-strings.js +61 -5
  4. package/dist/action-contracts.d.ts +242 -155
  5. package/dist/action-contracts.js +2 -2
  6. package/dist/active-editor.d.ts +3 -3
  7. package/dist/active-editor.js +8 -9
  8. package/dist/ambient/ambient-dom.d.ts +2 -5
  9. package/dist/ambient/ambient-dom.js +16 -62
  10. package/dist/assert.js +6 -5
  11. package/dist/block-component.d.ts +135 -109
  12. package/dist/block-component.js +30 -22
  13. package/dist/block-id.d.ts +6 -10
  14. package/dist/block-id.js +25 -14
  15. package/dist/bounded-memo.d.ts +5 -5
  16. package/dist/bounded-memo.js +6 -6
  17. package/dist/components/BlockDragHandle.svelte +13 -20
  18. package/dist/components/BlockHost.svelte +56 -134
  19. package/dist/components/BlockList.svelte +22 -19
  20. package/dist/components/DecorationOverlay.svelte +9 -10
  21. package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
  22. package/dist/components/Editor.svelte +619 -1089
  23. package/dist/components/Editor.svelte.d.ts +9 -20
  24. package/dist/components/GapCaret.svelte +26 -59
  25. package/dist/components/SelectionOverlay.svelte +36 -67
  26. package/dist/components/SelectionOverlay.svelte.d.ts +6 -4
  27. package/dist/components/TailInsert.svelte +8 -55
  28. package/dist/components/TailInsert.svelte.d.ts +4 -6
  29. package/dist/components/block-content-selector.d.ts +11 -11
  30. package/dist/components/block-content-selector.js +11 -11
  31. package/dist/components/block-el-lookup.d.ts +6 -0
  32. package/dist/components/block-el-lookup.js +27 -0
  33. package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
  34. package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
  35. package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
  36. package/dist/components/blocks/code/CodeBlock.svelte +255 -276
  37. package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
  38. package/dist/components/blocks/code/CodeBlockRail.svelte +103 -100
  39. package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
  40. package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
  41. package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
  42. package/dist/components/blocks/code/code-bootstrap.js +35 -28
  43. package/dist/components/blocks/code/code-context-actions.js +5 -4
  44. package/dist/components/blocks/code/code-enter.js +2 -2
  45. package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
  46. package/dist/components/blocks/code/code-fence-boundary.js +40 -66
  47. package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
  48. package/dist/components/blocks/code/code-fence-exit.js +24 -25
  49. package/dist/components/blocks/code/code-indent.d.ts +2 -2
  50. package/dist/components/blocks/code/code-indent.js +4 -7
  51. package/dist/components/blocks/code/code-languages.d.ts +16 -12
  52. package/dist/components/blocks/code/code-languages.js +58 -32
  53. package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
  54. package/dist/components/blocks/code/code-paste-surface.js +9 -18
  55. package/dist/components/blocks/code/code-renderer.d.ts +21 -5
  56. package/dist/components/blocks/code/code-renderer.js +90 -125
  57. package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
  58. package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
  59. package/dist/components/blocks/directive/activate-directives.js +18 -13
  60. package/dist/components/blocks/editable-leaf.d.ts +50 -74
  61. package/dist/components/blocks/editable-leaf.js +144 -202
  62. package/dist/components/blocks/editable-surface.d.ts +96 -100
  63. package/dist/components/blocks/editable-surface.js +101 -109
  64. package/dist/components/blocks/list/ListBlock.svelte +46 -90
  65. package/dist/components/blocks/list/ListItemBlock.svelte +99 -144
  66. package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +3 -0
  67. package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
  68. package/dist/components/blocks/list/task-checkbox.js +12 -7
  69. package/dist/components/blocks/plain-text-backend.d.ts +4 -20
  70. package/dist/components/blocks/plain-text-backend.js +9 -43
  71. package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
  72. package/dist/components/blocks/surface-wiring.svelte.js +15 -34
  73. package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
  74. package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
  75. package/dist/components/blocks/table/TableBlock.svelte +100 -165
  76. package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
  77. package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
  78. package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
  79. package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
  80. package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
  81. package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
  82. package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
  83. package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
  84. package/dist/components/blocks/table/cell-pointer.js +49 -71
  85. package/dist/components/blocks/table/cell-render.d.ts +24 -29
  86. package/dist/components/blocks/table/cell-render.js +29 -31
  87. package/dist/components/blocks/table/selected-cells.d.ts +7 -7
  88. package/dist/components/blocks/table/selected-cells.js +9 -13
  89. package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
  90. package/dist/components/blocks/table/table-caret-at-point.js +5 -5
  91. package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
  92. package/dist/components/blocks/table/table-cell-paste.js +27 -43
  93. package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
  94. package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
  95. package/dist/components/blocks/table/table-menu-model.js +6 -10
  96. package/dist/components/blocks/table/table-navigation.js +2 -2
  97. package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
  98. package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
  99. package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
  100. package/dist/components/blocks/text/auto-pair-record.js +51 -0
  101. package/dist/components/blocks/text/click-snap-guard.d.ts +9 -4
  102. package/dist/components/blocks/text/click-snap-guard.js +16 -5
  103. package/dist/components/blocks/text/composition-seat.d.ts +17 -14
  104. package/dist/components/blocks/text/composition-seat.js +11 -11
  105. package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
  106. package/dist/components/blocks/text/construct-edge-delete.js +50 -65
  107. package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
  108. package/dist/components/blocks/text/construct-reveal.js +13 -14
  109. package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
  110. package/dist/components/blocks/text/delimiter-autopair.js +87 -103
  111. package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
  112. package/dist/components/blocks/text/edge-policy-dispatch.js +164 -180
  113. package/dist/components/blocks/text/edge-seat.d.ts +17 -26
  114. package/dist/components/blocks/text/edge-seat.js +43 -70
  115. package/dist/components/blocks/text/link-at-point.d.ts +9 -9
  116. package/dist/components/blocks/text/link-at-point.js +12 -15
  117. package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
  118. package/dist/components/blocks/text/live-join-seam.js +75 -112
  119. package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
  120. package/dist/components/blocks/text/live-selection-edit.js +32 -105
  121. package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
  122. package/dist/components/blocks/text/live-split-rebalance.js +50 -67
  123. package/dist/components/blocks/text/marker-completion.d.ts +7 -12
  124. package/dist/components/blocks/text/marker-completion.js +17 -10
  125. package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
  126. package/dist/components/blocks/text/pending-mark-insert.js +30 -49
  127. package/dist/components/blocks/text/screen-diff.d.ts +5 -15
  128. package/dist/components/blocks/text/screen-diff.js +5 -19
  129. package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
  130. package/dist/components/blocks/text/text-clipboard.js +27 -32
  131. package/dist/components/blocks/text/text-keydown.d.ts +20 -30
  132. package/dist/components/blocks/text/text-keydown.js +54 -51
  133. package/dist/components/blocks/text/text-render.d.ts +25 -35
  134. package/dist/components/blocks/text/text-render.js +82 -61
  135. package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
  136. package/dist/components/blocks/text/widget-adjacency.js +17 -17
  137. package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
  138. package/dist/components/blocks/text/widget-interaction.js +243 -208
  139. package/dist/components/blocks/widget-portal.d.ts +20 -29
  140. package/dist/components/blocks/widget-portal.js +16 -14
  141. package/dist/components/built-in-blocks.d.ts +3 -4
  142. package/dist/components/built-in-blocks.js +17 -18
  143. package/dist/components/drag-handle.d.ts +13 -30
  144. package/dist/components/drag-handle.js +25 -63
  145. package/dist/components/editor-built-ins.d.ts +1 -0
  146. package/dist/components/editor-built-ins.js +16 -0
  147. package/dist/components/editor-root-clipboard.d.ts +6 -6
  148. package/dist/components/editor-root-clipboard.js +16 -27
  149. package/dist/components/editor-root-document-swap.d.ts +49 -0
  150. package/dist/components/editor-root-document-swap.js +54 -0
  151. package/dist/components/editor-root-focus.d.ts +5 -4
  152. package/dist/components/editor-root-focus.js +51 -22
  153. package/dist/components/editor-root-focused-surface.d.ts +35 -0
  154. package/dist/components/editor-root-focused-surface.js +65 -0
  155. package/dist/components/editor-root-geometry.d.ts +15 -24
  156. package/dist/components/editor-root-geometry.js +27 -31
  157. package/dist/components/editor-root-gestures.d.ts +39 -0
  158. package/dist/components/editor-root-gestures.js +189 -0
  159. package/dist/components/editor-root-keydown.d.ts +10 -25
  160. package/dist/components/editor-root-keydown.js +19 -43
  161. package/dist/components/editor-root-listeners.d.ts +22 -31
  162. package/dist/components/editor-root-listeners.js +49 -46
  163. package/dist/components/editor-root-menus.d.ts +51 -0
  164. package/dist/components/editor-root-menus.js +147 -0
  165. package/dist/components/editor-root-mode-flip.d.ts +16 -11
  166. package/dist/components/editor-root-mode-flip.js +36 -34
  167. package/dist/components/editor-root-scroll-host.d.ts +22 -0
  168. package/dist/components/editor-root-scroll-host.js +34 -0
  169. package/dist/components/editor-root-test-surface.d.ts +48 -0
  170. package/dist/components/editor-root-test-surface.js +6 -0
  171. package/dist/components/image/ImageOverlayHost.svelte +44 -35
  172. package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
  173. package/dist/components/image/ImageProperties.svelte +37 -41
  174. package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
  175. package/dist/components/image/ImageResizeHandles.svelte +26 -30
  176. package/dist/components/image/image-crop.d.ts +5 -11
  177. package/dist/components/image/image-crop.js +5 -11
  178. package/dist/components/image/image-edit-commit.d.ts +19 -16
  179. package/dist/components/image/image-edit-commit.js +74 -38
  180. package/dist/components/image/image-resize.d.ts +2 -5
  181. package/dist/components/image/image-resize.js +3 -6
  182. package/dist/components/image/image-widget-editing.d.ts +3 -3
  183. package/dist/components/image/image-widget-editing.js +9 -9
  184. package/dist/components/image/widget-dom.d.ts +2 -3
  185. package/dist/components/image/widget-dom.js +19 -24
  186. package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
  187. package/dist/components/image/widget-selection-state.svelte.js +26 -19
  188. package/dist/components/kind-cue.svelte.d.ts +21 -0
  189. package/dist/components/kind-cue.svelte.js +35 -0
  190. package/dist/components/link-card/LinkCard.svelte +115 -64
  191. package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
  192. package/dist/components/link-card/LinkCardHost.svelte +42 -33
  193. package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
  194. package/dist/components/link-card/link-card-commit.d.ts +16 -19
  195. package/dist/components/link-card/link-card-commit.js +21 -30
  196. package/dist/components/link-card/link-card-entry.d.ts +13 -23
  197. package/dist/components/link-card/link-card-entry.js +16 -24
  198. package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
  199. package/dist/components/link-card/link-card-state.svelte.js +2 -2
  200. package/dist/components/lrd-map-gate.d.ts +4 -11
  201. package/dist/components/lrd-map-gate.js +5 -11
  202. package/dist/components/menu/BlockMenu.svelte +20 -81
  203. package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
  204. package/dist/components/menu/InlineMenuHost.svelte +191 -0
  205. package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
  206. package/dist/components/menu/MenuIcon.svelte +3 -103
  207. package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
  208. package/dist/components/menu/SelectionToolbar.svelte +380 -0
  209. package/dist/components/menu/SelectionToolbar.svelte.d.ts +14 -0
  210. package/dist/components/menu/clipboard-actions.d.ts +3 -4
  211. package/dist/components/menu/clipboard-actions.js +3 -4
  212. package/dist/components/menu/default-context-actions.d.ts +4 -13
  213. package/dist/components/menu/default-context-actions.js +49 -67
  214. package/dist/components/menu/flyout-placement.d.ts +2 -2
  215. package/dist/components/menu/flyout-placement.js +2 -2
  216. package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
  217. package/dist/components/menu/menu-presence.svelte.js +19 -0
  218. package/dist/components/paste-image-arm.d.ts +6 -11
  219. package/dist/components/paste-image-arm.js +11 -18
  220. package/dist/components/portal.d.ts +2 -5
  221. package/dist/components/portal.js +4 -7
  222. package/dist/core/directive/activate.d.ts +4 -5
  223. package/dist/core/directive/activate.js +8 -9
  224. package/dist/core/directive/container-opener.js +13 -12
  225. package/dist/core/directive/grammar.d.ts +2 -5
  226. package/dist/core/directive/grammar.js +10 -10
  227. package/dist/core/directive/kinds.d.ts +4 -7
  228. package/dist/core/directive/kinds.js +14 -16
  229. package/dist/core/directive/registry.d.ts +12 -9
  230. package/dist/core/directive/registry.js +19 -20
  231. package/dist/core/directive/text-recognizer.d.ts +3 -2
  232. package/dist/core/directive/text-recognizer.js +5 -9
  233. package/dist/core/escapable.d.ts +1 -5
  234. package/dist/core/escapable.js +1 -5
  235. package/dist/core/inline/backticks.d.ts +3 -4
  236. package/dist/core/inline/backticks.js +3 -4
  237. package/dist/core/inline/character-refs.js +2 -1
  238. package/dist/core/inline/destination-bytes.d.ts +6 -3
  239. package/dist/core/inline/destination-bytes.js +50 -8
  240. package/dist/core/inline/entity-widget.d.ts +4 -3
  241. package/dist/core/inline/entity-widget.js +6 -6
  242. package/dist/core/inline/format-toggle.d.ts +22 -28
  243. package/dist/core/inline/format-toggle.js +97 -129
  244. package/dist/core/inline/html-entities.d.ts +2 -3
  245. package/dist/core/inline/html-entities.js +2 -3
  246. package/dist/core/inline/html-tag-grammar.js +6 -2
  247. package/dist/core/inline/image-dimensions.d.ts +2 -0
  248. package/dist/core/inline/image-dimensions.js +19 -2
  249. package/dist/core/inline/image-source-bytes.d.ts +11 -0
  250. package/dist/core/inline/image-source-bytes.js +71 -0
  251. package/dist/core/inline/index.d.ts +28 -21
  252. package/dist/core/inline/index.js +56 -34
  253. package/dist/core/inline/inline-cache.d.ts +12 -15
  254. package/dist/core/inline/inline-cache.js +11 -14
  255. package/dist/core/inline/inline-widgets.d.ts +55 -68
  256. package/dist/core/inline/inline-widgets.js +55 -58
  257. package/dist/core/inline/link-destination.d.ts +31 -0
  258. package/dist/core/inline/link-destination.js +129 -0
  259. package/dist/core/inline/link-reference-resolver.d.ts +8 -6
  260. package/dist/core/inline/link-reference-resolver.js +10 -6
  261. package/dist/core/inline/link-source-bytes.d.ts +31 -0
  262. package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
  263. package/dist/core/inline/live-edit/read-back.d.ts +29 -0
  264. package/dist/core/inline/live-edit/read-back.js +50 -0
  265. package/dist/core/inline/picture.d.ts +10 -0
  266. package/dist/core/inline/picture.js +40 -0
  267. package/dist/core/inline/scan/autolinks.d.ts +7 -8
  268. package/dist/core/inline/scan/autolinks.js +80 -59
  269. package/dist/core/inline/scan/brackets.d.ts +2 -2
  270. package/dist/core/inline/scan/brackets.js +6 -103
  271. package/dist/core/inline/scan/code-spans.d.ts +4 -0
  272. package/dist/core/inline/scan/code-spans.js +8 -0
  273. package/dist/core/inline/scan/emphasis.js +10 -14
  274. package/dist/core/inline/scan/index.d.ts +3 -1
  275. package/dist/core/inline/scan/index.js +32 -33
  276. package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
  277. package/dist/core/inline/scan/plugin-syntax.js +75 -89
  278. package/dist/core/inline/scan/scan-state.d.ts +2 -0
  279. package/dist/core/inline/scan/scan-state.js +1 -0
  280. package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
  281. package/dist/core/inline/scan/simple-nodes.js +2 -5
  282. package/dist/core/inline/scan/triggers.d.ts +17 -0
  283. package/dist/core/inline/scan/triggers.js +26 -0
  284. package/dist/core/inline/scan/url.js +8 -10
  285. package/dist/core/inline/transparency.d.ts +2 -1
  286. package/dist/core/inline/transparency.js +33 -17
  287. package/dist/core/inline/visibility.d.ts +30 -49
  288. package/dist/core/inline/visibility.js +31 -49
  289. package/dist/core/inline/walk.d.ts +4 -10
  290. package/dist/core/inline/walk.js +4 -10
  291. package/dist/core/inline-render.d.ts +22 -27
  292. package/dist/core/inline-render.js +51 -60
  293. package/dist/core/lines.d.ts +67 -26
  294. package/dist/core/lines.js +164 -33
  295. package/dist/core/metadata-parity.d.ts +9 -0
  296. package/dist/core/metadata-parity.js +25 -0
  297. package/dist/core/node-views.d.ts +7 -6
  298. package/dist/core/node-views.js +5 -5
  299. package/dist/core/nodes.d.ts +34 -44
  300. package/dist/core/nodes.js +4 -12
  301. package/dist/core/parser.d.ts +27 -34
  302. package/dist/core/parser.js +53 -67
  303. package/dist/core/parsers/blockquote.d.ts +5 -8
  304. package/dist/core/parsers/blockquote.js +11 -10
  305. package/dist/core/parsers/built-in-openers.d.ts +2 -5
  306. package/dist/core/parsers/built-in-openers.js +5 -8
  307. package/dist/core/parsers/fence-syntax.d.ts +36 -7
  308. package/dist/core/parsers/fence-syntax.js +61 -11
  309. package/dist/core/parsers/fenced-code.d.ts +16 -0
  310. package/dist/core/parsers/fenced-code.js +16 -15
  311. package/dist/core/parsers/heading.d.ts +19 -2
  312. package/dist/core/parsers/heading.js +50 -2
  313. package/dist/core/parsers/html-block.d.ts +3 -6
  314. package/dist/core/parsers/html-block.js +10 -11
  315. package/dist/core/parsers/indented-code.d.ts +1 -1
  316. package/dist/core/parsers/indented-code.js +2 -8
  317. package/dist/core/parsers/link-reference.d.ts +5 -3
  318. package/dist/core/parsers/link-reference.js +116 -120
  319. package/dist/core/parsers/list.d.ts +12 -5
  320. package/dist/core/parsers/list.js +53 -36
  321. package/dist/core/parsers/paragraph.d.ts +3 -3
  322. package/dist/core/parsers/paragraph.js +14 -5
  323. package/dist/core/parsers/table-completion.d.ts +2 -5
  324. package/dist/core/parsers/table-completion.js +7 -10
  325. package/dist/core/parsers/table.d.ts +8 -8
  326. package/dist/core/parsers/table.js +23 -26
  327. package/dist/core/parsers/thematic-break.js +15 -14
  328. package/dist/core/paths.d.ts +13 -0
  329. package/dist/core/paths.js +31 -0
  330. package/dist/core/terminator-escalation.d.ts +0 -7
  331. package/dist/core/terminator-escalation.js +5 -8
  332. package/dist/core/url-policy.d.ts +2 -5
  333. package/dist/core/url-policy.js +8 -12
  334. package/dist/cursor/caret-memory.d.ts +34 -0
  335. package/dist/cursor/caret-memory.js +82 -0
  336. package/dist/cursor/coordinate-spaces.d.ts +26 -19
  337. package/dist/cursor/coordinate-spaces.js +32 -20
  338. package/dist/cursor/dom-walk.d.ts +7 -13
  339. package/dist/cursor/dom-walk.js +7 -13
  340. package/dist/cursor/edge-affinity.d.ts +7 -35
  341. package/dist/cursor/edge-affinity.js +13 -44
  342. package/dist/cursor/focused-caret.d.ts +6 -8
  343. package/dist/cursor/focused-caret.js +7 -16
  344. package/dist/cursor/height-model.d.ts +3 -3
  345. package/dist/cursor/height-model.js +5 -5
  346. package/dist/cursor/height-oracle.d.ts +10 -7
  347. package/dist/cursor/height-oracle.js +26 -75
  348. package/dist/cursor/observe-resize.d.ts +13 -0
  349. package/dist/cursor/observe-resize.js +43 -0
  350. package/dist/cursor/overlay-rects.d.ts +2 -5
  351. package/dist/cursor/overlay-rects.js +2 -5
  352. package/dist/cursor/overlay-remeasure.d.ts +6 -7
  353. package/dist/cursor/overlay-remeasure.js +10 -14
  354. package/dist/cursor/pending-marks.d.ts +7 -9
  355. package/dist/cursor/pending-marks.js +6 -27
  356. package/dist/cursor/point-offset.d.ts +16 -10
  357. package/dist/cursor/point-offset.js +60 -25
  358. package/dist/cursor/reveal-source.d.ts +7 -11
  359. package/dist/cursor/reveal-source.js +10 -18
  360. package/dist/cursor/scroll-ancestors.d.ts +9 -20
  361. package/dist/cursor/scroll-ancestors.js +14 -26
  362. package/dist/cursor/scroll-owner.d.ts +92 -0
  363. package/dist/cursor/scroll-owner.js +283 -0
  364. package/dist/cursor/scrollport.d.ts +16 -8
  365. package/dist/cursor/scrollport.js +28 -5
  366. package/dist/cursor/sticky-column.d.ts +6 -29
  367. package/dist/cursor/sticky-column.js +6 -49
  368. package/dist/cursor/sticky-measure.d.ts +14 -9
  369. package/dist/cursor/sticky-measure.js +99 -49
  370. package/dist/cursor/surface-backend.d.ts +41 -0
  371. package/dist/cursor/surface-backend.js +78 -0
  372. package/dist/cursor/typography-estimates.d.ts +3 -3
  373. package/dist/cursor/typography-estimates.js +3 -3
  374. package/dist/cursor/visual-lines.d.ts +25 -13
  375. package/dist/cursor/visual-lines.js +72 -28
  376. package/dist/cursor/widget-edge-snap.d.ts +23 -0
  377. package/dist/cursor/widget-edge-snap.js +39 -0
  378. package/dist/cursor/widget-offset.d.ts +111 -102
  379. package/dist/cursor/widget-offset.js +352 -177
  380. package/dist/debug/diagnostics-report.d.ts +6 -6
  381. package/dist/debug/diagnostics-report.js +5 -5
  382. package/dist/debug/dump-tree.js +2 -2
  383. package/dist/debug/editor-diagnostics.d.ts +15 -0
  384. package/dist/debug/editor-diagnostics.js +33 -0
  385. package/dist/debug/inspect.d.ts +2 -2
  386. package/dist/debug/inspect.js +4 -4
  387. package/dist/debug/interaction-trace.d.ts +14 -15
  388. package/dist/debug/interaction-trace.js +19 -20
  389. package/dist/debug/operations-log.d.ts +1 -1
  390. package/dist/debug/operations-log.js +1 -1
  391. package/dist/decorations/buckets.d.ts +6 -12
  392. package/dist/decorations/buckets.js +4 -11
  393. package/dist/decorations/decoration-state.svelte.d.ts +2 -3
  394. package/dist/decorations/decoration-state.svelte.js +24 -26
  395. package/dist/decorations/island-dom.d.ts +10 -18
  396. package/dist/decorations/island-dom.js +25 -50
  397. package/dist/decorations/reserved-attrs.d.ts +6 -8
  398. package/dist/decorations/reserved-attrs.js +31 -17
  399. package/dist/decorations/types.d.ts +6 -7
  400. package/dist/decorations/types.js +2 -1
  401. package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
  402. package/dist/decorations/use-block-decorations.svelte.js +71 -0
  403. package/dist/decorations/widget-dom.d.ts +3 -3
  404. package/dist/decorations/widget-dom.js +5 -5
  405. package/dist/dev-warn.d.ts +5 -2
  406. package/dist/dev-warn.js +16 -4
  407. package/dist/editor-actions/ancestry-folds.d.ts +9 -14
  408. package/dist/editor-actions/ancestry-folds.js +13 -18
  409. package/dist/editor-actions/block-edit-core.d.ts +49 -22
  410. package/dist/editor-actions/block-edit-core.js +279 -151
  411. package/dist/editor-actions/block-edit-scope.d.ts +63 -50
  412. package/dist/editor-actions/block-edit-scope.js +100 -48
  413. package/dist/editor-actions/block-edit.d.ts +2 -3
  414. package/dist/editor-actions/block-edit.js +14 -90
  415. package/dist/editor-actions/commit/history.d.ts +4 -4
  416. package/dist/editor-actions/commit/history.js +33 -34
  417. package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
  418. package/dist/editor-actions/commit/reading-write-gate.js +56 -0
  419. package/dist/editor-actions/commit/text-batch.d.ts +7 -11
  420. package/dist/editor-actions/commit/text-batch.js +6 -7
  421. package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
  422. package/dist/editor-actions/commit/undo-controller.js +346 -216
  423. package/dist/editor-actions/container-block-component.d.ts +32 -51
  424. package/dist/editor-actions/container-block-component.js +66 -92
  425. package/dist/editor-actions/container-edit.d.ts +4 -2
  426. package/dist/editor-actions/container-edit.js +14 -44
  427. package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
  428. package/dist/editor-actions/container-exit-overrides.js +19 -21
  429. package/dist/editor-actions/deps.d.ts +25 -32
  430. package/dist/editor-actions/enter-completion.d.ts +12 -15
  431. package/dist/editor-actions/enter-completion.js +49 -51
  432. package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
  433. package/dist/editor-actions/focus/focus-dispatch.js +33 -52
  434. package/dist/editor-actions/focus/focus-landing.d.ts +11 -5
  435. package/dist/editor-actions/focus/focus-landing.js +29 -14
  436. package/dist/editor-actions/focus/focus.d.ts +3 -2
  437. package/dist/editor-actions/focus/focus.js +42 -59
  438. package/dist/editor-actions/index.d.ts +4 -3
  439. package/dist/editor-actions/index.js +5 -4
  440. package/dist/editor-actions/inline-range-commit.d.ts +18 -16
  441. package/dist/editor-actions/inline-range-commit.js +45 -54
  442. package/dist/editor-actions/leaf-write.d.ts +11 -0
  443. package/dist/editor-actions/leaf-write.js +102 -0
  444. package/dist/editor-actions/list-context.d.ts +9 -10
  445. package/dist/editor-actions/list-context.js +115 -110
  446. package/dist/editor-actions/list-overrides.d.ts +13 -5
  447. package/dist/editor-actions/list-overrides.js +36 -12
  448. package/dist/editor-actions/merge-fallback.d.ts +10 -16
  449. package/dist/editor-actions/merge-fallback.js +11 -22
  450. package/dist/editor-actions/nested/container-actions.d.ts +37 -0
  451. package/dist/editor-actions/nested/container-actions.js +42 -0
  452. package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
  453. package/dist/editor-actions/nested/emptied-container.js +5 -0
  454. package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
  455. package/dist/editor-actions/nested/nested-actions.js +17 -15
  456. package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
  457. package/dist/editor-actions/nested/nested-block-edit.js +40 -134
  458. package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
  459. package/dist/editor-actions/nested/nested-focus.js +33 -21
  460. package/dist/editor-actions/paste-coordinator.d.ts +3 -2
  461. package/dist/editor-actions/paste-coordinator.js +17 -13
  462. package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
  463. package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
  464. package/dist/editor-actions/plugin/container.d.ts +55 -76
  465. package/dist/editor-actions/plugin/container.js +105 -186
  466. package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
  467. package/dist/editor-actions/plugin/directive-container.js +7 -8
  468. package/dist/editor-actions/reorder-action.d.ts +7 -12
  469. package/dist/editor-actions/reorder-action.js +32 -48
  470. package/dist/editor-actions/reorder-drag.d.ts +12 -8
  471. package/dist/editor-actions/reorder-drag.js +45 -41
  472. package/dist/editor-actions/replacement-focus.d.ts +13 -21
  473. package/dist/editor-actions/replacement-focus.js +32 -33
  474. package/dist/editor-actions/search-replace.js +71 -67
  475. package/dist/editor-actions/stored-caret.d.ts +7 -0
  476. package/dist/editor-actions/stored-caret.js +10 -0
  477. package/dist/editor-actions/table-context.d.ts +9 -11
  478. package/dist/editor-actions/table-context.js +70 -93
  479. package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
  480. package/dist/editor-actions/unwrap-strategies.js +52 -63
  481. package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
  482. package/dist/editor-actions/whole-block-focus-surface.js +43 -53
  483. package/dist/editor-events.d.ts +25 -29
  484. package/dist/editor-events.js +17 -28
  485. package/dist/editor-keys.d.ts +96 -104
  486. package/dist/editor-keys.js +11 -24
  487. package/dist/editor-props.d.ts +91 -71
  488. package/dist/editor-rects.d.ts +23 -34
  489. package/dist/editor-rects.js +9 -77
  490. package/dist/env.d.ts +6 -4
  491. package/dist/env.js +8 -4
  492. package/dist/index.d.ts +6 -2
  493. package/dist/index.js +5 -2
  494. package/dist/inline-menu/inline-menu-session.d.ts +37 -0
  495. package/dist/inline-menu/inline-menu-session.js +98 -0
  496. package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
  497. package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
  498. package/dist/inline-menu/types.d.ts +77 -0
  499. package/dist/inline-menu/types.js +7 -0
  500. package/dist/invariants/child-id-parity.d.ts +23 -0
  501. package/dist/invariants/child-id-parity.js +39 -0
  502. package/dist/invariants/commit-paths.d.ts +4 -4
  503. package/dist/invariants/commit-paths.js +4 -4
  504. package/dist/invariants/commit-scope.d.ts +4 -4
  505. package/dist/invariants/commit-scope.js +9 -8
  506. package/dist/invariants/context-keys.d.ts +2 -5
  507. package/dist/invariants/context-keys.js +3 -6
  508. package/dist/invariants/descriptor.d.ts +2 -6
  509. package/dist/invariants/descriptor.js +2 -6
  510. package/dist/invariants/inline-transitions.d.ts +9 -16
  511. package/dist/invariants/inline-transitions.js +10 -18
  512. package/dist/invariants/install.d.ts +18 -27
  513. package/dist/invariants/install.js +29 -30
  514. package/dist/invariants/keeps-a-block.d.ts +7 -0
  515. package/dist/invariants/keeps-a-block.js +14 -0
  516. package/dist/invariants/landable-caret.d.ts +5 -7
  517. package/dist/invariants/landable-caret.js +8 -11
  518. package/dist/invariants/landing-focus-scroll.d.ts +7 -0
  519. package/dist/invariants/landing-focus-scroll.js +13 -0
  520. package/dist/invariants/landing-value.d.ts +13 -0
  521. package/dist/invariants/landing-value.js +27 -0
  522. package/dist/invariants/marker-css-parity.d.ts +5 -6
  523. package/dist/invariants/marker-css-parity.js +11 -12
  524. package/dist/invariants/measures-in-own-list.d.ts +6 -0
  525. package/dist/invariants/measures-in-own-list.js +13 -0
  526. package/dist/invariants/node-shape.d.ts +18 -37
  527. package/dist/invariants/node-shape.js +123 -79
  528. package/dist/invariants/open-tail.d.ts +7 -0
  529. package/dist/invariants/open-tail.js +45 -0
  530. package/dist/invariants/placement-ends-widget.d.ts +8 -0
  531. package/dist/invariants/placement-ends-widget.js +13 -0
  532. package/dist/invariants/registry.d.ts +27 -66
  533. package/dist/invariants/registry.js +61 -137
  534. package/dist/invariants/render-fidelity.d.ts +4 -4
  535. package/dist/invariants/render-fidelity.js +5 -5
  536. package/dist/invariants/selection-endpoints.d.ts +6 -7
  537. package/dist/invariants/selection-endpoints.js +18 -16
  538. package/dist/invariants/single-node-sink.d.ts +4 -5
  539. package/dist/invariants/single-node-sink.js +4 -5
  540. package/dist/invariants/snapshot-integrity.d.ts +5 -6
  541. package/dist/invariants/snapshot-integrity.js +1 -1
  542. package/dist/invariants/structural-descriptor.d.ts +6 -15
  543. package/dist/invariants/structural-descriptor.js +6 -15
  544. package/dist/menu-icons.d.ts +47 -0
  545. package/dist/menu-icons.js +113 -0
  546. package/dist/perf/instruments.d.ts +20 -5
  547. package/dist/perf/instruments.js +35 -15
  548. package/dist/perf/use-mount-gauge.svelte.js +4 -4
  549. package/dist/plugin.d.ts +38 -8
  550. package/dist/plugin.js +102 -74
  551. package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
  552. package/dist/plugins/admonitions/admonition-kind.js +12 -10
  553. package/dist/plugins/admonitions/convert-document.d.ts +5 -5
  554. package/dist/plugins/admonitions/convert-document.js +8 -7
  555. package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
  556. package/dist/plugins/admonitions/gh-alert.js +21 -22
  557. package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
  558. package/dist/plugins/admonitions/github-alert-kind.js +28 -37
  559. package/dist/plugins/admonitions/index.js +2 -2
  560. package/dist/plugins/admonitions/kinds.d.ts +1 -1
  561. package/dist/plugins/admonitions/register.js +11 -2
  562. package/dist/plugins/details/DetailsBlock.svelte +20 -20
  563. package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
  564. package/dist/plugins/details/details-disclosure.svelte.js +6 -7
  565. package/dist/plugins/details/details-kind.d.ts +6 -7
  566. package/dist/plugins/details/details-kind.js +44 -59
  567. package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
  568. package/dist/plugins/emoji/emoji-recognizer.js +7 -14
  569. package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
  570. package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
  571. package/dist/plugins/footnotes/constants.d.ts +2 -0
  572. package/dist/plugins/footnotes/constants.js +3 -0
  573. package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
  574. package/dist/plugins/footnotes/footnote-definition.js +69 -45
  575. package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
  576. package/dist/plugins/footnotes/footnote-lookup.js +14 -26
  577. package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
  578. package/dist/plugins/footnotes/footnote-numbering.js +22 -31
  579. package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
  580. package/dist/plugins/footnotes/footnote-reference.js +8 -13
  581. package/dist/plugins/footnotes/index.js +2 -3
  582. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
  583. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
  584. package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
  585. package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
  586. package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
  587. package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
  588. package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
  589. package/dist/plugins/highlight-occurrences/word-char.js +4 -0
  590. package/dist/plugins/latex/BlockMath.svelte +58 -75
  591. package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
  592. package/dist/plugins/latex/MathInline.svelte +10 -9
  593. package/dist/plugins/latex/flanking.d.ts +1 -0
  594. package/dist/plugins/latex/flanking.js +3 -0
  595. package/dist/plugins/latex/index.d.ts +1 -1
  596. package/dist/plugins/latex/latex-kind.d.ts +4 -4
  597. package/dist/plugins/latex/latex-kind.js +113 -85
  598. package/dist/plugins/latex/math-completion.d.ts +1 -1
  599. package/dist/plugins/latex/math-completion.js +5 -8
  600. package/dist/plugins/latex/math-layout.d.ts +2 -8
  601. package/dist/plugins/latex/math-layout.js +0 -9
  602. package/dist/plugins/latex/math-renderer.d.ts +17 -20
  603. package/dist/plugins/latex/math-renderer.js +21 -38
  604. package/dist/plugins/latex/math-source.d.ts +4 -8
  605. package/dist/plugins/latex/math-source.js +36 -75
  606. package/dist/plugins/latex/register.d.ts +10 -11
  607. package/dist/plugins/latex/register.js +24 -10
  608. package/dist/plugins/latex/renderer.d.ts +9 -10
  609. package/dist/plugins/latex/renderer.js +9 -24
  610. package/dist/plugins/mermaid/MermaidBlock.svelte +63 -47
  611. package/dist/plugins/mermaid/index.js +1 -1
  612. package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
  613. package/dist/plugins/mermaid/mermaid-kind.js +30 -47
  614. package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
  615. package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
  616. package/dist/plugins/mermaid/register.d.ts +3 -3
  617. package/dist/plugins/mermaid/register.js +5 -5
  618. package/dist/plugins/mermaid/renderer.d.ts +5 -5
  619. package/dist/plugins/mermaid/renderer.js +8 -11
  620. package/dist/plugins/parrot/ParrotBlock.svelte +18 -7
  621. package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
  622. package/dist/plugins/parrot/parrot-plugin.js +3 -3
  623. package/dist/plugins/slash-commands/filter.d.ts +23 -0
  624. package/dist/plugins/slash-commands/filter.js +31 -0
  625. package/dist/plugins/slash-commands/index.d.ts +2 -0
  626. package/dist/plugins/slash-commands/index.js +2 -0
  627. package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
  628. package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
  629. package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
  630. package/dist/plugins/slash-commands/slash-source.js +108 -0
  631. package/dist/plugins/toc/TocBlock.svelte +23 -22
  632. package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
  633. package/dist/plugins/toc/heading-outline.d.ts +7 -12
  634. package/dist/plugins/toc/heading-outline.js +22 -36
  635. package/dist/plugins/toc/navigation-queue.d.ts +2 -4
  636. package/dist/plugins/toc/toc-plugin.d.ts +5 -5
  637. package/dist/plugins/toc/toc-plugin.js +20 -13
  638. package/dist/presentation-mode.d.ts +15 -23
  639. package/dist/presentation-mode.js +19 -25
  640. package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
  641. package/dist/reactivity/block-list-state.svelte.js +8 -9
  642. package/dist/reactivity/block-window.svelte.d.ts +12 -6
  643. package/dist/reactivity/block-window.svelte.js +44 -17
  644. package/dist/reactivity/child-list.d.ts +34 -0
  645. package/dist/reactivity/child-list.js +48 -0
  646. package/dist/reactivity/content-version.svelte.d.ts +4 -7
  647. package/dist/reactivity/content-version.svelte.js +3 -5
  648. package/dist/reactivity/hold-across.d.ts +39 -0
  649. package/dist/reactivity/hold-across.js +57 -0
  650. package/dist/reactivity/layout-state.svelte.d.ts +27 -0
  651. package/dist/reactivity/layout-state.svelte.js +51 -0
  652. package/dist/reactivity/list-tree.d.ts +39 -0
  653. package/dist/reactivity/list-tree.js +132 -0
  654. package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
  655. package/dist/reactivity/list-windowing.svelte.js +143 -292
  656. package/dist/reactivity/measure-batch.d.ts +6 -8
  657. package/dist/reactivity/measure-batch.js +5 -6
  658. package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
  659. package/dist/reactivity/publish-ref.svelte.js +21 -85
  660. package/dist/reactivity/scope-geometry.d.ts +6 -13
  661. package/dist/reactivity/scope-geometry.js +7 -14
  662. package/dist/reactivity/state-registry.d.ts +5 -5
  663. package/dist/reactivity/state-registry.js +11 -15
  664. package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
  665. package/dist/reactivity/use-container-windowing.svelte.js +64 -74
  666. package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
  667. package/dist/reactivity/use-measured-child.svelte.js +41 -0
  668. package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
  669. package/dist/reactivity/use-window-floor.svelte.js +27 -0
  670. package/dist/reactivity/window-slice.d.ts +4 -4
  671. package/dist/reactivity/window-slice.js +0 -2
  672. package/dist/renderer-slot.d.ts +48 -0
  673. package/dist/renderer-slot.js +85 -0
  674. package/dist/scan-index.d.ts +4 -4
  675. package/dist/scan-index.js +4 -4
  676. package/dist/schema/block-commands.d.ts +69 -54
  677. package/dist/schema/block-commands.js +91 -104
  678. package/dist/schema/block-completions.d.ts +16 -19
  679. package/dist/schema/block-completions.js +25 -32
  680. package/dist/schema/block-component-registry.d.ts +13 -14
  681. package/dist/schema/block-component-registry.js +19 -17
  682. package/dist/schema/block-kind-descriptor.d.ts +234 -168
  683. package/dist/schema/block-kind-descriptor.js +151 -66
  684. package/dist/schema/block-openers.d.ts +48 -39
  685. package/dist/schema/block-openers.js +73 -83
  686. package/dist/schema/built-in-descriptors.d.ts +3 -5
  687. package/dist/schema/built-in-descriptors.js +96 -80
  688. package/dist/schema/child-spans.d.ts +12 -10
  689. package/dist/schema/child-spans.js +68 -34
  690. package/dist/schema/closure.d.ts +18 -16
  691. package/dist/schema/closure.js +24 -14
  692. package/dist/schema/command-id.d.ts +6 -8
  693. package/dist/schema/command-id.js +20 -25
  694. package/dist/schema/commands.d.ts +79 -81
  695. package/dist/schema/commands.js +156 -116
  696. package/dist/schema/container-raw.d.ts +51 -11
  697. package/dist/schema/container-raw.js +143 -14
  698. package/dist/schema/container-rebuilders.d.ts +17 -15
  699. package/dist/schema/container-rebuilders.js +30 -22
  700. package/dist/schema/context-actions.d.ts +25 -13
  701. package/dist/schema/context-actions.js +32 -17
  702. package/dist/schema/define-plugin-block.d.ts +8 -6
  703. package/dist/schema/define-plugin-block.js +6 -4
  704. package/dist/schema/fenced-code-raw.d.ts +30 -17
  705. package/dist/schema/fenced-code-raw.js +155 -107
  706. package/dist/schema/global-commands.d.ts +6 -6
  707. package/dist/schema/global-commands.js +14 -22
  708. package/dist/schema/height-estimates.d.ts +31 -0
  709. package/dist/schema/height-estimates.js +64 -0
  710. package/dist/schema/inline-construct-policy.d.ts +42 -55
  711. package/dist/schema/inline-construct-policy.js +36 -35
  712. package/dist/schema/insert-catalogue.d.ts +30 -0
  713. package/dist/schema/insert-catalogue.js +95 -0
  714. package/dist/schema/keybinding-overrides.d.ts +9 -11
  715. package/dist/schema/keybinding-overrides.js +1 -1
  716. package/dist/schema/keybindings.d.ts +15 -7
  717. package/dist/schema/keybindings.js +21 -9
  718. package/dist/schema/merge-rules.d.ts +5 -7
  719. package/dist/schema/merge-rules.js +7 -9
  720. package/dist/schema/opener-priorities.d.ts +4 -4
  721. package/dist/schema/opener-priorities.js +4 -4
  722. package/dist/schema/operations.d.ts +9 -11
  723. package/dist/schema/operations.js +3 -3
  724. package/dist/schema/page-role.d.ts +14 -0
  725. package/dist/schema/page-role.js +19 -0
  726. package/dist/schema/plugin-activation.d.ts +4 -6
  727. package/dist/schema/plugin-activation.js +12 -10
  728. package/dist/schema/plugin-editor-context.d.ts +25 -10
  729. package/dist/schema/plugin-editor-context.js +40 -9
  730. package/dist/schema/plugin-install.d.ts +49 -17
  731. package/dist/schema/plugin-install.js +51 -25
  732. package/dist/schema/plugin-kind.d.ts +12 -8
  733. package/dist/schema/plugin-kind.js +35 -42
  734. package/dist/schema/plugin-name.js +3 -3
  735. package/dist/schema/plugin-registry.d.ts +54 -0
  736. package/dist/schema/plugin-registry.js +70 -0
  737. package/dist/schema/reading.d.ts +23 -0
  738. package/dist/schema/reading.js +7 -0
  739. package/dist/schema/register-once.d.ts +3 -5
  740. package/dist/schema/register-once.js +7 -16
  741. package/dist/schema/registration-checks.d.ts +12 -16
  742. package/dist/schema/registration-checks.js +35 -51
  743. package/dist/schema/registration-pairs.d.ts +54 -0
  744. package/dist/schema/registration-pairs.js +48 -0
  745. package/dist/schema/registration-pending.d.ts +8 -12
  746. package/dist/schema/registration-pending.js +9 -9
  747. package/dist/schema/registry-reset.d.ts +8 -4
  748. package/dist/schema/registry-reset.js +13 -26
  749. package/dist/schema/registry-view.d.ts +25 -13
  750. package/dist/schema/registry-view.js +26 -20
  751. package/dist/schema/reserved-chords.d.ts +9 -10
  752. package/dist/schema/reserved-chords.js +73 -78
  753. package/dist/schema/reserved-chrome.d.ts +12 -11
  754. package/dist/schema/reserved-chrome.js +15 -11
  755. package/dist/schema/setext-raw.d.ts +13 -0
  756. package/dist/schema/setext-raw.js +33 -0
  757. package/dist/schema/stored-as.d.ts +20 -0
  758. package/dist/schema/stored-as.js +6 -0
  759. package/dist/schema/table-cell-raw.d.ts +18 -7
  760. package/dist/schema/table-cell-raw.js +28 -7
  761. package/dist/schema/whole-block-unit.d.ts +5 -4
  762. package/dist/schema/whole-block-unit.js +5 -4
  763. package/dist/search/document-scan.d.ts +3 -3
  764. package/dist/search/document-scan.js +2 -2
  765. package/dist/search/matcher.d.ts +1 -1
  766. package/dist/search/regex-executor.d.ts +5 -6
  767. package/dist/search/regex-executor.js +6 -8
  768. package/dist/search/replace.d.ts +2 -5
  769. package/dist/search/replace.js +2 -5
  770. package/dist/search/search-state.svelte.d.ts +5 -5
  771. package/dist/search/search-state.svelte.js +12 -16
  772. package/dist/selection/autoscroll.d.ts +6 -9
  773. package/dist/selection/block-hit-test.d.ts +16 -24
  774. package/dist/selection/block-hit-test.js +29 -22
  775. package/dist/selection/caret-doors.d.ts +15 -14
  776. package/dist/selection/caret-doors.js +37 -26
  777. package/dist/selection/caret-landing.d.ts +62 -0
  778. package/dist/selection/caret-landing.js +157 -0
  779. package/dist/selection/caret-restore.d.ts +17 -10
  780. package/dist/selection/caret-restore.js +10 -22
  781. package/dist/selection/caret-target.d.ts +30 -0
  782. package/dist/selection/caret-target.js +84 -0
  783. package/dist/selection/char-endpoint-snap.d.ts +6 -10
  784. package/dist/selection/char-endpoint-snap.js +8 -14
  785. package/dist/selection/clipboard-text.d.ts +5 -12
  786. package/dist/selection/clipboard-text.js +69 -172
  787. package/dist/selection/covered-block.d.ts +6 -8
  788. package/dist/selection/covered-block.js +8 -19
  789. package/dist/selection/cross-block/clipboard.d.ts +3 -2
  790. package/dist/selection/cross-block/clipboard.js +13 -4
  791. package/dist/selection/cross-block/dispatch.d.ts +47 -43
  792. package/dist/selection/cross-block/dispatch.js +12 -23
  793. package/dist/selection/cross-block/format-range.d.ts +18 -21
  794. package/dist/selection/cross-block/format-range.js +104 -103
  795. package/dist/selection/cross-block/format-toggle.d.ts +10 -15
  796. package/dist/selection/cross-block/format-toggle.js +28 -33
  797. package/dist/selection/cross-block/keydown.d.ts +4 -4
  798. package/dist/selection/cross-block/keydown.js +93 -152
  799. package/dist/selection/cross-block/ops.d.ts +19 -34
  800. package/dist/selection/cross-block/ops.js +110 -95
  801. package/dist/selection/cross-block/paste.d.ts +2 -3
  802. package/dist/selection/cross-block/paste.js +61 -104
  803. package/dist/selection/cross-block/pointer.d.ts +17 -15
  804. package/dist/selection/cross-block/pointer.js +74 -25
  805. package/dist/selection/cross-block/type-replace.d.ts +4 -6
  806. package/dist/selection/cross-block/type-replace.js +53 -146
  807. package/dist/selection/dead-space-caret.d.ts +20 -28
  808. package/dist/selection/dead-space-caret.js +79 -87
  809. package/dist/selection/drag-pointer.d.ts +22 -5
  810. package/dist/selection/drag-pointer.js +63 -31
  811. package/dist/selection/gap-caret.d.ts +17 -28
  812. package/dist/selection/gap-caret.js +14 -26
  813. package/dist/selection/grid-selection.d.ts +12 -0
  814. package/dist/selection/grid-selection.js +22 -0
  815. package/dist/selection/keyboard-extend.d.ts +27 -39
  816. package/dist/selection/keyboard-extend.js +94 -116
  817. package/dist/selection/multi-click.d.ts +37 -0
  818. package/dist/selection/multi-click.js +197 -0
  819. package/dist/selection/native-bridge.d.ts +30 -37
  820. package/dist/selection/native-bridge.js +80 -100
  821. package/dist/selection/nearest-block.d.ts +17 -12
  822. package/dist/selection/nearest-block.js +37 -18
  823. package/dist/selection/path-lookup.d.ts +31 -14
  824. package/dist/selection/path-lookup.js +110 -20
  825. package/dist/selection/path-math.d.ts +9 -11
  826. package/dist/selection/path-math.js +5 -7
  827. package/dist/selection/pointer-gesture.d.ts +9 -0
  828. package/dist/selection/pointer-gesture.js +11 -0
  829. package/dist/selection/pointer-session.d.ts +10 -16
  830. package/dist/selection/pointer-session.js +6 -7
  831. package/dist/selection/primitives.d.ts +64 -33
  832. package/dist/selection/primitives.js +61 -53
  833. package/dist/selection/range-coverage.d.ts +94 -0
  834. package/dist/selection/range-coverage.js +365 -0
  835. package/dist/selection/range-delete-ceremony.d.ts +28 -74
  836. package/dist/selection/range-delete-ceremony.js +100 -141
  837. package/dist/selection/range-delete-chrome.d.ts +20 -33
  838. package/dist/selection/range-delete-chrome.js +53 -78
  839. package/dist/selection/range-delete-table-coverage.d.ts +11 -25
  840. package/dist/selection/range-delete-table-coverage.js +42 -112
  841. package/dist/selection/range-delete-table.d.ts +14 -12
  842. package/dist/selection/range-delete-table.js +106 -310
  843. package/dist/selection/range-delete.d.ts +18 -19
  844. package/dist/selection/range-delete.js +83 -123
  845. package/dist/selection/round-trip-restore.d.ts +18 -0
  846. package/dist/selection/round-trip-restore.js +19 -0
  847. package/dist/selection/selection-announcer.d.ts +17 -0
  848. package/dist/selection/selection-announcer.js +25 -0
  849. package/dist/selection/selection-description.d.ts +4 -3
  850. package/dist/selection/selection-description.js +5 -4
  851. package/dist/selection/selection-drop.d.ts +52 -0
  852. package/dist/selection/selection-drop.js +317 -0
  853. package/dist/selection/selection-restore.d.ts +20 -33
  854. package/dist/selection/selection-restore.js +21 -44
  855. package/dist/selection/selection-state.svelte.d.ts +50 -42
  856. package/dist/selection/selection-state.svelte.js +144 -98
  857. package/dist/selection/shared-keydown.d.ts +22 -27
  858. package/dist/selection/shared-keydown.js +25 -45
  859. package/dist/selection/table-endpoint-snap.d.ts +17 -41
  860. package/dist/selection/table-endpoint-snap.js +54 -80
  861. package/dist/selection/table-rect-extend.d.ts +3 -6
  862. package/dist/selection/table-rect-extend.js +19 -14
  863. package/dist/styles/editor-theme.css +75 -53
  864. package/dist/styles/editor.css +248 -139
  865. package/dist/testing/conformance-core.d.ts +50 -18
  866. package/dist/testing/conformance-core.js +88 -50
  867. package/dist/testing/container-conformance.d.ts +48 -84
  868. package/dist/testing/container-conformance.js +159 -285
  869. package/dist/testing/headless-actions.d.ts +34 -19
  870. package/dist/testing/headless-actions.js +116 -65
  871. package/dist/testing/headless-block-list.svelte.d.ts +16 -0
  872. package/dist/testing/headless-block-list.svelte.js +22 -0
  873. package/dist/testing/inline-conformance.d.ts +15 -22
  874. package/dist/testing/inline-conformance.js +131 -148
  875. package/dist/testing/kind-conformance.d.ts +19 -24
  876. package/dist/testing/kind-conformance.js +204 -117
  877. package/dist/testing/kit-reading.d.ts +7 -0
  878. package/dist/testing/kit-reading.js +16 -0
  879. package/dist/testing/mount-dom-stubs.d.ts +4 -5
  880. package/dist/testing/mount-dom-stubs.js +8 -5
  881. package/dist/testing/parse-convergence.d.ts +10 -10
  882. package/dist/testing/parse-convergence.js +14 -49
  883. package/dist/testing.d.ts +13 -9
  884. package/dist/testing.js +28 -38
  885. package/dist/tree-operations/blockquote.d.ts +8 -14
  886. package/dist/tree-operations/blockquote.js +25 -45
  887. package/dist/tree-operations/chain-rebuild.d.ts +34 -25
  888. package/dist/tree-operations/chain-rebuild.js +115 -52
  889. package/dist/tree-operations/children.d.ts +5 -9
  890. package/dist/tree-operations/children.js +7 -11
  891. package/dist/tree-operations/cleanup.d.ts +6 -7
  892. package/dist/tree-operations/cleanup.js +14 -11
  893. package/dist/tree-operations/clone.js +5 -4
  894. package/dist/tree-operations/container-lift.d.ts +10 -5
  895. package/dist/tree-operations/container-lift.js +20 -14
  896. package/dist/tree-operations/container-offsets.d.ts +22 -0
  897. package/dist/tree-operations/container-offsets.js +89 -0
  898. package/dist/tree-operations/content-write.d.ts +52 -29
  899. package/dist/tree-operations/content-write.js +155 -110
  900. package/dist/tree-operations/index.d.ts +4 -4
  901. package/dist/tree-operations/index.js +4 -4
  902. package/dist/tree-operations/keep-one-block.d.ts +10 -0
  903. package/dist/tree-operations/keep-one-block.js +19 -0
  904. package/dist/tree-operations/leaf-range.d.ts +33 -0
  905. package/dist/tree-operations/leaf-range.js +67 -0
  906. package/dist/tree-operations/list/empty-check.d.ts +2 -3
  907. package/dist/tree-operations/list/empty-check.js +4 -4
  908. package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
  909. package/dist/tree-operations/list/exit-replacement.js +4 -9
  910. package/dist/tree-operations/list/item-partition.d.ts +2 -2
  911. package/dist/tree-operations/list/item-partition.js +2 -2
  912. package/dist/tree-operations/list/list-builders.d.ts +18 -16
  913. package/dist/tree-operations/list/list-builders.js +59 -30
  914. package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
  915. package/dist/tree-operations/list/ordered-markers.js +7 -16
  916. package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
  917. package/dist/tree-operations/list/reconcile-task.js +80 -23
  918. package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
  919. package/dist/tree-operations/list/sublist-separator.js +20 -27
  920. package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
  921. package/dist/tree-operations/list/task-paragraph.js +54 -0
  922. package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
  923. package/dist/tree-operations/list/unwrap-merge.js +44 -79
  924. package/dist/tree-operations/node-ops.d.ts +30 -52
  925. package/dist/tree-operations/node-ops.js +152 -218
  926. package/dist/tree-operations/node-primitives.d.ts +44 -31
  927. package/dist/tree-operations/node-primitives.js +84 -60
  928. package/dist/tree-operations/open-tail.d.ts +25 -0
  929. package/dist/tree-operations/open-tail.js +100 -0
  930. package/dist/tree-operations/parse-block.d.ts +15 -2
  931. package/dist/tree-operations/parse-block.js +19 -4
  932. package/dist/tree-operations/paste/apply.d.ts +7 -8
  933. package/dist/tree-operations/paste/apply.js +33 -63
  934. package/dist/tree-operations/paste/body-write.d.ts +8 -6
  935. package/dist/tree-operations/paste/body-write.js +13 -14
  936. package/dist/tree-operations/paste/container-match.d.ts +7 -10
  937. package/dist/tree-operations/paste/container-match.js +76 -58
  938. package/dist/tree-operations/paste/container-paste.d.ts +3 -3
  939. package/dist/tree-operations/paste/container-paste.js +3 -3
  940. package/dist/tree-operations/paste/dispatch.d.ts +26 -29
  941. package/dist/tree-operations/paste/dispatch.js +68 -53
  942. package/dist/tree-operations/paste/focus-target.d.ts +11 -14
  943. package/dist/tree-operations/paste/focus-target.js +13 -18
  944. package/dist/tree-operations/paste/hooks.d.ts +7 -12
  945. package/dist/tree-operations/paste/hooks.js +49 -46
  946. package/dist/tree-operations/paste/line-ending.d.ts +11 -0
  947. package/dist/tree-operations/paste/line-ending.js +32 -0
  948. package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
  949. package/dist/tree-operations/paste/list-absorb.js +17 -19
  950. package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
  951. package/dist/tree-operations/paste/list-break-out.js +24 -32
  952. package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
  953. package/dist/tree-operations/paste/parent-scope.js +9 -16
  954. package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
  955. package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
  956. package/dist/tree-operations/paste/paste-replacement.js +73 -42
  957. package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
  958. package/dist/tree-operations/paste/paste-transforms.js +18 -27
  959. package/dist/tree-operations/paste/replacement-parse.d.ts +19 -0
  960. package/dist/tree-operations/paste/replacement-parse.js +24 -0
  961. package/dist/tree-operations/paste/strategy.d.ts +1 -1
  962. package/dist/tree-operations/paste/strategy.js +1 -1
  963. package/dist/tree-operations/paste/table-slice.js +15 -10
  964. package/dist/tree-operations/paste-surfaces.d.ts +18 -29
  965. package/dist/tree-operations/paste-surfaces.js +14 -10
  966. package/dist/tree-operations/path-mutate.d.ts +7 -8
  967. package/dist/tree-operations/path-mutate.js +4 -4
  968. package/dist/tree-operations/reorder-unit.d.ts +4 -5
  969. package/dist/tree-operations/reorder-unit.js +5 -6
  970. package/dist/tree-operations/reorder.d.ts +7 -9
  971. package/dist/tree-operations/reorder.js +39 -40
  972. package/dist/tree-operations/settle.d.ts +42 -53
  973. package/dist/tree-operations/settle.js +241 -162
  974. package/dist/tree-operations/sharing.d.ts +5 -5
  975. package/dist/tree-operations/splice-many.d.ts +5 -5
  976. package/dist/tree-operations/splice-many.js +5 -5
  977. package/dist/tree-operations/stored-as.d.ts +13 -0
  978. package/dist/tree-operations/stored-as.js +48 -0
  979. package/dist/tree-operations/structural-change.d.ts +11 -15
  980. package/dist/tree-operations/structural-change.js +10 -14
  981. package/dist/tree-operations/structural-suffix.d.ts +22 -0
  982. package/dist/tree-operations/structural-suffix.js +61 -0
  983. package/dist/tree-operations/sub-table-copy.d.ts +7 -0
  984. package/dist/tree-operations/sub-table-copy.js +40 -36
  985. package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
  986. package/dist/tree-operations/table-grid-clipboard.js +11 -36
  987. package/dist/tree-operations/table-mutations.d.ts +7 -3
  988. package/dist/tree-operations/table-mutations.js +45 -9
  989. package/dist/tree-operations/unshare.d.ts +11 -15
  990. package/dist/tree-operations/unshare.js +15 -17
  991. package/dist/undo/manager.js +1 -1
  992. package/dist/undo/types.d.ts +2 -2
  993. package/docs/guide/consumer-guide.md +329 -205
  994. package/docs/guide/directives.md +7 -7
  995. package/docs/guide/plugin-api.md +267 -183
  996. package/docs/guide/plugin-guide.md +341 -235
  997. package/docs/guide/plugin-testing.md +96 -82
  998. package/package.json +17 -21
  999. package/dist/ambient/ambient-cursor.d.ts +0 -41
  1000. package/dist/ambient/ambient-cursor.js +0 -120
  1001. package/dist/components/blocks/code/code-paste.d.ts +0 -24
  1002. package/dist/components/blocks/code/code-paste.js +0 -21
  1003. package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
  1004. package/dist/components/blocks/table/cell-clipboard.js +0 -67
  1005. package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
  1006. package/dist/components/blocks/text/hidden-suffix.js +0 -15
  1007. package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
  1008. package/dist/components/image/image-source-bytes.d.ts +0 -15
  1009. package/dist/components/image/image-source-bytes.js +0 -80
  1010. package/dist/cursor/content-offsets.d.ts +0 -29
  1011. package/dist/cursor/content-offsets.js +0 -151
  1012. package/dist/cursor/reveal-anchor.d.ts +0 -30
  1013. package/dist/cursor/reveal-anchor.js +0 -31
  1014. package/dist/invariants/split-landing.d.ts +0 -8
  1015. package/dist/invariants/split-landing.js +0 -15
  1016. package/dist/selection/double-click-trim.d.ts +0 -17
  1017. package/dist/selection/double-click-trim.js +0 -57
  1018. package/dist/tree-operations/list/terminator.d.ts +0 -17
  1019. package/dist/tree-operations/list/terminator.js +0 -60
  1020. package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -29
  1021. package/dist/tree-operations/paste/replace-block-at-parent.js +0 -75
@@ -1,10 +1,8 @@
1
1
  /**
2
- * DOM construction and lookup for the ambient marker span — the read-only
3
- * prefix container blocks contribute to their first prose child's textContent.
2
+ * Builds the marker prefix span (the "ambient" prefix): the read-only prefix a container block
3
+ * draws in front of its first prose child's text. Reading it back is `cursor/widget-offset.ts`.
4
4
  */
5
5
  import { DRAG_ANCHOR_ATTR } from '../components/block-content-selector';
6
- import { domDescendants } from '../cursor/dom-walk';
7
- import { isAtomicInlineWidget, isHiddenMarkerText } from '../cursor/widget-offset';
8
6
  import { devWarn } from '../dev-warn';
9
7
  export function buildAmbientSpan(prefix) {
10
8
  const normalized = typeof prefix === 'string' ? { text: prefix } : prefix;
@@ -32,10 +30,17 @@ export function buildAmbientSpan(prefix) {
32
30
  if (range.ariaChecked !== undefined) {
33
31
  inner.setAttribute('aria-checked', String(range.ariaChecked));
34
32
  }
33
+ if (range.label !== undefined)
34
+ inner.setAttribute('aria-label', range.label);
35
+ if (range.focusable)
36
+ inner.tabIndex = 0;
35
37
  if (range.dragAnchor)
36
38
  inner.setAttribute(DRAG_ANCHOR_ATTR, '');
37
39
  inner.textContent = normalized.text.slice(range.start, range.end);
38
40
  inner.addEventListener('click', range.onClick);
41
+ const onActivate = range.onActivate;
42
+ if (onActivate)
43
+ inner.addEventListener('keydown', (e) => activateOnKey(e, onActivate));
39
44
  outer.appendChild(inner);
40
45
  cursor = range.end;
41
46
  }
@@ -44,63 +49,12 @@ export function buildAmbientSpan(prefix) {
44
49
  }
45
50
  return outer;
46
51
  }
47
- export function ambientSpanOf(blockEl) {
48
- const first = blockEl.firstChild;
49
- if (!first || first.nodeType !== Node.ELEMENT_NODE)
50
- return null;
51
- const span = first;
52
- if (!span.classList.contains('md-marker'))
53
- return null;
54
- if (span.getAttribute('contenteditable') !== 'false')
55
- return null;
56
- return span;
57
- }
58
- export function ambientLengthOf(blockEl) {
59
- return ambientSpanOf(blockEl)?.textContent?.length ?? 0;
60
- }
61
- export function placeCaretAfterAmbientSpan(blockEl) {
62
- const span = ambientSpanOf(blockEl);
63
- if (!span)
64
- return false;
65
- const range = document.createRange();
66
- // Prefer the first text node after the span so visual-line geometry returns real rects;
67
- // setStartAfter yields a collapsed range with no textbox in empty-item state. A hidden
68
- // marker run next to the span is not that text node — it paints nothing, and descending
69
- // into it would seat raw 0 inside unpainted bytes.
70
- const textAfter = firstTextNodeAfter(span);
71
- if (textAfter && !isHiddenMarkerText(textAfter, blockEl)) {
72
- range.setStart(textAfter, 0);
73
- }
74
- else {
75
- range.setStartAfter(span);
76
- }
77
- range.collapse(true);
78
- const sel = window.getSelection();
79
- sel?.removeAllRanges();
80
- sel?.addRange(range);
81
- return true;
82
- }
83
52
  // ── Internal ────────────────────────────────────────────────────────────────
84
- function firstTextNodeAfter(node) {
85
- let sibling = node.nextSibling;
86
- while (sibling) {
87
- // An atomic widget stands for raw bytes, so text past it is not raw 0.
88
- if (isAtomicInlineWidget(sibling))
89
- return null;
90
- const text = firstTextDescendant(sibling);
91
- if (text)
92
- return text;
93
- sibling = sibling.nextSibling;
94
- }
95
- return null;
96
- }
97
- // Unfiltered on the way down, unlike the measurable-text search it resembles
98
- // (`cursor/visual-lines.ts`): the caller judges hidden marker text once, at the top.
99
- function firstTextDescendant(node) {
100
- for (const current of domDescendants(node)) {
101
- if (current.nodeType === Node.TEXT_NODE && (current.textContent?.length ?? 0) > 0) {
102
- return current;
103
- }
104
- }
105
- return null;
53
+ // Enter and Space, the keys a link or button answers; the block below must not see them too.
54
+ function activateOnKey(e, onActivate) {
55
+ if (e.key !== 'Enter' && e.key !== ' ')
56
+ return;
57
+ e.preventDefault();
58
+ e.stopPropagation();
59
+ onActivate();
106
60
  }
package/dist/assert.js CHANGED
@@ -1,12 +1,13 @@
1
1
  /**
2
- * Dev-runtime invariant channel: routes a violation to devWarn and never throws, since a
3
- * false positive must not crash a real editor. In production the predicate is not even
4
- * invoked. Tests call predicates directly rather than going through here.
2
+ * Where a dev-mode invariant check reports: it sends a violation to `devWarn` and never
3
+ * throws, since a false positive must not crash a real editor. Outside a dev build, unless
4
+ * `configureEditorEnv` turned dev on, the check is not even run. Tests call the predicates
5
+ * directly rather than going through here.
5
6
  */
6
- import { DEV } from 'esm-env';
7
+ import { isDevChecks } from './env';
7
8
  import { devWarn } from './dev-warn';
8
9
  export function assertInvariant(tag, check) {
9
- if (!DEV)
10
+ if (!isDevChecks())
10
11
  return;
11
12
  const violation = check();
12
13
  if (violation) {
@@ -1,12 +1,12 @@
1
1
  /**
2
- * The view-layer contract every rendered block satisfies, plus the cursor sentinels and
3
- * ambient-prefix shape blocks produce. Orchestration reaches a block only through this flat
4
- * interface, so a capability a block lacks is an omitted optional member rather than a kind
5
- * check upstream; `ContainerBlockComponent` is the one promoted tier. Authoritative for
6
- * external authors: each member's docstring states its own contract.
2
+ * The contract every rendered block satisfies, plus the special caret values and the marker-prefix
3
+ * shape blocks produce. The editor reaches a block only through this flat interface, so something
4
+ * a block cannot do is a missing optional member, not a kind check upstream;
5
+ * `ContainerBlockComponent` is the stricter version. Each member's docstring states its contract.
7
6
  */
8
7
  import type { DocumentView, NodeView } from './core/node-views';
9
8
  import type { EditorRects } from './editor-rects';
9
+ import type { ChildList } from './reactivity/child-list';
10
10
  declare const cursorEndBrand: unique symbol;
11
11
  /** Branded `number`: a focus offset meaning "end of content", not a position. */
12
12
  export type CursorEnd = number & {
@@ -28,29 +28,41 @@ export type SelectionEnd = number & {
28
28
  readonly [selectionEndBrand]: true;
29
29
  };
30
30
  /**
31
- * "Place cursor at end of content." Focus walkers fall through to their end-of-content
32
- * fallback when the offset exceeds the block's length, so MAX_SAFE_INTEGER always lands
33
- * there — a finite sentinel lands mid-block once content outgrows it.
31
+ * "Place cursor at end of content." Focus handlers fall back to the end of the content when
32
+ * the offset exceeds the block's length, so `MAX_SAFE_INTEGER` always lands there; a smaller
33
+ * fixed number would land mid-block once the content outgrew it.
34
34
  */
35
35
  export declare const CURSOR_END: CursorEnd;
36
36
  /**
37
- * "Place cursor at start of content" — {@link CURSOR_END}'s twin, and NOT a synonym for 0. A
38
- * mode that paints no marker puts raw 0 out of the caret's reach behind a leading construct, so
39
- * an ARRIVAL says this and the door seats it on the first landable offset.
37
+ * "Place cursor at start of content": the counterpart of {@link CURSOR_END}, and not a synonym
38
+ * for 0. A mode that paints no marker puts raw byte 0 out of the caret's reach behind a leading
39
+ * construct, so a caret arriving here says this and lands on the first offset it can sit at.
40
40
  */
41
41
  export declare const CURSOR_START: CursorStart;
42
42
  /**
43
- * "Raw byte 0 exactly" — the ONE seat the park door does not clamp. A live split's continuation
44
- * reopens a construct at byte 0 and typing must continue inside it (live-mode.md § 4.4), which
45
- * the landable clamp would move outside; every other caller wants the clamp (G2.12).
43
+ * "Raw byte 0 exactly": the one position `parkCaret` does not clamp. A live split's continuation
44
+ * reopens a construct at byte 0 and typing has to continue inside it (live-mode.md § 4.4), which
45
+ * the clamp would move outside; every other caller wants the clamp (G2.12).
46
46
  */
47
47
  export declare const CURSOR_EXACT_START: CursorExactStart;
48
- /** Cascade focus to the last descendant and place the cursor at its start. */
49
- export declare const FOCUS_LAST_START = -1;
48
+ /** Which child a caret entering a container takes, and the offset handed on to it. */
49
+ export interface EntryEdge {
50
+ readonly child: 'first' | 'last';
51
+ readonly offset: number;
52
+ /** The offset was a byte inside the container, not an edge: a container that can map its
53
+ * bytes to a child places it there, and any other takes the last child's end. */
54
+ readonly inside: boolean;
55
+ }
56
+ /**
57
+ * How every container reads a caret offset it is entered with, so a list, a table and a table
58
+ * row agree: 0 and the two start values enter the first child unchanged, and `CURSOR_END` or a
59
+ * byte offset the last child at its end.
60
+ */
61
+ export declare function entryEdge(offset: number): EntryEdge;
50
62
  /**
51
- * "End of this block's measurable range" for measurePartialRects' endOffset. Each
52
- * surface interprets it in its own coordinate system: text falls through to native
53
- * range clamping, TableBlock matches it explicitly to reach the last cell.
63
+ * "End of this block's measurable range" for `measurePartialRects`' `endOffset`. Each
64
+ * block reads it in its own coordinate system: text falls through to the browser's range
65
+ * clamping, `TableBlock` matches it explicitly to reach the last cell.
54
66
  */
55
67
  export declare const SELECTION_END: SelectionEnd;
56
68
  /**
@@ -65,13 +77,26 @@ export type StickyColumnDirection = 'above' | 'below';
65
77
  export type FocusPosition = 'start' | 'end' | number | {
66
78
  stickyColumnFrom: StickyColumnDirection;
67
79
  };
68
- export interface AmbientInteractiveRange {
80
+ /** A focusable range must say what Enter and Space do, so a tab stop is never a dead key. */
81
+ export type AmbientInteractiveRange = AmbientRangeBase & ({
82
+ /** Gives the span a tab stop. Decide by mode: a stop inside an editable block
83
+ * interrupts the caret's Tab, so the footnote marker takes one in reading mode only. */
84
+ focusable: true;
85
+ /** Enter or Space on the focused span. */
86
+ onActivate: () => void;
87
+ } | {
88
+ focusable?: false;
89
+ onActivate?: () => void;
90
+ });
91
+ interface AmbientRangeBase {
69
92
  start: number;
70
93
  end: number;
71
94
  className: string;
72
- role?: 'checkbox';
95
+ role?: 'checkbox' | 'link' | 'button';
73
96
  ariaChecked?: boolean;
74
- /** The block's drag grip centres on this span's box rather than on its text line. */
97
+ /** The span's accessible name, rendered as `aria-label`. */
98
+ label?: string;
99
+ /** The block's drag handle centres on this span's box rather than on its text line. */
75
100
  dragAnchor?: boolean;
76
101
  /** The click lands on the range's own span, before the leaf's caret handling; a handler
77
102
  * reading the chord (`isWidgetActivationClick`) stops propagation to keep the gesture. */
@@ -88,91 +113,85 @@ export type AmbientPrefix = string | {
88
113
  };
89
114
  /**
90
115
  * The props BlockHost passes every block component; a registry `extraProps` may add
91
- * kind-specific ones. A component may declare a subset — Svelte ignores props it omits,
92
- * but a leaf that drops `ambientPrefix` visually deletes its markers.
116
+ * kind-specific ones. A component may declare a subset, since Svelte ignores props it
117
+ * omits, but a leaf that drops `ambientPrefix` visually deletes its markers.
93
118
  */
94
119
  export interface BlockComponentProps {
95
- /** Bytes-readonly view (G1.9): components render the CST; mutation routes through actions. */
120
+ /** Bytes-readonly view: components render the CST, and mutation goes through actions (G1.9). */
96
121
  node: NodeView;
97
122
  index: number;
98
123
  myPath: number[];
99
124
  /** Container-contributed read-only prefix rendered before the block's own raw (a list item's `- `). */
100
125
  ambientPrefix: AmbientPrefix;
101
- /** The root document, readonly by type — mutation stays a commit-ceremony concern. */
126
+ /** The root document, readonly by type; changing it is the commit path's business. */
102
127
  document?: DocumentView;
103
- /** The owning instance's rect surface: measure/reveal/scroll by path. The live
104
- * instance object, so a block navigating to another shares the editor's one seam. */
128
+ /** The owning instance's `EditorRects`: measure, scroll into view, or scroll to a path.
129
+ * The live object, so a block navigating to another shares the editor's one copy. */
105
130
  rects?: EditorRects;
106
131
  }
107
132
  export interface BlockComponent {
108
133
  /**
109
- * Place the caret at `offset`, focusing the surface, and end any live cross-block range — the
110
- * safe default door over {@link parkCaret}, since the range-ending batches with the landing.
111
- * Also takes the four caret sentinels above, which stay internal (none is on
134
+ * Place the caret at `offset`, focus the element, and end whatever the editor had selected (a
135
+ * cross-block range, a gap caret, an image selected whole): the safe default over
136
+ * {@link parkCaret}, since ending it batches with placing the caret. Also
137
+ * takes the four special caret values above, which stay internal (none is on
112
138
  * `@voithos-labs/aragonite/plugin`). Clamping is required; never throw.
113
139
  */
114
140
  focus(offset: number): void;
115
141
  /**
116
- * `focus` WITHOUT the range-ending: seat the caret and touch nothing else. For
117
- * selection-extend paths only (G2.12 guards the callers), where a `focus` would
118
- * cancel the range still being grown; any other caller wants `focus`.
142
+ * `focus` without the range-ending: place the caret and touch nothing else. For paths that only
143
+ * extend a selection, where a `focus` would cancel the range still being grown (G2.12).
119
144
  */
120
145
  parkCaret?(offset: number): void;
121
146
  /**
122
- * Caret position as a raw offset into this block's own bytes: ambient markers
123
- * excluded, a widget counted as the source bytes it stands for. `null` (never 0)
124
- * means not in this block — dispatch walks refs to find the focused one.
147
+ * Caret position as a raw offset into this block's own bytes: the container's marker
148
+ * prefix excluded, a widget counted as the source bytes it stands for. `null`, never 0,
149
+ * means the caret is not in this block; dispatch checks each ref to find the focused one.
125
150
  */
126
151
  getCursorOffset(): number | null;
127
152
  /**
128
- * The current selection's rendered text, or `''` when unmounted or nothing is
129
- * selected. NOT clipped to this block: a cross-block selection returns the whole
130
- * range. Rendered, not raw — a caller needing this block's bytes slices `raw`.
153
+ * The current selection's rendered text, or `''` when unmounted or nothing is selected.
154
+ * Not clipped to this block: a cross-block selection returns the whole range. Rendered
155
+ * text, not raw bytes; a caller that needs this block's bytes slices `raw`.
131
156
  */
132
157
  getSelectedText?(): string;
133
158
  /**
134
- * Select `[start, end)` in the same raw-offset space `getCursorOffset` returns.
135
- * A no-op when the block is unmounted or the range doesn't resolve.
159
+ * Select `[start, end)` in the same raw-offset space `getCursorOffset` returns, ending whatever
160
+ * the editor had selected first, as `focus` does. A no-op when the block is unmounted or the
161
+ * range doesn't resolve.
136
162
  */
137
163
  setSelection?(start: number, end: number): void;
138
164
  /**
139
165
  * Position the cursor at the offset nearest editor-relative pixel X on the first
140
- * (`'above'`) or last (`'below'`) visual line; callers fall back to focus(0) /
141
- * CURSOR_END when a block omits it. Inherits {@link parkCaret}'s semantics — it does
142
- * NOT end a live cross-block range, which vertical traversal can never reach.
166
+ * (`'above'`) or last (`'below'`) visual line that can show a caret; callers fall back to `focus(0)` or
167
+ * `CURSOR_END` when a block omits it. Behaves like {@link parkCaret}: it does not end a
168
+ * live cross-block range, which vertical movement can never reach.
143
169
  */
144
170
  focusAtColumn?(x: number, from: StickyColumnDirection): void;
145
171
  /** Cascade focus down a path of child indices to reach a leaf at the given offset. */
146
172
  focusByPath?(path: number[], offset: number): void;
147
173
  /**
148
- * Apply this surface's own click-intent caret snap for a viewport point inside its box,
149
- * after a landing has been placed. A caret that fell at an atomic widget's edge has no
150
- * visual representation there, so the prose surface moves it onto the edge and paints the
151
- * indicator Chromium omits; one that landed in real text is left alone. Omitted by
152
- * surfaces with no such snap.
174
+ * Apply this block's own snap for a viewport point inside its box, once the caret has been
175
+ * placed. A caret that fell at the edge of an inline widget has nothing to draw there, so
176
+ * the prose block moves it onto the edge and paints the indicator Chromium leaves out; one
177
+ * that landed in real text is left alone. Omitted by blocks with no such snap.
153
178
  */
154
179
  snapCaretToPoint?(clientX: number, clientY: number): void;
155
180
  /**
156
- * A press beside the block (the editor's margin, the host's own padding) that may become a
157
- * drag: start the block's OWN drag anchored at the leaf nearest the point — a table's cell
158
- * rectangle — exactly as a press on that leaf would. True when it did; false leaves the press
159
- * to the editor's generic drag.
181
+ * A click beside the block (the editor's margin, the host's own padding) that may become a
182
+ * drag: start the block's own drag from the leaf nearest the point, a table's cell rectangle
183
+ * for instance, exactly as a click on that leaf would. True when it did; false leaves the
184
+ * click to the editor's generic drag.
160
185
  */
161
186
  startDragAtPoint?(clientX: number, clientY: number, event: PointerEvent): boolean;
162
187
  /**
163
- * Descend child indices to the BlockComponent at the leaf, or null if the path
164
- * doesn't resolve. Empty `path` returns this component. Containers implement it.
188
+ * This block's children as the editor walks down to one: their refs, the render window that
189
+ * mounts them, and the collapse a navigation may open. Containers, tables and rows have one.
165
190
  */
166
- getBlockComponentByPath?(path: number[]): BlockComponent | null;
191
+ childList?(): ChildList;
167
192
  /**
168
- * Async sibling of getBlockComponentByPath: at each nested level, scroll the child
169
- * into its window and await its mount before recursing, so an off-window target
170
- * resolves instead of returning null.
171
- */
172
- revealByPath?(path: number[]): Promise<BlockComponent | null>;
173
- /**
174
- * Deep cursor position for nested-block surfaces (table cells): the path from this
175
- * block to the leaf holding the cursor, plus the within-leaf offset. Preferred over
193
+ * Deep cursor position for blocks with nested blocks inside (table cells): the path from
194
+ * this block to the leaf holding the cursor, plus the offset in it. Preferred over
176
195
  * getCursorOffset by getSelection() when implemented.
177
196
  */
178
197
  getCursorPosition?(): {
@@ -181,49 +200,54 @@ export interface BlockComponent {
181
200
  } | null;
182
201
  /**
183
202
  * Viewport-space rects covering [startOffset, endOffset) in this block's visible
184
- * text, for cross-block selection painting. Accepts SELECTION_END as endOffset,
185
- * which surfaces interpret per their own coordinate system.
203
+ * text, for cross-block selection painting. Accepts `SELECTION_END` as `endOffset`,
204
+ * which each block reads in its own coordinate system.
186
205
  */
187
206
  measurePartialRects?(startOffset: number, endOffset: number): DOMRect[];
188
207
  /**
189
- * Viewport-space rect of a single cell by 2D coordinate — whole-cell highlighting on
190
- * grid surfaces, bypassing measurePartialRects' selection-aware range logic. Null
191
- * when the cell isn't mounted or the coordinate is out of range.
208
+ * Viewport-space rect of a single cell by row and column: whole-cell highlighting in a
209
+ * grid, skipping `measurePartialRects`' selection-aware range logic. Null when the cell
210
+ * isn't mounted or the coordinate is out of range.
192
211
  */
193
212
  cellRect?(rowIdx: number, colIdx: number): DOMRect | null;
194
213
  /**
195
- * Current mounted row-window `[start, end)` of a row-windowed grid surface. Overlays
196
- * read it reactively so a repaint fires once the re-sliced rows are committed —
197
- * off-window rows can't paint until mounted.
214
+ * The mounted row range `[start, end)` of a grid that windows its rows. Overlays read it
215
+ * reactively so a repaint fires once the new rows are committed; rows outside the range
216
+ * cannot paint until they mount.
198
217
  */
199
218
  mountedRowWindow?(): {
200
219
  start: number;
201
220
  end: number;
202
221
  };
203
222
  /**
204
- * True when vertical traversal should pass straight through: no caret-able text
205
- * positions of its own, only widgets carrying no column meaning. Decided from the
206
- * CST, not mounted refs, so a container answers the same for an off-window child.
223
+ * True when vertical movement should pass straight through: no text positions the caret
224
+ * can sit at, only widgets with no column meaning. Decided from the CST, not from mounted
225
+ * refs, so a container answers the same for a child that is not mounted.
207
226
  */
208
227
  isVerticallyTransparent?(): boolean;
209
228
  /**
210
- * Enter an edge widget instead of placing a caret at its boundary. What "enter" means
211
- * belongs to the kind's registered `InlineWidgetEditingPolicy` — an open vocabulary,
212
- * not a two-way choice. False lets the caller fall through to focus(0) / CURSOR_END.
229
+ * Enter a widget at the block's edge instead of placing a caret beside it. What "enter"
230
+ * means belongs to the kind's registered `InlineWidgetEditingPolicy`, an open set of
231
+ * behaviours rather than a yes-or-no choice. False falls through to `focus(0)`/`CURSOR_END`.
213
232
  */
214
233
  enterEdgeWidget?(side: 'start' | 'end'): boolean;
215
234
  /**
216
- * Run a named block-local command resolved from a keybinding. `arg` carries the
217
- * binding's static argument as `unknown` — the handler must type-guard it and ignore
218
- * an out-of-shape value. False lets the caller fall through to later keydown branches.
235
+ * Run a named block-local command resolved from a keybinding. `arg` passes the binding's
236
+ * fixed argument as `unknown`, so the handler must check its shape and ignore anything
237
+ * unexpected. False lets the caller fall through to later keydown branches.
219
238
  */
220
239
  runCommand?(id: import('./schema/command-id').AnyCommandId, arg?: unknown): boolean;
221
240
  /**
222
- * Whether the command's toggle-state reads ON at the surface's own caret or selection —
223
- * the read a toolbar paints a pressed state from. Absent, or an id with no toggle-state,
224
- * reads inactive.
241
+ * Whether the command's toggle reads on at this block's own caret or selection: the read
242
+ * a toolbar paints a pressed state from. Absent, or an id with no toggle state, reads
243
+ * inactive.
225
244
  */
226
245
  isCommandActive?(id: import('./schema/command-id').AnyCommandId): boolean;
246
+ /**
247
+ * Run `run` once this block's shown widget source, which lives in the DOM only, is written
248
+ * back. A block that never shows one omits it; a command from outside the block waits on it.
249
+ */
250
+ afterSourceCommit?(run: () => void): void;
227
251
  /**
228
252
  * Current raw-offset selection in an editable leaf, a collapsed caret as
229
253
  * `{start: n, end: n}`. Captured before a right-click menu steals focus.
@@ -233,19 +257,21 @@ export interface BlockComponent {
233
257
  end: number;
234
258
  } | null;
235
259
  /**
236
- * Claim a copy/cut/paste the editor root received because a selection state this block
237
- * owns seats no native caret: a selected inline widget in a block with no text position
238
- * leaves the native selection empty, so the browser dispatches at `<body>`. The claim is
239
- * unconditional once the root has targeted this block, so there is nothing to report back:
240
- * the seam offers the event to one arm only, and never re-offers it elsewhere.
260
+ * Take a copy, cut or paste the editor root received because a selection this block owns
261
+ * puts no caret in the DOM: a selected inline widget in a block with no text position
262
+ * leaves the browser's selection empty, so the event fires at `<body>`. Taking it always
263
+ * succeeds once the root has picked this block, so there is nothing to report back: the
264
+ * root offers the event to one block only, and never offers it elsewhere.
241
265
  */
242
266
  claimRootClipboard?(event: ClipboardEvent): void;
243
267
  /**
244
- * Insert markdown at this surface's caret exactly as pasting it would, minus the
245
- * clipboard — the block half of `EditorInstance.insertMarkdown`. True means the paste
246
- * pipeline took the text, not that its commit has flushed. Omitted by non-editable blocks.
268
+ * Insert markdown at this block's caret exactly as pasting it would, minus the clipboard:
269
+ * the block half of `EditorInstance.insertMarkdown`. Return a promise that resolves once
270
+ * the insert has landed, so the editor can keep it in the undo entry of the gesture that
271
+ * asked for it; a plain true means only that the text was taken.
272
+ * Omitted by non-editable blocks.
247
273
  */
248
- insertMarkdown?(md: string): boolean;
274
+ insertMarkdown?(md: string): boolean | Promise<boolean>;
249
275
  /**
250
276
  * Run a clipboard action from the table cell's right-click menu against the offsets
251
277
  * captured at menu-open (focus/selection may have moved since).
@@ -255,34 +281,34 @@ export interface BlockComponent {
255
281
  end: number;
256
282
  }): Promise<void>;
257
283
  /**
258
- * Whether this component's own surface takes text input — a REPORT, never a gate. The
259
- * kind's descriptor `editable` is the declaration and the only flag the editor gates on
260
- * (merge eligibility, search scanning); this mirrors it for the mounted surface.
284
+ * Whether this component's own element takes text input: a report, never something the
285
+ * editor acts on. The kind descriptor's `editable` is the declaration and the only flag
286
+ * the editor tests (merge eligibility, search scanning); this mirrors it once mounted.
261
287
  */
262
288
  readonly editable: boolean;
263
289
  /** Whether focus may land on this block at all. This is the flag focus dispatch reads. */
264
290
  readonly focusable: boolean;
265
291
  }
266
292
  /**
267
- * Every member a container owes, promoted to required: a caret entering a container has
268
- * to descend, so the descent verbs are not "implement if you can" the way a leaf's
269
- * optionals are. `createContainerBlockComponent` returns this.
293
+ * Every member a container must provide, promoted to required: a caret entering a container
294
+ * has to descend into it, so the descent methods are not "implement if you can" the way a
295
+ * leaf's optional ones are. `createContainerBlockComponent` returns this.
270
296
  */
271
- export type ContainerBlockComponent = BlockComponent & Required<Pick<BlockComponent, 'getCursorPosition' | 'focusByPath' | 'getBlockComponentByPath' | 'revealByPath' | 'focusAtColumn' | 'isVerticallyTransparent' | 'enterEdgeWidget' | 'parkCaret'>>;
297
+ export type ContainerBlockComponent = BlockComponent & Required<Pick<BlockComponent, 'getCursorPosition' | 'focusByPath' | 'childList' | 'focusAtColumn' | 'isVerticallyTransparent' | 'enterEdgeWidget' | 'parkCaret'>>;
272
298
  /**
273
- * What a mounted block component publishes through `bind:this`: a leaf publishes the
274
- * surface itself, a container publishes it under the one `containerApi` export (Svelte 5
275
- * instance exports are individual declarations with no spread, so re-exporting a dozen
276
- * members by hand drops one). The union is the enforcement — a container publishing a
277
- * leaf-grade surface is a type error at its `defineBlockComponent` registration site.
299
+ * What a mounted block component publishes through `bind:this`: a leaf publishes the object
300
+ * itself, a container publishes it under the one `containerApi` export (Svelte 5 instance
301
+ * exports are separate declarations with no spread, so re-exporting a dozen members by hand
302
+ * drops one). The union is what enforces it: a container publishing only a leaf's members is
303
+ * a type error where `defineBlockComponent` registers it.
278
304
  */
279
305
  export type BlockComponentExports = BlockComponent | {
280
306
  readonly containerApi: ContainerBlockComponent;
281
307
  };
282
308
  /**
283
- * The `BlockComponent` behind a published instance — the one point that knows a
284
- * container's surface hides under `containerApi`. Returns the object it was handed,
285
- * never a wrapper: `publishRefSlot` compares identity, so a fresh one stomps a slot.
309
+ * The `BlockComponent` behind a published instance: the one place that knows a container's
310
+ * object hides under `containerApi`. Returns the object it was handed, never a wrapper,
311
+ * because `publishRefSlot` compares identity and a new object would overwrite the stored one.
286
312
  */
287
313
  export declare function resolveBlockSurface(exports: BlockComponentExports | undefined): BlockComponent | undefined;
288
314
  export {};
@@ -1,40 +1,48 @@
1
1
  /**
2
- * The view-layer contract every rendered block satisfies, plus the cursor sentinels and
3
- * ambient-prefix shape blocks produce. Orchestration reaches a block only through this flat
4
- * interface, so a capability a block lacks is an omitted optional member rather than a kind
5
- * check upstream; `ContainerBlockComponent` is the one promoted tier. Authoritative for
6
- * external authors: each member's docstring states its own contract.
2
+ * The contract every rendered block satisfies, plus the special caret values and the marker-prefix
3
+ * shape blocks produce. The editor reaches a block only through this flat interface, so something
4
+ * a block cannot do is a missing optional member, not a kind check upstream;
5
+ * `ContainerBlockComponent` is the stricter version. Each member's docstring states its contract.
7
6
  */
8
7
  /**
9
- * "Place cursor at end of content." Focus walkers fall through to their end-of-content
10
- * fallback when the offset exceeds the block's length, so MAX_SAFE_INTEGER always lands
11
- * there — a finite sentinel lands mid-block once content outgrows it.
8
+ * "Place cursor at end of content." Focus handlers fall back to the end of the content when
9
+ * the offset exceeds the block's length, so `MAX_SAFE_INTEGER` always lands there; a smaller
10
+ * fixed number would land mid-block once the content outgrew it.
12
11
  */
13
12
  export const CURSOR_END = Number.MAX_SAFE_INTEGER;
14
13
  /**
15
- * "Place cursor at start of content" — {@link CURSOR_END}'s twin, and NOT a synonym for 0. A
16
- * mode that paints no marker puts raw 0 out of the caret's reach behind a leading construct, so
17
- * an ARRIVAL says this and the door seats it on the first landable offset.
14
+ * "Place cursor at start of content": the counterpart of {@link CURSOR_END}, and not a synonym
15
+ * for 0. A mode that paints no marker puts raw byte 0 out of the caret's reach behind a leading
16
+ * construct, so a caret arriving here says this and lands on the first offset it can sit at.
18
17
  */
19
18
  export const CURSOR_START = -2;
20
19
  /**
21
- * "Raw byte 0 exactly" — the ONE seat the park door does not clamp. A live split's continuation
22
- * reopens a construct at byte 0 and typing must continue inside it (live-mode.md § 4.4), which
23
- * the landable clamp would move outside; every other caller wants the clamp (G2.12).
20
+ * "Raw byte 0 exactly": the one position `parkCaret` does not clamp. A live split's continuation
21
+ * reopens a construct at byte 0 and typing has to continue inside it (live-mode.md § 4.4), which
22
+ * the clamp would move outside; every other caller wants the clamp (G2.12).
24
23
  */
25
24
  export const CURSOR_EXACT_START = -3;
26
- /** Cascade focus to the last descendant and place the cursor at its start. */
27
- export const FOCUS_LAST_START = -1;
28
25
  /**
29
- * "End of this block's measurable range" for measurePartialRects' endOffset. Each
30
- * surface interprets it in its own coordinate system: text falls through to native
31
- * range clamping, TableBlock matches it explicitly to reach the last cell.
26
+ * How every container reads a caret offset it is entered with, so a list, a table and a table
27
+ * row agree: 0 and the two start values enter the first child unchanged, and `CURSOR_END` or a
28
+ * byte offset the last child at its end.
29
+ */
30
+ export function entryEdge(offset) {
31
+ if (offset === 0 || offset === CURSOR_START || offset === CURSOR_EXACT_START) {
32
+ return { child: 'first', offset, inside: false };
33
+ }
34
+ return { child: 'last', offset: CURSOR_END, inside: offset !== CURSOR_END };
35
+ }
36
+ /**
37
+ * "End of this block's measurable range" for `measurePartialRects`' `endOffset`. Each
38
+ * block reads it in its own coordinate system: text falls through to the browser's range
39
+ * clamping, `TableBlock` matches it explicitly to reach the last cell.
32
40
  */
33
41
  export const SELECTION_END = Number.MAX_SAFE_INTEGER;
34
42
  /**
35
- * The `BlockComponent` behind a published instance — the one point that knows a
36
- * container's surface hides under `containerApi`. Returns the object it was handed,
37
- * never a wrapper: `publishRefSlot` compares identity, so a fresh one stomps a slot.
43
+ * The `BlockComponent` behind a published instance: the one place that knows a container's
44
+ * object hides under `containerApi`. Returns the object it was handed, never a wrapper,
45
+ * because `publishRefSlot` compares identity and a new object would overwrite the stored one.
38
46
  */
39
47
  export function resolveBlockSurface(exports) {
40
48
  if (!exports)
@@ -1,14 +1,10 @@
1
1
  import type { NodeView } from './core/node-views';
2
- /**
3
- * These ids key Svelte's `{#each}`: process uniqueness, not unguessability. `crypto.randomUUID`
4
- * answers a question nobody asked here, at a per-block cost a large load pays in full
5
- * (`performance.md`), and is secure-context-only besides.
6
- */
2
+ /** Keys for Svelte's `{#each}`: unique within the process and cheap per block, not unguessable. */
7
3
  export declare function generateBlockId(): string;
8
4
  export declare function assignIds(children: readonly NodeView[]): string[];
9
- /**
10
- * Initialize `childIds` before a freshly-parsed subtree is spliced into the live tree: a
11
- * reused container reads it in its keyed-each synchronously, so a missing array surfaces
12
- * as `undefined` keys.
13
- */
5
+ /** Ids for `next`, a re-read of `previous`: an unchanged run at either end keeps its ids, the first
6
+ * changed block keeps its own (the edit was in it), and each block the re-read made is new. */
7
+ export declare function idsAcrossReread(previous: readonly NodeView[], ids: readonly string[] | undefined, next: readonly NodeView[]): string[] | undefined;
8
+ /** Call before a freshly parsed subtree is spliced in: a reused container reads `childIds` in its
9
+ * keyed each synchronously, so a missing array shows up as `undefined` keys. */
14
10
  export declare function assignChildIdsDeep(node: NodeView): void;