@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,40 +1,38 @@
1
1
  /**
2
- * The container-authoring seam a plugin block component builds on: the built-in
3
- * container wiring collapsed into one factory, so a plugin never touches an editor
4
- * context key. Call synchronously during component init — `getContext` reads the
5
- * ancestor contexts and `useContainerWindowing` sets its own.
2
+ * What a plugin's container component builds on: the built-in container wiring in one
3
+ * factory, so a plugin never touches an editor context key. Call synchronously during
4
+ * component init: `getContext` reads the ancestor contexts and `useContainerWindowing`
5
+ * sets its own.
6
6
  */
7
- import type { BlockEditActions, CommitAfterTick, FocusActions } from '../../action-contracts';
7
+ import type { BlockEditActions, FocusActions } from '../../action-contracts';
8
8
  import type { NodeView } from '../../core/node-views';
9
9
  import type { AmbientPrefix, BlockComponent, ContainerBlockComponent } from '../../block-component';
10
- import { type KindCommandTarget } from '../../schema/block-commands';
10
+ import type { KindCommandTarget } from '../../schema/block-commands';
11
11
  import { type PresentationMode } from '../../presentation-mode';
12
- import { type PluginEditorLookup } from '../../editor-keys';
12
+ import type { EditorContext } from '../../schema/plugin-install';
13
13
  import type { WindowResult } from '../../reactivity/block-window.svelte';
14
14
  import type { RefSlots } from '../../reactivity/publish-ref.svelte';
15
- import { type NestedActionsOverrideFactory } from '../nested/nested-actions';
15
+ import type { NestedActionsOverrideFactory } from '../nested/nested-actions';
16
16
  /**
17
- * The frozen inputs the host component feeds in. A function-valued field is a **live
18
- * read**, re-evaluated on every use; a plain-valued field is static configuration.
19
- * `getBoxEl` returns the chrome box whose direct `.block-list` child the windowing
20
- * lookups walk, so chrome siblings beside the list are fine.
17
+ * The inputs the host component feeds in. A function-valued field is a live read,
18
+ * re-evaluated on every use; a plain-valued field is static configuration. `getBoxEl` returns
19
+ * the block's box, whose direct `.block-list` child windowing reads (other elements may sit
20
+ * beside it). It must read a `$state` element, or the list's first height guesses, made
21
+ * before the box exists, are never redone.
21
22
  */
22
23
  export interface ContainerBlockDeps {
23
24
  getNode(): NodeView;
24
25
  getIndex(): number;
25
26
  getPath(): number[];
26
27
  getBoxEl(): HTMLElement | undefined;
27
- /**
28
- * Opt into whole-block focus for an opaque, childless container: the element that
29
- * takes DOM focus. The kind must also declare `blockFocus: 'whole-block'`. Supply
30
- * a surface for EVERY steady state — a null degrades to the box with a dev warning.
31
- */
28
+ /** The element that takes DOM focus, opting a childless container into whole-block focus (the
29
+ * kind also declares `blockFocus: 'whole-block'`); null falls back to the box, with a dev warning. */
32
30
  getFocusEl?: () => HTMLElement | null | undefined;
33
- /** Escape hatch only: the clamp derives from a declared `reservedChrome.isCollapsed`. */
31
+ /** Escape hatch only: the collapsed state comes from a declared `reservedChrome.isCollapsed`. */
34
32
  isCollapsed?: () => boolean;
35
- /** View-state hooks handed to a minted block command as `ctx.hooks`; typed `unknown`. */
33
+ /** View-state hooks handed to a block command as `ctx.hooks`; typed `unknown`. */
36
34
  commandHooks?: () => unknown;
37
- /** Ambient prefix painted before the FIRST child's bytes — the listItem `- ` model. */
35
+ /** The marker prefix drawn before the first child's bytes, like a list item's `- `. */
38
36
  getAmbientPrefix?: () => AmbientPrefix;
39
37
  }
40
38
  /**
@@ -53,92 +51,66 @@ export interface ContainerBlockListProps {
53
51
  }
54
52
  export type { ContainerBlockComponent };
55
53
  export interface ContainerBlock {
56
- /** Spread onto `<BlockList {...blockListProps} />` inside the chrome box. */
54
+ /** Spread onto `<BlockList {...blockListProps} />` inside the block's box. */
57
55
  blockListProps: ContainerBlockListProps;
58
- /** The live EFFECTIVE mode, for gating edit affordances. Preferred over the DOM probe. */
56
+ /** The live effective mode, for disabling edit controls. Preferred over reading the DOM. */
59
57
  getPresentationMode(): PresentationMode;
60
58
  /**
61
- * The live editor theme name (`data-editor-theme`). A body painted by an engine
59
+ * The live editor theme name (`data-editor-theme`). A body drawn by a rendering library
62
60
  * rather than CSS must key its render on this and re-render when it changes.
63
61
  */
64
62
  getTheme(): string;
65
- /**
66
- * This editor instance's options for the plugin owning this block's kind — the
67
- * `{ plugin, options }` entry's channel, so two editors in one process configure the
68
- * same kind differently. `unknown`, like `commandHooks`: the plugin narrows it.
69
- */
63
+ /** This editor's options for the plugin owning this block's kind (its `{ plugin, options }`
64
+ * entry), so two editors can configure one kind differently. `unknown`: the plugin narrows it. */
70
65
  getOptions(): unknown;
71
- /** The `BlockComponent` surface the host re-exports for BlockHost. */
66
+ /** This editor's context for the plugin that owns this block's kind; undefined in a bare
67
+ * harness. Its `computeInlineContent` reads the inline syntax this editor draws. */
68
+ getEditor(): EditorContext | undefined;
69
+ /** The `BlockComponent` the host re-exports for BlockHost. */
72
70
  containerApi: ContainerBlockComponent;
71
+ /** Commit a shallow metadata patch as one undo entry, through the kind's `rebuildRaw`; the commit
72
+ * puts the caret at `caret`, relative to this container (`[]` is the block), once it renders. */
73
+ updateOwnMetadata(patch: Record<string, unknown>, options?: {
74
+ caret?: {
75
+ path: number[];
76
+ offset: number;
77
+ };
78
+ }): void | Promise<void>;
73
79
  /**
74
- * Commit a shallow metadata patch on THIS container as one undoable entry, through
75
- * the kind's `rebuildRaw`. `afterTick` runs once the commit's DOM has settled.
76
- */
77
- updateOwnMetadata(patch: Record<string, unknown>, afterTick?: CommitAfterTick): void | Promise<void>;
78
- /**
79
- * Attach to the chrome box: a chord bubbling from an inner leaf resolves against
80
- * this kind's keymap. Kind-only, so a bubbled undo/redo never double-fires.
80
+ * Attach to the block's box: a chord bubbling from an inner leaf resolves against this
81
+ * kind's keymap. Kind keymap only, so a bubbled undo or redo never fires twice.
81
82
  */
82
83
  handleKeydown(e: KeyboardEvent): void;
83
- /**
84
- * Hand the caret to the neighbour a plain arrow points at — the boundary exit for a
85
- * plugin-owned editable whose caret has reached its own edge. Routes through the
86
- * editor's focus traversal, so the landing inherits skip-non-focusable, container
87
- * entry and windowing reveal. False for a modified or non-arrow key: leave it native.
88
- */
84
+ /** Hand the caret, through the editor's focus traversal, to the neighbour a plain arrow points
85
+ * at once a plugin editor's caret reaches its edge. False for a modified or non-arrow key. */
89
86
  moveFocusOut(e: KeyboardEvent): boolean;
90
- /**
91
- * The reader's scroll position, captured now. Call before a state flip that swaps this
92
- * block's view for one of a different height, then await the returned restore: the
93
- * scrollport is back where it was once the swap has flushed. A reveal in flight outranks
94
- * it and the restore stands down.
95
- */
87
+ /** Read the scroll position before swapping this block's view for one of another height, and
88
+ * await the returned restore after the swap renders. A scroll-into-view in progress wins. */
96
89
  captureScrollPosition(): () => Promise<void>;
97
90
  }
98
- /**
99
- * Collapse-ness has ONE definition: the descriptor's `reservedChrome.isCollapsed`
100
- * probe. An explicit dep is dev-cross-checked against it, except in reading mode,
101
- * which cannot write — a reader's open section is legitimately ahead of the document.
102
- */
103
- export declare function composeCollapseProbe(explicit: (() => boolean) | undefined, getNode: () => NodeView, getPresentationMode?: () => PresentationMode): () => boolean;
104
- /**
105
- * The expand door a reveal opens before descending into a collapsed body. Commits
106
- * `reservedChrome.expandPatch` as a real undoable edit, not a view-only divergence
107
- * from the CST; declines in reading mode, which commits nothing.
108
- */
91
+ /** Collapsed means the descriptor's `reservedChrome.isCollapsed`; a dev build checks an explicit dep
92
+ * against it, except in reading mode, where a section the user opened is ahead of the document. */
93
+ export declare function composeCollapseProbe(explicit: (() => boolean) | undefined, getNode: () => NodeView, getPresentationMode: () => PresentationMode): () => boolean;
94
+ /** Open a collapsed body before a descent goes into it, as an undoable commit of
95
+ * `reservedChrome.expandPatch`; declines in reading mode, which commits nothing. */
109
96
  export declare function composeExpandDoor(deps: {
110
97
  getNode: () => NodeView;
111
98
  isCollapsed: () => boolean;
112
99
  getPresentationMode: () => PresentationMode;
113
100
  commit: (patch: Record<string, unknown>) => void | Promise<void>;
114
101
  }): () => Promise<boolean>;
115
- /**
116
- * The `updateOwnMetadata` gate: reading mode writes no bytes (plugin-contract.md), so the
117
- * commit declines as a no-op and DEV names the kind that knocked.
118
- */
119
- export declare function composeMetadataDoor(deps: {
120
- getNode: () => NodeView;
121
- getPresentationMode: () => PresentationMode;
122
- commit: (patch: Record<string, unknown>, afterTick?: CommitAfterTick) => void | Promise<void>;
123
- }): ContainerBlock['updateOwnMetadata'];
124
- /** While collapsed the body is unmounted, so `descendToBody` would mint an invisible one. */
125
- export declare function gateDescendOnCollapse(isCollapsed: (() => boolean) | undefined, descend: (innerIndex: number) => void | Promise<void>): (innerIndex: number) => Promise<void>;
126
- /**
127
- * While collapsed only the chrome row is mounted, so an interior `moveFocus`
128
- * targeting a body index dead-ends on the unmounted ref. Route body targets past the
129
- * container instead — the same exit an open container's past-end move takes.
130
- */
102
+ /** While collapsed the body is unmounted, so `descendToBody` would create an invisible one. */
103
+ export declare function gateDescendOnCollapse(isCollapsed: (() => boolean) | undefined, descend: (innerIndex: number) => Promise<boolean>): (innerIndex: number) => Promise<boolean>;
104
+ /** While collapsed only the title row is mounted, so a `moveFocus` at a body index goes past the
105
+ * container instead, as an open container's past-the-end move does. */
131
106
  export declare function gateMoveFocusOnCollapse(isCollapsed: (() => boolean) | undefined, moveWithin: FocusActions['moveFocus'], parentFocus: FocusActions, getIndex: () => number): FocusActions['moveFocus'];
132
107
  export type NestedActionsOverrides = ReturnType<NestedActionsOverrideFactory>;
133
- /** Each surface spreads its base first: a gate ADDS a member, never replaces one. */
108
+ /** Each group spreads its base first: a check adds a member, never replaces one. */
134
109
  export declare function composeCollapseGates(base: NestedActionsOverrides, gates: {
135
110
  descendToBody: NonNullable<BlockEditActions['descendToBody']>;
136
111
  moveFocus: FocusActions['moveFocus'];
137
112
  }): NestedActionsOverrides;
138
- /**
139
- * The kind-command target a plugin container bubbles into `dispatchKindCommand`.
140
- * `runCommand` is inert — a plugin container owns no built-in kind commands, so a
141
- * chord resolves only through a registered one.
142
- */
143
- export declare function buildContainerKindTarget(deps: Pick<ContainerBlockDeps, 'getNode' | 'commandHooks'>, updateOwnMetadata: ContainerBlock['updateOwnMetadata'], pluginEditor?: PluginEditorLookup): KindCommandTarget;
113
+ /** The kind-command target a plugin container hands to `dispatchKindCommand`. It has no
114
+ * `runCommand`, since a plugin container owns no built-in kind commands. */
115
+ export declare function buildContainerKindTarget(deps: Pick<ContainerBlockDeps, 'getNode' | 'commandHooks'>, updateOwnMetadata: ContainerBlock['updateOwnMetadata']): KindCommandTarget;
144
116
  export declare function createContainerBlock(deps: ContainerBlockDeps): ContainerBlock;
@@ -1,50 +1,44 @@
1
1
  /**
2
- * The container-authoring seam a plugin block component builds on: the built-in
3
- * container wiring collapsed into one factory, so a plugin never touches an editor
4
- * context key. Call synchronously during component init — `getContext` reads the
5
- * ancestor contexts and `useContainerWindowing` sets its own.
2
+ * What a plugin's container component builds on: the built-in container wiring in one
3
+ * factory, so a plugin never touches an editor context key. Call synchronously during
4
+ * component init: `getContext` reads the ancestor contexts and `useContainerWindowing`
5
+ * sets its own.
6
6
  */
7
- import { DEV } from 'esm-env';
7
+ import { isDevChecks } from '../../env';
8
8
  import { getContext } from 'svelte';
9
9
  import { getBlockKindDescriptor } from '../../schema/block-kind-descriptor';
10
10
  import { expandContainerPatch, isCollapsedContainer } from '../../schema/reserved-chrome';
11
- import { dispatchKindCommand } from '../../schema/block-commands';
12
- import { eventToChord } from '../../schema/keybindings';
11
+ import { commandForKey } from '../../schema/commands';
13
12
  import { isReadingMode } from '../../presentation-mode';
14
13
  import { devWarn } from '../../dev-warn';
15
- import { BLOCK_EDIT_KEY, CONTAINER_EDIT_KEY, EDITOR_DOC_KEY, EDITOR_POLICIES_KEY, EDITOR_SERVICES_KEY, FOCUS_KEY, HISTORY_KEY } from '../../editor-keys';
16
- import { captureScrollPosition } from '../../cursor/scroll-hold';
17
- import { emitCommandError } from '../../editor-events';
18
- import { owningPluginEditor } from '../../schema/plugin-install';
19
- import { createBlockListState } from '../../reactivity/block-list-state.svelte';
14
+ import { blockAccessibleName } from '../../a11y-strings';
15
+ import { EDITOR_DOC_KEY, EDITOR_POLICIES_KEY, EDITOR_SERVICES_KEY } from '../../editor-keys';
16
+ import { componentPluginEditor } from '../../schema/block-component-registry';
20
17
  import { useContainerWindowing } from '../../reactivity/use-container-windowing.svelte';
21
18
  import { createContainerExitOverrides } from '../container-exit-overrides';
22
- import { createContainerBlockComponent, focusAcrossBlockEdge, handleEditorGlobalChord, handleWholeBlockKeys } from '../container-block-component';
19
+ import { delegateMoveFocus } from '../focus/focus-dispatch';
20
+ import { createContainerBlockComponent, dispatchContainerChord, dispatchWholeBlockGlobalChord, focusAcrossBlockEdge, handleWholeBlockKeys } from '../container-block-component';
23
21
  import { composeWholeBlockFocusSurface, createWholeBlockInputProxy, holdsWholeBlockFocus, isEditableEventTarget } from '../whole-block-focus-surface';
24
- import { createStandardNestedActions, setNestedActionsContexts } from '../nested/nested-actions';
22
+ import { createContainerActions } from '../nested/container-actions';
25
23
  const _conforms = [true, true];
26
- // ── Collapse gates ───────────────────────────────────────────────────────────
27
- /**
28
- * Collapse-ness has ONE definition: the descriptor's `reservedChrome.isCollapsed`
29
- * probe. An explicit dep is dev-cross-checked against it, except in reading mode,
30
- * which cannot write — a reader's open section is legitimately ahead of the document.
31
- */
24
+ // ── Collapsed-container checks ───────────────────────────────────────────────
25
+ /** Collapsed means the descriptor's `reservedChrome.isCollapsed`; a dev build checks an explicit dep
26
+ * against it, except in reading mode, where a section the user opened is ahead of the document. */
32
27
  export function composeCollapseProbe(explicit, getNode, getPresentationMode) {
33
28
  if (!explicit)
34
29
  return () => isCollapsedContainer(getNode());
35
30
  return () => {
36
31
  const value = explicit();
37
- if (DEV && value !== isCollapsedContainer(getNode()) && !isReadingMode(getPresentationMode)) {
32
+ if (isDevChecks() &&
33
+ value !== isCollapsedContainer(getNode()) &&
34
+ !isReadingMode(getPresentationMode)) {
38
35
  devWarn('plugin-container', `isCollapsed dep disagrees with the declared reservedChrome.isCollapsed probe for kind "${getNode().kind}"`);
39
36
  }
40
37
  return value;
41
38
  };
42
39
  }
43
- /**
44
- * The expand door a reveal opens before descending into a collapsed body. Commits
45
- * `reservedChrome.expandPatch` as a real undoable edit, not a view-only divergence
46
- * from the CST; declines in reading mode, which commits nothing.
47
- */
40
+ /** Open a collapsed body before a descent goes into it, as an undoable commit of
41
+ * `reservedChrome.expandPatch`; declines in reading mode, which commits nothing. */
48
42
  export function composeExpandDoor(deps) {
49
43
  return async () => {
50
44
  if (!deps.isCollapsed() || isReadingMode(deps.getPresentationMode))
@@ -56,46 +50,26 @@ export function composeExpandDoor(deps) {
56
50
  return true;
57
51
  };
58
52
  }
59
- /**
60
- * The `updateOwnMetadata` gate: reading mode writes no bytes (plugin-contract.md), so the
61
- * commit declines as a no-op and DEV names the kind that knocked.
62
- */
63
- export function composeMetadataDoor(deps) {
64
- return (patch, afterTick) => {
65
- if (isReadingMode(deps.getPresentationMode)) {
66
- devWarn('plugin-container', `updateOwnMetadata declined: reading mode writes no bytes (kind "${deps.getNode().kind}")`);
67
- return;
68
- }
69
- return deps.commit(patch, afterTick);
70
- };
71
- }
72
- /** While collapsed the body is unmounted, so `descendToBody` would mint an invisible one. */
53
+ /** While collapsed the body is unmounted, so `descendToBody` would create an invisible one. */
73
54
  export function gateDescendOnCollapse(isCollapsed, descend) {
74
55
  return async (innerIndex) => {
75
56
  if (isCollapsed?.())
76
- return;
77
- await descend(innerIndex);
57
+ return false;
58
+ return descend(innerIndex);
78
59
  };
79
60
  }
80
- /**
81
- * While collapsed only the chrome row is mounted, so an interior `moveFocus`
82
- * targeting a body index dead-ends on the unmounted ref. Route body targets past the
83
- * container instead — the same exit an open container's past-end move takes.
84
- */
61
+ /** While collapsed only the title row is mounted, so a `moveFocus` at a body index goes past the
62
+ * container instead, as an open container's past-the-end move does. */
85
63
  export function gateMoveFocusOnCollapse(isCollapsed, moveWithin, parentFocus, getIndex) {
86
64
  return async (innerIndex, position, options) => {
87
65
  if (innerIndex >= 1 && isCollapsed?.()) {
88
- // Omit the options arg when unset, mirroring dispatchMoveFocus's own delegation.
89
- if (options)
90
- await parentFocus.moveFocus(getIndex() + 1, position, options);
91
- else
92
- await parentFocus.moveFocus(getIndex() + 1, position);
66
+ await delegateMoveFocus(parentFocus, getIndex() + 1, position, options);
93
67
  return;
94
68
  }
95
69
  await moveWithin(innerIndex, position, options);
96
70
  };
97
71
  }
98
- /** Each surface spreads its base first: a gate ADDS a member, never replaces one. */
72
+ /** Each group spreads its base first: a check adds a member, never replaces one. */
99
73
  export function composeCollapseGates(base, gates) {
100
74
  return {
101
75
  ...base,
@@ -104,128 +78,93 @@ export function composeCollapseGates(base, gates) {
104
78
  };
105
79
  }
106
80
  // ── Kind-command target ──────────────────────────────────────────────────────
107
- /**
108
- * The kind-command target a plugin container bubbles into `dispatchKindCommand`.
109
- * `runCommand` is inert — a plugin container owns no built-in kind commands, so a
110
- * chord resolves only through a registered one.
111
- */
112
- export function buildContainerKindTarget(deps, updateOwnMetadata, pluginEditor) {
81
+ /** The kind-command target a plugin container hands to `dispatchKindCommand`. It has no
82
+ * `runCommand`, since a plugin container owns no built-in kind commands. */
83
+ export function buildContainerKindTarget(deps, updateOwnMetadata) {
113
84
  return {
114
85
  get kind() {
115
86
  return deps.getNode().kind;
116
87
  },
117
- runCommand: () => false,
118
88
  getCommandContext: () => ({
119
89
  node: deps.getNode(),
120
90
  updateMetadata: (patch) => {
121
91
  void updateOwnMetadata(patch);
122
92
  },
123
- hooks: deps.commandHooks?.(),
124
- editor: owningPluginEditor(pluginEditor, deps.getNode().kind)
93
+ hooks: deps.commandHooks?.()
125
94
  })
126
95
  };
127
96
  }
128
97
  // ── Factory ──────────────────────────────────────────────────────────────────
129
98
  export function createContainerBlock(deps) {
130
- const parentBlockEdit = getContext(BLOCK_EDIT_KEY);
131
- const parentFocus = getContext(FOCUS_KEY);
132
- const parentContainerEdit = getContext(CONTAINER_EDIT_KEY);
133
- const history = getContext(HISTORY_KEY);
134
- const { stickyColumn, edgeAffinity, selection, reorder, revealAnchor, events: editorEvents, registryView, activePlugins } = getContext(EDITOR_SERVICES_KEY);
135
- const { keybindingOverrides, presentationMode: getPresentationMode, theme: getTheme } = getContext(EDITOR_POLICIES_KEY);
136
- const editorDoc = getContext(EDITOR_DOC_KEY);
137
- const pluginEditor = editorDoc?.pluginEditor;
138
- const linkRef = editorDoc?.linkRef;
139
- // Resolved by the kind's recorded owner, like the kind-command context's `editor`.
140
- const getOptions = () => owningPluginEditor(pluginEditor, deps.getNode().kind)?.options;
141
- const listState = createBlockListState(deps.getNode);
142
- // One live scope over the frozen thunks, shared by every factory this seam wires.
143
- // Passed by reference, never spread — spreading would snapshot the getters.
144
- const scope = {
145
- get index() {
146
- return deps.getIndex();
147
- },
148
- get node() {
149
- return deps.getNode();
150
- },
151
- get path() {
152
- return deps.getPath();
153
- }
154
- };
99
+ const { caretMemory, selection, scrollOwner, commands } = getContext(EDITOR_SERVICES_KEY);
100
+ const { theme: getTheme } = getContext(EDITOR_POLICIES_KEY);
101
+ const { pluginEditor, reading } = getContext(EDITOR_DOC_KEY);
102
+ const getPresentationMode = reading.mode;
103
+ const getEditor = () => componentPluginEditor(pluginEditor, deps.getNode().kind);
104
+ const getOptions = () => getEditor()?.options;
155
105
  const collapsed = composeCollapseProbe(deps.isCollapsed, deps.getNode, getPresentationMode);
156
- const containerExitOverrides = createContainerExitOverrides({ scope, parentBlockEdit });
157
- // All three override the same `defaults`, so they coexist; for a non-collapsing
158
- // container the gates are inert.
159
- const overrideFactory = (defaults) => composeCollapseGates(containerExitOverrides(defaults), {
160
- descendToBody: gateDescendOnCollapse(collapsed, defaults.blockEdit.descendToBody),
161
- moveFocus: gateMoveFocusOnCollapse(collapsed, defaults.focus.moveFocus, parentFocus, deps.getIndex)
106
+ const { state: listState, parent: { blockEdit: parentBlockEdit, focus: parentFocus } } = createContainerActions({
107
+ getNode: deps.getNode,
108
+ getIndex: deps.getIndex,
109
+ getPath: deps.getPath,
110
+ childList: () => childList,
111
+ // The exit rules and the collapse gates override the same defaults, so they coexist; for a
112
+ // container that cannot collapse the gates are inert.
113
+ overrides: ({ scope, parent, reading }) => (defaults) => composeCollapseGates(createContainerExitOverrides({ scope, parentBlockEdit: parent.blockEdit, reading })(defaults), {
114
+ descendToBody: gateDescendOnCollapse(collapsed, defaults.blockEdit.descendToBody),
115
+ moveFocus: gateMoveFocusOnCollapse(collapsed, defaults.focus.moveFocus, parent.focus, deps.getIndex)
116
+ })
162
117
  });
163
- const bundle = createStandardNestedActions(listState, {
164
- scope,
165
- stickyColumn,
166
- grammar: registryView.grammar,
167
- getPresentationMode,
168
- linkRef,
169
- parent: {
170
- blockEdit: parentBlockEdit,
171
- focus: parentFocus,
172
- containerEdit: parentContainerEdit
173
- }
174
- }, overrideFactory);
175
- setNestedActionsContexts(bundle);
176
118
  const windowing = useContainerWindowing({
177
- getIndex: deps.getIndex,
178
119
  getParentPath: deps.getPath,
179
120
  getChildren: () => deps.getNode().children ?? [],
180
121
  getChildIds: () => listState.innerBlockIds,
181
122
  getListEl: () => deps.getBoxEl()?.querySelector(':scope > .block-list') ?? null,
182
- getOwnEl: () => deps.getBoxEl()?.closest('.block-host') ?? null,
183
- provideLeafChannel: true,
184
123
  isCollapsed: collapsed
185
124
  });
186
- // One composed surface feeds the shim AND the keydown gate, so a fallback-focused
187
- // box passes the same containment check the affordances use.
125
+ // One composed focus element feeds the component and the keydown check, so a box focused
126
+ // by the fallback passes the same containment check the key handling uses.
188
127
  const wholeBlockSurface = deps.getFocusEl
189
128
  ? composeWholeBlockFocusSurface(deps.getFocusEl, () => deps.getBoxEl(), () => deps.getNode().kind)
190
129
  : undefined;
191
130
  // The editing host AltGr and IME input arrive through: keydown alone drops both, and a
192
- // whole-block kind has no editable surface of its own to catch them.
131
+ // whole-block kind has no editable element of its own to catch them.
193
132
  const inputProxy = wholeBlockSurface
194
133
  ? createWholeBlockInputProxy({
195
134
  getBoxEl: () => deps.getBoxEl(),
196
135
  getFocusEl: wholeBlockSurface,
197
136
  isReading: () => isReadingMode(getPresentationMode),
137
+ getLabel: () => blockAccessibleName(deps.getNode()),
198
138
  mint: (text) => void parentBlockEdit.insertParagraph(deps.getIndex() + 1, text)
199
139
  })
200
140
  : undefined;
201
- // Through a closure, not the `updateOwnMetadata` value: that const is declared
202
- // below, and is only ever read at reveal time.
203
- const expandCollapsed = composeExpandDoor({
204
- getNode: deps.getNode,
141
+ const childList = {
142
+ count: () => deps.getNode().children?.length ?? 0,
143
+ refs: listState.refSlots,
144
+ windowing,
205
145
  isCollapsed: collapsed,
206
- getPresentationMode,
207
- commit: (patch) => updateOwnMetadata(patch)
208
- });
146
+ // Through a closure, not the `updateOwnMetadata` value: that const is declared below.
147
+ openCollapsed: composeExpandDoor({
148
+ getNode: deps.getNode,
149
+ isCollapsed: collapsed,
150
+ getPresentationMode,
151
+ commit: (patch) => updateOwnMetadata(patch)
152
+ })
153
+ };
209
154
  const containerApi = createContainerBlockComponent({
210
- // The kind's descriptor is the declaration; the mounted surface only reports it.
155
+ // The kind's descriptor is the declaration; the mounted component only reports it.
211
156
  get editable() {
212
157
  return getBlockKindDescriptor(deps.getNode().kind).editable;
213
158
  },
214
159
  selection,
160
+ reading,
215
161
  get innerBlockRefs() {
216
162
  return listState.innerBlockRefs;
217
163
  },
218
- refSlots: listState.refSlots,
219
- get nodeChildrenLength() {
220
- return deps.getNode().children?.length ?? 0;
221
- },
164
+ childList,
222
165
  get node() {
223
166
  return deps.getNode();
224
167
  },
225
- revealChild: windowing.revealChild,
226
- isInWindow: windowing.isInWindow,
227
- isCollapsed: collapsed,
228
- expandCollapsed,
229
168
  getFocusEl: wholeBlockSurface,
230
169
  getBoxEl: () => deps.getBoxEl(),
231
170
  inputProxy
@@ -244,63 +183,52 @@ export function createContainerBlock(deps) {
244
183
  get window() {
245
184
  return windowing.window;
246
185
  },
247
- // Opaque containers are a reorder boundary, so a handle on a chrome or body row
248
- // would be dead; the container itself reorders through its parent's BlockList.
249
- reorderable: false,
186
+ // The same declaration the keyboard's reorder reads, so a drag moves what Alt+Arrow moves.
187
+ get reorderable() {
188
+ return getBlockKindDescriptor(deps.getNode().kind).reorderChildren !== undefined;
189
+ },
250
190
  get ambientPrefixForFirst() {
251
191
  return deps.getAmbientPrefix?.() ?? '';
252
192
  }
253
193
  };
254
- const updateOwnMetadata = composeMetadataDoor({
255
- getNode: deps.getNode,
256
- getPresentationMode,
257
- commit: (patch, afterTick) => parentBlockEdit.updateBlockMetadata(deps.getIndex(), patch, { afterTick })
258
- });
259
- const kindTarget = buildContainerKindTarget(deps, updateOwnMetadata, pluginEditor);
260
- const globalChordDeps = {
261
- getKind: () => deps.getNode().kind,
262
- history,
263
- pluginEditor,
264
- onCommandError: (report) => emitCommandError(editorEvents, report),
265
- getKeybindingOverrides: keybindingOverrides,
266
- isReading: () => isReadingMode(getPresentationMode),
267
- activation: activePlugins
194
+ // Reading mode declines at the commit, which names the write in a dev build.
195
+ const updateOwnMetadata = async (patch, options) => {
196
+ await parentBlockEdit.updateBlockMetadata(deps.getIndex(), patch, options);
197
+ };
198
+ const kindTarget = buildContainerKindTarget(deps, updateOwnMetadata);
199
+ // Focused as a whole, the block is the one a reorder chord moves; a key bubbling from an
200
+ // inner leaf was that leaf's to move.
201
+ const wholeBlockTarget = {
202
+ get kind() {
203
+ return kindTarget.kind;
204
+ },
205
+ getCommandContext: kindTarget.getCommandContext,
206
+ getPath: deps.getPath
268
207
  };
208
+ const commandOf = (e) => commandForKey(e, deps.getNode().kind, commands);
269
209
  const handleKeydown = (e) => {
270
210
  if (e.defaultPrevented)
271
211
  return;
272
- const chord = eventToChord(e);
273
- // Own-surface only: a chord bubbling from an inner leaf already met the global tier
274
- // there, and re-firing it here would double-fire.
275
- if (chord && ownsWholeBlockFocus(e) && handleEditorGlobalChord(chord, globalChordDeps)) {
276
- e.preventDefault();
212
+ const ownsFocus = ownsWholeBlockFocus(e);
213
+ // Only when this block itself holds focus: a chord bubbling from an inner leaf already
214
+ // met the global chords there, and running it here would fire it twice.
215
+ if (ownsFocus && dispatchWholeBlockGlobalChord(e, deps.getNode().kind, commands))
277
216
  return;
278
- }
279
- if (chord &&
280
- dispatchKindCommand(chord, kindTarget,
281
- // A container bubble carries no range command: the leaf below it owns the format ids.
282
- {
283
- getPresentationMode,
284
- isCrossBlockRange: () => selection.isCrossBlock,
285
- crossBlockCommands: undefined
286
- }, keybindingOverrides(), (report) => emitCommandError(editorEvents, report))) {
287
- e.preventDefault();
217
+ if (dispatchContainerChord(e, ownsFocus ? wholeBlockTarget : kindTarget, commands))
288
218
  return;
289
- }
290
- handleWholeBlockKeydown(e);
219
+ if (ownsFocus)
220
+ handleWholeBlockKeydown(e);
291
221
  };
292
222
  const moveFocusOut = (e) => {
293
223
  if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey)
294
224
  return false;
295
- // Classified through the doors before the move (G2.10 / G4.31). A plugin editable
296
- // exposes no caret X to measure, so a vertical exit carries the column it arrived
297
- // with, exactly as a whole-block pass-through does.
298
- stickyColumn.noteKey(e);
299
- edgeAffinity.note(e);
225
+ // A plugin editor exposes no caret x to measure, so a vertical exit keeps the column it
226
+ // arrived with, exactly as a whole-block pass-through does.
227
+ caretMemory.noteKey(e, commandOf(e));
300
228
  return focusAcrossBlockEdge(e.key, { getIndex: deps.getIndex, focus: parentFocus });
301
229
  };
302
- // The three gates keep a focused sibling (a toolbar button would double-fire its click
303
- // and an Enter split) and a plugin's own editable surface untouched.
230
+ // The three checks keep a focused sibling (a toolbar button would fire its click and an
231
+ // Enter split) and a plugin's own editor untouched.
304
232
  function ownsWholeBlockFocus(e) {
305
233
  if (!wholeBlockSurface)
306
234
  return false;
@@ -314,29 +242,17 @@ export function createContainerBlock(deps) {
314
242
  return false;
315
243
  return !isEditableEventTarget(e.target);
316
244
  }
317
- // The whole-block-focus affordances, dispatched from the wrapper's bubble phase.
245
+ // The whole-block key handling, dispatched from the wrapper's bubble phase. A whole-block
246
+ // element is focusable by tabindex regardless of contenteditable, so it runs in reading mode.
318
247
  function handleWholeBlockKeydown(e) {
319
- if (!ownsWholeBlockFocus(e))
320
- return;
321
- // A whole-block surface is tabindex-focusable independent of contenteditable,
322
- // so this path is live in reading mode: arrows stay, edits gate.
323
- const reading = isReadingMode(getPresentationMode);
324
- // Alt-arrow reorder is inline because `runCommand` is inert here, so unlike
325
- // ThematicBreak it cannot come from dispatchKindCommand.
326
- if (e.altKey && (e.key === 'ArrowUp' || e.key === 'ArrowDown')) {
327
- e.preventDefault();
328
- if (!reading)
329
- void reorder.nudgeReorderUnit(deps.getPath(), e.key === 'ArrowUp' ? -1 : 1);
330
- return;
331
- }
332
248
  handleWholeBlockKeys(e, {
333
249
  getIndex: deps.getIndex,
334
250
  getRaw: () => deps.getNode().raw,
335
251
  blockEdit: parentBlockEdit,
336
252
  focus: parentFocus,
337
- isReading: () => reading,
338
- stickyColumn,
339
- edgeAffinity
253
+ isReading: () => isReadingMode(getPresentationMode),
254
+ caretMemory,
255
+ commandOf
340
256
  });
341
257
  }
342
258
  return {
@@ -345,9 +261,10 @@ export function createContainerBlock(deps) {
345
261
  updateOwnMetadata,
346
262
  handleKeydown,
347
263
  moveFocusOut,
348
- captureScrollPosition: () => captureScrollPosition(deps.getBoxEl(), () => revealAnchor.get() !== null),
264
+ captureScrollPosition: scrollOwner.keep,
349
265
  getPresentationMode,
350
266
  getTheme,
351
- getOptions
267
+ getOptions,
268
+ getEditor
352
269
  };
353
270
  }