@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,12 +1,12 @@
1
1
  /**
2
- * Editor structural styles: painting rules for DOM the renderers build imperatively,
3
- * which can't live in component <style> blocks. Every rule is wrapped in :where(.editor)
4
- * for zero added specificity and full namespacing. Token VALUES live in editor-theme.css;
5
- * host --color-* tokens are read with fallbacks here, never declared.
2
+ * Structural editor styles: the painting rules for DOM the renderers build in JavaScript, which
3
+ * cannot live in a component's <style> block. Every rule is wrapped in :where(.editor), which adds
4
+ * no specificity and keeps the names to the editor. The token values live in editor-theme.css;
5
+ * a host's --color-* tokens are read here with fallbacks, never declared.
6
6
  */
7
7
 
8
- /* Classes applied by code-renderer.ts; unknown ones fall through to --code-tok-unknown
9
- * (inherit), preserving the textContent invariant without forcing a color choice. */
8
+ /* Classes applied by code-renderer.ts; an unknown one falls through to --code-tok-unknown
9
+ * (inherit), so highlighting never changes the text and never forces a color. */
10
10
  :where(.editor) .code-tok-keyword {
11
11
  color: var(--code-tok-keyword);
12
12
  font-weight: 600;
@@ -72,13 +72,14 @@
72
72
  color: var(--code-tok-unknown);
73
73
  }
74
74
 
75
- /* Uniform selection color: single-block (native) matches cross-block (overlay) */
75
+ /* One selection color: a selection inside one block, painted by the browser, matches one across
76
+ blocks, painted by the overlay. */
76
77
  :where(.editor) ::selection {
77
78
  background: var(--selection-overlay-bg, rgba(100, 150, 255, 0.3));
78
79
  }
79
80
 
80
- /* Suppress native painting so it doesn't double up with SelectionOverlay's highlights. Scoped
81
- to `.block-list` because the find/replace bar is a sibling that must keep painting its own. */
81
+ /* The browser's selection paint goes so it does not double SelectionOverlay's highlights, and only
82
+ in `.block-list`, since the find and replace bar beside it keeps painting its own. */
82
83
  :where(.editor)[data-cross-block] .block-list ::selection {
83
84
  background: transparent;
84
85
  }
@@ -87,9 +88,8 @@
87
88
  caret-color: transparent;
88
89
  }
89
90
 
90
- /* The whole-block editing host: invisible, but a REAL box — Chromium fires no `beforeinput` on a
91
- zero-height editing host, which would silently cost it every keystroke. Click-through, so it
92
- never steals a pointer from the surface it stands over; in-flight IME text paints here. */
91
+ /* Invisible but a real box: Chromium fires no `beforeinput` on a zero-height editing element.
92
+ Clicks pass through, so it never takes a pointer from the block it stands over. */
93
93
  :where(.editor) .whole-block-input {
94
94
  position: absolute;
95
95
  top: 0;
@@ -115,7 +115,7 @@
115
115
  cursor: pointer;
116
116
  }
117
117
 
118
- /* Search's marks ride the base rule above. */
118
+ /* Search matches build on the rule above. */
119
119
  :where(.editor) .match-overlay {
120
120
  background: var(--search-match-bg);
121
121
  }
@@ -123,26 +123,65 @@
123
123
  background: var(--search-match-active-bg);
124
124
  }
125
125
 
126
- /* Non-editable chrome prepended to the host; the consumer positions it. */
126
+ /* A non-editable badge put in front of the block; the consumer positions it. */
127
127
  :where(.editor) .decoration-badge {
128
128
  user-select: none;
129
129
  }
130
130
 
131
- /* Atomic non-editable inline chrome; the source's class layers styling on top. */
131
+ /* A list item's box is a flex row; with a badge it stacks its children instead, so the badge
132
+ sits above the marker and the text, as a block host's badge does, and moves neither. */
133
+ :where(.editor) .list-item-block:has(> .decoration-badge) {
134
+ flex-direction: column;
135
+ }
136
+ /* Set per child: the item's own align-items would tie with a rule on the box. */
137
+ :where(.editor) .list-item-block:has(> .decoration-badge) > .decoration-badge,
138
+ :where(.editor) .list-item-block:has(> .decoration-badge) > .list-item-content {
139
+ align-self: stretch;
140
+ }
141
+
142
+ /* A typed kind change names the new kind at the block's corner until the fade ends. The empty
143
+ alternative text keeps it out of the accessibility tree, since the editor's announcer says it. */
144
+ :where(.editor) .block-host[data-kind-cue]::after {
145
+ content: attr(data-kind-cue);
146
+ content: attr(data-kind-cue) / '';
147
+ position: absolute;
148
+ top: 0;
149
+ right: 0;
150
+ font-family: var(--font-ui);
151
+ font-size: 0.75em;
152
+ color: var(--md-kind-cue-color);
153
+ pointer-events: none;
154
+ user-select: none;
155
+ animation: kind-cue-fade var(--md-kind-cue-duration) ease-out forwards;
156
+ }
157
+
158
+ @keyframes kind-cue-fade {
159
+ 0% {
160
+ opacity: 0;
161
+ }
162
+ 10%,
163
+ 70% {
164
+ opacity: 1;
165
+ }
166
+ 100% {
167
+ opacity: 0;
168
+ }
169
+ }
170
+
171
+ /* A non-editable inline widget the caret cannot enter; its own class styles it on top. */
132
172
  :where(.editor) .decoration-island {
133
173
  user-select: none;
134
174
  }
135
175
 
136
- /* The find bar is editor-level chrome and outranks a block affordance, so a per-block affordance
137
- claiming the same top-right band yields it while the bar is open. Without this the pointer hits
138
- the bar and the affordance is unreachable until search closes (#145). */
176
+ /* The find bar outranks a per-block control, so a control in the same top-right corner moves
177
+ down while the bar is open, where the bar would otherwise cover it. */
139
178
  .editor:has(> .search-anchor .search-bar) .code-lang-chip {
140
179
  top: 52px;
141
180
  }
142
181
 
143
182
  :where(.editor) .md-image-widget {
144
183
  display: block;
145
- /* Shrink-wrap so the widget matches the image, not its line-box. */
184
+ /* Shrink to fit, so the widget matches the image rather than its line box. */
146
185
  width: fit-content;
147
186
  margin: 0.5em 0;
148
187
  user-select: none;
@@ -176,27 +215,22 @@
176
215
  :where(.editor) .md-image-widget.md-image-cropped {
177
216
  overflow: hidden;
178
217
  max-width: 100%;
179
- /* The frame clips the picture, so the rounding belongs to it. `clip-path` alongside
180
- `overflow`, because a rounded overflow clip is the one Chromium drops when the picture
181
- inside gets its own compositing layer, and a crop is exactly when that happens. */
218
+ /* The frame clips the picture, so it owns the rounding. `clip-path` backs up `overflow`, whose
219
+ rounded clip Chromium drops once the cropped picture gets its own compositing layer. */
182
220
  border-radius: var(--md-image-radius);
183
221
  clip-path: inset(0 round var(--md-image-radius));
184
222
  }
185
223
 
186
- /* The picture keeps its own radius rather than going square inside the frame: at zoom 1 it sits
187
- exactly on the frame, so the two corners coincide, and above 1 its corners are outside the
188
- frame entirely. Either way the crop cannot come out with harder corners than the plain image. */
224
+ /* The picture keeps its radius inside the frame: at zoom 1 the corners coincide and above 1 they
225
+ fall outside the frame, so a crop never looks harder-cornered than the plain image. */
189
226
  :where(.editor) .md-image-widget.md-image-cropped img {
190
227
  position: absolute;
191
228
  max-width: none;
192
229
  object-fit: cover;
193
230
  }
194
231
 
195
- /* Image-bearing list-item / blockquote paragraph: the ambient marker sits at the image's
196
- bottom-left, pulled out of flow rather than laid out with `display: flex`, which leaves no
197
- caret anchor past a contenteditable=false widget. The widget side of each `:has()` is a
198
- descendant match, since a wrapping inline construct puts the widget one level deeper; the
199
- marker side stays a child combinator, matching only the structurally-injected prefix. */
232
+ /* An image in a list item or blockquote paragraph: the container's marker sits out of flow at the
233
+ image's bottom-left, since `display: flex` leaves the caret no place past the widget. */
200
234
  :where(.editor)
201
235
  .text-editable-block.paragraph-block:has(> .md-marker[contenteditable='false']):has(
202
236
  .md-image-widget
@@ -228,9 +262,8 @@
228
262
  width: fit-content;
229
263
  }
230
264
 
231
- /* An image with no pixels (broken, scheme-refused, or deferred by `imageLoadPolicy:
232
- 'placeholder'`) lays out 0×0 without this floor, unless a `|WxH` hint reserves its own box.
233
- Display:block stays inherited: image widgets always force a visual line break. */
265
+ /* An image with no pixels (broken, scheme-refused, or a `'placeholder'` load policy) would lay out
266
+ 0×0 without this floor, unless a `|WxH` hint reserves its box. */
234
267
  :where(.editor) .md-image-broken,
235
268
  :where(.editor) .md-image-blocked,
236
269
  :where(.editor) .md-image-placeholder {
@@ -260,7 +293,7 @@
260
293
  content: '⚠ image failed to load';
261
294
  }
262
295
 
263
- /* Tint paints over the widget via ::after — `background-color` on the span
296
+ /* The tint paints over the widget through ::after: `background-color` on the span
264
297
  itself is hidden by the opaque <img> child (display:block, max-width:100%). */
265
298
  :where(.editor) [data-inline-widget].md-widget-selected::after {
266
299
  content: '';
@@ -271,33 +304,47 @@
271
304
  pointer-events: none;
272
305
  }
273
306
 
274
- /* The tint IS the widget's selection paint: native `::selection` on the text inside it (a KaTeX
275
- box is text) would stack a second wash on the same pixels. */
307
+ /* The tint is the widget's selection paint: the browser's own `::selection` on the text inside it
308
+ (a KaTeX box is text) would stack a second tint on the same pixels. */
276
309
  :where(.editor) [data-inline-widget].md-widget-selected ::selection {
277
310
  background: transparent;
278
311
  }
279
312
 
280
- /* Synthetic caret on the snap-target edge — Chromium doesn't reliably render
281
- the live caret adjacent to a contenteditable=false neighbor. */
313
+ /* A drawn caret on the edge the caret snaps to: Chromium does not reliably render
314
+ the real one next to a contenteditable=false neighbor. */
282
315
  :where(.editor) [data-inline-widget].md-snap-after::before,
283
316
  :where(.editor) [data-inline-widget].md-snap-before::before {
284
317
  content: '';
285
318
  position: absolute;
286
- top: 4px;
287
- bottom: 4px;
319
+ top: 0;
320
+ bottom: 0;
288
321
  width: 1.5px;
289
322
  background-color: var(--color-text-primary, currentColor);
290
323
  animation: md-snap-caret-blink 1s step-end infinite;
291
324
  pointer-events: none;
292
325
  }
293
326
 
294
- /* Clear of the widget's own edge: against a picture, a caret drawn tight to the frame reads as
295
- part of the border rather than as a caret waiting for the next character. */
296
327
  :where(.editor) [data-inline-widget].md-snap-after::before {
297
- right: -4px;
328
+ right: -1px;
298
329
  }
299
330
 
300
331
  :where(.editor) [data-inline-widget].md-snap-before::before {
332
+ left: -1px;
333
+ }
334
+
335
+ /* An image's drawn caret is inset from the frame so it reads as a caret, not part of the border;
336
+ a text-height widget keeps the full box, where an inset would leave a stub. */
337
+ :where(.editor) .md-image-widget.md-snap-after::before,
338
+ :where(.editor) .md-image-widget.md-snap-before::before {
339
+ top: 4px;
340
+ bottom: 4px;
341
+ }
342
+
343
+ :where(.editor) .md-image-widget.md-snap-after::before {
344
+ right: -4px;
345
+ }
346
+
347
+ :where(.editor) .md-image-widget.md-snap-before::before {
301
348
  left: -4px;
302
349
  }
303
350
 
@@ -307,8 +354,8 @@
307
354
  }
308
355
  }
309
356
 
310
- /* The synthetic caret REPLACES the native one: Chromium does sometimes render a caret beside a
311
- contenteditable=false island, and two at one position reads as two carets. */
357
+ /* The drawn caret replaces the browser's own: Chromium does sometimes render a caret beside a
358
+ non-editable inline widget, and two at one position read as two carets. */
312
359
  :where(.editor) .md-snap-caret-active {
313
360
  caret-color: transparent;
314
361
  }
@@ -320,10 +367,8 @@
320
367
  z-index: 10;
321
368
  }
322
369
 
323
- /* A selected image says so with a hairline ring. It rides the overlay, not the widget: a cropped
324
- widget clips its own pseudo-elements, and a border on the picture would move the layout. Held
325
- just off the edge so it reads as a ring around the picture rather than part of it, over a
326
- translucent dark line that keeps it legible against a pale photo. */
370
+ /* A selected image's ring sits on the overlay, since a cropped widget clips its own pseudo-elements
371
+ and a border would move the layout; the dark shadow keeps it visible on a pale photo. */
327
372
  :where(.editor) .md-image-overlay::before {
328
373
  content: '';
329
374
  position: absolute;
@@ -345,9 +390,8 @@
345
390
  text-decoration: underline;
346
391
  }
347
392
 
348
- /* A plain click edits; only Ctrl/Cmd+click activates the link (`Editor.svelte` mirrors the
349
- modifier onto the root). Stated explicitly so the caret-vs-pointer state is the editor's,
350
- not the UA's `<a href>` default. */
393
+ /* A plain click edits and only Ctrl/Cmd+click opens the link (`Editor.svelte` sets
394
+ `data-mod-active`), so the cursor overrides the browser's default for `<a href>`. */
351
395
  :where(.editor) a.md-link-content,
352
396
  :where(.editor) .md-autolink {
353
397
  cursor: text;
@@ -360,14 +404,14 @@
360
404
 
361
405
  /* Blocked-scheme link: inert metadata, kept visually distinct from a clickable one. */
362
406
  :where(.editor) .md-link-content.md-link-blocked {
363
- color: var(--md-link-blocked-color, var(--color-text-muted, #888));
407
+ color: var(--md-link-blocked-color, #8f8f89);
364
408
  text-decoration: none;
365
409
  cursor: text;
366
410
  }
367
411
 
368
- /* Dimmer than the structural-content `[text]` / `(url)` markers, so it reads as metadata. */
412
+ /* A faded grey and italic, so the label reads as metadata beside the link's own markers. */
369
413
  :where(.editor) .md-ref-label {
370
- color: var(--md-ref-label-color, rgba(128, 128, 128, 0.45));
414
+ color: var(--md-ref-label-color, #8f8f89);
371
415
  font-style: italic;
372
416
  }
373
417
 
@@ -377,35 +421,36 @@
377
421
  text-decoration: none;
378
422
  }
379
423
 
380
- /* A background sets image-variant unresolved refs apart from link-variant ones. */
424
+ /* A background tells an unresolved image reference apart from an unresolved link one. */
381
425
  :where(.editor) .md-unresolved-ref-image {
382
426
  background: var(--md-unresolved-image-bg, rgba(192, 57, 43, 0.08));
383
427
  padding: 0 2px;
384
428
  border-radius: 2px;
385
429
  }
386
430
 
387
- /* linkReferenceDefinition blocks render as metadata rather than content. */
431
+ /* Link reference definitions render as metadata rather than content. The fade stacks on the
432
+ raw block's own opacity, and 0.8 is the lowest that keeps light-theme text at AA. */
388
433
  :where(.editor) .block-host[data-block-kind='linkReferenceDefinition'] {
389
- opacity: 0.75;
434
+ opacity: 0.8;
390
435
  font-size: 0.9em;
391
436
  font-style: italic;
392
437
  }
393
438
 
394
439
  /* Dimmed monospace gives inline raw HTML a code-ish feel without becoming a code span. */
395
440
  :where(.editor) .md-raw-html {
396
- color: var(--md-raw-html-color, rgba(120, 120, 120, 0.85));
441
+ color: var(--md-raw-html-color, #8f8f89);
397
442
  font-family: var(--font-code, ui-monospace, monospace);
398
443
  font-size: 0.92em;
399
444
  }
400
445
 
401
- /* Off-window placeholder tint (VR-8): a fling can outrun the window recompute and paint a
402
- bare spacer for one frame, which without a background tears white. */
446
+ /* Tint for the blocks not mounted yet (VR-8): a fast scroll can outrun the recompute and paint
447
+ a bare spacer for one frame, which without a background tears white. */
403
448
  :where(.editor) .vr-spacer {
404
449
  background: var(--vr-spacer-bg, rgba(128, 128, 128, 0.03));
405
450
  }
406
451
 
407
- /* One revealed-source identity for render-primary blocks (math, toc, mermaid): a plugin
408
- component adds this class and keeps only its padding/overflow deltas. */
452
+ /* One look for the revealed source of the blocks that render rather than show text (math, toc,
453
+ mermaid): a plugin component adds this class and keeps only its own padding and overflow. */
409
454
  :where(.editor) .md-source-surface {
410
455
  display: block;
411
456
  width: 100%;
@@ -420,10 +465,8 @@
420
465
  border-radius: 4px;
421
466
  }
422
467
 
423
- /* ── Semantic syntax-token wiring ─────────────────────────────────────────────
424
- Defaults in editor-theme.css are neutral, so these rules change nothing until a consumer
425
- overrides a token. Rules whose construct is also colored by a component <style> shorthand
426
- carry the extra selector weight to beat the Svelte scoping class. */
468
+ /* ── Semantic syntax tokens ───────────────────────────────────────────────────
469
+ The editor-theme.css defaults are neutral, so these change nothing until a consumer sets one. */
427
470
 
428
471
  :where(.editor)
429
472
  .text-editable-block:is(.heading-1, .heading-2, .heading-3, .heading-4, .heading-5, .heading-6) {
@@ -438,9 +481,8 @@
438
481
  color: var(--syntax-code, currentColor);
439
482
  }
440
483
 
441
- /* An inline widget's source while it is revealed for editing (`$x$`, a footnote ref): the
442
- inline-code wash, so the span being edited reads as a span, in the prose face so the line
443
- does not reflow around it. */
484
+ /* An inline widget's source shown for editing (`$x$`) takes the inline-code tint so it reads as
485
+ one span, but keeps the prose typeface so the line does not reflow. */
444
486
  ::highlight(md-inline-reveal) {
445
487
  background-color: var(--color-bg-secondary, rgba(128, 128, 128, 0.12));
446
488
  }
@@ -454,12 +496,12 @@
454
496
  border-left-color: var(--syntax-quote, var(--color-ui-muted, #a4a4a4));
455
497
  }
456
498
 
457
- :where(.editor) .thematic-break-rule[role='separator'] > hr {
499
+ :where(.editor) .thematic-break-block > .thematic-break-rule > hr {
458
500
  border-top-color: var(--syntax-separator, var(--color-border, #3e3e3b));
459
501
  }
460
502
 
461
- /* The [contenteditable='false'] qualifier scopes to the structurally-injected ambient
462
- prefix, not inline .md-marker spans. */
503
+ /* The [contenteditable='false'] part limits this to the leading marker the renderer injects,
504
+ not to inline .md-marker spans. */
463
505
  :where(.editor) .list-item-block .md-marker[contenteditable='false'] {
464
506
  color: var(--syntax-list, currentColor);
465
507
  }
@@ -469,9 +511,7 @@
469
511
  }
470
512
 
471
513
  /* ── Menus ──────────────────────────────────────────────────────────────────
472
- One surface for every menu the editor opens (the table's context menu, the code rail's
473
- picker and overflow), copied from the host app's context menu value for value and reading
474
- the same tokens, so a menu here is indistinguishable from one of the host's. */
514
+ One look for every editor menu, matching the host app's context menu through the same tokens. */
475
515
  :where(.editor) .md-menu {
476
516
  position: fixed;
477
517
  z-index: 2000;
@@ -524,7 +564,7 @@
524
564
  display: inline-flex;
525
565
  align-items: center;
526
566
  flex-shrink: 0;
527
- color: var(--color-ui-muted, #8f8f89);
567
+ color: var(--color-ui-muted, #93938d);
528
568
  }
529
569
 
530
570
  :where(.editor) .md-menu-divider {
@@ -533,21 +573,17 @@
533
573
  background: var(--color-border, #3e3e3b);
534
574
  }
535
575
 
536
- /* ── Rendered chrome, shared by every marker-hiding mode ──────────────────────
537
- Every mode but source hides markers by CSS ONLY, never by omitting them from the render
538
- path: the raw-aware offset walk counts every DOM text node regardless of layout, so
539
- structural omission would desync the DOM↔raw coordinate space. Keyed on an
540
- equal-specificity :is() so the per-mode rules below win by source order. */
576
+ /* ── Rendered markers, shared by every mode that hides them ───────────────────
577
+ Hidden in CSS alone, since the DOM-to-offset traversal counts every text node in the render. */
541
578
 
542
- /* .md-marker: inline markers and block-own prefixes are pure syntax in normal flow, so
543
- dropping them from paint and native copy joins the text up rendered-style; ambient
544
- container markers carry layout and keep their box below. */
579
+ /* .md-marker: pure syntax in normal flow, so hiding it joins the text up as it renders; a
580
+ container's leading marker holds layout and keeps its box (below). */
545
581
  /* .md-fence-line: a fence line's `\n` is a bare text node CSS can't reach; the wrapper
546
582
  owns marker + newline, so collapsing it leaves no blank line at the box's edge. */
547
583
  /* .md-ref-label: resolution metadata, not content; a rendered document shows only the
548
584
  link text. */
549
- /* .directive-marker: the container chrome (border/gutter) is the rendered form of a
550
- directive fence; it never reveals, belonging to the container, not the focused leaf. */
585
+ /* .directive-marker: the container's border and gutter are the directive fence's rendered form,
586
+ so a focused block inside never shows the fence's source. */
551
587
  :where(.editor):is(
552
588
  [data-presentation='reading'],
553
589
  [data-presentation^='preview-'],
@@ -557,36 +593,46 @@
557
593
  display: none;
558
594
  }
559
595
 
560
- /* Chrome with nothing behind it has nowhere to hide: a construct whose only bytes are its own
561
- markers has no caret position, so an editable rung shows them dimmed as source does — but
562
- only while the surface holds focus, since the seat is for a caret and a block nobody is in
563
- reads as the empty construct it is. Mirrored in `cursor/widget-offset.ts` (same modes, same
564
- families); reading keeps its silence. `[contenteditable]` scopes the stamp to the walk
565
- containers its JS twin reads, which a decoration on the block host cannot reach. */
596
+ /* A focused construct whose only bytes are its markers shows them dimmed, since it has nothing
597
+ else to show and no caret position inside; mirrored in `cursor/widget-offset.ts`. */
566
598
  :where(.editor):is([data-presentation^='preview-'], [data-presentation='live'])
567
599
  [contenteditable][data-content-empty]:focus-within
568
600
  :is(.md-marker:not([contenteditable='false']), .md-fence-line) {
569
601
  display: inline;
570
602
  }
571
603
 
572
- /* A code block or table is a box, and prose gives it nothing to stand off from: blocks stack flush,
573
- with only a text line's own leading between them. The box brings its own breathing room —
574
- about a text line's leading each side, so code-to-code and code-to-prose match. Padding,
575
- not margin: the height model measures the host's border box. */
604
+ /* Blocks stack flush, so a code block or table brings its own room, about a line's leading each
605
+ side; padding, not margin, because block heights are measured from the host's border box. */
576
606
  :where(.editor) .block-host:is([data-block-kind='fencedCode'], [data-block-kind='table']) {
577
607
  padding-block: 6px;
578
608
  }
579
609
 
580
- /* Room for the add strips (`TableBlock.svelte`) INSIDE the host's box: on the right so a
581
- full-width table still leaves the column strip inside the editor's scroll box, and below so
582
- the row strip never lies over whatever follows the table (the trailing insert row, a block). */
610
+ /* Room inside the table's box for the add-row and add-column strips (`TableBlock.svelte`), so they
611
+ stay inside the scroll container and never lie over the block that follows. */
583
612
  :where(.editor) .block-host[data-block-kind='table'] {
584
613
  padding-right: 30px;
585
614
  padding-bottom: 24px;
586
615
  }
587
616
 
588
- /* Ambient list markers own the hanging indent (padding/text-indent are keyed to the span's
589
- ch width), so they keep their box: visibility, not display. */
617
+ /* A hard break whose bytes are hidden or blank (trailing spaces) draws a dimmed return glyph, so
618
+ the line break has a visible cause; generated content adds no text to a copy or screen reader. */
619
+ :where(.editor):is([data-presentation^='preview-'], [data-presentation='live'])
620
+ .md-hard-break::before,
621
+ :where(.editor):not([data-presentation]) .md-hard-break[data-trailing-spaces]::before {
622
+ content: '↵';
623
+ content: '↵' / '';
624
+ opacity: var(--syntax-marker-dim, 0.65);
625
+ }
626
+
627
+ /* A focused preview block paints the backslash itself, so the glyph would say it twice. */
628
+ :where(.editor)[data-presentation^='preview-']
629
+ .block-host[data-focused]
630
+ .md-hard-break:not([data-trailing-spaces])::before {
631
+ content: none;
632
+ }
633
+
634
+ /* A list item's leading marker owns the hanging indent (padding and text-indent are keyed to
635
+ the span's ch width), so it keeps its box: visibility, not display. */
590
636
  :where(.editor):is(
591
637
  [data-presentation='reading'],
592
638
  [data-presentation^='preview-'],
@@ -598,7 +644,7 @@
598
644
  opacity: 1;
599
645
  }
600
646
 
601
- /* `- ` hides and a rendered bullet paints in its slot, like blockquote's border. */
647
+ /* `- ` hides and a rendered bullet paints in its place, the way a blockquote's border does. */
602
648
  :where(.editor):is(
603
649
  [data-presentation='reading'],
604
650
  [data-presentation^='preview-'],
@@ -611,7 +657,7 @@
611
657
  color: var(--syntax-list, currentColor);
612
658
  }
613
659
 
614
- /* The ambient text IS the rendered number (`1. `), so it stays visible and undimmed. */
660
+ /* The marker text is itself the rendered number (`1. `), so it stays visible and undimmed. */
615
661
  :where(.editor):is(
616
662
  [data-presentation='reading'],
617
663
  [data-presentation^='preview-'],
@@ -622,9 +668,8 @@
622
668
  visibility: visible;
623
669
  }
624
670
 
625
- /* GitHub task lists: no bullet, the box at the margin, the text one gap after it. The `- `
626
- marker collapses to nothing (its bytes stay for the walk), the `[ ]` span becomes a fixed
627
- slot so checked and unchecked are the same width, and the box paints in that slot. */
671
+ /* GitHub task lists: the `- ` collapses, keeping its bytes for the offset traversal, and the
672
+ `[ ]` span becomes a fixed-width space the box paints in, so checked and unchecked match. */
628
673
  :where(.editor):is(
629
674
  [data-presentation='reading'],
630
675
  [data-presentation^='preview-'],
@@ -637,6 +682,27 @@
637
682
  overflow: hidden;
638
683
  }
639
684
 
685
+ /* Where the box is drawn, the marker sizes off the editor's text rather than a scaled first child
686
+ (a heading); the component's inline hanging indent reads `--md-task-indent` to match. */
687
+ :where(.editor):is(
688
+ [data-presentation='reading'],
689
+ [data-presentation^='preview-'],
690
+ [data-presentation='live']
691
+ )
692
+ .list-item-block[data-list-marker='task'] {
693
+ --md-task-indent: calc(2.1 * var(--editor-font-size, 1rem));
694
+ }
695
+
696
+ :where(.editor):is(
697
+ [data-presentation='reading'],
698
+ [data-presentation^='preview-'],
699
+ [data-presentation='live']
700
+ )
701
+ .list-item-block[data-list-marker='task']
702
+ .md-marker[contenteditable='false'] {
703
+ font-size: var(--editor-font-size, 1rem);
704
+ }
705
+
640
706
  :where(.editor):is(
641
707
  [data-presentation='reading'],
642
708
  [data-presentation^='preview-'],
@@ -644,13 +710,14 @@
644
710
  )
645
711
  .list-item-block[data-list-marker='task']
646
712
  .task-checkbox {
647
- /* Visible inside the hidden ambient marker, its `[ ]` bytes gone by colour: a hidden span
648
- leaves the accessibility tree and the hit-test, and the pseudo-elements draw the box. */
713
+ /* Visible inside the hidden marker, its `[ ]` bytes hidden by colour: a hidden span drops out
714
+ of the accessibility tree and out of hit-testing, and the pseudo-elements draw the box. */
649
715
  visibility: visible;
650
716
  color: transparent;
651
717
  position: relative;
652
718
  display: inline-block;
653
- /* Slot + gap; `TASK_HANGING_INDENT` in task-checkbox.ts is these plus the trailing space. */
719
+ /* The box's width plus its gap; `TASK_HANGING_INDENT` in task-checkbox.ts is these two plus
720
+ the trailing space. */
654
721
  width: 1.2em;
655
722
  margin-right: 0.65em;
656
723
  vertical-align: baseline;
@@ -665,9 +732,8 @@
665
732
  .task-checkbox::before {
666
733
  content: '';
667
734
  visibility: visible;
668
- /* Centred by layout and sized to whole pixels, never by a translate: a transformed box
669
- rasterises at fractional edges on a scaled desktop and reads shorter than it is wide.
670
- The unrounded pair is the fallback for a browser without `round()`. */
735
+ /* Centred by layout and whole pixels, not a translate, which rasterises at fractional edges on
736
+ a scaled display; the unrounded pair is the fallback for a browser without `round()`. */
671
737
  position: absolute;
672
738
  inset: 0;
673
739
  margin: auto;
@@ -676,13 +742,13 @@
676
742
  width: round(1.2em, 1px);
677
743
  height: round(1.2em, 1px);
678
744
  box-sizing: border-box;
679
- border: 1.5px solid var(--color-ui-muted, #8f8f89);
745
+ border: 1.5px solid var(--color-ui-muted, #93938d);
680
746
  border-radius: 0.28em;
681
747
  background: transparent;
682
748
  }
683
749
 
684
- /* Checked: the box fills with the text colour and the tick is cut from it in the page's
685
- background — two borders of a rotated box, so it needs no glyph and scales with the type. */
750
+ /* Checked: the box fills with `--syntax-task-checked`, and the tick is two borders of a rotated
751
+ box in `--syntax-task-checked-tick`, so it needs no glyph and scales with the type. */
686
752
  :where(.editor):is(
687
753
  [data-presentation='reading'],
688
754
  [data-presentation^='preview-'],
@@ -690,8 +756,8 @@
690
756
  )
691
757
  .list-item-block[data-task-checked='true']
692
758
  .task-checkbox::before {
693
- background: var(--color-text-primary, currentColor);
694
- border-color: var(--color-text-primary, currentColor);
759
+ background: var(--syntax-task-checked, var(--color-text-primary, currentColor));
760
+ border-color: var(--syntax-task-checked, var(--color-text-primary, currentColor));
695
761
  }
696
762
 
697
763
  :where(.editor):is(
@@ -704,22 +770,20 @@
704
770
  content: '';
705
771
  visibility: visible;
706
772
  position: absolute;
707
- /* The slot's centre, nudged up and right: the visible strokes are the L's right and
708
- bottom edges, which rotation swings down and left. */
773
+ /* The box's centre, nudged up and right: the visible strokes are the L's right and
774
+ bottom edges, which the rotation swings down and left. */
709
775
  left: 53%;
710
776
  top: 45%;
711
777
  width: 0.32em;
712
778
  height: 0.6em;
713
779
  box-sizing: border-box;
714
- border: solid var(--color-bg, #2c2c2a);
780
+ border: solid var(--syntax-task-checked-tick, var(--color-bg, #2c2c2a));
715
781
  border-width: 0 0.15em 0.15em 0;
716
782
  transform: translate(-50%, -50%) rotate(45deg);
717
783
  }
718
784
 
719
- /* The span is the SLOT, a full line-height tall; the box is the pseudo-element inside it. The
720
- hover tint the source modes put on the span (ListItemBlock) would draw a tall rectangle
721
- round the square, so in the rendered modes it moves onto the box: an open box fills with
722
- the tint, a checked one is already a solid fill and keeps it. */
785
+ /* The span is a full line-height tall, so the rendered modes move its hover tint onto the box
786
+ inside it; a checked box is already solid and keeps its fill. */
723
787
  :where(.editor):is(
724
788
  [data-presentation='reading'],
725
789
  [data-presentation^='preview-'],
@@ -751,11 +815,10 @@
751
815
  }
752
816
 
753
817
  /* ── Reading mode ─────────────────────────────────────────────────────────────
754
- The marker-hiding families reading shares with the preview rungs and `live` are in the
755
- section above; reading adds only its read-only inertness on top — `live` takes none of it. */
818
+ Reading adds only read-only inertness to the shared marker hiding above. */
756
819
 
757
- /* pointer-events kills the toggle click at the CSS layer; the toggleTask guard is the JS
758
- belt. Toggling would rewrite the document, and reading mode writes no bytes. */
820
+ /* pointer-events stops the toggle click in CSS, and the check in toggleTask stops it in
821
+ JavaScript: a toggle rewrites the document, and reading mode writes no bytes. */
759
822
  :where(.editor)[data-presentation='reading']
760
823
  .list-item-block[data-list-marker='task']
761
824
  .task-checkbox {
@@ -773,20 +836,17 @@
773
836
  cursor: pointer;
774
837
  }
775
838
 
776
- /* ── Preview rungs (block + inline granularity) ───────────────────────────────
777
- `preview-block` renders the focused block as full styled source; `preview-inline` reveals
778
- only the constructs at the caret. Markers hide broadly (above) and un-hide INSIDE the
779
- focused host: the naive `.block-host:not([data-focused])` would hide a focused leaf's
780
- markers through its unfocused container ancestor. */
839
+ /* ── Preview modes (the whole block, or the constructs at the caret) ──────────
840
+ Markers hide broadly (above) and show again inside the focused block. */
781
841
 
782
- /* All inline spans, so the reveal restores source layout exactly. */
842
+ /* Every inline span, so the revealed source lays out exactly as source mode does. */
783
843
  :where(.editor)[data-presentation='preview-block']
784
844
  .block-host[data-focused]
785
845
  .md-marker:not([contenteditable='false']) {
786
846
  display: inline;
787
847
  }
788
848
 
789
- /* Code fence lines are whole-block markers, so both preview modes reveal them on focus. */
849
+ /* Code fence lines are whole-block markers, so both preview modes show them on focus. */
790
850
  :where(.editor)[data-presentation^='preview-'] .block-host[data-focused] .md-fence-line {
791
851
  display: inline;
792
852
  }
@@ -800,13 +860,13 @@
800
860
  display: none;
801
861
  }
802
862
 
803
- /* Reference labels reveal on the focused block under preview-block. */
863
+ /* Reference labels show on the focused block under preview-block. */
804
864
  :where(.editor)[data-presentation='preview-block'] .block-host[data-focused] .md-ref-label {
805
865
  display: inline;
806
866
  }
807
867
 
808
- /* preview-inline is excluded on purpose: the ambient marker is chrome the caret can never
809
- enter, so at inline granularity it keeps its rendered form. */
868
+ /* preview-inline is left out on purpose: a container's leading marker is syntax the caret can
869
+ never enter, so with only the constructs at the caret shown it keeps its rendered form. */
810
870
  :where(.editor)[data-presentation='preview-block']
811
871
  .block-host[data-focused]
812
872
  .md-marker[contenteditable='false'] {
@@ -819,10 +879,8 @@
819
879
  content: none;
820
880
  }
821
881
 
822
- /* ── Inline-granular reveal (preview-inline's focused block) ──────────────────
823
- The render stamps construct markers with data-construct-* and `construct-reveal.ts` flips
824
- md-construct-reveal on the chain at the caret. Unstamped markers reveal with block focus as
825
- under preview-block, so a table's stampless cells degrade to that behavior. */
882
+ /* ── Showing only the constructs at the caret (preview-inline) ────────────────
883
+ `construct-reveal.ts` marks the constructs at the caret; unmarked markers show on block focus. */
826
884
  :where(.editor)[data-presentation='preview-inline']
827
885
  .block-host[data-focused]
828
886
  .md-marker:not([contenteditable='false']):not([data-construct-start]) {