@voithos-labs/aragonite 0.10.3 → 0.10.7

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