@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,23 @@
1
+ /**
2
+ * `<` dispatch (spec autolinks §6.5, then raw HTML §6.6) plus the GFM §6.9 bare/www/email pass
3
+ * over completed text runs. No conformance reference covers the extension: these rules follow
4
+ * the GFM spec text, then cmark-gfm where its prose runs out (`scanEmailDomain`), and diverge
5
+ * from both at `hasValidDomain`: a scheme'd host needs no period, so `http://localhost` links.
6
+ */
7
+ import { type ScanContext } from './scan-state';
8
+ /**
9
+ * GFM §6.9 trailing-punctuation trim. `)` goes only when unbalanced; `;` normally stays, but an
10
+ * entity-shaped tail (`&` + alphanumerics + `;`) is excluded with its `&` (spec ex. 626).
11
+ */
12
+ export declare function trimTrailingPunctuation(raw: string, urlStart: number, urlEnd: number): number;
13
+ /**
14
+ * GFM §6.9: valid only at start-of-region or after whitespace, `*`, `_`, `~`, or `(`. Applied to
15
+ * every bare form here, per the spec text; cmark-gfm applies it to the `www.` form alone.
16
+ */
17
+ export declare function isValidLeadingBoundary(raw: string, pos: number, regionStart: number): boolean;
18
+ export declare function handleAngle(ctx: ScanContext): void;
19
+ /**
20
+ * Runs before emphasis pairing so a delimiter absorbed into a URL can never pair; consumed
21
+ * delimiters are pruned. Children of already-wrapped link/image nodes are scanned too.
22
+ */
23
+ export declare function scanGfmAutolinks(ctx: ScanContext): void;
@@ -0,0 +1,354 @@
1
+ /**
2
+ * `<` dispatch (spec autolinks §6.5, then raw HTML §6.6) plus the GFM §6.9 bare/www/email pass
3
+ * over completed text runs. No conformance reference covers the extension: these rules follow
4
+ * the GFM spec text, then cmark-gfm where its prose runs out (`scanEmailDomain`), and diverge
5
+ * from both at `hasValidDomain`: a scheme'd host needs no period, so `http://localhost` links.
6
+ */
7
+ import { matchHtmlFormAt } from '../html-tag-grammar';
8
+ import { appendNode } from './scan-state';
9
+ import { percentEncodeUri } from './url';
10
+ // ── GFM §6.9 boundary and trim rules ────────────────────────────────────────
11
+ const TRAILING_PUNCT = new Set(['?', '!', '.', ',', ':', '*', '_', '~']);
12
+ /**
13
+ * GFM §6.9 trailing-punctuation trim. `)` goes only when unbalanced; `;` normally stays, but an
14
+ * entity-shaped tail (`&` + alphanumerics + `;`) is excluded with its `&` (spec ex. 626).
15
+ */
16
+ export function trimTrailingPunctuation(raw, urlStart, urlEnd) {
17
+ // Parens counted once and the balance maintained while trimming: a recount per
18
+ // trimmed `)` makes paren floods quadratic.
19
+ let opens = 0;
20
+ let closes = 0;
21
+ for (let i = urlStart; i < urlEnd; i++) {
22
+ if (raw[i] === '(')
23
+ opens++;
24
+ else if (raw[i] === ')')
25
+ closes++;
26
+ }
27
+ let end = urlEnd;
28
+ while (end > urlStart) {
29
+ const ch = raw[end - 1];
30
+ if (TRAILING_PUNCT.has(ch)) {
31
+ end--;
32
+ continue;
33
+ }
34
+ if (ch === ')') {
35
+ if (closes > opens) {
36
+ end--;
37
+ closes--;
38
+ continue;
39
+ }
40
+ break;
41
+ }
42
+ if (ch === ';') {
43
+ let j = end - 2;
44
+ while (j > urlStart && /[A-Za-z0-9]/.test(raw[j]))
45
+ j--;
46
+ if (j >= urlStart && raw[j] === '&' && j < end - 2) {
47
+ end = j;
48
+ continue;
49
+ }
50
+ break;
51
+ }
52
+ break;
53
+ }
54
+ return end;
55
+ }
56
+ const HOST_CHAR = /[\p{L}\p{N}_.-]/u;
57
+ /**
58
+ * GFM §6.9: no underscore in either of a domain's last two dot-separated segments, so
59
+ * `www.xxx._yyy.zzz` stays literal while `www._xxx.yyy.zzz` links. cmark-gfm's extra exemption
60
+ * for 10+-dot hosts is an implementation artifact, deliberately not reproduced (file header).
61
+ */
62
+ function hasValidDomain(raw, domainStart, limit) {
63
+ let hostEnd = domainStart;
64
+ while (hostEnd < limit && HOST_CHAR.test(raw[hostEnd]))
65
+ hostEnd++;
66
+ let dotsSeen = 0;
67
+ let i = hostEnd;
68
+ while (i > domainStart && dotsSeen < 2) {
69
+ i--;
70
+ if (raw[i] === '.')
71
+ dotsSeen++;
72
+ else if (raw[i] === '_')
73
+ return false;
74
+ }
75
+ return true;
76
+ }
77
+ /**
78
+ * GFM §6.9: valid only at start-of-region or after whitespace, `*`, `_`, `~`, or `(`. Applied to
79
+ * every bare form here, per the spec text; cmark-gfm applies it to the `www.` form alone.
80
+ */
81
+ export function isValidLeadingBoundary(raw, pos, regionStart) {
82
+ if (pos <= regionStart)
83
+ return true;
84
+ const ch = raw[pos - 1];
85
+ return /\s/.test(ch) || ch === '*' || ch === '_' || ch === '~' || ch === '(';
86
+ }
87
+ // ── `<` handler: spec autolink, then raw HTML tag ───────────────────────────
88
+ // commonmark.js 0.31.2 reEmailAutolink / reAutolink, tried in that order.
89
+ const EMAIL_AUTOLINK = /^<([a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/;
90
+ // eslint-disable-next-line no-control-regex -- commonmark reAutolink excludes control chars + space from the URI
91
+ const URI_AUTOLINK = /^<[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\x00-\x20]*>/;
92
+ export function handleAngle(ctx) {
93
+ const node = matchAngleConstruct(ctx.raw, ctx.pos, ctx.end);
94
+ if (node !== null)
95
+ appendNode(ctx, node);
96
+ else
97
+ ctx.pos++;
98
+ }
99
+ function matchAngleConstruct(raw, pos, end) {
100
+ const ahead = raw.slice(pos, end);
101
+ const email = EMAIL_AUTOLINK.exec(ahead);
102
+ if (email !== null) {
103
+ return {
104
+ kind: 'autolink',
105
+ start: pos,
106
+ end: pos + email[0].length,
107
+ url: percentEncodeUri('mailto:' + email[1])
108
+ };
109
+ }
110
+ const uri = URI_AUTOLINK.exec(ahead);
111
+ if (uri !== null) {
112
+ return {
113
+ kind: 'autolink',
114
+ start: pos,
115
+ end: pos + uri[0].length,
116
+ url: percentEncodeUri(uri[0].slice(1, -1))
117
+ };
118
+ }
119
+ const tag = matchHtmlFormAt(raw, pos, end);
120
+ if (tag !== null)
121
+ return { kind: 'rawHtml', start: pos, end: pos + tag.length };
122
+ return null;
123
+ }
124
+ // ── GFM §6.9 pass over completed text runs ──────────────────────────────────
125
+ /**
126
+ * Runs before emphasis pairing so a delimiter absorbed into a URL can never pair; consumed
127
+ * delimiters are pruned. Children of already-wrapped link/image nodes are scanned too.
128
+ */
129
+ export function scanGfmAutolinks(ctx) {
130
+ const matches = spliceBareAutolinks(ctx.raw, ctx.nodes);
131
+ if (matches.length > 0) {
132
+ ctx.delimiters = ctx.delimiters.filter((d) => !meetsAMatch(matches, d.node.start, d.node.end));
133
+ }
134
+ scanChildren(ctx.raw, ctx.nodes);
135
+ }
136
+ /** Matches are disjoint and ascending; the linear alternative is quadratic on a dense block. */
137
+ function meetsAMatch(matches, start, end) {
138
+ let lo = 0;
139
+ let hi = matches.length;
140
+ while (lo < hi) {
141
+ const mid = (lo + hi) >>> 1;
142
+ if (matches[mid].end <= start)
143
+ lo = mid + 1;
144
+ else
145
+ hi = mid;
146
+ }
147
+ return lo < matches.length && matches[lo].start < end;
148
+ }
149
+ function scanChildren(raw, nodes) {
150
+ // Iterative: nesting depth is input-controlled, so per-level recursion overflows the stack.
151
+ const pending = [nodes];
152
+ while (pending.length > 0) {
153
+ for (const node of pending.pop()) {
154
+ if (node.children !== undefined && node.children.length > 0) {
155
+ spliceBareAutolinks(raw, node.children);
156
+ pending.push(node.children);
157
+ }
158
+ }
159
+ }
160
+ }
161
+ /**
162
+ * The replacement is accumulated and written back rather than spliced per run: spreading a match
163
+ * array as call arguments hits V8's argument limit past ~65k matches, and the block never heals.
164
+ */
165
+ function spliceBareAutolinks(raw, nodes) {
166
+ const all = [];
167
+ const rebuilt = [];
168
+ let i = 0;
169
+ while (i < nodes.length) {
170
+ if (nodes[i].kind !== 'text') {
171
+ rebuilt.push(nodes[i]);
172
+ i++;
173
+ continue;
174
+ }
175
+ let j = i;
176
+ while (j + 1 < nodes.length && nodes[j + 1].kind === 'text')
177
+ j++;
178
+ const matches = scanRunForBareAutolinks(raw, nodes[i].start, nodes[j].end);
179
+ if (matches.length === 0) {
180
+ for (let k = i; k <= j; k++)
181
+ rebuilt.push(nodes[k]);
182
+ }
183
+ else {
184
+ for (const match of matches)
185
+ all.push(match);
186
+ for (const node of spliceRun(raw, nodes.slice(i, j + 1), matches))
187
+ rebuilt.push(node);
188
+ }
189
+ i = j + 1;
190
+ }
191
+ // In place: the working list is held by identity (ctx.nodes, a parent's children).
192
+ if (all.length > 0) {
193
+ nodes.length = 0;
194
+ for (const node of rebuilt)
195
+ nodes.push(node);
196
+ }
197
+ return all;
198
+ }
199
+ /**
200
+ * Untouched text nodes keep their identity: live delimiters reference their run node by object,
201
+ * so only nodes overlapping a match may be re-cut (their delimiters having been pruned).
202
+ */
203
+ function spliceRun(raw, runNodes, matches) {
204
+ const runEnd = runNodes[runNodes.length - 1].end;
205
+ const out = [];
206
+ let cursor = runNodes[0].start;
207
+ let k = 0;
208
+ let mi = 0;
209
+ while (cursor < runEnd) {
210
+ if (mi < matches.length && matches[mi].start === cursor) {
211
+ out.push(matches[mi]);
212
+ cursor = matches[mi].end;
213
+ mi++;
214
+ continue;
215
+ }
216
+ while (runNodes[k].end <= cursor)
217
+ k++;
218
+ const node = runNodes[k];
219
+ const boundary = mi < matches.length ? matches[mi].start : runEnd;
220
+ if (node.start === cursor && node.end <= boundary) {
221
+ out.push(node);
222
+ cursor = node.end;
223
+ }
224
+ else {
225
+ const sliceEnd = Math.min(node.end, boundary);
226
+ out.push({ kind: 'text', start: cursor, end: sliceEnd, text: raw.slice(cursor, sliceEnd) });
227
+ cursor = sliceEnd;
228
+ }
229
+ }
230
+ return out;
231
+ }
232
+ function scanRunForBareAutolinks(raw, start, end) {
233
+ const out = [];
234
+ let pos = start;
235
+ while (pos < end) {
236
+ const ch = raw[pos];
237
+ let matched = null;
238
+ if (ch === 'h' || ch === 'H')
239
+ matched = matchBareHttpAutolink(raw, pos, start, end);
240
+ else if (ch === 'w' || ch === 'W')
241
+ matched = matchBareWwwAutolink(raw, pos, start, end);
242
+ else if (ch === '@')
243
+ matched = matchBareEmailAutolink(raw, pos, start, end);
244
+ if (matched !== null) {
245
+ out.push(matched);
246
+ pos = matched.end;
247
+ continue;
248
+ }
249
+ pos++;
250
+ }
251
+ return out;
252
+ }
253
+ // ── GFM bare/www/email matchers ─────────────────────────────────────────────
254
+ /**
255
+ * `lit` is lowercase. Folds letters only: a blind `| 0x20` would let control characters alias
256
+ * punctuation (0x0E | 0x20 is `.`).
257
+ */
258
+ function matchesCI(raw, pos, lit) {
259
+ for (let i = 0; i < lit.length; i++) {
260
+ const code = raw.charCodeAt(pos + i);
261
+ const lower = lit.charCodeAt(i);
262
+ if (code !== lower && !(lower >= 0x61 && lower <= 0x7a && code === lower - 0x20))
263
+ return false;
264
+ }
265
+ return true;
266
+ }
267
+ function matchBareHttpAutolink(raw, pos, regionStart, end) {
268
+ if (!isValidLeadingBoundary(raw, pos, regionStart))
269
+ return null;
270
+ const schemeLen = matchesCI(raw, pos, 'https://') ? 8 : matchesCI(raw, pos, 'http://') ? 7 : 0;
271
+ if (schemeLen === 0)
272
+ return null;
273
+ let urlEnd = pos + schemeLen;
274
+ while (urlEnd < end && !/\s/.test(raw[urlEnd]))
275
+ urlEnd++;
276
+ if (urlEnd <= pos + schemeLen)
277
+ return null;
278
+ urlEnd = trimTrailingPunctuation(raw, pos, urlEnd);
279
+ if (urlEnd <= pos + schemeLen)
280
+ return null;
281
+ if (!hasValidDomain(raw, pos + schemeLen, urlEnd))
282
+ return null;
283
+ return { kind: 'autolink', start: pos, end: urlEnd, url: raw.slice(pos, urlEnd) };
284
+ }
285
+ function matchBareWwwAutolink(raw, pos, regionStart, end) {
286
+ if (!isValidLeadingBoundary(raw, pos, regionStart))
287
+ return null;
288
+ if (!matchesCI(raw, pos, 'www.'))
289
+ return null;
290
+ let urlEnd = pos + 4;
291
+ while (urlEnd < end && !/\s/.test(raw[urlEnd]))
292
+ urlEnd++;
293
+ if (urlEnd <= pos + 4)
294
+ return null;
295
+ urlEnd = trimTrailingPunctuation(raw, pos, urlEnd);
296
+ // `.` is trailing punctuation, so the trim can cross the `www.` prefix and leave a bare
297
+ // `www`, a live link to a host the user never wrote. Hence at-or-below floor checks here.
298
+ if (urlEnd <= pos + 4)
299
+ return null;
300
+ if (!hasValidDomain(raw, pos, urlEnd))
301
+ return null;
302
+ // GFM §6.9: a www autolink carries no scheme in its bytes. The raw span stays verbatim;
303
+ // only the derived href gains `http://`, exactly as email prepends `mailto:`.
304
+ return { kind: 'autolink', start: pos, end: urlEnd, url: 'http://' + raw.slice(pos, urlEnd) };
305
+ }
306
+ const EMAIL_LOCAL = /[A-Za-z0-9._+-]/;
307
+ const EMAIL_DOMAIN_CHAR = /[A-Za-z0-9_-]/;
308
+ const EMAIL_LABEL_START = /[A-Za-z0-9]/;
309
+ const EMAIL_DOMAIN_END = /[A-Za-z]/;
310
+ /**
311
+ * The email domain per GFM §6.9: alphanumerics/`-`/`_` separated by periods, at least one
312
+ * period, no `-`/`_` at the end. Past that prose the rule is cmark-gfm's: the last character
313
+ * must be a LETTER, and a `.` separates labels only when an alphanumeric follows (`a@b._c` and
314
+ * `a@b.c1` stay literal; `a@.b` is accepted). Returns the domain end, or -1.
315
+ */
316
+ function scanEmailDomain(raw, domainStart, regionEnd) {
317
+ let end = domainStart;
318
+ let separators = 0;
319
+ while (end < regionEnd) {
320
+ const ch = raw[end];
321
+ if (ch === '.') {
322
+ if (end + 1 >= regionEnd || !EMAIL_LABEL_START.test(raw[end + 1]))
323
+ break;
324
+ separators++;
325
+ }
326
+ else if (!EMAIL_DOMAIN_CHAR.test(ch)) {
327
+ break;
328
+ }
329
+ end++;
330
+ }
331
+ if (separators === 0)
332
+ return -1;
333
+ // The walk stops before any `.` it did not count, so `end - 1` is a domain character.
334
+ return EMAIL_DOMAIN_END.test(raw[end - 1]) ? end : -1;
335
+ }
336
+ function matchBareEmailAutolink(raw, atPos, regionStart, regionEnd) {
337
+ let localStart = atPos;
338
+ while (localStart > regionStart && EMAIL_LOCAL.test(raw[localStart - 1]))
339
+ localStart--;
340
+ if (localStart === atPos)
341
+ return null; // empty local-part
342
+ // The boundary applies at the URL's start, which for email is the local-part start.
343
+ if (!isValidLeadingBoundary(raw, localStart, regionStart))
344
+ return null;
345
+ const domainEnd = scanEmailDomain(raw, atPos + 1, regionEnd);
346
+ if (domainEnd < 0)
347
+ return null;
348
+ return {
349
+ kind: 'autolink',
350
+ start: localStart,
351
+ end: domainEnd,
352
+ url: `mailto:${raw.slice(localStart, domainEnd)}`
353
+ };
354
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Bracket stack for inline and reference links/images (CommonMark §6.3), ported onto the flat
3
+ * working-node list. A failed `]` leaves its brackets literal, except full/collapsed references
4
+ * that miss the resolver: those commit to one opaque `unresolvedReference` node (editor deviation).
5
+ * `url`/`title` are spec-processed for inline forms and byte-exact from the resolver for reference
6
+ * forms; neither is ever serialized, so offsets stay lossless.
7
+ */
8
+ import { type ScanContext } from './scan-state';
9
+ export declare function handleOpenBracket(ctx: ScanContext): void;
10
+ export declare function handleBang(ctx: ScanContext): void;
11
+ export declare function handleCloseBracket(ctx: ScanContext): void;
@@ -0,0 +1,284 @@
1
+ /**
2
+ * Bracket stack for inline and reference links/images (CommonMark §6.3), ported onto the flat
3
+ * working-node list. A failed `]` leaves its brackets literal, except full/collapsed references
4
+ * that miss the resolver: those commit to one opaque `unresolvedReference` node (editor deviation).
5
+ * `url`/`title` are spec-processed for inline forms and byte-exact from the resolver for reference
6
+ * forms; neither is ever serialized, so offsets stay lossless.
7
+ */
8
+ import { ESCAPABLE_PUNCTUATION } from '../../escapable';
9
+ import { parseImageDimensions } from '../image-dimensions';
10
+ import { normalizeLinkLabel } from '../link-reference-resolver';
11
+ import { processEmphasis } from './emphasis';
12
+ import { appendNode, flushPendingText, mergeAdjacentText } from './scan-state';
13
+ import { processDestination, unescapeSpecString } from './url';
14
+ // ── Scan-time handlers ──────────────────────────────────────────────────────
15
+ export function handleOpenBracket(ctx) {
16
+ pushBracket(ctx, false);
17
+ }
18
+ export function handleBang(ctx) {
19
+ if (ctx.pos + 1 < ctx.end && ctx.raw[ctx.pos + 1] === '[')
20
+ pushBracket(ctx, true);
21
+ else
22
+ ctx.pos++;
23
+ }
24
+ function pushBracket(ctx, isImage) {
25
+ const start = ctx.pos;
26
+ const end = start + (isImage ? 2 : 1);
27
+ appendNode(ctx, { kind: 'text', start, end, text: ctx.raw.slice(start, end) });
28
+ const enclosing = ctx.brackets[ctx.brackets.length - 1];
29
+ if (enclosing !== undefined)
30
+ enclosing.bracketAfter = true;
31
+ ctx.brackets.push({
32
+ nodeIndex: ctx.nodes.length - 1,
33
+ isImage,
34
+ active: true,
35
+ bracketAfter: false,
36
+ delimiterFloor: ctx.delimiters.length
37
+ });
38
+ }
39
+ export function handleCloseBracket(ctx) {
40
+ const bracket = ctx.brackets[ctx.brackets.length - 1];
41
+ if (bracket === undefined) {
42
+ ctx.pos++;
43
+ return;
44
+ }
45
+ if (!bracket.active) {
46
+ ctx.brackets.pop();
47
+ ctx.pos++;
48
+ return;
49
+ }
50
+ const labelEnd = ctx.pos;
51
+ const inline = parseInlineLinkTail(ctx.raw, labelEnd + 1, ctx.end);
52
+ if (inline !== null) {
53
+ wrapMatchedBracket(ctx, bracket, labelEnd, inline);
54
+ return;
55
+ }
56
+ const ref = parseReferenceTail(ctx, bracket, labelEnd);
57
+ if (ref === null) {
58
+ ctx.brackets.pop();
59
+ ctx.pos++;
60
+ return;
61
+ }
62
+ if (ref.resolved === undefined) {
63
+ emitUnresolvedReference(ctx, bracket, ref);
64
+ return;
65
+ }
66
+ wrapMatchedBracket(ctx, bracket, labelEnd, {
67
+ url: ref.resolved.url,
68
+ ...(ref.resolved.title !== undefined ? { title: ref.resolved.title } : {}),
69
+ label: ref.label,
70
+ end: ref.end
71
+ });
72
+ }
73
+ function wrapMatchedBracket(ctx, bracket, labelEnd, target) {
74
+ ctx.brackets.pop();
75
+ flushPendingText(ctx, labelEnd);
76
+ processEmphasis(ctx, bracket.delimiterFloor);
77
+ const opener = ctx.nodes[bracket.nodeIndex];
78
+ const children = mergeAdjacentText(ctx.nodes.splice(bracket.nodeIndex + 1));
79
+ ctx.nodes[bracket.nodeIndex] = bracket.isImage
80
+ ? buildImage(ctx.raw, opener, labelEnd, target, children)
81
+ : buildLink(opener, target, children);
82
+ ctx.pos = target.end;
83
+ ctx.textStart = target.end;
84
+ // §6.3 no links inside links: a matched link deactivates enclosing link openers, not images.
85
+ if (!bracket.isImage) {
86
+ for (const open of ctx.brackets) {
87
+ if (!open.isImage)
88
+ open.active = false;
89
+ }
90
+ }
91
+ }
92
+ function buildLink(opener, target, children) {
93
+ return {
94
+ kind: 'link',
95
+ start: opener.start,
96
+ end: target.end,
97
+ children,
98
+ url: target.url,
99
+ ...(target.title !== undefined ? { title: target.title } : {}),
100
+ ...(target.label !== undefined ? { label: target.label } : {})
101
+ };
102
+ }
103
+ function buildImage(raw, opener, labelEnd, target, children) {
104
+ const dims = parseImageDimensions(raw.slice(opener.end, labelEnd));
105
+ return {
106
+ kind: 'image',
107
+ start: opener.start,
108
+ end: target.end,
109
+ children,
110
+ alt: dims.displayAlt,
111
+ url: target.url,
112
+ ...(target.title !== undefined ? { title: target.title } : {}),
113
+ ...(dims.width !== undefined ? { width: dims.width } : {}),
114
+ ...(dims.height !== undefined ? { height: dims.height } : {}),
115
+ ...(target.label !== undefined ? { label: target.label } : {})
116
+ };
117
+ }
118
+ function parseReferenceTail(ctx, bracket, labelEnd) {
119
+ const { raw, end, resolver } = ctx;
120
+ if (resolver === undefined)
121
+ return null;
122
+ const afterText = labelEnd + 1;
123
+ const secondEnd = parseLinkLabel(raw, afterText, end);
124
+ if (secondEnd !== null && secondEnd > afterText + 2) {
125
+ const rawLabel = raw.slice(afterText + 1, secondEnd - 1);
126
+ return { label: normalizeLinkLabel(rawLabel), end: secondEnd, resolved: resolver(rawLabel) };
127
+ }
128
+ // Collapsed/shortcut reuse the link text as label, and a bracket opened inside it can never
129
+ // be part of a valid label, so skip the lookup outright (the reference's bracketAfter guard).
130
+ if (bracket.bracketAfter)
131
+ return null;
132
+ const rawLabel = raw.slice(ctx.nodes[bracket.nodeIndex].end, labelEnd);
133
+ if (secondEnd !== null) {
134
+ return { label: normalizeLinkLabel(rawLabel), end: secondEnd, resolved: resolver(rawLabel) };
135
+ }
136
+ const resolved = resolver(rawLabel);
137
+ if (resolved === undefined)
138
+ return null; // shortcut never commits on a miss
139
+ return { label: normalizeLinkLabel(rawLabel), end: afterText, resolved };
140
+ }
141
+ /** CommonMark §6.3 label: at most 999 content chars, no unescaped brackets. */
142
+ function parseLinkLabel(raw, pos, end) {
143
+ if (pos >= end || raw[pos] !== '[')
144
+ return null;
145
+ let i = pos + 1;
146
+ while (i < end && i - pos <= 1000) {
147
+ const ch = raw[i];
148
+ if (ch === ']')
149
+ return i + 1;
150
+ if (ch === '[')
151
+ return null;
152
+ i += ch === '\\' ? 2 : 1;
153
+ }
154
+ return null;
155
+ }
156
+ function emitUnresolvedReference(ctx, bracket, ref) {
157
+ ctx.brackets.pop();
158
+ ctx.delimiters.length = bracket.delimiterFloor;
159
+ const start = ctx.nodes[bracket.nodeIndex].start;
160
+ ctx.nodes.length = bracket.nodeIndex;
161
+ ctx.nodes.push({
162
+ kind: 'unresolvedReference',
163
+ start,
164
+ end: ref.end,
165
+ label: ref.label,
166
+ refKind: bracket.isImage ? 'image' : 'link'
167
+ });
168
+ ctx.pos = ref.end;
169
+ ctx.textStart = ref.end;
170
+ }
171
+ // ── Inline-link tail: "(" destination title? ")" ────────────────────────────
172
+ function parseInlineLinkTail(raw, pos, end) {
173
+ if (pos >= end || raw[pos] !== '(')
174
+ return null;
175
+ let i = skipSpnl(raw, pos + 1, end);
176
+ const dest = parseDestination(raw, i, end);
177
+ if (dest === null)
178
+ return null;
179
+ i = skipSpnl(raw, dest.end, end);
180
+ // A title needs real whitespace after the destination; a quote abutting it is destination content.
181
+ let title;
182
+ if (i > dest.end) {
183
+ const parsed = parseTitle(raw, i, end);
184
+ if (parsed !== null) {
185
+ title = parsed.title;
186
+ i = skipSpnl(raw, parsed.end, end);
187
+ }
188
+ }
189
+ if (i >= end || raw[i] !== ')')
190
+ return null;
191
+ return { url: dest.url, ...(title !== undefined ? { title } : {}), end: i + 1 };
192
+ }
193
+ /** The reference's spnl: spaces, at most one newline, spaces — tabs excluded. */
194
+ function skipSpnl(raw, pos, end) {
195
+ while (pos < end && raw[pos] === ' ')
196
+ pos++;
197
+ if (pos < end && raw[pos] === '\n') {
198
+ pos++;
199
+ while (pos < end && raw[pos] === ' ')
200
+ pos++;
201
+ }
202
+ return pos;
203
+ }
204
+ function parseDestination(raw, pos, end) {
205
+ if (pos < end && raw[pos] === '<')
206
+ return parseAngleDestination(raw, pos, end);
207
+ return parseBareDestination(raw, pos, end);
208
+ }
209
+ function parseAngleDestination(raw, pos, end) {
210
+ let i = pos + 1;
211
+ while (i < end) {
212
+ const ch = raw[i];
213
+ if (ch === '>')
214
+ return { url: processDestination(raw.slice(pos + 1, i)), end: i + 1 };
215
+ if (ch === '<' || ch === '\n' || ch === '\u0000')
216
+ return null;
217
+ if (ch === '\\') {
218
+ const next = i + 1 < end ? raw[i + 1] : '';
219
+ if (next === '' || next === '\n' || next === '\r' || next === '\u2028' || next === '\u2029') {
220
+ return null;
221
+ }
222
+ i += 2;
223
+ }
224
+ else {
225
+ i++;
226
+ }
227
+ }
228
+ return null;
229
+ }
230
+ // The reference's destination terminator set (reWhitespaceChar): other control characters,
231
+ // and U+00A0, are destination content.
232
+ const DESTINATION_TERMINATORS = new Set(' \t\n\u000b\u000c\r');
233
+ /** Bare form: balanced parens, no depth cap. Empty is valid only just before the closing `)`. */
234
+ function parseBareDestination(raw, pos, end) {
235
+ let i = pos;
236
+ let openParens = 0;
237
+ while (i < end) {
238
+ const ch = raw[i];
239
+ if (ch === '\\' && i + 1 < end && ESCAPABLE_PUNCTUATION.has(raw[i + 1])) {
240
+ i += 2;
241
+ }
242
+ else if (ch === '(') {
243
+ openParens++;
244
+ i++;
245
+ }
246
+ else if (ch === ')') {
247
+ if (openParens < 1)
248
+ break;
249
+ openParens--;
250
+ i++;
251
+ }
252
+ else if (DESTINATION_TERMINATORS.has(ch)) {
253
+ break;
254
+ }
255
+ else {
256
+ i++;
257
+ }
258
+ }
259
+ if (i === pos && (i >= end || raw[i] !== ')'))
260
+ return null;
261
+ if (openParens !== 0)
262
+ return null;
263
+ return { url: processDestination(raw.slice(pos, i)), end: i };
264
+ }
265
+ /** Paren titles cannot nest. */
266
+ function parseTitle(raw, pos, end) {
267
+ const marker = raw[pos];
268
+ if (marker !== '"' && marker !== "'" && marker !== '(')
269
+ return null;
270
+ const close = marker === '(' ? ')' : marker;
271
+ let i = pos + 1;
272
+ while (i < end) {
273
+ const ch = raw[i];
274
+ if (ch === close)
275
+ return { title: unescapeSpecString(raw.slice(pos + 1, i)), end: i + 1 };
276
+ if (ch === '\u0000' || (marker === '(' && ch === '('))
277
+ return null;
278
+ if (ch === '\\' && i + 1 < end)
279
+ i += 2;
280
+ else
281
+ i++;
282
+ }
283
+ return null;
284
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Backtick handler over the shared run index in ../backticks.ts. A matched span covers fences
3
+ * plus content; `text` holds raw content bytes, unfolded (display folding is the normalizer's).
4
+ * An unmatched run stays whole in the pending text, so an inner backtick is never retried.
5
+ */
6
+ import { type ScanContext } from './scan-state';
7
+ export declare function handleBacktick(ctx: ScanContext): void;