@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,91 @@
1
+ /**
2
+ * The single caret-edge dispatch (G4.12): a plain Backspace/Delete or printable key at a caret
3
+ * edge in a prose block resolves against a declarative policy — the construct class's for an
4
+ * inline neighbour, the ancestor container's for a content-start key — never native
5
+ * contenteditable mutation, which would corrupt the atomic bytes those stand for.
6
+ */
7
+ import type { BlockEditActions } from '../../../action-contracts';
8
+ import type { NodeView } from '../../../core/node-views';
9
+ import type { LinkReferenceResolverRef } from '../../../editor-keys';
10
+ import type { InlineNode } from '../../../core/nodes';
11
+ import type { InlineWidgetEditingPolicy } from '../../../core/inline/inline-widgets';
12
+ import { type RawOffset } from '../../../cursor/coordinate-spaces';
13
+ import type { EdgeAffinity } from '../../../cursor/edge-affinity';
14
+ import type { PendingMarksState } from '../../../cursor/pending-marks';
15
+ import { type EdgeDeletionSurface } from './construct-edge-delete';
16
+ /** The subset of the inline-widget vocabulary the internal island policies reuse,
17
+ * expressed in the same terms without leaking into the public API. */
18
+ export type EdgePolicy = Pick<InlineWidgetEditingPolicy, 'onEdge' | 'deleteGranularity'>;
19
+ /** Reactive state arrives as getters, so a captured value can't go stale under
20
+ * re-render. */
21
+ export interface EdgePolicyDispatchDeps {
22
+ get node(): NodeView;
23
+ get index(): number;
24
+ /** The nearest ancestor container, or null at the document root — the declaration a
25
+ * content-start key resolves against. */
26
+ get containerParent(): NodeView | null;
27
+ get linkRef(): LinkReferenceResolverRef | undefined;
28
+ getEl: () => HTMLElement | null;
29
+ getAmbientLength: () => number;
30
+ /** The container prefix this surface renders under, which the join seam reads a candidate back
31
+ * through. Optional because a surface that is not a container's child paints none, and '' is
32
+ * the right answer there rather than an inherited assumption. */
33
+ getAmbientPrefix?: () => string;
34
+ /** Whether this block carries any decoration islands. Reads the same source the render
35
+ * painted from, so a false can't disagree with the DOM and safely skips the scan. */
36
+ hasIslands: () => boolean;
37
+ /** Anchor/focus raw-content offsets of the live selection, or null when collapsed. */
38
+ getRawSelection: () => {
39
+ start: RawOffset;
40
+ end: RawOffset;
41
+ } | null;
42
+ blockEdit: BlockEditActions;
43
+ /** Park a caret for the post-render restore, tagged with the gesture for the trace.
44
+ * `writtenText` is the text that offset addresses — a kind whose write sink rewrites
45
+ * bytes moves it — and is omitted where the arm parks ahead of every changed byte. */
46
+ setPendingCursor: (offset: number | null, source: string, writtenText?: string) => void;
47
+ setSnapTarget: (offset: number | null) => void;
48
+ /** A widget's source is revealed: the CST still reports it atomic, but the DOM is
49
+ * editable text, so the widget branch stands down and lets native editing run. */
50
+ isRevealing: () => boolean;
51
+ /** The reveal-vs-select entry seam; the dispatch owns classification, this owns
52
+ * the entry execution and the reveal state machine. */
53
+ enterWidget: (widget: {
54
+ start: number;
55
+ end: number;
56
+ kind: InlineNode['kind'];
57
+ }, fromTrailingEdge: boolean) => void;
58
+ /**
59
+ * Substitute the edge policy for a widget this surface renders on terms the kind's
60
+ * registration doesn't assume: a policy names an affordance, and a surface that paints
61
+ * none must answer differently rather than degrade. `undefined` keeps the registration.
62
+ */
63
+ widgetEdgePolicy?: (widget: {
64
+ start: number;
65
+ end: number;
66
+ kind: InlineNode['kind'];
67
+ }) => EdgePolicy | undefined;
68
+ /** Reading mode: island and ambient handling stand down wholesale, and the
69
+ * widget branch commits nothing (a selected-widget still selects). */
70
+ isReading: () => boolean;
71
+ /** The arrival side the typing seat consults; null when no arrival claimed one. */
72
+ getEdgeAffinity: () => EdgeAffinity | null;
73
+ /** The constructs a collapsed-caret toggle promised the next insertion. Read AND spent
74
+ * here: the first byte after the chord is the one insertion they were pending for. */
75
+ pendingMarks: PendingMarksState;
76
+ /** What this surface installs a rewrite as, so the seams read a candidate back the way it will
77
+ * be stored. Required: a cell answering `block` by silence would refuse its own text. */
78
+ installedAs: EdgeDeletionSurface;
79
+ }
80
+ export interface EdgePolicyDispatch {
81
+ /** A plain edge key against a caret-adjacent construct. Returns whether the event
82
+ * was consumed; a false return leaves the key to the shared keymap below. */
83
+ handleKeydown(e: KeyboardEvent, caretOffset: RawOffset | null): boolean;
84
+ /** The declared order `handleKeydown` walks, ids and reasons only. The ORDER is the seam
85
+ * (G4.12), so it is readable rather than something a test can only re-derive. */
86
+ readonly arms: readonly {
87
+ id: string;
88
+ reason: string;
89
+ }[];
90
+ }
91
+ export declare function createEdgePolicyDispatch(deps: EdgePolicyDispatchDeps): EdgePolicyDispatch;
@@ -0,0 +1,457 @@
1
+ /**
2
+ * The single caret-edge dispatch (G4.12): a plain Backspace/Delete or printable key at a caret
3
+ * edge in a prose block resolves against a declarative policy — the construct class's for an
4
+ * inline neighbour, the ancestor container's for a content-start key — never native
5
+ * contenteditable mutation, which would corrupt the atomic bytes those stand for.
6
+ */
7
+ import { resolvedInlineContent } from '../../../core/inline/inline-cache';
8
+ import { getContentRange } from '../../../core/inline';
9
+ import { getInlineWidgetEditing } from '../../../core/inline/inline-widgets';
10
+ import { trimTrailingLineEnding, trailingLineEnding } from '../../../core/lines';
11
+ import {} from '../../../cursor/coordinate-spaces';
12
+ import { hasSelection as hasSelectionHelper } from '../../../cursor/content-offsets';
13
+ import { landableRawBounds, revealsNoMarkers, screenVisibilityOf } from '../../../cursor/widget-offset';
14
+ import { ambientSpanOf } from '../../../ambient/ambient-dom';
15
+ import { recordIslandKeyScan } from '../../../perf/instruments';
16
+ import { caretIsInTextContent, hasModifier, isPlainTypingKey } from './click-snap-guard';
17
+ import { createMarkerCompletion } from './marker-completion';
18
+ import { resolveEdgeDeletion } from './construct-edge-delete';
19
+ import { hidesStructuralSuffix } from './hidden-suffix';
20
+ import { resolveEdgeSeat } from './edge-seat';
21
+ import { deleteRangeRaw } from './live-selection-edit';
22
+ import { resolveMarkedInsertion } from './pending-mark-insert';
23
+ import { widgetAtCursor } from './widget-adjacency';
24
+ const REPLACE_ISLAND_POLICY = {
25
+ onEdge: 'select',
26
+ deleteGranularity: 'select-then-delete'
27
+ };
28
+ const WIDGET_ISLAND_POLICY = { onEdge: 'step-over' };
29
+ export function createEdgePolicyDispatch(deps) {
30
+ const markerCompletion = createMarkerCompletion();
31
+ const arms = [
32
+ {
33
+ id: 'pending-marks',
34
+ reason: 'an explicit instruction about the very next byte, so it outranks every classification below, which decide by where the caret happens to be',
35
+ claims: handlePendingMarks
36
+ },
37
+ {
38
+ id: 'cst-widget',
39
+ reason: 'a key aimed at an atomic construct is the widget branch’s before any byte rule',
40
+ claims: handleCstWidget
41
+ },
42
+ {
43
+ id: 'reading-mode',
44
+ reason: 'islands and the ambient marker are destructive-only view guards, so reading skips every arm below; the widget arm above still selects, committing nothing',
45
+ cut: true,
46
+ claims: () => deps.isReading()
47
+ },
48
+ {
49
+ id: 'decoration-island',
50
+ reason: 'a view-only range with no on-screen bytes of its own to eat',
51
+ claims: handleIsland
52
+ },
53
+ {
54
+ id: 'ambient-marker',
55
+ reason: 'a selection into the ambient span blocks native delete silently, with no beforeinput',
56
+ claims: handleAmbient
57
+ },
58
+ // The four below claim only what would otherwise reach native editing or the block-merge
59
+ // command; the more specific families above still own a key aimed at one of theirs.
60
+ {
61
+ id: 'hidden-suffix-delete',
62
+ reason: 'the merge this press would reach concatenates past the block’s own hidden structure',
63
+ claims: handleHiddenSuffixDelete
64
+ },
65
+ {
66
+ id: 'construct-edge-delete',
67
+ reason: 'a destructive key beside an unpainted delimiter run takes content, never a marker',
68
+ claims: handleConstructEdgeDelete
69
+ },
70
+ {
71
+ id: 'marker-completion',
72
+ reason: 'the container re-emits this space itself, so writing it here would double it',
73
+ claims: handleMarkerCompletion
74
+ },
75
+ {
76
+ id: 'construct-seat',
77
+ reason: 'the DOM caret cannot express which side of a zero-width run a typed byte belongs on',
78
+ claims: handleConstructSeat
79
+ }
80
+ ];
81
+ function handleKeydown(e, caretOffset) {
82
+ for (const arm of arms) {
83
+ if (arm.claims(e, caretOffset))
84
+ return arm.cut !== true;
85
+ }
86
+ return false;
87
+ }
88
+ function inlinesOf(node) {
89
+ return resolvedInlineContent(node, deps.linkRef);
90
+ }
91
+ function display() {
92
+ return trimTrailingLineEnding(deps.node.raw);
93
+ }
94
+ /** One display-space rewrite, one CST commit. `caretBefore` anchors the undo entry, so it
95
+ * is the pre-edit caret — the rewrite's own start everywhere but the seats, which moved it. */
96
+ function writeDisplay(next, caretAfter, source, caretBefore) {
97
+ void deps.blockEdit.updateBlockContent(deps.index, next + trailingLineEnding(deps.node.raw), caretBefore, caretAfter);
98
+ deps.setPendingCursor(caretAfter, source, next);
99
+ }
100
+ function editDisplay(start, end, insert, source = 'island', caretBefore = start) {
101
+ const d = display();
102
+ writeDisplay(d.slice(0, start) + insert + d.slice(end), start + insert.length, source, caretBefore);
103
+ }
104
+ // ── The seams the arms below defer to ────────────────────────────────────
105
+ /**
106
+ * The rung a range rewrite can be asked about. Past the reading cut a surface revealing no
107
+ * marker is live, the one mode whose seam has unpainted runs to clean; every other rung takes
108
+ * the literal edit the engine would have written.
109
+ */
110
+ function joinSeamMode(el) {
111
+ return revealsNoMarkers(el) ? 'live' : undefined;
112
+ }
113
+ /** What the construct-edge rule (live-mode.md § 4.4) does with a destructive key here, or null
114
+ * where the surface paints its markers and the byte beside the caret is one the reader saw. */
115
+ function edgeDeletionAt(el, caret, direction) {
116
+ if (!revealsNoMarkers(el))
117
+ return null;
118
+ return resolveEdgeDeletion({
119
+ display: display(),
120
+ content: getContentRange(deps.node),
121
+ caret,
122
+ direction,
123
+ screen: screenVisibilityOf(el),
124
+ inlines: inlinesOf(deps.node),
125
+ installedAs: deps.installedAs
126
+ });
127
+ }
128
+ /** A press with no sound rewrite writes nothing: the engine's version would paint the
129
+ * delimiters the rule was hiding. */
130
+ function applyEdgeDeletion(deletion, caretBefore) {
131
+ if ('swallow' in deletion)
132
+ return;
133
+ writeDisplay(deletion.raw, deletion.caret, 'construct-delete', caretBefore);
134
+ }
135
+ /** Where a printable byte belongs when the caret sits at an unpainted delimiter run
136
+ * (live-mode.md § 4.2), or null when no run is touched and the caret's own offset stands. */
137
+ function typingSeatAt(el, caret, typed) {
138
+ if (!revealsNoMarkers(el))
139
+ return null;
140
+ return resolveEdgeSeat(caret, inlinesOf(deps.node), deps.getEdgeAffinity(), deps.node.raw, screenVisibilityOf(el), typed);
141
+ }
142
+ // ── CST inline widget ────────────────────────────────────────────────────
143
+ function handleCstWidget(e, caretOffset) {
144
+ if (deps.isRevealing())
145
+ return false;
146
+ if (caretOffset === null)
147
+ return false;
148
+ const node = deps.node;
149
+ // Forward keys enter the widget after the caret, backward keys the one before, so
150
+ // a caret between two adjacent widgets enters the one the key is aimed at.
151
+ const direction = e.key === 'ArrowRight' || e.key === 'Delete' ? 'forward' : 'backward';
152
+ const widgetAt = widgetAtCursor(caretOffset, inlinesOf(node), node.raw, direction);
153
+ if (!widgetAt)
154
+ return false;
155
+ // Unchorded only: a modifier makes the key a word-scoped platform command, and
156
+ // entering here would swap that word-step for the modal widget-selected state.
157
+ const plainEdgeKey = !e.shiftKey && !hasModifier(e);
158
+ const enterFromRight = plainEdgeKey && widgetAt.atRight && (e.key === 'ArrowLeft' || e.key === 'Backspace');
159
+ const enterFromLeft = plainEdgeKey && !widgetAt.atRight && (e.key === 'ArrowRight' || e.key === 'Delete');
160
+ if (enterFromRight || enterFromLeft) {
161
+ const isDestructive = e.key === 'Backspace' || e.key === 'Delete';
162
+ const policy = deps.widgetEdgePolicy?.(widgetAt) ?? getInlineWidgetEditing(widgetAt.kind);
163
+ // A step-over widget reads as one character to navigation, so decline and let
164
+ // native carry the caret across. Only navigation steps over; a destructive key
165
+ // still runs the atomic-delete branch below.
166
+ if (!isDestructive && policy?.onEdge === 'step-over')
167
+ return false;
168
+ e.preventDefault();
169
+ deps.setSnapTarget(null);
170
+ if (isDestructive && policy?.deleteGranularity === 'atomic' && !deps.isReading()) {
171
+ // One press takes the whole construct, anchored at the pre-delete caret so
172
+ // Ctrl+Z lands there.
173
+ const newRaw = node.raw.slice(0, widgetAt.start) + node.raw.slice(widgetAt.end);
174
+ void deps.blockEdit.updateBlockContent(deps.index, newRaw, caretOffset, widgetAt.start);
175
+ deps.setPendingCursor(widgetAt.start, 'widget');
176
+ return true;
177
+ }
178
+ // `onEdge: 'select'`, plus the reveal-capable kinds `enterWidget` routes to
179
+ // their source reveal instead.
180
+ deps.enterWidget(widgetAt, enterFromRight);
181
+ return true;
182
+ }
183
+ // Chromium inserts into a text node natively, but drops printable keys at
184
+ // element-level positions adjacent to a contenteditable=false widget.
185
+ const el = deps.getEl();
186
+ if (el &&
187
+ !caretIsInTextContent(el, window.getSelection()) &&
188
+ isPlainTypingKey(e) &&
189
+ !deps.isReading()) {
190
+ e.preventDefault();
191
+ deps.setSnapTarget(null);
192
+ const typed = e.key;
193
+ // This branch owns only the fact that the engine drops the key beside a widget; which
194
+ // side of an unpainted run the byte belongs on is still the seat's answer.
195
+ const seatedAt = typingSeatAt(el, caretOffset, typed)?.offset ?? caretOffset;
196
+ const newRaw = node.raw.slice(0, seatedAt) + typed + node.raw.slice(seatedAt);
197
+ const postEdit = seatedAt + typed.length;
198
+ void deps.blockEdit.updateBlockContent(deps.index, newRaw, caretOffset, postEdit);
199
+ deps.setPendingCursor(postEdit, 'widget', newRaw);
200
+ return true;
201
+ }
202
+ return false;
203
+ }
204
+ // ── Decoration island ────────────────────────────────────────────────────
205
+ function islandsInDom(el) {
206
+ recordIslandKeyScan();
207
+ const out = [];
208
+ for (const node of el.querySelectorAll('[data-decoration-island]')) {
209
+ const start = Number(node.dataset.sourceStart);
210
+ const end = Number(node.dataset.sourceEnd);
211
+ if (Number.isInteger(start) && Number.isInteger(end))
212
+ out.push({ start, end, el: node });
213
+ }
214
+ return out;
215
+ }
216
+ function islandPolicy(island) {
217
+ return island.end > island.start ? REPLACE_ISLAND_POLICY : WIDGET_ISLAND_POLICY;
218
+ }
219
+ function selectIslandWhole(el) {
220
+ const sel = window.getSelection();
221
+ if (!sel)
222
+ return;
223
+ const range = document.createRange();
224
+ range.selectNode(el);
225
+ sel.removeAllRanges();
226
+ sel.addRange(range);
227
+ }
228
+ function handleIsland(e, caretOffset) {
229
+ // Modifier chords stay native; the island rules own only the plain edge presses.
230
+ const isDestructive = !hasModifier(e) && (e.key === 'Backspace' || e.key === 'Delete');
231
+ const isTyping = isPlainTypingKey(e);
232
+ if (!isDestructive && !isTyping)
233
+ return false;
234
+ // Island-free blocks, the common case, skip the per-keystroke DOM scan entirely.
235
+ if (!deps.hasIslands())
236
+ return false;
237
+ const el = deps.getEl();
238
+ if (!el)
239
+ return false;
240
+ const islands = islandsInDom(el);
241
+ if (islands.length === 0)
242
+ return false;
243
+ // Second press: the native selection already wraps a replace island, so delete its
244
+ // whole hidden range through the CST as one undo entry.
245
+ if (isDestructive) {
246
+ const selection = deps.getRawSelection();
247
+ if (selection && selection.start < selection.end) {
248
+ const selected = islands.find((i) => islandPolicy(i).onEdge === 'select' &&
249
+ i.start === selection.start &&
250
+ i.end === selection.end);
251
+ if (selected) {
252
+ e.preventDefault();
253
+ editDisplay(selected.start, selected.end, '');
254
+ return true;
255
+ }
256
+ // A different non-empty selection — leave it to the normal delete paths.
257
+ return false;
258
+ }
259
+ }
260
+ if (caretOffset === null)
261
+ return false;
262
+ const contentLength = display().length;
263
+ // First press: selecting the whole island is the only visible thing to eat, since
264
+ // the range it hides has no on-screen bytes of its own.
265
+ if (isDestructive) {
266
+ const wantTrailingEdge = e.key === 'Backspace';
267
+ const target = islands.find((i) => islandPolicy(i).onEdge === 'select' &&
268
+ (wantTrailingEdge ? i.end === caretOffset : i.start === caretOffset));
269
+ if (target) {
270
+ e.preventDefault();
271
+ selectIslandWhole(target.el);
272
+ return true;
273
+ }
274
+ }
275
+ // A step-over island is transparent to the adjacent real byte; at a true block
276
+ // boundary there is none, so fall through and let block merge fire.
277
+ const widget = islands.find((i) => islandPolicy(i).onEdge === 'step-over' && i.start === caretOffset);
278
+ if (!widget)
279
+ return false;
280
+ const direction = e.key === 'Backspace' && caretOffset > 0
281
+ ? 'backward'
282
+ : e.key === 'Delete' && caretOffset < contentLength
283
+ ? 'forward'
284
+ : null;
285
+ if (direction !== null) {
286
+ e.preventDefault();
287
+ // The adjacent RAW byte is not always the adjacent real one: beside an unpainted
288
+ // delimiter run the construct-edge rule owns which byte a press takes (§ 4.4), and
289
+ // this arm outranks it, so it asks rather than splices.
290
+ const deletion = edgeDeletionAt(el, caretOffset, direction);
291
+ if (deletion)
292
+ applyEdgeDeletion(deletion, caretOffset);
293
+ else if (direction === 'backward')
294
+ editDisplay(caretOffset - 1, caretOffset, '');
295
+ else
296
+ editDisplay(caretOffset, caretOffset + 1, '');
297
+ return true;
298
+ }
299
+ // Cross-browser defence: some engines drop printable keys at an element-level caret
300
+ // adjacent to a contenteditable=false island. Chromium types natively, masking this
301
+ // branch in e2e, so it is unit-pinned instead.
302
+ if (isTyping && !caretIsInTextContent(el, window.getSelection())) {
303
+ e.preventDefault();
304
+ editDisplay(caretOffset, caretOffset, e.key);
305
+ return true;
306
+ }
307
+ return false;
308
+ }
309
+ // ── Ambient marker overlap ─────────────────────────────────────────────────
310
+ // A selection reaching into the contenteditable="false" ambient span blocks native
311
+ // Backspace/Delete silently — no beforeinput fires — so delete through the CST.
312
+ function handleAmbient(e) {
313
+ if (e.key !== 'Backspace' && e.key !== 'Delete')
314
+ return false;
315
+ if (!hasSelectionHelper())
316
+ return false;
317
+ const el = deps.getEl();
318
+ if (!el || deps.getAmbientLength() <= 0)
319
+ return false;
320
+ const ambient = ambientSpanOf(el);
321
+ const sel = window.getSelection();
322
+ const touchesAmbient = !!ambient &&
323
+ !!sel &&
324
+ sel.rangeCount > 0 &&
325
+ (ambient.contains(sel.anchorNode) || ambient.contains(sel.focusNode));
326
+ if (!touchesAmbient)
327
+ return false;
328
+ e.preventDefault();
329
+ const range = deps.getRawSelection();
330
+ if (range && range.start < range.end) {
331
+ // Consumed at KEYDOWN, so no `beforeinput` carries this range to the shared seam: the arm
332
+ // asks it here, or a literal splice prints the runs the cut stranded (live-mode.md § 4.5).
333
+ const edit = deleteRangeRaw(deps.node, range, joinSeamMode(el), deps.linkRef, deps.getAmbientPrefix?.() ?? '');
334
+ void deps.blockEdit.updateBlockContent(deps.index, edit.raw, range.start, edit.caret);
335
+ deps.setPendingCursor(edit.caret, 'ambient-delete');
336
+ }
337
+ return true;
338
+ }
339
+ // ── Hidden structural suffix ───────────────────────────────────────────────
340
+ /**
341
+ * Delete at the content end of a block whose own structure sits after it: the merge this press
342
+ * would reach concatenates past that suffix, so the press is consumed. The rule itself lives in
343
+ * `hidden-suffix.ts`; the command arm asks the same question from its own coordinates.
344
+ */
345
+ function handleHiddenSuffixDelete(e, caretOffset) {
346
+ if (e.key !== 'Delete')
347
+ return false;
348
+ if (e.shiftKey || hasModifier(e))
349
+ return false;
350
+ if (caretOffset === null || hasSelectionHelper())
351
+ return false;
352
+ if (caretOffset !== getContentRange(deps.node).end)
353
+ return false;
354
+ if (!hidesStructuralSuffix(deps.getEl(), deps.node, display().length))
355
+ return false;
356
+ e.preventDefault();
357
+ return true;
358
+ }
359
+ // ── Hidden construct edge (the destructive arm) ────────────────────────────
360
+ /**
361
+ * A plain Backspace/Delete against an inline construct's unpainted delimiter run: the rewrite
362
+ * takes the adjacent CONTENT character instead of a byte the reader never saw, plus the
363
+ * delimiters that leaves enclosing nothing (live-mode.md § 4.4).
364
+ */
365
+ function handleConstructEdgeDelete(e, caretOffset) {
366
+ if (e.key !== 'Backspace' && e.key !== 'Delete')
367
+ return false;
368
+ if (e.shiftKey || hasModifier(e))
369
+ return false;
370
+ if (caretOffset === null || hasSelectionHelper())
371
+ return false;
372
+ const el = deps.getEl();
373
+ if (!el)
374
+ return false;
375
+ // The landable start is visual column 0, where Backspace is a block gesture (merge or
376
+ // inert): an atomic run straddling the start would otherwise take the first visible
377
+ // glyph forward.
378
+ if (e.key === 'Backspace') {
379
+ const bounds = landableRawBounds(el, deps.getAmbientLength());
380
+ if (bounds && caretOffset <= bounds.start)
381
+ return false;
382
+ }
383
+ const deletion = edgeDeletionAt(el, caretOffset, e.key === 'Backspace' ? 'backward' : 'forward');
384
+ if (!deletion)
385
+ return false;
386
+ e.preventDefault();
387
+ deps.setSnapTarget(null);
388
+ applyEdgeDeletion(deletion, caretOffset);
389
+ return true;
390
+ }
391
+ // ── Pending marks (the toggle seat) ────────────────────────────────────────
392
+ /**
393
+ * A printable key while a collapsed-caret toggle has marks pending. Marks are the newer
394
+ * instruction about the same bytes, so they outrank the arrival side the seat below reads
395
+ * (live-mode.md § 4.2) and this arm runs first.
396
+ */
397
+ function handlePendingMarks(e, caretOffset) {
398
+ if (deps.isReading())
399
+ return false;
400
+ if (!isPlainTypingKey(e) || caretOffset === null || hasSelectionHelper())
401
+ return false;
402
+ // Locally sound like the seat below: only a surface that paints no delimiter can be asked
403
+ // to write one the user never sees. A mode flip clears the marks, so this strands nothing.
404
+ const el = deps.getEl();
405
+ if (!el || !revealsNoMarkers(el))
406
+ return false;
407
+ // Spend on the preconditions, not on the outcome: one insertion was promised the set,
408
+ // and this is it whether or not the rewrite below finds anything to do.
409
+ const marks = deps.pendingMarks.consume();
410
+ if (!marks)
411
+ return false;
412
+ const marked = resolveMarkedInsertion(display(), caretOffset, e.key, marks, inlinesOf(deps.node));
413
+ if (!marked)
414
+ return false;
415
+ e.preventDefault();
416
+ deps.setSnapTarget(null);
417
+ writeDisplay(marked.raw, marked.caret, 'pending-marks', caretOffset);
418
+ return true;
419
+ }
420
+ // ── Container marker completion ────────────────────────────────────────────
421
+ /**
422
+ * A bare space at the content start of an empty child whose container declares
423
+ * `contentStartSpace`. Consumed, not written: the container's `rebuildRaw` re-emits it the
424
+ * moment content arrives, so inserting it here would double the marker's own space. The
425
+ * claim is once per child; a later space at the same seat is content.
426
+ */
427
+ function handleMarkerCompletion(e, caretOffset) {
428
+ const bareSpace = e.key === ' ' && !e.shiftKey && !hasModifier(e);
429
+ if (!bareSpace || caretOffset === null || hasSelectionHelper())
430
+ return false;
431
+ if (!markerCompletion.claimSpace(deps.node, deps.containerParent, caretOffset))
432
+ return false;
433
+ e.preventDefault();
434
+ return true;
435
+ }
436
+ // ── Hidden construct edge (the typing seat) ────────────────────────────────
437
+ /**
438
+ * A printable key at an inline construct's unpainted delimiter run. Chromium canonicalizes a
439
+ * collapsed caret upstream across a non-rendered run, so the DOM caret cannot carry the answer
440
+ * and the byte is written through the CST at the offset the policy and arrival name.
441
+ */
442
+ function handleConstructSeat(e, caretOffset) {
443
+ if (!isPlainTypingKey(e) || caretOffset === null || hasSelectionHelper())
444
+ return false;
445
+ const el = deps.getEl();
446
+ const seat = el && typingSeatAt(el, caretOffset, e.key);
447
+ if (!seat)
448
+ return false;
449
+ e.preventDefault();
450
+ deps.setSnapTarget(null);
451
+ // The kind rides the trace: it names the construct whose hidden edge the caret sat at, the
452
+ // question this seam answered, so a trace line without it cannot be read.
453
+ editDisplay(seat.offset, seat.offset, e.key, `seat:${seat.kind}`, caretOffset);
454
+ return true;
455
+ }
456
+ return { handleKeydown, arms };
457
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Which side of a construct's unpainted marker run a typed byte belongs to: a run painted at zero
3
+ * width leaves one screen position naming two raw offsets. The kind's `edgeAffinity` policy answers
4
+ * first (a link never extends), the arrival affinity second — and the painter has the last word
5
+ * (live-mode.md § 2), since a seat that reads right can parse wrong.
6
+ */
7
+ import type { AnyInlineKind, InlineNode } from '../../../core/nodes';
8
+ import type { EdgeAffinity } from '../../../cursor/edge-affinity';
9
+ import { type VisibilityContext } from '../../../core/inline/visibility';
10
+ export interface EdgeSeat {
11
+ /** Raw offset the byte must be written at. */
12
+ offset: number;
13
+ /** The construct whose hidden edge the caret sat at, which need not be the one holding
14
+ * `offset`: a screen position reaches the runs abutting that construct's own. */
15
+ kind: AnyInlineKind;
16
+ }
17
+ /**
18
+ * Where `typed` belongs when the caret sits at `caretOffset`, or null when the offset touches no
19
+ * construct marker run, the kind declares no policy, or no candidate earns the write. Declining is
20
+ * the honest fallback: the byte then lands at the caret, which is what the engine writes anyway.
21
+ */
22
+ export declare function resolveEdgeSeat(caretOffset: number, inlines: readonly InlineNode[], affinity: EdgeAffinity | null, raw: string, screen: VisibilityContext, typed: string): EdgeSeat | null;
23
+ /**
24
+ * The bytes a COMPOSITION commit should have written. `insertCompositionText` beforeinput is not
25
+ * cancelable, so the seat cannot intercept the keystroke and relocates the composed run once, on
26
+ * the commit that lands it. Null leaves the read as-is.
27
+ */
28
+ export declare function relocateComposedRun(before: string, after: string, composedAt: number, inlines: readonly InlineNode[], affinity: EdgeAffinity | null, screen: VisibilityContext): {
29
+ raw: string;
30
+ caret: number;
31
+ } | null;
32
+ /** The text a commit's read added at `at`, or null when the read is not a plain insertion
33
+ * there — a composition over a selection is a range op, and no seat claims a range. */
34
+ export declare function plainInsertionAt(before: string, after: string, at: number): string | null;
35
+ /**
36
+ * Every raw offset the caret's screen position ADMITS — the seat's whole reach, and empty where no
37
+ * marker run touches the caret. A hidden run's hidden neighbours name the same position, so the
38
+ * stretch of abutting runs is one position and each boundary in it is a seat; an offset inside a
39
+ * run's own bytes is inside some construct's delimiters, which is where no byte belongs. A caret
40
+ * strictly inside a run is one such offset, so the reach can exclude the caret it was asked about.
41
+ */
42
+ export declare function seatOffsetsAt(caretOffset: number, inlines: readonly InlineNode[], raw: string, screen: VisibilityContext): readonly number[];