@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,106 @@
1
+ /**
2
+ * Publishing side of the ancestry settle (`tree-operations/unshare.ts`): a fold at a container's
3
+ * own slot splices its PARENT's children, a scope the commit's own change descriptor never
4
+ * covers, so that scope's ids and refs are resynced here instead.
5
+ */
6
+ import { applyStructuralChangeToIdsRefs } from '../tree-operations/structural-change';
7
+ import { spliceMany } from '../tree-operations/splice-many';
8
+ import { assignIds } from '../block-id';
9
+ import { getStateForNode } from '../reactivity/state-registry';
10
+ import { replaceRefs } from '../reactivity/publish-ref.svelte';
11
+ /**
12
+ * Resync every folded scope's ids/refs and return the unwind for them, which a commit rolling
13
+ * back runs beside its own registers.
14
+ */
15
+ export function publishAncestryFolds(deps, folds) {
16
+ const restores = [];
17
+ for (const fold of folds) {
18
+ restores.push(fold.owner ? publishContainerFold(deps, fold) : publishDocFold(deps, fold));
19
+ }
20
+ return () => {
21
+ for (let i = restores.length - 1; i >= 0; i--)
22
+ restores[i]();
23
+ };
24
+ }
25
+ /**
26
+ * The landing a fold owes the caret: the container's slot is always gone (the reparse re-mints
27
+ * every block in the folded window), so a door whose focus addressed it has nothing to land on.
28
+ * `scopePath` is the committing scope's own path, from which the fold's depth names the parent.
29
+ * The chain rebuilds innermost-first, so the LAST fold is the outermost one — the one whose slot
30
+ * swallowed the others, and the only landing still addressable after them all.
31
+ */
32
+ export function foldLandingFor(folds, scopePath) {
33
+ const fold = folds[folds.length - 1];
34
+ if (!fold)
35
+ return null;
36
+ return {
37
+ path: [...scopePath.slice(0, fold.depth), fold.landing.index],
38
+ offset: fold.landing.offset
39
+ };
40
+ }
41
+ /**
42
+ * A splice made outside the commit ceremony, published as the ceremony publishes the change its
43
+ * mutate returns. `owner` is the container whose children moved, or undefined for the document.
44
+ */
45
+ export function publishScopeFold(deps, owner, change) {
46
+ if (change.op === 'noop')
47
+ return;
48
+ if (owner)
49
+ publishContainerScope(owner, change);
50
+ else
51
+ publishDocScope(deps, change);
52
+ }
53
+ function publishDocScope(deps, change) {
54
+ const ids = [...deps.blockIds];
55
+ const refs = [...deps.blockRefs];
56
+ applyStructuralChangeToIdsRefs(change, ids, refs);
57
+ deps.setBlockIds(ids);
58
+ deps.setBlockRefs(refs);
59
+ }
60
+ /**
61
+ * Ids live on the owner node, which is what an unmounted container's BlockListState reads back;
62
+ * refs live on the state and only exist while the scope is mounted.
63
+ */
64
+ function publishContainerScope(owner, change) {
65
+ const state = getStateForNode(owner);
66
+ // A container that never mounted has no ids to carry across, and this runs AFTER the fold —
67
+ // so one fresh id per surviving child is the whole answer, where a descriptor over a window
68
+ // the seeded array never held would mis-shape it (G1.36).
69
+ if (!owner.childIds) {
70
+ owner.childIds = assignIds(owner.children ?? []);
71
+ return;
72
+ }
73
+ const ids = [...owner.childIds];
74
+ const refs = state ? [...state.innerBlockRefs] : [];
75
+ applyStructuralChangeToIdsRefs(change, ids, refs);
76
+ owner.childIds = ids;
77
+ if (state)
78
+ replaceRefs(state.innerBlockRefs, refs);
79
+ }
80
+ function publishDocFold(deps, fold) {
81
+ const savedIds = [...deps.blockIds];
82
+ const savedRefs = [...deps.blockRefs];
83
+ publishScopeFold(deps, undefined, fold.change);
84
+ return () => {
85
+ deps.setBlockIds(savedIds);
86
+ deps.setBlockRefs(savedRefs);
87
+ restoreChildren(fold);
88
+ };
89
+ }
90
+ function publishContainerFold(deps, fold) {
91
+ const owner = fold.owner;
92
+ const state = getStateForNode(owner);
93
+ const savedIds = owner.childIds;
94
+ const savedRefs = state ? [...state.innerBlockRefs] : [];
95
+ publishScopeFold(deps, owner, fold.change);
96
+ return () => {
97
+ owner.childIds = savedIds;
98
+ if (state)
99
+ replaceRefs(state.innerBlockRefs, savedRefs);
100
+ restoreChildren(fold);
101
+ };
102
+ }
103
+ /** The whole pre-splice array: a fold re-mints plural slots, so no narrower register covers it. */
104
+ function restoreChildren(fold) {
105
+ spliceMany(fold.siblings, 0, fold.siblings.length, fold.before);
106
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Scope-parameterized structural-edit core shared by the top-level and container
3
+ * BlockEditActions factories. Each method is the interior body only — no edge guards,
4
+ * no upward delegation, no unwrap dispatch; the factories add those.
5
+ */
6
+ import type { CstNode } from '../core/nodes';
7
+ import type { CommitAfterTick, UndoEntryMode } from '../action-contracts';
8
+ import type { CommitScope } from './block-edit-scope';
9
+ export interface BlockEditCore {
10
+ split(i: number, offset: number): Promise<void>;
11
+ descendToBody(i: number): Promise<void>;
12
+ insertParagraph(i: number, text: string): Promise<void>;
13
+ mergeWithPreviousInterior(i: number): Promise<void>;
14
+ mergeWithNextInterior(i: number): Promise<void>;
15
+ deleteInterior(i: number): Promise<void>;
16
+ updateBlockMetadata(i: number, metadata: Record<string, unknown>, options?: {
17
+ undoEntry?: UndoEntryMode;
18
+ afterTick?: CommitAfterTick;
19
+ }): Promise<void>;
20
+ replaceBlock(i: number, replacement: CstNode[], focus?: {
21
+ replacementIndex: number;
22
+ offset: number;
23
+ path?: number[];
24
+ }, options?: {
25
+ undoEntry?: UndoEntryMode;
26
+ snapshotOffset?: number;
27
+ }): Promise<void>;
28
+ }
29
+ export declare function createBlockEditCore(scope: CommitScope): BlockEditCore;
@@ -0,0 +1,277 @@
1
+ /**
2
+ * Scope-parameterized structural-edit core shared by the top-level and container
3
+ * BlockEditActions factories. Each method is the interior body only — no edge guards,
4
+ * no upward delegation, no unwrap dispatch; the factories add those.
5
+ */
6
+ import { CURSOR_END, CURSOR_EXACT_START, CURSOR_START } from '../block-component';
7
+ import { displayLength, trailingLineEnding } from '../core/lines';
8
+ import { splitNode as performSplit, assertSplitLanding, mergeWithNext as performMergeNext, mergeIntoPrevDeepLeaf, deleteNode as performDelete, ensureEditableContainers, normalizeReplacementTrivia, rebuildUnsharedChain, restoreSeparatorOnFill, dropDoubledSeparator, emptyParagraph, paragraphNode } from '../tree-operations';
9
+ import { replacePreservingFirst, stampStructuralChange } from '../tree-operations/structural-change';
10
+ import { spliceMany } from '../tree-operations/splice-many';
11
+ import { isMergeEligible, isBlockEditable } from '../schema/merge-rules';
12
+ import { getBlockKindDescriptor } from '../schema/block-kind-descriptor';
13
+ import { mergedElseFocusNext, mergedElseFocusPrevious } from './merge-fallback';
14
+ /** The byte/settle sinks' owner answer, read live off the commit's owned view. */
15
+ const bodyParentOf = (view) => ({
16
+ children: view.children,
17
+ ownerKind: view.ownerKind,
18
+ owner: view.owner
19
+ });
20
+ /** The ineligible-merge cascade both directions share; `dir` names the neighbour side. */
21
+ async function handleIneligibleNeighbor(scope, i, dir) {
22
+ const neighbor = i + dir;
23
+ const neighborKind = scope.children()[neighbor].kind;
24
+ // A whole-block-focus neighbor is focused, not deleted: press one highlights it, a second
25
+ // press deletes it. Ordered first so a not-mergeable-but-editable kind never dead-ends here.
26
+ if (getBlockKindDescriptor(neighborKind).blockFocus === 'whole-block') {
27
+ scope.refAt(neighbor)?.focus(0);
28
+ return;
29
+ }
30
+ if (isBlockEditable(neighborKind)) {
31
+ scope.refAt(neighbor)?.focus(dir < 0 ? CURSOR_END : CURSOR_START);
32
+ return;
33
+ }
34
+ await scope.commit({
35
+ snapshot: { index: i, offset: dir < 0 ? 0 : CURSOR_END },
36
+ eventTarget: neighbor,
37
+ op: { kind: 'delete' },
38
+ mutate: (view) => performDelete(bodyParentOf(view), neighbor, view.sharing),
39
+ afterTick: () => scope.refAt(dir < 0 ? neighbor : i)?.focus(dir < 0 ? CURSOR_START : CURSOR_END),
40
+ discardIfNoop: true
41
+ });
42
+ }
43
+ export function createBlockEditCore(scope) {
44
+ const core = {
45
+ async split(i, offset) {
46
+ // Offset 0 is not special: empty block above, content below, caret on the content. The
47
+ // landing is the primitive's answer, not `i + 1` — a plural first half pushes the
48
+ // second half further down, and G1.34 holds the seat to it.
49
+ let secondHalfIndex = i + 1;
50
+ let split;
51
+ await scope.commit({
52
+ snapshot: { index: i, offset },
53
+ eventTarget: i,
54
+ op: { kind: 'split', detail: { at: offset } },
55
+ mutate: (view) => {
56
+ split = performSplit(bodyParentOf(view), i, offset, view.sharing, view.getPresentationMode?.(), view.linkRef);
57
+ secondHalfIndex = split.secondHalfIndex;
58
+ stampStructuralChange(view.children, split.change, view.sharing);
59
+ return split.change;
60
+ },
61
+ afterTick: () => {
62
+ if (split)
63
+ assertSplitLanding(split, secondHalfIndex);
64
+ scope.refAt(secondHalfIndex)?.focus(CURSOR_EXACT_START);
65
+ },
66
+ // A single-line/chrome block splits to nothing, so discard rather than
67
+ // mint a dead entry on a rebound Enter.
68
+ discardIfNoop: true
69
+ });
70
+ },
71
+ async descendToBody(i) {
72
+ const children = scope.children();
73
+ // A body child already exists: pure focus move, no undo entry. An absent ref
74
+ // (windowed-out, or a collapsed body) leaves the caret put — load-bearing.
75
+ if (i + 1 < children.length) {
76
+ scope.refAt(i + 1)?.focus(CURSOR_START);
77
+ return;
78
+ }
79
+ await scope.commit({
80
+ snapshot: { index: i, offset: 0 },
81
+ eventTarget: i + 1,
82
+ op: { kind: 'appendBlock' },
83
+ mutate: (view) => {
84
+ // The synthesized body line IS a line ending, so it takes the chrome
85
+ // sibling's (G4.20); a defaulted LF strands one in a CRLF container.
86
+ const body = emptyParagraph('', trailingLineEnding(view.children[i]?.raw ?? '\n'));
87
+ view.children.splice(i + 1, 0, body);
88
+ const change = { op: 'insert', at: i + 1, count: 1 };
89
+ stampStructuralChange(view.children, change, view.sharing);
90
+ return change;
91
+ },
92
+ afterTick: () => scope.refAt(i + 1)?.focus(0)
93
+ });
94
+ },
95
+ /**
96
+ * The between-blocks caret's mint (`selection/gap-caret.ts`). `i` is a BOUNDARY index,
97
+ * so `children.length` appends; the caret lands after the text the paragraph carries.
98
+ */
99
+ async insertParagraph(i, text) {
100
+ const children = scope.children();
101
+ // Both the separator and the paragraph's own bytes ARE line endings, so both take a
102
+ // real neighbour's (G4.20); a boundary always has one on at least one side.
103
+ const lineEnding = trailingLineEnding((children[i - 1] ?? children[i])?.raw ?? '\n');
104
+ await scope.commit({
105
+ snapshot: { index: i, offset: 0 },
106
+ eventTarget: i,
107
+ op: { kind: 'insertBlock' },
108
+ mutate: (view) => {
109
+ // Only the scope's head block owns no separator; anywhere else the mint owes
110
+ // its predecessor a blank line, whatever the displaced sibling carried.
111
+ const trivia = i > 0 ? lineEnding : (view.children[0]?.leadingTrivia ?? '');
112
+ view.children.splice(i, 0, paragraphNode(trivia, text, lineEnding));
113
+ const change = { op: 'insert', at: i, count: 1 };
114
+ stampStructuralChange(view.children, change, view.sharing);
115
+ // A gap-caret paragraph is a block of its own on BOTH sides, which the splice
116
+ // settle cannot infer: the displaced sibling is a body block now, not the head,
117
+ // so it owes its own separator, and an EMPTY mint is a blank line itself.
118
+ const parent = bodyParentOf(view);
119
+ restoreSeparatorOnFill(parent, i + 1, view.sharing);
120
+ dropDoubledSeparator(parent, i, view.sharing);
121
+ return change;
122
+ },
123
+ afterTick: () => scope.refAt(i)?.focus(displayLength(text))
124
+ });
125
+ },
126
+ async mergeWithPreviousInterior(i) {
127
+ const children = scope.children();
128
+ const prevKind = children[i - 1].kind;
129
+ const currKind = children[i].kind;
130
+ if (!isMergeEligible(prevKind, currKind)) {
131
+ await handleIneligibleNeighbor(scope, i, -1);
132
+ return;
133
+ }
134
+ let mergeResult = null;
135
+ await scope.commit({
136
+ snapshot: { index: i, offset: 0 },
137
+ eventTarget: i,
138
+ op: { kind: 'merge', detail: { direction: 'prev' } },
139
+ mutate: (view) => {
140
+ mergeResult = mergeIntoPrevDeepLeaf(bodyParentOf(view), i, view.sharing, view.getPresentationMode?.(), view.linkRef, view.grammar);
141
+ return mergeResult?.change ?? { op: 'noop' };
142
+ },
143
+ afterTick: () => {
144
+ const ref = scope.refAt(i - 1);
145
+ const merged = mergedElseFocusPrevious(mergeResult, ref);
146
+ if (!merged)
147
+ return;
148
+ if (merged.targetPath.length === 0)
149
+ ref?.focus(merged.joinOffset);
150
+ else
151
+ ref?.focusByPath?.(merged.targetPath, merged.joinOffset);
152
+ },
153
+ // A no-target merge changes nothing; discard the entry but keep afterTick,
154
+ // which still lands the caret.
155
+ discardIfNoop: true
156
+ });
157
+ },
158
+ async mergeWithNextInterior(i) {
159
+ const children = scope.children();
160
+ const currKind = children[i].kind;
161
+ const nextKind = children[i + 1].kind;
162
+ if (!isMergeEligible(currKind, nextKind)) {
163
+ await handleIneligibleNeighbor(scope, i, 1);
164
+ return;
165
+ }
166
+ // The landing is the primitive's answer, not `displayLength` read ahead of it: a live
167
+ // seam cleanup drops runs on the first block's side and moves where the two met.
168
+ let merged = { change: { op: 'noop' }, joinOffset: 0 };
169
+ await scope.commit({
170
+ snapshot: { index: i, offset: CURSOR_END },
171
+ eventTarget: i,
172
+ op: { kind: 'merge', detail: { direction: 'next' } },
173
+ mutate: (view) => {
174
+ merged = performMergeNext({ children: view.children }, i, view.getPresentationMode?.(), view.linkRef);
175
+ stampStructuralChange(view.children, merged.change, view.sharing);
176
+ return merged.change;
177
+ },
178
+ afterTick: () => {
179
+ if (mergedElseFocusNext(merged.change, scope.refAt(i + 1))) {
180
+ scope.refAt(i)?.focus(merged.joinOffset);
181
+ }
182
+ },
183
+ discardIfNoop: true
184
+ });
185
+ },
186
+ async deleteInterior(i) {
187
+ await scope.commit({
188
+ snapshot: { index: i, offset: 0 },
189
+ eventTarget: i,
190
+ op: { kind: 'delete' },
191
+ mutate: (view) => performDelete(bodyParentOf(view), i, view.sharing),
192
+ afterTick: () => {
193
+ const focusIdx = Math.min(i, scope.children().length - 1);
194
+ if (focusIdx >= 0)
195
+ scope.refAt(focusIdx)?.focus(CURSOR_START);
196
+ },
197
+ discardIfNoop: true
198
+ });
199
+ },
200
+ async updateBlockMetadata(i, metadata, options) {
201
+ const children = scope.children();
202
+ if (i < 0 || i >= children.length)
203
+ return;
204
+ const fields = Object.keys(metadata);
205
+ if (fields.length === 0)
206
+ return;
207
+ // `mutate` returns noop, so the ceremony's dev oracle can't infer the resynced
208
+ // node. The owned copy exists only after unshareChild, hence a stable array
209
+ // the ceremony reads post-mutate.
210
+ const touchedNodes = [];
211
+ await scope.commit({
212
+ snapshot: options?.undoEntry === 'join' ? 'skip' : { index: i, offset: 0 },
213
+ eventTarget: i,
214
+ op: { kind: 'metadataUpdate', detail: { fields } },
215
+ touchedNodes,
216
+ mutate: (view) => {
217
+ const node = view.unshareChild(i);
218
+ node.metadata = { ...(node.metadata ?? {}), ...metadata };
219
+ // Through the chain funnel, not a bare rebuild: metadata can feed the
220
+ // container's OPENER line (an alert's type), so the rebuilt bytes may open
221
+ // as a different kind. The document branch runs no chain rebuild of its
222
+ // own, so this is the only seam a top-level metadata write crosses.
223
+ // `folds: null` — the rebuild root is the commit's own scope array, whose
224
+ // descriptor this mutate has already fixed as `noop`.
225
+ const [reclassified] = rebuildUnsharedChain({ children: view.children }, [node], view.sharing, null, view.grammar);
226
+ touchedNodes.push(reclassified?.replacement ?? node);
227
+ return { op: 'noop' };
228
+ },
229
+ afterTick: options?.afterTick
230
+ });
231
+ },
232
+ async replaceBlock(i, replacement, focus, options) {
233
+ const children = scope.children();
234
+ if (i < 0 || i >= children.length)
235
+ return;
236
+ // `snapshotOffset` is where the caret WAS, which undo restores; `focus.offset` is where
237
+ // it lands. They part company when the replacement seats it inside a new structure.
238
+ const snapshot = options?.undoEntry === 'join'
239
+ ? 'skip'
240
+ : { index: i, offset: options?.snapshotOffset ?? focus?.offset ?? 0 };
241
+ await scope.commit({
242
+ snapshot,
243
+ eventTarget: i,
244
+ // Empty-replace op-kind is per-scope: top-level emits `replaceBlock{count:0}`,
245
+ // container collapses to `delete`. The structural change is `delete` either way.
246
+ op: replacement.length === 0
247
+ ? scope.collapseEmptyReplaceToDelete
248
+ ? { kind: 'delete' }
249
+ : { kind: 'replaceBlock', detail: { count: 0 } }
250
+ : { kind: 'replaceBlock', detail: { count: replacement.length } },
251
+ mutate: (view) => {
252
+ if (replacement.length === 0) {
253
+ view.children.splice(i, 1);
254
+ return { op: 'delete', at: i, count: 1 };
255
+ }
256
+ const normalized = normalizeReplacementTrivia(view.children[i], replacement);
257
+ for (const node of normalized)
258
+ ensureEditableContainers(node);
259
+ spliceMany(view.children, i, 1, normalized);
260
+ const change = replacePreservingFirst(i, 1, normalized.length);
261
+ stampStructuralChange(view.children, change, view.sharing);
262
+ return change;
263
+ },
264
+ afterTick: () => {
265
+ if (!focus || replacement.length === 0)
266
+ return;
267
+ const ref = scope.refAt(i + focus.replacementIndex);
268
+ if (focus.path?.length)
269
+ ref?.focusByPath?.(focus.path, focus.offset);
270
+ else
271
+ ref?.focus(focus.offset);
272
+ }
273
+ });
274
+ }
275
+ };
276
+ return core;
277
+ }
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Per-level adapter for the shared block-edit core: commit ceremony, child addressing, refs and
3
+ * unshare, for a top-level edit vs a container one. Both factories are the SINGLE mint point for
4
+ * the commit args' doc-absolute paths, as `DocPath` — the core hands over local indices only.
5
+ * G1.16 stays the runtime belt for the JS callers types don't bind.
6
+ */
7
+ import type { OpDescriptor } from '../schema/operations';
8
+ import type { CommitAfterTick, ContainerScope } from '../action-contracts';
9
+ import type { AnyBlockKind, CstNode } from '../core/nodes';
10
+ import type { NodeView } from '../core/node-views';
11
+ import type { StructuralChange } from '../tree-operations/structural-change';
12
+ import type { SharingState } from '../tree-operations/sharing';
13
+ import type { GrammarView } from '../schema/block-openers';
14
+ import type { InlineResolverRef } from '../schema/inline-construct-policy';
15
+ import type { PresentationModeGetter } from '../editor-keys';
16
+ import type { BlockComponent } from '../block-component';
17
+ import type { EditorActionsDeps, UndoController } from './deps';
18
+ import type { NestedActionsDeps } from './nested/nested-actions';
19
+ import type { BlockListState } from '../reactivity/block-list-state.svelte';
20
+ /** Owned mutation view the core's `mutate` writes through — uniform across levels. */
21
+ export interface MutationView {
22
+ children: CstNode[];
23
+ sharing: SharingState;
24
+ /** The container these children belong to, for mutations whose bytes must satisfy
25
+ * its grammar (`bodyWrite`). Absent at the document root. */
26
+ ownerKind?: AnyBlockKind;
27
+ /** The container NODE itself, for settles that write its wrap slots. Nullable
28
+ * rather than optional so each adapter answers; `undefined` is the document root. */
29
+ owner: CstNode | undefined;
30
+ /** The instance's block grammar, for mutations that re-parse. Absent = the global grammar. */
31
+ grammar?: GrammarView;
32
+ /** Live EFFECTIVE mode, for mutations whose bytes depend on what the mode paints. Nullable
33
+ * rather than optional so each adapter answers; `undefined` reads as not-live. */
34
+ getPresentationMode: PresentationModeGetter | undefined;
35
+ /** The instance's link-reference resolver, so a rewrite parses the reference forms the render
36
+ * path drew. Nullable for the same reason as the mode; `undefined` reads them as brackets. */
37
+ linkRef: InlineResolverRef | undefined;
38
+ /** Copy-out-of-sharing the child at `i` before an in-place write; returns the owned node. */
39
+ unshareChild(i: number): CstNode;
40
+ }
41
+ export interface ScopeCommitArgs {
42
+ /** Snapshot coordinate in THIS scope's local index space, or 'skip' to join a caller's entry. */
43
+ snapshot: {
44
+ index: number;
45
+ offset: number;
46
+ } | 'skip';
47
+ /** Local index the edit event targets; the factory prefixes the scope's absolute path. */
48
+ eventTarget: number;
49
+ op: OpDescriptor;
50
+ mutate: (view: MutationView) => StructuralChange;
51
+ afterTick?: CommitAfterTick;
52
+ /**
53
+ * Leaves the dev staleness oracle checks when `mutate` returns `noop`. The owned
54
+ * copy exists only after `mutate` runs, hence a stable array. Top-level only.
55
+ */
56
+ touchedNodes?: CstNode[];
57
+ /**
58
+ * A structural op that can legitimately no-op, so the ceremony discards the snapshot
59
+ * rather than mint a dead entry. Never on content/metadata commits — their `noop`
60
+ * still carries a byte change (action-contracts `DiscardIfNoop`).
61
+ */
62
+ discardIfNoop?: boolean;
63
+ }
64
+ export interface CommitScope {
65
+ /** Read accessor — mutation happens through the commit's owned view, never this. */
66
+ children(): readonly NodeView[];
67
+ refAt(i: number): BlockComponent | undefined;
68
+ /** Empty replaceBlock emits `delete` (container) vs `replaceBlock{count:0}` (top-level). */
69
+ collapseEmptyReplaceToDelete: boolean;
70
+ commit(args: ScopeCommitArgs): Promise<void>;
71
+ }
72
+ /** The byte/settle sinks' owner answer for a container commit's own scope — {@link MutationView}'s twin. */
73
+ export declare const scopeParentOf: (scope: ContainerScope) => {
74
+ children: CstNode[];
75
+ ownerKind: "heading" | "setextHeading" | "paragraph" | "fencedCode" | "thematicBreak" | "indentedCode" | "htmlBlock" | "linkReferenceDefinition" | "tableCell" | "unrecognized" | "blockquote" | "list" | "listItem" | "table" | "tableRow" | import("../plugin").PluginBlockKind;
76
+ owner: CstNode;
77
+ };
78
+ export declare function createTopLevelScope(deps: EditorActionsDeps, controller: UndoController): CommitScope;
79
+ export declare function createContainerScope(state: BlockListState, deps: NestedActionsDeps): CommitScope;
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Per-level adapter for the shared block-edit core: commit ceremony, child addressing, refs and
3
+ * unshare, for a top-level edit vs a container one. Both factories are the SINGLE mint point for
4
+ * the commit args' doc-absolute paths, as `DocPath` — the core hands over local indices only.
5
+ * G1.16 stays the runtime belt for the JS callers types don't bind.
6
+ */
7
+ import { ensureUnsharedPath, ensureUnsharedChild } from '../tree-operations';
8
+ import { asDocPath } from '../selection/path-math';
9
+ import { extendDocPath } from '../cursor/coordinate-spaces';
10
+ /** The byte/settle sinks' owner answer for a container commit's own scope — {@link MutationView}'s twin. */
11
+ export const scopeParentOf = (scope) => ({
12
+ children: scope.children,
13
+ ownerKind: scope.node.kind,
14
+ owner: scope.node
15
+ });
16
+ // ── Top-level adapter ────────────────────────────────────────────────────────
17
+ export function createTopLevelScope(deps, controller) {
18
+ return {
19
+ children: () => deps.doc.children,
20
+ refAt: (i) => deps.blockRefs[i],
21
+ collapseEmptyReplaceToDelete: false,
22
+ commit({ snapshot, eventTarget, op, mutate, afterTick, touchedNodes, discardIfNoop }) {
23
+ return controller.commitStructural({
24
+ snapshot: snapshot === 'skip'
25
+ ? 'skip'
26
+ : { path: asDocPath([snapshot.index]), offset: snapshot.offset },
27
+ mutate: (children) => mutate({
28
+ children,
29
+ sharing: deps.sharing,
30
+ owner: undefined,
31
+ grammar: deps.grammar,
32
+ getPresentationMode: deps.getPresentationMode,
33
+ linkRef: deps.linkRef,
34
+ unshareChild: (i) => ensureUnsharedPath({ children }, [i], deps.sharing)[0]
35
+ }),
36
+ op: { ...op, eventPath: asDocPath([eventTarget]) },
37
+ afterTick,
38
+ touchedNodes,
39
+ discardIfNoop
40
+ });
41
+ }
42
+ };
43
+ }
44
+ // ── Container adapter ────────────────────────────────────────────────────────
45
+ export function createContainerScope(state, deps) {
46
+ return {
47
+ // A fold at this container's own slot detaches it (`tree-operations/unshare.ts`), so a
48
+ // post-commit read can find the scope gone rather than merely empty.
49
+ children: () => deps.node?.children ?? [],
50
+ refAt: (i) => state.innerBlockRefs[i],
51
+ collapseEmptyReplaceToDelete: true,
52
+ commit({ snapshot, eventTarget, op, mutate, afterTick, discardIfNoop }) {
53
+ return deps.parent.containerEdit.commitContainer({
54
+ containerNode: deps.node,
55
+ path: deps.path,
56
+ state,
57
+ snapshot: snapshot === 'skip'
58
+ ? 'skip'
59
+ : { path: extendDocPath(deps.path, snapshot.index), offset: snapshot.offset },
60
+ mutate: (scope) => mutate({
61
+ children: scope.children,
62
+ sharing: scope.sharing,
63
+ ownerKind: scope.node.kind,
64
+ owner: scope.node,
65
+ grammar: deps.grammar,
66
+ getPresentationMode: deps.getPresentationMode,
67
+ linkRef: deps.linkRef,
68
+ unshareChild: (i) => ensureUnsharedChild(scope.node, i, scope.sharing)
69
+ }),
70
+ op: { ...op, eventPath: extendDocPath(deps.path, eventTarget) },
71
+ afterTick,
72
+ discardIfNoop
73
+ });
74
+ }
75
+ };
76
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Top-level BlockEditActions factory. Structural mutations route through the shared
3
+ * `block-edit-core` against a top-level `CommitScope`; this factory adds the edge
4
+ * guards and the one per-level body the core can't share, `updateBlockContent`.
5
+ */
6
+ import type { BlockEditActions } from '../action-contracts';
7
+ import type { EditorActionsDeps, UndoController } from './deps';
8
+ export declare function createBlockEditActions(deps: EditorActionsDeps, controller: UndoController): BlockEditActions;