@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,190 @@
1
+ <script lang="ts">
2
+ import { untrack } from 'svelte';
3
+ import {
4
+ LINK_CARD_LABEL,
5
+ LINK_CARD_OPEN,
6
+ LINK_CARD_REMOVE,
7
+ LINK_CARD_URL
8
+ } from '../../a11y-strings';
9
+
10
+ // Anchored chrome over one link construct. Enter commits; Escape is the host's, since it must
11
+ // also close a card the document still has the caret for.
12
+ //
13
+ // `role="dialog"` WITHOUT `aria-modal`: a click leaves the card beside a live caret and the
14
+ // document behind stays the user's to type in, which is what aria-modal would tell a screen
15
+ // reader is false. The trap engages on ENTRY (Mod+K, or focus reaching the field), where the
16
+ // claim is true, and Escape returns the caret it borrowed.
17
+ let {
18
+ url,
19
+ canWrite,
20
+ focusEpoch,
21
+ onCommit,
22
+ onOpenLink,
23
+ onRemove,
24
+ resolveHref
25
+ }: {
26
+ url: string;
27
+ /** Bumped by each keyboard entry; the field takes focus when it changes. */
28
+ focusEpoch: number;
29
+ /** False when the write seam declines this construct outright — a rung-claimed link, which
30
+ * no url makes writable. Enter then does nothing rather than silently dropping the edit. */
31
+ canWrite: boolean;
32
+ onCommit: (url: string) => void;
33
+ onOpenLink: (url: string, event: MouseEvent) => void;
34
+ /** Absent in create mode: there is no construct to remove until Enter mints one. */
35
+ onRemove?: () => void;
36
+ /** The render path's own href funnel — a consumer rewrite, then the scheme allowlist.
37
+ * Undefined is a blocked scheme, and Open is the sink that must not receive one. */
38
+ resolveHref: (url: string) => string | undefined;
39
+ } = $props();
40
+
41
+ let draft = $state(untrack(() => url));
42
+ // The card OPENS on a blocked link so the URL can be repaired, but may not hand that URL
43
+ // onward: `onLinkActivate` reaches a shell's own opener, and this is the only door into it
44
+ // carrying a URL the user typed rather than the document's. An empty draft resolves as a
45
+ // relative URL, so it declines too.
46
+ const openable = $derived(draft.trim() === '' ? undefined : resolveHref(draft));
47
+ let seed = $state(untrack(() => url));
48
+ let cardEl: HTMLDivElement | undefined = $state();
49
+ let urlInput: HTMLInputElement | undefined = $state();
50
+ // Starts at the click's zero rather than at the prop: a card MOUNTED by the chord has a
51
+ // non-zero epoch already, and seeding from the prop would read that as "nothing to do".
52
+ let focusedEpoch = 0;
53
+
54
+ $effect(() => {
55
+ if (focusEpoch === focusedEpoch) return;
56
+ focusedEpoch = focusEpoch;
57
+ urlInput?.focus();
58
+ urlInput?.select();
59
+ });
60
+
61
+ // The card follows the document while it is open: an undo — or any write landing from outside
62
+ // this gesture — moves the destination past the draft, and Enter would put the old bytes back.
63
+ // The in-flight draft is discarded rather than a committed change reverted.
64
+ $effect(() => {
65
+ if (url === seed) return;
66
+ seed = url;
67
+ draft = url;
68
+ });
69
+
70
+ function focusStops(): HTMLElement[] {
71
+ return cardEl
72
+ ? Array.from(cardEl.querySelectorAll<HTMLElement>('input, button:not([disabled])'))
73
+ : [];
74
+ }
75
+
76
+ function stepTrap(backwards: boolean): void {
77
+ const stops = focusStops();
78
+ if (stops.length === 0) return;
79
+ const current =
80
+ document.activeElement instanceof HTMLElement ? stops.indexOf(document.activeElement) : -1;
81
+ const next = (current === -1 ? 0 : current + (backwards ? -1 : 1)) % stops.length;
82
+ stops[(next + stops.length) % stops.length].focus();
83
+ }
84
+
85
+ function handleKeyDown(e: KeyboardEvent): void {
86
+ // An IME's confirm/step keystrokes arrive as ordinary keydowns mid-composition; they are
87
+ // the composition's, never the card's.
88
+ if (e.isComposing) return;
89
+ if (e.key === 'Tab') {
90
+ e.preventDefault();
91
+ stepTrap(e.shiftKey);
92
+ return;
93
+ }
94
+ // The entry chord re-asserts the card the focus is already inside, so it is a no-op here —
95
+ // but a consumed one: no surface the editor owns hands `Mod+K` back to the browser.
96
+ // CapsLock uppercases the key without a Shift modifier, which is still the plain chord.
97
+ if ((e.ctrlKey || e.metaKey) && !e.altKey && !e.shiftKey && (e.key === 'k' || e.key === 'K')) {
98
+ e.preventDefault();
99
+ }
100
+ }
101
+
102
+ function handleUrlKeyDown(e: KeyboardEvent): void {
103
+ if (e.isComposing) return;
104
+ if (e.key === 'Enter') {
105
+ e.preventDefault();
106
+ if (canWrite) onCommit(draft);
107
+ }
108
+ }
109
+ </script>
110
+
111
+ <div
112
+ bind:this={cardEl}
113
+ class="md-link-card"
114
+ data-link-card
115
+ role="dialog"
116
+ aria-label={LINK_CARD_LABEL}
117
+ tabindex="-1"
118
+ onkeydown={handleKeyDown}
119
+ >
120
+ <label>
121
+ <span>URL</span>
122
+ <input
123
+ bind:this={urlInput}
124
+ bind:value={draft}
125
+ type="text"
126
+ aria-label={LINK_CARD_URL}
127
+ onkeydown={handleUrlKeyDown}
128
+ />
129
+ </label>
130
+ <div class="md-link-card-actions">
131
+ <button
132
+ type="button"
133
+ disabled={openable === undefined}
134
+ onclick={(e) => openable !== undefined && onOpenLink(openable, e)}>{LINK_CARD_OPEN}</button
135
+ >
136
+ {#if onRemove}
137
+ <button type="button" onclick={onRemove}>{LINK_CARD_REMOVE}</button>
138
+ {/if}
139
+ </div>
140
+ </div>
141
+
142
+ <style>
143
+ .md-link-card {
144
+ position: absolute;
145
+ top: 0;
146
+ left: 0;
147
+ z-index: 100;
148
+ display: grid;
149
+ gap: 6px;
150
+ min-width: 280px;
151
+ padding: 8px;
152
+ border: 1px solid var(--color-ui-muted, #a4a4a4);
153
+ border-radius: 4px;
154
+ background: var(--color-bg-elevated, #2a2a2a);
155
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
156
+ }
157
+ label {
158
+ display: grid;
159
+ grid-template-columns: 40px 1fr;
160
+ align-items: center;
161
+ gap: 8px;
162
+ }
163
+ input {
164
+ padding: 4px 6px;
165
+ border: 1px solid var(--color-ui-muted, #a4a4a4);
166
+ border-radius: var(--radius-ui, 3px);
167
+ background: var(--color-surface, #2d3033);
168
+ color: var(--color-text-secondary, #eee);
169
+ font-family: inherit;
170
+ font-size: 12px;
171
+ }
172
+ .md-link-card-actions {
173
+ display: flex;
174
+ gap: 6px;
175
+ justify-content: flex-end;
176
+ }
177
+ button {
178
+ padding: 3px 8px;
179
+ border: 1px solid var(--color-ui-muted, #a4a4a4);
180
+ border-radius: var(--radius-ui, 3px);
181
+ background: transparent;
182
+ color: var(--color-text-secondary, #eee);
183
+ font: inherit;
184
+ font-size: 12px;
185
+ cursor: pointer;
186
+ }
187
+ button:hover {
188
+ background: var(--color-ui-faint, rgba(255, 255, 255, 0.07));
189
+ }
190
+ </style>
@@ -0,0 +1,18 @@
1
+ type $$ComponentProps = {
2
+ url: string;
3
+ /** Bumped by each keyboard entry; the field takes focus when it changes. */
4
+ focusEpoch: number;
5
+ /** False when the write seam declines this construct outright — a rung-claimed link, which
6
+ * no url makes writable. Enter then does nothing rather than silently dropping the edit. */
7
+ canWrite: boolean;
8
+ onCommit: (url: string) => void;
9
+ onOpenLink: (url: string, event: MouseEvent) => void;
10
+ /** Absent in create mode: there is no construct to remove until Enter mints one. */
11
+ onRemove?: () => void;
12
+ /** The render path's own href funnel — a consumer rewrite, then the scheme allowlist.
13
+ * Undefined is a blocked scheme, and Open is the sink that must not receive one. */
14
+ resolveHref: (url: string) => string | undefined;
15
+ };
16
+ declare const LinkCard: import("svelte").Component<$$ComponentProps, {}, "">;
17
+ type LinkCard = ReturnType<typeof LinkCard>;
18
+ export default LinkCard;
@@ -0,0 +1,181 @@
1
+ <script lang="ts">
2
+ import type { Document } from '../../core/nodes';
3
+ import type { UndoController } from '../../editor-actions/deps';
4
+ import type { EditorEvents } from '../../editor-events';
5
+ import type { LinkReferenceResolverRef } from '../../editor-keys';
6
+ import type { GrammarView } from '../../schema/block-openers';
7
+ import type { CaretRestore } from '../../selection/caret-restore';
8
+ import { resolveHref } from '../../core/inline-render';
9
+ import LinkCard from './LinkCard.svelte';
10
+ import { createLinkCardCommitter } from './link-card-commit';
11
+ import type { LinkCardState } from './link-card-state.svelte';
12
+
13
+ // Mounted unconditionally by Editor: the anchoring and dismiss effects must observe the card's
14
+ // target changing, so the open/closed `{#if}` lives here rather than at the mount site.
15
+ let {
16
+ card,
17
+ controller,
18
+ events,
19
+ getDoc,
20
+ getEditorEl,
21
+ measureRange,
22
+ landCaret,
23
+ activateLink,
24
+ resolveLinkUrl,
25
+ caretRestore,
26
+ linkRef,
27
+ grammar
28
+ }: {
29
+ card: LinkCardState;
30
+ controller: UndoController;
31
+ events: EditorEvents;
32
+ getDoc: () => Document;
33
+ getEditorEl: () => HTMLElement | null;
34
+ measureRange: (path: number[], start: number, end: number) => DOMRect[];
35
+ landCaret: (path: number[], offset: number) => Promise<boolean>;
36
+ activateLink: (url: string, event: MouseEvent) => void;
37
+ /** The consumer's href rewrite, the render path's first funnel stage. */
38
+ resolveLinkUrl: (rawUrl: string) => string;
39
+ caretRestore: CaretRestore;
40
+ linkRef?: LinkReferenceResolverRef;
41
+ grammar?: GrammarView;
42
+ } = $props();
43
+
44
+ let cardEl: HTMLDivElement | undefined = $state();
45
+
46
+ // Props are stable for the editor's lifetime; reactive values already cross as getters.
47
+ // svelte-ignore state_referenced_locally
48
+ const linkCard = createLinkCardCommitter({
49
+ getDoc,
50
+ getEditorEl,
51
+ getTarget: card.getTarget,
52
+ getCreateTarget: card.getCreateTarget,
53
+ controller,
54
+ events,
55
+ measureRange,
56
+ landCaret,
57
+ linkRef,
58
+ grammar
59
+ });
60
+
61
+ $effect(() => {
62
+ card.getTarget(); // re-run + re-anchor when the card moves to another link
63
+ card.getCreateTarget();
64
+ return linkCard.syncCardToLink(() => cardEl ?? null);
65
+ });
66
+
67
+ // A target that stops resolving unrenders the card but leaves the state set, so its
68
+ // document-capture listeners live on and the next write that makes it resolve again
69
+ // resurrects it holding a draft from before. Closing is the only honest answer.
70
+ $effect(() => {
71
+ const target = card.getTarget();
72
+ if (target && !linkCard.resolve(target)) card.close();
73
+ });
74
+
75
+ // A create target addresses bytes by range alone, so a write landing from outside the gesture
76
+ // moves them under it. The commit path closes before it writes, and the handler re-reads the
77
+ // target, so only an outside edit closes the card here.
78
+ $effect(() => {
79
+ if (!card.getCreateTarget()) return;
80
+ return events.on('edit', () => {
81
+ if (card.getCreateTarget()) card.close();
82
+ });
83
+ });
84
+
85
+ // An outside press is a non-destructive dismiss and leaves the caret where it just landed.
86
+ // Escape is document-level because the opening click leaves the caret in the DOCUMENT: the
87
+ // card is chrome beside a live caret until the user steps into it, and both states close.
88
+ $effect(() => {
89
+ if (!card.getTarget() && !card.getCreateTarget()) return;
90
+ const onPointerDown = (e: PointerEvent) => {
91
+ const el = e.target as Element | null;
92
+ if (el?.closest('[data-link-card]')) return;
93
+ card.close();
94
+ };
95
+ const onKeyDown = (e: KeyboardEvent) => {
96
+ // A composing Escape cancels the IME's conversion, not the card.
97
+ if (e.key !== 'Escape' || e.isComposing) return;
98
+ const inCard = cardEl?.contains(document.activeElement) ?? false;
99
+ // Only a card that HOLDS the focus consumes the key and owes the caret back; beside a
100
+ // live caret it just closes, leaving Escape to whatever else was listening.
101
+ if (inCard) {
102
+ e.preventDefault();
103
+ e.stopPropagation();
104
+ }
105
+ card.close();
106
+ if (inCard) caretRestore.restore();
107
+ };
108
+ document.addEventListener('pointerdown', onPointerDown, true);
109
+ document.addEventListener('keydown', onKeyDown, true);
110
+ return () => {
111
+ document.removeEventListener('pointerdown', onPointerDown, true);
112
+ document.removeEventListener('keydown', onKeyDown, true);
113
+ };
114
+ });
115
+
116
+ function commit(url: string): void {
117
+ const target = card.getTarget();
118
+ if (!target) return;
119
+ card.close();
120
+ linkCard.commitUrl(target, url);
121
+ }
122
+
123
+ function commitCreate(url: string): void {
124
+ const target = card.getCreateTarget();
125
+ // An empty draft has nothing to mint; Enter stays inert rather than closing having done
126
+ // nothing, which would drop the focus the card holds.
127
+ if (!target || url.trim() === '') return;
128
+ card.close();
129
+ linkCard.commitCreate(target, url);
130
+ }
131
+
132
+ function remove(): void {
133
+ const target = card.getTarget();
134
+ if (!target) return;
135
+ card.close();
136
+ linkCard.removeLink(target);
137
+ }
138
+ </script>
139
+
140
+ {#if card.getTarget()}
141
+ {@const target = card.getTarget()!}
142
+ {@const resolved = linkCard.resolve(target)}
143
+ {#if resolved}
144
+ <div bind:this={cardEl} class="md-link-card-anchor">
145
+ {#key `${target.path.join(',')}@${target.sourceStart}`}
146
+ <LinkCard
147
+ url={resolved.url}
148
+ focusEpoch={card.getFocusEpoch()}
149
+ canWrite={linkCard.buildBytes(target, resolved.url) !== null}
150
+ onCommit={commit}
151
+ onOpenLink={activateLink}
152
+ onRemove={remove}
153
+ resolveHref={(url) => resolveHref({ resolveLinkUrl }, url)}
154
+ />
155
+ {/key}
156
+ </div>
157
+ {/if}
158
+ {:else if card.getCreateTarget()}
159
+ {@const create = card.getCreateTarget()!}
160
+ <div bind:this={cardEl} class="md-link-card-anchor">
161
+ {#key `${create.path.join(',')}@${create.start}-${create.end}`}
162
+ <LinkCard
163
+ url=""
164
+ focusEpoch={card.getFocusEpoch()}
165
+ canWrite={true}
166
+ onCommit={commitCreate}
167
+ onOpenLink={activateLink}
168
+ resolveHref={(url) => resolveHref({ resolveLinkUrl }, url)}
169
+ />
170
+ {/key}
171
+ </div>
172
+ {/if}
173
+
174
+ <style>
175
+ /* Zero-size positioned box: `syncCardToLink` writes its top/left, the card paints inside it. */
176
+ .md-link-card-anchor {
177
+ position: absolute;
178
+ top: 0;
179
+ left: 0;
180
+ }
181
+ </style>
@@ -0,0 +1,25 @@
1
+ import type { Document } from '../../core/nodes';
2
+ import type { UndoController } from '../../editor-actions/deps';
3
+ import type { EditorEvents } from '../../editor-events';
4
+ import type { LinkReferenceResolverRef } from '../../editor-keys';
5
+ import type { GrammarView } from '../../schema/block-openers';
6
+ import type { CaretRestore } from '../../selection/caret-restore';
7
+ import type { LinkCardState } from './link-card-state.svelte';
8
+ type $$ComponentProps = {
9
+ card: LinkCardState;
10
+ controller: UndoController;
11
+ events: EditorEvents;
12
+ getDoc: () => Document;
13
+ getEditorEl: () => HTMLElement | null;
14
+ measureRange: (path: number[], start: number, end: number) => DOMRect[];
15
+ landCaret: (path: number[], offset: number) => Promise<boolean>;
16
+ activateLink: (url: string, event: MouseEvent) => void;
17
+ /** The consumer's href rewrite, the render path's first funnel stage. */
18
+ resolveLinkUrl: (rawUrl: string) => string;
19
+ caretRestore: CaretRestore;
20
+ linkRef?: LinkReferenceResolverRef;
21
+ grammar?: GrammarView;
22
+ };
23
+ declare const LinkCardHost: import("svelte").Component<$$ComponentProps, {}, "">;
24
+ type LinkCardHost = ReturnType<typeof LinkCardHost>;
25
+ export default LinkCardHost;
@@ -0,0 +1,50 @@
1
+ /**
2
+ * What an open link card can read and write: the construct re-resolved from its target identity
3
+ * after every edit, the bytes the write seam would produce, and the anchoring measure. Kept out of
4
+ * the component so the card stays a rendering shell.
5
+ */
6
+ import type { Document } from '../../core/nodes';
7
+ import type { InlineNode } from '../../core/nodes';
8
+ import type { NodeView } from '../../core/node-views';
9
+ import type { UndoController } from '../../editor-actions/deps';
10
+ import type { EditorEvents } from '../../editor-events';
11
+ import type { LinkReferenceResolverRef } from '../../editor-keys';
12
+ import type { GrammarView } from '../../schema/block-openers';
13
+ import { type LinkTarget } from '../blocks/text/link-at-point';
14
+ import type { CreateLinkTarget } from './link-card-state.svelte';
15
+ export interface LinkCardCommitterDeps {
16
+ getDoc: () => Document;
17
+ getEditorEl: () => HTMLElement | null;
18
+ /** The open card's target, read live: the anchor re-measures against whatever it names now. */
19
+ getTarget: () => LinkTarget | null;
20
+ /** The create gesture's range, the anchor when no construct exists yet. */
21
+ getCreateTarget: () => CreateLinkTarget | null;
22
+ controller: UndoController;
23
+ events: EditorEvents;
24
+ /** Rect measure for a raw range in a mounted block — the anchoring geometry. */
25
+ measureRange: (path: number[], start: number, end: number) => DOMRect[];
26
+ /** Reveal + land the caret at a raw offset, so the next keystroke addresses the document. */
27
+ landCaret: (path: number[], offset: number) => Promise<boolean>;
28
+ linkRef?: LinkReferenceResolverRef;
29
+ grammar?: GrammarView;
30
+ }
31
+ export interface ResolvedLinkTarget {
32
+ block: NodeView;
33
+ link: InlineNode;
34
+ /** The destination as the author wrote it, decoded — what the card's field shows. */
35
+ url: string;
36
+ }
37
+ export interface LinkCardCommitter {
38
+ /** The construct the target names, re-read from the live tree; null once an edit removed it. */
39
+ resolve(target: LinkTarget): ResolvedLinkTarget | null;
40
+ /** The bytes a url commit would write, or null if the seam would decline — the card's dirty
41
+ * check compares against these rather than deciding bytes itself. */
42
+ buildBytes(target: LinkTarget, url: string): string | null;
43
+ commitUrl(target: LinkTarget, url: string): void;
44
+ /** Mint `[selected text](url)` over the create range — the one write of the create gesture. */
45
+ commitCreate(target: CreateLinkTarget, url: string): void;
46
+ removeLink(target: LinkTarget): void;
47
+ /** Position `getCard()` under the link and keep it there across edits and scrolls. */
48
+ syncCardToLink(getCard: () => HTMLElement | null): () => void;
49
+ }
50
+ export declare function createLinkCardCommitter(deps: LinkCardCommitterDeps): LinkCardCommitter;
@@ -0,0 +1,134 @@
1
+ /**
2
+ * What an open link card can read and write: the construct re-resolved from its target identity
3
+ * after every edit, the bytes the write seam would produce, and the anchoring measure. Kept out of
4
+ * the component so the card stays a rendering shell.
5
+ */
6
+ import { wireOverlayRemeasure } from '../../cursor/overlay-remeasure';
7
+ import { createInlineRangeCommit } from '../../editor-actions/inline-range-commit';
8
+ import { isBlockNode, nodeAt } from '../../tree-operations/node-ops';
9
+ import { linkConstructAt } from '../blocks/text/link-at-point';
10
+ import { buildLinkEditBytes, buildLinkUnwrapBytes, buildLinkWrapBytes, linkFieldsFromInline } from '../blocks/text/link-source-bytes';
11
+ export function createLinkCardCommitter(deps) {
12
+ const inlineRange = createInlineRangeCommit({
13
+ getDoc: deps.getDoc,
14
+ controller: deps.controller,
15
+ grammar: deps.grammar
16
+ });
17
+ function resolve(target) {
18
+ const block = nodeAt(deps.getDoc(), target.path);
19
+ if (block === null || !isBlockNode(block))
20
+ return null;
21
+ const link = linkConstructAt(block, target.sourceStart, deps.linkRef);
22
+ return link === null ? null : { block, link, url: link.url ?? '' };
23
+ }
24
+ function editBytes(target, url) {
25
+ const resolved = resolve(target);
26
+ if (!resolved)
27
+ return null;
28
+ const { block, link } = resolved;
29
+ const current = linkFieldsFromInline(link, block.raw);
30
+ // A reference form cannot carry a NEW destination without editing its definition, which
31
+ // lives in another block; changing the url is the user opting into the inline form. The
32
+ // title rides along either way — the card never shows it, so it is not the card's to drop.
33
+ const fields = url === current.url
34
+ ? current
35
+ : {
36
+ text: current.text,
37
+ url,
38
+ ...(current.title !== undefined ? { title: current.title } : {})
39
+ };
40
+ const bytes = buildLinkEditBytes(link, block.raw, fields, deps.linkRef?.current);
41
+ return bytes === null ? null : { bytes, link };
42
+ }
43
+ function buildBytes(target, url) {
44
+ return editBytes(target, url)?.bytes ?? null;
45
+ }
46
+ function commitUrl(target, url) {
47
+ // An unchanged url is a close, not a write: the rebuild would respell author bytes the
48
+ // serializer normalizes (`(<a b>)` → `(a%20b)`) and mint an undo entry for nothing.
49
+ const resolved = resolve(target);
50
+ if (!resolved || url === resolved.url)
51
+ return;
52
+ const edit = editBytes(target, url);
53
+ if (!edit)
54
+ return;
55
+ void write(target.path, edit.link.start, edit.link.end, edit.bytes);
56
+ }
57
+ function commitCreate(target, url) {
58
+ const block = nodeAt(deps.getDoc(), target.path);
59
+ if (block === null || !isBlockNode(block))
60
+ return;
61
+ const bytes = buildLinkWrapBytes(block.raw, target.start, target.end, url, deps.linkRef?.current);
62
+ if (bytes === null)
63
+ return;
64
+ void write(target.path, target.start, target.end, bytes);
65
+ }
66
+ function removeLink(target) {
67
+ const resolved = resolve(target);
68
+ if (!resolved)
69
+ return;
70
+ const bytes = buildLinkUnwrapBytes(resolved.link, resolved.block.raw, deps.linkRef?.current);
71
+ if (bytes === null)
72
+ return;
73
+ void write(target.path, resolved.link.start, resolved.link.end, bytes);
74
+ }
75
+ async function write(path, start, end, bytes) {
76
+ await inlineRange.commitInlineRange(path, start, end, bytes, start);
77
+ // The construct's outer start, which is also the offset the undo entry records: the caret
78
+ // before an undo and the caret after it then agree, and a remove-link lands where the
79
+ // unwrapped text now begins.
80
+ await deps.landCaret(path, start);
81
+ }
82
+ /** The raw range the card anchors under: the resolved construct, or the create range as-is. */
83
+ function anchoredRange() {
84
+ const target = deps.getTarget();
85
+ if (target) {
86
+ const resolved = resolve(target);
87
+ return resolved
88
+ ? { path: target.path, start: resolved.link.start, end: resolved.link.end }
89
+ : null;
90
+ }
91
+ return deps.getCreateTarget();
92
+ }
93
+ function syncCardToLink(getCard) {
94
+ const cardEl = getCard();
95
+ const editorEl = deps.getEditorEl();
96
+ if (!cardEl || !editorEl)
97
+ return () => { };
98
+ // Measured through the rects API off RAW offsets, so the anchor survives the DOM rebuild
99
+ // every commit does — there is no element reference here to go stale.
100
+ const measure = () => {
101
+ const range = anchoredRange();
102
+ if (!range)
103
+ return;
104
+ const rect = deps.measureRange(range.path, range.start, range.end)[0];
105
+ if (!rect)
106
+ return;
107
+ const editorRect = editorEl.getBoundingClientRect();
108
+ const style = getComputedStyle(editorEl);
109
+ const borderTop = parseFloat(style.borderTopWidth) || 0;
110
+ const borderLeft = parseFloat(style.borderLeftWidth) || 0;
111
+ cardEl.style.top = `${rect.bottom - editorRect.top - borderTop + editorEl.scrollTop}px`;
112
+ cardEl.style.left = `${rect.left - editorRect.left - borderLeft + editorEl.scrollLeft}px`;
113
+ };
114
+ // The setup measure reads the document, and letting that register would make the caller's
115
+ // $effect tear down and re-wire these listeners on every keystroke. The `edit` subscription
116
+ // below is the one document trigger.
117
+ const unwireScroll = wireOverlayRemeasure({
118
+ el: cardEl,
119
+ editorRoot: editorEl,
120
+ blockRef: undefined,
121
+ measure,
122
+ untrackSetupMeasure: true
123
+ });
124
+ // An edit anywhere above the link shifts its y without touching the link itself.
125
+ const unsubscribe = deps.events.on('edit', measure);
126
+ window.addEventListener('resize', measure);
127
+ return () => {
128
+ unwireScroll();
129
+ unsubscribe();
130
+ window.removeEventListener('resize', measure);
131
+ };
132
+ }
133
+ return { resolve, buildBytes, commitUrl, commitCreate, removeLink, syncCardToLink };
134
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * `link.openCard` — the keyboard entry to the link card and the pressed state a toolbar paints for
3
+ * it, off one resolution of the construct holding the caret or a range inside it. The chord ENTERS
4
+ * the card (focus in the URL field), unlike a click, which opens it beside a caret that stays the
5
+ * document's. Live mode only: every other mode paints the destination.
6
+ */
7
+ import type { PresentationMode } from '../../presentation-mode';
8
+ import { type LinkPointQuery, type LinkTarget } from '../blocks/text/link-at-point';
9
+ import type { LinkCardState } from './link-card-state.svelte';
10
+ /** What locating the card's construct takes, whether a press or a pressed-state read asks. */
11
+ export interface LinkCardTargetQuery extends LinkPointQuery {
12
+ mode: PresentationMode;
13
+ /** The block-local raw selection, or null at a collapsed caret. Required, never defaulted:
14
+ * a surface that must mint no link says so by passing null wherever it could create. */
15
+ selection: {
16
+ start: number;
17
+ end: number;
18
+ } | null;
19
+ /** True while a range crosses block boundaries. Required for the same reason, and because
20
+ * `selection` cannot report it: read off this block's own DOM walk, an endpoint in another
21
+ * block comes back as end-of-walk — a range running to the block's end that nobody made. */
22
+ crossBlockRange: boolean;
23
+ }
24
+ export interface LinkCardEntryQuery extends LinkCardTargetQuery {
25
+ card: LinkCardState;
26
+ }
27
+ /**
28
+ * The construct the chord would EDIT: the card-editable one under the caret, which a range must
29
+ * lie wholly inside since the card edits ONE link. Null where the chord creates instead or opens
30
+ * nothing, so a pressed paint and the press it promises resolve the same construct.
31
+ */
32
+ export declare function linkCardTargetAt(query: LinkCardTargetQuery): LinkTarget | null;
33
+ /**
34
+ * Enter the card for the chord: the construct the caret — or a range lying wholly inside it —
35
+ * sits in, EDIT mode; failing that, CREATE mode over the range, declined when it crosses another
36
+ * construct's bytes, since wrapping inside or across one is a policy question. The chord is
37
+ * consumed either way, by the keymap arm that calls this.
38
+ */
39
+ export declare function enterLinkCardAtCaret(query: LinkCardEntryQuery): void;