@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,17 @@
1
+ /**
2
+ * The commit scope a paste addresses when it re-mints or splices a block: the block's
3
+ * PARENT container, resolved from the path rather than from whatever `blockEdit` is in
4
+ * scope — a caller holding a nested-bundle blockEdit would misroute through the wrong
5
+ * container.
6
+ */
7
+ import type { CstNode, Document } from '../../core/nodes';
8
+ import type { MultiScopeTarget, PasteCommitCoordinator } from './paste-deps';
9
+ /** Null when `blockPath`'s parent doesn't resolve to a container. */
10
+ export declare function resolveParentScope(doc: Document, blockPath: number[], controller: PasteCommitCoordinator): MultiScopeTarget | null;
11
+ /**
12
+ * A container's mounted `BlockListState`, or a detached stand-in. Never `expectState`:
13
+ * these routes can be a cross-block paste whose range delete ALREADY committed, so a throw
14
+ * would leave the selection deleted and nothing pasted. The ceremony writes ids to the
15
+ * owned node's `childIds`, so only ref alignment is lost on the stand-in.
16
+ */
17
+ export declare function containerScopeState(controller: PasteCommitCoordinator, node: CstNode): MultiScopeTarget['state'];
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The commit scope a paste addresses when it re-mints or splices a block: the block's
3
+ * PARENT container, resolved from the path rather than from whatever `blockEdit` is in
4
+ * scope — a caller holding a nested-bundle blockEdit would misroute through the wrong
5
+ * container.
6
+ */
7
+ import { nodeAt } from '../node-ops';
8
+ import { devWarn } from '../../dev-warn';
9
+ /** Null when `blockPath`'s parent doesn't resolve to a container. */
10
+ export function resolveParentScope(doc, blockPath, controller) {
11
+ const parentPath = blockPath.slice(0, -1);
12
+ if (parentPath.length === 0)
13
+ return controller.getDocScope();
14
+ const parentNode = nodeAt(doc, parentPath);
15
+ if (!parentNode?.children)
16
+ return null;
17
+ return {
18
+ node: parentNode,
19
+ state: containerScopeState(controller, parentNode),
20
+ path: parentPath
21
+ };
22
+ }
23
+ /**
24
+ * A container's mounted `BlockListState`, or a detached stand-in. Never `expectState`:
25
+ * these routes can be a cross-block paste whose range delete ALREADY committed, so a throw
26
+ * would leave the selection deleted and nothing pasted. The ceremony writes ids to the
27
+ * owned node's `childIds`, so only ref alignment is lost on the stand-in.
28
+ */
29
+ export function containerScopeState(controller, node) {
30
+ const mounted = controller.resolveState(node);
31
+ if (mounted)
32
+ return mounted;
33
+ devWarn('paste', `committing at an unmounted ${node.kind} scope — ids realign, component refs do not`);
34
+ return { innerBlockIds: [...(node.childIds ?? [])], innerBlockRefs: [] };
35
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * What paste modules need from the commit/undo layer. Declared here rather than imported,
3
+ * which is what keeps the `tree-operations -> editor-actions` and
4
+ * `tree-operations -> reactivity` back-edges out of the graph.
5
+ */
6
+ import type { CommitMultiScopeArgs, MultiScopeTarget } from '../../action-contracts';
7
+ import type { CstNode } from '../../core/nodes';
8
+ export type { CommitMultiScopeArgs, MultiScopeTarget };
9
+ export interface PasteCommitCoordinator {
10
+ commitMultiScope<const S extends readonly MultiScopeTarget[]>(args: CommitMultiScopeArgs<S>): Promise<void>;
11
+ getDocScope(): MultiScopeTarget;
12
+ /** Resolve a container node to its mounted reactive state. */
13
+ resolveState(node: CstNode): MultiScopeTarget['state'] | undefined;
14
+ /**
15
+ * Land the caret at a doc-absolute path, revealing an off-window target first. A
16
+ * structural paste lands at the END of the pasted run, so its target index scales with
17
+ * the clipboard and a sync ref lookup would no-op past the window's overscan (VR-12).
18
+ */
19
+ landCaret(path: number[], offset: number): Promise<void>;
20
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * What paste modules need from the commit/undo layer. Declared here rather than imported,
3
+ * which is what keeps the `tree-operations -> editor-actions` and
4
+ * `tree-operations -> reactivity` back-edges out of the graph.
5
+ */
6
+ export {};
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Replacement node list for a multi-block paste into a single leaf: the leaf's raw split
3
+ * at the cursor, with the pasted blocks between the slices. STRUCTURAL pastes only —
4
+ * routing a single-paragraph clipboard here would split it into three nodes.
5
+ */
6
+ import type { CstNode } from '../../core/nodes';
7
+ import type { NodeView } from '../../core/node-views';
8
+ export declare function buildPastedReplacement(leaf: NodeView, offset: number, blocks: CstNode[]): CstNode[];
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Replacement node list for a multi-block paste into a single leaf: the leaf's raw split
3
+ * at the cursor, with the pasted blocks between the slices. STRUCTURAL pastes only —
4
+ * routing a single-paragraph clipboard here would split it into three nodes.
5
+ */
6
+ import { snapToScalarBoundary, trailingLineEnding, trimTrailingLineEnding } from '../../core/lines';
7
+ import { isBlankParagraph } from '../../core/parser';
8
+ import { ensureEditableContainers } from '../node-ops';
9
+ import { parseFirstBlock } from '../parse-block';
10
+ export function buildPastedReplacement(leaf, offset, blocks) {
11
+ if (blocks.length === 0)
12
+ return [];
13
+ const leafRaw = leaf.raw;
14
+ const lineEnding = trailingLineEnding(leafRaw);
15
+ const display = trimTrailingLineEnding(leafRaw);
16
+ // Off any scalar interior before the cut: the halves land in DIFFERENT blocks, so a pair
17
+ // split here is unrecoverable bytes rather than a recoverable edit.
18
+ const cut = snapToScalarBoundary(display, offset);
19
+ const rawBefore = display.slice(0, cut);
20
+ const rawAfter = display.slice(cut);
21
+ const originalTrivia = leaf.leadingTrivia ?? '';
22
+ const newNodes = [];
23
+ // Re-parsed so heading/list leaves round-trip through their own parser rather than
24
+ // being forced back to a paragraph.
25
+ if (rawBefore.length > 0) {
26
+ const beforeRaw = rawBefore + lineEnding;
27
+ const beforeNode = parseFirstBlock(beforeRaw);
28
+ beforeNode.leadingTrivia = originalTrivia;
29
+ ensureEditableContainers(beforeNode);
30
+ newNodes.push(beforeNode);
31
+ }
32
+ // A blank-line separator is forced where source trivia is empty, or the block butts
33
+ // against its predecessor via a soft break and renders as one merged paragraph. A blank
34
+ // predecessor already holds a run open, so its successor takes no separator of its own.
35
+ for (let i = 0; i < blocks.length; i++) {
36
+ const node = { ...blocks[i] };
37
+ const prev = newNodes[newNodes.length - 1];
38
+ if (newNodes.length === 0) {
39
+ node.leadingTrivia = originalTrivia;
40
+ }
41
+ else if (prev !== undefined && isBlankParagraph(prev)) {
42
+ node.leadingTrivia = blocks[i].leadingTrivia ?? '';
43
+ }
44
+ else {
45
+ node.leadingTrivia = blocks[i].leadingTrivia ? blocks[i].leadingTrivia : lineEnding;
46
+ }
47
+ ensureEditableContainers(node);
48
+ newNodes.push(node);
49
+ }
50
+ // Separate node rather than merged into the last pasted block, which would let a
51
+ // non-paragraph tail absorb it as a continuation line.
52
+ if (rawAfter.length > 0) {
53
+ const afterRaw = rawAfter + lineEnding;
54
+ const afterNode = parseFirstBlock(afterRaw);
55
+ afterNode.leadingTrivia = lineEnding;
56
+ ensureEditableContainers(afterNode);
57
+ newNodes.push(afterNode);
58
+ }
59
+ return newNodes;
60
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Content-keyed, pre-parse paste transforms: a plugin registers a named transform that
3
+ * rewrites the raw clipboard text or declines. Register-once, throw-on-duplicate — the
4
+ * `customElements` model shared with `paste-surfaces.ts`.
5
+ */
6
+ import type { PluginActivation } from '../../schema/plugin-activation';
7
+ export interface PasteTransform {
8
+ /** Unique across the process; a duplicate registration throws. */
9
+ readonly name: string;
10
+ /** A replacement for `text`, or null to decline. A throw is contained as a decline. */
11
+ transform(text: string): string | null;
12
+ }
13
+ export declare function registerPasteTransform(transform: PasteTransform): void;
14
+ /**
15
+ * Non-throwing registration probe, so an idempotent module (HMR, a re-imported registrar) asks
16
+ * before registering instead of catching the duplicate throw.
17
+ */
18
+ export declare function isPasteTransformRegistered(name: string): boolean;
19
+ /**
20
+ * Run every transform over `text` in registration order, each seeing the prior's output;
21
+ * a null return leaves the running text untouched. `activation` scopes the run to one
22
+ * instance's plugins; absent = every installed one. A transform no plugin owns always runs.
23
+ */
24
+ export declare function applyPasteTransforms(text: string, activation?: PluginActivation): string;
25
+ export declare function __resetPasteTransformsForTests(): void;
@@ -0,0 +1,72 @@
1
+ import { currentInstallingPlugin } from '../../schema/plugin-install';
2
+ import { registerOnce } from '../../schema/register-once';
3
+ import { devWarn } from '../../dev-warn';
4
+ import { editorEnv } from '../../env';
5
+ // Map iteration is insertion order, so `.values()` is the pipeline order while the keyed
6
+ // lookup guards duplicates — one structure, no parallel array.
7
+ const transforms = new Map();
8
+ export function registerPasteTransform(transform) {
9
+ const existing = transforms.get(transform.name);
10
+ registerOnce(existing !== undefined, () => transforms.set(transform.name, { transform, owner: currentInstallingPlugin() }), `registerPasteTransform: "${transform.name}" is already registered` +
11
+ (existing?.owner ? ` by plugin '${existing.owner}'` : '') +
12
+ `. Paste transforms are register-once.`);
13
+ }
14
+ /**
15
+ * Non-throwing registration probe, so an idempotent module (HMR, a re-imported registrar) asks
16
+ * before registering instead of catching the duplicate throw.
17
+ */
18
+ export function isPasteTransformRegistered(name) {
19
+ return transforms.has(name);
20
+ }
21
+ /**
22
+ * Run every transform over `text` in registration order, each seeing the prior's output;
23
+ * a null return leaves the running text untouched. `activation` scopes the run to one
24
+ * instance's plugins; absent = every installed one. A transform no plugin owns always runs.
25
+ */
26
+ export function applyPasteTransforms(text, activation) {
27
+ if (transforms.size === 0)
28
+ return text;
29
+ let result = text;
30
+ for (const { transform, owner } of transforms.values()) {
31
+ if (owner !== null && activation && !activation.isActive(owner))
32
+ continue;
33
+ const next = runContained(transform, result, 'pipeline');
34
+ if (next === null)
35
+ continue;
36
+ warnIfNonIdempotent(transform, next);
37
+ result = next;
38
+ }
39
+ return result;
40
+ }
41
+ export function __resetPasteTransformsForTests() {
42
+ transforms.clear();
43
+ }
44
+ /**
45
+ * The one door plugin `transform()` code is called through. On the cross-block route the
46
+ * covering range delete has already committed, so an escaping throw would leave the
47
+ * selection deleted and nothing pasted; a throw becomes the null a decline returns. The
48
+ * warning names its phase because a probe-time throw read as a decline would send the
49
+ * author debugging a paste that worked.
50
+ */
51
+ function runContained(transform, text, phase) {
52
+ try {
53
+ return transform.transform(text);
54
+ }
55
+ catch (error) {
56
+ const outcome = phase === 'pipeline'
57
+ ? 'in the paste pipeline; declining, so the running text is untouched'
58
+ : 'in the dev idempotence probe; the paste keeps its first result';
59
+ devWarn('paste-transform', `transform '${transform.name}' threw ${outcome}`, error);
60
+ return null;
61
+ }
62
+ }
63
+ // A transform whose own output feeds back into a further rewrite drives a paste feedback
64
+ // loop, so in dev it is re-run on its result: it must decline or reproduce it.
65
+ function warnIfNonIdempotent(transform, result) {
66
+ if (!editorEnv.isDev)
67
+ return;
68
+ const again = runContained(transform, result, 'probe');
69
+ if (again !== null && again !== result) {
70
+ devWarn('paste-transform', `transform '${transform.name}' is not idempotent — re-running it on its own output changed the text again`);
71
+ }
72
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Replace the block at `blockPath`, committing at its parent scope (`parent-scope.ts`)
3
+ * rather than through the caller's blockEdit — paste-into-cell must mutate `doc.children`
4
+ * while holding the row-level nested bundle.
5
+ */
6
+ import type { UndoEntryMode } from '../../action-contracts';
7
+ import type { OperationDetailMap } from '../../schema/operations';
8
+ import type { CstNode, Document } from '../../core/nodes';
9
+ import type { GrammarView } from '../../schema/block-openers';
10
+ import type { PasteCommitCoordinator } from './paste-deps';
11
+ export interface ReplaceBlockAtParentArgs {
12
+ doc: Document;
13
+ /** Path to the block being replaced. Length ≥ 1. */
14
+ blockPath: number[];
15
+ replacement: CstNode[];
16
+ controller: PasteCommitCoordinator;
17
+ undoEntry: UndoEntryMode;
18
+ /** Index into `replacement` to focus after the commit. */
19
+ focusReplacementIndex: number;
20
+ focusOffset: number;
21
+ source: Extract<OperationDetailMap['replaceBlock'], {
22
+ source: unknown;
23
+ }>['source'];
24
+ /** Instance grammar for the escape's kind re-derive; absent = global. */
25
+ grammar?: GrammarView;
26
+ /** The clipboard's own trailing blank line, where nothing in the splice stands for it. */
27
+ trailingSeparator?: string;
28
+ }
29
+ export declare function replaceBlockAtParent(args: ReplaceBlockAtParentArgs): Promise<void>;
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Replace the block at `blockPath`, committing at its parent scope (`parent-scope.ts`)
3
+ * rather than through the caller's blockEdit — paste-into-cell must mutate `doc.children`
4
+ * while holding the row-level nested bundle.
5
+ */
6
+ import { nodeAt } from '../node-ops';
7
+ import { spliceMany } from '../splice-many';
8
+ import { trailingLineEnding } from '../../core/lines';
9
+ import { normalizeReplacementForBody } from './body-write';
10
+ import { landedPasteOffset, trackedPasteCaret } from './focus-target';
11
+ import { resolveParentScope } from './parent-scope';
12
+ import { docPathFrom } from '../../cursor/coordinate-spaces';
13
+ import { replacePreservingFirst, stampStructuralChange } from '../structural-change';
14
+ /**
15
+ * Land the clipboard's trailing blank where a reload folds one: the DOCUMENT's own suffix, and
16
+ * only at a tail whose slot is empty — one separation is one separation. A container tail
17
+ * declines, since `innerSuffix` is the wrap-peel settle's register on this same commit. The
18
+ * clipboard says WHETHER a line lands, never which one: normalized to LF at every entry point,
19
+ * its own suffix would strand an LF line in a CRLF document (G4.20).
20
+ */
21
+ function landTrailingSeparator(args, children, afterIndex, ending) {
22
+ if (!args.trailingSeparator || args.blockPath.length !== 1)
23
+ return;
24
+ if (args.doc.suffix !== '' || afterIndex !== children.length)
25
+ return;
26
+ args.doc.suffix = ending;
27
+ }
28
+ export async function replaceBlockAtParent(args) {
29
+ const { doc, blockPath, controller, undoEntry, focusOffset, source } = args;
30
+ const blockIdx = blockPath[blockPath.length - 1];
31
+ const scope = resolveParentScope(doc, blockPath, controller);
32
+ if (!scope)
33
+ return;
34
+ // A replacement is minted before any byte sink sees it, so the owner's bodyWrite escape
35
+ // lands here — on the clipboard blocks AND the target's split halves alike.
36
+ const ownerKind = blockPath.length > 1 ? scope.node.kind : undefined;
37
+ const { replacement, mapIndex } = normalizeReplacementForBody(ownerKind, args.replacement, args.grammar);
38
+ const focusReplacementIndex = mapIndex(args.focusReplacementIndex);
39
+ // The settle can fold the spliced window into its neighbours, which moves both halves of the
40
+ // landing: the residue reattaches inside the last pasted leaf, and an absorb above moves the
41
+ // slot itself. The commit carries this through its folds and `afterTick` reads it back.
42
+ const caret = trackedPasteCaret(replacement, blockIdx, focusReplacementIndex, focusOffset);
43
+ const oldBlock = nodeAt(doc, blockPath);
44
+ const sameKindFirst = oldBlock !== null && replacement.length > 0 && replacement[0].kind === oldBlock.kind;
45
+ // Read as bytes before the commit: the displaced block is the document's own ending, and a
46
+ // node held across a commit goes stale the moment the spine unshares.
47
+ const tailEnding = oldBlock ? trailingLineEnding(oldBlock.raw) : '\n';
48
+ await controller.commitMultiScope({
49
+ scopes: [scope],
50
+ snapshot: undoEntry === 'join' ? 'skip' : { path: docPathFrom(blockPath), offset: 0 },
51
+ mutate: ([scopeView]) => {
52
+ spliceMany(scopeView.children, blockIdx, 1, replacement);
53
+ // Identity preservation only helps on a kind match; BlockHost dispatches by kind,
54
+ // so a different kind remounts anyway.
55
+ const change = sameKindFirst
56
+ ? replacePreservingFirst(blockIdx, 1, replacement.length)
57
+ : { op: 'replace', at: blockIdx, count: 1, newCount: replacement.length };
58
+ stampStructuralChange(scopeView.children, change, scopeView.sharing);
59
+ landTrailingSeparator(args, scopeView.children, blockIdx + replacement.length, tailEnding);
60
+ return [change];
61
+ },
62
+ op: {
63
+ kind: 'replaceBlock',
64
+ detail: { source },
65
+ eventPath: docPathFrom(blockPath)
66
+ },
67
+ trackCaret: [caret],
68
+ afterTick: () => {
69
+ // Re-read from the document: the ceremony unshares the spine, so the scope node the
70
+ // caller resolved is a stale copy by now.
71
+ const landed = nodeAt(doc, scope.path)?.children?.[caret.index];
72
+ return controller.landCaret([...scope.path, caret.index], landedPasteOffset(landed, caret, focusOffset));
73
+ }
74
+ });
75
+ }
@@ -0,0 +1,9 @@
1
+ import type { CstNode } from '../../core/nodes';
2
+ import type { PasteStrategy } from './dispatch';
3
+ /**
4
+ * The clipboard's content blocks: a blank block at either edge is the copy's packaging, which a
5
+ * surface holding no blocks classifies past. Empty when nothing but packaging came across.
6
+ */
7
+ export declare function contentBlocks(blocks: readonly CstNode[]): readonly CstNode[];
8
+ /** One paragraph is text any leaf can take inline; anything else is structure. */
9
+ export declare function pickPasteStrategy(blocks: readonly CstNode[]): PasteStrategy;
@@ -0,0 +1,20 @@
1
+ import { isBlankParagraph } from '../../core/parser';
2
+ /**
3
+ * The clipboard's content blocks: a blank block at either edge is the copy's packaging, which a
4
+ * surface holding no blocks classifies past. Empty when nothing but packaging came across.
5
+ */
6
+ export function contentBlocks(blocks) {
7
+ let start = 0;
8
+ let end = blocks.length;
9
+ while (start < end && isBlankParagraph(blocks[start]))
10
+ start++;
11
+ while (end > start && isBlankParagraph(blocks[end - 1]))
12
+ end--;
13
+ return blocks.slice(start, end);
14
+ }
15
+ /** One paragraph is text any leaf can take inline; anything else is structure. */
16
+ export function pickPasteStrategy(blocks) {
17
+ if (blocks.length === 0)
18
+ return 'inline';
19
+ return blocks.length === 1 && blocks[0].kind === 'paragraph' ? 'inline' : 'structural';
20
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Split a table at a row boundary. `rowGoes` sends the anchor row to whichever half
3
+ * preserves caret continuity for the break-and-splice paste path.
4
+ */
5
+ import type { CstNode } from '../../core/nodes';
6
+ export type RowGoes = 'first' | 'second';
7
+ export declare function sliceTableAtRow(table: CstNode, sliceRow: number, rowGoes: RowGoes): {
8
+ firstHalf: CstNode | null;
9
+ secondHalf: CstNode | null;
10
+ };
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Split a table at a row boundary. `rowGoes` sends the anchor row to whichever half
3
+ * preserves caret continuity for the break-and-splice paste path.
4
+ */
5
+ import { metadataOf } from '../../core/nodes';
6
+ import { rebuildContainerRaw } from '../../schema/container-raw';
7
+ export function sliceTableAtRow(table, sliceRow, rowGoes) {
8
+ const rows = table.children;
9
+ const meta = metadataOf(table, 'table');
10
+ const splitAt = rowGoes === 'first' ? sliceRow + 1 : sliceRow;
11
+ const firstRows = rows.slice(0, splitAt);
12
+ const secondRows = rows.slice(splitAt);
13
+ const firstHalf = buildHalf(firstRows, meta);
14
+ const secondHalf = buildHalf(secondRows, meta);
15
+ if (firstHalf)
16
+ rebuildContainerRaw(firstHalf);
17
+ if (secondHalf)
18
+ rebuildContainerRaw(secondHalf);
19
+ return { firstHalf, secondHalf };
20
+ }
21
+ function buildHalf(rows, sourceMeta) {
22
+ if (rows.length === 0)
23
+ return null;
24
+ const cloned = rows.map((row, idx) => ({
25
+ ...row,
26
+ metadata: { isHeader: idx === 0 },
27
+ children: row.children.map((cell) => ({ ...cell }))
28
+ }));
29
+ return {
30
+ kind: 'table',
31
+ leadingTrivia: '',
32
+ raw: '',
33
+ metadata: {
34
+ columnCount: sourceMeta.columnCount,
35
+ alignments: sourceMeta.alignments.slice()
36
+ },
37
+ children: cloned
38
+ };
39
+ }
@@ -0,0 +1,61 @@
1
+ import type { UndoEntryMode } from '../action-contracts';
2
+ import type { AnyBlockKind, CstNode, Document } from '../core/nodes';
3
+ import type { PresentationMode } from '../presentation-mode';
4
+ import type { InlineResolverRef } from '../schema/inline-construct-policy';
5
+ import type { GrammarView } from '../schema/block-openers';
6
+ import type { PasteCommitCoordinator } from './paste/paste-deps';
7
+ export interface PasteRange {
8
+ start: number;
9
+ end: number;
10
+ }
11
+ /**
12
+ * What the join-seam cleanup needs from the caller: the paste's delete half is a join, and in
13
+ * live the runs it strands are bytes the reader never saw. Absent leaves the cut byte-literal,
14
+ * which is every non-live mode's answer anyway.
15
+ */
16
+ export interface PasteSeam {
17
+ presentationMode: PresentationMode | undefined;
18
+ linkRef: InlineResolverRef | undefined;
19
+ }
20
+ export interface InlinePasteResult {
21
+ /** New raw for the target node (including trailing line ending). */
22
+ newRaw: string;
23
+ caretOffset: number;
24
+ }
25
+ export interface StructuralPasteResult {
26
+ replacement: CstNode[];
27
+ focusReplacementIndex: number;
28
+ focusOffset: number;
29
+ }
30
+ export interface ScopedStructuralPasteInput {
31
+ doc: Document;
32
+ targetPath: number[];
33
+ /** Pasted blocks, blank-line-materialized. */
34
+ blocks: CstNode[];
35
+ controller: PasteCommitCoordinator;
36
+ undoEntry: UndoEntryMode;
37
+ /** The instance grammar the splice owes its bodyWrite escape reparse. Required-nullable, so
38
+ * a new scoped surface cannot silently drop it; `undefined` = global. */
39
+ grammar: GrammarView | undefined;
40
+ }
41
+ export interface PasteSurface {
42
+ kind: AnyBlockKind;
43
+ /**
44
+ * This surface holds text, never blocks (a table cell), so a blank block at the clipboard's
45
+ * edge is the copy's packaging: it neither picks the route nor lands in a structural splice.
46
+ */
47
+ blankEdgesArePackaging?: boolean;
48
+ /** Splice `text` into `node` at `offset` (optionally pre-deleting a range). Pure. */
49
+ onInlinePaste?(node: CstNode, offset: number, text: string, preDelete?: PasteRange, seam?: PasteSeam): InlinePasteResult;
50
+ /** Splice CST blocks at the target. Pure data transform. */
51
+ onStructuralPaste?(node: CstNode, offset: number, blocks: CstNode[], preDelete?: PasteRange, seam?: PasteSeam): StructuralPasteResult;
52
+ /**
53
+ * Structural paste whose splice scope is an ancestor (a tableCell splices at the
54
+ * table's parent). The hook owns the whole mutation; dispatch does nothing afterward.
55
+ */
56
+ onScopedStructuralPaste?(input: ScopedStructuralPasteInput): Promise<void>;
57
+ }
58
+ export declare function registerPasteSurface(surface: PasteSurface): void;
59
+ export declare function getPasteSurface(kind: AnyBlockKind): PasteSurface | undefined;
60
+ export declare function __resetPasteSurfacesForTests(): void;
61
+ export declare function __removePasteSurfaceForTests(kind: AnyBlockKind): void;
@@ -0,0 +1,15 @@
1
+ import { registerOnce } from '../schema/register-once';
2
+ // ── Registry ───────────────────────────────────────────────────────────────
3
+ const surfaces = new Map();
4
+ export function registerPasteSurface(surface) {
5
+ registerOnce(surfaces.has(surface.kind), () => surfaces.set(surface.kind, surface), `registerPasteSurface: "${surface.kind}" is already registered. Paste surfaces are register-once.`);
6
+ }
7
+ export function getPasteSurface(kind) {
8
+ return surfaces.get(kind);
9
+ }
10
+ export function __resetPasteSurfacesForTests() {
11
+ surfaces.clear();
12
+ }
13
+ export function __removePasteSurfaceForTests(kind) {
14
+ surfaces.delete(kind);
15
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Path-addressed child splices for the range-delete ceremony. Both route through
3
+ * `spliceChildrenSettled` (`node-ops.ts`): they address containers at arbitrary depth, which is
4
+ * exactly where a desynced `childIds` or an unsettled separator becomes permanent. `sharing` is
5
+ * REQUIRED, not optional: the settle writes the surviving neighbours' own bytes, so a door
6
+ * reached without it writes through a snapshot-shared node (G1.9). Callers unshare the PARENT
7
+ * spine themselves; `sharing` is what unshares the children the settle touches.
8
+ */
9
+ import type { CstNode, Document } from '../core/nodes';
10
+ import type { SharingState } from './sharing';
11
+ export declare function deleteAtPath(doc: Document, path: number[], sharing: SharingState): void;
12
+ export declare function replaceAtPath(doc: Document, path: number[], replacement: CstNode[], sharing: SharingState): void;
@@ -0,0 +1,20 @@
1
+ import { nodeAt, spliceChildrenSettled } from './node-ops';
2
+ export function deleteAtPath(doc, path, sharing) {
3
+ if (path.length === 0)
4
+ return;
5
+ const parent = nodeAt(doc, path.slice(0, -1));
6
+ if (!parent || !parent.children)
7
+ return;
8
+ const idx = path[path.length - 1];
9
+ if (idx < parent.children.length) {
10
+ spliceChildrenSettled(parent, idx, 1, [], sharing);
11
+ }
12
+ }
13
+ export function replaceAtPath(doc, path, replacement, sharing) {
14
+ if (path.length === 0)
15
+ return;
16
+ const parent = nodeAt(doc, path.slice(0, -1));
17
+ if (!parent || !parent.children)
18
+ return;
19
+ spliceChildrenSettled(parent, path[path.length - 1], 1, replacement, sharing);
20
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Resolve the reorderable unit a path points into: the nearest ancestor slot whose parent
3
+ * reorders its children among themselves. Membership is the parent's declared
4
+ * `reorderChildren` capability, never a kind name, so a plugin container opts in as the
5
+ * built-ins do. An opaque container is a hard boundary — reorder DECLINES there rather
6
+ * than walking past to the document and teleporting the container to a top-level index.
7
+ */
8
+ import type { Document } from '../core/nodes';
9
+ export interface ReorderUnit {
10
+ parentPath: number[];
11
+ index: number;
12
+ /** The root reorders structurally; a container reorders through its own commit scope. */
13
+ scope: 'document' | 'container';
14
+ /** The parent renumbers position-dependent child markers after the move (ordered list). */
15
+ renumberMarkers: boolean;
16
+ }
17
+ export declare function resolveReorderUnit(doc: Document, path: number[]): ReorderUnit | null;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Resolve the reorderable unit a path points into: the nearest ancestor slot whose parent
3
+ * reorders its children among themselves. Membership is the parent's declared
4
+ * `reorderChildren` capability, never a kind name, so a plugin container opts in as the
5
+ * built-ins do. An opaque container is a hard boundary — reorder DECLINES there rather
6
+ * than walking past to the document and teleporting the container to a top-level index.
7
+ */
8
+ import { tryGetBlockKindDescriptor } from '../schema/block-kind-descriptor';
9
+ import { nodeAt } from './node-ops';
10
+ export function resolveReorderUnit(doc, path) {
11
+ for (let depth = path.length; depth >= 1; depth--) {
12
+ const parentPath = path.slice(0, depth - 1);
13
+ // The root is identified structurally, never by kind: a plugin may mint 'document'
14
+ // as a block kind, and such a node is just another container.
15
+ if (parentPath.length === 0) {
16
+ return { parentPath, index: path[depth - 1], scope: 'document', renumberMarkers: false };
17
+ }
18
+ const parentKind = nodeAt(doc, parentPath)?.kind;
19
+ // `!== 'document'` narrows out the root's kind at the type level (nodeAt widens to
20
+ // include it); at runtime the root is already handled above.
21
+ if (parentKind && parentKind !== 'document') {
22
+ const descriptor = tryGetBlockKindDescriptor(parentKind);
23
+ const reorderChildren = descriptor?.reorderChildren;
24
+ if (reorderChildren) {
25
+ return {
26
+ parentPath,
27
+ index: path[depth - 1],
28
+ scope: 'container',
29
+ renumberMarkers: reorderChildren.renumberMarkers ?? false
30
+ };
31
+ }
32
+ if (descriptor?.containerContract === 'opaque')
33
+ return null;
34
+ }
35
+ }
36
+ return null;
37
+ }
@@ -0,0 +1,13 @@
1
+ import type { CstNode } from '../core/nodes';
2
+ import type { SharingState } from './sharing';
3
+ import { type SettledSplice } from './node-ops';
4
+ import type { StructuralChange } from './structural-change';
5
+ export declare function reorderChildren(children: CstNode[], from: number, to: number): StructuralChange;
6
+ /**
7
+ * Reorder children while keeping block separators positional. A separator is stored as the next
8
+ * child's `leadingTrivia` but read per slot, so it belongs to the position, not the node. Writing
9
+ * it is a byte write, so spanned children are unshared first (`unshare.ts`) and `children` must
10
+ * already be an owned array. The landing rides the result: a fold settling a seam the move
11
+ * invalidated can sit above the moved block.
12
+ */
13
+ export declare function reorderChildrenWithTrivia(children: CstNode[], from: number, to: number, sharing: SharingState): SettledSplice;