@voithos-labs/aragonite 0.10.3 → 0.10.7

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