@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,144 @@
1
+ /**
2
+ * What a marker-hiding mode leaves on screen. `inline-render.ts` decides which bytes become which
3
+ * span; this decides which of those spans the reader sees, and it is the one home for that rule:
4
+ * the DOM walk (`cursor/widget-offset.ts`) is its other consumer, in the space that has a caret.
5
+ * The two answers are held together by `test/invariants/screen-truth.property.test.ts`, not by
6
+ * convention. Context vocabulary: `docs/design/live-mode.md` § 2.
7
+ */
8
+ import { renderInlineNodes } from '../inline-render';
9
+ import { widgetSourceRange } from './inline-widgets';
10
+ import {} from '../../presentation-mode';
11
+ const FAMILY_CLASS = {
12
+ marker: 'md-marker',
13
+ 'fence-line': 'md-fence-line',
14
+ 'ref-label': 'md-ref-label'
15
+ };
16
+ /** Every family at once, for a caller reading spans back out of a rendered fragment. */
17
+ export const MARKER_FAMILY_SELECTOR = Object.values(FAMILY_CLASS)
18
+ .map((cls) => `.${cls}`)
19
+ .join(', ');
20
+ /**
21
+ * The family `el` belongs to, or null for anything else. A `contenteditable="false"` marker is
22
+ * the ambient prefix island, which keeps its box in every mode (`ambient/ambient-cursor.ts`), so
23
+ * it belongs to no family.
24
+ */
25
+ export function markerFamilyOf(el) {
26
+ const classes = el.classList;
27
+ if (classes.contains(FAMILY_CLASS.marker)) {
28
+ return el.getAttribute('contenteditable') === 'false' ? null : 'marker';
29
+ }
30
+ if (classes.contains(FAMILY_CLASS['fence-line']))
31
+ return 'fence-line';
32
+ if (classes.contains(FAMILY_CLASS['ref-label']))
33
+ return 'ref-label';
34
+ return null;
35
+ }
36
+ /** Whether the content-empty override paints `family` (`styles/editor.css`, same scoping). A
37
+ * reference label is resolution metadata rather than chrome a caret types against, so it stays
38
+ * hidden, and a container holding only labels has no paint to promise. */
39
+ export function familyPaintsAlone(family) {
40
+ return family !== 'ref-label';
41
+ }
42
+ /**
43
+ * What the reader sees on a container painting under `mode`. `chromePaints` is that container's
44
+ * own stamp condition (live-mode.md § 4.1), which reading declines: it takes no keystrokes, so a
45
+ * construct with nothing behind its chrome may paint nothing there. The preview rungs' per-span
46
+ * reveal is DOM state and stays with the walk; this answers for an unrevealed container.
47
+ */
48
+ export function screenVisibility(mode, container) {
49
+ switch (mode) {
50
+ case 'source':
51
+ return { hidesMarkers: false, chromePaints: false };
52
+ case 'reading':
53
+ return { hidesMarkers: true, chromePaints: false };
54
+ case 'live':
55
+ case 'preview-block':
56
+ case 'preview-inline':
57
+ return { hidesMarkers: true, chromePaints: container.chromePaints };
58
+ default: {
59
+ const unhandled = mode;
60
+ return unhandled;
61
+ }
62
+ }
63
+ }
64
+ /**
65
+ * The content behind every marker family, whatever the container paints: the reading a rewrite's
66
+ * before/after conservation diff needs, since chrome folds the moment content arrives and a diff
67
+ * against the screen would read that fold as bytes lost. Sound only past a
68
+ * {@link paintsOnlyChrome} gate — over chrome the reader IS looking at, this reading calls those
69
+ * bytes unseen and licenses dropping them.
70
+ */
71
+ export const CONTENT_VISIBILITY = { hidesMarkers: true, chromePaints: false };
72
+ /** A container whose chrome stands over no content: every family the override paints does. */
73
+ const CHROME_STANDS_ALONE = { hidesMarkers: true, chromePaints: true };
74
+ /** Whether a `family` span paints NOTHING under `ctx` — the one hiding rule, before any preview
75
+ * reveal. */
76
+ export function familyHidesText(family, ctx) {
77
+ return ctx.hidesMarkers && !(ctx.chromePaints && familyPaintsAlone(family));
78
+ }
79
+ /**
80
+ * `nodes` as runs of raw bytes, each carrying what it paints under `ctx`. Read off the rendered
81
+ * DOM rather than derived per kind, because which bytes a construct shows only the painter
82
+ * answers (G4.33): a caller re-deriving that drifts from what paints, which is the only thing the
83
+ * answer is worth anything as. Top-level nodes render one at a time, so a CLIPPED list (a join
84
+ * seam's surviving side) keeps honest offsets instead of a running count that assumes contiguity.
85
+ */
86
+ export function visibleRuns(nodes, raw, ctx, opts = {}) {
87
+ const runs = [];
88
+ for (const node of nodes) {
89
+ collectRuns(renderInlineNodes([node], raw, opts), node.start, ctx, runs);
90
+ }
91
+ return runs;
92
+ }
93
+ /** The text a reader SEES for `nodes` — every run `ctx` leaves on screen, in source order. */
94
+ export function renderedText(nodes, raw, ctx, opts = {}) {
95
+ let out = '';
96
+ for (const run of visibleRuns(nodes, raw, ctx, opts))
97
+ if (run.visible)
98
+ out += run.text;
99
+ return out;
100
+ }
101
+ /**
102
+ * Whether `nodes` are chrome standing over nothing, and therefore ALL on screen (live-mode.md
103
+ * § 4.1). The inline half of the content-empty stamp, for a seam with no DOM to read the stamp
104
+ * off: a license over bytes the reader never saw has nothing to claim here. A block's OWN chrome
105
+ * (a `## ` prefix, a fence line) sits outside the inline content range, so an empty one answers
106
+ * false and the surfaces that own it are unaffected.
107
+ */
108
+ export function paintsOnlyChrome(nodes, raw, opts = {}) {
109
+ return (renderedText(nodes, raw, CONTENT_VISIBILITY, opts) === '' &&
110
+ renderedText(nodes, raw, CHROME_STANDS_ALONE, opts) !== '');
111
+ }
112
+ function collectRuns(fragment, start, ctx, out) {
113
+ let at = start;
114
+ const stack = [];
115
+ // Reversed push, so pop order is source order — which `at` advances along.
116
+ const pushChildren = (parent, hidden) => {
117
+ const children = parent.childNodes;
118
+ for (let i = children.length - 1; i >= 0; i--)
119
+ stack.push({ dom: children[i], hidden });
120
+ };
121
+ pushChildren(fragment, false);
122
+ while (stack.length > 0) {
123
+ const { dom, hidden } = stack.pop();
124
+ if (dom.nodeType === Node.TEXT_NODE) {
125
+ const text = dom.textContent ?? '';
126
+ out.push({ start: at, end: at + text.length, text, visible: !hidden });
127
+ at += text.length;
128
+ continue;
129
+ }
130
+ if (dom.nodeType !== Node.ELEMENT_NODE)
131
+ continue;
132
+ const el = dom;
133
+ // Only an atomic widget's shell carries a source range here, and it is the one element
134
+ // whose text is not its bytes — so the range is both the test and the re-sync.
135
+ const source = widgetSourceRange(el);
136
+ if (source !== null) {
137
+ out.push({ ...source, text: el.textContent ?? '', visible: !hidden });
138
+ at = source.end;
139
+ continue;
140
+ }
141
+ const family = markerFamilyOf(el);
142
+ pushChildren(el, hidden || (family !== null && familyHidesText(family, ctx)));
143
+ }
144
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The one iterative pre-order over an inline tree. Nesting depth is input-controlled (a `**` run
3
+ * nests one construct per pair), so a per-level call frame overflows the stack and strands the
4
+ * block in the unhealable failed-block fallback. Dependency-free, so the scan reaches it without
5
+ * closing a cycle through the inline entry point.
6
+ */
7
+ import type { InlineNode } from '../nodes';
8
+ /**
9
+ * Each node, then its children, in source order. `descend` declines a node's children — the node
10
+ * itself is still yielded, and is asked only when it has any. Yields nodes only: what a reader
11
+ * SEES stays the render path's question (G4.33). Each child list is snapshotted onto the stack
12
+ * when its parent pops, so a consumer that rewrites `children` must finish the walk first.
13
+ */
14
+ export declare function inlineDescendants(nodes: readonly InlineNode[], descend?: (node: InlineNode) => boolean): Generator<InlineNode>;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * The one iterative pre-order over an inline tree. Nesting depth is input-controlled (a `**` run
3
+ * nests one construct per pair), so a per-level call frame overflows the stack and strands the
4
+ * block in the unhealable failed-block fallback. Dependency-free, so the scan reaches it without
5
+ * closing a cycle through the inline entry point.
6
+ */
7
+ /**
8
+ * Each node, then its children, in source order. `descend` declines a node's children — the node
9
+ * itself is still yielded, and is asked only when it has any. Yields nodes only: what a reader
10
+ * SEES stays the render path's question (G4.33). Each child list is snapshotted onto the stack
11
+ * when its parent pops, so a consumer that rewrites `children` must finish the walk first.
12
+ */
13
+ export function* inlineDescendants(nodes, descend) {
14
+ // Reversed push, so pop order is source order.
15
+ const stack = [];
16
+ for (let i = nodes.length - 1; i >= 0; i--)
17
+ stack.push(nodes[i]);
18
+ while (stack.length > 0) {
19
+ const node = stack.pop();
20
+ yield node;
21
+ const children = node.children;
22
+ if (!children || children.length === 0)
23
+ continue;
24
+ if (descend && !descend(node))
25
+ continue;
26
+ for (let i = children.length - 1; i >= 0; i--)
27
+ stack.push(children[i]);
28
+ }
29
+ }
@@ -0,0 +1,48 @@
1
+ /**
2
+ * DOM renderer for InlineNode trees. Over a widget-free range the fragment's textContent equals
3
+ * raw.slice. Atomic widgets break that by design, contributing their own text or none and
4
+ * carrying source bytes on `data-source-*`, so a raw offset is recovered only through the shared
5
+ * walk (cursor/widget-offset.ts), never by counting textContent. Stated both ways by G2.4.
6
+ *
7
+ * Which of the spans minted here a mode leaves on screen is `inline/visibility.ts`.
8
+ */
9
+ import type { InlineNode } from './nodes';
10
+ export type ImageLoadPolicy = 'auto' | 'placeholder';
11
+ export interface RenderInlineOptions {
12
+ renderImagesAsWidgets?: boolean;
13
+ resolveImageUrl?: (rawUrl: string) => string;
14
+ /** Render-time href rewrite for links/autolinks (default identity). */
15
+ resolveLinkUrl?: (rawUrl: string) => string;
16
+ /** Whether remote images auto-load (default) or defer to a placeholder. */
17
+ imageLoadPolicy?: ImageLoadPolicy;
18
+ /** Injected by the component layer so `core/` owns no image specifics; absent renders alt-only. */
19
+ buildImageWidget?: (node: InlineNode, raw: string, opts: {
20
+ resolveImageUrl: (rawUrl: string) => string;
21
+ imageLoadPolicy: ImageLoadPolicy;
22
+ }) => Node;
23
+ /**
24
+ * Mounts a `component`-kind widget in the atomic-island wrapper. Injected for the same reason
25
+ * as `buildImageWidget`; absent or null falls the widget back to its raw source.
26
+ */
27
+ buildPortalWidget?: (node: InlineNode, raw: string) => HTMLElement | null;
28
+ /**
29
+ * Stamp marker spans with the construct's raw range, so preview-inline's reveal trigger can
30
+ * address them. Attributes only, leaving textContent and the offset walk untouched. Off by
31
+ * default so the DOM stays byte-identical outside preview-inline.
32
+ */
33
+ tagConstructMarkers?: boolean;
34
+ }
35
+ /** The one href funnel for every sink — a consumer's rewrite, then the scheme allowlist; undefined
36
+ * reads as "render inert". Exported: the link card's Open button hands over a user-typed URL. */
37
+ export declare function resolveHref(opts: RenderInlineOptions, url: string | undefined): string | undefined;
38
+ export declare function renderInlineNodes(nodes: InlineNode[], raw: string, opts?: RenderInlineOptions): DocumentFragment;
39
+ export interface OffsetResult {
40
+ node: InlineNode;
41
+ localOffset: number;
42
+ }
43
+ /**
44
+ * The leaf containing `offset`, preferring the right node at a boundary; `offset === end` only
45
+ * matches the last node. Model-layer, touching no DOM: the DOM counterpart is
46
+ * `findDomTextOffsetTarget` in cursor/widget-offset.ts.
47
+ */
48
+ export declare function findNodeAtOffset(nodes: InlineNode[], offset: number): OffsetResult | null;
@@ -0,0 +1,322 @@
1
+ /**
2
+ * DOM renderer for InlineNode trees. Over a widget-free range the fragment's textContent equals
3
+ * raw.slice. Atomic widgets break that by design, contributing their own text or none and
4
+ * carrying source bytes on `data-source-*`, so a raw offset is recovered only through the shared
5
+ * walk (cursor/widget-offset.ts), never by counting textContent. Stated both ways by G2.4.
6
+ *
7
+ * Which of the spans minted here a mode leaves on screen is `inline/visibility.ts`.
8
+ */
9
+ import { buildCoreInlineWidget } from './inline/inline-widgets';
10
+ import { isAllowedHrefScheme } from './url-policy';
11
+ // ── Marker helpers ──────────────────────────────────────────────────────────
12
+ function markerSpan(text) {
13
+ const span = document.createElement('span');
14
+ span.className = 'md-marker';
15
+ span.textContent = text;
16
+ return span;
17
+ }
18
+ function tagConstruct(el, node, opts) {
19
+ if (opts.tagConstructMarkers) {
20
+ el.setAttribute('data-construct-start', String(node.start));
21
+ el.setAttribute('data-construct-end', String(node.end));
22
+ }
23
+ return el;
24
+ }
25
+ // The verbatim-source fallback for kinds that render no widget, so every character round-trips.
26
+ function sourceSpan(raw, node, className) {
27
+ const span = document.createElement('span');
28
+ span.className = className;
29
+ span.textContent = raw.slice(node.start, node.end);
30
+ return span;
31
+ }
32
+ /** The one href funnel for every sink — a consumer's rewrite, then the scheme allowlist; undefined
33
+ * reads as "render inert". Exported: the link card's Open button hands over a user-typed URL. */
34
+ export function resolveHref(opts, url) {
35
+ if (url === undefined)
36
+ return undefined;
37
+ const resolved = (opts.resolveLinkUrl ?? ((u) => u))(url);
38
+ // A type-violating resolver returning null/undefined degrades to an inert span, never a throw.
39
+ if (typeof resolved !== 'string')
40
+ return undefined;
41
+ return isAllowedHrefScheme(resolved) ? resolved : undefined;
42
+ }
43
+ // ── Inline code ─────────────────────────────────────────────────────────────
44
+ function renderInlineCode(node, raw, opts) {
45
+ const frag = document.createDocumentFragment();
46
+ // Every span is a slice of raw, never a parsed field that happens to agree — and each is its
47
+ // OWN slice: the opening fence is capped at half the node and the closing one read back off
48
+ // the tail, so a node nobody parsed (a plugin mint over unfenced bytes) still emits its bytes
49
+ // exactly once (G2.4).
50
+ const fenceLimit = node.start + Math.floor((node.end - node.start) / 2);
51
+ let contentStart = node.start;
52
+ while (contentStart < fenceLimit && raw[contentStart] === '`')
53
+ contentStart++;
54
+ const contentEnd = node.end - (contentStart - node.start);
55
+ frag.appendChild(tagConstruct(markerSpan(raw.slice(node.start, contentStart)), node, opts));
56
+ const code = document.createElement('code');
57
+ code.className = 'inline-code-content';
58
+ code.textContent = raw.slice(contentStart, contentEnd);
59
+ frag.appendChild(code);
60
+ frag.appendChild(tagConstruct(markerSpan(raw.slice(contentEnd, node.end)), node, opts));
61
+ return frag;
62
+ }
63
+ // ── Wrapped spans (emphasis / strong / strikethrough) ───────────────────────
64
+ function openWrapped(node, raw, tag, opts, container) {
65
+ const children = node.children ?? [];
66
+ let openEnd;
67
+ let closeStart;
68
+ if (children.length > 0) {
69
+ openEnd = children[0].start;
70
+ closeStart = children[children.length - 1].end;
71
+ }
72
+ else {
73
+ // No children, so the entire interior is markers; split it in half.
74
+ const mid = node.start + Math.floor((node.end - node.start) / 2);
75
+ openEnd = mid;
76
+ closeStart = mid;
77
+ }
78
+ container.appendChild(tagConstruct(markerSpan(raw.slice(node.start, openEnd)), node, opts));
79
+ const wrapper = document.createElement(tag);
80
+ const closeMarker = tagConstruct(markerSpan(raw.slice(closeStart, node.end)), node, opts);
81
+ return {
82
+ nodes: children,
83
+ index: 0,
84
+ content: document.createDocumentFragment(),
85
+ close(content) {
86
+ wrapper.appendChild(content);
87
+ container.appendChild(wrapper);
88
+ container.appendChild(closeMarker);
89
+ }
90
+ };
91
+ }
92
+ // ── Links ────────────────────────────────────────────────────────────────────
93
+ // Markers come from raw.slice: the parsed url/title can differ from the source bytes. Every
94
+ // split point is clamped to node.end — a plugin mint need not carry the bytes GFM's own link
95
+ // does, and a search running past the node would render the NEXT node's source (G2.4).
96
+ function openLink(node, raw, opts, container) {
97
+ const children = node.children ?? [];
98
+ if (children.length === 0) {
99
+ // Empty link text: [](url)
100
+ const bracket = raw.indexOf(']', node.start);
101
+ const mid = bracket !== -1 && bracket < node.end ? bracket : node.end;
102
+ container.appendChild(tagConstruct(markerSpan(raw.slice(node.start, mid)), node, opts));
103
+ if (mid < node.end) {
104
+ container.appendChild(tagConstruct(markerSpan(raw.slice(mid, node.end)), node, opts));
105
+ }
106
+ return null;
107
+ }
108
+ const lastChild = children[children.length - 1];
109
+ // The close marker splits into the text bracket's `]` and the trailing marker. Reference forms
110
+ // get their own `md-ref-label` class so CSS can dim them harder than inline markers.
111
+ const closingTextBracket = lastChild.end < node.end && raw[lastChild.end] === ']'
112
+ ? raw.slice(lastChild.end, lastChild.end + 1)
113
+ : '';
114
+ const trailingMarker = raw.slice(lastChild.end + (closingTextBracket ? 1 : 0), node.end);
115
+ container.appendChild(tagConstruct(markerSpan(raw.slice(node.start, children[0].start)), node, opts));
116
+ const href = resolveHref(opts, node.url);
117
+ const linkEl = document.createElement(href !== undefined ? 'a' : 'span');
118
+ linkEl.className = href !== undefined ? 'md-link-content' : 'md-link-content md-link-blocked';
119
+ if (href !== undefined) {
120
+ linkEl.setAttribute('href', href);
121
+ // The author's title, else the resolved destination: live mode hides the URL, and hover
122
+ // is the one affordance disclosing where an untitled link actually goes.
123
+ linkEl.setAttribute('title', node.title ?? href);
124
+ }
125
+ const trailing = [];
126
+ if (closingTextBracket) {
127
+ trailing.push(tagConstruct(markerSpan(closingTextBracket), node, opts));
128
+ }
129
+ if (trailingMarker) {
130
+ if (node.label !== undefined) {
131
+ const span = document.createElement('span');
132
+ span.className = 'md-ref-label';
133
+ span.textContent = trailingMarker;
134
+ trailing.push(tagConstruct(span, node, opts));
135
+ }
136
+ else {
137
+ trailing.push(tagConstruct(markerSpan(trailingMarker), node, opts));
138
+ }
139
+ }
140
+ return {
141
+ nodes: children,
142
+ index: 0,
143
+ content: document.createDocumentFragment(),
144
+ close(content) {
145
+ linkEl.appendChild(content);
146
+ container.appendChild(linkEl);
147
+ for (const marker of trailing)
148
+ container.appendChild(marker);
149
+ }
150
+ };
151
+ }
152
+ // ── Autolinks ────────────────────────────────────────────────────────────────
153
+ /**
154
+ * The angle form's `<`/`>` are construct syntax, so they render as markers the mode CSS can hide;
155
+ * the bare URL/www/email forms are url text throughout. Read off the raw bytes, never `node.url`:
156
+ * the bare forms synthesize a url (`http://`, `mailto:`) that is not a slice of the source.
157
+ */
158
+ function appendAutolink(node, raw, opts, container) {
159
+ const href = resolveHref(opts, node.url);
160
+ const el = document.createElement(href !== undefined ? 'a' : 'span');
161
+ el.className = href !== undefined ? 'md-autolink' : 'md-autolink md-link-blocked';
162
+ if (href !== undefined)
163
+ el.setAttribute('href', href);
164
+ const isAngleForm = raw[node.start] === '<' && raw[node.end - 1] === '>';
165
+ const textStart = isAngleForm ? node.start + 1 : node.start;
166
+ const textEnd = isAngleForm ? node.end - 1 : node.end;
167
+ el.textContent = raw.slice(textStart, textEnd);
168
+ if (isAngleForm)
169
+ container.appendChild(markerSpan(raw.slice(node.start, textStart)));
170
+ container.appendChild(el);
171
+ if (isAngleForm)
172
+ container.appendChild(markerSpan(raw.slice(textEnd, node.end)));
173
+ }
174
+ // ── Images ───────────────────────────────────────────────────────────────────
175
+ /**
176
+ * The widget-free image path (a kind that declines image widgets, or no injected builder).
177
+ * The alt text stays undimmed, so a reading-mode marker collapse leaves it behind.
178
+ */
179
+ function appendImageSource(node, raw, opts, container) {
180
+ const altText = node.alt ?? '';
181
+ const altStart = node.start + 2;
182
+ const altEnd = altStart + altText.length;
183
+ // `alt` locates the split and never supplies text (openLink's rule), and only where it is
184
+ // literally those bytes: a minted image's markers need not be a GFM image's. Unlocatable
185
+ // falls back to unmarked source, since a construct nobody can decompose would collapse whole.
186
+ if (altEnd > node.end || !raw.startsWith(altText, altStart)) {
187
+ container.appendChild(document.createTextNode(raw.slice(node.start, node.end)));
188
+ return;
189
+ }
190
+ container.appendChild(tagConstruct(markerSpan(raw.slice(node.start, altStart)), node, opts));
191
+ container.appendChild(document.createTextNode(raw.slice(altStart, altEnd)));
192
+ container.appendChild(tagConstruct(markerSpan(raw.slice(altEnd, node.end)), node, opts));
193
+ }
194
+ // ── Main renderer ────────────────────────────────────────────────────────────
195
+ /** Returns a frame for the node's children; the driver owns the descent, off the call stack. */
196
+ function renderNode(node, raw, opts, container) {
197
+ switch (node.kind) {
198
+ case 'text':
199
+ container.appendChild(document.createTextNode(raw.slice(node.start, node.end)));
200
+ return null;
201
+ case 'inlineCode':
202
+ container.appendChild(renderInlineCode(node, raw, opts));
203
+ return null;
204
+ case 'emphasis':
205
+ return openWrapped(node, raw, 'em', opts, container);
206
+ case 'strong':
207
+ return openWrapped(node, raw, 'strong', opts, container);
208
+ case 'strikethrough':
209
+ return openWrapped(node, raw, 's', opts, container);
210
+ case 'hardLineBreak': {
211
+ // A text node carries the line ending so textContent equals raw byte-for-byte;
212
+ // a `<br>` would diverge across browsers.
213
+ const breakRaw = raw.slice(node.start, node.end);
214
+ const nlIdx = breakRaw.indexOf('\n');
215
+ // A node carrying no line ending (a plugin mint) is all marker: a -1 here would
216
+ // slice from the end and drop bytes.
217
+ const lineEndingStart = nlIdx === -1
218
+ ? breakRaw.length
219
+ : nlIdx > 0 && breakRaw[nlIdx - 1] === '\r'
220
+ ? nlIdx - 1
221
+ : nlIdx;
222
+ if (lineEndingStart > 0) {
223
+ container.appendChild(markerSpan(breakRaw.slice(0, lineEndingStart)));
224
+ }
225
+ container.appendChild(document.createTextNode(breakRaw.slice(lineEndingStart)));
226
+ return null;
227
+ }
228
+ case 'link':
229
+ return openLink(node, raw, opts, container);
230
+ case 'image': {
231
+ const renderWidgets = opts.renderImagesAsWidgets ?? true;
232
+ if (renderWidgets && opts.buildImageWidget) {
233
+ container.appendChild(opts.buildImageWidget(node, raw, {
234
+ resolveImageUrl: opts.resolveImageUrl ?? ((u) => u),
235
+ imageLoadPolicy: opts.imageLoadPolicy ?? 'auto'
236
+ }));
237
+ }
238
+ else {
239
+ appendImageSource(node, raw, opts, container);
240
+ }
241
+ return null;
242
+ }
243
+ case 'autolink':
244
+ appendAutolink(node, raw, opts, container);
245
+ return null;
246
+ case 'escape':
247
+ container.appendChild(markerSpan(raw[node.start]));
248
+ container.appendChild(document.createTextNode(raw.slice(node.start + 1, node.end)));
249
+ return null;
250
+ case 'unresolvedReference':
251
+ container.appendChild(sourceSpan(raw, node, node.refKind === 'image'
252
+ ? 'md-unresolved-ref md-unresolved-ref-image'
253
+ : 'md-unresolved-ref'));
254
+ return null;
255
+ case 'entityReference':
256
+ case 'rawHtml':
257
+ default:
258
+ // An invisible entity is not a widget, so the builder returns null and it keeps its
259
+ // literal-source span; anything the registry does not claim falls back the same way,
260
+ // mirroring the unknown-block fallback so every byte round-trips.
261
+ container.appendChild(buildCoreInlineWidget(node, raw, opts.buildPortalWidget) ??
262
+ sourceSpan(raw, node, node.kind === 'entityReference'
263
+ ? 'md-entity'
264
+ : node.kind === 'rawHtml'
265
+ ? 'md-raw-html'
266
+ : 'md-unknown-inline'));
267
+ return null;
268
+ }
269
+ }
270
+ export function renderInlineNodes(nodes, raw, opts = {}) {
271
+ // Iterative: nesting depth is input-controlled, so per-level recursion overflows the stack and
272
+ // strands the block in the unhealable fallback. `scanChildren` is iterative for the same reason.
273
+ const root = {
274
+ nodes,
275
+ index: 0,
276
+ content: document.createDocumentFragment(),
277
+ close: null
278
+ };
279
+ const stack = [root];
280
+ while (stack.length > 0) {
281
+ const frame = stack[stack.length - 1];
282
+ if (frame.index === frame.nodes.length) {
283
+ stack.pop();
284
+ frame.close?.(frame.content);
285
+ continue;
286
+ }
287
+ const child = renderNode(frame.nodes[frame.index++], raw, opts, frame.content);
288
+ if (child !== null)
289
+ stack.push(child);
290
+ }
291
+ return root.content;
292
+ }
293
+ /**
294
+ * The leaf containing `offset`, preferring the right node at a boundary; `offset === end` only
295
+ * matches the last node. Model-layer, touching no DOM: the DOM counterpart is
296
+ * `findDomTextOffsetTarget` in cursor/widget-offset.ts.
297
+ */
298
+ export function findNodeAtOffset(nodes, offset) {
299
+ // Descent never backtracks, the first containing sibling winning its level, so the answer is
300
+ // the deepest containing node.
301
+ let level = nodes;
302
+ let found = null;
303
+ for (;;) {
304
+ const node = containingNode(level, offset);
305
+ if (node === null)
306
+ return found;
307
+ found = { node, localOffset: offset - node.start };
308
+ if (node.children === undefined || node.children.length === 0)
309
+ return found;
310
+ level = node.children;
311
+ }
312
+ }
313
+ /** First node covering `offset`; only the last node claims its own `end`. */
314
+ function containingNode(nodes, offset) {
315
+ for (let i = 0; i < nodes.length; i++) {
316
+ const node = nodes[i];
317
+ const isLast = i === nodes.length - 1;
318
+ if (offset >= node.start && (offset < node.end || (isLast && offset === node.end)))
319
+ return node;
320
+ }
321
+ return null;
322
+ }
@@ -0,0 +1,44 @@
1
+ /** Line splitting preserving endings and offsets, plus the trailing-line-ending helpers. */
2
+ /** Length of `raw` excluding any trailing line ending (LF or CRLF). */
3
+ export declare function displayLength(raw: string): number;
4
+ export declare function trimTrailingLineEnding(raw: string): string;
5
+ /**
6
+ * The ending `raw` actually carries — {@link trimTrailingLineEnding}'s complement, the two
7
+ * partitioning `raw`. What {@link trailingLineEnding} answers instead is which ending the
8
+ * DOCUMENT uses, so a site reattaching a block's own bytes reads this one (G4.20).
9
+ */
10
+ export declare function ownTrailingLineEnding(raw: string): '' | '\n' | '\r\n';
11
+ /**
12
+ * `offset` moved off the interior of a surrogate pair, back to the pair's own start. Caret
13
+ * offsets are UTF-16 code units, so a cut at one can halve an astral scalar and leave a lone
14
+ * surrogate — bytes no UTF-8 encoder round-trips (`TextEncoder` yields U+FFFD) and no inverse
15
+ * gesture restores. Scalars only: a grapheme cluster is a rendering question, and answering it
16
+ * here would move a caret the author placed between two legitimately separate scalars.
17
+ */
18
+ export declare function snapToScalarBoundary(raw: string, offset: number): number;
19
+ /**
20
+ * The block's authored trailing line ending. Every site that reattaches or mints one reads it
21
+ * here (G4.20), so a CRLF-authored block keeps its ending and an unterminated one gets `\n`.
22
+ */
23
+ export declare function trailingLineEnding(raw: string): '\n' | '\r\n';
24
+ /**
25
+ * Keep a truncated slice line-terminated, borrowing `sourceRaw`'s own ending (G4.20). A slice
26
+ * whose last line stays open swallows whatever follows it once the bytes stand alone.
27
+ */
28
+ export declare function terminateLine(text: string, sourceRaw: string): string;
29
+ /** Paste entry points funnel through here so Windows CRLF does not leak into a note. */
30
+ export declare function normalizeLineEndings(text: string): string;
31
+ export interface ParsedLine {
32
+ raw: string;
33
+ text: string;
34
+ lineEnding: string;
35
+ start: number;
36
+ end: number;
37
+ }
38
+ export declare function splitLines(source: string): ParsedLine[];
39
+ /**
40
+ * Re-mint a `ParsedLine[]` after a per-line strip, as the container parsers do when they reparse
41
+ * a prefix-stripped body. Recompute, not spread: reusing an input line's offsets after shortening
42
+ * its text desyncs the offsets from the bytes.
43
+ */
44
+ export declare function remapStrippedLines(lines: ParsedLine[], stripLine: (line: ParsedLine, index: number) => string): ParsedLine[];