@voithos-labs/aragonite 0.10.4 → 0.10.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1021) hide show
  1. package/README.md +2 -2
  2. package/dist/a11y-strings.d.ts +11 -5
  3. package/dist/a11y-strings.js +60 -5
  4. package/dist/action-contracts.d.ts +242 -155
  5. package/dist/action-contracts.js +2 -2
  6. package/dist/active-editor.d.ts +3 -3
  7. package/dist/active-editor.js +8 -9
  8. package/dist/ambient/ambient-dom.d.ts +2 -5
  9. package/dist/ambient/ambient-dom.js +16 -62
  10. package/dist/assert.js +6 -5
  11. package/dist/block-component.d.ts +135 -109
  12. package/dist/block-component.js +30 -22
  13. package/dist/block-id.d.ts +6 -10
  14. package/dist/block-id.js +25 -14
  15. package/dist/bounded-memo.d.ts +5 -5
  16. package/dist/bounded-memo.js +6 -6
  17. package/dist/components/BlockDragHandle.svelte +12 -21
  18. package/dist/components/BlockHost.svelte +56 -134
  19. package/dist/components/BlockList.svelte +22 -19
  20. package/dist/components/DecorationOverlay.svelte +9 -10
  21. package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
  22. package/dist/components/Editor.svelte +603 -1126
  23. package/dist/components/Editor.svelte.d.ts +9 -20
  24. package/dist/components/GapCaret.svelte +26 -59
  25. package/dist/components/SelectionOverlay.svelte +26 -51
  26. package/dist/components/SelectionOverlay.svelte.d.ts +5 -3
  27. package/dist/components/TailInsert.svelte +8 -55
  28. package/dist/components/TailInsert.svelte.d.ts +4 -6
  29. package/dist/components/block-content-selector.d.ts +11 -11
  30. package/dist/components/block-content-selector.js +11 -11
  31. package/dist/components/block-el-lookup.d.ts +6 -0
  32. package/dist/components/block-el-lookup.js +27 -0
  33. package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
  34. package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
  35. package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
  36. package/dist/components/blocks/code/CodeBlock.svelte +255 -276
  37. package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
  38. package/dist/components/blocks/code/CodeBlockRail.svelte +72 -87
  39. package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
  40. package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
  41. package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
  42. package/dist/components/blocks/code/code-bootstrap.js +29 -34
  43. package/dist/components/blocks/code/code-context-actions.js +5 -4
  44. package/dist/components/blocks/code/code-enter.js +2 -2
  45. package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
  46. package/dist/components/blocks/code/code-fence-boundary.js +40 -66
  47. package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
  48. package/dist/components/blocks/code/code-fence-exit.js +24 -25
  49. package/dist/components/blocks/code/code-indent.d.ts +2 -2
  50. package/dist/components/blocks/code/code-indent.js +4 -7
  51. package/dist/components/blocks/code/code-languages.d.ts +16 -12
  52. package/dist/components/blocks/code/code-languages.js +57 -39
  53. package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
  54. package/dist/components/blocks/code/code-paste-surface.js +9 -18
  55. package/dist/components/blocks/code/code-renderer.d.ts +21 -5
  56. package/dist/components/blocks/code/code-renderer.js +90 -125
  57. package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
  58. package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
  59. package/dist/components/blocks/directive/activate-directives.js +18 -13
  60. package/dist/components/blocks/editable-leaf.d.ts +50 -74
  61. package/dist/components/blocks/editable-leaf.js +141 -203
  62. package/dist/components/blocks/editable-surface.d.ts +96 -100
  63. package/dist/components/blocks/editable-surface.js +101 -109
  64. package/dist/components/blocks/list/ListBlock.svelte +45 -90
  65. package/dist/components/blocks/list/ListItemBlock.svelte +93 -147
  66. package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +1 -0
  67. package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
  68. package/dist/components/blocks/list/task-checkbox.js +12 -7
  69. package/dist/components/blocks/plain-text-backend.d.ts +4 -20
  70. package/dist/components/blocks/plain-text-backend.js +9 -43
  71. package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
  72. package/dist/components/blocks/surface-wiring.svelte.js +15 -34
  73. package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
  74. package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
  75. package/dist/components/blocks/table/TableBlock.svelte +100 -165
  76. package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
  77. package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
  78. package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
  79. package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
  80. package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
  81. package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
  82. package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
  83. package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
  84. package/dist/components/blocks/table/cell-pointer.js +49 -71
  85. package/dist/components/blocks/table/cell-render.d.ts +24 -29
  86. package/dist/components/blocks/table/cell-render.js +29 -31
  87. package/dist/components/blocks/table/selected-cells.d.ts +7 -7
  88. package/dist/components/blocks/table/selected-cells.js +9 -13
  89. package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
  90. package/dist/components/blocks/table/table-caret-at-point.js +5 -5
  91. package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
  92. package/dist/components/blocks/table/table-cell-paste.js +27 -43
  93. package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
  94. package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
  95. package/dist/components/blocks/table/table-menu-model.js +6 -10
  96. package/dist/components/blocks/table/table-navigation.js +2 -2
  97. package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
  98. package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
  99. package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
  100. package/dist/components/blocks/text/auto-pair-record.js +51 -0
  101. package/dist/components/blocks/text/click-snap-guard.d.ts +8 -6
  102. package/dist/components/blocks/text/click-snap-guard.js +10 -7
  103. package/dist/components/blocks/text/composition-seat.d.ts +17 -14
  104. package/dist/components/blocks/text/composition-seat.js +11 -11
  105. package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
  106. package/dist/components/blocks/text/construct-edge-delete.js +50 -65
  107. package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
  108. package/dist/components/blocks/text/construct-reveal.js +13 -14
  109. package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
  110. package/dist/components/blocks/text/delimiter-autopair.js +87 -103
  111. package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
  112. package/dist/components/blocks/text/edge-policy-dispatch.js +150 -181
  113. package/dist/components/blocks/text/edge-seat.d.ts +17 -26
  114. package/dist/components/blocks/text/edge-seat.js +43 -70
  115. package/dist/components/blocks/text/link-at-point.d.ts +9 -9
  116. package/dist/components/blocks/text/link-at-point.js +12 -15
  117. package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
  118. package/dist/components/blocks/text/live-join-seam.js +75 -112
  119. package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
  120. package/dist/components/blocks/text/live-selection-edit.js +32 -108
  121. package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
  122. package/dist/components/blocks/text/live-split-rebalance.js +50 -67
  123. package/dist/components/blocks/text/marker-completion.d.ts +7 -12
  124. package/dist/components/blocks/text/marker-completion.js +17 -10
  125. package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
  126. package/dist/components/blocks/text/pending-mark-insert.js +30 -49
  127. package/dist/components/blocks/text/screen-diff.d.ts +5 -15
  128. package/dist/components/blocks/text/screen-diff.js +5 -19
  129. package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
  130. package/dist/components/blocks/text/text-clipboard.js +27 -32
  131. package/dist/components/blocks/text/text-keydown.d.ts +20 -30
  132. package/dist/components/blocks/text/text-keydown.js +54 -51
  133. package/dist/components/blocks/text/text-render.d.ts +25 -35
  134. package/dist/components/blocks/text/text-render.js +82 -61
  135. package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
  136. package/dist/components/blocks/text/widget-adjacency.js +17 -17
  137. package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
  138. package/dist/components/blocks/text/widget-interaction.js +212 -199
  139. package/dist/components/blocks/widget-portal.d.ts +20 -29
  140. package/dist/components/blocks/widget-portal.js +16 -14
  141. package/dist/components/built-in-blocks.d.ts +3 -4
  142. package/dist/components/built-in-blocks.js +17 -18
  143. package/dist/components/drag-handle.d.ts +12 -35
  144. package/dist/components/drag-handle.js +22 -68
  145. package/dist/components/editor-built-ins.d.ts +1 -0
  146. package/dist/components/editor-built-ins.js +16 -0
  147. package/dist/components/editor-root-clipboard.d.ts +6 -6
  148. package/dist/components/editor-root-clipboard.js +16 -27
  149. package/dist/components/editor-root-document-swap.d.ts +49 -0
  150. package/dist/components/editor-root-document-swap.js +54 -0
  151. package/dist/components/editor-root-focus.d.ts +5 -4
  152. package/dist/components/editor-root-focus.js +51 -22
  153. package/dist/components/editor-root-focused-surface.d.ts +35 -0
  154. package/dist/components/editor-root-focused-surface.js +65 -0
  155. package/dist/components/editor-root-geometry.d.ts +15 -24
  156. package/dist/components/editor-root-geometry.js +27 -31
  157. package/dist/components/editor-root-gestures.d.ts +39 -0
  158. package/dist/components/editor-root-gestures.js +189 -0
  159. package/dist/components/editor-root-keydown.d.ts +10 -25
  160. package/dist/components/editor-root-keydown.js +19 -43
  161. package/dist/components/editor-root-listeners.d.ts +22 -24
  162. package/dist/components/editor-root-listeners.js +49 -24
  163. package/dist/components/editor-root-menus.d.ts +51 -0
  164. package/dist/components/editor-root-menus.js +147 -0
  165. package/dist/components/editor-root-mode-flip.d.ts +16 -11
  166. package/dist/components/editor-root-mode-flip.js +36 -34
  167. package/dist/components/editor-root-scroll-host.d.ts +22 -0
  168. package/dist/components/editor-root-scroll-host.js +34 -0
  169. package/dist/components/editor-root-test-surface.d.ts +48 -0
  170. package/dist/components/editor-root-test-surface.js +6 -0
  171. package/dist/components/image/ImageOverlayHost.svelte +44 -35
  172. package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
  173. package/dist/components/image/ImageProperties.svelte +37 -41
  174. package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
  175. package/dist/components/image/ImageResizeHandles.svelte +14 -26
  176. package/dist/components/image/image-crop.d.ts +5 -11
  177. package/dist/components/image/image-crop.js +5 -11
  178. package/dist/components/image/image-edit-commit.d.ts +19 -16
  179. package/dist/components/image/image-edit-commit.js +74 -38
  180. package/dist/components/image/image-resize.d.ts +2 -5
  181. package/dist/components/image/image-resize.js +3 -6
  182. package/dist/components/image/image-widget-editing.d.ts +3 -3
  183. package/dist/components/image/image-widget-editing.js +9 -9
  184. package/dist/components/image/widget-dom.d.ts +2 -3
  185. package/dist/components/image/widget-dom.js +19 -24
  186. package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
  187. package/dist/components/image/widget-selection-state.svelte.js +26 -19
  188. package/dist/components/kind-cue.svelte.d.ts +21 -0
  189. package/dist/components/kind-cue.svelte.js +35 -0
  190. package/dist/components/link-card/LinkCard.svelte +115 -64
  191. package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
  192. package/dist/components/link-card/LinkCardHost.svelte +42 -33
  193. package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
  194. package/dist/components/link-card/link-card-commit.d.ts +16 -19
  195. package/dist/components/link-card/link-card-commit.js +21 -30
  196. package/dist/components/link-card/link-card-entry.d.ts +13 -23
  197. package/dist/components/link-card/link-card-entry.js +16 -24
  198. package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
  199. package/dist/components/link-card/link-card-state.svelte.js +2 -2
  200. package/dist/components/lrd-map-gate.d.ts +4 -11
  201. package/dist/components/lrd-map-gate.js +5 -11
  202. package/dist/components/menu/BlockMenu.svelte +20 -81
  203. package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
  204. package/dist/components/menu/InlineMenuHost.svelte +191 -0
  205. package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
  206. package/dist/components/menu/MenuIcon.svelte +3 -103
  207. package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
  208. package/dist/components/menu/SelectionToolbar.svelte +30 -35
  209. package/dist/components/menu/SelectionToolbar.svelte.d.ts +3 -5
  210. package/dist/components/menu/clipboard-actions.d.ts +3 -4
  211. package/dist/components/menu/clipboard-actions.js +3 -4
  212. package/dist/components/menu/default-context-actions.d.ts +4 -13
  213. package/dist/components/menu/default-context-actions.js +49 -67
  214. package/dist/components/menu/flyout-placement.d.ts +2 -2
  215. package/dist/components/menu/flyout-placement.js +2 -2
  216. package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
  217. package/dist/components/menu/menu-presence.svelte.js +19 -0
  218. package/dist/components/paste-image-arm.d.ts +6 -11
  219. package/dist/components/paste-image-arm.js +11 -18
  220. package/dist/components/portal.d.ts +2 -5
  221. package/dist/components/portal.js +4 -7
  222. package/dist/core/directive/activate.d.ts +4 -5
  223. package/dist/core/directive/activate.js +8 -9
  224. package/dist/core/directive/container-opener.js +13 -12
  225. package/dist/core/directive/grammar.d.ts +2 -5
  226. package/dist/core/directive/grammar.js +10 -10
  227. package/dist/core/directive/kinds.d.ts +4 -7
  228. package/dist/core/directive/kinds.js +14 -16
  229. package/dist/core/directive/registry.d.ts +12 -9
  230. package/dist/core/directive/registry.js +19 -20
  231. package/dist/core/directive/text-recognizer.d.ts +3 -2
  232. package/dist/core/directive/text-recognizer.js +5 -9
  233. package/dist/core/escapable.d.ts +1 -5
  234. package/dist/core/escapable.js +1 -5
  235. package/dist/core/inline/backticks.d.ts +3 -4
  236. package/dist/core/inline/backticks.js +3 -4
  237. package/dist/core/inline/character-refs.js +2 -1
  238. package/dist/core/inline/destination-bytes.d.ts +6 -3
  239. package/dist/core/inline/destination-bytes.js +50 -8
  240. package/dist/core/inline/entity-widget.d.ts +4 -3
  241. package/dist/core/inline/entity-widget.js +6 -6
  242. package/dist/core/inline/format-toggle.d.ts +22 -28
  243. package/dist/core/inline/format-toggle.js +97 -129
  244. package/dist/core/inline/html-entities.d.ts +2 -3
  245. package/dist/core/inline/html-entities.js +2 -3
  246. package/dist/core/inline/html-tag-grammar.js +6 -2
  247. package/dist/core/inline/image-dimensions.d.ts +2 -0
  248. package/dist/core/inline/image-dimensions.js +19 -2
  249. package/dist/core/inline/image-source-bytes.d.ts +11 -0
  250. package/dist/core/inline/image-source-bytes.js +71 -0
  251. package/dist/core/inline/index.d.ts +28 -21
  252. package/dist/core/inline/index.js +56 -34
  253. package/dist/core/inline/inline-cache.d.ts +12 -15
  254. package/dist/core/inline/inline-cache.js +11 -14
  255. package/dist/core/inline/inline-widgets.d.ts +54 -75
  256. package/dist/core/inline/inline-widgets.js +54 -62
  257. package/dist/core/inline/link-destination.d.ts +31 -0
  258. package/dist/core/inline/link-destination.js +129 -0
  259. package/dist/core/inline/link-reference-resolver.d.ts +8 -6
  260. package/dist/core/inline/link-reference-resolver.js +10 -6
  261. package/dist/core/inline/link-source-bytes.d.ts +31 -0
  262. package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
  263. package/dist/core/inline/live-edit/read-back.d.ts +29 -0
  264. package/dist/core/inline/live-edit/read-back.js +50 -0
  265. package/dist/core/inline/picture.d.ts +10 -0
  266. package/dist/core/inline/picture.js +40 -0
  267. package/dist/core/inline/scan/autolinks.d.ts +7 -8
  268. package/dist/core/inline/scan/autolinks.js +80 -59
  269. package/dist/core/inline/scan/brackets.d.ts +2 -2
  270. package/dist/core/inline/scan/brackets.js +6 -103
  271. package/dist/core/inline/scan/code-spans.d.ts +4 -0
  272. package/dist/core/inline/scan/code-spans.js +8 -0
  273. package/dist/core/inline/scan/emphasis.js +10 -14
  274. package/dist/core/inline/scan/index.d.ts +3 -1
  275. package/dist/core/inline/scan/index.js +32 -33
  276. package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
  277. package/dist/core/inline/scan/plugin-syntax.js +75 -89
  278. package/dist/core/inline/scan/scan-state.d.ts +2 -0
  279. package/dist/core/inline/scan/scan-state.js +1 -0
  280. package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
  281. package/dist/core/inline/scan/simple-nodes.js +2 -5
  282. package/dist/core/inline/scan/triggers.d.ts +17 -0
  283. package/dist/core/inline/scan/triggers.js +26 -0
  284. package/dist/core/inline/scan/url.js +8 -10
  285. package/dist/core/inline/transparency.d.ts +2 -1
  286. package/dist/core/inline/transparency.js +31 -15
  287. package/dist/core/inline/visibility.d.ts +30 -49
  288. package/dist/core/inline/visibility.js +31 -49
  289. package/dist/core/inline/walk.d.ts +4 -10
  290. package/dist/core/inline/walk.js +4 -10
  291. package/dist/core/inline-render.d.ts +22 -27
  292. package/dist/core/inline-render.js +51 -60
  293. package/dist/core/lines.d.ts +67 -26
  294. package/dist/core/lines.js +164 -33
  295. package/dist/core/metadata-parity.d.ts +9 -0
  296. package/dist/core/metadata-parity.js +25 -0
  297. package/dist/core/node-views.d.ts +7 -6
  298. package/dist/core/node-views.js +5 -5
  299. package/dist/core/nodes.d.ts +34 -44
  300. package/dist/core/nodes.js +4 -12
  301. package/dist/core/parser.d.ts +27 -34
  302. package/dist/core/parser.js +53 -67
  303. package/dist/core/parsers/blockquote.d.ts +5 -8
  304. package/dist/core/parsers/blockquote.js +11 -10
  305. package/dist/core/parsers/built-in-openers.d.ts +2 -5
  306. package/dist/core/parsers/built-in-openers.js +5 -8
  307. package/dist/core/parsers/fence-syntax.d.ts +36 -7
  308. package/dist/core/parsers/fence-syntax.js +61 -11
  309. package/dist/core/parsers/fenced-code.d.ts +16 -0
  310. package/dist/core/parsers/fenced-code.js +16 -15
  311. package/dist/core/parsers/heading.d.ts +19 -2
  312. package/dist/core/parsers/heading.js +50 -2
  313. package/dist/core/parsers/html-block.d.ts +3 -6
  314. package/dist/core/parsers/html-block.js +10 -11
  315. package/dist/core/parsers/indented-code.d.ts +1 -1
  316. package/dist/core/parsers/indented-code.js +2 -8
  317. package/dist/core/parsers/link-reference.d.ts +5 -3
  318. package/dist/core/parsers/link-reference.js +116 -120
  319. package/dist/core/parsers/list.d.ts +12 -5
  320. package/dist/core/parsers/list.js +53 -36
  321. package/dist/core/parsers/paragraph.d.ts +3 -3
  322. package/dist/core/parsers/paragraph.js +14 -5
  323. package/dist/core/parsers/table-completion.d.ts +2 -5
  324. package/dist/core/parsers/table-completion.js +7 -10
  325. package/dist/core/parsers/table.d.ts +8 -8
  326. package/dist/core/parsers/table.js +23 -26
  327. package/dist/core/parsers/thematic-break.js +15 -14
  328. package/dist/core/paths.d.ts +13 -0
  329. package/dist/core/paths.js +31 -0
  330. package/dist/core/terminator-escalation.d.ts +0 -7
  331. package/dist/core/terminator-escalation.js +5 -8
  332. package/dist/core/url-policy.d.ts +2 -5
  333. package/dist/core/url-policy.js +8 -12
  334. package/dist/cursor/caret-memory.d.ts +34 -0
  335. package/dist/cursor/caret-memory.js +82 -0
  336. package/dist/cursor/coordinate-spaces.d.ts +26 -19
  337. package/dist/cursor/coordinate-spaces.js +32 -20
  338. package/dist/cursor/dom-walk.d.ts +7 -13
  339. package/dist/cursor/dom-walk.js +7 -13
  340. package/dist/cursor/edge-affinity.d.ts +7 -35
  341. package/dist/cursor/edge-affinity.js +13 -44
  342. package/dist/cursor/focused-caret.d.ts +6 -8
  343. package/dist/cursor/focused-caret.js +7 -16
  344. package/dist/cursor/height-model.d.ts +3 -3
  345. package/dist/cursor/height-model.js +5 -5
  346. package/dist/cursor/height-oracle.d.ts +10 -6
  347. package/dist/cursor/height-oracle.js +26 -74
  348. package/dist/cursor/observe-resize.d.ts +13 -0
  349. package/dist/cursor/observe-resize.js +43 -0
  350. package/dist/cursor/overlay-rects.d.ts +2 -5
  351. package/dist/cursor/overlay-rects.js +2 -5
  352. package/dist/cursor/overlay-remeasure.d.ts +6 -7
  353. package/dist/cursor/overlay-remeasure.js +10 -14
  354. package/dist/cursor/pending-marks.d.ts +7 -9
  355. package/dist/cursor/pending-marks.js +6 -27
  356. package/dist/cursor/point-offset.d.ts +16 -10
  357. package/dist/cursor/point-offset.js +60 -25
  358. package/dist/cursor/reveal-source.d.ts +7 -11
  359. package/dist/cursor/reveal-source.js +10 -18
  360. package/dist/cursor/scroll-ancestors.d.ts +9 -20
  361. package/dist/cursor/scroll-ancestors.js +14 -26
  362. package/dist/cursor/scroll-owner.d.ts +92 -0
  363. package/dist/cursor/scroll-owner.js +283 -0
  364. package/dist/cursor/scrollport.d.ts +14 -15
  365. package/dist/cursor/scrollport.js +7 -13
  366. package/dist/cursor/sticky-column.d.ts +6 -29
  367. package/dist/cursor/sticky-column.js +6 -49
  368. package/dist/cursor/sticky-measure.d.ts +14 -9
  369. package/dist/cursor/sticky-measure.js +99 -49
  370. package/dist/cursor/surface-backend.d.ts +41 -0
  371. package/dist/cursor/surface-backend.js +78 -0
  372. package/dist/cursor/typography-estimates.d.ts +3 -3
  373. package/dist/cursor/typography-estimates.js +3 -3
  374. package/dist/cursor/visual-lines.d.ts +25 -14
  375. package/dist/cursor/visual-lines.js +45 -46
  376. package/dist/cursor/widget-edge-snap.d.ts +10 -15
  377. package/dist/cursor/widget-edge-snap.js +13 -12
  378. package/dist/cursor/widget-offset.d.ts +110 -104
  379. package/dist/cursor/widget-offset.js +344 -179
  380. package/dist/debug/diagnostics-report.d.ts +6 -6
  381. package/dist/debug/diagnostics-report.js +5 -5
  382. package/dist/debug/dump-tree.js +2 -2
  383. package/dist/debug/editor-diagnostics.d.ts +15 -0
  384. package/dist/debug/editor-diagnostics.js +33 -0
  385. package/dist/debug/inspect.d.ts +2 -2
  386. package/dist/debug/inspect.js +4 -4
  387. package/dist/debug/interaction-trace.d.ts +14 -15
  388. package/dist/debug/interaction-trace.js +19 -20
  389. package/dist/debug/operations-log.d.ts +1 -1
  390. package/dist/debug/operations-log.js +1 -1
  391. package/dist/decorations/buckets.d.ts +6 -12
  392. package/dist/decorations/buckets.js +4 -11
  393. package/dist/decorations/decoration-state.svelte.d.ts +2 -3
  394. package/dist/decorations/decoration-state.svelte.js +24 -26
  395. package/dist/decorations/island-dom.d.ts +10 -18
  396. package/dist/decorations/island-dom.js +25 -50
  397. package/dist/decorations/reserved-attrs.d.ts +6 -8
  398. package/dist/decorations/reserved-attrs.js +30 -17
  399. package/dist/decorations/types.d.ts +6 -7
  400. package/dist/decorations/types.js +2 -1
  401. package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
  402. package/dist/decorations/use-block-decorations.svelte.js +71 -0
  403. package/dist/decorations/widget-dom.d.ts +3 -3
  404. package/dist/decorations/widget-dom.js +5 -5
  405. package/dist/dev-warn.d.ts +5 -2
  406. package/dist/dev-warn.js +16 -4
  407. package/dist/editor-actions/ancestry-folds.d.ts +9 -14
  408. package/dist/editor-actions/ancestry-folds.js +13 -18
  409. package/dist/editor-actions/block-edit-core.d.ts +49 -22
  410. package/dist/editor-actions/block-edit-core.js +279 -151
  411. package/dist/editor-actions/block-edit-scope.d.ts +63 -50
  412. package/dist/editor-actions/block-edit-scope.js +100 -48
  413. package/dist/editor-actions/block-edit.d.ts +2 -3
  414. package/dist/editor-actions/block-edit.js +14 -90
  415. package/dist/editor-actions/commit/history.d.ts +4 -4
  416. package/dist/editor-actions/commit/history.js +33 -34
  417. package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
  418. package/dist/editor-actions/commit/reading-write-gate.js +56 -0
  419. package/dist/editor-actions/commit/text-batch.d.ts +7 -11
  420. package/dist/editor-actions/commit/text-batch.js +6 -7
  421. package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
  422. package/dist/editor-actions/commit/undo-controller.js +346 -216
  423. package/dist/editor-actions/container-block-component.d.ts +32 -51
  424. package/dist/editor-actions/container-block-component.js +66 -92
  425. package/dist/editor-actions/container-edit.d.ts +4 -2
  426. package/dist/editor-actions/container-edit.js +14 -44
  427. package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
  428. package/dist/editor-actions/container-exit-overrides.js +19 -21
  429. package/dist/editor-actions/deps.d.ts +25 -32
  430. package/dist/editor-actions/enter-completion.d.ts +12 -15
  431. package/dist/editor-actions/enter-completion.js +49 -51
  432. package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
  433. package/dist/editor-actions/focus/focus-dispatch.js +28 -50
  434. package/dist/editor-actions/focus/focus-landing.d.ts +8 -11
  435. package/dist/editor-actions/focus/focus-landing.js +15 -14
  436. package/dist/editor-actions/focus/focus.d.ts +3 -2
  437. package/dist/editor-actions/focus/focus.js +42 -59
  438. package/dist/editor-actions/index.d.ts +4 -3
  439. package/dist/editor-actions/index.js +5 -4
  440. package/dist/editor-actions/inline-range-commit.d.ts +18 -16
  441. package/dist/editor-actions/inline-range-commit.js +45 -54
  442. package/dist/editor-actions/leaf-write.d.ts +11 -0
  443. package/dist/editor-actions/leaf-write.js +102 -0
  444. package/dist/editor-actions/list-context.d.ts +9 -10
  445. package/dist/editor-actions/list-context.js +115 -110
  446. package/dist/editor-actions/list-overrides.d.ts +13 -5
  447. package/dist/editor-actions/list-overrides.js +36 -12
  448. package/dist/editor-actions/merge-fallback.d.ts +10 -16
  449. package/dist/editor-actions/merge-fallback.js +11 -22
  450. package/dist/editor-actions/nested/container-actions.d.ts +37 -0
  451. package/dist/editor-actions/nested/container-actions.js +42 -0
  452. package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
  453. package/dist/editor-actions/nested/emptied-container.js +5 -0
  454. package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
  455. package/dist/editor-actions/nested/nested-actions.js +17 -15
  456. package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
  457. package/dist/editor-actions/nested/nested-block-edit.js +40 -134
  458. package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
  459. package/dist/editor-actions/nested/nested-focus.js +33 -21
  460. package/dist/editor-actions/paste-coordinator.d.ts +3 -2
  461. package/dist/editor-actions/paste-coordinator.js +17 -13
  462. package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
  463. package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
  464. package/dist/editor-actions/plugin/container.d.ts +54 -82
  465. package/dist/editor-actions/plugin/container.js +105 -188
  466. package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
  467. package/dist/editor-actions/plugin/directive-container.js +7 -8
  468. package/dist/editor-actions/reorder-action.d.ts +7 -12
  469. package/dist/editor-actions/reorder-action.js +32 -48
  470. package/dist/editor-actions/reorder-drag.d.ts +12 -8
  471. package/dist/editor-actions/reorder-drag.js +45 -41
  472. package/dist/editor-actions/replacement-focus.d.ts +13 -21
  473. package/dist/editor-actions/replacement-focus.js +32 -33
  474. package/dist/editor-actions/search-replace.js +71 -67
  475. package/dist/editor-actions/stored-caret.d.ts +7 -0
  476. package/dist/editor-actions/stored-caret.js +10 -0
  477. package/dist/editor-actions/table-context.d.ts +9 -11
  478. package/dist/editor-actions/table-context.js +70 -93
  479. package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
  480. package/dist/editor-actions/unwrap-strategies.js +52 -63
  481. package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
  482. package/dist/editor-actions/whole-block-focus-surface.js +43 -53
  483. package/dist/editor-events.d.ts +25 -29
  484. package/dist/editor-events.js +17 -28
  485. package/dist/editor-keys.d.ts +96 -104
  486. package/dist/editor-keys.js +11 -24
  487. package/dist/editor-props.d.ts +88 -71
  488. package/dist/editor-rects.d.ts +23 -34
  489. package/dist/editor-rects.js +9 -77
  490. package/dist/env.d.ts +6 -4
  491. package/dist/env.js +8 -4
  492. package/dist/index.d.ts +6 -2
  493. package/dist/index.js +5 -2
  494. package/dist/inline-menu/inline-menu-session.d.ts +37 -0
  495. package/dist/inline-menu/inline-menu-session.js +98 -0
  496. package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
  497. package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
  498. package/dist/inline-menu/types.d.ts +77 -0
  499. package/dist/inline-menu/types.js +7 -0
  500. package/dist/invariants/child-id-parity.d.ts +23 -0
  501. package/dist/invariants/child-id-parity.js +39 -0
  502. package/dist/invariants/commit-paths.d.ts +4 -4
  503. package/dist/invariants/commit-paths.js +4 -4
  504. package/dist/invariants/commit-scope.d.ts +4 -4
  505. package/dist/invariants/commit-scope.js +9 -8
  506. package/dist/invariants/context-keys.d.ts +2 -5
  507. package/dist/invariants/context-keys.js +3 -6
  508. package/dist/invariants/descriptor.d.ts +2 -6
  509. package/dist/invariants/descriptor.js +2 -6
  510. package/dist/invariants/inline-transitions.d.ts +9 -16
  511. package/dist/invariants/inline-transitions.js +10 -18
  512. package/dist/invariants/install.d.ts +18 -27
  513. package/dist/invariants/install.js +29 -30
  514. package/dist/invariants/keeps-a-block.d.ts +7 -0
  515. package/dist/invariants/keeps-a-block.js +14 -0
  516. package/dist/invariants/landable-caret.d.ts +5 -7
  517. package/dist/invariants/landable-caret.js +8 -11
  518. package/dist/invariants/landing-focus-scroll.d.ts +7 -0
  519. package/dist/invariants/landing-focus-scroll.js +13 -0
  520. package/dist/invariants/landing-value.d.ts +13 -0
  521. package/dist/invariants/landing-value.js +27 -0
  522. package/dist/invariants/marker-css-parity.d.ts +5 -6
  523. package/dist/invariants/marker-css-parity.js +11 -12
  524. package/dist/invariants/measures-in-own-list.d.ts +6 -0
  525. package/dist/invariants/measures-in-own-list.js +13 -0
  526. package/dist/invariants/node-shape.d.ts +18 -37
  527. package/dist/invariants/node-shape.js +123 -79
  528. package/dist/invariants/open-tail.d.ts +7 -0
  529. package/dist/invariants/open-tail.js +45 -0
  530. package/dist/invariants/placement-ends-widget.d.ts +8 -0
  531. package/dist/invariants/placement-ends-widget.js +13 -0
  532. package/dist/invariants/registry.d.ts +27 -66
  533. package/dist/invariants/registry.js +61 -137
  534. package/dist/invariants/render-fidelity.d.ts +4 -4
  535. package/dist/invariants/render-fidelity.js +5 -5
  536. package/dist/invariants/selection-endpoints.d.ts +6 -7
  537. package/dist/invariants/selection-endpoints.js +18 -16
  538. package/dist/invariants/single-node-sink.d.ts +4 -5
  539. package/dist/invariants/single-node-sink.js +4 -5
  540. package/dist/invariants/snapshot-integrity.d.ts +5 -6
  541. package/dist/invariants/snapshot-integrity.js +1 -1
  542. package/dist/invariants/structural-descriptor.d.ts +6 -15
  543. package/dist/invariants/structural-descriptor.js +6 -15
  544. package/dist/menu-icons.d.ts +47 -0
  545. package/dist/menu-icons.js +113 -0
  546. package/dist/perf/instruments.d.ts +20 -5
  547. package/dist/perf/instruments.js +35 -15
  548. package/dist/perf/use-mount-gauge.svelte.js +4 -4
  549. package/dist/plugin.d.ts +37 -8
  550. package/dist/plugin.js +100 -77
  551. package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
  552. package/dist/plugins/admonitions/admonition-kind.js +12 -10
  553. package/dist/plugins/admonitions/convert-document.d.ts +5 -5
  554. package/dist/plugins/admonitions/convert-document.js +8 -7
  555. package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
  556. package/dist/plugins/admonitions/gh-alert.js +21 -22
  557. package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
  558. package/dist/plugins/admonitions/github-alert-kind.js +28 -37
  559. package/dist/plugins/admonitions/index.js +2 -2
  560. package/dist/plugins/admonitions/kinds.d.ts +1 -1
  561. package/dist/plugins/admonitions/register.js +11 -2
  562. package/dist/plugins/details/DetailsBlock.svelte +20 -20
  563. package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
  564. package/dist/plugins/details/details-disclosure.svelte.js +6 -7
  565. package/dist/plugins/details/details-kind.d.ts +6 -7
  566. package/dist/plugins/details/details-kind.js +44 -59
  567. package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
  568. package/dist/plugins/emoji/emoji-recognizer.js +7 -14
  569. package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
  570. package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
  571. package/dist/plugins/footnotes/constants.d.ts +2 -0
  572. package/dist/plugins/footnotes/constants.js +3 -0
  573. package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
  574. package/dist/plugins/footnotes/footnote-definition.js +69 -45
  575. package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
  576. package/dist/plugins/footnotes/footnote-lookup.js +14 -26
  577. package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
  578. package/dist/plugins/footnotes/footnote-numbering.js +22 -31
  579. package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
  580. package/dist/plugins/footnotes/footnote-reference.js +8 -13
  581. package/dist/plugins/footnotes/index.js +2 -3
  582. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
  583. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
  584. package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
  585. package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
  586. package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
  587. package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
  588. package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
  589. package/dist/plugins/highlight-occurrences/word-char.js +4 -0
  590. package/dist/plugins/latex/BlockMath.svelte +58 -75
  591. package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
  592. package/dist/plugins/latex/MathInline.svelte +10 -9
  593. package/dist/plugins/latex/flanking.d.ts +1 -0
  594. package/dist/plugins/latex/flanking.js +3 -0
  595. package/dist/plugins/latex/index.d.ts +1 -1
  596. package/dist/plugins/latex/latex-kind.d.ts +4 -4
  597. package/dist/plugins/latex/latex-kind.js +78 -67
  598. package/dist/plugins/latex/math-completion.d.ts +1 -1
  599. package/dist/plugins/latex/math-completion.js +5 -8
  600. package/dist/plugins/latex/math-layout.d.ts +2 -8
  601. package/dist/plugins/latex/math-layout.js +0 -9
  602. package/dist/plugins/latex/math-renderer.d.ts +17 -20
  603. package/dist/plugins/latex/math-renderer.js +21 -38
  604. package/dist/plugins/latex/math-source.d.ts +4 -8
  605. package/dist/plugins/latex/math-source.js +36 -81
  606. package/dist/plugins/latex/register.d.ts +10 -11
  607. package/dist/plugins/latex/register.js +24 -10
  608. package/dist/plugins/latex/renderer.d.ts +9 -10
  609. package/dist/plugins/latex/renderer.js +9 -24
  610. package/dist/plugins/mermaid/MermaidBlock.svelte +51 -45
  611. package/dist/plugins/mermaid/index.js +1 -1
  612. package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
  613. package/dist/plugins/mermaid/mermaid-kind.js +30 -47
  614. package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
  615. package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
  616. package/dist/plugins/mermaid/register.d.ts +3 -3
  617. package/dist/plugins/mermaid/register.js +5 -5
  618. package/dist/plugins/mermaid/renderer.d.ts +5 -5
  619. package/dist/plugins/mermaid/renderer.js +8 -11
  620. package/dist/plugins/parrot/ParrotBlock.svelte +15 -6
  621. package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
  622. package/dist/plugins/parrot/parrot-plugin.js +3 -3
  623. package/dist/plugins/slash-commands/filter.d.ts +23 -0
  624. package/dist/plugins/slash-commands/filter.js +31 -0
  625. package/dist/plugins/slash-commands/index.d.ts +2 -0
  626. package/dist/plugins/slash-commands/index.js +2 -0
  627. package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
  628. package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
  629. package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
  630. package/dist/plugins/slash-commands/slash-source.js +108 -0
  631. package/dist/plugins/toc/TocBlock.svelte +23 -22
  632. package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
  633. package/dist/plugins/toc/heading-outline.d.ts +7 -12
  634. package/dist/plugins/toc/heading-outline.js +22 -36
  635. package/dist/plugins/toc/navigation-queue.d.ts +2 -4
  636. package/dist/plugins/toc/toc-plugin.d.ts +5 -5
  637. package/dist/plugins/toc/toc-plugin.js +20 -13
  638. package/dist/presentation-mode.d.ts +15 -23
  639. package/dist/presentation-mode.js +19 -25
  640. package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
  641. package/dist/reactivity/block-list-state.svelte.js +8 -9
  642. package/dist/reactivity/block-window.svelte.d.ts +12 -6
  643. package/dist/reactivity/block-window.svelte.js +44 -17
  644. package/dist/reactivity/child-list.d.ts +34 -0
  645. package/dist/reactivity/child-list.js +48 -0
  646. package/dist/reactivity/content-version.svelte.d.ts +4 -7
  647. package/dist/reactivity/content-version.svelte.js +3 -5
  648. package/dist/reactivity/hold-across.d.ts +39 -0
  649. package/dist/reactivity/hold-across.js +57 -0
  650. package/dist/reactivity/layout-state.svelte.d.ts +27 -0
  651. package/dist/reactivity/layout-state.svelte.js +51 -0
  652. package/dist/reactivity/list-tree.d.ts +39 -0
  653. package/dist/reactivity/list-tree.js +132 -0
  654. package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
  655. package/dist/reactivity/list-windowing.svelte.js +141 -310
  656. package/dist/reactivity/measure-batch.d.ts +6 -8
  657. package/dist/reactivity/measure-batch.js +5 -6
  658. package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
  659. package/dist/reactivity/publish-ref.svelte.js +21 -85
  660. package/dist/reactivity/scope-geometry.d.ts +6 -13
  661. package/dist/reactivity/scope-geometry.js +7 -14
  662. package/dist/reactivity/state-registry.d.ts +5 -5
  663. package/dist/reactivity/state-registry.js +11 -15
  664. package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
  665. package/dist/reactivity/use-container-windowing.svelte.js +64 -74
  666. package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
  667. package/dist/reactivity/use-measured-child.svelte.js +41 -0
  668. package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
  669. package/dist/reactivity/use-window-floor.svelte.js +27 -0
  670. package/dist/reactivity/window-slice.d.ts +4 -4
  671. package/dist/reactivity/window-slice.js +0 -2
  672. package/dist/renderer-slot.d.ts +48 -0
  673. package/dist/renderer-slot.js +85 -0
  674. package/dist/scan-index.d.ts +4 -4
  675. package/dist/scan-index.js +4 -4
  676. package/dist/schema/block-commands.d.ts +69 -54
  677. package/dist/schema/block-commands.js +91 -104
  678. package/dist/schema/block-completions.d.ts +16 -19
  679. package/dist/schema/block-completions.js +25 -32
  680. package/dist/schema/block-component-registry.d.ts +13 -14
  681. package/dist/schema/block-component-registry.js +19 -17
  682. package/dist/schema/block-kind-descriptor.d.ts +234 -168
  683. package/dist/schema/block-kind-descriptor.js +151 -66
  684. package/dist/schema/block-openers.d.ts +48 -39
  685. package/dist/schema/block-openers.js +73 -83
  686. package/dist/schema/built-in-descriptors.d.ts +3 -5
  687. package/dist/schema/built-in-descriptors.js +96 -80
  688. package/dist/schema/child-spans.d.ts +12 -10
  689. package/dist/schema/child-spans.js +68 -34
  690. package/dist/schema/closure.d.ts +18 -16
  691. package/dist/schema/closure.js +24 -14
  692. package/dist/schema/command-id.d.ts +6 -8
  693. package/dist/schema/command-id.js +20 -25
  694. package/dist/schema/commands.d.ts +78 -84
  695. package/dist/schema/commands.js +152 -117
  696. package/dist/schema/container-raw.d.ts +51 -11
  697. package/dist/schema/container-raw.js +143 -14
  698. package/dist/schema/container-rebuilders.d.ts +17 -15
  699. package/dist/schema/container-rebuilders.js +30 -22
  700. package/dist/schema/context-actions.d.ts +25 -13
  701. package/dist/schema/context-actions.js +32 -17
  702. package/dist/schema/define-plugin-block.d.ts +8 -6
  703. package/dist/schema/define-plugin-block.js +6 -4
  704. package/dist/schema/fenced-code-raw.d.ts +30 -17
  705. package/dist/schema/fenced-code-raw.js +155 -107
  706. package/dist/schema/global-commands.d.ts +6 -6
  707. package/dist/schema/global-commands.js +14 -22
  708. package/dist/schema/height-estimates.d.ts +31 -0
  709. package/dist/schema/height-estimates.js +64 -0
  710. package/dist/schema/inline-construct-policy.d.ts +42 -55
  711. package/dist/schema/inline-construct-policy.js +36 -35
  712. package/dist/schema/insert-catalogue.d.ts +30 -0
  713. package/dist/schema/insert-catalogue.js +95 -0
  714. package/dist/schema/keybinding-overrides.d.ts +9 -11
  715. package/dist/schema/keybinding-overrides.js +1 -1
  716. package/dist/schema/keybindings.d.ts +15 -7
  717. package/dist/schema/keybindings.js +21 -9
  718. package/dist/schema/merge-rules.d.ts +5 -7
  719. package/dist/schema/merge-rules.js +7 -9
  720. package/dist/schema/opener-priorities.d.ts +4 -4
  721. package/dist/schema/opener-priorities.js +4 -4
  722. package/dist/schema/operations.d.ts +8 -10
  723. package/dist/schema/operations.js +3 -3
  724. package/dist/schema/page-role.d.ts +14 -0
  725. package/dist/schema/page-role.js +19 -0
  726. package/dist/schema/plugin-activation.d.ts +4 -6
  727. package/dist/schema/plugin-activation.js +12 -10
  728. package/dist/schema/plugin-editor-context.d.ts +25 -10
  729. package/dist/schema/plugin-editor-context.js +40 -9
  730. package/dist/schema/plugin-install.d.ts +49 -17
  731. package/dist/schema/plugin-install.js +51 -25
  732. package/dist/schema/plugin-kind.d.ts +12 -8
  733. package/dist/schema/plugin-kind.js +35 -42
  734. package/dist/schema/plugin-name.js +3 -3
  735. package/dist/schema/plugin-registry.d.ts +54 -0
  736. package/dist/schema/plugin-registry.js +70 -0
  737. package/dist/schema/reading.d.ts +23 -0
  738. package/dist/schema/reading.js +7 -0
  739. package/dist/schema/register-once.d.ts +3 -5
  740. package/dist/schema/register-once.js +7 -16
  741. package/dist/schema/registration-checks.d.ts +12 -16
  742. package/dist/schema/registration-checks.js +35 -51
  743. package/dist/schema/registration-pairs.d.ts +54 -0
  744. package/dist/schema/registration-pairs.js +48 -0
  745. package/dist/schema/registration-pending.d.ts +8 -12
  746. package/dist/schema/registration-pending.js +9 -9
  747. package/dist/schema/registry-reset.d.ts +8 -4
  748. package/dist/schema/registry-reset.js +13 -26
  749. package/dist/schema/registry-view.d.ts +25 -13
  750. package/dist/schema/registry-view.js +26 -20
  751. package/dist/schema/reserved-chords.d.ts +9 -10
  752. package/dist/schema/reserved-chords.js +63 -80
  753. package/dist/schema/reserved-chrome.d.ts +12 -11
  754. package/dist/schema/reserved-chrome.js +15 -11
  755. package/dist/schema/setext-raw.d.ts +13 -0
  756. package/dist/schema/setext-raw.js +33 -0
  757. package/dist/schema/stored-as.d.ts +20 -0
  758. package/dist/schema/stored-as.js +6 -0
  759. package/dist/schema/table-cell-raw.d.ts +18 -7
  760. package/dist/schema/table-cell-raw.js +28 -7
  761. package/dist/schema/whole-block-unit.d.ts +5 -4
  762. package/dist/schema/whole-block-unit.js +5 -4
  763. package/dist/search/document-scan.d.ts +3 -3
  764. package/dist/search/document-scan.js +2 -2
  765. package/dist/search/matcher.d.ts +1 -1
  766. package/dist/search/regex-executor.d.ts +5 -6
  767. package/dist/search/regex-executor.js +6 -8
  768. package/dist/search/replace.d.ts +2 -5
  769. package/dist/search/replace.js +2 -5
  770. package/dist/search/search-state.svelte.d.ts +5 -5
  771. package/dist/search/search-state.svelte.js +12 -16
  772. package/dist/selection/autoscroll.d.ts +6 -9
  773. package/dist/selection/block-hit-test.d.ts +16 -24
  774. package/dist/selection/block-hit-test.js +29 -22
  775. package/dist/selection/caret-doors.d.ts +15 -14
  776. package/dist/selection/caret-doors.js +37 -26
  777. package/dist/selection/caret-landing.d.ts +62 -0
  778. package/dist/selection/caret-landing.js +157 -0
  779. package/dist/selection/caret-restore.d.ts +17 -10
  780. package/dist/selection/caret-restore.js +10 -22
  781. package/dist/selection/caret-target.d.ts +30 -0
  782. package/dist/selection/caret-target.js +84 -0
  783. package/dist/selection/char-endpoint-snap.d.ts +6 -10
  784. package/dist/selection/char-endpoint-snap.js +8 -14
  785. package/dist/selection/clipboard-text.d.ts +5 -12
  786. package/dist/selection/clipboard-text.js +69 -172
  787. package/dist/selection/covered-block.d.ts +6 -8
  788. package/dist/selection/covered-block.js +8 -19
  789. package/dist/selection/cross-block/clipboard.d.ts +3 -2
  790. package/dist/selection/cross-block/clipboard.js +13 -4
  791. package/dist/selection/cross-block/dispatch.d.ts +47 -43
  792. package/dist/selection/cross-block/dispatch.js +12 -23
  793. package/dist/selection/cross-block/format-range.d.ts +18 -21
  794. package/dist/selection/cross-block/format-range.js +104 -103
  795. package/dist/selection/cross-block/format-toggle.d.ts +10 -15
  796. package/dist/selection/cross-block/format-toggle.js +28 -33
  797. package/dist/selection/cross-block/keydown.d.ts +4 -4
  798. package/dist/selection/cross-block/keydown.js +92 -125
  799. package/dist/selection/cross-block/ops.d.ts +19 -34
  800. package/dist/selection/cross-block/ops.js +110 -95
  801. package/dist/selection/cross-block/paste.d.ts +2 -3
  802. package/dist/selection/cross-block/paste.js +59 -96
  803. package/dist/selection/cross-block/pointer.d.ts +17 -15
  804. package/dist/selection/cross-block/pointer.js +74 -25
  805. package/dist/selection/cross-block/type-replace.d.ts +4 -6
  806. package/dist/selection/cross-block/type-replace.js +51 -134
  807. package/dist/selection/dead-space-caret.d.ts +19 -30
  808. package/dist/selection/dead-space-caret.js +70 -88
  809. package/dist/selection/drag-pointer.d.ts +7 -9
  810. package/dist/selection/drag-pointer.js +23 -33
  811. package/dist/selection/gap-caret.d.ts +17 -28
  812. package/dist/selection/gap-caret.js +14 -26
  813. package/dist/selection/grid-selection.d.ts +12 -0
  814. package/dist/selection/grid-selection.js +22 -0
  815. package/dist/selection/keyboard-extend.d.ts +27 -40
  816. package/dist/selection/keyboard-extend.js +94 -117
  817. package/dist/selection/multi-click.d.ts +13 -18
  818. package/dist/selection/multi-click.js +32 -38
  819. package/dist/selection/native-bridge.d.ts +29 -39
  820. package/dist/selection/native-bridge.js +78 -127
  821. package/dist/selection/nearest-block.d.ts +17 -12
  822. package/dist/selection/nearest-block.js +37 -18
  823. package/dist/selection/path-lookup.d.ts +25 -16
  824. package/dist/selection/path-lookup.js +101 -18
  825. package/dist/selection/path-math.d.ts +9 -11
  826. package/dist/selection/path-math.js +5 -7
  827. package/dist/selection/pointer-gesture.d.ts +5 -5
  828. package/dist/selection/pointer-gesture.js +5 -5
  829. package/dist/selection/pointer-session.d.ts +10 -16
  830. package/dist/selection/pointer-session.js +6 -7
  831. package/dist/selection/primitives.d.ts +64 -40
  832. package/dist/selection/primitives.js +57 -67
  833. package/dist/selection/range-coverage.d.ts +94 -0
  834. package/dist/selection/range-coverage.js +365 -0
  835. package/dist/selection/range-delete-ceremony.d.ts +28 -74
  836. package/dist/selection/range-delete-ceremony.js +100 -141
  837. package/dist/selection/range-delete-chrome.d.ts +20 -33
  838. package/dist/selection/range-delete-chrome.js +53 -78
  839. package/dist/selection/range-delete-table-coverage.d.ts +11 -25
  840. package/dist/selection/range-delete-table-coverage.js +42 -112
  841. package/dist/selection/range-delete-table.d.ts +14 -12
  842. package/dist/selection/range-delete-table.js +106 -310
  843. package/dist/selection/range-delete.d.ts +18 -23
  844. package/dist/selection/range-delete.js +83 -123
  845. package/dist/selection/round-trip-restore.d.ts +18 -0
  846. package/dist/selection/round-trip-restore.js +19 -0
  847. package/dist/selection/selection-announcer.d.ts +17 -0
  848. package/dist/selection/selection-announcer.js +25 -0
  849. package/dist/selection/selection-description.d.ts +4 -3
  850. package/dist/selection/selection-description.js +5 -4
  851. package/dist/selection/selection-drop.d.ts +34 -16
  852. package/dist/selection/selection-drop.js +159 -95
  853. package/dist/selection/selection-restore.d.ts +20 -33
  854. package/dist/selection/selection-restore.js +21 -44
  855. package/dist/selection/selection-state.svelte.d.ts +50 -42
  856. package/dist/selection/selection-state.svelte.js +144 -98
  857. package/dist/selection/shared-keydown.d.ts +22 -27
  858. package/dist/selection/shared-keydown.js +25 -45
  859. package/dist/selection/table-endpoint-snap.d.ts +17 -41
  860. package/dist/selection/table-endpoint-snap.js +54 -80
  861. package/dist/selection/table-rect-extend.d.ts +3 -6
  862. package/dist/selection/table-rect-extend.js +19 -14
  863. package/dist/styles/editor-theme.css +60 -53
  864. package/dist/styles/editor.css +201 -143
  865. package/dist/testing/conformance-core.d.ts +50 -18
  866. package/dist/testing/conformance-core.js +88 -50
  867. package/dist/testing/container-conformance.d.ts +48 -84
  868. package/dist/testing/container-conformance.js +159 -285
  869. package/dist/testing/headless-actions.d.ts +34 -19
  870. package/dist/testing/headless-actions.js +116 -65
  871. package/dist/testing/headless-block-list.svelte.d.ts +16 -0
  872. package/dist/testing/headless-block-list.svelte.js +22 -0
  873. package/dist/testing/inline-conformance.d.ts +15 -22
  874. package/dist/testing/inline-conformance.js +131 -148
  875. package/dist/testing/kind-conformance.d.ts +19 -24
  876. package/dist/testing/kind-conformance.js +204 -117
  877. package/dist/testing/kit-reading.d.ts +7 -0
  878. package/dist/testing/kit-reading.js +16 -0
  879. package/dist/testing/mount-dom-stubs.d.ts +4 -5
  880. package/dist/testing/mount-dom-stubs.js +8 -5
  881. package/dist/testing/parse-convergence.d.ts +10 -10
  882. package/dist/testing/parse-convergence.js +14 -49
  883. package/dist/testing.d.ts +13 -9
  884. package/dist/testing.js +28 -38
  885. package/dist/tree-operations/blockquote.d.ts +8 -14
  886. package/dist/tree-operations/blockquote.js +25 -45
  887. package/dist/tree-operations/chain-rebuild.d.ts +34 -25
  888. package/dist/tree-operations/chain-rebuild.js +115 -52
  889. package/dist/tree-operations/children.d.ts +5 -9
  890. package/dist/tree-operations/children.js +7 -11
  891. package/dist/tree-operations/cleanup.d.ts +6 -7
  892. package/dist/tree-operations/cleanup.js +14 -11
  893. package/dist/tree-operations/clone.js +5 -4
  894. package/dist/tree-operations/container-lift.d.ts +10 -5
  895. package/dist/tree-operations/container-lift.js +20 -14
  896. package/dist/tree-operations/container-offsets.d.ts +22 -0
  897. package/dist/tree-operations/container-offsets.js +89 -0
  898. package/dist/tree-operations/content-write.d.ts +52 -29
  899. package/dist/tree-operations/content-write.js +155 -110
  900. package/dist/tree-operations/index.d.ts +4 -4
  901. package/dist/tree-operations/index.js +4 -4
  902. package/dist/tree-operations/keep-one-block.d.ts +10 -0
  903. package/dist/tree-operations/keep-one-block.js +19 -0
  904. package/dist/tree-operations/leaf-range.d.ts +33 -0
  905. package/dist/tree-operations/leaf-range.js +67 -0
  906. package/dist/tree-operations/list/empty-check.d.ts +2 -3
  907. package/dist/tree-operations/list/empty-check.js +4 -4
  908. package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
  909. package/dist/tree-operations/list/exit-replacement.js +4 -9
  910. package/dist/tree-operations/list/item-partition.d.ts +2 -2
  911. package/dist/tree-operations/list/item-partition.js +2 -2
  912. package/dist/tree-operations/list/list-builders.d.ts +18 -16
  913. package/dist/tree-operations/list/list-builders.js +59 -30
  914. package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
  915. package/dist/tree-operations/list/ordered-markers.js +7 -16
  916. package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
  917. package/dist/tree-operations/list/reconcile-task.js +80 -23
  918. package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
  919. package/dist/tree-operations/list/sublist-separator.js +20 -27
  920. package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
  921. package/dist/tree-operations/list/task-paragraph.js +54 -0
  922. package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
  923. package/dist/tree-operations/list/unwrap-merge.js +44 -79
  924. package/dist/tree-operations/node-ops.d.ts +30 -52
  925. package/dist/tree-operations/node-ops.js +152 -218
  926. package/dist/tree-operations/node-primitives.d.ts +44 -31
  927. package/dist/tree-operations/node-primitives.js +84 -60
  928. package/dist/tree-operations/open-tail.d.ts +25 -0
  929. package/dist/tree-operations/open-tail.js +100 -0
  930. package/dist/tree-operations/parse-block.d.ts +15 -2
  931. package/dist/tree-operations/parse-block.js +19 -4
  932. package/dist/tree-operations/paste/apply.d.ts +7 -8
  933. package/dist/tree-operations/paste/apply.js +33 -63
  934. package/dist/tree-operations/paste/body-write.d.ts +8 -6
  935. package/dist/tree-operations/paste/body-write.js +13 -14
  936. package/dist/tree-operations/paste/container-match.d.ts +7 -10
  937. package/dist/tree-operations/paste/container-match.js +76 -58
  938. package/dist/tree-operations/paste/container-paste.d.ts +3 -3
  939. package/dist/tree-operations/paste/container-paste.js +3 -3
  940. package/dist/tree-operations/paste/dispatch.d.ts +26 -29
  941. package/dist/tree-operations/paste/dispatch.js +68 -53
  942. package/dist/tree-operations/paste/focus-target.d.ts +11 -14
  943. package/dist/tree-operations/paste/focus-target.js +13 -18
  944. package/dist/tree-operations/paste/hooks.d.ts +7 -12
  945. package/dist/tree-operations/paste/hooks.js +49 -46
  946. package/dist/tree-operations/paste/line-ending.d.ts +11 -0
  947. package/dist/tree-operations/paste/line-ending.js +32 -0
  948. package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
  949. package/dist/tree-operations/paste/list-absorb.js +17 -19
  950. package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
  951. package/dist/tree-operations/paste/list-break-out.js +24 -32
  952. package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
  953. package/dist/tree-operations/paste/parent-scope.js +9 -16
  954. package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
  955. package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
  956. package/dist/tree-operations/paste/paste-replacement.js +73 -42
  957. package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
  958. package/dist/tree-operations/paste/paste-transforms.js +18 -27
  959. package/dist/tree-operations/paste/replacement-parse.d.ts +9 -7
  960. package/dist/tree-operations/paste/replacement-parse.js +12 -10
  961. package/dist/tree-operations/paste/strategy.d.ts +1 -1
  962. package/dist/tree-operations/paste/strategy.js +1 -1
  963. package/dist/tree-operations/paste/table-slice.js +15 -10
  964. package/dist/tree-operations/paste-surfaces.d.ts +18 -29
  965. package/dist/tree-operations/paste-surfaces.js +14 -10
  966. package/dist/tree-operations/path-mutate.d.ts +7 -8
  967. package/dist/tree-operations/path-mutate.js +4 -4
  968. package/dist/tree-operations/reorder-unit.d.ts +4 -5
  969. package/dist/tree-operations/reorder-unit.js +5 -6
  970. package/dist/tree-operations/reorder.d.ts +7 -9
  971. package/dist/tree-operations/reorder.js +39 -40
  972. package/dist/tree-operations/settle.d.ts +42 -53
  973. package/dist/tree-operations/settle.js +241 -162
  974. package/dist/tree-operations/sharing.d.ts +5 -5
  975. package/dist/tree-operations/splice-many.d.ts +5 -5
  976. package/dist/tree-operations/splice-many.js +5 -5
  977. package/dist/tree-operations/stored-as.d.ts +13 -0
  978. package/dist/tree-operations/stored-as.js +48 -0
  979. package/dist/tree-operations/structural-change.d.ts +11 -15
  980. package/dist/tree-operations/structural-change.js +10 -14
  981. package/dist/tree-operations/structural-suffix.d.ts +22 -0
  982. package/dist/tree-operations/structural-suffix.js +61 -0
  983. package/dist/tree-operations/sub-table-copy.d.ts +7 -0
  984. package/dist/tree-operations/sub-table-copy.js +40 -36
  985. package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
  986. package/dist/tree-operations/table-grid-clipboard.js +11 -36
  987. package/dist/tree-operations/table-mutations.d.ts +7 -3
  988. package/dist/tree-operations/table-mutations.js +45 -9
  989. package/dist/tree-operations/unshare.d.ts +11 -15
  990. package/dist/tree-operations/unshare.js +15 -17
  991. package/dist/undo/manager.js +1 -1
  992. package/dist/undo/types.d.ts +2 -2
  993. package/docs/guide/consumer-guide.md +327 -205
  994. package/docs/guide/directives.md +7 -7
  995. package/docs/guide/plugin-api.md +253 -185
  996. package/docs/guide/plugin-guide.md +332 -235
  997. package/docs/guide/plugin-testing.md +96 -82
  998. package/package.json +12 -16
  999. package/dist/ambient/ambient-cursor.d.ts +0 -41
  1000. package/dist/ambient/ambient-cursor.js +0 -120
  1001. package/dist/components/blocks/code/code-paste.d.ts +0 -24
  1002. package/dist/components/blocks/code/code-paste.js +0 -21
  1003. package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
  1004. package/dist/components/blocks/table/cell-clipboard.js +0 -67
  1005. package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
  1006. package/dist/components/blocks/text/hidden-suffix.js +0 -15
  1007. package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
  1008. package/dist/components/image/image-source-bytes.d.ts +0 -15
  1009. package/dist/components/image/image-source-bytes.js +0 -80
  1010. package/dist/cursor/content-offsets.d.ts +0 -29
  1011. package/dist/cursor/content-offsets.js +0 -151
  1012. package/dist/cursor/reveal-anchor.d.ts +0 -30
  1013. package/dist/cursor/reveal-anchor.js +0 -31
  1014. package/dist/cursor/scroll-hold.d.ts +0 -10
  1015. package/dist/cursor/scroll-hold.js +0 -22
  1016. package/dist/invariants/split-landing.d.ts +0 -8
  1017. package/dist/invariants/split-landing.js +0 -15
  1018. package/dist/tree-operations/list/terminator.d.ts +0 -17
  1019. package/dist/tree-operations/list/terminator.js +0 -60
  1020. package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -31
  1021. package/dist/tree-operations/paste/replace-block-at-parent.js +0 -78
@@ -1,61 +1,63 @@
1
1
  <script lang="ts">
2
2
  import type { Document } from '../../core/nodes';
3
- import type { UndoController } from '../../editor-actions/deps';
3
+ import type { InlineRangeCommit } from '../../editor-actions/inline-range-commit';
4
4
  import type { EditorEvents } from '../../editor-events';
5
- import type { LinkReferenceResolverRef } from '../../editor-keys';
6
- import type { GrammarView } from '../../schema/block-openers';
7
5
  import type { CaretRestore } from '../../selection/caret-restore';
8
6
  import { resolveHref } from '../../core/inline-render';
9
7
  import LinkCard from './LinkCard.svelte';
10
8
  import { createLinkCardCommitter } from './link-card-commit';
11
9
  import type { LinkCardState } from './link-card-state.svelte';
10
+ import type { MenuPresence } from '../menu/menu-presence.svelte';
11
+ import type { Reading } from '../../schema/reading';
12
+ import type { CommandDispatchContext } from '../../schema/block-commands';
13
+ import { commandForKey } from '../../schema/commands';
14
+ import { blockNodeAt } from '../../tree-operations/node-primitives';
12
15
 
13
16
  // Mounted unconditionally by Editor: the anchoring and dismiss effects must observe the card's
14
17
  // target changing, so the open/closed `{#if}` lives here rather than at the mount site.
15
18
  let {
16
19
  card,
17
- controller,
20
+ inlineRange,
18
21
  events,
19
22
  getDoc,
20
23
  getEditorEl,
21
24
  measureRange,
22
- landCaret,
23
25
  activateLink,
24
26
  resolveLinkUrl,
25
27
  caretRestore,
26
- linkRef,
27
- grammar
28
+ reading,
29
+ menuPresence,
30
+ commands
28
31
  }: {
29
32
  card: LinkCardState;
30
- controller: UndoController;
33
+ inlineRange: InlineRangeCommit;
31
34
  events: EditorEvents;
32
35
  getDoc: () => Document;
33
36
  getEditorEl: () => HTMLElement | null;
34
37
  measureRange: (path: number[], start: number, end: number) => DOMRect[];
35
- landCaret: (path: number[], offset: number) => Promise<boolean>;
36
38
  activateLink: (url: string, event: MouseEvent) => void;
37
- /** The consumer's href rewrite, the render path's first funnel stage. */
39
+ /** The consumer's href rewrite, the first thing the render path applies. */
38
40
  resolveLinkUrl: (rawUrl: string) => string;
39
41
  caretRestore: CaretRestore;
40
- linkRef?: LinkReferenceResolverRef;
41
- grammar?: GrammarView;
42
+ reading: Reading;
43
+ menuPresence: MenuPresence;
44
+ /** The editor's command dispatch, which says what a keypress means at the card's block. */
45
+ commands: CommandDispatchContext;
42
46
  } = $props();
43
47
 
44
48
  let cardEl: HTMLDivElement | undefined = $state();
45
49
 
46
- // Props are stable for the editor's lifetime; reactive values already cross as getters.
50
+ // Props are stable for the editor's lifetime; reactive values already come in as getters.
47
51
  // svelte-ignore state_referenced_locally
48
52
  const linkCard = createLinkCardCommitter({
49
53
  getDoc,
50
54
  getEditorEl,
51
55
  getTarget: card.getTarget,
52
56
  getCreateTarget: card.getCreateTarget,
53
- controller,
57
+ inlineRange,
54
58
  events,
55
59
  measureRange,
56
- landCaret,
57
- linkRef,
58
- grammar
60
+ reading
59
61
  });
60
62
 
61
63
  $effect(() => {
@@ -64,17 +66,15 @@
64
66
  return linkCard.syncCardToLink(() => cardEl ?? null);
65
67
  });
66
68
 
67
- // A target that stops resolving unrenders the card but leaves the state set, so its
68
- // document-capture listeners live on and the next write that makes it resolve again
69
- // resurrects it holding a draft from before. Closing is the only honest answer.
69
+ // A target that stops resolving closes the card, or a later write that makes it resolve
70
+ // again would bring it back holding an old draft.
70
71
  $effect(() => {
71
72
  const target = card.getTarget();
72
73
  if (target && !linkCard.resolve(target)) card.close();
73
74
  });
74
75
 
75
- // A create target addresses bytes by range alone, so a write landing from outside the gesture
76
- // moves them under it. The commit path closes before it writes, and the handler re-reads the
77
- // target, so only an outside edit closes the card here.
76
+ // A create target is a bare range, which any other write would shift under it; the card's own
77
+ // commit closes it before writing, so only an outside edit closes it here.
78
78
  $effect(() => {
79
79
  if (!card.getCreateTarget()) return;
80
80
  return events.on('edit', () => {
@@ -82,9 +82,8 @@
82
82
  });
83
83
  });
84
84
 
85
- // An outside press is a non-destructive dismiss and leaves the caret where it just landed.
86
- // Escape is document-level because the opening click leaves the caret in the DOCUMENT: the
87
- // card is chrome beside a live caret until the user steps into it, and both states close.
85
+ // A click outside closes the card and leaves the caret where it landed. Escape is read at the
86
+ // document because a clicked card sits beside a caret that stays there.
88
87
  $effect(() => {
89
88
  if (!card.getTarget() && !card.getCreateTarget()) return;
90
89
  const onPointerDown = (e: PointerEvent) => {
@@ -96,14 +95,14 @@
96
95
  // A composing Escape cancels the IME's conversion, not the card.
97
96
  if (e.key !== 'Escape' || e.isComposing) return;
98
97
  const inCard = cardEl?.contains(document.activeElement) ?? false;
99
- // Only a card that HOLDS the focus consumes the key and owes the caret back; beside a
100
- // live caret it just closes, leaving Escape to whatever else was listening.
98
+ // Only a card that holds the focus takes the key and has to give the caret back;
99
+ // beside a live caret it just closes, leaving Escape to whatever else was listening.
101
100
  if (inCard) {
102
101
  e.preventDefault();
103
102
  e.stopPropagation();
104
103
  }
105
104
  card.close();
106
- if (inCard) caretRestore.restore();
105
+ if (inCard) void caretRestore.restore();
107
106
  };
108
107
  document.addEventListener('pointerdown', onPointerDown, true);
109
108
  document.addEventListener('keydown', onKeyDown, true);
@@ -122,13 +121,21 @@
122
121
 
123
122
  function commitCreate(url: string): void {
124
123
  const target = card.getCreateTarget();
125
- // An empty draft has nothing to mint; Enter stays inert rather than closing having done
126
- // nothing, which would drop the focus the card holds.
124
+ // An empty draft has nothing to write; Enter does nothing rather than closing the card
125
+ // having achieved nothing, which would drop the focus the card holds.
127
126
  if (!target || url.trim() === '') return;
128
127
  card.close();
129
128
  linkCard.commitCreate(target, url);
130
129
  }
131
130
 
131
+ // Resolved at the block the card edits, so a consumer's rebinding of the chord is the one
132
+ // the card takes.
133
+ function opensCard(e: KeyboardEvent): boolean {
134
+ const path = card.getTarget()?.path ?? card.getCreateTarget()?.path;
135
+ const kind = path ? (blockNodeAt(getDoc(), path)?.kind ?? null) : null;
136
+ return commandForKey(e, kind, commands) === 'link.openCard';
137
+ }
138
+
132
139
  function remove(): void {
133
140
  const target = card.getTarget();
134
141
  if (!target) return;
@@ -141,7 +148,7 @@
141
148
  {@const target = card.getTarget()!}
142
149
  {@const resolved = linkCard.resolve(target)}
143
150
  {#if resolved}
144
- <div bind:this={cardEl} class="md-link-card-anchor">
151
+ <div bind:this={cardEl} class="md-link-card-anchor" {@attach menuPresence.track}>
145
152
  {#key `${target.path.join(',')}@${target.sourceStart}`}
146
153
  <LinkCard
147
154
  url={resolved.url}
@@ -150,6 +157,7 @@
150
157
  onCommit={commit}
151
158
  onOpenLink={activateLink}
152
159
  onRemove={remove}
160
+ {opensCard}
153
161
  resolveHref={(url) => resolveHref({ resolveLinkUrl }, url)}
154
162
  />
155
163
  {/key}
@@ -157,7 +165,7 @@
157
165
  {/if}
158
166
  {:else if card.getCreateTarget()}
159
167
  {@const create = card.getCreateTarget()!}
160
- <div bind:this={cardEl} class="md-link-card-anchor">
168
+ <div bind:this={cardEl} class="md-link-card-anchor" {@attach menuPresence.track}>
161
169
  {#key `${create.path.join(',')}@${create.start}-${create.end}`}
162
170
  <LinkCard
163
171
  url=""
@@ -165,6 +173,7 @@
165
173
  canWrite={true}
166
174
  onCommit={commitCreate}
167
175
  onOpenLink={activateLink}
176
+ {opensCard}
168
177
  resolveHref={(url) => resolveHref({ resolveLinkUrl }, url)}
169
178
  />
170
179
  {/key}
@@ -1,24 +1,26 @@
1
1
  import type { Document } from '../../core/nodes';
2
- import type { UndoController } from '../../editor-actions/deps';
2
+ import type { InlineRangeCommit } from '../../editor-actions/inline-range-commit';
3
3
  import type { EditorEvents } from '../../editor-events';
4
- import type { LinkReferenceResolverRef } from '../../editor-keys';
5
- import type { GrammarView } from '../../schema/block-openers';
6
4
  import type { CaretRestore } from '../../selection/caret-restore';
7
5
  import type { LinkCardState } from './link-card-state.svelte';
6
+ import type { MenuPresence } from '../menu/menu-presence.svelte';
7
+ import type { Reading } from '../../schema/reading';
8
+ import type { CommandDispatchContext } from '../../schema/block-commands';
8
9
  type $$ComponentProps = {
9
10
  card: LinkCardState;
10
- controller: UndoController;
11
+ inlineRange: InlineRangeCommit;
11
12
  events: EditorEvents;
12
13
  getDoc: () => Document;
13
14
  getEditorEl: () => HTMLElement | null;
14
15
  measureRange: (path: number[], start: number, end: number) => DOMRect[];
15
- landCaret: (path: number[], offset: number) => Promise<boolean>;
16
16
  activateLink: (url: string, event: MouseEvent) => void;
17
- /** The consumer's href rewrite, the render path's first funnel stage. */
17
+ /** The consumer's href rewrite, the first thing the render path applies. */
18
18
  resolveLinkUrl: (rawUrl: string) => string;
19
19
  caretRestore: CaretRestore;
20
- linkRef?: LinkReferenceResolverRef;
21
- grammar?: GrammarView;
20
+ reading: Reading;
21
+ menuPresence: MenuPresence;
22
+ /** The editor's command dispatch, which says what a keypress means at the card's block. */
23
+ commands: CommandDispatchContext;
22
24
  };
23
25
  declare const LinkCardHost: import("svelte").Component<$$ComponentProps, {}, "">;
24
26
  type LinkCardHost = ReturnType<typeof LinkCardHost>;
@@ -1,47 +1,44 @@
1
1
  /**
2
- * What an open link card can read and write: the construct re-resolved from its target identity
3
- * after every edit, the bytes the write seam would produce, and the anchoring measure. Kept out of
4
- * the component so the card stays a rendering shell.
2
+ * What an open link card can read and write: the construct looked up again from its target after
3
+ * every edit, the bytes the write path would produce, and the measurement that positions it. Kept
4
+ * out of the component so the card stays a rendering shell.
5
5
  */
6
6
  import type { Document } from '../../core/nodes';
7
7
  import type { InlineNode } from '../../core/nodes';
8
8
  import type { NodeView } from '../../core/node-views';
9
- import type { UndoController } from '../../editor-actions/deps';
9
+ import type { InlineRangeCommit } from '../../editor-actions/inline-range-commit';
10
10
  import type { EditorEvents } from '../../editor-events';
11
- import type { LinkReferenceResolverRef } from '../../editor-keys';
12
- import type { GrammarView } from '../../schema/block-openers';
13
11
  import { type LinkTarget } from '../blocks/text/link-at-point';
14
12
  import type { CreateLinkTarget } from './link-card-state.svelte';
13
+ import type { Reading } from '../../schema/reading';
15
14
  export interface LinkCardCommitterDeps {
16
15
  getDoc: () => Document;
17
16
  getEditorEl: () => HTMLElement | null;
18
- /** The open card's target, read live: the anchor re-measures against whatever it names now. */
17
+ /** The open card's target, read live: the position re-measures against whatever it names. */
19
18
  getTarget: () => LinkTarget | null;
20
- /** The create gesture's range, the anchor when no construct exists yet. */
19
+ /** The create gesture's range, what the card sits under when no construct exists yet. */
21
20
  getCreateTarget: () => CreateLinkTarget | null;
22
- controller: UndoController;
21
+ /** The editor's inline range write, which every card edit goes through. */
22
+ inlineRange: InlineRangeCommit;
23
23
  events: EditorEvents;
24
- /** Rect measure for a raw range in a mounted block — the anchoring geometry. */
24
+ /** Measures the rectangles of a raw range in a mounted block, which is what positions it. */
25
25
  measureRange: (path: number[], start: number, end: number) => DOMRect[];
26
- /** Reveal + land the caret at a raw offset, so the next keystroke addresses the document. */
27
- landCaret: (path: number[], offset: number) => Promise<boolean>;
28
- linkRef?: LinkReferenceResolverRef;
29
- grammar?: GrammarView;
26
+ reading: Reading;
30
27
  }
31
28
  export interface ResolvedLinkTarget {
32
29
  block: NodeView;
33
30
  link: InlineNode;
34
- /** The destination as the author wrote it, decoded — what the card's field shows. */
31
+ /** The destination as the author wrote it, decoded: what the card's field shows. */
35
32
  url: string;
36
33
  }
37
34
  export interface LinkCardCommitter {
38
- /** The construct the target names, re-read from the live tree; null once an edit removed it. */
35
+ /** The construct the target names, re-read from the live tree; null once an edit removes it. */
39
36
  resolve(target: LinkTarget): ResolvedLinkTarget | null;
40
- /** The bytes a url commit would write, or null if the seam would decline — the card's dirty
41
- * check compares against these rather than deciding bytes itself. */
37
+ /** The bytes a url commit would write, or null if the write path would refuse; the card
38
+ * compares against these rather than deciding the bytes itself. */
42
39
  buildBytes(target: LinkTarget, url: string): string | null;
43
40
  commitUrl(target: LinkTarget, url: string): void;
44
- /** Mint `[selected text](url)` over the create range — the one write of the create gesture. */
41
+ /** Write `[selected text](url)` over the create range: the create gesture's one write. */
45
42
  commitCreate(target: CreateLinkTarget, url: string): void;
46
43
  removeLink(target: LinkTarget): void;
47
44
  /** Position `getCard()` under the link and keep it there across edits and scrolls. */
@@ -1,24 +1,19 @@
1
1
  /**
2
- * What an open link card can read and write: the construct re-resolved from its target identity
3
- * after every edit, the bytes the write seam would produce, and the anchoring measure. Kept out of
4
- * the component so the card stays a rendering shell.
2
+ * What an open link card can read and write: the construct looked up again from its target after
3
+ * every edit, the bytes the write path would produce, and the measurement that positions it. Kept
4
+ * out of the component so the card stays a rendering shell.
5
5
  */
6
6
  import { wireOverlayRemeasure } from '../../cursor/overlay-remeasure';
7
- import { createInlineRangeCommit } from '../../editor-actions/inline-range-commit';
8
7
  import { isBlockNode, nodeAt } from '../../tree-operations/node-primitives';
9
8
  import { linkConstructAt } from '../blocks/text/link-at-point';
10
- import { buildLinkEditBytes, buildLinkUnwrapBytes, buildLinkWrapBytes, linkFieldsFromInline } from '../blocks/text/link-source-bytes';
9
+ import { buildLinkEditBytes, buildLinkUnwrapBytes, buildLinkWrapBytes, linkFieldsFromInline } from '../../core/inline/link-source-bytes';
11
10
  export function createLinkCardCommitter(deps) {
12
- const inlineRange = createInlineRangeCommit({
13
- getDoc: deps.getDoc,
14
- controller: deps.controller,
15
- grammar: deps.grammar
16
- });
11
+ const { inlineRange } = deps;
17
12
  function resolve(target) {
18
13
  const block = nodeAt(deps.getDoc(), target.path);
19
14
  if (block === null || !isBlockNode(block))
20
15
  return null;
21
- const link = linkConstructAt(block, target.sourceStart, deps.linkRef);
16
+ const link = linkConstructAt(block, target.sourceStart, deps.reading);
22
17
  return link === null ? null : { block, link, url: link.url ?? '' };
23
18
  }
24
19
  function editBytes(target, url) {
@@ -27,9 +22,8 @@ export function createLinkCardCommitter(deps) {
27
22
  return null;
28
23
  const { block, link } = resolved;
29
24
  const current = linkFieldsFromInline(link, block.raw);
30
- // A reference form cannot carry a NEW destination without editing its definition, which
31
- // lives in another block; changing the url is the user opting into the inline form. The
32
- // title rides along either way — the card never shows it, so it is not the card's to drop.
25
+ // A reference form cannot take a new url without editing its definition elsewhere, so a
26
+ // changed url writes the inline form; the title comes along either way.
33
27
  const fields = url === current.url
34
28
  ? current
35
29
  : {
@@ -37,15 +31,15 @@ export function createLinkCardCommitter(deps) {
37
31
  url,
38
32
  ...(current.title !== undefined ? { title: current.title } : {})
39
33
  };
40
- const bytes = buildLinkEditBytes(link, block.raw, fields, deps.linkRef?.current);
34
+ const bytes = buildLinkEditBytes(link, block.raw, fields, deps.reading);
41
35
  return bytes === null ? null : { bytes, link };
42
36
  }
43
37
  function buildBytes(target, url) {
44
38
  return editBytes(target, url)?.bytes ?? null;
45
39
  }
46
40
  function commitUrl(target, url) {
47
- // An unchanged url is a close, not a write: the rebuild would respell author bytes the
48
- // serializer normalizes (`(<a b>)` → `(a%20b)`) and mint an undo entry for nothing.
41
+ // An unchanged url just closes the card: a rebuild would respell author bytes the
42
+ // serializer normalizes (`(<a b>)` to `(a%20b)`) and add an undo entry for nothing.
49
43
  const resolved = resolve(target);
50
44
  if (!resolved || url === resolved.url)
51
45
  return;
@@ -58,7 +52,7 @@ export function createLinkCardCommitter(deps) {
58
52
  const block = nodeAt(deps.getDoc(), target.path);
59
53
  if (block === null || !isBlockNode(block))
60
54
  return;
61
- const bytes = buildLinkWrapBytes(block.raw, target.start, target.end, url, deps.linkRef?.current);
55
+ const bytes = buildLinkWrapBytes(block.raw, target.start, target.end, url, deps.reading);
62
56
  if (bytes === null)
63
57
  return;
64
58
  void write(target.path, target.start, target.end, bytes);
@@ -67,19 +61,17 @@ export function createLinkCardCommitter(deps) {
67
61
  const resolved = resolve(target);
68
62
  if (!resolved)
69
63
  return;
70
- const bytes = buildLinkUnwrapBytes(resolved.link, resolved.block.raw, deps.linkRef?.current);
64
+ const bytes = buildLinkUnwrapBytes(resolved.link, resolved.block.raw, deps.reading);
71
65
  if (bytes === null)
72
66
  return;
73
67
  void write(target.path, resolved.link.start, resolved.link.end, bytes);
74
68
  }
69
+ // The caret goes to the construct's outer start, which the undo entry records too, so the caret
70
+ // before and after an undo agree.
75
71
  async function write(path, start, end, bytes) {
76
- await inlineRange.commitInlineRange(path, start, end, bytes, start);
77
- // The construct's outer start, which is also the offset the undo entry records: the caret
78
- // before an undo and the caret after it then agree, and a remove-link lands where the
79
- // unwrapped text now begins.
80
- await deps.landCaret(path, start);
72
+ await inlineRange.commitInlineRange(path, start, end, bytes, start, { landCaret: true });
81
73
  }
82
- /** The raw range the card anchors under: the resolved construct, or the create range as-is. */
74
+ /** The raw range the card sits under: the resolved construct, or the create range as it is. */
83
75
  function anchoredRange() {
84
76
  const target = deps.getTarget();
85
77
  if (target) {
@@ -95,8 +87,8 @@ export function createLinkCardCommitter(deps) {
95
87
  const editorEl = deps.getEditorEl();
96
88
  if (!cardEl || !editorEl)
97
89
  return () => { };
98
- // Measured through the rects API off RAW offsets, so the anchor survives the DOM rebuild
99
- // every commit does — there is no element reference here to go stale.
90
+ // Measured through the rects API from raw offsets, so the position survives the DOM
91
+ // rebuild every commit does: there is no element reference here to go stale.
100
92
  const measure = () => {
101
93
  const range = anchoredRange();
102
94
  if (!range)
@@ -111,9 +103,8 @@ export function createLinkCardCommitter(deps) {
111
103
  cardEl.style.top = `${rect.bottom - editorRect.top - borderTop + editorEl.scrollTop}px`;
112
104
  cardEl.style.left = `${rect.left - editorRect.left - borderLeft + editorEl.scrollLeft}px`;
113
105
  };
114
- // The setup measure reads the document, and letting that register would make the caller's
115
- // $effect tear down and re-wire these listeners on every keystroke. The `edit` subscription
116
- // below is the one document trigger.
106
+ // Untracked setup measure, or the caller's $effect would re-wire these listeners on every
107
+ // keystroke; the `edit` subscription below is the document trigger.
117
108
  const unwireScroll = wireOverlayRemeasure({
118
109
  el: cardEl,
119
110
  editorRoot: editorEl,
@@ -1,39 +1,29 @@
1
1
  /**
2
- * `link.openCard` — the keyboard entry to the link card and the pressed state a toolbar paints for
3
- * it, off one resolution of the construct holding the caret or a range inside it. The chord ENTERS
4
- * the card (focus in the URL field), unlike a click, which opens it beside a caret that stays the
5
- * document's. Live mode only: every other mode paints the destination.
2
+ * `link.openCard`: the keyboard way into the link card, and the pressed state a toolbar paints
3
+ * for it, both from one lookup of the construct holding the caret or a range inside it. The chord
4
+ * enters the card, with focus in the URL field, unlike a click, which opens it beside a caret that
5
+ * stays in the document. Live mode only: every other mode paints the destination.
6
6
  */
7
- import type { PresentationMode } from '../../presentation-mode';
8
7
  import { type LinkPointQuery, type LinkTarget } from '../blocks/text/link-at-point';
9
8
  import type { LinkCardState } from './link-card-state.svelte';
10
- /** What locating the card's construct takes, whether a press or a pressed-state read asks. */
9
+ /** What locating the card's construct takes, whether a click or a pressed-state read asks. */
11
10
  export interface LinkCardTargetQuery extends LinkPointQuery {
12
- mode: PresentationMode;
13
- /** The block-local raw selection, or null at a collapsed caret. Required, never defaulted:
14
- * a surface that must mint no link says so by passing null wherever it could create. */
11
+ /** The raw selection within this block, or null at a collapsed caret. Required, never given a
12
+ * default: a caller that must create no link says so by passing null wherever it could. */
15
13
  selection: {
16
14
  start: number;
17
15
  end: number;
18
16
  } | null;
19
- /** True while a range crosses block boundaries. Required for the same reason, and because
20
- * `selection` cannot report it: read off this block's own DOM walk, an endpoint in another
21
- * block comes back as end-of-walk — a range running to the block's end that nobody made. */
17
+ /** True while a range crosses blocks: `selection`, measured against this block's DOM, reports
18
+ * an endpoint in another block as this block's end. */
22
19
  crossBlockRange: boolean;
23
20
  }
24
21
  export interface LinkCardEntryQuery extends LinkCardTargetQuery {
25
22
  card: LinkCardState;
26
23
  }
27
- /**
28
- * The construct the chord would EDIT: the card-editable one under the caret, which a range must
29
- * lie wholly inside since the card edits ONE link. Null where the chord creates instead or opens
30
- * nothing, so a pressed paint and the press it promises resolve the same construct.
31
- */
24
+ /** The construct the chord would edit, under the caret or wholly containing the range; null
25
+ * where the chord creates or opens nothing, so the pressed state matches the click. */
32
26
  export declare function linkCardTargetAt(query: LinkCardTargetQuery): LinkTarget | null;
33
- /**
34
- * Enter the card for the chord: the construct the caret — or a range lying wholly inside it —
35
- * sits in, EDIT mode; failing that, CREATE mode over the range, declined when it crosses another
36
- * construct's bytes, since wrapping inside or across one is a policy question. The chord is
37
- * consumed either way, by the keymap arm that calls this.
38
- */
27
+ /** Edits the construct holding the caret or range, else creates one over the range unless it
28
+ * crosses another construct's bytes. The keymap takes the chord either way. */
39
29
  export declare function enterLinkCardAtCaret(query: LinkCardEntryQuery): void;
@@ -1,18 +1,15 @@
1
1
  /**
2
- * `link.openCard` — the keyboard entry to the link card and the pressed state a toolbar paints for
3
- * it, off one resolution of the construct holding the caret or a range inside it. The chord ENTERS
4
- * the card (focus in the URL field), unlike a click, which opens it beside a caret that stays the
5
- * document's. Live mode only: every other mode paints the destination.
2
+ * `link.openCard`: the keyboard way into the link card, and the pressed state a toolbar paints
3
+ * for it, both from one lookup of the construct holding the caret or a range inside it. The chord
4
+ * enters the card, with focus in the URL field, unlike a click, which opens it beside a caret that
5
+ * stays in the document. Live mode only: every other mode paints the destination.
6
6
  */
7
- import { canWrapRangeAsLink } from '../blocks/text/link-source-bytes';
7
+ import { canWrapRangeAsLink } from '../../core/inline/link-source-bytes';
8
8
  import { resolveLinkAtPoint } from '../blocks/text/link-at-point';
9
- /**
10
- * The construct the chord would EDIT: the card-editable one under the caret, which a range must
11
- * lie wholly inside since the card edits ONE link. Null where the chord creates instead or opens
12
- * nothing, so a pressed paint and the press it promises resolve the same construct.
13
- */
9
+ /** The construct the chord would edit, under the caret or wholly containing the range; null
10
+ * where the chord creates or opens nothing, so the pressed state matches the click. */
14
11
  export function linkCardTargetAt(query) {
15
- if (query.mode !== 'live' || query.crossBlockRange)
12
+ if (query.reading.mode() !== 'live' || query.crossBlockRange)
16
13
  return null;
17
14
  const hit = resolveLinkAtPoint(query);
18
15
  if (hit === null)
@@ -22,22 +19,17 @@ export function linkCardTargetAt(query) {
22
19
  return null;
23
20
  return hit.target;
24
21
  }
25
- /**
26
- * Enter the card for the chord: the construct the caret — or a range lying wholly inside it —
27
- * sits in, EDIT mode; failing that, CREATE mode over the range, declined when it crosses another
28
- * construct's bytes, since wrapping inside or across one is a policy question. The chord is
29
- * consumed either way, by the keymap arm that calls this.
30
- */
22
+ /** Edits the construct holding the caret or range, else creates one over the range unless it
23
+ * crosses another construct's bytes. The keymap takes the chord either way. */
31
24
  export function enterLinkCardAtCaret(query) {
32
- if (query.mode !== 'live')
25
+ if (query.reading.mode() !== 'live')
33
26
  return;
34
- // The dispatch seam declines `link.openCard` over a cross-block range already
35
- // (`RANGE_DECLINED_COMMAND_IDS`); the belt is here because the offsets this arm would
36
- // otherwise trust are fabricated in exactly that state rather than absent.
27
+ // Command dispatch already refuses a cross-block range; checked again because the offsets
28
+ // here would be made up in that state.
37
29
  if (query.crossBlockRange)
38
30
  return;
39
- // Edit before create, since create declines a range already inside a construct: taking the
40
- // create fork there leaves the press inert under a button the pressed read paints ON.
31
+ // Edit before create, since create refuses a range already inside a construct: going the
32
+ // create way there leaves the click doing nothing under a button painted as pressed.
41
33
  const target = linkCardTargetAt(query);
42
34
  if (target) {
43
35
  query.card.enter(target);
@@ -46,6 +38,6 @@ export function enterLinkCardAtCaret(query) {
46
38
  const range = query.selection;
47
39
  if (range === null || range.start >= range.end)
48
40
  return;
49
- if (canWrapRangeAsLink(query.block.raw, range.start, range.end, query.linkRef?.current))
41
+ if (canWrapRangeAsLink(query.block.raw, range.start, range.end, query.reading))
50
42
  query.card.enterCreate({ path: query.path, start: range.start, end: range.end });
51
43
  }
@@ -1,6 +1,6 @@
1
1
  import type { LinkTarget } from '../blocks/text/link-at-point';
2
- /** The create gesture's target: the raw range a commit would wrap. A range, not a construct —
3
- * the document holds nothing until Enter mints it, which is what lets Escape owe no cleanup. */
2
+ /** The create gesture's target: the raw range a commit would wrap. A range, not a construct,
3
+ * since the document holds nothing until Enter writes it, so Escape has nothing to clean up. */
4
4
  export interface CreateLinkTarget {
5
5
  path: number[];
6
6
  start: number;
@@ -10,35 +10,31 @@ export interface LinkCardState {
10
10
  getTarget(): LinkTarget | null;
11
11
  /** Set and `getTarget()` are mutually exclusive: one card, one target. */
12
12
  getCreateTarget(): CreateLinkTarget | null;
13
- /**
14
- * Zero for a click, a fresh positive number for each keyboard entry. The card focuses its field
15
- * when this differs from the zero it starts at, which separates the two gestures without a mode
16
- * flag AND survives the case with no remount to key on: `Mod+K` on an already-open card.
17
- */
13
+ /** Zero for a click, a fresh number for each keyboard entry; the card focuses its field when
14
+ * it changes, which also covers `Mod+K` on a card already open. */
18
15
  getFocusEpoch(): number;
19
- /** Anchored beside a live caret; the document keeps focus. The click gesture.
20
- * False when `canOpen` declined and no card opened. */
16
+ /** Positioned beside a live caret; the document keeps focus. The click gesture.
17
+ * False when `canOpen` refused and no card opened. */
21
18
  open(target: LinkTarget): boolean;
22
- /** Opened AND focused, so the trap and Escape's caret restore engage. The chord gesture.
23
- * False when `canEnter` declined. */
19
+ /** Opened and focused, so the focus trap and Escape's caret restore both apply. The chord
20
+ * gesture. False when `canEnter` refused. */
24
21
  enter(target: LinkTarget): boolean;
25
- /** Entered over the range a commit would wrap. False when `canOpenCreate` declined. */
22
+ /** Entered over the range a commit would wrap. False when `canOpenCreate` refused. */
26
23
  enterCreate(target: CreateLinkTarget): boolean;
27
24
  close(): void;
28
25
  }
29
26
  export interface LinkCardOptions {
30
- /** Runs on every entry path before the card takes the screen — the caret snapshot lives here
31
- * rather than at each caller, so entry path N+1 cannot forget it. */
27
+ /** Runs on every entry path before the card takes the screen: the caret snapshot lives here
28
+ * rather than at each caller, so the next entry path cannot forget it. */
32
29
  onOpen: () => void;
33
- /** The CLICK door: a live selection — native or the editor's cross-block range — is a gesture
34
- * an unasked-for card must not interrupt or write over. */
30
+ /** For a click: a live selection, native or the editor's cross-block range, is a gesture an
31
+ * unasked-for card must not interrupt or write over. */
35
32
  canOpen: () => boolean;
36
- /** The CHORD door, looser than the click's by exactly one case: the entry resolves the
37
- * construct from the selection itself, so a range it admits is the card's own bytes. */
33
+ /** For the chord, looser than the click's by exactly one case: the entry resolves the
34
+ * construct from the selection itself, so a range it allows is the card's own bytes. */
38
35
  canEnter: () => boolean;
39
- /** The create door: gates on the very selection `canOpen` forbids, since the range IS the
40
- * gesture's target. Separate and required so each entry states which gesture it carries;
41
- * a cross-block range declines at all three. */
36
+ /** For create: requires the selection `canOpen` forbids, since the range is the target. All
37
+ * three checks refuse a cross-block range. */
42
38
  canOpenCreate: () => boolean;
43
39
  }
44
40
  export declare function createLinkCardState(options: LinkCardOptions): LinkCardState;
@@ -1,5 +1,5 @@
1
- // The open link card's target. Identity only — path plus construct start — because every commit
2
- // rebuilds the inline tree, so a captured node would address bytes that moved.
1
+ // The open link card's target: only what identifies it, a path plus where the construct starts,
2
+ // because every commit rebuilds the inline tree and a captured node would point at moved bytes.
3
3
  export function createLinkCardState(options) {
4
4
  let target = $state(null);
5
5
  let createTarget = $state(null);
@@ -1,17 +1,10 @@
1
1
  import type { DocumentView } from '../core/node-views';
2
2
  import type { EditEvent } from '../editor-events';
3
- /**
4
- * Whether a commit could change the LRD set, keeping the O(nodes) map rebuild off the keystroke
5
- * hot path. Any op that is not a kind-stable `input`/`metadataUpdate` could add or remove a
6
- * definition; a kind-stable one only can when its target is itself an LRD. `input` is kind-stable
7
- * by construction, held by the input-op kind-stability lint under `test/invariants/lint/`.
8
- */
3
+ /** Keeps the whole-document map rebuild off the keystroke path: `input` and `metadataUpdate`
4
+ * never change a block's kind, so they matter only when the block is itself a definition. */
9
5
  export declare function lrdMapCouldChange(doc: DocumentView, event: EditEvent): boolean;
10
- /**
11
- * A monotonic stamp that changes **exactly** when the signature string does.
12
- * Reference-bearing render memos key on the epoch instead of the whole (~MB)
13
- * signature, so bumping on every rebuild would re-render every bracket-bearing block.
14
- */
6
+ /** Changes exactly when the signature does: render caches key on it rather than the (~MB)
7
+ * signature, and a bump per rebuild would re-render every block with a bracket in it. */
15
8
  export declare function advanceSignatureEpoch(prevSignature: string, prevEpoch: number, nextSignature: string): {
16
9
  signature: string;
17
10
  epoch: number;