@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,33 @@
1
+ import { type AmbientPrefix } from '../../../block-component';
2
+ import type { DocumentView, NodeView } from '../../../core/node-views';
3
+ import type { EditorRects } from '../../../editor-rects';
4
+ import { type CommandId } from '../../../schema/commands';
5
+ type $$ComponentProps = {
6
+ node: NodeView;
7
+ index: number;
8
+ myPath?: number[];
9
+ blockClass?: string;
10
+ ambientPrefix?: AmbientPrefix;
11
+ document?: DocumentView;
12
+ rects?: EditorRects;
13
+ };
14
+ declare const TextEditableBlock: import("svelte").Component<$$ComponentProps, {
15
+ editable: true;
16
+ focusable: true;
17
+ focus: (offset: number) => void;
18
+ parkCaret: (offset: number) => void;
19
+ focusAtColumn: (x: number, from: import("../../../block-component").StickyColumnDirection) => void;
20
+ getCursorOffset: () => number | null;
21
+ getSelectedText: () => string;
22
+ setSelection: (start: number, end: number) => void;
23
+ measurePartialRects: (startOffset: number, endOffset: number) => DOMRect[];
24
+ isVerticallyTransparent: () => boolean;
25
+ enterEdgeWidget: (side: "start" | "end") => boolean;
26
+ claimRootClipboard: (event: ClipboardEvent) => void;
27
+ insertMarkdown: (md: string) => boolean;
28
+ snapCaretToPoint: (clientX: number, clientY: number) => void;
29
+ runCommand: (id: CommandId, arg?: unknown) => boolean;
30
+ isCommandActive: (id: CommandId) => boolean;
31
+ }, "">;
32
+ type TextEditableBlock = ReturnType<typeof TextEditableBlock>;
33
+ export default TextEditableBlock;
@@ -0,0 +1,8 @@
1
+ /** Native-vs-synthetic caret and plain-key guards shared across the text surface. */
2
+ /** Caret in a real text node the reader can see: the native caret renders there, so the
3
+ * synthetic indicator stands down. Hidden marker text renders nothing, so it does not count. */
4
+ export declare function caretIsInTextContent(el: HTMLElement, sel: Selection | null): boolean;
5
+ /** Ctrl/meta/alt held — a platform command, never an edit of the byte beside the caret. */
6
+ export declare function hasModifier(e: KeyboardEvent): boolean;
7
+ /** A typed character: no modifier chord, one code point. A chord is a command instead. */
8
+ export declare function isPlainTypingKey(e: KeyboardEvent): boolean;
@@ -0,0 +1,19 @@
1
+ /** Native-vs-synthetic caret and plain-key guards shared across the text surface. */
2
+ import { isCharacterKey } from '../../../schema/keybindings';
3
+ import { isHiddenMarkerText } from '../../../cursor/widget-offset';
4
+ /** Caret in a real text node the reader can see: the native caret renders there, so the
5
+ * synthetic indicator stands down. Hidden marker text renders nothing, so it does not count. */
6
+ export function caretIsInTextContent(el, sel) {
7
+ if (!sel || sel.rangeCount === 0)
8
+ return false;
9
+ const node = sel.getRangeAt(0).startContainer;
10
+ return node.nodeType === Node.TEXT_NODE && el.contains(node) && !isHiddenMarkerText(node, el);
11
+ }
12
+ /** Ctrl/meta/alt held — a platform command, never an edit of the byte beside the caret. */
13
+ export function hasModifier(e) {
14
+ return e.ctrlKey || e.metaKey || e.altKey;
15
+ }
16
+ /** A typed character: no modifier chord, one code point. A chord is a command instead. */
17
+ export function isPlainTypingKey(e) {
18
+ return !hasModifier(e) && isCharacterKey(e.key);
19
+ }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * One composition's worth of seat inputs, captured at `compositionstart`. Both inputs the commit's
3
+ * relocation needs — the arrival side and the pending marks — belong to the caret the composition
4
+ * OPENED at, and the affinity re-arm has spent them by the time the composed run arrives.
5
+ */
6
+ import type { InlineNode } from '../../../core/nodes';
7
+ import type { VisibilityContext } from '../../../core/inline/visibility';
8
+ import type { EdgeAffinity } from '../../../cursor/edge-affinity';
9
+ import type { InlineMarkKind } from '../../../schema/inline-construct-policy';
10
+ export interface CompositionSeatDeps {
11
+ /** The block's display bytes — what a commit's read is compared against. */
12
+ getDisplayText: () => string;
13
+ getInlines: () => readonly InlineNode[];
14
+ getAffinity: () => EdgeAffinity | null;
15
+ /** How the surface reads on screen, for the seat's own painted-range question. */
16
+ getScreen: () => VisibilityContext;
17
+ /** Spend the pending marks: a composition is the one insertion they were promised to. */
18
+ consumePendingMarks: () => ReadonlySet<InlineMarkKind> | null;
19
+ /** Give them back when the composition committed nothing — an IME cancel inserts no run, so
20
+ * the promise is still owed. Required, so both surfaces answer for it alike. */
21
+ restorePendingMarks: (marks: ReadonlySet<InlineMarkKind>) => void;
22
+ /** The block's live selection, read at compositionstart: composing over one is a range op no
23
+ * plain-insertion arm claims, so it routes to `resolveRangeEdit`. Omit to keep ranges verbatim. */
24
+ getRawSelection?: () => {
25
+ start: number;
26
+ end: number;
27
+ } | null;
28
+ /** The surface's join-seam resolution for a range replace, in display bytes; null keeps the
29
+ * engine's own edit — the same decline contract as the keydown selection-edit arm. */
30
+ resolveRangeEdit?: (range: {
31
+ start: number;
32
+ end: number;
33
+ }, typed: string) => {
34
+ raw: string;
35
+ caret: number;
36
+ } | null;
37
+ }
38
+ export interface CompositionSeat {
39
+ /** Capture the window the composition opened in. Call BEFORE the surface's own
40
+ * `compositionstart`, whose cross-block half clears the affinity, and before the first
41
+ * mid-composition `input`, which re-arms it to the typed side. */
42
+ noteStart(): void;
43
+ /** The bytes the commit should write, or null to keep the DOM read verbatim. */
44
+ relocate(after: string, composedAt: number): {
45
+ raw: string;
46
+ caret: number;
47
+ } | null;
48
+ noteEnd(): void;
49
+ }
50
+ export declare function createCompositionSeat(deps: CompositionSeatDeps): CompositionSeat;
@@ -0,0 +1,65 @@
1
+ /**
2
+ * One composition's worth of seat inputs, captured at `compositionstart`. Both inputs the commit's
3
+ * relocation needs — the arrival side and the pending marks — belong to the caret the composition
4
+ * OPENED at, and the affinity re-arm has spent them by the time the composed run arrives.
5
+ */
6
+ import { plainInsertionAt, relocateComposedRun } from './edge-seat';
7
+ import { resolveMarkedInsertion } from './pending-mark-insert';
8
+ export function createCompositionSeat(deps) {
9
+ // A single nullable capture rather than a stack: the window is compositionstart → the one
10
+ // commit compositionend drives.
11
+ let started = null;
12
+ return {
13
+ noteStart: () => {
14
+ started = {
15
+ before: deps.getDisplayText(),
16
+ affinity: deps.getAffinity(),
17
+ marks: deps.consumePendingMarks(),
18
+ range: deps.getRawSelection?.() ?? null,
19
+ committed: false
20
+ };
21
+ },
22
+ relocate: (after, composedAt) => {
23
+ if (started === null)
24
+ return null;
25
+ started.committed = true;
26
+ // A selection at the window's open makes this a range replace: the plain arms below
27
+ // cannot claim it, and the engine's literal replace strands the runs the range crossed.
28
+ if (started.range && started.range.start < started.range.end) {
29
+ const typed = replacedRangeInsertion(started.before, after, started.range);
30
+ if (typed === null)
31
+ return null;
32
+ return deps.resolveRangeEdit?.(started.range, typed) ?? null;
33
+ }
34
+ // Marks beat the arrival side (live-mode.md § 4.2): a toggle is the newer instruction about the
35
+ // same bytes, so the affinity only answers when nothing was pending.
36
+ if (started.marks) {
37
+ const composed = plainInsertionAt(started.before, after, composedAt);
38
+ const marked = composed === null
39
+ ? null
40
+ : resolveMarkedInsertion(started.before, composedAt, composed, started.marks, deps.getInlines());
41
+ if (marked)
42
+ return marked;
43
+ }
44
+ return relocateComposedRun(started.before, after, composedAt, deps.getInlines(), started.affinity, deps.getScreen());
45
+ },
46
+ noteEnd: () => {
47
+ if (started && !started.committed && started.marks) {
48
+ deps.restorePendingMarks(started.marks);
49
+ }
50
+ started = null;
51
+ }
52
+ };
53
+ }
54
+ /** The run the commit's read put over `range`, or null when the read is not a replacement of
55
+ * exactly that span — then nothing here knows what the engine did, and verbatim is honest. */
56
+ function replacedRangeInsertion(before, after, range) {
57
+ const length = after.length - before.length + (range.end - range.start);
58
+ if (length < 0 || range.end > before.length)
59
+ return null;
60
+ if (after.slice(0, range.start) !== before.slice(0, range.start))
61
+ return null;
62
+ if (after.slice(range.start + length) !== before.slice(range.end))
63
+ return null;
64
+ return after.slice(range.start, range.start + length);
65
+ }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * What a destructive key takes at an inline construct's unpainted delimiter run: the adjacent
3
+ * CONTENT character, plus the delimiters the cut leaves enclosing nothing (live-mode.md § 4.4
4
+ * `autoUnwrapOnEmpty`). Bytes that read right can parse wrong, so a candidate is written only once
5
+ * a re-parse says the reader lost exactly what the cut aimed at.
6
+ */
7
+ import { type ContentRange } from '../../../core/inline';
8
+ import { type VisibilityContext } from '../../../core/inline/visibility';
9
+ import type { InlineNode } from '../../../core/nodes';
10
+ export type DeleteDirection = 'backward' | 'forward';
11
+ /** Named fields rather than a positional row: `display`, the two ranges and the caret are all
12
+ * offsets into the same string, and a swapped pair would type-check. */
13
+ export interface EdgeDeletionQuery {
14
+ /** The block's display bytes — its raw without the trailing line ending. */
15
+ display: string;
16
+ /** The bytes the block's own kind calls content; a cut never reaches past them. */
17
+ content: ContentRange;
18
+ caret: number;
19
+ direction: DeleteDirection;
20
+ /** How the block reads on screen. Required, so a second caller cannot inherit the hiding
21
+ * assumption by silence. */
22
+ screen: VisibilityContext;
23
+ /** The inline tree the render painted from, so the runs skipped here are the runs hidden. */
24
+ inlines: readonly InlineNode[];
25
+ /** What the caller installs the rewrite as, which is what the candidate is read back as.
26
+ * Required for the same reason `screen` is: a cell's text is never a block. */
27
+ installedAs: EdgeDeletionSurface;
28
+ }
29
+ /** A prose surface installs a block; a table cell installs cell text, whose bytes read as a list or
30
+ * a quote the moment they open with `- ` or `> ` though the cell paints neither. */
31
+ export type EdgeDeletionSurface = 'block' | 'cell';
32
+ export interface EdgeDeletionWrite {
33
+ /** The block's whole display bytes after the cut. */
34
+ raw: string;
35
+ caret: number;
36
+ }
37
+ /** The press is this arm's but no rewrite parses back: taking nothing is the only answer that
38
+ * keeps the markers off screen, since the engine's version paints them. */
39
+ export interface EdgeDeletionSwallow {
40
+ swallow: true;
41
+ }
42
+ export type EdgeDeletion = EdgeDeletionWrite | EdgeDeletionSwallow;
43
+ /**
44
+ * What a destructive key at `caret` does, or null when the press is not this arm's — nothing
45
+ * content-side of the caret, or a cut with no hidden run beside it, which the engine gets right.
46
+ */
47
+ export declare function resolveEdgeDeletion(query: EdgeDeletionQuery): EdgeDeletion | null;
@@ -0,0 +1,164 @@
1
+ /**
2
+ * What a destructive key takes at an inline construct's unpainted delimiter run: the adjacent
3
+ * CONTENT character, plus the delimiters the cut leaves enclosing nothing (live-mode.md § 4.4
4
+ * `autoUnwrapOnEmpty`). Bytes that read right can parse wrong, so a candidate is written only once
5
+ * a re-parse says the reader lost exactly what the cut aimed at.
6
+ */
7
+ import { constructContentRange, inlineDescendants, parseInline } from '../../../core/inline';
8
+ import { CONTENT_VISIBILITY, renderedText } from '../../../core/inline/visibility';
9
+ import { getInlineConstructPolicy } from '../../../schema/inline-construct-policy';
10
+ import { removesExactly, soleProseReparse } from './screen-diff';
11
+ /**
12
+ * What a destructive key at `caret` does, or null when the press is not this arm's — nothing
13
+ * content-side of the caret, or a cut with no hidden run beside it, which the engine gets right.
14
+ */
15
+ export function resolveEdgeDeletion(query) {
16
+ // Painted delimiters are bytes the reader saw, so no run here is this arm's to protect and the
17
+ // license to drop one (live-mode.md § 2) does not reach: the press is the engine's. Every
18
+ // oracle call below is past this gate, which is why they can all take the content reading.
19
+ if (query.screen.chromePaints)
20
+ return null;
21
+ const { display, content, caret, direction } = query;
22
+ const constructs = policyConstructs(query.inlines);
23
+ const target = deletionTarget(display, constructs, content, caret, direction);
24
+ if (!target)
25
+ return null;
26
+ // The adjacency that decides is the deleted SPAN's, not the caret's: the engine deletes from
27
+ // where the byte is. With no run beside the cut the press stays with the engine, which owns
28
+ // grapheme and IME behavior.
29
+ const plain = expandThroughEmptied(constructs, target);
30
+ const native = nativeCut(caret, direction);
31
+ const touchesHiddenRun = isDelimiterByte(constructs, target.start - 1) || isDelimiterByte(constructs, target.end);
32
+ if (!touchesHiddenRun && plain.start === native.start && plain.end === native.end)
33
+ return null;
34
+ const before = visibleText(display, query.installedAs);
35
+ if (before === null)
36
+ return null;
37
+ const removed = target.atomic
38
+ ? renderedText([target.atomic], display, CONTENT_VISIBILITY)
39
+ : display.slice(target.start, target.end);
40
+ for (const cut of [plain, widenThroughRuns(constructs, plain)]) {
41
+ const raw = display.slice(0, cut.start) + display.slice(cut.end);
42
+ const after = visibleText(raw, query.installedAs);
43
+ if (after === null || !removesExactly(before, after, removed))
44
+ continue;
45
+ // Backward lands where the cut opened; forward keeps the caret where it was, which the cut
46
+ // only moves when it swallowed delimiters ahead of it.
47
+ return { raw, caret: direction === 'backward' ? cut.start : Math.min(caret, cut.start) };
48
+ }
49
+ return { swallow: true };
50
+ }
51
+ function nativeCut(caret, direction) {
52
+ return direction === 'backward'
53
+ ? { start: caret - 1, end: caret }
54
+ : { start: caret, end: caret + 1 };
55
+ }
56
+ /**
57
+ * The first thing the reader can see on `direction`'s side of the caret: delimiter bytes are
58
+ * stepped over, an atomic run is taken whole, and the walk stops at the content range because the
59
+ * block's own structural bytes are not this arm's to touch.
60
+ */
61
+ function deletionTarget(display, constructs, content, caret, direction) {
62
+ const step = direction === 'backward' ? -1 : 1;
63
+ for (let at = direction === 'backward' ? caret - 1 : caret; at >= content.start && at < content.end; at += step) {
64
+ const atomic = constructs.find((c) => !c.content && covers(c.node, at));
65
+ if (atomic)
66
+ return { start: atomic.node.start, end: atomic.node.end, atomic: atomic.node };
67
+ if (!isDelimiterByte(constructs, at))
68
+ return { ...codePointAt(display, at), atomic: null };
69
+ }
70
+ return null;
71
+ }
72
+ /** The whole code point `at` belongs to. Half a surrogate pair is not a character, and this arm
73
+ * claims presses beside a hidden run wherever they land — emoji included. */
74
+ function codePointAt(display, at) {
75
+ const start = isLowSurrogate(display, at) && isHighSurrogate(display, at - 1) ? at - 1 : at;
76
+ return { start, end: isHighSurrogate(display, start) ? start + 2 : start + 1 };
77
+ }
78
+ function isHighSurrogate(display, at) {
79
+ const code = display.charCodeAt(at);
80
+ return code >= 0xd800 && code <= 0xdbff;
81
+ }
82
+ function isLowSurrogate(display, at) {
83
+ const code = display.charCodeAt(at);
84
+ return code >= 0xdc00 && code <= 0xdfff;
85
+ }
86
+ /**
87
+ * The second reading of a press whose plain cut does not parse back: take the delimiter runs the
88
+ * cut now sits between with it, the "these two constructs become one" a reader sees when the
89
+ * character between them goes. Verified against the SCREEN, not the structure.
90
+ */
91
+ function widenThroughRuns(constructs, cut) {
92
+ let { start, end } = cut;
93
+ while (isDelimiterByte(constructs, start - 1))
94
+ start--;
95
+ while (isDelimiterByte(constructs, end))
96
+ end++;
97
+ return { start, end };
98
+ }
99
+ /** A pair left around nothing is invisible residue, so a construct the cut empties goes with it —
100
+ * repeatedly, since dropping the inner pair can empty its parent. */
101
+ function expandThroughEmptied(constructs, target) {
102
+ const cut = { start: target.start, end: target.end };
103
+ let grew = true;
104
+ while (grew) {
105
+ grew = false;
106
+ for (const { node, content, autoUnwrapOnEmpty } of constructs) {
107
+ if (!autoUnwrapOnEmpty || !content)
108
+ continue;
109
+ if (content.start < cut.start || content.end > cut.end)
110
+ continue;
111
+ if (node.start >= cut.start && node.end <= cut.end)
112
+ continue;
113
+ cut.start = Math.min(cut.start, node.start);
114
+ cut.end = Math.max(cut.end, node.end);
115
+ grew = true;
116
+ }
117
+ }
118
+ return cut;
119
+ }
120
+ /** Only kinds the policy table names take part: an unpolicied construct's bytes are read as
121
+ * ordinary content, which is what native already treats them as. */
122
+ function policyConstructs(inlines) {
123
+ const found = [];
124
+ for (const node of inlineDescendants(inlines)) {
125
+ const policy = getInlineConstructPolicy(node.kind);
126
+ if (!policy)
127
+ continue;
128
+ found.push({
129
+ node,
130
+ content: constructContentRange(node),
131
+ autoUnwrapOnEmpty: policy.autoUnwrapOnEmpty
132
+ });
133
+ }
134
+ return found;
135
+ }
136
+ function covers(node, at) {
137
+ return at >= node.start && at < node.end;
138
+ }
139
+ function isDelimiterByte(constructs, at) {
140
+ return constructs.some(({ node, content }) => content !== null &&
141
+ ((at >= node.start && at < content.start) || (at >= content.end && at < node.end)));
142
+ }
143
+ // ── Verification ─────────────────────────────────────────────────────────────
144
+ /**
145
+ * What a reader sees, asked of the thing that paints it, over the bytes read back the way `surface`
146
+ * installs them — null where they do not read back at all. The content reading, not the block's
147
+ * own: a cut that empties a construct folds its chrome into view, and the diff would read that
148
+ * arrival as bytes lost; sound because the painting-chrome case returned at the door.
149
+ */
150
+ function visibleText(raw, surface) {
151
+ // Cell text is never a block, so it reads as its inline content and nothing else can refuse it.
152
+ if (surface === 'cell')
153
+ return renderedText(parseInline(raw, 0, raw.length), raw, CONTENT_VISIBILITY);
154
+ // A cut that empties the block is the one candidate with no block to read: emptied is a shape
155
+ // the reload keeps, so it answers for itself rather than through the parser.
156
+ if (raw === '')
157
+ return '';
158
+ // A candidate that re-reads as another block is not what the caller is about to install: a cut
159
+ // can abut two literal runs into a fence opener, which on reload swallows every block below.
160
+ const sole = soleProseReparse(raw);
161
+ if (sole === null)
162
+ return null;
163
+ return renderedText(sole.nodes, sole.block.raw, CONTENT_VISIBILITY);
164
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * preview-inline's construct-reveal trigger: an inline construct's markers stay CSS-hidden until
3
+ * the caret enters its INCLUSIVE `[start, end]`, revealing the whole enclosing chain. Reveal is a
4
+ * class flip on `data-construct-*` spans, so the DOM text never changes and raw offsets survive it
5
+ * (spec: the preview-inline-affinity e2e requirement).
6
+ */
7
+ import type { InlineNode } from '../../../core/nodes';
8
+ import type { NodeView } from '../../../core/node-views';
9
+ import type { PresentationMode } from '../../../presentation-mode';
10
+ import type { LinkReferenceResolverRef } from '../../../editor-keys';
11
+ /**
12
+ * Every revealable construct whose inclusive `[start, end]` contains `offset`, outermost
13
+ * first; at a boundary shared by adjacent siblings both are collected.
14
+ */
15
+ export declare function constructChainAtOffset(nodes: InlineNode[], offset: number): InlineNode[];
16
+ export interface ConstructRevealDeps {
17
+ get node(): NodeView;
18
+ get linkRef(): LinkReferenceResolverRef | undefined;
19
+ getEl: () => HTMLElement | null;
20
+ getAmbientLength: () => number;
21
+ getPresentationMode: () => PresentationMode;
22
+ /** Cross-block selections freeze the reveal state, so a sweep anchored in revealed
23
+ * marker text keeps its layout. */
24
+ isCrossBlock: () => boolean;
25
+ }
26
+ export interface ConstructReveal {
27
+ /** Re-evaluate the caret chain and flip marker classes to match. `force` after a
28
+ * rebuild: fresh spans carry no reveal class even on an unchanged chain key. */
29
+ update(force?: boolean): void;
30
+ /** Synchronous keydown backstop, reveal-only: Chromium prioritizes input events over
31
+ * normal tasks, so rapid arrows outrun the selectionchange reveal and would step
32
+ * against still-folded markers. Reveals the caret's chain plus `delta`'s (0 = neither). */
33
+ prepareStep(delta: -1 | 0 | 1): void;
34
+ /** Keydown wiring for `prepareStep`. Owns the key vocabulary so the component stays
35
+ * free of destructive-key literals, which G4.12 scans for as interceptor shape;
36
+ * this module holds no preventDefault and consumes nothing. */
37
+ prepareForKeydown(e: KeyboardEvent): void;
38
+ }
39
+ export declare function createConstructReveal(deps: ConstructRevealDeps): ConstructReveal;
@@ -0,0 +1,164 @@
1
+ /**
2
+ * preview-inline's construct-reveal trigger: an inline construct's markers stay CSS-hidden until
3
+ * the caret enters its INCLUSIVE `[start, end]`, revealing the whole enclosing chain. Reveal is a
4
+ * class flip on `data-construct-*` spans, so the DOM text never changes and raw offsets survive it
5
+ * (spec: the preview-inline-affinity e2e requirement).
6
+ */
7
+ import { tick } from 'svelte';
8
+ import { inlineDescendants } from '../../../core/inline';
9
+ import { resolvedInlineContent } from '../../../core/inline/inline-cache';
10
+ import { isRevealableInlineKind } from '../../../schema/inline-construct-policy';
11
+ import { toClampedRawOffset } from '../../../cursor/coordinate-spaces';
12
+ import { CONSTRUCT_REVEAL_CLASS, domTextOffsetAtNode } from '../../../cursor/widget-offset';
13
+ import { isInteractionTraceEnabled, traceRevealOpen, traceRevealFold } from '../../../debug/interaction-trace';
14
+ // ── Chain math (pure) ────────────────────────────────────────────────────────
15
+ /**
16
+ * Every revealable construct whose inclusive `[start, end]` contains `offset`, outermost
17
+ * first; at a boundary shared by adjacent siblings both are collected.
18
+ */
19
+ export function constructChainAtOffset(nodes, offset) {
20
+ // A child lies inside its parent's range, so a node that misses the offset prunes its subtree.
21
+ const holds = (node) => offset >= node.start && offset <= node.end;
22
+ const chain = [];
23
+ for (const node of inlineDescendants(nodes, holds)) {
24
+ if (holds(node) && isRevealableInlineKind(node.kind))
25
+ chain.push(node);
26
+ }
27
+ return chain;
28
+ }
29
+ export function createConstructReveal(deps) {
30
+ // Span refs go stale on rebuild: removing a class from a detached span is a harmless
31
+ // no-op, and `force` re-resolves against the fresh DOM.
32
+ let appliedChain = [];
33
+ let appliedSpans = [];
34
+ let appliedKey = '';
35
+ let foldRecheckQueued = false;
36
+ function chainKey(chain) {
37
+ return chain.map((n) => `${n.start}:${n.end}`).join(',');
38
+ }
39
+ /** Caret raw offset while the mode is on and the caret sits in this block. */
40
+ function caretOffset() {
41
+ const el = deps.getEl();
42
+ if (!el || deps.getPresentationMode() !== 'preview-inline')
43
+ return null;
44
+ const sel = window.getSelection();
45
+ if (!sel || sel.rangeCount === 0 || !sel.focusNode || !el.contains(sel.focusNode))
46
+ return null;
47
+ return toClampedRawOffset(domTextOffsetAtNode(el, sel.focusNode, sel.focusOffset), deps.getAmbientLength());
48
+ }
49
+ function inlines() {
50
+ return resolvedInlineContent(deps.node, deps.linkRef);
51
+ }
52
+ const toEntry = (n) => ({ kind: n.kind, start: n.start, end: n.end });
53
+ /** The chain the current selection asks for; [] when nothing contains the caret. */
54
+ function evaluateChain() {
55
+ const offset = caretOffset();
56
+ if (offset === null)
57
+ return [];
58
+ return constructChainAtOffset(inlines(), offset).map(toEntry);
59
+ }
60
+ function traceTransitions(prev, next) {
61
+ if (!isInteractionTraceEnabled())
62
+ return;
63
+ const id = (n) => `${n.kind}:${n.start}-${n.end}`;
64
+ const prevIds = new Set(prev.map(id));
65
+ const nextIds = new Set(next.map(id));
66
+ for (const n of next)
67
+ if (!prevIds.has(id(n)))
68
+ traceRevealOpen('construct', id(n));
69
+ for (const n of prev)
70
+ if (!nextIds.has(id(n)))
71
+ traceRevealFold('caret-exit', id(n));
72
+ }
73
+ function apply(chain, key) {
74
+ const el = deps.getEl();
75
+ const next = [];
76
+ if (el) {
77
+ for (const node of chain) {
78
+ const spans = el.querySelectorAll(`[data-construct-start="${node.start}"][data-construct-end="${node.end}"]`);
79
+ for (const span of spans) {
80
+ span.classList.add(CONSTRUCT_REVEAL_CLASS);
81
+ next.push(span);
82
+ }
83
+ }
84
+ }
85
+ for (const span of appliedSpans) {
86
+ if (!next.includes(span))
87
+ span.classList.remove(CONSTRUCT_REVEAL_CLASS);
88
+ }
89
+ traceTransitions(appliedChain, chain);
90
+ appliedChain = chain;
91
+ appliedSpans = next;
92
+ appliedKey = key;
93
+ }
94
+ // A fold to no chain must survive a tick: cross-block entry clears the native selection
95
+ // before the cross-block flag flips, manufacturing a transient fold-shaped state.
96
+ function queueFoldRecheck() {
97
+ if (foldRecheckQueued)
98
+ return;
99
+ foldRecheckQueued = true;
100
+ void (async () => {
101
+ try {
102
+ await tick();
103
+ }
104
+ finally {
105
+ foldRecheckQueued = false;
106
+ }
107
+ if (deps.isCrossBlock())
108
+ return;
109
+ const chain = evaluateChain();
110
+ if (chain.length === 0 && appliedKey !== '')
111
+ apply([], '');
112
+ })();
113
+ }
114
+ function update(force = false) {
115
+ if (deps.isCrossBlock())
116
+ return;
117
+ const chain = evaluateChain();
118
+ const key = chainKey(chain);
119
+ if (force) {
120
+ apply(chain, key);
121
+ return;
122
+ }
123
+ if (key === appliedKey)
124
+ return;
125
+ if (key === '') {
126
+ queueFoldRecheck();
127
+ return;
128
+ }
129
+ apply(chain, key);
130
+ }
131
+ function prepareStep(delta) {
132
+ if (deps.isCrossBlock())
133
+ return;
134
+ const offset = caretOffset();
135
+ if (offset === null)
136
+ return;
137
+ const tree = inlines();
138
+ const chain = constructChainAtOffset(tree, offset).map(toEntry);
139
+ if (delta !== 0) {
140
+ for (const n of constructChainAtOffset(tree, offset + delta)) {
141
+ if (!chain.some((c) => c.start === n.start && c.end === n.end))
142
+ chain.push(toEntry(n));
143
+ }
144
+ }
145
+ // Reveal-only: any fold an empty union implies belongs to the selection cadence.
146
+ if (chain.length === 0)
147
+ return;
148
+ const key = chainKey(chain);
149
+ if (key === appliedKey)
150
+ return;
151
+ apply(chain, key);
152
+ }
153
+ function prepareForKeydown(e) {
154
+ if (e.ctrlKey || e.metaKey || e.altKey)
155
+ return;
156
+ if (e.key === 'ArrowRight')
157
+ prepareStep(1);
158
+ else if (e.key === 'ArrowLeft')
159
+ prepareStep(-1);
160
+ else if (e.key === 'Backspace' || e.key === 'Delete')
161
+ prepareStep(0);
162
+ }
163
+ return { update, prepareStep, prepareForKeydown };
164
+ }