@voithos-labs/aragonite 0.10.4 → 0.10.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1021) hide show
  1. package/README.md +2 -2
  2. package/dist/a11y-strings.d.ts +11 -5
  3. package/dist/a11y-strings.js +60 -5
  4. package/dist/action-contracts.d.ts +242 -155
  5. package/dist/action-contracts.js +2 -2
  6. package/dist/active-editor.d.ts +3 -3
  7. package/dist/active-editor.js +8 -9
  8. package/dist/ambient/ambient-dom.d.ts +2 -5
  9. package/dist/ambient/ambient-dom.js +16 -62
  10. package/dist/assert.js +6 -5
  11. package/dist/block-component.d.ts +135 -109
  12. package/dist/block-component.js +30 -22
  13. package/dist/block-id.d.ts +6 -10
  14. package/dist/block-id.js +25 -14
  15. package/dist/bounded-memo.d.ts +5 -5
  16. package/dist/bounded-memo.js +6 -6
  17. package/dist/components/BlockDragHandle.svelte +12 -21
  18. package/dist/components/BlockHost.svelte +56 -134
  19. package/dist/components/BlockList.svelte +22 -19
  20. package/dist/components/DecorationOverlay.svelte +9 -10
  21. package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
  22. package/dist/components/Editor.svelte +603 -1126
  23. package/dist/components/Editor.svelte.d.ts +9 -20
  24. package/dist/components/GapCaret.svelte +26 -59
  25. package/dist/components/SelectionOverlay.svelte +26 -51
  26. package/dist/components/SelectionOverlay.svelte.d.ts +5 -3
  27. package/dist/components/TailInsert.svelte +8 -55
  28. package/dist/components/TailInsert.svelte.d.ts +4 -6
  29. package/dist/components/block-content-selector.d.ts +11 -11
  30. package/dist/components/block-content-selector.js +11 -11
  31. package/dist/components/block-el-lookup.d.ts +6 -0
  32. package/dist/components/block-el-lookup.js +27 -0
  33. package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
  34. package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
  35. package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
  36. package/dist/components/blocks/code/CodeBlock.svelte +255 -276
  37. package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
  38. package/dist/components/blocks/code/CodeBlockRail.svelte +72 -87
  39. package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
  40. package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
  41. package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
  42. package/dist/components/blocks/code/code-bootstrap.js +29 -34
  43. package/dist/components/blocks/code/code-context-actions.js +5 -4
  44. package/dist/components/blocks/code/code-enter.js +2 -2
  45. package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
  46. package/dist/components/blocks/code/code-fence-boundary.js +40 -66
  47. package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
  48. package/dist/components/blocks/code/code-fence-exit.js +24 -25
  49. package/dist/components/blocks/code/code-indent.d.ts +2 -2
  50. package/dist/components/blocks/code/code-indent.js +4 -7
  51. package/dist/components/blocks/code/code-languages.d.ts +16 -12
  52. package/dist/components/blocks/code/code-languages.js +57 -39
  53. package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
  54. package/dist/components/blocks/code/code-paste-surface.js +9 -18
  55. package/dist/components/blocks/code/code-renderer.d.ts +21 -5
  56. package/dist/components/blocks/code/code-renderer.js +90 -125
  57. package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
  58. package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
  59. package/dist/components/blocks/directive/activate-directives.js +18 -13
  60. package/dist/components/blocks/editable-leaf.d.ts +50 -74
  61. package/dist/components/blocks/editable-leaf.js +141 -203
  62. package/dist/components/blocks/editable-surface.d.ts +96 -100
  63. package/dist/components/blocks/editable-surface.js +101 -109
  64. package/dist/components/blocks/list/ListBlock.svelte +45 -90
  65. package/dist/components/blocks/list/ListItemBlock.svelte +93 -147
  66. package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +1 -0
  67. package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
  68. package/dist/components/blocks/list/task-checkbox.js +12 -7
  69. package/dist/components/blocks/plain-text-backend.d.ts +4 -20
  70. package/dist/components/blocks/plain-text-backend.js +9 -43
  71. package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
  72. package/dist/components/blocks/surface-wiring.svelte.js +15 -34
  73. package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
  74. package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
  75. package/dist/components/blocks/table/TableBlock.svelte +100 -165
  76. package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
  77. package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
  78. package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
  79. package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
  80. package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
  81. package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
  82. package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
  83. package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
  84. package/dist/components/blocks/table/cell-pointer.js +49 -71
  85. package/dist/components/blocks/table/cell-render.d.ts +24 -29
  86. package/dist/components/blocks/table/cell-render.js +29 -31
  87. package/dist/components/blocks/table/selected-cells.d.ts +7 -7
  88. package/dist/components/blocks/table/selected-cells.js +9 -13
  89. package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
  90. package/dist/components/blocks/table/table-caret-at-point.js +5 -5
  91. package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
  92. package/dist/components/blocks/table/table-cell-paste.js +27 -43
  93. package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
  94. package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
  95. package/dist/components/blocks/table/table-menu-model.js +6 -10
  96. package/dist/components/blocks/table/table-navigation.js +2 -2
  97. package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
  98. package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
  99. package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
  100. package/dist/components/blocks/text/auto-pair-record.js +51 -0
  101. package/dist/components/blocks/text/click-snap-guard.d.ts +8 -6
  102. package/dist/components/blocks/text/click-snap-guard.js +10 -7
  103. package/dist/components/blocks/text/composition-seat.d.ts +17 -14
  104. package/dist/components/blocks/text/composition-seat.js +11 -11
  105. package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
  106. package/dist/components/blocks/text/construct-edge-delete.js +50 -65
  107. package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
  108. package/dist/components/blocks/text/construct-reveal.js +13 -14
  109. package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
  110. package/dist/components/blocks/text/delimiter-autopair.js +87 -103
  111. package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
  112. package/dist/components/blocks/text/edge-policy-dispatch.js +150 -181
  113. package/dist/components/blocks/text/edge-seat.d.ts +17 -26
  114. package/dist/components/blocks/text/edge-seat.js +43 -70
  115. package/dist/components/blocks/text/link-at-point.d.ts +9 -9
  116. package/dist/components/blocks/text/link-at-point.js +12 -15
  117. package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
  118. package/dist/components/blocks/text/live-join-seam.js +75 -112
  119. package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
  120. package/dist/components/blocks/text/live-selection-edit.js +32 -108
  121. package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
  122. package/dist/components/blocks/text/live-split-rebalance.js +50 -67
  123. package/dist/components/blocks/text/marker-completion.d.ts +7 -12
  124. package/dist/components/blocks/text/marker-completion.js +17 -10
  125. package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
  126. package/dist/components/blocks/text/pending-mark-insert.js +30 -49
  127. package/dist/components/blocks/text/screen-diff.d.ts +5 -15
  128. package/dist/components/blocks/text/screen-diff.js +5 -19
  129. package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
  130. package/dist/components/blocks/text/text-clipboard.js +27 -32
  131. package/dist/components/blocks/text/text-keydown.d.ts +20 -30
  132. package/dist/components/blocks/text/text-keydown.js +54 -51
  133. package/dist/components/blocks/text/text-render.d.ts +25 -35
  134. package/dist/components/blocks/text/text-render.js +82 -61
  135. package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
  136. package/dist/components/blocks/text/widget-adjacency.js +17 -17
  137. package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
  138. package/dist/components/blocks/text/widget-interaction.js +212 -199
  139. package/dist/components/blocks/widget-portal.d.ts +20 -29
  140. package/dist/components/blocks/widget-portal.js +16 -14
  141. package/dist/components/built-in-blocks.d.ts +3 -4
  142. package/dist/components/built-in-blocks.js +17 -18
  143. package/dist/components/drag-handle.d.ts +12 -35
  144. package/dist/components/drag-handle.js +22 -68
  145. package/dist/components/editor-built-ins.d.ts +1 -0
  146. package/dist/components/editor-built-ins.js +16 -0
  147. package/dist/components/editor-root-clipboard.d.ts +6 -6
  148. package/dist/components/editor-root-clipboard.js +16 -27
  149. package/dist/components/editor-root-document-swap.d.ts +49 -0
  150. package/dist/components/editor-root-document-swap.js +54 -0
  151. package/dist/components/editor-root-focus.d.ts +5 -4
  152. package/dist/components/editor-root-focus.js +51 -22
  153. package/dist/components/editor-root-focused-surface.d.ts +35 -0
  154. package/dist/components/editor-root-focused-surface.js +65 -0
  155. package/dist/components/editor-root-geometry.d.ts +15 -24
  156. package/dist/components/editor-root-geometry.js +27 -31
  157. package/dist/components/editor-root-gestures.d.ts +39 -0
  158. package/dist/components/editor-root-gestures.js +189 -0
  159. package/dist/components/editor-root-keydown.d.ts +10 -25
  160. package/dist/components/editor-root-keydown.js +19 -43
  161. package/dist/components/editor-root-listeners.d.ts +22 -24
  162. package/dist/components/editor-root-listeners.js +49 -24
  163. package/dist/components/editor-root-menus.d.ts +51 -0
  164. package/dist/components/editor-root-menus.js +147 -0
  165. package/dist/components/editor-root-mode-flip.d.ts +16 -11
  166. package/dist/components/editor-root-mode-flip.js +36 -34
  167. package/dist/components/editor-root-scroll-host.d.ts +22 -0
  168. package/dist/components/editor-root-scroll-host.js +34 -0
  169. package/dist/components/editor-root-test-surface.d.ts +48 -0
  170. package/dist/components/editor-root-test-surface.js +6 -0
  171. package/dist/components/image/ImageOverlayHost.svelte +44 -35
  172. package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
  173. package/dist/components/image/ImageProperties.svelte +37 -41
  174. package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
  175. package/dist/components/image/ImageResizeHandles.svelte +14 -26
  176. package/dist/components/image/image-crop.d.ts +5 -11
  177. package/dist/components/image/image-crop.js +5 -11
  178. package/dist/components/image/image-edit-commit.d.ts +19 -16
  179. package/dist/components/image/image-edit-commit.js +74 -38
  180. package/dist/components/image/image-resize.d.ts +2 -5
  181. package/dist/components/image/image-resize.js +3 -6
  182. package/dist/components/image/image-widget-editing.d.ts +3 -3
  183. package/dist/components/image/image-widget-editing.js +9 -9
  184. package/dist/components/image/widget-dom.d.ts +2 -3
  185. package/dist/components/image/widget-dom.js +19 -24
  186. package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
  187. package/dist/components/image/widget-selection-state.svelte.js +26 -19
  188. package/dist/components/kind-cue.svelte.d.ts +21 -0
  189. package/dist/components/kind-cue.svelte.js +35 -0
  190. package/dist/components/link-card/LinkCard.svelte +115 -64
  191. package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
  192. package/dist/components/link-card/LinkCardHost.svelte +42 -33
  193. package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
  194. package/dist/components/link-card/link-card-commit.d.ts +16 -19
  195. package/dist/components/link-card/link-card-commit.js +21 -30
  196. package/dist/components/link-card/link-card-entry.d.ts +13 -23
  197. package/dist/components/link-card/link-card-entry.js +16 -24
  198. package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
  199. package/dist/components/link-card/link-card-state.svelte.js +2 -2
  200. package/dist/components/lrd-map-gate.d.ts +4 -11
  201. package/dist/components/lrd-map-gate.js +5 -11
  202. package/dist/components/menu/BlockMenu.svelte +20 -81
  203. package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
  204. package/dist/components/menu/InlineMenuHost.svelte +191 -0
  205. package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
  206. package/dist/components/menu/MenuIcon.svelte +3 -103
  207. package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
  208. package/dist/components/menu/SelectionToolbar.svelte +30 -35
  209. package/dist/components/menu/SelectionToolbar.svelte.d.ts +3 -5
  210. package/dist/components/menu/clipboard-actions.d.ts +3 -4
  211. package/dist/components/menu/clipboard-actions.js +3 -4
  212. package/dist/components/menu/default-context-actions.d.ts +4 -13
  213. package/dist/components/menu/default-context-actions.js +49 -67
  214. package/dist/components/menu/flyout-placement.d.ts +2 -2
  215. package/dist/components/menu/flyout-placement.js +2 -2
  216. package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
  217. package/dist/components/menu/menu-presence.svelte.js +19 -0
  218. package/dist/components/paste-image-arm.d.ts +6 -11
  219. package/dist/components/paste-image-arm.js +11 -18
  220. package/dist/components/portal.d.ts +2 -5
  221. package/dist/components/portal.js +4 -7
  222. package/dist/core/directive/activate.d.ts +4 -5
  223. package/dist/core/directive/activate.js +8 -9
  224. package/dist/core/directive/container-opener.js +13 -12
  225. package/dist/core/directive/grammar.d.ts +2 -5
  226. package/dist/core/directive/grammar.js +10 -10
  227. package/dist/core/directive/kinds.d.ts +4 -7
  228. package/dist/core/directive/kinds.js +14 -16
  229. package/dist/core/directive/registry.d.ts +12 -9
  230. package/dist/core/directive/registry.js +19 -20
  231. package/dist/core/directive/text-recognizer.d.ts +3 -2
  232. package/dist/core/directive/text-recognizer.js +5 -9
  233. package/dist/core/escapable.d.ts +1 -5
  234. package/dist/core/escapable.js +1 -5
  235. package/dist/core/inline/backticks.d.ts +3 -4
  236. package/dist/core/inline/backticks.js +3 -4
  237. package/dist/core/inline/character-refs.js +2 -1
  238. package/dist/core/inline/destination-bytes.d.ts +6 -3
  239. package/dist/core/inline/destination-bytes.js +50 -8
  240. package/dist/core/inline/entity-widget.d.ts +4 -3
  241. package/dist/core/inline/entity-widget.js +6 -6
  242. package/dist/core/inline/format-toggle.d.ts +22 -28
  243. package/dist/core/inline/format-toggle.js +97 -129
  244. package/dist/core/inline/html-entities.d.ts +2 -3
  245. package/dist/core/inline/html-entities.js +2 -3
  246. package/dist/core/inline/html-tag-grammar.js +6 -2
  247. package/dist/core/inline/image-dimensions.d.ts +2 -0
  248. package/dist/core/inline/image-dimensions.js +19 -2
  249. package/dist/core/inline/image-source-bytes.d.ts +11 -0
  250. package/dist/core/inline/image-source-bytes.js +71 -0
  251. package/dist/core/inline/index.d.ts +28 -21
  252. package/dist/core/inline/index.js +56 -34
  253. package/dist/core/inline/inline-cache.d.ts +12 -15
  254. package/dist/core/inline/inline-cache.js +11 -14
  255. package/dist/core/inline/inline-widgets.d.ts +54 -75
  256. package/dist/core/inline/inline-widgets.js +54 -62
  257. package/dist/core/inline/link-destination.d.ts +31 -0
  258. package/dist/core/inline/link-destination.js +129 -0
  259. package/dist/core/inline/link-reference-resolver.d.ts +8 -6
  260. package/dist/core/inline/link-reference-resolver.js +10 -6
  261. package/dist/core/inline/link-source-bytes.d.ts +31 -0
  262. package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
  263. package/dist/core/inline/live-edit/read-back.d.ts +29 -0
  264. package/dist/core/inline/live-edit/read-back.js +50 -0
  265. package/dist/core/inline/picture.d.ts +10 -0
  266. package/dist/core/inline/picture.js +40 -0
  267. package/dist/core/inline/scan/autolinks.d.ts +7 -8
  268. package/dist/core/inline/scan/autolinks.js +80 -59
  269. package/dist/core/inline/scan/brackets.d.ts +2 -2
  270. package/dist/core/inline/scan/brackets.js +6 -103
  271. package/dist/core/inline/scan/code-spans.d.ts +4 -0
  272. package/dist/core/inline/scan/code-spans.js +8 -0
  273. package/dist/core/inline/scan/emphasis.js +10 -14
  274. package/dist/core/inline/scan/index.d.ts +3 -1
  275. package/dist/core/inline/scan/index.js +32 -33
  276. package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
  277. package/dist/core/inline/scan/plugin-syntax.js +75 -89
  278. package/dist/core/inline/scan/scan-state.d.ts +2 -0
  279. package/dist/core/inline/scan/scan-state.js +1 -0
  280. package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
  281. package/dist/core/inline/scan/simple-nodes.js +2 -5
  282. package/dist/core/inline/scan/triggers.d.ts +17 -0
  283. package/dist/core/inline/scan/triggers.js +26 -0
  284. package/dist/core/inline/scan/url.js +8 -10
  285. package/dist/core/inline/transparency.d.ts +2 -1
  286. package/dist/core/inline/transparency.js +31 -15
  287. package/dist/core/inline/visibility.d.ts +30 -49
  288. package/dist/core/inline/visibility.js +31 -49
  289. package/dist/core/inline/walk.d.ts +4 -10
  290. package/dist/core/inline/walk.js +4 -10
  291. package/dist/core/inline-render.d.ts +22 -27
  292. package/dist/core/inline-render.js +51 -60
  293. package/dist/core/lines.d.ts +67 -26
  294. package/dist/core/lines.js +164 -33
  295. package/dist/core/metadata-parity.d.ts +9 -0
  296. package/dist/core/metadata-parity.js +25 -0
  297. package/dist/core/node-views.d.ts +7 -6
  298. package/dist/core/node-views.js +5 -5
  299. package/dist/core/nodes.d.ts +34 -44
  300. package/dist/core/nodes.js +4 -12
  301. package/dist/core/parser.d.ts +27 -34
  302. package/dist/core/parser.js +53 -67
  303. package/dist/core/parsers/blockquote.d.ts +5 -8
  304. package/dist/core/parsers/blockquote.js +11 -10
  305. package/dist/core/parsers/built-in-openers.d.ts +2 -5
  306. package/dist/core/parsers/built-in-openers.js +5 -8
  307. package/dist/core/parsers/fence-syntax.d.ts +36 -7
  308. package/dist/core/parsers/fence-syntax.js +61 -11
  309. package/dist/core/parsers/fenced-code.d.ts +16 -0
  310. package/dist/core/parsers/fenced-code.js +16 -15
  311. package/dist/core/parsers/heading.d.ts +19 -2
  312. package/dist/core/parsers/heading.js +50 -2
  313. package/dist/core/parsers/html-block.d.ts +3 -6
  314. package/dist/core/parsers/html-block.js +10 -11
  315. package/dist/core/parsers/indented-code.d.ts +1 -1
  316. package/dist/core/parsers/indented-code.js +2 -8
  317. package/dist/core/parsers/link-reference.d.ts +5 -3
  318. package/dist/core/parsers/link-reference.js +116 -120
  319. package/dist/core/parsers/list.d.ts +12 -5
  320. package/dist/core/parsers/list.js +53 -36
  321. package/dist/core/parsers/paragraph.d.ts +3 -3
  322. package/dist/core/parsers/paragraph.js +14 -5
  323. package/dist/core/parsers/table-completion.d.ts +2 -5
  324. package/dist/core/parsers/table-completion.js +7 -10
  325. package/dist/core/parsers/table.d.ts +8 -8
  326. package/dist/core/parsers/table.js +23 -26
  327. package/dist/core/parsers/thematic-break.js +15 -14
  328. package/dist/core/paths.d.ts +13 -0
  329. package/dist/core/paths.js +31 -0
  330. package/dist/core/terminator-escalation.d.ts +0 -7
  331. package/dist/core/terminator-escalation.js +5 -8
  332. package/dist/core/url-policy.d.ts +2 -5
  333. package/dist/core/url-policy.js +8 -12
  334. package/dist/cursor/caret-memory.d.ts +34 -0
  335. package/dist/cursor/caret-memory.js +82 -0
  336. package/dist/cursor/coordinate-spaces.d.ts +26 -19
  337. package/dist/cursor/coordinate-spaces.js +32 -20
  338. package/dist/cursor/dom-walk.d.ts +7 -13
  339. package/dist/cursor/dom-walk.js +7 -13
  340. package/dist/cursor/edge-affinity.d.ts +7 -35
  341. package/dist/cursor/edge-affinity.js +13 -44
  342. package/dist/cursor/focused-caret.d.ts +6 -8
  343. package/dist/cursor/focused-caret.js +7 -16
  344. package/dist/cursor/height-model.d.ts +3 -3
  345. package/dist/cursor/height-model.js +5 -5
  346. package/dist/cursor/height-oracle.d.ts +10 -6
  347. package/dist/cursor/height-oracle.js +26 -74
  348. package/dist/cursor/observe-resize.d.ts +13 -0
  349. package/dist/cursor/observe-resize.js +43 -0
  350. package/dist/cursor/overlay-rects.d.ts +2 -5
  351. package/dist/cursor/overlay-rects.js +2 -5
  352. package/dist/cursor/overlay-remeasure.d.ts +6 -7
  353. package/dist/cursor/overlay-remeasure.js +10 -14
  354. package/dist/cursor/pending-marks.d.ts +7 -9
  355. package/dist/cursor/pending-marks.js +6 -27
  356. package/dist/cursor/point-offset.d.ts +16 -10
  357. package/dist/cursor/point-offset.js +60 -25
  358. package/dist/cursor/reveal-source.d.ts +7 -11
  359. package/dist/cursor/reveal-source.js +10 -18
  360. package/dist/cursor/scroll-ancestors.d.ts +9 -20
  361. package/dist/cursor/scroll-ancestors.js +14 -26
  362. package/dist/cursor/scroll-owner.d.ts +92 -0
  363. package/dist/cursor/scroll-owner.js +283 -0
  364. package/dist/cursor/scrollport.d.ts +14 -15
  365. package/dist/cursor/scrollport.js +7 -13
  366. package/dist/cursor/sticky-column.d.ts +6 -29
  367. package/dist/cursor/sticky-column.js +6 -49
  368. package/dist/cursor/sticky-measure.d.ts +14 -9
  369. package/dist/cursor/sticky-measure.js +99 -49
  370. package/dist/cursor/surface-backend.d.ts +41 -0
  371. package/dist/cursor/surface-backend.js +78 -0
  372. package/dist/cursor/typography-estimates.d.ts +3 -3
  373. package/dist/cursor/typography-estimates.js +3 -3
  374. package/dist/cursor/visual-lines.d.ts +25 -14
  375. package/dist/cursor/visual-lines.js +45 -46
  376. package/dist/cursor/widget-edge-snap.d.ts +10 -15
  377. package/dist/cursor/widget-edge-snap.js +13 -12
  378. package/dist/cursor/widget-offset.d.ts +110 -104
  379. package/dist/cursor/widget-offset.js +344 -179
  380. package/dist/debug/diagnostics-report.d.ts +6 -6
  381. package/dist/debug/diagnostics-report.js +5 -5
  382. package/dist/debug/dump-tree.js +2 -2
  383. package/dist/debug/editor-diagnostics.d.ts +15 -0
  384. package/dist/debug/editor-diagnostics.js +33 -0
  385. package/dist/debug/inspect.d.ts +2 -2
  386. package/dist/debug/inspect.js +4 -4
  387. package/dist/debug/interaction-trace.d.ts +14 -15
  388. package/dist/debug/interaction-trace.js +19 -20
  389. package/dist/debug/operations-log.d.ts +1 -1
  390. package/dist/debug/operations-log.js +1 -1
  391. package/dist/decorations/buckets.d.ts +6 -12
  392. package/dist/decorations/buckets.js +4 -11
  393. package/dist/decorations/decoration-state.svelte.d.ts +2 -3
  394. package/dist/decorations/decoration-state.svelte.js +24 -26
  395. package/dist/decorations/island-dom.d.ts +10 -18
  396. package/dist/decorations/island-dom.js +25 -50
  397. package/dist/decorations/reserved-attrs.d.ts +6 -8
  398. package/dist/decorations/reserved-attrs.js +30 -17
  399. package/dist/decorations/types.d.ts +6 -7
  400. package/dist/decorations/types.js +2 -1
  401. package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
  402. package/dist/decorations/use-block-decorations.svelte.js +71 -0
  403. package/dist/decorations/widget-dom.d.ts +3 -3
  404. package/dist/decorations/widget-dom.js +5 -5
  405. package/dist/dev-warn.d.ts +5 -2
  406. package/dist/dev-warn.js +16 -4
  407. package/dist/editor-actions/ancestry-folds.d.ts +9 -14
  408. package/dist/editor-actions/ancestry-folds.js +13 -18
  409. package/dist/editor-actions/block-edit-core.d.ts +49 -22
  410. package/dist/editor-actions/block-edit-core.js +279 -151
  411. package/dist/editor-actions/block-edit-scope.d.ts +63 -50
  412. package/dist/editor-actions/block-edit-scope.js +100 -48
  413. package/dist/editor-actions/block-edit.d.ts +2 -3
  414. package/dist/editor-actions/block-edit.js +14 -90
  415. package/dist/editor-actions/commit/history.d.ts +4 -4
  416. package/dist/editor-actions/commit/history.js +33 -34
  417. package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
  418. package/dist/editor-actions/commit/reading-write-gate.js +56 -0
  419. package/dist/editor-actions/commit/text-batch.d.ts +7 -11
  420. package/dist/editor-actions/commit/text-batch.js +6 -7
  421. package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
  422. package/dist/editor-actions/commit/undo-controller.js +346 -216
  423. package/dist/editor-actions/container-block-component.d.ts +32 -51
  424. package/dist/editor-actions/container-block-component.js +66 -92
  425. package/dist/editor-actions/container-edit.d.ts +4 -2
  426. package/dist/editor-actions/container-edit.js +14 -44
  427. package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
  428. package/dist/editor-actions/container-exit-overrides.js +19 -21
  429. package/dist/editor-actions/deps.d.ts +25 -32
  430. package/dist/editor-actions/enter-completion.d.ts +12 -15
  431. package/dist/editor-actions/enter-completion.js +49 -51
  432. package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
  433. package/dist/editor-actions/focus/focus-dispatch.js +28 -50
  434. package/dist/editor-actions/focus/focus-landing.d.ts +8 -11
  435. package/dist/editor-actions/focus/focus-landing.js +15 -14
  436. package/dist/editor-actions/focus/focus.d.ts +3 -2
  437. package/dist/editor-actions/focus/focus.js +42 -59
  438. package/dist/editor-actions/index.d.ts +4 -3
  439. package/dist/editor-actions/index.js +5 -4
  440. package/dist/editor-actions/inline-range-commit.d.ts +18 -16
  441. package/dist/editor-actions/inline-range-commit.js +45 -54
  442. package/dist/editor-actions/leaf-write.d.ts +11 -0
  443. package/dist/editor-actions/leaf-write.js +102 -0
  444. package/dist/editor-actions/list-context.d.ts +9 -10
  445. package/dist/editor-actions/list-context.js +115 -110
  446. package/dist/editor-actions/list-overrides.d.ts +13 -5
  447. package/dist/editor-actions/list-overrides.js +36 -12
  448. package/dist/editor-actions/merge-fallback.d.ts +10 -16
  449. package/dist/editor-actions/merge-fallback.js +11 -22
  450. package/dist/editor-actions/nested/container-actions.d.ts +37 -0
  451. package/dist/editor-actions/nested/container-actions.js +42 -0
  452. package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
  453. package/dist/editor-actions/nested/emptied-container.js +5 -0
  454. package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
  455. package/dist/editor-actions/nested/nested-actions.js +17 -15
  456. package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
  457. package/dist/editor-actions/nested/nested-block-edit.js +40 -134
  458. package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
  459. package/dist/editor-actions/nested/nested-focus.js +33 -21
  460. package/dist/editor-actions/paste-coordinator.d.ts +3 -2
  461. package/dist/editor-actions/paste-coordinator.js +17 -13
  462. package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
  463. package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
  464. package/dist/editor-actions/plugin/container.d.ts +54 -82
  465. package/dist/editor-actions/plugin/container.js +105 -188
  466. package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
  467. package/dist/editor-actions/plugin/directive-container.js +7 -8
  468. package/dist/editor-actions/reorder-action.d.ts +7 -12
  469. package/dist/editor-actions/reorder-action.js +32 -48
  470. package/dist/editor-actions/reorder-drag.d.ts +12 -8
  471. package/dist/editor-actions/reorder-drag.js +45 -41
  472. package/dist/editor-actions/replacement-focus.d.ts +13 -21
  473. package/dist/editor-actions/replacement-focus.js +32 -33
  474. package/dist/editor-actions/search-replace.js +71 -67
  475. package/dist/editor-actions/stored-caret.d.ts +7 -0
  476. package/dist/editor-actions/stored-caret.js +10 -0
  477. package/dist/editor-actions/table-context.d.ts +9 -11
  478. package/dist/editor-actions/table-context.js +70 -93
  479. package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
  480. package/dist/editor-actions/unwrap-strategies.js +52 -63
  481. package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
  482. package/dist/editor-actions/whole-block-focus-surface.js +43 -53
  483. package/dist/editor-events.d.ts +25 -29
  484. package/dist/editor-events.js +17 -28
  485. package/dist/editor-keys.d.ts +96 -104
  486. package/dist/editor-keys.js +11 -24
  487. package/dist/editor-props.d.ts +88 -71
  488. package/dist/editor-rects.d.ts +23 -34
  489. package/dist/editor-rects.js +9 -77
  490. package/dist/env.d.ts +6 -4
  491. package/dist/env.js +8 -4
  492. package/dist/index.d.ts +6 -2
  493. package/dist/index.js +5 -2
  494. package/dist/inline-menu/inline-menu-session.d.ts +37 -0
  495. package/dist/inline-menu/inline-menu-session.js +98 -0
  496. package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
  497. package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
  498. package/dist/inline-menu/types.d.ts +77 -0
  499. package/dist/inline-menu/types.js +7 -0
  500. package/dist/invariants/child-id-parity.d.ts +23 -0
  501. package/dist/invariants/child-id-parity.js +39 -0
  502. package/dist/invariants/commit-paths.d.ts +4 -4
  503. package/dist/invariants/commit-paths.js +4 -4
  504. package/dist/invariants/commit-scope.d.ts +4 -4
  505. package/dist/invariants/commit-scope.js +9 -8
  506. package/dist/invariants/context-keys.d.ts +2 -5
  507. package/dist/invariants/context-keys.js +3 -6
  508. package/dist/invariants/descriptor.d.ts +2 -6
  509. package/dist/invariants/descriptor.js +2 -6
  510. package/dist/invariants/inline-transitions.d.ts +9 -16
  511. package/dist/invariants/inline-transitions.js +10 -18
  512. package/dist/invariants/install.d.ts +18 -27
  513. package/dist/invariants/install.js +29 -30
  514. package/dist/invariants/keeps-a-block.d.ts +7 -0
  515. package/dist/invariants/keeps-a-block.js +14 -0
  516. package/dist/invariants/landable-caret.d.ts +5 -7
  517. package/dist/invariants/landable-caret.js +8 -11
  518. package/dist/invariants/landing-focus-scroll.d.ts +7 -0
  519. package/dist/invariants/landing-focus-scroll.js +13 -0
  520. package/dist/invariants/landing-value.d.ts +13 -0
  521. package/dist/invariants/landing-value.js +27 -0
  522. package/dist/invariants/marker-css-parity.d.ts +5 -6
  523. package/dist/invariants/marker-css-parity.js +11 -12
  524. package/dist/invariants/measures-in-own-list.d.ts +6 -0
  525. package/dist/invariants/measures-in-own-list.js +13 -0
  526. package/dist/invariants/node-shape.d.ts +18 -37
  527. package/dist/invariants/node-shape.js +123 -79
  528. package/dist/invariants/open-tail.d.ts +7 -0
  529. package/dist/invariants/open-tail.js +45 -0
  530. package/dist/invariants/placement-ends-widget.d.ts +8 -0
  531. package/dist/invariants/placement-ends-widget.js +13 -0
  532. package/dist/invariants/registry.d.ts +27 -66
  533. package/dist/invariants/registry.js +61 -137
  534. package/dist/invariants/render-fidelity.d.ts +4 -4
  535. package/dist/invariants/render-fidelity.js +5 -5
  536. package/dist/invariants/selection-endpoints.d.ts +6 -7
  537. package/dist/invariants/selection-endpoints.js +18 -16
  538. package/dist/invariants/single-node-sink.d.ts +4 -5
  539. package/dist/invariants/single-node-sink.js +4 -5
  540. package/dist/invariants/snapshot-integrity.d.ts +5 -6
  541. package/dist/invariants/snapshot-integrity.js +1 -1
  542. package/dist/invariants/structural-descriptor.d.ts +6 -15
  543. package/dist/invariants/structural-descriptor.js +6 -15
  544. package/dist/menu-icons.d.ts +47 -0
  545. package/dist/menu-icons.js +113 -0
  546. package/dist/perf/instruments.d.ts +20 -5
  547. package/dist/perf/instruments.js +35 -15
  548. package/dist/perf/use-mount-gauge.svelte.js +4 -4
  549. package/dist/plugin.d.ts +37 -8
  550. package/dist/plugin.js +100 -77
  551. package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
  552. package/dist/plugins/admonitions/admonition-kind.js +12 -10
  553. package/dist/plugins/admonitions/convert-document.d.ts +5 -5
  554. package/dist/plugins/admonitions/convert-document.js +8 -7
  555. package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
  556. package/dist/plugins/admonitions/gh-alert.js +21 -22
  557. package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
  558. package/dist/plugins/admonitions/github-alert-kind.js +28 -37
  559. package/dist/plugins/admonitions/index.js +2 -2
  560. package/dist/plugins/admonitions/kinds.d.ts +1 -1
  561. package/dist/plugins/admonitions/register.js +11 -2
  562. package/dist/plugins/details/DetailsBlock.svelte +20 -20
  563. package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
  564. package/dist/plugins/details/details-disclosure.svelte.js +6 -7
  565. package/dist/plugins/details/details-kind.d.ts +6 -7
  566. package/dist/plugins/details/details-kind.js +44 -59
  567. package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
  568. package/dist/plugins/emoji/emoji-recognizer.js +7 -14
  569. package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
  570. package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
  571. package/dist/plugins/footnotes/constants.d.ts +2 -0
  572. package/dist/plugins/footnotes/constants.js +3 -0
  573. package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
  574. package/dist/plugins/footnotes/footnote-definition.js +69 -45
  575. package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
  576. package/dist/plugins/footnotes/footnote-lookup.js +14 -26
  577. package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
  578. package/dist/plugins/footnotes/footnote-numbering.js +22 -31
  579. package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
  580. package/dist/plugins/footnotes/footnote-reference.js +8 -13
  581. package/dist/plugins/footnotes/index.js +2 -3
  582. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
  583. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
  584. package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
  585. package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
  586. package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
  587. package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
  588. package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
  589. package/dist/plugins/highlight-occurrences/word-char.js +4 -0
  590. package/dist/plugins/latex/BlockMath.svelte +58 -75
  591. package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
  592. package/dist/plugins/latex/MathInline.svelte +10 -9
  593. package/dist/plugins/latex/flanking.d.ts +1 -0
  594. package/dist/plugins/latex/flanking.js +3 -0
  595. package/dist/plugins/latex/index.d.ts +1 -1
  596. package/dist/plugins/latex/latex-kind.d.ts +4 -4
  597. package/dist/plugins/latex/latex-kind.js +78 -67
  598. package/dist/plugins/latex/math-completion.d.ts +1 -1
  599. package/dist/plugins/latex/math-completion.js +5 -8
  600. package/dist/plugins/latex/math-layout.d.ts +2 -8
  601. package/dist/plugins/latex/math-layout.js +0 -9
  602. package/dist/plugins/latex/math-renderer.d.ts +17 -20
  603. package/dist/plugins/latex/math-renderer.js +21 -38
  604. package/dist/plugins/latex/math-source.d.ts +4 -8
  605. package/dist/plugins/latex/math-source.js +36 -81
  606. package/dist/plugins/latex/register.d.ts +10 -11
  607. package/dist/plugins/latex/register.js +24 -10
  608. package/dist/plugins/latex/renderer.d.ts +9 -10
  609. package/dist/plugins/latex/renderer.js +9 -24
  610. package/dist/plugins/mermaid/MermaidBlock.svelte +51 -45
  611. package/dist/plugins/mermaid/index.js +1 -1
  612. package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
  613. package/dist/plugins/mermaid/mermaid-kind.js +30 -47
  614. package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
  615. package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
  616. package/dist/plugins/mermaid/register.d.ts +3 -3
  617. package/dist/plugins/mermaid/register.js +5 -5
  618. package/dist/plugins/mermaid/renderer.d.ts +5 -5
  619. package/dist/plugins/mermaid/renderer.js +8 -11
  620. package/dist/plugins/parrot/ParrotBlock.svelte +15 -6
  621. package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
  622. package/dist/plugins/parrot/parrot-plugin.js +3 -3
  623. package/dist/plugins/slash-commands/filter.d.ts +23 -0
  624. package/dist/plugins/slash-commands/filter.js +31 -0
  625. package/dist/plugins/slash-commands/index.d.ts +2 -0
  626. package/dist/plugins/slash-commands/index.js +2 -0
  627. package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
  628. package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
  629. package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
  630. package/dist/plugins/slash-commands/slash-source.js +108 -0
  631. package/dist/plugins/toc/TocBlock.svelte +23 -22
  632. package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
  633. package/dist/plugins/toc/heading-outline.d.ts +7 -12
  634. package/dist/plugins/toc/heading-outline.js +22 -36
  635. package/dist/plugins/toc/navigation-queue.d.ts +2 -4
  636. package/dist/plugins/toc/toc-plugin.d.ts +5 -5
  637. package/dist/plugins/toc/toc-plugin.js +20 -13
  638. package/dist/presentation-mode.d.ts +15 -23
  639. package/dist/presentation-mode.js +19 -25
  640. package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
  641. package/dist/reactivity/block-list-state.svelte.js +8 -9
  642. package/dist/reactivity/block-window.svelte.d.ts +12 -6
  643. package/dist/reactivity/block-window.svelte.js +44 -17
  644. package/dist/reactivity/child-list.d.ts +34 -0
  645. package/dist/reactivity/child-list.js +48 -0
  646. package/dist/reactivity/content-version.svelte.d.ts +4 -7
  647. package/dist/reactivity/content-version.svelte.js +3 -5
  648. package/dist/reactivity/hold-across.d.ts +39 -0
  649. package/dist/reactivity/hold-across.js +57 -0
  650. package/dist/reactivity/layout-state.svelte.d.ts +27 -0
  651. package/dist/reactivity/layout-state.svelte.js +51 -0
  652. package/dist/reactivity/list-tree.d.ts +39 -0
  653. package/dist/reactivity/list-tree.js +132 -0
  654. package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
  655. package/dist/reactivity/list-windowing.svelte.js +141 -310
  656. package/dist/reactivity/measure-batch.d.ts +6 -8
  657. package/dist/reactivity/measure-batch.js +5 -6
  658. package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
  659. package/dist/reactivity/publish-ref.svelte.js +21 -85
  660. package/dist/reactivity/scope-geometry.d.ts +6 -13
  661. package/dist/reactivity/scope-geometry.js +7 -14
  662. package/dist/reactivity/state-registry.d.ts +5 -5
  663. package/dist/reactivity/state-registry.js +11 -15
  664. package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
  665. package/dist/reactivity/use-container-windowing.svelte.js +64 -74
  666. package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
  667. package/dist/reactivity/use-measured-child.svelte.js +41 -0
  668. package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
  669. package/dist/reactivity/use-window-floor.svelte.js +27 -0
  670. package/dist/reactivity/window-slice.d.ts +4 -4
  671. package/dist/reactivity/window-slice.js +0 -2
  672. package/dist/renderer-slot.d.ts +48 -0
  673. package/dist/renderer-slot.js +85 -0
  674. package/dist/scan-index.d.ts +4 -4
  675. package/dist/scan-index.js +4 -4
  676. package/dist/schema/block-commands.d.ts +69 -54
  677. package/dist/schema/block-commands.js +91 -104
  678. package/dist/schema/block-completions.d.ts +16 -19
  679. package/dist/schema/block-completions.js +25 -32
  680. package/dist/schema/block-component-registry.d.ts +13 -14
  681. package/dist/schema/block-component-registry.js +19 -17
  682. package/dist/schema/block-kind-descriptor.d.ts +234 -168
  683. package/dist/schema/block-kind-descriptor.js +151 -66
  684. package/dist/schema/block-openers.d.ts +48 -39
  685. package/dist/schema/block-openers.js +73 -83
  686. package/dist/schema/built-in-descriptors.d.ts +3 -5
  687. package/dist/schema/built-in-descriptors.js +96 -80
  688. package/dist/schema/child-spans.d.ts +12 -10
  689. package/dist/schema/child-spans.js +68 -34
  690. package/dist/schema/closure.d.ts +18 -16
  691. package/dist/schema/closure.js +24 -14
  692. package/dist/schema/command-id.d.ts +6 -8
  693. package/dist/schema/command-id.js +20 -25
  694. package/dist/schema/commands.d.ts +78 -84
  695. package/dist/schema/commands.js +152 -117
  696. package/dist/schema/container-raw.d.ts +51 -11
  697. package/dist/schema/container-raw.js +143 -14
  698. package/dist/schema/container-rebuilders.d.ts +17 -15
  699. package/dist/schema/container-rebuilders.js +30 -22
  700. package/dist/schema/context-actions.d.ts +25 -13
  701. package/dist/schema/context-actions.js +32 -17
  702. package/dist/schema/define-plugin-block.d.ts +8 -6
  703. package/dist/schema/define-plugin-block.js +6 -4
  704. package/dist/schema/fenced-code-raw.d.ts +30 -17
  705. package/dist/schema/fenced-code-raw.js +155 -107
  706. package/dist/schema/global-commands.d.ts +6 -6
  707. package/dist/schema/global-commands.js +14 -22
  708. package/dist/schema/height-estimates.d.ts +31 -0
  709. package/dist/schema/height-estimates.js +64 -0
  710. package/dist/schema/inline-construct-policy.d.ts +42 -55
  711. package/dist/schema/inline-construct-policy.js +36 -35
  712. package/dist/schema/insert-catalogue.d.ts +30 -0
  713. package/dist/schema/insert-catalogue.js +95 -0
  714. package/dist/schema/keybinding-overrides.d.ts +9 -11
  715. package/dist/schema/keybinding-overrides.js +1 -1
  716. package/dist/schema/keybindings.d.ts +15 -7
  717. package/dist/schema/keybindings.js +21 -9
  718. package/dist/schema/merge-rules.d.ts +5 -7
  719. package/dist/schema/merge-rules.js +7 -9
  720. package/dist/schema/opener-priorities.d.ts +4 -4
  721. package/dist/schema/opener-priorities.js +4 -4
  722. package/dist/schema/operations.d.ts +8 -10
  723. package/dist/schema/operations.js +3 -3
  724. package/dist/schema/page-role.d.ts +14 -0
  725. package/dist/schema/page-role.js +19 -0
  726. package/dist/schema/plugin-activation.d.ts +4 -6
  727. package/dist/schema/plugin-activation.js +12 -10
  728. package/dist/schema/plugin-editor-context.d.ts +25 -10
  729. package/dist/schema/plugin-editor-context.js +40 -9
  730. package/dist/schema/plugin-install.d.ts +49 -17
  731. package/dist/schema/plugin-install.js +51 -25
  732. package/dist/schema/plugin-kind.d.ts +12 -8
  733. package/dist/schema/plugin-kind.js +35 -42
  734. package/dist/schema/plugin-name.js +3 -3
  735. package/dist/schema/plugin-registry.d.ts +54 -0
  736. package/dist/schema/plugin-registry.js +70 -0
  737. package/dist/schema/reading.d.ts +23 -0
  738. package/dist/schema/reading.js +7 -0
  739. package/dist/schema/register-once.d.ts +3 -5
  740. package/dist/schema/register-once.js +7 -16
  741. package/dist/schema/registration-checks.d.ts +12 -16
  742. package/dist/schema/registration-checks.js +35 -51
  743. package/dist/schema/registration-pairs.d.ts +54 -0
  744. package/dist/schema/registration-pairs.js +48 -0
  745. package/dist/schema/registration-pending.d.ts +8 -12
  746. package/dist/schema/registration-pending.js +9 -9
  747. package/dist/schema/registry-reset.d.ts +8 -4
  748. package/dist/schema/registry-reset.js +13 -26
  749. package/dist/schema/registry-view.d.ts +25 -13
  750. package/dist/schema/registry-view.js +26 -20
  751. package/dist/schema/reserved-chords.d.ts +9 -10
  752. package/dist/schema/reserved-chords.js +63 -80
  753. package/dist/schema/reserved-chrome.d.ts +12 -11
  754. package/dist/schema/reserved-chrome.js +15 -11
  755. package/dist/schema/setext-raw.d.ts +13 -0
  756. package/dist/schema/setext-raw.js +33 -0
  757. package/dist/schema/stored-as.d.ts +20 -0
  758. package/dist/schema/stored-as.js +6 -0
  759. package/dist/schema/table-cell-raw.d.ts +18 -7
  760. package/dist/schema/table-cell-raw.js +28 -7
  761. package/dist/schema/whole-block-unit.d.ts +5 -4
  762. package/dist/schema/whole-block-unit.js +5 -4
  763. package/dist/search/document-scan.d.ts +3 -3
  764. package/dist/search/document-scan.js +2 -2
  765. package/dist/search/matcher.d.ts +1 -1
  766. package/dist/search/regex-executor.d.ts +5 -6
  767. package/dist/search/regex-executor.js +6 -8
  768. package/dist/search/replace.d.ts +2 -5
  769. package/dist/search/replace.js +2 -5
  770. package/dist/search/search-state.svelte.d.ts +5 -5
  771. package/dist/search/search-state.svelte.js +12 -16
  772. package/dist/selection/autoscroll.d.ts +6 -9
  773. package/dist/selection/block-hit-test.d.ts +16 -24
  774. package/dist/selection/block-hit-test.js +29 -22
  775. package/dist/selection/caret-doors.d.ts +15 -14
  776. package/dist/selection/caret-doors.js +37 -26
  777. package/dist/selection/caret-landing.d.ts +62 -0
  778. package/dist/selection/caret-landing.js +157 -0
  779. package/dist/selection/caret-restore.d.ts +17 -10
  780. package/dist/selection/caret-restore.js +10 -22
  781. package/dist/selection/caret-target.d.ts +30 -0
  782. package/dist/selection/caret-target.js +84 -0
  783. package/dist/selection/char-endpoint-snap.d.ts +6 -10
  784. package/dist/selection/char-endpoint-snap.js +8 -14
  785. package/dist/selection/clipboard-text.d.ts +5 -12
  786. package/dist/selection/clipboard-text.js +69 -172
  787. package/dist/selection/covered-block.d.ts +6 -8
  788. package/dist/selection/covered-block.js +8 -19
  789. package/dist/selection/cross-block/clipboard.d.ts +3 -2
  790. package/dist/selection/cross-block/clipboard.js +13 -4
  791. package/dist/selection/cross-block/dispatch.d.ts +47 -43
  792. package/dist/selection/cross-block/dispatch.js +12 -23
  793. package/dist/selection/cross-block/format-range.d.ts +18 -21
  794. package/dist/selection/cross-block/format-range.js +104 -103
  795. package/dist/selection/cross-block/format-toggle.d.ts +10 -15
  796. package/dist/selection/cross-block/format-toggle.js +28 -33
  797. package/dist/selection/cross-block/keydown.d.ts +4 -4
  798. package/dist/selection/cross-block/keydown.js +92 -125
  799. package/dist/selection/cross-block/ops.d.ts +19 -34
  800. package/dist/selection/cross-block/ops.js +110 -95
  801. package/dist/selection/cross-block/paste.d.ts +2 -3
  802. package/dist/selection/cross-block/paste.js +59 -96
  803. package/dist/selection/cross-block/pointer.d.ts +17 -15
  804. package/dist/selection/cross-block/pointer.js +74 -25
  805. package/dist/selection/cross-block/type-replace.d.ts +4 -6
  806. package/dist/selection/cross-block/type-replace.js +51 -134
  807. package/dist/selection/dead-space-caret.d.ts +19 -30
  808. package/dist/selection/dead-space-caret.js +70 -88
  809. package/dist/selection/drag-pointer.d.ts +7 -9
  810. package/dist/selection/drag-pointer.js +23 -33
  811. package/dist/selection/gap-caret.d.ts +17 -28
  812. package/dist/selection/gap-caret.js +14 -26
  813. package/dist/selection/grid-selection.d.ts +12 -0
  814. package/dist/selection/grid-selection.js +22 -0
  815. package/dist/selection/keyboard-extend.d.ts +27 -40
  816. package/dist/selection/keyboard-extend.js +94 -117
  817. package/dist/selection/multi-click.d.ts +13 -18
  818. package/dist/selection/multi-click.js +32 -38
  819. package/dist/selection/native-bridge.d.ts +29 -39
  820. package/dist/selection/native-bridge.js +78 -127
  821. package/dist/selection/nearest-block.d.ts +17 -12
  822. package/dist/selection/nearest-block.js +37 -18
  823. package/dist/selection/path-lookup.d.ts +25 -16
  824. package/dist/selection/path-lookup.js +101 -18
  825. package/dist/selection/path-math.d.ts +9 -11
  826. package/dist/selection/path-math.js +5 -7
  827. package/dist/selection/pointer-gesture.d.ts +5 -5
  828. package/dist/selection/pointer-gesture.js +5 -5
  829. package/dist/selection/pointer-session.d.ts +10 -16
  830. package/dist/selection/pointer-session.js +6 -7
  831. package/dist/selection/primitives.d.ts +64 -40
  832. package/dist/selection/primitives.js +57 -67
  833. package/dist/selection/range-coverage.d.ts +94 -0
  834. package/dist/selection/range-coverage.js +365 -0
  835. package/dist/selection/range-delete-ceremony.d.ts +28 -74
  836. package/dist/selection/range-delete-ceremony.js +100 -141
  837. package/dist/selection/range-delete-chrome.d.ts +20 -33
  838. package/dist/selection/range-delete-chrome.js +53 -78
  839. package/dist/selection/range-delete-table-coverage.d.ts +11 -25
  840. package/dist/selection/range-delete-table-coverage.js +42 -112
  841. package/dist/selection/range-delete-table.d.ts +14 -12
  842. package/dist/selection/range-delete-table.js +106 -310
  843. package/dist/selection/range-delete.d.ts +18 -23
  844. package/dist/selection/range-delete.js +83 -123
  845. package/dist/selection/round-trip-restore.d.ts +18 -0
  846. package/dist/selection/round-trip-restore.js +19 -0
  847. package/dist/selection/selection-announcer.d.ts +17 -0
  848. package/dist/selection/selection-announcer.js +25 -0
  849. package/dist/selection/selection-description.d.ts +4 -3
  850. package/dist/selection/selection-description.js +5 -4
  851. package/dist/selection/selection-drop.d.ts +34 -16
  852. package/dist/selection/selection-drop.js +159 -95
  853. package/dist/selection/selection-restore.d.ts +20 -33
  854. package/dist/selection/selection-restore.js +21 -44
  855. package/dist/selection/selection-state.svelte.d.ts +50 -42
  856. package/dist/selection/selection-state.svelte.js +144 -98
  857. package/dist/selection/shared-keydown.d.ts +22 -27
  858. package/dist/selection/shared-keydown.js +25 -45
  859. package/dist/selection/table-endpoint-snap.d.ts +17 -41
  860. package/dist/selection/table-endpoint-snap.js +54 -80
  861. package/dist/selection/table-rect-extend.d.ts +3 -6
  862. package/dist/selection/table-rect-extend.js +19 -14
  863. package/dist/styles/editor-theme.css +60 -53
  864. package/dist/styles/editor.css +201 -143
  865. package/dist/testing/conformance-core.d.ts +50 -18
  866. package/dist/testing/conformance-core.js +88 -50
  867. package/dist/testing/container-conformance.d.ts +48 -84
  868. package/dist/testing/container-conformance.js +159 -285
  869. package/dist/testing/headless-actions.d.ts +34 -19
  870. package/dist/testing/headless-actions.js +116 -65
  871. package/dist/testing/headless-block-list.svelte.d.ts +16 -0
  872. package/dist/testing/headless-block-list.svelte.js +22 -0
  873. package/dist/testing/inline-conformance.d.ts +15 -22
  874. package/dist/testing/inline-conformance.js +131 -148
  875. package/dist/testing/kind-conformance.d.ts +19 -24
  876. package/dist/testing/kind-conformance.js +204 -117
  877. package/dist/testing/kit-reading.d.ts +7 -0
  878. package/dist/testing/kit-reading.js +16 -0
  879. package/dist/testing/mount-dom-stubs.d.ts +4 -5
  880. package/dist/testing/mount-dom-stubs.js +8 -5
  881. package/dist/testing/parse-convergence.d.ts +10 -10
  882. package/dist/testing/parse-convergence.js +14 -49
  883. package/dist/testing.d.ts +13 -9
  884. package/dist/testing.js +28 -38
  885. package/dist/tree-operations/blockquote.d.ts +8 -14
  886. package/dist/tree-operations/blockquote.js +25 -45
  887. package/dist/tree-operations/chain-rebuild.d.ts +34 -25
  888. package/dist/tree-operations/chain-rebuild.js +115 -52
  889. package/dist/tree-operations/children.d.ts +5 -9
  890. package/dist/tree-operations/children.js +7 -11
  891. package/dist/tree-operations/cleanup.d.ts +6 -7
  892. package/dist/tree-operations/cleanup.js +14 -11
  893. package/dist/tree-operations/clone.js +5 -4
  894. package/dist/tree-operations/container-lift.d.ts +10 -5
  895. package/dist/tree-operations/container-lift.js +20 -14
  896. package/dist/tree-operations/container-offsets.d.ts +22 -0
  897. package/dist/tree-operations/container-offsets.js +89 -0
  898. package/dist/tree-operations/content-write.d.ts +52 -29
  899. package/dist/tree-operations/content-write.js +155 -110
  900. package/dist/tree-operations/index.d.ts +4 -4
  901. package/dist/tree-operations/index.js +4 -4
  902. package/dist/tree-operations/keep-one-block.d.ts +10 -0
  903. package/dist/tree-operations/keep-one-block.js +19 -0
  904. package/dist/tree-operations/leaf-range.d.ts +33 -0
  905. package/dist/tree-operations/leaf-range.js +67 -0
  906. package/dist/tree-operations/list/empty-check.d.ts +2 -3
  907. package/dist/tree-operations/list/empty-check.js +4 -4
  908. package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
  909. package/dist/tree-operations/list/exit-replacement.js +4 -9
  910. package/dist/tree-operations/list/item-partition.d.ts +2 -2
  911. package/dist/tree-operations/list/item-partition.js +2 -2
  912. package/dist/tree-operations/list/list-builders.d.ts +18 -16
  913. package/dist/tree-operations/list/list-builders.js +59 -30
  914. package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
  915. package/dist/tree-operations/list/ordered-markers.js +7 -16
  916. package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
  917. package/dist/tree-operations/list/reconcile-task.js +80 -23
  918. package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
  919. package/dist/tree-operations/list/sublist-separator.js +20 -27
  920. package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
  921. package/dist/tree-operations/list/task-paragraph.js +54 -0
  922. package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
  923. package/dist/tree-operations/list/unwrap-merge.js +44 -79
  924. package/dist/tree-operations/node-ops.d.ts +30 -52
  925. package/dist/tree-operations/node-ops.js +152 -218
  926. package/dist/tree-operations/node-primitives.d.ts +44 -31
  927. package/dist/tree-operations/node-primitives.js +84 -60
  928. package/dist/tree-operations/open-tail.d.ts +25 -0
  929. package/dist/tree-operations/open-tail.js +100 -0
  930. package/dist/tree-operations/parse-block.d.ts +15 -2
  931. package/dist/tree-operations/parse-block.js +19 -4
  932. package/dist/tree-operations/paste/apply.d.ts +7 -8
  933. package/dist/tree-operations/paste/apply.js +33 -63
  934. package/dist/tree-operations/paste/body-write.d.ts +8 -6
  935. package/dist/tree-operations/paste/body-write.js +13 -14
  936. package/dist/tree-operations/paste/container-match.d.ts +7 -10
  937. package/dist/tree-operations/paste/container-match.js +76 -58
  938. package/dist/tree-operations/paste/container-paste.d.ts +3 -3
  939. package/dist/tree-operations/paste/container-paste.js +3 -3
  940. package/dist/tree-operations/paste/dispatch.d.ts +26 -29
  941. package/dist/tree-operations/paste/dispatch.js +68 -53
  942. package/dist/tree-operations/paste/focus-target.d.ts +11 -14
  943. package/dist/tree-operations/paste/focus-target.js +13 -18
  944. package/dist/tree-operations/paste/hooks.d.ts +7 -12
  945. package/dist/tree-operations/paste/hooks.js +49 -46
  946. package/dist/tree-operations/paste/line-ending.d.ts +11 -0
  947. package/dist/tree-operations/paste/line-ending.js +32 -0
  948. package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
  949. package/dist/tree-operations/paste/list-absorb.js +17 -19
  950. package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
  951. package/dist/tree-operations/paste/list-break-out.js +24 -32
  952. package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
  953. package/dist/tree-operations/paste/parent-scope.js +9 -16
  954. package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
  955. package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
  956. package/dist/tree-operations/paste/paste-replacement.js +73 -42
  957. package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
  958. package/dist/tree-operations/paste/paste-transforms.js +18 -27
  959. package/dist/tree-operations/paste/replacement-parse.d.ts +9 -7
  960. package/dist/tree-operations/paste/replacement-parse.js +12 -10
  961. package/dist/tree-operations/paste/strategy.d.ts +1 -1
  962. package/dist/tree-operations/paste/strategy.js +1 -1
  963. package/dist/tree-operations/paste/table-slice.js +15 -10
  964. package/dist/tree-operations/paste-surfaces.d.ts +18 -29
  965. package/dist/tree-operations/paste-surfaces.js +14 -10
  966. package/dist/tree-operations/path-mutate.d.ts +7 -8
  967. package/dist/tree-operations/path-mutate.js +4 -4
  968. package/dist/tree-operations/reorder-unit.d.ts +4 -5
  969. package/dist/tree-operations/reorder-unit.js +5 -6
  970. package/dist/tree-operations/reorder.d.ts +7 -9
  971. package/dist/tree-operations/reorder.js +39 -40
  972. package/dist/tree-operations/settle.d.ts +42 -53
  973. package/dist/tree-operations/settle.js +241 -162
  974. package/dist/tree-operations/sharing.d.ts +5 -5
  975. package/dist/tree-operations/splice-many.d.ts +5 -5
  976. package/dist/tree-operations/splice-many.js +5 -5
  977. package/dist/tree-operations/stored-as.d.ts +13 -0
  978. package/dist/tree-operations/stored-as.js +48 -0
  979. package/dist/tree-operations/structural-change.d.ts +11 -15
  980. package/dist/tree-operations/structural-change.js +10 -14
  981. package/dist/tree-operations/structural-suffix.d.ts +22 -0
  982. package/dist/tree-operations/structural-suffix.js +61 -0
  983. package/dist/tree-operations/sub-table-copy.d.ts +7 -0
  984. package/dist/tree-operations/sub-table-copy.js +40 -36
  985. package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
  986. package/dist/tree-operations/table-grid-clipboard.js +11 -36
  987. package/dist/tree-operations/table-mutations.d.ts +7 -3
  988. package/dist/tree-operations/table-mutations.js +45 -9
  989. package/dist/tree-operations/unshare.d.ts +11 -15
  990. package/dist/tree-operations/unshare.js +15 -17
  991. package/dist/undo/manager.js +1 -1
  992. package/dist/undo/types.d.ts +2 -2
  993. package/docs/guide/consumer-guide.md +327 -205
  994. package/docs/guide/directives.md +7 -7
  995. package/docs/guide/plugin-api.md +253 -185
  996. package/docs/guide/plugin-guide.md +332 -235
  997. package/docs/guide/plugin-testing.md +96 -82
  998. package/package.json +12 -16
  999. package/dist/ambient/ambient-cursor.d.ts +0 -41
  1000. package/dist/ambient/ambient-cursor.js +0 -120
  1001. package/dist/components/blocks/code/code-paste.d.ts +0 -24
  1002. package/dist/components/blocks/code/code-paste.js +0 -21
  1003. package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
  1004. package/dist/components/blocks/table/cell-clipboard.js +0 -67
  1005. package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
  1006. package/dist/components/blocks/text/hidden-suffix.js +0 -15
  1007. package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
  1008. package/dist/components/image/image-source-bytes.d.ts +0 -15
  1009. package/dist/components/image/image-source-bytes.js +0 -80
  1010. package/dist/cursor/content-offsets.d.ts +0 -29
  1011. package/dist/cursor/content-offsets.js +0 -151
  1012. package/dist/cursor/reveal-anchor.d.ts +0 -30
  1013. package/dist/cursor/reveal-anchor.js +0 -31
  1014. package/dist/cursor/scroll-hold.d.ts +0 -10
  1015. package/dist/cursor/scroll-hold.js +0 -22
  1016. package/dist/invariants/split-landing.d.ts +0 -8
  1017. package/dist/invariants/split-landing.js +0 -15
  1018. package/dist/tree-operations/list/terminator.d.ts +0 -17
  1019. package/dist/tree-operations/list/terminator.js +0 -60
  1020. package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -31
  1021. package/dist/tree-operations/paste/replace-block-at-parent.js +0 -78
@@ -1,85 +1,82 @@
1
1
  <script lang="ts">
2
2
  import { getContext, setContext } from 'svelte';
3
- import type {
4
- BlockEditActions,
5
- ContainerEditActions,
6
- FocusActions,
7
- ListContext
8
- } from '../../../action-contracts';
3
+ import type { ListContext } from '../../../action-contracts';
9
4
  import type { BlockComponent } from '../../../block-component';
10
5
  import type { NodeView } from '../../../core/node-views';
11
6
  import {
12
- BLOCK_EDIT_KEY,
13
- CONTAINER_EDIT_KEY,
14
- EDITOR_DOC_KEY,
15
7
  EDITOR_POLICIES_KEY,
16
8
  EDITOR_SERVICES_KEY,
17
- FOCUS_KEY,
18
9
  LIST_CONTEXT_KEY,
19
- type EditorDoc,
20
10
  type EditorPolicies,
21
11
  type EditorServices
22
12
  } from '../../../editor-keys';
23
13
  import { metadataOf } from '../../../core/nodes';
24
14
  import { hidesMarkers } from '../../../presentation-mode';
25
- import { displayLength } from '../../../core/lines';
26
- import { createBlockListState } from '../../../reactivity/block-list-state.svelte';
27
15
  import { useContainerWindowing } from '../../../reactivity/use-container-windowing.svelte';
16
+ import { useMeasuredChild } from '../../../reactivity/use-measured-child.svelte';
28
17
  import { useMountGauge } from '../../../perf/use-mount-gauge.svelte';
18
+ import { createContainerActions } from '../../../editor-actions/nested/container-actions';
19
+ import { createListItemOverrides } from '../../../editor-actions/list-overrides';
29
20
  import {
30
- createStandardNestedActions,
31
- setNestedActionsContexts,
32
- type NodeScope
33
- } from '../../../editor-actions/nested/nested-actions';
34
- import { createContainerBlockComponent } from '../../../editor-actions/container-block-component';
21
+ createContainerBlockComponent,
22
+ dispatchContainerChord
23
+ } from '../../../editor-actions/container-block-component';
35
24
  import { buildTaskItemAmbient } from './task-checkbox';
36
25
  import BlockList from '../../BlockList.svelte';
37
26
  import { publishRefSlot, type RefSlots } from '../../../reactivity/publish-ref.svelte';
38
- import { eventToChord } from '../../../schema/keybindings';
39
- import { dispatchKindCommand } from '../../../schema/block-commands';
27
+ import type { ChildList } from '../../../reactivity/child-list';
40
28
  import type { AnyCommandId } from '../../../schema/command-id';
41
29
  import BlockDragHandle from '../../BlockDragHandle.svelte';
30
+ import SelectionOverlay from '../../SelectionOverlay.svelte';
42
31
  import { showsListItemDragHandle } from '../../drag-handle';
32
+ import { useBlockDecorations } from '../../../decorations/use-block-decorations.svelte';
43
33
 
44
34
  let {
45
35
  node,
46
36
  index,
37
+ id,
47
38
  myPath = [],
48
39
  itemCount,
49
40
  slots
50
41
  }: {
51
42
  node: NodeView;
52
43
  index: number;
44
+ id: string;
53
45
  myPath?: number[];
54
46
  /** How many items the enclosing list holds; a lone item has no sibling to reorder past. */
55
47
  itemCount: number;
56
48
  slots?: RefSlots<BlockComponent>;
57
49
  } = $props();
58
50
 
59
- const parentBlockEdit = getContext<BlockEditActions>(BLOCK_EDIT_KEY);
60
- const parentFocus = getContext<FocusActions>(FOCUS_KEY);
61
- const parentContainerEdit = getContext<ContainerEditActions>(CONTAINER_EDIT_KEY);
62
- const { stickyColumn, selection, registryView } = getContext<EditorServices>(EDITOR_SERVICES_KEY);
63
- const {
64
- keybindingOverrides,
65
- blockDragHandles: getDragHandles,
66
- presentationMode: getPresentationMode
67
- } = getContext<EditorPolicies>(EDITOR_POLICIES_KEY);
68
- const linkRef = getContext<EditorDoc | undefined>(EDITOR_DOC_KEY)?.linkRef;
51
+ const { selection, decorations, events, commands } =
52
+ getContext<EditorServices>(EDITOR_SERVICES_KEY);
53
+ const { blockDragHandles: getDragHandles } = getContext<EditorPolicies>(EDITOR_POLICIES_KEY);
69
54
 
70
55
  const listContext = getContext<ListContext>(LIST_CONTEXT_KEY);
56
+ const {
57
+ state: listState,
58
+ parent: { blockEdit: parentBlockEdit },
59
+ reading
60
+ } = createContainerActions({
61
+ getNode: () => node,
62
+ getIndex: () => index,
63
+ getPath: () => myPath,
64
+ // The enclosing list's context, not the wrapped one this item provides.
65
+ overrides: ({ scope }) => createListItemOverrides({ scope, listContext }),
66
+ childList: () => childList
67
+ });
68
+
71
69
  // $derived, not a mount-time snapshot: a runtime prop toggle must reach blocks
72
70
  // that window in and out after the change, not just those mounted at mount.
73
- const dragHandles = $derived(getDragHandles?.() ?? false);
74
- // The grip is the only pointer road into a reorder, and a reorder needs a sibling: a lone
75
- // item stays a reorder host (a dragged sibling never arrives, but the class costs nothing)
76
- // and simply shows nothing to grab.
71
+ const dragHandles = $derived(getDragHandles());
72
+ // A reorder needs a sibling, so a lone item shows no handle; it stays a reorder host, which
73
+ // costs nothing, since a dragged sibling never arrives.
77
74
  const showsHandle = $derived(showsListItemDragHandle(itemCount, dragHandles));
78
- const presentationMode = $derived(getPresentationMode?.() ?? 'source');
75
+ const presentationMode = $derived(reading.mode());
79
76
  const readOnly = $derived(presentationMode === 'reading');
80
77
 
81
- // The marker-hiding CSS tells bullet/ordered/task apart through this hook and the ambient
82
- // span carries no such class. Absent in source, so that DOM stays byte-identical.
78
+ // The marker-hiding CSS tells a bullet from a number from a checkbox through this attribute,
79
+ // since the marker span carries no such class. Absent in source, so that DOM is unchanged.
83
80
  const presentationMarkerKind = $derived.by(() => {
84
81
  if (!hidesMarkers(presentationMode)) return undefined;
85
82
  const meta = metadataOf(node, 'listItem');
@@ -87,27 +84,34 @@
87
84
  return /^\d/.test(meta?.marker ?? '-') ? 'ordered' : 'bullet';
88
85
  });
89
86
 
90
- // Wrap getContainingItemIndex so a nested ListBlock inside this item sees
91
- // this item's index in the outer list — the coordinate promoteNestedItem needs.
87
+ // Wrap `getContainingItemIndex` so a nested ListBlock inside this item sees this
88
+ // item's index in the outer list, which is what `promoteNestedItem` needs.
92
89
  const wrappedListContext: ListContext = {
93
90
  ...listContext,
94
91
  getContainingItemIndex: () => index
95
92
  };
96
93
  setContext(LIST_CONTEXT_KEY, wrappedListContext);
97
94
 
98
- const listState = createBlockListState(() => node);
99
-
100
95
  let boxEl: HTMLElement | undefined = $state();
101
96
  let contentEl: HTMLElement | undefined = $state();
102
97
 
103
98
  useMountGauge();
104
99
 
105
- function toggleTask(): void {
100
+ // The item renders no block host, so its own box carries the decorations addressed to it.
101
+ const blockDecorations = useBlockDecorations({
102
+ getPath: () => myPath,
103
+ getEl: () => boxEl ?? null,
104
+ engine: decorations,
105
+ onRenderError: (error) => events.emit('error', error)
106
+ });
107
+
108
+ // False on a plain item, so the chord that asked falls through.
109
+ function toggleTask(): boolean {
106
110
  // Reading mode keeps checkboxes visible but inert: a toggle rewrites the
107
111
  // document, and reading mode writes no bytes.
108
- if (readOnly) return;
112
+ if (readOnly) return false;
109
113
  const meta = metadataOf(node, 'listItem');
110
- if (!meta?.taskItem) return;
114
+ if (!meta?.taskItem) return false;
111
115
 
112
116
  if (selection?.isCrossBlock) {
113
117
  selection.clear();
@@ -119,6 +123,7 @@
119
123
  taskChecked: nextChecked,
120
124
  taskMarker: nextMarker
121
125
  });
126
+ return true;
122
127
  }
123
128
 
124
129
  const taskCheckedAttr = $derived.by(() => {
@@ -127,95 +132,43 @@
127
132
  return meta.taskChecked ? 'true' : 'false';
128
133
  });
129
134
 
130
- const scope: NodeScope = {
131
- get index() {
132
- return index;
133
- },
134
- get node() {
135
- return node;
136
- },
137
- get path() {
138
- return myPath;
139
- }
140
- };
141
-
142
- const bundle = createStandardNestedActions(
143
- listState,
144
- {
145
- scope,
146
- stickyColumn,
147
- grammar: registryView.grammar,
148
- getPresentationMode,
149
- linkRef,
150
- parent: {
151
- blockEdit: parentBlockEdit,
152
- focus: parentFocus,
153
- containerEdit: parentContainerEdit
154
- }
155
- },
156
- () => ({
157
- blockEdit: {
158
- splitBlock: async (innerIndex: number, offset: number): Promise<void> => {
159
- if (!node.children) return;
160
-
161
- // Enter-empty. Deliberately shallower than isItemUserEmpty — trailing
162
- // structural children stay until exitListAtItem relocates them.
163
- const firstChild = node.children[0];
164
- const isEmptyItem = firstChild?.kind === 'paragraph' && firstChild.raw.trim() === '';
165
- if (isEmptyItem) {
166
- await listContext.exitListAtItem(index);
167
- return;
168
- }
169
-
170
- const lastChild = node.children[node.children.length - 1];
171
- const isAtEnd =
172
- innerIndex === node.children.length - 1 && offset >= displayLength(lastChild.raw);
173
-
174
- if (isAtEnd) {
175
- await listContext.insertItemAfter(index);
176
- return;
177
- }
178
-
179
- await listContext.splitItemAtOffset(index, innerIndex, offset);
180
- }
181
- // mergeWithPrevious at innerIndex <= 0 is the factory default — no override needed.
182
- }
183
- })
184
- );
185
-
186
- setNestedActionsContexts(bundle);
187
-
188
135
  // ── Virtual rendering (nested windowing) ────────────────────────────
189
136
 
137
+ // An item renders no block host, so its own box is what the list measures. Before this item
138
+ // provides its own list below, whose channel would otherwise answer.
139
+ useMeasuredChild({
140
+ getId: () => id,
141
+ getPath: () => myPath,
142
+ getEl: () => boxEl ?? null,
143
+ getRaw: () => node.raw
144
+ });
145
+
190
146
  const windowing = useContainerWindowing({
191
- getIndex: () => index,
192
147
  getParentPath: () => myPath,
193
148
  getChildren: () => node.children ?? [],
194
149
  getChildIds: () => listState.innerBlockIds,
195
- // .block-list is a direct child of .list-item-content, reached through contentEl.
196
- getListEl: () => contentEl?.querySelector(':scope > .block-list') ?? null,
197
- // An item is NOT wrapped in a BlockHost; its own .list-item-block box is what the
198
- // parent ListBlock's item-indexed sink expects (no competing leaf channel).
199
- getOwnEl: () => boxEl ?? null,
200
- provideLeafChannel: true
150
+ // .block-list is a direct child of .list-item-content, reached through `contentEl`.
151
+ getListEl: () => contentEl?.querySelector(':scope > .block-list') ?? null
201
152
  });
202
153
 
154
+ const childList: ChildList = {
155
+ count: () => node.children?.length ?? 0,
156
+ refs: listState.refSlots,
157
+ windowing
158
+ };
159
+
203
160
  // ── BlockComponent interface ────────────────────────────────────────
204
161
 
205
162
  export const containerApi = createContainerBlockComponent({
206
163
  selection,
164
+ reading,
207
165
  get innerBlockRefs() {
208
166
  return listState.innerBlockRefs;
209
167
  },
210
- refSlots: listState.refSlots,
211
- get nodeChildrenLength() {
212
- return node.children?.length ?? 0;
213
- },
168
+ childList,
214
169
  get node() {
215
170
  return node;
216
- },
217
- revealChild: windowing.revealChild,
218
- isInWindow: windowing.isInWindow
171
+ }
219
172
  });
220
173
 
221
174
  $effect(() => {
@@ -225,8 +178,8 @@
225
178
 
226
179
  // ── Commands ────────────────────────────────────────────────────────
227
180
 
228
- // Not on the BlockComponent surface (the published ref is containerApi, not
229
- // this instance); the bubble handler below closes over it directly.
181
+ // Not part of the BlockComponent interface, since the registered reference is
182
+ // `containerApi` rather than this instance; the handler below closes over it.
230
183
  function runCommand(id: AnyCommandId): boolean {
231
184
  switch (id) {
232
185
  case 'list.indent':
@@ -235,40 +188,31 @@
235
188
  case 'list.unindent':
236
189
  listContext.unindentItem(index);
237
190
  return true;
191
+ case 'list.toggleTask':
192
+ return toggleTask();
238
193
  default:
239
194
  return false;
240
195
  }
241
196
  }
242
197
 
243
- // Tab/Shift+Tab bubble here from the inner paragraph, whose block.insertTab declines
244
- // without preventDefault. Dispatch is kind-only: the contenteditable's async handler
245
- // preventDefaults only after an await, so a global tier here would re-fire undo/redo.
198
+ // Tab, Shift+Tab and Mod+Enter bubble up from the inner paragraph. Only kind commands run here:
199
+ // the paragraph has already dispatched the global ones, so undo would otherwise fire twice.
246
200
  function handleKeydown(e: KeyboardEvent): void {
247
- if (e.defaultPrevented) return;
248
- const chord = eventToChord(e);
249
- if (!chord) return;
250
- if (
251
- dispatchKindCommand(
252
- chord,
253
- { kind: node.kind, runCommand },
254
- {
255
- getPresentationMode,
256
- isCrossBlockRange: () => selection?.isCrossBlock ?? false,
257
- // A container bubble carries no range command: the leaf below it owns the format ids.
258
- crossBlockCommands: undefined
259
- },
260
- keybindingOverrides()
261
- )
262
- ) {
263
- e.preventDefault();
264
- }
201
+ // A key a nested item declined is still that item's: the task toggle must not reach the
202
+ // task it sits in.
203
+ if (!(e.target instanceof Element) || e.target.closest('.list-item-block') !== boxEl) return;
204
+ dispatchContainerChord(e, { kind: node.kind, runCommand }, commands);
265
205
  }
266
206
  </script>
267
207
 
208
+ <!-- No `data-block-path` on the item box: a lookup by that attribute treats the match as a
209
+ block host, and the item renders none. -->
268
210
  <div
269
- class="list-item-block"
270
- class:reorder-host={dragHandles}
271
- class:handle-host={showsHandle}
211
+ class={[
212
+ 'list-item-block',
213
+ { 'reorder-host': dragHandles, 'handle-host': showsHandle },
214
+ ...blockDecorations.classes
215
+ ]}
272
216
  data-task-checked={taskCheckedAttr}
273
217
  data-list-marker={presentationMarkerKind}
274
218
  bind:this={boxEl}
@@ -284,9 +228,11 @@
284
228
  ambientPrefixForFirst={buildTaskItemAmbient(metadataOf(node, 'listItem'), toggleTask)}
285
229
  />
286
230
  </div>
287
- <!-- A list item IS a reorder unit; its inner content BlockList passes the
288
- default reorderable={false}, so the paragraph inside gets no handle. A lone item
289
- renders none either: its drag is list-scoped and there is no sibling to pass. -->
231
+ <!-- The item paints its own selection box: it renders no BlockHost, so a range that
232
+ holds it whole has nothing else to draw one over its marker and its content. -->
233
+ <SelectionOverlay path={myPath} delegatesPainting />
234
+ <!-- A list item is the reorder unit, so its inner BlockList keeps `reorderable={false}` and
235
+ the paragraph inside gets no handle; a lone item shows none either. -->
290
236
  {#if showsHandle}
291
237
  <BlockDragHandle />
292
238
  {/if}
@@ -299,7 +245,7 @@
299
245
  align-items: flex-start;
300
246
  }
301
247
 
302
- /* Hover reveal is the shared global `.handle-host` rule in BlockHost; it reveals
248
+ /* Showing it on hover is the shared `.handle-host` rule in BlockHost; it shows
303
249
  only the innermost hovered unit, so a sub-item's hover never lights the parent. */
304
250
 
305
251
  .list-item-content {
@@ -328,6 +274,6 @@
328
274
  > :global(.block-list)
329
275
  > :global(.block-host:first-child)
330
276
  > :global(:not(.list-block)) {
331
- color: var(--syntax-task-done, var(--color-text-muted, rgba(128, 128, 128, 0.7)));
277
+ color: var(--syntax-task-done, #8f8f89);
332
278
  }
333
279
  </style>
@@ -4,6 +4,7 @@ import { type RefSlots } from '../../../reactivity/publish-ref.svelte';
4
4
  type $$ComponentProps = {
5
5
  node: NodeView;
6
6
  index: number;
7
+ id: string;
7
8
  myPath?: number[];
8
9
  /** How many items the enclosing list holds; a lone item has no sibling to reorder past. */
9
10
  itemCount: number;
@@ -1,5 +1,8 @@
1
1
  import type { AmbientPrefix } from '../../../block-component';
2
2
  import type { ListItemMetadata } from '../../../core/nodes';
3
- /** Matches the `.task-checkbox` slot and gap in editor.css; the two move together. */
4
- export declare const TASK_HANGING_INDENT = "2.1em";
3
+ /** Matches the `.task-checkbox` width and gap in editor.css, which sets `--md-task-indent` to
4
+ * follow the drawn marker in each mode; the fallback is the width source mode draws. */
5
+ export declare const TASK_HANGING_INDENT = "var(--md-task-indent, 2.1em)";
6
+ /** Whether a block's container marker prefix draws a task box, making the block the to-do's text. */
7
+ export declare function ambientHoldsTaskBox(prefix: AmbientPrefix): boolean;
5
8
  export declare function buildTaskItemAmbient(metadata: ListItemMetadata | undefined, onToggle: () => void): AmbientPrefix;
@@ -1,15 +1,20 @@
1
1
  import { devWarn } from '../../../dev-warn';
2
- /** Matches the `.task-checkbox` slot and gap in editor.css; the two move together. */
3
- export const TASK_HANGING_INDENT = '2.1em';
2
+ /** Matches the `.task-checkbox` width and gap in editor.css, which sets `--md-task-indent` to
3
+ * follow the drawn marker in each mode; the fallback is the width source mode draws. */
4
+ export const TASK_HANGING_INDENT = 'var(--md-task-indent, 2.1em)';
4
5
  function isTaskMarkerChecked(taskMarker) {
5
6
  const c = taskMarker[1];
6
7
  return c === 'x' || c === 'X';
7
8
  }
9
+ /** Whether a block's container marker prefix draws a task box, making the block the to-do's text. */
10
+ export function ambientHoldsTaskBox(prefix) {
11
+ return typeof prefix !== 'string' && !!prefix.interactive?.some((r) => r.role === 'checkbox');
12
+ }
8
13
  export function buildTaskItemAmbient(metadata, onToggle) {
9
14
  const listMarker = metadata?.marker ?? '- ';
10
15
  const taskMarkerPresent = metadata?.taskMarker != null;
11
16
  if (metadata && metadata.taskItem !== taskMarkerPresent) {
12
- devWarn('ListItemBlock', 'taskItem / taskMarker inconsistent — rendering as plain list item', {
17
+ devWarn('ListItemBlock', 'taskItem / taskMarker inconsistent, rendering as plain list item', {
13
18
  taskItem: metadata.taskItem,
14
19
  taskMarker: metadata.taskMarker
15
20
  });
@@ -26,17 +31,17 @@ export function buildTaskItemAmbient(metadata, onToggle) {
26
31
  end: boxStart + 3,
27
32
  className: 'task-checkbox',
28
33
  role: 'checkbox',
29
- // single source of truth: derive from the keyed marker (in the render memo key), not parallel taskChecked
34
+ // Read from the marker already in the render key, not a second checked field.
30
35
  ariaChecked: isTaskMarkerChecked(metadata.taskMarker),
31
- // The painted box is taller than the text beside it; the grip centres on the box.
36
+ // The drawn box is taller than the text beside it, so it centres on the box.
32
37
  dragAnchor: true,
33
38
  onClick: onToggle
34
39
  },
35
- // The list marker gets a span of its own so the rendered modes can collapse its width:
40
+ // The list marker gets a span of its own so the rendered modes can collapse it:
36
41
  // GitHub draws the box at the margin, not indented under a bullet that is not there.
37
42
  { start: 0, end: boxStart, className: 'task-list-marker', onClick: () => { } }
38
43
  ],
39
- // The painted box (editor.css): slot + gap + the marker's trailing space.
44
+ // The drawn box (editor.css): its width, the gap, and the marker's trailing space.
40
45
  indent: TASK_HANGING_INDENT
41
46
  };
42
47
  }
@@ -1,21 +1,5 @@
1
- /**
2
- * The zero-ambient, widget-free surface backend shared by CodeBlock and the
3
- * `editable-leaf` seam: with no ambient marker and no inline widgets, DOM-text space
4
- * IS raw space, so the brand mint happens once here rather than at each surface.
5
- * Surfaces with an ambient marker (TextEditableBlock) use the ambient IO instead.
6
- */
7
- import type { CursorBackend } from './editable-surface';
8
- import { type RawOffset } from '../../cursor/coordinate-spaces';
9
- export interface ContentOffsetBackend {
10
- backend: CursorBackend;
11
- getFocusOffset: () => RawOffset | null;
12
- getTextLen: () => number;
13
- readText: () => string;
14
- }
15
- export declare function createContentOffsetBackend(getEl: () => HTMLElement | null): ContentOffsetBackend;
16
- /**
17
- * Chromium with `white-space: pre` won't paint a caret on the line after a trailing
18
- * `\n` unless something follows it. A `<br>` anchors it without touching `textContent`
19
- * (BR has empty textContent, so `textContent === trimTrailingLineEnding(raw)` holds).
20
- */
1
+ /** Chromium with `white-space: pre` paints no caret on the line after a trailing `\n` unless
2
+ * something follows; a `<br>` anchors it without touching `textContent`. */
21
3
  export declare function anchorTrailingNewline(el: HTMLElement): void;
4
+ /** The DOM text of a block whose text is its raw. */
5
+ export declare function plainTextOf(el: HTMLElement | null | undefined): string;
@@ -1,47 +1,13 @@
1
- /**
2
- * The zero-ambient, widget-free surface backend shared by CodeBlock and the
3
- * `editable-leaf` seam: with no ambient marker and no inline widgets, DOM-text space
4
- * IS raw space, so the brand mint happens once here rather than at each surface.
5
- * Surfaces with an ambient marker (TextEditableBlock) use the ambient IO instead.
6
- */
7
- import { asDomTextOffset, asRawOffset } from '../../cursor/coordinate-spaces';
8
- import { createRangeFromOffsets, setCursorOffset, getCursorOffset, getSelectionFocusOffset } from '../../cursor/content-offsets';
9
- export function createContentOffsetBackend(getEl) {
10
- return {
11
- backend: {
12
- getRaw: () => {
13
- const el = getEl();
14
- const offset = el ? getCursorOffset(el) : null;
15
- return offset === null ? null : asRawOffset(offset);
16
- },
17
- setRaw: (offset) => {
18
- const el = getEl();
19
- if (el)
20
- setCursorOffset(el, asDomTextOffset(offset));
21
- },
22
- buildRange: (start, end) => {
23
- const el = getEl();
24
- return el ? createRangeFromOffsets(el, asDomTextOffset(start), asDomTextOffset(end)) : null;
25
- }
26
- },
27
- getFocusOffset: () => {
28
- const el = getEl();
29
- const offset = el ? getSelectionFocusOffset(el) : null;
30
- return offset === null ? null : asRawOffset(offset);
31
- },
32
- getTextLen: () => (getEl()?.textContent ?? '').length,
33
- readText: () => getEl()?.textContent ?? ''
34
- };
35
- }
36
- /**
37
- * Chromium with `white-space: pre` won't paint a caret on the line after a trailing
38
- * `\n` unless something follows it. A `<br>` anchors it without touching `textContent`
39
- * (BR has empty textContent, so `textContent === trimTrailingLineEnding(raw)` holds).
40
- */
1
+ // Helpers for the blocks whose DOM text is their raw: a code block and a plugin leaf.
2
+ import { createCaretAnchor } from '../../cursor/widget-offset';
3
+ /** Chromium with `white-space: pre` paints no caret on the line after a trailing `\n` unless
4
+ * something follows; a `<br>` anchors it without touching `textContent`. */
41
5
  export function anchorTrailingNewline(el) {
42
6
  if (!el.textContent?.endsWith('\n'))
43
7
  return;
44
- const anchor = document.createElement('br');
45
- anchor.dataset.caretAnchor = '';
46
- el.appendChild(anchor);
8
+ el.appendChild(createCaretAnchor());
9
+ }
10
+ /** The DOM text of a block whose text is its raw. */
11
+ export function plainTextOf(el) {
12
+ return el?.textContent ?? '';
47
13
  }
@@ -1,21 +1,20 @@
1
1
  /**
2
- * The context wiring every editable-block component threads identically: one init-time bundle
3
- * of the shared `EditableSurfaceDeps` fields, plus chord dispatch built over the same gates and
4
- * the shared focus-park teardown. Call during component init — `getContext` requires it, and
5
- * `createEditableSurface` itself stays context-free (the jsdom harness constructs it bare).
2
+ * The context wiring every editable-block component shares: the common `EditableSurfaceDeps`
3
+ * fields, chord dispatch through the editor's command context, and the focus-away teardown.
4
+ * Call it during component init, since it reads `getContext`.
6
5
  */
7
6
  import { type KindCommandTarget } from '../../schema/block-commands';
8
7
  import type { AnyBlockKind } from '../../core/nodes';
9
8
  import type { AnyCommandId } from '../../schema/command-id';
10
9
  import type { EditableSurfaceDeps } from './editable-surface';
11
- /** The context-threaded half of `EditableSurfaceDeps` — the fields every surface passes verbatim. */
12
- export type SharedSurfaceDeps = Pick<EditableSurfaceDeps, 'selection' | 'getDoc' | 'getBlockElByPath' | 'focusActions' | 'getEditorRoot' | 'getScrollHost' | 'getEditorLifetime' | 'stickyColumn' | 'edgeAffinity' | 'blockEdit' | 'controller' | 'history' | 'pluginEditor' | 'getKeybindingOverrides' | 'pasteCoordinator' | 'grammar' | 'activePlugins' | 'events' | 'linkRef' | 'onCommandError' | 'crossBlockCommands'>;
10
+ /** The context half of `EditableSurfaceDeps`: the fields every block passes through unchanged. */
11
+ export type SharedSurfaceDeps = Pick<EditableSurfaceDeps, 'selection' | 'getDoc' | 'getBlockElByPath' | 'focusActions' | 'caretLanding' | 'getEditorRoot' | 'getScrollHost' | 'scrollOwner' | 'getEditorLifetime' | 'caretMemory' | 'blockEdit' | 'controller' | 'history' | 'pasteCoordinator' | 'activePlugins' | 'events' | 'selectedWidget' | 'reading' | 'commands'>;
13
12
  export interface SurfaceWiring {
14
- /** Spread first into `createEditableSurface`; per-surface fields follow and may override. */
13
+ /** Spread first into `createEditableSurface`; per-block fields follow and may override. */
15
14
  deps: SharedSurfaceDeps;
16
- /** Resolve a chord at `target` through the shared gates; consumes the event when spent. */
15
+ /** Resolve a chord at `target` through the editor's command context; consumes a handled event. */
17
16
  dispatchChord(e: KeyboardEvent, target: KindCommandTarget): boolean;
18
- /** The command a press names at `kind`, overrides included, without running it. */
17
+ /** The command a keypress names at `kind`, overrides included, without running it. */
19
18
  resolveChord(e: KeyboardEvent, kind: AnyBlockKind): AnyCommandId | null;
20
19
  }
21
20
  export declare function wireSurfaceContexts(): SurfaceWiring;
@@ -1,68 +1,49 @@
1
1
  /**
2
- * The context wiring every editable-block component threads identically: one init-time bundle
3
- * of the shared `EditableSurfaceDeps` fields, plus chord dispatch built over the same gates and
4
- * the shared focus-park teardown. Call during component init — `getContext` requires it, and
5
- * `createEditableSurface` itself stays context-free (the jsdom harness constructs it bare).
2
+ * The context wiring every editable-block component shares: the common `EditableSurfaceDeps`
3
+ * fields, chord dispatch through the editor's command context, and the focus-away teardown.
4
+ * Call it during component init, since it reads `getContext`.
6
5
  */
7
6
  import { getContext } from 'svelte';
8
- import { BLOCK_EDIT_KEY, EDITOR_DOC_KEY, EDITOR_POLICIES_KEY, EDITOR_SERVICES_KEY, FOCUS_KEY, HISTORY_KEY } from '../../editor-keys';
9
- import { emitCommandError } from '../../editor-events';
7
+ import { BLOCK_EDIT_KEY, EDITOR_DOC_KEY, EDITOR_SERVICES_KEY, FOCUS_KEY, HISTORY_KEY } from '../../editor-keys';
10
8
  import { eventToChord } from '../../schema/keybindings';
11
9
  import { dispatchKeyCommand } from '../../schema/block-commands';
12
- import { resolveBinding } from '../../schema/commands';
10
+ import { commandForKey } from '../../schema/commands';
13
11
  import { parkFocusOnEditorRoot } from '../../selection/native-bridge';
14
12
  export function wireSurfaceContexts() {
15
13
  const blockEdit = getContext(BLOCK_EDIT_KEY);
16
14
  const focusActions = getContext(FOCUS_KEY);
17
15
  const history = getContext(HISTORY_KEY);
18
- const { controller, pasteCoordinator, stickyColumn, edgeAffinity, selection, registryView, activePlugins, events, crossBlockCommands } = getContext(EDITOR_SERVICES_KEY);
19
- const { keybindingOverrides, presentationMode: getPresentationMode } = getContext(EDITOR_POLICIES_KEY);
20
- const { blockElLookup: getBlockElByPath, doc: getDoc, editorRoot: getEditorRoot, scrollHost: getScrollHost, lifetime: editorLifetime, pluginEditor, linkRef } = getContext(EDITOR_DOC_KEY);
16
+ const { controller, caretLanding, pasteCoordinator, caretMemory, selection, activePlugins, events, commands, selectedWidget, scrollOwner } = getContext(EDITOR_SERVICES_KEY);
17
+ const { blockElLookup: getBlockElByPath, doc: getDoc, editorRoot: getEditorRoot, scrollHost: getScrollHost, lifetime: editorLifetime, reading } = getContext(EDITOR_DOC_KEY);
21
18
  const deps = {
22
19
  selection,
23
20
  getDoc,
24
21
  getBlockElByPath,
25
22
  focusActions,
23
+ caretLanding,
26
24
  getEditorRoot,
27
25
  getScrollHost,
26
+ scrollOwner,
28
27
  getEditorLifetime: () => editorLifetime ?? null,
29
- stickyColumn,
30
- edgeAffinity,
28
+ caretMemory,
31
29
  blockEdit,
32
30
  controller,
33
31
  history,
34
- pluginEditor,
35
- getKeybindingOverrides: keybindingOverrides,
36
32
  pasteCoordinator,
37
- grammar: registryView.grammar,
38
33
  activePlugins,
39
34
  events,
40
- linkRef,
41
- crossBlockCommands,
42
- onCommandError: (report) => emitCommandError(events, report)
35
+ selectedWidget,
36
+ reading,
37
+ commands
43
38
  };
44
39
  const dispatchChord = (e, target) => {
45
40
  const chord = eventToChord(e);
46
- if (!chord ||
47
- !dispatchKeyCommand(chord, target, {
48
- history,
49
- pluginEditor,
50
- activation: activePlugins,
51
- getPresentationMode,
52
- isCrossBlockRange: () => selection.isCrossBlock,
53
- crossBlockCommands: crossBlockCommands
54
- }, keybindingOverrides(), deps.onCommandError)) {
41
+ if (!chord || !dispatchKeyCommand(chord, target, commands))
55
42
  return false;
56
- }
57
43
  e.preventDefault();
58
44
  return true;
59
45
  };
60
- const resolveChord = (e, kind) => {
61
- const chord = eventToChord(e);
62
- if (!chord)
63
- return null;
64
- return resolveBinding(chord, kind, keybindingOverrides(), activePlugins)?.command ?? null;
65
- };
46
+ const resolveChord = (e, kind) => commandForKey(e, kind, commands);
66
47
  return { deps, dispatchChord, resolveChord };
67
48
  }
68
49
  // Windowed out while focused: hand focus to the editor root so the next keystroke