@voithos-labs/aragonite 0.10.4 → 0.10.7

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 (1021) hide show
  1. package/README.md +2 -2
  2. package/dist/a11y-strings.d.ts +11 -5
  3. package/dist/a11y-strings.js +60 -5
  4. package/dist/action-contracts.d.ts +242 -155
  5. package/dist/action-contracts.js +2 -2
  6. package/dist/active-editor.d.ts +3 -3
  7. package/dist/active-editor.js +8 -9
  8. package/dist/ambient/ambient-dom.d.ts +2 -5
  9. package/dist/ambient/ambient-dom.js +16 -62
  10. package/dist/assert.js +6 -5
  11. package/dist/block-component.d.ts +135 -109
  12. package/dist/block-component.js +30 -22
  13. package/dist/block-id.d.ts +6 -10
  14. package/dist/block-id.js +25 -14
  15. package/dist/bounded-memo.d.ts +5 -5
  16. package/dist/bounded-memo.js +6 -6
  17. package/dist/components/BlockDragHandle.svelte +12 -21
  18. package/dist/components/BlockHost.svelte +56 -134
  19. package/dist/components/BlockList.svelte +22 -19
  20. package/dist/components/DecorationOverlay.svelte +9 -10
  21. package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
  22. package/dist/components/Editor.svelte +603 -1126
  23. package/dist/components/Editor.svelte.d.ts +9 -20
  24. package/dist/components/GapCaret.svelte +26 -59
  25. package/dist/components/SelectionOverlay.svelte +26 -51
  26. package/dist/components/SelectionOverlay.svelte.d.ts +5 -3
  27. package/dist/components/TailInsert.svelte +8 -55
  28. package/dist/components/TailInsert.svelte.d.ts +4 -6
  29. package/dist/components/block-content-selector.d.ts +11 -11
  30. package/dist/components/block-content-selector.js +11 -11
  31. package/dist/components/block-el-lookup.d.ts +6 -0
  32. package/dist/components/block-el-lookup.js +27 -0
  33. package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
  34. package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
  35. package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
  36. package/dist/components/blocks/code/CodeBlock.svelte +255 -276
  37. package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
  38. package/dist/components/blocks/code/CodeBlockRail.svelte +72 -87
  39. package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
  40. package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
  41. package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
  42. package/dist/components/blocks/code/code-bootstrap.js +29 -34
  43. package/dist/components/blocks/code/code-context-actions.js +5 -4
  44. package/dist/components/blocks/code/code-enter.js +2 -2
  45. package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
  46. package/dist/components/blocks/code/code-fence-boundary.js +40 -66
  47. package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
  48. package/dist/components/blocks/code/code-fence-exit.js +24 -25
  49. package/dist/components/blocks/code/code-indent.d.ts +2 -2
  50. package/dist/components/blocks/code/code-indent.js +4 -7
  51. package/dist/components/blocks/code/code-languages.d.ts +16 -12
  52. package/dist/components/blocks/code/code-languages.js +57 -39
  53. package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
  54. package/dist/components/blocks/code/code-paste-surface.js +9 -18
  55. package/dist/components/blocks/code/code-renderer.d.ts +21 -5
  56. package/dist/components/blocks/code/code-renderer.js +90 -125
  57. package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
  58. package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
  59. package/dist/components/blocks/directive/activate-directives.js +18 -13
  60. package/dist/components/blocks/editable-leaf.d.ts +50 -74
  61. package/dist/components/blocks/editable-leaf.js +141 -203
  62. package/dist/components/blocks/editable-surface.d.ts +96 -100
  63. package/dist/components/blocks/editable-surface.js +101 -109
  64. package/dist/components/blocks/list/ListBlock.svelte +45 -90
  65. package/dist/components/blocks/list/ListItemBlock.svelte +93 -147
  66. package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +1 -0
  67. package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
  68. package/dist/components/blocks/list/task-checkbox.js +12 -7
  69. package/dist/components/blocks/plain-text-backend.d.ts +4 -20
  70. package/dist/components/blocks/plain-text-backend.js +9 -43
  71. package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
  72. package/dist/components/blocks/surface-wiring.svelte.js +15 -34
  73. package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
  74. package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
  75. package/dist/components/blocks/table/TableBlock.svelte +100 -165
  76. package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
  77. package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
  78. package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
  79. package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
  80. package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
  81. package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
  82. package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
  83. package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
  84. package/dist/components/blocks/table/cell-pointer.js +49 -71
  85. package/dist/components/blocks/table/cell-render.d.ts +24 -29
  86. package/dist/components/blocks/table/cell-render.js +29 -31
  87. package/dist/components/blocks/table/selected-cells.d.ts +7 -7
  88. package/dist/components/blocks/table/selected-cells.js +9 -13
  89. package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
  90. package/dist/components/blocks/table/table-caret-at-point.js +5 -5
  91. package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
  92. package/dist/components/blocks/table/table-cell-paste.js +27 -43
  93. package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
  94. package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
  95. package/dist/components/blocks/table/table-menu-model.js +6 -10
  96. package/dist/components/blocks/table/table-navigation.js +2 -2
  97. package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
  98. package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
  99. package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
  100. package/dist/components/blocks/text/auto-pair-record.js +51 -0
  101. package/dist/components/blocks/text/click-snap-guard.d.ts +8 -6
  102. package/dist/components/blocks/text/click-snap-guard.js +10 -7
  103. package/dist/components/blocks/text/composition-seat.d.ts +17 -14
  104. package/dist/components/blocks/text/composition-seat.js +11 -11
  105. package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
  106. package/dist/components/blocks/text/construct-edge-delete.js +50 -65
  107. package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
  108. package/dist/components/blocks/text/construct-reveal.js +13 -14
  109. package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
  110. package/dist/components/blocks/text/delimiter-autopair.js +87 -103
  111. package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
  112. package/dist/components/blocks/text/edge-policy-dispatch.js +150 -181
  113. package/dist/components/blocks/text/edge-seat.d.ts +17 -26
  114. package/dist/components/blocks/text/edge-seat.js +43 -70
  115. package/dist/components/blocks/text/link-at-point.d.ts +9 -9
  116. package/dist/components/blocks/text/link-at-point.js +12 -15
  117. package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
  118. package/dist/components/blocks/text/live-join-seam.js +75 -112
  119. package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
  120. package/dist/components/blocks/text/live-selection-edit.js +32 -108
  121. package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
  122. package/dist/components/blocks/text/live-split-rebalance.js +50 -67
  123. package/dist/components/blocks/text/marker-completion.d.ts +7 -12
  124. package/dist/components/blocks/text/marker-completion.js +17 -10
  125. package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
  126. package/dist/components/blocks/text/pending-mark-insert.js +30 -49
  127. package/dist/components/blocks/text/screen-diff.d.ts +5 -15
  128. package/dist/components/blocks/text/screen-diff.js +5 -19
  129. package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
  130. package/dist/components/blocks/text/text-clipboard.js +27 -32
  131. package/dist/components/blocks/text/text-keydown.d.ts +20 -30
  132. package/dist/components/blocks/text/text-keydown.js +54 -51
  133. package/dist/components/blocks/text/text-render.d.ts +25 -35
  134. package/dist/components/blocks/text/text-render.js +82 -61
  135. package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
  136. package/dist/components/blocks/text/widget-adjacency.js +17 -17
  137. package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
  138. package/dist/components/blocks/text/widget-interaction.js +212 -199
  139. package/dist/components/blocks/widget-portal.d.ts +20 -29
  140. package/dist/components/blocks/widget-portal.js +16 -14
  141. package/dist/components/built-in-blocks.d.ts +3 -4
  142. package/dist/components/built-in-blocks.js +17 -18
  143. package/dist/components/drag-handle.d.ts +12 -35
  144. package/dist/components/drag-handle.js +22 -68
  145. package/dist/components/editor-built-ins.d.ts +1 -0
  146. package/dist/components/editor-built-ins.js +16 -0
  147. package/dist/components/editor-root-clipboard.d.ts +6 -6
  148. package/dist/components/editor-root-clipboard.js +16 -27
  149. package/dist/components/editor-root-document-swap.d.ts +49 -0
  150. package/dist/components/editor-root-document-swap.js +54 -0
  151. package/dist/components/editor-root-focus.d.ts +5 -4
  152. package/dist/components/editor-root-focus.js +51 -22
  153. package/dist/components/editor-root-focused-surface.d.ts +35 -0
  154. package/dist/components/editor-root-focused-surface.js +65 -0
  155. package/dist/components/editor-root-geometry.d.ts +15 -24
  156. package/dist/components/editor-root-geometry.js +27 -31
  157. package/dist/components/editor-root-gestures.d.ts +39 -0
  158. package/dist/components/editor-root-gestures.js +189 -0
  159. package/dist/components/editor-root-keydown.d.ts +10 -25
  160. package/dist/components/editor-root-keydown.js +19 -43
  161. package/dist/components/editor-root-listeners.d.ts +22 -24
  162. package/dist/components/editor-root-listeners.js +49 -24
  163. package/dist/components/editor-root-menus.d.ts +51 -0
  164. package/dist/components/editor-root-menus.js +147 -0
  165. package/dist/components/editor-root-mode-flip.d.ts +16 -11
  166. package/dist/components/editor-root-mode-flip.js +36 -34
  167. package/dist/components/editor-root-scroll-host.d.ts +22 -0
  168. package/dist/components/editor-root-scroll-host.js +34 -0
  169. package/dist/components/editor-root-test-surface.d.ts +48 -0
  170. package/dist/components/editor-root-test-surface.js +6 -0
  171. package/dist/components/image/ImageOverlayHost.svelte +44 -35
  172. package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
  173. package/dist/components/image/ImageProperties.svelte +37 -41
  174. package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
  175. package/dist/components/image/ImageResizeHandles.svelte +14 -26
  176. package/dist/components/image/image-crop.d.ts +5 -11
  177. package/dist/components/image/image-crop.js +5 -11
  178. package/dist/components/image/image-edit-commit.d.ts +19 -16
  179. package/dist/components/image/image-edit-commit.js +74 -38
  180. package/dist/components/image/image-resize.d.ts +2 -5
  181. package/dist/components/image/image-resize.js +3 -6
  182. package/dist/components/image/image-widget-editing.d.ts +3 -3
  183. package/dist/components/image/image-widget-editing.js +9 -9
  184. package/dist/components/image/widget-dom.d.ts +2 -3
  185. package/dist/components/image/widget-dom.js +19 -24
  186. package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
  187. package/dist/components/image/widget-selection-state.svelte.js +26 -19
  188. package/dist/components/kind-cue.svelte.d.ts +21 -0
  189. package/dist/components/kind-cue.svelte.js +35 -0
  190. package/dist/components/link-card/LinkCard.svelte +115 -64
  191. package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
  192. package/dist/components/link-card/LinkCardHost.svelte +42 -33
  193. package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
  194. package/dist/components/link-card/link-card-commit.d.ts +16 -19
  195. package/dist/components/link-card/link-card-commit.js +21 -30
  196. package/dist/components/link-card/link-card-entry.d.ts +13 -23
  197. package/dist/components/link-card/link-card-entry.js +16 -24
  198. package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
  199. package/dist/components/link-card/link-card-state.svelte.js +2 -2
  200. package/dist/components/lrd-map-gate.d.ts +4 -11
  201. package/dist/components/lrd-map-gate.js +5 -11
  202. package/dist/components/menu/BlockMenu.svelte +20 -81
  203. package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
  204. package/dist/components/menu/InlineMenuHost.svelte +191 -0
  205. package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
  206. package/dist/components/menu/MenuIcon.svelte +3 -103
  207. package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
  208. package/dist/components/menu/SelectionToolbar.svelte +30 -35
  209. package/dist/components/menu/SelectionToolbar.svelte.d.ts +3 -5
  210. package/dist/components/menu/clipboard-actions.d.ts +3 -4
  211. package/dist/components/menu/clipboard-actions.js +3 -4
  212. package/dist/components/menu/default-context-actions.d.ts +4 -13
  213. package/dist/components/menu/default-context-actions.js +49 -67
  214. package/dist/components/menu/flyout-placement.d.ts +2 -2
  215. package/dist/components/menu/flyout-placement.js +2 -2
  216. package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
  217. package/dist/components/menu/menu-presence.svelte.js +19 -0
  218. package/dist/components/paste-image-arm.d.ts +6 -11
  219. package/dist/components/paste-image-arm.js +11 -18
  220. package/dist/components/portal.d.ts +2 -5
  221. package/dist/components/portal.js +4 -7
  222. package/dist/core/directive/activate.d.ts +4 -5
  223. package/dist/core/directive/activate.js +8 -9
  224. package/dist/core/directive/container-opener.js +13 -12
  225. package/dist/core/directive/grammar.d.ts +2 -5
  226. package/dist/core/directive/grammar.js +10 -10
  227. package/dist/core/directive/kinds.d.ts +4 -7
  228. package/dist/core/directive/kinds.js +14 -16
  229. package/dist/core/directive/registry.d.ts +12 -9
  230. package/dist/core/directive/registry.js +19 -20
  231. package/dist/core/directive/text-recognizer.d.ts +3 -2
  232. package/dist/core/directive/text-recognizer.js +5 -9
  233. package/dist/core/escapable.d.ts +1 -5
  234. package/dist/core/escapable.js +1 -5
  235. package/dist/core/inline/backticks.d.ts +3 -4
  236. package/dist/core/inline/backticks.js +3 -4
  237. package/dist/core/inline/character-refs.js +2 -1
  238. package/dist/core/inline/destination-bytes.d.ts +6 -3
  239. package/dist/core/inline/destination-bytes.js +50 -8
  240. package/dist/core/inline/entity-widget.d.ts +4 -3
  241. package/dist/core/inline/entity-widget.js +6 -6
  242. package/dist/core/inline/format-toggle.d.ts +22 -28
  243. package/dist/core/inline/format-toggle.js +97 -129
  244. package/dist/core/inline/html-entities.d.ts +2 -3
  245. package/dist/core/inline/html-entities.js +2 -3
  246. package/dist/core/inline/html-tag-grammar.js +6 -2
  247. package/dist/core/inline/image-dimensions.d.ts +2 -0
  248. package/dist/core/inline/image-dimensions.js +19 -2
  249. package/dist/core/inline/image-source-bytes.d.ts +11 -0
  250. package/dist/core/inline/image-source-bytes.js +71 -0
  251. package/dist/core/inline/index.d.ts +28 -21
  252. package/dist/core/inline/index.js +56 -34
  253. package/dist/core/inline/inline-cache.d.ts +12 -15
  254. package/dist/core/inline/inline-cache.js +11 -14
  255. package/dist/core/inline/inline-widgets.d.ts +54 -75
  256. package/dist/core/inline/inline-widgets.js +54 -62
  257. package/dist/core/inline/link-destination.d.ts +31 -0
  258. package/dist/core/inline/link-destination.js +129 -0
  259. package/dist/core/inline/link-reference-resolver.d.ts +8 -6
  260. package/dist/core/inline/link-reference-resolver.js +10 -6
  261. package/dist/core/inline/link-source-bytes.d.ts +31 -0
  262. package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
  263. package/dist/core/inline/live-edit/read-back.d.ts +29 -0
  264. package/dist/core/inline/live-edit/read-back.js +50 -0
  265. package/dist/core/inline/picture.d.ts +10 -0
  266. package/dist/core/inline/picture.js +40 -0
  267. package/dist/core/inline/scan/autolinks.d.ts +7 -8
  268. package/dist/core/inline/scan/autolinks.js +80 -59
  269. package/dist/core/inline/scan/brackets.d.ts +2 -2
  270. package/dist/core/inline/scan/brackets.js +6 -103
  271. package/dist/core/inline/scan/code-spans.d.ts +4 -0
  272. package/dist/core/inline/scan/code-spans.js +8 -0
  273. package/dist/core/inline/scan/emphasis.js +10 -14
  274. package/dist/core/inline/scan/index.d.ts +3 -1
  275. package/dist/core/inline/scan/index.js +32 -33
  276. package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
  277. package/dist/core/inline/scan/plugin-syntax.js +75 -89
  278. package/dist/core/inline/scan/scan-state.d.ts +2 -0
  279. package/dist/core/inline/scan/scan-state.js +1 -0
  280. package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
  281. package/dist/core/inline/scan/simple-nodes.js +2 -5
  282. package/dist/core/inline/scan/triggers.d.ts +17 -0
  283. package/dist/core/inline/scan/triggers.js +26 -0
  284. package/dist/core/inline/scan/url.js +8 -10
  285. package/dist/core/inline/transparency.d.ts +2 -1
  286. package/dist/core/inline/transparency.js +31 -15
  287. package/dist/core/inline/visibility.d.ts +30 -49
  288. package/dist/core/inline/visibility.js +31 -49
  289. package/dist/core/inline/walk.d.ts +4 -10
  290. package/dist/core/inline/walk.js +4 -10
  291. package/dist/core/inline-render.d.ts +22 -27
  292. package/dist/core/inline-render.js +51 -60
  293. package/dist/core/lines.d.ts +67 -26
  294. package/dist/core/lines.js +164 -33
  295. package/dist/core/metadata-parity.d.ts +9 -0
  296. package/dist/core/metadata-parity.js +25 -0
  297. package/dist/core/node-views.d.ts +7 -6
  298. package/dist/core/node-views.js +5 -5
  299. package/dist/core/nodes.d.ts +34 -44
  300. package/dist/core/nodes.js +4 -12
  301. package/dist/core/parser.d.ts +27 -34
  302. package/dist/core/parser.js +53 -67
  303. package/dist/core/parsers/blockquote.d.ts +5 -8
  304. package/dist/core/parsers/blockquote.js +11 -10
  305. package/dist/core/parsers/built-in-openers.d.ts +2 -5
  306. package/dist/core/parsers/built-in-openers.js +5 -8
  307. package/dist/core/parsers/fence-syntax.d.ts +36 -7
  308. package/dist/core/parsers/fence-syntax.js +61 -11
  309. package/dist/core/parsers/fenced-code.d.ts +16 -0
  310. package/dist/core/parsers/fenced-code.js +16 -15
  311. package/dist/core/parsers/heading.d.ts +19 -2
  312. package/dist/core/parsers/heading.js +50 -2
  313. package/dist/core/parsers/html-block.d.ts +3 -6
  314. package/dist/core/parsers/html-block.js +10 -11
  315. package/dist/core/parsers/indented-code.d.ts +1 -1
  316. package/dist/core/parsers/indented-code.js +2 -8
  317. package/dist/core/parsers/link-reference.d.ts +5 -3
  318. package/dist/core/parsers/link-reference.js +116 -120
  319. package/dist/core/parsers/list.d.ts +12 -5
  320. package/dist/core/parsers/list.js +53 -36
  321. package/dist/core/parsers/paragraph.d.ts +3 -3
  322. package/dist/core/parsers/paragraph.js +14 -5
  323. package/dist/core/parsers/table-completion.d.ts +2 -5
  324. package/dist/core/parsers/table-completion.js +7 -10
  325. package/dist/core/parsers/table.d.ts +8 -8
  326. package/dist/core/parsers/table.js +23 -26
  327. package/dist/core/parsers/thematic-break.js +15 -14
  328. package/dist/core/paths.d.ts +13 -0
  329. package/dist/core/paths.js +31 -0
  330. package/dist/core/terminator-escalation.d.ts +0 -7
  331. package/dist/core/terminator-escalation.js +5 -8
  332. package/dist/core/url-policy.d.ts +2 -5
  333. package/dist/core/url-policy.js +8 -12
  334. package/dist/cursor/caret-memory.d.ts +34 -0
  335. package/dist/cursor/caret-memory.js +82 -0
  336. package/dist/cursor/coordinate-spaces.d.ts +26 -19
  337. package/dist/cursor/coordinate-spaces.js +32 -20
  338. package/dist/cursor/dom-walk.d.ts +7 -13
  339. package/dist/cursor/dom-walk.js +7 -13
  340. package/dist/cursor/edge-affinity.d.ts +7 -35
  341. package/dist/cursor/edge-affinity.js +13 -44
  342. package/dist/cursor/focused-caret.d.ts +6 -8
  343. package/dist/cursor/focused-caret.js +7 -16
  344. package/dist/cursor/height-model.d.ts +3 -3
  345. package/dist/cursor/height-model.js +5 -5
  346. package/dist/cursor/height-oracle.d.ts +10 -6
  347. package/dist/cursor/height-oracle.js +26 -74
  348. package/dist/cursor/observe-resize.d.ts +13 -0
  349. package/dist/cursor/observe-resize.js +43 -0
  350. package/dist/cursor/overlay-rects.d.ts +2 -5
  351. package/dist/cursor/overlay-rects.js +2 -5
  352. package/dist/cursor/overlay-remeasure.d.ts +6 -7
  353. package/dist/cursor/overlay-remeasure.js +10 -14
  354. package/dist/cursor/pending-marks.d.ts +7 -9
  355. package/dist/cursor/pending-marks.js +6 -27
  356. package/dist/cursor/point-offset.d.ts +16 -10
  357. package/dist/cursor/point-offset.js +60 -25
  358. package/dist/cursor/reveal-source.d.ts +7 -11
  359. package/dist/cursor/reveal-source.js +10 -18
  360. package/dist/cursor/scroll-ancestors.d.ts +9 -20
  361. package/dist/cursor/scroll-ancestors.js +14 -26
  362. package/dist/cursor/scroll-owner.d.ts +92 -0
  363. package/dist/cursor/scroll-owner.js +283 -0
  364. package/dist/cursor/scrollport.d.ts +14 -15
  365. package/dist/cursor/scrollport.js +7 -13
  366. package/dist/cursor/sticky-column.d.ts +6 -29
  367. package/dist/cursor/sticky-column.js +6 -49
  368. package/dist/cursor/sticky-measure.d.ts +14 -9
  369. package/dist/cursor/sticky-measure.js +99 -49
  370. package/dist/cursor/surface-backend.d.ts +41 -0
  371. package/dist/cursor/surface-backend.js +78 -0
  372. package/dist/cursor/typography-estimates.d.ts +3 -3
  373. package/dist/cursor/typography-estimates.js +3 -3
  374. package/dist/cursor/visual-lines.d.ts +25 -14
  375. package/dist/cursor/visual-lines.js +45 -46
  376. package/dist/cursor/widget-edge-snap.d.ts +10 -15
  377. package/dist/cursor/widget-edge-snap.js +13 -12
  378. package/dist/cursor/widget-offset.d.ts +110 -104
  379. package/dist/cursor/widget-offset.js +344 -179
  380. package/dist/debug/diagnostics-report.d.ts +6 -6
  381. package/dist/debug/diagnostics-report.js +5 -5
  382. package/dist/debug/dump-tree.js +2 -2
  383. package/dist/debug/editor-diagnostics.d.ts +15 -0
  384. package/dist/debug/editor-diagnostics.js +33 -0
  385. package/dist/debug/inspect.d.ts +2 -2
  386. package/dist/debug/inspect.js +4 -4
  387. package/dist/debug/interaction-trace.d.ts +14 -15
  388. package/dist/debug/interaction-trace.js +19 -20
  389. package/dist/debug/operations-log.d.ts +1 -1
  390. package/dist/debug/operations-log.js +1 -1
  391. package/dist/decorations/buckets.d.ts +6 -12
  392. package/dist/decorations/buckets.js +4 -11
  393. package/dist/decorations/decoration-state.svelte.d.ts +2 -3
  394. package/dist/decorations/decoration-state.svelte.js +24 -26
  395. package/dist/decorations/island-dom.d.ts +10 -18
  396. package/dist/decorations/island-dom.js +25 -50
  397. package/dist/decorations/reserved-attrs.d.ts +6 -8
  398. package/dist/decorations/reserved-attrs.js +30 -17
  399. package/dist/decorations/types.d.ts +6 -7
  400. package/dist/decorations/types.js +2 -1
  401. package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
  402. package/dist/decorations/use-block-decorations.svelte.js +71 -0
  403. package/dist/decorations/widget-dom.d.ts +3 -3
  404. package/dist/decorations/widget-dom.js +5 -5
  405. package/dist/dev-warn.d.ts +5 -2
  406. package/dist/dev-warn.js +16 -4
  407. package/dist/editor-actions/ancestry-folds.d.ts +9 -14
  408. package/dist/editor-actions/ancestry-folds.js +13 -18
  409. package/dist/editor-actions/block-edit-core.d.ts +49 -22
  410. package/dist/editor-actions/block-edit-core.js +279 -151
  411. package/dist/editor-actions/block-edit-scope.d.ts +63 -50
  412. package/dist/editor-actions/block-edit-scope.js +100 -48
  413. package/dist/editor-actions/block-edit.d.ts +2 -3
  414. package/dist/editor-actions/block-edit.js +14 -90
  415. package/dist/editor-actions/commit/history.d.ts +4 -4
  416. package/dist/editor-actions/commit/history.js +33 -34
  417. package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
  418. package/dist/editor-actions/commit/reading-write-gate.js +56 -0
  419. package/dist/editor-actions/commit/text-batch.d.ts +7 -11
  420. package/dist/editor-actions/commit/text-batch.js +6 -7
  421. package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
  422. package/dist/editor-actions/commit/undo-controller.js +346 -216
  423. package/dist/editor-actions/container-block-component.d.ts +32 -51
  424. package/dist/editor-actions/container-block-component.js +66 -92
  425. package/dist/editor-actions/container-edit.d.ts +4 -2
  426. package/dist/editor-actions/container-edit.js +14 -44
  427. package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
  428. package/dist/editor-actions/container-exit-overrides.js +19 -21
  429. package/dist/editor-actions/deps.d.ts +25 -32
  430. package/dist/editor-actions/enter-completion.d.ts +12 -15
  431. package/dist/editor-actions/enter-completion.js +49 -51
  432. package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
  433. package/dist/editor-actions/focus/focus-dispatch.js +28 -50
  434. package/dist/editor-actions/focus/focus-landing.d.ts +8 -11
  435. package/dist/editor-actions/focus/focus-landing.js +15 -14
  436. package/dist/editor-actions/focus/focus.d.ts +3 -2
  437. package/dist/editor-actions/focus/focus.js +42 -59
  438. package/dist/editor-actions/index.d.ts +4 -3
  439. package/dist/editor-actions/index.js +5 -4
  440. package/dist/editor-actions/inline-range-commit.d.ts +18 -16
  441. package/dist/editor-actions/inline-range-commit.js +45 -54
  442. package/dist/editor-actions/leaf-write.d.ts +11 -0
  443. package/dist/editor-actions/leaf-write.js +102 -0
  444. package/dist/editor-actions/list-context.d.ts +9 -10
  445. package/dist/editor-actions/list-context.js +115 -110
  446. package/dist/editor-actions/list-overrides.d.ts +13 -5
  447. package/dist/editor-actions/list-overrides.js +36 -12
  448. package/dist/editor-actions/merge-fallback.d.ts +10 -16
  449. package/dist/editor-actions/merge-fallback.js +11 -22
  450. package/dist/editor-actions/nested/container-actions.d.ts +37 -0
  451. package/dist/editor-actions/nested/container-actions.js +42 -0
  452. package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
  453. package/dist/editor-actions/nested/emptied-container.js +5 -0
  454. package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
  455. package/dist/editor-actions/nested/nested-actions.js +17 -15
  456. package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
  457. package/dist/editor-actions/nested/nested-block-edit.js +40 -134
  458. package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
  459. package/dist/editor-actions/nested/nested-focus.js +33 -21
  460. package/dist/editor-actions/paste-coordinator.d.ts +3 -2
  461. package/dist/editor-actions/paste-coordinator.js +17 -13
  462. package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
  463. package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
  464. package/dist/editor-actions/plugin/container.d.ts +54 -82
  465. package/dist/editor-actions/plugin/container.js +105 -188
  466. package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
  467. package/dist/editor-actions/plugin/directive-container.js +7 -8
  468. package/dist/editor-actions/reorder-action.d.ts +7 -12
  469. package/dist/editor-actions/reorder-action.js +32 -48
  470. package/dist/editor-actions/reorder-drag.d.ts +12 -8
  471. package/dist/editor-actions/reorder-drag.js +45 -41
  472. package/dist/editor-actions/replacement-focus.d.ts +13 -21
  473. package/dist/editor-actions/replacement-focus.js +32 -33
  474. package/dist/editor-actions/search-replace.js +71 -67
  475. package/dist/editor-actions/stored-caret.d.ts +7 -0
  476. package/dist/editor-actions/stored-caret.js +10 -0
  477. package/dist/editor-actions/table-context.d.ts +9 -11
  478. package/dist/editor-actions/table-context.js +70 -93
  479. package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
  480. package/dist/editor-actions/unwrap-strategies.js +52 -63
  481. package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
  482. package/dist/editor-actions/whole-block-focus-surface.js +43 -53
  483. package/dist/editor-events.d.ts +25 -29
  484. package/dist/editor-events.js +17 -28
  485. package/dist/editor-keys.d.ts +96 -104
  486. package/dist/editor-keys.js +11 -24
  487. package/dist/editor-props.d.ts +88 -71
  488. package/dist/editor-rects.d.ts +23 -34
  489. package/dist/editor-rects.js +9 -77
  490. package/dist/env.d.ts +6 -4
  491. package/dist/env.js +8 -4
  492. package/dist/index.d.ts +6 -2
  493. package/dist/index.js +5 -2
  494. package/dist/inline-menu/inline-menu-session.d.ts +37 -0
  495. package/dist/inline-menu/inline-menu-session.js +98 -0
  496. package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
  497. package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
  498. package/dist/inline-menu/types.d.ts +77 -0
  499. package/dist/inline-menu/types.js +7 -0
  500. package/dist/invariants/child-id-parity.d.ts +23 -0
  501. package/dist/invariants/child-id-parity.js +39 -0
  502. package/dist/invariants/commit-paths.d.ts +4 -4
  503. package/dist/invariants/commit-paths.js +4 -4
  504. package/dist/invariants/commit-scope.d.ts +4 -4
  505. package/dist/invariants/commit-scope.js +9 -8
  506. package/dist/invariants/context-keys.d.ts +2 -5
  507. package/dist/invariants/context-keys.js +3 -6
  508. package/dist/invariants/descriptor.d.ts +2 -6
  509. package/dist/invariants/descriptor.js +2 -6
  510. package/dist/invariants/inline-transitions.d.ts +9 -16
  511. package/dist/invariants/inline-transitions.js +10 -18
  512. package/dist/invariants/install.d.ts +18 -27
  513. package/dist/invariants/install.js +29 -30
  514. package/dist/invariants/keeps-a-block.d.ts +7 -0
  515. package/dist/invariants/keeps-a-block.js +14 -0
  516. package/dist/invariants/landable-caret.d.ts +5 -7
  517. package/dist/invariants/landable-caret.js +8 -11
  518. package/dist/invariants/landing-focus-scroll.d.ts +7 -0
  519. package/dist/invariants/landing-focus-scroll.js +13 -0
  520. package/dist/invariants/landing-value.d.ts +13 -0
  521. package/dist/invariants/landing-value.js +27 -0
  522. package/dist/invariants/marker-css-parity.d.ts +5 -6
  523. package/dist/invariants/marker-css-parity.js +11 -12
  524. package/dist/invariants/measures-in-own-list.d.ts +6 -0
  525. package/dist/invariants/measures-in-own-list.js +13 -0
  526. package/dist/invariants/node-shape.d.ts +18 -37
  527. package/dist/invariants/node-shape.js +123 -79
  528. package/dist/invariants/open-tail.d.ts +7 -0
  529. package/dist/invariants/open-tail.js +45 -0
  530. package/dist/invariants/placement-ends-widget.d.ts +8 -0
  531. package/dist/invariants/placement-ends-widget.js +13 -0
  532. package/dist/invariants/registry.d.ts +27 -66
  533. package/dist/invariants/registry.js +61 -137
  534. package/dist/invariants/render-fidelity.d.ts +4 -4
  535. package/dist/invariants/render-fidelity.js +5 -5
  536. package/dist/invariants/selection-endpoints.d.ts +6 -7
  537. package/dist/invariants/selection-endpoints.js +18 -16
  538. package/dist/invariants/single-node-sink.d.ts +4 -5
  539. package/dist/invariants/single-node-sink.js +4 -5
  540. package/dist/invariants/snapshot-integrity.d.ts +5 -6
  541. package/dist/invariants/snapshot-integrity.js +1 -1
  542. package/dist/invariants/structural-descriptor.d.ts +6 -15
  543. package/dist/invariants/structural-descriptor.js +6 -15
  544. package/dist/menu-icons.d.ts +47 -0
  545. package/dist/menu-icons.js +113 -0
  546. package/dist/perf/instruments.d.ts +20 -5
  547. package/dist/perf/instruments.js +35 -15
  548. package/dist/perf/use-mount-gauge.svelte.js +4 -4
  549. package/dist/plugin.d.ts +37 -8
  550. package/dist/plugin.js +100 -77
  551. package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
  552. package/dist/plugins/admonitions/admonition-kind.js +12 -10
  553. package/dist/plugins/admonitions/convert-document.d.ts +5 -5
  554. package/dist/plugins/admonitions/convert-document.js +8 -7
  555. package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
  556. package/dist/plugins/admonitions/gh-alert.js +21 -22
  557. package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
  558. package/dist/plugins/admonitions/github-alert-kind.js +28 -37
  559. package/dist/plugins/admonitions/index.js +2 -2
  560. package/dist/plugins/admonitions/kinds.d.ts +1 -1
  561. package/dist/plugins/admonitions/register.js +11 -2
  562. package/dist/plugins/details/DetailsBlock.svelte +20 -20
  563. package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
  564. package/dist/plugins/details/details-disclosure.svelte.js +6 -7
  565. package/dist/plugins/details/details-kind.d.ts +6 -7
  566. package/dist/plugins/details/details-kind.js +44 -59
  567. package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
  568. package/dist/plugins/emoji/emoji-recognizer.js +7 -14
  569. package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
  570. package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
  571. package/dist/plugins/footnotes/constants.d.ts +2 -0
  572. package/dist/plugins/footnotes/constants.js +3 -0
  573. package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
  574. package/dist/plugins/footnotes/footnote-definition.js +69 -45
  575. package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
  576. package/dist/plugins/footnotes/footnote-lookup.js +14 -26
  577. package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
  578. package/dist/plugins/footnotes/footnote-numbering.js +22 -31
  579. package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
  580. package/dist/plugins/footnotes/footnote-reference.js +8 -13
  581. package/dist/plugins/footnotes/index.js +2 -3
  582. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
  583. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
  584. package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
  585. package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
  586. package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
  587. package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
  588. package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
  589. package/dist/plugins/highlight-occurrences/word-char.js +4 -0
  590. package/dist/plugins/latex/BlockMath.svelte +58 -75
  591. package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
  592. package/dist/plugins/latex/MathInline.svelte +10 -9
  593. package/dist/plugins/latex/flanking.d.ts +1 -0
  594. package/dist/plugins/latex/flanking.js +3 -0
  595. package/dist/plugins/latex/index.d.ts +1 -1
  596. package/dist/plugins/latex/latex-kind.d.ts +4 -4
  597. package/dist/plugins/latex/latex-kind.js +78 -67
  598. package/dist/plugins/latex/math-completion.d.ts +1 -1
  599. package/dist/plugins/latex/math-completion.js +5 -8
  600. package/dist/plugins/latex/math-layout.d.ts +2 -8
  601. package/dist/plugins/latex/math-layout.js +0 -9
  602. package/dist/plugins/latex/math-renderer.d.ts +17 -20
  603. package/dist/plugins/latex/math-renderer.js +21 -38
  604. package/dist/plugins/latex/math-source.d.ts +4 -8
  605. package/dist/plugins/latex/math-source.js +36 -81
  606. package/dist/plugins/latex/register.d.ts +10 -11
  607. package/dist/plugins/latex/register.js +24 -10
  608. package/dist/plugins/latex/renderer.d.ts +9 -10
  609. package/dist/plugins/latex/renderer.js +9 -24
  610. package/dist/plugins/mermaid/MermaidBlock.svelte +51 -45
  611. package/dist/plugins/mermaid/index.js +1 -1
  612. package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
  613. package/dist/plugins/mermaid/mermaid-kind.js +30 -47
  614. package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
  615. package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
  616. package/dist/plugins/mermaid/register.d.ts +3 -3
  617. package/dist/plugins/mermaid/register.js +5 -5
  618. package/dist/plugins/mermaid/renderer.d.ts +5 -5
  619. package/dist/plugins/mermaid/renderer.js +8 -11
  620. package/dist/plugins/parrot/ParrotBlock.svelte +15 -6
  621. package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
  622. package/dist/plugins/parrot/parrot-plugin.js +3 -3
  623. package/dist/plugins/slash-commands/filter.d.ts +23 -0
  624. package/dist/plugins/slash-commands/filter.js +31 -0
  625. package/dist/plugins/slash-commands/index.d.ts +2 -0
  626. package/dist/plugins/slash-commands/index.js +2 -0
  627. package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
  628. package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
  629. package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
  630. package/dist/plugins/slash-commands/slash-source.js +108 -0
  631. package/dist/plugins/toc/TocBlock.svelte +23 -22
  632. package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
  633. package/dist/plugins/toc/heading-outline.d.ts +7 -12
  634. package/dist/plugins/toc/heading-outline.js +22 -36
  635. package/dist/plugins/toc/navigation-queue.d.ts +2 -4
  636. package/dist/plugins/toc/toc-plugin.d.ts +5 -5
  637. package/dist/plugins/toc/toc-plugin.js +20 -13
  638. package/dist/presentation-mode.d.ts +15 -23
  639. package/dist/presentation-mode.js +19 -25
  640. package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
  641. package/dist/reactivity/block-list-state.svelte.js +8 -9
  642. package/dist/reactivity/block-window.svelte.d.ts +12 -6
  643. package/dist/reactivity/block-window.svelte.js +44 -17
  644. package/dist/reactivity/child-list.d.ts +34 -0
  645. package/dist/reactivity/child-list.js +48 -0
  646. package/dist/reactivity/content-version.svelte.d.ts +4 -7
  647. package/dist/reactivity/content-version.svelte.js +3 -5
  648. package/dist/reactivity/hold-across.d.ts +39 -0
  649. package/dist/reactivity/hold-across.js +57 -0
  650. package/dist/reactivity/layout-state.svelte.d.ts +27 -0
  651. package/dist/reactivity/layout-state.svelte.js +51 -0
  652. package/dist/reactivity/list-tree.d.ts +39 -0
  653. package/dist/reactivity/list-tree.js +132 -0
  654. package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
  655. package/dist/reactivity/list-windowing.svelte.js +141 -310
  656. package/dist/reactivity/measure-batch.d.ts +6 -8
  657. package/dist/reactivity/measure-batch.js +5 -6
  658. package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
  659. package/dist/reactivity/publish-ref.svelte.js +21 -85
  660. package/dist/reactivity/scope-geometry.d.ts +6 -13
  661. package/dist/reactivity/scope-geometry.js +7 -14
  662. package/dist/reactivity/state-registry.d.ts +5 -5
  663. package/dist/reactivity/state-registry.js +11 -15
  664. package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
  665. package/dist/reactivity/use-container-windowing.svelte.js +64 -74
  666. package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
  667. package/dist/reactivity/use-measured-child.svelte.js +41 -0
  668. package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
  669. package/dist/reactivity/use-window-floor.svelte.js +27 -0
  670. package/dist/reactivity/window-slice.d.ts +4 -4
  671. package/dist/reactivity/window-slice.js +0 -2
  672. package/dist/renderer-slot.d.ts +48 -0
  673. package/dist/renderer-slot.js +85 -0
  674. package/dist/scan-index.d.ts +4 -4
  675. package/dist/scan-index.js +4 -4
  676. package/dist/schema/block-commands.d.ts +69 -54
  677. package/dist/schema/block-commands.js +91 -104
  678. package/dist/schema/block-completions.d.ts +16 -19
  679. package/dist/schema/block-completions.js +25 -32
  680. package/dist/schema/block-component-registry.d.ts +13 -14
  681. package/dist/schema/block-component-registry.js +19 -17
  682. package/dist/schema/block-kind-descriptor.d.ts +234 -168
  683. package/dist/schema/block-kind-descriptor.js +151 -66
  684. package/dist/schema/block-openers.d.ts +48 -39
  685. package/dist/schema/block-openers.js +73 -83
  686. package/dist/schema/built-in-descriptors.d.ts +3 -5
  687. package/dist/schema/built-in-descriptors.js +96 -80
  688. package/dist/schema/child-spans.d.ts +12 -10
  689. package/dist/schema/child-spans.js +68 -34
  690. package/dist/schema/closure.d.ts +18 -16
  691. package/dist/schema/closure.js +24 -14
  692. package/dist/schema/command-id.d.ts +6 -8
  693. package/dist/schema/command-id.js +20 -25
  694. package/dist/schema/commands.d.ts +78 -84
  695. package/dist/schema/commands.js +152 -117
  696. package/dist/schema/container-raw.d.ts +51 -11
  697. package/dist/schema/container-raw.js +143 -14
  698. package/dist/schema/container-rebuilders.d.ts +17 -15
  699. package/dist/schema/container-rebuilders.js +30 -22
  700. package/dist/schema/context-actions.d.ts +25 -13
  701. package/dist/schema/context-actions.js +32 -17
  702. package/dist/schema/define-plugin-block.d.ts +8 -6
  703. package/dist/schema/define-plugin-block.js +6 -4
  704. package/dist/schema/fenced-code-raw.d.ts +30 -17
  705. package/dist/schema/fenced-code-raw.js +155 -107
  706. package/dist/schema/global-commands.d.ts +6 -6
  707. package/dist/schema/global-commands.js +14 -22
  708. package/dist/schema/height-estimates.d.ts +31 -0
  709. package/dist/schema/height-estimates.js +64 -0
  710. package/dist/schema/inline-construct-policy.d.ts +42 -55
  711. package/dist/schema/inline-construct-policy.js +36 -35
  712. package/dist/schema/insert-catalogue.d.ts +30 -0
  713. package/dist/schema/insert-catalogue.js +95 -0
  714. package/dist/schema/keybinding-overrides.d.ts +9 -11
  715. package/dist/schema/keybinding-overrides.js +1 -1
  716. package/dist/schema/keybindings.d.ts +15 -7
  717. package/dist/schema/keybindings.js +21 -9
  718. package/dist/schema/merge-rules.d.ts +5 -7
  719. package/dist/schema/merge-rules.js +7 -9
  720. package/dist/schema/opener-priorities.d.ts +4 -4
  721. package/dist/schema/opener-priorities.js +4 -4
  722. package/dist/schema/operations.d.ts +8 -10
  723. package/dist/schema/operations.js +3 -3
  724. package/dist/schema/page-role.d.ts +14 -0
  725. package/dist/schema/page-role.js +19 -0
  726. package/dist/schema/plugin-activation.d.ts +4 -6
  727. package/dist/schema/plugin-activation.js +12 -10
  728. package/dist/schema/plugin-editor-context.d.ts +25 -10
  729. package/dist/schema/plugin-editor-context.js +40 -9
  730. package/dist/schema/plugin-install.d.ts +49 -17
  731. package/dist/schema/plugin-install.js +51 -25
  732. package/dist/schema/plugin-kind.d.ts +12 -8
  733. package/dist/schema/plugin-kind.js +35 -42
  734. package/dist/schema/plugin-name.js +3 -3
  735. package/dist/schema/plugin-registry.d.ts +54 -0
  736. package/dist/schema/plugin-registry.js +70 -0
  737. package/dist/schema/reading.d.ts +23 -0
  738. package/dist/schema/reading.js +7 -0
  739. package/dist/schema/register-once.d.ts +3 -5
  740. package/dist/schema/register-once.js +7 -16
  741. package/dist/schema/registration-checks.d.ts +12 -16
  742. package/dist/schema/registration-checks.js +35 -51
  743. package/dist/schema/registration-pairs.d.ts +54 -0
  744. package/dist/schema/registration-pairs.js +48 -0
  745. package/dist/schema/registration-pending.d.ts +8 -12
  746. package/dist/schema/registration-pending.js +9 -9
  747. package/dist/schema/registry-reset.d.ts +8 -4
  748. package/dist/schema/registry-reset.js +13 -26
  749. package/dist/schema/registry-view.d.ts +25 -13
  750. package/dist/schema/registry-view.js +26 -20
  751. package/dist/schema/reserved-chords.d.ts +9 -10
  752. package/dist/schema/reserved-chords.js +63 -80
  753. package/dist/schema/reserved-chrome.d.ts +12 -11
  754. package/dist/schema/reserved-chrome.js +15 -11
  755. package/dist/schema/setext-raw.d.ts +13 -0
  756. package/dist/schema/setext-raw.js +33 -0
  757. package/dist/schema/stored-as.d.ts +20 -0
  758. package/dist/schema/stored-as.js +6 -0
  759. package/dist/schema/table-cell-raw.d.ts +18 -7
  760. package/dist/schema/table-cell-raw.js +28 -7
  761. package/dist/schema/whole-block-unit.d.ts +5 -4
  762. package/dist/schema/whole-block-unit.js +5 -4
  763. package/dist/search/document-scan.d.ts +3 -3
  764. package/dist/search/document-scan.js +2 -2
  765. package/dist/search/matcher.d.ts +1 -1
  766. package/dist/search/regex-executor.d.ts +5 -6
  767. package/dist/search/regex-executor.js +6 -8
  768. package/dist/search/replace.d.ts +2 -5
  769. package/dist/search/replace.js +2 -5
  770. package/dist/search/search-state.svelte.d.ts +5 -5
  771. package/dist/search/search-state.svelte.js +12 -16
  772. package/dist/selection/autoscroll.d.ts +6 -9
  773. package/dist/selection/block-hit-test.d.ts +16 -24
  774. package/dist/selection/block-hit-test.js +29 -22
  775. package/dist/selection/caret-doors.d.ts +15 -14
  776. package/dist/selection/caret-doors.js +37 -26
  777. package/dist/selection/caret-landing.d.ts +62 -0
  778. package/dist/selection/caret-landing.js +157 -0
  779. package/dist/selection/caret-restore.d.ts +17 -10
  780. package/dist/selection/caret-restore.js +10 -22
  781. package/dist/selection/caret-target.d.ts +30 -0
  782. package/dist/selection/caret-target.js +84 -0
  783. package/dist/selection/char-endpoint-snap.d.ts +6 -10
  784. package/dist/selection/char-endpoint-snap.js +8 -14
  785. package/dist/selection/clipboard-text.d.ts +5 -12
  786. package/dist/selection/clipboard-text.js +69 -172
  787. package/dist/selection/covered-block.d.ts +6 -8
  788. package/dist/selection/covered-block.js +8 -19
  789. package/dist/selection/cross-block/clipboard.d.ts +3 -2
  790. package/dist/selection/cross-block/clipboard.js +13 -4
  791. package/dist/selection/cross-block/dispatch.d.ts +47 -43
  792. package/dist/selection/cross-block/dispatch.js +12 -23
  793. package/dist/selection/cross-block/format-range.d.ts +18 -21
  794. package/dist/selection/cross-block/format-range.js +104 -103
  795. package/dist/selection/cross-block/format-toggle.d.ts +10 -15
  796. package/dist/selection/cross-block/format-toggle.js +28 -33
  797. package/dist/selection/cross-block/keydown.d.ts +4 -4
  798. package/dist/selection/cross-block/keydown.js +92 -125
  799. package/dist/selection/cross-block/ops.d.ts +19 -34
  800. package/dist/selection/cross-block/ops.js +110 -95
  801. package/dist/selection/cross-block/paste.d.ts +2 -3
  802. package/dist/selection/cross-block/paste.js +59 -96
  803. package/dist/selection/cross-block/pointer.d.ts +17 -15
  804. package/dist/selection/cross-block/pointer.js +74 -25
  805. package/dist/selection/cross-block/type-replace.d.ts +4 -6
  806. package/dist/selection/cross-block/type-replace.js +51 -134
  807. package/dist/selection/dead-space-caret.d.ts +19 -30
  808. package/dist/selection/dead-space-caret.js +70 -88
  809. package/dist/selection/drag-pointer.d.ts +7 -9
  810. package/dist/selection/drag-pointer.js +23 -33
  811. package/dist/selection/gap-caret.d.ts +17 -28
  812. package/dist/selection/gap-caret.js +14 -26
  813. package/dist/selection/grid-selection.d.ts +12 -0
  814. package/dist/selection/grid-selection.js +22 -0
  815. package/dist/selection/keyboard-extend.d.ts +27 -40
  816. package/dist/selection/keyboard-extend.js +94 -117
  817. package/dist/selection/multi-click.d.ts +13 -18
  818. package/dist/selection/multi-click.js +32 -38
  819. package/dist/selection/native-bridge.d.ts +29 -39
  820. package/dist/selection/native-bridge.js +78 -127
  821. package/dist/selection/nearest-block.d.ts +17 -12
  822. package/dist/selection/nearest-block.js +37 -18
  823. package/dist/selection/path-lookup.d.ts +25 -16
  824. package/dist/selection/path-lookup.js +101 -18
  825. package/dist/selection/path-math.d.ts +9 -11
  826. package/dist/selection/path-math.js +5 -7
  827. package/dist/selection/pointer-gesture.d.ts +5 -5
  828. package/dist/selection/pointer-gesture.js +5 -5
  829. package/dist/selection/pointer-session.d.ts +10 -16
  830. package/dist/selection/pointer-session.js +6 -7
  831. package/dist/selection/primitives.d.ts +64 -40
  832. package/dist/selection/primitives.js +57 -67
  833. package/dist/selection/range-coverage.d.ts +94 -0
  834. package/dist/selection/range-coverage.js +365 -0
  835. package/dist/selection/range-delete-ceremony.d.ts +28 -74
  836. package/dist/selection/range-delete-ceremony.js +100 -141
  837. package/dist/selection/range-delete-chrome.d.ts +20 -33
  838. package/dist/selection/range-delete-chrome.js +53 -78
  839. package/dist/selection/range-delete-table-coverage.d.ts +11 -25
  840. package/dist/selection/range-delete-table-coverage.js +42 -112
  841. package/dist/selection/range-delete-table.d.ts +14 -12
  842. package/dist/selection/range-delete-table.js +106 -310
  843. package/dist/selection/range-delete.d.ts +18 -23
  844. package/dist/selection/range-delete.js +83 -123
  845. package/dist/selection/round-trip-restore.d.ts +18 -0
  846. package/dist/selection/round-trip-restore.js +19 -0
  847. package/dist/selection/selection-announcer.d.ts +17 -0
  848. package/dist/selection/selection-announcer.js +25 -0
  849. package/dist/selection/selection-description.d.ts +4 -3
  850. package/dist/selection/selection-description.js +5 -4
  851. package/dist/selection/selection-drop.d.ts +34 -16
  852. package/dist/selection/selection-drop.js +159 -95
  853. package/dist/selection/selection-restore.d.ts +20 -33
  854. package/dist/selection/selection-restore.js +21 -44
  855. package/dist/selection/selection-state.svelte.d.ts +50 -42
  856. package/dist/selection/selection-state.svelte.js +144 -98
  857. package/dist/selection/shared-keydown.d.ts +22 -27
  858. package/dist/selection/shared-keydown.js +25 -45
  859. package/dist/selection/table-endpoint-snap.d.ts +17 -41
  860. package/dist/selection/table-endpoint-snap.js +54 -80
  861. package/dist/selection/table-rect-extend.d.ts +3 -6
  862. package/dist/selection/table-rect-extend.js +19 -14
  863. package/dist/styles/editor-theme.css +60 -53
  864. package/dist/styles/editor.css +201 -143
  865. package/dist/testing/conformance-core.d.ts +50 -18
  866. package/dist/testing/conformance-core.js +88 -50
  867. package/dist/testing/container-conformance.d.ts +48 -84
  868. package/dist/testing/container-conformance.js +159 -285
  869. package/dist/testing/headless-actions.d.ts +34 -19
  870. package/dist/testing/headless-actions.js +116 -65
  871. package/dist/testing/headless-block-list.svelte.d.ts +16 -0
  872. package/dist/testing/headless-block-list.svelte.js +22 -0
  873. package/dist/testing/inline-conformance.d.ts +15 -22
  874. package/dist/testing/inline-conformance.js +131 -148
  875. package/dist/testing/kind-conformance.d.ts +19 -24
  876. package/dist/testing/kind-conformance.js +204 -117
  877. package/dist/testing/kit-reading.d.ts +7 -0
  878. package/dist/testing/kit-reading.js +16 -0
  879. package/dist/testing/mount-dom-stubs.d.ts +4 -5
  880. package/dist/testing/mount-dom-stubs.js +8 -5
  881. package/dist/testing/parse-convergence.d.ts +10 -10
  882. package/dist/testing/parse-convergence.js +14 -49
  883. package/dist/testing.d.ts +13 -9
  884. package/dist/testing.js +28 -38
  885. package/dist/tree-operations/blockquote.d.ts +8 -14
  886. package/dist/tree-operations/blockquote.js +25 -45
  887. package/dist/tree-operations/chain-rebuild.d.ts +34 -25
  888. package/dist/tree-operations/chain-rebuild.js +115 -52
  889. package/dist/tree-operations/children.d.ts +5 -9
  890. package/dist/tree-operations/children.js +7 -11
  891. package/dist/tree-operations/cleanup.d.ts +6 -7
  892. package/dist/tree-operations/cleanup.js +14 -11
  893. package/dist/tree-operations/clone.js +5 -4
  894. package/dist/tree-operations/container-lift.d.ts +10 -5
  895. package/dist/tree-operations/container-lift.js +20 -14
  896. package/dist/tree-operations/container-offsets.d.ts +22 -0
  897. package/dist/tree-operations/container-offsets.js +89 -0
  898. package/dist/tree-operations/content-write.d.ts +52 -29
  899. package/dist/tree-operations/content-write.js +155 -110
  900. package/dist/tree-operations/index.d.ts +4 -4
  901. package/dist/tree-operations/index.js +4 -4
  902. package/dist/tree-operations/keep-one-block.d.ts +10 -0
  903. package/dist/tree-operations/keep-one-block.js +19 -0
  904. package/dist/tree-operations/leaf-range.d.ts +33 -0
  905. package/dist/tree-operations/leaf-range.js +67 -0
  906. package/dist/tree-operations/list/empty-check.d.ts +2 -3
  907. package/dist/tree-operations/list/empty-check.js +4 -4
  908. package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
  909. package/dist/tree-operations/list/exit-replacement.js +4 -9
  910. package/dist/tree-operations/list/item-partition.d.ts +2 -2
  911. package/dist/tree-operations/list/item-partition.js +2 -2
  912. package/dist/tree-operations/list/list-builders.d.ts +18 -16
  913. package/dist/tree-operations/list/list-builders.js +59 -30
  914. package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
  915. package/dist/tree-operations/list/ordered-markers.js +7 -16
  916. package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
  917. package/dist/tree-operations/list/reconcile-task.js +80 -23
  918. package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
  919. package/dist/tree-operations/list/sublist-separator.js +20 -27
  920. package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
  921. package/dist/tree-operations/list/task-paragraph.js +54 -0
  922. package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
  923. package/dist/tree-operations/list/unwrap-merge.js +44 -79
  924. package/dist/tree-operations/node-ops.d.ts +30 -52
  925. package/dist/tree-operations/node-ops.js +152 -218
  926. package/dist/tree-operations/node-primitives.d.ts +44 -31
  927. package/dist/tree-operations/node-primitives.js +84 -60
  928. package/dist/tree-operations/open-tail.d.ts +25 -0
  929. package/dist/tree-operations/open-tail.js +100 -0
  930. package/dist/tree-operations/parse-block.d.ts +15 -2
  931. package/dist/tree-operations/parse-block.js +19 -4
  932. package/dist/tree-operations/paste/apply.d.ts +7 -8
  933. package/dist/tree-operations/paste/apply.js +33 -63
  934. package/dist/tree-operations/paste/body-write.d.ts +8 -6
  935. package/dist/tree-operations/paste/body-write.js +13 -14
  936. package/dist/tree-operations/paste/container-match.d.ts +7 -10
  937. package/dist/tree-operations/paste/container-match.js +76 -58
  938. package/dist/tree-operations/paste/container-paste.d.ts +3 -3
  939. package/dist/tree-operations/paste/container-paste.js +3 -3
  940. package/dist/tree-operations/paste/dispatch.d.ts +26 -29
  941. package/dist/tree-operations/paste/dispatch.js +68 -53
  942. package/dist/tree-operations/paste/focus-target.d.ts +11 -14
  943. package/dist/tree-operations/paste/focus-target.js +13 -18
  944. package/dist/tree-operations/paste/hooks.d.ts +7 -12
  945. package/dist/tree-operations/paste/hooks.js +49 -46
  946. package/dist/tree-operations/paste/line-ending.d.ts +11 -0
  947. package/dist/tree-operations/paste/line-ending.js +32 -0
  948. package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
  949. package/dist/tree-operations/paste/list-absorb.js +17 -19
  950. package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
  951. package/dist/tree-operations/paste/list-break-out.js +24 -32
  952. package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
  953. package/dist/tree-operations/paste/parent-scope.js +9 -16
  954. package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
  955. package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
  956. package/dist/tree-operations/paste/paste-replacement.js +73 -42
  957. package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
  958. package/dist/tree-operations/paste/paste-transforms.js +18 -27
  959. package/dist/tree-operations/paste/replacement-parse.d.ts +9 -7
  960. package/dist/tree-operations/paste/replacement-parse.js +12 -10
  961. package/dist/tree-operations/paste/strategy.d.ts +1 -1
  962. package/dist/tree-operations/paste/strategy.js +1 -1
  963. package/dist/tree-operations/paste/table-slice.js +15 -10
  964. package/dist/tree-operations/paste-surfaces.d.ts +18 -29
  965. package/dist/tree-operations/paste-surfaces.js +14 -10
  966. package/dist/tree-operations/path-mutate.d.ts +7 -8
  967. package/dist/tree-operations/path-mutate.js +4 -4
  968. package/dist/tree-operations/reorder-unit.d.ts +4 -5
  969. package/dist/tree-operations/reorder-unit.js +5 -6
  970. package/dist/tree-operations/reorder.d.ts +7 -9
  971. package/dist/tree-operations/reorder.js +39 -40
  972. package/dist/tree-operations/settle.d.ts +42 -53
  973. package/dist/tree-operations/settle.js +241 -162
  974. package/dist/tree-operations/sharing.d.ts +5 -5
  975. package/dist/tree-operations/splice-many.d.ts +5 -5
  976. package/dist/tree-operations/splice-many.js +5 -5
  977. package/dist/tree-operations/stored-as.d.ts +13 -0
  978. package/dist/tree-operations/stored-as.js +48 -0
  979. package/dist/tree-operations/structural-change.d.ts +11 -15
  980. package/dist/tree-operations/structural-change.js +10 -14
  981. package/dist/tree-operations/structural-suffix.d.ts +22 -0
  982. package/dist/tree-operations/structural-suffix.js +61 -0
  983. package/dist/tree-operations/sub-table-copy.d.ts +7 -0
  984. package/dist/tree-operations/sub-table-copy.js +40 -36
  985. package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
  986. package/dist/tree-operations/table-grid-clipboard.js +11 -36
  987. package/dist/tree-operations/table-mutations.d.ts +7 -3
  988. package/dist/tree-operations/table-mutations.js +45 -9
  989. package/dist/tree-operations/unshare.d.ts +11 -15
  990. package/dist/tree-operations/unshare.js +15 -17
  991. package/dist/undo/manager.js +1 -1
  992. package/dist/undo/types.d.ts +2 -2
  993. package/docs/guide/consumer-guide.md +327 -205
  994. package/docs/guide/directives.md +7 -7
  995. package/docs/guide/plugin-api.md +253 -185
  996. package/docs/guide/plugin-guide.md +332 -235
  997. package/docs/guide/plugin-testing.md +96 -82
  998. package/package.json +12 -16
  999. package/dist/ambient/ambient-cursor.d.ts +0 -41
  1000. package/dist/ambient/ambient-cursor.js +0 -120
  1001. package/dist/components/blocks/code/code-paste.d.ts +0 -24
  1002. package/dist/components/blocks/code/code-paste.js +0 -21
  1003. package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
  1004. package/dist/components/blocks/table/cell-clipboard.js +0 -67
  1005. package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
  1006. package/dist/components/blocks/text/hidden-suffix.js +0 -15
  1007. package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
  1008. package/dist/components/image/image-source-bytes.d.ts +0 -15
  1009. package/dist/components/image/image-source-bytes.js +0 -80
  1010. package/dist/cursor/content-offsets.d.ts +0 -29
  1011. package/dist/cursor/content-offsets.js +0 -151
  1012. package/dist/cursor/reveal-anchor.d.ts +0 -30
  1013. package/dist/cursor/reveal-anchor.js +0 -31
  1014. package/dist/cursor/scroll-hold.d.ts +0 -10
  1015. package/dist/cursor/scroll-hold.js +0 -22
  1016. package/dist/invariants/split-landing.d.ts +0 -8
  1017. package/dist/invariants/split-landing.js +0 -15
  1018. package/dist/tree-operations/list/terminator.d.ts +0 -17
  1019. package/dist/tree-operations/list/terminator.js +0 -60
  1020. package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -31
  1021. package/dist/tree-operations/paste/replace-block-at-parent.js +0 -78
@@ -1,31 +1,30 @@
1
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).
2
+ * Native GitHub alerts as a strip container shaped like a blockquote: the source bytes are
3
+ * kept, never rewritten to `:::note`. The marker lives only in the container's raw and
4
+ * metadata, so `strip(raw)` equals the serialized children. Its own kind rather than a
5
+ * variant of the directive admonition, so kind stability and rebuildRaw stay unambiguous.
7
6
  */
8
- import { OPENER_PRIORITIES, blockquoteExtent, containerClosure, declarePluginKind, declaredPluginKind, defineBlockComponent, getPluginMetadata, parseContainerBody, registerBlockComponent, registerBlockKind, registerBlockOpener, serializeChildren, setPluginMetadata } from '../../plugin';
7
+ import { OPENER_PRIORITIES, blockquoteExtent, containerClosure, declarePluginKind, declaredPluginKind, defineBlockComponent, displayLines, firstLineEnding, getPluginMetadata, joinDisplayLines, ownTrailingLineEnding, parseContainerBody, registerBlockComponent, registerBlockKind, registerBlockOpener, serializeChildren, setPluginMetadata } from '../../plugin';
9
8
  import { matchAlertMarker, stripQuoteMarker } from './gh-alert';
10
9
  import { GITHUB_ALERT } from './kinds';
11
10
  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. */
11
+ /** The `> [!TYPE]` line is the alert's own marker, so a blank line against it separates
12
+ * rather than becoming a block of its own; nothing closes the alert below. */
14
13
  const BODY_WRAP = { afterOpenerLine: true };
15
14
  function tryOpen(ctx) {
16
15
  const alertType = matchAlertMarker(ctx.line.text);
17
16
  if (!alertType)
18
17
  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);
18
+ // The built-in extent scan, not the marker regex, decides whether this line opens a
19
+ // blockquote; backing out on zero lines keeps a no-progress return out of the parse loop.
20
+ const { raw, nextIndex } = blockquoteExtent(ctx.lines, ctx.index, ctx.end, ctx.grammar);
23
21
  const consumed = nextIndex - ctx.index;
24
22
  if (consumed <= 0)
25
23
  return null;
26
24
  // A fresh parse entry, so the body's own line 0 must not read as the document top.
27
25
  const body = parseContainerBody(stripBody(ctx.lines, ctx.index + 1, nextIndex), BODY_WRAP, {
28
- scope: 'fragment'
26
+ scope: 'fragment',
27
+ grammar: ctx.grammar
29
28
  });
30
29
  const node = {
31
30
  kind: declaredPluginKind(GITHUB_ALERT),
@@ -44,48 +43,40 @@ function stripBody(lines, start, end) {
44
43
  out += stripQuoteMarker(lines[i].text) + lines[i].lineEnding;
45
44
  return out;
46
45
  }
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. */
46
+ /** Every body line keeps its own ending; the marker line keeps the one the current raw gives it. */
49
47
  export function rebuildGithubAlertRaw(node) {
50
48
  const alertType = getPluginMetadata(node)?.alertType ?? 'NOTE';
51
49
  const marker = `> [!${alertType}]`;
52
50
  const body = (node.innerPrefix ?? '') + serializeChildren(node.children ?? []) + (node.innerSuffix ?? '');
53
51
  if (body === '') {
54
- node.raw = node.raw.endsWith('\n') ? marker + firstLineEnding(node.raw) : marker;
52
+ node.raw = marker + ownTrailingLineEnding(node.raw);
55
53
  return;
56
54
  }
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';
55
+ const markerEnding = firstLineEnding(node.raw) ?? firstLineEnding(body) ?? '\n';
56
+ node.raw = marker + markerEnding + prefixQuoteLines(body);
66
57
  }
67
58
  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');
59
+ const lines = displayLines(body);
60
+ return joinDisplayLines(lines.map((line, i) => {
61
+ // The empty line after a final break is no line of its own.
62
+ if (i === lines.length - 1 && line.text === '')
63
+ return line;
64
+ return { ...line, text: line.text === '' ? '>' : `> ${line.text}` };
65
+ }));
78
66
  }
79
67
  export function registerGithubAlert() {
80
68
  const kind = declarePluginKind(GITHUB_ALERT);
81
69
  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).
70
+ // Below blockquote so the alert form matches first, at a priority no other opener
71
+ // uses, so a bundle installing them all keeps every priority unique (G1.10).
84
72
  priority: OPENER_PRIORITIES.blockquote - 5,
85
73
  tryOpen,
86
74
  interruptsParagraph: (t) => matchAlertMarker(t) !== null
87
75
  });
88
76
  registerBlockKind(kind, {
77
+ label: 'Alert',
78
+ // A note reads as part of the text around it, so it shows no drag handle.
79
+ pageRole: 'prose',
89
80
  gapEdges: 'none',
90
81
  mergeRole: 'container',
91
82
  editable: true,
@@ -1,8 +1,8 @@
1
1
  // Two kinds sharing one component: the `:::name` directives, which all resolve to
2
2
  // one admonition kind, and native GitHub alerts (`> [!NOTE]`, kind `githubAlert`).
3
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.
4
+ // convertGithubAlerts scans plain text and rewrites inside code fences too; for a whole
5
+ // document prefer convertGithubAlertsInDocument, which goes through the parser.
6
6
  export { convertGithubAlerts, hasGithubAlert } from './gh-alert';
7
7
  export { convertGithubAlertsInDocument } from './convert-document';
8
8
  export { ADMONITION_KINDS, GITHUB_ALERT } from './kinds';
@@ -20,7 +20,7 @@ export interface AdmonitionMetadata {
20
20
  lineEnding: string;
21
21
  }
22
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. */
23
+ * the source casing; display code lowercases it through `coerceAdmonitionName`. */
24
24
  export interface GithubAlertMetadata {
25
25
  alertType: string;
26
26
  }
@@ -2,11 +2,20 @@
2
2
  * Two block kinds from one setup, so this wires `definePlugin` directly rather than
3
3
  * the single-kind `definePluginBlock` sugar.
4
4
  */
5
- import { definePlugin } from '../../plugin';
5
+ import { definePlugin, registerInsertEntry } from '../../plugin';
6
6
  import { registerAdmonitions } from './admonition-kind';
7
7
  export function admonitionsPlugin(options) {
8
8
  return definePlugin({
9
9
  name: 'admonitions',
10
- setup: () => registerAdmonitions(options)
10
+ setup() {
11
+ registerAdmonitions(options);
12
+ registerInsertEntry({
13
+ id: 'note',
14
+ label: 'Note',
15
+ icon: 'info',
16
+ keywords: ['note', 'admonition', 'callout'],
17
+ markdown: ':::note\n\n:::\n'
18
+ });
19
+ }
11
20
  });
12
21
  }
@@ -1,7 +1,6 @@
1
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.
2
+ // The document's collapsed state comes from `reservedChrome.isCollapsed`; reading mode's
3
+ // temporary open state is passed to the factory on top of it, so windowing and focus agree.
5
4
  import {
6
5
  BlockList,
7
6
  createContainerBlock,
@@ -22,15 +21,15 @@
22
21
  getIndex: () => index,
23
22
  getPath: () => myPath,
24
23
  getBoxEl: () => boxEl,
25
- // The effective state, so a transiently-opened section actually mounts and
26
- // measures its body.
24
+ // The state on screen, so a section opened only in reading mode still mounts
25
+ // and measures its body.
27
26
  isCollapsed: () => !open
28
27
  });
29
28
 
30
29
  const reading = $derived(getPresentationMode() === 'reading');
31
30
  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.
31
+ // Leaving reading mode discards the temporary state: with the bytes editable again, a
32
+ // view that disagrees with them would be showing something the document does not say.
34
33
  $effect(() => {
35
34
  if (!reading) reader.reset();
36
35
  });
@@ -38,16 +37,17 @@
38
37
 
39
38
  function commitDisclosure() {
40
39
  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.
40
+ // Collapsing unmounts the body and orphans a caret inside it, so the commit puts it on the
41
+ // summary; the toggle suppresses mousedown, so a click leaves the caret where it was.
44
42
  const pos = isOpen ? (containerApi.getCursorPosition?.() ?? null) : null;
45
43
  const caretInBody = pos != null && pos.path[0] >= 1;
46
- updateOwnMetadata({ open: !isOpen }, caretInBody ? () => containerApi.focus(0) : undefined);
44
+ updateOwnMetadata(
45
+ { open: !isOpen },
46
+ caretInBody ? { caret: { path: [0], offset: 0 } } : undefined
47
+ );
47
48
  }
48
49
 
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.
50
+ // Reading mode gets a handler that cannot write at all, so no toggle there becomes an edit.
51
51
  const onToggle = $derived(reading ? reader.toggle : commitDisclosure);
52
52
 
53
53
  export { containerApi };
@@ -67,7 +67,7 @@
67
67
  </div>
68
68
 
69
69
  <style>
70
- /* Mirrors the admonition's rail gap and caret column so the two read as a family. */
70
+ /* Matches the admonition's left border and text column so the two look like a family. */
71
71
  .details-block {
72
72
  position: relative;
73
73
  margin: 0.8em 0;
@@ -80,11 +80,11 @@
80
80
  .details-toggle {
81
81
  position: absolute;
82
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. */
83
+ /* Ties the button's em sizes to the editor font; without it the browser's default
84
+ font-size shrinks the line box below and floats the arrow above the summary title. */
85
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. */
86
+ /* Sits exactly over the summary's first line (the block's padding plus the child's
87
+ 2px, one line-height tall), so centring lands the arrow on the title line. */
88
88
  top: calc(0.15em + 2px);
89
89
  width: 1.1em;
90
90
  height: 1.6em;
@@ -116,8 +116,8 @@
116
116
  border-radius: var(--radius-ui, 3px);
117
117
  }
118
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. */
119
+ /* The summary is styled as a title row by CSS alone; it stays a real block inside
120
+ `.block-list`, so selection and windowing treat it as an ordinary child. */
121
121
  .details-block :global(.details-summary) {
122
122
  font-weight: 600;
123
123
  }
@@ -1,12 +1,11 @@
1
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.
2
+ * The half of the `<details>` toggle that writes nothing: in reading mode a user may open a
3
+ * collapsed section without touching bytes, and nothing handed in here can reach a commit.
4
+ * Starts unset rather than copying the document's `open`, so a block that was not mounted
5
+ * when the toggle happened still shows the document's own state. One per component instance.
7
6
  */
8
7
  export interface ReaderDisclosure {
9
- /** The reader's flip if they made one, else the document's own state. */
8
+ /** What the user toggled it to, if they toggled it; otherwise the document's own state. */
10
9
  readonly open: boolean;
11
10
  toggle(): void;
12
11
  reset(): void;
@@ -1,9 +1,8 @@
1
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.
2
+ * The half of the `<details>` toggle that writes nothing: in reading mode a user may open a
3
+ * collapsed section without touching bytes, and nothing handed in here can reach a commit.
4
+ * Starts unset rather than copying the document's `open`, so a block that was not mounted
5
+ * when the toggle happened still shows the document's own state. One per component instance.
7
6
  */
8
7
  export function createReaderDisclosure(deps) {
9
8
  let flipped = $state(null);
@@ -15,8 +14,8 @@ export function createReaderDisclosure(deps) {
15
14
  flipped = !(flipped ?? deps.isDocumentOpen());
16
15
  },
17
16
  reset() {
18
- // Conditional: an unconditional write re-invalidates every reader of `open`
19
- // on each pass of the effect that calls this.
17
+ // Guarded: writing unconditionally would invalidate everything that reads
18
+ // `open` on every pass of the effect that calls this.
20
19
  if (flipped !== null)
21
20
  flipped = null;
22
21
  }
@@ -1,17 +1,16 @@
1
1
  /**
2
- * `<details>` collapsible: the second reserved-chrome container consumer. The
3
- * `<summary>` is a real CST child at index 0 whose tags live in the container's own
4
- * raw, so `strip(raw)` diverges from `serialize(children)`, hence `'opaque'` (raw
5
- * authoritative, exempt from `checkStaleRaw`). Non-canonical `<details …>` declines
6
- * to the built-in htmlBlock.
2
+ * The `<details>` collapsible. Its `<summary>` is a real CST child at index 0, but the tags
3
+ * around it live in the container's own raw, so `strip(raw)` differs from
4
+ * `serialize(children)`: hence `'opaque'`, where raw is authoritative and `checkStaleRaw` is
5
+ * skipped. A `<details …>` written any other way is left to the built-in htmlBlock.
7
6
  */
8
7
  import { type CstNode } from '../../plugin';
9
8
  export declare const DETAILS = "details";
10
9
  export declare const DETAILS_SUMMARY = "details-summary";
11
10
  export interface DetailsMetadata {
12
11
  open: boolean;
13
- /** One captured ending governs all three chrome lines: a well-formed document has
14
- * uniform endings, so the rebuild reproduces them byte-identically. */
12
+ /** One captured ending is used for all three tag lines: a well-formed document has
13
+ * uniform endings, so the rebuild reproduces them byte for byte. */
15
14
  lineEnding: string;
16
15
  /** False for a document-final details with no trailing newline, so the rebuild
17
16
  * does not add one. */
@@ -1,11 +1,10 @@
1
1
  /**
2
- * `<details>` collapsible: the second reserved-chrome container consumer. The
3
- * `<summary>` is a real CST child at index 0 whose tags live in the container's own
4
- * raw, so `strip(raw)` diverges from `serialize(children)`, hence `'opaque'` (raw
5
- * authoritative, exempt from `checkStaleRaw`). Non-canonical `<details …>` declines
6
- * to the built-in htmlBlock.
2
+ * The `<details>` collapsible. Its `<summary>` is a real CST child at index 0, but the tags
3
+ * around it live in the container's own raw, so `strip(raw)` differs from
4
+ * `serialize(children)`: hence `'opaque'`, where raw is authoritative and `checkStaleRaw` is
5
+ * skipped. A `<details …>` written any other way is left to the built-in htmlBlock.
7
6
  */
8
- import { chromeChild, containerClosure, declarePluginKind, declaredPluginKind, registerBlockKind, registerBlockOpener, registerChromeLeaf, setPluginMetadata, getPluginMetadata, parseContainerBody, serializeChildren, trimTrailingLineEnding, matchFenceOpen, matchFenceClose, htmlBlockTagLineMatcher, OPENER_PRIORITIES } from '../../plugin';
7
+ import { chromeChild, containerClosure, declarePluginKind, declaredPluginKind, registerBlockKind, registerBlockOpener, registerChromeLeaf, setPluginMetadata, getPluginMetadata, parseContainerBody, serializeChildren, trimTrailingLineEnding, matchFenceOpen, findFenceCloser, htmlBlockTagLineMatcher, OPENER_PRIORITIES } from '../../plugin';
9
8
  export const DETAILS = 'details';
10
9
  export const DETAILS_SUMMARY = 'details-summary';
11
10
  const OPEN_LINE = /^<details( open)?>$/;
@@ -18,46 +17,36 @@ const canonicalTagLine = (text) => OPEN_LINE.test(text) ? 'open' : CLOSE_LINE.te
18
17
  /** What CommonMark hands to raw-HTML passthrough: a superset of the canonical form,
19
18
  * and therefore of what closes the element in a browser. */
20
19
  const passthroughTagLine = htmlBlockTagLineMatcher('details');
21
- /**
22
- * A `</details>` inside a fenced code block is content on both sides of the round trip, so
23
- * neither the recognizer nor the escape may count it. Stateful, because the fence is.
24
- */
25
- function createTagScanner(tagLine) {
26
- let fence = null;
27
- return (text) => {
20
+ /** Each tag line in `[from, end)` with its verdict, in order, until `visit` returns true; a fenced
21
+ * code block's lines are skipped whole, since a `</details>` inside one is content. */
22
+ function visitTagLines(lines, from, end, tagLine, visit) {
23
+ for (let i = from; i < end; i++) {
24
+ const fence = matchFenceOpen(lines[i].text);
28
25
  if (fence) {
29
- if (matchFenceClose(text, fence.marker, fence.length))
30
- fence = null;
31
- return null;
32
- }
33
- const opened = matchFenceOpen(text);
34
- if (opened) {
35
- fence = { marker: opened.marker, length: opened.length };
36
- return null;
26
+ const closer = findFenceCloser(lines, i + 1, end, fence);
27
+ i = closer === -1 ? end : closer;
28
+ continue;
37
29
  }
38
- return tagLine(text);
39
- };
30
+ if (visit(i, tagLine(lines[i].text)))
31
+ return;
32
+ }
40
33
  }
41
34
  function unpairedTagLines(lines, tagLine, settled) {
42
- const classify = createTagScanner(tagLine);
43
35
  const openIndices = [];
44
36
  const unpaired = [];
45
- for (let i = 0; i < lines.length; i++) {
46
- const verdict = classify(lines[i]);
37
+ const texts = lines.map((text) => ({ text }));
38
+ visitTagLines(texts, 0, texts.length, tagLine, (i, verdict) => {
47
39
  if (settled.has(i))
48
- continue;
40
+ return;
49
41
  if (verdict === 'open')
50
42
  openIndices.push(i);
51
43
  else if (verdict === 'close' && openIndices.pop() === undefined)
52
44
  unpaired.push(i);
53
- }
45
+ });
54
46
  return [...unpaired, ...openIndices];
55
47
  }
56
- /**
57
- * Two accountings, because the recognizer and a browser disagree about what a tag line is,
58
- * and only the fixpoint leaves neither renderer holding a stray. Terminates because every
59
- * round escapes a line and escaping never mints a tag.
60
- */
48
+ /** Repeats until nothing changes, since this recognizer and a browser disagree on what a tag line
49
+ * is; every round escapes a line and escaping never creates a tag, so it ends. */
61
50
  function strayTagLines(lines) {
62
51
  const escaped = new Set();
63
52
  for (;;) {
@@ -86,8 +75,8 @@ function strayEscapePoints(raw) {
86
75
  .sort((a, b) => a - b)
87
76
  .map((i) => starts[i] + texts[i].indexOf('<'));
88
77
  }
89
- /** Renders as the literal glyph in a paragraph, in an html block's passthrough, and on
90
- * GitHub alike, while matching no tag line. */
78
+ /** Renders as a literal `<` in a paragraph, in an html block's passthrough, and on GitHub
79
+ * alike, while matching no tag line. */
91
80
  const ESCAPED_LT = '&lt;';
92
81
  function escapeStrayDetailsTags(raw) {
93
82
  const points = strayEscapePoints(raw);
@@ -101,8 +90,8 @@ function escapeStrayDetailsTags(raw) {
101
90
  }
102
91
  return out + raw.slice(cursor);
103
92
  }
104
- /** {@link escapeStrayDetailsTags}'s caret image: each escape ahead of the caret pushes
105
- * it by the entity's growth. */
93
+ /** Where {@link escapeStrayDetailsTags} leaves the caret: each escape before it pushes the
94
+ * caret along by the characters the entity adds. */
106
95
  function mapStrayEscapeOffset(raw, offset) {
107
96
  const grown = ESCAPED_LT.length - 1;
108
97
  return strayEscapePoints(raw).reduce((at, point) => (point < offset ? at + grown : at), offset);
@@ -127,10 +116,13 @@ export function registerDetailsKind() {
127
116
  const details = declarePluginKind(DETAILS);
128
117
  const detailsSummary = declarePluginKind(DETAILS_SUMMARY);
129
118
  registerBlockKind(details, {
119
+ label: 'Details',
120
+ dragLabel: 'Details',
130
121
  mergeRole: 'container',
131
122
  editable: true,
132
123
  supportsInline: false,
133
- // Opaque tier rule: no textual escape hatch at either edge, so both take the gap caret.
124
+ // An opaque container has no text at either edge for the caret to step into, so both
125
+ // edges take the gap caret.
134
126
  gapEdges: 'both',
135
127
  container: {
136
128
  contract: 'opaque',
@@ -141,10 +133,7 @@ export function registerDetailsKind() {
141
133
  isCollapsed: (node) => !getPluginMetadata(node)?.open,
142
134
  expandPatch: () => ({ open: true })
143
135
  },
144
- unwrapRole: {
145
- firstChildBackspace: 'keep-reserved-chrome',
146
- middleChildBackspace: 'default-merge'
147
- },
136
+ unwrapRole: { middleChildBackspace: 'default-merge' },
148
137
  bodyWrite: { normalize: escapeStrayDetailsTags, mapOffset: mapStrayEscapeOffset }
149
138
  },
150
139
  conformanceFixture: '<details>\n<summary>Title</summary>\n\nbody\n\n</details>\n',
@@ -169,12 +158,12 @@ export function registerDetailsKind() {
169
158
  }
170
159
  })
171
160
  });
172
- registerChromeLeaf(detailsSummary, { blockClass: 'details-summary' });
161
+ registerChromeLeaf(detailsSummary, { label: 'Summary', blockClass: 'details-summary' });
173
162
  registerBlockOpener(details, {
174
- // Slots into the gap just below htmlBlock, which else claims `<details>` as a type-6 block.
163
+ // Just below htmlBlock, which would otherwise take `<details>` as a type-6 block.
175
164
  priority: OPENER_PRIORITIES.htmlBlock - 5,
176
165
  // Redundant with htmlBlock's type-6 interrupt, which details wins on re-dispatch; kept
177
- // so the opener's paragraph behavior does not depend on that priority ordering.
166
+ // so this opener's paragraph behavior does not depend on that priority order.
178
167
  interruptsParagraph: (line) => OPEN_LINE.test(line),
179
168
  tryOpen(ctx) {
180
169
  const openMatch = ctx.line.text.match(OPEN_LINE);
@@ -189,20 +178,13 @@ export function registerDetailsKind() {
189
178
  // Depth-counted so nested details recurse via parse rather than closing early.
190
179
  let depth = 1;
191
180
  let closeIdx = -1;
192
- const classify = createTagScanner(canonicalTagLine);
193
- for (let i = summaryIdx + 1; i < ctx.end; i++) {
194
- const tag = classify(ctx.lines[i].text);
195
- if (tag === 'open') {
181
+ visitTagLines(ctx.lines, summaryIdx + 1, ctx.end, canonicalTagLine, (i, tag) => {
182
+ if (tag === 'open')
196
183
  depth++;
197
- }
198
- else if (tag === 'close') {
199
- depth--;
200
- if (depth === 0) {
201
- closeIdx = i;
202
- break;
203
- }
204
- }
205
- }
184
+ else if (tag === 'close' && --depth === 0)
185
+ closeIdx = i;
186
+ return closeIdx !== -1;
187
+ });
206
188
  if (closeIdx === -1)
207
189
  return null; // unterminated declines to htmlBlock
208
190
  const bodyText = ctx.lines
@@ -210,7 +192,10 @@ export function registerDetailsKind() {
210
192
  .map((l) => l.raw)
211
193
  .join('');
212
194
  // A fresh parse entry, so the body's own line 0 must not read as the document top.
213
- const body = parseContainerBody(bodyText, BODY_WRAP, { scope: 'fragment' });
195
+ const body = parseContainerBody(bodyText, BODY_WRAP, {
196
+ scope: 'fragment',
197
+ grammar: ctx.grammar
198
+ });
214
199
  const raw = ctx.lines
215
200
  .slice(ctx.index, closeIdx + 1)
216
201
  .map((l) => l.raw)
@@ -6,13 +6,10 @@
6
6
  */
7
7
  import { type InlineNode, type PluginInlineKind } from '../../plugin';
8
8
  export declare const EMOJI_KIND = "emoji";
9
- /**
10
- * Claims only on a table hit, carrying the glyph on `decoded` (the decoded-entity mold).
11
- * The name is sliced only once a closing colon has bounded a non-empty run, so the common
12
- * decline paths allocate nothing.
13
- */
9
+ /** Matches only a shortcode in the table, carrying the glyph on `decoded` as an entity does; the
10
+ * name is sliced only once a closing colon bounds it, so a miss allocates nothing. */
14
11
  export declare function recognizeEmoji(raw: string, pos: number, end: number, kind: PluginInlineKind): InlineNode | null;
15
- /** `user-select: none` keeps the glyph atomic to the caret; set inline because a
16
- * `buildWidget` island has no style scope. */
12
+ /** `user-select: none` keeps the caret from entering the glyph; set inline because a widget
13
+ * built by `buildWidget` has no scoped stylesheet. */
17
14
  export declare function buildEmojiWidget(node: InlineNode): HTMLSpanElement;
18
15
  export declare function registerEmoji(): void;
@@ -4,7 +4,7 @@
4
4
  * untouched; the glyph is only what the widget paints. Recognition is gated on
5
5
  * registration, so with the plugin absent `:smile:` is ordinary prose.
6
6
  */
7
- import { INLINE_PRIORITIES, declarePluginInlineKind, isInlineKindDeclared, mintWidgetShell, registerInlineSyntax, registerInlineWidgetKind } from '../../plugin';
7
+ import { INLINE_PRIORITIES, declarePluginInlineKind, mintWidgetShell, registerInlineSyntax, registerInlineWidgetKind } from '../../plugin';
8
8
  import { EMOJI_TABLE } from './emoji-table';
9
9
  export const EMOJI_KIND = 'emoji';
10
10
  // The gemoji alphabet: uppercase is excluded to match GitHub, and excluding the
@@ -17,11 +17,8 @@ function isShortcodeChar(code) {
17
17
  code === 0x2d // -
18
18
  );
19
19
  }
20
- /**
21
- * Claims only on a table hit, carrying the glyph on `decoded` (the decoded-entity mold).
22
- * The name is sliced only once a closing colon has bounded a non-empty run, so the common
23
- * decline paths allocate nothing.
24
- */
20
+ /** Matches only a shortcode in the table, carrying the glyph on `decoded` as an entity does; the
21
+ * name is sliced only once a closing colon bounds it, so a miss allocates nothing. */
25
22
  export function recognizeEmoji(raw, pos, end, kind) {
26
23
  let i = pos + 1;
27
24
  while (i < end && raw.charCodeAt(i) !== 0x3a) {
@@ -36,8 +33,8 @@ export function recognizeEmoji(raw, pos, end, kind) {
36
33
  return null;
37
34
  return { kind, start: pos, end: i + 1, decoded: glyph };
38
35
  }
39
- /** `user-select: none` keeps the glyph atomic to the caret; set inline because a
40
- * `buildWidget` island has no style scope. */
36
+ /** `user-select: none` keeps the caret from entering the glyph; set inline because a widget
37
+ * built by `buildWidget` has no scoped stylesheet. */
41
38
  export function buildEmojiWidget(node) {
42
39
  const shell = mintWidgetShell('md-emoji-widget', node);
43
40
  shell.textContent = node.decoded ?? '';
@@ -45,14 +42,10 @@ export function buildEmojiWidget(node) {
45
42
  return shell;
46
43
  }
47
44
  export function registerEmoji() {
48
- // Keyed on the kind registry, not a module latch, so the platform reset that clears
49
- // the inline registries also clears this guard.
50
- if (isInlineKindDeclared(EMOJI_KIND))
51
- return;
52
45
  const kind = declarePluginInlineKind(EMOJI_KIND);
53
46
  registerInlineSyntax(':', (raw, pos, end) => recognizeEmoji(raw, pos, end, kind), {
54
- // The register-once grain forbids a second `:` registration at the plugin rung, so the
55
- // +10 is what lets emoji share the trigger with the directive text tier.
47
+ // Registering `:` twice at the same priority is refused, so the +10 is what lets emoji
48
+ // share the trigger with the directive text handler.
56
49
  priority: INLINE_PRIORITIES.plugin + 10
57
50
  });
58
51
  registerInlineWidgetKind(kind, {