@voithos-labs/aragonite 0.10.4 → 0.10.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1021) hide show
  1. package/README.md +2 -2
  2. package/dist/a11y-strings.d.ts +11 -5
  3. package/dist/a11y-strings.js +60 -5
  4. package/dist/action-contracts.d.ts +242 -155
  5. package/dist/action-contracts.js +2 -2
  6. package/dist/active-editor.d.ts +3 -3
  7. package/dist/active-editor.js +8 -9
  8. package/dist/ambient/ambient-dom.d.ts +2 -5
  9. package/dist/ambient/ambient-dom.js +16 -62
  10. package/dist/assert.js +6 -5
  11. package/dist/block-component.d.ts +135 -109
  12. package/dist/block-component.js +30 -22
  13. package/dist/block-id.d.ts +6 -10
  14. package/dist/block-id.js +25 -14
  15. package/dist/bounded-memo.d.ts +5 -5
  16. package/dist/bounded-memo.js +6 -6
  17. package/dist/components/BlockDragHandle.svelte +12 -21
  18. package/dist/components/BlockHost.svelte +56 -134
  19. package/dist/components/BlockList.svelte +22 -19
  20. package/dist/components/DecorationOverlay.svelte +9 -10
  21. package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
  22. package/dist/components/Editor.svelte +603 -1126
  23. package/dist/components/Editor.svelte.d.ts +9 -20
  24. package/dist/components/GapCaret.svelte +26 -59
  25. package/dist/components/SelectionOverlay.svelte +26 -51
  26. package/dist/components/SelectionOverlay.svelte.d.ts +5 -3
  27. package/dist/components/TailInsert.svelte +8 -55
  28. package/dist/components/TailInsert.svelte.d.ts +4 -6
  29. package/dist/components/block-content-selector.d.ts +11 -11
  30. package/dist/components/block-content-selector.js +11 -11
  31. package/dist/components/block-el-lookup.d.ts +6 -0
  32. package/dist/components/block-el-lookup.js +27 -0
  33. package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
  34. package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
  35. package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
  36. package/dist/components/blocks/code/CodeBlock.svelte +255 -276
  37. package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
  38. package/dist/components/blocks/code/CodeBlockRail.svelte +72 -87
  39. package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
  40. package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
  41. package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
  42. package/dist/components/blocks/code/code-bootstrap.js +29 -34
  43. package/dist/components/blocks/code/code-context-actions.js +5 -4
  44. package/dist/components/blocks/code/code-enter.js +2 -2
  45. package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
  46. package/dist/components/blocks/code/code-fence-boundary.js +40 -66
  47. package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
  48. package/dist/components/blocks/code/code-fence-exit.js +24 -25
  49. package/dist/components/blocks/code/code-indent.d.ts +2 -2
  50. package/dist/components/blocks/code/code-indent.js +4 -7
  51. package/dist/components/blocks/code/code-languages.d.ts +16 -12
  52. package/dist/components/blocks/code/code-languages.js +57 -39
  53. package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
  54. package/dist/components/blocks/code/code-paste-surface.js +9 -18
  55. package/dist/components/blocks/code/code-renderer.d.ts +21 -5
  56. package/dist/components/blocks/code/code-renderer.js +90 -125
  57. package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
  58. package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
  59. package/dist/components/blocks/directive/activate-directives.js +18 -13
  60. package/dist/components/blocks/editable-leaf.d.ts +50 -74
  61. package/dist/components/blocks/editable-leaf.js +141 -203
  62. package/dist/components/blocks/editable-surface.d.ts +96 -100
  63. package/dist/components/blocks/editable-surface.js +101 -109
  64. package/dist/components/blocks/list/ListBlock.svelte +45 -90
  65. package/dist/components/blocks/list/ListItemBlock.svelte +93 -147
  66. package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +1 -0
  67. package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
  68. package/dist/components/blocks/list/task-checkbox.js +12 -7
  69. package/dist/components/blocks/plain-text-backend.d.ts +4 -20
  70. package/dist/components/blocks/plain-text-backend.js +9 -43
  71. package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
  72. package/dist/components/blocks/surface-wiring.svelte.js +15 -34
  73. package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
  74. package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
  75. package/dist/components/blocks/table/TableBlock.svelte +100 -165
  76. package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
  77. package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
  78. package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
  79. package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
  80. package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
  81. package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
  82. package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
  83. package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
  84. package/dist/components/blocks/table/cell-pointer.js +49 -71
  85. package/dist/components/blocks/table/cell-render.d.ts +24 -29
  86. package/dist/components/blocks/table/cell-render.js +29 -31
  87. package/dist/components/blocks/table/selected-cells.d.ts +7 -7
  88. package/dist/components/blocks/table/selected-cells.js +9 -13
  89. package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
  90. package/dist/components/blocks/table/table-caret-at-point.js +5 -5
  91. package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
  92. package/dist/components/blocks/table/table-cell-paste.js +27 -43
  93. package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
  94. package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
  95. package/dist/components/blocks/table/table-menu-model.js +6 -10
  96. package/dist/components/blocks/table/table-navigation.js +2 -2
  97. package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
  98. package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
  99. package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
  100. package/dist/components/blocks/text/auto-pair-record.js +51 -0
  101. package/dist/components/blocks/text/click-snap-guard.d.ts +8 -6
  102. package/dist/components/blocks/text/click-snap-guard.js +10 -7
  103. package/dist/components/blocks/text/composition-seat.d.ts +17 -14
  104. package/dist/components/blocks/text/composition-seat.js +11 -11
  105. package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
  106. package/dist/components/blocks/text/construct-edge-delete.js +50 -65
  107. package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
  108. package/dist/components/blocks/text/construct-reveal.js +13 -14
  109. package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
  110. package/dist/components/blocks/text/delimiter-autopair.js +87 -103
  111. package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
  112. package/dist/components/blocks/text/edge-policy-dispatch.js +150 -181
  113. package/dist/components/blocks/text/edge-seat.d.ts +17 -26
  114. package/dist/components/blocks/text/edge-seat.js +43 -70
  115. package/dist/components/blocks/text/link-at-point.d.ts +9 -9
  116. package/dist/components/blocks/text/link-at-point.js +12 -15
  117. package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
  118. package/dist/components/blocks/text/live-join-seam.js +75 -112
  119. package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
  120. package/dist/components/blocks/text/live-selection-edit.js +32 -108
  121. package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
  122. package/dist/components/blocks/text/live-split-rebalance.js +50 -67
  123. package/dist/components/blocks/text/marker-completion.d.ts +7 -12
  124. package/dist/components/blocks/text/marker-completion.js +17 -10
  125. package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
  126. package/dist/components/blocks/text/pending-mark-insert.js +30 -49
  127. package/dist/components/blocks/text/screen-diff.d.ts +5 -15
  128. package/dist/components/blocks/text/screen-diff.js +5 -19
  129. package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
  130. package/dist/components/blocks/text/text-clipboard.js +27 -32
  131. package/dist/components/blocks/text/text-keydown.d.ts +20 -30
  132. package/dist/components/blocks/text/text-keydown.js +54 -51
  133. package/dist/components/blocks/text/text-render.d.ts +25 -35
  134. package/dist/components/blocks/text/text-render.js +82 -61
  135. package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
  136. package/dist/components/blocks/text/widget-adjacency.js +17 -17
  137. package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
  138. package/dist/components/blocks/text/widget-interaction.js +212 -199
  139. package/dist/components/blocks/widget-portal.d.ts +20 -29
  140. package/dist/components/blocks/widget-portal.js +16 -14
  141. package/dist/components/built-in-blocks.d.ts +3 -4
  142. package/dist/components/built-in-blocks.js +17 -18
  143. package/dist/components/drag-handle.d.ts +12 -35
  144. package/dist/components/drag-handle.js +22 -68
  145. package/dist/components/editor-built-ins.d.ts +1 -0
  146. package/dist/components/editor-built-ins.js +16 -0
  147. package/dist/components/editor-root-clipboard.d.ts +6 -6
  148. package/dist/components/editor-root-clipboard.js +16 -27
  149. package/dist/components/editor-root-document-swap.d.ts +49 -0
  150. package/dist/components/editor-root-document-swap.js +54 -0
  151. package/dist/components/editor-root-focus.d.ts +5 -4
  152. package/dist/components/editor-root-focus.js +51 -22
  153. package/dist/components/editor-root-focused-surface.d.ts +35 -0
  154. package/dist/components/editor-root-focused-surface.js +65 -0
  155. package/dist/components/editor-root-geometry.d.ts +15 -24
  156. package/dist/components/editor-root-geometry.js +27 -31
  157. package/dist/components/editor-root-gestures.d.ts +39 -0
  158. package/dist/components/editor-root-gestures.js +189 -0
  159. package/dist/components/editor-root-keydown.d.ts +10 -25
  160. package/dist/components/editor-root-keydown.js +19 -43
  161. package/dist/components/editor-root-listeners.d.ts +22 -24
  162. package/dist/components/editor-root-listeners.js +49 -24
  163. package/dist/components/editor-root-menus.d.ts +51 -0
  164. package/dist/components/editor-root-menus.js +147 -0
  165. package/dist/components/editor-root-mode-flip.d.ts +16 -11
  166. package/dist/components/editor-root-mode-flip.js +36 -34
  167. package/dist/components/editor-root-scroll-host.d.ts +22 -0
  168. package/dist/components/editor-root-scroll-host.js +34 -0
  169. package/dist/components/editor-root-test-surface.d.ts +48 -0
  170. package/dist/components/editor-root-test-surface.js +6 -0
  171. package/dist/components/image/ImageOverlayHost.svelte +44 -35
  172. package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
  173. package/dist/components/image/ImageProperties.svelte +37 -41
  174. package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
  175. package/dist/components/image/ImageResizeHandles.svelte +14 -26
  176. package/dist/components/image/image-crop.d.ts +5 -11
  177. package/dist/components/image/image-crop.js +5 -11
  178. package/dist/components/image/image-edit-commit.d.ts +19 -16
  179. package/dist/components/image/image-edit-commit.js +74 -38
  180. package/dist/components/image/image-resize.d.ts +2 -5
  181. package/dist/components/image/image-resize.js +3 -6
  182. package/dist/components/image/image-widget-editing.d.ts +3 -3
  183. package/dist/components/image/image-widget-editing.js +9 -9
  184. package/dist/components/image/widget-dom.d.ts +2 -3
  185. package/dist/components/image/widget-dom.js +19 -24
  186. package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
  187. package/dist/components/image/widget-selection-state.svelte.js +26 -19
  188. package/dist/components/kind-cue.svelte.d.ts +21 -0
  189. package/dist/components/kind-cue.svelte.js +35 -0
  190. package/dist/components/link-card/LinkCard.svelte +115 -64
  191. package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
  192. package/dist/components/link-card/LinkCardHost.svelte +42 -33
  193. package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
  194. package/dist/components/link-card/link-card-commit.d.ts +16 -19
  195. package/dist/components/link-card/link-card-commit.js +21 -30
  196. package/dist/components/link-card/link-card-entry.d.ts +13 -23
  197. package/dist/components/link-card/link-card-entry.js +16 -24
  198. package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
  199. package/dist/components/link-card/link-card-state.svelte.js +2 -2
  200. package/dist/components/lrd-map-gate.d.ts +4 -11
  201. package/dist/components/lrd-map-gate.js +5 -11
  202. package/dist/components/menu/BlockMenu.svelte +20 -81
  203. package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
  204. package/dist/components/menu/InlineMenuHost.svelte +191 -0
  205. package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
  206. package/dist/components/menu/MenuIcon.svelte +3 -103
  207. package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
  208. package/dist/components/menu/SelectionToolbar.svelte +30 -35
  209. package/dist/components/menu/SelectionToolbar.svelte.d.ts +3 -5
  210. package/dist/components/menu/clipboard-actions.d.ts +3 -4
  211. package/dist/components/menu/clipboard-actions.js +3 -4
  212. package/dist/components/menu/default-context-actions.d.ts +4 -13
  213. package/dist/components/menu/default-context-actions.js +49 -67
  214. package/dist/components/menu/flyout-placement.d.ts +2 -2
  215. package/dist/components/menu/flyout-placement.js +2 -2
  216. package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
  217. package/dist/components/menu/menu-presence.svelte.js +19 -0
  218. package/dist/components/paste-image-arm.d.ts +6 -11
  219. package/dist/components/paste-image-arm.js +11 -18
  220. package/dist/components/portal.d.ts +2 -5
  221. package/dist/components/portal.js +4 -7
  222. package/dist/core/directive/activate.d.ts +4 -5
  223. package/dist/core/directive/activate.js +8 -9
  224. package/dist/core/directive/container-opener.js +13 -12
  225. package/dist/core/directive/grammar.d.ts +2 -5
  226. package/dist/core/directive/grammar.js +10 -10
  227. package/dist/core/directive/kinds.d.ts +4 -7
  228. package/dist/core/directive/kinds.js +14 -16
  229. package/dist/core/directive/registry.d.ts +12 -9
  230. package/dist/core/directive/registry.js +19 -20
  231. package/dist/core/directive/text-recognizer.d.ts +3 -2
  232. package/dist/core/directive/text-recognizer.js +5 -9
  233. package/dist/core/escapable.d.ts +1 -5
  234. package/dist/core/escapable.js +1 -5
  235. package/dist/core/inline/backticks.d.ts +3 -4
  236. package/dist/core/inline/backticks.js +3 -4
  237. package/dist/core/inline/character-refs.js +2 -1
  238. package/dist/core/inline/destination-bytes.d.ts +6 -3
  239. package/dist/core/inline/destination-bytes.js +50 -8
  240. package/dist/core/inline/entity-widget.d.ts +4 -3
  241. package/dist/core/inline/entity-widget.js +6 -6
  242. package/dist/core/inline/format-toggle.d.ts +22 -28
  243. package/dist/core/inline/format-toggle.js +97 -129
  244. package/dist/core/inline/html-entities.d.ts +2 -3
  245. package/dist/core/inline/html-entities.js +2 -3
  246. package/dist/core/inline/html-tag-grammar.js +6 -2
  247. package/dist/core/inline/image-dimensions.d.ts +2 -0
  248. package/dist/core/inline/image-dimensions.js +19 -2
  249. package/dist/core/inline/image-source-bytes.d.ts +11 -0
  250. package/dist/core/inline/image-source-bytes.js +71 -0
  251. package/dist/core/inline/index.d.ts +28 -21
  252. package/dist/core/inline/index.js +56 -34
  253. package/dist/core/inline/inline-cache.d.ts +12 -15
  254. package/dist/core/inline/inline-cache.js +11 -14
  255. package/dist/core/inline/inline-widgets.d.ts +54 -75
  256. package/dist/core/inline/inline-widgets.js +54 -62
  257. package/dist/core/inline/link-destination.d.ts +31 -0
  258. package/dist/core/inline/link-destination.js +129 -0
  259. package/dist/core/inline/link-reference-resolver.d.ts +8 -6
  260. package/dist/core/inline/link-reference-resolver.js +10 -6
  261. package/dist/core/inline/link-source-bytes.d.ts +31 -0
  262. package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
  263. package/dist/core/inline/live-edit/read-back.d.ts +29 -0
  264. package/dist/core/inline/live-edit/read-back.js +50 -0
  265. package/dist/core/inline/picture.d.ts +10 -0
  266. package/dist/core/inline/picture.js +40 -0
  267. package/dist/core/inline/scan/autolinks.d.ts +7 -8
  268. package/dist/core/inline/scan/autolinks.js +80 -59
  269. package/dist/core/inline/scan/brackets.d.ts +2 -2
  270. package/dist/core/inline/scan/brackets.js +6 -103
  271. package/dist/core/inline/scan/code-spans.d.ts +4 -0
  272. package/dist/core/inline/scan/code-spans.js +8 -0
  273. package/dist/core/inline/scan/emphasis.js +10 -14
  274. package/dist/core/inline/scan/index.d.ts +3 -1
  275. package/dist/core/inline/scan/index.js +32 -33
  276. package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
  277. package/dist/core/inline/scan/plugin-syntax.js +75 -89
  278. package/dist/core/inline/scan/scan-state.d.ts +2 -0
  279. package/dist/core/inline/scan/scan-state.js +1 -0
  280. package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
  281. package/dist/core/inline/scan/simple-nodes.js +2 -5
  282. package/dist/core/inline/scan/triggers.d.ts +17 -0
  283. package/dist/core/inline/scan/triggers.js +26 -0
  284. package/dist/core/inline/scan/url.js +8 -10
  285. package/dist/core/inline/transparency.d.ts +2 -1
  286. package/dist/core/inline/transparency.js +31 -15
  287. package/dist/core/inline/visibility.d.ts +30 -49
  288. package/dist/core/inline/visibility.js +31 -49
  289. package/dist/core/inline/walk.d.ts +4 -10
  290. package/dist/core/inline/walk.js +4 -10
  291. package/dist/core/inline-render.d.ts +22 -27
  292. package/dist/core/inline-render.js +51 -60
  293. package/dist/core/lines.d.ts +67 -26
  294. package/dist/core/lines.js +164 -33
  295. package/dist/core/metadata-parity.d.ts +9 -0
  296. package/dist/core/metadata-parity.js +25 -0
  297. package/dist/core/node-views.d.ts +7 -6
  298. package/dist/core/node-views.js +5 -5
  299. package/dist/core/nodes.d.ts +34 -44
  300. package/dist/core/nodes.js +4 -12
  301. package/dist/core/parser.d.ts +27 -34
  302. package/dist/core/parser.js +53 -67
  303. package/dist/core/parsers/blockquote.d.ts +5 -8
  304. package/dist/core/parsers/blockquote.js +11 -10
  305. package/dist/core/parsers/built-in-openers.d.ts +2 -5
  306. package/dist/core/parsers/built-in-openers.js +5 -8
  307. package/dist/core/parsers/fence-syntax.d.ts +36 -7
  308. package/dist/core/parsers/fence-syntax.js +61 -11
  309. package/dist/core/parsers/fenced-code.d.ts +16 -0
  310. package/dist/core/parsers/fenced-code.js +16 -15
  311. package/dist/core/parsers/heading.d.ts +19 -2
  312. package/dist/core/parsers/heading.js +50 -2
  313. package/dist/core/parsers/html-block.d.ts +3 -6
  314. package/dist/core/parsers/html-block.js +10 -11
  315. package/dist/core/parsers/indented-code.d.ts +1 -1
  316. package/dist/core/parsers/indented-code.js +2 -8
  317. package/dist/core/parsers/link-reference.d.ts +5 -3
  318. package/dist/core/parsers/link-reference.js +116 -120
  319. package/dist/core/parsers/list.d.ts +12 -5
  320. package/dist/core/parsers/list.js +53 -36
  321. package/dist/core/parsers/paragraph.d.ts +3 -3
  322. package/dist/core/parsers/paragraph.js +14 -5
  323. package/dist/core/parsers/table-completion.d.ts +2 -5
  324. package/dist/core/parsers/table-completion.js +7 -10
  325. package/dist/core/parsers/table.d.ts +8 -8
  326. package/dist/core/parsers/table.js +23 -26
  327. package/dist/core/parsers/thematic-break.js +15 -14
  328. package/dist/core/paths.d.ts +13 -0
  329. package/dist/core/paths.js +31 -0
  330. package/dist/core/terminator-escalation.d.ts +0 -7
  331. package/dist/core/terminator-escalation.js +5 -8
  332. package/dist/core/url-policy.d.ts +2 -5
  333. package/dist/core/url-policy.js +8 -12
  334. package/dist/cursor/caret-memory.d.ts +34 -0
  335. package/dist/cursor/caret-memory.js +82 -0
  336. package/dist/cursor/coordinate-spaces.d.ts +26 -19
  337. package/dist/cursor/coordinate-spaces.js +32 -20
  338. package/dist/cursor/dom-walk.d.ts +7 -13
  339. package/dist/cursor/dom-walk.js +7 -13
  340. package/dist/cursor/edge-affinity.d.ts +7 -35
  341. package/dist/cursor/edge-affinity.js +13 -44
  342. package/dist/cursor/focused-caret.d.ts +6 -8
  343. package/dist/cursor/focused-caret.js +7 -16
  344. package/dist/cursor/height-model.d.ts +3 -3
  345. package/dist/cursor/height-model.js +5 -5
  346. package/dist/cursor/height-oracle.d.ts +10 -6
  347. package/dist/cursor/height-oracle.js +26 -74
  348. package/dist/cursor/observe-resize.d.ts +13 -0
  349. package/dist/cursor/observe-resize.js +43 -0
  350. package/dist/cursor/overlay-rects.d.ts +2 -5
  351. package/dist/cursor/overlay-rects.js +2 -5
  352. package/dist/cursor/overlay-remeasure.d.ts +6 -7
  353. package/dist/cursor/overlay-remeasure.js +10 -14
  354. package/dist/cursor/pending-marks.d.ts +7 -9
  355. package/dist/cursor/pending-marks.js +6 -27
  356. package/dist/cursor/point-offset.d.ts +16 -10
  357. package/dist/cursor/point-offset.js +60 -25
  358. package/dist/cursor/reveal-source.d.ts +7 -11
  359. package/dist/cursor/reveal-source.js +10 -18
  360. package/dist/cursor/scroll-ancestors.d.ts +9 -20
  361. package/dist/cursor/scroll-ancestors.js +14 -26
  362. package/dist/cursor/scroll-owner.d.ts +92 -0
  363. package/dist/cursor/scroll-owner.js +283 -0
  364. package/dist/cursor/scrollport.d.ts +14 -15
  365. package/dist/cursor/scrollport.js +7 -13
  366. package/dist/cursor/sticky-column.d.ts +6 -29
  367. package/dist/cursor/sticky-column.js +6 -49
  368. package/dist/cursor/sticky-measure.d.ts +14 -9
  369. package/dist/cursor/sticky-measure.js +99 -49
  370. package/dist/cursor/surface-backend.d.ts +41 -0
  371. package/dist/cursor/surface-backend.js +78 -0
  372. package/dist/cursor/typography-estimates.d.ts +3 -3
  373. package/dist/cursor/typography-estimates.js +3 -3
  374. package/dist/cursor/visual-lines.d.ts +25 -14
  375. package/dist/cursor/visual-lines.js +45 -46
  376. package/dist/cursor/widget-edge-snap.d.ts +10 -15
  377. package/dist/cursor/widget-edge-snap.js +13 -12
  378. package/dist/cursor/widget-offset.d.ts +110 -104
  379. package/dist/cursor/widget-offset.js +344 -179
  380. package/dist/debug/diagnostics-report.d.ts +6 -6
  381. package/dist/debug/diagnostics-report.js +5 -5
  382. package/dist/debug/dump-tree.js +2 -2
  383. package/dist/debug/editor-diagnostics.d.ts +15 -0
  384. package/dist/debug/editor-diagnostics.js +33 -0
  385. package/dist/debug/inspect.d.ts +2 -2
  386. package/dist/debug/inspect.js +4 -4
  387. package/dist/debug/interaction-trace.d.ts +14 -15
  388. package/dist/debug/interaction-trace.js +19 -20
  389. package/dist/debug/operations-log.d.ts +1 -1
  390. package/dist/debug/operations-log.js +1 -1
  391. package/dist/decorations/buckets.d.ts +6 -12
  392. package/dist/decorations/buckets.js +4 -11
  393. package/dist/decorations/decoration-state.svelte.d.ts +2 -3
  394. package/dist/decorations/decoration-state.svelte.js +24 -26
  395. package/dist/decorations/island-dom.d.ts +10 -18
  396. package/dist/decorations/island-dom.js +25 -50
  397. package/dist/decorations/reserved-attrs.d.ts +6 -8
  398. package/dist/decorations/reserved-attrs.js +30 -17
  399. package/dist/decorations/types.d.ts +6 -7
  400. package/dist/decorations/types.js +2 -1
  401. package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
  402. package/dist/decorations/use-block-decorations.svelte.js +71 -0
  403. package/dist/decorations/widget-dom.d.ts +3 -3
  404. package/dist/decorations/widget-dom.js +5 -5
  405. package/dist/dev-warn.d.ts +5 -2
  406. package/dist/dev-warn.js +16 -4
  407. package/dist/editor-actions/ancestry-folds.d.ts +9 -14
  408. package/dist/editor-actions/ancestry-folds.js +13 -18
  409. package/dist/editor-actions/block-edit-core.d.ts +49 -22
  410. package/dist/editor-actions/block-edit-core.js +279 -151
  411. package/dist/editor-actions/block-edit-scope.d.ts +63 -50
  412. package/dist/editor-actions/block-edit-scope.js +100 -48
  413. package/dist/editor-actions/block-edit.d.ts +2 -3
  414. package/dist/editor-actions/block-edit.js +14 -90
  415. package/dist/editor-actions/commit/history.d.ts +4 -4
  416. package/dist/editor-actions/commit/history.js +33 -34
  417. package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
  418. package/dist/editor-actions/commit/reading-write-gate.js +56 -0
  419. package/dist/editor-actions/commit/text-batch.d.ts +7 -11
  420. package/dist/editor-actions/commit/text-batch.js +6 -7
  421. package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
  422. package/dist/editor-actions/commit/undo-controller.js +346 -216
  423. package/dist/editor-actions/container-block-component.d.ts +32 -51
  424. package/dist/editor-actions/container-block-component.js +66 -92
  425. package/dist/editor-actions/container-edit.d.ts +4 -2
  426. package/dist/editor-actions/container-edit.js +14 -44
  427. package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
  428. package/dist/editor-actions/container-exit-overrides.js +19 -21
  429. package/dist/editor-actions/deps.d.ts +25 -32
  430. package/dist/editor-actions/enter-completion.d.ts +12 -15
  431. package/dist/editor-actions/enter-completion.js +49 -51
  432. package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
  433. package/dist/editor-actions/focus/focus-dispatch.js +28 -50
  434. package/dist/editor-actions/focus/focus-landing.d.ts +8 -11
  435. package/dist/editor-actions/focus/focus-landing.js +15 -14
  436. package/dist/editor-actions/focus/focus.d.ts +3 -2
  437. package/dist/editor-actions/focus/focus.js +42 -59
  438. package/dist/editor-actions/index.d.ts +4 -3
  439. package/dist/editor-actions/index.js +5 -4
  440. package/dist/editor-actions/inline-range-commit.d.ts +18 -16
  441. package/dist/editor-actions/inline-range-commit.js +45 -54
  442. package/dist/editor-actions/leaf-write.d.ts +11 -0
  443. package/dist/editor-actions/leaf-write.js +102 -0
  444. package/dist/editor-actions/list-context.d.ts +9 -10
  445. package/dist/editor-actions/list-context.js +115 -110
  446. package/dist/editor-actions/list-overrides.d.ts +13 -5
  447. package/dist/editor-actions/list-overrides.js +36 -12
  448. package/dist/editor-actions/merge-fallback.d.ts +10 -16
  449. package/dist/editor-actions/merge-fallback.js +11 -22
  450. package/dist/editor-actions/nested/container-actions.d.ts +37 -0
  451. package/dist/editor-actions/nested/container-actions.js +42 -0
  452. package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
  453. package/dist/editor-actions/nested/emptied-container.js +5 -0
  454. package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
  455. package/dist/editor-actions/nested/nested-actions.js +17 -15
  456. package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
  457. package/dist/editor-actions/nested/nested-block-edit.js +40 -134
  458. package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
  459. package/dist/editor-actions/nested/nested-focus.js +33 -21
  460. package/dist/editor-actions/paste-coordinator.d.ts +3 -2
  461. package/dist/editor-actions/paste-coordinator.js +17 -13
  462. package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
  463. package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
  464. package/dist/editor-actions/plugin/container.d.ts +54 -82
  465. package/dist/editor-actions/plugin/container.js +105 -188
  466. package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
  467. package/dist/editor-actions/plugin/directive-container.js +7 -8
  468. package/dist/editor-actions/reorder-action.d.ts +7 -12
  469. package/dist/editor-actions/reorder-action.js +32 -48
  470. package/dist/editor-actions/reorder-drag.d.ts +12 -8
  471. package/dist/editor-actions/reorder-drag.js +45 -41
  472. package/dist/editor-actions/replacement-focus.d.ts +13 -21
  473. package/dist/editor-actions/replacement-focus.js +32 -33
  474. package/dist/editor-actions/search-replace.js +71 -67
  475. package/dist/editor-actions/stored-caret.d.ts +7 -0
  476. package/dist/editor-actions/stored-caret.js +10 -0
  477. package/dist/editor-actions/table-context.d.ts +9 -11
  478. package/dist/editor-actions/table-context.js +70 -93
  479. package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
  480. package/dist/editor-actions/unwrap-strategies.js +52 -63
  481. package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
  482. package/dist/editor-actions/whole-block-focus-surface.js +43 -53
  483. package/dist/editor-events.d.ts +25 -29
  484. package/dist/editor-events.js +17 -28
  485. package/dist/editor-keys.d.ts +96 -104
  486. package/dist/editor-keys.js +11 -24
  487. package/dist/editor-props.d.ts +88 -71
  488. package/dist/editor-rects.d.ts +23 -34
  489. package/dist/editor-rects.js +9 -77
  490. package/dist/env.d.ts +6 -4
  491. package/dist/env.js +8 -4
  492. package/dist/index.d.ts +6 -2
  493. package/dist/index.js +5 -2
  494. package/dist/inline-menu/inline-menu-session.d.ts +37 -0
  495. package/dist/inline-menu/inline-menu-session.js +98 -0
  496. package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
  497. package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
  498. package/dist/inline-menu/types.d.ts +77 -0
  499. package/dist/inline-menu/types.js +7 -0
  500. package/dist/invariants/child-id-parity.d.ts +23 -0
  501. package/dist/invariants/child-id-parity.js +39 -0
  502. package/dist/invariants/commit-paths.d.ts +4 -4
  503. package/dist/invariants/commit-paths.js +4 -4
  504. package/dist/invariants/commit-scope.d.ts +4 -4
  505. package/dist/invariants/commit-scope.js +9 -8
  506. package/dist/invariants/context-keys.d.ts +2 -5
  507. package/dist/invariants/context-keys.js +3 -6
  508. package/dist/invariants/descriptor.d.ts +2 -6
  509. package/dist/invariants/descriptor.js +2 -6
  510. package/dist/invariants/inline-transitions.d.ts +9 -16
  511. package/dist/invariants/inline-transitions.js +10 -18
  512. package/dist/invariants/install.d.ts +18 -27
  513. package/dist/invariants/install.js +29 -30
  514. package/dist/invariants/keeps-a-block.d.ts +7 -0
  515. package/dist/invariants/keeps-a-block.js +14 -0
  516. package/dist/invariants/landable-caret.d.ts +5 -7
  517. package/dist/invariants/landable-caret.js +8 -11
  518. package/dist/invariants/landing-focus-scroll.d.ts +7 -0
  519. package/dist/invariants/landing-focus-scroll.js +13 -0
  520. package/dist/invariants/landing-value.d.ts +13 -0
  521. package/dist/invariants/landing-value.js +27 -0
  522. package/dist/invariants/marker-css-parity.d.ts +5 -6
  523. package/dist/invariants/marker-css-parity.js +11 -12
  524. package/dist/invariants/measures-in-own-list.d.ts +6 -0
  525. package/dist/invariants/measures-in-own-list.js +13 -0
  526. package/dist/invariants/node-shape.d.ts +18 -37
  527. package/dist/invariants/node-shape.js +123 -79
  528. package/dist/invariants/open-tail.d.ts +7 -0
  529. package/dist/invariants/open-tail.js +45 -0
  530. package/dist/invariants/placement-ends-widget.d.ts +8 -0
  531. package/dist/invariants/placement-ends-widget.js +13 -0
  532. package/dist/invariants/registry.d.ts +27 -66
  533. package/dist/invariants/registry.js +61 -137
  534. package/dist/invariants/render-fidelity.d.ts +4 -4
  535. package/dist/invariants/render-fidelity.js +5 -5
  536. package/dist/invariants/selection-endpoints.d.ts +6 -7
  537. package/dist/invariants/selection-endpoints.js +18 -16
  538. package/dist/invariants/single-node-sink.d.ts +4 -5
  539. package/dist/invariants/single-node-sink.js +4 -5
  540. package/dist/invariants/snapshot-integrity.d.ts +5 -6
  541. package/dist/invariants/snapshot-integrity.js +1 -1
  542. package/dist/invariants/structural-descriptor.d.ts +6 -15
  543. package/dist/invariants/structural-descriptor.js +6 -15
  544. package/dist/menu-icons.d.ts +47 -0
  545. package/dist/menu-icons.js +113 -0
  546. package/dist/perf/instruments.d.ts +20 -5
  547. package/dist/perf/instruments.js +35 -15
  548. package/dist/perf/use-mount-gauge.svelte.js +4 -4
  549. package/dist/plugin.d.ts +37 -8
  550. package/dist/plugin.js +100 -77
  551. package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
  552. package/dist/plugins/admonitions/admonition-kind.js +12 -10
  553. package/dist/plugins/admonitions/convert-document.d.ts +5 -5
  554. package/dist/plugins/admonitions/convert-document.js +8 -7
  555. package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
  556. package/dist/plugins/admonitions/gh-alert.js +21 -22
  557. package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
  558. package/dist/plugins/admonitions/github-alert-kind.js +28 -37
  559. package/dist/plugins/admonitions/index.js +2 -2
  560. package/dist/plugins/admonitions/kinds.d.ts +1 -1
  561. package/dist/plugins/admonitions/register.js +11 -2
  562. package/dist/plugins/details/DetailsBlock.svelte +20 -20
  563. package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
  564. package/dist/plugins/details/details-disclosure.svelte.js +6 -7
  565. package/dist/plugins/details/details-kind.d.ts +6 -7
  566. package/dist/plugins/details/details-kind.js +44 -59
  567. package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
  568. package/dist/plugins/emoji/emoji-recognizer.js +7 -14
  569. package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
  570. package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
  571. package/dist/plugins/footnotes/constants.d.ts +2 -0
  572. package/dist/plugins/footnotes/constants.js +3 -0
  573. package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
  574. package/dist/plugins/footnotes/footnote-definition.js +69 -45
  575. package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
  576. package/dist/plugins/footnotes/footnote-lookup.js +14 -26
  577. package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
  578. package/dist/plugins/footnotes/footnote-numbering.js +22 -31
  579. package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
  580. package/dist/plugins/footnotes/footnote-reference.js +8 -13
  581. package/dist/plugins/footnotes/index.js +2 -3
  582. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
  583. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
  584. package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
  585. package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
  586. package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
  587. package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
  588. package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
  589. package/dist/plugins/highlight-occurrences/word-char.js +4 -0
  590. package/dist/plugins/latex/BlockMath.svelte +58 -75
  591. package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
  592. package/dist/plugins/latex/MathInline.svelte +10 -9
  593. package/dist/plugins/latex/flanking.d.ts +1 -0
  594. package/dist/plugins/latex/flanking.js +3 -0
  595. package/dist/plugins/latex/index.d.ts +1 -1
  596. package/dist/plugins/latex/latex-kind.d.ts +4 -4
  597. package/dist/plugins/latex/latex-kind.js +78 -67
  598. package/dist/plugins/latex/math-completion.d.ts +1 -1
  599. package/dist/plugins/latex/math-completion.js +5 -8
  600. package/dist/plugins/latex/math-layout.d.ts +2 -8
  601. package/dist/plugins/latex/math-layout.js +0 -9
  602. package/dist/plugins/latex/math-renderer.d.ts +17 -20
  603. package/dist/plugins/latex/math-renderer.js +21 -38
  604. package/dist/plugins/latex/math-source.d.ts +4 -8
  605. package/dist/plugins/latex/math-source.js +36 -81
  606. package/dist/plugins/latex/register.d.ts +10 -11
  607. package/dist/plugins/latex/register.js +24 -10
  608. package/dist/plugins/latex/renderer.d.ts +9 -10
  609. package/dist/plugins/latex/renderer.js +9 -24
  610. package/dist/plugins/mermaid/MermaidBlock.svelte +51 -45
  611. package/dist/plugins/mermaid/index.js +1 -1
  612. package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
  613. package/dist/plugins/mermaid/mermaid-kind.js +30 -47
  614. package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
  615. package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
  616. package/dist/plugins/mermaid/register.d.ts +3 -3
  617. package/dist/plugins/mermaid/register.js +5 -5
  618. package/dist/plugins/mermaid/renderer.d.ts +5 -5
  619. package/dist/plugins/mermaid/renderer.js +8 -11
  620. package/dist/plugins/parrot/ParrotBlock.svelte +15 -6
  621. package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
  622. package/dist/plugins/parrot/parrot-plugin.js +3 -3
  623. package/dist/plugins/slash-commands/filter.d.ts +23 -0
  624. package/dist/plugins/slash-commands/filter.js +31 -0
  625. package/dist/plugins/slash-commands/index.d.ts +2 -0
  626. package/dist/plugins/slash-commands/index.js +2 -0
  627. package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
  628. package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
  629. package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
  630. package/dist/plugins/slash-commands/slash-source.js +108 -0
  631. package/dist/plugins/toc/TocBlock.svelte +23 -22
  632. package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
  633. package/dist/plugins/toc/heading-outline.d.ts +7 -12
  634. package/dist/plugins/toc/heading-outline.js +22 -36
  635. package/dist/plugins/toc/navigation-queue.d.ts +2 -4
  636. package/dist/plugins/toc/toc-plugin.d.ts +5 -5
  637. package/dist/plugins/toc/toc-plugin.js +20 -13
  638. package/dist/presentation-mode.d.ts +15 -23
  639. package/dist/presentation-mode.js +19 -25
  640. package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
  641. package/dist/reactivity/block-list-state.svelte.js +8 -9
  642. package/dist/reactivity/block-window.svelte.d.ts +12 -6
  643. package/dist/reactivity/block-window.svelte.js +44 -17
  644. package/dist/reactivity/child-list.d.ts +34 -0
  645. package/dist/reactivity/child-list.js +48 -0
  646. package/dist/reactivity/content-version.svelte.d.ts +4 -7
  647. package/dist/reactivity/content-version.svelte.js +3 -5
  648. package/dist/reactivity/hold-across.d.ts +39 -0
  649. package/dist/reactivity/hold-across.js +57 -0
  650. package/dist/reactivity/layout-state.svelte.d.ts +27 -0
  651. package/dist/reactivity/layout-state.svelte.js +51 -0
  652. package/dist/reactivity/list-tree.d.ts +39 -0
  653. package/dist/reactivity/list-tree.js +132 -0
  654. package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
  655. package/dist/reactivity/list-windowing.svelte.js +141 -310
  656. package/dist/reactivity/measure-batch.d.ts +6 -8
  657. package/dist/reactivity/measure-batch.js +5 -6
  658. package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
  659. package/dist/reactivity/publish-ref.svelte.js +21 -85
  660. package/dist/reactivity/scope-geometry.d.ts +6 -13
  661. package/dist/reactivity/scope-geometry.js +7 -14
  662. package/dist/reactivity/state-registry.d.ts +5 -5
  663. package/dist/reactivity/state-registry.js +11 -15
  664. package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
  665. package/dist/reactivity/use-container-windowing.svelte.js +64 -74
  666. package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
  667. package/dist/reactivity/use-measured-child.svelte.js +41 -0
  668. package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
  669. package/dist/reactivity/use-window-floor.svelte.js +27 -0
  670. package/dist/reactivity/window-slice.d.ts +4 -4
  671. package/dist/reactivity/window-slice.js +0 -2
  672. package/dist/renderer-slot.d.ts +48 -0
  673. package/dist/renderer-slot.js +85 -0
  674. package/dist/scan-index.d.ts +4 -4
  675. package/dist/scan-index.js +4 -4
  676. package/dist/schema/block-commands.d.ts +69 -54
  677. package/dist/schema/block-commands.js +91 -104
  678. package/dist/schema/block-completions.d.ts +16 -19
  679. package/dist/schema/block-completions.js +25 -32
  680. package/dist/schema/block-component-registry.d.ts +13 -14
  681. package/dist/schema/block-component-registry.js +19 -17
  682. package/dist/schema/block-kind-descriptor.d.ts +234 -168
  683. package/dist/schema/block-kind-descriptor.js +151 -66
  684. package/dist/schema/block-openers.d.ts +48 -39
  685. package/dist/schema/block-openers.js +73 -83
  686. package/dist/schema/built-in-descriptors.d.ts +3 -5
  687. package/dist/schema/built-in-descriptors.js +96 -80
  688. package/dist/schema/child-spans.d.ts +12 -10
  689. package/dist/schema/child-spans.js +68 -34
  690. package/dist/schema/closure.d.ts +18 -16
  691. package/dist/schema/closure.js +24 -14
  692. package/dist/schema/command-id.d.ts +6 -8
  693. package/dist/schema/command-id.js +20 -25
  694. package/dist/schema/commands.d.ts +78 -84
  695. package/dist/schema/commands.js +152 -117
  696. package/dist/schema/container-raw.d.ts +51 -11
  697. package/dist/schema/container-raw.js +143 -14
  698. package/dist/schema/container-rebuilders.d.ts +17 -15
  699. package/dist/schema/container-rebuilders.js +30 -22
  700. package/dist/schema/context-actions.d.ts +25 -13
  701. package/dist/schema/context-actions.js +32 -17
  702. package/dist/schema/define-plugin-block.d.ts +8 -6
  703. package/dist/schema/define-plugin-block.js +6 -4
  704. package/dist/schema/fenced-code-raw.d.ts +30 -17
  705. package/dist/schema/fenced-code-raw.js +155 -107
  706. package/dist/schema/global-commands.d.ts +6 -6
  707. package/dist/schema/global-commands.js +14 -22
  708. package/dist/schema/height-estimates.d.ts +31 -0
  709. package/dist/schema/height-estimates.js +64 -0
  710. package/dist/schema/inline-construct-policy.d.ts +42 -55
  711. package/dist/schema/inline-construct-policy.js +36 -35
  712. package/dist/schema/insert-catalogue.d.ts +30 -0
  713. package/dist/schema/insert-catalogue.js +95 -0
  714. package/dist/schema/keybinding-overrides.d.ts +9 -11
  715. package/dist/schema/keybinding-overrides.js +1 -1
  716. package/dist/schema/keybindings.d.ts +15 -7
  717. package/dist/schema/keybindings.js +21 -9
  718. package/dist/schema/merge-rules.d.ts +5 -7
  719. package/dist/schema/merge-rules.js +7 -9
  720. package/dist/schema/opener-priorities.d.ts +4 -4
  721. package/dist/schema/opener-priorities.js +4 -4
  722. package/dist/schema/operations.d.ts +8 -10
  723. package/dist/schema/operations.js +3 -3
  724. package/dist/schema/page-role.d.ts +14 -0
  725. package/dist/schema/page-role.js +19 -0
  726. package/dist/schema/plugin-activation.d.ts +4 -6
  727. package/dist/schema/plugin-activation.js +12 -10
  728. package/dist/schema/plugin-editor-context.d.ts +25 -10
  729. package/dist/schema/plugin-editor-context.js +40 -9
  730. package/dist/schema/plugin-install.d.ts +49 -17
  731. package/dist/schema/plugin-install.js +51 -25
  732. package/dist/schema/plugin-kind.d.ts +12 -8
  733. package/dist/schema/plugin-kind.js +35 -42
  734. package/dist/schema/plugin-name.js +3 -3
  735. package/dist/schema/plugin-registry.d.ts +54 -0
  736. package/dist/schema/plugin-registry.js +70 -0
  737. package/dist/schema/reading.d.ts +23 -0
  738. package/dist/schema/reading.js +7 -0
  739. package/dist/schema/register-once.d.ts +3 -5
  740. package/dist/schema/register-once.js +7 -16
  741. package/dist/schema/registration-checks.d.ts +12 -16
  742. package/dist/schema/registration-checks.js +35 -51
  743. package/dist/schema/registration-pairs.d.ts +54 -0
  744. package/dist/schema/registration-pairs.js +48 -0
  745. package/dist/schema/registration-pending.d.ts +8 -12
  746. package/dist/schema/registration-pending.js +9 -9
  747. package/dist/schema/registry-reset.d.ts +8 -4
  748. package/dist/schema/registry-reset.js +13 -26
  749. package/dist/schema/registry-view.d.ts +25 -13
  750. package/dist/schema/registry-view.js +26 -20
  751. package/dist/schema/reserved-chords.d.ts +9 -10
  752. package/dist/schema/reserved-chords.js +63 -80
  753. package/dist/schema/reserved-chrome.d.ts +12 -11
  754. package/dist/schema/reserved-chrome.js +15 -11
  755. package/dist/schema/setext-raw.d.ts +13 -0
  756. package/dist/schema/setext-raw.js +33 -0
  757. package/dist/schema/stored-as.d.ts +20 -0
  758. package/dist/schema/stored-as.js +6 -0
  759. package/dist/schema/table-cell-raw.d.ts +18 -7
  760. package/dist/schema/table-cell-raw.js +28 -7
  761. package/dist/schema/whole-block-unit.d.ts +5 -4
  762. package/dist/schema/whole-block-unit.js +5 -4
  763. package/dist/search/document-scan.d.ts +3 -3
  764. package/dist/search/document-scan.js +2 -2
  765. package/dist/search/matcher.d.ts +1 -1
  766. package/dist/search/regex-executor.d.ts +5 -6
  767. package/dist/search/regex-executor.js +6 -8
  768. package/dist/search/replace.d.ts +2 -5
  769. package/dist/search/replace.js +2 -5
  770. package/dist/search/search-state.svelte.d.ts +5 -5
  771. package/dist/search/search-state.svelte.js +12 -16
  772. package/dist/selection/autoscroll.d.ts +6 -9
  773. package/dist/selection/block-hit-test.d.ts +16 -24
  774. package/dist/selection/block-hit-test.js +29 -22
  775. package/dist/selection/caret-doors.d.ts +15 -14
  776. package/dist/selection/caret-doors.js +37 -26
  777. package/dist/selection/caret-landing.d.ts +62 -0
  778. package/dist/selection/caret-landing.js +157 -0
  779. package/dist/selection/caret-restore.d.ts +17 -10
  780. package/dist/selection/caret-restore.js +10 -22
  781. package/dist/selection/caret-target.d.ts +30 -0
  782. package/dist/selection/caret-target.js +84 -0
  783. package/dist/selection/char-endpoint-snap.d.ts +6 -10
  784. package/dist/selection/char-endpoint-snap.js +8 -14
  785. package/dist/selection/clipboard-text.d.ts +5 -12
  786. package/dist/selection/clipboard-text.js +69 -172
  787. package/dist/selection/covered-block.d.ts +6 -8
  788. package/dist/selection/covered-block.js +8 -19
  789. package/dist/selection/cross-block/clipboard.d.ts +3 -2
  790. package/dist/selection/cross-block/clipboard.js +13 -4
  791. package/dist/selection/cross-block/dispatch.d.ts +47 -43
  792. package/dist/selection/cross-block/dispatch.js +12 -23
  793. package/dist/selection/cross-block/format-range.d.ts +18 -21
  794. package/dist/selection/cross-block/format-range.js +104 -103
  795. package/dist/selection/cross-block/format-toggle.d.ts +10 -15
  796. package/dist/selection/cross-block/format-toggle.js +28 -33
  797. package/dist/selection/cross-block/keydown.d.ts +4 -4
  798. package/dist/selection/cross-block/keydown.js +92 -125
  799. package/dist/selection/cross-block/ops.d.ts +19 -34
  800. package/dist/selection/cross-block/ops.js +110 -95
  801. package/dist/selection/cross-block/paste.d.ts +2 -3
  802. package/dist/selection/cross-block/paste.js +59 -96
  803. package/dist/selection/cross-block/pointer.d.ts +17 -15
  804. package/dist/selection/cross-block/pointer.js +74 -25
  805. package/dist/selection/cross-block/type-replace.d.ts +4 -6
  806. package/dist/selection/cross-block/type-replace.js +51 -134
  807. package/dist/selection/dead-space-caret.d.ts +19 -30
  808. package/dist/selection/dead-space-caret.js +70 -88
  809. package/dist/selection/drag-pointer.d.ts +7 -9
  810. package/dist/selection/drag-pointer.js +23 -33
  811. package/dist/selection/gap-caret.d.ts +17 -28
  812. package/dist/selection/gap-caret.js +14 -26
  813. package/dist/selection/grid-selection.d.ts +12 -0
  814. package/dist/selection/grid-selection.js +22 -0
  815. package/dist/selection/keyboard-extend.d.ts +27 -40
  816. package/dist/selection/keyboard-extend.js +94 -117
  817. package/dist/selection/multi-click.d.ts +13 -18
  818. package/dist/selection/multi-click.js +32 -38
  819. package/dist/selection/native-bridge.d.ts +29 -39
  820. package/dist/selection/native-bridge.js +78 -127
  821. package/dist/selection/nearest-block.d.ts +17 -12
  822. package/dist/selection/nearest-block.js +37 -18
  823. package/dist/selection/path-lookup.d.ts +25 -16
  824. package/dist/selection/path-lookup.js +101 -18
  825. package/dist/selection/path-math.d.ts +9 -11
  826. package/dist/selection/path-math.js +5 -7
  827. package/dist/selection/pointer-gesture.d.ts +5 -5
  828. package/dist/selection/pointer-gesture.js +5 -5
  829. package/dist/selection/pointer-session.d.ts +10 -16
  830. package/dist/selection/pointer-session.js +6 -7
  831. package/dist/selection/primitives.d.ts +64 -40
  832. package/dist/selection/primitives.js +57 -67
  833. package/dist/selection/range-coverage.d.ts +94 -0
  834. package/dist/selection/range-coverage.js +365 -0
  835. package/dist/selection/range-delete-ceremony.d.ts +28 -74
  836. package/dist/selection/range-delete-ceremony.js +100 -141
  837. package/dist/selection/range-delete-chrome.d.ts +20 -33
  838. package/dist/selection/range-delete-chrome.js +53 -78
  839. package/dist/selection/range-delete-table-coverage.d.ts +11 -25
  840. package/dist/selection/range-delete-table-coverage.js +42 -112
  841. package/dist/selection/range-delete-table.d.ts +14 -12
  842. package/dist/selection/range-delete-table.js +106 -310
  843. package/dist/selection/range-delete.d.ts +18 -23
  844. package/dist/selection/range-delete.js +83 -123
  845. package/dist/selection/round-trip-restore.d.ts +18 -0
  846. package/dist/selection/round-trip-restore.js +19 -0
  847. package/dist/selection/selection-announcer.d.ts +17 -0
  848. package/dist/selection/selection-announcer.js +25 -0
  849. package/dist/selection/selection-description.d.ts +4 -3
  850. package/dist/selection/selection-description.js +5 -4
  851. package/dist/selection/selection-drop.d.ts +34 -16
  852. package/dist/selection/selection-drop.js +159 -95
  853. package/dist/selection/selection-restore.d.ts +20 -33
  854. package/dist/selection/selection-restore.js +21 -44
  855. package/dist/selection/selection-state.svelte.d.ts +50 -42
  856. package/dist/selection/selection-state.svelte.js +144 -98
  857. package/dist/selection/shared-keydown.d.ts +22 -27
  858. package/dist/selection/shared-keydown.js +25 -45
  859. package/dist/selection/table-endpoint-snap.d.ts +17 -41
  860. package/dist/selection/table-endpoint-snap.js +54 -80
  861. package/dist/selection/table-rect-extend.d.ts +3 -6
  862. package/dist/selection/table-rect-extend.js +19 -14
  863. package/dist/styles/editor-theme.css +60 -53
  864. package/dist/styles/editor.css +201 -143
  865. package/dist/testing/conformance-core.d.ts +50 -18
  866. package/dist/testing/conformance-core.js +88 -50
  867. package/dist/testing/container-conformance.d.ts +48 -84
  868. package/dist/testing/container-conformance.js +159 -285
  869. package/dist/testing/headless-actions.d.ts +34 -19
  870. package/dist/testing/headless-actions.js +116 -65
  871. package/dist/testing/headless-block-list.svelte.d.ts +16 -0
  872. package/dist/testing/headless-block-list.svelte.js +22 -0
  873. package/dist/testing/inline-conformance.d.ts +15 -22
  874. package/dist/testing/inline-conformance.js +131 -148
  875. package/dist/testing/kind-conformance.d.ts +19 -24
  876. package/dist/testing/kind-conformance.js +204 -117
  877. package/dist/testing/kit-reading.d.ts +7 -0
  878. package/dist/testing/kit-reading.js +16 -0
  879. package/dist/testing/mount-dom-stubs.d.ts +4 -5
  880. package/dist/testing/mount-dom-stubs.js +8 -5
  881. package/dist/testing/parse-convergence.d.ts +10 -10
  882. package/dist/testing/parse-convergence.js +14 -49
  883. package/dist/testing.d.ts +13 -9
  884. package/dist/testing.js +28 -38
  885. package/dist/tree-operations/blockquote.d.ts +8 -14
  886. package/dist/tree-operations/blockquote.js +25 -45
  887. package/dist/tree-operations/chain-rebuild.d.ts +34 -25
  888. package/dist/tree-operations/chain-rebuild.js +115 -52
  889. package/dist/tree-operations/children.d.ts +5 -9
  890. package/dist/tree-operations/children.js +7 -11
  891. package/dist/tree-operations/cleanup.d.ts +6 -7
  892. package/dist/tree-operations/cleanup.js +14 -11
  893. package/dist/tree-operations/clone.js +5 -4
  894. package/dist/tree-operations/container-lift.d.ts +10 -5
  895. package/dist/tree-operations/container-lift.js +20 -14
  896. package/dist/tree-operations/container-offsets.d.ts +22 -0
  897. package/dist/tree-operations/container-offsets.js +89 -0
  898. package/dist/tree-operations/content-write.d.ts +52 -29
  899. package/dist/tree-operations/content-write.js +155 -110
  900. package/dist/tree-operations/index.d.ts +4 -4
  901. package/dist/tree-operations/index.js +4 -4
  902. package/dist/tree-operations/keep-one-block.d.ts +10 -0
  903. package/dist/tree-operations/keep-one-block.js +19 -0
  904. package/dist/tree-operations/leaf-range.d.ts +33 -0
  905. package/dist/tree-operations/leaf-range.js +67 -0
  906. package/dist/tree-operations/list/empty-check.d.ts +2 -3
  907. package/dist/tree-operations/list/empty-check.js +4 -4
  908. package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
  909. package/dist/tree-operations/list/exit-replacement.js +4 -9
  910. package/dist/tree-operations/list/item-partition.d.ts +2 -2
  911. package/dist/tree-operations/list/item-partition.js +2 -2
  912. package/dist/tree-operations/list/list-builders.d.ts +18 -16
  913. package/dist/tree-operations/list/list-builders.js +59 -30
  914. package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
  915. package/dist/tree-operations/list/ordered-markers.js +7 -16
  916. package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
  917. package/dist/tree-operations/list/reconcile-task.js +80 -23
  918. package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
  919. package/dist/tree-operations/list/sublist-separator.js +20 -27
  920. package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
  921. package/dist/tree-operations/list/task-paragraph.js +54 -0
  922. package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
  923. package/dist/tree-operations/list/unwrap-merge.js +44 -79
  924. package/dist/tree-operations/node-ops.d.ts +30 -52
  925. package/dist/tree-operations/node-ops.js +152 -218
  926. package/dist/tree-operations/node-primitives.d.ts +44 -31
  927. package/dist/tree-operations/node-primitives.js +84 -60
  928. package/dist/tree-operations/open-tail.d.ts +25 -0
  929. package/dist/tree-operations/open-tail.js +100 -0
  930. package/dist/tree-operations/parse-block.d.ts +15 -2
  931. package/dist/tree-operations/parse-block.js +19 -4
  932. package/dist/tree-operations/paste/apply.d.ts +7 -8
  933. package/dist/tree-operations/paste/apply.js +33 -63
  934. package/dist/tree-operations/paste/body-write.d.ts +8 -6
  935. package/dist/tree-operations/paste/body-write.js +13 -14
  936. package/dist/tree-operations/paste/container-match.d.ts +7 -10
  937. package/dist/tree-operations/paste/container-match.js +76 -58
  938. package/dist/tree-operations/paste/container-paste.d.ts +3 -3
  939. package/dist/tree-operations/paste/container-paste.js +3 -3
  940. package/dist/tree-operations/paste/dispatch.d.ts +26 -29
  941. package/dist/tree-operations/paste/dispatch.js +68 -53
  942. package/dist/tree-operations/paste/focus-target.d.ts +11 -14
  943. package/dist/tree-operations/paste/focus-target.js +13 -18
  944. package/dist/tree-operations/paste/hooks.d.ts +7 -12
  945. package/dist/tree-operations/paste/hooks.js +49 -46
  946. package/dist/tree-operations/paste/line-ending.d.ts +11 -0
  947. package/dist/tree-operations/paste/line-ending.js +32 -0
  948. package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
  949. package/dist/tree-operations/paste/list-absorb.js +17 -19
  950. package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
  951. package/dist/tree-operations/paste/list-break-out.js +24 -32
  952. package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
  953. package/dist/tree-operations/paste/parent-scope.js +9 -16
  954. package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
  955. package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
  956. package/dist/tree-operations/paste/paste-replacement.js +73 -42
  957. package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
  958. package/dist/tree-operations/paste/paste-transforms.js +18 -27
  959. package/dist/tree-operations/paste/replacement-parse.d.ts +9 -7
  960. package/dist/tree-operations/paste/replacement-parse.js +12 -10
  961. package/dist/tree-operations/paste/strategy.d.ts +1 -1
  962. package/dist/tree-operations/paste/strategy.js +1 -1
  963. package/dist/tree-operations/paste/table-slice.js +15 -10
  964. package/dist/tree-operations/paste-surfaces.d.ts +18 -29
  965. package/dist/tree-operations/paste-surfaces.js +14 -10
  966. package/dist/tree-operations/path-mutate.d.ts +7 -8
  967. package/dist/tree-operations/path-mutate.js +4 -4
  968. package/dist/tree-operations/reorder-unit.d.ts +4 -5
  969. package/dist/tree-operations/reorder-unit.js +5 -6
  970. package/dist/tree-operations/reorder.d.ts +7 -9
  971. package/dist/tree-operations/reorder.js +39 -40
  972. package/dist/tree-operations/settle.d.ts +42 -53
  973. package/dist/tree-operations/settle.js +241 -162
  974. package/dist/tree-operations/sharing.d.ts +5 -5
  975. package/dist/tree-operations/splice-many.d.ts +5 -5
  976. package/dist/tree-operations/splice-many.js +5 -5
  977. package/dist/tree-operations/stored-as.d.ts +13 -0
  978. package/dist/tree-operations/stored-as.js +48 -0
  979. package/dist/tree-operations/structural-change.d.ts +11 -15
  980. package/dist/tree-operations/structural-change.js +10 -14
  981. package/dist/tree-operations/structural-suffix.d.ts +22 -0
  982. package/dist/tree-operations/structural-suffix.js +61 -0
  983. package/dist/tree-operations/sub-table-copy.d.ts +7 -0
  984. package/dist/tree-operations/sub-table-copy.js +40 -36
  985. package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
  986. package/dist/tree-operations/table-grid-clipboard.js +11 -36
  987. package/dist/tree-operations/table-mutations.d.ts +7 -3
  988. package/dist/tree-operations/table-mutations.js +45 -9
  989. package/dist/tree-operations/unshare.d.ts +11 -15
  990. package/dist/tree-operations/unshare.js +15 -17
  991. package/dist/undo/manager.js +1 -1
  992. package/dist/undo/types.d.ts +2 -2
  993. package/docs/guide/consumer-guide.md +327 -205
  994. package/docs/guide/directives.md +7 -7
  995. package/docs/guide/plugin-api.md +253 -185
  996. package/docs/guide/plugin-guide.md +332 -235
  997. package/docs/guide/plugin-testing.md +96 -82
  998. package/package.json +12 -16
  999. package/dist/ambient/ambient-cursor.d.ts +0 -41
  1000. package/dist/ambient/ambient-cursor.js +0 -120
  1001. package/dist/components/blocks/code/code-paste.d.ts +0 -24
  1002. package/dist/components/blocks/code/code-paste.js +0 -21
  1003. package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
  1004. package/dist/components/blocks/table/cell-clipboard.js +0 -67
  1005. package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
  1006. package/dist/components/blocks/text/hidden-suffix.js +0 -15
  1007. package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
  1008. package/dist/components/image/image-source-bytes.d.ts +0 -15
  1009. package/dist/components/image/image-source-bytes.js +0 -80
  1010. package/dist/cursor/content-offsets.d.ts +0 -29
  1011. package/dist/cursor/content-offsets.js +0 -151
  1012. package/dist/cursor/reveal-anchor.d.ts +0 -30
  1013. package/dist/cursor/reveal-anchor.js +0 -31
  1014. package/dist/cursor/scroll-hold.d.ts +0 -10
  1015. package/dist/cursor/scroll-hold.js +0 -22
  1016. package/dist/invariants/split-landing.d.ts +0 -8
  1017. package/dist/invariants/split-landing.js +0 -15
  1018. package/dist/tree-operations/list/terminator.d.ts +0 -17
  1019. package/dist/tree-operations/list/terminator.js +0 -60
  1020. package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -31
  1021. package/dist/tree-operations/paste/replace-block-at-parent.js +0 -78
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import type { AnyInlineKind, InlineNode } from '../../core/nodes';
8
8
  import type { DocumentView } from '../../core/node-views';
9
- import type { PresentationMode } from '../../presentation-mode';
9
+ import type { Reading } from '../../schema/reading';
10
10
  export interface WidgetPoolAdapter<H> {
11
11
  /** Build one instance, or null when it cannot be built (a caught mount throw). */
12
12
  create(kind: AnyInlineKind, inline: InlineNode, source: string): H | null;
@@ -14,41 +14,32 @@ export interface WidgetPoolAdapter<H> {
14
14
  element(handle: H): HTMLElement;
15
15
  }
16
16
  export interface WidgetPool {
17
- /**
18
- * Adopt the oldest un-adopted live instance for the key, marking it adopted this
19
- * pass; else build a new one. Render-pass only — every acquire sits inside a
20
- * beginPass/sweep bracket. Key-only lookup cannot distinguish byte-identical
21
- * duplicates, so an out-of-pass caller holding a specific element must restore it.
22
- */
17
+ /** Adopts the oldest unadopted instance for the key, else builds one; call only inside a
18
+ * beginPass/sweep bracket. Identical sources share a key, so a caller holding one restores it. */
23
19
  acquire(kind: AnyInlineKind, inline: InlineNode, source: string): HTMLElement | null;
24
20
  /** Open a rebuild pass: un-adopt every instance so this pass re-earns them. */
25
21
  beginPass(): void;
26
22
  /** Close a rebuild pass: destroy every instance not adopted in it. */
27
23
  sweep(): void;
28
- /** Destroy everything — the block is unmounting. */
24
+ /** Destroy everything, because the block is unmounting. */
29
25
  dispose(): void;
30
26
  }
31
27
  export declare function createWidgetPool<H>(adapter: WidgetPoolAdapter<H>): WidgetPool;
32
- /** The live channels a mounted widget reads beside its frozen `{ inline, source }`
33
- * snapshot. Every member is optional so a bare harness can mount without a shell. */
28
+ /** The live channels a mounted widget reads beside its frozen `{ inline, source }` snapshot. All
29
+ * required, so no widget falls back to a value the editor does not hold. */
34
30
  export interface SvelteWidgetPoolDeps {
35
- /** A widget component's synchronous mount throw goes here (the editor's `error`
36
- * channel). Absent leaves the caller falling back to the raw span silently. */
37
- reportError?: (error: unknown) => void;
38
- getPresentationMode?: () => PresentationMode;
39
- /** The editor's theme name — the mode read's sibling, for a widget whose body an
40
- * engine paints (its own colors, unreachable from CSS) rather than CSS styles. */
41
- getTheme?: () => string;
42
- getDocument?: () => DocumentView | undefined;
43
- getContentVersion?: () => number;
44
- /** The editor's navigation door, for a widget whose gesture jumps elsewhere in the
45
- * document. Absent in a bare harness. */
46
- navigateTo?: (path: number[], offset?: number) => Promise<boolean>;
31
+ /** A widget component's synchronous mount throw goes here (the editor's `error` channel). */
32
+ reportError: (error: unknown) => void;
33
+ /** The editor's theme name, for a widget that draws its own colors where CSS cannot reach. */
34
+ getTheme: () => string;
35
+ getDocument: () => DocumentView | undefined;
36
+ getContentVersion: () => number;
37
+ /** The editor's navigation call, for a widget whose gesture jumps elsewhere in the document. */
38
+ navigateTo: (path: number[], offset?: number) => Promise<boolean>;
39
+ /** How the editor reads its bytes: a widget kind whose plugin it left out mounts nothing, and a
40
+ * mounted widget reads the mode and parses inline content through it. */
41
+ reading: Reading;
47
42
  }
48
- /**
49
- * The pool wired to Svelte mounting. A synchronous mount throw is caught, reported and surfaced as
50
- * null so the caller falls back to the raw span. The getters ride ALONGSIDE the frozen
51
- * `{ inline, source }` snapshot as live props: reuse keys on `${kind} ${source}`, so an instance
52
- * outlives a mode flip or an edit elsewhere that a frozen value would not.
53
- */
54
- export declare function createSvelteWidgetPool(deps?: SvelteWidgetPoolDeps): WidgetPool;
43
+ /** A mount throw is reported and returns null, so the caller falls back to the raw span. The
44
+ * getters are live props beside the frozen snapshot, since a pooled instance outlives a mode switch. */
45
+ export declare function createSvelteWidgetPool(deps: SvelteWidgetPoolDeps): WidgetPool;
@@ -5,6 +5,7 @@
5
5
  * `${kind} ${source}`, and `mount`/`unmount` from 'svelte' stay contained here.
6
6
  */
7
7
  import { mount, unmount } from 'svelte';
8
+ import { inlineReaderFor } from '../../core/inline';
8
9
  import { getInlineWidgetComponent } from '../../core/inline/inline-widgets';
9
10
  import { tracePoolPass } from '../../debug/interaction-trace';
10
11
  import { assertInvariant } from '../../assert';
@@ -14,7 +15,7 @@ export function createWidgetPool(adapter) {
14
15
  // two entries in one bucket, each adopted at most once per pass.
15
16
  const buckets = new Map();
16
17
  // The acquire bracket (see WidgetPool.acquire) held as explicit state so a
17
- // violation fires at this seam instead of surfacing as a widget leak (G1.25).
18
+ // mistake fails here instead of showing up later as a leaked widget (G1.25).
18
19
  let passOpen = false;
19
20
  // Per-pass adopt/build tallies for the interaction trace, recorded at sweep.
20
21
  let passAdopt = 0;
@@ -38,7 +39,7 @@ export function createWidgetPool(adapter) {
38
39
  reused.adopted = true;
39
40
  passAdopt++;
40
41
  // Source and rendered body are identical by key; only the widget's position
41
- // may have shifted, so re-stamp the offsets cursor/selection reads.
42
+ // may have shifted, so write the offsets the cursor and selection read again.
42
43
  const el = adapter.element(reused.handle);
43
44
  el.dataset.sourceStart = String(inline.start);
44
45
  el.dataset.sourceEnd = String(inline.end);
@@ -88,17 +89,14 @@ export function createWidgetPool(adapter) {
88
89
  }
89
90
  return { acquire, beginPass, sweep, dispose };
90
91
  }
91
- /**
92
- * The pool wired to Svelte mounting. A synchronous mount throw is caught, reported and surfaced as
93
- * null so the caller falls back to the raw span. The getters ride ALONGSIDE the frozen
94
- * `{ inline, source }` snapshot as live props: reuse keys on `${kind} ${source}`, so an instance
95
- * outlives a mode flip or an edit elsewhere that a frozen value would not.
96
- */
97
- export function createSvelteWidgetPool(deps = {}) {
98
- const { reportError, getPresentationMode, getTheme, getDocument, getContentVersion, navigateTo } = deps;
92
+ /** A mount throw is reported and returns null, so the caller falls back to the raw span. The
93
+ * getters are live props beside the frozen snapshot, since a pooled instance outlives a mode switch. */
94
+ export function createSvelteWidgetPool(deps) {
95
+ const { reportError, getTheme, getDocument, getContentVersion, navigateTo, reading } = deps;
96
+ const { grammar } = reading;
99
97
  return createWidgetPool({
100
98
  create(kind, inline, source) {
101
- const component = getInlineWidgetComponent(kind);
99
+ const component = getInlineWidgetComponent(kind, grammar);
102
100
  if (!component)
103
101
  return null;
104
102
  const wrapper = document.createElement('span');
@@ -112,17 +110,21 @@ export function createSvelteWidgetPool(deps = {}) {
112
110
  props: {
113
111
  inline,
114
112
  source,
115
- getPresentationMode,
113
+ getPresentationMode: reading.mode,
116
114
  getTheme,
117
115
  getDocument,
118
116
  getContentVersion,
119
- navigateTo
117
+ navigateTo,
118
+ // A getter, so a pooled widget's reader changes with the document's definitions.
119
+ get computeInlineContent() {
120
+ return inlineReaderFor(reading);
121
+ }
120
122
  }
121
123
  });
122
124
  return { wrapper, instance };
123
125
  }
124
126
  catch (error) {
125
- reportError?.(error);
127
+ reportError(error);
126
128
  return null;
127
129
  }
128
130
  },
@@ -1,7 +1,6 @@
1
1
  /**
2
- * Built-in block component registrations, applied by an explicit `registerBuiltInBlocks()` call:
3
- * the `sideEffects` allowlist names dist paths and so never covers the src specifiers this
4
- * library imports from itself, leaving a bare side-effect import here droppable. Lives in
5
- * `components/` rather than `schema/` so the schema layer keeps no downstream imports.
2
+ * Built-in block component registrations, run by an explicit `registerBuiltInBlocks()` call: a
3
+ * side-effect import could be dropped by a bundler, since `sideEffects` names only dist paths.
4
+ * Lives in `components/` so `schema/` imports nothing downstream.
6
5
  */
7
6
  export declare function registerBuiltInBlocks(): void;
@@ -1,10 +1,10 @@
1
1
  /**
2
- * Built-in block component registrations, applied by an explicit `registerBuiltInBlocks()` call:
3
- * the `sideEffects` allowlist names dist paths and so never covers the src specifiers this
4
- * library imports from itself, leaving a bare side-effect import here droppable. Lives in
5
- * `components/` rather than `schema/` so the schema layer keeps no downstream imports.
2
+ * Built-in block component registrations, run by an explicit `registerBuiltInBlocks()` call: a
3
+ * side-effect import could be dropped by a bundler, since `sideEffects` names only dist paths.
4
+ * Lives in `components/` so `schema/` imports nothing downstream.
6
5
  */
7
6
  import { metadataOf } from '../core/nodes';
7
+ import { shownKind } from '../core/parsers/heading';
8
8
  import { defineBlockComponent, registerBlockComponent } from '../schema/block-component-registry';
9
9
  import { augmentBuiltin } from '../schema/block-kind-descriptor';
10
10
  import { registerBuiltInDescriptors } from '../schema/built-in-descriptors';
@@ -24,20 +24,22 @@ import { tableCellPasteSurface } from './blocks/table/table-cell-paste';
24
24
  import { tableCaretAtPoint } from './blocks/table/table-caret-at-point';
25
25
  import { tableDragHitTest } from './blocks/table/table-drag-hit-test';
26
26
  function headingExtraProps(node) {
27
+ if (shownKind(node) === 'paragraph')
28
+ return { blockClass: 'paragraph-block' };
27
29
  const level = metadataOf(node, 'heading')?.level ?? 1;
28
30
  return { blockClass: `heading-${level}` };
29
31
  }
30
32
  const textAsRawBlock = defineBlockComponent(TextEditableBlock, () => ({
31
33
  blockClass: 'raw-block'
32
34
  }));
33
- // Idempotence guard, not a registry bypass: a dev-server re-eval resets it so
34
- // the register-once dev valve still replaces.
35
+ // Stops a second call doing the work twice, without bypassing the registry: a
36
+ // dev-server re-evaluation resets it, so re-registering in dev still replaces.
35
37
  let registered = false;
36
38
  export function registerBuiltInBlocks() {
37
39
  if (registered)
38
40
  return;
39
41
  registered = true;
40
- // Descriptors first — augmentBuiltin('table') below needs `table` registered.
42
+ // Descriptors first: augmentBuiltin('table') below needs `table` registered.
41
43
  registerBuiltInDescriptors();
42
44
  registerBlockComponent('paragraph', defineBlockComponent(TextEditableBlock, () => ({ blockClass: 'paragraph-block' })));
43
45
  registerBlockComponent('heading', defineBlockComponent(TextEditableBlock, headingExtraProps));
@@ -47,21 +49,19 @@ export function registerBuiltInBlocks() {
47
49
  registerBlockComponent('blockquote', defineBlockComponent(BlockquoteBlock));
48
50
  registerBlockComponent('list', defineBlockComponent(ListBlock));
49
51
  registerBlockComponent('table', defineBlockComponent(TableBlock));
50
- // Raw-editable fallback for kinds with no rendered surface. tableRow/tableCell
51
- // render inside TableBlock; these catch only orphans that reach BlockHost directly.
52
+ // Plain editable fallback for kinds with no rendered component. tableRow and tableCell
53
+ // render inside TableBlock; these catch only strays that reach BlockHost directly.
52
54
  registerBlockComponent('indentedCode', textAsRawBlock);
53
55
  registerBlockComponent('htmlBlock', textAsRawBlock);
54
56
  registerBlockComponent('linkReferenceDefinition', textAsRawBlock);
55
57
  registerBlockComponent('tableRow', textAsRawBlock);
56
58
  registerBlockComponent('tableCell', textAsRawBlock);
57
59
  registerBlockComponent('unrecognized', textAsRawBlock);
58
- // tableCell is the one supportsInline kind with bespoke paste semantics, so it
59
- // registers here and the default loop in paste/hooks.ts skips it — running both
60
- // would let ordering silently revert cell paste to the plain inline default.
60
+ // The default loop in `paste/hooks.ts` skips `tableCell`, so registration order cannot
61
+ // revert cell paste to the plain inline default.
61
62
  registerPasteSurface(tableCellPasteSurface);
62
- // Table owns cell addressing, so it registers both point→cell hooks through the
63
- // descriptor registry rather than the selection layer importing the component.
64
- // Two hooks: a drag needs the exact hit and its decline, a caret the nearest cell.
63
+ // Table owns cell addressing: a drag needs the exact hit or a refusal, a caret the nearest
64
+ // cell, and the selection code reaches both through the descriptor.
65
65
  augmentBuiltin('table', {
66
66
  foreignDragHitTest: tableDragHitTest,
67
67
  caretTargetAtPoint: tableCaretAtPoint
@@ -69,9 +69,8 @@ export function registerBuiltInBlocks() {
69
69
  // Image resize is editor-layer behavior, so the core image kind stays data-only
70
70
  // and gains its selected-key handler here, where the render layer is reachable.
71
71
  augmentInlineWidgetKind('image', { onSelectedKey: imageWidgetOnSelectedKey });
72
- // The split rebalancer and the join-seam cleaner need the inline parser and the render path,
73
- // neither of which `tree-operations` may import, so the policy table holds the slots and this
74
- // layer fills them.
72
+ // These need the inline parser and render path, which `tree-operations` may not import, so
73
+ // they are filled in here.
75
74
  registerLiveSplitRebalancer(rebalanceLiveSplit);
76
75
  registerLiveJoinSeamCleaner(cleanLiveJoinSeam);
77
76
  }
@@ -1,41 +1,18 @@
1
1
  /**
2
- * The block drag handle's two policies, kept out of the components that render it: which
3
- * blocks carry one, and where its grip sits.
4
- *
5
- * Presence: prose carries none. A paragraph, a heading, a quote and the note cards read as
6
- * text on the page, and a grip beside every one of them is noise; the blocks that get one are
7
- * the objects a reader picks up whole — pictures, code, tables, equations, diagrams, list
8
- * items, dividers. A gripless block is still a reorder unit: keyboard reorder moves it and a
9
- * dragged block still drops beside it.
2
+ * The block drag handle's two rules: which blocks get one (the objects a user picks up whole,
3
+ * never prose, as `schema/page-role.ts` tells them apart), and where it sits. A block without
4
+ * one still reorders by keyboard.
10
5
  */
11
6
  import type { NodeView } from '../core/node-views';
12
- export declare function isImageOnlyParagraph(node: NodeView): boolean;
13
- /**
14
- * A picture's grip does NOT wait for `blockDragHandles`: dragging it is the only pointer road
15
- * to move a picture, and unlike prose it is a discrete object a reader expects to pick up. The
16
- * caller still gates reading mode, which shows no affordances at all.
17
- */
18
- export declare function showsDragHandle(node: NodeView, handlesEnabled: boolean): boolean;
19
- /**
20
- * A list item's grip reorders it among its SIBLINGS and nowhere else: the drag is scoped to
21
- * the enclosing list, so a lone item has nothing to trade places with and its grip is a
22
- * promise the drop can't keep. It reappears the moment a second item joins the list.
23
- */
7
+ import type { InlineReading } from '../core/inline/inline-cache';
8
+ /** A picture's handle ignores `blockDragHandles`, since dragging is the only pointer way to
9
+ * move one. The caller still checks reading mode. */
10
+ export declare function showsDragHandle(node: NodeView, handlesEnabled: boolean, reading: InlineReading): boolean;
11
+ /** A lone list item has no handle: its drag stays inside the list, with nothing to swap with. */
24
12
  export declare function showsListItemDragHandle(itemCount: number, handlesEnabled: boolean): boolean;
25
- /**
26
- * Vertical centre of the grip. A one-line block centres on its row. A taller one takes the
27
- * first line-height of its OWN box — not its first line of text, since a card pads above that
28
- * and a grip level with the first code line hangs below the card's shoulder. A declared anchor
29
- * SHORTER than a line is a marker to centre on instead (a wrapped task item's checkbox); a
30
- * taller one is a card, and the band already covers it.
31
- */
13
+ /** Centres on a one-line block's row, else a marker-sized drag anchor, else the box's first
14
+ * line-height, since a card pads above its first line of text. */
32
15
  export declare function dragHandleAnchorY(host: HTMLElement): number | null;
33
- /**
34
- * Svelte attachment for the handle element: places the grip once the block has laid out, and
35
- * again on every pointerover inside its host, so it follows edits made while hovered.
36
- *
37
- * The mount placement is what makes the grip HITTABLE where it appears: it is its own hit
38
- * target before any hover, so a target parked at the stylesheet's default while the grip would
39
- * settle elsewhere is a target the pointer misses. One rAF-batched read per handle.
40
- */
16
+ /** Places the handle once the block has laid out, so it is clickable before any hover, and on
17
+ * each pointerover inside its host, so it follows edits made while hovered. */
41
18
  export declare function alignDragHandle(handle: HTMLElement): (() => void) | void;
@@ -1,63 +1,26 @@
1
1
  /**
2
- * The block drag handle's two policies, kept out of the components that render it: which
3
- * blocks carry one, and where its grip sits.
4
- *
5
- * Presence: prose carries none. A paragraph, a heading, a quote and the note cards read as
6
- * text on the page, and a grip beside every one of them is noise; the blocks that get one are
7
- * the objects a reader picks up whole — pictures, code, tables, equations, diagrams, list
8
- * items, dividers. A gripless block is still a reorder unit: keyboard reorder moves it and a
9
- * dragged block still drops beside it.
2
+ * The block drag handle's two rules: which blocks get one (the objects a user picks up whole,
3
+ * never prose, as `schema/page-role.ts` tells them apart), and where it sits. A block without
4
+ * one still reorders by keyboard.
10
5
  */
6
+ import { isImageOnlyParagraph } from '../core/inline/picture';
7
+ import { blockPageRole } from '../schema/page-role';
11
8
  import { BLOCK_CONTENT_SELECTOR, DRAG_ANCHOR_ATTR } from './block-content-selector';
12
- /**
13
- * Prose — the page's background and its asides — plus the list SHELL, whose own grip would
14
- * land in the gutter on top of its first item's and take the hit test with it. A list moves
15
- * an item at a time; the shell is a wrapper, not a thing to pick up.
16
- */
17
- const GRIPLESS_KINDS = new Set([
18
- 'paragraph',
19
- 'heading',
20
- 'blockquote',
21
- 'admonition',
22
- 'githubAlert',
23
- 'list'
24
- ]);
25
- /**
26
- * A paragraph holding nothing but images is a picture in the page, not prose: it reads as a
27
- * block of its own and is exactly the thing a reader reaches to move. A false negative here
28
- * (an alt with an escaped bracket, an image beside a word) is the plain no-grip paragraph.
29
- */
30
- const IMAGE_ONLY_PARAGRAPH = /^\s*(?:!\[[^\]]*\](?:\([^)]*\)|\[[^\]]*\])\s*)+$/;
31
- export function isImageOnlyParagraph(node) {
32
- return node.kind === 'paragraph' && IMAGE_ONLY_PARAGRAPH.test(node.raw);
33
- }
34
- /**
35
- * A picture's grip does NOT wait for `blockDragHandles`: dragging it is the only pointer road
36
- * to move a picture, and unlike prose it is a discrete object a reader expects to pick up. The
37
- * caller still gates reading mode, which shows no affordances at all.
38
- */
39
- export function showsDragHandle(node, handlesEnabled) {
40
- if (isImageOnlyParagraph(node))
9
+ /** A picture's handle ignores `blockDragHandles`, since dragging is the only pointer way to
10
+ * move one. The caller still checks reading mode. */
11
+ export function showsDragHandle(node, handlesEnabled, reading) {
12
+ if (isImageOnlyParagraph(node, reading))
41
13
  return true;
42
- return handlesEnabled && !GRIPLESS_KINDS.has(node.kind);
14
+ return handlesEnabled && blockPageRole(node, reading) === 'object';
43
15
  }
44
- /**
45
- * A list item's grip reorders it among its SIBLINGS and nowhere else: the drag is scoped to
46
- * the enclosing list, so a lone item has nothing to trade places with and its grip is a
47
- * promise the drop can't keep. It reappears the moment a second item joins the list.
48
- */
16
+ /** A lone list item has no handle: its drag stays inside the list, with nothing to swap with. */
49
17
  export function showsListItemDragHandle(itemCount, handlesEnabled) {
50
18
  return handlesEnabled && itemCount > 1;
51
19
  }
52
20
  /** A box within this many line-heights holds one row of content, margins included. */
53
21
  const SINGLE_LINE = 1.5;
54
- /**
55
- * Vertical centre of the grip. A one-line block centres on its row. A taller one takes the
56
- * first line-height of its OWN box — not its first line of text, since a card pads above that
57
- * and a grip level with the first code line hangs below the card's shoulder. A declared anchor
58
- * SHORTER than a line is a marker to centre on instead (a wrapped task item's checkbox); a
59
- * taller one is a card, and the band already covers it.
60
- */
22
+ /** Centres on a one-line block's row, else a marker-sized drag anchor, else the box's first
23
+ * line-height, since a card pads above its first line of text. */
61
24
  export function dragHandleAnchorY(host) {
62
25
  const content = host.querySelector(BLOCK_CONTENT_SELECTOR);
63
26
  if (!content)
@@ -65,13 +28,13 @@ export function dragHandleAnchorY(host) {
65
28
  const hostRect = host.getBoundingClientRect();
66
29
  const line = lineHeightOf(content);
67
30
  const rect = paintedRect(content);
68
- // A one-line block IS its own band, and the eye puts the grip level with the row rather
69
- // than a hair above its middle — a list item, a task row, a rule.
31
+ // A one-line block is its own row, and the eye puts the handle level with it rather than
32
+ // a hair above the middle: a list item, a task row, a rule.
70
33
  const box = rect.height <= line * SINGLE_LINE ? rect : (markerRect(content, line) ?? bandRect(rect, line));
71
34
  if (!box || box.height === 0)
72
35
  return null;
73
36
  const y = box.top + box.height / 2 - hostRect.top;
74
- // A box painting outside the host (a scrolled or offscreen region) seats nothing.
37
+ // A box painted outside the host (a scrolled or offscreen region) places nothing.
75
38
  return y >= 0 && y <= hostRect.height ? y : null;
76
39
  }
77
40
  function lineHeightOf(content) {
@@ -88,29 +51,20 @@ function markerRect(content, line) {
88
51
  return null;
89
52
  return rect.top - content.getBoundingClientRect().top > line ? null : rect;
90
53
  }
91
- /**
92
- * The box the band measures from: the content's own, unless it leads with an atomic widget
93
- * (a picture in a paragraph), whose margin would otherwise seat the grip above the picture and
94
- * flush with its corner.
95
- */
54
+ /** The content's box, unless it starts with a non-editable inline widget whose margin would
55
+ * put the handle above the picture. */
96
56
  function paintedRect(content) {
97
57
  const rect = content.getBoundingClientRect();
98
58
  const widget = content.firstElementChild?.closest('[data-inline-widget]');
99
59
  const widgetRect = widget?.getBoundingClientRect();
100
60
  return widgetRect && widgetRect.height > 0 && widgetRect.top > rect.top ? widgetRect : rect;
101
61
  }
102
- /** The top line-height of a box; a box shorter than a line is its own band. */
62
+ /** The top line-height of a box; a box shorter than a line is all of it. */
103
63
  function bandRect(rect, line) {
104
64
  return new DOMRect(rect.x, rect.y, rect.width, Math.min(line, rect.height));
105
65
  }
106
- /**
107
- * Svelte attachment for the handle element: places the grip once the block has laid out, and
108
- * again on every pointerover inside its host, so it follows edits made while hovered.
109
- *
110
- * The mount placement is what makes the grip HITTABLE where it appears: it is its own hit
111
- * target before any hover, so a target parked at the stylesheet's default while the grip would
112
- * settle elsewhere is a target the pointer misses. One rAF-batched read per handle.
113
- */
66
+ /** Places the handle once the block has laid out, so it is clickable before any hover, and on
67
+ * each pointerover inside its host, so it follows edits made while hovered. */
114
68
  export function alignDragHandle(handle) {
115
69
  const host = handle.parentElement;
116
70
  if (!host)
@@ -118,7 +72,7 @@ export function alignDragHandle(handle) {
118
72
  const grip = handle.firstElementChild;
119
73
  if (!grip)
120
74
  return;
121
- // Inline `top` on the grip (px from the host's top to its centre; the stylesheet's
75
+ // Inline `top` on the handle (pixels from the host's top to its centre; the stylesheet's
122
76
  // translateY(-50%) does the centring) overrides the stylesheet's half-line default.
123
77
  const place = () => {
124
78
  const y = dragHandleAnchorY(host);
@@ -0,0 +1 @@
1
+ export declare function registerEditorBuiltIns(): void;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * The editor's own registrations (built-in blocks, code languages, context-menu rows), run before
3
+ * an editor mounts. They run as no plugin, so each belongs to the editor and survives the test
4
+ * reset even when a plugin's setup is the first thing to reach them.
5
+ */
6
+ import { registerAsCore } from '../schema/plugin-install';
7
+ import { registerBuiltInBlocks } from './built-in-blocks';
8
+ import { bootstrapCodeLanguages } from './blocks/code/code-bootstrap';
9
+ import { registerDefaultContextActions } from './menu/default-context-actions';
10
+ export function registerEditorBuiltIns() {
11
+ registerAsCore(() => {
12
+ registerBuiltInBlocks();
13
+ bootstrapCodeLanguages();
14
+ registerDefaultContextActions();
15
+ });
16
+ }
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Editor-root clipboard routing: copy/cut/paste for an event that reached no block surface. A
3
- * selection whose block hosts no text position leaves the native selection empty, so Chromium
4
- * dispatches at `document.body`, where no per-block binding sees it. Reading-mode gates live at
5
- * the arms each route calls into, not here.
2
+ * Editor-root clipboard routing: copy, cut and paste for an event that reached no block. A
3
+ * selection whose block holds no text position leaves the native selection empty, so Chromium
4
+ * dispatches at `document.body`, where no per-block listener sees it. The reading-mode checks
5
+ * live in the handlers each route calls into, not here.
6
6
  */
7
7
  import type { BlockComponent } from '../block-component';
8
8
  import type { DocumentGetter, PasteImageHook } from '../editor-keys';
@@ -13,8 +13,8 @@ export interface EditorRootClipboardDeps {
13
13
  selection: SelectionState;
14
14
  getDoc: DocumentGetter;
15
15
  crossBlock: CrossBlockHandlers;
16
- /** Required-nullable so this seam cannot silently skip the arm the block surfaces
17
- * run; `undefined` = no hook. */
16
+ /** Required but nullable, so this route cannot silently skip the image handling the
17
+ * blocks do; `undefined` means no hook. */
18
18
  onPasteImage: PasteImageHook | undefined;
19
19
  events: EditorEvents;
20
20
  /** The block owning the selected inline widget, or null when none is selected. */
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Editor-root clipboard routing: copy/cut/paste for an event that reached no block surface. A
3
- * selection whose block hosts no text position leaves the native selection empty, so Chromium
4
- * dispatches at `document.body`, where no per-block binding sees it. Reading-mode gates live at
5
- * the arms each route calls into, not here.
2
+ * Editor-root clipboard routing: copy, cut and paste for an event that reached no block. A
3
+ * selection whose block holds no text position leaves the native selection empty, so Chromium
4
+ * dispatches at `document.body`, where no per-block listener sees it. The reading-mode checks
5
+ * live in the handlers each route calls into, not here.
6
6
  */
7
7
  import { claimsBodyChord } from '../active-editor';
8
8
  import { emitClipboardError } from '../editor-events';
@@ -19,23 +19,15 @@ export function createEditorRootClipboard(deps) {
19
19
  events: deps.events,
20
20
  crossBlock: deps.crossBlock
21
21
  });
22
- /**
23
- * The event landed nowhere: on this root, or on the body via the retarget above.
24
- * Deliberately NOT "inside the root but not a block" — the search input and a
25
- * host's header field are both inside and own their own clipboard. The body arm is
26
- * claimant-scoped because the listener sees every editor on the page.
27
- */
22
+ /** On this root, or on the body with this instance holding the chord; the search input and a
23
+ * header field sit inside the root and keep their own clipboard. */
28
24
  function landedNowhere(root, target) {
29
25
  if (target === root)
30
26
  return true;
31
27
  return (target === null || target === root.ownerDocument.body) && claimsBodyChord(root);
32
28
  }
33
- /**
34
- * Who owns an event that reached no block surface. `defaultPrevented` is the block surfaces'
35
- * receipt: every arm of their shared clipboard skeleton prevents before it writes, and the one
36
- * arm that declines to native is a collapsed cell caret, which is neither state below. Order
37
- * decides nothing — widget selection and cross-block selection clear each other.
38
- */
29
+ /** A block marks an event it handled with `defaultPrevented`. The two states cannot coexist,
30
+ * so their order does not matter. */
39
31
  function targetOf(event, root) {
40
32
  if (event.defaultPrevented)
41
33
  return null;
@@ -75,28 +67,25 @@ export function createEditorRootClipboard(deps) {
75
67
  void paste(event);
76
68
  }
77
69
  };
78
- /**
79
- * The image arm first, exactly as a block surface orders it: the root reaches this
80
- * seam for a pure-image paste whenever the focus endpoint hosts no caret, and going
81
- * straight to the cross-block arm discarded it for want of any `text/plain`.
82
- */
70
+ /** Images first, as a block does: an image-only paste has no `text/plain` for the
71
+ * cross-block branch to use. */
83
72
  async function paste(event) {
84
- // Read the range synchronously with the event, while the cross-block arm still
85
- // guarantees a selection — below the await, a read could only report nothing.
73
+ // Read the range synchronously with the event, while the cross-block handling still
74
+ // guarantees a selection: below the await, a read could only report nothing.
86
75
  const rangeStartPath = deps.selection.start?.path.slice();
87
76
  const images = imageArm.filesOf(event.clipboardData);
88
77
  if (images.length === 0) {
89
78
  await deps.crossBlock.handlePaste(event);
90
79
  return;
91
80
  }
92
- // Prevent before awaiting the hook, as the surface skeleton does: the browser's
93
- // own paste would otherwise fire during the import and inject DOM the CST never sees.
81
+ // Prevent before awaiting the hook, as a block does: the browser's own paste would
82
+ // otherwise fire during the import and inject DOM the CST never sees.
94
83
  event.preventDefault();
95
84
  const markdown = await imageArm.run(event, images);
96
85
  if (markdown === null)
97
86
  return;
98
- // The selection collapsed mid-import, leaving an imported asset and no caret —
99
- // the one landing this seam cannot supply, having no block surface to fall back on.
87
+ // The selection collapsed mid-import, leaving an imported asset and no caret: the one
88
+ // thing this route cannot supply, having no block to fall back on.
100
89
  emitClipboardError(deps.events, {
101
90
  error: new Error('imported image had no insertion point at the editor root; nothing inserted'),
102
91
  ...(rangeStartPath ? { path: rangeStartPath } : {})
@@ -0,0 +1,49 @@
1
+ /**
2
+ * The `source` prop's whole-document replacement. Every piece of per-document state resets here
3
+ * in one fixed order, so a swap cannot skip a step.
4
+ */
5
+ import type { Document } from '../core/nodes';
6
+ import type { GrammarView } from '../schema/block-openers';
7
+ import { type LinkReferenceResolver } from '../core/inline/link-reference-resolver';
8
+ import type { CaretMemory } from '../cursor/caret-memory';
9
+ import type { LayoutState } from '../reactivity/layout-state.svelte';
10
+ import type { SelectionState } from '../selection/selection-state.svelte';
11
+ import type { UndoManager } from '../undo/types';
12
+ import type { EditorEvents } from '../editor-events';
13
+ import type { WidgetSelectionState } from './image/widget-selection-state.svelte';
14
+ export interface ParsedDocument {
15
+ doc: Document;
16
+ resolver: LinkReferenceResolver;
17
+ signature: string;
18
+ }
19
+ /** The parse every document goes through, at mount and at each swap, in the editor's grammar. */
20
+ export declare function initDocument(source: string, grammar: GrammarView): ParsedDocument;
21
+ export interface DocumentSwapDeps {
22
+ grammar: GrammarView;
23
+ /** A pending typing batch belongs to the outgoing document, so it flushes while its path
24
+ * still resolves; left running, the timer would apply note A's path to note B. */
25
+ flushDebouncedCheckpoint(): void;
26
+ /** Called before the tree changes, so a caret landing still waiting gives up. */
27
+ noteTreeSwap(): void;
28
+ /** Writes the tree into the `$state` root and re-keys its blocks. */
29
+ adoptDocument(doc: Document): void;
30
+ bumpContentVersion(): void;
31
+ clearBlockRefs(): void;
32
+ layout: Pick<LayoutState, 'forgetMeasuredHeights'>;
33
+ undoManager: Pick<UndoManager, 'clear'>;
34
+ caretMemory: Pick<CaretMemory, 'forget'>;
35
+ /** Every menu Editor owns acts on a block or bytes of the outgoing document; a block's own
36
+ * menus unmount with it. Closed before the blocks unmount, which a menu may react to. */
37
+ closeMenus(): void;
38
+ widgetSelection: Pick<WidgetSelectionState, 'clear'>;
39
+ selection: Pick<SelectionState, 'batch' | 'clear' | 'announceSelection'>;
40
+ /** Unconditional: the outgoing resolver closes over the swapped-out document. */
41
+ adoptLinkReferences(resolver: LinkReferenceResolver, signature: string): void;
42
+ events: Pick<EditorEvents, 'emit'>;
43
+ }
44
+ export interface DocumentSwap {
45
+ swapTo(source: string): void;
46
+ /** Counts whole-document replacements, which `editEpoch` cannot tell from a keystroke. */
47
+ generation(): number;
48
+ }
49
+ export declare function createDocumentSwap(deps: DocumentSwapDeps): DocumentSwap;