@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,327 @@
1
+ /**
2
+ * The live-mode join rewrite (live-mode.md § 4.5): a literal concatenation surfaces the runs a
3
+ * truncation left unpaired and the closer/opener pair a split's inverse abuts around nothing. Both
4
+ * are dropped here and nowhere else, and only once the joined block re-parses to ONE prose block
5
+ * showing what the two sides showed.
6
+ */
7
+ import { constructContentRange, getContentRange, inlineDescendants, isProseKind, parseInline } from '../../../core/inline';
8
+ import { CONTENT_VISIBILITY, paintsOnlyChrome, renderedText } from '../../../core/inline/visibility';
9
+ import { trimTrailingLineEnding } from '../../../core/lines';
10
+ import { parse } from '../../../core/parser';
11
+ import { getInlineConstructPolicy } from '../../../schema/inline-construct-policy';
12
+ import { soleProseReparse } from './screen-diff';
13
+ // ── The rewrite ──────────────────────────────────────────────────────────────
14
+ export const cleanLiveJoinSeam = (join) => {
15
+ const resolver = join.linkRef?.current;
16
+ const left = readSide(join.start, 'before', resolver);
17
+ const right = readSide(join.end, 'after', resolver);
18
+ if (left === null || right === null)
19
+ return null;
20
+ // Nothing stands on the seam, so the literal join is already the answer — and the ordinary
21
+ // Backspace between two plain paragraphs pays no parse for it.
22
+ if (!standsOnSeam(left) && !standsOnSeam(right))
23
+ return null;
24
+ if (!anchorsOnMerged(join, left, right))
25
+ return null;
26
+ // The caller splices `typed` at the seam once this returns, so the bytes verified below are the
27
+ // bytes written: a typed run changes the flanking a kept delimiter pairs against.
28
+ const typed = join.typed ?? '';
29
+ const shown = shownAfterJoin(left, right, typed);
30
+ const pairs = abuttingPairSpans(join, left, right);
31
+ // Least destructive first: keep the runs the two sides can still pair across the seam, and fall
32
+ // back to dropping every stranded one. Identical readings render once.
33
+ const readings = [unpairedSpans(join, left, right), everyDanglingSpan(join, left, right)];
34
+ const spanSets = readings.map((dangling) => [...dangling, ...pairs]);
35
+ const candidates = (sameSpans(spanSets[0], spanSets[1]) ? [spanSets[0]] : spanSets).map((spans) => {
36
+ const raw = withoutSpans(join.mergedRaw, spans);
37
+ const seam = join.seam - droppedBefore(spans, join.seam);
38
+ return {
39
+ spans,
40
+ raw,
41
+ seam,
42
+ read: readCandidate(raw.slice(0, seam) + typed + raw.slice(seam), resolver, join)
43
+ };
44
+ });
45
+ // § 4.1's other half: a run the leanest reading keeps can be one the cut left enclosing nothing,
46
+ // and a pair over nothing passes the screen check. Least destructive is read among the rest.
47
+ const floor = Math.min(...candidates.map(({ read }) => read?.residue ?? Infinity));
48
+ for (const { raw: candidate, seam, read } of candidates) {
49
+ if (read === null || read.visible !== shown || read.residue > floor)
50
+ continue;
51
+ // A candidate that changed nothing IS the literal join: declining says so, and keeps the
52
+ // caller off a rewrite path it does not need.
53
+ if (candidate === join.mergedRaw)
54
+ return null;
55
+ // The split half's terminal-trivia rule, on the join: a whitespace-only survivor paints
56
+ // nothing and reloads as blank trivia, a different shape than the block written.
57
+ const display = trimTrailingLineEnding(candidate);
58
+ if (display !== '' && display.trim() === '') {
59
+ return { raw: candidate.slice(display.length), seam: 0 };
60
+ }
61
+ return { raw: candidate, seam };
62
+ }
63
+ return null;
64
+ };
65
+ /** Every byte a reading drops ahead of the seam moves the caret's landing with it. */
66
+ const droppedBefore = (spans, seam) => spans
67
+ .filter((span) => span.end <= seam)
68
+ .reduce((total, span) => total + span.end - span.start, 0);
69
+ const standsOnSeam = (side) => side.dangling.length > 0 || side.touching.length > 0;
70
+ const sameSpans = (a, b) => a.length === b.length && a.every((span, i) => span.start === b[i].start && span.end === b[i].end);
71
+ /**
72
+ * Read one endpoint's surviving bytes and the constructs its cut leaves at the seam. Null where
73
+ * the cleanup has no business running: a non-prose kind, an offset outside the content, or a cut
74
+ * through a family that declares no close-and-reopen, whose bytes mean nothing apart.
75
+ */
76
+ function readSide(endpoint, keep, resolver) {
77
+ const { node, offset } = endpoint;
78
+ if (!isProseKind(node.kind))
79
+ return null;
80
+ const content = getContentRange(node);
81
+ if (offset < content.start || offset > content.end)
82
+ return null;
83
+ const inlines = parseInline(node.raw, content.start, content.end, resolver);
84
+ // Chrome standing over nothing is all on screen (live-mode.md § 4.1), so a run surviving this
85
+ // cut is bytes the reader saw, not a stranded one: the literal join stands.
86
+ if (paintsOnlyChrome(inlines, node.raw))
87
+ return null;
88
+ const { ranged, atomic } = classifyConstructs(inlines);
89
+ // Neither an atomic construct's interior nor the middle of a delimiter run leaves halves any
90
+ // reading of the seam can repair. Live's caret cannot land there; a plugin's can.
91
+ if (atomic.some((span) => offset > span.start && offset < span.end))
92
+ return null;
93
+ if (ranged.some((c) => splitsARun(c, offset)))
94
+ return null;
95
+ // Dangling is about the PARTNER, so content-range containment is not the test: a cut at a
96
+ // construct's content start leaves its opener behind just as one in the middle does.
97
+ const dangling = ranged.filter((c) => keep === 'before'
98
+ ? c.content.start <= offset && offset < c.node.end
99
+ : c.node.start < offset && offset <= c.content.end);
100
+ if (dangling.some((c) => !isRejoinable(c.kind)))
101
+ return null;
102
+ return {
103
+ raw: node.raw,
104
+ content,
105
+ cut: offset,
106
+ inlines,
107
+ dangling,
108
+ touching: touchingChain(ranged, offset, keep)
109
+ };
110
+ }
111
+ /** Text is content, not a construct, and nothing under it is one either — the descent predicate
112
+ * the two censuses below share. */
113
+ const isConstruct = (node) => node.kind !== 'text';
114
+ /** Constructs with a content range (outermost first) apart from those without one, whose bytes
115
+ * the seam can only step around. */
116
+ function classifyConstructs(inlines) {
117
+ const ranged = [];
118
+ const atomic = [];
119
+ for (const node of inlineDescendants(inlines, isConstruct)) {
120
+ if (node.kind === 'text')
121
+ continue;
122
+ const content = constructContentRange(node);
123
+ if (!content) {
124
+ atomic.push({ start: node.start, end: node.end });
125
+ continue;
126
+ }
127
+ ranged.push({ kind: node.kind, node: { start: node.start, end: node.end }, content });
128
+ }
129
+ return { ranged, atomic };
130
+ }
131
+ const splitsARun = (c, at) => (at > c.node.start && at < c.content.start) || (at > c.content.end && at < c.node.end);
132
+ /** Whether the family declares its delimiters cuttable and rejoinable at all (live-mode.md § 4.4). */
133
+ function isRejoinable(kind) {
134
+ return getInlineConstructPolicy(kind)?.splitBehavior === 'close-and-reopen';
135
+ }
136
+ /**
137
+ * The nested chain of closers ending at `cut` (or openers starting there), peeled outermost
138
+ * first: `**a *b***` cut at its end gives the strong, then the emphasis its closer wraps. This is
139
+ * the shape `live-split-rebalance` writes, read back.
140
+ */
141
+ function touchingChain(constructs, cut, keep) {
142
+ const chain = [];
143
+ let at = cut;
144
+ for (;;) {
145
+ const link = constructs.find((c) => keep === 'before' ? c.node.end === at : c.node.start === at);
146
+ if (!link || !isRejoinable(link.kind))
147
+ return chain;
148
+ chain.push(link);
149
+ at = keep === 'before' ? link.content.end : link.content.start;
150
+ }
151
+ }
152
+ /** Whether the merged bytes are still the two sides' bytes end to end — a normalizer that
153
+ * rewrote either one moves every offset below, so the cleanup stands down instead. */
154
+ function anchorsOnMerged(join, left, right) {
155
+ return (join.mergedRaw.slice(0, join.seam) === left.raw.slice(0, left.cut) &&
156
+ join.mergedRaw.startsWith(right.raw.slice(right.cut, right.content.end), join.seam));
157
+ }
158
+ // ── The spans a join may drop ────────────────────────────────────────────────
159
+ /** A left-side span is already in merged coordinates; a right-side one shifts by the seam. */
160
+ const rightSpan = (join, right, span) => ({
161
+ start: join.seam + span.start - right.cut,
162
+ end: join.seam + span.end - right.cut
163
+ });
164
+ const openerRun = (c) => ({ start: c.node.start, end: c.content.start });
165
+ const closerRun = (c) => ({ start: c.content.end, end: c.node.end });
166
+ /** Whether two constructs are written with the same delimiters — the byte-level test for "these
167
+ * are one construct's two halves", which kind equality alone cannot make (`__a__` vs `**a**`). */
168
+ const sameDelimiters = (left, lc, right, rc) => left.raw.slice(lc.node.start, lc.content.start) ===
169
+ right.raw.slice(rc.node.start, rc.content.start) &&
170
+ left.raw.slice(lc.content.end, lc.node.end) === right.raw.slice(rc.content.end, rc.node.end);
171
+ /**
172
+ * The runs a truncation stranded that the join does NOT put back together: the left's opener
173
+ * chain and the right's closer chain, minus the leading pairs whose kinds line up — those two
174
+ * halves make one construct across the seam, which is what the reader had.
175
+ */
176
+ function unpairedSpans(join, left, right) {
177
+ let paired = 0;
178
+ while (paired < left.dangling.length &&
179
+ paired < right.dangling.length &&
180
+ left.dangling[paired].kind === right.dangling[paired].kind) {
181
+ paired++;
182
+ }
183
+ return [
184
+ ...left.dangling.slice(paired).map(openerRun),
185
+ ...right.dangling.slice(paired).map((c) => rightSpan(join, right, closerRun(c)))
186
+ ];
187
+ }
188
+ /** The fallback reading: every stranded run goes, so the joined text stands as plain content. */
189
+ function everyDanglingSpan(join, left, right) {
190
+ return [
191
+ ...left.dangling.map(openerRun),
192
+ ...right.dangling.map((c) => rightSpan(join, right, closerRun(c)))
193
+ ];
194
+ }
195
+ /**
196
+ * The closer/opener pair a split's inverse brings back to back: same kinds nested the same way,
197
+ * written with the same bytes, enclosing nothing between them. Whole chain or nothing — dropping
198
+ * an outer pair while an inner one stays would leave both halves' runs unbalanced.
199
+ */
200
+ function abuttingPairSpans(join, left, right) {
201
+ const closing = left.touching;
202
+ const opening = right.touching;
203
+ if (closing.length === 0 || closing.length !== opening.length)
204
+ return [];
205
+ for (let i = 0; i < closing.length; i++) {
206
+ if (closing[i].kind !== opening[i].kind)
207
+ return [];
208
+ if (!sameDelimiters(left, closing[i], right, opening[i]))
209
+ return [];
210
+ }
211
+ return [
212
+ { start: closing[closing.length - 1].content.end, end: left.cut },
213
+ rightSpan(join, right, {
214
+ start: right.cut,
215
+ end: opening[opening.length - 1].content.start
216
+ })
217
+ ];
218
+ }
219
+ function withoutSpans(raw, spans) {
220
+ let out = '';
221
+ let at = 0;
222
+ for (const span of [...spans].sort((a, b) => a.start - b.start)) {
223
+ if (span.start < at)
224
+ continue;
225
+ out += raw.slice(at, span.start);
226
+ at = span.end;
227
+ }
228
+ return out + raw.slice(at);
229
+ }
230
+ // ── Verification ─────────────────────────────────────────────────────────────
231
+ /**
232
+ * What the reader is owed: what each side ALREADY SHOWED of the bytes that survive. Read off the
233
+ * pre-join parse, never off the joined halves — either of those bakes the defect this checks for
234
+ * into its own expectation.
235
+ */
236
+ const shownAfterJoin = (left, right, typed) => visibleSide(left, 'before') + typed + visibleSide(right, 'after');
237
+ /**
238
+ * What a reader sees, asked of the thing that paints it: the render path's own DOM with every
239
+ * marker span dropped. The clip decides only WHERE the bytes stop; a construct the cut crosses
240
+ * contributes its content, since its delimiter runs paint nothing either way — which `readSide`
241
+ * has already established by declining a side whose chrome paints.
242
+ */
243
+ function visibleSide(side, keep) {
244
+ return renderedText(clipNodes(side.inlines, side.cut, keep), side.raw, CONTENT_VISIBILITY);
245
+ }
246
+ /**
247
+ * The `keep` side of `level`, rebuilt: a construct the cut crosses hands its place to its own
248
+ * clipped children. Exported for the depth pin, which has to reach the rebuild with a tree no
249
+ * side this deep could be rendered at.
250
+ */
251
+ export function clipNodes(level, cut, keep) {
252
+ const before = keep === 'before';
253
+ // A crossed construct is emitted as its children, in its own place, so the pre-order's
254
+ // emission order is the rebuilt list's order.
255
+ const crossed = (node) => isConstruct(node) && node.start < cut && node.end > cut;
256
+ const out = [];
257
+ for (const node of inlineDescendants(level, crossed)) {
258
+ if (before ? node.end <= cut : node.start >= cut) {
259
+ out.push(node);
260
+ continue;
261
+ }
262
+ if (before ? node.start >= cut : node.end <= cut)
263
+ continue;
264
+ if (node.kind === 'text') {
265
+ out.push({ ...node, ...(before ? { end: cut } : { start: cut }) });
266
+ continue;
267
+ }
268
+ const content = constructContentRange(node);
269
+ if (!content)
270
+ continue;
271
+ if (node.children && node.children.length > 0)
272
+ continue;
273
+ // A code span carries its content as bytes rather than children, so the surviving part of
274
+ // it is that byte range read as text — which is exactly what the span paints.
275
+ const start = before ? content.start : Math.max(content.start, cut);
276
+ const end = before ? Math.min(content.end, cut) : content.end;
277
+ if (end > start)
278
+ out.push({ kind: 'text', start, end });
279
+ }
280
+ return out;
281
+ }
282
+ /**
283
+ * The candidate read back as the caller will install it: what it shows, and how many constructs its
284
+ * row unwraps are left standing over nothing. Null where a join produces something the caller cannot
285
+ * install — two blocks, a kind with no inline content, or a body the container would re-read.
286
+ */
287
+ function readCandidate(raw, resolver, join) {
288
+ if (!keepsContainerMarker(join.ambientPrefix ?? '', raw))
289
+ return null;
290
+ const sole = soleProseReparse(raw, resolver);
291
+ if (sole === null)
292
+ return null;
293
+ const { block, nodes } = sole;
294
+ return {
295
+ visible: renderedText(nodes, block.raw, CONTENT_VISIBILITY),
296
+ // Chrome standing over nothing is all on screen (§ 4.1), so a block that paints hides no pair.
297
+ residue: paintsOnlyChrome(nodes, block.raw) ? 0 : countResidue(nodes, block.raw)
298
+ };
299
+ }
300
+ /**
301
+ * Whether the container still reads its own marker off the candidate. The item's marker is not in
302
+ * these bytes but absorbs from them, so a body the cut left starting with a space reloads under a
303
+ * WIDER marker than the live tree holds — the load/save cycle would then change the tree.
304
+ */
305
+ function keepsContainerMarker(prefix, raw) {
306
+ if (prefix === '')
307
+ return true;
308
+ const blocks = parse(prefix + raw, { scope: 'fragment' }).children;
309
+ if (blocks.length !== 1)
310
+ return false;
311
+ return blocks[0].marker === prefix;
312
+ }
313
+ /** Constructs the reader would meet as nothing at all: no painted byte, and a row that unwraps
314
+ * them when emptied rather than leaving delimiters over nothing. */
315
+ function countResidue(nodes, raw) {
316
+ let found = 0;
317
+ for (const node of inlineDescendants(nodes, isConstruct)) {
318
+ if (node.kind === 'text')
319
+ continue;
320
+ if (node.end > node.start &&
321
+ renderedText([node], raw, CONTENT_VISIBILITY) === '' &&
322
+ getInlineConstructPolicy(node.kind)?.autoUnwrapOnEmpty === true) {
323
+ found++;
324
+ }
325
+ }
326
+ return found;
327
+ }
@@ -0,0 +1,68 @@
1
+ /**
2
+ * What a native ranged edit writes in live mode. The range it targets can span delimiter runs the
3
+ * user never saw and contenteditable takes those literally, so the edit is re-expressed as a JOIN
4
+ * of what survives on either side and crosses the shared seam (live-mode.md § 4.5). Every editable
5
+ * prose surface routes its `beforeinput` through {@link resolveLiveRangeEdit}, so a gesture family
6
+ * cannot reach the bytes by being absent from a list.
7
+ */
8
+ import type { NodeView } from '../../../core/node-views';
9
+ import type { PresentationMode } from '../../../presentation-mode';
10
+ import type { InlineResolverRef } from '../../../schema/inline-construct-policy';
11
+ export interface SelectionEdit {
12
+ /** The block's whole bytes after the edit, trailing line ending included. */
13
+ raw: string;
14
+ caret: number;
15
+ }
16
+ /** The raw-offset readers a native ranged edit needs from its surface. */
17
+ export interface LiveEditCursor {
18
+ rawRangeOf(range: AbstractRange): {
19
+ start: number;
20
+ end: number;
21
+ } | null;
22
+ getRawSelection(): {
23
+ start: number;
24
+ end: number;
25
+ } | null;
26
+ }
27
+ /** Rewrite the block's bytes, or SWALLOW the press: an input this seam owns whose payload it may
28
+ * not read writes nothing, since the engine's version would splice the hidden runs literally. */
29
+ export type LiveRangeEdit = LiveRangeRewrite | {
30
+ kind: 'swallow';
31
+ };
32
+ export interface LiveRangeRewrite {
33
+ kind: 'rewrite';
34
+ range: {
35
+ start: number;
36
+ end: number;
37
+ };
38
+ raw: string;
39
+ caret: number;
40
+ }
41
+ /**
42
+ * What a prose surface does with a `beforeinput` in live mode. Null wherever the press is not this
43
+ * seam's or the seam has nothing to clean — there the engine's own edit is already right, and
44
+ * leaving it native keeps its grapheme and IME behavior.
45
+ */
46
+ export declare function resolveLiveRangeEdit(e: InputEvent, node: NodeView, cursor: LiveEditCursor, presentationMode: PresentationMode | undefined, linkRef: InlineResolverRef | undefined, ambientPrefix?: string): LiveRangeEdit | null;
47
+ /**
48
+ * The whole surface arm around {@link resolveLiveRangeEdit}: stand down while a source reveal has
49
+ * outrun the CST, resolve, preventDefault what the seam owns, then swallow or hand the rewrite to
50
+ * the surface's own `commit`. Shared so a new precondition lands on every surface at once.
51
+ */
52
+ export declare function applyLiveRangeEdit(e: InputEvent, node: NodeView, cursor: LiveEditCursor, presentationMode: PresentationMode | undefined, linkRef: InlineResolverRef | undefined, ambientPrefix: string, isRevealing: () => boolean, commit: (edit: LiveRangeRewrite) => void): boolean;
53
+ /**
54
+ * The bytes replacing `[start, end)` with `typed`, or null when the seam had nothing to clean.
55
+ * Exported for the callers that already hold a range of their own (the composition commit, the
56
+ * gesture fuzzer) rather than an event to read one off.
57
+ */
58
+ export declare function resolveSelectionEdit(node: NodeView, selection: {
59
+ start: number;
60
+ end: number;
61
+ }, typed: string, presentationMode: PresentationMode | undefined, linkRef: InlineResolverRef | undefined, ambientPrefix?: string): SelectionEdit | null;
62
+ /** The delete of `[start, end)` a destructive gesture installs: the seam's cleaned rewrite where
63
+ * it has one, else the literal display splice with the caret at the cut — the fallback's one
64
+ * home, so no arm carrying it can drift. */
65
+ export declare function deleteRangeRaw(node: NodeView, range: {
66
+ start: number;
67
+ end: number;
68
+ }, presentationMode: PresentationMode | undefined, linkRef: InlineResolverRef | undefined, ambientPrefix: string): SelectionEdit;
@@ -0,0 +1,120 @@
1
+ /**
2
+ * What a native ranged edit writes in live mode. The range it targets can span delimiter runs the
3
+ * user never saw and contenteditable takes those literally, so the edit is re-expressed as a JOIN
4
+ * of what survives on either side and crosses the shared seam (live-mode.md § 4.5). Every editable
5
+ * prose surface routes its `beforeinput` through {@link resolveLiveRangeEdit}, so a gesture family
6
+ * cannot reach the bytes by being absent from a list.
7
+ */
8
+ import { snapToScalarBoundary, trailingLineEnding, trimTrailingLineEnding } from '../../../core/lines';
9
+ import { cleanJoinedRaw } from '../../../tree-operations/node-ops';
10
+ /**
11
+ * What a prose surface does with a `beforeinput` in live mode. Null wherever the press is not this
12
+ * seam's or the seam has nothing to clean — there the engine's own edit is already right, and
13
+ * leaving it native keeps its grapheme and IME behavior.
14
+ */
15
+ export function resolveLiveRangeEdit(e, node, cursor, presentationMode, linkRef, ambientPrefix = '') {
16
+ if (presentationMode !== 'live' || !rewritesTargetRange(e))
17
+ return null;
18
+ const range = pendingEditRange(e, cursor);
19
+ if (!range)
20
+ return null;
21
+ const insert = replacementText(e);
22
+ const edit = resolveSelectionEdit(node, range, insert ?? '', presentationMode, linkRef, ambientPrefix);
23
+ if (!edit)
24
+ return null;
25
+ return insert === null
26
+ ? { kind: 'swallow' }
27
+ : { kind: 'rewrite', range, raw: edit.raw, caret: edit.caret };
28
+ }
29
+ /**
30
+ * The whole surface arm around {@link resolveLiveRangeEdit}: stand down while a source reveal has
31
+ * outrun the CST, resolve, preventDefault what the seam owns, then swallow or hand the rewrite to
32
+ * the surface's own `commit`. Shared so a new precondition lands on every surface at once.
33
+ */
34
+ export function applyLiveRangeEdit(e, node, cursor, presentationMode, linkRef, ambientPrefix, isRevealing, commit) {
35
+ if (isRevealing())
36
+ return false;
37
+ const edit = resolveLiveRangeEdit(e, node, cursor, presentationMode, linkRef, ambientPrefix);
38
+ if (!edit)
39
+ return false;
40
+ e.preventDefault();
41
+ if (edit.kind === 'rewrite')
42
+ commit(edit);
43
+ return true;
44
+ }
45
+ /**
46
+ * The bytes replacing `[start, end)` with `typed`, or null when the seam had nothing to clean.
47
+ * Exported for the callers that already hold a range of their own (the composition commit, the
48
+ * gesture fuzzer) rather than an event to read one off.
49
+ */
50
+ export function resolveSelectionEdit(node, selection, typed, presentationMode, linkRef, ambientPrefix = '') {
51
+ // Both ends off any scalar interior before the slice: a half-pair here is unrecoverable
52
+ // bytes, not a recoverable edit. Snapping the same direction cannot invert the range.
53
+ const start = snapToScalarBoundary(node.raw, selection.start);
54
+ const end = snapToScalarBoundary(node.raw, selection.end);
55
+ if (start >= end)
56
+ return null;
57
+ const mergedRaw = node.raw.slice(0, start) + node.raw.slice(end);
58
+ // `typed` rides the seam rather than being spliced past it: the bytes the cleanup verifies have
59
+ // to be the bytes this returns, or the flanking it checked is not the flanking that ships.
60
+ const joined = cleanJoinedRaw({
61
+ mergedRaw,
62
+ seam: start,
63
+ start: { node, offset: start },
64
+ end: { node, offset: end },
65
+ linkRef,
66
+ typed,
67
+ ambientPrefix
68
+ }, presentationMode);
69
+ if (joined.raw === mergedRaw)
70
+ return null;
71
+ // The insert lands where the two sides now meet — the paste-at-a-cleaned-seam rule: cleanup
72
+ // runs in the DELETE half, and the commit's own re-parse settles what the new bytes make of it.
73
+ return {
74
+ raw: joined.raw.slice(0, joined.seam) + typed + joined.raw.slice(joined.seam),
75
+ caret: joined.seam + typed.length
76
+ };
77
+ }
78
+ /** The delete of `[start, end)` a destructive gesture installs: the seam's cleaned rewrite where
79
+ * it has one, else the literal display splice with the caret at the cut — the fallback's one
80
+ * home, so no arm carrying it can drift. */
81
+ export function deleteRangeRaw(node, range, presentationMode, linkRef, ambientPrefix) {
82
+ const cleaned = resolveSelectionEdit(node, range, '', presentationMode, linkRef, ambientPrefix);
83
+ if (cleaned)
84
+ return cleaned;
85
+ const display = trimTrailingLineEnding(node.raw);
86
+ return {
87
+ raw: display.slice(0, range.start) + display.slice(range.end) + trailingLineEnding(node.raw),
88
+ caret: range.start
89
+ };
90
+ }
91
+ // ── Reading the event ────────────────────────────────────────────────────────
92
+ /**
93
+ * The range the pending edit will rewrite. `getTargetRanges()` is the authority — a word or line
94
+ * delete at a COLLAPSED caret reports the run, not the caret — and is feature-detected because
95
+ * jsdom implements no such method.
96
+ */
97
+ function pendingEditRange(e, cursor) {
98
+ const targets = typeof e.getTargetRanges === 'function' ? e.getTargetRanges() : [];
99
+ return targets.length > 0 ? cursor.rawRangeOf(targets[0]) : cursor.getRawSelection();
100
+ }
101
+ /**
102
+ * The inputs that rewrite the range they target: every delete family — word, line, drag, cut,
103
+ * forward, backward — plus the two that replace it with text. Paste and composition carry seams of
104
+ * their own; composing is excluded by the NAME and by the flag rather than by listing the two
105
+ * delete types today's engines spell, since `composition-seat.ts` owns that window end to end and a
106
+ * second resolution here writes the block twice.
107
+ */
108
+ function rewritesTargetRange(e) {
109
+ if (e.isComposing || /composition/i.test(e.inputType))
110
+ return false;
111
+ return (e.inputType.startsWith('delete') ||
112
+ e.inputType === 'insertText' ||
113
+ e.inputType === 'insertReplacementText');
114
+ }
115
+ /** What an input writes over its range, or null for a payload this seam may not read: text riding
116
+ * a `dataTransfer` would reach the commit's re-parse without the paste transforms (G4.11), and a
117
+ * swallowed press is sounder than turning a replacement into a delete. */
118
+ function replacementText(e) {
119
+ return e.inputType.startsWith('delete') ? '' : e.data;
120
+ }
@@ -0,0 +1,56 @@
1
+ /**
2
+ * The live-mode split rewrite (live-mode.md § 4.4 close-and-reopen): Enter inside a construct
3
+ * closes it before the cut and reopens it after, so neither half strands a run the reader never
4
+ * saw. Bytes stay candidates until the parser agrees; null leaves `splitNode`'s byte-literal cut.
5
+ */
6
+ import type { LinkReferenceResolver } from '../../../core/inline/link-reference-resolver';
7
+ import type { AnyInlineKind, InlineNode } from '../../../core/nodes';
8
+ import { type LiveSplitRebalancer } from '../../../schema/inline-construct-policy';
9
+ export declare const rebalanceLiveSplit: LiveSplitRebalancer;
10
+ /** The original bytes, plus what each half carries beyond the content it took: the padding line
11
+ * ending, or a structural suffix the split has already moved (a setext underline). */
12
+ interface SplitBytes {
13
+ raw: string;
14
+ contentStart: number;
15
+ contentEnd: number;
16
+ /** Where the second half's content begins in `raw` — past a line ending the cut consumed. */
17
+ cut: number;
18
+ firstResidue: string;
19
+ secondResidue: string;
20
+ }
21
+ export interface ChainLink {
22
+ kind: AnyInlineKind;
23
+ start: number;
24
+ end: number;
25
+ contentStart: number;
26
+ contentEnd: number;
27
+ }
28
+ /**
29
+ * Every construct holding `offset`, outermost first — or null when one of them declines. A kind
30
+ * with no policy row, one whose split behavior is plain and one whose content bounds are unknown
31
+ * cannot be cut open, and cutting the constructs inside one would strand its pair. Exported for
32
+ * the depth pin, which has to reach it with a tree no split this deep could be rendered at.
33
+ */
34
+ export declare function splittableChainAt(inlines: readonly InlineNode[], offset: number): ChainLink[] | null;
35
+ interface SeamParts {
36
+ /** Bytes before the seam, the block's own marker prefix included. */
37
+ head: string;
38
+ closers: string;
39
+ openers: string;
40
+ /** Bytes after the seam, up to the block's content end. */
41
+ tail: string;
42
+ closed: AnyInlineKind[];
43
+ reopened: AnyInlineKind[];
44
+ }
45
+ interface RebalancedHalves {
46
+ firstRaw: string;
47
+ secondRaw: string;
48
+ /** Bytes this candidate left out, which the conservation check then expects to be missing. */
49
+ droppedTail?: string;
50
+ }
51
+ /**
52
+ * A candidate answers every question below or it is not written. Exported for the verification
53
+ * test, which has to reach it with a candidate no producer here would build.
54
+ */
55
+ export declare function parsesBack(bytes: SplitBytes, seam: SeamParts, candidate: RebalancedHalves, resolver: LinkReferenceResolver | undefined): boolean;
56
+ export {};