@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,97 @@
1
+ /**
2
+ * The reference `:::name` directive container. Reuses the shared directive grammar rather
3
+ * than a hand-written opener, so the fence bytes stay the round-trip truth.
4
+ */
5
+ import { activateDirectives, chromeChild, containerClosure, createDirectiveRebuild, declarePluginKind, defineBlockComponent, DIRECTIVE_BODY_WRAP, registerBlockComponent, registerBlockKind, registerBlockCommand, registerChromeLeaf, registerDirective, registerPasteTransform, isDirectiveRegistered, setPluginMetadata, getPluginMetadata } from '../../plugin';
6
+ import { ADMONITION, ADMONITION_KINDS, ADMONITION_TITLE, coerceAdmonitionName } from './kinds';
7
+ import { githubAlertsPasteTransform } from './convert-document';
8
+ import { registerGithubAlert } from './github-alert-kind';
9
+ import AdmonitionBlock from './AdmonitionBlock.svelte';
10
+ /** Child 0 is the title (the opener line's info, editable); children 1+ are the body. */
11
+ function admonitionFromDirective(kind, titleKind) {
12
+ return (parsed) => {
13
+ const title = parsed.fence.info.trim();
14
+ const node = {
15
+ kind,
16
+ leadingTrivia: parsed.leadingTrivia,
17
+ raw: parsed.raw,
18
+ innerPrefix: parsed.body?.prefix ?? '',
19
+ children: [chromeChild(titleKind, title), ...(parsed.body?.children ?? [])],
20
+ innerSuffix: parsed.body?.suffix ?? ''
21
+ };
22
+ setPluginMetadata(node, {
23
+ name: parsed.fence.name,
24
+ colonCount: parsed.fence.colonCount,
25
+ closerColonCount: parsed.closerColonCount,
26
+ closerNewline: parsed.closerNewline,
27
+ lineEnding: parsed.lineEnding
28
+ });
29
+ return node;
30
+ };
31
+ }
32
+ const rebuildAdmonitionRaw = createDirectiveRebuild((meta) => coerceAdmonitionName(meta?.name));
33
+ export function registerAdmonitions(options) {
34
+ activateDirectives(); // idempotent; the shared grammar must be live before the first parse
35
+ const admonition = declarePluginKind(ADMONITION);
36
+ const title = declarePluginKind(ADMONITION_TITLE);
37
+ const build = admonitionFromDirective(admonition, title);
38
+ // Every name resolves to one kind, which reads its variant back from metadata.
39
+ for (const name of ADMONITION_KINDS) {
40
+ if (!isDirectiveRegistered('container', name)) {
41
+ registerDirective('container', name, { kind: admonition, fromDirective: build });
42
+ }
43
+ }
44
+ // `updateMetadata` is the sanctioned commit path: patch, rebuildRaw, one undoable edit.
45
+ const cycleKind = registerBlockCommand(admonition, 'admonition.cycleKind', (ctx) => {
46
+ const meta = getPluginMetadata(ctx.node);
47
+ const dir = ctx.arg === 'prev' ? -1 : 1;
48
+ const from = ADMONITION_KINDS.indexOf(coerceAdmonitionName(meta?.name));
49
+ const next = ADMONITION_KINDS[(from + dir + ADMONITION_KINDS.length) % ADMONITION_KINDS.length];
50
+ ctx.updateMetadata({ name: next });
51
+ return true;
52
+ });
53
+ registerBlockKind(admonition, {
54
+ mergeRole: 'container',
55
+ editable: true,
56
+ supportsInline: false,
57
+ // Opaque tier rule: no textual escape hatch at either edge, so both take the gap caret.
58
+ gapEdges: 'both',
59
+ container: {
60
+ // The title lives in the opener line, so raw is not a strip of the children.
61
+ contract: 'opaque',
62
+ rebuildRaw: rebuildAdmonitionRaw,
63
+ bodyWrap: DIRECTIVE_BODY_WRAP,
64
+ reservedChrome: { kind: title },
65
+ unwrapRole: {
66
+ firstChildBackspace: 'keep-reserved-chrome',
67
+ middleChildBackspace: 'default-merge'
68
+ }
69
+ },
70
+ keymap: [{ chord: 'Mod+7', command: cycleKind }],
71
+ conformanceFixture: ':::note Heads up\n\nbody\n\n:::\n',
72
+ closure: containerClosure({
73
+ roundTripVia: 'container contract=opaque — rebuildAdmonitionRaw (directive)',
74
+ focus: { mode: 'implemented', via: 'focus walks to the title chrome / first body child' },
75
+ mergeBackspace: { mode: 'implemented', via: 'mergeRole=container + unwrapRole' },
76
+ undo: {
77
+ mode: 'implemented',
78
+ via: 'updateMetadata — the kind cycle commits as one undoable metadataUpdate'
79
+ },
80
+ clipboard: {
81
+ mode: 'implemented',
82
+ via: 'byte-slice copy; a slice touching the title re-emits the callout — a mid-title start reopens it around the collected body, a mid-title end yields a title-only callout'
83
+ },
84
+ simOracle: {
85
+ mode: 'implemented',
86
+ via: 'admonition + paste-transform e2e under the [invariant:] watcher'
87
+ }
88
+ })
89
+ });
90
+ registerChromeLeaf(title, { blockClass: 'admonition-title' });
91
+ registerBlockComponent(admonition, defineBlockComponent(AdmonitionBlock));
92
+ if (options?.convertAlertsOnPaste) {
93
+ registerPasteTransform(githubAlertsPasteTransform);
94
+ }
95
+ // The component registered above renders both kinds.
96
+ registerGithubAlert();
97
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Document-scoped GitHub-alert conversion, the sanctioned rewrite pattern:
3
+ * `getSource()` → transform → write the `source` prop back. Scoping through
4
+ * `parse` rather than line scanning is what makes it fence-safe; nested alerts are
5
+ * skipped because rewriting one would mean rebuilding its ancestors' raw.
6
+ */
7
+ import { type PasteTransform } from '../../plugin';
8
+ import { type AlertConversion } from './gh-alert';
9
+ export declare function convertGithubAlertsInDocument(source: string): AlertConversion;
10
+ /** The line probe short-circuits the common no-alert paste before the parse. */
11
+ export declare const githubAlertsPasteTransform: PasteTransform;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Document-scoped GitHub-alert conversion, the sanctioned rewrite pattern:
3
+ * `getSource()` → transform → write the `source` prop back. Scoping through
4
+ * `parse` rather than line scanning is what makes it fence-safe; nested alerts are
5
+ * skipped because rewriting one would mean rebuilding its ancestors' raw.
6
+ */
7
+ import { parse } from '../../plugin';
8
+ import { convertAlertBlockquoteRaw, hasGithubAlert } from './gh-alert';
9
+ export function convertGithubAlertsInDocument(source) {
10
+ const doc = parse(source, { scope: 'document' });
11
+ let changed = false;
12
+ const parts = [doc.prefix];
13
+ for (const child of doc.children) {
14
+ parts.push(child.leadingTrivia);
15
+ // Both kinds feed the same first-line converter: a plain blockquote may still
16
+ // hold a mid-quote marker, which must stay literal.
17
+ const isAlertShaped = child.kind === 'blockquote' || child.kind === 'githubAlert';
18
+ const converted = isAlertShaped ? convertAlertBlockquoteRaw(child.raw) : null;
19
+ if (converted !== null) {
20
+ parts.push(converted);
21
+ changed = true;
22
+ }
23
+ else {
24
+ parts.push(child.raw);
25
+ }
26
+ }
27
+ parts.push(doc.suffix);
28
+ return { converted: parts.join(''), changed };
29
+ }
30
+ /** The line probe short-circuits the common no-alert paste before the parse. */
31
+ export const githubAlertsPasteTransform = {
32
+ name: 'admonitions.github-alerts',
33
+ transform(text) {
34
+ if (!hasGithubAlert(text))
35
+ return null;
36
+ const { converted, changed } = convertGithubAlertsInDocument(text);
37
+ return changed ? converted : null;
38
+ }
39
+ };
@@ -0,0 +1,13 @@
1
+ /** The type as typed (`NOTE`, `Note`); the opener stores it verbatim so source casing
2
+ * survives a rebuild. */
3
+ export declare function matchAlertMarker(line: string): string | null;
4
+ export declare function stripQuoteMarker(line: string): string;
5
+ export interface AlertConversion {
6
+ converted: string;
7
+ changed: boolean;
8
+ }
9
+ /** GitHub honors `[!TYPE]` only on the blockquote's first line; everything after,
10
+ * lazy-continuation lines and later literal markers alike, is body. */
11
+ export declare function convertAlertBlockquoteRaw(raw: string): string | null;
12
+ export declare function convertGithubAlerts(text: string): AlertConversion;
13
+ export declare function hasGithubAlert(text: string): boolean;
@@ -0,0 +1,83 @@
1
+ /**
2
+ * The single home for `> [!TYPE]` recognition, reused by the native `githubAlert` opener.
3
+ * Both converters run the parser's own extent authority so CommonMark §5.1 lazy
4
+ * continuation lands identically. On a whole document prefer the wrapper in
5
+ * `convert-document.ts`: the stream scanner here is not fence-safe.
6
+ */
7
+ import { blockquoteExtent, escalatedColonCount, splitLines } from '../../plugin';
8
+ import { ADMONITION_KINDS } from './kinds';
9
+ const ALERT_NAMES = new Set(ADMONITION_KINDS);
10
+ const CANONICAL_COLONS = 3;
11
+ /** Every `>` pattern here caps indent at CommonMark's 0–3 spaces: past that the line is
12
+ * indented code, and claiming it would promote a literal `>` to a marker on rebuild. */
13
+ const MARKER = /^ {0,3}>[ \t]*\[!([A-Za-z]+)\][ \t]*$/;
14
+ const QUOTE_OPEN = /^ {0,3}>/;
15
+ /** The type as typed (`NOTE`, `Note`); the opener stores it verbatim so source casing
16
+ * survives a rebuild. */
17
+ export function matchAlertMarker(line) {
18
+ const typed = MARKER.exec(line)?.[1];
19
+ return typed && ALERT_NAMES.has(typed.toLowerCase()) ? typed : null;
20
+ }
21
+ export function stripQuoteMarker(line) {
22
+ const m = /^ {0,3}>[ \t]?/.exec(line);
23
+ return m ? line.slice(m[0].length) : line;
24
+ }
25
+ /**
26
+ * Each emitted line keeps its source line ending so CRLF survives; the closer runs one line past
27
+ * the source, which is what the fallback covers. The body converts in the same pass: stripping a
28
+ * quote level promotes a nested `> [!TIP]` to a top-level marker a later pass would convert again.
29
+ */
30
+ function emitDirective(name, source) {
31
+ const fallback = source.find((line) => line.lineEnding !== '')?.lineEnding ?? '\n';
32
+ const stripped = source
33
+ .slice(1)
34
+ .map((line) => stripQuoteMarker(line.text) + (line.lineEnding || fallback))
35
+ .join('');
36
+ const body = splitLines(convertGithubAlerts(stripped).converted);
37
+ // Fence lengthened past any colon run in the body, which would otherwise read as the
38
+ // container's own closer once this output is written into the document.
39
+ const colons = ':'.repeat(escalatedColonCount(body.map((line) => line.text).join('\n'), CANONICAL_COLONS));
40
+ let out = `${colons}${name}${source[0].lineEnding || fallback}`;
41
+ for (let i = 0; i < body.length; i++)
42
+ out += body[i].text + (body[i].lineEnding || fallback);
43
+ return out + colons + source[source.length - 1].lineEnding;
44
+ }
45
+ /** GitHub honors `[!TYPE]` only on the blockquote's first line; everything after,
46
+ * lazy-continuation lines and later literal markers alike, is body. */
47
+ export function convertAlertBlockquoteRaw(raw) {
48
+ const lines = splitLines(raw);
49
+ if (lines.length === 0)
50
+ return null;
51
+ const typed = matchAlertMarker(lines[0].text);
52
+ return typed ? emitDirective(typed.toLowerCase(), lines) : null;
53
+ }
54
+ export function convertGithubAlerts(text) {
55
+ const lines = splitLines(text);
56
+ let converted = '';
57
+ let changed = false;
58
+ let i = 0;
59
+ while (i < lines.length) {
60
+ const typed = matchAlertMarker(lines[i].text);
61
+ if (typed && startsBlockquote(lines, i)) {
62
+ const { nextIndex } = blockquoteExtent(lines, i, lines.length);
63
+ // A marker line always opens a quote, so the extent claims at least this line;
64
+ // floored anyway because a loosened indent cap would hang this loop.
65
+ if (nextIndex > i) {
66
+ converted += emitDirective(typed.toLowerCase(), lines.slice(i, nextIndex));
67
+ changed = true;
68
+ i = nextIndex;
69
+ continue;
70
+ }
71
+ }
72
+ converted += lines[i].raw;
73
+ i++;
74
+ }
75
+ return { converted, changed };
76
+ }
77
+ export function hasGithubAlert(text) {
78
+ const lines = splitLines(text);
79
+ return lines.some((line, i) => matchAlertMarker(line.text) !== null && startsBlockquote(lines, i));
80
+ }
81
+ function startsBlockquote(lines, index) {
82
+ return index === 0 || !QUOTE_OPEN.test(lines[index - 1].text);
83
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Native GitHub alerts as a strip container in the blockquote mold, bytes kept and
3
+ * never rewritten to `:::note`. The marker lives only in the container's raw +
4
+ * metadata, so `strip(raw)` equals the serialized children. A separate kind rather
5
+ * than a directive-admonition variant, so kind stability and rebuildRaw stay
6
+ * unambiguous per kind (the ATX/setext heading precedent).
7
+ */
8
+ import { type CstNode } from '../../plugin';
9
+ /** Splitting the body on `\n` keeps a `\r` at each segment's tail, so CRLF rides through;
10
+ * the marker's own ending is read off the current raw. */
11
+ export declare function rebuildGithubAlertRaw(node: CstNode): void;
12
+ export declare function registerGithubAlert(): void;
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Native GitHub alerts as a strip container in the blockquote mold, bytes kept and
3
+ * never rewritten to `:::note`. The marker lives only in the container's raw +
4
+ * metadata, so `strip(raw)` equals the serialized children. A separate kind rather
5
+ * than a directive-admonition variant, so kind stability and rebuildRaw stay
6
+ * unambiguous per kind (the ATX/setext heading precedent).
7
+ */
8
+ import { OPENER_PRIORITIES, blockquoteExtent, containerClosure, declarePluginKind, declaredPluginKind, defineBlockComponent, getPluginMetadata, parseContainerBody, registerBlockComponent, registerBlockKind, registerBlockOpener, serializeChildren, setPluginMetadata } from '../../plugin';
9
+ import { matchAlertMarker, stripQuoteMarker } from './gh-alert';
10
+ import { GITHUB_ALERT } from './kinds';
11
+ import AdmonitionBlock from './AdmonitionBlock.svelte';
12
+ /** The `> [!TYPE]` marker line is the alert's own chrome, so a blank against it separates
13
+ * rather than materializing; nothing closes the alert below. */
14
+ const BODY_WRAP = { afterOpenerLine: true };
15
+ function tryOpen(ctx) {
16
+ const alertType = matchAlertMarker(ctx.line.text);
17
+ if (!alertType)
18
+ return null;
19
+ // The built-in extent scan, not the marker regex, is the authority on whether this line
20
+ // opens a blockquote: declining on a zero-line claim keeps a marker-rule drift from
21
+ // reaching the parse loop as a non-advancing return.
22
+ const { raw, nextIndex } = blockquoteExtent(ctx.lines, ctx.index, ctx.end);
23
+ const consumed = nextIndex - ctx.index;
24
+ if (consumed <= 0)
25
+ return null;
26
+ // A fresh parse entry, so the body's own line 0 must not read as the document top.
27
+ const body = parseContainerBody(stripBody(ctx.lines, ctx.index + 1, nextIndex), BODY_WRAP, {
28
+ scope: 'fragment'
29
+ });
30
+ const node = {
31
+ kind: declaredPluginKind(GITHUB_ALERT),
32
+ leadingTrivia: ctx.leadingTrivia,
33
+ raw,
34
+ innerPrefix: body.prefix,
35
+ children: body.children,
36
+ innerSuffix: body.suffix
37
+ };
38
+ setPluginMetadata(node, { alertType });
39
+ return { node, consumed };
40
+ }
41
+ function stripBody(lines, start, end) {
42
+ let out = '';
43
+ for (let i = start; i < end; i++)
44
+ out += stripQuoteMarker(lines[i].text) + lines[i].lineEnding;
45
+ return out;
46
+ }
47
+ /** Splitting the body on `\n` keeps a `\r` at each segment's tail, so CRLF rides through;
48
+ * the marker's own ending is read off the current raw. */
49
+ export function rebuildGithubAlertRaw(node) {
50
+ const alertType = getPluginMetadata(node)?.alertType ?? 'NOTE';
51
+ const marker = `> [!${alertType}]`;
52
+ const body = (node.innerPrefix ?? '') + serializeChildren(node.children ?? []) + (node.innerSuffix ?? '');
53
+ if (body === '') {
54
+ node.raw = node.raw.endsWith('\n') ? marker + firstLineEnding(node.raw) : marker;
55
+ return;
56
+ }
57
+ node.raw = marker + firstLineEnding(node.raw) + prefixQuoteLines(body);
58
+ }
59
+ /** Not `core/lines.ts`'s `trailingLineEnding`: on a mixed-ending block that reader would
60
+ * rewrite the marker's CRLF to LF. Rebuilding threads each line's own ending. */
61
+ function firstLineEnding(raw) {
62
+ const nl = raw.indexOf('\n');
63
+ if (nl < 0)
64
+ return '\n';
65
+ return raw[nl - 1] === '\r' ? '\r\n' : '\n';
66
+ }
67
+ function prefixQuoteLines(body) {
68
+ const lines = body.split('\n');
69
+ return lines
70
+ .map((line, i) => {
71
+ if (i === lines.length - 1 && line === '')
72
+ return '';
73
+ if (line === '' || line === '\r')
74
+ return `>${line}`;
75
+ return `> ${line}`;
76
+ })
77
+ .join('\n');
78
+ }
79
+ export function registerGithubAlert() {
80
+ const kind = declarePluginKind(GITHUB_ALERT);
81
+ registerBlockOpener(kind, {
82
+ // Below blockquote so the alert form is claimed first; its own slot, distinct
83
+ // from every other opener, so the co-installed bundle stays unique (G1.10).
84
+ priority: OPENER_PRIORITIES.blockquote - 5,
85
+ tryOpen,
86
+ interruptsParagraph: (t) => matchAlertMarker(t) !== null
87
+ });
88
+ registerBlockKind(kind, {
89
+ gapEdges: 'none',
90
+ mergeRole: 'container',
91
+ editable: true,
92
+ supportsInline: false,
93
+ conformanceFixture: '> [!NOTE]\n> Heads up.\n',
94
+ container: {
95
+ contract: 'strip',
96
+ rebuildRaw: rebuildGithubAlertRaw,
97
+ bodyWrap: BODY_WRAP,
98
+ // The alert is a blockquote with a marker, so it unwraps as one: lifting the
99
+ // first child out drops the marker and reparses plain.
100
+ unwrapRole: {
101
+ firstChildBackspace: 'lift-first-child-drop-opener',
102
+ middleChildBackspace: 'default-merge'
103
+ },
104
+ // The marker is position-independent, so rebuildRaw re-emits it after a move.
105
+ reorderChildren: {}
106
+ },
107
+ closure: containerClosure({
108
+ roundTripVia: 'container contract=strip — rebuildGithubAlertRaw re-emits the > [!TYPE] marker (casing from metadata) + > -prefixed body, CRLF threaded',
109
+ focus: {
110
+ mode: 'implemented',
111
+ via: 'focus walks into the first body child via createContainerBlock'
112
+ },
113
+ mergeBackspace: {
114
+ mode: 'implemented',
115
+ via: 'mergeRole=container + unwrapRole (lift-first-child-drop-opener; default-merge) — Backspace at the body start lifts the first child out and drops the marker, leaving a plain blockquote'
116
+ },
117
+ undo: { mode: 'inherit-default' },
118
+ simOracle: {
119
+ mode: 'implemented',
120
+ via: 'github-alert-ops simulation under the loaded-ops corruption oracles (formation, contained merge, marker-dropping unwrap)'
121
+ }
122
+ })
123
+ });
124
+ registerBlockComponent(kind, defineBlockComponent(AdmonitionBlock));
125
+ }
@@ -0,0 +1,6 @@
1
+ export { admonitionsPlugin } from './register';
2
+ export type { AdmonitionsOptions } from './admonition-kind';
3
+ export { convertGithubAlerts, hasGithubAlert } from './gh-alert';
4
+ export type { AlertConversion } from './gh-alert';
5
+ export { convertGithubAlertsInDocument } from './convert-document';
6
+ export { ADMONITION_KINDS, GITHUB_ALERT, type AdmonitionName, type GithubAlertMetadata } from './kinds';
@@ -0,0 +1,8 @@
1
+ // Two kinds sharing one component: the `:::name` directives, which all resolve to
2
+ // one admonition kind, and native GitHub alerts (`> [!NOTE]`, kind `githubAlert`).
3
+ export { admonitionsPlugin } from './register';
4
+ // convertGithubAlerts is naive full-text and rewrites inside code fences; for a whole
5
+ // document prefer convertGithubAlertsInDocument, which scopes through the parser.
6
+ export { convertGithubAlerts, hasGithubAlert } from './gh-alert';
7
+ export { convertGithubAlertsInDocument } from './convert-document';
8
+ export { ADMONITION_KINDS, GITHUB_ALERT } from './kinds';
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Shared vocabulary for the admonitions plugin, in its own module so registration
3
+ * and the component agree on names without a circular import.
4
+ */
5
+ export declare const ADMONITION = "admonition";
6
+ export declare const ADMONITION_TITLE = "admonition-title";
7
+ export declare const GITHUB_ALERT = "githubAlert";
8
+ /** In cycle order; index 0 is the fallback when a node carries no name in its metadata. */
9
+ export declare const ADMONITION_KINDS: readonly ["note", "tip", "important", "warning", "caution"];
10
+ export type AdmonitionName = (typeof ADMONITION_KINDS)[number];
11
+ export declare function coerceAdmonitionName(value: unknown): AdmonitionName;
12
+ export declare function capitalize(name: string): string;
13
+ /** Every field flows back into the opener bytes through `rebuildRaw`. Primitive-valued
14
+ * only: the undo clone shallow-copies metadata. */
15
+ export interface AdmonitionMetadata {
16
+ name: string;
17
+ colonCount: number;
18
+ closerColonCount: number;
19
+ closerNewline: boolean;
20
+ lineEnding: string;
21
+ }
22
+ /** The marker's type as typed (`NOTE`, `Note`), stored verbatim so `rebuildRaw` re-emits
23
+ * the source casing; readers lowercase through `coerceAdmonitionName` for display. */
24
+ export interface GithubAlertMetadata {
25
+ alertType: string;
26
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Shared vocabulary for the admonitions plugin, in its own module so registration
3
+ * and the component agree on names without a circular import.
4
+ */
5
+ export const ADMONITION = 'admonition';
6
+ export const ADMONITION_TITLE = 'admonition-title';
7
+ export const GITHUB_ALERT = 'githubAlert';
8
+ /** In cycle order; index 0 is the fallback when a node carries no name in its metadata. */
9
+ export const ADMONITION_KINDS = ['note', 'tip', 'important', 'warning', 'caution'];
10
+ function isAdmonitionName(value) {
11
+ return typeof value === 'string' && ADMONITION_KINDS.includes(value);
12
+ }
13
+ export function coerceAdmonitionName(value) {
14
+ return isAdmonitionName(value) ? value : ADMONITION_KINDS[0];
15
+ }
16
+ export function capitalize(name) {
17
+ return name.charAt(0).toUpperCase() + name.slice(1);
18
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Two block kinds from one setup, so this wires `definePlugin` directly rather than
3
+ * the single-kind `definePluginBlock` sugar.
4
+ */
5
+ import { type EditorPlugin } from '../../plugin';
6
+ import { type AdmonitionsOptions } from './admonition-kind';
7
+ export declare function admonitionsPlugin(options?: AdmonitionsOptions): EditorPlugin;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Two block kinds from one setup, so this wires `definePlugin` directly rather than
3
+ * the single-kind `definePluginBlock` sugar.
4
+ */
5
+ import { definePlugin } from '../../plugin';
6
+ import { registerAdmonitions } from './admonition-kind';
7
+ export function admonitionsPlugin(options) {
8
+ return definePlugin({
9
+ name: 'admonitions',
10
+ setup: () => registerAdmonitions(options)
11
+ });
12
+ }
@@ -0,0 +1,129 @@
1
+ <script lang="ts">
2
+ // Collapse-ness has one definition, the descriptor's `reservedChrome.isCollapsed` probe.
3
+ // The reader's transient disclosure layers over it by feeding the factory the effective
4
+ // state, so the window clamp, focus clamp and caret never disagree.
5
+ import {
6
+ BlockList,
7
+ createContainerBlock,
8
+ isCollapsedContainer,
9
+ type NodeView
10
+ } from '../../plugin';
11
+ import { createReaderDisclosure } from './details-disclosure.svelte';
12
+
13
+ let { node, index, myPath = [] }: { node: NodeView; index: number; myPath?: number[] } = $props();
14
+
15
+ let boxEl: HTMLElement | undefined = $state();
16
+
17
+ const documentOpen = $derived(!isCollapsedContainer(node));
18
+
19
+ const { blockListProps, containerApi, updateOwnMetadata, getPresentationMode } =
20
+ createContainerBlock({
21
+ getNode: () => node,
22
+ getIndex: () => index,
23
+ getPath: () => myPath,
24
+ getBoxEl: () => boxEl,
25
+ // The effective state, so a transiently-opened section actually mounts and
26
+ // measures its body.
27
+ isCollapsed: () => !open
28
+ });
29
+
30
+ const reading = $derived(getPresentationMode() === 'reading');
31
+ const reader = createReaderDisclosure({ isDocumentOpen: () => documentOpen });
32
+ // Leaving reading mode discards the flip: with the bytes editable again, a view
33
+ // state they disagree with would be a live lie.
34
+ $effect(() => {
35
+ if (!reading) reader.reset();
36
+ });
37
+ const open = $derived(reading ? reader.open : documentOpen);
38
+
39
+ function commitDisclosure() {
40
+ const isOpen = open;
41
+ // Collapsing unmounts the body, orphaning a caret inside it, so move it to the summary
42
+ // in the commit's afterTick. Read before the commit: the toggle suppresses mousedown,
43
+ // so a mouse toggle leaves the caret in the body.
44
+ const pos = isOpen ? (containerApi.getCursorPosition?.() ?? null) : null;
45
+ const caretInBody = pos != null && pos.path[0] >= 1;
46
+ updateOwnMetadata({ open: !isOpen }, caretInBody ? () => containerApi.focus(0) : undefined);
47
+ }
48
+
49
+ // Reading mode gets the handler that cannot write, not one that declines to: this
50
+ // is the only mode read, and the toggle keeps working for a reader either way.
51
+ const onToggle = $derived(reading ? reader.toggle : commitDisclosure);
52
+
53
+ export { containerApi };
54
+ </script>
55
+
56
+ <div class="details-block" bind:this={boxEl}>
57
+ <button
58
+ type="button"
59
+ class="details-toggle"
60
+ contenteditable="false"
61
+ aria-expanded={open}
62
+ aria-label="Toggle details"
63
+ onmousedown={(e) => e.preventDefault()}
64
+ onclick={onToggle}
65
+ ></button>
66
+ <BlockList {...blockListProps} />
67
+ </div>
68
+
69
+ <style>
70
+ /* Mirrors the admonition's rail gap and caret column so the two read as a family. */
71
+ .details-block {
72
+ position: relative;
73
+ margin: 0.8em 0;
74
+ padding: 0.15em 0 0.15em 1.7em;
75
+ border-left: 3px solid var(--color-border, #3d4047);
76
+ }
77
+
78
+ /* A real focusable button (keyboard disclosure), so it is a sibling of BlockList: the
79
+ windowing lookup needs BlockList to stay a direct child, not the sole one. */
80
+ .details-toggle {
81
+ position: absolute;
82
+ left: 0.45em;
83
+ /* Anchors the button's em geometry to the editor font; without it the UA font-size
84
+ shrinks the line-box math below and floats the caret above the summary title. */
85
+ font: inherit;
86
+ /* Overlays the summary's first line box exactly (block padding + the leaf's 2px,
87
+ one line-height tall), so flex-centering lands the caret on the title line. */
88
+ top: calc(0.15em + 2px);
89
+ width: 1.1em;
90
+ height: 1.6em;
91
+ display: flex;
92
+ align-items: center;
93
+ padding: 0;
94
+ border: none;
95
+ background: transparent;
96
+ cursor: pointer;
97
+ color: var(--color-text-muted, #aaaaaa);
98
+ }
99
+ .details-toggle::before {
100
+ content: '';
101
+ display: block;
102
+ width: 0;
103
+ height: 0;
104
+ margin-left: 0.25em;
105
+ border-left: 6px solid currentColor;
106
+ border-top: 4px solid transparent;
107
+ border-bottom: 4px solid transparent;
108
+ transition: transform 0.1s ease;
109
+ }
110
+ .details-toggle[aria-expanded='true']::before {
111
+ transform: rotate(90deg);
112
+ }
113
+ .details-toggle:focus-visible {
114
+ outline: 2px solid var(--color-accent, #567b67);
115
+ outline-offset: 1px;
116
+ border-radius: var(--radius-ui, 3px);
117
+ }
118
+
119
+ /* The summary leaf is promoted to a title row by CSS alone; it stays a real block
120
+ inside `.block-list`, so selection and windowing treat it as an ordinary child. */
121
+ .details-block :global(.details-summary) {
122
+ font-weight: 600;
123
+ }
124
+ .details-block :global(.details-summary:empty)::before {
125
+ content: 'Summary';
126
+ color: var(--color-ui-dulled, #afb1b3);
127
+ pointer-events: none;
128
+ }
129
+ </style>
@@ -0,0 +1,11 @@
1
+ import { type NodeView } from '../../plugin';
2
+ type $$ComponentProps = {
3
+ node: NodeView;
4
+ index: number;
5
+ myPath?: number[];
6
+ };
7
+ declare const DetailsBlock: import("svelte").Component<$$ComponentProps, {
8
+ containerApi: import("../../plugin").ContainerBlockComponent;
9
+ }, "">;
10
+ type DetailsBlock = ReturnType<typeof DetailsBlock>;
11
+ export default DetailsBlock;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The half of the `<details>` toggle that writes nothing: reading mode must let a
3
+ * reader open a collapsed section without touching bytes, and these deps carry no
4
+ * commit door, so no flip reachable from here can become an edit. Absent-by-default
5
+ * rather than seeded on entry, so the document's own `open` shows through even for a
6
+ * block windowed out at the moment of the flip. Scoped to the instance, so it is ephemeral.
7
+ */
8
+ export interface ReaderDisclosure {
9
+ /** The reader's flip if they made one, else the document's own state. */
10
+ readonly open: boolean;
11
+ toggle(): void;
12
+ reset(): void;
13
+ }
14
+ export declare function createReaderDisclosure(deps: {
15
+ /** Getter, so the document's `open` is read live and never snapshotted. */
16
+ isDocumentOpen: () => boolean;
17
+ }): ReaderDisclosure;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * The half of the `<details>` toggle that writes nothing: reading mode must let a
3
+ * reader open a collapsed section without touching bytes, and these deps carry no
4
+ * commit door, so no flip reachable from here can become an edit. Absent-by-default
5
+ * rather than seeded on entry, so the document's own `open` shows through even for a
6
+ * block windowed out at the moment of the flip. Scoped to the instance, so it is ephemeral.
7
+ */
8
+ export function createReaderDisclosure(deps) {
9
+ let flipped = $state(null);
10
+ return {
11
+ get open() {
12
+ return flipped ?? deps.isDocumentOpen();
13
+ },
14
+ toggle() {
15
+ flipped = !(flipped ?? deps.isDocumentOpen());
16
+ },
17
+ reset() {
18
+ // Conditional: an unconditional write re-invalidates every reader of `open`
19
+ // on each pass of the effect that calls this.
20
+ if (flipped !== null)
21
+ flipped = null;
22
+ }
23
+ };
24
+ }