@voithos-labs/aragonite 0.10.3 → 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 +12 -5
  3. package/dist/a11y-strings.js +61 -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 +13 -20
  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 +619 -1089
  23. package/dist/components/Editor.svelte.d.ts +9 -20
  24. package/dist/components/GapCaret.svelte +26 -59
  25. package/dist/components/SelectionOverlay.svelte +36 -67
  26. package/dist/components/SelectionOverlay.svelte.d.ts +6 -4
  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 +103 -100
  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 +35 -28
  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 +58 -32
  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 +144 -202
  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 +46 -90
  65. package/dist/components/blocks/list/ListItemBlock.svelte +99 -144
  66. package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +3 -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 +9 -4
  102. package/dist/components/blocks/text/click-snap-guard.js +16 -5
  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 +164 -180
  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 -105
  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 +243 -208
  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 +13 -30
  144. package/dist/components/drag-handle.js +25 -63
  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 -31
  162. package/dist/components/editor-root-listeners.js +49 -46
  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 +26 -30
  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 +380 -0
  209. package/dist/components/menu/SelectionToolbar.svelte.d.ts +14 -0
  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 +55 -68
  256. package/dist/core/inline/inline-widgets.js +55 -58
  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 +33 -17
  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 -7
  347. package/dist/cursor/height-oracle.js +26 -75
  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 +16 -8
  365. package/dist/cursor/scrollport.js +28 -5
  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 -13
  375. package/dist/cursor/visual-lines.js +72 -28
  376. package/dist/cursor/widget-edge-snap.d.ts +23 -0
  377. package/dist/cursor/widget-edge-snap.js +39 -0
  378. package/dist/cursor/widget-offset.d.ts +111 -102
  379. package/dist/cursor/widget-offset.js +352 -177
  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 +31 -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 +33 -52
  434. package/dist/editor-actions/focus/focus-landing.d.ts +11 -5
  435. package/dist/editor-actions/focus/focus-landing.js +29 -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 +55 -76
  465. package/dist/editor-actions/plugin/container.js +105 -186
  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 +91 -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 +38 -8
  550. package/dist/plugin.js +102 -74
  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 +113 -85
  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 -75
  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 +63 -47
  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 +18 -7
  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 +143 -292
  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 +79 -81
  695. package/dist/schema/commands.js +156 -116
  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 +9 -11
  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 +73 -78
  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 +93 -152
  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 +61 -104
  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 +53 -146
  807. package/dist/selection/dead-space-caret.d.ts +20 -28
  808. package/dist/selection/dead-space-caret.js +79 -87
  809. package/dist/selection/drag-pointer.d.ts +22 -5
  810. package/dist/selection/drag-pointer.js +63 -31
  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 -39
  816. package/dist/selection/keyboard-extend.js +94 -116
  817. package/dist/selection/multi-click.d.ts +37 -0
  818. package/dist/selection/multi-click.js +197 -0
  819. package/dist/selection/native-bridge.d.ts +30 -37
  820. package/dist/selection/native-bridge.js +80 -100
  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 +31 -14
  824. package/dist/selection/path-lookup.js +110 -20
  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 +9 -0
  828. package/dist/selection/pointer-gesture.js +11 -0
  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 -33
  832. package/dist/selection/primitives.js +61 -53
  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 -19
  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 +52 -0
  852. package/dist/selection/selection-drop.js +317 -0
  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 +75 -53
  864. package/dist/styles/editor.css +248 -139
  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 +19 -0
  960. package/dist/tree-operations/paste/replacement-parse.js +24 -0
  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 +329 -205
  994. package/docs/guide/directives.md +7 -7
  995. package/docs/guide/plugin-api.md +267 -183
  996. package/docs/guide/plugin-guide.md +341 -235
  997. package/docs/guide/plugin-testing.md +96 -82
  998. package/package.json +17 -21
  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/invariants/split-landing.d.ts +0 -8
  1015. package/dist/invariants/split-landing.js +0 -15
  1016. package/dist/selection/double-click-trim.d.ts +0 -17
  1017. package/dist/selection/double-click-trim.js +0 -57
  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 -29
  1021. package/dist/tree-operations/paste/replace-block-at-parent.js +0 -75
@@ -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;
@@ -168,9 +207,7 @@
168
207
  max-width: 100%;
169
208
  height: auto;
170
209
  display: block;
171
- /* Enough to take the hard corner off a photo sitting in prose, not enough to read as a
172
- card: half the surface radius the block chrome uses. */
173
- border-radius: 4px;
210
+ border-radius: var(--md-image-radius);
174
211
  }
175
212
 
176
213
  /* A cropped image: the widget is the frame (width and aspect set inline from the `|WxH` hint,
@@ -178,26 +215,22 @@
178
215
  :where(.editor) .md-image-widget.md-image-cropped {
179
216
  overflow: hidden;
180
217
  max-width: 100%;
181
- /* The frame clips the picture, so the rounding belongs to it; the picture inside is square
182
- again or its own corners would cut inside the frame's. */
183
- border-radius: 4px;
184
- }
185
-
186
- :where(.editor) .md-image-widget.md-image-cropped img {
187
- border-radius: 0;
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. */
220
+ border-radius: var(--md-image-radius);
221
+ clip-path: inset(0 round var(--md-image-radius));
188
222
  }
189
223
 
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. */
190
226
  :where(.editor) .md-image-widget.md-image-cropped img {
191
227
  position: absolute;
192
228
  max-width: none;
193
229
  object-fit: cover;
194
230
  }
195
231
 
196
- /* Image-bearing list-item / blockquote paragraph: the ambient marker sits at the image's
197
- bottom-left, pulled out of flow rather than laid out with `display: flex`, which leaves no
198
- caret anchor past a contenteditable=false widget. The widget side of each `:has()` is a
199
- descendant match, since a wrapping inline construct puts the widget one level deeper; the
200
- 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. */
201
234
  :where(.editor)
202
235
  .text-editable-block.paragraph-block:has(> .md-marker[contenteditable='false']):has(
203
236
  .md-image-widget
@@ -229,9 +262,8 @@
229
262
  width: fit-content;
230
263
  }
231
264
 
232
- /* An image with no pixels (broken, scheme-refused, or deferred by `imageLoadPolicy:
233
- 'placeholder'`) lays out 0×0 without this floor, unless a `|WxH` hint reserves its own box.
234
- 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. */
235
267
  :where(.editor) .md-image-broken,
236
268
  :where(.editor) .md-image-blocked,
237
269
  :where(.editor) .md-image-placeholder {
@@ -261,7 +293,7 @@
261
293
  content: '⚠ image failed to load';
262
294
  }
263
295
 
264
- /* 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
265
297
  itself is hidden by the opaque <img> child (display:block, max-width:100%). */
266
298
  :where(.editor) [data-inline-widget].md-widget-selected::after {
267
299
  content: '';
@@ -272,33 +304,47 @@
272
304
  pointer-events: none;
273
305
  }
274
306
 
275
- /* The tint IS the widget's selection paint: native `::selection` on the text inside it (a KaTeX
276
- 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. */
277
309
  :where(.editor) [data-inline-widget].md-widget-selected ::selection {
278
310
  background: transparent;
279
311
  }
280
312
 
281
- /* Synthetic caret on the snap-target edge — Chromium doesn't reliably render
282
- 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. */
283
315
  :where(.editor) [data-inline-widget].md-snap-after::before,
284
316
  :where(.editor) [data-inline-widget].md-snap-before::before {
285
317
  content: '';
286
318
  position: absolute;
287
- top: 4px;
288
- bottom: 4px;
319
+ top: 0;
320
+ bottom: 0;
289
321
  width: 1.5px;
290
322
  background-color: var(--color-text-primary, currentColor);
291
323
  animation: md-snap-caret-blink 1s step-end infinite;
292
324
  pointer-events: none;
293
325
  }
294
326
 
295
- /* Clear of the widget's own edge: against a picture, a caret drawn tight to the frame reads as
296
- part of the border rather than as a caret waiting for the next character. */
297
327
  :where(.editor) [data-inline-widget].md-snap-after::before {
298
- right: -4px;
328
+ right: -1px;
299
329
  }
300
330
 
301
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 {
302
348
  left: -4px;
303
349
  }
304
350
 
@@ -308,8 +354,8 @@
308
354
  }
309
355
  }
310
356
 
311
- /* The synthetic caret REPLACES the native one: Chromium does sometimes render a caret beside a
312
- 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. */
313
359
  :where(.editor) .md-snap-caret-active {
314
360
  caret-color: transparent;
315
361
  }
@@ -321,6 +367,18 @@
321
367
  z-index: 10;
322
368
  }
323
369
 
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. */
372
+ :where(.editor) .md-image-overlay::before {
373
+ content: '';
374
+ position: absolute;
375
+ inset: -2px;
376
+ border: 1px solid var(--color-accent, #567b67);
377
+ border-radius: calc(var(--md-image-radius, 4px) + 2px);
378
+ box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.18);
379
+ pointer-events: none;
380
+ }
381
+
324
382
  :where(.editor) .md-image-overlay > * {
325
383
  pointer-events: auto;
326
384
  }
@@ -332,9 +390,8 @@
332
390
  text-decoration: underline;
333
391
  }
334
392
 
335
- /* A plain click edits; only Ctrl/Cmd+click activates the link (`Editor.svelte` mirrors the
336
- modifier onto the root). Stated explicitly so the caret-vs-pointer state is the editor's,
337
- 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>`. */
338
395
  :where(.editor) a.md-link-content,
339
396
  :where(.editor) .md-autolink {
340
397
  cursor: text;
@@ -347,14 +404,14 @@
347
404
 
348
405
  /* Blocked-scheme link: inert metadata, kept visually distinct from a clickable one. */
349
406
  :where(.editor) .md-link-content.md-link-blocked {
350
- color: var(--md-link-blocked-color, var(--color-text-muted, #888));
407
+ color: var(--md-link-blocked-color, #8f8f89);
351
408
  text-decoration: none;
352
409
  cursor: text;
353
410
  }
354
411
 
355
- /* 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. */
356
413
  :where(.editor) .md-ref-label {
357
- color: var(--md-ref-label-color, rgba(128, 128, 128, 0.45));
414
+ color: var(--md-ref-label-color, #8f8f89);
358
415
  font-style: italic;
359
416
  }
360
417
 
@@ -364,35 +421,36 @@
364
421
  text-decoration: none;
365
422
  }
366
423
 
367
- /* 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. */
368
425
  :where(.editor) .md-unresolved-ref-image {
369
426
  background: var(--md-unresolved-image-bg, rgba(192, 57, 43, 0.08));
370
427
  padding: 0 2px;
371
428
  border-radius: 2px;
372
429
  }
373
430
 
374
- /* 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. */
375
433
  :where(.editor) .block-host[data-block-kind='linkReferenceDefinition'] {
376
- opacity: 0.75;
434
+ opacity: 0.8;
377
435
  font-size: 0.9em;
378
436
  font-style: italic;
379
437
  }
380
438
 
381
439
  /* Dimmed monospace gives inline raw HTML a code-ish feel without becoming a code span. */
382
440
  :where(.editor) .md-raw-html {
383
- color: var(--md-raw-html-color, rgba(120, 120, 120, 0.85));
441
+ color: var(--md-raw-html-color, #8f8f89);
384
442
  font-family: var(--font-code, ui-monospace, monospace);
385
443
  font-size: 0.92em;
386
444
  }
387
445
 
388
- /* Off-window placeholder tint (VR-8): a fling can outrun the window recompute and paint a
389
- 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. */
390
448
  :where(.editor) .vr-spacer {
391
449
  background: var(--vr-spacer-bg, rgba(128, 128, 128, 0.03));
392
450
  }
393
451
 
394
- /* One revealed-source identity for render-primary blocks (math, toc, mermaid): a plugin
395
- 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. */
396
454
  :where(.editor) .md-source-surface {
397
455
  display: block;
398
456
  width: 100%;
@@ -407,10 +465,8 @@
407
465
  border-radius: 4px;
408
466
  }
409
467
 
410
- /* ── Semantic syntax-token wiring ─────────────────────────────────────────────
411
- Defaults in editor-theme.css are neutral, so these rules change nothing until a consumer
412
- overrides a token. Rules whose construct is also colored by a component <style> shorthand
413
- 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. */
414
470
 
415
471
  :where(.editor)
416
472
  .text-editable-block:is(.heading-1, .heading-2, .heading-3, .heading-4, .heading-5, .heading-6) {
@@ -425,9 +481,8 @@
425
481
  color: var(--syntax-code, currentColor);
426
482
  }
427
483
 
428
- /* An inline widget's source while it is revealed for editing (`$x$`, a footnote ref): the
429
- inline-code wash, so the span being edited reads as a span, in the prose face so the line
430
- 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. */
431
486
  ::highlight(md-inline-reveal) {
432
487
  background-color: var(--color-bg-secondary, rgba(128, 128, 128, 0.12));
433
488
  }
@@ -441,12 +496,12 @@
441
496
  border-left-color: var(--syntax-quote, var(--color-ui-muted, #a4a4a4));
442
497
  }
443
498
 
444
- :where(.editor) .thematic-break-rule[role='separator'] > hr {
499
+ :where(.editor) .thematic-break-block > .thematic-break-rule > hr {
445
500
  border-top-color: var(--syntax-separator, var(--color-border, #3e3e3b));
446
501
  }
447
502
 
448
- /* The [contenteditable='false'] qualifier scopes to the structurally-injected ambient
449
- 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. */
450
505
  :where(.editor) .list-item-block .md-marker[contenteditable='false'] {
451
506
  color: var(--syntax-list, currentColor);
452
507
  }
@@ -456,9 +511,7 @@
456
511
  }
457
512
 
458
513
  /* ── Menus ──────────────────────────────────────────────────────────────────
459
- One surface for every menu the editor opens (the table's context menu, the code rail's
460
- picker and overflow), copied from the host app's context menu value for value and reading
461
- 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. */
462
515
  :where(.editor) .md-menu {
463
516
  position: fixed;
464
517
  z-index: 2000;
@@ -511,7 +564,7 @@
511
564
  display: inline-flex;
512
565
  align-items: center;
513
566
  flex-shrink: 0;
514
- color: var(--color-ui-muted, #8f8f89);
567
+ color: var(--color-ui-muted, #93938d);
515
568
  }
516
569
 
517
570
  :where(.editor) .md-menu-divider {
@@ -520,21 +573,17 @@
520
573
  background: var(--color-border, #3e3e3b);
521
574
  }
522
575
 
523
- /* ── Rendered chrome, shared by every marker-hiding mode ──────────────────────
524
- Every mode but source hides markers by CSS ONLY, never by omitting them from the render
525
- path: the raw-aware offset walk counts every DOM text node regardless of layout, so
526
- structural omission would desync the DOM↔raw coordinate space. Keyed on an
527
- 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. */
528
578
 
529
- /* .md-marker: inline markers and block-own prefixes are pure syntax in normal flow, so
530
- dropping them from paint and native copy joins the text up rendered-style; ambient
531
- 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). */
532
581
  /* .md-fence-line: a fence line's `\n` is a bare text node CSS can't reach; the wrapper
533
582
  owns marker + newline, so collapsing it leaves no blank line at the box's edge. */
534
583
  /* .md-ref-label: resolution metadata, not content; a rendered document shows only the
535
584
  link text. */
536
- /* .directive-marker: the container chrome (border/gutter) is the rendered form of a
537
- 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. */
538
587
  :where(.editor):is(
539
588
  [data-presentation='reading'],
540
589
  [data-presentation^='preview-'],
@@ -544,36 +593,46 @@
544
593
  display: none;
545
594
  }
546
595
 
547
- /* Chrome with nothing behind it has nowhere to hide: a construct whose only bytes are its own
548
- markers has no caret position, so an editable rung shows them dimmed as source does — but
549
- only while the surface holds focus, since the seat is for a caret and a block nobody is in
550
- reads as the empty construct it is. Mirrored in `cursor/widget-offset.ts` (same modes, same
551
- families); reading keeps its silence. `[contenteditable]` scopes the stamp to the walk
552
- 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`. */
553
598
  :where(.editor):is([data-presentation^='preview-'], [data-presentation='live'])
554
599
  [contenteditable][data-content-empty]:focus-within
555
600
  :is(.md-marker:not([contenteditable='false']), .md-fence-line) {
556
601
  display: inline;
557
602
  }
558
603
 
559
- /* A code block or table is a box, and prose gives it nothing to stand off from: blocks stack flush,
560
- with only a text line's own leading between them. The box brings its own breathing room —
561
- about a text line's leading each side, so code-to-code and code-to-prose match. Padding,
562
- 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. */
563
606
  :where(.editor) .block-host:is([data-block-kind='fencedCode'], [data-block-kind='table']) {
564
607
  padding-block: 6px;
565
608
  }
566
609
 
567
- /* Room for the add strips (`TableBlock.svelte`) INSIDE the host's box: on the right so a
568
- full-width table still leaves the column strip inside the editor's scroll box, and below so
569
- 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. */
570
612
  :where(.editor) .block-host[data-block-kind='table'] {
571
613
  padding-right: 30px;
572
614
  padding-bottom: 24px;
573
615
  }
574
616
 
575
- /* Ambient list markers own the hanging indent (padding/text-indent are keyed to the span's
576
- 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. */
577
636
  :where(.editor):is(
578
637
  [data-presentation='reading'],
579
638
  [data-presentation^='preview-'],
@@ -585,7 +644,7 @@
585
644
  opacity: 1;
586
645
  }
587
646
 
588
- /* `- ` 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. */
589
648
  :where(.editor):is(
590
649
  [data-presentation='reading'],
591
650
  [data-presentation^='preview-'],
@@ -598,7 +657,7 @@
598
657
  color: var(--syntax-list, currentColor);
599
658
  }
600
659
 
601
- /* 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. */
602
661
  :where(.editor):is(
603
662
  [data-presentation='reading'],
604
663
  [data-presentation^='preview-'],
@@ -609,9 +668,8 @@
609
668
  visibility: visible;
610
669
  }
611
670
 
612
- /* GitHub task lists: no bullet, the box at the margin, the text one gap after it. The `- `
613
- marker collapses to nothing (its bytes stay for the walk), the `[ ]` span becomes a fixed
614
- 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. */
615
673
  :where(.editor):is(
616
674
  [data-presentation='reading'],
617
675
  [data-presentation^='preview-'],
@@ -624,6 +682,27 @@
624
682
  overflow: hidden;
625
683
  }
626
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
+
627
706
  :where(.editor):is(
628
707
  [data-presentation='reading'],
629
708
  [data-presentation^='preview-'],
@@ -631,13 +710,14 @@
631
710
  )
632
711
  .list-item-block[data-list-marker='task']
633
712
  .task-checkbox {
634
- /* Visible inside the hidden ambient marker, its `[ ]` bytes gone by colour: a hidden span
635
- 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. */
636
715
  visibility: visible;
637
716
  color: transparent;
638
717
  position: relative;
639
718
  display: inline-block;
640
- /* 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. */
641
721
  width: 1.2em;
642
722
  margin-right: 0.65em;
643
723
  vertical-align: baseline;
@@ -652,20 +732,23 @@
652
732
  .task-checkbox::before {
653
733
  content: '';
654
734
  visibility: visible;
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()`. */
655
737
  position: absolute;
656
- left: 50%;
657
- top: 50%;
738
+ inset: 0;
739
+ margin: auto;
658
740
  width: 1.2em;
659
741
  height: 1.2em;
660
- transform: translate(-50%, -50%);
742
+ width: round(1.2em, 1px);
743
+ height: round(1.2em, 1px);
661
744
  box-sizing: border-box;
662
- border: 1.5px solid var(--color-ui-muted, #8f8f89);
745
+ border: 1.5px solid var(--color-ui-muted, #93938d);
663
746
  border-radius: 0.28em;
664
747
  background: transparent;
665
748
  }
666
749
 
667
- /* Checked: the box fills with the text colour and the tick is cut from it in the page's
668
- 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. */
669
752
  :where(.editor):is(
670
753
  [data-presentation='reading'],
671
754
  [data-presentation^='preview-'],
@@ -673,8 +756,8 @@
673
756
  )
674
757
  .list-item-block[data-task-checked='true']
675
758
  .task-checkbox::before {
676
- background: var(--color-text-primary, currentColor);
677
- 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));
678
761
  }
679
762
 
680
763
  :where(.editor):is(
@@ -687,24 +770,55 @@
687
770
  content: '';
688
771
  visibility: visible;
689
772
  position: absolute;
690
- /* The slot's centre, nudged up and right: the visible strokes are the L's right and
691
- 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. */
692
775
  left: 53%;
693
776
  top: 45%;
694
777
  width: 0.32em;
695
778
  height: 0.6em;
696
779
  box-sizing: border-box;
697
- border: solid var(--color-bg, #2c2c2a);
780
+ border: solid var(--syntax-task-checked-tick, var(--color-bg, #2c2c2a));
698
781
  border-width: 0 0.15em 0.15em 0;
699
782
  transform: translate(-50%, -50%) rotate(45deg);
700
783
  }
701
784
 
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. */
787
+ :where(.editor):is(
788
+ [data-presentation='reading'],
789
+ [data-presentation^='preview-'],
790
+ [data-presentation='live']
791
+ )
792
+ .list-item-block[data-list-marker='task']
793
+ .task-checkbox:hover {
794
+ background-color: transparent;
795
+ }
796
+
797
+ :where(.editor):is(
798
+ [data-presentation='reading'],
799
+ [data-presentation^='preview-'],
800
+ [data-presentation='live']
801
+ )
802
+ .list-item-block[data-list-marker='task']
803
+ .task-checkbox::before {
804
+ transition: background-color 60ms ease-out;
805
+ }
806
+
807
+ :where(.editor):is(
808
+ [data-presentation='reading'],
809
+ [data-presentation^='preview-'],
810
+ [data-presentation='live']
811
+ )
812
+ .list-item-block[data-list-marker='task']:not([data-task-checked='true'])
813
+ .task-checkbox:hover::before {
814
+ background-color: var(--md-marker-hover-bg, rgba(128, 128, 128, 0.15));
815
+ }
816
+
702
817
  /* ── Reading mode ─────────────────────────────────────────────────────────────
703
- The marker-hiding families reading shares with the preview rungs and `live` are in the
704
- 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. */
705
819
 
706
- /* pointer-events kills the toggle click at the CSS layer; the toggleTask guard is the JS
707
- 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. */
708
822
  :where(.editor)[data-presentation='reading']
709
823
  .list-item-block[data-list-marker='task']
710
824
  .task-checkbox {
@@ -722,20 +836,17 @@
722
836
  cursor: pointer;
723
837
  }
724
838
 
725
- /* ── Preview rungs (block + inline granularity) ───────────────────────────────
726
- `preview-block` renders the focused block as full styled source; `preview-inline` reveals
727
- only the constructs at the caret. Markers hide broadly (above) and un-hide INSIDE the
728
- focused host: the naive `.block-host:not([data-focused])` would hide a focused leaf's
729
- 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. */
730
841
 
731
- /* 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. */
732
843
  :where(.editor)[data-presentation='preview-block']
733
844
  .block-host[data-focused]
734
845
  .md-marker:not([contenteditable='false']) {
735
846
  display: inline;
736
847
  }
737
848
 
738
- /* 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. */
739
850
  :where(.editor)[data-presentation^='preview-'] .block-host[data-focused] .md-fence-line {
740
851
  display: inline;
741
852
  }
@@ -749,13 +860,13 @@
749
860
  display: none;
750
861
  }
751
862
 
752
- /* Reference labels reveal on the focused block under preview-block. */
863
+ /* Reference labels show on the focused block under preview-block. */
753
864
  :where(.editor)[data-presentation='preview-block'] .block-host[data-focused] .md-ref-label {
754
865
  display: inline;
755
866
  }
756
867
 
757
- /* preview-inline is excluded on purpose: the ambient marker is chrome the caret can never
758
- 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. */
759
870
  :where(.editor)[data-presentation='preview-block']
760
871
  .block-host[data-focused]
761
872
  .md-marker[contenteditable='false'] {
@@ -768,10 +879,8 @@
768
879
  content: none;
769
880
  }
770
881
 
771
- /* ── Inline-granular reveal (preview-inline's focused block) ──────────────────
772
- The render stamps construct markers with data-construct-* and `construct-reveal.ts` flips
773
- md-construct-reveal on the chain at the caret. Unstamped markers reveal with block focus as
774
- 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. */
775
884
  :where(.editor)[data-presentation='preview-inline']
776
885
  .block-host[data-focused]
777
886
  .md-marker:not([contenteditable='false']):not([data-construct-start]) {