@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,349 @@
1
+ /**
2
+ * Registry predicates take every lookup as a parameter — pure by construction, and a
3
+ * schema import here would cycle with the registration seam
4
+ * (`schema/registration-checks.ts`) that supplies the real registries.
5
+ */
6
+ /**
7
+ * `listItem` renders inside its parent `ListBlock`, never via a `BlockHost` kind lookup,
8
+ * so it is the one BlockKind with no component-registry entry by design.
9
+ */
10
+ const NO_STANDALONE_COMPONENT = new Set(['listItem']);
11
+ /**
12
+ * G1.2 — every BlockKind resolves to a descriptor, and to a component unless it
13
+ * renders inside a parent (see `NO_STANDALONE_COMPONENT`). Returns the first gap.
14
+ */
15
+ export function checkRegistryCompleteness(kinds, hasDescriptor, hasComponent) {
16
+ for (const kind of kinds) {
17
+ if (!hasDescriptor(kind)) {
18
+ return {
19
+ code: 'registry-incomplete',
20
+ message: `kind "${kind}" has no registered descriptor`,
21
+ detail: { kind, missing: 'descriptor' }
22
+ };
23
+ }
24
+ if (!NO_STANDALONE_COMPONENT.has(kind) && !hasComponent(kind)) {
25
+ return {
26
+ code: 'registry-incomplete',
27
+ message: `kind "${kind}" has no registered component`,
28
+ detail: { kind, missing: 'component' }
29
+ };
30
+ }
31
+ }
32
+ return null;
33
+ }
34
+ /**
35
+ * G1.10 — opener-registry coherence: every registered opener belongs to a registered kind,
36
+ * and priorities are unique. Equal priorities are deterministic (dispatch falls back to
37
+ * kind name) but usually unintended, so they still warn.
38
+ */
39
+ export function checkOpenerRegistry(entries, hasDescriptor) {
40
+ const seen = new Map();
41
+ for (const { kind, priority } of entries) {
42
+ if (!hasDescriptor(kind)) {
43
+ return {
44
+ code: 'opener-registry',
45
+ message: `opener registered for "${kind}" but no descriptor exists`,
46
+ detail: { kind, missing: 'descriptor' }
47
+ };
48
+ }
49
+ const holder = seen.get(priority);
50
+ if (holder !== undefined) {
51
+ return {
52
+ code: 'opener-registry',
53
+ message: `kinds "${holder}" and "${kind}" share opener priority ${priority} — order falls back to kind name; give each kind its own priority`,
54
+ detail: { kinds: [holder, kind], priority }
55
+ };
56
+ }
57
+ seen.set(priority, kind);
58
+ }
59
+ return null;
60
+ }
61
+ /**
62
+ * G1.11 — keymap coherence: every binding uses a well-formed chord naming a known command,
63
+ * and a kind's chords are unique after normalization. A mistyped `Ctrl+B` collapses to a
64
+ * bare `B` that fires on every keypress; duplicates make dispatch order
65
+ * declaration-dependent. Chords are scoped per kind.
66
+ */
67
+ export function checkKeymapCoherence(entries, isKnownCommand, normalizeChord, isChordWellFormed) {
68
+ for (const { kind, keymap } of entries) {
69
+ if (!keymap)
70
+ continue;
71
+ const seenChords = new Set();
72
+ for (const binding of keymap) {
73
+ if (!isChordWellFormed(binding.chord)) {
74
+ return {
75
+ code: 'keymap-coherence',
76
+ message: `kind "${kind}" binds malformed chord "${binding.chord}" — modifiers must be Mod/Alt/Shift and the key non-empty`,
77
+ detail: { kind, chord: binding.chord, issue: 'malformed' }
78
+ };
79
+ }
80
+ if (!isKnownCommand(binding.command)) {
81
+ return {
82
+ code: 'keymap-coherence',
83
+ message: `kind "${kind}" binds chord "${binding.chord}" to unknown command "${binding.command}"`,
84
+ detail: { kind, chord: binding.chord, command: binding.command }
85
+ };
86
+ }
87
+ const chord = normalizeChord(binding.chord);
88
+ if (seenChords.has(chord)) {
89
+ return {
90
+ code: 'keymap-coherence',
91
+ message: `kind "${kind}" binds chord "${chord}" more than once`,
92
+ detail: { kind, chord }
93
+ };
94
+ }
95
+ seenChords.add(chord);
96
+ }
97
+ }
98
+ return null;
99
+ }
100
+ /**
101
+ * G1.17 — opener registered after the grammar was consumed. Parsed documents never
102
+ * re-parse, so the new kind silently misses every open document.
103
+ */
104
+ export function checkLateOpenerRegistration(kind, grammarConsumed) {
105
+ if (!grammarConsumed)
106
+ return null;
107
+ return {
108
+ code: 'late-opener-registration',
109
+ message: `opener for "${kind}" registered after documents were parsed — already-parsed documents will not re-parse; register plugins before first mount`,
110
+ detail: { kind }
111
+ };
112
+ }
113
+ /**
114
+ * G1.18 — reservedChrome bootstrap coherence: a declaring kind must be a container, and
115
+ * its chrome kind must resolve to both a descriptor and a component. Validates the
116
+ * registration shape at bootstrap, unlike the per-commit slot check (G1.14).
117
+ */
118
+ export function checkReservedChromeCoherence(entries, hasDescriptor, hasComponent) {
119
+ for (const { kind, isContainer, reservedChromeKind } of entries) {
120
+ if (reservedChromeKind === undefined)
121
+ continue;
122
+ if (!isContainer) {
123
+ return {
124
+ code: 'reserved-chrome-coherence',
125
+ message: `kind "${kind}" declares reservedChrome but is not a container`,
126
+ detail: { kind, chromeKind: reservedChromeKind, issue: 'not-container' }
127
+ };
128
+ }
129
+ if (!hasDescriptor(reservedChromeKind)) {
130
+ return {
131
+ code: 'reserved-chrome-coherence',
132
+ message: `reservedChrome kind "${reservedChromeKind}" (declared by "${kind}") has no registered descriptor`,
133
+ detail: { kind, chromeKind: reservedChromeKind, missing: 'descriptor' }
134
+ };
135
+ }
136
+ if (!hasComponent(reservedChromeKind)) {
137
+ return {
138
+ code: 'reserved-chrome-coherence',
139
+ message: `reservedChrome kind "${reservedChromeKind}" (declared by "${kind}") has no registered component`,
140
+ detail: { kind, chromeKind: reservedChromeKind, missing: 'component' }
141
+ };
142
+ }
143
+ }
144
+ return null;
145
+ }
146
+ /**
147
+ * Fixed phrases rather than a loose pattern: the claim is what a plugin author copies out
148
+ * of the shipped descriptors, and "moves focus" (what an ordinary not-mergeable leaf does
149
+ * at its edge) must stay outside the set.
150
+ */
151
+ const FOCUS_THEN_DELETE_CLAIMS = ['focus-then-delete', 'a second press deletes'];
152
+ const claimsFocusThenDelete = (via) => via !== undefined && FOCUS_THEN_DELETE_CLAIMS.some((phrase) => via.includes(phrase));
153
+ /**
154
+ * G1.24 — closure-block coherence: cross-checks between a kind's closure cells and the
155
+ * rest of its descriptor that a compiler can't reach. Each violation message below states
156
+ * its own rule. The fixture-parses-to-kind check runs in the unit sweep instead — a
157
+ * `parse` import here would close a `schema → core/parser → schema` cycle.
158
+ */
159
+ export function checkClosureCoherence(entries) {
160
+ for (const entry of entries) {
161
+ if (entry.hasContainerContract && entry.roundTripMode === 'inherit-default') {
162
+ return {
163
+ code: 'closure-coherence',
164
+ message: `kind "${entry.kind}" declares a container contract but its closure roundTrip is inherit-default — the container's rebuildRaw is the round-trip mechanism; declare roundTrip: implemented`,
165
+ detail: { kind: entry.kind, column: 'roundTrip' }
166
+ };
167
+ }
168
+ if (entry.notMergeable && entry.mergeBackspaceMode === 'inherit-default') {
169
+ return {
170
+ code: 'closure-coherence',
171
+ message: `kind "${entry.kind}" is not-mergeable but its closure mergeBackspace is inherit-default — a not-mergeable kind has no default merge to inherit; name the non-merge mechanism (implemented) or mark it not-supported`,
172
+ detail: { kind: entry.kind, column: 'mergeBackspace' }
173
+ };
174
+ }
175
+ if (!entry.declaresWholeBlockFocus) {
176
+ const column = claimsFocusThenDelete(entry.focusVia)
177
+ ? 'focus'
178
+ : claimsFocusThenDelete(entry.mergeBackspaceVia)
179
+ ? 'mergeBackspace'
180
+ : undefined;
181
+ if (column !== undefined) {
182
+ return {
183
+ code: 'closure-coherence',
184
+ message: `kind "${entry.kind}" claims the focus-then-delete model in its closure ${column} cell but declares no blockFocus: 'whole-block' — without it the caret-adjacent merge fallback deletes on the first press; declare the field or rewrite the cell to say what the kind actually does`,
185
+ detail: { kind: entry.kind, column }
186
+ };
187
+ }
188
+ }
189
+ if (entry.declaresReservedChrome && entry.clipboardMode === 'inherit-default') {
190
+ return {
191
+ code: 'closure-coherence',
192
+ message: `kind "${entry.kind}" declares reservedChrome but its closure clipboard is inherit-default — the chrome bytes live in the container's own opener line, so a slice crossing that boundary has no default semantics; name what a copy produces (implemented) or mark it not-supported`,
193
+ detail: { kind: entry.kind, column: 'clipboard' }
194
+ };
195
+ }
196
+ }
197
+ return null;
198
+ }
199
+ /**
200
+ * G1.31 — inline-construct policy coherence: a row names a kind the inline vocabulary holds; the
201
+ * marker-rewriting behaviors belong only to kinds whose markers the reveal can address; no two mark
202
+ * rows claim one nesting rank or one command; and no plugin row's mark claims a built-in command id.
203
+ * A mistyped kind is silent, a rewrite on a never-revealed kind edits markers the author cannot see,
204
+ * and a tied or built-in command leaves which meaning answers to each surface's own lookup order.
205
+ */
206
+ export function checkInlineConstructPolicy(entries, isKnownInlineKind, isBuiltinInlineKind, isBuiltinCommandId) {
207
+ const ranks = new Map();
208
+ const commands = new Map();
209
+ for (const entry of entries) {
210
+ if (!isKnownInlineKind(entry.kind)) {
211
+ return {
212
+ code: 'inline-construct-policy',
213
+ message: `inline-construct policy registered for "${entry.kind}", which is neither a built-in inline kind nor a declared plugin one — the row is unreachable`,
214
+ detail: { kind: entry.kind, issue: 'unknown-kind' }
215
+ };
216
+ }
217
+ if (entry.mark) {
218
+ const clash = markClashOf(entry.kind, entry.mark, ranks, commands);
219
+ if (clash)
220
+ return clash;
221
+ // The built-in vocabulary is closed and every id in it already answers somewhere, so a
222
+ // plugin mark claiming one shadows that meaning on whichever surface consults the mark
223
+ // table first — and the surfaces do not agree on where in their lookup that is.
224
+ if (!isBuiltinInlineKind(entry.kind) && isBuiltinCommandId(entry.mark.command)) {
225
+ return {
226
+ code: 'inline-construct-policy',
227
+ message: `kind "${entry.kind}" claims built-in command "${entry.mark.command}" for its mark — that id already has a built-in meaning; mint a plugin command id for the mark`,
228
+ detail: { kind: entry.kind, command: entry.mark.command, issue: 'builtin-command' }
229
+ };
230
+ }
231
+ }
232
+ if (entry.revealable)
233
+ continue;
234
+ const column = entry.splitBehavior === 'close-and-reopen'
235
+ ? 'splitBehavior'
236
+ : entry.autoUnwrapOnEmpty
237
+ ? 'autoUnwrapOnEmpty'
238
+ : undefined;
239
+ if (column !== undefined) {
240
+ return {
241
+ code: 'inline-construct-policy',
242
+ message: `kind "${entry.kind}" is not revealable but its ${column} rewrites markers — a never-revealed construct's markers stay hidden, so the rewrite is invisible; mark the kind revealable or make the behavior atomic`,
243
+ detail: { kind: entry.kind, column }
244
+ };
245
+ }
246
+ }
247
+ return null;
248
+ }
249
+ function markClashOf(kind, mark, ranks, commands) {
250
+ const rankHolder = ranks.get(mark.nestingRank);
251
+ if (rankHolder !== undefined) {
252
+ return {
253
+ code: 'inline-construct-policy',
254
+ message: `kinds "${rankHolder}" and "${kind}" share mark nesting rank ${mark.nestingRank} — which one wraps the other would fall to registration order`,
255
+ detail: { kinds: [rankHolder, kind], nestingRank: mark.nestingRank }
256
+ };
257
+ }
258
+ const commandHolder = commands.get(mark.command);
259
+ if (commandHolder !== undefined) {
260
+ return {
261
+ code: 'inline-construct-policy',
262
+ message: `kinds "${commandHolder}" and "${kind}" both claim command "${mark.command}" — one press cannot toggle two marks`,
263
+ detail: { kinds: [commandHolder, kind], command: mark.command }
264
+ };
265
+ }
266
+ ranks.set(mark.nestingRank, kind);
267
+ commands.set(mark.command, kind);
268
+ return null;
269
+ }
270
+ /**
271
+ * G1.37 — descriptor-vs-descriptor coherence: field pairs the type can represent and the kind
272
+ * cannot mean together. Each is silently inert rather than loud, so nothing fails until a
273
+ * gesture reaches the kind. G1.24 is the sibling over closure cells; this one reads the
274
+ * declarations alone.
275
+ */
276
+ export function checkDescriptorFieldCoherence(entries) {
277
+ for (const entry of entries) {
278
+ if (entry.contextDependentKind && entry.hasOpener) {
279
+ return {
280
+ code: 'descriptor-field-coherence',
281
+ message: `kind "${entry.kind}" declares contextDependentKind but registers an opener — the field suppresses the reparse that would re-derive the kind, so a kind the parser CAN recognize stops re-deriving; drop one`,
282
+ detail: { kind: entry.kind, fields: ['contextDependentKind', 'opener'] }
283
+ };
284
+ }
285
+ if (entry.declaresWholeBlockFocus && entry.supportsInline) {
286
+ return {
287
+ code: 'descriptor-field-coherence',
288
+ message: `kind "${entry.kind}" declares blockFocus: 'whole-block' and supportsInline — a whole-block unit's only addressable offsets are 0 and its display length, so inline constructs parsed from its raw have no caret positions to live at`,
289
+ detail: { kind: entry.kind, fields: ['blockFocus', 'supportsInline'] }
290
+ };
291
+ }
292
+ if (entry.declaresWholeBlockFocus && entry.declaresReservedChrome) {
293
+ return {
294
+ code: 'descriptor-field-coherence',
295
+ message: `kind "${entry.kind}" declares blockFocus: 'whole-block' and reservedChrome — the chrome slot is always present, so the kind is never childless and the focus-then-delete model it declares can never engage`,
296
+ detail: { kind: entry.kind, fields: ['blockFocus', 'reservedChrome'] }
297
+ };
298
+ }
299
+ if (entry.declaresReservedChrome && entry.unwrapLiftsFirstChild) {
300
+ return {
301
+ code: 'descriptor-field-coherence',
302
+ message: `kind "${entry.kind}" declares reservedChrome and a lifting firstChildBackspace — child 0 is the chrome row, so Backspace at its start would carry the container's own title out as a sibling block; declare 'keep-reserved-chrome'`,
303
+ detail: { kind: entry.kind, fields: ['reservedChrome', 'firstChildBackspace'] }
304
+ };
305
+ }
306
+ if (entry.unwrapKeepsReservedChrome && !entry.declaresReservedChrome) {
307
+ return {
308
+ code: 'descriptor-field-coherence',
309
+ message: `kind "${entry.kind}" declares firstChildBackspace: 'keep-reserved-chrome' without reservedChrome — child 0 is body, so the declared decline makes Backspace at the body start a dead key; declare a lifting strategy`,
310
+ detail: { kind: entry.kind, fields: ['reservedChrome', 'firstChildBackspace'] }
311
+ };
312
+ }
313
+ }
314
+ return null;
315
+ }
316
+ /**
317
+ * G1.32 — a kind demoting on Backspace at its content start declares where that content starts.
318
+ * Without the hook the content range IS the whole display, so the arm never fires and the
319
+ * declaration reads as behavior the kind does not have — silent, and only at the keystroke.
320
+ */
321
+ export function checkContentStartBackspace(entries) {
322
+ for (const { kind, demotesFirst, declaresContentRange } of entries) {
323
+ if (!demotesFirst || declaresContentRange)
324
+ continue;
325
+ return {
326
+ code: 'content-start-backspace',
327
+ message: `kind "${kind}" declares contentStartBackspace but no getContentRange — its content starts at raw 0, where the demote arm never fires and the declaration is silently inert`,
328
+ detail: { kind }
329
+ };
330
+ }
331
+ return null;
332
+ }
333
+ /**
334
+ * G1.30 — every registered kind declares a `mergeRole` from the known vocabulary. A
335
+ * per-KIND fact, validated once at registration: an unknown role makes the merge
336
+ * dispatcher fall through silently on every gesture that reaches the kind.
337
+ */
338
+ export function checkMergeRoleVocabulary(entries, isKnownMergeRole) {
339
+ for (const { kind, mergeRole } of entries) {
340
+ if (!isKnownMergeRole(mergeRole)) {
341
+ return {
342
+ code: 'merge-role-vocabulary',
343
+ message: `kind "${kind}" declares unknown mergeRole "${mergeRole}"`,
344
+ detail: { kind, mergeRole }
345
+ };
346
+ }
347
+ }
348
+ return null;
349
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * G1.28 — rendered text fidelity. A renderer round-tripping bytes through an HTML parser
3
+ * inherits engine-defined normalizations (U+0000, line endings, surrogates), and a gesture
4
+ * that reads `textContent` back would commit the loss away. jsdom preserves all of them,
5
+ * so this runtime belt is the only thing that can catch it — a unit suite cannot.
6
+ */
7
+ import type { InvariantViolation } from '../assert';
8
+ export declare function checkRenderedTextFidelity(rendered: string, expected: string): InvariantViolation | null;
@@ -0,0 +1,33 @@
1
+ /**
2
+ * G1.28 — rendered text fidelity. A renderer round-tripping bytes through an HTML parser
3
+ * inherits engine-defined normalizations (U+0000, line endings, surrogates), and a gesture
4
+ * that reads `textContent` back would commit the loss away. jsdom preserves all of them,
5
+ * so this runtime belt is the only thing that can catch it — a unit suite cannot.
6
+ */
7
+ /** First index at which the strings differ, or -1. */
8
+ function firstDivergence(rendered, expected) {
9
+ const shortest = Math.min(rendered.length, expected.length);
10
+ for (let i = 0; i < shortest; i++) {
11
+ if (rendered[i] !== expected[i])
12
+ return i;
13
+ }
14
+ return rendered.length === expected.length ? -1 : shortest;
15
+ }
16
+ export function checkRenderedTextFidelity(rendered, expected) {
17
+ const at = firstDivergence(rendered, expected);
18
+ if (at === -1)
19
+ return null;
20
+ const context = 12;
21
+ const window = (text) => text.slice(Math.max(0, at - context), at + context);
22
+ return {
23
+ code: 'rendered-text-fidelity',
24
+ message: `rendered text diverges from the block's raw at index ${at} — the HTML parser normalized a byte the CST still holds`,
25
+ detail: {
26
+ at,
27
+ renderedLength: rendered.length,
28
+ expectedLength: expected.length,
29
+ rendered: window(rendered),
30
+ expected: window(expected)
31
+ }
32
+ };
33
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * G1.29 — a cross-block endpoint's offset means what its block's coordinate space says: a cell
3
+ * index on a table (a char offset there corrupts the grid through rangeDelete's generic branch),
4
+ * a char offset inside [0, displayLength(raw)] elsewhere, and one of those two ends inside a
5
+ * kind with no character positions (an interior one slices an opaque unit in half). Same-path
6
+ * pairs are exempt (an intra-table rectangle's focus is unflagged by convention).
7
+ */
8
+ import type { DocumentView } from '../core/node-views';
9
+ import type { InvariantViolation } from '../assert';
10
+ /**
11
+ * Structural, NOT `selection/`'s `SelectionPoint`: no `invariants/` predicate takes a
12
+ * dependency — runtime or type — on the selection model.
13
+ */
14
+ export interface EndpointCoordinate {
15
+ readonly path: readonly number[];
16
+ readonly offset: number;
17
+ readonly cellCoordinate?: boolean;
18
+ }
19
+ export declare function checkCrossBlockEndpointCoordinates(doc: DocumentView, anchor: EndpointCoordinate, focus: EndpointCoordinate): InvariantViolation | null;
@@ -0,0 +1,78 @@
1
+ /**
2
+ * G1.29 — a cross-block endpoint's offset means what its block's coordinate space says: a cell
3
+ * index on a table (a char offset there corrupts the grid through rangeDelete's generic branch),
4
+ * a char offset inside [0, displayLength(raw)] elsewhere, and one of those two ends inside a
5
+ * kind with no character positions (an interior one slices an opaque unit in half). Same-path
6
+ * pairs are exempt (an intra-table rectangle's focus is unflagged by convention).
7
+ */
8
+ import { displayLength } from '../core/lines';
9
+ import { isWholeBlockUnit } from '../schema/whole-block-unit';
10
+ function resolve(doc, path) {
11
+ let parent = doc;
12
+ for (const idx of path) {
13
+ const child = parent.children?.[idx];
14
+ if (!child)
15
+ return null;
16
+ parent = child;
17
+ }
18
+ return parent === doc ? null : parent;
19
+ }
20
+ function samePath(a, b) {
21
+ return a.length === b.length && a.every((v, i) => v === b[i]);
22
+ }
23
+ export function checkCrossBlockEndpointCoordinates(doc, anchor, focus) {
24
+ if (samePath(anchor.path, focus.path))
25
+ return null;
26
+ for (const [role, point] of [
27
+ ['anchor', anchor],
28
+ ['focus', focus]
29
+ ]) {
30
+ const node = resolve(doc, point.path);
31
+ if (!node)
32
+ continue;
33
+ const violation = point.cellCoordinate
34
+ ? checkCellCoordinate(role, point, node)
35
+ : checkCharOffset(role, point, node);
36
+ if (violation)
37
+ return violation;
38
+ }
39
+ return null;
40
+ }
41
+ /** The flag's other direction: a cell index against a block with no cells reads as a character
42
+ * offset downstream, so the same corruption arrives from the opposite producer. */
43
+ function checkCellCoordinate(role, point, node) {
44
+ if (node.kind === 'table')
45
+ return null;
46
+ return {
47
+ code: 'endpoint-cell-coordinate-off-table',
48
+ message: `cross-block ${role} [${point.path.join(',')}] carries a cell index (${point.offset}) against a "${node.kind}", which has no cells`,
49
+ detail: { role, path: [...point.path], offset: point.offset }
50
+ };
51
+ }
52
+ function checkCharOffset(role, point, node) {
53
+ const detail = { role, path: [...point.path], offset: point.offset };
54
+ const at = `cross-block ${role} [${point.path.join(',')}]`;
55
+ if (node.kind === 'table') {
56
+ return {
57
+ code: 'endpoint-cell-coordinate',
58
+ message: `${at} addresses a table but carries a character offset (${point.offset})`,
59
+ detail
60
+ };
61
+ }
62
+ const end = displayLength(node.raw);
63
+ if (point.offset < 0 || point.offset > end) {
64
+ return {
65
+ code: 'endpoint-offset-out-of-range',
66
+ message: `${at} carries offset ${point.offset}, outside its "${node.kind}" raw (0..${end})`,
67
+ detail
68
+ };
69
+ }
70
+ if (isWholeBlockUnit(node) && point.offset !== 0 && point.offset !== end) {
71
+ return {
72
+ code: 'endpoint-whole-block-offset',
73
+ message: `${at} carries offset ${point.offset} inside "${node.kind}", which has no character positions — only 0 and ${end} address it`,
74
+ detail
75
+ };
76
+ }
77
+ return null;
78
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * G1.35 — a sink holding exactly one slot installs exactly one node. Bytes that reparse to
3
+ * several blocks are refused before the write, never truncated to the first (a line vanishes from
4
+ * the document) and never written whole into the surviving slot (the tree stops agreeing with its
5
+ * own reload). Arriving plural is legal; installing plural is not, and this is asked at the
6
+ * install so a sink that forgets the refusal answers for what it actually wrote.
7
+ */
8
+ import type { InvariantViolation } from '../assert';
9
+ export declare function checkSingleNodeSink(sink: string, installed: number): InvariantViolation | null;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * G1.35 — a sink holding exactly one slot installs exactly one node. Bytes that reparse to
3
+ * several blocks are refused before the write, never truncated to the first (a line vanishes from
4
+ * the document) and never written whole into the surviving slot (the tree stops agreeing with its
5
+ * own reload). Arriving plural is legal; installing plural is not, and this is asked at the
6
+ * install so a sink that forgets the refusal answers for what it actually wrote.
7
+ */
8
+ export function checkSingleNodeSink(sink, installed) {
9
+ if (installed <= 1)
10
+ return null;
11
+ return {
12
+ code: 'single-node-sink',
13
+ message: `${sink} installed ${installed} nodes into a one-node slot`,
14
+ detail: { sink, installed }
15
+ };
16
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * G1.9 — no mutation may change the serialized bytes reachable through a node an undo
3
+ * entry still shares. BYTES-scoped, so a shared node may still be MOVED: each snapshot
4
+ * owns its children array. The digest is the formalization, over top-level children only —
5
+ * a container's raw covers its whole subtree, so a write through any shared descendant
6
+ * that matters to serialization surfaces without recursion.
7
+ */
8
+ import type { Document } from '../core/nodes';
9
+ import type { InvariantViolation } from '../assert';
10
+ /** Structural slice of UndoEntry — keeps this leaf module free of undo/ imports. */
11
+ export interface SnapshotEntry {
12
+ snapshot: Document;
13
+ /** Digest of `snapshot` at push; absent outside DEV. */
14
+ integrity?: number;
15
+ }
16
+ export declare function checkSnapshotIntegrity(entry: SnapshotEntry): InvariantViolation | null;
17
+ export declare function digestDoc(doc: Document): number;
@@ -0,0 +1,24 @@
1
+ export function checkSnapshotIntegrity(entry) {
2
+ if (entry.integrity === undefined || digestDoc(entry.snapshot) === entry.integrity)
3
+ return null;
4
+ return {
5
+ code: 'snapshot-integrity',
6
+ message: 'snapshot digest mismatch — a mutation wrote through a shared node'
7
+ };
8
+ }
9
+ export function digestDoc(doc) {
10
+ let hash = 0x811c9dc5;
11
+ const mix = (s) => {
12
+ hash = Math.imul(hash ^ s.length, 0x01000193);
13
+ for (let i = 0; i < s.length; i++) {
14
+ hash = Math.imul(hash ^ s.charCodeAt(i), 0x01000193);
15
+ }
16
+ };
17
+ mix(doc.prefix);
18
+ for (const child of doc.children) {
19
+ mix(child.leadingTrivia);
20
+ mix(child.raw);
21
+ }
22
+ mix(doc.suffix);
23
+ return hash >>> 0;
24
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * G1.34 — a split's landing is the index the primitive returned. `blockIndex + 1` is right
3
+ * only while the first half stays one block; a first half whose bytes reparse plural pushes
4
+ * the second half further down, and a caller that re-derives the landing seats the caret on
5
+ * the first half's tail.
6
+ */
7
+ import type { InvariantViolation } from '../assert';
8
+ export declare function checkSplitLanding(expected: number, landing: number): InvariantViolation | null;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * G1.34 — a split's landing is the index the primitive returned. `blockIndex + 1` is right
3
+ * only while the first half stays one block; a first half whose bytes reparse plural pushes
4
+ * the second half further down, and a caller that re-derives the landing seats the caret on
5
+ * the first half's tail.
6
+ */
7
+ export function checkSplitLanding(expected, landing) {
8
+ if (landing === expected)
9
+ return null;
10
+ return {
11
+ code: 'split-landing',
12
+ message: `a split landed at index ${landing}, but its second half starts at ${expected}`,
13
+ detail: { landing, expected }
14
+ };
15
+ }
@@ -0,0 +1,21 @@
1
+ import type { CstNode } from '../core/nodes';
2
+ import type { StructuralChange } from '../tree-operations/structural-change';
3
+ import type { InvariantViolation } from '../assert';
4
+ /**
5
+ * G1.36, producer half — a descriptor's window fits the array it syncs and mints no negative
6
+ * slot count. `Array.from({length: -1})` is `[]`, so a descriptor derived from a length diff
7
+ * over the wrong window desyncs ids from children in silence.
8
+ */
9
+ export declare function checkStructuralDescriptor(change: StructuralChange, length: number): InvariantViolation | null;
10
+ /**
11
+ * G1.36, consumer half — one id per child once a commit publishes. The producer check cannot
12
+ * see a descriptor that fits its own array while describing the wrong window, which is what
13
+ * a length-diff derivation over a settle-folded splice produces.
14
+ */
15
+ export declare function checkIdsChildrenLockstep(seam: string, idCount: number, childCount: number): InvariantViolation | null;
16
+ /**
17
+ * G1.36 over the other parallel array — one span PAIR per child once a rebuild has run
18
+ * (`schema/child-spans.ts`). A rebuilder seeding the wrong length, or a shape change that
19
+ * outlived its drop, is a stale-region splice waiting for the next keystroke.
20
+ */
21
+ export declare function checkChildSpansLockstep(node: CstNode): InvariantViolation | null;
@@ -0,0 +1,50 @@
1
+ /**
2
+ * G1.36, producer half — a descriptor's window fits the array it syncs and mints no negative
3
+ * slot count. `Array.from({length: -1})` is `[]`, so a descriptor derived from a length diff
4
+ * over the wrong window desyncs ids from children in silence.
5
+ */
6
+ export function checkStructuralDescriptor(change, length) {
7
+ if (change.op === 'noop')
8
+ return null;
9
+ const newCount = change.op === 'replace' ? change.newCount : change.op === 'insert' ? change.count : 0;
10
+ const removed = change.op === 'insert' ? 0 : change.count;
11
+ if (change.at >= 0 && removed >= 0 && newCount >= 0 && change.at + removed <= length)
12
+ return null;
13
+ return {
14
+ code: 'structural-descriptor-bounds',
15
+ message: `structural change ${change.op} at ${change.at} (removes ${removed}, adds ${newCount}) does not fit ${length} slots`,
16
+ detail: { change, length }
17
+ };
18
+ }
19
+ /**
20
+ * G1.36, consumer half — one id per child once a commit publishes. The producer check cannot
21
+ * see a descriptor that fits its own array while describing the wrong window, which is what
22
+ * a length-diff derivation over a settle-folded splice produces.
23
+ */
24
+ export function checkIdsChildrenLockstep(seam, idCount, childCount) {
25
+ if (idCount === childCount)
26
+ return null;
27
+ return {
28
+ code: 'ids-children-lockstep',
29
+ message: `${seam}: ${idCount} ids for ${childCount} children`,
30
+ detail: { seam, idCount, childCount }
31
+ };
32
+ }
33
+ /**
34
+ * G1.36 over the other parallel array — one span PAIR per child once a rebuild has run
35
+ * (`schema/child-spans.ts`). A rebuilder seeding the wrong length, or a shape change that
36
+ * outlived its drop, is a stale-region splice waiting for the next keystroke.
37
+ */
38
+ export function checkChildSpansLockstep(node) {
39
+ const spans = node.childSpans;
40
+ if (!spans)
41
+ return null;
42
+ const childCount = node.children?.length ?? 0;
43
+ if (spans.length === childCount * 2)
44
+ return null;
45
+ return {
46
+ code: 'child-spans-lockstep',
47
+ message: `${node.kind}: ${spans.length} span bounds for ${childCount} children`,
48
+ detail: { kind: node.kind, spanCount: spans.length, childCount }
49
+ };
50
+ }