@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,111 @@
1
+ /**
2
+ * Shared pointer-drag session: the document-listener + rAF-coalescing scaffold every drag
3
+ * lifecycle builds on. Owns the pointer-ownership filter, autoscroll wiring, and idempotent
4
+ * teardown; callers supply the per-surface move/end behavior and the options that genuinely
5
+ * differ. rAF here is frame-paced pointermove coalescing, not async sequencing (G4.4).
6
+ */
7
+ import { createAutoScroll } from './autoscroll';
8
+ export function createPointerDragSession(down, opts) {
9
+ const pointerId = down.pointerId;
10
+ const startX = down.clientX;
11
+ const startY = down.clientY;
12
+ const threshold = opts.threshold;
13
+ let dragging = threshold === undefined;
14
+ let pending = null;
15
+ let rafId = null;
16
+ const autoScroll = createAutoScroll({
17
+ axis: opts.autoScroll.axis,
18
+ getPointer: () => pending,
19
+ getTargets: opts.autoScroll.getTargets,
20
+ onScrolled: () => {
21
+ if (pending)
22
+ opts.onMove(pending);
23
+ }
24
+ });
25
+ function onPointerMove(e) {
26
+ if (!dragging && threshold !== undefined) {
27
+ const moved = Math.abs(e.clientX - startX) >= threshold || Math.abs(e.clientY - startY) >= threshold;
28
+ if (!moved)
29
+ return;
30
+ dragging = true;
31
+ opts.onDragRecognized?.();
32
+ }
33
+ pending = { clientX: e.clientX, clientY: e.clientY };
34
+ if (rafId !== null)
35
+ return;
36
+ rafId = requestAnimationFrame(() => {
37
+ rafId = null;
38
+ if (!pending)
39
+ return;
40
+ opts.onMove(pending);
41
+ autoScroll.maybeStart();
42
+ });
43
+ }
44
+ // A release before the coalescing rAF runs would otherwise drop the final move (a stale drop
45
+ // index, or isCrossBlock false on a fast flick / pointercancel). Guard on a LIVE rAF so an
46
+ // already-processed move is never replayed.
47
+ function flushPendingMove() {
48
+ if (rafId !== null && pending)
49
+ opts.onMove(pending);
50
+ }
51
+ let disposed = false;
52
+ function dispose() {
53
+ if (disposed)
54
+ return;
55
+ disposed = true;
56
+ document.removeEventListener('pointermove', onPointerMove);
57
+ document.removeEventListener('pointerup', onPointerUp);
58
+ document.removeEventListener('pointercancel', onPointerCancel);
59
+ if (opts.escape)
60
+ document.removeEventListener('keydown', onKeyDown, true);
61
+ opts.lifetimeSignal?.removeEventListener('abort', onAbort);
62
+ if (rafId !== null) {
63
+ cancelAnimationFrame(rafId);
64
+ rafId = null;
65
+ }
66
+ autoScroll.dispose();
67
+ if (opts.disableUserSelect)
68
+ document.body.style.userSelect = '';
69
+ opts.onTeardown?.();
70
+ pending = null;
71
+ }
72
+ // Only the pointer that opened the drag ends it: a second touch's up/cancel would otherwise
73
+ // commit or tear down someone else's gesture.
74
+ function onPointerUp(e) {
75
+ if (e.pointerId !== pointerId)
76
+ return;
77
+ flushPendingMove();
78
+ dispose();
79
+ opts.onEnd?.('up');
80
+ }
81
+ // Touch/stylus and Tauri WebView2 fire pointercancel instead of pointerup when the OS
82
+ // reclaims the pointer; without this the pointermove + rAF leak until editor unmount.
83
+ function onPointerCancel(e) {
84
+ if (e.pointerId !== pointerId)
85
+ return;
86
+ flushPendingMove();
87
+ dispose();
88
+ opts.onEnd?.('cancel');
89
+ }
90
+ // Editor unmount aborts the lifetime, not a pointer: always tears down, never runs onEnd
91
+ // (no gesture result to finalize into an unmounting tree).
92
+ function onAbort() {
93
+ dispose();
94
+ }
95
+ function onKeyDown(e) {
96
+ if (e.key === 'Escape')
97
+ dispose();
98
+ }
99
+ if (opts.lifetimeSignal?.aborted) {
100
+ return { dispose };
101
+ }
102
+ if (opts.disableUserSelect)
103
+ document.body.style.userSelect = 'none';
104
+ document.addEventListener('pointermove', onPointerMove);
105
+ document.addEventListener('pointerup', onPointerUp);
106
+ document.addEventListener('pointercancel', onPointerCancel);
107
+ if (opts.escape)
108
+ document.addEventListener('keydown', onKeyDown, true);
109
+ opts.lifetimeSignal?.addEventListener('abort', onAbort, { once: true });
110
+ return { dispose };
111
+ }
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Pure primitives for cross-block selection: types, document-order walking, overlay
3
+ * classification, the delete-commit snapshot rule. No DOM, no state. Path-level predicates
4
+ * live in `./path-math`.
5
+ */
6
+ import type { CommitSnapshotArg, UndoEntryMode } from '../action-contracts';
7
+ import type { DocumentView } from '../core/node-views';
8
+ import { type CellIndex, type RawOffset } from '../cursor/coordinate-spaces';
9
+ /** Char-space endpoint: `offset` is a character index into the leaf's `raw`. */
10
+ export interface CharSelectionPoint {
11
+ path: number[];
12
+ offset: number;
13
+ cellCoordinate?: false;
14
+ }
15
+ /** Cell-space endpoint: `offset` is a row-major table cell index; `path` addresses the table block. */
16
+ export interface CellSelectionPoint {
17
+ path: number[];
18
+ offset: number;
19
+ cellCoordinate: true;
20
+ }
21
+ /**
22
+ * A single selection endpoint, discriminated on `cellCoordinate`; empty path is the
23
+ * document root. `offset` keeps its name on both arms, and its space is the
24
+ * discriminant's job: read it through {@link charOffsetOf} / {@link cellIndexOf}.
25
+ * Exception: intra-table selections share the table path and carry cell-valued offsets
26
+ * on UNFLAGGED points, established by their shared scope rather than the flag.
27
+ */
28
+ export type SelectionPoint = CharSelectionPoint | CellSelectionPoint;
29
+ /** An endpoint whose block offered no position to land on; the funnel resolves the side. */
30
+ export interface WholeBlockEndpoint {
31
+ path: number[];
32
+ wholeBlock: true;
33
+ }
34
+ /**
35
+ * What an entry path may hand the selection funnel. Only {@link SelectionPoint} is ever
36
+ * stored, so an unresolved endpoint cannot reach a consumer.
37
+ */
38
+ export type SelectionEndpoint = SelectionPoint | WholeBlockEndpoint;
39
+ export declare function isWholeBlockEndpoint(endpoint: SelectionEndpoint): endpoint is WholeBlockEndpoint;
40
+ /**
41
+ * Anchor/focus pair. Same path + same offset is collapsed; same path + different offsets
42
+ * is a single-block range the browser owns (SelectionState stays null); different paths
43
+ * is cross-block.
44
+ */
45
+ export interface EditorSelection {
46
+ anchor: SelectionPoint;
47
+ focus: SelectionPoint;
48
+ }
49
+ /** Offset as a char index into the leaf's `raw`. DEV-warns on a cell point, but always returns. */
50
+ export declare function charOffsetOf(point: SelectionPoint, tag: string): RawOffset;
51
+ /** Offset as a row-major table cell index. DEV-warns on a char point, but always returns. */
52
+ export declare function cellIndexOf(point: SelectionPoint, tag: string): CellIndex;
53
+ /**
54
+ * `{start, end}` in document order: by path, then by offset when paths match. Published on the
55
+ * consumer barrel as `normalizeSelection`, which is what a host anchors UI to. The offset tiebreak
56
+ * is coordinate-space agnostic: two endpoints sharing a table's path carry row-major CELL indices,
57
+ * whose order IS document order inside that table. A caller with no selection has nothing to
58
+ * order, since `getSelection()` answers null with nothing focused and at a gap caret.
59
+ */
60
+ export declare function normalize(selection: EditorSelection): {
61
+ start: SelectionPoint;
62
+ end: SelectionPoint;
63
+ };
64
+ /** A join delete rides the caller's snapshot; every other one seats undo at its own coordinate. */
65
+ export declare function deleteSnapshot(options: {
66
+ undoEntry?: UndoEntryMode;
67
+ } | undefined, path: number[], offset?: number): CommitSnapshotArg;
68
+ /** Every block path strictly between `start` and `end`, at every nesting level. */
69
+ export declare function walkBetween(doc: DocumentView, start: number[], end: number[]): number[][];
70
+ export type BlockSelectionClass = 'outside' | 'start' | 'middle' | 'end' | 'single-block';
71
+ /**
72
+ * Position of a block relative to a selection, for overlay rendering. 'single-block'
73
+ * tells the caller to delegate to the browser instead of painting.
74
+ */
75
+ export declare function classifyBlockForSelection(path: number[], selection: EditorSelection): BlockSelectionClass;
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Pure primitives for cross-block selection: types, document-order walking, overlay
3
+ * classification, the delete-commit snapshot rule. No DOM, no state. Path-level predicates
4
+ * live in `./path-math`.
5
+ */
6
+ import { comparePaths, isPathBetween, pathHasPrefix } from './path-math';
7
+ import { asCellIndex, asRawOffset, docPathFrom } from '../cursor/coordinate-spaces';
8
+ import { devWarn } from '../dev-warn';
9
+ export function isWholeBlockEndpoint(endpoint) {
10
+ return 'wholeBlock' in endpoint;
11
+ }
12
+ /** Offset as a char index into the leaf's `raw`. DEV-warns on a cell point, but always returns. */
13
+ export function charOffsetOf(point, tag) {
14
+ if (point.cellCoordinate) {
15
+ devWarn(tag, 'char-offset site received a cell-coordinate SelectionPoint', point);
16
+ }
17
+ return asRawOffset(point.offset);
18
+ }
19
+ /** Offset as a row-major table cell index. DEV-warns on a char point, but always returns. */
20
+ export function cellIndexOf(point, tag) {
21
+ if (!point.cellCoordinate) {
22
+ devWarn(tag, 'cell-index site received a char-offset SelectionPoint', point);
23
+ }
24
+ return asCellIndex(point.offset);
25
+ }
26
+ // ── Normalization ──────────────────────────────────────────────────────────
27
+ /**
28
+ * `{start, end}` in document order: by path, then by offset when paths match. Published on the
29
+ * consumer barrel as `normalizeSelection`, which is what a host anchors UI to. The offset tiebreak
30
+ * is coordinate-space agnostic: two endpoints sharing a table's path carry row-major CELL indices,
31
+ * whose order IS document order inside that table. A caller with no selection has nothing to
32
+ * order, since `getSelection()` answers null with nothing focused and at a gap caret.
33
+ */
34
+ export function normalize(selection) {
35
+ const { anchor, focus } = selection;
36
+ const cmp = comparePaths(anchor.path, focus.path);
37
+ if (cmp < 0)
38
+ return { start: anchor, end: focus };
39
+ if (cmp > 0)
40
+ return { start: focus, end: anchor };
41
+ if (anchor.offset <= focus.offset)
42
+ return { start: anchor, end: focus };
43
+ return { start: focus, end: anchor };
44
+ }
45
+ // ── Undo snapshot ──────────────────────────────────────────────────────────
46
+ /** A join delete rides the caller's snapshot; every other one seats undo at its own coordinate. */
47
+ export function deleteSnapshot(options, path, offset = 0) {
48
+ return options?.undoEntry === 'join' ? 'skip' : { path: docPathFrom(path), offset };
49
+ }
50
+ // ── Range walk ─────────────────────────────────────────────────────────────
51
+ /** Every block path strictly between `start` and `end`, at every nesting level. */
52
+ export function walkBetween(doc, start, end) {
53
+ if (comparePaths(start, end) >= 0)
54
+ return [];
55
+ const result = [];
56
+ function visit(node, path) {
57
+ if (isPathBetween(path, start, end)) {
58
+ result.push([...path]);
59
+ }
60
+ if (!node.children)
61
+ return;
62
+ for (let i = 0; i < node.children.length; i++) {
63
+ const childPath = [...path, i];
64
+ // Skip subtrees entirely before start (an ancestor of start still holds it) or after end.
65
+ if (!pathHasPrefix(start, childPath) && comparePaths(childPath, start) < 0)
66
+ continue;
67
+ if (comparePaths(childPath, end) >= 0)
68
+ break;
69
+ visit(node.children[i], childPath);
70
+ }
71
+ }
72
+ visit(doc, []);
73
+ return result;
74
+ }
75
+ /**
76
+ * Position of a block relative to a selection, for overlay rendering. 'single-block'
77
+ * tells the caller to delegate to the browser instead of painting.
78
+ */
79
+ export function classifyBlockForSelection(path, selection) {
80
+ const { start, end } = normalize(selection);
81
+ if (comparePaths(start.path, end.path) === 0) {
82
+ return comparePaths(path, start.path) === 0 ? 'single-block' : 'outside';
83
+ }
84
+ if (comparePaths(path, start.path) === 0)
85
+ return 'start';
86
+ if (comparePaths(path, end.path) === 0)
87
+ return 'end';
88
+ if (isPathBetween(path, start.path, end.path))
89
+ return 'middle';
90
+ return 'outside';
91
+ }
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Deletion ceremony shared by every rangeDelete branch (generic, chrome, table): covered paths
3
+ * splice identity-gated in reverse doc order, with cascading empty-ancestor cleanup. The wall
4
+ * branches also reduce covered paths to subtree roots so a container dies as ONE splice with
5
+ * children intact, keeping a commit scope or undo entry holding the detached node clean.
6
+ */
7
+ import type { GrammarView } from '../schema/block-openers';
8
+ import type { PresentationMode } from '../presentation-mode';
9
+ import type { InlineResolverRef } from '../schema/inline-construct-policy';
10
+ import type { CstNode, Document } from '../core/nodes';
11
+ import type { SelectionPoint } from './primitives';
12
+ import type { SharingState } from '../tree-operations/sharing';
13
+ import { type ChromeContainer } from './range-delete-chrome';
14
+ /**
15
+ * Identity-gated reverse-doc-order deletion: a deeper delete + cascade can shift a survivor
16
+ * into an outer slot, so each path is re-resolved and spliced only while it still holds the
17
+ * node captured up front. Caller must own every parent spine BEFORE calling (G1.9).
18
+ */
19
+ export declare function deleteSubtreesIdentityGated(doc: Document, deletionPaths: number[][], lcaPath: number[], sharing: SharingState): void;
20
+ /** The live-seam reads a prose truncation needs; both undefined outside live. */
21
+ export interface LiveSeamContext {
22
+ presentationMode: PresentationMode | undefined;
23
+ linkRef: InlineResolverRef | undefined;
24
+ }
25
+ /**
26
+ * Reparse the bytes surviving at an endpoint's slot, through the source kind's own write rule:
27
+ * the reparse re-derives metadata from bytes, so structure the truncation dropped and the rule
28
+ * restores (a fence closer) has to land before it. The slot's leading trivia rides across, and
29
+ * an empty slice gives a bare paragraph, on the source block's line ending (G4.20).
30
+ */
31
+ export declare function reparseTruncatedEndpoint(node: CstNode, slice: string): CstNode[];
32
+ /**
33
+ * Install an endpoint's replacement, stamped as the live tree's own. The splice door settles the
34
+ * blank run a truncation left the slot in (G2.13); `sharing` owns the writes.
35
+ */
36
+ export declare function installTruncatedEndpoint(doc: Document, path: number[], replacement: CstNode[], sharing: SharingState): void;
37
+ /**
38
+ * Truncate the start endpoint in place, after the planned deletion: a chrome start keeps its
39
+ * bytes literal by raw write; a prose head crosses the unpaired-run cleanup, then reinstalls
40
+ * through the endpoint reparse. Returns the seam the collapsed caret lands on. `isChrome` is
41
+ * the caller's own derivation, read before any splice moved the tree.
42
+ */
43
+ export declare function truncateStartInPlace(doc: Document, start: SelectionPoint, startBlock: CstNode, isChrome: boolean, live: LiveSeamContext, sharing: SharingState, tag: string): number;
44
+ /**
45
+ * Truncate the end endpoint in place, before the planned deletion (its path is still live):
46
+ * chrome by raw write, prose through the cleanup + reparse. Returns the surviving tail node
47
+ * re-read through the tree (design rule 5), for a caller that must locate it after splices.
48
+ */
49
+ export declare function truncateEndInPlace(doc: Document, end: SelectionPoint, endBlock: CstNode, isChrome: boolean, live: LiveSeamContext, sharing: SharingState, tag: string): CstNode | null;
50
+ export interface EndWall {
51
+ container: ChromeContainer;
52
+ consumed: boolean;
53
+ }
54
+ /**
55
+ * End-side wall context: the chrome container holding the end point, when the range enters it
56
+ * from outside. `consumed` means the whole subtree is covered (a prose end's last-byte rule, or
57
+ * an emptied table on the container's last-child chain), so the container unit-deletes.
58
+ */
59
+ export declare function resolveEndWall(doc: Document, start: SelectionPoint, end: SelectionPoint, endTableEmptied: boolean | null): EndWall | null;
60
+ export interface DeletionPlan {
61
+ deletionPaths: number[][];
62
+ chromeClearChain: CstNode[] | null;
63
+ /** The epoch the plan was collected against; the apply step's splices own their
64
+ * spines through it, so no case has to re-thread it. */
65
+ sharing: SharingState;
66
+ }
67
+ /**
68
+ * Plan the deletion via {@link collectDeletionPlan}, own every deletion path's parent spine
69
+ * before any splice (G1.9), and resolve the LCA cascade cleanup stops at. The caller resolves
70
+ * `wall` itself: its `consumed` flag also gates each case's endpoint prose-replace.
71
+ */
72
+ export declare function planCrossBlockDeletion(doc: Document, start: SelectionPoint, end: SelectionPoint, endpointPaths: number[][], wall: EndWall | null, sharing: SharingState): {
73
+ plan: DeletionPlan;
74
+ lcaPath: number[];
75
+ };
76
+ /**
77
+ * Apply the plan atomically: clear a surviving end container's covered chrome (raw write, never
78
+ * a node delete), then splice the covered subtrees in reverse doc order under the identity gate.
79
+ */
80
+ export declare function applyPlannedDeletion(doc: Document, plan: DeletionPlan, lcaPath: number[]): void;
81
+ /**
82
+ * Rebuild every deletion path's surviving ancestry, then the cleared chrome's opener line
83
+ * (chain-based, so the re-emit survives the splices). Case-specific rebuilds stay at call sites.
84
+ */
85
+ export declare function rebuildSharedAncestries(doc: Document, plan: DeletionPlan, sharing: SharingState, grammar: GrammarView | undefined): void;
@@ -0,0 +1,197 @@
1
+ /**
2
+ * Deletion ceremony shared by every rangeDelete branch (generic, chrome, table): covered paths
3
+ * splice identity-gated in reverse doc order, with cascading empty-ancestor cleanup. The wall
4
+ * branches also reduce covered paths to subtree roots so a container dies as ONE splice with
5
+ * children intact, keeping a commit scope or undo entry holding the detached node clean.
6
+ */
7
+ import { parse } from '../core/parser';
8
+ import { displayLength, terminateLine, trailingLineEnding } from '../core/lines';
9
+ import { charOffsetOf, walkBetween } from './primitives';
10
+ import { comparePaths, isStrictAncestorOf, isPathSubtreeBetween, lowestCommonAncestor, pathHasPrefix, pathsEqual } from './path-math';
11
+ import { cascadeCleanupEmptyAncestors } from '../tree-operations/cleanup';
12
+ import { deleteAtPath, replaceAtPath } from '../tree-operations/path-mutate';
13
+ import { blockNodeAt, cleanJoinedRaw, emptyParagraph, nodeAt, normalizeOwnRaw } from '../tree-operations/node-ops';
14
+ import { ensureUnsharedPath, rebuildUnsharedAncestry, rebuildUnsharedChain } from '../tree-operations/unshare';
15
+ // Wall primitives live with the chrome branch, which imports the atoms below back. The
16
+ // resulting cycle is function-body-only (resolved at call time, never at module load), so it
17
+ // is safe.
18
+ import { nearestChromeContainer, rangeConsumesContainer, lastChildDescendant } from './range-delete-chrome';
19
+ /** Subtree roots only: one splice per covered subtree, never a child-by-child emptying. */
20
+ function filterToSubtreeRoots(paths) {
21
+ return paths.filter((p) => !paths.some((q) => isStrictAncestorOf(q, p)));
22
+ }
23
+ /**
24
+ * Identity-gated reverse-doc-order deletion: a deeper delete + cascade can shift a survivor
25
+ * into an outer slot, so each path is re-resolved and spliced only while it still holds the
26
+ * node captured up front. Caller must own every parent spine BEFORE calling (G1.9).
27
+ */
28
+ export function deleteSubtreesIdentityGated(doc, deletionPaths, lcaPath, sharing) {
29
+ const targetNodes = deletionPaths.map((p) => nodeAt(doc, p));
30
+ const reverseSortedIndices = deletionPaths
31
+ .map((_, i) => i)
32
+ .sort((a, b) => comparePaths(deletionPaths[b], deletionPaths[a]));
33
+ for (const i of reverseSortedIndices) {
34
+ const path = deletionPaths[i];
35
+ if (nodeAt(doc, path) === targetNodes[i]) {
36
+ deleteAtPath(doc, path, sharing);
37
+ cascadeCleanupEmptyAncestors(doc, path, lcaPath, sharing);
38
+ }
39
+ }
40
+ }
41
+ /**
42
+ * A wall-branch truncation is half a join: the runs it strands, their partner gone with the
43
+ * cut, are bytes the reader never saw, so a kept prose side crosses the registered cleaner
44
+ * (live-mode.md § 4.5), expressed as a join with the block's own edge. Identity outside live;
45
+ * a chrome child's raw write never routes here — the wall stays byte-literal.
46
+ */
47
+ function cleanTruncatedProse(node, kept, cut, live) {
48
+ const join = kept === 'head'
49
+ ? {
50
+ mergedRaw: node.raw.slice(0, cut),
51
+ seam: cut,
52
+ start: { node, offset: cut },
53
+ end: { node, offset: displayLength(node.raw) }
54
+ }
55
+ : {
56
+ mergedRaw: node.raw.slice(cut),
57
+ seam: 0,
58
+ start: { node, offset: 0 },
59
+ end: { node, offset: cut }
60
+ };
61
+ return cleanJoinedRaw({ ...join, linkRef: live.linkRef }, live.presentationMode);
62
+ }
63
+ /**
64
+ * Reparse the bytes surviving at an endpoint's slot, through the source kind's own write rule:
65
+ * the reparse re-derives metadata from bytes, so structure the truncation dropped and the rule
66
+ * restores (a fence closer) has to land before it. The slot's leading trivia rides across, and
67
+ * an empty slice gives a bare paragraph, on the source block's line ending (G4.20).
68
+ */
69
+ export function reparseTruncatedEndpoint(node, slice) {
70
+ const lineEnding = trailingLineEnding(node.raw);
71
+ const reparsed = parse(normalizeOwnRaw(node, slice) || lineEnding, { scope: 'fragment' });
72
+ if (reparsed.children.length === 0) {
73
+ return [emptyParagraph(node.leadingTrivia, lineEnding)];
74
+ }
75
+ const cloned = reparsed.children.slice();
76
+ cloned[0] = { ...cloned[0], leadingTrivia: node.leadingTrivia };
77
+ // The peeled trailing blank line has no follower slot here, so it stays in raw.
78
+ cloned[cloned.length - 1].raw += reparsed.suffix;
79
+ return cloned;
80
+ }
81
+ /**
82
+ * Install an endpoint's replacement, stamped as the live tree's own. The splice door settles the
83
+ * blank run a truncation left the slot in (G2.13); `sharing` owns the writes.
84
+ */
85
+ export function installTruncatedEndpoint(doc, path, replacement, sharing) {
86
+ for (const node of replacement)
87
+ sharing.stamp(node);
88
+ replaceAtPath(doc, path, replacement, sharing);
89
+ }
90
+ /**
91
+ * Truncate the start endpoint in place, after the planned deletion: a chrome start keeps its
92
+ * bytes literal by raw write; a prose head crosses the unpaired-run cleanup, then reinstalls
93
+ * through the endpoint reparse. Returns the seam the collapsed caret lands on. `isChrome` is
94
+ * the caller's own derivation, read before any splice moved the tree.
95
+ */
96
+ export function truncateStartInPlace(doc, start, startBlock, isChrome, live, sharing, tag) {
97
+ const cut = charOffsetOf(start, tag);
98
+ const head = isChrome
99
+ ? { raw: startBlock.raw.slice(0, cut), seam: cut }
100
+ : cleanTruncatedProse(startBlock, 'head', cut, live);
101
+ if (isChrome) {
102
+ startBlock.raw = terminateLine(head.raw, startBlock.raw);
103
+ }
104
+ else {
105
+ installTruncatedEndpoint(doc, start.path, reparseTruncatedEndpoint(startBlock, terminateLine(head.raw, startBlock.raw)), sharing);
106
+ }
107
+ return head.seam;
108
+ }
109
+ /**
110
+ * Truncate the end endpoint in place, before the planned deletion (its path is still live):
111
+ * chrome by raw write, prose through the cleanup + reparse. Returns the surviving tail node
112
+ * re-read through the tree (design rule 5), for a caller that must locate it after splices.
113
+ */
114
+ export function truncateEndInPlace(doc, end, endBlock, isChrome, live, sharing, tag) {
115
+ const cut = charOffsetOf(end, tag);
116
+ if (isChrome) {
117
+ endBlock.raw = endBlock.raw.slice(cut) || trailingLineEnding(endBlock.raw);
118
+ return endBlock;
119
+ }
120
+ const tail = cleanTruncatedProse(endBlock, 'tail', cut, live).raw;
121
+ installTruncatedEndpoint(doc, end.path, reparseTruncatedEndpoint(endBlock, tail), sharing);
122
+ return blockNodeAt(doc, end.path);
123
+ }
124
+ /**
125
+ * End-side wall context: the chrome container holding the end point, when the range enters it
126
+ * from outside. `consumed` means the whole subtree is covered (a prose end's last-byte rule, or
127
+ * an emptied table on the container's last-child chain), so the container unit-deletes.
128
+ */
129
+ export function resolveEndWall(doc, start, end, endTableEmptied) {
130
+ const container = nearestChromeContainer(doc, end.path);
131
+ if (!container || pathHasPrefix(start.path, container.path))
132
+ return null;
133
+ const consumed = endTableEmptied === null
134
+ ? rangeConsumesContainer(container, end)
135
+ : endTableEmptied && lastChildDescendant(container, end.path) !== null;
136
+ return { container, consumed };
137
+ }
138
+ /**
139
+ * Covered subtree roots plus endpoint paths the caller marks for removal, honoring the chrome
140
+ * wall: a surviving end container's covered chrome CLEARS instead of deleting (returned as an
141
+ * unshared chain for the caller's raw write), and a consumed container becomes one unit delete.
142
+ */
143
+ function collectDeletionPlan(doc, start, end, endpointPaths, wall, sharing) {
144
+ const between = walkBetween(doc, start.path, end.path).filter((p) => isPathSubtreeBetween(p, start.path, end.path));
145
+ const chromeClearPath = wall && !wall.consumed ? [...wall.container.path, 0] : null;
146
+ let chromeClearChain = null;
147
+ let candidates = [];
148
+ for (const p of between) {
149
+ if (chromeClearPath && pathsEqual(p, chromeClearPath)) {
150
+ const chain = ensureUnsharedPath(doc, p, sharing);
151
+ if (chain.length === p.length)
152
+ chromeClearChain = chain;
153
+ }
154
+ else {
155
+ candidates.push(p);
156
+ }
157
+ }
158
+ candidates.push(...endpointPaths);
159
+ if (wall?.consumed) {
160
+ candidates = candidates.filter((p) => !pathHasPrefix(p, wall.container.path));
161
+ candidates.push(wall.container.path.slice());
162
+ }
163
+ return { deletionPaths: filterToSubtreeRoots(candidates), chromeClearChain, sharing };
164
+ }
165
+ /**
166
+ * Plan the deletion via {@link collectDeletionPlan}, own every deletion path's parent spine
167
+ * before any splice (G1.9), and resolve the LCA cascade cleanup stops at. The caller resolves
168
+ * `wall` itself: its `consumed` flag also gates each case's endpoint prose-replace.
169
+ */
170
+ export function planCrossBlockDeletion(doc, start, end, endpointPaths, wall, sharing) {
171
+ const plan = collectDeletionPlan(doc, start, end, endpointPaths, wall, sharing);
172
+ for (const path of plan.deletionPaths) {
173
+ ensureUnsharedPath(doc, path.slice(0, -1), sharing);
174
+ }
175
+ return { plan, lcaPath: lowestCommonAncestor(start.path, end.path) };
176
+ }
177
+ /**
178
+ * Apply the plan atomically: clear a surviving end container's covered chrome (raw write, never
179
+ * a node delete), then splice the covered subtrees in reverse doc order under the identity gate.
180
+ */
181
+ export function applyPlannedDeletion(doc, plan, lcaPath) {
182
+ const chrome = plan.chromeClearChain?.[plan.chromeClearChain.length - 1];
183
+ if (chrome)
184
+ chrome.raw = '\n';
185
+ deleteSubtreesIdentityGated(doc, plan.deletionPaths, lcaPath, plan.sharing);
186
+ }
187
+ /**
188
+ * Rebuild every deletion path's surviving ancestry, then the cleared chrome's opener line
189
+ * (chain-based, so the re-emit survives the splices). Case-specific rebuilds stay at call sites.
190
+ */
191
+ export function rebuildSharedAncestries(doc, plan, sharing, grammar) {
192
+ for (const path of plan.deletionPaths) {
193
+ rebuildUnsharedAncestry(doc, path, sharing, null, grammar);
194
+ }
195
+ if (plan.chromeClearChain)
196
+ rebuildUnsharedChain(doc, plan.chromeClearChain, sharing, null, grammar);
197
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Reserved-chrome branch of rangeDelete, the wall rule: nothing merges across a
3
+ * `reservedChrome` container's wall. Outside endpoints truncate in place, covered chrome clears
4
+ * (never node-deletes, G1.14), covered body children delete, and the container dies only when
5
+ * the range consumes its whole subtree, then as ONE splice with children intact.
6
+ */
7
+ import type { GrammarView } from '../schema/block-openers';
8
+ import type { PresentationMode } from '../presentation-mode';
9
+ import type { InlineResolverRef } from '../schema/inline-construct-policy';
10
+ import type { CstNode, Document } from '../core/nodes';
11
+ import type { SelectionPoint } from './primitives';
12
+ import type { RangeDeleteResult } from './range-delete';
13
+ import type { SharingState } from '../tree-operations/sharing';
14
+ /**
15
+ * True when the range must take the wall path: an endpoint sits inside a `reservedChrome`
16
+ * container the range crosses out of or into, or the range starts in the chrome leaf itself.
17
+ * Same-block, body-only, and enclose-from-outside ranges stay on the generic path.
18
+ */
19
+ export declare function involvesReservedChrome(doc: Document, start: SelectionPoint, end: SelectionPoint): boolean;
20
+ /**
21
+ * Delete [start, end] under the wall rule. Both endpoints truncate in place (chrome by a raw
22
+ * write, keeping the kind via contextDependentKind; prose by a reparse of the surviving slice),
23
+ * and nothing merges across the wall. Collapsed caret keeps generic start-position semantics.
24
+ */
25
+ export declare function chromeAwareRangeDelete(doc: Document, start: SelectionPoint, end: SelectionPoint, sharing: SharingState, grammar: GrammarView | undefined, presentationMode?: PresentationMode, linkRef?: InlineResolverRef): RangeDeleteResult;
26
+ export interface ChromeContainer {
27
+ path: number[];
28
+ node: CstNode;
29
+ }
30
+ /** Deepest strict ancestor of `path` whose kind declares reservedChrome. */
31
+ export declare function nearestChromeContainer(doc: Document, path: number[]): ChromeContainer | null;
32
+ export declare function isChromeChild(container: ChromeContainer, leafPath: number[]): boolean;
33
+ /**
34
+ * The range's end lands on the container's last byte: every step from the container is a
35
+ * last-child edge and the offset consumes the block's visible text.
36
+ */
37
+ export declare function rangeConsumesContainer(container: ChromeContainer, end: SelectionPoint): boolean;
38
+ /** The node at `path` when every step from the container is a last-child edge, else null. */
39
+ export declare function lastChildDescendant(container: ChromeContainer, path: number[]): CstNode | null;