@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,41 +1,38 @@
1
1
  /**
2
- * Caret placement from a viewport point: the dead-space click (padding beside a block, the area
3
- * below the last one) and the public `placeCaretAtPoint`, which shares the walk under the gesture
4
- * guards. A y belonging to no band may name an eligible gap boundary; otherwise the point clamps
5
- * into the nearest mounted block's box (`nearest-block.ts`) and resolves there, no kind named.
6
- * Only what is mounted is measured, so "below the last block" resolves against the CST (VR-6).
2
+ * Places the caret from a viewport point, for a click in the editor's dead space (the padding
3
+ * beside a block, the area below the last one) and the public `placeCaretAtPoint` alike. A point
4
+ * between two blocks may become a gap caret; otherwise it clamps into the nearest mounted block
5
+ * and descends to the child level with it. Only mounted blocks are measured.
7
6
  */
8
7
  import { CURSOR_END } from '../block-component';
9
- import { blockAtPoint } from './block-hit-test';
10
- import { measureBlocks, nearestBand, probePointIn } from './nearest-block';
8
+ import { blockAtPoint, holdsOwnText } from './block-hit-test';
9
+ import { descendToLevelChild, measureBlocks, nearestBand, probePointIn } from './nearest-block';
11
10
  import { placeGapCaret } from './caret-doors';
12
11
  import { canGapStop } from './gap-caret';
13
- import { offsetFromViewportPoint } from '../cursor/point-offset';
12
+ import { caretOffsetAtPoint } from '../cursor/point-offset';
13
+ import { docPathFrom } from '../cursor/coordinate-spaces';
14
14
  export function createDeadSpaceCaret(deps) {
15
- // The press half of the gesture, because `click` alone cannot tell a dead-space click from a
16
- // drag that STARTED on a block and released in the margin: both report dead space as target.
15
+ // Tracked from pointerdown because `click` alone cannot tell a dead-space click from a drag
16
+ // that started on a block and released in the margin: both report dead space as the target.
17
17
  let pressedOnDeadSpace = false;
18
- /** The end-of-document gesture when the tail is windowed out: reveal the real last block,
19
- * then land at its end — which is where the trailing-corner probe below lands when the
20
- * slice already reaches it. */
18
+ /** A click below the document when its tail is not mounted: land at the real last block's end,
19
+ * which is where the clamped point below lands once the tail is mounted. */
21
20
  async function landAtDocumentEnd() {
22
21
  const index = deps.lastBlockIndex();
23
22
  if (index < 0)
24
23
  return;
25
- const component = await deps.revealBlock(index);
26
- if (!component?.focusable)
27
- return;
24
+ // Before the landing, which then records the end it lands at as the outside of a closer.
28
25
  deps.resetSelectionForClick();
29
- component.focus(CURSOR_END);
26
+ await deps.land({ path: docPathFrom([index]), offset: CURSOR_END });
30
27
  }
31
28
  function placeAtPoint(root, x, y) {
32
- // One measuring pass for both walks: the boundary question and the band clamp read the
33
- // same layout, and a second query would force it again inside one click.
29
+ // One measuring pass: the gap check and the nearest-block clamp read the same layout, and
30
+ // a second query would force layout again inside one click.
34
31
  const blocks = measureBlocks(root);
35
32
  const boundary = rootBoundaryOutsideBands(blocks, y);
36
33
  if (boundary !== null && canGapStop(deps.gapScope, [], boundary)) {
37
- // The preamble first, as on the block landing below — it clears the gap, so
38
- // nothing may run between it and the door. The door ends a live range (G2.12).
34
+ // The reset runs first, as for a block below: it clears the gap caret, so nothing may
35
+ // run between it and `placeGapCaret`, which also ends a live range (G2.12).
39
36
  deps.resetSelectionForClick();
40
37
  placeGapCaret(deps.gapScope.selection, { parentPath: [], index: boundary });
41
38
  return true;
@@ -43,22 +40,18 @@ export function createDeadSpaceCaret(deps) {
43
40
  const band = nearestBand(blocks.map((b) => b.rect), y);
44
41
  if (!band)
45
42
  return false;
46
- // Below the last MOUNTED block is not below the document while a tail is windowed out,
47
- // and a host's own below-the-editor handler resolves against the whole document — so
48
- // the two would land a document apart. The reveal road is the only answer available
49
- // here: the target has no box to probe until it mounts.
43
+ // Below the last mounted block is not below the document while a tail is windowed out,
44
+ // and the real last block has no box to hit-test until it mounts.
50
45
  if (band.belowAll && lastMountedTopLevel(blocks) !== deps.lastBlockIndex()) {
51
46
  void landAtDocumentEnd();
52
47
  return true;
53
48
  }
54
- const { x: probeX, y: probeY } = probePointIn(blocks[band.index].rect, x, y, band.belowAll);
55
- const hit = blockAtPoint(root, probeX, probeY);
56
- if (!hit)
49
+ const near = hitInBand(root, blocks, band, x, y);
50
+ if (!near)
57
51
  return false;
58
- // Prose lands the caret on the line the click is level with, as any editor does. A block
59
- // with no character surface (an equation, a table, a rule) has no such line, and a revealed
60
- // source is one only while it is being edited: a click that was not ON the block is a click
61
- // on nothing, and focuses nothing (the click's owner then blurs what was being edited).
52
+ const { hit, x: probeX, y: probeY } = near;
53
+ // A block with no text line (an equation, a table, source shown only while editing) takes
54
+ // only a click on its content; a click beside it focuses nothing, so the edit blurs.
62
55
  const transient = hit.charSurface?.classList.contains('md-source-surface') ?? false;
63
56
  if ((!hit.charSurface || transient) && !pressedOnBlockContent(root, x, y))
64
57
  return false;
@@ -68,41 +61,44 @@ export function createDeadSpaceCaret(deps) {
68
61
  const component = deps.getBlockComponent(hit.path);
69
62
  if (!component?.focusable)
70
63
  return false;
71
- // An internal landing needs the deep door; a block declaring the hook without it
72
- // can't be reached, and declining here keeps the selection intact.
64
+ // A caret target inside a grid needs `focusByPath`; declining a block that lacks it keeps
65
+ // the selection intact.
73
66
  if (landing.path.length > 0 && !component.focusByPath)
74
67
  return false;
75
- // Only once the landing is known, so a declined point leaves the selection as it
76
- // found it: a live range stays painted over a caret placed elsewhere, and the next
77
- // printable key type-replaces the whole of it.
68
+ // The reset waits for a known caret target, so a declined point leaves a live range painted
69
+ // and the next printable key replaces the whole of it.
78
70
  deps.resetSelectionForClick();
79
- // Both doors end the live range (`selection/caret-doors.ts`); `focusByPath` reaches
80
- // the leaf's own `focus`.
71
+ // Both calls end a live range (`selection/caret-doors.ts`); `focusByPath` reaches the
72
+ // leaf's own `focus`.
81
73
  if (landing.path.length === 0)
82
74
  component.focus(landing.offset);
83
75
  else
84
76
  component.focusByPath(landing.path, landing.offset);
85
- // The probe point is inside the block's box, so the surface answers it exactly as it
86
- // answers a click there: a landing at an atomic widget's edge has nothing to show for
87
- // itself until the surface's own snap paints it.
88
- leafOf(component, landing.path)?.snapCaretToPoint?.(probeX, probeY);
77
+ // The block's own snap answers the clamped point as a click there, so a caret beside a
78
+ // non-editable widget is painted rather than showing nothing.
79
+ const leaf = landing.path.length === 0
80
+ ? component
81
+ : deps.getBlockComponent([...hit.path, ...landing.path]);
82
+ leaf?.snapCaretToPoint?.(probeX, probeY);
89
83
  return true;
90
84
  }
91
- function anchorAtPoint(root, x, y) {
85
+ /** The nearest block's hit for a click, with the point clamped into its box. */
86
+ function hitNearPoint(root, x, y) {
92
87
  const blocks = measureBlocks(root);
93
88
  const band = nearestBand(blocks.map((b) => b.rect), y);
94
89
  if (!band)
95
90
  return null;
96
91
  if (band.belowAll && lastMountedTopLevel(blocks) !== deps.lastBlockIndex())
97
92
  return null;
98
- const { x: probeX, y: probeY } = probePointIn(blocks[band.index].rect, x, y, band.belowAll);
99
- const hit = blockAtPoint(root, probeX, probeY);
100
- if (!hit)
93
+ return hitInBand(root, blocks, band, x, y);
94
+ }
95
+ function anchorAtPoint(root, x, y) {
96
+ const near = hitNearPoint(root, x, y);
97
+ if (!near)
101
98
  return null;
102
- // No character surface to measure against — a rendered equation, a rule, a table — so the
103
- // block is the unit, and the funnel picks the side by the drag's direction. An offset would
104
- // put a range END at the block's start and leave it out; a cell would make the drag a caret
105
- // placement in the nearest column. A rule names no landing at all, and is a unit all the same.
99
+ const { hit, x: probeX, y: probeY } = near;
100
+ // No text to measure against: an offset would put a range end at the block's start and
101
+ // leave the block out, and a cell would turn the drag into a caret placement.
106
102
  if (!hit.charSurface)
107
103
  return { path: hit.path.slice(), wholeBlock: true };
108
104
  const landing = landingFor(hit, probeX, probeY);
@@ -112,9 +108,13 @@ export function createDeadSpaceCaret(deps) {
112
108
  return { path: hit.path.slice(), wholeBlock: true };
113
109
  return { path: hit.path.slice(), offset: landing.offset };
114
110
  }
111
+ function blockPathNearPoint(root, x, y) {
112
+ return hitNearPoint(root, x, y)?.hit.path.slice() ?? null;
113
+ }
115
114
  return {
116
115
  isDeadSpaceTarget: isDeadSpace,
117
116
  anchorAtPoint,
117
+ blockPathNearPoint,
118
118
  notePress(root, event) {
119
119
  pressedOnDeadSpace =
120
120
  isDeadSpace(root, event.target) &&
@@ -127,9 +127,8 @@ export function createDeadSpaceCaret(deps) {
127
127
  pressedOnDeadSpace = false;
128
128
  if (!pressed || !isDeadSpace(root, event.target))
129
129
  return false;
130
- // A drag that ended in the margin leaves a real range behind; collapsing it would
131
- // throw away what the user just selected. This sees only NATIVE ranges: a cross-block
132
- // range is overlay-painted with the native selection empty, and is ended below instead.
130
+ // A drag that ended in the margin leaves a native range the user just selected. A
131
+ // cross-block range leaves the native selection empty, so it is ended below instead.
133
132
  const native = root.ownerDocument.defaultView?.getSelection();
134
133
  if (native && native.rangeCount > 0 && !native.isCollapsed)
135
134
  return false;
@@ -139,7 +138,7 @@ export function createDeadSpaceCaret(deps) {
139
138
  };
140
139
  }
141
140
  // ── Internal ───────────────────────────────────────────────────────────────
142
- /** The last top-level index the slice currently holds; -1 when none is mounted. */
141
+ /** The last mounted top-level index; -1 when none is mounted. */
143
142
  function lastMountedTopLevel(blocks) {
144
143
  for (let i = blocks.length - 1; i >= 0; i--) {
145
144
  const path = blocks[i].path;
@@ -148,18 +147,14 @@ function lastMountedTopLevel(blocks) {
148
147
  }
149
148
  return -1;
150
149
  }
151
- /**
152
- * The root-level boundary a `y` belonging to NO band names: the editor's leading padding,
153
- * and the space between two adjacent bands where a layout leaves one. Below the last band
154
- * is excluded — that y is the end-of-document gesture, and under windowing the last MOUNTED
155
- * band is not the last block. Indices come off the path attribute for the same reason.
156
- */
150
+ /** The root-level gap a `y` outside every block's box names. Below the last block is excluded:
151
+ * that click means end of document, and the last mounted block may not be the last block. */
157
152
  function rootBoundaryOutsideBands(blocks, y) {
158
153
  const bands = blocks.flatMap((b) => b.path?.length === 1 ? [{ index: b.path[0], top: b.rect.top, bottom: b.rect.bottom }] : []);
159
154
  if (bands.length === 0)
160
155
  return null;
161
- // Only when the document's own first block is mounted: above a windowed-out slice the
162
- // blocks the point sits over are not the ones the boundary would name.
156
+ // Only when the document's first block is mounted: above a windowed-out head, the blocks
157
+ // under the point are not the ones the gap would name.
163
158
  if (y < bands[0].top)
164
159
  return bands[0].index === 0 ? 0 : null;
165
160
  for (let i = 1; i < bands.length; i++) {
@@ -170,26 +165,22 @@ function rootBoundaryOutsideBands(blocks, y) {
170
165
  }
171
166
  return null;
172
167
  }
173
- /** The component the landing addresses: this one on a character surface, else the leaf a
174
- * coordinate-addressed kind's internal path names. */
175
- function leafOf(component, path) {
176
- if (path.length === 0)
177
- return component;
178
- return component.getBlockComponentByPath?.(path) ?? null;
168
+ /** The block a band answers for a point: the point clamped into the band's box, then handed
169
+ * down to the child level with it when the box is a container's. */
170
+ function hitInBand(root, blocks, band, x, y) {
171
+ const probe = probePointIn(blocks[band.index].rect, x, y, band.belowAll);
172
+ const hit = blockAtPoint(root, probe.x, probe.y);
173
+ return hit && descendToLevelChild(root, { hit, ...probe }, band.belowAll);
179
174
  }
180
- /**
181
- * The targets that mean "dead space": the root, and any block list inside it. A host that
182
- * widens or pads `.block-list` moves the whole visible side gutter onto the list, which
183
- * reports itself rather than the root. Everything else the editor renders has its own
184
- * identity and is declined here.
185
- */
175
+ /** The root and any block list inside it: a host that pads `.block-list` moves the side gutter
176
+ * onto the list, which then reports itself as the click target. */
186
177
  function isDeadSpace(root, target) {
187
178
  if (target === root)
188
179
  return true;
189
180
  return target instanceof Element && target.classList.contains('block-list');
190
181
  }
191
- /** Whether the ORIGINAL point (not the clamped probe) sits inside some block's content: on a
192
- * descendant of a host, not on the host's own box or the dead space around it. */
182
+ /** Whether the original point (not the clamped one) sits inside some block's content: on a
183
+ * descendant of a block host, not on the host's own box or the dead space around it. */
193
184
  function pressedOnBlockContent(root, x, y) {
194
185
  const direct = document.elementFromPoint(x, y);
195
186
  if (!(direct instanceof Element) || isDeadSpace(root, direct))
@@ -197,23 +188,24 @@ function pressedOnBlockContent(root, x, y) {
197
188
  const host = direct.closest('[data-block-path]');
198
189
  return host !== null && host !== direct;
199
190
  }
200
- /**
201
- * Where the caret goes for a resolved hit: an internal child path (empty for a
202
- * character-addressed surface) plus the offset within that leaf. Null declines the click.
203
- */
191
+ /** Where the caret goes for a hit: an inner child path (empty for a text block) and the offset
192
+ * within that leaf; null declines the click. */
204
193
  function landingFor(hit, probeX, probeY) {
205
194
  if (hit.caretTargetAtPoint)
206
195
  return hit.caretTargetAtPoint(probeX, probeY);
207
- // A kind with only the drag hook addresses cells and named no caret landing.
196
+ // A kind with only the drag hook addresses cells and names no caret target.
208
197
  if (hit.foreignDragHitTest)
209
198
  return null;
210
- // A leaf with no character surface (a rule, a folded equation) reached here was pressed on
211
- // its own box: the block itself is the landing, and its `focus` ignores the offset.
199
+ // A leaf with no text (a rule, a rendered equation) reaches here only when clicked on its
200
+ // own box: the block itself is the target, and its `focus` ignores the offset.
212
201
  if (!hit.charSurface)
213
202
  return { path: [], offset: 0 };
214
- // Reading mode flips contenteditable off, and a non-editable leaf has no character position.
215
- if (!hit.charSurface.matches('[contenteditable="true"]'))
203
+ // Reading mode turns editing off, so no text is a block's own there. A container that kept
204
+ // the point has only its children's text, none of it level with the point.
205
+ if (!holdsOwnText(hit))
216
206
  return null;
217
- const offset = offsetFromViewportPoint(hit.charSurface, probeX, probeY);
207
+ // A block whose box pads its own text (a code block) lands a point in that padding on the
208
+ // nearest line.
209
+ const offset = caretOffsetAtPoint(hit.charSurface, probeX, probeY);
218
210
  return offset === null ? null : { path: [], offset };
219
211
  }
@@ -7,6 +7,7 @@ import type { UserScrollport } from '../cursor/scroll-ancestors';
7
7
  import type { SelectionState } from './selection-state.svelte';
8
8
  import type { SelectionEndpoint } from './primitives';
9
9
  import type { BlockElLookup } from '../editor-keys';
10
+ import { type SelectionPoint } from './primitives';
10
11
  export interface DragContext {
11
12
  editorRoot: HTMLElement;
12
13
  /** What autoscrolls this drag: an element, or the window (`cursor/scroll-ancestors`). */
@@ -15,11 +16,27 @@ export interface DragContext {
15
16
  getBlockElByPath: BlockElLookup;
16
17
  /** Aborted on editor unmount; forwarded to the session's teardown. */
17
18
  lifetimeSignal?: AbortSignal;
18
- /**
19
- * The press began outside every editable surface (the editor's margin), so no native drag
20
- * is extending a selection underneath: the session paints the same-block range itself.
21
- */
22
- paintSameBlock?: boolean;
19
+ /** Read at each move: the drag began where no native drag extends a selection underneath (the
20
+ * editor's margin, a press it placed itself), so the session paints the same-block range. */
21
+ paintSameBlock?: () => boolean;
22
+ /** A drag continuing a double or triple click: the range grows by that click's unit. */
23
+ granularity?: DragGranularity;
24
+ }
25
+ /** The unit a multi-click drag grows by. Spans are raw offsets; the span the click itself
26
+ * selected is the floor the range never shrinks below. */
27
+ export interface DragGranularity {
28
+ /** The element the click selected in; a pointer over no other block paints here. */
29
+ surface: HTMLElement;
30
+ anchorSpan: {
31
+ start: number;
32
+ end: number;
33
+ };
34
+ spanAround(offset: number): {
35
+ start: number;
36
+ end: number;
37
+ };
38
+ /** A focus in another block, pushed to the unit's boundary on the side away from the anchor. */
39
+ expandFocus(point: SelectionPoint, side: 'before' | 'after'): SelectionEndpoint;
23
40
  }
24
41
  /** Document-level pointer listeners for a cross-block drag started at `down`, plus a disposer. */
25
42
  export declare function installDragListener(ctx: DragContext, anchorPoint: SelectionEndpoint, down: PointerEvent): {
@@ -3,6 +3,7 @@
3
3
  * `createPointerDragSession`, whose document-level listeners deliver events even after the
4
4
  * pointer leaves the originating block.
5
5
  */
6
+ import { caretOffsetAtPoint } from '../cursor/point-offset';
6
7
  import { applyCollapsedCaret, applySingleBlockRange, clearNativeSelection } from './native-bridge';
7
8
  import { isWholeBlockEndpoint } from './primitives';
8
9
  import { comparePaths } from './path-math';
@@ -12,25 +13,27 @@ import { blockNearPoint } from './nearest-block';
12
13
  /** Document-level pointer listeners for a cross-block drag started at `down`, plus a disposer. */
13
14
  export function installDragListener(ctx, anchorPoint, down) {
14
15
  function processMove(clientX, clientY) {
15
- // The nearest block, not the one under the pointer: moves coalesce to one per frame, so a
16
- // burst ending in the margin would otherwise discard every on-block sample in it, and an
17
- // autoscrolling drag sends nothing but off-block points.
16
+ // The nearest block, not the one under the pointer: moves coalesce to one per frame, and
17
+ // an autoscrolling drag sends nothing but off-block points.
18
18
  const near = blockNearPoint(ctx.editorRoot, clientX, clientY);
19
19
  if (!near)
20
20
  return;
21
+ if (ctx.granularity) {
22
+ processGranularMove(ctx.granularity, near, clientX, clientY);
23
+ return;
24
+ }
21
25
  if (comparePaths(near.path, anchorPoint.path) === 0) {
22
26
  if (!('offset' in anchorPoint)) {
23
- if (ctx.paintSameBlock)
27
+ if (ctx.paintSameBlock?.())
24
28
  takeAnchorBlockWhole();
25
29
  return;
26
30
  }
27
31
  if (ctx.selection.isCrossBlock) {
28
- // Pointer returned to the anchor block: collapse so the overlay stops painting a
29
- // stale remote range. The browser's drag has been extending the native selection
30
- // underneath all along, so handing back gives the right single-block highlight.
32
+ // Back in the anchor block: the browser's drag has been extending the native
33
+ // selection all along, so collapsing the cross-block range restores its highlight.
31
34
  ctx.selection.collapse();
32
35
  }
33
- if (ctx.paintSameBlock)
36
+ if (ctx.paintSameBlock?.())
34
37
  paintSameBlockRange(near.endpointHere());
35
38
  return;
36
39
  }
@@ -39,8 +42,8 @@ export function installDragListener(ctx, anchorPoint, down) {
39
42
  return;
40
43
  if (isWholeBlockEndpoint(focusPoint) && !reachedCentreLine(near.path, clientY))
41
44
  return;
42
- // A whole unit re-enters rather than extends: its anchor's side is resolved against the
43
- // new focus by the entry, where an extend would keep the unit's start as the anchor.
45
+ // A whole-block range re-enters rather than extends: entering picks the anchor's side
46
+ // against the new focus, where extending would keep the block's start as the anchor.
44
47
  if (!ctx.selection.isCrossBlock || ctx.selection.wholeUnitPath) {
45
48
  ctx.selection.enterCrossBlock(anchorPoint, focusPoint);
46
49
  }
@@ -48,10 +51,45 @@ export function installDragListener(ctx, anchorPoint, down) {
48
51
  ctx.selection.extendFocus(focusPoint);
49
52
  }
50
53
  }
51
- // A block with no positions inside it is in or out as a unit, and the unit joins the range
52
- // once the pointer has crossed its centre line coming from the anchor's side: a sweep that
53
- // merely touched its edge has not asked for it. Not reached, the last focus stands, so the
54
- // range grows to the block only when the pointer commits to it.
54
+ // The anchor's side follows the drag's direction (the clicked span ends the range going up,
55
+ // starts it going down), so a direction change re-enters; a same-side move only extends.
56
+ let anchorAfter = null;
57
+ function processGranularMove(unit, near, clientX, clientY) {
58
+ const anchorIsChar = 'offset' in anchorPoint && !anchorPoint.cellCoordinate;
59
+ if (!anchorIsChar || comparePaths(near.path, anchorPoint.path) === 0) {
60
+ if (ctx.selection.isCrossBlock)
61
+ ctx.selection.collapse();
62
+ anchorAfter = null;
63
+ const offset = caretOffsetAtPoint(unit.surface, clientX, clientY);
64
+ if (offset === null)
65
+ return;
66
+ const span = unit.spanAround(offset);
67
+ unit.surface.focus({ preventScroll: true });
68
+ applySingleBlockRange(unit.surface, Math.min(unit.anchorSpan.start, span.start), Math.max(unit.anchorSpan.end, span.end));
69
+ return;
70
+ }
71
+ const focusPoint = near.endpointHere();
72
+ if (!focusPoint)
73
+ return;
74
+ if (isWholeBlockEndpoint(focusPoint) && !reachedCentreLine(near.path, clientY))
75
+ return;
76
+ const after = comparePaths(near.path, anchorPoint.path) > 0;
77
+ const focus = isWholeBlockEndpoint(focusPoint)
78
+ ? focusPoint
79
+ : unit.expandFocus(focusPoint, after ? 'after' : 'before');
80
+ if (!ctx.selection.isCrossBlock || anchorAfter !== after) {
81
+ anchorAfter = after;
82
+ ctx.selection.enterCrossBlock({
83
+ path: anchorPoint.path.slice(),
84
+ offset: after ? unit.anchorSpan.start : unit.anchorSpan.end
85
+ }, focus);
86
+ }
87
+ else {
88
+ ctx.selection.extendFocus(focus);
89
+ }
90
+ }
91
+ // A block with no positions inside joins the range only once the pointer crosses its centre
92
+ // line from the anchor's side; a sweep that merely touches its edge has not asked for it.
55
93
  function reachedCentreLine(path, clientY) {
56
94
  const box = ctx.getBlockElByPath(path)?.getBoundingClientRect();
57
95
  if (!box)
@@ -59,16 +97,13 @@ export function installDragListener(ctx, anchorPoint, down) {
59
97
  const middle = box.top + box.height / 2;
60
98
  return comparePaths(anchorPoint.path, path) < 0 ? clientY >= middle : clientY <= middle;
61
99
  }
62
- // A whole-block anchor (a table, an equation) has nothing to paint natively either, and a range
63
- // that only appears once the pointer reaches ANOTHER block reads as a drag that does nothing.
64
- // The block is taken whole the moment the pointer moves, as the unit the state stores and the
65
- // overlay paints (`wholeUnitPath`); a pointer returning from outside takes it whole again.
100
+ // A whole-block anchor (a table, an equation) has nothing to paint natively, so the block is
101
+ // taken whole the moment the pointer moves, or the drag would look like it does nothing.
66
102
  function takeAnchorBlockWhole() {
67
103
  if (ctx.selection.wholeUnitPath)
68
104
  return;
69
- // Both ends whole: the pointer's position INSIDE the block is not a rectangle to grow (a
70
- // press beside a table dragged up over it would otherwise select the rows below the
71
- // pointer, the opposite of the sweep). The block is the unit until the drag leaves it.
105
+ // Both ends whole: a click beside a table dragged up over it would otherwise select the
106
+ // rows below the pointer, the opposite of the sweep.
72
107
  ctx.selection.enterCrossBlock(anchorPoint, {
73
108
  path: anchorPoint.path.slice(),
74
109
  wholeBlock: true
@@ -87,8 +122,8 @@ export function installDragListener(ctx, anchorPoint, down) {
87
122
  blockEl.focus({ preventScroll: true });
88
123
  applySingleBlockRange(blockEl, Math.min(anchorPoint.offset, focusPoint.offset), Math.max(anchorPoint.offset, focusPoint.offset));
89
124
  }
90
- // Pointer may land on a scrollable element directly (the table's `.table-block` edge), so
91
- // search from `target` itself, not its parent.
125
+ // The pointer may land on a scrollable element directly (the table's `.table-block` edge),
126
+ // so the search starts from `target` itself, not its parent.
92
127
  function scrollableSelfOrAncestor(target) {
93
128
  let cur = target;
94
129
  while (cur && cur !== ctx.editorRoot) {
@@ -122,24 +157,21 @@ export function installDragListener(ctx, anchorPoint, down) {
122
157
  lifetimeSignal: ctx.lifetimeSignal
123
158
  });
124
159
  }
125
- /**
126
- * Plant a collapsed native caret in the focus block as a paste/key-dispatch anchor; without it
127
- * Chromium routes paste events to <body>. The highlight still comes from SelectionOverlay.
128
- */
160
+ /** Plants a collapsed native caret in the focus block so paste and key events have a target;
161
+ * without it Chromium routes paste events to <body>. */
129
162
  function parkCaretInFocusBlock(ctx) {
130
163
  const focus = ctx.selection.focus;
131
164
  if (!focus)
132
165
  return;
133
- // A whole unit has no text node for a caret: focus parks on the editor root, whose keydown
134
- // and clipboard arms serve a custom range (as they do for a windowed-out block), with no
135
- // native range left behind for the browser to act on.
166
+ // A whole-block range has no text node for a caret, so the editor root takes focus and its
167
+ // keydown and clipboard handlers serve the range.
136
168
  if (ctx.selection.wholeUnitPath) {
137
169
  clearNativeSelection();
138
170
  ctx.editorRoot.focus({ preventScroll: true });
139
171
  return;
140
172
  }
141
173
  // A drag ending inside a table leaves a focus addressing the table block by cell index; the
142
- // landing is the cell that actually holds a caret.
174
+ // caret goes in the cell that actually holds one.
143
175
  const landing = ctx.selection.cellLandingFor(focus);
144
176
  const blockEl = ctx.getBlockElByPath(landing.path);
145
177
  if (!blockEl)
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Where a caret can live BETWEEN two sibling blocks: the boundaries no block's own editing
3
- * surface can reach, read off the kinds' `gapEdges` declarations. Eligibility is pure — doc
4
- * in, boolean out; `tryGapStop` is the one seam that turns it into an arrival.
5
- * The gap is deliberately not a `SelectionPoint`: it is never a cross-block endpoint.
2
+ * Where a caret can sit between two sibling blocks: the boundaries no block's own editable
3
+ * element can reach, read off the kinds' `gapEdges`. The eligibility checks are pure (document
4
+ * in, boolean out); `tryGapStop` is the one call that places the caret. A gap is deliberately
5
+ * not a `SelectionPoint`: it is never a cross-block endpoint.
6
6
  */
7
7
  import type { DocumentView, NodeView } from '../core/node-views';
8
8
  import { type PresentationMode } from '../presentation-mode';
@@ -12,36 +12,25 @@ export interface GapCaretPosition {
12
12
  parentPath: number[];
13
13
  index: number;
14
14
  }
15
- /**
16
- * A boundary is eligible when every block facing it declares that edge — an unregistered or
17
- * undeclared kind refuses on its side. The root's trailing boundary is excluded: the
18
- * move-past-end append (`editor-actions/focus/focus.ts`) already owns it.
19
- */
15
+ /** A boundary is eligible when every block facing it declares that edge. The root's trailing
16
+ * boundary is excluded, since the move-past-end append already handles it. */
20
17
  export declare function gapEligibleAt(doc: DocumentView, parentPath: number[], index: number): boolean;
21
- /**
22
- * The same rule for a scope that already holds its own children — the renderer, which has them
23
- * in hand and no path to resolve. `ownsTrailingBoundary` is false for the root, whose trailing
24
- * boundary belongs to the move-past-end append.
25
- */
18
+ /** The same rule for a caller that already has the children and no path to resolve;
19
+ * `ownsTrailingBoundary` is false for the root. */
26
20
  export declare function gapEligibleAmong(children: readonly NodeView[], index: number, ownsTrailingBoundary: boolean): boolean;
27
- /**
28
- * The children a gap could live between at `parentPath`, or null when that path names no
29
- * scope a BlockList renders. Shared with the undo restore road, so a drifted path cannot
30
- * park a caret somewhere nothing would paint it.
31
- */
21
+ /** The children a gap could sit between at `parentPath`, or null when that path names no child
22
+ * list a BlockList renders, so a stale path cannot put a caret where nothing paints it. */
32
23
  export declare function gapScopeChildren(doc: DocumentView, parentPath: number[]): readonly NodeView[] | null;
33
- /** What an arrival needs beyond the boundary itself. Getters, so a bound stop reads live. */
24
+ /** What placing a gap caret needs beyond the boundary itself. Its reads are getters, so a stop
25
+ * bound early sees live values. */
34
26
  export interface GapStopScope {
35
27
  getDoc: () => DocumentView;
36
28
  selection: SelectionState;
37
- getPresentationMode?: () => PresentationMode;
29
+ getPresentationMode: () => PresentationMode;
38
30
  }
39
- /**
40
- * Whether an arriving gesture may park here. Reading mode never may: it has no caret at
41
- * all, so the gesture keeps its old landing. A caller that must act BETWEEN the decision
42
- * and the landing asks this, then goes through the door itself.
43
- */
31
+ /** Whether a gesture may put the caret in this gap; reading mode has no caret, so never. A caller
32
+ * that must act between the decision and the placement asks this, then calls `placeGapCaret`. */
44
33
  export declare function canGapStop(scope: GapStopScope, parentPath: number[], boundaryIndex: number): boolean;
45
- /** Park the caret at an eligible `boundaryIndex`, reporting whether it did — so a
46
- * traversal can stop instead of entering its target. */
34
+ /** Puts the caret at an eligible `boundaryIndex` and reports whether it did, so a traversal
35
+ * can stop instead of entering its target. */
47
36
  export declare function tryGapStop(scope: GapStopScope, parentPath: number[], boundaryIndex: number): boolean;