@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,220 @@
1
+ /**
2
+ * The fencedCode raw-write rule, declared on the kind as `normalizeRawWrite` and applied at every
3
+ * write sink. RESTORE re-appends a closer a truncating write dropped and DROP removes one it
4
+ * stranded, ESCALATE grows both runs past a body line that would read as the closer, SANITIZE
5
+ * drops backticks from a backtick fence's info string (CommonMark §4.5) — all off the block's OWN
6
+ * fence shape, which is why the pass takes a node. An authored open fence is exempt.
7
+ */
8
+ import { metadataOf } from '../core/nodes';
9
+ import { trailingLineEnding, trimTrailingLineEnding } from '../core/lines';
10
+ import { escalatedFenceLength, matchFenceClose, matchFenceOpen } from '../core/parsers/fence-syntax';
11
+ // ── Public API ──────────────────────────────────────────────────────────────
12
+ export function fenceShapeOf(node) {
13
+ const meta = metadataOf(node, 'fencedCode');
14
+ return { marker: meta.fenceMarker, length: meta.fenceLength, closed: meta.closed };
15
+ }
16
+ export function reconcileFenceWrite(input) {
17
+ const { fence, mode } = input;
18
+ if (!fence.closed && mode === 'authored')
19
+ return { display: input.display, caret: input.caret };
20
+ return escalateFenceRuns({ ...input, ...sanitizeInfoString(input) });
21
+ }
22
+ /**
23
+ * A whole fencedCode `raw` made legal — the kind's `normalizeRawWrite`. Literal by
24
+ * construction: a sink reaching a node's bytes without its surface is never the author
25
+ * typing the block's own syntax. The fence lines reconcile first, so ESCALATE measures a
26
+ * body that ends where the closer does.
27
+ */
28
+ export function normalizeFencedRaw(raw, node) {
29
+ const fence = fenceShapeOf(node);
30
+ const written = reconcileFenceWrite({
31
+ display: reconcileFenceLines(trimTrailingLineEnding(raw), fence, trailingLineEnding(node.raw)),
32
+ caret: 0,
33
+ fence,
34
+ mode: 'literal'
35
+ });
36
+ return written.display + trailingLineEnding(raw);
37
+ }
38
+ /**
39
+ * The bytes with `info` written onto the opening fence line. Only that span moves, so the
40
+ * indent, both marker runs, the body and the closer come through byte-identical. Null when
41
+ * line 0 does not read as this block's opener at all.
42
+ */
43
+ export function writeFenceInfo(display, info, fence) {
44
+ const lineEnd = firstLineEnd(display);
45
+ const line = display.slice(0, lineEnd);
46
+ const opener = splitOpener(line, fence);
47
+ if (!opener)
48
+ return null;
49
+ // A CRLF separator's `\r` sits inside the line; the info span ends before it.
50
+ const infoEnd = lineEnd - (line.endsWith('\r') ? 1 : 0);
51
+ return display.slice(0, opener.runEnd) + legalInfo(info, fence) + display.slice(infoEnd);
52
+ }
53
+ // ── Internal ────────────────────────────────────────────────────────────────
54
+ /**
55
+ * What the info span may hold: one line, no backtick under a backtick fence (CommonMark §4.5),
56
+ * and no leading run of the fence's own marker, which lengthens the fence instead — `~~~` + `~x`
57
+ * reparses as a four-tilde run its own closer no longer closes. Dropped rather than declined,
58
+ * the rule the typed and pasted routes already share.
59
+ */
60
+ function legalInfo(info, fence) {
61
+ const oneLine = info.replace(/[\r\n]/g, '');
62
+ const kept = fence.marker === '`' ? oneLine.replaceAll('`', '') : oneLine;
63
+ let start = 0;
64
+ while (kept[start] === fence.marker)
65
+ start++;
66
+ return kept.slice(start);
67
+ }
68
+ /**
69
+ * Split by the block's OWN run length, not by re-scanning the written line: a backtick
70
+ * typed at the head of the info string must read as info, not as a longer run.
71
+ */
72
+ function splitOpener(line, fence) {
73
+ const indent = /^ {0,3}/.exec(line)[0];
74
+ const runEnd = indent.length + fence.length;
75
+ if (line.slice(indent.length, runEnd) !== fence.marker.repeat(fence.length))
76
+ return null;
77
+ return { indent, info: line.slice(runEnd), runEnd };
78
+ }
79
+ /**
80
+ * The block's fence lines against a write that took one of them — an unclosed fence absorbs every
81
+ * block below it at the next parse, from either half. With the block's own opener still at line 0
82
+ * a missing closer comes back; without it a surviving closer is machinery the write stranded and
83
+ * goes. The arms split on {@link ownOpener}, so exactly one can fire.
84
+ */
85
+ function reconcileFenceLines(display, fence, blockEnding) {
86
+ if (!fence.closed)
87
+ return display;
88
+ const lines = display.split('\n');
89
+ const opener = ownOpener(lines, fence);
90
+ const reconciled = opener
91
+ ? restoredCloser(lines, fence, opener, blockEnding)
92
+ : droppedStrandedCloser(lines, fence);
93
+ return reconciled ?? display;
94
+ }
95
+ /**
96
+ * Line 0 read as the block's OWN opener: its exact run, and info that is not a longer run. A
97
+ * write's only line reading as this fence's CLOSER is not it — an opener never doubles as one,
98
+ * and no metadata claims a block to size a fence to.
99
+ */
100
+ function ownOpener(lines, fence) {
101
+ const opener = splitOpener(lines[0], fence);
102
+ if (!opener || opener.info.startsWith(fence.marker))
103
+ return null;
104
+ if (lines.length === 1 && matchFenceClose(lines[0], fence.marker, fence.length))
105
+ return null;
106
+ return opener;
107
+ }
108
+ /**
109
+ * The closer a truncating write dropped, re-appended, or null when one is still there. The ending
110
+ * is the BLOCK's, not the written slice's, which may be unterminated (G4.20).
111
+ */
112
+ function restoredCloser(lines, fence, opener, blockEnding) {
113
+ if (lastCloserIndex(lines, fence) !== -1)
114
+ return null;
115
+ return lines.join('\n') + blockEnding + opener.indent + fence.marker.repeat(fence.length);
116
+ }
117
+ /**
118
+ * The closer a write left behind after taking the block's own opener — machinery no metadata
119
+ * claims, removed rather than kept, since as text it re-opens a fence over the live siblings
120
+ * below. Null when there is none, or when an opener above could CLOSE on the run:
121
+ * same marker, run no longer than the closer's — a foreign-marker or longer-run open line is
122
+ * body text the run never terminated.
123
+ */
124
+ function droppedStrandedCloser(lines, fence) {
125
+ const closer = lastCloserIndex(lines, fence, 0);
126
+ if (closer === -1)
127
+ return null;
128
+ const run = /^ {0,3}([`~]+)/.exec(lines[closer])[1].length;
129
+ const claimed = (line) => {
130
+ const open = matchFenceOpen(line);
131
+ return open !== null && open.marker === fence.marker && open.length <= run;
132
+ };
133
+ if (lines.slice(0, closer).some(claimed))
134
+ return null;
135
+ return withoutLine(lines, closer);
136
+ }
137
+ /** Splitting on `\n` leaves a CRLF separator's `\r` above; dropping the last line orphans it. */
138
+ function withoutLine(lines, index) {
139
+ const kept = lines.slice(0, index).concat(lines.slice(index + 1));
140
+ if (index === lines.length - 1 && kept.length > 0) {
141
+ kept[kept.length - 1] = kept[kept.length - 1].replace(/\r$/, '');
142
+ }
143
+ return kept.join('\n');
144
+ }
145
+ function sanitizeInfoString(input) {
146
+ const { display, caret, fence } = input;
147
+ if (fence.marker !== '`')
148
+ return { display, caret };
149
+ const lineEnd = firstLineEnd(display);
150
+ const opener = splitOpener(display.slice(0, lineEnd), fence);
151
+ if (!opener || !opener.info.includes('`'))
152
+ return { display, caret };
153
+ const kept = opener.info.replaceAll('`', '');
154
+ const dropped = countDroppedBefore(opener.info, opener.runEnd, caret);
155
+ return {
156
+ display: opener.indent + fence.marker.repeat(fence.length) + kept + display.slice(lineEnd),
157
+ caret: caret - dropped
158
+ };
159
+ }
160
+ /** Backticks removed from the info string that sat before the caret. */
161
+ function countDroppedBefore(info, infoStart, caret) {
162
+ let dropped = 0;
163
+ for (let i = 0; i < info.length && infoStart + i < caret; i++) {
164
+ if (info[i] === '`')
165
+ dropped++;
166
+ }
167
+ return dropped;
168
+ }
169
+ function escalateFenceRuns(input) {
170
+ const { display, caret, fence } = input;
171
+ const lines = display.split('\n');
172
+ const opener = splitOpener(lines[0], fence);
173
+ if (!opener || lines.length < 2)
174
+ return { display, caret };
175
+ // An open fence has no closer line, so a literal write measures everything below
176
+ // the opener; a closed one measures only what sits above its own closer.
177
+ const closerIndex = fence.closed ? lastCloserIndex(lines, fence) : -1;
178
+ if (fence.closed && closerIndex < 1)
179
+ return { display, caret };
180
+ const bodyEnd = closerIndex === -1 ? lines.length : closerIndex;
181
+ const body = lines.slice(1, bodyEnd).join('\n');
182
+ const grown = escalatedFenceLength(body, fence.marker, fence.length);
183
+ const delta = grown - fence.length;
184
+ if (delta === 0)
185
+ return { display, caret };
186
+ const run = fence.marker.repeat(grown);
187
+ lines[0] = opener.indent + run + opener.info;
188
+ let closerRunStart = -1;
189
+ if (closerIndex !== -1) {
190
+ const closerIndent = /^ {0,3}/.exec(lines[closerIndex])[0];
191
+ const tail = lines[closerIndex].slice(closerIndent.length).replace(/^[`~]+/, '');
192
+ closerRunStart = lineStartOffset(display, closerIndex) + closerIndent.length;
193
+ lines[closerIndex] = closerIndent + run + tail;
194
+ }
195
+ // The run grows in place, so a caret past an insertion point moves with it.
196
+ let moved = caret;
197
+ if (caret > opener.runEnd)
198
+ moved += delta;
199
+ if (closerRunStart !== -1 && caret > closerRunStart)
200
+ moved += delta;
201
+ return { display: lines.join('\n'), caret: moved };
202
+ }
203
+ /** Last line reading as this fence's closer at or after `from`; line 0 is the opener's slot. */
204
+ function lastCloserIndex(lines, fence, from = 1) {
205
+ for (let i = lines.length - 1; i >= from; i--) {
206
+ if (matchFenceClose(lines[i], fence.marker, fence.length))
207
+ return i;
208
+ }
209
+ return -1;
210
+ }
211
+ function firstLineEnd(display) {
212
+ const index = display.indexOf('\n');
213
+ return index === -1 ? display.length : index;
214
+ }
215
+ function lineStartOffset(display, lineIndex) {
216
+ let offset = 0;
217
+ for (let i = 0; i < lineIndex; i++)
218
+ offset = display.indexOf('\n', offset) + 1;
219
+ return offset;
220
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Plugin-facing global commands: mint a process-wide command id, register a handler receiving
3
+ * the dispatching instance's EditorContext, optionally bind a chord in the plugin-global tier
4
+ * (last in precedence). Beside block-commands, not in commands.ts, for the same cycle reason —
5
+ * commands ← command-id must stay one-directional.
6
+ */
7
+ import { type PluginCommandId } from './command-id';
8
+ import type { EditorContext } from './plugin-install';
9
+ export declare function registerGlobalCommand(name: string, handler: (editor: EditorContext) => boolean, opts?: {
10
+ chord?: string;
11
+ }): PluginCommandId;
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Plugin-facing global commands: mint a process-wide command id, register a handler receiving
3
+ * the dispatching instance's EditorContext, optionally bind a chord in the plugin-global tier
4
+ * (last in precedence). Beside block-commands, not in commands.ts, for the same cycle reason —
5
+ * commands ← command-id must stay one-directional.
6
+ */
7
+ import { mintCommandId } from './command-id';
8
+ import { registerCommand, registerPluginGlobalBinding, assertPluginGlobalChordAvailable, warnDeadKeyCommand } from './commands';
9
+ import { currentInstallingPlugin } from './plugin-install';
10
+ export function registerGlobalCommand(name, handler, opts) {
11
+ // Validate the chord BEFORE the mint: a collision must not leave a minted name and a
12
+ // registered handler behind a failed registration.
13
+ if (opts?.chord)
14
+ assertPluginGlobalChordAvailable(opts.chord, name);
15
+ const owner = currentInstallingPlugin();
16
+ // Owner-attributed: it is what lets a plugin re-mint its own name, and what names the prior
17
+ // owner in a cross-plugin collision.
18
+ const id = mintCommandId(name, owner);
19
+ registerCommand(id, (ctx) => {
20
+ if (!ctx.pluginEditor) {
21
+ warnDeadKeyCommand(id, 'plugin-global');
22
+ return false;
23
+ }
24
+ // Installed process-wide but absent from this editor's `plugins` prop: inert here, not
25
+ // dead, so it must not spend the dead-key diagnostic a truly unreachable id owes.
26
+ const editor = ctx.pluginEditor(owner ?? '');
27
+ if (!editor)
28
+ return false;
29
+ try {
30
+ return handler(editor);
31
+ }
32
+ catch (error) {
33
+ ctx.onCommandError?.({ command: id, plugin: owner ?? undefined, error });
34
+ return true;
35
+ }
36
+ });
37
+ if (opts?.chord)
38
+ registerPluginGlobalBinding({ chord: opts.chord, command: id }, owner);
39
+ return id;
40
+ }
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Per-inline-kind editing policy: how a construct behaves at its edges, whether emptying it
3
+ * unwraps it, how a split treats its markers, whether preview-inline's reveal addresses them, and
4
+ * what a format chord writes for it. Lives in `schema/` because it is the only directory
5
+ * `tree-operations`, `selection`, `components` and `core/inline` can all reach. Rows are data; the
6
+ * split rebalancer is a function value patched in from the component layer, so this module keeps
7
+ * no import of it.
8
+ */
9
+ import { type AnyInlineKind } from '../core/nodes';
10
+ import type { NodeView } from '../core/node-views';
11
+ import type { LinkReferenceResolver } from '../core/inline/link-reference-resolver';
12
+ import type { AnyCommandId } from './command-id';
13
+ /** The constructs a format chord addresses: whichever rows below declare a mark. An alias rather
14
+ * than a union, so a plugin's markable kind needs no edit here — the membership test is the row
15
+ * lookup, at runtime. */
16
+ export type InlineMarkKind = AnyInlineKind;
17
+ /**
18
+ * The vocabulary a format chord needs to write a construct's own delimiters. Whole or absent, so a
19
+ * kind cannot declare itself markable without saying what a mark on it writes.
20
+ */
21
+ export interface InlineMarkPolicy {
22
+ /** Where the kind sits when one insertion carries several marks: ascending is outermost first,
23
+ * and the order is the table's, never the order the chords arrived in. */
24
+ nestingRank: number;
25
+ /** The bare run that opens and closes the construct. */
26
+ markerBytes: string;
27
+ /** Wrap `content` for a kind whose delimiters depend on what they enclose — a code span sizes
28
+ * its fence past the longest run inside it. Absent means marker, content, marker. */
29
+ wrapBytes?: (content: string) => string;
30
+ /** The command whose press toggles this mark. */
31
+ command: AnyCommandId;
32
+ }
33
+ export interface InlineConstructPolicy {
34
+ edgeAffinity: 'symmetric-pair' | 'never-extend';
35
+ autoUnwrapOnEmpty: boolean;
36
+ splitBehavior: 'close-and-reopen' | 'plain';
37
+ revealable: boolean;
38
+ /** Whether the link card is the door to this construct's destination — the only one a mode
39
+ * that paints no URL leaves the reader (live-mode.md § 4.6). Absent reads as no: an image's
40
+ * destination has its own editor, and an autolink's IS the text on screen. */
41
+ cardEditable?: boolean;
42
+ /** Absent for a construct no format chord addresses. */
43
+ mark?: InlineMarkPolicy;
44
+ }
45
+ export declare function registerInlineConstructPolicy(kind: AnyInlineKind, policy: InlineConstructPolicy): void;
46
+ /** Undefined for a kind with no row: absent means "no live-mode construct behavior at all". */
47
+ export declare function getInlineConstructPolicy(kind: AnyInlineKind): InlineConstructPolicy | undefined;
48
+ /** Whether preview-inline's construct reveal may flip this kind's marker spans. */
49
+ export declare function isRevealableInlineKind(kind: AnyInlineKind): boolean;
50
+ /** Whether the link card may address this kind's destination. */
51
+ export declare function isCardEditableInlineKind(kind: AnyInlineKind): boolean;
52
+ export declare function listInlineConstructPolicies(): readonly (InlineConstructPolicy & {
53
+ kind: AnyInlineKind;
54
+ })[];
55
+ /** A kind's mark vocabulary, or undefined for one no chord addresses — the membership test the
56
+ * toggle seams run before writing any delimiter. */
57
+ export declare function getInlineMarkPolicy(kind: AnyInlineKind): InlineMarkPolicy | undefined;
58
+ export interface InlineMark {
59
+ kind: AnyInlineKind;
60
+ mark: InlineMarkPolicy;
61
+ }
62
+ /** Every markable kind, outermost first. Carrying the row rather than the bare kind is what keeps
63
+ * a caller from mapping a lookup that can miss over a list it built itself. */
64
+ export declare function listInlineMarks(): readonly InlineMark[];
65
+ /** The mark a command toggles, or null for a command no row claims. */
66
+ export declare function inlineMarkForCommand(command: string): InlineMark | null;
67
+ /**
68
+ * The link-reference resolver a rewrite parses with, structurally rather than by naming
69
+ * `editor-keys`' type — that would cycle the editor's context module onto every layer this table
70
+ * serves, the reason `inline-cache` states for the same shape. Registration is process-global and
71
+ * the resolver is per-instance, so it rides the CALL, never the registration.
72
+ */
73
+ export type InlineResolverRef = {
74
+ current?: LinkReferenceResolver;
75
+ signature?: string;
76
+ };
77
+ /**
78
+ * The one live-mode split rewrite, consulting each construct's own `splitBehavior`, so
79
+ * `splitNode` needs neither `parseInline` nor a per-kind dispatch. Null declines the rewrite.
80
+ */
81
+ export type LiveSplitRebalancer = (node: NodeView, offset: number, firstRaw: string, secondRaw: string, linkRef: InlineResolverRef | undefined) => {
82
+ firstRaw: string;
83
+ secondRaw: string;
84
+ } | null;
85
+ export declare function registerLiveSplitRebalancer(rebalancer: LiveSplitRebalancer): void;
86
+ export declare function getLiveSplitRebalancer(): LiveSplitRebalancer | undefined;
87
+ /** One side of a join: the block bytes it contributed and the offset they were cut at — a whole
88
+ * block's content end for a merge, the selection endpoint for a range delete. */
89
+ export interface JoinEndpoint {
90
+ node: NodeView;
91
+ offset: number;
92
+ }
93
+ /** The bytes a join produced, plus where the second side's contribution starts in them. */
94
+ export interface JoinSeam {
95
+ mergedRaw: string;
96
+ seam: number;
97
+ start: JoinEndpoint;
98
+ end: JoinEndpoint;
99
+ /** Per-instance, so it rides the call: a reference form parsed without it reads as brackets,
100
+ * and the seam would step around a construct the reader saw as a link. */
101
+ linkRef: InlineResolverRef | undefined;
102
+ /** Text the caller will splice at the seam once the cleanup returns. Absent for a pure delete;
103
+ * present, it is part of the bytes the cleanup has to verify, since a typed run changes the
104
+ * flanking a kept delimiter pairs against. */
105
+ typed?: string;
106
+ /** The container prefix the surviving side is installed under (`- `, `> `). Absent where the
107
+ * surface paints none. A candidate is read back through it: an item's body starting with a
108
+ * space reloads as a WIDER marker than the live tree holds. */
109
+ ambientPrefix?: string;
110
+ }
111
+ /** The bytes a cleanup wrote and where the two sides now meet in them: dropping a run on the
112
+ * first side's half moves the seam the caret lands on. */
113
+ export interface CleanedJoin {
114
+ raw: string;
115
+ seam: number;
116
+ }
117
+ /**
118
+ * The one live-mode join rewrite, consulting each construct's own policy row, so the merge
119
+ * primitives need neither `parseInline` nor a per-kind dispatch. Null declines the rewrite.
120
+ */
121
+ export type LiveJoinSeamCleaner = (join: JoinSeam) => CleanedJoin | null;
122
+ export declare function registerLiveJoinSeamCleaner(cleaner: LiveJoinSeamCleaner): void;
123
+ export declare function getLiveJoinSeamCleaner(): LiveJoinSeamCleaner | undefined;
124
+ /** Test-only. Drops every plugin-registered row; built-in rows and the rebalancer survive,
125
+ * being built-in registrations. */
126
+ export declare function __resetInlineConstructPoliciesForTests(): void;
127
+ /** Test-only, and separate on purpose: only a suite testing the SLOT wants it emptied, and the
128
+ * registry's own reset must not do it as a side effect. */
129
+ export declare function __resetLiveSplitRebalancerForTests(): void;
130
+ /** Test-only, {@link __resetLiveSplitRebalancerForTests}'s twin for the join slot. */
131
+ export declare function __resetLiveJoinSeamCleanerForTests(): void;
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Per-inline-kind editing policy: how a construct behaves at its edges, whether emptying it
3
+ * unwraps it, how a split treats its markers, whether preview-inline's reveal addresses them, and
4
+ * what a format chord writes for it. Lives in `schema/` because it is the only directory
5
+ * `tree-operations`, `selection`, `components` and `core/inline` can all reach. Rows are data; the
6
+ * split rebalancer is a function value patched in from the component layer, so this module keeps
7
+ * no import of it.
8
+ */
9
+ import { isBuiltinInlineKind } from '../core/nodes';
10
+ import { isBuiltinCommandId } from './commands';
11
+ import { deletePluginEntries, registerOnce } from './register-once';
12
+ const policies = new Map();
13
+ export function registerInlineConstructPolicy(kind, policy) {
14
+ assertMarkCommandMintable(kind, policy.mark);
15
+ assertCardImpliesRevealable(kind, policy);
16
+ registerOnce(policies.has(kind), () => policies.set(kind, policy), `registerInlineConstructPolicy: "${kind}" is already registered. Policies are register-once.`);
17
+ }
18
+ /** Ahead of the register-once valve, so it rejects in every env: the valve forgives a duplicate
19
+ * row, never an invalid one. The rule and why it matters are G1.31's, which stays the belt. */
20
+ function assertMarkCommandMintable(kind, mark) {
21
+ if (!mark || isBuiltinInlineKind(kind) || !isBuiltinCommandId(mark.command))
22
+ return;
23
+ throw new Error(`registerInlineConstructPolicy: "${kind}" claims built-in command "${mark.command}" for its mark — that id already has a built-in meaning; mint a plugin command id for the mark`);
24
+ }
25
+ /** The card's open chain admits only revealable kinds (`link-at-point.ts`), so a row claiming the
26
+ * card without the reveal declares a door nothing can walk through. Stated here rather than left
27
+ * to a silent no-op at the click. */
28
+ function assertCardImpliesRevealable(kind, policy) {
29
+ if (!policy.cardEditable || policy.revealable)
30
+ return;
31
+ throw new Error(`registerInlineConstructPolicy: "${kind}" declares cardEditable without revealable — the card's open chain reaches only revealable kinds, so the door would never open`);
32
+ }
33
+ /** Undefined for a kind with no row: absent means "no live-mode construct behavior at all". */
34
+ export function getInlineConstructPolicy(kind) {
35
+ return policies.get(kind);
36
+ }
37
+ /** Whether preview-inline's construct reveal may flip this kind's marker spans. */
38
+ export function isRevealableInlineKind(kind) {
39
+ return policies.get(kind)?.revealable === true;
40
+ }
41
+ /** Whether the link card may address this kind's destination. */
42
+ export function isCardEditableInlineKind(kind) {
43
+ return policies.get(kind)?.cardEditable === true;
44
+ }
45
+ export function listInlineConstructPolicies() {
46
+ return [...policies].map(([kind, policy]) => ({ kind, ...policy }));
47
+ }
48
+ // ── The mark vocabulary ─────────────────────────────────────────────────────
49
+ /** A kind's mark vocabulary, or undefined for one no chord addresses — the membership test the
50
+ * toggle seams run before writing any delimiter. */
51
+ export function getInlineMarkPolicy(kind) {
52
+ return policies.get(kind)?.mark;
53
+ }
54
+ /** Every markable kind, outermost first. Carrying the row rather than the bare kind is what keeps
55
+ * a caller from mapping a lookup that can miss over a list it built itself. */
56
+ export function listInlineMarks() {
57
+ const marks = [];
58
+ for (const [kind, policy] of policies)
59
+ if (policy.mark)
60
+ marks.push({ kind, mark: policy.mark });
61
+ return marks.sort((a, b) => a.mark.nestingRank - b.mark.nestingRank);
62
+ }
63
+ /** The mark a command toggles, or null for a command no row claims. */
64
+ export function inlineMarkForCommand(command) {
65
+ return listInlineMarks().find((entry) => entry.mark.command === command) ?? null;
66
+ }
67
+ let splitRebalancer;
68
+ export function registerLiveSplitRebalancer(rebalancer) {
69
+ registerOnce(splitRebalancer !== undefined, () => (splitRebalancer = rebalancer), `registerLiveSplitRebalancer: a rebalancer is already registered. The slot holds one ` +
70
+ `function for every construct — extend that one rather than registering a second.`);
71
+ }
72
+ export function getLiveSplitRebalancer() {
73
+ return splitRebalancer;
74
+ }
75
+ let joinSeamCleaner;
76
+ export function registerLiveJoinSeamCleaner(cleaner) {
77
+ registerOnce(joinSeamCleaner !== undefined, () => (joinSeamCleaner = cleaner), `registerLiveJoinSeamCleaner: a cleaner is already registered. The slot holds one ` +
78
+ `function for every construct — extend that one rather than registering a second.`);
79
+ }
80
+ export function getLiveJoinSeamCleaner() {
81
+ return joinSeamCleaner;
82
+ }
83
+ /** Test-only. Drops every plugin-registered row; built-in rows and the rebalancer survive,
84
+ * being built-in registrations. */
85
+ export function __resetInlineConstructPoliciesForTests() {
86
+ deletePluginEntries(policies, isBuiltinInlineKind);
87
+ }
88
+ /** Test-only, and separate on purpose: only a suite testing the SLOT wants it emptied, and the
89
+ * registry's own reset must not do it as a side effect. */
90
+ export function __resetLiveSplitRebalancerForTests() {
91
+ splitRebalancer = undefined;
92
+ }
93
+ /** Test-only, {@link __resetLiveSplitRebalancerForTests}'s twin for the join slot. */
94
+ export function __resetLiveJoinSeamCleanerForTests() {
95
+ joinSeamCleaner = undefined;
96
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Per-instance keybinding overrides: the public override-entry type, the normalized lookup it
3
+ * compiles into, and the primitives the command resolver composes with the built-in tables.
4
+ * Schema leaf — the map reaches the resolver as an argument, never through a context read.
5
+ */
6
+ import type { AnyBlockKind } from '../core/nodes';
7
+ import { type KeyBinding } from './keybindings';
8
+ import type { AnyCommandId } from './command-id';
9
+ /** A consumer override of the default keymap for one mounted editor (the `keybindings` prop). */
10
+ export interface KeybindingOverride {
11
+ /** Chord string in the public format (Mod/Alt/Shift + key). See keybindings.ts. */
12
+ chord: string;
13
+ /** A command to bind (built-in or minted plugin id), or `null` to disable the chord. A disable
14
+ * removes the binding and drops the chord from `reservedChords()`, but the press is still
15
+ * consumed inside the editor rather than falling through to the browser's own default. */
16
+ command: AnyCommandId | null;
17
+ /** Target one block kind's keymap — built-in, or a plugin kind via its exported
18
+ * kind constant (branded; a raw string literal won't typecheck). Omit for the
19
+ * editor-global scope. */
20
+ kind?: AnyBlockKind;
21
+ /**
22
+ * Static argument baked into the binding. `unknown` for coherence with `KeyBinding.arg`: a
23
+ * minted command's non-number arg survives normalization, and the handler type-guards it.
24
+ */
25
+ arg?: unknown;
26
+ }
27
+ /** A normalized override entry: a concrete binding, or `'disabled'` (the chord is unbound). */
28
+ export type OverrideValue = KeyBinding | 'disabled';
29
+ /** Compiled per-instance override lookup, split by scope. */
30
+ export interface KeybindingOverrideMap {
31
+ global: Map<string, OverrideValue>;
32
+ byKind: Map<AnyBlockKind, Map<string, OverrideValue>>;
33
+ }
34
+ /** Compile the `keybindings` prop into the scoped lookup. Malformed chords are dev-warned and dropped. */
35
+ export declare function normalizeKeybindingOverrides(overrides: KeybindingOverride[] | undefined): KeybindingOverrideMap;
36
+ /** Look up a single override for a (scope, chord). undefined when no entry exists. */
37
+ export declare function lookupOverride(overrides: KeybindingOverrideMap | undefined, scope: 'global' | AnyBlockKind, chord: string): OverrideValue | undefined;
38
+ /** Resolve one tier: a binding (use it), null (decided unbound — disabled), undefined (no decision). */
39
+ export declare function overrideDecision(value: OverrideValue | undefined): KeyBinding | null | undefined;
@@ -0,0 +1,43 @@
1
+ import { normalizeChordStrict } from './keybindings';
2
+ const EMPTY = { global: new Map(), byKind: new Map() };
3
+ /** Compile the `keybindings` prop into the scoped lookup. Malformed chords are dev-warned and dropped. */
4
+ export function normalizeKeybindingOverrides(overrides) {
5
+ if (!overrides || overrides.length === 0)
6
+ return EMPTY;
7
+ const global = new Map();
8
+ const byKind = new Map();
9
+ for (const o of overrides) {
10
+ const chord = normalizeChordStrict(o.chord);
11
+ if (chord === null)
12
+ continue;
13
+ const value = o.command === null
14
+ ? 'disabled'
15
+ : { chord, command: o.command, ...(o.arg !== undefined ? { arg: o.arg } : {}) };
16
+ if (o.kind === undefined) {
17
+ global.set(chord, value);
18
+ }
19
+ else {
20
+ let kindMap = byKind.get(o.kind);
21
+ if (!kindMap) {
22
+ kindMap = new Map();
23
+ byKind.set(o.kind, kindMap);
24
+ }
25
+ kindMap.set(chord, value);
26
+ }
27
+ }
28
+ return { global, byKind };
29
+ }
30
+ /** Look up a single override for a (scope, chord). undefined when no entry exists. */
31
+ export function lookupOverride(overrides, scope, chord) {
32
+ if (!overrides)
33
+ return undefined;
34
+ if (scope === 'global')
35
+ return overrides.global.get(chord);
36
+ return overrides.byKind.get(scope)?.get(chord);
37
+ }
38
+ /** Resolve one tier: a binding (use it), null (decided unbound — disabled), undefined (no decision). */
39
+ export function overrideDecision(value) {
40
+ if (value === undefined)
41
+ return undefined;
42
+ return value === 'disabled' ? null : value;
43
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Keyboard chord parsing and the per-kind binding shape. `Mod` is the cross-platform
3
+ * Ctrl-or-Cmd modifier; a chord is modifiers in fixed order (Mod, Alt, Shift) then the key,
4
+ * single letters uppercased. Shifted-symbol keys (Shift+1 -> '!') are not modeled.
5
+ */
6
+ import type { AnyCommandId } from './command-id';
7
+ export interface KeyBinding {
8
+ chord: string;
9
+ command: AnyCommandId;
10
+ /**
11
+ * Static argument baked into the binding, widened so a minted command travels the same
12
+ * channel. It reaches the handler as `unknown`, which must type-guard before use.
13
+ */
14
+ arg?: unknown;
15
+ }
16
+ /**
17
+ * Keys that are a modifier being held, never a keystroke of their own. Every keydown consumer
18
+ * that must ignore "not a chord yet" reads this set rather than re-listing it.
19
+ */
20
+ export declare const BARE_MODIFIER_KEYS: readonly string[];
21
+ /** A `key` value that is one typed character: one code point, so an astral glyph's two
22
+ * UTF-16 units still count as a single keystroke. */
23
+ export declare function isCharacterKey(key: string): boolean;
24
+ export declare function eventToChord(e: KeyboardEvent): string | null;
25
+ export declare function normalizeChord(chord: string): string;
26
+ /**
27
+ * The well-formedness the strict ingestion paths gate on, so a mis-typed `'Ctrl+B'` can't
28
+ * collapse to a bare `'B'` that fires on every keypress. Pure: the caller decides whether to
29
+ * warn, throw, or report.
30
+ */
31
+ export declare function isChordWellFormed(chord: string): boolean;
32
+ /**
33
+ * Validate then normalize a consumer-supplied chord; null (dev-warned) when malformed, guarding
34
+ * the trap where `'Ctrl+B'` drops the unrecognized `Ctrl` and collapses to bare `'B'`.
35
+ */
36
+ export declare function normalizeChordStrict(chord: string): string | null;