@voithos-labs/aragonite 0.10.3 → 0.10.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1021) hide show
  1. package/README.md +2 -2
  2. package/dist/a11y-strings.d.ts +12 -5
  3. package/dist/a11y-strings.js +61 -5
  4. package/dist/action-contracts.d.ts +242 -155
  5. package/dist/action-contracts.js +2 -2
  6. package/dist/active-editor.d.ts +3 -3
  7. package/dist/active-editor.js +8 -9
  8. package/dist/ambient/ambient-dom.d.ts +2 -5
  9. package/dist/ambient/ambient-dom.js +16 -62
  10. package/dist/assert.js +6 -5
  11. package/dist/block-component.d.ts +135 -109
  12. package/dist/block-component.js +30 -22
  13. package/dist/block-id.d.ts +6 -10
  14. package/dist/block-id.js +25 -14
  15. package/dist/bounded-memo.d.ts +5 -5
  16. package/dist/bounded-memo.js +6 -6
  17. package/dist/components/BlockDragHandle.svelte +13 -20
  18. package/dist/components/BlockHost.svelte +56 -134
  19. package/dist/components/BlockList.svelte +22 -19
  20. package/dist/components/DecorationOverlay.svelte +9 -10
  21. package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
  22. package/dist/components/Editor.svelte +619 -1089
  23. package/dist/components/Editor.svelte.d.ts +9 -20
  24. package/dist/components/GapCaret.svelte +26 -59
  25. package/dist/components/SelectionOverlay.svelte +36 -67
  26. package/dist/components/SelectionOverlay.svelte.d.ts +6 -4
  27. package/dist/components/TailInsert.svelte +8 -55
  28. package/dist/components/TailInsert.svelte.d.ts +4 -6
  29. package/dist/components/block-content-selector.d.ts +11 -11
  30. package/dist/components/block-content-selector.js +11 -11
  31. package/dist/components/block-el-lookup.d.ts +6 -0
  32. package/dist/components/block-el-lookup.js +27 -0
  33. package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
  34. package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
  35. package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
  36. package/dist/components/blocks/code/CodeBlock.svelte +255 -276
  37. package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
  38. package/dist/components/blocks/code/CodeBlockRail.svelte +103 -100
  39. package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
  40. package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
  41. package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
  42. package/dist/components/blocks/code/code-bootstrap.js +35 -28
  43. package/dist/components/blocks/code/code-context-actions.js +5 -4
  44. package/dist/components/blocks/code/code-enter.js +2 -2
  45. package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
  46. package/dist/components/blocks/code/code-fence-boundary.js +40 -66
  47. package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
  48. package/dist/components/blocks/code/code-fence-exit.js +24 -25
  49. package/dist/components/blocks/code/code-indent.d.ts +2 -2
  50. package/dist/components/blocks/code/code-indent.js +4 -7
  51. package/dist/components/blocks/code/code-languages.d.ts +16 -12
  52. package/dist/components/blocks/code/code-languages.js +58 -32
  53. package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
  54. package/dist/components/blocks/code/code-paste-surface.js +9 -18
  55. package/dist/components/blocks/code/code-renderer.d.ts +21 -5
  56. package/dist/components/blocks/code/code-renderer.js +90 -125
  57. package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
  58. package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
  59. package/dist/components/blocks/directive/activate-directives.js +18 -13
  60. package/dist/components/blocks/editable-leaf.d.ts +50 -74
  61. package/dist/components/blocks/editable-leaf.js +144 -202
  62. package/dist/components/blocks/editable-surface.d.ts +96 -100
  63. package/dist/components/blocks/editable-surface.js +101 -109
  64. package/dist/components/blocks/list/ListBlock.svelte +46 -90
  65. package/dist/components/blocks/list/ListItemBlock.svelte +99 -144
  66. package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +3 -0
  67. package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
  68. package/dist/components/blocks/list/task-checkbox.js +12 -7
  69. package/dist/components/blocks/plain-text-backend.d.ts +4 -20
  70. package/dist/components/blocks/plain-text-backend.js +9 -43
  71. package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
  72. package/dist/components/blocks/surface-wiring.svelte.js +15 -34
  73. package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
  74. package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
  75. package/dist/components/blocks/table/TableBlock.svelte +100 -165
  76. package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
  77. package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
  78. package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
  79. package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
  80. package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
  81. package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
  82. package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
  83. package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
  84. package/dist/components/blocks/table/cell-pointer.js +49 -71
  85. package/dist/components/blocks/table/cell-render.d.ts +24 -29
  86. package/dist/components/blocks/table/cell-render.js +29 -31
  87. package/dist/components/blocks/table/selected-cells.d.ts +7 -7
  88. package/dist/components/blocks/table/selected-cells.js +9 -13
  89. package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
  90. package/dist/components/blocks/table/table-caret-at-point.js +5 -5
  91. package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
  92. package/dist/components/blocks/table/table-cell-paste.js +27 -43
  93. package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
  94. package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
  95. package/dist/components/blocks/table/table-menu-model.js +6 -10
  96. package/dist/components/blocks/table/table-navigation.js +2 -2
  97. package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
  98. package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
  99. package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
  100. package/dist/components/blocks/text/auto-pair-record.js +51 -0
  101. package/dist/components/blocks/text/click-snap-guard.d.ts +9 -4
  102. package/dist/components/blocks/text/click-snap-guard.js +16 -5
  103. package/dist/components/blocks/text/composition-seat.d.ts +17 -14
  104. package/dist/components/blocks/text/composition-seat.js +11 -11
  105. package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
  106. package/dist/components/blocks/text/construct-edge-delete.js +50 -65
  107. package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
  108. package/dist/components/blocks/text/construct-reveal.js +13 -14
  109. package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
  110. package/dist/components/blocks/text/delimiter-autopair.js +87 -103
  111. package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
  112. package/dist/components/blocks/text/edge-policy-dispatch.js +164 -180
  113. package/dist/components/blocks/text/edge-seat.d.ts +17 -26
  114. package/dist/components/blocks/text/edge-seat.js +43 -70
  115. package/dist/components/blocks/text/link-at-point.d.ts +9 -9
  116. package/dist/components/blocks/text/link-at-point.js +12 -15
  117. package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
  118. package/dist/components/blocks/text/live-join-seam.js +75 -112
  119. package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
  120. package/dist/components/blocks/text/live-selection-edit.js +32 -105
  121. package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
  122. package/dist/components/blocks/text/live-split-rebalance.js +50 -67
  123. package/dist/components/blocks/text/marker-completion.d.ts +7 -12
  124. package/dist/components/blocks/text/marker-completion.js +17 -10
  125. package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
  126. package/dist/components/blocks/text/pending-mark-insert.js +30 -49
  127. package/dist/components/blocks/text/screen-diff.d.ts +5 -15
  128. package/dist/components/blocks/text/screen-diff.js +5 -19
  129. package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
  130. package/dist/components/blocks/text/text-clipboard.js +27 -32
  131. package/dist/components/blocks/text/text-keydown.d.ts +20 -30
  132. package/dist/components/blocks/text/text-keydown.js +54 -51
  133. package/dist/components/blocks/text/text-render.d.ts +25 -35
  134. package/dist/components/blocks/text/text-render.js +82 -61
  135. package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
  136. package/dist/components/blocks/text/widget-adjacency.js +17 -17
  137. package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
  138. package/dist/components/blocks/text/widget-interaction.js +243 -208
  139. package/dist/components/blocks/widget-portal.d.ts +20 -29
  140. package/dist/components/blocks/widget-portal.js +16 -14
  141. package/dist/components/built-in-blocks.d.ts +3 -4
  142. package/dist/components/built-in-blocks.js +17 -18
  143. package/dist/components/drag-handle.d.ts +13 -30
  144. package/dist/components/drag-handle.js +25 -63
  145. package/dist/components/editor-built-ins.d.ts +1 -0
  146. package/dist/components/editor-built-ins.js +16 -0
  147. package/dist/components/editor-root-clipboard.d.ts +6 -6
  148. package/dist/components/editor-root-clipboard.js +16 -27
  149. package/dist/components/editor-root-document-swap.d.ts +49 -0
  150. package/dist/components/editor-root-document-swap.js +54 -0
  151. package/dist/components/editor-root-focus.d.ts +5 -4
  152. package/dist/components/editor-root-focus.js +51 -22
  153. package/dist/components/editor-root-focused-surface.d.ts +35 -0
  154. package/dist/components/editor-root-focused-surface.js +65 -0
  155. package/dist/components/editor-root-geometry.d.ts +15 -24
  156. package/dist/components/editor-root-geometry.js +27 -31
  157. package/dist/components/editor-root-gestures.d.ts +39 -0
  158. package/dist/components/editor-root-gestures.js +189 -0
  159. package/dist/components/editor-root-keydown.d.ts +10 -25
  160. package/dist/components/editor-root-keydown.js +19 -43
  161. package/dist/components/editor-root-listeners.d.ts +22 -31
  162. package/dist/components/editor-root-listeners.js +49 -46
  163. package/dist/components/editor-root-menus.d.ts +51 -0
  164. package/dist/components/editor-root-menus.js +147 -0
  165. package/dist/components/editor-root-mode-flip.d.ts +16 -11
  166. package/dist/components/editor-root-mode-flip.js +36 -34
  167. package/dist/components/editor-root-scroll-host.d.ts +22 -0
  168. package/dist/components/editor-root-scroll-host.js +34 -0
  169. package/dist/components/editor-root-test-surface.d.ts +48 -0
  170. package/dist/components/editor-root-test-surface.js +6 -0
  171. package/dist/components/image/ImageOverlayHost.svelte +44 -35
  172. package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
  173. package/dist/components/image/ImageProperties.svelte +37 -41
  174. package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
  175. package/dist/components/image/ImageResizeHandles.svelte +26 -30
  176. package/dist/components/image/image-crop.d.ts +5 -11
  177. package/dist/components/image/image-crop.js +5 -11
  178. package/dist/components/image/image-edit-commit.d.ts +19 -16
  179. package/dist/components/image/image-edit-commit.js +74 -38
  180. package/dist/components/image/image-resize.d.ts +2 -5
  181. package/dist/components/image/image-resize.js +3 -6
  182. package/dist/components/image/image-widget-editing.d.ts +3 -3
  183. package/dist/components/image/image-widget-editing.js +9 -9
  184. package/dist/components/image/widget-dom.d.ts +2 -3
  185. package/dist/components/image/widget-dom.js +19 -24
  186. package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
  187. package/dist/components/image/widget-selection-state.svelte.js +26 -19
  188. package/dist/components/kind-cue.svelte.d.ts +21 -0
  189. package/dist/components/kind-cue.svelte.js +35 -0
  190. package/dist/components/link-card/LinkCard.svelte +115 -64
  191. package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
  192. package/dist/components/link-card/LinkCardHost.svelte +42 -33
  193. package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
  194. package/dist/components/link-card/link-card-commit.d.ts +16 -19
  195. package/dist/components/link-card/link-card-commit.js +21 -30
  196. package/dist/components/link-card/link-card-entry.d.ts +13 -23
  197. package/dist/components/link-card/link-card-entry.js +16 -24
  198. package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
  199. package/dist/components/link-card/link-card-state.svelte.js +2 -2
  200. package/dist/components/lrd-map-gate.d.ts +4 -11
  201. package/dist/components/lrd-map-gate.js +5 -11
  202. package/dist/components/menu/BlockMenu.svelte +20 -81
  203. package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
  204. package/dist/components/menu/InlineMenuHost.svelte +191 -0
  205. package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
  206. package/dist/components/menu/MenuIcon.svelte +3 -103
  207. package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
  208. package/dist/components/menu/SelectionToolbar.svelte +380 -0
  209. package/dist/components/menu/SelectionToolbar.svelte.d.ts +14 -0
  210. package/dist/components/menu/clipboard-actions.d.ts +3 -4
  211. package/dist/components/menu/clipboard-actions.js +3 -4
  212. package/dist/components/menu/default-context-actions.d.ts +4 -13
  213. package/dist/components/menu/default-context-actions.js +49 -67
  214. package/dist/components/menu/flyout-placement.d.ts +2 -2
  215. package/dist/components/menu/flyout-placement.js +2 -2
  216. package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
  217. package/dist/components/menu/menu-presence.svelte.js +19 -0
  218. package/dist/components/paste-image-arm.d.ts +6 -11
  219. package/dist/components/paste-image-arm.js +11 -18
  220. package/dist/components/portal.d.ts +2 -5
  221. package/dist/components/portal.js +4 -7
  222. package/dist/core/directive/activate.d.ts +4 -5
  223. package/dist/core/directive/activate.js +8 -9
  224. package/dist/core/directive/container-opener.js +13 -12
  225. package/dist/core/directive/grammar.d.ts +2 -5
  226. package/dist/core/directive/grammar.js +10 -10
  227. package/dist/core/directive/kinds.d.ts +4 -7
  228. package/dist/core/directive/kinds.js +14 -16
  229. package/dist/core/directive/registry.d.ts +12 -9
  230. package/dist/core/directive/registry.js +19 -20
  231. package/dist/core/directive/text-recognizer.d.ts +3 -2
  232. package/dist/core/directive/text-recognizer.js +5 -9
  233. package/dist/core/escapable.d.ts +1 -5
  234. package/dist/core/escapable.js +1 -5
  235. package/dist/core/inline/backticks.d.ts +3 -4
  236. package/dist/core/inline/backticks.js +3 -4
  237. package/dist/core/inline/character-refs.js +2 -1
  238. package/dist/core/inline/destination-bytes.d.ts +6 -3
  239. package/dist/core/inline/destination-bytes.js +50 -8
  240. package/dist/core/inline/entity-widget.d.ts +4 -3
  241. package/dist/core/inline/entity-widget.js +6 -6
  242. package/dist/core/inline/format-toggle.d.ts +22 -28
  243. package/dist/core/inline/format-toggle.js +97 -129
  244. package/dist/core/inline/html-entities.d.ts +2 -3
  245. package/dist/core/inline/html-entities.js +2 -3
  246. package/dist/core/inline/html-tag-grammar.js +6 -2
  247. package/dist/core/inline/image-dimensions.d.ts +2 -0
  248. package/dist/core/inline/image-dimensions.js +19 -2
  249. package/dist/core/inline/image-source-bytes.d.ts +11 -0
  250. package/dist/core/inline/image-source-bytes.js +71 -0
  251. package/dist/core/inline/index.d.ts +28 -21
  252. package/dist/core/inline/index.js +56 -34
  253. package/dist/core/inline/inline-cache.d.ts +12 -15
  254. package/dist/core/inline/inline-cache.js +11 -14
  255. package/dist/core/inline/inline-widgets.d.ts +55 -68
  256. package/dist/core/inline/inline-widgets.js +55 -58
  257. package/dist/core/inline/link-destination.d.ts +31 -0
  258. package/dist/core/inline/link-destination.js +129 -0
  259. package/dist/core/inline/link-reference-resolver.d.ts +8 -6
  260. package/dist/core/inline/link-reference-resolver.js +10 -6
  261. package/dist/core/inline/link-source-bytes.d.ts +31 -0
  262. package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
  263. package/dist/core/inline/live-edit/read-back.d.ts +29 -0
  264. package/dist/core/inline/live-edit/read-back.js +50 -0
  265. package/dist/core/inline/picture.d.ts +10 -0
  266. package/dist/core/inline/picture.js +40 -0
  267. package/dist/core/inline/scan/autolinks.d.ts +7 -8
  268. package/dist/core/inline/scan/autolinks.js +80 -59
  269. package/dist/core/inline/scan/brackets.d.ts +2 -2
  270. package/dist/core/inline/scan/brackets.js +6 -103
  271. package/dist/core/inline/scan/code-spans.d.ts +4 -0
  272. package/dist/core/inline/scan/code-spans.js +8 -0
  273. package/dist/core/inline/scan/emphasis.js +10 -14
  274. package/dist/core/inline/scan/index.d.ts +3 -1
  275. package/dist/core/inline/scan/index.js +32 -33
  276. package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
  277. package/dist/core/inline/scan/plugin-syntax.js +75 -89
  278. package/dist/core/inline/scan/scan-state.d.ts +2 -0
  279. package/dist/core/inline/scan/scan-state.js +1 -0
  280. package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
  281. package/dist/core/inline/scan/simple-nodes.js +2 -5
  282. package/dist/core/inline/scan/triggers.d.ts +17 -0
  283. package/dist/core/inline/scan/triggers.js +26 -0
  284. package/dist/core/inline/scan/url.js +8 -10
  285. package/dist/core/inline/transparency.d.ts +2 -1
  286. package/dist/core/inline/transparency.js +33 -17
  287. package/dist/core/inline/visibility.d.ts +30 -49
  288. package/dist/core/inline/visibility.js +31 -49
  289. package/dist/core/inline/walk.d.ts +4 -10
  290. package/dist/core/inline/walk.js +4 -10
  291. package/dist/core/inline-render.d.ts +22 -27
  292. package/dist/core/inline-render.js +51 -60
  293. package/dist/core/lines.d.ts +67 -26
  294. package/dist/core/lines.js +164 -33
  295. package/dist/core/metadata-parity.d.ts +9 -0
  296. package/dist/core/metadata-parity.js +25 -0
  297. package/dist/core/node-views.d.ts +7 -6
  298. package/dist/core/node-views.js +5 -5
  299. package/dist/core/nodes.d.ts +34 -44
  300. package/dist/core/nodes.js +4 -12
  301. package/dist/core/parser.d.ts +27 -34
  302. package/dist/core/parser.js +53 -67
  303. package/dist/core/parsers/blockquote.d.ts +5 -8
  304. package/dist/core/parsers/blockquote.js +11 -10
  305. package/dist/core/parsers/built-in-openers.d.ts +2 -5
  306. package/dist/core/parsers/built-in-openers.js +5 -8
  307. package/dist/core/parsers/fence-syntax.d.ts +36 -7
  308. package/dist/core/parsers/fence-syntax.js +61 -11
  309. package/dist/core/parsers/fenced-code.d.ts +16 -0
  310. package/dist/core/parsers/fenced-code.js +16 -15
  311. package/dist/core/parsers/heading.d.ts +19 -2
  312. package/dist/core/parsers/heading.js +50 -2
  313. package/dist/core/parsers/html-block.d.ts +3 -6
  314. package/dist/core/parsers/html-block.js +10 -11
  315. package/dist/core/parsers/indented-code.d.ts +1 -1
  316. package/dist/core/parsers/indented-code.js +2 -8
  317. package/dist/core/parsers/link-reference.d.ts +5 -3
  318. package/dist/core/parsers/link-reference.js +116 -120
  319. package/dist/core/parsers/list.d.ts +12 -5
  320. package/dist/core/parsers/list.js +53 -36
  321. package/dist/core/parsers/paragraph.d.ts +3 -3
  322. package/dist/core/parsers/paragraph.js +14 -5
  323. package/dist/core/parsers/table-completion.d.ts +2 -5
  324. package/dist/core/parsers/table-completion.js +7 -10
  325. package/dist/core/parsers/table.d.ts +8 -8
  326. package/dist/core/parsers/table.js +23 -26
  327. package/dist/core/parsers/thematic-break.js +15 -14
  328. package/dist/core/paths.d.ts +13 -0
  329. package/dist/core/paths.js +31 -0
  330. package/dist/core/terminator-escalation.d.ts +0 -7
  331. package/dist/core/terminator-escalation.js +5 -8
  332. package/dist/core/url-policy.d.ts +2 -5
  333. package/dist/core/url-policy.js +8 -12
  334. package/dist/cursor/caret-memory.d.ts +34 -0
  335. package/dist/cursor/caret-memory.js +82 -0
  336. package/dist/cursor/coordinate-spaces.d.ts +26 -19
  337. package/dist/cursor/coordinate-spaces.js +32 -20
  338. package/dist/cursor/dom-walk.d.ts +7 -13
  339. package/dist/cursor/dom-walk.js +7 -13
  340. package/dist/cursor/edge-affinity.d.ts +7 -35
  341. package/dist/cursor/edge-affinity.js +13 -44
  342. package/dist/cursor/focused-caret.d.ts +6 -8
  343. package/dist/cursor/focused-caret.js +7 -16
  344. package/dist/cursor/height-model.d.ts +3 -3
  345. package/dist/cursor/height-model.js +5 -5
  346. package/dist/cursor/height-oracle.d.ts +10 -7
  347. package/dist/cursor/height-oracle.js +26 -75
  348. package/dist/cursor/observe-resize.d.ts +13 -0
  349. package/dist/cursor/observe-resize.js +43 -0
  350. package/dist/cursor/overlay-rects.d.ts +2 -5
  351. package/dist/cursor/overlay-rects.js +2 -5
  352. package/dist/cursor/overlay-remeasure.d.ts +6 -7
  353. package/dist/cursor/overlay-remeasure.js +10 -14
  354. package/dist/cursor/pending-marks.d.ts +7 -9
  355. package/dist/cursor/pending-marks.js +6 -27
  356. package/dist/cursor/point-offset.d.ts +16 -10
  357. package/dist/cursor/point-offset.js +60 -25
  358. package/dist/cursor/reveal-source.d.ts +7 -11
  359. package/dist/cursor/reveal-source.js +10 -18
  360. package/dist/cursor/scroll-ancestors.d.ts +9 -20
  361. package/dist/cursor/scroll-ancestors.js +14 -26
  362. package/dist/cursor/scroll-owner.d.ts +92 -0
  363. package/dist/cursor/scroll-owner.js +283 -0
  364. package/dist/cursor/scrollport.d.ts +16 -8
  365. package/dist/cursor/scrollport.js +28 -5
  366. package/dist/cursor/sticky-column.d.ts +6 -29
  367. package/dist/cursor/sticky-column.js +6 -49
  368. package/dist/cursor/sticky-measure.d.ts +14 -9
  369. package/dist/cursor/sticky-measure.js +99 -49
  370. package/dist/cursor/surface-backend.d.ts +41 -0
  371. package/dist/cursor/surface-backend.js +78 -0
  372. package/dist/cursor/typography-estimates.d.ts +3 -3
  373. package/dist/cursor/typography-estimates.js +3 -3
  374. package/dist/cursor/visual-lines.d.ts +25 -13
  375. package/dist/cursor/visual-lines.js +72 -28
  376. package/dist/cursor/widget-edge-snap.d.ts +23 -0
  377. package/dist/cursor/widget-edge-snap.js +39 -0
  378. package/dist/cursor/widget-offset.d.ts +111 -102
  379. package/dist/cursor/widget-offset.js +352 -177
  380. package/dist/debug/diagnostics-report.d.ts +6 -6
  381. package/dist/debug/diagnostics-report.js +5 -5
  382. package/dist/debug/dump-tree.js +2 -2
  383. package/dist/debug/editor-diagnostics.d.ts +15 -0
  384. package/dist/debug/editor-diagnostics.js +33 -0
  385. package/dist/debug/inspect.d.ts +2 -2
  386. package/dist/debug/inspect.js +4 -4
  387. package/dist/debug/interaction-trace.d.ts +14 -15
  388. package/dist/debug/interaction-trace.js +19 -20
  389. package/dist/debug/operations-log.d.ts +1 -1
  390. package/dist/debug/operations-log.js +1 -1
  391. package/dist/decorations/buckets.d.ts +6 -12
  392. package/dist/decorations/buckets.js +4 -11
  393. package/dist/decorations/decoration-state.svelte.d.ts +2 -3
  394. package/dist/decorations/decoration-state.svelte.js +24 -26
  395. package/dist/decorations/island-dom.d.ts +10 -18
  396. package/dist/decorations/island-dom.js +25 -50
  397. package/dist/decorations/reserved-attrs.d.ts +6 -8
  398. package/dist/decorations/reserved-attrs.js +31 -17
  399. package/dist/decorations/types.d.ts +6 -7
  400. package/dist/decorations/types.js +2 -1
  401. package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
  402. package/dist/decorations/use-block-decorations.svelte.js +71 -0
  403. package/dist/decorations/widget-dom.d.ts +3 -3
  404. package/dist/decorations/widget-dom.js +5 -5
  405. package/dist/dev-warn.d.ts +5 -2
  406. package/dist/dev-warn.js +16 -4
  407. package/dist/editor-actions/ancestry-folds.d.ts +9 -14
  408. package/dist/editor-actions/ancestry-folds.js +13 -18
  409. package/dist/editor-actions/block-edit-core.d.ts +49 -22
  410. package/dist/editor-actions/block-edit-core.js +279 -151
  411. package/dist/editor-actions/block-edit-scope.d.ts +63 -50
  412. package/dist/editor-actions/block-edit-scope.js +100 -48
  413. package/dist/editor-actions/block-edit.d.ts +2 -3
  414. package/dist/editor-actions/block-edit.js +14 -90
  415. package/dist/editor-actions/commit/history.d.ts +4 -4
  416. package/dist/editor-actions/commit/history.js +33 -34
  417. package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
  418. package/dist/editor-actions/commit/reading-write-gate.js +56 -0
  419. package/dist/editor-actions/commit/text-batch.d.ts +7 -11
  420. package/dist/editor-actions/commit/text-batch.js +6 -7
  421. package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
  422. package/dist/editor-actions/commit/undo-controller.js +346 -216
  423. package/dist/editor-actions/container-block-component.d.ts +32 -51
  424. package/dist/editor-actions/container-block-component.js +66 -92
  425. package/dist/editor-actions/container-edit.d.ts +4 -2
  426. package/dist/editor-actions/container-edit.js +14 -44
  427. package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
  428. package/dist/editor-actions/container-exit-overrides.js +19 -21
  429. package/dist/editor-actions/deps.d.ts +25 -32
  430. package/dist/editor-actions/enter-completion.d.ts +12 -15
  431. package/dist/editor-actions/enter-completion.js +49 -51
  432. package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
  433. package/dist/editor-actions/focus/focus-dispatch.js +33 -52
  434. package/dist/editor-actions/focus/focus-landing.d.ts +11 -5
  435. package/dist/editor-actions/focus/focus-landing.js +29 -14
  436. package/dist/editor-actions/focus/focus.d.ts +3 -2
  437. package/dist/editor-actions/focus/focus.js +42 -59
  438. package/dist/editor-actions/index.d.ts +4 -3
  439. package/dist/editor-actions/index.js +5 -4
  440. package/dist/editor-actions/inline-range-commit.d.ts +18 -16
  441. package/dist/editor-actions/inline-range-commit.js +45 -54
  442. package/dist/editor-actions/leaf-write.d.ts +11 -0
  443. package/dist/editor-actions/leaf-write.js +102 -0
  444. package/dist/editor-actions/list-context.d.ts +9 -10
  445. package/dist/editor-actions/list-context.js +115 -110
  446. package/dist/editor-actions/list-overrides.d.ts +13 -5
  447. package/dist/editor-actions/list-overrides.js +36 -12
  448. package/dist/editor-actions/merge-fallback.d.ts +10 -16
  449. package/dist/editor-actions/merge-fallback.js +11 -22
  450. package/dist/editor-actions/nested/container-actions.d.ts +37 -0
  451. package/dist/editor-actions/nested/container-actions.js +42 -0
  452. package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
  453. package/dist/editor-actions/nested/emptied-container.js +5 -0
  454. package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
  455. package/dist/editor-actions/nested/nested-actions.js +17 -15
  456. package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
  457. package/dist/editor-actions/nested/nested-block-edit.js +40 -134
  458. package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
  459. package/dist/editor-actions/nested/nested-focus.js +33 -21
  460. package/dist/editor-actions/paste-coordinator.d.ts +3 -2
  461. package/dist/editor-actions/paste-coordinator.js +17 -13
  462. package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
  463. package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
  464. package/dist/editor-actions/plugin/container.d.ts +55 -76
  465. package/dist/editor-actions/plugin/container.js +105 -186
  466. package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
  467. package/dist/editor-actions/plugin/directive-container.js +7 -8
  468. package/dist/editor-actions/reorder-action.d.ts +7 -12
  469. package/dist/editor-actions/reorder-action.js +32 -48
  470. package/dist/editor-actions/reorder-drag.d.ts +12 -8
  471. package/dist/editor-actions/reorder-drag.js +45 -41
  472. package/dist/editor-actions/replacement-focus.d.ts +13 -21
  473. package/dist/editor-actions/replacement-focus.js +32 -33
  474. package/dist/editor-actions/search-replace.js +71 -67
  475. package/dist/editor-actions/stored-caret.d.ts +7 -0
  476. package/dist/editor-actions/stored-caret.js +10 -0
  477. package/dist/editor-actions/table-context.d.ts +9 -11
  478. package/dist/editor-actions/table-context.js +70 -93
  479. package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
  480. package/dist/editor-actions/unwrap-strategies.js +52 -63
  481. package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
  482. package/dist/editor-actions/whole-block-focus-surface.js +43 -53
  483. package/dist/editor-events.d.ts +25 -29
  484. package/dist/editor-events.js +17 -28
  485. package/dist/editor-keys.d.ts +96 -104
  486. package/dist/editor-keys.js +11 -24
  487. package/dist/editor-props.d.ts +91 -71
  488. package/dist/editor-rects.d.ts +23 -34
  489. package/dist/editor-rects.js +9 -77
  490. package/dist/env.d.ts +6 -4
  491. package/dist/env.js +8 -4
  492. package/dist/index.d.ts +6 -2
  493. package/dist/index.js +5 -2
  494. package/dist/inline-menu/inline-menu-session.d.ts +37 -0
  495. package/dist/inline-menu/inline-menu-session.js +98 -0
  496. package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
  497. package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
  498. package/dist/inline-menu/types.d.ts +77 -0
  499. package/dist/inline-menu/types.js +7 -0
  500. package/dist/invariants/child-id-parity.d.ts +23 -0
  501. package/dist/invariants/child-id-parity.js +39 -0
  502. package/dist/invariants/commit-paths.d.ts +4 -4
  503. package/dist/invariants/commit-paths.js +4 -4
  504. package/dist/invariants/commit-scope.d.ts +4 -4
  505. package/dist/invariants/commit-scope.js +9 -8
  506. package/dist/invariants/context-keys.d.ts +2 -5
  507. package/dist/invariants/context-keys.js +3 -6
  508. package/dist/invariants/descriptor.d.ts +2 -6
  509. package/dist/invariants/descriptor.js +2 -6
  510. package/dist/invariants/inline-transitions.d.ts +9 -16
  511. package/dist/invariants/inline-transitions.js +10 -18
  512. package/dist/invariants/install.d.ts +18 -27
  513. package/dist/invariants/install.js +29 -30
  514. package/dist/invariants/keeps-a-block.d.ts +7 -0
  515. package/dist/invariants/keeps-a-block.js +14 -0
  516. package/dist/invariants/landable-caret.d.ts +5 -7
  517. package/dist/invariants/landable-caret.js +8 -11
  518. package/dist/invariants/landing-focus-scroll.d.ts +7 -0
  519. package/dist/invariants/landing-focus-scroll.js +13 -0
  520. package/dist/invariants/landing-value.d.ts +13 -0
  521. package/dist/invariants/landing-value.js +27 -0
  522. package/dist/invariants/marker-css-parity.d.ts +5 -6
  523. package/dist/invariants/marker-css-parity.js +11 -12
  524. package/dist/invariants/measures-in-own-list.d.ts +6 -0
  525. package/dist/invariants/measures-in-own-list.js +13 -0
  526. package/dist/invariants/node-shape.d.ts +18 -37
  527. package/dist/invariants/node-shape.js +123 -79
  528. package/dist/invariants/open-tail.d.ts +7 -0
  529. package/dist/invariants/open-tail.js +45 -0
  530. package/dist/invariants/placement-ends-widget.d.ts +8 -0
  531. package/dist/invariants/placement-ends-widget.js +13 -0
  532. package/dist/invariants/registry.d.ts +27 -66
  533. package/dist/invariants/registry.js +61 -137
  534. package/dist/invariants/render-fidelity.d.ts +4 -4
  535. package/dist/invariants/render-fidelity.js +5 -5
  536. package/dist/invariants/selection-endpoints.d.ts +6 -7
  537. package/dist/invariants/selection-endpoints.js +18 -16
  538. package/dist/invariants/single-node-sink.d.ts +4 -5
  539. package/dist/invariants/single-node-sink.js +4 -5
  540. package/dist/invariants/snapshot-integrity.d.ts +5 -6
  541. package/dist/invariants/snapshot-integrity.js +1 -1
  542. package/dist/invariants/structural-descriptor.d.ts +6 -15
  543. package/dist/invariants/structural-descriptor.js +6 -15
  544. package/dist/menu-icons.d.ts +47 -0
  545. package/dist/menu-icons.js +113 -0
  546. package/dist/perf/instruments.d.ts +20 -5
  547. package/dist/perf/instruments.js +35 -15
  548. package/dist/perf/use-mount-gauge.svelte.js +4 -4
  549. package/dist/plugin.d.ts +38 -8
  550. package/dist/plugin.js +102 -74
  551. package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
  552. package/dist/plugins/admonitions/admonition-kind.js +12 -10
  553. package/dist/plugins/admonitions/convert-document.d.ts +5 -5
  554. package/dist/plugins/admonitions/convert-document.js +8 -7
  555. package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
  556. package/dist/plugins/admonitions/gh-alert.js +21 -22
  557. package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
  558. package/dist/plugins/admonitions/github-alert-kind.js +28 -37
  559. package/dist/plugins/admonitions/index.js +2 -2
  560. package/dist/plugins/admonitions/kinds.d.ts +1 -1
  561. package/dist/plugins/admonitions/register.js +11 -2
  562. package/dist/plugins/details/DetailsBlock.svelte +20 -20
  563. package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
  564. package/dist/plugins/details/details-disclosure.svelte.js +6 -7
  565. package/dist/plugins/details/details-kind.d.ts +6 -7
  566. package/dist/plugins/details/details-kind.js +44 -59
  567. package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
  568. package/dist/plugins/emoji/emoji-recognizer.js +7 -14
  569. package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
  570. package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
  571. package/dist/plugins/footnotes/constants.d.ts +2 -0
  572. package/dist/plugins/footnotes/constants.js +3 -0
  573. package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
  574. package/dist/plugins/footnotes/footnote-definition.js +69 -45
  575. package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
  576. package/dist/plugins/footnotes/footnote-lookup.js +14 -26
  577. package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
  578. package/dist/plugins/footnotes/footnote-numbering.js +22 -31
  579. package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
  580. package/dist/plugins/footnotes/footnote-reference.js +8 -13
  581. package/dist/plugins/footnotes/index.js +2 -3
  582. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
  583. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
  584. package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
  585. package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
  586. package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
  587. package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
  588. package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
  589. package/dist/plugins/highlight-occurrences/word-char.js +4 -0
  590. package/dist/plugins/latex/BlockMath.svelte +58 -75
  591. package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
  592. package/dist/plugins/latex/MathInline.svelte +10 -9
  593. package/dist/plugins/latex/flanking.d.ts +1 -0
  594. package/dist/plugins/latex/flanking.js +3 -0
  595. package/dist/plugins/latex/index.d.ts +1 -1
  596. package/dist/plugins/latex/latex-kind.d.ts +4 -4
  597. package/dist/plugins/latex/latex-kind.js +113 -85
  598. package/dist/plugins/latex/math-completion.d.ts +1 -1
  599. package/dist/plugins/latex/math-completion.js +5 -8
  600. package/dist/plugins/latex/math-layout.d.ts +2 -8
  601. package/dist/plugins/latex/math-layout.js +0 -9
  602. package/dist/plugins/latex/math-renderer.d.ts +17 -20
  603. package/dist/plugins/latex/math-renderer.js +21 -38
  604. package/dist/plugins/latex/math-source.d.ts +4 -8
  605. package/dist/plugins/latex/math-source.js +36 -75
  606. package/dist/plugins/latex/register.d.ts +10 -11
  607. package/dist/plugins/latex/register.js +24 -10
  608. package/dist/plugins/latex/renderer.d.ts +9 -10
  609. package/dist/plugins/latex/renderer.js +9 -24
  610. package/dist/plugins/mermaid/MermaidBlock.svelte +63 -47
  611. package/dist/plugins/mermaid/index.js +1 -1
  612. package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
  613. package/dist/plugins/mermaid/mermaid-kind.js +30 -47
  614. package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
  615. package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
  616. package/dist/plugins/mermaid/register.d.ts +3 -3
  617. package/dist/plugins/mermaid/register.js +5 -5
  618. package/dist/plugins/mermaid/renderer.d.ts +5 -5
  619. package/dist/plugins/mermaid/renderer.js +8 -11
  620. package/dist/plugins/parrot/ParrotBlock.svelte +18 -7
  621. package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
  622. package/dist/plugins/parrot/parrot-plugin.js +3 -3
  623. package/dist/plugins/slash-commands/filter.d.ts +23 -0
  624. package/dist/plugins/slash-commands/filter.js +31 -0
  625. package/dist/plugins/slash-commands/index.d.ts +2 -0
  626. package/dist/plugins/slash-commands/index.js +2 -0
  627. package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
  628. package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
  629. package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
  630. package/dist/plugins/slash-commands/slash-source.js +108 -0
  631. package/dist/plugins/toc/TocBlock.svelte +23 -22
  632. package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
  633. package/dist/plugins/toc/heading-outline.d.ts +7 -12
  634. package/dist/plugins/toc/heading-outline.js +22 -36
  635. package/dist/plugins/toc/navigation-queue.d.ts +2 -4
  636. package/dist/plugins/toc/toc-plugin.d.ts +5 -5
  637. package/dist/plugins/toc/toc-plugin.js +20 -13
  638. package/dist/presentation-mode.d.ts +15 -23
  639. package/dist/presentation-mode.js +19 -25
  640. package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
  641. package/dist/reactivity/block-list-state.svelte.js +8 -9
  642. package/dist/reactivity/block-window.svelte.d.ts +12 -6
  643. package/dist/reactivity/block-window.svelte.js +44 -17
  644. package/dist/reactivity/child-list.d.ts +34 -0
  645. package/dist/reactivity/child-list.js +48 -0
  646. package/dist/reactivity/content-version.svelte.d.ts +4 -7
  647. package/dist/reactivity/content-version.svelte.js +3 -5
  648. package/dist/reactivity/hold-across.d.ts +39 -0
  649. package/dist/reactivity/hold-across.js +57 -0
  650. package/dist/reactivity/layout-state.svelte.d.ts +27 -0
  651. package/dist/reactivity/layout-state.svelte.js +51 -0
  652. package/dist/reactivity/list-tree.d.ts +39 -0
  653. package/dist/reactivity/list-tree.js +132 -0
  654. package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
  655. package/dist/reactivity/list-windowing.svelte.js +143 -292
  656. package/dist/reactivity/measure-batch.d.ts +6 -8
  657. package/dist/reactivity/measure-batch.js +5 -6
  658. package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
  659. package/dist/reactivity/publish-ref.svelte.js +21 -85
  660. package/dist/reactivity/scope-geometry.d.ts +6 -13
  661. package/dist/reactivity/scope-geometry.js +7 -14
  662. package/dist/reactivity/state-registry.d.ts +5 -5
  663. package/dist/reactivity/state-registry.js +11 -15
  664. package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
  665. package/dist/reactivity/use-container-windowing.svelte.js +64 -74
  666. package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
  667. package/dist/reactivity/use-measured-child.svelte.js +41 -0
  668. package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
  669. package/dist/reactivity/use-window-floor.svelte.js +27 -0
  670. package/dist/reactivity/window-slice.d.ts +4 -4
  671. package/dist/reactivity/window-slice.js +0 -2
  672. package/dist/renderer-slot.d.ts +48 -0
  673. package/dist/renderer-slot.js +85 -0
  674. package/dist/scan-index.d.ts +4 -4
  675. package/dist/scan-index.js +4 -4
  676. package/dist/schema/block-commands.d.ts +69 -54
  677. package/dist/schema/block-commands.js +91 -104
  678. package/dist/schema/block-completions.d.ts +16 -19
  679. package/dist/schema/block-completions.js +25 -32
  680. package/dist/schema/block-component-registry.d.ts +13 -14
  681. package/dist/schema/block-component-registry.js +19 -17
  682. package/dist/schema/block-kind-descriptor.d.ts +234 -168
  683. package/dist/schema/block-kind-descriptor.js +151 -66
  684. package/dist/schema/block-openers.d.ts +48 -39
  685. package/dist/schema/block-openers.js +73 -83
  686. package/dist/schema/built-in-descriptors.d.ts +3 -5
  687. package/dist/schema/built-in-descriptors.js +96 -80
  688. package/dist/schema/child-spans.d.ts +12 -10
  689. package/dist/schema/child-spans.js +68 -34
  690. package/dist/schema/closure.d.ts +18 -16
  691. package/dist/schema/closure.js +24 -14
  692. package/dist/schema/command-id.d.ts +6 -8
  693. package/dist/schema/command-id.js +20 -25
  694. package/dist/schema/commands.d.ts +79 -81
  695. package/dist/schema/commands.js +156 -116
  696. package/dist/schema/container-raw.d.ts +51 -11
  697. package/dist/schema/container-raw.js +143 -14
  698. package/dist/schema/container-rebuilders.d.ts +17 -15
  699. package/dist/schema/container-rebuilders.js +30 -22
  700. package/dist/schema/context-actions.d.ts +25 -13
  701. package/dist/schema/context-actions.js +32 -17
  702. package/dist/schema/define-plugin-block.d.ts +8 -6
  703. package/dist/schema/define-plugin-block.js +6 -4
  704. package/dist/schema/fenced-code-raw.d.ts +30 -17
  705. package/dist/schema/fenced-code-raw.js +155 -107
  706. package/dist/schema/global-commands.d.ts +6 -6
  707. package/dist/schema/global-commands.js +14 -22
  708. package/dist/schema/height-estimates.d.ts +31 -0
  709. package/dist/schema/height-estimates.js +64 -0
  710. package/dist/schema/inline-construct-policy.d.ts +42 -55
  711. package/dist/schema/inline-construct-policy.js +36 -35
  712. package/dist/schema/insert-catalogue.d.ts +30 -0
  713. package/dist/schema/insert-catalogue.js +95 -0
  714. package/dist/schema/keybinding-overrides.d.ts +9 -11
  715. package/dist/schema/keybinding-overrides.js +1 -1
  716. package/dist/schema/keybindings.d.ts +15 -7
  717. package/dist/schema/keybindings.js +21 -9
  718. package/dist/schema/merge-rules.d.ts +5 -7
  719. package/dist/schema/merge-rules.js +7 -9
  720. package/dist/schema/opener-priorities.d.ts +4 -4
  721. package/dist/schema/opener-priorities.js +4 -4
  722. package/dist/schema/operations.d.ts +9 -11
  723. package/dist/schema/operations.js +3 -3
  724. package/dist/schema/page-role.d.ts +14 -0
  725. package/dist/schema/page-role.js +19 -0
  726. package/dist/schema/plugin-activation.d.ts +4 -6
  727. package/dist/schema/plugin-activation.js +12 -10
  728. package/dist/schema/plugin-editor-context.d.ts +25 -10
  729. package/dist/schema/plugin-editor-context.js +40 -9
  730. package/dist/schema/plugin-install.d.ts +49 -17
  731. package/dist/schema/plugin-install.js +51 -25
  732. package/dist/schema/plugin-kind.d.ts +12 -8
  733. package/dist/schema/plugin-kind.js +35 -42
  734. package/dist/schema/plugin-name.js +3 -3
  735. package/dist/schema/plugin-registry.d.ts +54 -0
  736. package/dist/schema/plugin-registry.js +70 -0
  737. package/dist/schema/reading.d.ts +23 -0
  738. package/dist/schema/reading.js +7 -0
  739. package/dist/schema/register-once.d.ts +3 -5
  740. package/dist/schema/register-once.js +7 -16
  741. package/dist/schema/registration-checks.d.ts +12 -16
  742. package/dist/schema/registration-checks.js +35 -51
  743. package/dist/schema/registration-pairs.d.ts +54 -0
  744. package/dist/schema/registration-pairs.js +48 -0
  745. package/dist/schema/registration-pending.d.ts +8 -12
  746. package/dist/schema/registration-pending.js +9 -9
  747. package/dist/schema/registry-reset.d.ts +8 -4
  748. package/dist/schema/registry-reset.js +13 -26
  749. package/dist/schema/registry-view.d.ts +25 -13
  750. package/dist/schema/registry-view.js +26 -20
  751. package/dist/schema/reserved-chords.d.ts +9 -10
  752. package/dist/schema/reserved-chords.js +73 -78
  753. package/dist/schema/reserved-chrome.d.ts +12 -11
  754. package/dist/schema/reserved-chrome.js +15 -11
  755. package/dist/schema/setext-raw.d.ts +13 -0
  756. package/dist/schema/setext-raw.js +33 -0
  757. package/dist/schema/stored-as.d.ts +20 -0
  758. package/dist/schema/stored-as.js +6 -0
  759. package/dist/schema/table-cell-raw.d.ts +18 -7
  760. package/dist/schema/table-cell-raw.js +28 -7
  761. package/dist/schema/whole-block-unit.d.ts +5 -4
  762. package/dist/schema/whole-block-unit.js +5 -4
  763. package/dist/search/document-scan.d.ts +3 -3
  764. package/dist/search/document-scan.js +2 -2
  765. package/dist/search/matcher.d.ts +1 -1
  766. package/dist/search/regex-executor.d.ts +5 -6
  767. package/dist/search/regex-executor.js +6 -8
  768. package/dist/search/replace.d.ts +2 -5
  769. package/dist/search/replace.js +2 -5
  770. package/dist/search/search-state.svelte.d.ts +5 -5
  771. package/dist/search/search-state.svelte.js +12 -16
  772. package/dist/selection/autoscroll.d.ts +6 -9
  773. package/dist/selection/block-hit-test.d.ts +16 -24
  774. package/dist/selection/block-hit-test.js +29 -22
  775. package/dist/selection/caret-doors.d.ts +15 -14
  776. package/dist/selection/caret-doors.js +37 -26
  777. package/dist/selection/caret-landing.d.ts +62 -0
  778. package/dist/selection/caret-landing.js +157 -0
  779. package/dist/selection/caret-restore.d.ts +17 -10
  780. package/dist/selection/caret-restore.js +10 -22
  781. package/dist/selection/caret-target.d.ts +30 -0
  782. package/dist/selection/caret-target.js +84 -0
  783. package/dist/selection/char-endpoint-snap.d.ts +6 -10
  784. package/dist/selection/char-endpoint-snap.js +8 -14
  785. package/dist/selection/clipboard-text.d.ts +5 -12
  786. package/dist/selection/clipboard-text.js +69 -172
  787. package/dist/selection/covered-block.d.ts +6 -8
  788. package/dist/selection/covered-block.js +8 -19
  789. package/dist/selection/cross-block/clipboard.d.ts +3 -2
  790. package/dist/selection/cross-block/clipboard.js +13 -4
  791. package/dist/selection/cross-block/dispatch.d.ts +47 -43
  792. package/dist/selection/cross-block/dispatch.js +12 -23
  793. package/dist/selection/cross-block/format-range.d.ts +18 -21
  794. package/dist/selection/cross-block/format-range.js +104 -103
  795. package/dist/selection/cross-block/format-toggle.d.ts +10 -15
  796. package/dist/selection/cross-block/format-toggle.js +28 -33
  797. package/dist/selection/cross-block/keydown.d.ts +4 -4
  798. package/dist/selection/cross-block/keydown.js +93 -152
  799. package/dist/selection/cross-block/ops.d.ts +19 -34
  800. package/dist/selection/cross-block/ops.js +110 -95
  801. package/dist/selection/cross-block/paste.d.ts +2 -3
  802. package/dist/selection/cross-block/paste.js +61 -104
  803. package/dist/selection/cross-block/pointer.d.ts +17 -15
  804. package/dist/selection/cross-block/pointer.js +74 -25
  805. package/dist/selection/cross-block/type-replace.d.ts +4 -6
  806. package/dist/selection/cross-block/type-replace.js +53 -146
  807. package/dist/selection/dead-space-caret.d.ts +20 -28
  808. package/dist/selection/dead-space-caret.js +79 -87
  809. package/dist/selection/drag-pointer.d.ts +22 -5
  810. package/dist/selection/drag-pointer.js +63 -31
  811. package/dist/selection/gap-caret.d.ts +17 -28
  812. package/dist/selection/gap-caret.js +14 -26
  813. package/dist/selection/grid-selection.d.ts +12 -0
  814. package/dist/selection/grid-selection.js +22 -0
  815. package/dist/selection/keyboard-extend.d.ts +27 -39
  816. package/dist/selection/keyboard-extend.js +94 -116
  817. package/dist/selection/multi-click.d.ts +37 -0
  818. package/dist/selection/multi-click.js +197 -0
  819. package/dist/selection/native-bridge.d.ts +30 -37
  820. package/dist/selection/native-bridge.js +80 -100
  821. package/dist/selection/nearest-block.d.ts +17 -12
  822. package/dist/selection/nearest-block.js +37 -18
  823. package/dist/selection/path-lookup.d.ts +31 -14
  824. package/dist/selection/path-lookup.js +110 -20
  825. package/dist/selection/path-math.d.ts +9 -11
  826. package/dist/selection/path-math.js +5 -7
  827. package/dist/selection/pointer-gesture.d.ts +9 -0
  828. package/dist/selection/pointer-gesture.js +11 -0
  829. package/dist/selection/pointer-session.d.ts +10 -16
  830. package/dist/selection/pointer-session.js +6 -7
  831. package/dist/selection/primitives.d.ts +64 -33
  832. package/dist/selection/primitives.js +61 -53
  833. package/dist/selection/range-coverage.d.ts +94 -0
  834. package/dist/selection/range-coverage.js +365 -0
  835. package/dist/selection/range-delete-ceremony.d.ts +28 -74
  836. package/dist/selection/range-delete-ceremony.js +100 -141
  837. package/dist/selection/range-delete-chrome.d.ts +20 -33
  838. package/dist/selection/range-delete-chrome.js +53 -78
  839. package/dist/selection/range-delete-table-coverage.d.ts +11 -25
  840. package/dist/selection/range-delete-table-coverage.js +42 -112
  841. package/dist/selection/range-delete-table.d.ts +14 -12
  842. package/dist/selection/range-delete-table.js +106 -310
  843. package/dist/selection/range-delete.d.ts +18 -19
  844. package/dist/selection/range-delete.js +83 -123
  845. package/dist/selection/round-trip-restore.d.ts +18 -0
  846. package/dist/selection/round-trip-restore.js +19 -0
  847. package/dist/selection/selection-announcer.d.ts +17 -0
  848. package/dist/selection/selection-announcer.js +25 -0
  849. package/dist/selection/selection-description.d.ts +4 -3
  850. package/dist/selection/selection-description.js +5 -4
  851. package/dist/selection/selection-drop.d.ts +52 -0
  852. package/dist/selection/selection-drop.js +317 -0
  853. package/dist/selection/selection-restore.d.ts +20 -33
  854. package/dist/selection/selection-restore.js +21 -44
  855. package/dist/selection/selection-state.svelte.d.ts +50 -42
  856. package/dist/selection/selection-state.svelte.js +144 -98
  857. package/dist/selection/shared-keydown.d.ts +22 -27
  858. package/dist/selection/shared-keydown.js +25 -45
  859. package/dist/selection/table-endpoint-snap.d.ts +17 -41
  860. package/dist/selection/table-endpoint-snap.js +54 -80
  861. package/dist/selection/table-rect-extend.d.ts +3 -6
  862. package/dist/selection/table-rect-extend.js +19 -14
  863. package/dist/styles/editor-theme.css +75 -53
  864. package/dist/styles/editor.css +248 -139
  865. package/dist/testing/conformance-core.d.ts +50 -18
  866. package/dist/testing/conformance-core.js +88 -50
  867. package/dist/testing/container-conformance.d.ts +48 -84
  868. package/dist/testing/container-conformance.js +159 -285
  869. package/dist/testing/headless-actions.d.ts +34 -19
  870. package/dist/testing/headless-actions.js +116 -65
  871. package/dist/testing/headless-block-list.svelte.d.ts +16 -0
  872. package/dist/testing/headless-block-list.svelte.js +22 -0
  873. package/dist/testing/inline-conformance.d.ts +15 -22
  874. package/dist/testing/inline-conformance.js +131 -148
  875. package/dist/testing/kind-conformance.d.ts +19 -24
  876. package/dist/testing/kind-conformance.js +204 -117
  877. package/dist/testing/kit-reading.d.ts +7 -0
  878. package/dist/testing/kit-reading.js +16 -0
  879. package/dist/testing/mount-dom-stubs.d.ts +4 -5
  880. package/dist/testing/mount-dom-stubs.js +8 -5
  881. package/dist/testing/parse-convergence.d.ts +10 -10
  882. package/dist/testing/parse-convergence.js +14 -49
  883. package/dist/testing.d.ts +13 -9
  884. package/dist/testing.js +28 -38
  885. package/dist/tree-operations/blockquote.d.ts +8 -14
  886. package/dist/tree-operations/blockquote.js +25 -45
  887. package/dist/tree-operations/chain-rebuild.d.ts +34 -25
  888. package/dist/tree-operations/chain-rebuild.js +115 -52
  889. package/dist/tree-operations/children.d.ts +5 -9
  890. package/dist/tree-operations/children.js +7 -11
  891. package/dist/tree-operations/cleanup.d.ts +6 -7
  892. package/dist/tree-operations/cleanup.js +14 -11
  893. package/dist/tree-operations/clone.js +5 -4
  894. package/dist/tree-operations/container-lift.d.ts +10 -5
  895. package/dist/tree-operations/container-lift.js +20 -14
  896. package/dist/tree-operations/container-offsets.d.ts +22 -0
  897. package/dist/tree-operations/container-offsets.js +89 -0
  898. package/dist/tree-operations/content-write.d.ts +52 -29
  899. package/dist/tree-operations/content-write.js +155 -110
  900. package/dist/tree-operations/index.d.ts +4 -4
  901. package/dist/tree-operations/index.js +4 -4
  902. package/dist/tree-operations/keep-one-block.d.ts +10 -0
  903. package/dist/tree-operations/keep-one-block.js +19 -0
  904. package/dist/tree-operations/leaf-range.d.ts +33 -0
  905. package/dist/tree-operations/leaf-range.js +67 -0
  906. package/dist/tree-operations/list/empty-check.d.ts +2 -3
  907. package/dist/tree-operations/list/empty-check.js +4 -4
  908. package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
  909. package/dist/tree-operations/list/exit-replacement.js +4 -9
  910. package/dist/tree-operations/list/item-partition.d.ts +2 -2
  911. package/dist/tree-operations/list/item-partition.js +2 -2
  912. package/dist/tree-operations/list/list-builders.d.ts +18 -16
  913. package/dist/tree-operations/list/list-builders.js +59 -30
  914. package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
  915. package/dist/tree-operations/list/ordered-markers.js +7 -16
  916. package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
  917. package/dist/tree-operations/list/reconcile-task.js +80 -23
  918. package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
  919. package/dist/tree-operations/list/sublist-separator.js +20 -27
  920. package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
  921. package/dist/tree-operations/list/task-paragraph.js +54 -0
  922. package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
  923. package/dist/tree-operations/list/unwrap-merge.js +44 -79
  924. package/dist/tree-operations/node-ops.d.ts +30 -52
  925. package/dist/tree-operations/node-ops.js +152 -218
  926. package/dist/tree-operations/node-primitives.d.ts +44 -31
  927. package/dist/tree-operations/node-primitives.js +84 -60
  928. package/dist/tree-operations/open-tail.d.ts +25 -0
  929. package/dist/tree-operations/open-tail.js +100 -0
  930. package/dist/tree-operations/parse-block.d.ts +15 -2
  931. package/dist/tree-operations/parse-block.js +19 -4
  932. package/dist/tree-operations/paste/apply.d.ts +7 -8
  933. package/dist/tree-operations/paste/apply.js +33 -63
  934. package/dist/tree-operations/paste/body-write.d.ts +8 -6
  935. package/dist/tree-operations/paste/body-write.js +13 -14
  936. package/dist/tree-operations/paste/container-match.d.ts +7 -10
  937. package/dist/tree-operations/paste/container-match.js +76 -58
  938. package/dist/tree-operations/paste/container-paste.d.ts +3 -3
  939. package/dist/tree-operations/paste/container-paste.js +3 -3
  940. package/dist/tree-operations/paste/dispatch.d.ts +26 -29
  941. package/dist/tree-operations/paste/dispatch.js +68 -53
  942. package/dist/tree-operations/paste/focus-target.d.ts +11 -14
  943. package/dist/tree-operations/paste/focus-target.js +13 -18
  944. package/dist/tree-operations/paste/hooks.d.ts +7 -12
  945. package/dist/tree-operations/paste/hooks.js +49 -46
  946. package/dist/tree-operations/paste/line-ending.d.ts +11 -0
  947. package/dist/tree-operations/paste/line-ending.js +32 -0
  948. package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
  949. package/dist/tree-operations/paste/list-absorb.js +17 -19
  950. package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
  951. package/dist/tree-operations/paste/list-break-out.js +24 -32
  952. package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
  953. package/dist/tree-operations/paste/parent-scope.js +9 -16
  954. package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
  955. package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
  956. package/dist/tree-operations/paste/paste-replacement.js +73 -42
  957. package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
  958. package/dist/tree-operations/paste/paste-transforms.js +18 -27
  959. package/dist/tree-operations/paste/replacement-parse.d.ts +19 -0
  960. package/dist/tree-operations/paste/replacement-parse.js +24 -0
  961. package/dist/tree-operations/paste/strategy.d.ts +1 -1
  962. package/dist/tree-operations/paste/strategy.js +1 -1
  963. package/dist/tree-operations/paste/table-slice.js +15 -10
  964. package/dist/tree-operations/paste-surfaces.d.ts +18 -29
  965. package/dist/tree-operations/paste-surfaces.js +14 -10
  966. package/dist/tree-operations/path-mutate.d.ts +7 -8
  967. package/dist/tree-operations/path-mutate.js +4 -4
  968. package/dist/tree-operations/reorder-unit.d.ts +4 -5
  969. package/dist/tree-operations/reorder-unit.js +5 -6
  970. package/dist/tree-operations/reorder.d.ts +7 -9
  971. package/dist/tree-operations/reorder.js +39 -40
  972. package/dist/tree-operations/settle.d.ts +42 -53
  973. package/dist/tree-operations/settle.js +241 -162
  974. package/dist/tree-operations/sharing.d.ts +5 -5
  975. package/dist/tree-operations/splice-many.d.ts +5 -5
  976. package/dist/tree-operations/splice-many.js +5 -5
  977. package/dist/tree-operations/stored-as.d.ts +13 -0
  978. package/dist/tree-operations/stored-as.js +48 -0
  979. package/dist/tree-operations/structural-change.d.ts +11 -15
  980. package/dist/tree-operations/structural-change.js +10 -14
  981. package/dist/tree-operations/structural-suffix.d.ts +22 -0
  982. package/dist/tree-operations/structural-suffix.js +61 -0
  983. package/dist/tree-operations/sub-table-copy.d.ts +7 -0
  984. package/dist/tree-operations/sub-table-copy.js +40 -36
  985. package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
  986. package/dist/tree-operations/table-grid-clipboard.js +11 -36
  987. package/dist/tree-operations/table-mutations.d.ts +7 -3
  988. package/dist/tree-operations/table-mutations.js +45 -9
  989. package/dist/tree-operations/unshare.d.ts +11 -15
  990. package/dist/tree-operations/unshare.js +15 -17
  991. package/dist/undo/manager.js +1 -1
  992. package/dist/undo/types.d.ts +2 -2
  993. package/docs/guide/consumer-guide.md +329 -205
  994. package/docs/guide/directives.md +7 -7
  995. package/docs/guide/plugin-api.md +267 -183
  996. package/docs/guide/plugin-guide.md +341 -235
  997. package/docs/guide/plugin-testing.md +96 -82
  998. package/package.json +17 -21
  999. package/dist/ambient/ambient-cursor.d.ts +0 -41
  1000. package/dist/ambient/ambient-cursor.js +0 -120
  1001. package/dist/components/blocks/code/code-paste.d.ts +0 -24
  1002. package/dist/components/blocks/code/code-paste.js +0 -21
  1003. package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
  1004. package/dist/components/blocks/table/cell-clipboard.js +0 -67
  1005. package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
  1006. package/dist/components/blocks/text/hidden-suffix.js +0 -15
  1007. package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
  1008. package/dist/components/image/image-source-bytes.d.ts +0 -15
  1009. package/dist/components/image/image-source-bytes.js +0 -80
  1010. package/dist/cursor/content-offsets.d.ts +0 -29
  1011. package/dist/cursor/content-offsets.js +0 -151
  1012. package/dist/cursor/reveal-anchor.d.ts +0 -30
  1013. package/dist/cursor/reveal-anchor.js +0 -31
  1014. package/dist/invariants/split-landing.d.ts +0 -8
  1015. package/dist/invariants/split-landing.js +0 -15
  1016. package/dist/selection/double-click-trim.d.ts +0 -17
  1017. package/dist/selection/double-click-trim.js +0 -57
  1018. package/dist/tree-operations/list/terminator.d.ts +0 -17
  1019. package/dist/tree-operations/list/terminator.js +0 -60
  1020. package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -29
  1021. package/dist/tree-operations/paste/replace-block-at-parent.js +0 -75
@@ -1,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;
@@ -1,20 +1,14 @@
1
+ // When to rebuild the link reference definition map, and the counter that render caches key on.
1
2
  import { nodeAt } from '../tree-operations/node-primitives';
2
- /**
3
- * Whether a commit could change the LRD set, keeping the O(nodes) map rebuild off the keystroke
4
- * hot path. Any op that is not a kind-stable `input`/`metadataUpdate` could add or remove a
5
- * definition; a kind-stable one only can when its target is itself an LRD. `input` is kind-stable
6
- * by construction, held by the input-op kind-stability lint under `test/invariants/lint/`.
7
- */
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. */
8
5
  export function lrdMapCouldChange(doc, event) {
9
6
  if (event.op !== 'input' && event.op !== 'metadataUpdate')
10
7
  return true;
11
8
  return nodeAt(doc, event.path)?.kind === 'linkReferenceDefinition';
12
9
  }
13
- /**
14
- * A monotonic stamp that changes **exactly** when the signature string does.
15
- * Reference-bearing render memos key on the epoch instead of the whole (~MB)
16
- * signature, so bumping on every rebuild would re-render every bracket-bearing block.
17
- */
10
+ /** Changes exactly when the signature does: render caches key on it rather than the (~MB)
11
+ * signature, and a bump per rebuild would re-render every block with a bracket in it. */
18
12
  export function advanceSignatureEpoch(prevSignature, prevEpoch, nextSignature) {
19
13
  if (nextSignature === prevSignature)
20
14
  return { signature: prevSignature, epoch: prevEpoch };
@@ -1,19 +1,11 @@
1
1
  <script lang="ts" module>
2
2
  /**
3
- * A limestone-styled list menu the editor opens at a point: the block picker behind the
4
- * bottom `+` (rows insert Markdown at the caret) and a block's context menu (rows run that
5
- * kind's registered actions). Pointer- and keyboard-driven without ever taking focus, so the
6
- * caret it acts on stays exactly where it is.
3
+ * A list menu the editor opens at a point: a block's context menu (rows run
4
+ * that kind's registered actions) and the prose menu's clipboard rows with its "Insert block"
5
+ * flyout (rows insert Markdown into a new paragraph). Pointer- and keyboard-driven without
6
+ * ever taking focus, so the caret it acts on stays exactly where it is.
7
7
  */
8
- import { isPluginInstalled } from '../../schema/plugin-install';
9
- import type { MenuIconName } from './MenuIcon.svelte';
10
-
11
- interface BlockMenuItem {
12
- id: string;
13
- label: string;
14
- icon: MenuIconName;
15
- md: string;
16
- }
8
+ import type { MenuIconName } from '../../menu-icons';
17
9
 
18
10
  export interface MenuEntry {
19
11
  id: string;
@@ -23,67 +15,9 @@
23
15
  disabled?: boolean;
24
16
  /** A separator row; nothing else on the entry is read. */
25
17
  divider?: boolean;
26
- /** A flyout: hover or ArrowRight opens these beside the row; a pick is one of THEIR ids. */
18
+ /** A flyout: hover or ArrowRight opens these beside the row; a pick is one of their ids. */
27
19
  children?: MenuEntry[];
28
20
  }
29
-
30
- // Blocks that stand on their own when empty. A heading is not one — it is text turned into a
31
- // heading, which the selection popover offers — so it is deliberately not here.
32
- const BUILT_IN: readonly BlockMenuItem[] = [
33
- { id: 'bullet', label: 'Bulleted list', icon: 'list', md: '- ' },
34
- { id: 'numbered', label: 'Numbered list', icon: 'list-ordered', md: '1. ' },
35
- { id: 'todo', label: 'To-do list', icon: 'square-check', md: '- [ ] ' },
36
- { id: 'quote', label: 'Quote', icon: 'text-quote', md: '> ' },
37
- { id: 'divider', label: 'Divider', icon: 'minus', md: '---\n' },
38
- { id: 'code', label: 'Code block', icon: 'code', md: '```\n\n```\n' },
39
- {
40
- id: 'table',
41
- label: 'Table',
42
- icon: 'table',
43
- md: '| Column | Column |\n| --- | --- |\n| | |\n'
44
- }
45
- ];
46
- // Listed only while the plugin that reads the syntax is installed.
47
- const FROM_PLUGINS: readonly { plugin: string; item: BlockMenuItem }[] = [
48
- { plugin: 'latex', item: { id: 'math', label: 'Math block', icon: 'sigma', md: '$$\n\n$$\n' } },
49
- {
50
- plugin: 'admonitions',
51
- item: { id: 'note', label: 'Note', icon: 'info', md: ':::note\n\n:::\n' }
52
- }
53
- ];
54
-
55
- /** Every insertable block, keyed by id, for resolving a pick from either level of the menu. */
56
- export function insertSnippets(): Map<string, string> {
57
- const all = [
58
- ...BUILT_IN,
59
- ...FROM_PLUGINS.filter((entry) => isPluginInstalled(entry.plugin)).map((entry) => entry.item)
60
- ];
61
- return new Map(all.map((item) => [item.id, item.md]));
62
- }
63
-
64
- /** Every insertable block as one flat list, for a flyout that is already a level down. */
65
- export function insertFlyoutEntries(): MenuEntry[] {
66
- return [
67
- ...BUILT_IN,
68
- ...FROM_PLUGINS.filter((entry) => isPluginInstalled(entry.plugin)).map((entry) => entry.item)
69
- ].map(({ id, label, icon }) => ({ id, label, icon }));
70
- }
71
-
72
- const COMMON = new Set(['bullet', 'numbered', 'todo', 'code', 'table', 'math']);
73
-
74
- /** The insert menu: the common blocks, the rest behind "More blocks". */
75
- export function insertMenuEntries(): MenuEntry[] {
76
- const all = [
77
- ...BUILT_IN,
78
- ...FROM_PLUGINS.filter((entry) => isPluginInstalled(entry.plugin)).map((entry) => entry.item)
79
- ];
80
- const row = ({ id, label, icon }: BlockMenuItem): MenuEntry => ({ id, label, icon });
81
- const common = all.filter((item) => COMMON.has(item.id)).map(row);
82
- const more = all.filter((item) => !COMMON.has(item.id)).map(row);
83
- return more.length
84
- ? [...common, { id: 'more', label: 'More blocks', icon: 'plus', children: more }]
85
- : common;
86
- }
87
21
  </script>
88
22
 
89
23
  <script lang="ts">
@@ -91,6 +25,7 @@
91
25
  import { BLOCK_MENU_LABEL } from '../../a11y-strings';
92
26
  import { keepFlyoutOnScreen } from './flyout-placement';
93
27
  import MenuIcon from './MenuIcon.svelte';
28
+ import type { MenuPresence } from './menu-presence.svelte';
94
29
 
95
30
  let {
96
31
  x,
@@ -99,16 +34,18 @@
99
34
  items,
100
35
  label = BLOCK_MENU_LABEL,
101
36
  onPick,
102
- onClose
37
+ onClose,
38
+ menuPresence
103
39
  }: {
104
40
  x: number;
105
41
  y: number;
106
- /** Where the open point is NOW, re-read on scroll and resize so the menu stays on it. */
42
+ /** Where the open point is now, re-read on scroll and resize so the menu stays on it. */
107
43
  anchor?: () => { x: number; y: number } | null;
108
44
  items: MenuEntry[];
109
45
  label?: string;
110
46
  onPick: (id: string) => void;
111
47
  onClose: () => void;
48
+ menuPresence: MenuPresence;
112
49
  } = $props();
113
50
 
114
51
  let menuEl: HTMLDivElement | undefined = $state();
@@ -134,7 +71,7 @@
134
71
  onPick(entry.id);
135
72
  }
136
73
 
137
- // Same anchoring as the table's menu: follows the content, clamped once when first sized.
74
+ // Positioned like the table's menu: follows the content, clamped once when first sized.
138
75
  // svelte-ignore state_referenced_locally
139
76
  let at = $state({ x, y });
140
77
  let shift = $state<{ x: number; y: number } | null>(null);
@@ -163,15 +100,15 @@
163
100
  const left = $derived(at.x + (shift?.x ?? 0));
164
101
  const top = $derived(at.y + (shift?.y ?? 0));
165
102
 
166
- // Keys are read at the document, capture phase: the caret's surface keeps focus, and the
167
- // menu answers first while it is open. Anything it does not claim reaches the editor as usual.
103
+ // Keys are read at the document in the capture phase: the block with the caret keeps focus,
104
+ // and the menu answers first while it is open. Anything it ignores reaches the editor.
168
105
  $effect(() => {
169
106
  const onPointerDown = (e: PointerEvent) => {
170
107
  if (menuEl && e.target instanceof Node && menuEl.contains(e.target)) return;
171
108
  onClose();
172
109
  };
173
- // Claimed keys stop here: the caret's surface would otherwise take the same press (an
174
- // Enter splitting the block the menu is about to insert into).
110
+ // Keys the menu takes stop here: the block with the caret would otherwise get the same
111
+ // keystroke (an Enter splitting the block the menu is about to insert into).
175
112
  const claim = (e: KeyboardEvent) => {
176
113
  e.preventDefault();
177
114
  e.stopImmediatePropagation();
@@ -228,6 +165,7 @@
228
165
  class="md-menu block-menu"
229
166
  role="menu"
230
167
  aria-label={label}
168
+ {@attach menuPresence.track}
231
169
  style:left="{left}px"
232
170
  style:top="{top}px"
233
171
  >
@@ -265,6 +203,7 @@
265
203
  class="md-menu block-menu block-menu-flyout"
266
204
  role="menu"
267
205
  {@attach keepFlyoutOnScreen}
206
+ {@attach menuPresence.track}
268
207
  >
269
208
  {#each item.children as child, j (child.id)}
270
209
  <button
@@ -291,7 +230,7 @@
291
230
  </div>
292
231
 
293
232
  <style>
294
- /* Surface and rows are the shared `.md-menu` family (editor.css). */
233
+ /* The panel and its rows are the shared `.md-menu` family (editor.css). */
295
234
  .block-menu {
296
235
  min-width: 188px;
297
236
  }
@@ -301,7 +240,7 @@
301
240
  .block-menu-label {
302
241
  flex: 1;
303
242
  }
304
- /* limestone's submenu: a second surface hung off the row's right edge. */
243
+ /* The submenu: a second panel hung off the row's right edge. */
305
244
  .block-menu-flyout {
306
245
  position: absolute;
307
246
  left: 100%;
@@ -1,4 +1,10 @@
1
- import type { MenuIconName } from './MenuIcon.svelte';
1
+ /**
2
+ * A list menu the editor opens at a point: a block's context menu (rows run
3
+ * that kind's registered actions) and the prose menu's clipboard rows with its "Insert block"
4
+ * flyout (rows insert Markdown into a new paragraph). Pointer- and keyboard-driven without
5
+ * ever taking focus, so the caret it acts on stays exactly where it is.
6
+ */
7
+ import type { MenuIconName } from '../../menu-icons';
2
8
  export interface MenuEntry {
3
9
  id: string;
4
10
  label: string;
@@ -7,19 +13,14 @@ export interface MenuEntry {
7
13
  disabled?: boolean;
8
14
  /** A separator row; nothing else on the entry is read. */
9
15
  divider?: boolean;
10
- /** A flyout: hover or ArrowRight opens these beside the row; a pick is one of THEIR ids. */
16
+ /** A flyout: hover or ArrowRight opens these beside the row; a pick is one of their ids. */
11
17
  children?: MenuEntry[];
12
18
  }
13
- /** Every insertable block, keyed by id, for resolving a pick from either level of the menu. */
14
- export declare function insertSnippets(): Map<string, string>;
15
- /** Every insertable block as one flat list, for a flyout that is already a level down. */
16
- export declare function insertFlyoutEntries(): MenuEntry[];
17
- /** The insert menu: the common blocks, the rest behind "More blocks". */
18
- export declare function insertMenuEntries(): MenuEntry[];
19
+ import type { MenuPresence } from './menu-presence.svelte';
19
20
  type $$ComponentProps = {
20
21
  x: number;
21
22
  y: number;
22
- /** Where the open point is NOW, re-read on scroll and resize so the menu stays on it. */
23
+ /** Where the open point is now, re-read on scroll and resize so the menu stays on it. */
23
24
  anchor?: () => {
24
25
  x: number;
25
26
  y: number;
@@ -28,6 +29,7 @@ type $$ComponentProps = {
28
29
  label?: string;
29
30
  onPick: (id: string) => void;
30
31
  onClose: () => void;
32
+ menuPresence: MenuPresence;
31
33
  };
32
34
  declare const BlockMenu: import("svelte").Component<$$ComponentProps, {}, "">;
33
35
  type BlockMenu = ReturnType<typeof BlockMenu>;