@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,54 @@
1
+ /**
2
+ * The reuse pool that makes `component` inline widgets churn-safe. The editor rebuilds a block's
3
+ * whole inline-DOM on every keystroke; without a pool each rebuild remounts every widget's Svelte
4
+ * component, losing state and paying KaTeX-scale cost per character. Instances key by
5
+ * `${kind} ${source}`, and `mount`/`unmount` from 'svelte' stay contained here.
6
+ */
7
+ import type { AnyInlineKind, InlineNode } from '../../core/nodes';
8
+ import type { DocumentView } from '../../core/node-views';
9
+ import type { PresentationMode } from '../../presentation-mode';
10
+ export interface WidgetPoolAdapter<H> {
11
+ /** Build one instance, or null when it cannot be built (a caught mount throw). */
12
+ create(kind: AnyInlineKind, inline: InlineNode, source: string): H | null;
13
+ destroy(handle: H): void;
14
+ element(handle: H): HTMLElement;
15
+ }
16
+ export interface WidgetPool {
17
+ /**
18
+ * Adopt the oldest un-adopted live instance for the key, marking it adopted this
19
+ * pass; else build a new one. Render-pass only — every acquire sits inside a
20
+ * beginPass/sweep bracket. Key-only lookup cannot distinguish byte-identical
21
+ * duplicates, so an out-of-pass caller holding a specific element must restore it.
22
+ */
23
+ acquire(kind: AnyInlineKind, inline: InlineNode, source: string): HTMLElement | null;
24
+ /** Open a rebuild pass: un-adopt every instance so this pass re-earns them. */
25
+ beginPass(): void;
26
+ /** Close a rebuild pass: destroy every instance not adopted in it. */
27
+ sweep(): void;
28
+ /** Destroy everything — the block is unmounting. */
29
+ dispose(): void;
30
+ }
31
+ export declare function createWidgetPool<H>(adapter: WidgetPoolAdapter<H>): WidgetPool;
32
+ /** The live channels a mounted widget reads beside its frozen `{ inline, source }`
33
+ * snapshot. Every member is optional so a bare harness can mount without a shell. */
34
+ export interface SvelteWidgetPoolDeps {
35
+ /** A widget component's synchronous mount throw goes here (the editor's `error`
36
+ * channel). Absent leaves the caller falling back to the raw span silently. */
37
+ reportError?: (error: unknown) => void;
38
+ getPresentationMode?: () => PresentationMode;
39
+ /** The editor's theme name — the mode read's sibling, for a widget whose body an
40
+ * engine paints (its own colors, unreachable from CSS) rather than CSS styles. */
41
+ getTheme?: () => string;
42
+ getDocument?: () => DocumentView | undefined;
43
+ getContentVersion?: () => number;
44
+ /** The editor's navigation door, for a widget whose gesture jumps elsewhere in the
45
+ * document. Absent in a bare harness. */
46
+ navigateTo?: (path: number[], offset?: number) => Promise<boolean>;
47
+ }
48
+ /**
49
+ * The pool wired to Svelte mounting. A synchronous mount throw is caught, reported and surfaced as
50
+ * null so the caller falls back to the raw span. The getters ride ALONGSIDE the frozen
51
+ * `{ inline, source }` snapshot as live props: reuse keys on `${kind} ${source}`, so an instance
52
+ * outlives a mode flip or an edit elsewhere that a frozen value would not.
53
+ */
54
+ export declare function createSvelteWidgetPool(deps?: SvelteWidgetPoolDeps): WidgetPool;
@@ -0,0 +1,136 @@
1
+ /**
2
+ * The reuse pool that makes `component` inline widgets churn-safe. The editor rebuilds a block's
3
+ * whole inline-DOM on every keystroke; without a pool each rebuild remounts every widget's Svelte
4
+ * component, losing state and paying KaTeX-scale cost per character. Instances key by
5
+ * `${kind} ${source}`, and `mount`/`unmount` from 'svelte' stay contained here.
6
+ */
7
+ import { mount, unmount } from 'svelte';
8
+ import { getInlineWidgetComponent } from '../../core/inline/inline-widgets';
9
+ import { tracePoolPass } from '../../debug/interaction-trace';
10
+ import { assertInvariant } from '../../assert';
11
+ import { checkPoolBracket } from '../../invariants/inline-transitions';
12
+ export function createWidgetPool(adapter) {
13
+ // Multiset per `${kind} ${source}` key: two identical sources in one block are
14
+ // two entries in one bucket, each adopted at most once per pass.
15
+ const buckets = new Map();
16
+ // The acquire bracket (see WidgetPool.acquire) held as explicit state so a
17
+ // violation fires at this seam instead of surfacing as a widget leak (G1.25).
18
+ let passOpen = false;
19
+ // Per-pass adopt/build tallies for the interaction trace, recorded at sweep.
20
+ let passAdopt = 0;
21
+ let passBuild = 0;
22
+ function beginPass() {
23
+ assertInvariant('pool-bracket', () => checkPoolBracket(passOpen, 'beginPass'));
24
+ passOpen = true;
25
+ passAdopt = 0;
26
+ passBuild = 0;
27
+ for (const bucket of buckets.values()) {
28
+ for (const entry of bucket)
29
+ entry.adopted = false;
30
+ }
31
+ }
32
+ function acquire(kind, inline, source) {
33
+ assertInvariant('pool-bracket', () => checkPoolBracket(passOpen, 'acquire'));
34
+ const key = `${kind} ${source}`;
35
+ const bucket = buckets.get(key);
36
+ const reused = bucket?.find((entry) => !entry.adopted);
37
+ if (reused) {
38
+ reused.adopted = true;
39
+ passAdopt++;
40
+ // Source and rendered body are identical by key; only the widget's position
41
+ // may have shifted, so re-stamp the offsets cursor/selection reads.
42
+ const el = adapter.element(reused.handle);
43
+ el.dataset.sourceStart = String(inline.start);
44
+ el.dataset.sourceEnd = String(inline.end);
45
+ return el;
46
+ }
47
+ const handle = adapter.create(kind, inline, source);
48
+ if (handle === null)
49
+ return null;
50
+ passBuild++;
51
+ const entry = { handle, adopted: true };
52
+ if (bucket)
53
+ bucket.push(entry);
54
+ else
55
+ buckets.set(key, [entry]);
56
+ return adapter.element(handle);
57
+ }
58
+ function sweep() {
59
+ assertInvariant('pool-bracket', () => checkPoolBracket(passOpen, 'sweep'));
60
+ passOpen = false;
61
+ let destroyed = 0;
62
+ for (const [key, bucket] of [...buckets]) {
63
+ const survivors = [];
64
+ for (const entry of bucket) {
65
+ if (entry.adopted) {
66
+ entry.adopted = false;
67
+ survivors.push(entry);
68
+ }
69
+ else {
70
+ adapter.destroy(entry.handle);
71
+ destroyed++;
72
+ }
73
+ }
74
+ if (survivors.length)
75
+ buckets.set(key, survivors);
76
+ else
77
+ buckets.delete(key);
78
+ }
79
+ tracePoolPass(passAdopt, passBuild, destroyed);
80
+ }
81
+ function dispose() {
82
+ passOpen = false;
83
+ for (const bucket of buckets.values()) {
84
+ for (const entry of bucket)
85
+ adapter.destroy(entry.handle);
86
+ }
87
+ buckets.clear();
88
+ }
89
+ return { acquire, beginPass, sweep, dispose };
90
+ }
91
+ /**
92
+ * The pool wired to Svelte mounting. A synchronous mount throw is caught, reported and surfaced as
93
+ * null so the caller falls back to the raw span. The getters ride ALONGSIDE the frozen
94
+ * `{ inline, source }` snapshot as live props: reuse keys on `${kind} ${source}`, so an instance
95
+ * outlives a mode flip or an edit elsewhere that a frozen value would not.
96
+ */
97
+ export function createSvelteWidgetPool(deps = {}) {
98
+ const { reportError, getPresentationMode, getTheme, getDocument, getContentVersion, navigateTo } = deps;
99
+ return createWidgetPool({
100
+ create(kind, inline, source) {
101
+ const component = getInlineWidgetComponent(kind);
102
+ if (!component)
103
+ return null;
104
+ const wrapper = document.createElement('span');
105
+ wrapper.dataset.inlineWidget = '';
106
+ wrapper.dataset.sourceStart = String(inline.start);
107
+ wrapper.dataset.sourceEnd = String(inline.end);
108
+ wrapper.setAttribute('contenteditable', 'false');
109
+ try {
110
+ const instance = mount(component, {
111
+ target: wrapper,
112
+ props: {
113
+ inline,
114
+ source,
115
+ getPresentationMode,
116
+ getTheme,
117
+ getDocument,
118
+ getContentVersion,
119
+ navigateTo
120
+ }
121
+ });
122
+ return { wrapper, instance };
123
+ }
124
+ catch (error) {
125
+ reportError?.(error);
126
+ return null;
127
+ }
128
+ },
129
+ destroy(handle) {
130
+ void unmount(handle.instance);
131
+ },
132
+ element(handle) {
133
+ return handle.wrapper;
134
+ }
135
+ });
136
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Built-in block component registrations, applied by an explicit `registerBuiltInBlocks()` call:
3
+ * the `sideEffects` allowlist names dist paths and so never covers the src specifiers this
4
+ * library imports from itself, leaving a bare side-effect import here droppable. Lives in
5
+ * `components/` rather than `schema/` so the schema layer keeps no downstream imports.
6
+ */
7
+ export declare function registerBuiltInBlocks(): void;
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Built-in block component registrations, applied by an explicit `registerBuiltInBlocks()` call:
3
+ * the `sideEffects` allowlist names dist paths and so never covers the src specifiers this
4
+ * library imports from itself, leaving a bare side-effect import here droppable. Lives in
5
+ * `components/` rather than `schema/` so the schema layer keeps no downstream imports.
6
+ */
7
+ import { metadataOf } from '../core/nodes';
8
+ import { defineBlockComponent, registerBlockComponent } from '../schema/block-component-registry';
9
+ import { augmentBuiltin } from '../schema/block-kind-descriptor';
10
+ import { registerBuiltInDescriptors } from '../schema/built-in-descriptors';
11
+ import { augmentInlineWidgetKind } from '../core/inline/inline-widgets';
12
+ import { registerLiveJoinSeamCleaner, registerLiveSplitRebalancer } from '../schema/inline-construct-policy';
13
+ import { registerPasteSurface } from '../tree-operations/paste-surfaces';
14
+ import { imageWidgetOnSelectedKey } from './image/image-widget-editing';
15
+ import { cleanLiveJoinSeam } from './blocks/text/live-join-seam';
16
+ import { rebalanceLiveSplit } from './blocks/text/live-split-rebalance';
17
+ import TextEditableBlock from './blocks/text/TextEditableBlock.svelte';
18
+ import CodeBlock from './blocks/code/CodeBlock.svelte';
19
+ import ThematicBreakBlock from './blocks/ThematicBreakBlock.svelte';
20
+ import BlockquoteBlock from './blocks/BlockquoteBlock.svelte';
21
+ import ListBlock from './blocks/list/ListBlock.svelte';
22
+ import TableBlock from './blocks/table/TableBlock.svelte';
23
+ import { tableCellPasteSurface } from './blocks/table/table-cell-paste';
24
+ import { tableCaretAtPoint } from './blocks/table/table-caret-at-point';
25
+ import { tableDragHitTest } from './blocks/table/table-drag-hit-test';
26
+ function headingExtraProps(node) {
27
+ const level = metadataOf(node, 'heading')?.level ?? 1;
28
+ return { blockClass: `heading-${level}` };
29
+ }
30
+ const textAsRawBlock = defineBlockComponent(TextEditableBlock, () => ({
31
+ blockClass: 'raw-block'
32
+ }));
33
+ // Idempotence guard, not a registry bypass: a dev-server re-eval resets it so
34
+ // the register-once dev valve still replaces.
35
+ let registered = false;
36
+ export function registerBuiltInBlocks() {
37
+ if (registered)
38
+ return;
39
+ registered = true;
40
+ // Descriptors first — augmentBuiltin('table') below needs `table` registered.
41
+ registerBuiltInDescriptors();
42
+ registerBlockComponent('paragraph', defineBlockComponent(TextEditableBlock, () => ({ blockClass: 'paragraph-block' })));
43
+ registerBlockComponent('heading', defineBlockComponent(TextEditableBlock, headingExtraProps));
44
+ registerBlockComponent('setextHeading', defineBlockComponent(TextEditableBlock, headingExtraProps));
45
+ registerBlockComponent('thematicBreak', defineBlockComponent(ThematicBreakBlock));
46
+ registerBlockComponent('fencedCode', defineBlockComponent(CodeBlock));
47
+ registerBlockComponent('blockquote', defineBlockComponent(BlockquoteBlock));
48
+ registerBlockComponent('list', defineBlockComponent(ListBlock));
49
+ registerBlockComponent('table', defineBlockComponent(TableBlock));
50
+ // Raw-editable fallback for kinds with no rendered surface. tableRow/tableCell
51
+ // render inside TableBlock; these catch only orphans that reach BlockHost directly.
52
+ registerBlockComponent('indentedCode', textAsRawBlock);
53
+ registerBlockComponent('htmlBlock', textAsRawBlock);
54
+ registerBlockComponent('linkReferenceDefinition', textAsRawBlock);
55
+ registerBlockComponent('tableRow', textAsRawBlock);
56
+ registerBlockComponent('tableCell', textAsRawBlock);
57
+ registerBlockComponent('unrecognized', textAsRawBlock);
58
+ // tableCell is the one supportsInline kind with bespoke paste semantics, so it
59
+ // registers here and the default loop in paste/hooks.ts skips it — running both
60
+ // would let ordering silently revert cell paste to the plain inline default.
61
+ registerPasteSurface(tableCellPasteSurface);
62
+ // Table owns cell addressing, so it registers both point→cell hooks through the
63
+ // descriptor registry rather than the selection layer importing the component.
64
+ // Two hooks: a drag needs the exact hit and its decline, a caret the nearest cell.
65
+ augmentBuiltin('table', {
66
+ foreignDragHitTest: tableDragHitTest,
67
+ caretTargetAtPoint: tableCaretAtPoint
68
+ });
69
+ // Image resize is editor-layer behavior, so the core image kind stays data-only
70
+ // and gains its selected-key handler here, where the render layer is reachable.
71
+ augmentInlineWidgetKind('image', { onSelectedKey: imageWidgetOnSelectedKey });
72
+ // The split rebalancer and the join-seam cleaner need the inline parser and the render path,
73
+ // neither of which `tree-operations` may import, so the policy table holds the slots and this
74
+ // layer fills them.
75
+ registerLiveSplitRebalancer(rebalanceLiveSplit);
76
+ registerLiveJoinSeamCleaner(cleanLiveJoinSeam);
77
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Editor-root clipboard routing: copy/cut/paste for an event that reached no block surface. A
3
+ * selection whose block hosts no text position leaves the native selection empty, so Chromium
4
+ * dispatches at `document.body`, where no per-block binding sees it. Reading-mode gates live at
5
+ * the arms each route calls into, not here.
6
+ */
7
+ import type { BlockComponent } from '../block-component';
8
+ import type { DocumentGetter, PasteImageHook } from '../editor-keys';
9
+ import type { SelectionState } from '../selection/selection-state.svelte';
10
+ import type { CrossBlockHandlers } from '../selection/cross-block/dispatch';
11
+ import { type EditorEvents } from '../editor-events';
12
+ export interface EditorRootClipboardDeps {
13
+ selection: SelectionState;
14
+ getDoc: DocumentGetter;
15
+ crossBlock: CrossBlockHandlers;
16
+ /** Required-nullable so this seam cannot silently skip the arm the block surfaces
17
+ * run; `undefined` = no hook. */
18
+ onPasteImage: PasteImageHook | undefined;
19
+ events: EditorEvents;
20
+ /** The block owning the selected inline widget, or null when none is selected. */
21
+ getSelectedWidgetBlock(): BlockComponent | null;
22
+ }
23
+ export interface EditorRootClipboard {
24
+ /** `root` is the element the installing effect captured, not a live binding. */
25
+ handleCopy(event: ClipboardEvent, root: HTMLElement): void;
26
+ handleCut(event: ClipboardEvent, root: HTMLElement): void;
27
+ handlePaste(event: ClipboardEvent, root: HTMLElement): void;
28
+ }
29
+ export declare function createEditorRootClipboard(deps: EditorRootClipboardDeps): EditorRootClipboard;
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Editor-root clipboard routing: copy/cut/paste for an event that reached no block surface. A
3
+ * selection whose block hosts no text position leaves the native selection empty, so Chromium
4
+ * dispatches at `document.body`, where no per-block binding sees it. Reading-mode gates live at
5
+ * the arms each route calls into, not here.
6
+ */
7
+ import { claimsBodyChord } from '../active-editor';
8
+ import { emitClipboardError } from '../editor-events';
9
+ import { createImagePasteArm } from './paste-image-arm';
10
+ import { writeCrossBlockCopy, writeCrossBlockCut } from '../selection/cross-block/clipboard';
11
+ export function createEditorRootClipboard(deps) {
12
+ const crossDeps = {
13
+ selection: deps.selection,
14
+ getDoc: deps.getDoc,
15
+ crossBlock: deps.crossBlock
16
+ };
17
+ const imageArm = createImagePasteArm({
18
+ onPasteImage: deps.onPasteImage,
19
+ events: deps.events,
20
+ crossBlock: deps.crossBlock
21
+ });
22
+ /**
23
+ * The event landed nowhere: on this root, or on the body via the retarget above.
24
+ * Deliberately NOT "inside the root but not a block" — the search input and a
25
+ * host's header field are both inside and own their own clipboard. The body arm is
26
+ * claimant-scoped because the listener sees every editor on the page.
27
+ */
28
+ function landedNowhere(root, target) {
29
+ if (target === root)
30
+ return true;
31
+ return (target === null || target === root.ownerDocument.body) && claimsBodyChord(root);
32
+ }
33
+ /**
34
+ * Who owns an event that reached no block surface. `defaultPrevented` is the block surfaces'
35
+ * receipt: every arm of their shared clipboard skeleton prevents before it writes, and the one
36
+ * arm that declines to native is a collapsed cell caret, which is neither state below. Order
37
+ * decides nothing — widget selection and cross-block selection clear each other.
38
+ */
39
+ function targetOf(event, root) {
40
+ if (event.defaultPrevented)
41
+ return null;
42
+ if (!landedNowhere(root, event.target))
43
+ return null;
44
+ const block = deps.getSelectedWidgetBlock();
45
+ if (block)
46
+ return { arm: 'widget', block };
47
+ return deps.selection.isCrossBlock ? { arm: 'cross-block' } : null;
48
+ }
49
+ return {
50
+ handleCopy(event, root) {
51
+ const target = targetOf(event, root);
52
+ if (!target)
53
+ return;
54
+ if (target.arm === 'widget')
55
+ target.block.claimRootClipboard?.(event);
56
+ else
57
+ writeCrossBlockCopy(event, crossDeps);
58
+ },
59
+ handleCut(event, root) {
60
+ const target = targetOf(event, root);
61
+ if (!target)
62
+ return;
63
+ if (target.arm === 'widget')
64
+ target.block.claimRootClipboard?.(event);
65
+ else
66
+ void writeCrossBlockCut(event, crossDeps);
67
+ },
68
+ handlePaste(event, root) {
69
+ const target = targetOf(event, root);
70
+ if (!target)
71
+ return;
72
+ if (target.arm === 'widget')
73
+ target.block.claimRootClipboard?.(event);
74
+ else
75
+ void paste(event);
76
+ }
77
+ };
78
+ /**
79
+ * The image arm first, exactly as a block surface orders it: the root reaches this
80
+ * seam for a pure-image paste whenever the focus endpoint hosts no caret, and going
81
+ * straight to the cross-block arm discarded it for want of any `text/plain`.
82
+ */
83
+ async function paste(event) {
84
+ // Read the range synchronously with the event, while the cross-block arm still
85
+ // guarantees a selection — below the await, a read could only report nothing.
86
+ const rangeStartPath = deps.selection.start?.path.slice();
87
+ const images = imageArm.filesOf(event.clipboardData);
88
+ if (images.length === 0) {
89
+ await deps.crossBlock.handlePaste(event);
90
+ return;
91
+ }
92
+ // Prevent before awaiting the hook, as the surface skeleton does: the browser's
93
+ // own paste would otherwise fire during the import and inject DOM the CST never sees.
94
+ event.preventDefault();
95
+ const markdown = await imageArm.run(event, images);
96
+ if (markdown === null)
97
+ return;
98
+ // The selection collapsed mid-import, leaving an imported asset and no caret —
99
+ // the one landing this seam cannot supply, having no block surface to fall back on.
100
+ emitClipboardError(deps.events, {
101
+ error: new Error('imported image had no insertion point at the editor root; nothing inserted'),
102
+ ...(rangeStartPath ? { path: rangeStartPath } : {})
103
+ });
104
+ }
105
+ }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Editor-root chord routing: dispatch for keystrokes no mounted block consumed. Pure
3
+ * dispatch over live getters; the installing `$effect` stays in `Editor.svelte`.
4
+ *
5
+ * Arm order is load-bearing (pinned by `test/components/editor-root-keydown.test.ts`): search /
6
+ * Escape runs FIRST because the global-chord arm's focus gate is an unconditional
7
+ * early return, which would swallow a Mod+F pressed with the caret inside a block.
8
+ */
9
+ import type { PluginEditorLookup } from '../editor-keys';
10
+ import type { PluginActivation } from '../schema/plugin-activation';
11
+ import type { PresentationMode } from '../presentation-mode';
12
+ import type { SearchState } from '../search/search-state.svelte';
13
+ import type { CrossBlockHandlers } from '../selection/cross-block/dispatch';
14
+ import type { CommandErrorSink } from '../schema/block-commands';
15
+ import type { KeybindingOverrideMap } from '../schema/keybinding-overrides';
16
+ import { type GlobalCommandContext } from '../schema/commands';
17
+ export interface EditorRootKeydownDeps {
18
+ /** Getters, never values: a capture freezes the reading-mode gate and the
19
+ * override map at construction time. */
20
+ get searchBarEnabled(): boolean;
21
+ get mode(): PresentationMode;
22
+ /** One predicate, so the root Mod+H and the bar's chevron cannot diverge on when
23
+ * the replace row may open. */
24
+ get canReplace(): boolean;
25
+ get keybindingOverrides(): KeybindingOverrideMap;
26
+ get isCrossBlock(): boolean;
27
+ search: SearchState;
28
+ history: GlobalCommandContext['history'];
29
+ pluginEditor: PluginEditorLookup;
30
+ /** The plugins this instance activated, so the root claims only its own plugins'
31
+ * chords. `undefined` = every installed plugin. */
32
+ activation: PluginActivation | undefined;
33
+ onCommandError: CommandErrorSink;
34
+ crossBlock: Pick<CrossBlockHandlers, 'handleKeyDown'>;
35
+ /** True for nodes in the host's `header` slot: they sit inside `root.contains`
36
+ * without being the editor's own content. */
37
+ isHostChrome(node: Node | null): boolean;
38
+ /** Snapshot the pre-search caret; the bar's close handler restores it. */
39
+ saveSearchRange(range: Range | null): void;
40
+ setReplaceExpanded(expanded: boolean): void;
41
+ }
42
+ export interface EditorRootKeydown {
43
+ /** `root` is the element the installing effect captured, not a live binding: a
44
+ * teardown that nulled the component's reference must not reach here. */
45
+ handleKeyDown(event: KeyboardEvent, root: HTMLElement): void;
46
+ }
47
+ export declare function createEditorRootKeydown(deps: EditorRootKeydownDeps): EditorRootKeydown;
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Editor-root chord routing: dispatch for keystrokes no mounted block consumed. Pure
3
+ * dispatch over live getters; the installing `$effect` stays in `Editor.svelte`.
4
+ *
5
+ * Arm order is load-bearing (pinned by `test/components/editor-root-keydown.test.ts`): search /
6
+ * Escape runs FIRST because the global-chord arm's focus gate is an unconditional
7
+ * early return, which would swallow a Mod+F pressed with the caret inside a block.
8
+ */
9
+ import { claimsBodyChord, isForeignTextEntry } from '../active-editor';
10
+ import { isReservedUiChord, runGlobalChord } from '../schema/commands';
11
+ import { eventToChord } from '../schema/keybindings';
12
+ export function createEditorRootKeydown(deps) {
13
+ /**
14
+ * Search / Escape: focus inside this editor, or a search chord this instance
15
+ * claims. `claimsBodyChord` gives a lone editor Find/Replace page-wide while
16
+ * keeping a second mounted editor from stealing it. A foreign text-entry surface
17
+ * owns page-global Find while the user types in it, so the editor yields there.
18
+ */
19
+ function handleSearchChords(event, root, chord, active) {
20
+ if (!(root.contains(active) || (claimsBodyChord(root) && !isForeignTextEntry(active))))
21
+ return false;
22
+ if (deps.searchBarEnabled && chord && isReservedUiChord(chord)) {
23
+ event.preventDefault();
24
+ // Seed the query before open(): focusing the find input collapses the
25
+ // selection. The !isOpen guard keeps a repeat Mod+F from clobbering the
26
+ // saved pre-search caret with the collapsed one.
27
+ const selection = window.getSelection();
28
+ const selected = selection?.toString() ?? '';
29
+ if (!deps.search.isOpen) {
30
+ deps.saveSearchRange(selection && selection.rangeCount ? selection.getRangeAt(0).cloneRange() : null);
31
+ }
32
+ deps.setReplaceExpanded(chord === 'Mod+H' && deps.canReplace);
33
+ deps.search.open();
34
+ if (selected)
35
+ deps.search.setQuery(selected);
36
+ return true;
37
+ }
38
+ if (event.key === 'Escape' && deps.search.isOpen) {
39
+ event.preventDefault();
40
+ deps.search.close();
41
+ return true;
42
+ }
43
+ return false;
44
+ }
45
+ /**
46
+ * Undo/redo, plugin-global chords and cross-block motion fire only when no block holds focus:
47
+ * unlike the search chords, these collide with a focused outside element's native behavior (a
48
+ * text input owns Mod+Z). The gap caret's proxy is focused DOM of its own and resolves the same
49
+ * chords at the target (`GapCaret.svelte`), so this arm stays out of its way.
50
+ */
51
+ function ownsWindowedOutCaret(root, active) {
52
+ const noElementFocused = active === null || active === root.ownerDocument.body;
53
+ return active === root || (noElementFocused && claimsBodyChord(root));
54
+ }
55
+ return {
56
+ handleKeyDown(event, root) {
57
+ // Normalizes the key (CapsLock uppercases e.key without Shift), matching
58
+ // every other chord-dispatch site.
59
+ const chord = eventToChord(event);
60
+ const active = root.ownerDocument.activeElement;
61
+ // Host chrome owns its own keystrokes whole. The yield lives at the dispatch
62
+ // entry rather than in each arm; `isForeignTextEntry` can't answer it, since
63
+ // it means "outside every mounted editor" and the slot is inside one.
64
+ if (deps.isHostChrome(active))
65
+ return;
66
+ if (handleSearchChords(event, root, chord, active))
67
+ return;
68
+ if (!ownsWindowedOutCaret(root, active))
69
+ return;
70
+ // No block is focused here, so resolve at global scope — override tier included, or a
71
+ // consumer's global rebind would be dead at this surface alone. The seam carries the
72
+ // reading gate and answers whether the press was consumed.
73
+ if (chord &&
74
+ runGlobalChord(chord, deps.keybindingOverrides, {
75
+ isReading: deps.mode === 'reading',
76
+ history: deps.history,
77
+ pluginEditor: deps.pluginEditor,
78
+ activation: deps.activation,
79
+ onCommandError: deps.onCommandError
80
+ })) {
81
+ event.preventDefault();
82
+ return;
83
+ }
84
+ if (deps.isCrossBlock)
85
+ void deps.crossBlock.handleKeyDown(event);
86
+ }
87
+ };
88
+ }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Editor-root ambient listeners: the mod-active cursor tracker, the selectionchange
3
+ * bridge, and the viewport-height watcher. Pure dispatch over live getters; each
4
+ * installing `$effect` stays in `Editor.svelte` as a guard plus one install call,
5
+ * returning the teardown. `onRoot`/`removeAll` capture that add/remove pair once.
6
+ */
7
+ import type { UserScrollport } from '../cursor/scroll-ancestors';
8
+ export declare function onRoot<E extends Event>(target: EventTarget, type: string, handler: (event: E) => void, options?: {
9
+ capture?: boolean;
10
+ passive?: boolean;
11
+ }): () => void;
12
+ export declare function removeAll(...removers: (() => void)[]): () => void;
13
+ /**
14
+ * Only Ctrl/Cmd+click activates a link, so CSS switches links to a pointer cursor
15
+ * off `data-mod-active`. Reset on blur and visibility loss, or a modifier released
16
+ * while the page is unfocused sticks the cursor on.
17
+ */
18
+ export declare function installModActiveTracker(root: HTMLElement): () => void;
19
+ export interface SelectionChangeBridgeDeps {
20
+ /** The element the installing effect captured, not a live binding. */
21
+ root: HTMLElement;
22
+ /** Live predicate, never a capture: the header slot can mount after install. */
23
+ isHostChrome(node: Node | null): boolean;
24
+ /** Emits this editor's current selection snapshot, read at event time. */
25
+ emit(): void;
26
+ }
27
+ /**
28
+ * Single-block caret motion never goes through SelectionState, so without this
29
+ * bridge subscribers miss every intra-block move. Scoped to `root` to avoid noise
30
+ * from selections elsewhere on the page.
31
+ */
32
+ export declare function installSelectionChangeBridge(deps: SelectionChangeBridgeDeps): () => void;
33
+ /**
34
+ * A focus departure is a selection change no browser channel reports: the native range can
35
+ * survive unfocused while the editor's own read goes null, so the channel announces it. Judged
36
+ * after the flush, never at focusout: a structural commit unmounts the focused surface and
37
+ * lands focus again after its own tick, and a departure that came back is no departure.
38
+ */
39
+ export declare function installEditorBlurAnnouncer(deps: {
40
+ root: HTMLElement;
41
+ emit: () => void;
42
+ }): () => void;
43
+ /** Calls `bump` on a height change of the resolved scrollport `target`. */
44
+ export declare function installViewportHeightWatcher(target: UserScrollport, bump: () => void): () => void;