@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,197 @@
1
+ /**
2
+ * Which side of a construct's unpainted marker run a typed byte belongs to: a run painted at zero
3
+ * width leaves one screen position naming two raw offsets. The kind's `edgeAffinity` policy answers
4
+ * first (a link never extends), the arrival affinity second — and the painter has the last word
5
+ * (live-mode.md § 2), since a seat that reads right can parse wrong.
6
+ */
7
+ import { constructContentRange, inlineDescendants, parseInline } from '../../../core/inline';
8
+ import { CONTENT_VISIBILITY, renderedText, visibleRuns } from '../../../core/inline/visibility';
9
+ import { getInlineConstructPolicy } from '../../../schema/inline-construct-policy';
10
+ import { insertsExactly } from './screen-diff';
11
+ /**
12
+ * Where `typed` belongs when the caret sits at `caretOffset`, or null when the offset touches no
13
+ * construct marker run, the kind declares no policy, or no candidate earns the write. Declining is
14
+ * the honest fallback: the byte then lands at the caret, which is what the engine writes anyway.
15
+ */
16
+ export function resolveEdgeSeat(caretOffset, inlines, affinity, raw, screen, typed) {
17
+ const runs = markerRuns(inlines, raw, screen);
18
+ const run = runAt(caretOffset, runs);
19
+ if (!run)
20
+ return null;
21
+ const policy = getInlineConstructPolicy(run.kind);
22
+ if (!policy)
23
+ return null;
24
+ const content = contentBounds(inlines);
25
+ const before = shown(raw, content.start, content.end);
26
+ const holds = (offset) => {
27
+ const candidate = raw.slice(0, offset) + typed + raw.slice(offset);
28
+ const after = shown(candidate, content.start, content.end + typed.length);
29
+ return insertsExactly(before, after, typed);
30
+ };
31
+ for (const offset of candidateOffsets(run, policy.edgeAffinity, affinity, caretOffset, runs)) {
32
+ // The walk's read and Chromium's insertion canonicalize the same way, so a verified
33
+ // `seat === caret` means native typing already lands where the seat wants it.
34
+ if (offset === caretOffset) {
35
+ if (holds(offset))
36
+ return null;
37
+ continue;
38
+ }
39
+ if (holds(offset))
40
+ return { offset, kind: run.kind };
41
+ }
42
+ return null;
43
+ }
44
+ /**
45
+ * The bytes a COMPOSITION commit should have written. `insertCompositionText` beforeinput is not
46
+ * cancelable, so the seat cannot intercept the keystroke and relocates the composed run once, on
47
+ * the commit that lands it. Null leaves the read as-is.
48
+ */
49
+ export function relocateComposedRun(before, after, composedAt, inlines, affinity, screen) {
50
+ const composed = plainInsertionAt(before, after, composedAt);
51
+ if (composed === null)
52
+ return null;
53
+ const seat = resolveEdgeSeat(composedAt, inlines, affinity, before, screen, composed);
54
+ if (!seat)
55
+ return null;
56
+ return {
57
+ raw: before.slice(0, seat.offset) + composed + before.slice(seat.offset),
58
+ caret: seat.offset + composed.length
59
+ };
60
+ }
61
+ /** The text a commit's read added at `at`, or null when the read is not a plain insertion
62
+ * there — a composition over a selection is a range op, and no seat claims a range. */
63
+ export function plainInsertionAt(before, after, at) {
64
+ const length = after.length - before.length;
65
+ if (length <= 0 || at < 0 || at > before.length)
66
+ return null;
67
+ if (after.slice(0, at) !== before.slice(0, at))
68
+ return null;
69
+ if (after.slice(at + length) !== before.slice(at))
70
+ return null;
71
+ return after.slice(at, at + length);
72
+ }
73
+ /**
74
+ * Every raw offset the caret's screen position ADMITS — the seat's whole reach, and empty where no
75
+ * marker run touches the caret. A hidden run's hidden neighbours name the same position, so the
76
+ * stretch of abutting runs is one position and each boundary in it is a seat; an offset inside a
77
+ * run's own bytes is inside some construct's delimiters, which is where no byte belongs. A caret
78
+ * strictly inside a run is one such offset, so the reach can exclude the caret it was asked about.
79
+ */
80
+ export function seatOffsetsAt(caretOffset, inlines, raw, screen) {
81
+ const runs = markerRuns(inlines, raw, screen);
82
+ const run = runAt(caretOffset, runs);
83
+ if (!run)
84
+ return [];
85
+ const offsets = screenPositionOffsets(run, runs);
86
+ return getInlineConstructPolicy(run.kind)?.edgeAffinity === 'never-extend'
87
+ ? offsets.filter((offset) => outsideSpan(run, offset))
88
+ : offsets;
89
+ }
90
+ function offsetForSide(run, side) {
91
+ if (side === 'near')
92
+ return run.start;
93
+ if (side === 'far')
94
+ return run.end;
95
+ return run.leading ? run.start : run.end;
96
+ }
97
+ const otherEnd = (run, side) => offsetForSide(run, side) === run.start ? run.end : run.start;
98
+ /**
99
+ * The offsets to try, best first: the policy's side, then the run's other end — the split
100
+ * rebalancer's space-outside reading in the seat's terms, since a byte the run's inner side kills
101
+ * is one its outer side keeps. Then the byte-literal write, verified like any other candidate: a
102
+ * parse it rebinds is no reason to stop looking. The rest of the screen position ends the list,
103
+ * nearest the policy's side first, for the caret whose own construct has no answer to give.
104
+ */
105
+ function candidateOffsets(run, edgeAffinity, affinity, caretOffset, runs) {
106
+ // Never-extend resolves like a line extreme: past the construct's delimiters, which is the
107
+ // run's near side at an opener and its far side at a closer. A symmetric pair follows the
108
+ // arrival, defaulting to the near side — the gdocs click default (live-mode.md § 4.2).
109
+ const side = edgeAffinity === 'never-extend' ? 'outside' : (affinity ?? 'near');
110
+ const preferred = offsetForSide(run, side);
111
+ const ranked = [preferred, otherEnd(run, side), caretOffset];
112
+ const rest = screenPositionOffsets(run, runs)
113
+ .filter((offset) => !ranked.includes(offset))
114
+ .sort((a, b) => Math.abs(a - preferred) - Math.abs(b - preferred));
115
+ const offsets = [...new Set([...ranked, ...rest])];
116
+ return edgeAffinity === 'never-extend' ? offsets.filter((o) => outsideSpan(run, o)) : offsets;
117
+ }
118
+ /** Whether `offset` lies outside the run's own construct. A `never-extend` row admits nothing
119
+ * inside: half a URL is not a URL, half an escape is a literal backslash, and a destination the
120
+ * mode never paints is one the painter cannot check. Stated over the SPAN rather than over the
121
+ * run's inner end, since the screen position reaches an interior through a neighbour's run too. */
122
+ const outsideSpan = (run, offset) => offset <= run.span.start || offset >= run.span.end;
123
+ /** The stretch of abutting runs `run` belongs to, as the boundary offsets inside it. */
124
+ function screenPositionOffsets(run, runs) {
125
+ let lo = run.start;
126
+ let hi = run.end;
127
+ for (let grew = true; grew;) {
128
+ grew = false;
129
+ for (const other of runs) {
130
+ if (other.start > hi || other.end < lo)
131
+ continue;
132
+ if (other.start < lo) {
133
+ lo = other.start;
134
+ grew = true;
135
+ }
136
+ if (other.end > hi) {
137
+ hi = other.end;
138
+ grew = true;
139
+ }
140
+ }
141
+ }
142
+ const bounds = new Set([lo, hi]);
143
+ for (const other of runs) {
144
+ if (other.start >= lo && other.start <= hi)
145
+ bounds.add(other.start);
146
+ if (other.end >= lo && other.end <= hi)
147
+ bounds.add(other.end);
148
+ }
149
+ return [...bounds];
150
+ }
151
+ /** The bytes the inline tree covers — the block's content range, read off the tree rather than
152
+ * taken as a second parameter that could disagree with it. */
153
+ function contentBounds(inlines) {
154
+ return { start: inlines[0].start, end: inlines[inlines.length - 1].end };
155
+ }
156
+ /** What a reader sees, asked of the thing that paints it (G4.33). The content reading, not the
157
+ * block's own: this seam only ADDS bytes, so no reading of it licenses dropping one. */
158
+ const shown = (raw, start, end) => renderedText(parseInline(raw, start, end), raw, CONTENT_VISIBILITY);
159
+ /** Every construct marker run, in pre-order. */
160
+ function markerRuns(inlines, raw, screen) {
161
+ const runs = [];
162
+ for (const node of inlineDescendants(inlines)) {
163
+ const content = constructContentRange(node) ?? paintedRange(node, raw, screen);
164
+ if (!content)
165
+ continue;
166
+ const span = { start: node.start, end: node.end };
167
+ if (node.start < content.start) {
168
+ runs.push({ start: node.start, end: content.start, leading: true, kind: node.kind, span });
169
+ }
170
+ if (content.end < node.end) {
171
+ runs.push({ start: content.end, end: node.end, leading: false, kind: node.kind, span });
172
+ }
173
+ }
174
+ return runs;
175
+ }
176
+ /**
177
+ * The run `offset` sits in, its own boundaries included — the LAST in pre-order, so the innermost
178
+ * construct at a shared boundary wins. INSIDE counts, not just the two ends: a doubled code fence
179
+ * is a run a caret can be handed the middle of.
180
+ */
181
+ const runAt = (offset, runs) => runs.reduce((found, run) => (offset >= run.start && offset <= run.end ? run : found), null);
182
+ /**
183
+ * What a CHILDLESS construct paints, as a range in the block's own bytes: the outer bounds of its
184
+ * visible runs, which such a construct has one contiguous stretch of — the precondition the two
185
+ * marker runs below are carved out of, held by `test/core/inline/painted-contiguity.property`.
186
+ * Asked of the render path rather than derived per kind, since which bytes a construct shows only
187
+ * the painter answers (G4.33), and in the block's OWN reading: where its chrome paints, the whole
188
+ * construct is on screen, no run is hidden, and the seat has nothing to relocate.
189
+ */
190
+ function paintedRange(node, raw, screen) {
191
+ if (node.kind === 'text')
192
+ return null;
193
+ const painted = visibleRuns([node], raw, screen).filter((run) => run.visible && run.text !== '');
194
+ if (painted.length === 0)
195
+ return null;
196
+ return { start: painted[0].start, end: painted[painted.length - 1].end };
197
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Whether a block keeps structure PAST its content that the surface paints nothing for — today the
3
+ * setext underline. A merge past it concatenates it into view (`Title\n===` + `next` reparses to a
4
+ * paragraph showing `===next`), so the keydown dispatch consumes the press and the command arm
5
+ * declines it — one home, since the two ask from different coordinate sources (live-mode.md § 4.5).
6
+ */
7
+ import type { NodeView } from '../../../core/node-views';
8
+ /** `displayLength` is the caller's, not this module's: the component reads the DOM while a widget
9
+ * reveal is open, where `node.raw` is stale by construction. */
10
+ export declare function hidesStructuralSuffix(el: HTMLElement | null, node: NodeView, displayLength: number): boolean;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Whether a block keeps structure PAST its content that the surface paints nothing for — today the
3
+ * setext underline. A merge past it concatenates it into view (`Title\n===` + `next` reparses to a
4
+ * paragraph showing `===next`), so the keydown dispatch consumes the press and the command arm
5
+ * declines it — one home, since the two ask from different coordinate sources (live-mode.md § 4.5).
6
+ */
7
+ import { getContentRange } from '../../../core/inline';
8
+ import { revealsNoMarkers } from '../../../cursor/widget-offset';
9
+ /** `displayLength` is the caller's, not this module's: the component reads the DOM while a widget
10
+ * reveal is open, where `node.raw` is stale by construction. */
11
+ export function hidesStructuralSuffix(el, node, displayLength) {
12
+ if (!el || !revealsNoMarkers(el))
13
+ return false;
14
+ return getContentRange(node).end < displayLength;
15
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Which link construct a pointer landed in, and how to find that construct again after an edit
3
+ * rebuilt the tree. The offset comes from the shared DOM↔raw walk and the construct from the
4
+ * reveal chain, so the card addresses exactly what the render path drew.
5
+ */
6
+ import type { InlineNode } from '../../../core/nodes';
7
+ import type { NodeView } from '../../../core/node-views';
8
+ import type { LinkReferenceResolverRef } from '../../../editor-keys';
9
+ /** Both DOM shapes a bracketed link takes: `a` for an allowed scheme, `span.md-link-blocked` for a
10
+ * rejected one — and a blocked link is precisely the one a user opens the card to fix. */
11
+ export declare const LINK_ELEMENT_SELECTOR = ".md-link-content";
12
+ /** Path plus construct start, never a node reference: every commit rebuilds the inline tree and the
13
+ * DOM under it, so an open card re-resolves from this identity after each edit. */
14
+ export interface LinkTarget {
15
+ path: number[];
16
+ sourceStart: number;
17
+ }
18
+ export interface LinkPointResolution {
19
+ target: LinkTarget;
20
+ link: InlineNode;
21
+ }
22
+ export interface LinkPointQuery {
23
+ /** The block's content element — the walk container the raw offset is measured in. */
24
+ contentEl: HTMLElement;
25
+ block: NodeView;
26
+ path: number[];
27
+ linkRef?: LinkReferenceResolverRef;
28
+ }
29
+ /** The link the caret sits inside, read after the pointer has seated it. */
30
+ export declare function resolveLinkAtPoint(query: LinkPointQuery): LinkPointResolution | null;
31
+ /** The construct an open card is anchored to, re-read from the live tree; null once an edit moved
32
+ * or removed it. */
33
+ export declare function linkConstructAt(block: NodeView, sourceStart: number, linkRef?: LinkReferenceResolverRef): InlineNode | null;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Which link construct a pointer landed in, and how to find that construct again after an edit
3
+ * rebuilt the tree. The offset comes from the shared DOM↔raw walk and the construct from the
4
+ * reveal chain, so the card addresses exactly what the render path drew.
5
+ */
6
+ import { ambientLengthOf } from '../../../ambient/ambient-dom';
7
+ import { inlineDescendants } from '../../../core/inline';
8
+ import { resolvedInlineContent } from '../../../core/inline/inline-cache';
9
+ import { toClampedRawOffset } from '../../../cursor/coordinate-spaces';
10
+ import { domTextOffsetAtNode } from '../../../cursor/widget-offset';
11
+ import { isCardEditableInlineKind } from '../../../schema/inline-construct-policy';
12
+ import { constructChainAtOffset } from './construct-reveal';
13
+ /** Both DOM shapes a bracketed link takes: `a` for an allowed scheme, `span.md-link-blocked` for a
14
+ * rejected one — and a blocked link is precisely the one a user opens the card to fix. */
15
+ export const LINK_ELEMENT_SELECTOR = '.md-link-content';
16
+ /** The link the caret sits inside, read after the pointer has seated it. */
17
+ export function resolveLinkAtPoint(query) {
18
+ const offset = caretRawOffset(query.contentEl);
19
+ if (offset === null)
20
+ return null;
21
+ const inlines = resolvedInlineContent(query.block, query.linkRef);
22
+ // Outermost-first, so the last card-editable construct in the chain is the one whose bytes
23
+ // enclose the pointer most tightly. The chain itself is the reveal's, which admits only
24
+ // revealable kinds, so an autolink never reaches this filter either way.
25
+ const link = constructChainAtOffset(inlines, offset).filter(isCardEditable).at(-1);
26
+ if (link === undefined)
27
+ return null;
28
+ return { target: { path: query.path, sourceStart: link.start }, link };
29
+ }
30
+ const isCardEditable = (node) => isCardEditableInlineKind(node.kind);
31
+ /** The construct an open card is anchored to, re-read from the live tree; null once an edit moved
32
+ * or removed it. */
33
+ export function linkConstructAt(block, sourceStart, linkRef) {
34
+ for (const node of inlineDescendants(resolvedInlineContent(block, linkRef))) {
35
+ if (isCardEditable(node) && node.start === sourceStart)
36
+ return node;
37
+ }
38
+ return null;
39
+ }
40
+ function caretRawOffset(contentEl) {
41
+ const sel = window.getSelection();
42
+ if (!sel || sel.rangeCount === 0 || !sel.focusNode)
43
+ return null;
44
+ if (!contentEl.contains(sel.focusNode))
45
+ return null;
46
+ return toClampedRawOffset(domTextOffsetAtNode(contentEl, sel.focusNode, sel.focusOffset), ambientLengthOf(contentEl));
47
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Where a link edit becomes bytes: the seam every link write path calls (G4.34), and under it the
3
+ * GFM branch. A candidate is written only once the RENDER PATH says the reader sees exactly what
4
+ * they saw before — a destination that breaks its own construct surfaces as literal source, which
5
+ * a private walk over the parse cannot see.
6
+ */
7
+ import type { LinkReferenceResolver } from '../../../core/inline/link-reference-resolver';
8
+ import type { InlineNode } from '../../../core/nodes';
9
+ export interface LinkFields {
10
+ /** RAW inner bytes of the link text. Never re-escaped: the text holds whole nested constructs,
11
+ * and re-emitting them from the parse would rewrite bytes the user never touched. */
12
+ text: string;
13
+ url: string;
14
+ title?: string;
15
+ /** Reference forms only: the raw tail after the text's `]` (`[ref]`, `[]`, or empty for the
16
+ * shortcut form). Present preserves the reference; absent inlines the destination. */
17
+ reference?: string;
18
+ }
19
+ /**
20
+ * Bytes to splice over `link`'s range, or `null` when the edit must be declined. **Every link
21
+ * write path goes through here** (G4.34): a node an inline rung claimed carries no `rewriteLink`
22
+ * hook, so emitting built-in grammar over its bytes would destroy the author's syntax.
23
+ */
24
+ export declare function buildLinkEditBytes(link: InlineNode, display: string, fields: LinkFields, resolver?: LinkReferenceResolver): string | null;
25
+ /** Bytes that unwrap `link` to the text the reader already sees — remove-link. An autolink has no
26
+ * brackets to drop, so its removal is the same escape rewrite a re-linking text needs. */
27
+ export declare function buildLinkUnwrapBytes(link: InlineNode, display: string, resolver?: LinkReferenceResolver): string | null;
28
+ /** Bytes that mint `[text](url)` over `[start, end)` — the card's create half. Declines an empty
29
+ * destination, a range crossing another construct's bytes, and any candidate the render check
30
+ * refuses (a neighbouring `!` would turn the wrap into an image). */
31
+ export declare function buildLinkWrapBytes(display: string, start: number, end: number, url: string, resolver?: LinkReferenceResolver): string | null;
32
+ /** True when `[start, end)` holds only bytes safe to become link text. Wrapping inside or across
33
+ * another construct is a policy question create does not answer — it declines. */
34
+ export declare function canWrapRangeAsLink(display: string, start: number, end: number, resolver?: LinkReferenceResolver): boolean;
35
+ /** The fields the card edits, read off the source bytes: `url`/`title` are decoded on the node,
36
+ * but the text and the reference tail must survive as the author wrote them. */
37
+ export declare function linkFieldsFromInline(link: InlineNode, display: string): LinkFields;
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Where a link edit becomes bytes: the seam every link write path calls (G4.34), and under it the
3
+ * GFM branch. A candidate is written only once the RENDER PATH says the reader sees exactly what
4
+ * they saw before — a destination that breaks its own construct surfaces as literal source, which
5
+ * a private walk over the parse cannot see.
6
+ */
7
+ import { inlineDescendants, parseInline } from '../../../core/inline';
8
+ import { encodeDestination, escapeTitle } from '../../../core/inline/destination-bytes';
9
+ import { CONTENT_VISIBILITY, renderedText } from '../../../core/inline/visibility';
10
+ import { devWarn } from '../../../dev-warn';
11
+ /**
12
+ * Bytes to splice over `link`'s range, or `null` when the edit must be declined. **Every link
13
+ * write path goes through here** (G4.34): a node an inline rung claimed carries no `rewriteLink`
14
+ * hook, so emitting built-in grammar over its bytes would destroy the author's syntax.
15
+ */
16
+ export function buildLinkEditBytes(link, display, fields, resolver) {
17
+ if (declineClaimed(link, 'edit'))
18
+ return null;
19
+ return verified(buildLinkSourceBytes(fields), link.start, link.end, display, resolver);
20
+ }
21
+ /** Bytes that unwrap `link` to the text the reader already sees — remove-link. An autolink has no
22
+ * brackets to drop, so its removal is the same escape rewrite a re-linking text needs. */
23
+ export function buildLinkUnwrapBytes(link, display, resolver) {
24
+ if (declineClaimed(link, 'remove'))
25
+ return null;
26
+ const [textStart, textEnd] = textRange(link, display);
27
+ const plain = display.slice(textStart, textEnd);
28
+ return verified(escapeRelinkingText(plain, link, display, resolver), link.start, link.end, display, resolver);
29
+ }
30
+ /** Bytes that mint `[text](url)` over `[start, end)` — the card's create half. Declines an empty
31
+ * destination, a range crossing another construct's bytes, and any candidate the render check
32
+ * refuses (a neighbouring `!` would turn the wrap into an image). */
33
+ export function buildLinkWrapBytes(display, start, end, url, resolver) {
34
+ if (url.trim() === '' || !canWrapRangeAsLink(display, start, end, resolver))
35
+ return null;
36
+ // A bare bracket would close the construct early; an existing `\x` pair passes through whole.
37
+ const text = display
38
+ .slice(start, end)
39
+ .replace(/\\[\s\S]|[[\]]/g, (m) => (m.length === 2 ? m : '\\' + m));
40
+ return verified(`[${text}](${encodeDestination(url)})`, start, end, display, resolver);
41
+ }
42
+ const WRAP_SAFE_KINDS = new Set(['text', 'escape', 'entityReference']);
43
+ /** True when `[start, end)` holds only bytes safe to become link text. Wrapping inside or across
44
+ * another construct is a policy question create does not answer — it declines. */
45
+ export function canWrapRangeAsLink(display, start, end, resolver) {
46
+ if (start >= end || end > display.length)
47
+ return false;
48
+ return flattenInline(parseInline(display, 0, display.length, resolver)).every((n) => WRAP_SAFE_KINDS.has(n.kind) || n.end <= start || n.start >= end);
49
+ }
50
+ /** The fields the card edits, read off the source bytes: `url`/`title` are decoded on the node,
51
+ * but the text and the reference tail must survive as the author wrote them. */
52
+ export function linkFieldsFromInline(link, display) {
53
+ const [textStart, textEnd] = textRange(link, display);
54
+ return {
55
+ text: display.slice(textStart, textEnd),
56
+ url: link.url ?? '',
57
+ ...(link.title !== undefined ? { title: link.title } : {}),
58
+ ...(link.label !== undefined ? { reference: display.slice(textEnd + 1, link.end) } : {})
59
+ };
60
+ }
61
+ // ── The GFM serializer ──────────────────────────────────────────────────────
62
+ /** The built-in grammar's inverse. Reach it through the seam above, the only caller entitled to
63
+ * decide these bytes are GFM's to write. */
64
+ function buildLinkSourceBytes(fields) {
65
+ if (fields.reference !== undefined)
66
+ return `[${fields.text}]${fields.reference}`;
67
+ const title = fields.title !== undefined ? ` "${escapeTitle(fields.title)}"` : '';
68
+ return `[${fields.text}](${encodeDestination(fields.url)}${title})`;
69
+ }
70
+ // ── Verification ────────────────────────────────────────────────────────────
71
+ function declineClaimed(link, what) {
72
+ const claim = link.syntaxClaim;
73
+ if (!claim)
74
+ return false;
75
+ devWarn('link-edit', `${what} declined: the "${claim.prefix}" inline rung owns these bytes and registered no link rewriter`);
76
+ return true;
77
+ }
78
+ /** What a reader SEES for `raw`, asked of the thing that paints it. The content reading, not the
79
+ * block's own: the card edits a destination the chrome may be painting, and a diff against the
80
+ * screen would refuse every such edit as a visible change. The write splices bytes for bytes and
81
+ * drops none, so no reading of it licenses losing one the reader saw. */
82
+ function visibleText(raw, resolver) {
83
+ return renderedText(parseInline(raw, 0, raw.length, resolver), raw, CONTENT_VISIBILITY);
84
+ }
85
+ /** A candidate is bytes only if splicing it over `[start, end)` leaves the reader's text
86
+ * untouched — the write moves bytes nobody saw, so any visible change is the construct broken. */
87
+ function verified(candidate, start, end, display, resolver) {
88
+ if (candidate === null)
89
+ return null;
90
+ const before = visibleText(display, resolver);
91
+ const after = visibleText(spliced(candidate, start, end, display), resolver);
92
+ return before === after ? candidate : null;
93
+ }
94
+ function spliced(candidate, start, end, display) {
95
+ return display.slice(0, start) + candidate + display.slice(end);
96
+ }
97
+ // ── Text ranges and the re-link escape ──────────────────────────────────────
98
+ /** The bytes between a construct's opener and its hidden tail: `[…]` for a link, the angle
99
+ * brackets for an autolink, the whole node for the bare forms. */
100
+ function textRange(link, display) {
101
+ if (link.kind === 'autolink') {
102
+ const angle = display[link.start] === '<' && display[link.end - 1] === '>';
103
+ return angle ? [link.start + 1, link.end - 1] : [link.start, link.end];
104
+ }
105
+ const children = link.children ?? [];
106
+ if (children.length === 0) {
107
+ const close = display.indexOf(']', link.start);
108
+ return [link.start + 1, close === -1 ? link.end : close];
109
+ }
110
+ return [children[0].start, children[children.length - 1].end];
111
+ }
112
+ const TRIGGER_ESCAPE = [
113
+ [/^https?:/i, ':'],
114
+ [/^www\./i, '.'],
115
+ [/^[^@]*@/, '@']
116
+ ];
117
+ /**
118
+ * Unwrapping `[www.x.com](u)` hands the bare-autolink pass a match it did not have before, and the
119
+ * link the user removed comes straight back. Escaping the byte that triggers the match kills it
120
+ * without changing one character the reader sees.
121
+ */
122
+ function escapeRelinkingText(text, link, display, resolver) {
123
+ let candidate = text;
124
+ // One pass per surviving autolink; the text is finite and each pass kills one match.
125
+ for (let guard = 0; guard <= text.length; guard++) {
126
+ const offender = relinkedRange(candidate, link, display, resolver);
127
+ if (offender === null)
128
+ return candidate;
129
+ const escaped = escapeTrigger(candidate, offender);
130
+ if (escaped === null)
131
+ return null;
132
+ candidate = escaped;
133
+ }
134
+ return null;
135
+ }
136
+ /** The candidate-relative range of the first link the splice re-created, or null when clean. */
137
+ function relinkedRange(candidate, link, display, resolver) {
138
+ const raw = spliced(candidate, link.start, link.end, display);
139
+ const end = link.start + candidate.length;
140
+ const found = flattenInline(parseInline(raw, 0, raw.length, resolver)).find((n) => (n.kind === 'link' || n.kind === 'autolink') && n.start < end && n.end > link.start);
141
+ if (!found)
142
+ return null;
143
+ // An offender reaching outside the spliced range is the surrounding text linking with it,
144
+ // which no escape inside the candidate can decide.
145
+ if (found.start < link.start || found.end > end)
146
+ return null;
147
+ return [found.start - link.start, found.end - link.start];
148
+ }
149
+ function escapeTrigger(candidate, [start, end]) {
150
+ const match = candidate.slice(start, end);
151
+ for (const [form, byte] of TRIGGER_ESCAPE) {
152
+ if (!form.test(match))
153
+ continue;
154
+ const at = match.indexOf(byte);
155
+ if (at === -1)
156
+ return null;
157
+ return candidate.slice(0, start + at) + '\\' + candidate.slice(start + at);
158
+ }
159
+ return null;
160
+ }
161
+ const flattenInline = (nodes) => [...inlineDescendants(nodes)];
@@ -0,0 +1,15 @@
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 type { InlineNode } from '../../../core/nodes';
8
+ import { type LiveJoinSeamCleaner } from '../../../schema/inline-construct-policy';
9
+ export declare const cleanLiveJoinSeam: LiveJoinSeamCleaner;
10
+ /**
11
+ * The `keep` side of `level`, rebuilt: a construct the cut crosses hands its place to its own
12
+ * clipped children. Exported for the depth pin, which has to reach the rebuild with a tree no
13
+ * side this deep could be rendered at.
14
+ */
15
+ export declare function clipNodes(level: readonly InlineNode[], cut: number, keep: 'before' | 'after'): InlineNode[];