@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,10 @@
1
+ /** Resolve a container node (by identity; views accepted) to its BlockListState.
2
+ * WeakMap, so entries collect when the node becomes unreachable. */
3
+ import type { NodeView } from '../core/node-views';
4
+ import type { BlockListState } from './block-list-state.svelte';
5
+ /** Overwrites any existing entry — the new state becomes authoritative on re-mount. */
6
+ export declare function registerBlockListState(node: NodeView, state: BlockListState): void;
7
+ export declare function getStateForNode(node: NodeView): BlockListState | undefined;
8
+ /** Strict variant, for a caller holding a live-tree node whose container must be mounted.
9
+ * `getStateForNode` stays for the ancestor walks where absence is a valid signal. */
10
+ export declare function expectStateForNode(node: NodeView): BlockListState;
@@ -0,0 +1,44 @@
1
+ /** Resolve a container node (by identity; views accepted) to its BlockListState.
2
+ * WeakMap, so entries collect when the node becomes unreachable. */
3
+ import { DEV } from 'esm-env';
4
+ import { tick } from 'svelte';
5
+ import { devWarn } from '../dev-warn';
6
+ const stateRegistry = new WeakMap();
7
+ /** Overwrites any existing entry — the new state becomes authoritative on re-mount. */
8
+ export function registerBlockListState(node, state) {
9
+ const existing = stateRegistry.get(node);
10
+ stateRegistry.set(node, state);
11
+ if (DEV && existing && existing !== state) {
12
+ void reportContestedClaim(node, existing, state);
13
+ }
14
+ }
15
+ /**
16
+ * A dev signal, not a guarantee. Svelte creates a structural remount's new mount before
17
+ * tearing the old one down, so a claim contested INSIDE a flush says nothing about
18
+ * ownership; re-ask once it settles, when a loser still holding child refs means either a
19
+ * second live owner or a teardown whose clear never reached the live slots.
20
+ */
21
+ async function reportContestedClaim(node, loser, winner) {
22
+ await tick();
23
+ if (stateRegistry.get(node) !== winner)
24
+ return;
25
+ if (loser.innerBlockRefs.every((ref) => ref === undefined))
26
+ return;
27
+ devWarn('state-registry', `two live components claim the same ${node.kind} — the loser's child refs are orphaned. ` +
28
+ `Either both mounts render this node, or the loser's teardown emptied slots the ` +
29
+ `scope no longer reads.`);
30
+ }
31
+ export function getStateForNode(node) {
32
+ return stateRegistry.get(node);
33
+ }
34
+ /** Strict variant, for a caller holding a live-tree node whose container must be mounted.
35
+ * `getStateForNode` stays for the ancestor walks where absence is a valid signal. */
36
+ export function expectStateForNode(node) {
37
+ const state = stateRegistry.get(node);
38
+ if (!state) {
39
+ throw new Error(`[state-registry] no BlockListState registered for ${node.kind} — ` +
40
+ `caller assumed a mounted container. If this path can visit non-container ` +
41
+ `nodes, use getStateForNode and guard on undefined.`);
42
+ }
43
+ return state;
44
+ }
@@ -0,0 +1,35 @@
1
+ import { type BlockElLookup } from '../editor-keys';
2
+ import type { NodeView } from '../core/node-views';
3
+ import type { RevealTarget } from '../cursor/reveal-anchor';
4
+ import { type ListWindowing, type RevealAnchorPlacement } from './list-windowing.svelte';
5
+ export interface ContainerWindowingOpts {
6
+ /** This container's index in its PARENT scope, for the upward subtotal report. A getter, so
7
+ * reorders report under the current slot. Ignored at the root (no parent sink). */
8
+ getIndex: () => number;
9
+ /** This scope's path; the leaf-channel depth is its length. `[]` at the root. */
10
+ getParentPath: () => number[];
11
+ getChildren: () => readonly NodeView[];
12
+ getChildIds: () => string[];
13
+ /** The content-origin element that scrolls WITH this scope's children. Never the viewport. */
14
+ getListEl: () => HTMLElement | null;
15
+ /** The element the PARENT measures for this scope's height. Omit at the root. */
16
+ getOwnEl?: () => HTMLElement | null;
17
+ /** True when this scope's DIRECT children are `BlockHost`s → shadow the leaf channel.
18
+ * False for direct-`{#each}` scopes (list / table). */
19
+ provideLeafChannel: boolean;
20
+ /** Collapse clamp; see `ListWindowingDeps.isCollapsed`. */
21
+ isCollapsed?: () => boolean;
22
+ }
23
+ /**
24
+ * Resolve the reveal target into the ROOT scope's coordinates. The model addresses
25
+ * top-level children only, so a nested target contributes its ancestor's index plus the
26
+ * measured drop down to itself — without which the pin re-asserts the CONTAINER's top and
27
+ * pushes an already-resolved nested target back out of view.
28
+ */
29
+ export declare function placementOf(target: RevealTarget | null, blockEl: BlockElLookup): RevealAnchorPlacement | null;
30
+ /**
31
+ * One windowing wiring unit per BlockList-bearing or direct-each container scope: reads
32
+ * the windowing contexts, builds `createListWindowing` with the shared constants, and
33
+ * provides the subtotal sink plus the leaf channel. Call synchronously during component init.
34
+ */
35
+ export declare function useContainerWindowing(opts: ContainerWindowingOpts): ListWindowing;
@@ -0,0 +1,95 @@
1
+ import { getContext, setContext } from 'svelte';
2
+ import { EDITOR_DOC_KEY, EDITOR_SERVICES_KEY, PARENT_SCOPE_SINK_KEY, RECORD_BLOCK_HEIGHT_KEY } from '../editor-keys';
3
+ import { createListWindowing } from './list-windowing.svelte';
4
+ /**
5
+ * Resolve the reveal target into the ROOT scope's coordinates. The model addresses
6
+ * top-level children only, so a nested target contributes its ancestor's index plus the
7
+ * measured drop down to itself — without which the pin re-asserts the CONTAINER's top and
8
+ * pushes an already-resolved nested target back out of view.
9
+ */
10
+ export function placementOf(target, blockEl) {
11
+ if (!target || target.path.length === 0)
12
+ return null;
13
+ const shallow = { index: target.path[0], block: target.block, innerOffset: 0, height: null };
14
+ if (target.path.length === 1)
15
+ return shallow;
16
+ const ancestorEl = blockEl([shallow.index]);
17
+ const targetEl = blockEl(target.path);
18
+ // The ancestor's top is a DIFFERENT block, honest only while the ancestor itself is
19
+ // windowed out and the model's offset is all that is known. A MOUNTED ancestor missing its
20
+ // target means the reader scrolled past it inside the container: decline, never teleport.
21
+ if (!ancestorEl)
22
+ return shallow;
23
+ if (!targetEl)
24
+ return null;
25
+ const targetRect = targetEl.getBoundingClientRect();
26
+ return {
27
+ index: shallow.index,
28
+ block: target.block,
29
+ innerOffset: targetRect.top - ancestorEl.getBoundingClientRect().top,
30
+ height: targetRect.height
31
+ };
32
+ }
33
+ /**
34
+ * One windowing wiring unit per BlockList-bearing or direct-each container scope: reads
35
+ * the windowing contexts, builds `createListWindowing` with the shared constants, and
36
+ * provides the subtotal sink plus the leaf channel. Call synchronously during component init.
37
+ */
38
+ export function useContainerWindowing(opts) {
39
+ const { heightOracle: oracle, scrollport: getPort, correctsScroll, focusedPath: getFocusPath, widthVersion: getWidthVersion, viewportHeightVersion: getViewportHeightVersion, blockElLookup } = getContext(EDITOR_DOC_KEY);
40
+ const parentSink = getContext(PARENT_SCOPE_SINK_KEY);
41
+ const revealAnchor = getContext(EDITOR_SERVICES_KEY)?.revealAnchor;
42
+ // Single-claimant: nested scopes keep top-of-viewport anchoring, or their deltas would
43
+ // fight over one scrollTop.
44
+ const claimsRevealAnchor = opts.getParentPath().length === 0;
45
+ const windowing = createListWindowing({
46
+ oracle,
47
+ getChildren: opts.getChildren,
48
+ getChildIds: opts.getChildIds,
49
+ getListEl: opts.getListEl,
50
+ getOwnEl: opts.getOwnEl,
51
+ getPort: () => getPort?.() ?? null,
52
+ correctsScroll: () => correctsScroll?.() ?? true,
53
+ getFocusPath: () => getFocusPath?.() ?? null,
54
+ getRevealAnchorTarget: claimsRevealAnchor
55
+ ? () => placementOf(revealAnchor?.get() ?? null, blockElLookup)
56
+ : undefined,
57
+ getWidthVersion: () => getWidthVersion?.() ?? 0,
58
+ getViewportHeightVersion: () => getViewportHeightVersion?.() ?? 0,
59
+ getParentPath: opts.getParentPath,
60
+ reportSelfHeight: parentSink
61
+ ? (h) => parentSink.setChildSubtotal(opts.getIndex(), h)
62
+ : undefined,
63
+ isCollapsed: opts.isCollapsed,
64
+ // A fling can outrun the deferred window recompute and briefly paint an empty spacer
65
+ // (VR-8). 6 widens the band without breaching the mounted-set ceiling (the < 60 flat
66
+ // e2e bound guards that); a skeleton background covers the residual one-frame gap.
67
+ overscan: 6,
68
+ pinExtensionCap: 100,
69
+ activateAbovePx: 4000,
70
+ deactivateBelowPx: 3000
71
+ });
72
+ if (opts.provideLeafChannel) {
73
+ // Only a DIRECT child measures into this model; a deeper host belongs to its own
74
+ // scope's channel, so register is a no-op here.
75
+ setContext(RECORD_BLOCK_HEIGHT_KEY, {
76
+ register(path, index, id, readHeight) {
77
+ const depth = opts.getParentPath().length;
78
+ if (path.length !== depth + 1)
79
+ return () => { };
80
+ return windowing.registerChild(id, {
81
+ readHeight,
82
+ applyHeight: (h) => windowing.recordMeasuredChild(index, id, h)
83
+ });
84
+ },
85
+ measureNow: windowing.measureChildNow,
86
+ measureOnResize: windowing.measureChildOnResize
87
+ });
88
+ }
89
+ setContext(PARENT_SCOPE_SINK_KEY, {
90
+ setChildSubtotal: windowing.setChildSubtotal,
91
+ registerRow: (id, readHeight, applyHeight) => windowing.registerChild(id, { readHeight, applyHeight }),
92
+ measureRowNow: windowing.measureChildNow
93
+ });
94
+ return windowing;
95
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The one home for the windowed-slice bounds. A consumer renders `children.slice(start,
3
+ * end)` and MUST key/index each rendered child by its ABSOLUTE index `start + localIndex`,
4
+ * never the local loop index — leaking the local index corrupts paths and structural ops
5
+ * invisibly (`docs/design/virtual-rendering.md`).
6
+ */
7
+ import type { WindowResult } from './block-window.svelte';
8
+ export declare function sliceWindow(childCount: number, win: WindowResult | undefined): {
9
+ start: number;
10
+ end: number;
11
+ };
@@ -0,0 +1,9 @@
1
+ export function sliceWindow(childCount, win) {
2
+ if (!win?.active)
3
+ return { start: 0, end: childCount };
4
+ // A window derived from a prior, longer children array can arrive one reactive tick
5
+ // before the slice re-derives against the new length.
6
+ const start = Math.min(win.start, childCount);
7
+ const end = Math.min(win.end, childCount);
8
+ return { start, end: Math.max(start, end) };
9
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The bounded decline for a recognizer whose grammar has no early-stop byte: candidate
3
+ * positions are collected once per block and each consultation is a binary search, so a
4
+ * trigger-dense paragraph costs one scan instead of one per trigger. The index memoizes
5
+ * per raw, bounded (cap 2) rather than weak-keyed because a string cannot key a WeakMap.
6
+ */
7
+ /**
8
+ * `collect` scans one block's raw left to right into ascending positions; the returned
9
+ * lookup answers the first collected position at or after `from`, or -1 when none remains.
10
+ */
11
+ export declare function createScanIndex(collect: (raw: string) => Int32Array): (raw: string, from: number) => number;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * The bounded decline for a recognizer whose grammar has no early-stop byte: candidate
3
+ * positions are collected once per block and each consultation is a binary search, so a
4
+ * trigger-dense paragraph costs one scan instead of one per trigger. The index memoizes
5
+ * per raw, bounded (cap 2) rather than weak-keyed because a string cannot key a WeakMap.
6
+ */
7
+ import { createBoundedMemo } from './bounded-memo';
8
+ /**
9
+ * `collect` scans one block's raw left to right into ascending positions; the returned
10
+ * lookup answers the first collected position at or after `from`, or -1 when none remains.
11
+ */
12
+ export function createScanIndex(collect) {
13
+ const positionIndex = createBoundedMemo({ cap: 2 });
14
+ return (raw, from) => {
15
+ const positions = positionIndex(raw, () => collect(raw));
16
+ let lo = 0;
17
+ let hi = positions.length;
18
+ while (lo < hi) {
19
+ const mid = (lo + hi) >>> 1;
20
+ if (positions[mid] < from)
21
+ lo = mid + 1;
22
+ else
23
+ hi = mid;
24
+ }
25
+ return lo < positions.length ? positions[lo] : -1;
26
+ };
27
+ }
@@ -0,0 +1,105 @@
1
+ /**
2
+ * The `(kind, id) → handler` block-command registry and every dispatch seam over it. A chord
3
+ * (leaf or container bubble), the `runCommand` door and its admissibility read all resolve the
4
+ * same tiers here, so the rules that hold regardless of invocation live at one seam.
5
+ * Register-once, throw-on-duplicate (casebook.md "Registries are code, not state"). Here, not
6
+ * `./commands`: `commands → block-commands → command-id` cycles.
7
+ */
8
+ import type { AnyBlockKind } from '../core/nodes';
9
+ import type { NodeView } from '../core/node-views';
10
+ import { type AnyCommandId, type PluginCommandId } from './command-id';
11
+ import { type GlobalCommandContext } from './commands';
12
+ import type { KeybindingOverrideMap } from './keybinding-overrides';
13
+ import { type EditorContext } from './plugin-install';
14
+ export interface BlockCommandContext {
15
+ /** Read context — a bytes-readonly view; metadata edits go through `updateMetadata`. */
16
+ node: NodeView;
17
+ arg: unknown;
18
+ updateMetadata(patch: Record<string, unknown>): void;
19
+ /**
20
+ * The mounted component's view-state hooks, which a render-primary plugin casts to its own
21
+ * hooks type. `undefined` when no component is mounted, and a handler must decline
22
+ * gracefully then; the platform never learns the shape (`unknown` by design).
23
+ */
24
+ hooks?: unknown;
25
+ /** The dispatching instance's per-plugin EditorContext (document/events/options reads).
26
+ * Undefined when the target surface has no instance wiring. */
27
+ editor?: EditorContext;
28
+ }
29
+ export type BlockCommandHandler = (ctx: BlockCommandContext) => boolean;
30
+ /**
31
+ * Register-once check precedes the mint, so a duplicate `(kind, name)` reports as
32
+ * "register-once" rather than as an already-minted collision. The name-validating mint runs
33
+ * inside `apply` before the map write, so an invalid name never leaves an orphaned handler.
34
+ */
35
+ export declare function registerBlockCommand(kind: AnyBlockKind, name: string, handler: BlockCommandHandler): PluginCommandId;
36
+ export declare function getBlockCommand(kind: AnyBlockKind, id: AnyCommandId): BlockCommandHandler | undefined;
37
+ export declare function __resetBlockCommandsForTests(): void;
38
+ /**
39
+ * The cross-block arm a range command routes to, injected because this schema leaf may not
40
+ * import selection machinery. `canRun` is reachability, not participation: a press whose range
41
+ * reaches no block still consumes the chord and writes nothing.
42
+ */
43
+ export interface CrossBlockCommandRouter {
44
+ canRun(id: AnyCommandId): boolean;
45
+ run(id: AnyCommandId): boolean;
46
+ isActive(id: AnyCommandId): boolean;
47
+ }
48
+ /**
49
+ * Editor state a command's admissibility reads, whatever invoked it. Getters, never values:
50
+ * they change under a live editor between one dispatch and the next. Every field is required,
51
+ * so a new dispatch site cannot silently skip the reading-mode gate, the range decline, or the
52
+ * cross-block route — `undefined` for the router is the answer a bubble caller gives.
53
+ */
54
+ export interface CommandGates {
55
+ getPresentationMode: GlobalCommandContext['getPresentationMode'];
56
+ /** True while a cross-block range is painted. */
57
+ isCrossBlockRange(): boolean;
58
+ crossBlockCommands: CrossBlockCommandRouter | undefined;
59
+ }
60
+ /** What leaf dispatch and the `runCommand` door hand the seam: the gates plus the global tier. */
61
+ export type CommandDispatchContext = GlobalCommandContext & CommandGates;
62
+ export interface KindCommandTarget {
63
+ kind: AnyBlockKind;
64
+ runCommand(id: AnyCommandId, arg?: unknown): boolean;
65
+ getCommandContext?(): Omit<BlockCommandContext, 'arg'>;
66
+ /** The id's toggle-state at the surface's own caret or selection — what a toolbar paints
67
+ * pressed. Absent means the surface has no toggle-state to report, which reads inactive. */
68
+ isCommandActive?(id: AnyCommandId): boolean;
69
+ }
70
+ /**
71
+ * A contained plugin command failure. A block command reports its `kind`; a global command
72
+ * reports its `plugin` and carries no kind. The dispatch seam hands this to the caller's sink,
73
+ * which routes it to the editor's error channel (`origin: 'command'`, `editor-events.ts`) —
74
+ * caller-injected so this schema leaf keeps no edge to the shell owning the event surface.
75
+ */
76
+ export interface CommandErrorReport {
77
+ kind?: AnyBlockKind;
78
+ command: AnyCommandId;
79
+ plugin?: string;
80
+ error: unknown;
81
+ }
82
+ export type CommandErrorSink = (report: CommandErrorReport) => void;
83
+ /**
84
+ * The door's admissibility read: the gates plus the same tier walk the dispatch spends, never a
85
+ * second derivation of them. Silent by design — a host may ask on every selection change, so an
86
+ * unreachable id spends none of the dispatch's one-time dead-key diagnostics.
87
+ * See `editor-props.ts` for the contract this answers.
88
+ */
89
+ export declare function canRunCommandById(id: AnyCommandId, target: KindCommandTarget | null, gates: CommandGates): boolean;
90
+ /** The door's pressed-state read, `canRunCommandById`'s sibling: state rather than
91
+ * admissibility, so a disabled affordance may still paint pressed. Whoever would spend the
92
+ * press answers — the cross-block arm over a range, the focused surface at a caret. */
93
+ export declare function isCommandActiveById(id: AnyCommandId, target: KindCommandTarget | null, gates: CommandGates): boolean;
94
+ /** The `EditorInstance.runCommand` door: an id with no keystroke behind it. */
95
+ export declare function runCommandById(id: AnyCommandId, arg: unknown, target: KindCommandTarget | null, ctx: CommandDispatchContext, onCommandError?: CommandErrorSink): boolean;
96
+ /** Leaf-path chord dispatch (the focused editable/chrome surface). */
97
+ export declare function dispatchKeyCommand(chord: string, target: KindCommandTarget, ctx: CommandDispatchContext, overrides?: KeybindingOverrideMap, onCommandError?: CommandErrorSink): boolean;
98
+ /**
99
+ * Container-bubble dispatch. Kind-only, no global tier: undo/redo belong to the focused leaf,
100
+ * and a container bubble re-firing them would double-fire (`resolveKindBinding` in `./commands`).
101
+ * The bubble callers hold no GlobalCommandContext, so they pass the gates directly — and an
102
+ * override that resolves a GLOBAL id here resolves DEAD, declining loudly rather than being
103
+ * dropped by a `runCommand` that has no arm for it.
104
+ */
105
+ export declare function dispatchKindCommand(chord: string, target: KindCommandTarget, gates: CommandGates, overrides?: KeybindingOverrideMap, onCommandError?: CommandErrorSink): boolean;
@@ -0,0 +1,179 @@
1
+ import { mintCommandId, __resetMintedCommandIdsForTests } from './command-id';
2
+ import { registerOnce } from './register-once';
3
+ import { resolveBinding, resolveKindBinding, getCommand, warnDeadKeyCommand, isBuiltinCommandId, CROSS_BLOCK_RANGE_COMMAND_IDS, RANGE_DECLINED_COMMAND_IDS } from './commands';
4
+ import { currentInstallingPlugin } from './plugin-install';
5
+ import { isReadingMode } from '../presentation-mode';
6
+ const blockCommands = new Map();
7
+ const compositeKey = (kind, id) => `${kind} ${id}`;
8
+ /**
9
+ * Register-once check precedes the mint, so a duplicate `(kind, name)` reports as
10
+ * "register-once" rather than as an already-minted collision. The name-validating mint runs
11
+ * inside `apply` before the map write, so an invalid name never leaves an orphaned handler.
12
+ */
13
+ export function registerBlockCommand(kind, name, handler) {
14
+ const key = compositeKey(kind, name);
15
+ let id;
16
+ registerOnce(blockCommands.has(key), () => {
17
+ id = mintCommandId(name, currentInstallingPlugin());
18
+ blockCommands.set(key, handler);
19
+ }, `registerBlockCommand: (${kind}, ${name}) is already registered — block commands are register-once`);
20
+ return id;
21
+ }
22
+ export function getBlockCommand(kind, id) {
23
+ return blockCommands.get(compositeKey(kind, id));
24
+ }
25
+ export function __resetBlockCommandsForTests() {
26
+ blockCommands.clear();
27
+ __resetMintedCommandIdsForTests();
28
+ }
29
+ /**
30
+ * The kind tiers, in dispatch order. A GLOBAL id resolves DEAD here: the leaf path has already
31
+ * run it, and the container bubble deliberately has no global tier, so a container can never
32
+ * re-fire the focused leaf's undo.
33
+ */
34
+ function resolveBlockLocalCommand(id, target) {
35
+ if (!target)
36
+ return { tier: 'no-surface' };
37
+ if (getCommand(id))
38
+ return { tier: 'dead' };
39
+ const handler = getBlockCommand(target.kind, id);
40
+ // A context is built only where a handler matched, so a built-in id costs nothing extra on the
41
+ // read a host may run per selection change.
42
+ const context = handler ? target.getCommandContext?.() : undefined;
43
+ if (handler && context)
44
+ return { tier: 'minted', target, handler, context };
45
+ return isBuiltinCommandId(id) ? { tier: 'builtin', target } : { tier: 'dead' };
46
+ }
47
+ /** The full walk: global first, then the kind tiers. Both the dispatch and the admissibility
48
+ * read spend this one, so a greyed affordance cannot disagree with the click under it. */
49
+ function resolveCommand(id, target) {
50
+ const globalRun = getCommand(id);
51
+ if (globalRun)
52
+ return { tier: 'global', run: globalRun };
53
+ return resolveBlockLocalCommand(id, target);
54
+ }
55
+ /**
56
+ * Spend a resolved kind tier. Containment is unconditional — the safety guarantee lives here, not
57
+ * at the call sites, so an unwired caller still turns a plugin throw into a no-op, it just doesn't
58
+ * report. A dead id declines loudly rather than reaching a `runCommand` with no arm for it.
59
+ */
60
+ function runBlockLocalCommand(resolved, id, arg, path, onCommandError) {
61
+ switch (resolved.tier) {
62
+ case 'minted':
63
+ try {
64
+ return resolved.handler({ ...resolved.context, arg });
65
+ }
66
+ catch (error) {
67
+ onCommandError?.({ kind: resolved.target.kind, command: id, error });
68
+ return true;
69
+ }
70
+ case 'builtin':
71
+ return resolved.target.runCommand(id, arg);
72
+ case 'dead':
73
+ warnDeadKeyCommand(id, path);
74
+ return false;
75
+ case 'no-surface':
76
+ return false;
77
+ }
78
+ }
79
+ /**
80
+ * Where an id goes with a range painted. The one-block arms have no host block to take their
81
+ * offsets from, so they either route to the cross-block arm or decline; everything else is
82
+ * range-safe and runs on the focused surface (`RANGE_DECLINED_COMMAND_IDS` in `./commands`).
83
+ */
84
+ function rangeRouteFor(id, gates) {
85
+ // Called directly, not optionally: a caller without the getter throws rather than skipping.
86
+ if (!gates.isCrossBlockRange())
87
+ return { kind: 'block-local', ranged: false };
88
+ if (RANGE_DECLINED_COMMAND_IDS.has(id))
89
+ return { kind: 'decline' };
90
+ if (!CROSS_BLOCK_RANGE_COMMAND_IDS.has(id))
91
+ return { kind: 'block-local', ranged: true };
92
+ const router = gates.crossBlockCommands;
93
+ return router?.canRun(id) ? { kind: 'cross-block', router } : { kind: 'decline' };
94
+ }
95
+ /**
96
+ * The gates every entry path owes, whatever resolved the id. Reading mode is inert: the whole
97
+ * vocabulary dead-keys, and navigation never routes through commands, so a reader loses nothing.
98
+ */
99
+ function commandIsAdmissible(id, gates) {
100
+ if (isReadingMode(gates.getPresentationMode))
101
+ return false;
102
+ return rangeRouteFor(id, gates).kind !== 'decline';
103
+ }
104
+ /**
105
+ * The id-keyed seam: chord dispatch enters with a resolved binding, `EditorInstance.runCommand`
106
+ * with the id itself, so both meet the same gates and the same arms. Precedence is the leaf
107
+ * order: global (undo/redo) → minted block command → built-in kind command. A null target means
108
+ * no focused surface, where the global tier still runs and the block-local tiers decline.
109
+ */
110
+ function runResolvedCommand(id, arg, target, ctx, path, onCommandError) {
111
+ if (isReadingMode(ctx.getPresentationMode))
112
+ return false;
113
+ const route = rangeRouteFor(id, ctx);
114
+ if (route.kind === 'decline')
115
+ return false;
116
+ if (route.kind === 'cross-block')
117
+ return route.router.run(id);
118
+ const resolved = resolveCommand(id, target);
119
+ // Inject the sink so a plugin-global handler's contained throw reports through the same
120
+ // channel as a block command's; the global tier is the only path reaching one.
121
+ if (resolved.tier === 'global')
122
+ return resolved.run({ ...ctx, onCommandError });
123
+ return runBlockLocalCommand(resolved, id, arg, path, onCommandError);
124
+ }
125
+ /**
126
+ * The door's admissibility read: the gates plus the same tier walk the dispatch spends, never a
127
+ * second derivation of them. Silent by design — a host may ask on every selection change, so an
128
+ * unreachable id spends none of the dispatch's one-time dead-key diagnostics.
129
+ * See `editor-props.ts` for the contract this answers.
130
+ */
131
+ export function canRunCommandById(id, target, gates) {
132
+ if (isReadingMode(gates.getPresentationMode))
133
+ return false;
134
+ const route = rangeRouteFor(id, gates);
135
+ if (route.kind !== 'block-local')
136
+ return route.kind === 'cross-block';
137
+ const { tier } = resolveCommand(id, target);
138
+ return tier !== 'dead' && tier !== 'no-surface';
139
+ }
140
+ /** The door's pressed-state read, `canRunCommandById`'s sibling: state rather than
141
+ * admissibility, so a disabled affordance may still paint pressed. Whoever would spend the
142
+ * press answers — the cross-block arm over a range, the focused surface at a caret. */
143
+ export function isCommandActiveById(id, target, gates) {
144
+ const route = rangeRouteFor(id, gates);
145
+ if (route.kind === 'cross-block')
146
+ return route.router.isActive(id);
147
+ // A range no arm reads has no pressed state: the focused surface holds a parked caret, whose
148
+ // bytes are not the ones a press would rewrite.
149
+ if (route.kind === 'decline' || route.ranged)
150
+ return false;
151
+ return target?.isCommandActive?.(id) ?? false;
152
+ }
153
+ /** The `EditorInstance.runCommand` door: an id with no keystroke behind it. */
154
+ export function runCommandById(id, arg, target, ctx, onCommandError) {
155
+ return runResolvedCommand(id, arg, target, ctx, 'door', onCommandError);
156
+ }
157
+ /** Leaf-path chord dispatch (the focused editable/chrome surface). */
158
+ export function dispatchKeyCommand(chord, target, ctx, overrides, onCommandError) {
159
+ const binding = resolveBinding(chord, target.kind, overrides, ctx.activation);
160
+ if (!binding)
161
+ return false;
162
+ return runResolvedCommand(binding.command, binding.arg, target, ctx, 'chord', onCommandError);
163
+ }
164
+ /**
165
+ * Container-bubble dispatch. Kind-only, no global tier: undo/redo belong to the focused leaf,
166
+ * and a container bubble re-firing them would double-fire (`resolveKindBinding` in `./commands`).
167
+ * The bubble callers hold no GlobalCommandContext, so they pass the gates directly — and an
168
+ * override that resolves a GLOBAL id here resolves DEAD, declining loudly rather than being
169
+ * dropped by a `runCommand` that has no arm for it.
170
+ */
171
+ export function dispatchKindCommand(chord, target, gates, overrides, onCommandError) {
172
+ const binding = resolveKindBinding(chord, target.kind, overrides);
173
+ if (!binding)
174
+ return false;
175
+ if (!commandIsAdmissible(binding.command, gates))
176
+ return false;
177
+ const resolved = resolveBlockLocalCommand(binding.command, target);
178
+ return runBlockLocalCommand(resolved, binding.command, binding.arg, 'chord', onCommandError);
179
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Per-kind Enter-completion registry, the block-opener registry's sibling: an opener recognizes
3
+ * a line while parsing, a completer recognizes a lone typed line at an Enter press and answers
4
+ * the canonical lines that complete it. Published on `plugin.ts`, so its plugin entries clear
5
+ * through `registry-reset.ts` like every other public register-once seam.
6
+ */
7
+ import { type AnyBlockKind } from '../core/nodes';
8
+ /**
9
+ * The replacement, as lines WITHOUT endings — the seam attaches the block's own (G4.20) — plus
10
+ * where the caret seats: `path` is child indices inside the minted block, empty for the block,
11
+ * and `line`/`column` address a position inside THAT node. Line-relative rather than a byte
12
+ * offset because the seam picks the line ending after the claim, so only it can count bytes.
13
+ */
14
+ export interface CompletionResult {
15
+ lines: string[];
16
+ caret: {
17
+ path: number[];
18
+ line: number;
19
+ column: number;
20
+ };
21
+ }
22
+ export interface BlockCompleter {
23
+ /** Attempt to complete `line`; null declines, as does a claim whose lines would paint nothing. */
24
+ tryComplete(line: string): CompletionResult | null;
25
+ }
26
+ export declare function registerBlockCompleter(kind: AnyBlockKind, completer: BlockCompleter): void;
27
+ /** The first claim on `line`, or null when no registered completer takes it. */
28
+ export declare function completeTypedLine(line: string): CompletionResult | null;
29
+ /** Whether `kind` already owns a completer — the probe a registrar re-run reads before it
30
+ * registers, so a re-installed plugin never trips the register-once throw. */
31
+ export declare function isBlockCompleterRegistered(kind: string): boolean;
32
+ export declare function __resetBlockCompletersForTests(): void;
33
+ export declare function __removePluginCompletersForTests(): void;
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Per-kind Enter-completion registry, the block-opener registry's sibling: an opener recognizes
3
+ * a line while parsing, a completer recognizes a lone typed line at an Enter press and answers
4
+ * the canonical lines that complete it. Published on `plugin.ts`, so its plugin entries clear
5
+ * through `registry-reset.ts` like every other public register-once seam.
6
+ */
7
+ import { isBuiltinBlockKind } from '../core/nodes';
8
+ import { deletePluginEntries, registerOnce } from './register-once';
9
+ const completers = new Map();
10
+ let orderedCache = null;
11
+ export function registerBlockCompleter(kind, completer) {
12
+ registerOnce(completers.has(kind), () => {
13
+ completers.set(kind, completer);
14
+ orderedCache = null;
15
+ }, `registerBlockCompleter: "${kind}" is already registered. Completers are register-once.`);
16
+ }
17
+ // Kind-name order, so which completer is consulted first is a pure function of the declarations
18
+ // and never of registration order — the openers' rule, minus a priority no conflict has asked for.
19
+ function ordered() {
20
+ if (!orderedCache) {
21
+ orderedCache = [...completers.entries()]
22
+ .sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))
23
+ .map(([, completer]) => completer);
24
+ }
25
+ return orderedCache;
26
+ }
27
+ /** The first claim on `line`, or null when no registered completer takes it. */
28
+ export function completeTypedLine(line) {
29
+ for (const completer of ordered()) {
30
+ const claim = completer.tryComplete(line);
31
+ if (claim)
32
+ return claim;
33
+ }
34
+ return null;
35
+ }
36
+ /** Whether `kind` already owns a completer — the probe a registrar re-run reads before it
37
+ * registers, so a re-installed plugin never trips the register-once throw. */
38
+ export function isBlockCompleterRegistered(kind) {
39
+ return completers.has(kind);
40
+ }
41
+ export function __resetBlockCompletersForTests() {
42
+ completers.clear();
43
+ orderedCache = null;
44
+ }
45
+ // The unified schema reset preserves built-ins for tests that merely add plugin kinds.
46
+ export function __removePluginCompletersForTests() {
47
+ deletePluginEntries(completers, isBuiltinBlockKind);
48
+ orderedCache = null;
49
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Runtime `BlockKind → component` map. BlockHost looks up by kind; plugin
3
+ * kinds register a descriptor plus a component entry.
4
+ */
5
+ import type { Component } from 'svelte';
6
+ import { type AnyBlockKind } from '../core/nodes';
7
+ import type { NodeView } from '../core/node-views';
8
+ import type { BlockComponentExports, BlockComponentProps } from '../block-component';
9
+ export interface BlockComponentEntry {
10
+ /**
11
+ * Declaring `BlockComponentExports` as the Exports lets BlockHost's `bind:this` type-check
12
+ * against a runtime-picked component, and pins the two shapes a block may publish: the
13
+ * surface itself (a leaf) or a container's single `containerApi`.
14
+ */
15
+ component: Component<Record<string, unknown>, BlockComponentExports>;
16
+ extraProps?: (node: NodeView) => Record<string, unknown>;
17
+ }
18
+ /**
19
+ * Typed constructor for a registry entry: the component publishes one of the two sanctioned
20
+ * surface shapes, and its props are a subset of what BlockHost passes. A container that forgot
21
+ * its `containerApi` fails here rather than mounting as a block nothing can focus. The internal
22
+ * cast widens contravariant props to the registry's `Record<string, unknown>`.
23
+ */
24
+ export declare function defineBlockComponent<P extends Partial<BlockComponentProps> & Record<string, unknown>>(component: Component<P, BlockComponentExports>, extraProps?: (node: NodeView) => Record<string, unknown>): BlockComponentEntry;
25
+ export declare function registerBlockComponent(kind: AnyBlockKind, entry: BlockComponentEntry): void;
26
+ export declare function getBlockComponent(kind: AnyBlockKind): BlockComponentEntry | undefined;
27
+ /**
28
+ * Probe whether a component is registered — `registerBlockComponent` throws on duplicate, so a
29
+ * plugin registering idempotently (HMR / re-import) guards on this. Takes a plain name.
30
+ */
31
+ export declare function isBlockComponentRegistered(kind: string): boolean;
32
+ /** Test-only. Removes every non-built-in component entry; built-ins survive. */
33
+ export declare function __removePluginComponentsForTests(): void;