@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,195 @@
1
+ import { DEV } from 'esm-env';
2
+ import { tick } from 'svelte';
3
+ import { groupDecorationsByAncestor, groupDecorationsByPath, pathKey } from './buckets';
4
+ import { islandPosition } from './island-dom';
5
+ import { assertInvariant } from '../assert';
6
+ import { isCommitInProgress } from '../invariants/commit-scope';
7
+ import { contentLengthOf, isProseKind } from '../core/inline';
8
+ import { isBlockNode, nodeAt } from '../tree-operations/node-ops';
9
+ import { devWarn } from '../dev-warn';
10
+ import { recordDecorationRun } from '../perf/instruments';
11
+ const EMPTY_MARKS = [];
12
+ const EMPTY_ISLANDS = [];
13
+ const EMPTY_BLOCKS = [];
14
+ export function createDecorationEngine(deps) {
15
+ // Non-reactive registry state, index-aligned with `results`. Handles close over the source
16
+ // object, not its index, so a dispose mid-list never staleness-shifts a surviving handle.
17
+ const sources = [];
18
+ const names = new Set();
19
+ const warnedUnrenderableIslands = new Set();
20
+ let results = $state([]);
21
+ // Deliberately not reactive: an invalidate() that reads it must not schedule a
22
+ // recompute of the derived buckets.
23
+ let editEpoch = 0;
24
+ const merged = $derived(results.flat());
25
+ const byPath = $derived(groupDecorationsByPath(merged));
26
+ const byAncestor = $derived(groupDecorationsByAncestor(merged));
27
+ function runSource(source) {
28
+ const i = sources.indexOf(source);
29
+ if (i < 0)
30
+ return; // disposed between schedule and run
31
+ recordDecorationRun();
32
+ let next;
33
+ try {
34
+ next = source.provide(deps.getDoc(), { editEpoch });
35
+ }
36
+ catch (error) {
37
+ deps.onSourceError?.(source.name, error);
38
+ return; // keep the source's prior decorations — a throw never blanks the view
39
+ }
40
+ warnUnrenderableIslands(source.name, next);
41
+ // An empty→empty re-run must not reassign `results`, or every keystroke would
42
+ // republish the derived buckets for sources that never emit.
43
+ if (results[i].length === 0 && next.length === 0)
44
+ return;
45
+ const copy = results.slice();
46
+ copy[i] = next;
47
+ results = copy;
48
+ }
49
+ /**
50
+ * Why the render path will apply nothing for this island, or null when it will. The
51
+ * verdict belongs here and nowhere downstream: only this pass holds the decorations
52
+ * beside the document they were derived from, so only here does an unrenderable island
53
+ * mean the author placed it wrong rather than the document having moved since.
54
+ */
55
+ function islandDefect(dec, node) {
56
+ // Non-prose kinds run no inline pass, so they apply no islands.
57
+ if (!isProseKind(node.kind)) {
58
+ return {
59
+ key: `non-prose\0${node.kind}`,
60
+ message: `on a non-prose ${node.kind} block; islands render only in prose blocks`
61
+ };
62
+ }
63
+ // An END offset, not a count: a heading's content starts past its marker, so reporting it as
64
+ // a byte total would name a number the author cannot place anything at.
65
+ const contentEnd = contentLengthOf(node);
66
+ const held = `the block's content ends at ${contentEnd}`;
67
+ if (dec.type === 'widget') {
68
+ if (dec.offset >= 0 && dec.offset <= contentEnd)
69
+ return null;
70
+ return { key: 'range', message: `at offset ${dec.offset}, but ${held}` };
71
+ }
72
+ if (dec.start >= 0 && dec.start < dec.end && dec.end <= contentEnd)
73
+ return null;
74
+ return { key: 'range', message: `at ${dec.start}..${dec.end}, but ${held}` };
75
+ }
76
+ function warnUnrenderableIslands(sourceName, decs) {
77
+ if (!DEV)
78
+ return;
79
+ const doc = deps.getDoc();
80
+ for (const dec of decs) {
81
+ if (dec.type !== 'widget' && dec.type !== 'replace')
82
+ continue;
83
+ const node = nodeAt(doc, dec.path);
84
+ if (!node || !isBlockNode(node))
85
+ continue;
86
+ const defect = islandDefect(dec, node);
87
+ if (!defect)
88
+ continue;
89
+ const key = `${sourceName}\0${defect.key}`;
90
+ if (warnedUnrenderableIslands.has(key))
91
+ continue;
92
+ warnedUnrenderableIslands.add(key);
93
+ devWarn('decorations', `source '${sourceName}' places a ${dec.type} island ${defect.message}`, { path: dec.path });
94
+ }
95
+ }
96
+ // A source invalidating from its own `edit` handler is asking to re-run inside the commit
97
+ // that emitted the event; deferred here to one run per source once the commit publishes.
98
+ const deferred = new Set();
99
+ let flushQueued = false;
100
+ function runAfterCommit(source) {
101
+ deferred.add(source);
102
+ if (flushQueued)
103
+ return;
104
+ flushQueued = true;
105
+ void tick().then(() => {
106
+ flushQueued = false;
107
+ const pending = [...deferred];
108
+ deferred.clear();
109
+ for (const source of pending)
110
+ runSource(source);
111
+ });
112
+ }
113
+ function runAll() {
114
+ assertNotInCommit();
115
+ for (const source of sources)
116
+ runSource(source);
117
+ }
118
+ function addSource(source) {
119
+ if (names.has(source.name)) {
120
+ throw new Error(`addSource: a decoration source named '${source.name}' is already registered`);
121
+ }
122
+ names.add(source.name);
123
+ sources.push(source);
124
+ results = [...results, []];
125
+ runSource(source);
126
+ // Not `sources.indexOf`: dispose frees the name, so the same source object may be
127
+ // registered again, and this handle must stay inert over that second registration.
128
+ let live = true;
129
+ return {
130
+ invalidate: () => {
131
+ if (!live)
132
+ return;
133
+ if (isCommitInProgress())
134
+ runAfterCommit(source);
135
+ else
136
+ runSource(source);
137
+ },
138
+ dispose: () => {
139
+ if (!live)
140
+ return;
141
+ live = false;
142
+ const i = sources.indexOf(source);
143
+ sources.splice(i, 1);
144
+ names.delete(source.name);
145
+ results = results.filter((_, idx) => idx !== i);
146
+ }
147
+ };
148
+ }
149
+ function filterMarks(bucket) {
150
+ return bucket.filter((d) => d.dec.type === 'mark');
151
+ }
152
+ return {
153
+ addSource,
154
+ get sourceCount() {
155
+ return sources.length;
156
+ },
157
+ notifyEdit() {
158
+ assertNotInCommit();
159
+ editEpoch++;
160
+ runAll();
161
+ },
162
+ marksForPath(path) {
163
+ const bucket = byPath.get(pathKey(path));
164
+ return bucket ? filterMarks(bucket) : EMPTY_MARKS;
165
+ },
166
+ marksForDescendants(path) {
167
+ const bucket = byAncestor.get(pathKey(path));
168
+ return bucket ? filterMarks(bucket) : EMPTY_MARKS;
169
+ },
170
+ islandsForPath(path) {
171
+ const bucket = byPath.get(pathKey(path));
172
+ if (!bucket)
173
+ return EMPTY_ISLANDS;
174
+ const islands = bucket.filter((d) => d.dec.type === 'widget' || d.dec.type === 'replace');
175
+ return islands.sort((a, b) => islandPosition(a.dec) - islandPosition(b.dec));
176
+ },
177
+ blockDecorationsForPath(path) {
178
+ const bucket = byPath.get(pathKey(path));
179
+ if (!bucket)
180
+ return EMPTY_BLOCKS;
181
+ return bucket
182
+ .filter((d) => d.dec.type === 'block')
183
+ .map((d) => d.dec);
184
+ }
185
+ };
186
+ }
187
+ // A re-run inside the commit ceremony would let a source read a half-applied tree.
188
+ function assertNotInCommit() {
189
+ assertInvariant('decoration-run-in-commit', () => isCommitInProgress()
190
+ ? {
191
+ code: 'decoration-run-in-commit',
192
+ message: 'decoration engine re-ran inside the commit ceremony'
193
+ }
194
+ : null);
195
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * In-flow decoration islands: zero-width `widget` insertions and byte-carrying `replace`
3
+ * covers. An island is an atomic inline widget, so the shared raw-offset walk reads the
4
+ * block back byte-exact with no walker changes — a widget island spans zero bytes, and a
5
+ * replace island's `data-source-*` span equals the raw span of the DOM it displaced.
6
+ *
7
+ * Whether a range is one the author could place at all is decided where the source and the
8
+ * document it read are provably the same version (`decoration-state.svelte.ts`); a range
9
+ * this pass cannot honour is one the document has since outgrown, so it drops silently.
10
+ */
11
+ import type { ContentLength } from '../core/inline';
12
+ import type { IndexedDecoration } from './buckets';
13
+ import type { Decoration, DecorationWidgetSpec, ReplaceDecoration, WidgetDecoration } from './types';
14
+ export interface ApplyIslandsOpts {
15
+ mountWidget: (spec: DecorationWidgetSpec, dec: Decoration) => {
16
+ el: HTMLElement;
17
+ destroy(): void;
18
+ } | null;
19
+ onSkipped?: (dec: Decoration, reason: string) => void;
20
+ /** Raw-space length of the block's rendered content (see {@link ContentLength}). */
21
+ contentLength: ContentLength;
22
+ /** Rendered ambient-marker length. Island offsets are raw-relative and the shared walk
23
+ * counts ambient text as ordinary text, so every boundary adds this (the
24
+ * TextEditableBlock compensation pattern). Default 0. */
25
+ ambientLength?: number;
26
+ }
27
+ /** Mutates `root` (the freshly built inline fragment). Returns destroy handles for
28
+ * mounted widgets — the caller sweeps them next rebuild. */
29
+ export declare function applyIslandDecorations(root: ParentNode, raw: string, islands: IndexedDecoration<WidgetDecoration | ReplaceDecoration>[], opts: ApplyIslandsOpts): Array<() => void>;
30
+ /** Gated island signature for a render key. No islands ⇒ '', keeping an undecorated
31
+ * block's key byte-identical to the island-free format. Widget identity is deliberately
32
+ * untracked: same position + class ⇒ equal signature (see DecorationWidgetSpec). */
33
+ export declare function islandRenderKeyPart(islands: IndexedDecoration<WidgetDecoration | ReplaceDecoration>[]): string;
34
+ /** An island's ordering position, shared by the application pass and the render order. */
35
+ export declare function islandPosition(dec: WidgetDecoration | ReplaceDecoration): number;
@@ -0,0 +1,148 @@
1
+ /**
2
+ * In-flow decoration islands: zero-width `widget` insertions and byte-carrying `replace`
3
+ * covers. An island is an atomic inline widget, so the shared raw-offset walk reads the
4
+ * block back byte-exact with no walker changes — a widget island spans zero bytes, and a
5
+ * replace island's `data-source-*` span equals the raw span of the DOM it displaced.
6
+ *
7
+ * Whether a range is one the author could place at all is decided where the source and the
8
+ * document it read are provably the same version (`decoration-state.svelte.ts`); a range
9
+ * this pass cannot honour is one the document has since outgrown, so it drops silently.
10
+ */
11
+ import { DEV } from 'esm-env';
12
+ import { ambientSpanOf } from '../ambient/ambient-dom';
13
+ import { asRawOffset, toDomTextOffset, toRawOffset } from '../cursor/coordinate-spaces';
14
+ import { createRangeAtDomTextOffsets, rawTextOfNode, widgetSpanContainingOffset } from '../cursor/widget-offset';
15
+ import { devWarn } from '../dev-warn';
16
+ /** Mutates `root` (the freshly built inline fragment). Returns destroy handles for
17
+ * mounted widgets — the caller sweeps them next rebuild. */
18
+ export function applyIslandDecorations(root, raw, islands, opts) {
19
+ if (islands.length === 0)
20
+ return [];
21
+ const ambientLength = opts.ambientLength ?? 0;
22
+ const contentLength = opts.contentLength;
23
+ const destroys = [];
24
+ for (const { dec } of orderForApplication(islands)) {
25
+ if (dec.type === 'widget')
26
+ applyWidget(dec);
27
+ else
28
+ applyReplace(dec);
29
+ }
30
+ return destroys;
31
+ function applyWidget(dec) {
32
+ if (dec.offset < 0 || dec.offset > contentLength)
33
+ return;
34
+ const walkOffset = toDomTextOffset(asRawOffset(dec.offset), ambientLength);
35
+ const range = createRangeAtDomTextOffsets(root, walkOffset, walkOffset);
36
+ if (!range) {
37
+ opts.onSkipped?.(dec, 'no DOM position at offset');
38
+ return;
39
+ }
40
+ const mounted = opts.mountWidget(dec.widget, dec);
41
+ if (!mounted) {
42
+ opts.onSkipped?.(dec, 'widget mount failed');
43
+ return;
44
+ }
45
+ destroys.push(mounted.destroy);
46
+ const island = buildIsland(dec.offset, dec.offset);
47
+ island.appendChild(mounted.el);
48
+ insertHoistedOutOfAmbient(range, island);
49
+ }
50
+ function applyReplace(dec) {
51
+ if (dec.start < 0 || dec.end > contentLength || dec.start >= dec.end)
52
+ return;
53
+ // A boundary strictly inside an atomic widget snaps outward to whole-element
54
+ // coverage, so the island's span still equals the bytes it displaces.
55
+ let start = dec.start;
56
+ let end = dec.end;
57
+ const startSpan = widgetSpanContainingOffset(root, toDomTextOffset(asRawOffset(start), ambientLength));
58
+ if (startSpan)
59
+ start = toRawOffset(startSpan.start, ambientLength);
60
+ const endSpan = widgetSpanContainingOffset(root, toDomTextOffset(asRawOffset(end), ambientLength));
61
+ if (endSpan)
62
+ end = toRawOffset(endSpan.end, ambientLength);
63
+ if (startSpan || endSpan) {
64
+ devWarn('decorations', `replace boundary inside an atomic widget; snapped ${dec.start}..${dec.end} outward to ${start}..${end}`);
65
+ }
66
+ const range = createRangeAtDomTextOffsets(root, toDomTextOffset(asRawOffset(start), ambientLength), toDomTextOffset(asRawOffset(end), ambientLength));
67
+ if (!range) {
68
+ opts.onSkipped?.(dec, 'no DOM range for span');
69
+ return;
70
+ }
71
+ const ambient = ambientSpanOf(root);
72
+ if (ambient && ambient.contains(range.startContainer))
73
+ range.setStartAfter(ambient);
74
+ const extracted = range.extractContents();
75
+ if (DEV) {
76
+ const displaced = rawTextOfNode(extracted, raw);
77
+ if (displaced !== raw.slice(start, end)) {
78
+ devWarn('decorations', 'replace island span disagrees with the displaced DOM bytes', {
79
+ span: [start, end],
80
+ displaced
81
+ });
82
+ }
83
+ }
84
+ const island = buildIsland(start, end);
85
+ if (dec.class)
86
+ island.classList.add(...dec.class.split(/\s+/).filter(Boolean));
87
+ if (dec.widget) {
88
+ const mounted = opts.mountWidget(dec.widget, dec);
89
+ if (mounted) {
90
+ destroys.push(mounted.destroy);
91
+ island.appendChild(mounted.el);
92
+ }
93
+ }
94
+ range.insertNode(island);
95
+ }
96
+ // The walk resolves a position at the ambient boundary to the END of the span's text,
97
+ // but an island must land after the span, never inside the read-only marker.
98
+ function insertHoistedOutOfAmbient(range, island) {
99
+ const ambient = ambientSpanOf(root);
100
+ if (ambient && ambient.contains(range.startContainer)) {
101
+ ambient.after(island);
102
+ return;
103
+ }
104
+ range.insertNode(island);
105
+ }
106
+ }
107
+ /** Gated island signature for a render key. No islands ⇒ '', keeping an undecorated
108
+ * block's key byte-identical to the island-free format. Widget identity is deliberately
109
+ * untracked: same position + class ⇒ equal signature (see DecorationWidgetSpec). */
110
+ export function islandRenderKeyPart(islands) {
111
+ if (islands.length === 0)
112
+ return '';
113
+ return `\0${islands.map((i) => islandSig(i.dec)).join(';')}`;
114
+ }
115
+ const islandSig = (d) => d.type === 'widget'
116
+ ? `w:${d.offset}:${d.side ?? 'after'}`
117
+ : `r:${d.start}-${d.end}:${d.class ?? ''}:${d.widget ? 1 : 0}`;
118
+ /** An island's ordering position, shared by the application pass and the render order. */
119
+ export function islandPosition(dec) {
120
+ return dec.type === 'widget' ? dec.offset : dec.start;
121
+ }
122
+ // ── Internal ────────────────────────────────────────────────────────────────
123
+ /**
124
+ * Descending position order, so a replace extraction never spans an island inserted
125
+ * earlier in the pass. Ties put replaces first, since a same-start widget island would be
126
+ * swallowed by the extraction; `side: 'after'` widgets follow, leaving the final DOM order
127
+ * at one offset as [before, after].
128
+ */
129
+ function orderForApplication(islands) {
130
+ return [...islands].sort((a, b) => islandPosition(b.dec) - islandPosition(a.dec) ||
131
+ tieRank(a.dec) - tieRank(b.dec) ||
132
+ b.index - a.index);
133
+ }
134
+ function tieRank(dec) {
135
+ if (dec.type === 'replace')
136
+ return 0;
137
+ return dec.side === 'before' ? 2 : 1;
138
+ }
139
+ function buildIsland(sourceStart, sourceEnd) {
140
+ const island = document.createElement('span');
141
+ island.className = 'decoration-island';
142
+ island.dataset.inlineWidget = '';
143
+ island.dataset.decorationIsland = '';
144
+ island.dataset.sourceStart = String(sourceStart);
145
+ island.dataset.sourceEnd = String(sourceEnd);
146
+ island.setAttribute('contenteditable', 'false');
147
+ return island;
148
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The `data-` names a block decoration may not spell. `.block-host` is an ancestor of every walk
3
+ * container, so an attribute here answers the ancestor lookups the CSS families, the offset walk
4
+ * and selection/windowing all make — a decoration spelling one diverges the readers from what the
5
+ * DOM actually holds. The list is what those consumers read via `closest()` or an ancestor
6
+ * combinator; a name read only on the element that writes it is not in scope.
7
+ */
8
+ export declare const RESERVED_BLOCK_ATTRS: ReadonlySet<string>;
9
+ /** A block decoration's attributes minus the names it may not spell, which are dropped with a dev
10
+ * warn. Reserved is asked in lowercase: `setAttribute` lowercases, so a capital is not a
11
+ * different name, only a different spelling of the same one. */
12
+ export declare function acceptedBlockAttrs(attrs: Record<string, string> | undefined, path: number[]): Array<[string, string]>;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * The `data-` names a block decoration may not spell. `.block-host` is an ancestor of every walk
3
+ * container, so an attribute here answers the ancestor lookups the CSS families, the offset walk
4
+ * and selection/windowing all make — a decoration spelling one diverges the readers from what the
5
+ * DOM actually holds. The list is what those consumers read via `closest()` or an ancestor
6
+ * combinator; a name read only on the element that writes it is not in scope.
7
+ */
8
+ import { devWarn } from '../dev-warn';
9
+ export const RESERVED_BLOCK_ATTRS = new Set([
10
+ 'data-block-path',
11
+ 'data-block-kind',
12
+ 'data-content-empty',
13
+ 'data-cross-block',
14
+ 'data-decoration-island',
15
+ 'data-focused',
16
+ 'data-gap-caret',
17
+ 'data-image-overlay',
18
+ 'data-image-widget',
19
+ 'data-inline-widget',
20
+ 'data-link-card',
21
+ 'data-presentation',
22
+ 'data-table-row-idx'
23
+ ]);
24
+ /** The name production `setAttribute` enforces: a name it refuses throws inside the decoration
25
+ * effect, taking the whole mount rather than one attribute. */
26
+ const ATTR_NAME = /^[A-Za-z_:][A-Za-z0-9_.:-]*$/;
27
+ /** A block decoration's attributes minus the names it may not spell, which are dropped with a dev
28
+ * warn. Reserved is asked in lowercase: `setAttribute` lowercases, so a capital is not a
29
+ * different name, only a different spelling of the same one. */
30
+ export function acceptedBlockAttrs(attrs, path) {
31
+ const accepted = [];
32
+ for (const [name, value] of Object.entries(attrs ?? {})) {
33
+ const refusal = !ATTR_NAME.test(name)
34
+ ? 'is not a valid attribute name'
35
+ : RESERVED_BLOCK_ATTRS.has(name.toLowerCase())
36
+ ? 'is reserved by the editor'
37
+ : null;
38
+ if (refusal !== null) {
39
+ devWarn('decorations', `block decoration attribute '${name}' ${refusal} and was dropped`, {
40
+ path
41
+ });
42
+ continue;
43
+ }
44
+ accepted.push([name, value]);
45
+ }
46
+ return accepted;
47
+ }
@@ -0,0 +1,68 @@
1
+ /**
2
+ * View-only annotations layered over the rendered document. Decorations never enter the
3
+ * CST: pure sources produce them per-instance, and overlays/islands consume them.
4
+ */
5
+ import type { DocumentView } from '../core/node-views';
6
+ export interface MarkDecoration {
7
+ type: 'mark';
8
+ path: number[];
9
+ start: number;
10
+ end: number;
11
+ class: string;
12
+ attrs?: Record<string, string>;
13
+ interactive?: {
14
+ onClick: (dec: MarkDecoration, ev: MouseEvent) => void;
15
+ };
16
+ }
17
+ export interface WidgetDecoration {
18
+ type: 'widget';
19
+ path: number[];
20
+ offset: number;
21
+ side?: 'before' | 'after';
22
+ widget: DecorationWidgetSpec;
23
+ }
24
+ export interface ReplaceDecoration {
25
+ type: 'replace';
26
+ path: number[];
27
+ start: number;
28
+ end: number;
29
+ widget?: DecorationWidgetSpec;
30
+ class?: string;
31
+ }
32
+ export interface BlockDecoration {
33
+ type: 'block';
34
+ path: number[];
35
+ class?: string;
36
+ attrs?: Record<string, string>;
37
+ badge?: DecorationWidgetSpec;
38
+ }
39
+ export type Decoration = MarkDecoration | WidgetDecoration | ReplaceDecoration | BlockDecoration;
40
+ /** Render keys don't track widget identity: same position + class ⇒ equal. Vary `class`
41
+ * to force a re-render. */
42
+ export type DecorationWidgetSpec = {
43
+ component: import('svelte').Component<{
44
+ decoration: Decoration;
45
+ }>;
46
+ } | {
47
+ buildDom: (dec: Decoration) => HTMLElement;
48
+ };
49
+ export interface ProvideContext {
50
+ /** Bumped once per document change, never by invalidate(). The memo key for sources that
51
+ * cache their scan; `doc.children` identity is NOT one, since typing mutates in place. */
52
+ editEpoch: number;
53
+ }
54
+ export interface DecorationSource {
55
+ name: string;
56
+ provide: (doc: DocumentView, ctx: ProvideContext) => Decoration[];
57
+ }
58
+ export interface DecorationSourceHandle {
59
+ /** Synchronous by contract: decorations and buckets reflect the new result before this
60
+ * returns. Search's setQuery relies on it — never defer. The one exception is a call
61
+ * from inside a commit (an `edit` handler): those coalesce to one run once it publishes,
62
+ * since a source must never read a half-applied tree. */
63
+ invalidate(): void;
64
+ dispose(): void;
65
+ }
66
+ export interface DecorationRegistry {
67
+ addSource(source: DecorationSource): DecorationSourceHandle;
68
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * View-only annotations layered over the rendered document. Decorations never enter the
3
+ * CST: pure sources produce them per-instance, and overlays/islands consume them.
4
+ */
5
+ export {};
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The one mounting seam for decoration widget specs, so error containment and teardown
3
+ * semantics can't drift between block badges and inline islands.
4
+ */
5
+ import type { Decoration, DecorationWidgetSpec } from './types';
6
+ export interface DecorationWidgetHandle {
7
+ el: HTMLElement;
8
+ /** Unmounts the component (if any) and detaches `el`. Idempotent. */
9
+ destroy(): void;
10
+ }
11
+ /**
12
+ * Build a widget spec's DOM. A synchronous throw is contained and surfaced as null, so the
13
+ * caller renders without the widget instead of tearing down the block.
14
+ */
15
+ export declare function mountDecorationWidget(spec: DecorationWidgetSpec, dec: Decoration, reportError?: (error: unknown) => void): DecorationWidgetHandle | null;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The one mounting seam for decoration widget specs, so error containment and teardown
3
+ * semantics can't drift between block badges and inline islands.
4
+ */
5
+ import { mount, unmount } from 'svelte';
6
+ /**
7
+ * Build a widget spec's DOM. A synchronous throw is contained and surfaced as null, so the
8
+ * caller renders without the widget instead of tearing down the block.
9
+ */
10
+ export function mountDecorationWidget(spec, dec, reportError) {
11
+ try {
12
+ if ('component' in spec) {
13
+ const el = document.createElement('span');
14
+ const instance = mount(spec.component, { target: el, props: { decoration: dec } });
15
+ // The flag is what makes the documented idempotence real: a second `unmount` of the same
16
+ // instance is not a no-op the way a second `remove()` is.
17
+ let unmounted = false;
18
+ return {
19
+ el,
20
+ destroy: () => {
21
+ if (!unmounted)
22
+ void unmount(instance);
23
+ unmounted = true;
24
+ el.remove();
25
+ }
26
+ };
27
+ }
28
+ const el = spec.buildDom(dec);
29
+ return { el, destroy: () => el.remove() };
30
+ }
31
+ catch (error) {
32
+ reportError?.(error);
33
+ return null;
34
+ }
35
+ }
@@ -0,0 +1,13 @@
1
+ export interface DevWarnEntry {
2
+ tag: string;
3
+ message: string;
4
+ details?: unknown;
5
+ }
6
+ export type DevWarnSink = (entry: DevWarnEntry) => void;
7
+ /**
8
+ * Route fires to `next` instead of the console, and return the sink it replaced. For a
9
+ * harness that must read fires structurally; runner-agnostic by contract, so nothing here
10
+ * may know about a test runner. Nothing registers one in production or on a dev server.
11
+ */
12
+ export declare function setDevWarnSink(next: DevWarnSink | null): DevWarnSink | null;
13
+ export declare function devWarn(tag: string, message: string, details?: unknown): void;
@@ -0,0 +1,28 @@
1
+ import { editorEnv } from './env';
2
+ let sink = null;
3
+ /**
4
+ * Route fires to `next` instead of the console, and return the sink it replaced. For a
5
+ * harness that must read fires structurally; runner-agnostic by contract, so nothing here
6
+ * may know about a test runner. Nothing registers one in production or on a dev server.
7
+ */
8
+ export function setDevWarnSink(next) {
9
+ const previous = sink;
10
+ sink = next;
11
+ return previous;
12
+ }
13
+ export function devWarn(tag, message, details) {
14
+ if (!editorEnv.isDev)
15
+ return;
16
+ if (sink) {
17
+ sink({ tag, message, details });
18
+ return;
19
+ }
20
+ // The `aragonite:` sentinel is what the e2e watchers key on: a console head no page
21
+ // script or dependency shares, so a browser-side gate can fail on ours alone.
22
+ if (details !== undefined) {
23
+ console.warn(`[aragonite:${tag}] ${message}`, details);
24
+ }
25
+ else {
26
+ console.warn(`[aragonite:${tag}] ${message}`);
27
+ }
28
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Publishing side of the ancestry settle (`tree-operations/unshare.ts`): a fold at a container's
3
+ * own slot splices its PARENT's children, a scope the commit's own change descriptor never
4
+ * covers, so that scope's ids and refs are resynced here instead.
5
+ */
6
+ import type { CstNode } from '../core/nodes';
7
+ import type { AncestrySeamFold } from '../tree-operations/unshare';
8
+ import { type StructuralChange } from '../tree-operations/structural-change';
9
+ import type { EditorActionsDeps } from './deps';
10
+ /** Where the folded container's first byte ended up, as a document path. */
11
+ export interface FoldLanding {
12
+ path: number[];
13
+ offset: number;
14
+ }
15
+ /**
16
+ * Resync every folded scope's ids/refs and return the unwind for them, which a commit rolling
17
+ * back runs beside its own registers.
18
+ */
19
+ export declare function publishAncestryFolds(deps: EditorActionsDeps, folds: readonly AncestrySeamFold[]): () => void;
20
+ /**
21
+ * The landing a fold owes the caret: the container's slot is always gone (the reparse re-mints
22
+ * every block in the folded window), so a door whose focus addressed it has nothing to land on.
23
+ * `scopePath` is the committing scope's own path, from which the fold's depth names the parent.
24
+ * The chain rebuilds innermost-first, so the LAST fold is the outermost one — the one whose slot
25
+ * swallowed the others, and the only landing still addressable after them all.
26
+ */
27
+ export declare function foldLandingFor(folds: readonly AncestrySeamFold[], scopePath: readonly number[]): FoldLanding | null;
28
+ /**
29
+ * A splice made outside the commit ceremony, published as the ceremony publishes the change its
30
+ * mutate returns. `owner` is the container whose children moved, or undefined for the document.
31
+ */
32
+ export declare function publishScopeFold(deps: EditorActionsDeps, owner: CstNode | undefined, change: StructuralChange): void;