@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,57 @@
1
+ import { ensureUnsharedChild } from './unshare';
2
+ import { absorbWindowSeams } from './node-ops';
3
+ import { devWarn } from '../dev-warn';
4
+ // A stale index (a mid-drag delete shrank the array) would splice `undefined` into the
5
+ // $state tree, so both entry points bail through this BEFORE any unshare or write.
6
+ function isReorderOutOfBounds(from, to, len) {
7
+ if (from < 0 || from >= len || to < 0 || to >= len) {
8
+ devWarn('reorder', `reorder out of bounds: from=${from} to=${to} len=${len}`);
9
+ return true;
10
+ }
11
+ return false;
12
+ }
13
+ // A reorder rewrites no bytes and creates no node: it is one contiguous `replace`
14
+ // whose idMap permutes the spanned window so each moved block keeps its id + ref.
15
+ export function reorderChildren(children, from, to) {
16
+ if (from === to)
17
+ return { op: 'noop' };
18
+ if (isReorderOutOfBounds(from, to, children.length))
19
+ return { op: 'noop' };
20
+ const lo = Math.min(from, to);
21
+ const hi = Math.max(from, to);
22
+ const count = hi - lo + 1;
23
+ const oldWindow = Array.from({ length: count }, (_, k) => lo + k);
24
+ const [movedOld] = oldWindow.splice(from - lo, 1);
25
+ oldWindow.splice(to - lo, 0, movedOld);
26
+ const [node] = children.splice(from, 1);
27
+ children.splice(to, 0, node);
28
+ const idMap = {};
29
+ for (let k = 0; k < count; k++)
30
+ idMap[k] = oldWindow[k] - lo;
31
+ return { op: 'replace', at: lo, count, newCount: count, idMap };
32
+ }
33
+ /**
34
+ * Reorder children while keeping block separators positional. A separator is stored as the next
35
+ * child's `leadingTrivia` but read per slot, so it belongs to the position, not the node. Writing
36
+ * it is a byte write, so spanned children are unshared first (`unshare.ts`) and `children` must
37
+ * already be an owned array. The landing rides the result: a fold settling a seam the move
38
+ * invalidated can sit above the moved block.
39
+ */
40
+ export function reorderChildrenWithTrivia(children, from, to, sharing) {
41
+ if (from === to)
42
+ return { change: { op: 'noop' }, landing: to };
43
+ if (isReorderOutOfBounds(from, to, children.length)) {
44
+ return { change: { op: 'noop' }, landing: from };
45
+ }
46
+ const lo = Math.min(from, to);
47
+ const hi = Math.max(from, to);
48
+ const windowTrivia = [];
49
+ for (let i = lo; i <= hi; i++) {
50
+ windowTrivia.push(ensureUnsharedChild({ children }, i, sharing).leadingTrivia);
51
+ }
52
+ const change = reorderChildren(children, from, to);
53
+ for (let k = 0; k < windowTrivia.length; k++) {
54
+ children[lo + k].leadingTrivia = windowTrivia[k];
55
+ }
56
+ return absorbWindowSeams({ children }, lo, hi - lo + 1, to, change, sharing);
57
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Structural-sharing epoch primitive — the copy-on-write engine `unshare.ts` reads to
3
+ * decide when a node must be cloned before it is written. The undo lifecycle bumps the
4
+ * epoch, after which any node stamped earlier counts as shared. A missing `ownerEpoch`
5
+ * counts as shared too: an unnecessary copy is correct, a missed one corrupts history.
6
+ */
7
+ export interface SharingState {
8
+ /** Bump after every snapshot push and every undo/redo restore. */
9
+ markSnapshotTaken(): void;
10
+ isShared(node: {
11
+ ownerEpoch?: number;
12
+ }): boolean;
13
+ /** Stamp a freshly created/copied node as owned by the live tree. */
14
+ stamp(node: {
15
+ ownerEpoch?: number;
16
+ }): void;
17
+ }
18
+ export declare function createSharingState(): SharingState;
@@ -0,0 +1,14 @@
1
+ export function createSharingState() {
2
+ let epoch = 0;
3
+ return {
4
+ markSnapshotTaken() {
5
+ epoch++;
6
+ },
7
+ isShared(node) {
8
+ return epoch > 0 && (node.ownerEpoch ?? -1) < epoch;
9
+ },
10
+ stamp(node) {
11
+ node.ownerEpoch = epoch;
12
+ }
13
+ };
14
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * The splice every mutation door owes a document-scaled list. A spread hands the engine one
3
+ * argument per item, and a list past its argument limit raises "Maximum call stack size exceeded"
4
+ * at the call (G4.60), so a list too long for one call goes in chunks. Splices in place, so the
5
+ * array keeps its identity and a `$state` proxy sees the writes a hand-rolled splice would make.
6
+ */
7
+ /** Well under the engine's argument ceiling, which measures around 125,000 on a desktop V8. */
8
+ export declare const INSERT_CHUNK = 50000;
9
+ export declare function spliceMany<T>(target: T[], at: number, deleteCount: number, items: readonly T[]): void;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * The splice every mutation door owes a document-scaled list. A spread hands the engine one
3
+ * argument per item, and a list past its argument limit raises "Maximum call stack size exceeded"
4
+ * at the call (G4.60), so a list too long for one call goes in chunks. Splices in place, so the
5
+ * array keeps its identity and a `$state` proxy sees the writes a hand-rolled splice would make.
6
+ */
7
+ /** Well under the engine's argument ceiling, which measures around 125,000 on a desktop V8. */
8
+ export const INSERT_CHUNK = 50_000;
9
+ export function spliceMany(target, at, deleteCount, items) {
10
+ // One call while the list fits in one: splitting the delete off costs a second O(n) shift of
11
+ // the tail, which every structural commit would pay over the document's id and ref arrays.
12
+ if (items.length <= INSERT_CHUNK) {
13
+ target.splice(at, deleteCount, ...items);
14
+ return;
15
+ }
16
+ // Splice's own start resolution, held fixed while the chunks shift the tail under it.
17
+ const start = at < 0 ? Math.max(target.length + at, 0) : Math.min(at, target.length);
18
+ target.splice(start, deleteCount);
19
+ for (let from = 0; from < items.length; from += INSERT_CHUNK) {
20
+ target.splice(start + from, 0, ...items.slice(from, from + INSERT_CHUNK));
21
+ }
22
+ }
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Structural-change descriptor returned by tree ops; the commit primitive consumes it to
3
+ * auto-sync the parallel `blockIds` / `blockRefs` arrays, so callers never hand-splice
4
+ * them. Every variant describes ONE contiguous `at`/`count` window — an op editing two
5
+ * disjoint ranges splits into separate commits or uses the multi-scope commit path.
6
+ */
7
+ import type { BlockComponent } from '../block-component';
8
+ import type { CstNode } from '../core/nodes';
9
+ import type { SharingState } from './sharing';
10
+ export type StructuralChange = {
11
+ op: 'noop';
12
+ } | {
13
+ op: 'insert';
14
+ at: number;
15
+ count: number;
16
+ } | {
17
+ op: 'delete';
18
+ at: number;
19
+ count: number;
20
+ } | {
21
+ op: 'replace';
22
+ at: number;
23
+ count: number;
24
+ newCount: number;
25
+ /** new-item index → old-item index: these new positions inherit old IDs/refs. */
26
+ idMap?: Record<number, number>;
27
+ };
28
+ /**
29
+ * Replace [at, at+count) where the FIRST new item inherits the old first item's id + ref,
30
+ * preserving Svelte keyed identity (cursor, IME composition) across the swap.
31
+ */
32
+ export declare function replacePreservingFirst(at: number, count: number, newCount: number): StructuralChange;
33
+ /**
34
+ * Stamp the nodes a change's insert/replace window CREATED as owned by the live tree;
35
+ * pre-existing nodes go through `unshare.ts` instead. Also backfills `childIds` on
36
+ * containers in a created subtree, before the commit publishes: a freshly-parsed node
37
+ * carries none, and under a reused component instance the nested keyed `{#each}` renders
38
+ * before the re-init effect, so undefined keys would reach Svelte.
39
+ */
40
+ export declare function stampStructuralChange(children: CstNode[], change: StructuralChange, sharing: SharingState): void;
41
+ /**
42
+ * Re-shape the parallel ids/refs arrays to match the mutated children. Inserts get fresh
43
+ * IDs + undefined refs; `idMap` on replace preserves specified old-index IDs.
44
+ */
45
+ export declare function applyStructuralChangeToIdsRefs(change: StructuralChange, ids: string[], refs: (BlockComponent | undefined)[]): void;
46
+ /** A parent whose parallel id array the splice doors maintain: a container, or the root. */
47
+ type IdCarrier = {
48
+ children?: CstNode[];
49
+ childIds?: string[];
50
+ };
51
+ /**
52
+ * Borrow `parent.childIds` as the ledger the splice doors write their net splice into, so a
53
+ * caller running several of them reports what they add up to instead of re-deriving it from
54
+ * lengths (a settle's fold moves slots the caller's own window never named).
55
+ */
56
+ export declare function trackChildIds(parent: IdCarrier): {
57
+ read: () => StructuralChange;
58
+ release: () => void;
59
+ };
60
+ /**
61
+ * The one contiguous change carrying `before` to `after`, read off slot identity: the matching
62
+ * ends fall outside the window, and every marker surviving inside it maps to where it stood.
63
+ */
64
+ export declare function changeBetweenIds(before: readonly string[], after: readonly string[]): StructuralChange;
65
+ export {};
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Structural-change descriptor returned by tree ops; the commit primitive consumes it to
3
+ * auto-sync the parallel `blockIds` / `blockRefs` arrays, so callers never hand-splice
4
+ * them. Every variant describes ONE contiguous `at`/`count` window — an op editing two
5
+ * disjoint ranges splits into separate commits or uses the multi-scope commit path.
6
+ */
7
+ import { generateBlockId, assignChildIdsDeep, assignIds } from '../block-id';
8
+ import { spliceMany } from './splice-many';
9
+ import { assertInvariant } from '../assert';
10
+ import { checkStructuralDescriptor } from '../invariants/structural-descriptor';
11
+ /**
12
+ * Replace [at, at+count) where the FIRST new item inherits the old first item's id + ref,
13
+ * preserving Svelte keyed identity (cursor, IME composition) across the swap.
14
+ */
15
+ export function replacePreservingFirst(at, count, newCount) {
16
+ return { op: 'replace', at, count, newCount, idMap: { 0: 0 } };
17
+ }
18
+ /**
19
+ * Stamp the nodes a change's insert/replace window CREATED as owned by the live tree;
20
+ * pre-existing nodes go through `unshare.ts` instead. Also backfills `childIds` on
21
+ * containers in a created subtree, before the commit publishes: a freshly-parsed node
22
+ * carries none, and under a reused component instance the nested keyed `{#each}` renders
23
+ * before the re-init effect, so undefined keys would reach Svelte.
24
+ */
25
+ export function stampStructuralChange(children, change, sharing) {
26
+ if (change.op !== 'insert' && change.op !== 'replace')
27
+ return;
28
+ const count = change.op === 'insert' ? change.count : change.newCount;
29
+ for (let i = change.at; i < change.at + count; i++) {
30
+ sharing.stamp(children[i]);
31
+ assignChildIdsDeep(children[i]);
32
+ }
33
+ }
34
+ /**
35
+ * Re-shape the parallel ids/refs arrays to match the mutated children. Inserts get fresh
36
+ * IDs + undefined refs; `idMap` on replace preserves specified old-index IDs.
37
+ */
38
+ export function applyStructuralChangeToIdsRefs(change, ids, refs) {
39
+ assertInvariant('structural-descriptor', () => checkStructuralDescriptor(change, ids.length));
40
+ switch (change.op) {
41
+ case 'noop':
42
+ return;
43
+ case 'insert': {
44
+ const newIds = Array.from({ length: change.count }, generateBlockId);
45
+ const newRefs = new Array(change.count).fill(undefined);
46
+ spliceMany(ids, change.at, 0, newIds);
47
+ spliceMany(refs, change.at, 0, newRefs);
48
+ return;
49
+ }
50
+ case 'delete': {
51
+ ids.splice(change.at, change.count);
52
+ refs.splice(change.at, change.count);
53
+ return;
54
+ }
55
+ case 'replace': {
56
+ const oldIds = ids.slice(change.at, change.at + change.count);
57
+ const oldRefs = refs.slice(change.at, change.at + change.count);
58
+ const idMap = change.idMap ?? {};
59
+ const newIds = Array.from({ length: change.newCount }, (_, i) => idMap[i] !== undefined ? oldIds[idMap[i]] : generateBlockId());
60
+ const newRefs = Array.from({ length: change.newCount }, (_, i) => idMap[i] !== undefined ? oldRefs[idMap[i]] : undefined);
61
+ spliceMany(ids, change.at, change.count, newIds);
62
+ spliceMany(refs, change.at, change.count, newRefs);
63
+ return;
64
+ }
65
+ }
66
+ }
67
+ /**
68
+ * Borrow `parent.childIds` as the ledger the splice doors write their net splice into, so a
69
+ * caller running several of them reports what they add up to instead of re-deriving it from
70
+ * lengths (a settle's fold moves slots the caller's own window never named).
71
+ */
72
+ export function trackChildIds(parent) {
73
+ const had = parent.childIds;
74
+ const ids = had ?? assignIds(parent.children ?? []);
75
+ parent.childIds = ids;
76
+ const before = [...ids];
77
+ return {
78
+ read: () => changeBetweenIds(before, parent.childIds ?? []),
79
+ // A parent that kept no array keeps none: nothing else reconciles one it never had.
80
+ release: () => {
81
+ if (had === undefined)
82
+ parent.childIds = undefined;
83
+ }
84
+ };
85
+ }
86
+ /**
87
+ * The one contiguous change carrying `before` to `after`, read off slot identity: the matching
88
+ * ends fall outside the window, and every marker surviving inside it maps to where it stood.
89
+ */
90
+ export function changeBetweenIds(before, after) {
91
+ const max = Math.min(before.length, after.length);
92
+ let at = 0;
93
+ while (at < max && before[at] === after[at])
94
+ at++;
95
+ let tail = 0;
96
+ while (tail < max - at && before[before.length - 1 - tail] === after[after.length - 1 - tail]) {
97
+ tail++;
98
+ }
99
+ const count = before.length - at - tail;
100
+ const newCount = after.length - at - tail;
101
+ if (count === 0 && newCount === 0)
102
+ return { op: 'noop' };
103
+ if (count === 0)
104
+ return { op: 'insert', at, count: newCount };
105
+ if (newCount === 0)
106
+ return { op: 'delete', at, count };
107
+ const oldSlotOf = new Map();
108
+ for (let i = 0; i < count; i++)
109
+ oldSlotOf.set(before[at + i], i);
110
+ const idMap = {};
111
+ for (let i = 0; i < newCount; i++) {
112
+ const oldSlot = oldSlotOf.get(after[at + i]);
113
+ if (oldSlot !== undefined)
114
+ idMap[i] = oldSlot;
115
+ }
116
+ return { op: 'replace', at, count, newCount, idMap };
117
+ }
@@ -0,0 +1,6 @@
1
+ import type { NodeView } from '../core/node-views';
2
+ export interface CellPos {
3
+ rowIdx: number;
4
+ colIdx: number;
5
+ }
6
+ export declare function copyRectangleAsSubTable(table: NodeView, a: CellPos, b: CellPos): string;
@@ -0,0 +1,43 @@
1
+ import { metadataOf } from '../core/nodes';
2
+ export function copyRectangleAsSubTable(table, a, b) {
3
+ const minRow = Math.min(a.rowIdx, b.rowIdx);
4
+ const maxRow = Math.max(a.rowIdx, b.rowIdx);
5
+ const minCol = Math.min(a.colIdx, b.colIdx);
6
+ const maxCol = Math.max(a.colIdx, b.colIdx);
7
+ const rows = table.children ?? [];
8
+ const cellRaws = [];
9
+ for (let r = minRow; r <= maxRow; r++) {
10
+ const rowCells = rows[r]?.children ?? [];
11
+ const slice = [];
12
+ for (let c = minCol; c <= maxCol; c++) {
13
+ slice.push(rowCells[c]?.raw ?? '');
14
+ }
15
+ cellRaws.push(slice);
16
+ }
17
+ if (cellRaws.length === 1 && cellRaws[0].length === 1) {
18
+ return cellRaws[0][0];
19
+ }
20
+ const alignments = metadataOf(table, 'table').alignments.slice(minCol, maxCol + 1);
21
+ const lines = [];
22
+ lines.push(formatRow(cellRaws[0]));
23
+ lines.push(formatRow(alignments.map(formatAlignmentCell)));
24
+ for (let i = 1; i < cellRaws.length; i++) {
25
+ lines.push(formatRow(cellRaws[i]));
26
+ }
27
+ return lines.join('');
28
+ }
29
+ function formatRow(cells) {
30
+ return '| ' + cells.join(' | ') + ' |\n';
31
+ }
32
+ function formatAlignmentCell(alignment) {
33
+ switch (alignment) {
34
+ case 'left':
35
+ return ':---';
36
+ case 'center':
37
+ return ':---:';
38
+ case 'right':
39
+ return '---:';
40
+ default:
41
+ return '---';
42
+ }
43
+ }
@@ -0,0 +1,17 @@
1
+ import type { CstNode, TableAlignment } from '../core/nodes';
2
+ import type { StructuralChange } from './structural-change';
3
+ export declare function insertEmptyRow(table: CstNode, rowIdx: number, side: 'above' | 'below'): void;
4
+ export declare function insertEmptyColumn(table: CstNode, colIdx: number, side: 'left' | 'right'): StructuralChange[];
5
+ export declare function deleteRow(table: CstNode, rowIdx: number): void;
6
+ export declare function deleteColumn(table: CstNode, colIdx: number): StructuralChange[];
7
+ export declare function moveColumn(table: CstNode, fromCol: number, toCol: number): StructuralChange[];
8
+ export declare function setAlignment(table: CstNode, colIdx: number, alignment: TableAlignment): void;
9
+ export declare function cycleAlignment(table: CstNode, colIdx: number): void;
10
+ /**
11
+ * Whether a row delete is allowed. `rowCount` is the FULL count including the header. A
12
+ * header delete promotes the next row so it needs only a second row; a body delete needs
13
+ * a second body row, else it would leave a header-only table.
14
+ */
15
+ export declare function canDeleteRow(rowIdx: number, rowCount: number): boolean;
16
+ /** Whether a column delete is allowed: a table must keep at least one column. */
17
+ export declare function canDeleteColumn(colCount: number): boolean;
@@ -0,0 +1,101 @@
1
+ // In-place table CST mutations; the caller owns the commit ceremony and the raw rebuild,
2
+ // so these touch neither reactivity, undo, nor raw. Column mutators emit exactly one
3
+ // StructuralChange per row, in row order, for multi-scope callers to pair with row scopes.
4
+ import { metadataOf } from '../core/nodes';
5
+ import { reorderChildren } from './reorder';
6
+ const ALIGN_CYCLE = ['left', 'center', 'right'];
7
+ // ── Public API ─────────────────────────────────────────────────────────────
8
+ export function insertEmptyRow(table, rowIdx, side) {
9
+ const meta = metadataOf(table, 'table');
10
+ const newRow = {
11
+ kind: 'tableRow',
12
+ leadingTrivia: '',
13
+ raw: '',
14
+ metadata: { isHeader: false },
15
+ children: Array.from({ length: meta.columnCount }, () => ({
16
+ kind: 'tableCell',
17
+ leadingTrivia: '',
18
+ raw: ''
19
+ }))
20
+ };
21
+ const insertAt = side === 'above' ? rowIdx : rowIdx + 1;
22
+ table.children.splice(insertAt, 0, newRow);
23
+ }
24
+ export function insertEmptyColumn(table, colIdx, side) {
25
+ const meta = metadataOf(table, 'table');
26
+ const insertAt = side === 'left' ? colIdx : colIdx + 1;
27
+ const changes = [];
28
+ for (const row of table.children ?? []) {
29
+ row.children.splice(insertAt, 0, { kind: 'tableCell', leadingTrivia: '', raw: '' });
30
+ changes.push({ op: 'insert', at: insertAt, count: 1 });
31
+ }
32
+ meta.alignments.splice(insertAt, 0, 'none');
33
+ meta.columnCount += 1;
34
+ return changes;
35
+ }
36
+ // Unconditional: refusal (>=1 header + >=1 body row, >=1 column) is the wrapper's job.
37
+ export function deleteRow(table, rowIdx) {
38
+ const rows = table.children ?? [];
39
+ const willRemoveHeader = rowIdx === 0;
40
+ rows.splice(rowIdx, 1);
41
+ if (willRemoveHeader && rows.length > 0) {
42
+ metadataOf(rows[0], 'tableRow').isHeader = true;
43
+ }
44
+ }
45
+ export function deleteColumn(table, colIdx) {
46
+ const meta = metadataOf(table, 'table');
47
+ const changes = [];
48
+ for (const row of table.children ?? []) {
49
+ row.children.splice(colIdx, 1);
50
+ changes.push({ op: 'delete', at: colIdx, count: 1 });
51
+ }
52
+ meta.alignments.splice(colIdx, 1);
53
+ meta.columnCount -= 1;
54
+ return changes;
55
+ }
56
+ // The per-row cell permute keeps keyed cell identity (reorderChildren's idMap); the
57
+ // alignments splice must mirror that permutation exactly to stay in lockstep.
58
+ export function moveColumn(table, fromCol, toCol) {
59
+ const meta = metadataOf(table, 'table');
60
+ const changes = [];
61
+ for (const row of table.children ?? []) {
62
+ changes.push(reorderChildren(row.children, fromCol, toCol));
63
+ }
64
+ if (fromCol !== toCol) {
65
+ const [moved] = meta.alignments.splice(fromCol, 1);
66
+ meta.alignments.splice(toCol, 0, moved);
67
+ }
68
+ return changes;
69
+ }
70
+ export function setAlignment(table, colIdx, alignment) {
71
+ metadataOf(table, 'table').alignments[colIdx] = alignment;
72
+ }
73
+ export function cycleAlignment(table, colIdx) {
74
+ const meta = metadataOf(table, 'table');
75
+ const current = meta.alignments[colIdx];
76
+ // 'none' renders identically to 'left', so stepping through it would look like a stuck
77
+ // press; jump to 'center' instead. Once cycling begins the column never re-enters it.
78
+ if (current === 'none') {
79
+ meta.alignments[colIdx] = 'center';
80
+ return;
81
+ }
82
+ const idx = ALIGN_CYCLE.indexOf(current);
83
+ meta.alignments[colIdx] = ALIGN_CYCLE[(idx + 1) % ALIGN_CYCLE.length];
84
+ }
85
+ // ── Delete-enablement predicates ─────────────────────────────────────────────
86
+ // Single source of truth for the deletion-refusal rules, here rather than in
87
+ // editor-actions/ so selection/ never has to reach across for them.
88
+ /**
89
+ * Whether a row delete is allowed. `rowCount` is the FULL count including the header. A
90
+ * header delete promotes the next row so it needs only a second row; a body delete needs
91
+ * a second body row, else it would leave a header-only table.
92
+ */
93
+ export function canDeleteRow(rowIdx, rowCount) {
94
+ if (rowCount <= 1)
95
+ return false;
96
+ return rowIdx === 0 || rowCount - 1 > 1;
97
+ }
98
+ /** Whether a column delete is allowed: a table must keep at least one column. */
99
+ export function canDeleteColumn(colCount) {
100
+ return colCount > 1;
101
+ }
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Copy-path-on-write for structural-sharing undo: unshare the root→target spine before
3
+ * any in-place write — undo entries still reference shared nodes. Copies are SHALLOW, so
4
+ * unshare deeper wherever you write. Write-then-re-read: after assigning a copy into the
5
+ * live tree, re-read it through the tree — the `$state` proxy wrapper is canonical, not
6
+ * the copy you held. Also the one sanctioned view→mutable door (`core/node-views.ts`).
7
+ */
8
+ import type { CstNode } from '../core/nodes';
9
+ import type { NodeParentView, NodeView } from '../core/node-views';
10
+ import type { SharingState } from './sharing';
11
+ import type { NodeParent, TrackedPosition } from './node-ops';
12
+ import type { StructuralChange } from './structural-change';
13
+ import { type ChildRawChange } from '../schema/child-spans';
14
+ import type { GrammarView } from '../schema/block-openers';
15
+ /**
16
+ * Unshare every node along `path` from `root`; returns the chain outermost-first.
17
+ * The caller owns `root.children` (live document, or a commit ceremony's array copy),
18
+ * which is what makes the splice safe.
19
+ */
20
+ export declare function ensureUnsharedPath(root: NodeParentView, path: number[], sharing: SharingState): CstNode[];
21
+ /**
22
+ * Unshare one direct child of an already-unshared parent — a node, or a
23
+ * caller-owned `{ children }` view (e.g. a commit ceremony's array copy).
24
+ */
25
+ export declare function ensureUnsharedChild(parent: CstNode | NodeParent, index: number, sharing: SharingState): CstNode;
26
+ /**
27
+ * Standalone copy for a node being MOVED out of a parent the snapshot keeps: the caller
28
+ * attaches the returned copy, the original stays in the old parent untouched. An
29
+ * unshared input passes through — unshared already means live-tree-owned.
30
+ */
31
+ export declare function ensureUnsharedNode(node: NodeView, sharing: SharingState): CstNode;
32
+ /** Unshare every direct child of an owned parent (e.g. table rows before a whole-table rebuild). */
33
+ export declare function ensureUnsharedChildren(parent: CstNode, sharing: SharingState): void;
34
+ /**
35
+ * Deep-unshare an owned node's subtree. Intended for small bounded subtrees
36
+ * (tables: rows + cells) ahead of ops that write at arbitrary depth.
37
+ */
38
+ export declare function ensureUnsharedSubtree(node: CstNode, sharing: SharingState): void;
39
+ /**
40
+ * Rebuild one owned container's raw. A grid rebuild rewrites its children's raw, so a
41
+ * grid's children are unshared first — keyed off `containerContract`, not a `table` kind
42
+ * test, or a plugin grid writes through shared children.
43
+ */
44
+ export declare function rebuildOwnedContainer(node: CstNode, sharing: SharingState, changed?: ChildRawChange): void;
45
+ /**
46
+ * Longest prefix of `chain` still attached under `root`, identity-checked level by level.
47
+ * A commit mutation can splice a node out mid-ceremony; rebuilding the detached node's
48
+ * raw against its emptied children writes `raw: ''` and trips the commit-time staleness
49
+ * check. Ancestors above the detachment still need their rebuild — hence prefix.
50
+ */
51
+ export declare function attachedChainPrefix(root: NodeParent, chain: CstNode[]): CstNode[];
52
+ /**
53
+ * One container slot a rebuild re-kinded. `previous` is the rollback register: a commit
54
+ * unwinding after the swap has already published `replacement` into a live children
55
+ * array, which no other rollback register reaches.
56
+ */
57
+ export interface ContainerReclassification {
58
+ siblings: CstNode[];
59
+ index: number;
60
+ previous: CstNode;
61
+ replacement: CstNode;
62
+ }
63
+ /**
64
+ * A fold the rebuilt container's own slot owed: its bytes stopped interrupting a neighbour, so
65
+ * the parent's array reloads as fewer blocks and no scope-local settle reaches that join
66
+ * `before` is the pre-splice array — the rollback register, since the splice lands in
67
+ * an array no commit descriptor covers. `landing` is where the container's first byte ended up.
68
+ */
69
+ export interface AncestrySeamFold {
70
+ /** Chain level of the folded container, so a caller composes the owner's path from its own. */
71
+ depth: number;
72
+ siblings: CstNode[];
73
+ /** The chain node owning `siblings`, or null when they are the rebuild root's children. */
74
+ owner: CstNode | null;
75
+ change: StructuralChange;
76
+ before: CstNode[];
77
+ landing: TrackedPosition;
78
+ }
79
+ /**
80
+ * What the typing door knows and a bare chain does not: where the chain sits in the document,
81
+ * and the bytes its leaf carried before the write. Both are guesses the rebuild identity-checks.
82
+ */
83
+ export interface ChainWriteHint {
84
+ path: number[];
85
+ leafPreviousRaw: string;
86
+ }
87
+ /**
88
+ * Rebuild raws along an owned spine chain innermost-first, re-deriving each container's kind and
89
+ * settling the seams at its own slot; chain- rather than path-based so it survives index shifts.
90
+ * Both passes gate on a boundary line of the rebuilt raw moving; the re-derive additionally needs
91
+ * `lineOpensAs` not to name the current kind, a positive identification so a declining opener
92
+ * parses rather than eliding a real kind change. `folds` is required-nullable: a fold splices the
93
+ * PARENT's array, so only a caller that reconciles that scope's ids/refs passes a sink.
94
+ */
95
+ export declare function rebuildUnsharedChain(root: NodeParent | CstNode, chain: CstNode[], sharing: SharingState, folds: AncestrySeamFold[] | null, grammar: GrammarView | undefined, hint?: ChainWriteHint): ContainerReclassification[];
96
+ /**
97
+ * Unshare the spine to `path` and rebuild it innermost-first, tolerating paths that ran
98
+ * out of range mid-walk (post-delete rebuild passes). Prefer `rebuildUnsharedChain` when
99
+ * indices may have shifted since the unshare.
100
+ */
101
+ export declare function rebuildUnsharedAncestry(root: NodeParent, path: number[], sharing: SharingState, folds: AncestrySeamFold[] | null, grammar: GrammarView | undefined): ContainerReclassification[];