@voithos-labs/aragonite 0.10.1

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 (900) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +365 -0
  3. package/THIRD-PARTY-NOTICES.md +102 -0
  4. package/dist/a11y-strings.d.ts +46 -0
  5. package/dist/a11y-strings.js +62 -0
  6. package/dist/action-contracts.d.ts +301 -0
  7. package/dist/action-contracts.js +5 -0
  8. package/dist/active-editor.d.ts +16 -0
  9. package/dist/active-editor.js +67 -0
  10. package/dist/ambient/ambient-cursor.d.ts +41 -0
  11. package/dist/ambient/ambient-cursor.js +120 -0
  12. package/dist/ambient/ambient-dom.d.ts +9 -0
  13. package/dist/ambient/ambient-dom.js +102 -0
  14. package/dist/assert.d.ts +6 -0
  15. package/dist/assert.js +17 -0
  16. package/dist/block-component.d.ts +274 -0
  17. package/dist/block-component.js +43 -0
  18. package/dist/block-id.d.ts +14 -0
  19. package/dist/block-id.js +34 -0
  20. package/dist/bounded-memo.d.ts +14 -0
  21. package/dist/bounded-memo.js +32 -0
  22. package/dist/components/BlockDragHandle.svelte +66 -0
  23. package/dist/components/BlockDragHandle.svelte.d.ts +18 -0
  24. package/dist/components/BlockHost.svelte +328 -0
  25. package/dist/components/BlockHost.svelte.d.ts +15 -0
  26. package/dist/components/BlockList.svelte +114 -0
  27. package/dist/components/BlockList.svelte.d.ts +16 -0
  28. package/dist/components/DecorationOverlay.svelte +156 -0
  29. package/dist/components/DecorationOverlay.svelte.d.ts +14 -0
  30. package/dist/components/Editor.svelte +1849 -0
  31. package/dist/components/Editor.svelte.d.ts +49 -0
  32. package/dist/components/GapCaret.svelte +226 -0
  33. package/dist/components/GapCaret.svelte.d.ts +9 -0
  34. package/dist/components/SearchBar.svelte +243 -0
  35. package/dist/components/SearchBar.svelte.d.ts +7 -0
  36. package/dist/components/SelectionOverlay.svelte +171 -0
  37. package/dist/components/SelectionOverlay.svelte.d.ts +14 -0
  38. package/dist/components/block-content-selector.d.ts +12 -0
  39. package/dist/components/block-content-selector.js +12 -0
  40. package/dist/components/blocks/BlockquoteBlock.svelte +32 -0
  41. package/dist/components/blocks/BlockquoteBlock.svelte.d.ts +11 -0
  42. package/dist/components/blocks/ThematicBreakBlock.svelte +156 -0
  43. package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +17 -0
  44. package/dist/components/blocks/code/CodeBlock.svelte +726 -0
  45. package/dist/components/blocks/code/CodeBlock.svelte.d.ts +23 -0
  46. package/dist/components/blocks/code/CodeLanguageChip.svelte +127 -0
  47. package/dist/components/blocks/code/CodeLanguageChip.svelte.d.ts +14 -0
  48. package/dist/components/blocks/code/code-beforeinput.d.ts +30 -0
  49. package/dist/components/blocks/code/code-beforeinput.js +40 -0
  50. package/dist/components/blocks/code/code-bootstrap.d.ts +8 -0
  51. package/dist/components/blocks/code/code-bootstrap.js +54 -0
  52. package/dist/components/blocks/code/code-editing.d.ts +28 -0
  53. package/dist/components/blocks/code/code-editing.js +79 -0
  54. package/dist/components/blocks/code/code-enter.d.ts +22 -0
  55. package/dist/components/blocks/code/code-enter.js +19 -0
  56. package/dist/components/blocks/code/code-fence-boundary.d.ts +77 -0
  57. package/dist/components/blocks/code/code-fence-boundary.js +169 -0
  58. package/dist/components/blocks/code/code-fence-exit.d.ts +24 -0
  59. package/dist/components/blocks/code/code-fence-exit.js +36 -0
  60. package/dist/components/blocks/code/code-indent.d.ts +14 -0
  61. package/dist/components/blocks/code/code-indent.js +87 -0
  62. package/dist/components/blocks/code/code-languages.d.ts +15 -0
  63. package/dist/components/blocks/code/code-languages.js +30 -0
  64. package/dist/components/blocks/code/code-paste-surface.d.ts +6 -0
  65. package/dist/components/blocks/code/code-paste-surface.js +29 -0
  66. package/dist/components/blocks/code/code-paste.d.ts +24 -0
  67. package/dist/components/blocks/code/code-paste.js +21 -0
  68. package/dist/components/blocks/code/code-renderer.d.ts +18 -0
  69. package/dist/components/blocks/code/code-renderer.js +249 -0
  70. package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +51 -0
  71. package/dist/components/blocks/directive/DirectiveContainerBlock.svelte.d.ts +11 -0
  72. package/dist/components/blocks/directive/activate-directives.d.ts +7 -0
  73. package/dist/components/blocks/directive/activate-directives.js +23 -0
  74. package/dist/components/blocks/editable-leaf.d.ts +126 -0
  75. package/dist/components/blocks/editable-leaf.js +410 -0
  76. package/dist/components/blocks/editable-surface.d.ts +209 -0
  77. package/dist/components/blocks/editable-surface.js +331 -0
  78. package/dist/components/blocks/list/ListBlock.svelte +162 -0
  79. package/dist/components/blocks/list/ListBlock.svelte.d.ts +11 -0
  80. package/dist/components/blocks/list/ListItemBlock.svelte +324 -0
  81. package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +14 -0
  82. package/dist/components/blocks/list/task-checkbox.d.ts +3 -0
  83. package/dist/components/blocks/list/task-checkbox.js +33 -0
  84. package/dist/components/blocks/plain-text-backend.d.ts +21 -0
  85. package/dist/components/blocks/plain-text-backend.js +47 -0
  86. package/dist/components/blocks/surface-wiring.svelte.d.ts +18 -0
  87. package/dist/components/blocks/surface-wiring.svelte.js +68 -0
  88. package/dist/components/blocks/table/TableActionMenu.svelte +267 -0
  89. package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +15 -0
  90. package/dist/components/blocks/table/TableBlock.svelte +765 -0
  91. package/dist/components/blocks/table/TableBlock.svelte.d.ts +30 -0
  92. package/dist/components/blocks/table/TableCellBlock.svelte +1075 -0
  93. package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +30 -0
  94. package/dist/components/blocks/table/TableGrip.svelte +91 -0
  95. package/dist/components/blocks/table/TableGrip.svelte.d.ts +8 -0
  96. package/dist/components/blocks/table/TableRowBlock.svelte +233 -0
  97. package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +34 -0
  98. package/dist/components/blocks/table/cell-clipboard.d.ts +23 -0
  99. package/dist/components/blocks/table/cell-clipboard.js +34 -0
  100. package/dist/components/blocks/table/cell-keydown-plan.d.ts +37 -0
  101. package/dist/components/blocks/table/cell-keydown-plan.js +66 -0
  102. package/dist/components/blocks/table/cell-pointer.d.ts +58 -0
  103. package/dist/components/blocks/table/cell-pointer.js +153 -0
  104. package/dist/components/blocks/table/cell-render.d.ts +51 -0
  105. package/dist/components/blocks/table/cell-render.js +98 -0
  106. package/dist/components/blocks/table/cell-table-commands.d.ts +12 -0
  107. package/dist/components/blocks/table/cell-table-commands.js +21 -0
  108. package/dist/components/blocks/table/cell-x-mapping.d.ts +6 -0
  109. package/dist/components/blocks/table/cell-x-mapping.js +16 -0
  110. package/dist/components/blocks/table/selected-cells.d.ts +19 -0
  111. package/dist/components/blocks/table/selected-cells.js +35 -0
  112. package/dist/components/blocks/table/table-caret-at-point.d.ts +8 -0
  113. package/dist/components/blocks/table/table-caret-at-point.js +35 -0
  114. package/dist/components/blocks/table/table-cell-paste.d.ts +16 -0
  115. package/dist/components/blocks/table/table-cell-paste.js +75 -0
  116. package/dist/components/blocks/table/table-drag-hit-test.d.ts +5 -0
  117. package/dist/components/blocks/table/table-drag-hit-test.js +20 -0
  118. package/dist/components/blocks/table/table-drop-target.d.ts +1 -0
  119. package/dist/components/blocks/table/table-drop-target.js +16 -0
  120. package/dist/components/blocks/table/table-menu-model.d.ts +52 -0
  121. package/dist/components/blocks/table/table-menu-model.js +78 -0
  122. package/dist/components/blocks/table/table-navigation.d.ts +8 -0
  123. package/dist/components/blocks/table/table-navigation.js +22 -0
  124. package/dist/components/blocks/table/table-reorder-drag.d.ts +78 -0
  125. package/dist/components/blocks/table/table-reorder-drag.js +97 -0
  126. package/dist/components/blocks/text/TextEditableBlock.svelte +1012 -0
  127. package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +33 -0
  128. package/dist/components/blocks/text/click-snap-guard.d.ts +8 -0
  129. package/dist/components/blocks/text/click-snap-guard.js +19 -0
  130. package/dist/components/blocks/text/composition-seat.d.ts +50 -0
  131. package/dist/components/blocks/text/composition-seat.js +65 -0
  132. package/dist/components/blocks/text/construct-edge-delete.d.ts +47 -0
  133. package/dist/components/blocks/text/construct-edge-delete.js +164 -0
  134. package/dist/components/blocks/text/construct-reveal.d.ts +39 -0
  135. package/dist/components/blocks/text/construct-reveal.js +164 -0
  136. package/dist/components/blocks/text/edge-policy-dispatch.d.ts +91 -0
  137. package/dist/components/blocks/text/edge-policy-dispatch.js +457 -0
  138. package/dist/components/blocks/text/edge-seat.d.ts +42 -0
  139. package/dist/components/blocks/text/edge-seat.js +197 -0
  140. package/dist/components/blocks/text/hidden-suffix.d.ts +10 -0
  141. package/dist/components/blocks/text/hidden-suffix.js +15 -0
  142. package/dist/components/blocks/text/link-at-point.d.ts +33 -0
  143. package/dist/components/blocks/text/link-at-point.js +47 -0
  144. package/dist/components/blocks/text/link-source-bytes.d.ts +37 -0
  145. package/dist/components/blocks/text/link-source-bytes.js +161 -0
  146. package/dist/components/blocks/text/live-join-seam.d.ts +15 -0
  147. package/dist/components/blocks/text/live-join-seam.js +327 -0
  148. package/dist/components/blocks/text/live-selection-edit.d.ts +68 -0
  149. package/dist/components/blocks/text/live-selection-edit.js +120 -0
  150. package/dist/components/blocks/text/live-split-rebalance.d.ts +56 -0
  151. package/dist/components/blocks/text/live-split-rebalance.js +239 -0
  152. package/dist/components/blocks/text/marker-completion.d.ts +18 -0
  153. package/dist/components/blocks/text/marker-completion.js +29 -0
  154. package/dist/components/blocks/text/pending-mark-insert.d.ts +37 -0
  155. package/dist/components/blocks/text/pending-mark-insert.js +188 -0
  156. package/dist/components/blocks/text/screen-diff.d.ts +20 -0
  157. package/dist/components/blocks/text/screen-diff.js +39 -0
  158. package/dist/components/blocks/text/text-clipboard.d.ts +70 -0
  159. package/dist/components/blocks/text/text-clipboard.js +131 -0
  160. package/dist/components/blocks/text/text-keydown.d.ts +39 -0
  161. package/dist/components/blocks/text/text-keydown.js +80 -0
  162. package/dist/components/blocks/text/text-render.d.ts +67 -0
  163. package/dist/components/blocks/text/text-render.js +215 -0
  164. package/dist/components/blocks/text/widget-adjacency.d.ts +30 -0
  165. package/dist/components/blocks/text/widget-adjacency.js +68 -0
  166. package/dist/components/blocks/text/widget-interaction.d.ts +90 -0
  167. package/dist/components/blocks/text/widget-interaction.js +591 -0
  168. package/dist/components/blocks/widget-portal.d.ts +54 -0
  169. package/dist/components/blocks/widget-portal.js +136 -0
  170. package/dist/components/built-in-blocks.d.ts +7 -0
  171. package/dist/components/built-in-blocks.js +77 -0
  172. package/dist/components/editor-root-clipboard.d.ts +29 -0
  173. package/dist/components/editor-root-clipboard.js +105 -0
  174. package/dist/components/editor-root-keydown.d.ts +47 -0
  175. package/dist/components/editor-root-keydown.js +88 -0
  176. package/dist/components/editor-root-listeners.d.ts +44 -0
  177. package/dist/components/editor-root-listeners.js +112 -0
  178. package/dist/components/image/ImageOverlayHost.svelte +115 -0
  179. package/dist/components/image/ImageOverlayHost.svelte.d.ts +20 -0
  180. package/dist/components/image/ImageProperties.svelte +153 -0
  181. package/dist/components/image/ImageProperties.svelte.d.ts +14 -0
  182. package/dist/components/image/ImageResizeHandles.svelte +188 -0
  183. package/dist/components/image/ImageResizeHandles.svelte.d.ts +10 -0
  184. package/dist/components/image/image-edit-commit.d.ts +38 -0
  185. package/dist/components/image/image-edit-commit.js +159 -0
  186. package/dist/components/image/image-resize.d.ts +11 -0
  187. package/dist/components/image/image-resize.js +38 -0
  188. package/dist/components/image/image-source-bytes.d.ts +15 -0
  189. package/dist/components/image/image-source-bytes.js +73 -0
  190. package/dist/components/image/image-widget-editing.d.ts +7 -0
  191. package/dist/components/image/image-widget-editing.js +41 -0
  192. package/dist/components/image/widget-dom.d.ts +11 -0
  193. package/dist/components/image/widget-dom.js +110 -0
  194. package/dist/components/image/widget-selection-state.svelte.d.ts +18 -0
  195. package/dist/components/image/widget-selection-state.svelte.js +26 -0
  196. package/dist/components/link-card/LinkCard.svelte +190 -0
  197. package/dist/components/link-card/LinkCard.svelte.d.ts +18 -0
  198. package/dist/components/link-card/LinkCardHost.svelte +181 -0
  199. package/dist/components/link-card/LinkCardHost.svelte.d.ts +25 -0
  200. package/dist/components/link-card/link-card-commit.d.ts +50 -0
  201. package/dist/components/link-card/link-card-commit.js +134 -0
  202. package/dist/components/link-card/link-card-entry.d.ts +39 -0
  203. package/dist/components/link-card/link-card-entry.js +51 -0
  204. package/dist/components/link-card/link-card-state.svelte.d.ts +44 -0
  205. package/dist/components/link-card/link-card-state.svelte.js +46 -0
  206. package/dist/components/lrd-map-gate.d.ts +18 -0
  207. package/dist/components/lrd-map-gate.js +22 -0
  208. package/dist/components/paste-image-arm.d.ts +29 -0
  209. package/dist/components/paste-image-arm.js +61 -0
  210. package/dist/components/portal.d.ts +11 -0
  211. package/dist/components/portal.js +29 -0
  212. package/dist/core/directive/activate.d.ts +8 -0
  213. package/dist/core/directive/activate.js +25 -0
  214. package/dist/core/directive/container-opener.d.ts +7 -0
  215. package/dist/core/directive/container-opener.js +162 -0
  216. package/dist/core/directive/grammar.d.ts +50 -0
  217. package/dist/core/directive/grammar.js +88 -0
  218. package/dist/core/directive/kinds.d.ts +31 -0
  219. package/dist/core/directive/kinds.js +137 -0
  220. package/dist/core/directive/registry.d.ts +39 -0
  221. package/dist/core/directive/registry.js +49 -0
  222. package/dist/core/directive/text-recognizer.d.ts +8 -0
  223. package/dist/core/directive/text-recognizer.js +87 -0
  224. package/dist/core/escapable.d.ts +6 -0
  225. package/dist/core/escapable.js +6 -0
  226. package/dist/core/inline/backticks.d.ts +16 -0
  227. package/dist/core/inline/backticks.js +62 -0
  228. package/dist/core/inline/character-refs.d.ts +7 -0
  229. package/dist/core/inline/character-refs.js +70 -0
  230. package/dist/core/inline/destination-bytes.d.ts +7 -0
  231. package/dist/core/inline/destination-bytes.js +14 -0
  232. package/dist/core/inline/entity-widget.d.ts +11 -0
  233. package/dist/core/inline/entity-widget.js +21 -0
  234. package/dist/core/inline/format-toggle.d.ts +50 -0
  235. package/dist/core/inline/format-toggle.js +533 -0
  236. package/dist/core/inline/html-entities.d.ts +8 -0
  237. package/dist/core/inline/html-entities.js +2134 -0
  238. package/dist/core/inline/html-tag-grammar.d.ts +16 -0
  239. package/dist/core/inline/html-tag-grammar.js +58 -0
  240. package/dist/core/inline/image-dimensions.d.ts +6 -0
  241. package/dist/core/inline/image-dimensions.js +42 -0
  242. package/dist/core/inline/index.d.ts +42 -0
  243. package/dist/core/inline/index.js +77 -0
  244. package/dist/core/inline/inline-cache.d.ts +20 -0
  245. package/dist/core/inline/inline-cache.js +28 -0
  246. package/dist/core/inline/inline-widgets.d.ts +124 -0
  247. package/dist/core/inline/inline-widgets.js +131 -0
  248. package/dist/core/inline/link-reference-resolver.d.ts +21 -0
  249. package/dist/core/inline/link-reference-resolver.js +46 -0
  250. package/dist/core/inline/raw-html-widget.d.ts +10 -0
  251. package/dist/core/inline/raw-html-widget.js +22 -0
  252. package/dist/core/inline/scan/autolinks.d.ts +23 -0
  253. package/dist/core/inline/scan/autolinks.js +354 -0
  254. package/dist/core/inline/scan/brackets.d.ts +11 -0
  255. package/dist/core/inline/scan/brackets.js +284 -0
  256. package/dist/core/inline/scan/code-spans.d.ts +7 -0
  257. package/dist/core/inline/scan/code-spans.js +27 -0
  258. package/dist/core/inline/scan/emphasis.d.ts +10 -0
  259. package/dist/core/inline/scan/emphasis.js +276 -0
  260. package/dist/core/inline/scan/index.d.ts +7 -0
  261. package/dist/core/inline/scan/index.js +176 -0
  262. package/dist/core/inline/scan/plugin-syntax.d.ts +62 -0
  263. package/dist/core/inline/scan/plugin-syntax.js +150 -0
  264. package/dist/core/inline/scan/scan-state.d.ts +47 -0
  265. package/dist/core/inline/scan/scan-state.js +48 -0
  266. package/dist/core/inline/scan/simple-nodes.d.ts +14 -0
  267. package/dist/core/inline/scan/simple-nodes.js +53 -0
  268. package/dist/core/inline/scan/url.d.ts +12 -0
  269. package/dist/core/inline/scan/url.js +82 -0
  270. package/dist/core/inline/transparency.d.ts +8 -0
  271. package/dist/core/inline/transparency.js +39 -0
  272. package/dist/core/inline/visibility.d.ts +81 -0
  273. package/dist/core/inline/visibility.js +144 -0
  274. package/dist/core/inline/walk.d.ts +14 -0
  275. package/dist/core/inline/walk.js +29 -0
  276. package/dist/core/inline-render.d.ts +48 -0
  277. package/dist/core/inline-render.js +322 -0
  278. package/dist/core/lines.d.ts +44 -0
  279. package/dist/core/lines.js +91 -0
  280. package/dist/core/node-views.d.ts +22 -0
  281. package/dist/core/node-views.js +8 -0
  282. package/dist/core/nodes.d.ts +297 -0
  283. package/dist/core/nodes.js +83 -0
  284. package/dist/core/parser.d.ts +68 -0
  285. package/dist/core/parser.js +189 -0
  286. package/dist/core/parsers/blockquote.d.ts +17 -0
  287. package/dist/core/parsers/blockquote.js +69 -0
  288. package/dist/core/parsers/built-in-openers.d.ts +8 -0
  289. package/dist/core/parsers/built-in-openers.js +124 -0
  290. package/dist/core/parsers/fence-syntax.d.ts +24 -0
  291. package/dist/core/parsers/fence-syntax.js +44 -0
  292. package/dist/core/parsers/fenced-code.d.ts +7 -0
  293. package/dist/core/parsers/fenced-code.js +29 -0
  294. package/dist/core/parsers/heading.d.ts +3 -0
  295. package/dist/core/parsers/heading.js +6 -0
  296. package/dist/core/parsers/html-block.d.ts +17 -0
  297. package/dist/core/parsers/html-block.js +94 -0
  298. package/dist/core/parsers/indented-code.d.ts +4 -0
  299. package/dist/core/parsers/indented-code.js +41 -0
  300. package/dist/core/parsers/link-reference.d.ts +7 -0
  301. package/dist/core/parsers/link-reference.js +152 -0
  302. package/dist/core/parsers/list.d.ts +19 -0
  303. package/dist/core/parsers/list.js +133 -0
  304. package/dist/core/parsers/paragraph.d.ts +10 -0
  305. package/dist/core/parsers/paragraph.js +42 -0
  306. package/dist/core/parsers/table-completion.d.ts +13 -0
  307. package/dist/core/parsers/table-completion.js +48 -0
  308. package/dist/core/parsers/table.d.ts +18 -0
  309. package/dist/core/parsers/table.js +110 -0
  310. package/dist/core/parsers/thematic-break.d.ts +1 -0
  311. package/dist/core/parsers/thematic-break.js +19 -0
  312. package/dist/core/serializer.d.ts +15 -0
  313. package/dist/core/serializer.js +11 -0
  314. package/dist/core/terminator-escalation.d.ts +8 -0
  315. package/dist/core/terminator-escalation.js +18 -0
  316. package/dist/core/url-policy.d.ts +14 -0
  317. package/dist/core/url-policy.js +44 -0
  318. package/dist/cursor/content-offsets.d.ts +29 -0
  319. package/dist/cursor/content-offsets.js +151 -0
  320. package/dist/cursor/coordinate-spaces.d.ts +65 -0
  321. package/dist/cursor/coordinate-spaces.js +66 -0
  322. package/dist/cursor/dom-walk.d.ts +18 -0
  323. package/dist/cursor/dom-walk.js +31 -0
  324. package/dist/cursor/edge-affinity.d.ts +44 -0
  325. package/dist/cursor/edge-affinity.js +60 -0
  326. package/dist/cursor/focused-caret.d.ts +10 -0
  327. package/dist/cursor/focused-caret.js +24 -0
  328. package/dist/cursor/height-model.d.ts +24 -0
  329. package/dist/cursor/height-model.js +72 -0
  330. package/dist/cursor/height-oracle.d.ts +24 -0
  331. package/dist/cursor/height-oracle.js +94 -0
  332. package/dist/cursor/overlay-rects.d.ts +8 -0
  333. package/dist/cursor/overlay-rects.js +19 -0
  334. package/dist/cursor/overlay-remeasure.d.ts +17 -0
  335. package/dist/cursor/overlay-remeasure.js +31 -0
  336. package/dist/cursor/pending-marks.d.ts +24 -0
  337. package/dist/cursor/pending-marks.js +36 -0
  338. package/dist/cursor/point-offset.d.ts +21 -0
  339. package/dist/cursor/point-offset.js +48 -0
  340. package/dist/cursor/reveal-anchor.d.ts +30 -0
  341. package/dist/cursor/reveal-anchor.js +31 -0
  342. package/dist/cursor/reveal-source.d.ts +35 -0
  343. package/dist/cursor/reveal-source.js +51 -0
  344. package/dist/cursor/scroll-ancestors.d.ts +28 -0
  345. package/dist/cursor/scroll-ancestors.js +89 -0
  346. package/dist/cursor/scrollport.d.ts +20 -0
  347. package/dist/cursor/scrollport.js +41 -0
  348. package/dist/cursor/sticky-column.d.ts +35 -0
  349. package/dist/cursor/sticky-column.js +64 -0
  350. package/dist/cursor/sticky-measure.d.ts +16 -0
  351. package/dist/cursor/sticky-measure.js +97 -0
  352. package/dist/cursor/typography-estimates.d.ts +21 -0
  353. package/dist/cursor/typography-estimates.js +21 -0
  354. package/dist/cursor/visual-lines.d.ts +25 -0
  355. package/dist/cursor/visual-lines.js +125 -0
  356. package/dist/cursor/widget-offset.d.ts +132 -0
  357. package/dist/cursor/widget-offset.js +543 -0
  358. package/dist/debug/diagnostics-report.d.ts +17 -0
  359. package/dist/debug/diagnostics-report.js +25 -0
  360. package/dist/debug/dump-tree.d.ts +6 -0
  361. package/dist/debug/dump-tree.js +114 -0
  362. package/dist/debug/inspect.d.ts +19 -0
  363. package/dist/debug/inspect.js +116 -0
  364. package/dist/debug/interaction-trace.d.ts +39 -0
  365. package/dist/debug/interaction-trace.js +105 -0
  366. package/dist/debug/operations-log.d.ts +14 -0
  367. package/dist/debug/operations-log.js +30 -0
  368. package/dist/decorations/buckets.d.ts +40 -0
  369. package/dist/decorations/buckets.js +87 -0
  370. package/dist/decorations/decoration-state.svelte.d.ts +20 -0
  371. package/dist/decorations/decoration-state.svelte.js +195 -0
  372. package/dist/decorations/island-dom.d.ts +35 -0
  373. package/dist/decorations/island-dom.js +148 -0
  374. package/dist/decorations/reserved-attrs.d.ts +12 -0
  375. package/dist/decorations/reserved-attrs.js +47 -0
  376. package/dist/decorations/types.d.ts +68 -0
  377. package/dist/decorations/types.js +5 -0
  378. package/dist/decorations/widget-dom.d.ts +15 -0
  379. package/dist/decorations/widget-dom.js +35 -0
  380. package/dist/dev-warn.d.ts +13 -0
  381. package/dist/dev-warn.js +28 -0
  382. package/dist/editor-actions/ancestry-folds.d.ts +32 -0
  383. package/dist/editor-actions/ancestry-folds.js +106 -0
  384. package/dist/editor-actions/block-edit-core.d.ts +29 -0
  385. package/dist/editor-actions/block-edit-core.js +277 -0
  386. package/dist/editor-actions/block-edit-scope.d.ts +79 -0
  387. package/dist/editor-actions/block-edit-scope.js +76 -0
  388. package/dist/editor-actions/block-edit.d.ts +8 -0
  389. package/dist/editor-actions/block-edit.js +111 -0
  390. package/dist/editor-actions/commit/history.d.ts +9 -0
  391. package/dist/editor-actions/commit/history.js +77 -0
  392. package/dist/editor-actions/commit/text-batch.d.ts +34 -0
  393. package/dist/editor-actions/commit/text-batch.js +61 -0
  394. package/dist/editor-actions/commit/undo-controller.d.ts +7 -0
  395. package/dist/editor-actions/commit/undo-controller.js +570 -0
  396. package/dist/editor-actions/container-block-component.d.ts +85 -0
  397. package/dist/editor-actions/container-block-component.js +228 -0
  398. package/dist/editor-actions/container-edit.d.ts +7 -0
  399. package/dist/editor-actions/container-edit.js +49 -0
  400. package/dist/editor-actions/container-exit-overrides.d.ts +16 -0
  401. package/dist/editor-actions/container-exit-overrides.js +38 -0
  402. package/dist/editor-actions/deps.d.ts +60 -0
  403. package/dist/editor-actions/deps.js +1 -0
  404. package/dist/editor-actions/enter-completion.d.ts +25 -0
  405. package/dist/editor-actions/enter-completion.js +76 -0
  406. package/dist/editor-actions/focus/focus-dispatch.d.ts +36 -0
  407. package/dist/editor-actions/focus/focus-dispatch.js +106 -0
  408. package/dist/editor-actions/focus/focus-landing.d.ts +7 -0
  409. package/dist/editor-actions/focus/focus-landing.js +39 -0
  410. package/dist/editor-actions/focus/focus.d.ts +7 -0
  411. package/dist/editor-actions/focus/focus.js +74 -0
  412. package/dist/editor-actions/index.d.ts +15 -0
  413. package/dist/editor-actions/index.js +19 -0
  414. package/dist/editor-actions/inline-range-commit.d.ts +20 -0
  415. package/dist/editor-actions/inline-range-commit.js +63 -0
  416. package/dist/editor-actions/list-context.d.ts +25 -0
  417. package/dist/editor-actions/list-context.js +285 -0
  418. package/dist/editor-actions/list-overrides.d.ts +13 -0
  419. package/dist/editor-actions/list-overrides.js +26 -0
  420. package/dist/editor-actions/merge-fallback.d.ts +19 -0
  421. package/dist/editor-actions/merge-fallback.js +27 -0
  422. package/dist/editor-actions/nested/nested-actions.d.ts +65 -0
  423. package/dist/editor-actions/nested/nested-actions.js +59 -0
  424. package/dist/editor-actions/nested/nested-block-edit.d.ts +10 -0
  425. package/dist/editor-actions/nested/nested-block-edit.js +181 -0
  426. package/dist/editor-actions/nested/nested-focus.d.ts +9 -0
  427. package/dist/editor-actions/nested/nested-focus.js +30 -0
  428. package/dist/editor-actions/paste-coordinator.d.ts +4 -0
  429. package/dist/editor-actions/paste-coordinator.js +20 -0
  430. package/dist/editor-actions/plugin/chrome-leaf.d.ts +25 -0
  431. package/dist/editor-actions/plugin/chrome-leaf.js +80 -0
  432. package/dist/editor-actions/plugin/container.d.ts +137 -0
  433. package/dist/editor-actions/plugin/container.js +351 -0
  434. package/dist/editor-actions/plugin/directive-container.d.ts +13 -0
  435. package/dist/editor-actions/plugin/directive-container.js +31 -0
  436. package/dist/editor-actions/reorder-action.d.ts +17 -0
  437. package/dist/editor-actions/reorder-action.js +104 -0
  438. package/dist/editor-actions/reorder-drag.d.ts +34 -0
  439. package/dist/editor-actions/reorder-drag.js +152 -0
  440. package/dist/editor-actions/replacement-focus.d.ts +27 -0
  441. package/dist/editor-actions/replacement-focus.js +60 -0
  442. package/dist/editor-actions/search-replace.d.ts +6 -0
  443. package/dist/editor-actions/search-replace.js +145 -0
  444. package/dist/editor-actions/table-context.d.ts +34 -0
  445. package/dist/editor-actions/table-context.js +292 -0
  446. package/dist/editor-actions/unwrap-strategies.d.ts +14 -0
  447. package/dist/editor-actions/unwrap-strategies.js +131 -0
  448. package/dist/editor-actions/whole-block-focus-surface.d.ts +51 -0
  449. package/dist/editor-actions/whole-block-focus-surface.js +171 -0
  450. package/dist/editor-events.d.ts +89 -0
  451. package/dist/editor-events.js +96 -0
  452. package/dist/editor-keys.d.ts +197 -0
  453. package/dist/editor-keys.js +40 -0
  454. package/dist/editor-props.d.ts +164 -0
  455. package/dist/editor-props.js +1 -0
  456. package/dist/editor-rects.d.ts +58 -0
  457. package/dist/editor-rects.js +114 -0
  458. package/dist/env.d.ts +12 -0
  459. package/dist/env.js +20 -0
  460. package/dist/index.d.ts +27 -0
  461. package/dist/index.js +19 -0
  462. package/dist/invariants/commit-paths.d.ts +10 -0
  463. package/dist/invariants/commit-paths.js +25 -0
  464. package/dist/invariants/commit-scope.d.ts +9 -0
  465. package/dist/invariants/commit-scope.js +16 -0
  466. package/dist/invariants/context-keys.d.ts +7 -0
  467. package/dist/invariants/context-keys.js +14 -0
  468. package/dist/invariants/descriptor.d.ts +10 -0
  469. package/dist/invariants/descriptor.js +24 -0
  470. package/dist/invariants/inline-transitions.d.ts +23 -0
  471. package/dist/invariants/inline-transitions.js +52 -0
  472. package/dist/invariants/install.d.ts +36 -0
  473. package/dist/invariants/install.js +66 -0
  474. package/dist/invariants/landable-caret.d.ts +12 -0
  475. package/dist/invariants/landable-caret.js +31 -0
  476. package/dist/invariants/marker-css-parity.d.ts +10 -0
  477. package/dist/invariants/marker-css-parity.js +87 -0
  478. package/dist/invariants/node-shape.d.ts +44 -0
  479. package/dist/invariants/node-shape.js +258 -0
  480. package/dist/invariants/registry.d.ts +126 -0
  481. package/dist/invariants/registry.js +349 -0
  482. package/dist/invariants/render-fidelity.d.ts +8 -0
  483. package/dist/invariants/render-fidelity.js +33 -0
  484. package/dist/invariants/selection-endpoints.d.ts +19 -0
  485. package/dist/invariants/selection-endpoints.js +78 -0
  486. package/dist/invariants/single-node-sink.d.ts +9 -0
  487. package/dist/invariants/single-node-sink.js +16 -0
  488. package/dist/invariants/snapshot-integrity.d.ts +17 -0
  489. package/dist/invariants/snapshot-integrity.js +24 -0
  490. package/dist/invariants/split-landing.d.ts +8 -0
  491. package/dist/invariants/split-landing.js +15 -0
  492. package/dist/invariants/structural-descriptor.d.ts +21 -0
  493. package/dist/invariants/structural-descriptor.js +50 -0
  494. package/dist/perf/instruments.d.ts +49 -0
  495. package/dist/perf/instruments.js +154 -0
  496. package/dist/perf/use-mount-gauge.svelte.d.ts +1 -0
  497. package/dist/perf/use-mount-gauge.svelte.js +15 -0
  498. package/dist/plugin.d.ts +102 -0
  499. package/dist/plugin.js +156 -0
  500. package/dist/plugins/admonitions/AdmonitionBlock.svelte +144 -0
  501. package/dist/plugins/admonitions/AdmonitionBlock.svelte.d.ts +11 -0
  502. package/dist/plugins/admonitions/admonition-kind.d.ts +8 -0
  503. package/dist/plugins/admonitions/admonition-kind.js +97 -0
  504. package/dist/plugins/admonitions/convert-document.d.ts +11 -0
  505. package/dist/plugins/admonitions/convert-document.js +39 -0
  506. package/dist/plugins/admonitions/gh-alert.d.ts +13 -0
  507. package/dist/plugins/admonitions/gh-alert.js +83 -0
  508. package/dist/plugins/admonitions/github-alert-kind.d.ts +12 -0
  509. package/dist/plugins/admonitions/github-alert-kind.js +125 -0
  510. package/dist/plugins/admonitions/index.d.ts +6 -0
  511. package/dist/plugins/admonitions/index.js +8 -0
  512. package/dist/plugins/admonitions/kinds.d.ts +26 -0
  513. package/dist/plugins/admonitions/kinds.js +18 -0
  514. package/dist/plugins/admonitions/register.d.ts +7 -0
  515. package/dist/plugins/admonitions/register.js +12 -0
  516. package/dist/plugins/details/DetailsBlock.svelte +129 -0
  517. package/dist/plugins/details/DetailsBlock.svelte.d.ts +11 -0
  518. package/dist/plugins/details/details-disclosure.svelte.d.ts +17 -0
  519. package/dist/plugins/details/details-disclosure.svelte.js +24 -0
  520. package/dist/plugins/details/details-kind.d.ts +25 -0
  521. package/dist/plugins/details/details-kind.js +237 -0
  522. package/dist/plugins/details/index.d.ts +2 -0
  523. package/dist/plugins/details/index.js +2 -0
  524. package/dist/plugins/details/register.d.ts +6 -0
  525. package/dist/plugins/details/register.js +15 -0
  526. package/dist/plugins/emoji/emoji-plugin.d.ts +2 -0
  527. package/dist/plugins/emoji/emoji-plugin.js +10 -0
  528. package/dist/plugins/emoji/emoji-recognizer.d.ts +18 -0
  529. package/dist/plugins/emoji/emoji-recognizer.js +63 -0
  530. package/dist/plugins/emoji/emoji-table.d.ts +1 -0
  531. package/dist/plugins/emoji/emoji-table.js +1919 -0
  532. package/dist/plugins/emoji/index.d.ts +3 -0
  533. package/dist/plugins/emoji/index.js +4 -0
  534. package/dist/plugins/footnotes/FootnoteDefinition.svelte +103 -0
  535. package/dist/plugins/footnotes/FootnoteDefinition.svelte.d.ts +13 -0
  536. package/dist/plugins/footnotes/FootnoteReference.svelte +50 -0
  537. package/dist/plugins/footnotes/FootnoteReference.svelte.d.ts +4 -0
  538. package/dist/plugins/footnotes/constants.d.ts +2 -0
  539. package/dist/plugins/footnotes/constants.js +4 -0
  540. package/dist/plugins/footnotes/footnote-definition.d.ts +14 -0
  541. package/dist/plugins/footnotes/footnote-definition.js +147 -0
  542. package/dist/plugins/footnotes/footnote-lookup.d.ts +9 -0
  543. package/dist/plugins/footnotes/footnote-lookup.js +33 -0
  544. package/dist/plugins/footnotes/footnote-numbering.d.ts +23 -0
  545. package/dist/plugins/footnotes/footnote-numbering.js +78 -0
  546. package/dist/plugins/footnotes/footnote-reference.d.ts +7 -0
  547. package/dist/plugins/footnotes/footnote-reference.js +54 -0
  548. package/dist/plugins/footnotes/footnotes-plugin.d.ts +7 -0
  549. package/dist/plugins/footnotes/footnotes-plugin.js +17 -0
  550. package/dist/plugins/footnotes/index.d.ts +5 -0
  551. package/dist/plugins/footnotes/index.js +6 -0
  552. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +17 -0
  553. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +31 -0
  554. package/dist/plugins/highlight-occurrences/index.d.ts +1 -0
  555. package/dist/plugins/highlight-occurrences/index.js +1 -0
  556. package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +26 -0
  557. package/dist/plugins/highlight-occurrences/occurrence-source.js +54 -0
  558. package/dist/plugins/highlight-occurrences/occurrences.d.ts +33 -0
  559. package/dist/plugins/highlight-occurrences/occurrences.js +108 -0
  560. package/dist/plugins/latex/BlockMath.svelte +119 -0
  561. package/dist/plugins/latex/BlockMath.svelte.d.ts +21 -0
  562. package/dist/plugins/latex/MathInline.svelte +28 -0
  563. package/dist/plugins/latex/MathInline.svelte.d.ts +4 -0
  564. package/dist/plugins/latex/index.d.ts +3 -0
  565. package/dist/plugins/latex/index.js +4 -0
  566. package/dist/plugins/latex/latex-kind.d.ts +17 -0
  567. package/dist/plugins/latex/latex-kind.js +224 -0
  568. package/dist/plugins/latex/math-completion.d.ts +10 -0
  569. package/dist/plugins/latex/math-completion.js +19 -0
  570. package/dist/plugins/latex/math-renderer.d.ts +26 -0
  571. package/dist/plugins/latex/math-renderer.js +42 -0
  572. package/dist/plugins/latex/register.d.ts +10 -0
  573. package/dist/plugins/latex/register.js +23 -0
  574. package/dist/plugins/latex/renderer.d.ts +13 -0
  575. package/dist/plugins/latex/renderer.js +34 -0
  576. package/dist/plugins/mermaid/MermaidBlock.svelte +572 -0
  577. package/dist/plugins/mermaid/MermaidBlock.svelte.d.ts +11 -0
  578. package/dist/plugins/mermaid/index.d.ts +3 -0
  579. package/dist/plugins/mermaid/index.js +3 -0
  580. package/dist/plugins/mermaid/mermaid-kind.d.ts +38 -0
  581. package/dist/plugins/mermaid/mermaid-kind.js +176 -0
  582. package/dist/plugins/mermaid/mermaid-renderer.d.ts +28 -0
  583. package/dist/plugins/mermaid/mermaid-renderer.js +35 -0
  584. package/dist/plugins/mermaid/register.d.ts +10 -0
  585. package/dist/plugins/mermaid/register.js +20 -0
  586. package/dist/plugins/mermaid/renderer.d.ts +11 -0
  587. package/dist/plugins/mermaid/renderer.js +53 -0
  588. package/dist/plugins/parrot/ParrotBlock.svelte +342 -0
  589. package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +21 -0
  590. package/dist/plugins/parrot/index.d.ts +1 -0
  591. package/dist/plugins/parrot/index.js +2 -0
  592. package/dist/plugins/parrot/parrot-plugin.d.ts +3 -0
  593. package/dist/plugins/parrot/parrot-plugin.js +49 -0
  594. package/dist/plugins/toc/TocBlock.svelte +218 -0
  595. package/dist/plugins/toc/TocBlock.svelte.d.ts +24 -0
  596. package/dist/plugins/toc/heading-outline.d.ts +28 -0
  597. package/dist/plugins/toc/heading-outline.js +65 -0
  598. package/dist/plugins/toc/index.d.ts +2 -0
  599. package/dist/plugins/toc/index.js +2 -0
  600. package/dist/plugins/toc/navigation-queue.d.ts +12 -0
  601. package/dist/plugins/toc/navigation-queue.js +21 -0
  602. package/dist/plugins/toc/toc-plugin.d.ts +16 -0
  603. package/dist/plugins/toc/toc-plugin.js +71 -0
  604. package/dist/presentation-mode.d.ts +32 -0
  605. package/dist/presentation-mode.js +50 -0
  606. package/dist/reactivity/block-list-state.svelte.d.ts +22 -0
  607. package/dist/reactivity/block-list-state.svelte.js +46 -0
  608. package/dist/reactivity/block-window.svelte.d.ts +41 -0
  609. package/dist/reactivity/block-window.svelte.js +93 -0
  610. package/dist/reactivity/content-version.svelte.d.ts +14 -0
  611. package/dist/reactivity/content-version.svelte.js +16 -0
  612. package/dist/reactivity/list-windowing.svelte.d.ts +100 -0
  613. package/dist/reactivity/list-windowing.svelte.js +402 -0
  614. package/dist/reactivity/measure-batch.d.ts +15 -0
  615. package/dist/reactivity/measure-batch.js +18 -0
  616. package/dist/reactivity/publish-ref.svelte.d.ts +54 -0
  617. package/dist/reactivity/publish-ref.svelte.js +128 -0
  618. package/dist/reactivity/scope-geometry.d.ts +18 -0
  619. package/dist/reactivity/scope-geometry.js +29 -0
  620. package/dist/reactivity/state-registry.d.ts +10 -0
  621. package/dist/reactivity/state-registry.js +44 -0
  622. package/dist/reactivity/use-container-windowing.svelte.d.ts +35 -0
  623. package/dist/reactivity/use-container-windowing.svelte.js +95 -0
  624. package/dist/reactivity/window-slice.d.ts +11 -0
  625. package/dist/reactivity/window-slice.js +9 -0
  626. package/dist/scan-index.d.ts +11 -0
  627. package/dist/scan-index.js +27 -0
  628. package/dist/schema/block-commands.d.ts +105 -0
  629. package/dist/schema/block-commands.js +179 -0
  630. package/dist/schema/block-completions.d.ts +33 -0
  631. package/dist/schema/block-completions.js +49 -0
  632. package/dist/schema/block-component-registry.d.ts +33 -0
  633. package/dist/schema/block-component-registry.js +33 -0
  634. package/dist/schema/block-kind-descriptor.d.ts +281 -0
  635. package/dist/schema/block-kind-descriptor.js +187 -0
  636. package/dist/schema/block-openers.d.ts +94 -0
  637. package/dist/schema/block-openers.js +150 -0
  638. package/dist/schema/built-in-descriptors.d.ts +8 -0
  639. package/dist/schema/built-in-descriptors.js +560 -0
  640. package/dist/schema/child-spans.d.ts +25 -0
  641. package/dist/schema/child-spans.js +161 -0
  642. package/dist/schema/closure.d.ts +39 -0
  643. package/dist/schema/closure.js +55 -0
  644. package/dist/schema/command-id.d.ts +20 -0
  645. package/dist/schema/command-id.js +42 -0
  646. package/dist/schema/commands.d.ts +147 -0
  647. package/dist/schema/commands.js +294 -0
  648. package/dist/schema/container-raw.d.ts +21 -0
  649. package/dist/schema/container-raw.js +43 -0
  650. package/dist/schema/container-rebuilders.d.ts +32 -0
  651. package/dist/schema/container-rebuilders.js +95 -0
  652. package/dist/schema/define-plugin-block.d.ts +15 -0
  653. package/dist/schema/define-plugin-block.js +18 -0
  654. package/dist/schema/fenced-code-raw.d.ts +43 -0
  655. package/dist/schema/fenced-code-raw.js +220 -0
  656. package/dist/schema/global-commands.d.ts +11 -0
  657. package/dist/schema/global-commands.js +40 -0
  658. package/dist/schema/inline-construct-policy.d.ts +131 -0
  659. package/dist/schema/inline-construct-policy.js +96 -0
  660. package/dist/schema/keybinding-overrides.d.ts +39 -0
  661. package/dist/schema/keybinding-overrides.js +43 -0
  662. package/dist/schema/keybindings.d.ts +36 -0
  663. package/dist/schema/keybindings.js +75 -0
  664. package/dist/schema/merge-rules.d.ts +28 -0
  665. package/dist/schema/merge-rules.js +57 -0
  666. package/dist/schema/opener-priorities.d.ts +16 -0
  667. package/dist/schema/opener-priorities.js +16 -0
  668. package/dist/schema/operations.d.ts +110 -0
  669. package/dist/schema/operations.js +6 -0
  670. package/dist/schema/plugin-activation.d.ts +13 -0
  671. package/dist/schema/plugin-activation.js +18 -0
  672. package/dist/schema/plugin-editor-context.d.ts +33 -0
  673. package/dist/schema/plugin-editor-context.js +65 -0
  674. package/dist/schema/plugin-install.d.ts +58 -0
  675. package/dist/schema/plugin-install.js +132 -0
  676. package/dist/schema/plugin-kind.d.ts +21 -0
  677. package/dist/schema/plugin-kind.js +86 -0
  678. package/dist/schema/plugin-name.d.ts +1 -0
  679. package/dist/schema/plugin-name.js +7 -0
  680. package/dist/schema/register-once.d.ts +9 -0
  681. package/dist/schema/register-once.js +35 -0
  682. package/dist/schema/registration-checks.d.ts +32 -0
  683. package/dist/schema/registration-checks.js +122 -0
  684. package/dist/schema/registration-pending.d.ts +28 -0
  685. package/dist/schema/registration-pending.js +48 -0
  686. package/dist/schema/registry-reset.d.ts +7 -0
  687. package/dist/schema/registry-reset.js +30 -0
  688. package/dist/schema/registry-view.d.ts +30 -0
  689. package/dist/schema/registry-view.js +39 -0
  690. package/dist/schema/reserved-chords.d.ts +35 -0
  691. package/dist/schema/reserved-chords.js +313 -0
  692. package/dist/schema/reserved-chrome.d.ts +23 -0
  693. package/dist/schema/reserved-chrome.js +33 -0
  694. package/dist/schema/table-cell-raw.d.ts +14 -0
  695. package/dist/schema/table-cell-raw.js +30 -0
  696. package/dist/schema/whole-block-unit.d.ts +8 -0
  697. package/dist/schema/whole-block-unit.js +12 -0
  698. package/dist/search/document-scan.d.ts +22 -0
  699. package/dist/search/document-scan.js +39 -0
  700. package/dist/search/matcher.d.ts +31 -0
  701. package/dist/search/matcher.js +70 -0
  702. package/dist/search/regex-executor.d.ts +41 -0
  703. package/dist/search/regex-executor.js +165 -0
  704. package/dist/search/replace.d.ts +15 -0
  705. package/dist/search/replace.js +29 -0
  706. package/dist/search/search-state.svelte.d.ts +59 -0
  707. package/dist/search/search-state.svelte.js +231 -0
  708. package/dist/selection/autoscroll.d.ts +26 -0
  709. package/dist/selection/autoscroll.js +91 -0
  710. package/dist/selection/block-hit-test.d.ts +37 -0
  711. package/dist/selection/block-hit-test.js +59 -0
  712. package/dist/selection/caret-doors.d.ts +20 -0
  713. package/dist/selection/caret-doors.js +44 -0
  714. package/dist/selection/caret-restore.d.ts +15 -0
  715. package/dist/selection/caret-restore.js +32 -0
  716. package/dist/selection/char-endpoint-snap.d.ts +15 -0
  717. package/dist/selection/char-endpoint-snap.js +39 -0
  718. package/dist/selection/clipboard-text.d.ts +13 -0
  719. package/dist/selection/clipboard-text.js +314 -0
  720. package/dist/selection/cross-block/clipboard.d.ts +14 -0
  721. package/dist/selection/cross-block/clipboard.js +20 -0
  722. package/dist/selection/cross-block/dispatch.d.ts +78 -0
  723. package/dist/selection/cross-block/dispatch.js +57 -0
  724. package/dist/selection/cross-block/format-range.d.ts +38 -0
  725. package/dist/selection/cross-block/format-range.js +193 -0
  726. package/dist/selection/cross-block/format-toggle.d.ts +27 -0
  727. package/dist/selection/cross-block/format-toggle.js +109 -0
  728. package/dist/selection/cross-block/keydown.d.ts +11 -0
  729. package/dist/selection/cross-block/keydown.js +339 -0
  730. package/dist/selection/cross-block/ops.d.ts +56 -0
  731. package/dist/selection/cross-block/ops.js +210 -0
  732. package/dist/selection/cross-block/paste.d.ts +8 -0
  733. package/dist/selection/cross-block/paste.js +156 -0
  734. package/dist/selection/cross-block/pointer.d.ts +19 -0
  735. package/dist/selection/cross-block/pointer.js +80 -0
  736. package/dist/selection/cross-block/type-replace.d.ts +10 -0
  737. package/dist/selection/cross-block/type-replace.js +129 -0
  738. package/dist/selection/dead-space-caret.d.ts +39 -0
  739. package/dist/selection/dead-space-caret.js +173 -0
  740. package/dist/selection/drag-pointer.d.ts +22 -0
  741. package/dist/selection/drag-pointer.js +89 -0
  742. package/dist/selection/gap-caret.d.ts +47 -0
  743. package/dist/selection/gap-caret.js +72 -0
  744. package/dist/selection/keyboard-extend.d.ts +43 -0
  745. package/dist/selection/keyboard-extend.js +257 -0
  746. package/dist/selection/native-bridge.d.ts +47 -0
  747. package/dist/selection/native-bridge.js +204 -0
  748. package/dist/selection/nearest-block.d.ts +43 -0
  749. package/dist/selection/nearest-block.js +73 -0
  750. package/dist/selection/path-lookup.d.ts +32 -0
  751. package/dist/selection/path-lookup.js +132 -0
  752. package/dist/selection/path-math.d.ts +35 -0
  753. package/dist/selection/path-math.js +90 -0
  754. package/dist/selection/pointer-session.d.ts +43 -0
  755. package/dist/selection/pointer-session.js +111 -0
  756. package/dist/selection/primitives.d.ts +75 -0
  757. package/dist/selection/primitives.js +91 -0
  758. package/dist/selection/range-delete-ceremony.d.ts +85 -0
  759. package/dist/selection/range-delete-ceremony.js +197 -0
  760. package/dist/selection/range-delete-chrome.d.ts +39 -0
  761. package/dist/selection/range-delete-chrome.js +105 -0
  762. package/dist/selection/range-delete-table-coverage.d.ts +28 -0
  763. package/dist/selection/range-delete-table-coverage.js +168 -0
  764. package/dist/selection/range-delete-table.d.ts +16 -0
  765. package/dist/selection/range-delete-table.js +347 -0
  766. package/dist/selection/range-delete.d.ts +33 -0
  767. package/dist/selection/range-delete.js +121 -0
  768. package/dist/selection/selection-description.d.ts +7 -0
  769. package/dist/selection/selection-description.js +18 -0
  770. package/dist/selection/selection-restore.d.ts +46 -0
  771. package/dist/selection/selection-restore.js +66 -0
  772. package/dist/selection/selection-state.svelte.d.ts +72 -0
  773. package/dist/selection/selection-state.svelte.js +247 -0
  774. package/dist/selection/shared-keydown.d.ts +61 -0
  775. package/dist/selection/shared-keydown.js +150 -0
  776. package/dist/selection/table-endpoint-snap.d.ts +55 -0
  777. package/dist/selection/table-endpoint-snap.js +143 -0
  778. package/dist/selection/table-rect-extend.d.ts +23 -0
  779. package/dist/selection/table-rect-extend.js +46 -0
  780. package/dist/selection/widget-range-paint.d.ts +12 -0
  781. package/dist/selection/widget-range-paint.js +44 -0
  782. package/dist/styles/editor-theme.css +151 -0
  783. package/dist/styles/editor.css +585 -0
  784. package/dist/testing/conformance-core.d.ts +45 -0
  785. package/dist/testing/conformance-core.js +105 -0
  786. package/dist/testing/container-conformance.d.ts +137 -0
  787. package/dist/testing/container-conformance.js +533 -0
  788. package/dist/testing/headless-actions.d.ts +37 -0
  789. package/dist/testing/headless-actions.js +118 -0
  790. package/dist/testing/inline-conformance.d.ts +50 -0
  791. package/dist/testing/inline-conformance.js +442 -0
  792. package/dist/testing/kind-conformance.d.ts +54 -0
  793. package/dist/testing/kind-conformance.js +325 -0
  794. package/dist/testing/mount-dom-stubs.d.ts +8 -0
  795. package/dist/testing/mount-dom-stubs.js +19 -0
  796. package/dist/testing/parse-convergence.d.ts +14 -0
  797. package/dist/testing/parse-convergence.js +81 -0
  798. package/dist/testing.d.ts +20 -0
  799. package/dist/testing.js +61 -0
  800. package/dist/tree-operations/blockquote.d.ts +18 -0
  801. package/dist/tree-operations/blockquote.js +59 -0
  802. package/dist/tree-operations/children.d.ts +17 -0
  803. package/dist/tree-operations/children.js +56 -0
  804. package/dist/tree-operations/cleanup.d.ts +10 -0
  805. package/dist/tree-operations/cleanup.js +25 -0
  806. package/dist/tree-operations/clone.d.ts +5 -0
  807. package/dist/tree-operations/clone.js +43 -0
  808. package/dist/tree-operations/container-lift.d.ts +9 -0
  809. package/dist/tree-operations/container-lift.js +29 -0
  810. package/dist/tree-operations/index.d.ts +16 -0
  811. package/dist/tree-operations/index.js +14 -0
  812. package/dist/tree-operations/list/empty-check.d.ts +7 -0
  813. package/dist/tree-operations/list/empty-check.js +19 -0
  814. package/dist/tree-operations/list/exit-replacement.d.ts +13 -0
  815. package/dist/tree-operations/list/exit-replacement.js +49 -0
  816. package/dist/tree-operations/list/item-partition.d.ts +13 -0
  817. package/dist/tree-operations/list/item-partition.js +33 -0
  818. package/dist/tree-operations/list/list-builders.d.ts +44 -0
  819. package/dist/tree-operations/list/list-builders.js +129 -0
  820. package/dist/tree-operations/list/ordered-markers.d.ts +36 -0
  821. package/dist/tree-operations/list/ordered-markers.js +114 -0
  822. package/dist/tree-operations/list/reconcile-task.d.ts +12 -0
  823. package/dist/tree-operations/list/reconcile-task.js +47 -0
  824. package/dist/tree-operations/list/sublist-separator.d.ts +13 -0
  825. package/dist/tree-operations/list/sublist-separator.js +34 -0
  826. package/dist/tree-operations/list/terminator.d.ts +17 -0
  827. package/dist/tree-operations/list/terminator.js +60 -0
  828. package/dist/tree-operations/list/unwrap-merge.d.ts +29 -0
  829. package/dist/tree-operations/list/unwrap-merge.js +202 -0
  830. package/dist/tree-operations/node-ops.d.ts +296 -0
  831. package/dist/tree-operations/node-ops.js +1428 -0
  832. package/dist/tree-operations/parse-block.d.ts +3 -0
  833. package/dist/tree-operations/parse-block.js +8 -0
  834. package/dist/tree-operations/paste/apply.d.ts +12 -0
  835. package/dist/tree-operations/paste/apply.js +75 -0
  836. package/dist/tree-operations/paste/body-write.d.ts +19 -0
  837. package/dist/tree-operations/paste/body-write.js +53 -0
  838. package/dist/tree-operations/paste/container-match.d.ts +32 -0
  839. package/dist/tree-operations/paste/container-match.js +238 -0
  840. package/dist/tree-operations/paste/container-paste.d.ts +10 -0
  841. package/dist/tree-operations/paste/container-paste.js +27 -0
  842. package/dist/tree-operations/paste/dispatch.d.ts +61 -0
  843. package/dist/tree-operations/paste/dispatch.js +138 -0
  844. package/dist/tree-operations/paste/find-enclosing-list.d.ts +8 -0
  845. package/dist/tree-operations/paste/find-enclosing-list.js +30 -0
  846. package/dist/tree-operations/paste/focus-target.d.ts +27 -0
  847. package/dist/tree-operations/paste/focus-target.js +40 -0
  848. package/dist/tree-operations/paste/hooks.d.ts +17 -0
  849. package/dist/tree-operations/paste/hooks.js +80 -0
  850. package/dist/tree-operations/paste/list-absorb.d.ts +29 -0
  851. package/dist/tree-operations/paste/list-absorb.js +106 -0
  852. package/dist/tree-operations/paste/list-break-out.d.ts +42 -0
  853. package/dist/tree-operations/paste/list-break-out.js +136 -0
  854. package/dist/tree-operations/paste/parent-scope.d.ts +17 -0
  855. package/dist/tree-operations/paste/parent-scope.js +35 -0
  856. package/dist/tree-operations/paste/paste-deps.d.ts +20 -0
  857. package/dist/tree-operations/paste/paste-deps.js +6 -0
  858. package/dist/tree-operations/paste/paste-replacement.d.ts +8 -0
  859. package/dist/tree-operations/paste/paste-replacement.js +60 -0
  860. package/dist/tree-operations/paste/paste-transforms.d.ts +25 -0
  861. package/dist/tree-operations/paste/paste-transforms.js +72 -0
  862. package/dist/tree-operations/paste/replace-block-at-parent.d.ts +29 -0
  863. package/dist/tree-operations/paste/replace-block-at-parent.js +75 -0
  864. package/dist/tree-operations/paste/strategy.d.ts +9 -0
  865. package/dist/tree-operations/paste/strategy.js +20 -0
  866. package/dist/tree-operations/paste/table-slice.d.ts +10 -0
  867. package/dist/tree-operations/paste/table-slice.js +39 -0
  868. package/dist/tree-operations/paste-surfaces.d.ts +61 -0
  869. package/dist/tree-operations/paste-surfaces.js +15 -0
  870. package/dist/tree-operations/path-mutate.d.ts +12 -0
  871. package/dist/tree-operations/path-mutate.js +20 -0
  872. package/dist/tree-operations/reorder-unit.d.ts +17 -0
  873. package/dist/tree-operations/reorder-unit.js +37 -0
  874. package/dist/tree-operations/reorder.d.ts +13 -0
  875. package/dist/tree-operations/reorder.js +57 -0
  876. package/dist/tree-operations/sharing.d.ts +18 -0
  877. package/dist/tree-operations/sharing.js +14 -0
  878. package/dist/tree-operations/splice-many.d.ts +9 -0
  879. package/dist/tree-operations/splice-many.js +22 -0
  880. package/dist/tree-operations/structural-change.d.ts +65 -0
  881. package/dist/tree-operations/structural-change.js +117 -0
  882. package/dist/tree-operations/sub-table-copy.d.ts +6 -0
  883. package/dist/tree-operations/sub-table-copy.js +43 -0
  884. package/dist/tree-operations/table-mutations.d.ts +17 -0
  885. package/dist/tree-operations/table-mutations.js +101 -0
  886. package/dist/tree-operations/unshare.d.ts +101 -0
  887. package/dist/tree-operations/unshare.js +248 -0
  888. package/dist/undo/manager.d.ts +2 -0
  889. package/dist/undo/manager.js +50 -0
  890. package/dist/undo/types.d.ts +44 -0
  891. package/dist/undo/types.js +7 -0
  892. package/docs/guide/consumer-guide.md +1098 -0
  893. package/docs/guide/directives.md +223 -0
  894. package/docs/guide/plugin-api.md +329 -0
  895. package/docs/guide/plugin-guide/conspiracy.gif +0 -0
  896. package/docs/guide/plugin-guide/parrot-frames.md +209 -0
  897. package/docs/guide/plugin-guide/parrot.gif +0 -0
  898. package/docs/guide/plugin-guide.md +1693 -0
  899. package/docs/guide/plugin-testing.md +463 -0
  900. package/package.json +238 -0
@@ -0,0 +1,339 @@
1
+ /**
2
+ * Keydown + compositionstart half of the cross-block dispatcher. See dispatch.ts for the
3
+ * composer that wires this together with the pointer half.
4
+ */
5
+ import { CURSOR_START } from '../../block-component';
6
+ import { performCrossBlockDelete, performCrossBlockDeleteSync } from './ops';
7
+ import { isBlockNode } from '../../tree-operations/node-ops';
8
+ import { isReadingMode } from '../../presentation-mode';
9
+ import { eventToChord } from '../../schema/keybindings';
10
+ import { dispatchKeyCommand } from '../../schema/block-commands';
11
+ import { collapseCrossBlock, extendFocusToNextBlock, extendFocusToPreviousBlock, extendFocusToDocEdge, selectWholeDocument, scrollFocusBlockIntoView } from '../keyboard-extend';
12
+ import { pathsEqual } from '../path-math';
13
+ import { intraTableRectExtension } from '../table-rect-extend';
14
+ import { ambientSpanOf, placeCaretAfterAmbientSpan } from '../../ambient/ambient-dom';
15
+ import { asDomTextOffset } from '../../cursor/coordinate-spaces';
16
+ import { createRangeFromOffsets } from '../../cursor/content-offsets';
17
+ export function createCrossBlockKeydown(ctx, mutCtx) {
18
+ return {
19
+ handleKeyDown: (e) => handleKeyDown(ctx, mutCtx, e),
20
+ handleCompositionStart: () => handleCompositionStart(ctx, mutCtx)
21
+ };
22
+ }
23
+ // ── Keydown ────────────────────────────────────────────────────────────────
24
+ async function handleKeyDown(ctx, mutCtx, e) {
25
+ const { selection } = ctx;
26
+ // Before the dispatch, not after: every branch below can consume the key and return, and the
27
+ // collapse/extend arms run no commit, so a reset deferred to the shared prelude never fires.
28
+ // The dispatcher holds a range, not a caret, so it supplies no measurement; a collapse lands one.
29
+ ctx.stickyColumn.noteKey(e);
30
+ ctx.edgeAffinity.note(e);
31
+ // Mode-independent: the doc-edge extend behaves identically from a caret and an active range,
32
+ // so it dispatches once, ahead of the mode split.
33
+ if ((e.ctrlKey || e.metaKey) && e.shiftKey && (e.key === 'End' || e.key === 'Home')) {
34
+ return handleDocEdgeExtend(ctx, e, e.key === 'End' ? 'end' : 'start');
35
+ }
36
+ if (selection.isCrossBlock) {
37
+ const handled = await handleCrossBlockActive(ctx, mutCtx, e);
38
+ if (handled)
39
+ return true;
40
+ }
41
+ return handleCrossBlockEntry(ctx, e);
42
+ }
43
+ /** Keystroke dispatch while cross-block mode is already active. */
44
+ async function handleCrossBlockActive(ctx, mutCtx, e) {
45
+ const el = ctx.getEl();
46
+ if (!el)
47
+ return false;
48
+ const { selection, getDoc, getBlockElByPath } = ctx;
49
+ const myPath = ctx.getMyPath();
50
+ const doc = getDoc();
51
+ // Ctrl+C / Ctrl+X intentionally pass through: the copy/cut event writes synchronously via
52
+ // e.clipboardData.setData, since Tauri's wry webview refuses navigator.clipboard.writeText.
53
+ // Without a caret at the endpoint Chromium retargets to <body>, caught by editor-root-clipboard.
54
+ // Extend/collapse/copy stay live in reading mode; these two branches delete.
55
+ if (e.key === 'Backspace' || e.key === 'Delete') {
56
+ e.preventDefault();
57
+ if (isReadingMode(ctx.getPresentationMode))
58
+ return true;
59
+ await performCrossBlockDelete(mutCtx, { tableCoverageDelete: true });
60
+ return true;
61
+ }
62
+ // Ahead of the command candidates, because a rewrite is NOT a type-replace: deleting the range
63
+ // and dispatching at the collapsed caret leaves empty pairs where the document stood. The
64
+ // seam decides which of these ids has a cross-block arm and which declines.
65
+ if (isClaimedRewriteChord(e)) {
66
+ e.preventDefault();
67
+ if (isReadingMode(ctx.getPresentationMode))
68
+ return true;
69
+ await dispatchOverRange(ctx, e, myPath);
70
+ return true;
71
+ }
72
+ if (isCommandCandidateKey(e)) {
73
+ e.preventDefault();
74
+ if (isReadingMode(ctx.getPresentationMode))
75
+ return true;
76
+ // Reveal at the delete's own caret, not the pre-delete start path: rangeDelete returns
77
+ // the authoritative post-delete position, and for a table endpoint that is the deep
78
+ // [table,row,col] cell whose runCommand exists (the wrapper path has none).
79
+ const fallbackPath = (selection.start ?? selection.focus)?.path ?? myPath;
80
+ const collapsedCaret = await performCrossBlockDelete(mutCtx);
81
+ await ctx.afterReactivity();
82
+ const postDeleteDoc = getDoc();
83
+ const revealTarget = collapsedCaret?.path ?? fallbackPath;
84
+ const target = await ctx.revealPath(revealTarget);
85
+ const chord = eventToChord(e);
86
+ if (target?.runCommand && chord) {
87
+ dispatchKeyCommand(chord, { kind: kindOfPath(revealTarget, postDeleteDoc), runCommand: target.runCommand }, {
88
+ history: ctx.history,
89
+ pluginEditor: ctx.pluginEditor,
90
+ activation: ctx.activePlugins,
91
+ getPresentationMode: ctx.getPresentationMode,
92
+ isCrossBlockRange: () => selection.isCrossBlock,
93
+ crossBlockCommands: ctx.crossBlockCommands
94
+ }, ctx.getKeybindingOverrides(), ctx.onCommandError);
95
+ }
96
+ return true;
97
+ }
98
+ // Intra-table rectangle: Shift+Arrow grows the rect cell-by-cell and exits at the vertical
99
+ // edge. Must precede the generic extend, which snaps the focus back to cellIdx 0.
100
+ if (e.shiftKey &&
101
+ (e.key === 'ArrowUp' ||
102
+ e.key === 'ArrowDown' ||
103
+ e.key === 'ArrowLeft' ||
104
+ e.key === 'ArrowRight')) {
105
+ const ext = intraTableRectExtension(doc, selection.anchor, selection.focus, e.key);
106
+ if (ext) {
107
+ e.preventDefault();
108
+ if (ext.kind === 'cell') {
109
+ selection.extendFocus({ path: selection.focus.path.slice(), offset: ext.offset });
110
+ }
111
+ else if (ext.direction === 'forward') {
112
+ extendFocusToNextBlock(selection, doc, el, ext.fromCellPath, 'vertical');
113
+ }
114
+ else {
115
+ extendFocusToPreviousBlock(selection, doc, el, ext.fromCellPath, 'start');
116
+ }
117
+ await revealActiveEndpoint(ctx);
118
+ return true;
119
+ }
120
+ }
121
+ if (e.shiftKey && (e.key === 'ArrowDown' || e.key === 'ArrowRight')) {
122
+ e.preventDefault();
123
+ const focusPath = selection.focus?.path ?? myPath;
124
+ const focusEl = getBlockElByPath(focusPath) ?? el;
125
+ const axis = e.key === 'ArrowDown' ? 'vertical' : 'horizontal';
126
+ extendFocusToNextBlock(selection, doc, focusEl, focusPath, axis, getBlockElByPath);
127
+ await revealActiveEndpoint(ctx);
128
+ return true;
129
+ }
130
+ if (e.shiftKey && (e.key === 'ArrowUp' || e.key === 'ArrowLeft')) {
131
+ e.preventDefault();
132
+ const focusPath = selection.focus?.path ?? myPath;
133
+ const focusEl = getBlockElByPath(focusPath) ?? el;
134
+ const side = e.key === 'ArrowUp' ? 'start' : 'end';
135
+ extendFocusToPreviousBlock(selection, doc, focusEl, focusPath, side, getBlockElByPath);
136
+ await revealActiveEndpoint(ctx);
137
+ return true;
138
+ }
139
+ if (e.key === 'Escape' && !e.shiftKey && !e.ctrlKey && !e.metaKey && !e.altKey) {
140
+ e.preventDefault();
141
+ await collapseTo(ctx, 'start', doc, getBlockElByPath);
142
+ return true;
143
+ }
144
+ if (!e.shiftKey && (e.key === 'ArrowLeft' || e.key === 'ArrowUp')) {
145
+ e.preventDefault();
146
+ await collapseTo(ctx, 'start', doc, getBlockElByPath);
147
+ return true;
148
+ }
149
+ if (!e.shiftKey && (e.key === 'ArrowRight' || e.key === 'ArrowDown')) {
150
+ e.preventDefault();
151
+ await collapseTo(ctx, 'end', doc, getBlockElByPath);
152
+ return true;
153
+ }
154
+ if ((e.ctrlKey || e.metaKey) && e.key === 'a' && !e.shiftKey) {
155
+ e.preventDefault();
156
+ selectWholeDocument(selection, doc, getBlockElByPath);
157
+ return true;
158
+ }
159
+ return false;
160
+ }
161
+ /** The first-press arm: chords that start a selection from a collapsed caret. */
162
+ async function handleCrossBlockEntry(ctx, e) {
163
+ const el = ctx.getEl();
164
+ if (!el)
165
+ return false;
166
+ const { selection, getDoc } = ctx;
167
+ if ((e.ctrlKey || e.metaKey) && e.key === 'a' && !e.shiftKey) {
168
+ e.preventDefault();
169
+ selection.incrementSelectAllCount();
170
+ if (selection.selectAllCount === 1) {
171
+ selectFirstPressContent(el);
172
+ return true;
173
+ }
174
+ selectWholeDocument(selection, getDoc(), ctx.getBlockElByPath);
175
+ return true;
176
+ }
177
+ return false;
178
+ }
179
+ // ── Keydown Helpers ───────────────────────────────────────────────────────
180
+ /**
181
+ * A swallowed rewrite chord, handed to the seam with the range still painted. It resolves
182
+ * against the kind of the surface that took the keystroke, exactly as a single-block press
183
+ * would, so a consumer rebind reaches the same arm the default chord does.
184
+ */
185
+ async function dispatchOverRange(ctx, e, path) {
186
+ const chord = eventToChord(e);
187
+ if (!chord)
188
+ return;
189
+ const surface = await ctx.revealPath(path);
190
+ dispatchKeyCommand(chord,
191
+ // The block may host no command surface of its own; the range's arm is reached at the
192
+ // seam, ahead of any per-block `runCommand`, so an absent one is not a decline.
193
+ {
194
+ kind: kindOfPath(path, ctx.getDoc()),
195
+ runCommand: (id, arg) => surface?.runCommand?.(id, arg) ?? false
196
+ }, {
197
+ history: ctx.history,
198
+ pluginEditor: ctx.pluginEditor,
199
+ activation: ctx.activePlugins,
200
+ getPresentationMode: ctx.getPresentationMode,
201
+ isCrossBlockRange: () => ctx.selection.isCrossBlock,
202
+ crossBlockCommands: ctx.crossBlockCommands
203
+ }, ctx.getKeybindingOverrides(), ctx.onCommandError);
204
+ }
205
+ /**
206
+ * Keys owned by the block-level handler at the caret, which must run at a collapsed caret
207
+ * rather than over stale block indices. After the range delete they dispatch through the
208
+ * merged block's command registry.
209
+ */
210
+ function isCommandCandidateKey(e) {
211
+ if (e.key === 'Enter' && !e.ctrlKey && !e.metaKey && !e.altKey)
212
+ return true;
213
+ if (e.key === 'Tab' && !e.ctrlKey && !e.metaKey && !e.altKey)
214
+ return true;
215
+ if ((e.ctrlKey || e.metaKey) && !e.shiftKey && !e.altKey && /^[0-6]$/.test(e.key))
216
+ return true;
217
+ return false;
218
+ }
219
+ /**
220
+ * The keystroke half of the cross-block rewrite claim: swallow the default chords before the
221
+ * browser's own bold (or Ctrl+K kill-line) runs and before the delete-and-redispatch arm sees
222
+ * them, then hand the chord to the seam, which routes a format id to the cross-block arm and
223
+ * declines the rest (`CROSS_BLOCK_RANGE_COMMAND_IDS` / `RANGE_DECLINED_COMMAND_IDS` in
224
+ * `schema/commands`). Mod+Shift+X takes an arm of its own: unshifted Mod+X is the block cut.
225
+ */
226
+ function isClaimedRewriteChord(e) {
227
+ if (!(e.ctrlKey || e.metaKey) || e.altKey)
228
+ return false;
229
+ // Literal comparisons, not a character class: the G4.29 manifest scan reads the keys a file
230
+ // compares, and a regex would hide this file's claim on Mod+B/I/E/K from it.
231
+ if (e.shiftKey)
232
+ return e.key === 'x' || e.key === 'X';
233
+ return (e.key === 'b' ||
234
+ e.key === 'B' ||
235
+ e.key === 'i' ||
236
+ e.key === 'I' ||
237
+ e.key === 'e' ||
238
+ e.key === 'E' ||
239
+ e.key === 'k' ||
240
+ e.key === 'K');
241
+ }
242
+ /**
243
+ * Collapse, and correct the side the arrow already classified: the key is directional but the
244
+ * caret took no step — it jumped to the range's own edge, where the answer is construct-relative
245
+ * (live-mode.md § 4.2). Without this the seat reads the arrow's side and the first byte joins
246
+ * the construct the collapse landed in front of.
247
+ */
248
+ async function collapseTo(ctx, to, doc, getBlockElByPath) {
249
+ ctx.edgeAffinity.noteExtreme();
250
+ await collapseCrossBlock(ctx.selection, to, doc, getBlockElByPath, ctx.revealPath);
251
+ }
252
+ /** Deepest resolvable node's kind; an empty/unresolvable path reads the document root's own kind. */
253
+ function kindOfPath(path, doc) {
254
+ let node = doc;
255
+ for (const i of path) {
256
+ const child = node.children?.[i];
257
+ if (!child)
258
+ break;
259
+ node = child;
260
+ }
261
+ // The root's 'document' kind is outside AnyBlockKind; dispatch treats it as an unknown kind.
262
+ return isBlockNode(node) ? node.kind : node.kind;
263
+ }
264
+ /**
265
+ * Select the block's content for the first Ctrl+A press. With an ambient marker (a list item's
266
+ * `- `), anchor after it so type-replace doesn't corrupt the contenteditable="false" island.
267
+ */
268
+ function selectFirstPressContent(el) {
269
+ const ambient = ambientSpanOf(el);
270
+ const ambientLen = ambient?.textContent?.length ?? 0;
271
+ const textLen = el.textContent?.length ?? 0;
272
+ if (ambient && textLen > ambientLen) {
273
+ if (!placeCaretAfterAmbientSpan(el))
274
+ return;
275
+ // textLen counts the full textContent (marker included) — a DomTextOffset by construction.
276
+ const endRange = createRangeFromOffsets(el, asDomTextOffset(textLen), asDomTextOffset(textLen));
277
+ if (endRange) {
278
+ window.getSelection()?.extend(endRange.endContainer, endRange.endOffset);
279
+ }
280
+ return;
281
+ }
282
+ const range = document.createRange();
283
+ range.selectNodeContents(el);
284
+ const sel = window.getSelection();
285
+ sel?.removeAllRanges();
286
+ sel?.addRange(range);
287
+ }
288
+ /**
289
+ * Bring the active (focus-side) endpoint into view after an extend. A cell-coordinate focus
290
+ * addresses the table block by cell index, so reveal the deep cell path to mount the off-window
291
+ * row, then park the dispatch caret there to keep the next keystroke routed. Start, not end: an
292
+ * end caret in the last cell makes ArrowRight read as an exit-the-table move. `parkCaret`, never
293
+ * `focus`: this landing runs WHILE an extend grows, and `focus` would end the range (G2.12).
294
+ */
295
+ async function revealActiveEndpoint(ctx) {
296
+ const focus = ctx.selection.focus;
297
+ const landing = focus && ctx.selection.cellLandingFor(focus);
298
+ // A landing that deepened the path is a cell; anything else lands as itself.
299
+ if (focus && landing && !pathsEqual(landing.path, focus.path)) {
300
+ const cellRef = await ctx.revealPath(landing.path);
301
+ // A null ref means the cell never mounted; fall through to scroll the (mounted) table
302
+ // so a failed reveal still keeps the endpoint in view.
303
+ if (cellRef) {
304
+ cellRef.parkCaret?.(CURSOR_START);
305
+ return;
306
+ }
307
+ }
308
+ // An off-window prose endpoint can't be scrolled to while unmounted. Reveal it and park the
309
+ // dispatch caret in it, the same reveal-then-pin pattern as the table-cell case above.
310
+ if (focus && !ctx.getBlockElByPath(focus.path)) {
311
+ const ref = await ctx.revealPath(focus.path);
312
+ if (ref) {
313
+ ref.parkCaret?.(focus.offset);
314
+ scrollFocusBlockIntoView(ctx.selection, ctx.getBlockElByPath);
315
+ return;
316
+ }
317
+ }
318
+ scrollFocusBlockIntoView(ctx.selection, ctx.getBlockElByPath);
319
+ }
320
+ async function handleDocEdgeExtend(ctx, e, direction) {
321
+ const el = ctx.getEl();
322
+ if (!el)
323
+ return false;
324
+ e.preventDefault();
325
+ extendFocusToDocEdge(ctx.selection, ctx.getDoc(), el, ctx.getMyPath(), direction, ctx.getBlockElByPath);
326
+ await revealActiveEndpoint(ctx);
327
+ return true;
328
+ }
329
+ // ── CompositionStart ───────────────────────────────────────────────────────
330
+ function handleCompositionStart(ctx, mutCtx) {
331
+ ctx.stickyColumn.reset();
332
+ ctx.edgeAffinity.reset();
333
+ if (!ctx.selection.isCrossBlock)
334
+ return false;
335
+ if (isReadingMode(ctx.getPresentationMode))
336
+ return false;
337
+ performCrossBlockDeleteSync(mutCtx);
338
+ return true;
339
+ }
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Cross-block mutation: delete a range, push undo, collapse, restore the caret. Commit
3
+ * routing: pure top-level (both endpoints at doc.children, no cross-path table) commits
4
+ * structurally; anything nested or with a cross-path table endpoint needs one scope per
5
+ * spliced container, since the whole-row snap splices `table.children`. Intra-table
6
+ * full-table/row/column coverage routes to `range-delete-table-coverage`.
7
+ */
8
+ import type { UndoEntryMode } from '../../action-contracts';
9
+ import type { SelectionState } from '../selection-state.svelte';
10
+ import type { GrammarView } from '../../schema/block-openers';
11
+ import type { LinkReferenceResolverRef, PresentationModeGetter } from '../../editor-keys';
12
+ import { type SelectionPoint } from '../primitives';
13
+ import type { Document } from '../../core/nodes';
14
+ import type { BlockComponent } from '../../block-component';
15
+ import type { CommitController } from '../../action-contracts';
16
+ export interface CrossBlockMutationContext {
17
+ selection: SelectionState;
18
+ getDoc: () => Document;
19
+ getBlockElByPath: (path: number[]) => HTMLElement | null;
20
+ revealPath: (path: number[]) => Promise<BlockComponent | null>;
21
+ controller: CommitController;
22
+ /** Push an undo snapshot immediately, bypassing the debounce. */
23
+ pushUndoSnapshot: () => void;
24
+ /** Block grammar for the delete's ancestry rebuild. Required-nullable so a new construction
25
+ * site can't silently skip the thread; `undefined` = global. */
26
+ grammar: GrammarView | undefined;
27
+ /** The effective mode the delete's join seam answers to (live-mode.md § 4.5). Required-nullable for the
28
+ * same reason as `grammar`; `undefined` reads as not-live, so the join stays byte-literal. */
29
+ getPresentationMode: PresentationModeGetter | undefined;
30
+ /** The instance's link-reference resolver, so the seam parses the reference forms the render
31
+ * path drew. Required-nullable beside the mode. */
32
+ linkRef: LinkReferenceResolverRef | undefined;
33
+ }
34
+ /** Options for {@link performCrossBlockDelete}. Absent = plain delete, own snapshot and caret. */
35
+ export interface CrossBlockDeleteOptions {
36
+ /** `'join'`: the caller already pushed a snapshot covering this delete. */
37
+ undoEntry?: UndoEntryMode;
38
+ /** The caller installs a final caret after further mutations. */
39
+ skipCaretRestore?: boolean;
40
+ /**
41
+ * Route intra-table full/row/column coverage to a structural delete. Backspace opts in;
42
+ * type-replace/paste/cut stay on cell-clear so the follow-up insert lands in the anchor cell.
43
+ */
44
+ tableCoverageDelete?: boolean;
45
+ }
46
+ /**
47
+ * rangeDelete the current cross-block selection, commit, collapse, restore the caret.
48
+ * Returns the collapsed caret, or null when the selection wasn't cross-block.
49
+ */
50
+ export declare function performCrossBlockDelete(ctx: CrossBlockMutationContext, options?: CrossBlockDeleteOptions): Promise<SelectionPoint | null>;
51
+ /**
52
+ * compositionstart variant: the IME swallows the composition if the handler yields, so this
53
+ * must not await. The commit ceremony is synchronous up to its post-publish `await tick()`,
54
+ * so firing without awaiting keeps the whole delete inside the no-await window.
55
+ */
56
+ export declare function performCrossBlockDeleteSync(ctx: CrossBlockMutationContext): void;
@@ -0,0 +1,210 @@
1
+ /**
2
+ * Cross-block mutation: delete a range, push undo, collapse, restore the caret. Commit
3
+ * routing: pure top-level (both endpoints at doc.children, no cross-path table) commits
4
+ * structurally; anything nested or with a cross-path table endpoint needs one scope per
5
+ * spliced container, since the whole-row snap splices `table.children`. Intra-table
6
+ * full-table/row/column coverage routes to `range-delete-table-coverage`.
7
+ */
8
+ import { deleteSnapshot } from '../primitives';
9
+ import { focusCollapsedCaret } from '../native-bridge';
10
+ import { rangeDelete } from '../range-delete';
11
+ import { trackChildIds } from '../../tree-operations/structural-change';
12
+ import { isBlockNode, nodeAt } from '../../tree-operations/node-ops';
13
+ import { pathsEqual } from '../path-math';
14
+ import { docPathFrom } from '../../cursor/coordinate-spaces';
15
+ import { getStateForNode } from '../../reactivity/state-registry';
16
+ import { maybeCommitTableCoverageDelete } from '../range-delete-table-coverage';
17
+ /**
18
+ * rangeDelete the current cross-block selection, commit, collapse, restore the caret.
19
+ * Returns the collapsed caret, or null when the selection wasn't cross-block.
20
+ */
21
+ export async function performCrossBlockDelete(ctx, options) {
22
+ // A re-entrant delete (auto-repeat, paste, composition) parked on the reveal await would
23
+ // resolve the SAME endpoints and delete against the mutated tree. Serialize per selection;
24
+ // with nothing in flight this adds no await, preserving the sync variant's no-yield window.
25
+ let inFlight;
26
+ while ((inFlight = inFlightDeletes.get(ctx.selection))) {
27
+ await inFlight.catch(() => { });
28
+ }
29
+ const run = runCrossBlockDelete(ctx, options);
30
+ inFlightDeletes.set(ctx.selection, run);
31
+ try {
32
+ return await run;
33
+ }
34
+ finally {
35
+ if (inFlightDeletes.get(ctx.selection) === run)
36
+ inFlightDeletes.delete(ctx.selection);
37
+ }
38
+ }
39
+ const inFlightDeletes = new WeakMap();
40
+ async function runCrossBlockDelete(ctx, options) {
41
+ if (!ctx.selection.isCrossBlock)
42
+ return null;
43
+ const { start, end } = ctx.selection;
44
+ if (!start || !end)
45
+ return null;
46
+ const doc = ctx.getDoc();
47
+ // A cross-path table endpoint leaves the pure path: the whole-row snap splices
48
+ // table.children, which only the multi-scope commit syncs. Intra-table clears only raws.
49
+ const samePath = pathsEqual(start.path, end.path);
50
+ const isPureTopLevel = start.path.length === 1 &&
51
+ end.path.length === 1 &&
52
+ (samePath || (!isTableAt(doc, start.path) && !isTableAt(doc, end.path)));
53
+ const caretRestore = !options?.skipCaretRestore
54
+ ? (caret) => {
55
+ if (caret)
56
+ focusCollapsedCaret(ctx.getBlockElByPath, caret);
57
+ }
58
+ : undefined;
59
+ // Start-wins collapse: the merged block lands at start.path[0] and stays put. Mount it now,
60
+ // while caretRestore (a sync post-tick landing) still needs a live element. Gated on
61
+ // caretRestore so the IME path never yields before its synchronous commit.
62
+ if (caretRestore) {
63
+ await ctx.revealPath(start.path);
64
+ }
65
+ if (options?.tableCoverageDelete && isPureTopLevel && samePath) {
66
+ const block = nodeAt(doc, start.path);
67
+ if (block && isBlockNode(block) && block.kind === 'table') {
68
+ const handled = await maybeCommitTableCoverageDelete(ctx, block, start, end, options, caretRestore);
69
+ if (handled)
70
+ return handled.caret;
71
+ }
72
+ }
73
+ if (isPureTopLevel) {
74
+ return await commitPureTopLevelDelete(ctx, start, end, options, caretRestore);
75
+ }
76
+ return await commitCrossContainerDelete(ctx, doc, start, end, options, caretRestore);
77
+ }
78
+ /**
79
+ * compositionstart variant: the IME swallows the composition if the handler yields, so this
80
+ * must not await. The commit ceremony is synchronous up to its post-publish `await tick()`,
81
+ * so firing without awaiting keeps the whole delete inside the no-await window.
82
+ */
83
+ export function performCrossBlockDeleteSync(ctx) {
84
+ void performCrossBlockDelete(ctx, { skipCaretRestore: true });
85
+ }
86
+ // ── Internal ───────────────────────────────────────────────────────────────
87
+ function isTableAt(doc, path) {
88
+ const node = nodeAt(doc, path);
89
+ return node !== null && isBlockNode(node) && node.kind === 'table';
90
+ }
91
+ /**
92
+ * Pure top-level commit path. Both paths have length 1, so rangeDelete never reaches into a
93
+ * nested container and the proxy-doc (children copy) is a safe mutation target.
94
+ */
95
+ async function commitPureTopLevelDelete(ctx, start, end, options, caretRestore) {
96
+ let collapsedCaret = null;
97
+ const snapshot = deleteSnapshot(options, start.path, start.offset);
98
+ const doc = ctx.getDoc();
99
+ await ctx.controller.commitStructural({
100
+ snapshot,
101
+ mutate: (topLevelChildren) => {
102
+ // Prefix stays inert; the suffix rides the live document as accessors, so the
103
+ // tail settle can materialize the folded trailing line.
104
+ const proxyDoc = {
105
+ kind: 'document',
106
+ prefix: '',
107
+ children: topLevelChildren,
108
+ get suffix() {
109
+ return doc.suffix;
110
+ },
111
+ set suffix(value) {
112
+ doc.suffix = value;
113
+ }
114
+ };
115
+ const ledger = trackChildIds(proxyDoc);
116
+ const result = rangeDelete(proxyDoc, start, end, ctx.controller.sharing, ctx.grammar, ctx.getPresentationMode?.(), ctx.linkRef);
117
+ collapsedCaret = result.collapsedCaret;
118
+ ctx.selection.collapse();
119
+ return ledger.read();
120
+ },
121
+ op: { kind: 'delete', detail: { crossBlock: true }, eventPath: docPathFrom([start.path[0]]) },
122
+ afterTick: caretRestore ? () => caretRestore(collapsedCaret) : undefined
123
+ });
124
+ return collapsedCaret;
125
+ }
126
+ /**
127
+ * Cross-container commit path: one rangeDelete on the live doc inside a commitMultiScope
128
+ * whose scope list covers every container whose children array was spliced.
129
+ */
130
+ async function commitCrossContainerDelete(ctx, doc, start, end, options, caretRestore) {
131
+ const touched = collectTouchedContainers(doc, start.path, end.path);
132
+ const scopes = [];
133
+ // Doc scope goes first when the LCA is doc-level, so commitMultiScope publishes
134
+ // doc.children / blockIds / blockRefs atomically with the container scopes.
135
+ if (start.path[0] !== end.path[0]) {
136
+ scopes.push(ctx.controller.getDocScope());
137
+ }
138
+ for (const t of touched) {
139
+ scopes.push({ node: t.node, state: t.state, path: t.path });
140
+ }
141
+ let collapsedCaret = null;
142
+ await ctx.controller.commitMultiScope({
143
+ scopes,
144
+ // The selection start survives the delete (start-wins collapse), so its deep path is a
145
+ // resolving restore coordinate.
146
+ snapshot: deleteSnapshot(options, start.path, start.offset),
147
+ mutate: (scopeViews) => {
148
+ const sharing = scopeViews[0].sharing;
149
+ // Opened BEFORE the mutation: paths go stale as rangeDelete splices, while the owned
150
+ // scope nodes stay valid because splices happen in place.
151
+ const ledgers = scopeViews.map((v) => trackChildIds(v.node));
152
+ const result = rangeDelete(doc, start, end, sharing, ctx.grammar, ctx.getPresentationMode?.(), ctx.linkRef);
153
+ collapsedCaret = result.collapsedCaret;
154
+ ctx.selection.collapse();
155
+ // An endpoint-table scope takes its descriptor from the row splice the table branch
156
+ // actually performed, matched on the owned node, never from re-derived snap math.
157
+ const rowSplices = result.tableRowSplices ?? [];
158
+ return ledgers.map((ledger, i) => {
159
+ const rowSplice = rowSplices.find((s) => s.table === scopeViews[i].node);
160
+ const change = rowSplice
161
+ ? { op: 'delete', at: rowSplice.at, count: rowSplice.count }
162
+ : ledger.read();
163
+ ledger.release();
164
+ return change;
165
+ });
166
+ },
167
+ op: { kind: 'delete', detail: { crossBlock: true }, eventPath: docPathFrom([start.path[0]]) },
168
+ afterTick: caretRestore ? () => caretRestore(collapsedCaret) : undefined
169
+ });
170
+ return collapsedCaret;
171
+ }
172
+ /**
173
+ * Every mounted container on either endpoint path whose children array gets spliced: strict
174
+ * ancestors, plus a table endpoint itself (the whole-row snap splices its children). Document
175
+ * root excluded; callers add it via `getDocScope()`. Outermost-first, de-duplicated.
176
+ */
177
+ function collectTouchedContainers(doc, startPath, endPath) {
178
+ const touched = [];
179
+ const seen = new Set();
180
+ function visit(leafPath) {
181
+ for (let depth = 1; depth <= leafPath.length; depth++) {
182
+ const ancestorPath = leafPath.slice(0, depth);
183
+ const node = nodeAt(doc, ancestorPath);
184
+ if (!node || !isBlockNode(node) || !node.children)
185
+ continue;
186
+ if (depth === leafPath.length && node.kind !== 'table')
187
+ continue;
188
+ const key = ancestorPath.join('.');
189
+ if (seen.has(key))
190
+ continue;
191
+ seen.add(key);
192
+ const state = getStateForNode(node);
193
+ if (!state)
194
+ continue;
195
+ touched.push({ path: ancestorPath, node, state });
196
+ }
197
+ }
198
+ visit(startPath);
199
+ visit(endPath);
200
+ touched.sort((a, b) => {
201
+ if (a.path.length !== b.path.length)
202
+ return a.path.length - b.path.length;
203
+ for (let i = 0; i < a.path.length; i++) {
204
+ if (a.path[i] !== b.path[i])
205
+ return a.path[i] - b.path[i];
206
+ }
207
+ return 0;
208
+ });
209
+ return touched;
210
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Cross-block paste: delete the active range inside a single undo snapshot, dispatch the paste
3
+ * onto the collapsed caret, then restore the caret via DOM, since the originating block may be
4
+ * gone and pendingCursor with it.
5
+ */
6
+ import type { CrossBlockDispatchContext } from './dispatch';
7
+ import type { CrossBlockMutationContext } from './ops';
8
+ export declare function handleCrossBlockPaste(ctx: CrossBlockDispatchContext, mutCtx: CrossBlockMutationContext, e: ClipboardEvent | null, replacement?: string): Promise<boolean>;