@voithos-labs/aragonite 0.10.4 → 0.10.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1021) hide show
  1. package/README.md +2 -2
  2. package/dist/a11y-strings.d.ts +11 -5
  3. package/dist/a11y-strings.js +60 -5
  4. package/dist/action-contracts.d.ts +242 -155
  5. package/dist/action-contracts.js +2 -2
  6. package/dist/active-editor.d.ts +3 -3
  7. package/dist/active-editor.js +8 -9
  8. package/dist/ambient/ambient-dom.d.ts +2 -5
  9. package/dist/ambient/ambient-dom.js +16 -62
  10. package/dist/assert.js +6 -5
  11. package/dist/block-component.d.ts +135 -109
  12. package/dist/block-component.js +30 -22
  13. package/dist/block-id.d.ts +6 -10
  14. package/dist/block-id.js +25 -14
  15. package/dist/bounded-memo.d.ts +5 -5
  16. package/dist/bounded-memo.js +6 -6
  17. package/dist/components/BlockDragHandle.svelte +12 -21
  18. package/dist/components/BlockHost.svelte +56 -134
  19. package/dist/components/BlockList.svelte +22 -19
  20. package/dist/components/DecorationOverlay.svelte +9 -10
  21. package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
  22. package/dist/components/Editor.svelte +603 -1126
  23. package/dist/components/Editor.svelte.d.ts +9 -20
  24. package/dist/components/GapCaret.svelte +26 -59
  25. package/dist/components/SelectionOverlay.svelte +26 -51
  26. package/dist/components/SelectionOverlay.svelte.d.ts +5 -3
  27. package/dist/components/TailInsert.svelte +8 -55
  28. package/dist/components/TailInsert.svelte.d.ts +4 -6
  29. package/dist/components/block-content-selector.d.ts +11 -11
  30. package/dist/components/block-content-selector.js +11 -11
  31. package/dist/components/block-el-lookup.d.ts +6 -0
  32. package/dist/components/block-el-lookup.js +27 -0
  33. package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
  34. package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
  35. package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
  36. package/dist/components/blocks/code/CodeBlock.svelte +255 -276
  37. package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
  38. package/dist/components/blocks/code/CodeBlockRail.svelte +72 -87
  39. package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
  40. package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
  41. package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
  42. package/dist/components/blocks/code/code-bootstrap.js +29 -34
  43. package/dist/components/blocks/code/code-context-actions.js +5 -4
  44. package/dist/components/blocks/code/code-enter.js +2 -2
  45. package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
  46. package/dist/components/blocks/code/code-fence-boundary.js +40 -66
  47. package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
  48. package/dist/components/blocks/code/code-fence-exit.js +24 -25
  49. package/dist/components/blocks/code/code-indent.d.ts +2 -2
  50. package/dist/components/blocks/code/code-indent.js +4 -7
  51. package/dist/components/blocks/code/code-languages.d.ts +16 -12
  52. package/dist/components/blocks/code/code-languages.js +57 -39
  53. package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
  54. package/dist/components/blocks/code/code-paste-surface.js +9 -18
  55. package/dist/components/blocks/code/code-renderer.d.ts +21 -5
  56. package/dist/components/blocks/code/code-renderer.js +90 -125
  57. package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
  58. package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
  59. package/dist/components/blocks/directive/activate-directives.js +18 -13
  60. package/dist/components/blocks/editable-leaf.d.ts +50 -74
  61. package/dist/components/blocks/editable-leaf.js +141 -203
  62. package/dist/components/blocks/editable-surface.d.ts +96 -100
  63. package/dist/components/blocks/editable-surface.js +101 -109
  64. package/dist/components/blocks/list/ListBlock.svelte +45 -90
  65. package/dist/components/blocks/list/ListItemBlock.svelte +93 -147
  66. package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +1 -0
  67. package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
  68. package/dist/components/blocks/list/task-checkbox.js +12 -7
  69. package/dist/components/blocks/plain-text-backend.d.ts +4 -20
  70. package/dist/components/blocks/plain-text-backend.js +9 -43
  71. package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
  72. package/dist/components/blocks/surface-wiring.svelte.js +15 -34
  73. package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
  74. package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
  75. package/dist/components/blocks/table/TableBlock.svelte +100 -165
  76. package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
  77. package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
  78. package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
  79. package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
  80. package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
  81. package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
  82. package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
  83. package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
  84. package/dist/components/blocks/table/cell-pointer.js +49 -71
  85. package/dist/components/blocks/table/cell-render.d.ts +24 -29
  86. package/dist/components/blocks/table/cell-render.js +29 -31
  87. package/dist/components/blocks/table/selected-cells.d.ts +7 -7
  88. package/dist/components/blocks/table/selected-cells.js +9 -13
  89. package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
  90. package/dist/components/blocks/table/table-caret-at-point.js +5 -5
  91. package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
  92. package/dist/components/blocks/table/table-cell-paste.js +27 -43
  93. package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
  94. package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
  95. package/dist/components/blocks/table/table-menu-model.js +6 -10
  96. package/dist/components/blocks/table/table-navigation.js +2 -2
  97. package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
  98. package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
  99. package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
  100. package/dist/components/blocks/text/auto-pair-record.js +51 -0
  101. package/dist/components/blocks/text/click-snap-guard.d.ts +8 -6
  102. package/dist/components/blocks/text/click-snap-guard.js +10 -7
  103. package/dist/components/blocks/text/composition-seat.d.ts +17 -14
  104. package/dist/components/blocks/text/composition-seat.js +11 -11
  105. package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
  106. package/dist/components/blocks/text/construct-edge-delete.js +50 -65
  107. package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
  108. package/dist/components/blocks/text/construct-reveal.js +13 -14
  109. package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
  110. package/dist/components/blocks/text/delimiter-autopair.js +87 -103
  111. package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
  112. package/dist/components/blocks/text/edge-policy-dispatch.js +150 -181
  113. package/dist/components/blocks/text/edge-seat.d.ts +17 -26
  114. package/dist/components/blocks/text/edge-seat.js +43 -70
  115. package/dist/components/blocks/text/link-at-point.d.ts +9 -9
  116. package/dist/components/blocks/text/link-at-point.js +12 -15
  117. package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
  118. package/dist/components/blocks/text/live-join-seam.js +75 -112
  119. package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
  120. package/dist/components/blocks/text/live-selection-edit.js +32 -108
  121. package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
  122. package/dist/components/blocks/text/live-split-rebalance.js +50 -67
  123. package/dist/components/blocks/text/marker-completion.d.ts +7 -12
  124. package/dist/components/blocks/text/marker-completion.js +17 -10
  125. package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
  126. package/dist/components/blocks/text/pending-mark-insert.js +30 -49
  127. package/dist/components/blocks/text/screen-diff.d.ts +5 -15
  128. package/dist/components/blocks/text/screen-diff.js +5 -19
  129. package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
  130. package/dist/components/blocks/text/text-clipboard.js +27 -32
  131. package/dist/components/blocks/text/text-keydown.d.ts +20 -30
  132. package/dist/components/blocks/text/text-keydown.js +54 -51
  133. package/dist/components/blocks/text/text-render.d.ts +25 -35
  134. package/dist/components/blocks/text/text-render.js +82 -61
  135. package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
  136. package/dist/components/blocks/text/widget-adjacency.js +17 -17
  137. package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
  138. package/dist/components/blocks/text/widget-interaction.js +212 -199
  139. package/dist/components/blocks/widget-portal.d.ts +20 -29
  140. package/dist/components/blocks/widget-portal.js +16 -14
  141. package/dist/components/built-in-blocks.d.ts +3 -4
  142. package/dist/components/built-in-blocks.js +17 -18
  143. package/dist/components/drag-handle.d.ts +12 -35
  144. package/dist/components/drag-handle.js +22 -68
  145. package/dist/components/editor-built-ins.d.ts +1 -0
  146. package/dist/components/editor-built-ins.js +16 -0
  147. package/dist/components/editor-root-clipboard.d.ts +6 -6
  148. package/dist/components/editor-root-clipboard.js +16 -27
  149. package/dist/components/editor-root-document-swap.d.ts +49 -0
  150. package/dist/components/editor-root-document-swap.js +54 -0
  151. package/dist/components/editor-root-focus.d.ts +5 -4
  152. package/dist/components/editor-root-focus.js +51 -22
  153. package/dist/components/editor-root-focused-surface.d.ts +35 -0
  154. package/dist/components/editor-root-focused-surface.js +65 -0
  155. package/dist/components/editor-root-geometry.d.ts +15 -24
  156. package/dist/components/editor-root-geometry.js +27 -31
  157. package/dist/components/editor-root-gestures.d.ts +39 -0
  158. package/dist/components/editor-root-gestures.js +189 -0
  159. package/dist/components/editor-root-keydown.d.ts +10 -25
  160. package/dist/components/editor-root-keydown.js +19 -43
  161. package/dist/components/editor-root-listeners.d.ts +22 -24
  162. package/dist/components/editor-root-listeners.js +49 -24
  163. package/dist/components/editor-root-menus.d.ts +51 -0
  164. package/dist/components/editor-root-menus.js +147 -0
  165. package/dist/components/editor-root-mode-flip.d.ts +16 -11
  166. package/dist/components/editor-root-mode-flip.js +36 -34
  167. package/dist/components/editor-root-scroll-host.d.ts +22 -0
  168. package/dist/components/editor-root-scroll-host.js +34 -0
  169. package/dist/components/editor-root-test-surface.d.ts +48 -0
  170. package/dist/components/editor-root-test-surface.js +6 -0
  171. package/dist/components/image/ImageOverlayHost.svelte +44 -35
  172. package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
  173. package/dist/components/image/ImageProperties.svelte +37 -41
  174. package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
  175. package/dist/components/image/ImageResizeHandles.svelte +14 -26
  176. package/dist/components/image/image-crop.d.ts +5 -11
  177. package/dist/components/image/image-crop.js +5 -11
  178. package/dist/components/image/image-edit-commit.d.ts +19 -16
  179. package/dist/components/image/image-edit-commit.js +74 -38
  180. package/dist/components/image/image-resize.d.ts +2 -5
  181. package/dist/components/image/image-resize.js +3 -6
  182. package/dist/components/image/image-widget-editing.d.ts +3 -3
  183. package/dist/components/image/image-widget-editing.js +9 -9
  184. package/dist/components/image/widget-dom.d.ts +2 -3
  185. package/dist/components/image/widget-dom.js +19 -24
  186. package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
  187. package/dist/components/image/widget-selection-state.svelte.js +26 -19
  188. package/dist/components/kind-cue.svelte.d.ts +21 -0
  189. package/dist/components/kind-cue.svelte.js +35 -0
  190. package/dist/components/link-card/LinkCard.svelte +115 -64
  191. package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
  192. package/dist/components/link-card/LinkCardHost.svelte +42 -33
  193. package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
  194. package/dist/components/link-card/link-card-commit.d.ts +16 -19
  195. package/dist/components/link-card/link-card-commit.js +21 -30
  196. package/dist/components/link-card/link-card-entry.d.ts +13 -23
  197. package/dist/components/link-card/link-card-entry.js +16 -24
  198. package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
  199. package/dist/components/link-card/link-card-state.svelte.js +2 -2
  200. package/dist/components/lrd-map-gate.d.ts +4 -11
  201. package/dist/components/lrd-map-gate.js +5 -11
  202. package/dist/components/menu/BlockMenu.svelte +20 -81
  203. package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
  204. package/dist/components/menu/InlineMenuHost.svelte +191 -0
  205. package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
  206. package/dist/components/menu/MenuIcon.svelte +3 -103
  207. package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
  208. package/dist/components/menu/SelectionToolbar.svelte +30 -35
  209. package/dist/components/menu/SelectionToolbar.svelte.d.ts +3 -5
  210. package/dist/components/menu/clipboard-actions.d.ts +3 -4
  211. package/dist/components/menu/clipboard-actions.js +3 -4
  212. package/dist/components/menu/default-context-actions.d.ts +4 -13
  213. package/dist/components/menu/default-context-actions.js +49 -67
  214. package/dist/components/menu/flyout-placement.d.ts +2 -2
  215. package/dist/components/menu/flyout-placement.js +2 -2
  216. package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
  217. package/dist/components/menu/menu-presence.svelte.js +19 -0
  218. package/dist/components/paste-image-arm.d.ts +6 -11
  219. package/dist/components/paste-image-arm.js +11 -18
  220. package/dist/components/portal.d.ts +2 -5
  221. package/dist/components/portal.js +4 -7
  222. package/dist/core/directive/activate.d.ts +4 -5
  223. package/dist/core/directive/activate.js +8 -9
  224. package/dist/core/directive/container-opener.js +13 -12
  225. package/dist/core/directive/grammar.d.ts +2 -5
  226. package/dist/core/directive/grammar.js +10 -10
  227. package/dist/core/directive/kinds.d.ts +4 -7
  228. package/dist/core/directive/kinds.js +14 -16
  229. package/dist/core/directive/registry.d.ts +12 -9
  230. package/dist/core/directive/registry.js +19 -20
  231. package/dist/core/directive/text-recognizer.d.ts +3 -2
  232. package/dist/core/directive/text-recognizer.js +5 -9
  233. package/dist/core/escapable.d.ts +1 -5
  234. package/dist/core/escapable.js +1 -5
  235. package/dist/core/inline/backticks.d.ts +3 -4
  236. package/dist/core/inline/backticks.js +3 -4
  237. package/dist/core/inline/character-refs.js +2 -1
  238. package/dist/core/inline/destination-bytes.d.ts +6 -3
  239. package/dist/core/inline/destination-bytes.js +50 -8
  240. package/dist/core/inline/entity-widget.d.ts +4 -3
  241. package/dist/core/inline/entity-widget.js +6 -6
  242. package/dist/core/inline/format-toggle.d.ts +22 -28
  243. package/dist/core/inline/format-toggle.js +97 -129
  244. package/dist/core/inline/html-entities.d.ts +2 -3
  245. package/dist/core/inline/html-entities.js +2 -3
  246. package/dist/core/inline/html-tag-grammar.js +6 -2
  247. package/dist/core/inline/image-dimensions.d.ts +2 -0
  248. package/dist/core/inline/image-dimensions.js +19 -2
  249. package/dist/core/inline/image-source-bytes.d.ts +11 -0
  250. package/dist/core/inline/image-source-bytes.js +71 -0
  251. package/dist/core/inline/index.d.ts +28 -21
  252. package/dist/core/inline/index.js +56 -34
  253. package/dist/core/inline/inline-cache.d.ts +12 -15
  254. package/dist/core/inline/inline-cache.js +11 -14
  255. package/dist/core/inline/inline-widgets.d.ts +54 -75
  256. package/dist/core/inline/inline-widgets.js +54 -62
  257. package/dist/core/inline/link-destination.d.ts +31 -0
  258. package/dist/core/inline/link-destination.js +129 -0
  259. package/dist/core/inline/link-reference-resolver.d.ts +8 -6
  260. package/dist/core/inline/link-reference-resolver.js +10 -6
  261. package/dist/core/inline/link-source-bytes.d.ts +31 -0
  262. package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
  263. package/dist/core/inline/live-edit/read-back.d.ts +29 -0
  264. package/dist/core/inline/live-edit/read-back.js +50 -0
  265. package/dist/core/inline/picture.d.ts +10 -0
  266. package/dist/core/inline/picture.js +40 -0
  267. package/dist/core/inline/scan/autolinks.d.ts +7 -8
  268. package/dist/core/inline/scan/autolinks.js +80 -59
  269. package/dist/core/inline/scan/brackets.d.ts +2 -2
  270. package/dist/core/inline/scan/brackets.js +6 -103
  271. package/dist/core/inline/scan/code-spans.d.ts +4 -0
  272. package/dist/core/inline/scan/code-spans.js +8 -0
  273. package/dist/core/inline/scan/emphasis.js +10 -14
  274. package/dist/core/inline/scan/index.d.ts +3 -1
  275. package/dist/core/inline/scan/index.js +32 -33
  276. package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
  277. package/dist/core/inline/scan/plugin-syntax.js +75 -89
  278. package/dist/core/inline/scan/scan-state.d.ts +2 -0
  279. package/dist/core/inline/scan/scan-state.js +1 -0
  280. package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
  281. package/dist/core/inline/scan/simple-nodes.js +2 -5
  282. package/dist/core/inline/scan/triggers.d.ts +17 -0
  283. package/dist/core/inline/scan/triggers.js +26 -0
  284. package/dist/core/inline/scan/url.js +8 -10
  285. package/dist/core/inline/transparency.d.ts +2 -1
  286. package/dist/core/inline/transparency.js +31 -15
  287. package/dist/core/inline/visibility.d.ts +30 -49
  288. package/dist/core/inline/visibility.js +31 -49
  289. package/dist/core/inline/walk.d.ts +4 -10
  290. package/dist/core/inline/walk.js +4 -10
  291. package/dist/core/inline-render.d.ts +22 -27
  292. package/dist/core/inline-render.js +51 -60
  293. package/dist/core/lines.d.ts +67 -26
  294. package/dist/core/lines.js +164 -33
  295. package/dist/core/metadata-parity.d.ts +9 -0
  296. package/dist/core/metadata-parity.js +25 -0
  297. package/dist/core/node-views.d.ts +7 -6
  298. package/dist/core/node-views.js +5 -5
  299. package/dist/core/nodes.d.ts +34 -44
  300. package/dist/core/nodes.js +4 -12
  301. package/dist/core/parser.d.ts +27 -34
  302. package/dist/core/parser.js +53 -67
  303. package/dist/core/parsers/blockquote.d.ts +5 -8
  304. package/dist/core/parsers/blockquote.js +11 -10
  305. package/dist/core/parsers/built-in-openers.d.ts +2 -5
  306. package/dist/core/parsers/built-in-openers.js +5 -8
  307. package/dist/core/parsers/fence-syntax.d.ts +36 -7
  308. package/dist/core/parsers/fence-syntax.js +61 -11
  309. package/dist/core/parsers/fenced-code.d.ts +16 -0
  310. package/dist/core/parsers/fenced-code.js +16 -15
  311. package/dist/core/parsers/heading.d.ts +19 -2
  312. package/dist/core/parsers/heading.js +50 -2
  313. package/dist/core/parsers/html-block.d.ts +3 -6
  314. package/dist/core/parsers/html-block.js +10 -11
  315. package/dist/core/parsers/indented-code.d.ts +1 -1
  316. package/dist/core/parsers/indented-code.js +2 -8
  317. package/dist/core/parsers/link-reference.d.ts +5 -3
  318. package/dist/core/parsers/link-reference.js +116 -120
  319. package/dist/core/parsers/list.d.ts +12 -5
  320. package/dist/core/parsers/list.js +53 -36
  321. package/dist/core/parsers/paragraph.d.ts +3 -3
  322. package/dist/core/parsers/paragraph.js +14 -5
  323. package/dist/core/parsers/table-completion.d.ts +2 -5
  324. package/dist/core/parsers/table-completion.js +7 -10
  325. package/dist/core/parsers/table.d.ts +8 -8
  326. package/dist/core/parsers/table.js +23 -26
  327. package/dist/core/parsers/thematic-break.js +15 -14
  328. package/dist/core/paths.d.ts +13 -0
  329. package/dist/core/paths.js +31 -0
  330. package/dist/core/terminator-escalation.d.ts +0 -7
  331. package/dist/core/terminator-escalation.js +5 -8
  332. package/dist/core/url-policy.d.ts +2 -5
  333. package/dist/core/url-policy.js +8 -12
  334. package/dist/cursor/caret-memory.d.ts +34 -0
  335. package/dist/cursor/caret-memory.js +82 -0
  336. package/dist/cursor/coordinate-spaces.d.ts +26 -19
  337. package/dist/cursor/coordinate-spaces.js +32 -20
  338. package/dist/cursor/dom-walk.d.ts +7 -13
  339. package/dist/cursor/dom-walk.js +7 -13
  340. package/dist/cursor/edge-affinity.d.ts +7 -35
  341. package/dist/cursor/edge-affinity.js +13 -44
  342. package/dist/cursor/focused-caret.d.ts +6 -8
  343. package/dist/cursor/focused-caret.js +7 -16
  344. package/dist/cursor/height-model.d.ts +3 -3
  345. package/dist/cursor/height-model.js +5 -5
  346. package/dist/cursor/height-oracle.d.ts +10 -6
  347. package/dist/cursor/height-oracle.js +26 -74
  348. package/dist/cursor/observe-resize.d.ts +13 -0
  349. package/dist/cursor/observe-resize.js +43 -0
  350. package/dist/cursor/overlay-rects.d.ts +2 -5
  351. package/dist/cursor/overlay-rects.js +2 -5
  352. package/dist/cursor/overlay-remeasure.d.ts +6 -7
  353. package/dist/cursor/overlay-remeasure.js +10 -14
  354. package/dist/cursor/pending-marks.d.ts +7 -9
  355. package/dist/cursor/pending-marks.js +6 -27
  356. package/dist/cursor/point-offset.d.ts +16 -10
  357. package/dist/cursor/point-offset.js +60 -25
  358. package/dist/cursor/reveal-source.d.ts +7 -11
  359. package/dist/cursor/reveal-source.js +10 -18
  360. package/dist/cursor/scroll-ancestors.d.ts +9 -20
  361. package/dist/cursor/scroll-ancestors.js +14 -26
  362. package/dist/cursor/scroll-owner.d.ts +92 -0
  363. package/dist/cursor/scroll-owner.js +283 -0
  364. package/dist/cursor/scrollport.d.ts +14 -15
  365. package/dist/cursor/scrollport.js +7 -13
  366. package/dist/cursor/sticky-column.d.ts +6 -29
  367. package/dist/cursor/sticky-column.js +6 -49
  368. package/dist/cursor/sticky-measure.d.ts +14 -9
  369. package/dist/cursor/sticky-measure.js +99 -49
  370. package/dist/cursor/surface-backend.d.ts +41 -0
  371. package/dist/cursor/surface-backend.js +78 -0
  372. package/dist/cursor/typography-estimates.d.ts +3 -3
  373. package/dist/cursor/typography-estimates.js +3 -3
  374. package/dist/cursor/visual-lines.d.ts +25 -14
  375. package/dist/cursor/visual-lines.js +45 -46
  376. package/dist/cursor/widget-edge-snap.d.ts +10 -15
  377. package/dist/cursor/widget-edge-snap.js +13 -12
  378. package/dist/cursor/widget-offset.d.ts +110 -104
  379. package/dist/cursor/widget-offset.js +344 -179
  380. package/dist/debug/diagnostics-report.d.ts +6 -6
  381. package/dist/debug/diagnostics-report.js +5 -5
  382. package/dist/debug/dump-tree.js +2 -2
  383. package/dist/debug/editor-diagnostics.d.ts +15 -0
  384. package/dist/debug/editor-diagnostics.js +33 -0
  385. package/dist/debug/inspect.d.ts +2 -2
  386. package/dist/debug/inspect.js +4 -4
  387. package/dist/debug/interaction-trace.d.ts +14 -15
  388. package/dist/debug/interaction-trace.js +19 -20
  389. package/dist/debug/operations-log.d.ts +1 -1
  390. package/dist/debug/operations-log.js +1 -1
  391. package/dist/decorations/buckets.d.ts +6 -12
  392. package/dist/decorations/buckets.js +4 -11
  393. package/dist/decorations/decoration-state.svelte.d.ts +2 -3
  394. package/dist/decorations/decoration-state.svelte.js +24 -26
  395. package/dist/decorations/island-dom.d.ts +10 -18
  396. package/dist/decorations/island-dom.js +25 -50
  397. package/dist/decorations/reserved-attrs.d.ts +6 -8
  398. package/dist/decorations/reserved-attrs.js +30 -17
  399. package/dist/decorations/types.d.ts +6 -7
  400. package/dist/decorations/types.js +2 -1
  401. package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
  402. package/dist/decorations/use-block-decorations.svelte.js +71 -0
  403. package/dist/decorations/widget-dom.d.ts +3 -3
  404. package/dist/decorations/widget-dom.js +5 -5
  405. package/dist/dev-warn.d.ts +5 -2
  406. package/dist/dev-warn.js +16 -4
  407. package/dist/editor-actions/ancestry-folds.d.ts +9 -14
  408. package/dist/editor-actions/ancestry-folds.js +13 -18
  409. package/dist/editor-actions/block-edit-core.d.ts +49 -22
  410. package/dist/editor-actions/block-edit-core.js +279 -151
  411. package/dist/editor-actions/block-edit-scope.d.ts +63 -50
  412. package/dist/editor-actions/block-edit-scope.js +100 -48
  413. package/dist/editor-actions/block-edit.d.ts +2 -3
  414. package/dist/editor-actions/block-edit.js +14 -90
  415. package/dist/editor-actions/commit/history.d.ts +4 -4
  416. package/dist/editor-actions/commit/history.js +33 -34
  417. package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
  418. package/dist/editor-actions/commit/reading-write-gate.js +56 -0
  419. package/dist/editor-actions/commit/text-batch.d.ts +7 -11
  420. package/dist/editor-actions/commit/text-batch.js +6 -7
  421. package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
  422. package/dist/editor-actions/commit/undo-controller.js +346 -216
  423. package/dist/editor-actions/container-block-component.d.ts +32 -51
  424. package/dist/editor-actions/container-block-component.js +66 -92
  425. package/dist/editor-actions/container-edit.d.ts +4 -2
  426. package/dist/editor-actions/container-edit.js +14 -44
  427. package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
  428. package/dist/editor-actions/container-exit-overrides.js +19 -21
  429. package/dist/editor-actions/deps.d.ts +25 -32
  430. package/dist/editor-actions/enter-completion.d.ts +12 -15
  431. package/dist/editor-actions/enter-completion.js +49 -51
  432. package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
  433. package/dist/editor-actions/focus/focus-dispatch.js +28 -50
  434. package/dist/editor-actions/focus/focus-landing.d.ts +8 -11
  435. package/dist/editor-actions/focus/focus-landing.js +15 -14
  436. package/dist/editor-actions/focus/focus.d.ts +3 -2
  437. package/dist/editor-actions/focus/focus.js +42 -59
  438. package/dist/editor-actions/index.d.ts +4 -3
  439. package/dist/editor-actions/index.js +5 -4
  440. package/dist/editor-actions/inline-range-commit.d.ts +18 -16
  441. package/dist/editor-actions/inline-range-commit.js +45 -54
  442. package/dist/editor-actions/leaf-write.d.ts +11 -0
  443. package/dist/editor-actions/leaf-write.js +102 -0
  444. package/dist/editor-actions/list-context.d.ts +9 -10
  445. package/dist/editor-actions/list-context.js +115 -110
  446. package/dist/editor-actions/list-overrides.d.ts +13 -5
  447. package/dist/editor-actions/list-overrides.js +36 -12
  448. package/dist/editor-actions/merge-fallback.d.ts +10 -16
  449. package/dist/editor-actions/merge-fallback.js +11 -22
  450. package/dist/editor-actions/nested/container-actions.d.ts +37 -0
  451. package/dist/editor-actions/nested/container-actions.js +42 -0
  452. package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
  453. package/dist/editor-actions/nested/emptied-container.js +5 -0
  454. package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
  455. package/dist/editor-actions/nested/nested-actions.js +17 -15
  456. package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
  457. package/dist/editor-actions/nested/nested-block-edit.js +40 -134
  458. package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
  459. package/dist/editor-actions/nested/nested-focus.js +33 -21
  460. package/dist/editor-actions/paste-coordinator.d.ts +3 -2
  461. package/dist/editor-actions/paste-coordinator.js +17 -13
  462. package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
  463. package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
  464. package/dist/editor-actions/plugin/container.d.ts +54 -82
  465. package/dist/editor-actions/plugin/container.js +105 -188
  466. package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
  467. package/dist/editor-actions/plugin/directive-container.js +7 -8
  468. package/dist/editor-actions/reorder-action.d.ts +7 -12
  469. package/dist/editor-actions/reorder-action.js +32 -48
  470. package/dist/editor-actions/reorder-drag.d.ts +12 -8
  471. package/dist/editor-actions/reorder-drag.js +45 -41
  472. package/dist/editor-actions/replacement-focus.d.ts +13 -21
  473. package/dist/editor-actions/replacement-focus.js +32 -33
  474. package/dist/editor-actions/search-replace.js +71 -67
  475. package/dist/editor-actions/stored-caret.d.ts +7 -0
  476. package/dist/editor-actions/stored-caret.js +10 -0
  477. package/dist/editor-actions/table-context.d.ts +9 -11
  478. package/dist/editor-actions/table-context.js +70 -93
  479. package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
  480. package/dist/editor-actions/unwrap-strategies.js +52 -63
  481. package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
  482. package/dist/editor-actions/whole-block-focus-surface.js +43 -53
  483. package/dist/editor-events.d.ts +25 -29
  484. package/dist/editor-events.js +17 -28
  485. package/dist/editor-keys.d.ts +96 -104
  486. package/dist/editor-keys.js +11 -24
  487. package/dist/editor-props.d.ts +88 -71
  488. package/dist/editor-rects.d.ts +23 -34
  489. package/dist/editor-rects.js +9 -77
  490. package/dist/env.d.ts +6 -4
  491. package/dist/env.js +8 -4
  492. package/dist/index.d.ts +6 -2
  493. package/dist/index.js +5 -2
  494. package/dist/inline-menu/inline-menu-session.d.ts +37 -0
  495. package/dist/inline-menu/inline-menu-session.js +98 -0
  496. package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
  497. package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
  498. package/dist/inline-menu/types.d.ts +77 -0
  499. package/dist/inline-menu/types.js +7 -0
  500. package/dist/invariants/child-id-parity.d.ts +23 -0
  501. package/dist/invariants/child-id-parity.js +39 -0
  502. package/dist/invariants/commit-paths.d.ts +4 -4
  503. package/dist/invariants/commit-paths.js +4 -4
  504. package/dist/invariants/commit-scope.d.ts +4 -4
  505. package/dist/invariants/commit-scope.js +9 -8
  506. package/dist/invariants/context-keys.d.ts +2 -5
  507. package/dist/invariants/context-keys.js +3 -6
  508. package/dist/invariants/descriptor.d.ts +2 -6
  509. package/dist/invariants/descriptor.js +2 -6
  510. package/dist/invariants/inline-transitions.d.ts +9 -16
  511. package/dist/invariants/inline-transitions.js +10 -18
  512. package/dist/invariants/install.d.ts +18 -27
  513. package/dist/invariants/install.js +29 -30
  514. package/dist/invariants/keeps-a-block.d.ts +7 -0
  515. package/dist/invariants/keeps-a-block.js +14 -0
  516. package/dist/invariants/landable-caret.d.ts +5 -7
  517. package/dist/invariants/landable-caret.js +8 -11
  518. package/dist/invariants/landing-focus-scroll.d.ts +7 -0
  519. package/dist/invariants/landing-focus-scroll.js +13 -0
  520. package/dist/invariants/landing-value.d.ts +13 -0
  521. package/dist/invariants/landing-value.js +27 -0
  522. package/dist/invariants/marker-css-parity.d.ts +5 -6
  523. package/dist/invariants/marker-css-parity.js +11 -12
  524. package/dist/invariants/measures-in-own-list.d.ts +6 -0
  525. package/dist/invariants/measures-in-own-list.js +13 -0
  526. package/dist/invariants/node-shape.d.ts +18 -37
  527. package/dist/invariants/node-shape.js +123 -79
  528. package/dist/invariants/open-tail.d.ts +7 -0
  529. package/dist/invariants/open-tail.js +45 -0
  530. package/dist/invariants/placement-ends-widget.d.ts +8 -0
  531. package/dist/invariants/placement-ends-widget.js +13 -0
  532. package/dist/invariants/registry.d.ts +27 -66
  533. package/dist/invariants/registry.js +61 -137
  534. package/dist/invariants/render-fidelity.d.ts +4 -4
  535. package/dist/invariants/render-fidelity.js +5 -5
  536. package/dist/invariants/selection-endpoints.d.ts +6 -7
  537. package/dist/invariants/selection-endpoints.js +18 -16
  538. package/dist/invariants/single-node-sink.d.ts +4 -5
  539. package/dist/invariants/single-node-sink.js +4 -5
  540. package/dist/invariants/snapshot-integrity.d.ts +5 -6
  541. package/dist/invariants/snapshot-integrity.js +1 -1
  542. package/dist/invariants/structural-descriptor.d.ts +6 -15
  543. package/dist/invariants/structural-descriptor.js +6 -15
  544. package/dist/menu-icons.d.ts +47 -0
  545. package/dist/menu-icons.js +113 -0
  546. package/dist/perf/instruments.d.ts +20 -5
  547. package/dist/perf/instruments.js +35 -15
  548. package/dist/perf/use-mount-gauge.svelte.js +4 -4
  549. package/dist/plugin.d.ts +37 -8
  550. package/dist/plugin.js +100 -77
  551. package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
  552. package/dist/plugins/admonitions/admonition-kind.js +12 -10
  553. package/dist/plugins/admonitions/convert-document.d.ts +5 -5
  554. package/dist/plugins/admonitions/convert-document.js +8 -7
  555. package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
  556. package/dist/plugins/admonitions/gh-alert.js +21 -22
  557. package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
  558. package/dist/plugins/admonitions/github-alert-kind.js +28 -37
  559. package/dist/plugins/admonitions/index.js +2 -2
  560. package/dist/plugins/admonitions/kinds.d.ts +1 -1
  561. package/dist/plugins/admonitions/register.js +11 -2
  562. package/dist/plugins/details/DetailsBlock.svelte +20 -20
  563. package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
  564. package/dist/plugins/details/details-disclosure.svelte.js +6 -7
  565. package/dist/plugins/details/details-kind.d.ts +6 -7
  566. package/dist/plugins/details/details-kind.js +44 -59
  567. package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
  568. package/dist/plugins/emoji/emoji-recognizer.js +7 -14
  569. package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
  570. package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
  571. package/dist/plugins/footnotes/constants.d.ts +2 -0
  572. package/dist/plugins/footnotes/constants.js +3 -0
  573. package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
  574. package/dist/plugins/footnotes/footnote-definition.js +69 -45
  575. package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
  576. package/dist/plugins/footnotes/footnote-lookup.js +14 -26
  577. package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
  578. package/dist/plugins/footnotes/footnote-numbering.js +22 -31
  579. package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
  580. package/dist/plugins/footnotes/footnote-reference.js +8 -13
  581. package/dist/plugins/footnotes/index.js +2 -3
  582. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
  583. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
  584. package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
  585. package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
  586. package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
  587. package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
  588. package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
  589. package/dist/plugins/highlight-occurrences/word-char.js +4 -0
  590. package/dist/plugins/latex/BlockMath.svelte +58 -75
  591. package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
  592. package/dist/plugins/latex/MathInline.svelte +10 -9
  593. package/dist/plugins/latex/flanking.d.ts +1 -0
  594. package/dist/plugins/latex/flanking.js +3 -0
  595. package/dist/plugins/latex/index.d.ts +1 -1
  596. package/dist/plugins/latex/latex-kind.d.ts +4 -4
  597. package/dist/plugins/latex/latex-kind.js +78 -67
  598. package/dist/plugins/latex/math-completion.d.ts +1 -1
  599. package/dist/plugins/latex/math-completion.js +5 -8
  600. package/dist/plugins/latex/math-layout.d.ts +2 -8
  601. package/dist/plugins/latex/math-layout.js +0 -9
  602. package/dist/plugins/latex/math-renderer.d.ts +17 -20
  603. package/dist/plugins/latex/math-renderer.js +21 -38
  604. package/dist/plugins/latex/math-source.d.ts +4 -8
  605. package/dist/plugins/latex/math-source.js +36 -81
  606. package/dist/plugins/latex/register.d.ts +10 -11
  607. package/dist/plugins/latex/register.js +24 -10
  608. package/dist/plugins/latex/renderer.d.ts +9 -10
  609. package/dist/plugins/latex/renderer.js +9 -24
  610. package/dist/plugins/mermaid/MermaidBlock.svelte +51 -45
  611. package/dist/plugins/mermaid/index.js +1 -1
  612. package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
  613. package/dist/plugins/mermaid/mermaid-kind.js +30 -47
  614. package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
  615. package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
  616. package/dist/plugins/mermaid/register.d.ts +3 -3
  617. package/dist/plugins/mermaid/register.js +5 -5
  618. package/dist/plugins/mermaid/renderer.d.ts +5 -5
  619. package/dist/plugins/mermaid/renderer.js +8 -11
  620. package/dist/plugins/parrot/ParrotBlock.svelte +15 -6
  621. package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
  622. package/dist/plugins/parrot/parrot-plugin.js +3 -3
  623. package/dist/plugins/slash-commands/filter.d.ts +23 -0
  624. package/dist/plugins/slash-commands/filter.js +31 -0
  625. package/dist/plugins/slash-commands/index.d.ts +2 -0
  626. package/dist/plugins/slash-commands/index.js +2 -0
  627. package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
  628. package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
  629. package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
  630. package/dist/plugins/slash-commands/slash-source.js +108 -0
  631. package/dist/plugins/toc/TocBlock.svelte +23 -22
  632. package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
  633. package/dist/plugins/toc/heading-outline.d.ts +7 -12
  634. package/dist/plugins/toc/heading-outline.js +22 -36
  635. package/dist/plugins/toc/navigation-queue.d.ts +2 -4
  636. package/dist/plugins/toc/toc-plugin.d.ts +5 -5
  637. package/dist/plugins/toc/toc-plugin.js +20 -13
  638. package/dist/presentation-mode.d.ts +15 -23
  639. package/dist/presentation-mode.js +19 -25
  640. package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
  641. package/dist/reactivity/block-list-state.svelte.js +8 -9
  642. package/dist/reactivity/block-window.svelte.d.ts +12 -6
  643. package/dist/reactivity/block-window.svelte.js +44 -17
  644. package/dist/reactivity/child-list.d.ts +34 -0
  645. package/dist/reactivity/child-list.js +48 -0
  646. package/dist/reactivity/content-version.svelte.d.ts +4 -7
  647. package/dist/reactivity/content-version.svelte.js +3 -5
  648. package/dist/reactivity/hold-across.d.ts +39 -0
  649. package/dist/reactivity/hold-across.js +57 -0
  650. package/dist/reactivity/layout-state.svelte.d.ts +27 -0
  651. package/dist/reactivity/layout-state.svelte.js +51 -0
  652. package/dist/reactivity/list-tree.d.ts +39 -0
  653. package/dist/reactivity/list-tree.js +132 -0
  654. package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
  655. package/dist/reactivity/list-windowing.svelte.js +141 -310
  656. package/dist/reactivity/measure-batch.d.ts +6 -8
  657. package/dist/reactivity/measure-batch.js +5 -6
  658. package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
  659. package/dist/reactivity/publish-ref.svelte.js +21 -85
  660. package/dist/reactivity/scope-geometry.d.ts +6 -13
  661. package/dist/reactivity/scope-geometry.js +7 -14
  662. package/dist/reactivity/state-registry.d.ts +5 -5
  663. package/dist/reactivity/state-registry.js +11 -15
  664. package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
  665. package/dist/reactivity/use-container-windowing.svelte.js +64 -74
  666. package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
  667. package/dist/reactivity/use-measured-child.svelte.js +41 -0
  668. package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
  669. package/dist/reactivity/use-window-floor.svelte.js +27 -0
  670. package/dist/reactivity/window-slice.d.ts +4 -4
  671. package/dist/reactivity/window-slice.js +0 -2
  672. package/dist/renderer-slot.d.ts +48 -0
  673. package/dist/renderer-slot.js +85 -0
  674. package/dist/scan-index.d.ts +4 -4
  675. package/dist/scan-index.js +4 -4
  676. package/dist/schema/block-commands.d.ts +69 -54
  677. package/dist/schema/block-commands.js +91 -104
  678. package/dist/schema/block-completions.d.ts +16 -19
  679. package/dist/schema/block-completions.js +25 -32
  680. package/dist/schema/block-component-registry.d.ts +13 -14
  681. package/dist/schema/block-component-registry.js +19 -17
  682. package/dist/schema/block-kind-descriptor.d.ts +234 -168
  683. package/dist/schema/block-kind-descriptor.js +151 -66
  684. package/dist/schema/block-openers.d.ts +48 -39
  685. package/dist/schema/block-openers.js +73 -83
  686. package/dist/schema/built-in-descriptors.d.ts +3 -5
  687. package/dist/schema/built-in-descriptors.js +96 -80
  688. package/dist/schema/child-spans.d.ts +12 -10
  689. package/dist/schema/child-spans.js +68 -34
  690. package/dist/schema/closure.d.ts +18 -16
  691. package/dist/schema/closure.js +24 -14
  692. package/dist/schema/command-id.d.ts +6 -8
  693. package/dist/schema/command-id.js +20 -25
  694. package/dist/schema/commands.d.ts +78 -84
  695. package/dist/schema/commands.js +152 -117
  696. package/dist/schema/container-raw.d.ts +51 -11
  697. package/dist/schema/container-raw.js +143 -14
  698. package/dist/schema/container-rebuilders.d.ts +17 -15
  699. package/dist/schema/container-rebuilders.js +30 -22
  700. package/dist/schema/context-actions.d.ts +25 -13
  701. package/dist/schema/context-actions.js +32 -17
  702. package/dist/schema/define-plugin-block.d.ts +8 -6
  703. package/dist/schema/define-plugin-block.js +6 -4
  704. package/dist/schema/fenced-code-raw.d.ts +30 -17
  705. package/dist/schema/fenced-code-raw.js +155 -107
  706. package/dist/schema/global-commands.d.ts +6 -6
  707. package/dist/schema/global-commands.js +14 -22
  708. package/dist/schema/height-estimates.d.ts +31 -0
  709. package/dist/schema/height-estimates.js +64 -0
  710. package/dist/schema/inline-construct-policy.d.ts +42 -55
  711. package/dist/schema/inline-construct-policy.js +36 -35
  712. package/dist/schema/insert-catalogue.d.ts +30 -0
  713. package/dist/schema/insert-catalogue.js +95 -0
  714. package/dist/schema/keybinding-overrides.d.ts +9 -11
  715. package/dist/schema/keybinding-overrides.js +1 -1
  716. package/dist/schema/keybindings.d.ts +15 -7
  717. package/dist/schema/keybindings.js +21 -9
  718. package/dist/schema/merge-rules.d.ts +5 -7
  719. package/dist/schema/merge-rules.js +7 -9
  720. package/dist/schema/opener-priorities.d.ts +4 -4
  721. package/dist/schema/opener-priorities.js +4 -4
  722. package/dist/schema/operations.d.ts +8 -10
  723. package/dist/schema/operations.js +3 -3
  724. package/dist/schema/page-role.d.ts +14 -0
  725. package/dist/schema/page-role.js +19 -0
  726. package/dist/schema/plugin-activation.d.ts +4 -6
  727. package/dist/schema/plugin-activation.js +12 -10
  728. package/dist/schema/plugin-editor-context.d.ts +25 -10
  729. package/dist/schema/plugin-editor-context.js +40 -9
  730. package/dist/schema/plugin-install.d.ts +49 -17
  731. package/dist/schema/plugin-install.js +51 -25
  732. package/dist/schema/plugin-kind.d.ts +12 -8
  733. package/dist/schema/plugin-kind.js +35 -42
  734. package/dist/schema/plugin-name.js +3 -3
  735. package/dist/schema/plugin-registry.d.ts +54 -0
  736. package/dist/schema/plugin-registry.js +70 -0
  737. package/dist/schema/reading.d.ts +23 -0
  738. package/dist/schema/reading.js +7 -0
  739. package/dist/schema/register-once.d.ts +3 -5
  740. package/dist/schema/register-once.js +7 -16
  741. package/dist/schema/registration-checks.d.ts +12 -16
  742. package/dist/schema/registration-checks.js +35 -51
  743. package/dist/schema/registration-pairs.d.ts +54 -0
  744. package/dist/schema/registration-pairs.js +48 -0
  745. package/dist/schema/registration-pending.d.ts +8 -12
  746. package/dist/schema/registration-pending.js +9 -9
  747. package/dist/schema/registry-reset.d.ts +8 -4
  748. package/dist/schema/registry-reset.js +13 -26
  749. package/dist/schema/registry-view.d.ts +25 -13
  750. package/dist/schema/registry-view.js +26 -20
  751. package/dist/schema/reserved-chords.d.ts +9 -10
  752. package/dist/schema/reserved-chords.js +63 -80
  753. package/dist/schema/reserved-chrome.d.ts +12 -11
  754. package/dist/schema/reserved-chrome.js +15 -11
  755. package/dist/schema/setext-raw.d.ts +13 -0
  756. package/dist/schema/setext-raw.js +33 -0
  757. package/dist/schema/stored-as.d.ts +20 -0
  758. package/dist/schema/stored-as.js +6 -0
  759. package/dist/schema/table-cell-raw.d.ts +18 -7
  760. package/dist/schema/table-cell-raw.js +28 -7
  761. package/dist/schema/whole-block-unit.d.ts +5 -4
  762. package/dist/schema/whole-block-unit.js +5 -4
  763. package/dist/search/document-scan.d.ts +3 -3
  764. package/dist/search/document-scan.js +2 -2
  765. package/dist/search/matcher.d.ts +1 -1
  766. package/dist/search/regex-executor.d.ts +5 -6
  767. package/dist/search/regex-executor.js +6 -8
  768. package/dist/search/replace.d.ts +2 -5
  769. package/dist/search/replace.js +2 -5
  770. package/dist/search/search-state.svelte.d.ts +5 -5
  771. package/dist/search/search-state.svelte.js +12 -16
  772. package/dist/selection/autoscroll.d.ts +6 -9
  773. package/dist/selection/block-hit-test.d.ts +16 -24
  774. package/dist/selection/block-hit-test.js +29 -22
  775. package/dist/selection/caret-doors.d.ts +15 -14
  776. package/dist/selection/caret-doors.js +37 -26
  777. package/dist/selection/caret-landing.d.ts +62 -0
  778. package/dist/selection/caret-landing.js +157 -0
  779. package/dist/selection/caret-restore.d.ts +17 -10
  780. package/dist/selection/caret-restore.js +10 -22
  781. package/dist/selection/caret-target.d.ts +30 -0
  782. package/dist/selection/caret-target.js +84 -0
  783. package/dist/selection/char-endpoint-snap.d.ts +6 -10
  784. package/dist/selection/char-endpoint-snap.js +8 -14
  785. package/dist/selection/clipboard-text.d.ts +5 -12
  786. package/dist/selection/clipboard-text.js +69 -172
  787. package/dist/selection/covered-block.d.ts +6 -8
  788. package/dist/selection/covered-block.js +8 -19
  789. package/dist/selection/cross-block/clipboard.d.ts +3 -2
  790. package/dist/selection/cross-block/clipboard.js +13 -4
  791. package/dist/selection/cross-block/dispatch.d.ts +47 -43
  792. package/dist/selection/cross-block/dispatch.js +12 -23
  793. package/dist/selection/cross-block/format-range.d.ts +18 -21
  794. package/dist/selection/cross-block/format-range.js +104 -103
  795. package/dist/selection/cross-block/format-toggle.d.ts +10 -15
  796. package/dist/selection/cross-block/format-toggle.js +28 -33
  797. package/dist/selection/cross-block/keydown.d.ts +4 -4
  798. package/dist/selection/cross-block/keydown.js +92 -125
  799. package/dist/selection/cross-block/ops.d.ts +19 -34
  800. package/dist/selection/cross-block/ops.js +110 -95
  801. package/dist/selection/cross-block/paste.d.ts +2 -3
  802. package/dist/selection/cross-block/paste.js +59 -96
  803. package/dist/selection/cross-block/pointer.d.ts +17 -15
  804. package/dist/selection/cross-block/pointer.js +74 -25
  805. package/dist/selection/cross-block/type-replace.d.ts +4 -6
  806. package/dist/selection/cross-block/type-replace.js +51 -134
  807. package/dist/selection/dead-space-caret.d.ts +19 -30
  808. package/dist/selection/dead-space-caret.js +70 -88
  809. package/dist/selection/drag-pointer.d.ts +7 -9
  810. package/dist/selection/drag-pointer.js +23 -33
  811. package/dist/selection/gap-caret.d.ts +17 -28
  812. package/dist/selection/gap-caret.js +14 -26
  813. package/dist/selection/grid-selection.d.ts +12 -0
  814. package/dist/selection/grid-selection.js +22 -0
  815. package/dist/selection/keyboard-extend.d.ts +27 -40
  816. package/dist/selection/keyboard-extend.js +94 -117
  817. package/dist/selection/multi-click.d.ts +13 -18
  818. package/dist/selection/multi-click.js +32 -38
  819. package/dist/selection/native-bridge.d.ts +29 -39
  820. package/dist/selection/native-bridge.js +78 -127
  821. package/dist/selection/nearest-block.d.ts +17 -12
  822. package/dist/selection/nearest-block.js +37 -18
  823. package/dist/selection/path-lookup.d.ts +25 -16
  824. package/dist/selection/path-lookup.js +101 -18
  825. package/dist/selection/path-math.d.ts +9 -11
  826. package/dist/selection/path-math.js +5 -7
  827. package/dist/selection/pointer-gesture.d.ts +5 -5
  828. package/dist/selection/pointer-gesture.js +5 -5
  829. package/dist/selection/pointer-session.d.ts +10 -16
  830. package/dist/selection/pointer-session.js +6 -7
  831. package/dist/selection/primitives.d.ts +64 -40
  832. package/dist/selection/primitives.js +57 -67
  833. package/dist/selection/range-coverage.d.ts +94 -0
  834. package/dist/selection/range-coverage.js +365 -0
  835. package/dist/selection/range-delete-ceremony.d.ts +28 -74
  836. package/dist/selection/range-delete-ceremony.js +100 -141
  837. package/dist/selection/range-delete-chrome.d.ts +20 -33
  838. package/dist/selection/range-delete-chrome.js +53 -78
  839. package/dist/selection/range-delete-table-coverage.d.ts +11 -25
  840. package/dist/selection/range-delete-table-coverage.js +42 -112
  841. package/dist/selection/range-delete-table.d.ts +14 -12
  842. package/dist/selection/range-delete-table.js +106 -310
  843. package/dist/selection/range-delete.d.ts +18 -23
  844. package/dist/selection/range-delete.js +83 -123
  845. package/dist/selection/round-trip-restore.d.ts +18 -0
  846. package/dist/selection/round-trip-restore.js +19 -0
  847. package/dist/selection/selection-announcer.d.ts +17 -0
  848. package/dist/selection/selection-announcer.js +25 -0
  849. package/dist/selection/selection-description.d.ts +4 -3
  850. package/dist/selection/selection-description.js +5 -4
  851. package/dist/selection/selection-drop.d.ts +34 -16
  852. package/dist/selection/selection-drop.js +159 -95
  853. package/dist/selection/selection-restore.d.ts +20 -33
  854. package/dist/selection/selection-restore.js +21 -44
  855. package/dist/selection/selection-state.svelte.d.ts +50 -42
  856. package/dist/selection/selection-state.svelte.js +144 -98
  857. package/dist/selection/shared-keydown.d.ts +22 -27
  858. package/dist/selection/shared-keydown.js +25 -45
  859. package/dist/selection/table-endpoint-snap.d.ts +17 -41
  860. package/dist/selection/table-endpoint-snap.js +54 -80
  861. package/dist/selection/table-rect-extend.d.ts +3 -6
  862. package/dist/selection/table-rect-extend.js +19 -14
  863. package/dist/styles/editor-theme.css +60 -53
  864. package/dist/styles/editor.css +201 -143
  865. package/dist/testing/conformance-core.d.ts +50 -18
  866. package/dist/testing/conformance-core.js +88 -50
  867. package/dist/testing/container-conformance.d.ts +48 -84
  868. package/dist/testing/container-conformance.js +159 -285
  869. package/dist/testing/headless-actions.d.ts +34 -19
  870. package/dist/testing/headless-actions.js +116 -65
  871. package/dist/testing/headless-block-list.svelte.d.ts +16 -0
  872. package/dist/testing/headless-block-list.svelte.js +22 -0
  873. package/dist/testing/inline-conformance.d.ts +15 -22
  874. package/dist/testing/inline-conformance.js +131 -148
  875. package/dist/testing/kind-conformance.d.ts +19 -24
  876. package/dist/testing/kind-conformance.js +204 -117
  877. package/dist/testing/kit-reading.d.ts +7 -0
  878. package/dist/testing/kit-reading.js +16 -0
  879. package/dist/testing/mount-dom-stubs.d.ts +4 -5
  880. package/dist/testing/mount-dom-stubs.js +8 -5
  881. package/dist/testing/parse-convergence.d.ts +10 -10
  882. package/dist/testing/parse-convergence.js +14 -49
  883. package/dist/testing.d.ts +13 -9
  884. package/dist/testing.js +28 -38
  885. package/dist/tree-operations/blockquote.d.ts +8 -14
  886. package/dist/tree-operations/blockquote.js +25 -45
  887. package/dist/tree-operations/chain-rebuild.d.ts +34 -25
  888. package/dist/tree-operations/chain-rebuild.js +115 -52
  889. package/dist/tree-operations/children.d.ts +5 -9
  890. package/dist/tree-operations/children.js +7 -11
  891. package/dist/tree-operations/cleanup.d.ts +6 -7
  892. package/dist/tree-operations/cleanup.js +14 -11
  893. package/dist/tree-operations/clone.js +5 -4
  894. package/dist/tree-operations/container-lift.d.ts +10 -5
  895. package/dist/tree-operations/container-lift.js +20 -14
  896. package/dist/tree-operations/container-offsets.d.ts +22 -0
  897. package/dist/tree-operations/container-offsets.js +89 -0
  898. package/dist/tree-operations/content-write.d.ts +52 -29
  899. package/dist/tree-operations/content-write.js +155 -110
  900. package/dist/tree-operations/index.d.ts +4 -4
  901. package/dist/tree-operations/index.js +4 -4
  902. package/dist/tree-operations/keep-one-block.d.ts +10 -0
  903. package/dist/tree-operations/keep-one-block.js +19 -0
  904. package/dist/tree-operations/leaf-range.d.ts +33 -0
  905. package/dist/tree-operations/leaf-range.js +67 -0
  906. package/dist/tree-operations/list/empty-check.d.ts +2 -3
  907. package/dist/tree-operations/list/empty-check.js +4 -4
  908. package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
  909. package/dist/tree-operations/list/exit-replacement.js +4 -9
  910. package/dist/tree-operations/list/item-partition.d.ts +2 -2
  911. package/dist/tree-operations/list/item-partition.js +2 -2
  912. package/dist/tree-operations/list/list-builders.d.ts +18 -16
  913. package/dist/tree-operations/list/list-builders.js +59 -30
  914. package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
  915. package/dist/tree-operations/list/ordered-markers.js +7 -16
  916. package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
  917. package/dist/tree-operations/list/reconcile-task.js +80 -23
  918. package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
  919. package/dist/tree-operations/list/sublist-separator.js +20 -27
  920. package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
  921. package/dist/tree-operations/list/task-paragraph.js +54 -0
  922. package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
  923. package/dist/tree-operations/list/unwrap-merge.js +44 -79
  924. package/dist/tree-operations/node-ops.d.ts +30 -52
  925. package/dist/tree-operations/node-ops.js +152 -218
  926. package/dist/tree-operations/node-primitives.d.ts +44 -31
  927. package/dist/tree-operations/node-primitives.js +84 -60
  928. package/dist/tree-operations/open-tail.d.ts +25 -0
  929. package/dist/tree-operations/open-tail.js +100 -0
  930. package/dist/tree-operations/parse-block.d.ts +15 -2
  931. package/dist/tree-operations/parse-block.js +19 -4
  932. package/dist/tree-operations/paste/apply.d.ts +7 -8
  933. package/dist/tree-operations/paste/apply.js +33 -63
  934. package/dist/tree-operations/paste/body-write.d.ts +8 -6
  935. package/dist/tree-operations/paste/body-write.js +13 -14
  936. package/dist/tree-operations/paste/container-match.d.ts +7 -10
  937. package/dist/tree-operations/paste/container-match.js +76 -58
  938. package/dist/tree-operations/paste/container-paste.d.ts +3 -3
  939. package/dist/tree-operations/paste/container-paste.js +3 -3
  940. package/dist/tree-operations/paste/dispatch.d.ts +26 -29
  941. package/dist/tree-operations/paste/dispatch.js +68 -53
  942. package/dist/tree-operations/paste/focus-target.d.ts +11 -14
  943. package/dist/tree-operations/paste/focus-target.js +13 -18
  944. package/dist/tree-operations/paste/hooks.d.ts +7 -12
  945. package/dist/tree-operations/paste/hooks.js +49 -46
  946. package/dist/tree-operations/paste/line-ending.d.ts +11 -0
  947. package/dist/tree-operations/paste/line-ending.js +32 -0
  948. package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
  949. package/dist/tree-operations/paste/list-absorb.js +17 -19
  950. package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
  951. package/dist/tree-operations/paste/list-break-out.js +24 -32
  952. package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
  953. package/dist/tree-operations/paste/parent-scope.js +9 -16
  954. package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
  955. package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
  956. package/dist/tree-operations/paste/paste-replacement.js +73 -42
  957. package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
  958. package/dist/tree-operations/paste/paste-transforms.js +18 -27
  959. package/dist/tree-operations/paste/replacement-parse.d.ts +9 -7
  960. package/dist/tree-operations/paste/replacement-parse.js +12 -10
  961. package/dist/tree-operations/paste/strategy.d.ts +1 -1
  962. package/dist/tree-operations/paste/strategy.js +1 -1
  963. package/dist/tree-operations/paste/table-slice.js +15 -10
  964. package/dist/tree-operations/paste-surfaces.d.ts +18 -29
  965. package/dist/tree-operations/paste-surfaces.js +14 -10
  966. package/dist/tree-operations/path-mutate.d.ts +7 -8
  967. package/dist/tree-operations/path-mutate.js +4 -4
  968. package/dist/tree-operations/reorder-unit.d.ts +4 -5
  969. package/dist/tree-operations/reorder-unit.js +5 -6
  970. package/dist/tree-operations/reorder.d.ts +7 -9
  971. package/dist/tree-operations/reorder.js +39 -40
  972. package/dist/tree-operations/settle.d.ts +42 -53
  973. package/dist/tree-operations/settle.js +241 -162
  974. package/dist/tree-operations/sharing.d.ts +5 -5
  975. package/dist/tree-operations/splice-many.d.ts +5 -5
  976. package/dist/tree-operations/splice-many.js +5 -5
  977. package/dist/tree-operations/stored-as.d.ts +13 -0
  978. package/dist/tree-operations/stored-as.js +48 -0
  979. package/dist/tree-operations/structural-change.d.ts +11 -15
  980. package/dist/tree-operations/structural-change.js +10 -14
  981. package/dist/tree-operations/structural-suffix.d.ts +22 -0
  982. package/dist/tree-operations/structural-suffix.js +61 -0
  983. package/dist/tree-operations/sub-table-copy.d.ts +7 -0
  984. package/dist/tree-operations/sub-table-copy.js +40 -36
  985. package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
  986. package/dist/tree-operations/table-grid-clipboard.js +11 -36
  987. package/dist/tree-operations/table-mutations.d.ts +7 -3
  988. package/dist/tree-operations/table-mutations.js +45 -9
  989. package/dist/tree-operations/unshare.d.ts +11 -15
  990. package/dist/tree-operations/unshare.js +15 -17
  991. package/dist/undo/manager.js +1 -1
  992. package/dist/undo/types.d.ts +2 -2
  993. package/docs/guide/consumer-guide.md +327 -205
  994. package/docs/guide/directives.md +7 -7
  995. package/docs/guide/plugin-api.md +253 -185
  996. package/docs/guide/plugin-guide.md +332 -235
  997. package/docs/guide/plugin-testing.md +96 -82
  998. package/package.json +12 -16
  999. package/dist/ambient/ambient-cursor.d.ts +0 -41
  1000. package/dist/ambient/ambient-cursor.js +0 -120
  1001. package/dist/components/blocks/code/code-paste.d.ts +0 -24
  1002. package/dist/components/blocks/code/code-paste.js +0 -21
  1003. package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
  1004. package/dist/components/blocks/table/cell-clipboard.js +0 -67
  1005. package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
  1006. package/dist/components/blocks/text/hidden-suffix.js +0 -15
  1007. package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
  1008. package/dist/components/image/image-source-bytes.d.ts +0 -15
  1009. package/dist/components/image/image-source-bytes.js +0 -80
  1010. package/dist/cursor/content-offsets.d.ts +0 -29
  1011. package/dist/cursor/content-offsets.js +0 -151
  1012. package/dist/cursor/reveal-anchor.d.ts +0 -30
  1013. package/dist/cursor/reveal-anchor.js +0 -31
  1014. package/dist/cursor/scroll-hold.d.ts +0 -10
  1015. package/dist/cursor/scroll-hold.js +0 -22
  1016. package/dist/invariants/split-landing.d.ts +0 -8
  1017. package/dist/invariants/split-landing.js +0 -15
  1018. package/dist/tree-operations/list/terminator.d.ts +0 -17
  1019. package/dist/tree-operations/list/terminator.js +0 -60
  1020. package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -31
  1021. package/dist/tree-operations/paste/replace-block-at-parent.js +0 -78
@@ -3,9 +3,6 @@ export declare function clampWidth(width: number, maxWidth: number): number;
3
3
  export declare const KEYBOARD_MIN_WIDTH = 32;
4
4
  export declare function keyboardResizeWidth(currentWidth: number, delta: number, maxWidth: number): number;
5
5
  export declare function snapWidth(width: number, maxWidth: number, snapThresholdPx: number): number;
6
- /**
7
- * The height a release persists — the one the drag showed. An aspect-locked drag lets the height
8
- * follow the width, so it persists `|N` and leaves the derivation to the renderer; an unlocked
9
- * drag holds the height the image already had, which only the explicit `|NxM` form can carry.
10
- */
6
+ /** The height the drag showed: none for an aspect-locked drag (`|N`, the renderer derives it),
7
+ * the existing height for an unlocked one, which needs the `|NxM` form. */
11
8
  export declare function resolveDraggedHeight(aspectLocked: boolean, previewHeight: number): number | undefined;
@@ -1,5 +1,5 @@
1
1
  // Pure math for image drag-to-resize: clamp, snap-to-percentage, aspect lock.
2
- // No DOM — the handles component owns pointer events and calls these.
2
+ // No DOM: the handles component owns pointer events and calls these.
3
3
  export const MIN_WIDTH = 16;
4
4
  const SNAP_PERCENTAGES = [25, 50, 75, 100];
5
5
  export function clampWidth(width, maxWidth) {
@@ -25,11 +25,8 @@ export function snapWidth(width, maxWidth, snapThresholdPx) {
25
25
  }
26
26
  return rounded;
27
27
  }
28
- /**
29
- * The height a release persists — the one the drag showed. An aspect-locked drag lets the height
30
- * follow the width, so it persists `|N` and leaves the derivation to the renderer; an unlocked
31
- * drag holds the height the image already had, which only the explicit `|NxM` form can carry.
32
- */
28
+ /** The height the drag showed: none for an aspect-locked drag (`|N`, the renderer derives it),
29
+ * the existing height for an unlocked one, which needs the `|NxM` form. */
33
30
  export function resolveDraggedHeight(aspectLocked, previewHeight) {
34
31
  // A widget that never laid out reports 0; `|Nx0` is worse than no hint at all.
35
32
  if (aspectLocked || previewHeight < 1)
@@ -1,7 +1,7 @@
1
1
  /**
2
- * The image widget's selected-key behavior: Shift+Arrow keyboard resize. Attached as
3
- * the image kind's `onSelectedKey` at mount (built-in-blocks.ts), so the generic
4
- * selected-widget keydown path stays kind-agnostic.
2
+ * What a key does while an image widget is selected: Shift+Arrow resizes it. Registered as
3
+ * the image kind's `onSelectedKey` at mount (built-in-blocks.ts), so the shared
4
+ * selected-widget keydown path stays the same for every kind.
5
5
  */
6
6
  import type { InlineWidgetEditingContext } from '../../core/inline/inline-widgets';
7
7
  export declare function imageWidgetOnSelectedKey(e: KeyboardEvent, ctx: InlineWidgetEditingContext): boolean;
@@ -1,14 +1,14 @@
1
1
  /**
2
- * The image widget's selected-key behavior: Shift+Arrow keyboard resize. Attached as
3
- * the image kind's `onSelectedKey` at mount (built-in-blocks.ts), so the generic
4
- * selected-widget keydown path stays kind-agnostic.
2
+ * What a key does while an image widget is selected: Shift+Arrow resizes it. Registered as
3
+ * the image kind's `onSelectedKey` at mount (built-in-blocks.ts), so the shared
4
+ * selected-widget keydown path stays the same for every kind.
5
5
  */
6
- import { buildImageEditBytes } from './image-source-bytes';
6
+ import { buildImageEditBytes } from '../../core/inline/image-source-bytes';
7
7
  import { keyboardResizeWidth } from './image-resize';
8
8
  const KEYBOARD_STEP = 20;
9
9
  const FALLBACK_DEFAULT_WIDTH = 400;
10
10
  export function imageWidgetOnSelectedKey(e, ctx) {
11
- // A resize is an edit; declining lets the caller's generic swallow keep the key inert.
11
+ // A resize is an edit; refusing here lets the caller swallow the key and do nothing.
12
12
  if (ctx.presentationMode === 'reading')
13
13
  return false;
14
14
  if (!(e.shiftKey && (e.key === 'ArrowLeft' || e.key === 'ArrowRight')))
@@ -18,8 +18,8 @@ export function imageWidgetOnSelectedKey(e, ctx) {
18
18
  const delta = e.key === 'ArrowRight' ? KEYBOARD_STEP : -KEYBOARD_STEP;
19
19
  const currentWidth = inline.width ?? FALLBACK_DEFAULT_WIDTH;
20
20
  const newWidth = keyboardResizeWidth(currentWidth, delta, ctx.editorContentWidth);
21
- // url and title are untouched, so carry the label through and preserve the
22
- // `![alt][label]` form rather than inlining the LRD-resolved url.
21
+ // The url and title are untouched, so keep the label and the `![alt][label]` form
22
+ // rather than writing the resolved url inline.
23
23
  const newFields = {
24
24
  alt: inline.alt ?? '',
25
25
  url: inline.url ?? '',
@@ -32,8 +32,8 @@ export function imageWidgetOnSelectedKey(e, ctx) {
32
32
  ...(inline.label !== undefined ? { label: inline.label } : {})
33
33
  };
34
34
  const newBytes = buildImageEditBytes(inline, node.raw, newFields);
35
- // The rung owning these bytes cannot express the resize, but consume the key
36
- // anyway: handing a Shift+Arrow on would extend the selection out of the image.
35
+ // The inline syntax handler that owns these bytes cannot express the resize, but take
36
+ // the key anyway: passing a Shift+Arrow on would extend the selection out of the image.
37
37
  if (newBytes === null)
38
38
  return true;
39
39
  const newRaw = node.raw.slice(0, ctx.widgetStart) + newBytes + node.raw.slice(ctx.widgetEnd);
@@ -3,9 +3,8 @@ import type { ImageLoadPolicy } from '../../core/inline-render';
3
3
  export interface BuildImageWidgetOpts {
4
4
  resolveImageUrl: (rawUrl: string) => string;
5
5
  imageLoadPolicy?: ImageLoadPolicy;
6
- /** Resolved URLs that failed to load this session, per editor instance. Inline
7
- * rebuild creates a fresh <img> per keystroke, which without this renders
8
- * unbroken until the async `error` re-fires — a flicker on every keystroke. */
6
+ /** URLs that failed to load this session, so a rebuilt <img> renders broken at once instead
7
+ * of flickering until its `error` fires again. */
9
8
  brokenUrlCache: Set<string>;
10
9
  }
11
10
  export declare function buildImageWidget(node: InlineNode, _raw: string, opts: BuildImageWidgetOpts): HTMLSpanElement;
@@ -1,6 +1,6 @@
1
- // The widget contributes its raw bytes via data-source-start/end, which
2
- // `cursor/widget-offset.ts` reads; textContent stays empty so prose
3
- // `textContent === ambientPrefix + raw` still holds.
1
+ // The widget reports its raw bytes through data-source-start and data-source-end, which
2
+ // `cursor/widget-offset.ts` reads; its textContent stays empty so a prose block's
3
+ // `textContent === marker prefix + raw` still holds.
4
4
  import { isAllowedImageSrcScheme } from '../../core/url-policy';
5
5
  import { findSurfacePathForElement } from '../../selection/path-lookup';
6
6
  import { devWarn } from '../../dev-warn';
@@ -8,28 +8,25 @@ import { applyCropToWidget } from './image-crop';
8
8
  export function buildImageWidget(node, _raw, opts) {
9
9
  const widget = document.createElement('span');
10
10
  widget.className = 'md-image-widget';
11
- // `data-inline-widget` is the shared atomic-widget marker read by the cursor
12
- // walker, selection painter and raw reader; `data-image-widget` is image-specific.
11
+ // `data-inline-widget` marks any widget the caret cannot enter, and is read by the
12
+ // caret code, the selection painter and the raw reader; `data-image-widget` is this one.
13
13
  widget.dataset.inlineWidget = '';
14
14
  widget.dataset.imageWidget = '';
15
15
  widget.dataset.sourceStart = String(node.start);
16
16
  widget.dataset.sourceEnd = String(node.end);
17
17
  widget.setAttribute('contenteditable', 'false');
18
- // Select on `click`, never `pointerdown`: a pointerdown listener hijacks a gesture
19
- // STARTING on the image, so no cross-block drag could originate here. Shift-click
20
- // is a cross-block extension the block owns, so decline it.
18
+ // On `click`, not `pointerdown`, so a drag can still start on the image; a Shift-click
19
+ // extends the block's own selection.
21
20
  widget.addEventListener('click', (e) => {
22
21
  if (e.shiftKey)
23
22
  return;
24
- // Resolve the path live rather than baking it at build time: content inserted
25
- // above shifts the block's path without touching its `raw`, so the render memo
26
- // skips a rebuild and a baked path resolves the wrong CST node. The SURFACE door:
27
- // inside a cell the block path stops at the table, whose offsets are cell indices.
23
+ // Resolved at the click: content inserted above moves the block's path without a
24
+ // rebuild of this widget, so a path stored at build time would go stale.
28
25
  const paragraphPath = findSurfacePathForElement(widget);
29
26
  if (!paragraphPath)
30
27
  return;
31
- // Match TextEditableBlock.snapClickToWidgetEdge, which lands the caret at the
32
- // widget's right edge, so Ctrl+Z restores the click's visual landing.
28
+ // Match TextEditableBlock.snapClickToWidgetEdge, which puts the caret at the
29
+ // widget's right edge, so Ctrl+Z restores the caret where the click left it.
33
30
  const event = new CustomEvent('image-widget-select', {
34
31
  bubbles: true,
35
32
  detail: {
@@ -62,9 +59,8 @@ export function buildImageWidget(node, _raw, opts) {
62
59
  img.setAttribute('width', String(node.width));
63
60
  if (node.height !== undefined)
64
61
  img.setAttribute('height', String(node.height));
65
- // A declared `|WxH` box belongs to the author, so it both reserves space before the bytes
66
- // arrive and survives the decode: the attribute pair alone loses to the natural ratio the
67
- // moment `height: auto` has one to read. With a crop the box is a frame the image pans in.
62
+ // A `|WxH` box reserves space before the bytes arrive and survives the decode, where the
63
+ // attributes alone lose to the natural ratio; with a crop it is the frame.
68
64
  if (node.width !== undefined && node.height !== undefined) {
69
65
  img.style.aspectRatio = `${node.width} / ${node.height}`;
70
66
  if (node.crop) {
@@ -75,18 +71,17 @@ export function buildImageWidget(node, _raw, opts) {
75
71
  opts.brokenUrlCache.add(resolvedUrl);
76
72
  widget.classList.add('md-image-broken');
77
73
  };
78
- // Broken means the request finished and produced nothing to lay out, so each site
79
- // establishes completion itself: `complete` here, by definition in the load listener.
74
+ // Broken means the request finished and produced nothing to lay out, so each place
75
+ // below checks that it finished: `complete` here, and the load event itself below.
80
76
  const hasNoIntrinsicSize = () => img.naturalWidth === 0;
81
- // Only a loaded image can be broken: a blocked/placeholder widget leaves src unset,
82
- // and an unset <img> reports complete && naturalWidth === 0 in a real browser.
77
+ // Only a loaded image can be broken: a blocked or placeholder widget leaves src unset,
78
+ // and an unset <img> reports complete with naturalWidth 0 in a real browser.
83
79
  if (img.src && (opts.brokenUrlCache.has(resolvedUrl) || (img.complete && hasNoIntrinsicSize()))) {
84
80
  markBroken();
85
81
  }
86
82
  img.addEventListener('error', markBroken);
87
- // A load event is not proof of success: a 200 the decoder cannot size (truncated
88
- // body, an SVG with no intrinsic dimensions) fires `load` with naturalWidth 0, and
89
- // deferring that to the next rebuild leaves the placeholder a render behind.
83
+ // `load` can fire with no size (a truncated body, an SVG without dimensions), so it is
84
+ // checked here rather than a render later.
90
85
  img.addEventListener('load', () => {
91
86
  if (hasNoIntrinsicSize()) {
92
87
  markBroken();
@@ -1,18 +1,17 @@
1
- /** What an outside-press dismiss handler must NOT treat as outside: the widget itself and
2
- * the overlay chrome anchored to it. One string, because both handlers must move together. */
1
+ import type { WidgetTarget } from '../../selection/primitives';
2
+ import type { SelectionState } from '../../selection/selection-state.svelte';
3
+ /** What a click-outside handler must not count as outside: the widget itself and the overlay
4
+ * controls attached to it. */
3
5
  export declare const IMAGE_CHROME_SELECTOR = "[data-image-widget], [data-image-overlay]";
4
- export interface WidgetTarget {
5
- paragraphPath: number[];
6
- sourceStart: number;
7
- preSelectOffset: number;
8
- }
6
+ /** Whether a press should end the image selection, for both click-outside handlers. A Shift-press
7
+ * on this editor's text is left to that block, which grows a range from the image and ends it. */
8
+ export declare function pressLeavesImage(press: PointerEvent, editorRoot: Element | null): boolean;
9
9
  export interface WidgetSelectionState {
10
10
  getSelected(): WidgetTarget | null;
11
11
  select(target: WidgetTarget): void;
12
+ /** Ends a selected widget; with none selected, touches nothing else the store holds. */
12
13
  clear(): void;
14
+ followEdit(paragraphPath: number[], editEnd: number, delta: number): void;
13
15
  isSelected(paragraphPath: number[], sourceStart: number): boolean;
14
16
  }
15
- export interface CreateWidgetSelectionOpts {
16
- onSelect: () => void;
17
- }
18
- export declare function createWidgetSelectionState(opts: CreateWidgetSelectionOpts): WidgetSelectionState;
17
+ export declare function createWidgetSelectionState(selection: SelectionState): WidgetSelectionState;
@@ -1,26 +1,33 @@
1
- // Image-widget selection is mutually exclusive with caret and cross-block
2
- // selection; `select` fires `onSelect` so the editor shell can clear the others.
1
+ // The image and text-block readers' view of the widget the selection state holds. It keeps no state
2
+ // of its own, so it can't disagree with the store. Interim: it goes once those readers read the
3
+ // selection state themselves.
4
+ import { selectWidgetWhole } from '../../selection/caret-doors';
3
5
  import { pathsEqual } from '../../selection/path-math';
4
- /** What an outside-press dismiss handler must NOT treat as outside: the widget itself and
5
- * the overlay chrome anchored to it. One string, because both handlers must move together. */
6
+ import { findSurfacePathForElement } from '../../selection/path-lookup';
7
+ /** What a click-outside handler must not count as outside: the widget itself and the overlay
8
+ * controls attached to it. */
6
9
  export const IMAGE_CHROME_SELECTOR = '[data-image-widget], [data-image-overlay]';
7
- export function createWidgetSelectionState(opts) {
8
- let selected = $state(null);
10
+ /** Whether a press should end the image selection, for both click-outside handlers. A Shift-press
11
+ * on this editor's text is left to that block, which grows a range from the image and ends it. */
12
+ export function pressLeavesImage(press, editorRoot) {
13
+ const target = press.target instanceof Element ? press.target : null;
14
+ if (target?.closest(IMAGE_CHROME_SELECTOR))
15
+ return false;
16
+ const ownedByBlock = press.shiftKey && !!editorRoot?.contains(target) && findSurfacePathForElement(target) !== null;
17
+ return !ownedByBlock;
18
+ }
19
+ export function createWidgetSelectionState(selection) {
9
20
  return {
10
- getSelected: () => selected,
11
- select: (target) => {
12
- selected = {
13
- paragraphPath: [...target.paragraphPath],
14
- sourceStart: target.sourceStart,
15
- preSelectOffset: target.preSelectOffset
16
- };
17
- opts.onSelect();
18
- },
21
+ getSelected: () => selection.widget,
22
+ select: (target) => selectWidgetWhole(selection, target),
19
23
  clear: () => {
20
- selected = null;
24
+ if (selection.widget !== null)
25
+ selection.clear();
21
26
  },
22
- isSelected: (path, start) => selected !== null &&
23
- selected.sourceStart === start &&
24
- pathsEqual(selected.paragraphPath, path)
27
+ followEdit: (path, editEnd, delta) => selection.followWidgetEdit(path, editEnd, delta),
28
+ isSelected: (path, start) => {
29
+ const widget = selection.widget;
30
+ return (widget !== null && widget.sourceStart === start && pathsEqual(widget.paragraphPath, path));
31
+ }
25
32
  };
26
33
  }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The kind cue: in a mode that hides markers, a keystroke that turns its block into another kind
3
+ * leaves the new kind's name at the block's corner for a moment and says it once to a screen
4
+ * reader, so the change has a visible cause. Only typed text reports here, never a command.
5
+ */
6
+ import type { AnyBlockKind } from '../core/nodes';
7
+ import type { DocumentView } from '../core/node-views';
8
+ import { type PresentationMode } from '../presentation-mode';
9
+ export interface KindCue {
10
+ /** Once `write` settles, cue the block at `path` if its shown kind differs from `before`. */
11
+ afterTypedWrite(write: Promise<unknown>, path: readonly number[], before: AnyBlockKind): Promise<void>;
12
+ /** The label the block at `path` shows, until its fade ends or the block there loses that name. */
13
+ labelAt(path: readonly number[]): string | undefined;
14
+ dismiss(path: readonly number[]): void;
15
+ }
16
+ export interface KindCueDeps {
17
+ getDoc: () => DocumentView;
18
+ getPresentationMode: () => PresentationMode;
19
+ announce: (label: string) => void;
20
+ }
21
+ export declare function createKindCue(deps: KindCueDeps): KindCue;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The kind cue: in a mode that hides markers, a keystroke that turns its block into another kind
3
+ * leaves the new kind's name at the block's corner for a moment and says it once to a screen
4
+ * reader, so the change has a visible cause. Only typed text reports here, never a command.
5
+ */
6
+ import { SvelteMap } from 'svelte/reactivity';
7
+ import { shownKind } from '../core/parsers/heading';
8
+ import { blockAccessibleName } from '../a11y-strings';
9
+ import { hidesMarkers } from '../presentation-mode';
10
+ import { blockNodeAt } from '../tree-operations/node-primitives';
11
+ export function createKindCue(deps) {
12
+ const labels = new SvelteMap();
13
+ const keyOf = (path) => path.join(',');
14
+ return {
15
+ async afterTypedWrite(write, path, before) {
16
+ await write;
17
+ // Source mode draws the markers that explain the change; reading mode cannot type.
18
+ if (!hidesMarkers(deps.getPresentationMode()))
19
+ return;
20
+ const after = blockNodeAt(deps.getDoc(), [...path]);
21
+ if (!after || shownKind(after) === before)
22
+ return;
23
+ const label = blockAccessibleName(after);
24
+ labels.set(keyOf(path), label);
25
+ deps.announce(label);
26
+ },
27
+ // Keyed by path, so the label shows only while the block there still carries that name.
28
+ labelAt(path) {
29
+ const label = labels.get(keyOf(path));
30
+ const node = label === undefined ? undefined : blockNodeAt(deps.getDoc(), [...path]);
31
+ return node && blockAccessibleName(node) === label ? label : undefined;
32
+ },
33
+ dismiss: (path) => void labels.delete(keyOf(path))
34
+ };
35
+ }
@@ -1,19 +1,15 @@
1
1
  <script lang="ts">
2
- import { untrack } from 'svelte';
2
+ import { tick, untrack } from 'svelte';
3
3
  import {
4
4
  LINK_CARD_LABEL,
5
5
  LINK_CARD_OPEN,
6
6
  LINK_CARD_REMOVE,
7
7
  LINK_CARD_URL
8
8
  } from '../../a11y-strings';
9
+ import MenuIcon from '../menu/MenuIcon.svelte';
9
10
 
10
- // Anchored chrome over one link construct. Enter commits; Escape is the host's, since it must
11
- // also close a card the document still has the caret for.
12
- //
13
- // `role="dialog"` WITHOUT `aria-modal`: a click leaves the card beside a live caret and the
14
- // document behind stays the user's to type in, which is what aria-modal would tell a screen
15
- // reader is false. The trap engages on ENTRY (Mod+K, or focus reaching the field), where the
16
- // claim is true, and Escape returns the caret it borrowed.
11
+ // The URL panel over one link. Enter commits; Escape is the host's. Not `aria-modal`: a
12
+ // clicked card sits beside a live caret, and its focus trap starts only once focus enters.
17
13
  let {
18
14
  url,
19
15
  canWrite,
@@ -21,46 +17,50 @@
21
17
  onCommit,
22
18
  onOpenLink,
23
19
  onRemove,
20
+ opensCard,
24
21
  resolveHref
25
22
  }: {
26
23
  url: string;
27
24
  /** Bumped by each keyboard entry; the field takes focus when it changes. */
28
25
  focusEpoch: number;
29
- /** False when the write seam declines this construct outright — a rung-claimed link, which
30
- * no url makes writable. Enter then does nothing rather than silently dropping the edit. */
26
+ /** False when the write path refuses this construct outright: a link owned by an inline
27
+ * syntax handler. Enter then does nothing rather than silently dropping the edit. */
31
28
  canWrite: boolean;
32
29
  onCommit: (url: string) => void;
33
30
  onOpenLink: (url: string, event: MouseEvent) => void;
34
- /** Absent in create mode: there is no construct to remove until Enter mints one. */
31
+ /** Absent in create mode: there is no construct to remove until Enter writes one. */
35
32
  onRemove?: () => void;
36
- /** The render path's own href funnel — a consumer rewrite, then the scheme allowlist.
37
- * Undefined is a blocked scheme, and Open is the sink that must not receive one. */
33
+ /** Whether a keypress is a chord the keymap binds to opening this card. */
34
+ opensCard: (e: KeyboardEvent) => boolean;
35
+ /** The href as the render path resolves it: a consumer rewrite, then the scheme
36
+ * allowlist. Undefined means a blocked scheme, which Open must never be handed. */
38
37
  resolveHref: (url: string) => string | undefined;
39
38
  } = $props();
40
39
 
41
40
  let draft = $state(untrack(() => url));
42
- // The card OPENS on a blocked link so the URL can be repaired, but may not hand that URL
43
- // onward: `onLinkActivate` reaches a shell's own opener, and this is the only door into it
44
- // carrying a URL the user typed rather than the document's. An empty draft resolves as a
45
- // relative URL, so it declines too.
41
+ // Open hands a typed URL to the host's opener, so it gets the render path's scheme check;
42
+ // an empty draft would resolve as a relative URL, so it is refused too.
46
43
  const openable = $derived(draft.trim() === '' ? undefined : resolveHref(draft));
47
44
  let seed = $state(untrack(() => url));
48
45
  let cardEl: HTMLDivElement | undefined = $state();
49
46
  let urlInput: HTMLInputElement | undefined = $state();
50
- // Starts at the click's zero rather than at the prop: a card MOUNTED by the chord has a
51
- // non-zero epoch already, and seeding from the prop would read that as "nothing to do".
47
+ // Starts at the click's zero rather than at the prop: a card mounted by the chord already
48
+ // has a non-zero counter, and starting from the prop would read that as "nothing to do".
52
49
  let focusedEpoch = 0;
53
50
 
54
51
  $effect(() => {
55
52
  if (focusEpoch === focusedEpoch) return;
56
53
  focusedEpoch = focusEpoch;
57
- urlInput?.focus();
58
- urlInput?.select();
54
+ // After the tick, not now: focusing the field before the host has placed the card, while it
55
+ // still sits at the editor's origin, scrolls the viewport to the top of the document.
56
+ void tick().then(() => {
57
+ urlInput?.focus();
58
+ urlInput?.select();
59
+ });
59
60
  });
60
61
 
61
- // The card follows the document while it is open: an undo — or any write landing from outside
62
- // this gesture — moves the destination past the draft, and Enter would put the old bytes back.
63
- // The in-flight draft is discarded rather than a committed change reverted.
62
+ // A write from outside the card (an undo) discards the draft, or Enter would put the earlier
63
+ // bytes back.
64
64
  $effect(() => {
65
65
  if (url === seed) return;
66
66
  seed = url;
@@ -91,12 +91,9 @@
91
91
  stepTrap(e.shiftKey);
92
92
  return;
93
93
  }
94
- // The entry chord re-asserts the card the focus is already inside, so it is a no-op here —
95
- // but a consumed one: no surface the editor owns hands `Mod+K` back to the browser.
96
- // CapsLock uppercases the key without a Shift modifier, which is still the plain chord.
97
- if ((e.ctrlKey || e.metaKey) && !e.altKey && !e.shiftKey && (e.key === 'k' || e.key === 'K')) {
98
- e.preventDefault();
99
- }
94
+ // The chord that opens the card does nothing inside it, but is still consumed so the
95
+ // browser never runs its own action for that chord.
96
+ if (opensCard(e)) e.preventDefault();
100
97
  }
101
98
 
102
99
  function handleUrlKeyDown(e: KeyboardEvent): void {
@@ -117,74 +114,128 @@
117
114
  tabindex="-1"
118
115
  onkeydown={handleKeyDown}
119
116
  >
120
- <label>
121
- <span>URL</span>
117
+ <label class="md-link-card-field">
118
+ <span class="md-link-card-caption">URL</span>
122
119
  <input
123
120
  bind:this={urlInput}
124
121
  bind:value={draft}
125
122
  type="text"
126
123
  aria-label={LINK_CARD_URL}
124
+ placeholder="https://"
127
125
  onkeydown={handleUrlKeyDown}
128
126
  />
129
127
  </label>
130
128
  <div class="md-link-card-actions">
131
129
  <button
132
130
  type="button"
131
+ class="md-link-card-btn"
132
+ aria-label={LINK_CARD_OPEN}
133
+ title={LINK_CARD_OPEN}
133
134
  disabled={openable === undefined}
134
- onclick={(e) => openable !== undefined && onOpenLink(openable, e)}>{LINK_CARD_OPEN}</button
135
+ onclick={(e) => openable !== undefined && onOpenLink(openable, e)}
135
136
  >
137
+ <MenuIcon name="external-link" />
138
+ </button>
136
139
  {#if onRemove}
137
- <button type="button" onclick={onRemove}>{LINK_CARD_REMOVE}</button>
140
+ <button
141
+ type="button"
142
+ class="md-link-card-btn"
143
+ aria-label={LINK_CARD_REMOVE}
144
+ title={LINK_CARD_REMOVE}
145
+ onclick={onRemove}
146
+ >
147
+ <MenuIcon name="unlink" />
148
+ </button>
138
149
  {/if}
139
150
  </div>
140
151
  </div>
141
152
 
142
153
  <style>
154
+ /* Styled like the editor's menus (`.md-menu`, editor.css) and the image alt field, so the card
155
+ reads as one of the editor's popovers rather than a form. */
143
156
  .md-link-card {
144
157
  position: absolute;
145
158
  top: 0;
146
159
  left: 0;
147
160
  z-index: 100;
148
- display: grid;
161
+ display: flex;
162
+ align-items: flex-end;
149
163
  gap: 6px;
150
- min-width: 280px;
151
- padding: 8px;
152
- border: 1px solid var(--color-ui-muted, #a4a4a4);
153
- border-radius: 4px;
154
- background: var(--color-bg-elevated, #2a2a2a);
155
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
164
+ width: 300px;
165
+ padding: 8px 8px 8px 10px;
166
+ box-sizing: border-box;
167
+ background: var(--color-bg, #2c2c2a);
168
+ border: 1px solid var(--color-border, #3e3e3b);
169
+ border-radius: 8px;
170
+ box-shadow: var(--menu-shadow, 0 12px 32px rgba(0, 0, 0, 0.5), 0 2px 8px rgba(0, 0, 0, 0.35));
171
+ font-family: var(--font-ui, system-ui, sans-serif);
172
+ font-size: 13px;
173
+ line-height: 1.4;
174
+ color: var(--color-text-primary, #e8e8e5);
156
175
  }
157
- label {
158
- display: grid;
159
- grid-template-columns: 40px 1fr;
160
- align-items: center;
161
- gap: 8px;
176
+ .md-link-card-field {
177
+ flex: 1;
178
+ min-width: 0;
179
+ display: flex;
180
+ flex-direction: column;
181
+ gap: 5px;
182
+ }
183
+ .md-link-card-caption {
184
+ font-size: 10.5px;
185
+ font-weight: 600;
186
+ letter-spacing: 0.06em;
187
+ text-transform: uppercase;
188
+ color: var(--color-text-muted, #aaaaaa);
162
189
  }
163
- input {
164
- padding: 4px 6px;
165
- border: 1px solid var(--color-ui-muted, #a4a4a4);
166
- border-radius: var(--radius-ui, 3px);
167
- background: var(--color-surface, #2d3033);
168
- color: var(--color-text-secondary, #eee);
190
+ /* Underlined, not boxed: a box inside the rounded card would read as a frame in a frame. */
191
+ .md-link-card-field input {
192
+ width: 100%;
193
+ box-sizing: border-box;
194
+ background: transparent;
195
+ color: var(--color-text-primary, #e8e8e5);
196
+ border: none;
197
+ border-bottom: 1px solid var(--color-border, #3e3e3b);
198
+ border-radius: 0;
199
+ padding: 3px 1px 5px;
169
200
  font-family: inherit;
170
- font-size: 12px;
201
+ font-size: 13px;
202
+ line-height: 1.4;
203
+ outline: none;
204
+ transition: border-color 120ms ease-out;
205
+ }
206
+ .md-link-card-field input:focus {
207
+ border-bottom-color: var(--color-accent, #567b67);
208
+ }
209
+ .md-link-card-field input::placeholder {
210
+ color: var(--color-text-muted, #aaaaaa);
171
211
  }
172
212
  .md-link-card-actions {
173
213
  display: flex;
174
- gap: 6px;
175
- justify-content: flex-end;
214
+ gap: 2px;
215
+ /* The buttons sit level with the input's rule, not with the caption. */
216
+ padding-bottom: 1px;
176
217
  }
177
- button {
178
- padding: 3px 8px;
179
- border: 1px solid var(--color-ui-muted, #a4a4a4);
180
- border-radius: var(--radius-ui, 3px);
218
+ .md-link-card-btn {
219
+ display: inline-flex;
220
+ align-items: center;
221
+ justify-content: center;
222
+ width: 26px;
223
+ height: 26px;
224
+ padding: 0;
225
+ border: none;
226
+ border-radius: 6px;
181
227
  background: transparent;
182
- color: var(--color-text-secondary, #eee);
183
- font: inherit;
184
- font-size: 12px;
228
+ color: var(--color-ui-muted, #93938d);
185
229
  cursor: pointer;
186
230
  }
187
- button:hover {
188
- background: var(--color-ui-faint, rgba(255, 255, 255, 0.07));
231
+ .md-link-card-btn:hover:not(:disabled),
232
+ .md-link-card-btn:focus-visible {
233
+ background: var(--menu-item-hover, rgba(255, 255, 255, 0.07));
234
+ color: var(--color-text-primary, #e8e8e5);
235
+ outline: none;
236
+ }
237
+ .md-link-card-btn:disabled {
238
+ opacity: 0.4;
239
+ cursor: default;
189
240
  }
190
241
  </style>
@@ -2,15 +2,17 @@ type $$ComponentProps = {
2
2
  url: string;
3
3
  /** Bumped by each keyboard entry; the field takes focus when it changes. */
4
4
  focusEpoch: number;
5
- /** False when the write seam declines this construct outright — a rung-claimed link, which
6
- * no url makes writable. Enter then does nothing rather than silently dropping the edit. */
5
+ /** False when the write path refuses this construct outright: a link owned by an inline
6
+ * syntax handler. Enter then does nothing rather than silently dropping the edit. */
7
7
  canWrite: boolean;
8
8
  onCommit: (url: string) => void;
9
9
  onOpenLink: (url: string, event: MouseEvent) => void;
10
- /** Absent in create mode: there is no construct to remove until Enter mints one. */
10
+ /** Absent in create mode: there is no construct to remove until Enter writes one. */
11
11
  onRemove?: () => void;
12
- /** The render path's own href funnel — a consumer rewrite, then the scheme allowlist.
13
- * Undefined is a blocked scheme, and Open is the sink that must not receive one. */
12
+ /** Whether a keypress is a chord the keymap binds to opening this card. */
13
+ opensCard: (e: KeyboardEvent) => boolean;
14
+ /** The href as the render path resolves it: a consumer rewrite, then the scheme
15
+ * allowlist. Undefined means a blocked scheme, which Open must never be handed. */
14
16
  resolveHref: (url: string) => string | undefined;
15
17
  };
16
18
  declare const LinkCard: import("svelte").Component<$$ComponentProps, {}, "">;