@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,301 @@
1
+ /**
2
+ * Every action interface a block component invokes upward through Svelte context, plus
3
+ * the commit vocabulary those calls are expressed in.
4
+ */
5
+ import type { CstNode, TableAlignment } from './core/nodes';
6
+ import type { NodeView } from './core/node-views';
7
+ import type { StructuralChange } from './tree-operations/structural-change';
8
+ import type { TrackedPosition } from './tree-operations/node-ops';
9
+ import type { SharingState } from './tree-operations/sharing';
10
+ import type { BlockComponent, FocusPosition } from './block-component';
11
+ import type { ScopedOpDescriptor } from './schema/operations';
12
+ import type { DocPath } from './selection/path-math';
13
+ /**
14
+ * Caret-restore coordinate stored with a commit's undo snapshot: `path` is the `DocPath`
15
+ * dialect and must resolve in the pre-mutation tree; `'skip'` joins the caller's
16
+ * already-pushed entry. Minted by the scope factories (`block-edit-scope.ts`) or the
17
+ * `path-math` helpers, never composed at a call site.
18
+ */
19
+ export type CommitSnapshotArg = {
20
+ path: DocPath;
21
+ offset: number;
22
+ } | 'skip';
23
+ /**
24
+ * Who owns the undo entry: `'own'` (the default) pushes one, `'join'` means the caller
25
+ * already pushed the entry covering this composite operation and this must not add one.
26
+ */
27
+ export type UndoEntryMode = 'own' | 'join';
28
+ /**
29
+ * Opt-in for structural commits that can legitimately no-op. The ceremony then discards
30
+ * the pre-captured snapshot: no undo entry, no edit event, no publish (`afterTick` still
31
+ * runs — caret placement is a view concern). NOT for content/metadata commits, whose
32
+ * `noop` StructuralChange means "structure held, bytes changed" and MUST still publish.
33
+ */
34
+ export type DiscardIfNoop = boolean;
35
+ /**
36
+ * Post-tick view callback — where a commit lands its caret. Awaited, so a landing that
37
+ * must first reveal an off-window target (VR-12) is expressible here; the reveal is
38
+ * bounded (VR-5), so awaiting cannot hang. Returning nothing opts out of the wait.
39
+ */
40
+ export type CommitAfterTick = () => void | Promise<void>;
41
+ export interface BlockEditActions {
42
+ splitBlock(blockIndex: number, offset: number): void | Promise<void>;
43
+ /**
44
+ * Focus the block after `blockIndex` in this scope, minting an empty paragraph when
45
+ * it is the last child. An off-window next block leaves the caret put, key consumed.
46
+ */
47
+ descendToBody(blockIndex: number): void | Promise<void>;
48
+ /**
49
+ * @internal Mint a paragraph carrying `text` at a BOUNDARY of this scope, caret after
50
+ * the text. `boundaryIndex === children.length` appends. The between-blocks caret's
51
+ * insertion door (`selection/gap-caret.ts`).
52
+ */
53
+ insertParagraph(boundaryIndex: number, text: string): void | Promise<void>;
54
+ mergeWithPrevious(blockIndex: number): void | Promise<void>;
55
+ mergeWithNext(blockIndex: number): void | Promise<void>;
56
+ deleteBlock(blockIndex: number): void | Promise<void>;
57
+ /**
58
+ * `preEditOffset` is the undo snapshot's cursor anchor; `postEditFocusOffset` is where
59
+ * the caret lands when a kind change remounts the block (typing `# ` on a paragraph),
60
+ * defaulting to `preEditOffset`.
61
+ */
62
+ updateBlockContent(blockIndex: number, text: string, preEditOffset?: number, postEditFocusOffset?: number): void | Promise<void>;
63
+ /**
64
+ * Where a caret at `offset` lands once this scope has committed `text` — the image of
65
+ * a container's `bodyWrite` rewrite, so a surface whose committed bytes differ from
66
+ * its DOM seats the caret on the bytes. Identity when the scope rewrites nothing.
67
+ */
68
+ mapCommittedOffset?(text: string, offset: number): number;
69
+ /**
70
+ * Mutate block metadata without touching raw — for state expressed as metadata (task
71
+ * checkboxes), NOT raw-driven metadata like heading level (use updateBlockContent).
72
+ * The patch is shallow-merged; an empty patch is a no-op.
73
+ */
74
+ updateBlockMetadata(blockIndex: number, metadata: Record<string, unknown>, options?: {
75
+ undoEntry?: UndoEntryMode;
76
+ afterTick?: CommitAfterTick;
77
+ }): void | Promise<void>;
78
+ /**
79
+ * Replace the block at `blockIndex` with zero or more new blocks.
80
+ * `replacement.length === 0` is equivalent to deleteBlock. `focus.path` addresses a caret
81
+ * landing inside the replacement's own structure; `snapshotOffset` is where the caret was,
82
+ * for the undo entry, and defaults to where it lands.
83
+ */
84
+ replaceBlock(blockIndex: number, replacement: CstNode[], focus?: {
85
+ replacementIndex: number;
86
+ offset: number;
87
+ path?: number[];
88
+ }, options?: {
89
+ undoEntry?: UndoEntryMode;
90
+ snapshotOffset?: number;
91
+ }): void | Promise<void>;
92
+ }
93
+ export interface MoveFocusOptions {
94
+ /**
95
+ * When false, a move past the true document end no-ops instead of appending a trailing
96
+ * paragraph; only the root append is suppressed, sibling moves and upward delegation
97
+ * are unaffected. Defaults to true (Enter/split rely on the append).
98
+ */
99
+ append?: boolean;
100
+ /** @internal Set by a move that LEAVES a gap caret, so the boundary it just left
101
+ * cannot re-capture it. */
102
+ skipGapStop?: boolean;
103
+ }
104
+ export interface FocusActions {
105
+ moveFocus(blockIndex: number, position: FocusPosition, options?: MoveFocusOptions): void | Promise<void>;
106
+ /** Mount an off-window top-level block before placing a caret in it; see EditorActionsDeps.revealPath. */
107
+ revealPath(path: number[]): Promise<BlockComponent | null>;
108
+ /**
109
+ * @internal Park the caret at an eligible between-blocks boundary, reporting whether it
110
+ * did. Required, not optional: a dropped forward makes every gap arrival below it
111
+ * silently vanish.
112
+ */
113
+ tryGapStop(parentPath: number[], boundaryIndex: number): boolean;
114
+ }
115
+ export interface HistoryActions {
116
+ requestUndo(): void | Promise<void>;
117
+ requestRedo(): void | Promise<void>;
118
+ }
119
+ /**
120
+ * Owned mutation view handed to a container/multi-scope commit's `mutate`: `node` is the
121
+ * unshared copy already spliced into the live tree. Never write through references
122
+ * captured before the commit — they may be stale snapshot-shared originals.
123
+ */
124
+ export interface ContainerScope {
125
+ node: CstNode;
126
+ children: CstNode[];
127
+ sharing: SharingState;
128
+ }
129
+ export interface MultiScopeTarget {
130
+ /** Scope identity — a view suffices; the ceremony unshares the spine and mints the owned mutation view. */
131
+ node: NodeView;
132
+ /** The `BlockListState` shape the ceremony writes: ids by assignment, refs only in
133
+ * place — the array identity is the scope's, so a replacement strands its teardowns. */
134
+ state: {
135
+ innerBlockIds: string[];
136
+ readonly innerBlockRefs: (BlockComponent | undefined)[];
137
+ };
138
+ /** Doc-absolute path of `node`; the commit primitive unshares its spine. */
139
+ path: number[];
140
+ }
141
+ export interface CommitMultiScopeArgs<S extends readonly MultiScopeTarget[] = readonly MultiScopeTarget[]> {
142
+ /** `scopes[0]` is the outermost — inner raws must be current before outer rebuilds. */
143
+ scopes: S;
144
+ snapshot: CommitSnapshotArg;
145
+ /** One view in, one StructuralChange out per scope, same order — tuple-checked for literal scope arrays. */
146
+ mutate: (scopeViews: {
147
+ [K in keyof S]: ContainerScope;
148
+ }) => {
149
+ readonly [K in keyof S]: StructuralChange;
150
+ };
151
+ op?: ScopedOpDescriptor;
152
+ afterTick?: CommitAfterTick;
153
+ discardIfNoop?: DiscardIfNoop;
154
+ /**
155
+ * Caret positions the scopes' settles carry through their folds, parallel to `scopes` —
156
+ * a fold re-tiles the bytes under a landing chosen before the settle ran. Written in
157
+ * place, so `afterTick` reads the settled seat back off the object it passed in.
158
+ */
159
+ trackCaret?: readonly (TrackedPosition | undefined)[];
160
+ }
161
+ export interface CommitStructuralArgs {
162
+ snapshot: CommitSnapshotArg;
163
+ mutate: (children: CstNode[]) => StructuralChange;
164
+ op?: ScopedOpDescriptor;
165
+ afterTick?: CommitAfterTick;
166
+ /** Leaf(ves) for the dev invariant check when `mutate` returns `noop` (in-place kind change). */
167
+ touchedNodes?: CstNode[];
168
+ discardIfNoop?: DiscardIfNoop;
169
+ }
170
+ export interface CommitContainerStructuralArgs {
171
+ /** Scope identity — a view suffices; the ceremony unshares the spine and mints the owned mutation view. */
172
+ containerNode: NodeView;
173
+ /** Doc-absolute path of `containerNode` — the spine the primitive unshares + rebuilds. */
174
+ path: number[];
175
+ state: {
176
+ innerBlockIds: string[];
177
+ readonly innerBlockRefs: (BlockComponent | undefined)[];
178
+ };
179
+ snapshot: CommitSnapshotArg;
180
+ mutate: (scope: ContainerScope) => StructuralChange;
181
+ op?: ScopedOpDescriptor;
182
+ afterTick?: CommitAfterTick;
183
+ discardIfNoop?: DiscardIfNoop;
184
+ }
185
+ /**
186
+ * Selection-free commit surface, so the selection layer can depend on it without
187
+ * dragging in `EditorSelection`/`UndoEntry`. `UndoController` (editor-actions/deps)
188
+ * extends it with the two selection-typed members.
189
+ */
190
+ export interface CommitController {
191
+ /** Editor's sharing epoch state, exposed for out-of-ceremony copy-path-on-write. */
192
+ sharing: SharingState;
193
+ pushUndoSnapshot(blockIndex: number, offset: number): void;
194
+ /** Snapshot whose no-caret fallback seeds a deep leaf path (e.g. a match nested in a list item). */
195
+ pushUndoSnapshotPath(path: number[], offset: number): void;
196
+ /** Debounced typing snapshot; `leafPath` is the edited leaf's doc-absolute path. */
197
+ pushUndoSnapshotDebounced(leafPath: number[], offset: number, batchKey?: string | number): void;
198
+ /** Start the batch's pause window, once the keystroke's own edit has settled. Paired with
199
+ * every `pushUndoSnapshotDebounced`, or the batch never ends by pause. */
200
+ armUndoPause(): void;
201
+ commitStructural(args: CommitStructuralArgs): Promise<void>;
202
+ commitContainerStructural(args: CommitContainerStructuralArgs): Promise<void>;
203
+ commitMultiScope<const S extends readonly MultiScopeTarget[]>(args: CommitMultiScopeArgs<S>): Promise<void>;
204
+ /**
205
+ * Expose the document root as a MultiScopeTarget so commitMultiScope
206
+ * callers can include doc-level splices alongside container scopes
207
+ * (e.g., a cross-block delete whose LCA is the document root).
208
+ */
209
+ getDocScope(): MultiScopeTarget;
210
+ /** Flush the pending keystroke batch — emit its `input` event and clear the
211
+ * debounce timer — before a history swap, so the batch's bytes aren't lost. */
212
+ flushDebouncedCheckpoint(): void;
213
+ /** Run a command's byte write as its own undo entry. A command is not typing, so the
214
+ * keystroke batch breaks on BOTH sides: one Ctrl+Z takes the command and nothing else. */
215
+ isolateUndoEntry(write: () => void): void;
216
+ }
217
+ export interface ContainerEditActions {
218
+ /**
219
+ * Push a debounced undo snapshot for routine text input. `leafPath` is the edited
220
+ * leaf's doc-absolute path; `batchKey` (its stable block id) breaks the batch on
221
+ * focus moves between sibling leaves.
222
+ */
223
+ pushDebouncedCheckpoint(leafPath: number[], offset: number, batchKey?: string | number): void;
224
+ /** The checkpoint's other half: open the pause window once the keystroke's edit has settled. */
225
+ armDebouncedPause(): void;
226
+ /**
227
+ * Publish a raw change made outside the commit primitive, forwarded unchanged through
228
+ * nested containers. Raw rebuilds are NOT part of the nudge — out-of-ceremony writers
229
+ * rebuild via `withUnsharedSpine`, which operates on owned copies.
230
+ */
231
+ nudgeReactivity(): void;
232
+ /**
233
+ * Copy-path-on-write wrapper for out-of-ceremony writes (routine typing): unshares the
234
+ * spine doc-root → `absPath`, calls `write` with the owned chain (outermost first) and the
235
+ * epoch to own anything OFF that spine, then rebuilds innermost-first. The caller still pushes
236
+ * its own checkpoint and nudges. True means the rebuild re-derived a container's kind (typing
237
+ * out a `> [!TIP]` marker), remounting the edited leaf — the caller re-places the caret.
238
+ * `write` returns the change its own settle made, so the wrapper can publish it.
239
+ */
240
+ withUnsharedSpine(absPath: number[], write: (chain: CstNode[], sharing: SharingState) => StructuralChange | void): boolean;
241
+ /**
242
+ * Preferred entry for structural container mutations: spine unshare, snapshot,
243
+ * publish, edit event, post-tick. `mutate` receives the OWNED container with its
244
+ * working children attached — mutate through it, never through captures.
245
+ */
246
+ commitContainer(args: CommitContainerStructuralArgs): Promise<void>;
247
+ }
248
+ export interface ListContext {
249
+ insertItemAfter(itemIndex: number, newItem?: CstNode): Promise<void>;
250
+ exitListAtItem(itemIndex: number): Promise<void>;
251
+ indentItem(itemIndex: number): Promise<void>;
252
+ unindentItem(itemIndex: number): Promise<void>;
253
+ /**
254
+ * Split the item mid-content: first half stays, second half moves into a
255
+ * new sibling item. Emits exactly one undo snapshot and one edit event.
256
+ */
257
+ splitItemAtOffset(itemIndex: number, innerIndex: number, offset: number): Promise<void>;
258
+ /** Promote a nested list item to the parent list level. Called on the PARENT list's context.
259
+ * `nestedListNode` is scope identity (a live-tree reference) — a view; writes go through the ceremony. */
260
+ promoteNestedItem(parentItemIndex: number, nestedListNode: NodeView, nestedItemIndex: number): Promise<void>;
261
+ /** Returns this list's index in its enclosing list (for nested-list promotion). */
262
+ getContainingItemIndex(): number;
263
+ }
264
+ export type CellPosition = 'start' | 'end' | number;
265
+ export interface TableContext {
266
+ focusCell(rowIdx: number, colIdx: number, position: CellPosition): void;
267
+ getStickyColumn(): number | null;
268
+ setStickyColumn(colIdx: number): void;
269
+ resetStickyColumn(): void;
270
+ exitUpward(stickyX: number): void;
271
+ exitDownward(stickyX: number): void;
272
+ notifyCellFocused(rowIdx: number, colIdx: number): void;
273
+ notifyCellBlurred(): void;
274
+ insertRowAbove(rowIdx: number): Promise<void>;
275
+ insertRowBelow(rowIdx: number): Promise<void>;
276
+ insertColumnLeft(colIdx: number): Promise<void>;
277
+ insertColumnRight(colIdx: number): Promise<void>;
278
+ deleteRow(rowIdx: number): Promise<void>;
279
+ deleteColumn(colIdx: number): Promise<void>;
280
+ /** Move a body row up/down among body rows. The header row is fixed (no-op on it). */
281
+ moveRowUp(rowIdx: number): Promise<void>;
282
+ moveRowDown(rowIdx: number): Promise<void>;
283
+ /** Move a body row to an arbitrary target index (drag reorder); no-op if from === to. */
284
+ reorderRowTo(from: number, to: number): Promise<void>;
285
+ /** Move a column to an arbitrary target index (drag reorder); no-op if from === to. */
286
+ reorderColumnTo(from: number, to: number): Promise<void>;
287
+ /** Move a column left/right; no-op at the first/last column boundary. */
288
+ moveColumnLeft(colIdx: number): Promise<void>;
289
+ moveColumnRight(colIdx: number): Promise<void>;
290
+ cycleAlignment(colIdx: number): Promise<void>;
291
+ /** Set a column's alignment directly — distinct from the cycle step. */
292
+ setColumnAlignment(colIdx: number, alignment: TableAlignment): Promise<void>;
293
+ }
294
+ /**
295
+ * The TableContext mutations addressed by ONE axis index, the vocabulary the affordance
296
+ * menu and the cell's table commands both dispatch through. Derived from the contract
297
+ * rather than listed beside it, so a member with any other signature cannot be named.
298
+ */
299
+ export type TableAxisAction = {
300
+ [K in keyof TableContext]: TableContext[K] extends (index: number) => Promise<void> ? K : never;
301
+ }[keyof TableContext];
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Every action interface a block component invokes upward through Svelte context, plus
3
+ * the commit vocabulary those calls are expressed in.
4
+ */
5
+ export {};
@@ -0,0 +1,16 @@
1
+ export declare function registerEditor(root: HTMLElement): void;
2
+ export declare function unregisterEditor(root: HTMLElement): void;
3
+ export declare function markEditorInteracted(root: HTMLElement): void;
4
+ /** True when a body-level chord routes to `root`. */
5
+ export declare function claimsBodyChord(root: HTMLElement): boolean;
6
+ /**
7
+ * True when `active` is a text-entry surface outside every mounted editor. The reserved
8
+ * chords (Ctrl+F / Ctrl+H) yield to it, so an editor never hijacks a consumer's own field.
9
+ */
10
+ export declare function isForeignTextEntry(active: Element | null): boolean;
11
+ /** True when `el` takes text input — the surfaces a programmatic focus move must yield to. */
12
+ export declare function isTextEntrySurface(el: Element | null): boolean;
13
+ /** Release the claim if this editor holds it, so a torn-down instance never keeps it. */
14
+ export declare function releaseInteractedEditor(root: HTMLElement): void;
15
+ /** Test-only: clear both the claim and the mounted set between cases. */
16
+ export declare function __resetActiveEditorForTests(): void;
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Which editor a document-level chord routes to when no block holds native focus. The
3
+ * keydown listener sees every editor's keystrokes on the page, so the claimant is the
4
+ * last-interacted editor while that claim is live, else the sole mounted one. Two mounted
5
+ * editors with no live claim resolve to neither — guessing drives the wrong instance.
6
+ * Module-level by design: cross-instance coordination is the point.
7
+ */
8
+ const mountedEditors = new Set();
9
+ let lastInteracted = null;
10
+ export function registerEditor(root) {
11
+ mountedEditors.add(root);
12
+ }
13
+ export function unregisterEditor(root) {
14
+ mountedEditors.delete(root);
15
+ }
16
+ export function markEditorInteracted(root) {
17
+ lastInteracted = root;
18
+ }
19
+ /** True when a body-level chord routes to `root`. */
20
+ export function claimsBodyChord(root) {
21
+ if (lastInteracted === root)
22
+ return true;
23
+ const hasLiveClaim = lastInteracted !== null && mountedEditors.has(lastInteracted);
24
+ return !hasLiveClaim && mountedEditors.size === 1 && mountedEditors.has(root);
25
+ }
26
+ // Text-like <input> types the reserved chords yield to. Non-text types are deliberately
27
+ // absent: they don't consume Ctrl+F, so a sole editor keeps claiming while one has focus.
28
+ const TEXT_ENTRY_INPUT_TYPES = new Set([
29
+ 'text',
30
+ 'search',
31
+ 'url',
32
+ 'email',
33
+ 'tel',
34
+ 'password',
35
+ 'number'
36
+ ]);
37
+ /**
38
+ * True when `active` is a text-entry surface outside every mounted editor. The reserved
39
+ * chords (Ctrl+F / Ctrl+H) yield to it, so an editor never hijacks a consumer's own field.
40
+ */
41
+ export function isForeignTextEntry(active) {
42
+ if (!isTextEntrySurface(active))
43
+ return false;
44
+ for (const root of mountedEditors) {
45
+ if (root.contains(active))
46
+ return false;
47
+ }
48
+ return true;
49
+ }
50
+ /** True when `el` takes text input — the surfaces a programmatic focus move must yield to. */
51
+ export function isTextEntrySurface(el) {
52
+ if (el instanceof HTMLTextAreaElement)
53
+ return true;
54
+ if (el instanceof HTMLInputElement)
55
+ return TEXT_ENTRY_INPUT_TYPES.has(el.type);
56
+ return el?.matches('[contenteditable]:not([contenteditable="false"])') ?? false;
57
+ }
58
+ /** Release the claim if this editor holds it, so a torn-down instance never keeps it. */
59
+ export function releaseInteractedEditor(root) {
60
+ if (lastInteracted === root)
61
+ lastInteracted = null;
62
+ }
63
+ /** Test-only: clear both the claim and the mounted set between cases. */
64
+ export function __resetActiveEditorForTests() {
65
+ lastInteracted = null;
66
+ mountedEditors.clear();
67
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Ambient-aware cursor I/O for prose contenteditable surfaces: raw ↔ DOM offset
3
+ * translation that respects the leading ambient marker span a container block contributes
4
+ * to its first prose child. Zero-ambient surfaces are first-class consumers —
5
+ * `getAmbientLength: () => 0` reduces this to plain widget-aware translation.
6
+ */
7
+ import { type RawOffset } from '../cursor/coordinate-spaces';
8
+ export interface AmbientCursorDeps {
9
+ getEl: () => HTMLElement | null | undefined;
10
+ getAmbientLength: () => number;
11
+ /**
12
+ * Logical caret position (raw units) when the live DOM range is gone or trapped — the
13
+ * "user clicked here" intent that survives Chromium dropping element-level carets
14
+ * across event-loop yields. Null when no snap intent is active.
15
+ */
16
+ getSnapTarget?: () => number | null;
17
+ }
18
+ export interface AmbientCursorIO {
19
+ /** Raw offset of the collapsed caret, or null if no selection inside `el`. */
20
+ getRaw(): RawOffset | null;
21
+ /** Move the caret to the given raw offset. Offsets at/before the ambient
22
+ * boundary land just after the marker span. */
23
+ setRaw(offset: RawOffset): void;
24
+ /** Raw offsets of the anchor/focus endpoints of the current selection, or null. */
25
+ getRawSelection(): {
26
+ start: RawOffset;
27
+ end: RawOffset;
28
+ } | null;
29
+ /** Raw offsets of an arbitrary range inside this surface — an InputEvent's target range, which
30
+ * a word delete reports at a COLLAPSED caret and the selection therefore cannot answer. */
31
+ rawRangeOf(range: AbstractRange): {
32
+ start: RawOffset;
33
+ end: RawOffset;
34
+ } | null;
35
+ /** Ensure the caret sits outside the ambient marker region. No-op when `el`
36
+ * isn't the active element or the caret is already out. */
37
+ clampOutOfAmbient(): void;
38
+ /** Park the caret immediately after the ambient span — used as the raw-0 landing. */
39
+ setToAmbientBoundary(): void;
40
+ }
41
+ export declare function createAmbientCursorIO(deps: AmbientCursorDeps): AmbientCursorIO;
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Ambient-aware cursor I/O for prose contenteditable surfaces: raw ↔ DOM offset
3
+ * translation that respects the leading ambient marker span a container block contributes
4
+ * to its first prose child. Zero-ambient surfaces are first-class consumers —
5
+ * `getAmbientLength: () => 0` reduces this to plain widget-aware translation.
6
+ */
7
+ import { asRawOffset, toClampedRawOffset, toDomTextOffset } from '../cursor/coordinate-spaces';
8
+ import { domTextOffsetAtNode, findDomTextOffsetTarget } from '../cursor/widget-offset';
9
+ import { ambientSpanOf, placeCaretAfterAmbientSpan } from './ambient-dom';
10
+ export function createAmbientCursorIO(deps) {
11
+ function snapTargetRaw() {
12
+ const target = deps.getSnapTarget?.() ?? null;
13
+ return target === null ? null : asRawOffset(target);
14
+ }
15
+ function readLiveRange() {
16
+ const el = deps.getEl();
17
+ if (!el || document.activeElement !== el)
18
+ return { state: 'inactive' };
19
+ const sel = window.getSelection();
20
+ if (!sel || sel.rangeCount === 0)
21
+ return { state: 'dropped' };
22
+ const ambient = ambientSpanOf(el);
23
+ return {
24
+ state: 'live',
25
+ el,
26
+ range: sel.getRangeAt(0),
27
+ collapsed: sel.isCollapsed,
28
+ inAmbient: (node) => ambient !== null && ambient.contains(node)
29
+ };
30
+ }
31
+ function getRaw() {
32
+ const live = readLiveRange();
33
+ if (live.state === 'inactive')
34
+ return null;
35
+ // Dropped (Chromium loses element-level carets past atomic widgets) or rebounded
36
+ // into a contenteditable=false island: the snap target carries the user's intent.
37
+ if (live.state === 'dropped')
38
+ return snapTargetRaw();
39
+ if (live.inAmbient(live.range.startContainer))
40
+ return snapTargetRaw();
41
+ const content = domTextOffsetAtNode(live.el, live.range.startContainer, live.range.startOffset);
42
+ return toClampedRawOffset(content, deps.getAmbientLength());
43
+ }
44
+ function setToAmbientBoundary() {
45
+ const el = deps.getEl();
46
+ if (el)
47
+ placeCaretAfterAmbientSpan(el);
48
+ }
49
+ function setRaw(offset) {
50
+ const el = deps.getEl();
51
+ if (!el)
52
+ return;
53
+ const ambientLength = deps.getAmbientLength();
54
+ // Walking to position ambientLength lands inside the marker island, where Chromium
55
+ // bounces the caret out in front of the span. Use a sibling boundary instead.
56
+ if (ambientLength > 0 && offset <= 0) {
57
+ setToAmbientBoundary();
58
+ return;
59
+ }
60
+ const target = toDomTextOffset(offset, ambientLength);
61
+ const pos = findDomTextOffsetTarget(el, target);
62
+ if (!pos)
63
+ return;
64
+ // The walker's last-text-node fallback can land inside the marker text, where the
65
+ // contenteditable="false" island traps the caret.
66
+ const ambient = ambientSpanOf(el);
67
+ if (ambient && ambient.contains(pos.node)) {
68
+ setToAmbientBoundary();
69
+ return;
70
+ }
71
+ const range = document.createRange();
72
+ try {
73
+ range.setStart(pos.node, pos.offset);
74
+ }
75
+ catch {
76
+ return;
77
+ }
78
+ range.collapse(true);
79
+ const sel = window.getSelection();
80
+ sel?.removeAllRanges();
81
+ sel?.addRange(range);
82
+ }
83
+ function clampOutOfAmbient() {
84
+ // Liveness before the ambient read, as every other method here does it: the length is an
85
+ // owner-bound derived at the call site, and a surface unmounted mid-dispatch is a dead owner.
86
+ const live = readLiveRange();
87
+ if (live.state !== 'live' || !live.collapsed)
88
+ return;
89
+ const ambientLength = deps.getAmbientLength();
90
+ if (ambientLength === 0)
91
+ return;
92
+ const content = domTextOffsetAtNode(live.el, live.range.startContainer, live.range.startOffset);
93
+ if (content >= ambientLength)
94
+ return;
95
+ setToAmbientBoundary();
96
+ }
97
+ function getRawSelection() {
98
+ const live = readLiveRange();
99
+ if (live.state !== 'live' || live.collapsed)
100
+ return null;
101
+ // No snap-target fallback here, unlike `getRaw`: a single caret intent cannot stand
102
+ // in for one end of a pair, and the clamp below already maps the marker interior to
103
+ // raw 0 — the right boundary for a drag that began inside the marker.
104
+ return rawEndpointsOf(live.el, live.range, deps.getAmbientLength());
105
+ }
106
+ function rawRangeOf(range) {
107
+ const el = deps.getEl();
108
+ if (!el || !el.contains(range.startContainer) || !el.contains(range.endContainer))
109
+ return null;
110
+ return rawEndpointsOf(el, range, deps.getAmbientLength());
111
+ }
112
+ return { getRaw, setRaw, getRawSelection, rawRangeOf, clampOutOfAmbient, setToAmbientBoundary };
113
+ }
114
+ // ── Internal ────────────────────────────────────────────────────────────────
115
+ function rawEndpointsOf(el, range, ambientLength) {
116
+ return {
117
+ start: toClampedRawOffset(domTextOffsetAtNode(el, range.startContainer, range.startOffset), ambientLength),
118
+ end: toClampedRawOffset(domTextOffsetAtNode(el, range.endContainer, range.endOffset), ambientLength)
119
+ };
120
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * DOM construction and lookup for the ambient marker span — the read-only
3
+ * prefix container blocks contribute to their first prose child's textContent.
4
+ */
5
+ import type { AmbientPrefix } from '../block-component';
6
+ export declare function buildAmbientSpan(prefix: AmbientPrefix): HTMLSpanElement;
7
+ export declare function ambientSpanOf(blockEl: ParentNode): HTMLElement | null;
8
+ export declare function ambientLengthOf(blockEl: HTMLElement): number;
9
+ export declare function placeCaretAfterAmbientSpan(blockEl: HTMLElement): boolean;
@@ -0,0 +1,102 @@
1
+ /**
2
+ * DOM construction and lookup for the ambient marker span — the read-only
3
+ * prefix container blocks contribute to their first prose child's textContent.
4
+ */
5
+ import { domDescendants } from '../cursor/dom-walk';
6
+ import { isAtomicInlineWidget, isHiddenMarkerText } from '../cursor/widget-offset';
7
+ import { devWarn } from '../dev-warn';
8
+ export function buildAmbientSpan(prefix) {
9
+ const normalized = typeof prefix === 'string' ? { text: prefix } : prefix;
10
+ const outer = document.createElement('span');
11
+ outer.className = 'md-marker';
12
+ outer.setAttribute('contenteditable', 'false');
13
+ const ranges = normalized.interactive ?? [];
14
+ let cursor = 0;
15
+ for (const range of ranges) {
16
+ if (range.start < 0 || range.end > normalized.text.length || range.start >= range.end) {
17
+ devWarn('ambient-span', 'interactive range out of bounds or empty', {
18
+ range,
19
+ textLength: normalized.text.length
20
+ });
21
+ continue;
22
+ }
23
+ if (range.start > cursor) {
24
+ outer.appendChild(document.createTextNode(normalized.text.slice(cursor, range.start)));
25
+ }
26
+ const inner = document.createElement('span');
27
+ inner.className = range.className;
28
+ if (range.role)
29
+ inner.setAttribute('role', range.role);
30
+ if (range.ariaChecked !== undefined) {
31
+ inner.setAttribute('aria-checked', String(range.ariaChecked));
32
+ }
33
+ inner.textContent = normalized.text.slice(range.start, range.end);
34
+ inner.addEventListener('click', range.onClick);
35
+ outer.appendChild(inner);
36
+ cursor = range.end;
37
+ }
38
+ if (cursor < normalized.text.length) {
39
+ outer.appendChild(document.createTextNode(normalized.text.slice(cursor)));
40
+ }
41
+ return outer;
42
+ }
43
+ export function ambientSpanOf(blockEl) {
44
+ const first = blockEl.firstChild;
45
+ if (!first || first.nodeType !== Node.ELEMENT_NODE)
46
+ return null;
47
+ const span = first;
48
+ if (!span.classList.contains('md-marker'))
49
+ return null;
50
+ if (span.getAttribute('contenteditable') !== 'false')
51
+ return null;
52
+ return span;
53
+ }
54
+ export function ambientLengthOf(blockEl) {
55
+ return ambientSpanOf(blockEl)?.textContent?.length ?? 0;
56
+ }
57
+ export function placeCaretAfterAmbientSpan(blockEl) {
58
+ const span = ambientSpanOf(blockEl);
59
+ if (!span)
60
+ return false;
61
+ const range = document.createRange();
62
+ // Prefer the first text node after the span so visual-line geometry returns real rects;
63
+ // setStartAfter yields a collapsed range with no textbox in empty-item state. A hidden
64
+ // marker run next to the span is not that text node — it paints nothing, and descending
65
+ // into it would seat raw 0 inside unpainted bytes.
66
+ const textAfter = firstTextNodeAfter(span);
67
+ if (textAfter && !isHiddenMarkerText(textAfter, blockEl)) {
68
+ range.setStart(textAfter, 0);
69
+ }
70
+ else {
71
+ range.setStartAfter(span);
72
+ }
73
+ range.collapse(true);
74
+ const sel = window.getSelection();
75
+ sel?.removeAllRanges();
76
+ sel?.addRange(range);
77
+ return true;
78
+ }
79
+ // ── Internal ────────────────────────────────────────────────────────────────
80
+ function firstTextNodeAfter(node) {
81
+ let sibling = node.nextSibling;
82
+ while (sibling) {
83
+ // An atomic widget stands for raw bytes, so text past it is not raw 0.
84
+ if (isAtomicInlineWidget(sibling))
85
+ return null;
86
+ const text = firstTextDescendant(sibling);
87
+ if (text)
88
+ return text;
89
+ sibling = sibling.nextSibling;
90
+ }
91
+ return null;
92
+ }
93
+ // Unfiltered on the way down, unlike the measurable-text search it resembles
94
+ // (`cursor/visual-lines.ts`): the caller judges hidden marker text once, at the top.
95
+ function firstTextDescendant(node) {
96
+ for (const current of domDescendants(node)) {
97
+ if (current.nodeType === Node.TEXT_NODE && (current.textContent?.length ?? 0) > 0) {
98
+ return current;
99
+ }
100
+ }
101
+ return null;
102
+ }
@@ -0,0 +1,6 @@
1
+ export interface InvariantViolation {
2
+ code: string;
3
+ message: string;
4
+ detail?: unknown;
5
+ }
6
+ export declare function assertInvariant(tag: string, check: () => InvariantViolation | null): void;