@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,204 @@
1
+ /**
2
+ * Bridge between the browser's native Selection API and SelectionPoint. Pure: callers provide
3
+ * target elements and paths, no tree walking. SelectionPoint offsets are raw-semantic, so
4
+ * DOM→raw conversion subtracts the length of a leading ambient marker span, whose textContent
5
+ * counts toward DOM offsets but not raw.
6
+ */
7
+ import { asRawOffset, toClampedRawOffset, toDomTextOffset } from '../cursor/coordinate-spaces';
8
+ import { clampToLandableRaw, createRangeAtDomTextOffsets, domTextOffsetAtNode } from '../cursor/widget-offset';
9
+ import { ambientLengthOf, placeCaretAfterAmbientSpan } from '../ambient/ambient-dom';
10
+ // ── Read native → SelectionPoint ────────────────────────────────────────────
11
+ /**
12
+ * Read the collapsed caret inside `blockEl` into a raw-semantic SelectionPoint.
13
+ * Returns null when the caret isn't inside this element.
14
+ */
15
+ export function readNativeCaretInBlock(blockEl, path) {
16
+ if (document.activeElement !== blockEl)
17
+ return null;
18
+ const sel = window.getSelection();
19
+ if (!sel || sel.rangeCount === 0)
20
+ return null;
21
+ const range = sel.getRangeAt(0);
22
+ // The anchor is the fixed end the selection grew from; for a BACKWARD selection it sits at
23
+ // range.end, so reading range.start would capture the moving focus and drop the highlighted
24
+ // span. Use the real anchor when it resolves inside this block, else keep range.start.
25
+ const useAnchor = !sel.isCollapsed && sel.anchorNode !== null && blockEl.contains(sel.anchorNode);
26
+ const node = useAnchor ? sel.anchorNode : range.startContainer;
27
+ const nodeOffset = useAnchor ? sel.anchorOffset : range.startOffset;
28
+ const content = domTextOffsetAtNode(blockEl, node, nodeOffset);
29
+ return {
30
+ path: path.slice(),
31
+ offset: toClampedRawOffset(content, ambientLengthOf(blockEl))
32
+ };
33
+ }
34
+ // ── Apply SelectionPoint → native ───────────────────────────────────────────
35
+ /**
36
+ * Place a collapsed native caret at a raw-semantic SelectionPoint, translating through the block's
37
+ * ambient length. The park door's twin, so the same landable clamp applies: a caret may not sit
38
+ * past a hidden marker run, whatever offset the caller derived. Only collapsed carets clamp — a
39
+ * selection may COVER such a run, so `applySingleBlockRange` does not. Raw offset 0 under an
40
+ * ambient marker goes AFTER the span: Chromium bounces carets out of its contenteditable="false".
41
+ */
42
+ export function applyCollapsedCaret(blockEl, point) {
43
+ const ambient = ambientLengthOf(blockEl);
44
+ const offset = clampToLandableRaw(blockEl, point.offset, ambient);
45
+ if (ambient > 0 && offset <= 0 && placeCaretAfterAmbientSpan(blockEl))
46
+ return;
47
+ const target = toDomTextOffset(asRawOffset(offset), ambient);
48
+ const range = createRangeAtDomTextOffsets(blockEl, target, target);
49
+ if (!range)
50
+ return;
51
+ const sel = window.getSelection();
52
+ sel?.removeAllRanges();
53
+ sel?.addRange(range);
54
+ }
55
+ /**
56
+ * Resolve `point.path` to its mounted block element and place a focused collapsed caret there.
57
+ * Returns whether an element was found; a missing target is a no-op.
58
+ */
59
+ export function focusCollapsedCaret(getBlockElByPath, point) {
60
+ const blockEl = getBlockElByPath(point.path);
61
+ if (!blockEl)
62
+ return false;
63
+ applyCollapsedCaret(blockEl, point);
64
+ blockEl.focus();
65
+ return true;
66
+ }
67
+ export function applySingleBlockRange(blockEl, startOffset, endOffset) {
68
+ const ambient = ambientLengthOf(blockEl);
69
+ const range = createRangeAtDomTextOffsets(blockEl, toDomTextOffset(asRawOffset(startOffset), ambient), toDomTextOffset(asRawOffset(endOffset), ambient));
70
+ if (!range)
71
+ return;
72
+ const sel = window.getSelection();
73
+ sel?.removeAllRanges();
74
+ sel?.addRange(range);
75
+ }
76
+ export function clearNativeSelection() {
77
+ window.getSelection()?.removeAllRanges();
78
+ }
79
+ /**
80
+ * Keep focus inside the editor when an editable block holding it is windowed out; it would
81
+ * otherwise fall to <body>. The root is non-editable (`tabindex="-1"`), so focusing it creates
82
+ * no native range to sync. No-op unless this block holds focus and the root is still connected.
83
+ */
84
+ export function parkFocusOnEditorRoot(blockEl, editorRoot) {
85
+ if (!blockEl || !editorRoot?.isConnected)
86
+ return;
87
+ // preventScroll: the implicit focus scroll would fight the reveal path's, whichever port
88
+ // owns the scrolling.
89
+ if (document.activeElement === blockEl)
90
+ editorRoot.focus({ preventScroll: true });
91
+ }
92
+ // ── Selection read/restore for undo ─────────────────────────────────────────
93
+ /**
94
+ * Cross-block from SelectionState if active; otherwise the focused block's cursor as a deep
95
+ * path (via getCursorPosition) or a shallow one. Null when no block reports a cursor.
96
+ */
97
+ export function readCurrentSelection(selectionState, blockRefs) {
98
+ if (selectionState.isCrossBlock && selectionState.anchor && selectionState.focus) {
99
+ return {
100
+ anchor: copySelectionPoint(selectionState.anchor),
101
+ focus: copySelectionPoint(selectionState.focus)
102
+ };
103
+ }
104
+ for (let i = 0; i < blockRefs.length; i++) {
105
+ const ref = blockRefs[i];
106
+ if (!ref)
107
+ continue;
108
+ const pos = ref.getCursorPosition?.();
109
+ if (pos) {
110
+ const path = [i, ...pos.path];
111
+ return nativeRangeInFocusedBlock(path) ?? collapsedSelectionAt(path, pos.offset);
112
+ }
113
+ const offset = ref.getCursorOffset();
114
+ if (offset !== null && offset !== undefined) {
115
+ return nativeRangeInFocusedBlock([i]) ?? collapsedSelectionAt([i], offset);
116
+ }
117
+ }
118
+ return null;
119
+ }
120
+ function collapsedSelectionAt(path, offset) {
121
+ return { anchor: { path: path.slice(), offset }, focus: { path: path.slice(), offset } };
122
+ }
123
+ /**
124
+ * The focused block's native selection as distinct anchor/focus raw offsets, so getSelection()
125
+ * reports a within-block range instead of collapsing it to the caret. Null when collapsed or
126
+ * outside the active block. Offsets convert through that block's ambient length.
127
+ */
128
+ function nativeRangeInFocusedBlock(path) {
129
+ // Node-env callers (undo snapshot capture in unit tests) have no DOM; fall back to the
130
+ // single caret offset rather than touching document/window.
131
+ if (typeof document === 'undefined' || typeof window === 'undefined')
132
+ return null;
133
+ const active = document.activeElement;
134
+ if (!(active instanceof HTMLElement))
135
+ return null;
136
+ const sel = window.getSelection();
137
+ if (!sel || sel.isCollapsed || sel.anchorNode === null || sel.focusNode === null)
138
+ return null;
139
+ if (!active.contains(sel.anchorNode) || !active.contains(sel.focusNode))
140
+ return null;
141
+ const ambient = ambientLengthOf(active);
142
+ const anchorOffset = toClampedRawOffset(domTextOffsetAtNode(active, sel.anchorNode, sel.anchorOffset), ambient);
143
+ const focusOffset = toClampedRawOffset(domTextOffsetAtNode(active, sel.focusNode, sel.focusOffset), ambient);
144
+ return {
145
+ anchor: { path: path.slice(), offset: anchorOffset },
146
+ focus: { path: path.slice(), offset: focusOffset }
147
+ };
148
+ }
149
+ // A restored table endpoint must keep cellCoordinate, or it skips the whole-row snap and the
150
+ // deep-cell collapse routing; the two-branch copy carries the union variant through undo.
151
+ function copySelectionPoint(point) {
152
+ if (point.cellCoordinate) {
153
+ return { path: point.path.slice(), offset: point.offset, cellCoordinate: true };
154
+ }
155
+ return { path: point.path.slice(), offset: point.offset };
156
+ }
157
+ /**
158
+ * Restore an EditorSelection to the DOM: custom-rendered selections (intra-table, cross-block)
159
+ * route through SelectionState's overlay, same-path prose uses the native selection. State
160
+ * write and caret landing run inside ONE SelectionState batch, so the single notification
161
+ * carries the settled selection. False = the target resolved in the model but not in the DOM.
162
+ */
163
+ export function applySelectionToDom(selection, selectionState, getBlockElByPath) {
164
+ let placed = false;
165
+ selectionState.batch(() => {
166
+ placed = placeRestoredSelection(selection, selectionState, getBlockElByPath);
167
+ // Announced, not inferred from the arm's own mutation: a restore onto an already-clear
168
+ // state changes no editor-owned field and still moves the caret subscribers read back.
169
+ selectionState.announceSelection();
170
+ });
171
+ return placed;
172
+ }
173
+ function placeRestoredSelection(selection, selectionState, getBlockElByPath) {
174
+ // Classify before mutating state so a single-block restore never mints a phantom transient
175
+ // cross-block state (enterCrossBlock → clear).
176
+ const route = selectionState.restoreRoute(selection.anchor, selection.focus);
177
+ if (route === 'collapsed') {
178
+ selectionState.clear();
179
+ // Through the landing like the custom arm below: a collapsed CELL point reaches this arm
180
+ // (equal offsets classify before coordinate space does) carrying a cell index, which a
181
+ // char walk on the table wrapper would seat somewhere in the grid's rendered text.
182
+ return focusCollapsedCaret(getBlockElByPath, selectionState.cellLandingFor(selection.anchor));
183
+ }
184
+ // No landing translation on this arm: a same-path pair whose block is a table routes 'custom',
185
+ // so every pair reaching here is a char range on a prose leaf.
186
+ if (route === 'single-block') {
187
+ selectionState.clear();
188
+ const blockEl = getBlockElByPath(selection.anchor.path);
189
+ if (!blockEl)
190
+ return false;
191
+ applySingleBlockRange(blockEl, selection.anchor.offset, selection.focus.offset);
192
+ blockEl.focus();
193
+ return true;
194
+ }
195
+ // Custom: the overlay paints. Park a collapsed caret in the focus block as a paste/key
196
+ // dispatch anchor (Chromium otherwise routes paste to <body>). A cell-coordinate focus
197
+ // addresses the table wrapper by cell index, so park in its deep cell instead.
198
+ selectionState.enterCrossBlock(selection.anchor, selection.focus);
199
+ if (focusCollapsedCaret(getBlockElByPath, selectionState.cellLandingFor(selection.focus))) {
200
+ return true;
201
+ }
202
+ clearNativeSelection();
203
+ return false;
204
+ }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * The mounted block nearest a viewport point, and the endpoint that point addresses. A gesture
3
+ * that must answer EVERY point — the dead-space click, a drag into the margin — resolves an
4
+ * off-block point through here instead of declining it. The probe point never leaves the module:
5
+ * a caller hit-testing at its own raw point gets no offset at all on a character surface.
6
+ * Only mounted blocks are measured; a caller answering for a windowed-out tail reconciles itself.
7
+ */
8
+ import type { SelectionEndpoint } from './primitives';
9
+ export interface BlockBand {
10
+ top: number;
11
+ bottom: number;
12
+ }
13
+ /** One mounted block's path and box. */
14
+ export interface MeasuredBlock {
15
+ path: number[] | null;
16
+ rect: DOMRect;
17
+ }
18
+ /** Document order, since bands may nest and every walk over them depends on it. */
19
+ export declare function measureBlocks(root: HTMLElement): MeasuredBlock[];
20
+ /**
21
+ * The band a `y` belongs to. `belowAll` marks a point past the last band, the end-of-document
22
+ * gesture, which lands at a trailing corner rather than under its own x. A y in a gap resolves to
23
+ * the nearest band, so no point is left unanswered. Bands arrive in document order and may nest,
24
+ * so containment scans forward, outermost wins.
25
+ */
26
+ export declare function nearestBand(bands: BlockBand[], y: number): {
27
+ index: number;
28
+ belowAll: boolean;
29
+ } | null;
30
+ /** The band's own probe point: {@link clampPointIntoBox}, except that `belowAll` takes the
31
+ * trailing corner — the block's last position — rather than the point's own x. */
32
+ export declare function probePointIn(rect: DOMRect, x: number, y: number, belowAll: boolean): {
33
+ x: number;
34
+ y: number;
35
+ };
36
+ export interface NearestBlock {
37
+ path: number[];
38
+ /** Lazy so a drag whose point falls back on its own anchor block never pays the hit-test. */
39
+ endpointHere(): SelectionEndpoint | null;
40
+ }
41
+ /** The block a point addresses: the one under it, else the nearest one with the point clamped
42
+ * into its box. Null only where nothing is mounted. */
43
+ export declare function blockNearPoint(editorRoot: HTMLElement, clientX: number, clientY: number): NearestBlock | null;
@@ -0,0 +1,73 @@
1
+ /**
2
+ * The mounted block nearest a viewport point, and the endpoint that point addresses. A gesture
3
+ * that must answer EVERY point — the dead-space click, a drag into the margin — resolves an
4
+ * off-block point through here instead of declining it. The probe point never leaves the module:
5
+ * a caller hit-testing at its own raw point gets no offset at all on a character surface.
6
+ * Only mounted blocks are measured; a caller answering for a windowed-out tail reconciles itself.
7
+ */
8
+ import { clampPointIntoBox } from '../cursor/point-offset';
9
+ import { blockAtPoint, endpointAtPoint } from './block-hit-test';
10
+ import { readBlockPath } from './path-lookup';
11
+ /** Document order, since bands may nest and every walk over them depends on it. */
12
+ export function measureBlocks(root) {
13
+ return blockHosts(root).map((el) => ({
14
+ path: readBlockPath(el),
15
+ rect: el.getBoundingClientRect()
16
+ }));
17
+ }
18
+ /**
19
+ * The band a `y` belongs to. `belowAll` marks a point past the last band, the end-of-document
20
+ * gesture, which lands at a trailing corner rather than under its own x. A y in a gap resolves to
21
+ * the nearest band, so no point is left unanswered. Bands arrive in document order and may nest,
22
+ * so containment scans forward, outermost wins.
23
+ */
24
+ export function nearestBand(bands, y) {
25
+ if (bands.length === 0)
26
+ return null;
27
+ const last = bands.length - 1;
28
+ if (y > bands[last].bottom)
29
+ return { index: last, belowAll: true };
30
+ for (let i = 0; i < bands.length; i++) {
31
+ if (y >= bands[i].top && y <= bands[i].bottom)
32
+ return { index: i, belowAll: false };
33
+ }
34
+ let nearest = 0;
35
+ let smallestGap = Infinity;
36
+ for (let i = 0; i < bands.length; i++) {
37
+ const gap = y < bands[i].top ? bands[i].top - y : y - bands[i].bottom;
38
+ if (gap < smallestGap) {
39
+ smallestGap = gap;
40
+ nearest = i;
41
+ }
42
+ }
43
+ return { index: nearest, belowAll: false };
44
+ }
45
+ // ── Probing ────────────────────────────────────────────────────────────────
46
+ /** The band's own probe point: {@link clampPointIntoBox}, except that `belowAll` takes the
47
+ * trailing corner — the block's last position — rather than the point's own x. */
48
+ export function probePointIn(rect, x, y, belowAll) {
49
+ const inside = clampPointIntoBox(rect, x, y);
50
+ return { x: belowAll ? rect.right - 1 : inside.x, y: inside.y };
51
+ }
52
+ /** The block a point addresses: the one under it, else the nearest one with the point clamped
53
+ * into its box. Null only where nothing is mounted. */
54
+ export function blockNearPoint(editorRoot, clientX, clientY) {
55
+ const direct = blockAtPoint(editorRoot, clientX, clientY);
56
+ if (direct)
57
+ return addressedAt(direct, clientX, clientY);
58
+ const rects = blockHosts(editorRoot).map((el) => el.getBoundingClientRect());
59
+ const band = nearestBand(rects, clientY);
60
+ if (!band)
61
+ return null;
62
+ const probe = probePointIn(rects[band.index], clientX, clientY, band.belowAll);
63
+ const hit = blockAtPoint(editorRoot, probe.x, probe.y);
64
+ return hit && addressedAt(hit, probe.x, probe.y);
65
+ }
66
+ // ── Internal ───────────────────────────────────────────────────────────────
67
+ function addressedAt(hit, probeX, probeY) {
68
+ return { path: hit.path, endpointHere: () => endpointAtPoint(hit, probeX, probeY) };
69
+ }
70
+ /** The one selector for the mounted hosts, so the two walks above cannot drift apart. */
71
+ function blockHosts(root) {
72
+ return [...root.querySelectorAll('[data-block-path]')];
73
+ }
@@ -0,0 +1,32 @@
1
+ /** Document-tree path navigation. Pure functions over a Document + path. */
2
+ import type { Document } from '../core/nodes';
3
+ /** Block immediately after `path` in doc order (children before siblings), else null. */
4
+ export declare function nextPath(doc: Document, path: number[]): number[] | null;
5
+ /** Block immediately before `path` in doc order (deepest last descendant first), else null. */
6
+ export declare function previousPath(doc: Document, path: number[]): number[] | null;
7
+ /** First block in document order, or null if the document is empty. */
8
+ export declare function firstPath(doc: Document): number[] | null;
9
+ /** Last block in document order (deepest last descendant), or null if empty. */
10
+ export declare function lastPath(doc: Document): number[] | null;
11
+ /** Descend `path` to its first leaf, or null when `path` doesn't resolve to a node. */
12
+ export declare function firstLeafAtOrAfter(doc: Document, path: number[]): number[] | null;
13
+ /** Descend `path` to its last leaf, or null when `path` doesn't resolve to a node. */
14
+ export declare function lastLeafAtOrBefore(doc: Document, path: number[]): number[] | null;
15
+ /**
16
+ * The document path an element's own `data-block-path` carries. A plugin may own the attribute
17
+ * with non-JSON content, so a parse failure resolves to null, never a throw.
18
+ */
19
+ export declare function readBlockPath(el: Element | null): number[] | null;
20
+ /** Walk up from `el` to the nearest ancestor carrying `data-block-path`. */
21
+ export declare function findBlockPathForElement(el: Element | null): number[] | null;
22
+ /**
23
+ * The deep `[...tablePath, row, col]` path of an element inside a table cell. Only block hosts
24
+ * emit `data-block-path`, so {@link findBlockPathForElement} stops at the table and returns a
25
+ * path whose offsets are cell indices while a caret read from the same element is in characters.
26
+ * Any producer resolving an endpoint path from the DOM must come through here. Null outside a
27
+ * cell grid; addresses the grid by selector contract (`data-table-row-idx`, `role="cell"`).
28
+ */
29
+ export declare function findCellPathForElement(el: Element | null): number[] | null;
30
+ /** The path of the editing SURFACE `el` sits in — the enclosing cell where there is one, else
31
+ * the enclosing block. The pairing {@link findCellPathForElement} says every producer owes. */
32
+ export declare function findSurfacePathForElement(el: Element | null): number[] | null;
@@ -0,0 +1,132 @@
1
+ /** Document-tree path navigation. Pure functions over a Document + path. */
2
+ import { nodeAt } from '../tree-operations/node-ops';
3
+ /** Block immediately after `path` in doc order (children before siblings), else null. */
4
+ export function nextPath(doc, path) {
5
+ const node = nodeAt(doc, path);
6
+ if (node && 'children' in node && node.children && node.children.length > 0) {
7
+ return [...path, 0];
8
+ }
9
+ let p = path.slice();
10
+ while (p.length > 0) {
11
+ const parentPath = p.slice(0, -1);
12
+ const parent = nodeAt(doc, parentPath);
13
+ if (!parent || !parent.children)
14
+ return null;
15
+ const idx = p[p.length - 1];
16
+ if (idx + 1 < parent.children.length) {
17
+ return [...parentPath, idx + 1];
18
+ }
19
+ p = parentPath;
20
+ }
21
+ return null;
22
+ }
23
+ /** Block immediately before `path` in doc order (deepest last descendant first), else null. */
24
+ export function previousPath(doc, path) {
25
+ if (path.length === 0)
26
+ return null;
27
+ const parentPath = path.slice(0, -1);
28
+ const parent = nodeAt(doc, parentPath);
29
+ if (!parent || !parent.children)
30
+ return null;
31
+ const idx = path[path.length - 1];
32
+ if (idx > 0) {
33
+ return lastLeafAtOrBefore(doc, [...parentPath, idx - 1]);
34
+ }
35
+ if (parentPath.length === 0)
36
+ return null;
37
+ return parentPath;
38
+ }
39
+ /** First block in document order, or null if the document is empty. */
40
+ export function firstPath(doc) {
41
+ if (!doc.children || doc.children.length === 0)
42
+ return null;
43
+ return firstLeafAtOrAfter(doc, [0]);
44
+ }
45
+ /** Last block in document order (deepest last descendant), or null if empty. */
46
+ export function lastPath(doc) {
47
+ if (!doc.children || doc.children.length === 0)
48
+ return null;
49
+ return lastLeafAtOrBefore(doc, [doc.children.length - 1]);
50
+ }
51
+ /** Descend `path` to its first leaf, or null when `path` doesn't resolve to a node. */
52
+ export function firstLeafAtOrAfter(doc, path) {
53
+ let cur = path;
54
+ while (cur) {
55
+ const node = nodeAt(doc, cur);
56
+ if (!node)
57
+ return null;
58
+ if (!('children' in node) || !node.children || node.children.length === 0)
59
+ return cur;
60
+ cur = [...cur, 0];
61
+ }
62
+ return null;
63
+ }
64
+ /** Descend `path` to its last leaf, or null when `path` doesn't resolve to a node. */
65
+ export function lastLeafAtOrBefore(doc, path) {
66
+ let cur = path;
67
+ while (cur) {
68
+ // Annotated: overload resolution + the `cur` reassignment below otherwise cycle inference.
69
+ const node = nodeAt(doc, cur);
70
+ if (!node)
71
+ return null;
72
+ if (!('children' in node) || !node.children || node.children.length === 0)
73
+ return cur;
74
+ cur = [...cur, node.children.length - 1];
75
+ }
76
+ return null;
77
+ }
78
+ /**
79
+ * The document path an element's own `data-block-path` carries. A plugin may own the attribute
80
+ * with non-JSON content, so a parse failure resolves to null, never a throw.
81
+ */
82
+ export function readBlockPath(el) {
83
+ const attr = el?.getAttribute('data-block-path');
84
+ if (!attr)
85
+ return null;
86
+ try {
87
+ return JSON.parse(attr);
88
+ }
89
+ catch {
90
+ return null;
91
+ }
92
+ }
93
+ /** Walk up from `el` to the nearest ancestor carrying `data-block-path`. */
94
+ export function findBlockPathForElement(el) {
95
+ let cur = el;
96
+ while (cur) {
97
+ if (cur.getAttribute('data-block-path'))
98
+ return readBlockPath(cur);
99
+ cur = cur.parentElement;
100
+ }
101
+ return null;
102
+ }
103
+ /**
104
+ * The deep `[...tablePath, row, col]` path of an element inside a table cell. Only block hosts
105
+ * emit `data-block-path`, so {@link findBlockPathForElement} stops at the table and returns a
106
+ * path whose offsets are cell indices while a caret read from the same element is in characters.
107
+ * Any producer resolving an endpoint path from the DOM must come through here. Null outside a
108
+ * cell grid; addresses the grid by selector contract (`data-table-row-idx`, `role="cell"`).
109
+ */
110
+ export function findCellPathForElement(el) {
111
+ const cellEl = el?.closest('[role="cell"]') ?? null;
112
+ if (!cellEl)
113
+ return null;
114
+ const rowEl = cellEl.closest('[data-table-row-idx]');
115
+ if (!rowEl)
116
+ return null;
117
+ const tablePath = findBlockPathForElement(rowEl);
118
+ if (!tablePath)
119
+ return null;
120
+ const rowIdx = Number(rowEl.getAttribute('data-table-row-idx'));
121
+ if (!Number.isInteger(rowIdx))
122
+ return null;
123
+ const colIdx = Array.from(rowEl.querySelectorAll(':scope > [role="cell"]')).indexOf(cellEl);
124
+ if (colIdx < 0)
125
+ return null;
126
+ return [...tablePath, rowIdx, colIdx];
127
+ }
128
+ /** The path of the editing SURFACE `el` sits in — the enclosing cell where there is one, else
129
+ * the enclosing block. The pairing {@link findCellPathForElement} says every producer owes. */
130
+ export function findSurfacePathForElement(el) {
131
+ return findCellPathForElement(el) ?? findBlockPathForElement(el);
132
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Pure predicates over CST paths, plus the `DocPath` brand home. No DOM, no document lookups.
3
+ * The predicates take `readonly number[]`: they order any path-shaped array regardless of what
4
+ * space it addresses, so brand-typing them to `DocPath` would force a cast at every call site.
5
+ */
6
+ declare const docPathBrand: unique symbol;
7
+ /**
8
+ * A path whose every prefix resolves from the document root: the dialect the commit seam
9
+ * requires and G1.16 checks (`op.eventPath` and `snapshot.path` carry it). `asDocPath` is the
10
+ * base mint; op families compose through `extendDocPath`/`docPathFrom` in
11
+ * `cursor/coordinate-spaces.ts`. G1.16 stays the runtime belt for JS callers types don't bind.
12
+ */
13
+ export type DocPath = number[] & {
14
+ readonly [docPathBrand]: true;
15
+ };
16
+ export declare function asDocPath(indices: number[]): DocPath;
17
+ /** Document order, ancestor-before-descendant: `[2]` precedes `[2, 0]`. */
18
+ export declare function comparePaths(a: readonly number[], b: readonly number[]): number;
19
+ /** True if `prefix` equals `path` or is a strict ancestor of it. */
20
+ export declare function pathHasPrefix(path: readonly number[], prefix: readonly number[]): boolean;
21
+ /** True if `ancestor` is a strict prefix of `descendant`'s path. */
22
+ export declare function isStrictAncestorOf(ancestor: readonly number[], descendant: readonly number[]): boolean;
23
+ export declare function pathsEqual(a: readonly number[], b: readonly number[]): boolean;
24
+ /** Number of shared leading indices between two paths. */
25
+ export declare function sharedPrefixLength(a: readonly number[], b: readonly number[]): number;
26
+ /** Longest shared prefix of two paths. */
27
+ export declare function lowestCommonAncestor(a: readonly number[], b: readonly number[]): number[];
28
+ /** True if `path` is strictly between `start` and `end` in document order. */
29
+ export declare function isPathBetween(path: readonly number[], start: readonly number[], end: readonly number[]): boolean;
30
+ /**
31
+ * True when path's entire subtree fits strictly inside (start, end). Stronger
32
+ * than `walkBetween`'s doc-order "between", which includes endpoint ancestors.
33
+ */
34
+ export declare function isPathSubtreeBetween(path: readonly number[], start: readonly number[], end: readonly number[]): boolean;
35
+ export {};
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Pure predicates over CST paths, plus the `DocPath` brand home. No DOM, no document lookups.
3
+ * The predicates take `readonly number[]`: they order any path-shaped array regardless of what
4
+ * space it addresses, so brand-typing them to `DocPath` would force a cast at every call site.
5
+ */
6
+ export function asDocPath(indices) {
7
+ return indices;
8
+ }
9
+ // ── Path predicates ────────────────────────────────────────────────────────
10
+ /** Document order, ancestor-before-descendant: `[2]` precedes `[2, 0]`. */
11
+ export function comparePaths(a, b) {
12
+ const len = Math.min(a.length, b.length);
13
+ for (let i = 0; i < len; i++) {
14
+ if (a[i] < b[i])
15
+ return -1;
16
+ if (a[i] > b[i])
17
+ return 1;
18
+ }
19
+ if (a.length < b.length)
20
+ return -1;
21
+ if (a.length > b.length)
22
+ return 1;
23
+ return 0;
24
+ }
25
+ /** True if `prefix` equals `path` or is a strict ancestor of it. */
26
+ export function pathHasPrefix(path, prefix) {
27
+ if (prefix.length > path.length)
28
+ return false;
29
+ for (let i = 0; i < prefix.length; i++) {
30
+ if (path[i] !== prefix[i])
31
+ return false;
32
+ }
33
+ return true;
34
+ }
35
+ /** True if `ancestor` is a strict prefix of `descendant`'s path. */
36
+ export function isStrictAncestorOf(ancestor, descendant) {
37
+ if (ancestor.length >= descendant.length)
38
+ return false;
39
+ for (let i = 0; i < ancestor.length; i++) {
40
+ if (ancestor[i] !== descendant[i])
41
+ return false;
42
+ }
43
+ return true;
44
+ }
45
+ export function pathsEqual(a, b) {
46
+ if (a.length !== b.length)
47
+ return false;
48
+ for (let i = 0; i < a.length; i++) {
49
+ if (a[i] !== b[i])
50
+ return false;
51
+ }
52
+ return true;
53
+ }
54
+ /** Number of shared leading indices between two paths. */
55
+ export function sharedPrefixLength(a, b) {
56
+ const len = Math.min(a.length, b.length);
57
+ for (let i = 0; i < len; i++) {
58
+ if (a[i] !== b[i])
59
+ return i;
60
+ }
61
+ return len;
62
+ }
63
+ /** Longest shared prefix of two paths. */
64
+ export function lowestCommonAncestor(a, b) {
65
+ const result = [];
66
+ const len = Math.min(a.length, b.length);
67
+ for (let i = 0; i < len; i++) {
68
+ if (a[i] !== b[i])
69
+ break;
70
+ result.push(a[i]);
71
+ }
72
+ return result;
73
+ }
74
+ // ── Range predicates ───────────────────────────────────────────────────────
75
+ /** True if `path` is strictly between `start` and `end` in document order. */
76
+ export function isPathBetween(path, start, end) {
77
+ return comparePaths(path, start) > 0 && comparePaths(path, end) < 0;
78
+ }
79
+ /**
80
+ * True when path's entire subtree fits strictly inside (start, end). Stronger
81
+ * than `walkBetween`'s doc-order "between", which includes endpoint ancestors.
82
+ */
83
+ export function isPathSubtreeBetween(path, start, end) {
84
+ return (!isStrictAncestorOf(path, start) &&
85
+ !isStrictAncestorOf(start, path) &&
86
+ !isStrictAncestorOf(path, end) &&
87
+ !isStrictAncestorOf(end, path) &&
88
+ !pathsEqual(path, start) &&
89
+ !pathsEqual(path, end));
90
+ }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Shared pointer-drag session: the document-listener + rAF-coalescing scaffold every drag
3
+ * lifecycle builds on. Owns the pointer-ownership filter, autoscroll wiring, and idempotent
4
+ * teardown; callers supply the per-surface move/end behavior and the options that genuinely
5
+ * differ. rAF here is frame-paced pointermove coalescing, not async sequencing (G4.4).
6
+ */
7
+ import { type AutoScrollDeps } from './autoscroll';
8
+ export interface PointerPosition {
9
+ clientX: number;
10
+ clientY: number;
11
+ }
12
+ export interface PointerDragSessionOptions {
13
+ /** Coalesced to one call per animation frame with the latest pointer: intermediate positions
14
+ * are dropped, so a consumer must answer the point it gets rather than wait for a better one. */
15
+ onMove(pointer: PointerPosition): void;
16
+ /**
17
+ * pointerup / pointercancel finalize, after the pending move flushes and the session tears
18
+ * down. NOT run on Escape or lifetime abort: those are pure teardowns.
19
+ */
20
+ onEnd?(reason: 'up' | 'cancel'): void;
21
+ /** Caller cleanup, run once on every teardown path (up, cancel, Escape, abort). */
22
+ onTeardown?(): void;
23
+ /** Scroll targets + axis; the session supplies the live pointer and rescroll. */
24
+ autoScroll: Pick<AutoScrollDeps, 'getTargets' | 'axis'>;
25
+ /**
26
+ * Drag/click discriminator in px: below this travel from `down` the gesture stays a click.
27
+ * Omit where the pointerdown already committed to a drag.
28
+ */
29
+ threshold?: number;
30
+ onDragRecognized?(): void;
31
+ /** Install a document keydown so Escape tears the session down. */
32
+ escape?: boolean;
33
+ /** Suppress native text selection for the drag's duration. */
34
+ disableUserSelect?: boolean;
35
+ /**
36
+ * Aborted on editor unmount. Without it an unmount mid-drag leaks the document listeners:
37
+ * pointerup never fires once the originating element is gone.
38
+ */
39
+ lifetimeSignal?: AbortSignal;
40
+ }
41
+ export declare function createPointerDragSession(down: PointerEvent, opts: PointerDragSessionOptions): {
42
+ dispose(): void;
43
+ };