@voithos-labs/aragonite 0.10.4 → 0.10.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1021) hide show
  1. package/README.md +2 -2
  2. package/dist/a11y-strings.d.ts +11 -5
  3. package/dist/a11y-strings.js +60 -5
  4. package/dist/action-contracts.d.ts +242 -155
  5. package/dist/action-contracts.js +2 -2
  6. package/dist/active-editor.d.ts +3 -3
  7. package/dist/active-editor.js +8 -9
  8. package/dist/ambient/ambient-dom.d.ts +2 -5
  9. package/dist/ambient/ambient-dom.js +16 -62
  10. package/dist/assert.js +6 -5
  11. package/dist/block-component.d.ts +135 -109
  12. package/dist/block-component.js +30 -22
  13. package/dist/block-id.d.ts +6 -10
  14. package/dist/block-id.js +25 -14
  15. package/dist/bounded-memo.d.ts +5 -5
  16. package/dist/bounded-memo.js +6 -6
  17. package/dist/components/BlockDragHandle.svelte +12 -21
  18. package/dist/components/BlockHost.svelte +56 -134
  19. package/dist/components/BlockList.svelte +22 -19
  20. package/dist/components/DecorationOverlay.svelte +9 -10
  21. package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
  22. package/dist/components/Editor.svelte +603 -1126
  23. package/dist/components/Editor.svelte.d.ts +9 -20
  24. package/dist/components/GapCaret.svelte +26 -59
  25. package/dist/components/SelectionOverlay.svelte +26 -51
  26. package/dist/components/SelectionOverlay.svelte.d.ts +5 -3
  27. package/dist/components/TailInsert.svelte +8 -55
  28. package/dist/components/TailInsert.svelte.d.ts +4 -6
  29. package/dist/components/block-content-selector.d.ts +11 -11
  30. package/dist/components/block-content-selector.js +11 -11
  31. package/dist/components/block-el-lookup.d.ts +6 -0
  32. package/dist/components/block-el-lookup.js +27 -0
  33. package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
  34. package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
  35. package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
  36. package/dist/components/blocks/code/CodeBlock.svelte +255 -276
  37. package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
  38. package/dist/components/blocks/code/CodeBlockRail.svelte +72 -87
  39. package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
  40. package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
  41. package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
  42. package/dist/components/blocks/code/code-bootstrap.js +29 -34
  43. package/dist/components/blocks/code/code-context-actions.js +5 -4
  44. package/dist/components/blocks/code/code-enter.js +2 -2
  45. package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
  46. package/dist/components/blocks/code/code-fence-boundary.js +40 -66
  47. package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
  48. package/dist/components/blocks/code/code-fence-exit.js +24 -25
  49. package/dist/components/blocks/code/code-indent.d.ts +2 -2
  50. package/dist/components/blocks/code/code-indent.js +4 -7
  51. package/dist/components/blocks/code/code-languages.d.ts +16 -12
  52. package/dist/components/blocks/code/code-languages.js +57 -39
  53. package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
  54. package/dist/components/blocks/code/code-paste-surface.js +9 -18
  55. package/dist/components/blocks/code/code-renderer.d.ts +21 -5
  56. package/dist/components/blocks/code/code-renderer.js +90 -125
  57. package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
  58. package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
  59. package/dist/components/blocks/directive/activate-directives.js +18 -13
  60. package/dist/components/blocks/editable-leaf.d.ts +50 -74
  61. package/dist/components/blocks/editable-leaf.js +141 -203
  62. package/dist/components/blocks/editable-surface.d.ts +96 -100
  63. package/dist/components/blocks/editable-surface.js +101 -109
  64. package/dist/components/blocks/list/ListBlock.svelte +45 -90
  65. package/dist/components/blocks/list/ListItemBlock.svelte +93 -147
  66. package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +1 -0
  67. package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
  68. package/dist/components/blocks/list/task-checkbox.js +12 -7
  69. package/dist/components/blocks/plain-text-backend.d.ts +4 -20
  70. package/dist/components/blocks/plain-text-backend.js +9 -43
  71. package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
  72. package/dist/components/blocks/surface-wiring.svelte.js +15 -34
  73. package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
  74. package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
  75. package/dist/components/blocks/table/TableBlock.svelte +100 -165
  76. package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
  77. package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
  78. package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
  79. package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
  80. package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
  81. package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
  82. package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
  83. package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
  84. package/dist/components/blocks/table/cell-pointer.js +49 -71
  85. package/dist/components/blocks/table/cell-render.d.ts +24 -29
  86. package/dist/components/blocks/table/cell-render.js +29 -31
  87. package/dist/components/blocks/table/selected-cells.d.ts +7 -7
  88. package/dist/components/blocks/table/selected-cells.js +9 -13
  89. package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
  90. package/dist/components/blocks/table/table-caret-at-point.js +5 -5
  91. package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
  92. package/dist/components/blocks/table/table-cell-paste.js +27 -43
  93. package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
  94. package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
  95. package/dist/components/blocks/table/table-menu-model.js +6 -10
  96. package/dist/components/blocks/table/table-navigation.js +2 -2
  97. package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
  98. package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
  99. package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
  100. package/dist/components/blocks/text/auto-pair-record.js +51 -0
  101. package/dist/components/blocks/text/click-snap-guard.d.ts +8 -6
  102. package/dist/components/blocks/text/click-snap-guard.js +10 -7
  103. package/dist/components/blocks/text/composition-seat.d.ts +17 -14
  104. package/dist/components/blocks/text/composition-seat.js +11 -11
  105. package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
  106. package/dist/components/blocks/text/construct-edge-delete.js +50 -65
  107. package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
  108. package/dist/components/blocks/text/construct-reveal.js +13 -14
  109. package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
  110. package/dist/components/blocks/text/delimiter-autopair.js +87 -103
  111. package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
  112. package/dist/components/blocks/text/edge-policy-dispatch.js +150 -181
  113. package/dist/components/blocks/text/edge-seat.d.ts +17 -26
  114. package/dist/components/blocks/text/edge-seat.js +43 -70
  115. package/dist/components/blocks/text/link-at-point.d.ts +9 -9
  116. package/dist/components/blocks/text/link-at-point.js +12 -15
  117. package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
  118. package/dist/components/blocks/text/live-join-seam.js +75 -112
  119. package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
  120. package/dist/components/blocks/text/live-selection-edit.js +32 -108
  121. package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
  122. package/dist/components/blocks/text/live-split-rebalance.js +50 -67
  123. package/dist/components/blocks/text/marker-completion.d.ts +7 -12
  124. package/dist/components/blocks/text/marker-completion.js +17 -10
  125. package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
  126. package/dist/components/blocks/text/pending-mark-insert.js +30 -49
  127. package/dist/components/blocks/text/screen-diff.d.ts +5 -15
  128. package/dist/components/blocks/text/screen-diff.js +5 -19
  129. package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
  130. package/dist/components/blocks/text/text-clipboard.js +27 -32
  131. package/dist/components/blocks/text/text-keydown.d.ts +20 -30
  132. package/dist/components/blocks/text/text-keydown.js +54 -51
  133. package/dist/components/blocks/text/text-render.d.ts +25 -35
  134. package/dist/components/blocks/text/text-render.js +82 -61
  135. package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
  136. package/dist/components/blocks/text/widget-adjacency.js +17 -17
  137. package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
  138. package/dist/components/blocks/text/widget-interaction.js +212 -199
  139. package/dist/components/blocks/widget-portal.d.ts +20 -29
  140. package/dist/components/blocks/widget-portal.js +16 -14
  141. package/dist/components/built-in-blocks.d.ts +3 -4
  142. package/dist/components/built-in-blocks.js +17 -18
  143. package/dist/components/drag-handle.d.ts +12 -35
  144. package/dist/components/drag-handle.js +22 -68
  145. package/dist/components/editor-built-ins.d.ts +1 -0
  146. package/dist/components/editor-built-ins.js +16 -0
  147. package/dist/components/editor-root-clipboard.d.ts +6 -6
  148. package/dist/components/editor-root-clipboard.js +16 -27
  149. package/dist/components/editor-root-document-swap.d.ts +49 -0
  150. package/dist/components/editor-root-document-swap.js +54 -0
  151. package/dist/components/editor-root-focus.d.ts +5 -4
  152. package/dist/components/editor-root-focus.js +51 -22
  153. package/dist/components/editor-root-focused-surface.d.ts +35 -0
  154. package/dist/components/editor-root-focused-surface.js +65 -0
  155. package/dist/components/editor-root-geometry.d.ts +15 -24
  156. package/dist/components/editor-root-geometry.js +27 -31
  157. package/dist/components/editor-root-gestures.d.ts +39 -0
  158. package/dist/components/editor-root-gestures.js +189 -0
  159. package/dist/components/editor-root-keydown.d.ts +10 -25
  160. package/dist/components/editor-root-keydown.js +19 -43
  161. package/dist/components/editor-root-listeners.d.ts +22 -24
  162. package/dist/components/editor-root-listeners.js +49 -24
  163. package/dist/components/editor-root-menus.d.ts +51 -0
  164. package/dist/components/editor-root-menus.js +147 -0
  165. package/dist/components/editor-root-mode-flip.d.ts +16 -11
  166. package/dist/components/editor-root-mode-flip.js +36 -34
  167. package/dist/components/editor-root-scroll-host.d.ts +22 -0
  168. package/dist/components/editor-root-scroll-host.js +34 -0
  169. package/dist/components/editor-root-test-surface.d.ts +48 -0
  170. package/dist/components/editor-root-test-surface.js +6 -0
  171. package/dist/components/image/ImageOverlayHost.svelte +44 -35
  172. package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
  173. package/dist/components/image/ImageProperties.svelte +37 -41
  174. package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
  175. package/dist/components/image/ImageResizeHandles.svelte +14 -26
  176. package/dist/components/image/image-crop.d.ts +5 -11
  177. package/dist/components/image/image-crop.js +5 -11
  178. package/dist/components/image/image-edit-commit.d.ts +19 -16
  179. package/dist/components/image/image-edit-commit.js +74 -38
  180. package/dist/components/image/image-resize.d.ts +2 -5
  181. package/dist/components/image/image-resize.js +3 -6
  182. package/dist/components/image/image-widget-editing.d.ts +3 -3
  183. package/dist/components/image/image-widget-editing.js +9 -9
  184. package/dist/components/image/widget-dom.d.ts +2 -3
  185. package/dist/components/image/widget-dom.js +19 -24
  186. package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
  187. package/dist/components/image/widget-selection-state.svelte.js +26 -19
  188. package/dist/components/kind-cue.svelte.d.ts +21 -0
  189. package/dist/components/kind-cue.svelte.js +35 -0
  190. package/dist/components/link-card/LinkCard.svelte +115 -64
  191. package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
  192. package/dist/components/link-card/LinkCardHost.svelte +42 -33
  193. package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
  194. package/dist/components/link-card/link-card-commit.d.ts +16 -19
  195. package/dist/components/link-card/link-card-commit.js +21 -30
  196. package/dist/components/link-card/link-card-entry.d.ts +13 -23
  197. package/dist/components/link-card/link-card-entry.js +16 -24
  198. package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
  199. package/dist/components/link-card/link-card-state.svelte.js +2 -2
  200. package/dist/components/lrd-map-gate.d.ts +4 -11
  201. package/dist/components/lrd-map-gate.js +5 -11
  202. package/dist/components/menu/BlockMenu.svelte +20 -81
  203. package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
  204. package/dist/components/menu/InlineMenuHost.svelte +191 -0
  205. package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
  206. package/dist/components/menu/MenuIcon.svelte +3 -103
  207. package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
  208. package/dist/components/menu/SelectionToolbar.svelte +30 -35
  209. package/dist/components/menu/SelectionToolbar.svelte.d.ts +3 -5
  210. package/dist/components/menu/clipboard-actions.d.ts +3 -4
  211. package/dist/components/menu/clipboard-actions.js +3 -4
  212. package/dist/components/menu/default-context-actions.d.ts +4 -13
  213. package/dist/components/menu/default-context-actions.js +49 -67
  214. package/dist/components/menu/flyout-placement.d.ts +2 -2
  215. package/dist/components/menu/flyout-placement.js +2 -2
  216. package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
  217. package/dist/components/menu/menu-presence.svelte.js +19 -0
  218. package/dist/components/paste-image-arm.d.ts +6 -11
  219. package/dist/components/paste-image-arm.js +11 -18
  220. package/dist/components/portal.d.ts +2 -5
  221. package/dist/components/portal.js +4 -7
  222. package/dist/core/directive/activate.d.ts +4 -5
  223. package/dist/core/directive/activate.js +8 -9
  224. package/dist/core/directive/container-opener.js +13 -12
  225. package/dist/core/directive/grammar.d.ts +2 -5
  226. package/dist/core/directive/grammar.js +10 -10
  227. package/dist/core/directive/kinds.d.ts +4 -7
  228. package/dist/core/directive/kinds.js +14 -16
  229. package/dist/core/directive/registry.d.ts +12 -9
  230. package/dist/core/directive/registry.js +19 -20
  231. package/dist/core/directive/text-recognizer.d.ts +3 -2
  232. package/dist/core/directive/text-recognizer.js +5 -9
  233. package/dist/core/escapable.d.ts +1 -5
  234. package/dist/core/escapable.js +1 -5
  235. package/dist/core/inline/backticks.d.ts +3 -4
  236. package/dist/core/inline/backticks.js +3 -4
  237. package/dist/core/inline/character-refs.js +2 -1
  238. package/dist/core/inline/destination-bytes.d.ts +6 -3
  239. package/dist/core/inline/destination-bytes.js +50 -8
  240. package/dist/core/inline/entity-widget.d.ts +4 -3
  241. package/dist/core/inline/entity-widget.js +6 -6
  242. package/dist/core/inline/format-toggle.d.ts +22 -28
  243. package/dist/core/inline/format-toggle.js +97 -129
  244. package/dist/core/inline/html-entities.d.ts +2 -3
  245. package/dist/core/inline/html-entities.js +2 -3
  246. package/dist/core/inline/html-tag-grammar.js +6 -2
  247. package/dist/core/inline/image-dimensions.d.ts +2 -0
  248. package/dist/core/inline/image-dimensions.js +19 -2
  249. package/dist/core/inline/image-source-bytes.d.ts +11 -0
  250. package/dist/core/inline/image-source-bytes.js +71 -0
  251. package/dist/core/inline/index.d.ts +28 -21
  252. package/dist/core/inline/index.js +56 -34
  253. package/dist/core/inline/inline-cache.d.ts +12 -15
  254. package/dist/core/inline/inline-cache.js +11 -14
  255. package/dist/core/inline/inline-widgets.d.ts +54 -75
  256. package/dist/core/inline/inline-widgets.js +54 -62
  257. package/dist/core/inline/link-destination.d.ts +31 -0
  258. package/dist/core/inline/link-destination.js +129 -0
  259. package/dist/core/inline/link-reference-resolver.d.ts +8 -6
  260. package/dist/core/inline/link-reference-resolver.js +10 -6
  261. package/dist/core/inline/link-source-bytes.d.ts +31 -0
  262. package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
  263. package/dist/core/inline/live-edit/read-back.d.ts +29 -0
  264. package/dist/core/inline/live-edit/read-back.js +50 -0
  265. package/dist/core/inline/picture.d.ts +10 -0
  266. package/dist/core/inline/picture.js +40 -0
  267. package/dist/core/inline/scan/autolinks.d.ts +7 -8
  268. package/dist/core/inline/scan/autolinks.js +80 -59
  269. package/dist/core/inline/scan/brackets.d.ts +2 -2
  270. package/dist/core/inline/scan/brackets.js +6 -103
  271. package/dist/core/inline/scan/code-spans.d.ts +4 -0
  272. package/dist/core/inline/scan/code-spans.js +8 -0
  273. package/dist/core/inline/scan/emphasis.js +10 -14
  274. package/dist/core/inline/scan/index.d.ts +3 -1
  275. package/dist/core/inline/scan/index.js +32 -33
  276. package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
  277. package/dist/core/inline/scan/plugin-syntax.js +75 -89
  278. package/dist/core/inline/scan/scan-state.d.ts +2 -0
  279. package/dist/core/inline/scan/scan-state.js +1 -0
  280. package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
  281. package/dist/core/inline/scan/simple-nodes.js +2 -5
  282. package/dist/core/inline/scan/triggers.d.ts +17 -0
  283. package/dist/core/inline/scan/triggers.js +26 -0
  284. package/dist/core/inline/scan/url.js +8 -10
  285. package/dist/core/inline/transparency.d.ts +2 -1
  286. package/dist/core/inline/transparency.js +31 -15
  287. package/dist/core/inline/visibility.d.ts +30 -49
  288. package/dist/core/inline/visibility.js +31 -49
  289. package/dist/core/inline/walk.d.ts +4 -10
  290. package/dist/core/inline/walk.js +4 -10
  291. package/dist/core/inline-render.d.ts +22 -27
  292. package/dist/core/inline-render.js +51 -60
  293. package/dist/core/lines.d.ts +67 -26
  294. package/dist/core/lines.js +164 -33
  295. package/dist/core/metadata-parity.d.ts +9 -0
  296. package/dist/core/metadata-parity.js +25 -0
  297. package/dist/core/node-views.d.ts +7 -6
  298. package/dist/core/node-views.js +5 -5
  299. package/dist/core/nodes.d.ts +34 -44
  300. package/dist/core/nodes.js +4 -12
  301. package/dist/core/parser.d.ts +27 -34
  302. package/dist/core/parser.js +53 -67
  303. package/dist/core/parsers/blockquote.d.ts +5 -8
  304. package/dist/core/parsers/blockquote.js +11 -10
  305. package/dist/core/parsers/built-in-openers.d.ts +2 -5
  306. package/dist/core/parsers/built-in-openers.js +5 -8
  307. package/dist/core/parsers/fence-syntax.d.ts +36 -7
  308. package/dist/core/parsers/fence-syntax.js +61 -11
  309. package/dist/core/parsers/fenced-code.d.ts +16 -0
  310. package/dist/core/parsers/fenced-code.js +16 -15
  311. package/dist/core/parsers/heading.d.ts +19 -2
  312. package/dist/core/parsers/heading.js +50 -2
  313. package/dist/core/parsers/html-block.d.ts +3 -6
  314. package/dist/core/parsers/html-block.js +10 -11
  315. package/dist/core/parsers/indented-code.d.ts +1 -1
  316. package/dist/core/parsers/indented-code.js +2 -8
  317. package/dist/core/parsers/link-reference.d.ts +5 -3
  318. package/dist/core/parsers/link-reference.js +116 -120
  319. package/dist/core/parsers/list.d.ts +12 -5
  320. package/dist/core/parsers/list.js +53 -36
  321. package/dist/core/parsers/paragraph.d.ts +3 -3
  322. package/dist/core/parsers/paragraph.js +14 -5
  323. package/dist/core/parsers/table-completion.d.ts +2 -5
  324. package/dist/core/parsers/table-completion.js +7 -10
  325. package/dist/core/parsers/table.d.ts +8 -8
  326. package/dist/core/parsers/table.js +23 -26
  327. package/dist/core/parsers/thematic-break.js +15 -14
  328. package/dist/core/paths.d.ts +13 -0
  329. package/dist/core/paths.js +31 -0
  330. package/dist/core/terminator-escalation.d.ts +0 -7
  331. package/dist/core/terminator-escalation.js +5 -8
  332. package/dist/core/url-policy.d.ts +2 -5
  333. package/dist/core/url-policy.js +8 -12
  334. package/dist/cursor/caret-memory.d.ts +34 -0
  335. package/dist/cursor/caret-memory.js +82 -0
  336. package/dist/cursor/coordinate-spaces.d.ts +26 -19
  337. package/dist/cursor/coordinate-spaces.js +32 -20
  338. package/dist/cursor/dom-walk.d.ts +7 -13
  339. package/dist/cursor/dom-walk.js +7 -13
  340. package/dist/cursor/edge-affinity.d.ts +7 -35
  341. package/dist/cursor/edge-affinity.js +13 -44
  342. package/dist/cursor/focused-caret.d.ts +6 -8
  343. package/dist/cursor/focused-caret.js +7 -16
  344. package/dist/cursor/height-model.d.ts +3 -3
  345. package/dist/cursor/height-model.js +5 -5
  346. package/dist/cursor/height-oracle.d.ts +10 -6
  347. package/dist/cursor/height-oracle.js +26 -74
  348. package/dist/cursor/observe-resize.d.ts +13 -0
  349. package/dist/cursor/observe-resize.js +43 -0
  350. package/dist/cursor/overlay-rects.d.ts +2 -5
  351. package/dist/cursor/overlay-rects.js +2 -5
  352. package/dist/cursor/overlay-remeasure.d.ts +6 -7
  353. package/dist/cursor/overlay-remeasure.js +10 -14
  354. package/dist/cursor/pending-marks.d.ts +7 -9
  355. package/dist/cursor/pending-marks.js +6 -27
  356. package/dist/cursor/point-offset.d.ts +16 -10
  357. package/dist/cursor/point-offset.js +60 -25
  358. package/dist/cursor/reveal-source.d.ts +7 -11
  359. package/dist/cursor/reveal-source.js +10 -18
  360. package/dist/cursor/scroll-ancestors.d.ts +9 -20
  361. package/dist/cursor/scroll-ancestors.js +14 -26
  362. package/dist/cursor/scroll-owner.d.ts +92 -0
  363. package/dist/cursor/scroll-owner.js +283 -0
  364. package/dist/cursor/scrollport.d.ts +14 -15
  365. package/dist/cursor/scrollport.js +7 -13
  366. package/dist/cursor/sticky-column.d.ts +6 -29
  367. package/dist/cursor/sticky-column.js +6 -49
  368. package/dist/cursor/sticky-measure.d.ts +14 -9
  369. package/dist/cursor/sticky-measure.js +99 -49
  370. package/dist/cursor/surface-backend.d.ts +41 -0
  371. package/dist/cursor/surface-backend.js +78 -0
  372. package/dist/cursor/typography-estimates.d.ts +3 -3
  373. package/dist/cursor/typography-estimates.js +3 -3
  374. package/dist/cursor/visual-lines.d.ts +25 -14
  375. package/dist/cursor/visual-lines.js +45 -46
  376. package/dist/cursor/widget-edge-snap.d.ts +10 -15
  377. package/dist/cursor/widget-edge-snap.js +13 -12
  378. package/dist/cursor/widget-offset.d.ts +110 -104
  379. package/dist/cursor/widget-offset.js +344 -179
  380. package/dist/debug/diagnostics-report.d.ts +6 -6
  381. package/dist/debug/diagnostics-report.js +5 -5
  382. package/dist/debug/dump-tree.js +2 -2
  383. package/dist/debug/editor-diagnostics.d.ts +15 -0
  384. package/dist/debug/editor-diagnostics.js +33 -0
  385. package/dist/debug/inspect.d.ts +2 -2
  386. package/dist/debug/inspect.js +4 -4
  387. package/dist/debug/interaction-trace.d.ts +14 -15
  388. package/dist/debug/interaction-trace.js +19 -20
  389. package/dist/debug/operations-log.d.ts +1 -1
  390. package/dist/debug/operations-log.js +1 -1
  391. package/dist/decorations/buckets.d.ts +6 -12
  392. package/dist/decorations/buckets.js +4 -11
  393. package/dist/decorations/decoration-state.svelte.d.ts +2 -3
  394. package/dist/decorations/decoration-state.svelte.js +24 -26
  395. package/dist/decorations/island-dom.d.ts +10 -18
  396. package/dist/decorations/island-dom.js +25 -50
  397. package/dist/decorations/reserved-attrs.d.ts +6 -8
  398. package/dist/decorations/reserved-attrs.js +30 -17
  399. package/dist/decorations/types.d.ts +6 -7
  400. package/dist/decorations/types.js +2 -1
  401. package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
  402. package/dist/decorations/use-block-decorations.svelte.js +71 -0
  403. package/dist/decorations/widget-dom.d.ts +3 -3
  404. package/dist/decorations/widget-dom.js +5 -5
  405. package/dist/dev-warn.d.ts +5 -2
  406. package/dist/dev-warn.js +16 -4
  407. package/dist/editor-actions/ancestry-folds.d.ts +9 -14
  408. package/dist/editor-actions/ancestry-folds.js +13 -18
  409. package/dist/editor-actions/block-edit-core.d.ts +49 -22
  410. package/dist/editor-actions/block-edit-core.js +279 -151
  411. package/dist/editor-actions/block-edit-scope.d.ts +63 -50
  412. package/dist/editor-actions/block-edit-scope.js +100 -48
  413. package/dist/editor-actions/block-edit.d.ts +2 -3
  414. package/dist/editor-actions/block-edit.js +14 -90
  415. package/dist/editor-actions/commit/history.d.ts +4 -4
  416. package/dist/editor-actions/commit/history.js +33 -34
  417. package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
  418. package/dist/editor-actions/commit/reading-write-gate.js +56 -0
  419. package/dist/editor-actions/commit/text-batch.d.ts +7 -11
  420. package/dist/editor-actions/commit/text-batch.js +6 -7
  421. package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
  422. package/dist/editor-actions/commit/undo-controller.js +346 -216
  423. package/dist/editor-actions/container-block-component.d.ts +32 -51
  424. package/dist/editor-actions/container-block-component.js +66 -92
  425. package/dist/editor-actions/container-edit.d.ts +4 -2
  426. package/dist/editor-actions/container-edit.js +14 -44
  427. package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
  428. package/dist/editor-actions/container-exit-overrides.js +19 -21
  429. package/dist/editor-actions/deps.d.ts +25 -32
  430. package/dist/editor-actions/enter-completion.d.ts +12 -15
  431. package/dist/editor-actions/enter-completion.js +49 -51
  432. package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
  433. package/dist/editor-actions/focus/focus-dispatch.js +28 -50
  434. package/dist/editor-actions/focus/focus-landing.d.ts +8 -11
  435. package/dist/editor-actions/focus/focus-landing.js +15 -14
  436. package/dist/editor-actions/focus/focus.d.ts +3 -2
  437. package/dist/editor-actions/focus/focus.js +42 -59
  438. package/dist/editor-actions/index.d.ts +4 -3
  439. package/dist/editor-actions/index.js +5 -4
  440. package/dist/editor-actions/inline-range-commit.d.ts +18 -16
  441. package/dist/editor-actions/inline-range-commit.js +45 -54
  442. package/dist/editor-actions/leaf-write.d.ts +11 -0
  443. package/dist/editor-actions/leaf-write.js +102 -0
  444. package/dist/editor-actions/list-context.d.ts +9 -10
  445. package/dist/editor-actions/list-context.js +115 -110
  446. package/dist/editor-actions/list-overrides.d.ts +13 -5
  447. package/dist/editor-actions/list-overrides.js +36 -12
  448. package/dist/editor-actions/merge-fallback.d.ts +10 -16
  449. package/dist/editor-actions/merge-fallback.js +11 -22
  450. package/dist/editor-actions/nested/container-actions.d.ts +37 -0
  451. package/dist/editor-actions/nested/container-actions.js +42 -0
  452. package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
  453. package/dist/editor-actions/nested/emptied-container.js +5 -0
  454. package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
  455. package/dist/editor-actions/nested/nested-actions.js +17 -15
  456. package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
  457. package/dist/editor-actions/nested/nested-block-edit.js +40 -134
  458. package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
  459. package/dist/editor-actions/nested/nested-focus.js +33 -21
  460. package/dist/editor-actions/paste-coordinator.d.ts +3 -2
  461. package/dist/editor-actions/paste-coordinator.js +17 -13
  462. package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
  463. package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
  464. package/dist/editor-actions/plugin/container.d.ts +54 -82
  465. package/dist/editor-actions/plugin/container.js +105 -188
  466. package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
  467. package/dist/editor-actions/plugin/directive-container.js +7 -8
  468. package/dist/editor-actions/reorder-action.d.ts +7 -12
  469. package/dist/editor-actions/reorder-action.js +32 -48
  470. package/dist/editor-actions/reorder-drag.d.ts +12 -8
  471. package/dist/editor-actions/reorder-drag.js +45 -41
  472. package/dist/editor-actions/replacement-focus.d.ts +13 -21
  473. package/dist/editor-actions/replacement-focus.js +32 -33
  474. package/dist/editor-actions/search-replace.js +71 -67
  475. package/dist/editor-actions/stored-caret.d.ts +7 -0
  476. package/dist/editor-actions/stored-caret.js +10 -0
  477. package/dist/editor-actions/table-context.d.ts +9 -11
  478. package/dist/editor-actions/table-context.js +70 -93
  479. package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
  480. package/dist/editor-actions/unwrap-strategies.js +52 -63
  481. package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
  482. package/dist/editor-actions/whole-block-focus-surface.js +43 -53
  483. package/dist/editor-events.d.ts +25 -29
  484. package/dist/editor-events.js +17 -28
  485. package/dist/editor-keys.d.ts +96 -104
  486. package/dist/editor-keys.js +11 -24
  487. package/dist/editor-props.d.ts +88 -71
  488. package/dist/editor-rects.d.ts +23 -34
  489. package/dist/editor-rects.js +9 -77
  490. package/dist/env.d.ts +6 -4
  491. package/dist/env.js +8 -4
  492. package/dist/index.d.ts +6 -2
  493. package/dist/index.js +5 -2
  494. package/dist/inline-menu/inline-menu-session.d.ts +37 -0
  495. package/dist/inline-menu/inline-menu-session.js +98 -0
  496. package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
  497. package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
  498. package/dist/inline-menu/types.d.ts +77 -0
  499. package/dist/inline-menu/types.js +7 -0
  500. package/dist/invariants/child-id-parity.d.ts +23 -0
  501. package/dist/invariants/child-id-parity.js +39 -0
  502. package/dist/invariants/commit-paths.d.ts +4 -4
  503. package/dist/invariants/commit-paths.js +4 -4
  504. package/dist/invariants/commit-scope.d.ts +4 -4
  505. package/dist/invariants/commit-scope.js +9 -8
  506. package/dist/invariants/context-keys.d.ts +2 -5
  507. package/dist/invariants/context-keys.js +3 -6
  508. package/dist/invariants/descriptor.d.ts +2 -6
  509. package/dist/invariants/descriptor.js +2 -6
  510. package/dist/invariants/inline-transitions.d.ts +9 -16
  511. package/dist/invariants/inline-transitions.js +10 -18
  512. package/dist/invariants/install.d.ts +18 -27
  513. package/dist/invariants/install.js +29 -30
  514. package/dist/invariants/keeps-a-block.d.ts +7 -0
  515. package/dist/invariants/keeps-a-block.js +14 -0
  516. package/dist/invariants/landable-caret.d.ts +5 -7
  517. package/dist/invariants/landable-caret.js +8 -11
  518. package/dist/invariants/landing-focus-scroll.d.ts +7 -0
  519. package/dist/invariants/landing-focus-scroll.js +13 -0
  520. package/dist/invariants/landing-value.d.ts +13 -0
  521. package/dist/invariants/landing-value.js +27 -0
  522. package/dist/invariants/marker-css-parity.d.ts +5 -6
  523. package/dist/invariants/marker-css-parity.js +11 -12
  524. package/dist/invariants/measures-in-own-list.d.ts +6 -0
  525. package/dist/invariants/measures-in-own-list.js +13 -0
  526. package/dist/invariants/node-shape.d.ts +18 -37
  527. package/dist/invariants/node-shape.js +123 -79
  528. package/dist/invariants/open-tail.d.ts +7 -0
  529. package/dist/invariants/open-tail.js +45 -0
  530. package/dist/invariants/placement-ends-widget.d.ts +8 -0
  531. package/dist/invariants/placement-ends-widget.js +13 -0
  532. package/dist/invariants/registry.d.ts +27 -66
  533. package/dist/invariants/registry.js +61 -137
  534. package/dist/invariants/render-fidelity.d.ts +4 -4
  535. package/dist/invariants/render-fidelity.js +5 -5
  536. package/dist/invariants/selection-endpoints.d.ts +6 -7
  537. package/dist/invariants/selection-endpoints.js +18 -16
  538. package/dist/invariants/single-node-sink.d.ts +4 -5
  539. package/dist/invariants/single-node-sink.js +4 -5
  540. package/dist/invariants/snapshot-integrity.d.ts +5 -6
  541. package/dist/invariants/snapshot-integrity.js +1 -1
  542. package/dist/invariants/structural-descriptor.d.ts +6 -15
  543. package/dist/invariants/structural-descriptor.js +6 -15
  544. package/dist/menu-icons.d.ts +47 -0
  545. package/dist/menu-icons.js +113 -0
  546. package/dist/perf/instruments.d.ts +20 -5
  547. package/dist/perf/instruments.js +35 -15
  548. package/dist/perf/use-mount-gauge.svelte.js +4 -4
  549. package/dist/plugin.d.ts +37 -8
  550. package/dist/plugin.js +100 -77
  551. package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
  552. package/dist/plugins/admonitions/admonition-kind.js +12 -10
  553. package/dist/plugins/admonitions/convert-document.d.ts +5 -5
  554. package/dist/plugins/admonitions/convert-document.js +8 -7
  555. package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
  556. package/dist/plugins/admonitions/gh-alert.js +21 -22
  557. package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
  558. package/dist/plugins/admonitions/github-alert-kind.js +28 -37
  559. package/dist/plugins/admonitions/index.js +2 -2
  560. package/dist/plugins/admonitions/kinds.d.ts +1 -1
  561. package/dist/plugins/admonitions/register.js +11 -2
  562. package/dist/plugins/details/DetailsBlock.svelte +20 -20
  563. package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
  564. package/dist/plugins/details/details-disclosure.svelte.js +6 -7
  565. package/dist/plugins/details/details-kind.d.ts +6 -7
  566. package/dist/plugins/details/details-kind.js +44 -59
  567. package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
  568. package/dist/plugins/emoji/emoji-recognizer.js +7 -14
  569. package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
  570. package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
  571. package/dist/plugins/footnotes/constants.d.ts +2 -0
  572. package/dist/plugins/footnotes/constants.js +3 -0
  573. package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
  574. package/dist/plugins/footnotes/footnote-definition.js +69 -45
  575. package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
  576. package/dist/plugins/footnotes/footnote-lookup.js +14 -26
  577. package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
  578. package/dist/plugins/footnotes/footnote-numbering.js +22 -31
  579. package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
  580. package/dist/plugins/footnotes/footnote-reference.js +8 -13
  581. package/dist/plugins/footnotes/index.js +2 -3
  582. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
  583. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
  584. package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
  585. package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
  586. package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
  587. package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
  588. package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
  589. package/dist/plugins/highlight-occurrences/word-char.js +4 -0
  590. package/dist/plugins/latex/BlockMath.svelte +58 -75
  591. package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
  592. package/dist/plugins/latex/MathInline.svelte +10 -9
  593. package/dist/plugins/latex/flanking.d.ts +1 -0
  594. package/dist/plugins/latex/flanking.js +3 -0
  595. package/dist/plugins/latex/index.d.ts +1 -1
  596. package/dist/plugins/latex/latex-kind.d.ts +4 -4
  597. package/dist/plugins/latex/latex-kind.js +78 -67
  598. package/dist/plugins/latex/math-completion.d.ts +1 -1
  599. package/dist/plugins/latex/math-completion.js +5 -8
  600. package/dist/plugins/latex/math-layout.d.ts +2 -8
  601. package/dist/plugins/latex/math-layout.js +0 -9
  602. package/dist/plugins/latex/math-renderer.d.ts +17 -20
  603. package/dist/plugins/latex/math-renderer.js +21 -38
  604. package/dist/plugins/latex/math-source.d.ts +4 -8
  605. package/dist/plugins/latex/math-source.js +36 -81
  606. package/dist/plugins/latex/register.d.ts +10 -11
  607. package/dist/plugins/latex/register.js +24 -10
  608. package/dist/plugins/latex/renderer.d.ts +9 -10
  609. package/dist/plugins/latex/renderer.js +9 -24
  610. package/dist/plugins/mermaid/MermaidBlock.svelte +51 -45
  611. package/dist/plugins/mermaid/index.js +1 -1
  612. package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
  613. package/dist/plugins/mermaid/mermaid-kind.js +30 -47
  614. package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
  615. package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
  616. package/dist/plugins/mermaid/register.d.ts +3 -3
  617. package/dist/plugins/mermaid/register.js +5 -5
  618. package/dist/plugins/mermaid/renderer.d.ts +5 -5
  619. package/dist/plugins/mermaid/renderer.js +8 -11
  620. package/dist/plugins/parrot/ParrotBlock.svelte +15 -6
  621. package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
  622. package/dist/plugins/parrot/parrot-plugin.js +3 -3
  623. package/dist/plugins/slash-commands/filter.d.ts +23 -0
  624. package/dist/plugins/slash-commands/filter.js +31 -0
  625. package/dist/plugins/slash-commands/index.d.ts +2 -0
  626. package/dist/plugins/slash-commands/index.js +2 -0
  627. package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
  628. package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
  629. package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
  630. package/dist/plugins/slash-commands/slash-source.js +108 -0
  631. package/dist/plugins/toc/TocBlock.svelte +23 -22
  632. package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
  633. package/dist/plugins/toc/heading-outline.d.ts +7 -12
  634. package/dist/plugins/toc/heading-outline.js +22 -36
  635. package/dist/plugins/toc/navigation-queue.d.ts +2 -4
  636. package/dist/plugins/toc/toc-plugin.d.ts +5 -5
  637. package/dist/plugins/toc/toc-plugin.js +20 -13
  638. package/dist/presentation-mode.d.ts +15 -23
  639. package/dist/presentation-mode.js +19 -25
  640. package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
  641. package/dist/reactivity/block-list-state.svelte.js +8 -9
  642. package/dist/reactivity/block-window.svelte.d.ts +12 -6
  643. package/dist/reactivity/block-window.svelte.js +44 -17
  644. package/dist/reactivity/child-list.d.ts +34 -0
  645. package/dist/reactivity/child-list.js +48 -0
  646. package/dist/reactivity/content-version.svelte.d.ts +4 -7
  647. package/dist/reactivity/content-version.svelte.js +3 -5
  648. package/dist/reactivity/hold-across.d.ts +39 -0
  649. package/dist/reactivity/hold-across.js +57 -0
  650. package/dist/reactivity/layout-state.svelte.d.ts +27 -0
  651. package/dist/reactivity/layout-state.svelte.js +51 -0
  652. package/dist/reactivity/list-tree.d.ts +39 -0
  653. package/dist/reactivity/list-tree.js +132 -0
  654. package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
  655. package/dist/reactivity/list-windowing.svelte.js +141 -310
  656. package/dist/reactivity/measure-batch.d.ts +6 -8
  657. package/dist/reactivity/measure-batch.js +5 -6
  658. package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
  659. package/dist/reactivity/publish-ref.svelte.js +21 -85
  660. package/dist/reactivity/scope-geometry.d.ts +6 -13
  661. package/dist/reactivity/scope-geometry.js +7 -14
  662. package/dist/reactivity/state-registry.d.ts +5 -5
  663. package/dist/reactivity/state-registry.js +11 -15
  664. package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
  665. package/dist/reactivity/use-container-windowing.svelte.js +64 -74
  666. package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
  667. package/dist/reactivity/use-measured-child.svelte.js +41 -0
  668. package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
  669. package/dist/reactivity/use-window-floor.svelte.js +27 -0
  670. package/dist/reactivity/window-slice.d.ts +4 -4
  671. package/dist/reactivity/window-slice.js +0 -2
  672. package/dist/renderer-slot.d.ts +48 -0
  673. package/dist/renderer-slot.js +85 -0
  674. package/dist/scan-index.d.ts +4 -4
  675. package/dist/scan-index.js +4 -4
  676. package/dist/schema/block-commands.d.ts +69 -54
  677. package/dist/schema/block-commands.js +91 -104
  678. package/dist/schema/block-completions.d.ts +16 -19
  679. package/dist/schema/block-completions.js +25 -32
  680. package/dist/schema/block-component-registry.d.ts +13 -14
  681. package/dist/schema/block-component-registry.js +19 -17
  682. package/dist/schema/block-kind-descriptor.d.ts +234 -168
  683. package/dist/schema/block-kind-descriptor.js +151 -66
  684. package/dist/schema/block-openers.d.ts +48 -39
  685. package/dist/schema/block-openers.js +73 -83
  686. package/dist/schema/built-in-descriptors.d.ts +3 -5
  687. package/dist/schema/built-in-descriptors.js +96 -80
  688. package/dist/schema/child-spans.d.ts +12 -10
  689. package/dist/schema/child-spans.js +68 -34
  690. package/dist/schema/closure.d.ts +18 -16
  691. package/dist/schema/closure.js +24 -14
  692. package/dist/schema/command-id.d.ts +6 -8
  693. package/dist/schema/command-id.js +20 -25
  694. package/dist/schema/commands.d.ts +78 -84
  695. package/dist/schema/commands.js +152 -117
  696. package/dist/schema/container-raw.d.ts +51 -11
  697. package/dist/schema/container-raw.js +143 -14
  698. package/dist/schema/container-rebuilders.d.ts +17 -15
  699. package/dist/schema/container-rebuilders.js +30 -22
  700. package/dist/schema/context-actions.d.ts +25 -13
  701. package/dist/schema/context-actions.js +32 -17
  702. package/dist/schema/define-plugin-block.d.ts +8 -6
  703. package/dist/schema/define-plugin-block.js +6 -4
  704. package/dist/schema/fenced-code-raw.d.ts +30 -17
  705. package/dist/schema/fenced-code-raw.js +155 -107
  706. package/dist/schema/global-commands.d.ts +6 -6
  707. package/dist/schema/global-commands.js +14 -22
  708. package/dist/schema/height-estimates.d.ts +31 -0
  709. package/dist/schema/height-estimates.js +64 -0
  710. package/dist/schema/inline-construct-policy.d.ts +42 -55
  711. package/dist/schema/inline-construct-policy.js +36 -35
  712. package/dist/schema/insert-catalogue.d.ts +30 -0
  713. package/dist/schema/insert-catalogue.js +95 -0
  714. package/dist/schema/keybinding-overrides.d.ts +9 -11
  715. package/dist/schema/keybinding-overrides.js +1 -1
  716. package/dist/schema/keybindings.d.ts +15 -7
  717. package/dist/schema/keybindings.js +21 -9
  718. package/dist/schema/merge-rules.d.ts +5 -7
  719. package/dist/schema/merge-rules.js +7 -9
  720. package/dist/schema/opener-priorities.d.ts +4 -4
  721. package/dist/schema/opener-priorities.js +4 -4
  722. package/dist/schema/operations.d.ts +8 -10
  723. package/dist/schema/operations.js +3 -3
  724. package/dist/schema/page-role.d.ts +14 -0
  725. package/dist/schema/page-role.js +19 -0
  726. package/dist/schema/plugin-activation.d.ts +4 -6
  727. package/dist/schema/plugin-activation.js +12 -10
  728. package/dist/schema/plugin-editor-context.d.ts +25 -10
  729. package/dist/schema/plugin-editor-context.js +40 -9
  730. package/dist/schema/plugin-install.d.ts +49 -17
  731. package/dist/schema/plugin-install.js +51 -25
  732. package/dist/schema/plugin-kind.d.ts +12 -8
  733. package/dist/schema/plugin-kind.js +35 -42
  734. package/dist/schema/plugin-name.js +3 -3
  735. package/dist/schema/plugin-registry.d.ts +54 -0
  736. package/dist/schema/plugin-registry.js +70 -0
  737. package/dist/schema/reading.d.ts +23 -0
  738. package/dist/schema/reading.js +7 -0
  739. package/dist/schema/register-once.d.ts +3 -5
  740. package/dist/schema/register-once.js +7 -16
  741. package/dist/schema/registration-checks.d.ts +12 -16
  742. package/dist/schema/registration-checks.js +35 -51
  743. package/dist/schema/registration-pairs.d.ts +54 -0
  744. package/dist/schema/registration-pairs.js +48 -0
  745. package/dist/schema/registration-pending.d.ts +8 -12
  746. package/dist/schema/registration-pending.js +9 -9
  747. package/dist/schema/registry-reset.d.ts +8 -4
  748. package/dist/schema/registry-reset.js +13 -26
  749. package/dist/schema/registry-view.d.ts +25 -13
  750. package/dist/schema/registry-view.js +26 -20
  751. package/dist/schema/reserved-chords.d.ts +9 -10
  752. package/dist/schema/reserved-chords.js +63 -80
  753. package/dist/schema/reserved-chrome.d.ts +12 -11
  754. package/dist/schema/reserved-chrome.js +15 -11
  755. package/dist/schema/setext-raw.d.ts +13 -0
  756. package/dist/schema/setext-raw.js +33 -0
  757. package/dist/schema/stored-as.d.ts +20 -0
  758. package/dist/schema/stored-as.js +6 -0
  759. package/dist/schema/table-cell-raw.d.ts +18 -7
  760. package/dist/schema/table-cell-raw.js +28 -7
  761. package/dist/schema/whole-block-unit.d.ts +5 -4
  762. package/dist/schema/whole-block-unit.js +5 -4
  763. package/dist/search/document-scan.d.ts +3 -3
  764. package/dist/search/document-scan.js +2 -2
  765. package/dist/search/matcher.d.ts +1 -1
  766. package/dist/search/regex-executor.d.ts +5 -6
  767. package/dist/search/regex-executor.js +6 -8
  768. package/dist/search/replace.d.ts +2 -5
  769. package/dist/search/replace.js +2 -5
  770. package/dist/search/search-state.svelte.d.ts +5 -5
  771. package/dist/search/search-state.svelte.js +12 -16
  772. package/dist/selection/autoscroll.d.ts +6 -9
  773. package/dist/selection/block-hit-test.d.ts +16 -24
  774. package/dist/selection/block-hit-test.js +29 -22
  775. package/dist/selection/caret-doors.d.ts +15 -14
  776. package/dist/selection/caret-doors.js +37 -26
  777. package/dist/selection/caret-landing.d.ts +62 -0
  778. package/dist/selection/caret-landing.js +157 -0
  779. package/dist/selection/caret-restore.d.ts +17 -10
  780. package/dist/selection/caret-restore.js +10 -22
  781. package/dist/selection/caret-target.d.ts +30 -0
  782. package/dist/selection/caret-target.js +84 -0
  783. package/dist/selection/char-endpoint-snap.d.ts +6 -10
  784. package/dist/selection/char-endpoint-snap.js +8 -14
  785. package/dist/selection/clipboard-text.d.ts +5 -12
  786. package/dist/selection/clipboard-text.js +69 -172
  787. package/dist/selection/covered-block.d.ts +6 -8
  788. package/dist/selection/covered-block.js +8 -19
  789. package/dist/selection/cross-block/clipboard.d.ts +3 -2
  790. package/dist/selection/cross-block/clipboard.js +13 -4
  791. package/dist/selection/cross-block/dispatch.d.ts +47 -43
  792. package/dist/selection/cross-block/dispatch.js +12 -23
  793. package/dist/selection/cross-block/format-range.d.ts +18 -21
  794. package/dist/selection/cross-block/format-range.js +104 -103
  795. package/dist/selection/cross-block/format-toggle.d.ts +10 -15
  796. package/dist/selection/cross-block/format-toggle.js +28 -33
  797. package/dist/selection/cross-block/keydown.d.ts +4 -4
  798. package/dist/selection/cross-block/keydown.js +92 -125
  799. package/dist/selection/cross-block/ops.d.ts +19 -34
  800. package/dist/selection/cross-block/ops.js +110 -95
  801. package/dist/selection/cross-block/paste.d.ts +2 -3
  802. package/dist/selection/cross-block/paste.js +59 -96
  803. package/dist/selection/cross-block/pointer.d.ts +17 -15
  804. package/dist/selection/cross-block/pointer.js +74 -25
  805. package/dist/selection/cross-block/type-replace.d.ts +4 -6
  806. package/dist/selection/cross-block/type-replace.js +51 -134
  807. package/dist/selection/dead-space-caret.d.ts +19 -30
  808. package/dist/selection/dead-space-caret.js +70 -88
  809. package/dist/selection/drag-pointer.d.ts +7 -9
  810. package/dist/selection/drag-pointer.js +23 -33
  811. package/dist/selection/gap-caret.d.ts +17 -28
  812. package/dist/selection/gap-caret.js +14 -26
  813. package/dist/selection/grid-selection.d.ts +12 -0
  814. package/dist/selection/grid-selection.js +22 -0
  815. package/dist/selection/keyboard-extend.d.ts +27 -40
  816. package/dist/selection/keyboard-extend.js +94 -117
  817. package/dist/selection/multi-click.d.ts +13 -18
  818. package/dist/selection/multi-click.js +32 -38
  819. package/dist/selection/native-bridge.d.ts +29 -39
  820. package/dist/selection/native-bridge.js +78 -127
  821. package/dist/selection/nearest-block.d.ts +17 -12
  822. package/dist/selection/nearest-block.js +37 -18
  823. package/dist/selection/path-lookup.d.ts +25 -16
  824. package/dist/selection/path-lookup.js +101 -18
  825. package/dist/selection/path-math.d.ts +9 -11
  826. package/dist/selection/path-math.js +5 -7
  827. package/dist/selection/pointer-gesture.d.ts +5 -5
  828. package/dist/selection/pointer-gesture.js +5 -5
  829. package/dist/selection/pointer-session.d.ts +10 -16
  830. package/dist/selection/pointer-session.js +6 -7
  831. package/dist/selection/primitives.d.ts +64 -40
  832. package/dist/selection/primitives.js +57 -67
  833. package/dist/selection/range-coverage.d.ts +94 -0
  834. package/dist/selection/range-coverage.js +365 -0
  835. package/dist/selection/range-delete-ceremony.d.ts +28 -74
  836. package/dist/selection/range-delete-ceremony.js +100 -141
  837. package/dist/selection/range-delete-chrome.d.ts +20 -33
  838. package/dist/selection/range-delete-chrome.js +53 -78
  839. package/dist/selection/range-delete-table-coverage.d.ts +11 -25
  840. package/dist/selection/range-delete-table-coverage.js +42 -112
  841. package/dist/selection/range-delete-table.d.ts +14 -12
  842. package/dist/selection/range-delete-table.js +106 -310
  843. package/dist/selection/range-delete.d.ts +18 -23
  844. package/dist/selection/range-delete.js +83 -123
  845. package/dist/selection/round-trip-restore.d.ts +18 -0
  846. package/dist/selection/round-trip-restore.js +19 -0
  847. package/dist/selection/selection-announcer.d.ts +17 -0
  848. package/dist/selection/selection-announcer.js +25 -0
  849. package/dist/selection/selection-description.d.ts +4 -3
  850. package/dist/selection/selection-description.js +5 -4
  851. package/dist/selection/selection-drop.d.ts +34 -16
  852. package/dist/selection/selection-drop.js +159 -95
  853. package/dist/selection/selection-restore.d.ts +20 -33
  854. package/dist/selection/selection-restore.js +21 -44
  855. package/dist/selection/selection-state.svelte.d.ts +50 -42
  856. package/dist/selection/selection-state.svelte.js +144 -98
  857. package/dist/selection/shared-keydown.d.ts +22 -27
  858. package/dist/selection/shared-keydown.js +25 -45
  859. package/dist/selection/table-endpoint-snap.d.ts +17 -41
  860. package/dist/selection/table-endpoint-snap.js +54 -80
  861. package/dist/selection/table-rect-extend.d.ts +3 -6
  862. package/dist/selection/table-rect-extend.js +19 -14
  863. package/dist/styles/editor-theme.css +60 -53
  864. package/dist/styles/editor.css +201 -143
  865. package/dist/testing/conformance-core.d.ts +50 -18
  866. package/dist/testing/conformance-core.js +88 -50
  867. package/dist/testing/container-conformance.d.ts +48 -84
  868. package/dist/testing/container-conformance.js +159 -285
  869. package/dist/testing/headless-actions.d.ts +34 -19
  870. package/dist/testing/headless-actions.js +116 -65
  871. package/dist/testing/headless-block-list.svelte.d.ts +16 -0
  872. package/dist/testing/headless-block-list.svelte.js +22 -0
  873. package/dist/testing/inline-conformance.d.ts +15 -22
  874. package/dist/testing/inline-conformance.js +131 -148
  875. package/dist/testing/kind-conformance.d.ts +19 -24
  876. package/dist/testing/kind-conformance.js +204 -117
  877. package/dist/testing/kit-reading.d.ts +7 -0
  878. package/dist/testing/kit-reading.js +16 -0
  879. package/dist/testing/mount-dom-stubs.d.ts +4 -5
  880. package/dist/testing/mount-dom-stubs.js +8 -5
  881. package/dist/testing/parse-convergence.d.ts +10 -10
  882. package/dist/testing/parse-convergence.js +14 -49
  883. package/dist/testing.d.ts +13 -9
  884. package/dist/testing.js +28 -38
  885. package/dist/tree-operations/blockquote.d.ts +8 -14
  886. package/dist/tree-operations/blockquote.js +25 -45
  887. package/dist/tree-operations/chain-rebuild.d.ts +34 -25
  888. package/dist/tree-operations/chain-rebuild.js +115 -52
  889. package/dist/tree-operations/children.d.ts +5 -9
  890. package/dist/tree-operations/children.js +7 -11
  891. package/dist/tree-operations/cleanup.d.ts +6 -7
  892. package/dist/tree-operations/cleanup.js +14 -11
  893. package/dist/tree-operations/clone.js +5 -4
  894. package/dist/tree-operations/container-lift.d.ts +10 -5
  895. package/dist/tree-operations/container-lift.js +20 -14
  896. package/dist/tree-operations/container-offsets.d.ts +22 -0
  897. package/dist/tree-operations/container-offsets.js +89 -0
  898. package/dist/tree-operations/content-write.d.ts +52 -29
  899. package/dist/tree-operations/content-write.js +155 -110
  900. package/dist/tree-operations/index.d.ts +4 -4
  901. package/dist/tree-operations/index.js +4 -4
  902. package/dist/tree-operations/keep-one-block.d.ts +10 -0
  903. package/dist/tree-operations/keep-one-block.js +19 -0
  904. package/dist/tree-operations/leaf-range.d.ts +33 -0
  905. package/dist/tree-operations/leaf-range.js +67 -0
  906. package/dist/tree-operations/list/empty-check.d.ts +2 -3
  907. package/dist/tree-operations/list/empty-check.js +4 -4
  908. package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
  909. package/dist/tree-operations/list/exit-replacement.js +4 -9
  910. package/dist/tree-operations/list/item-partition.d.ts +2 -2
  911. package/dist/tree-operations/list/item-partition.js +2 -2
  912. package/dist/tree-operations/list/list-builders.d.ts +18 -16
  913. package/dist/tree-operations/list/list-builders.js +59 -30
  914. package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
  915. package/dist/tree-operations/list/ordered-markers.js +7 -16
  916. package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
  917. package/dist/tree-operations/list/reconcile-task.js +80 -23
  918. package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
  919. package/dist/tree-operations/list/sublist-separator.js +20 -27
  920. package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
  921. package/dist/tree-operations/list/task-paragraph.js +54 -0
  922. package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
  923. package/dist/tree-operations/list/unwrap-merge.js +44 -79
  924. package/dist/tree-operations/node-ops.d.ts +30 -52
  925. package/dist/tree-operations/node-ops.js +152 -218
  926. package/dist/tree-operations/node-primitives.d.ts +44 -31
  927. package/dist/tree-operations/node-primitives.js +84 -60
  928. package/dist/tree-operations/open-tail.d.ts +25 -0
  929. package/dist/tree-operations/open-tail.js +100 -0
  930. package/dist/tree-operations/parse-block.d.ts +15 -2
  931. package/dist/tree-operations/parse-block.js +19 -4
  932. package/dist/tree-operations/paste/apply.d.ts +7 -8
  933. package/dist/tree-operations/paste/apply.js +33 -63
  934. package/dist/tree-operations/paste/body-write.d.ts +8 -6
  935. package/dist/tree-operations/paste/body-write.js +13 -14
  936. package/dist/tree-operations/paste/container-match.d.ts +7 -10
  937. package/dist/tree-operations/paste/container-match.js +76 -58
  938. package/dist/tree-operations/paste/container-paste.d.ts +3 -3
  939. package/dist/tree-operations/paste/container-paste.js +3 -3
  940. package/dist/tree-operations/paste/dispatch.d.ts +26 -29
  941. package/dist/tree-operations/paste/dispatch.js +68 -53
  942. package/dist/tree-operations/paste/focus-target.d.ts +11 -14
  943. package/dist/tree-operations/paste/focus-target.js +13 -18
  944. package/dist/tree-operations/paste/hooks.d.ts +7 -12
  945. package/dist/tree-operations/paste/hooks.js +49 -46
  946. package/dist/tree-operations/paste/line-ending.d.ts +11 -0
  947. package/dist/tree-operations/paste/line-ending.js +32 -0
  948. package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
  949. package/dist/tree-operations/paste/list-absorb.js +17 -19
  950. package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
  951. package/dist/tree-operations/paste/list-break-out.js +24 -32
  952. package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
  953. package/dist/tree-operations/paste/parent-scope.js +9 -16
  954. package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
  955. package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
  956. package/dist/tree-operations/paste/paste-replacement.js +73 -42
  957. package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
  958. package/dist/tree-operations/paste/paste-transforms.js +18 -27
  959. package/dist/tree-operations/paste/replacement-parse.d.ts +9 -7
  960. package/dist/tree-operations/paste/replacement-parse.js +12 -10
  961. package/dist/tree-operations/paste/strategy.d.ts +1 -1
  962. package/dist/tree-operations/paste/strategy.js +1 -1
  963. package/dist/tree-operations/paste/table-slice.js +15 -10
  964. package/dist/tree-operations/paste-surfaces.d.ts +18 -29
  965. package/dist/tree-operations/paste-surfaces.js +14 -10
  966. package/dist/tree-operations/path-mutate.d.ts +7 -8
  967. package/dist/tree-operations/path-mutate.js +4 -4
  968. package/dist/tree-operations/reorder-unit.d.ts +4 -5
  969. package/dist/tree-operations/reorder-unit.js +5 -6
  970. package/dist/tree-operations/reorder.d.ts +7 -9
  971. package/dist/tree-operations/reorder.js +39 -40
  972. package/dist/tree-operations/settle.d.ts +42 -53
  973. package/dist/tree-operations/settle.js +241 -162
  974. package/dist/tree-operations/sharing.d.ts +5 -5
  975. package/dist/tree-operations/splice-many.d.ts +5 -5
  976. package/dist/tree-operations/splice-many.js +5 -5
  977. package/dist/tree-operations/stored-as.d.ts +13 -0
  978. package/dist/tree-operations/stored-as.js +48 -0
  979. package/dist/tree-operations/structural-change.d.ts +11 -15
  980. package/dist/tree-operations/structural-change.js +10 -14
  981. package/dist/tree-operations/structural-suffix.d.ts +22 -0
  982. package/dist/tree-operations/structural-suffix.js +61 -0
  983. package/dist/tree-operations/sub-table-copy.d.ts +7 -0
  984. package/dist/tree-operations/sub-table-copy.js +40 -36
  985. package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
  986. package/dist/tree-operations/table-grid-clipboard.js +11 -36
  987. package/dist/tree-operations/table-mutations.d.ts +7 -3
  988. package/dist/tree-operations/table-mutations.js +45 -9
  989. package/dist/tree-operations/unshare.d.ts +11 -15
  990. package/dist/tree-operations/unshare.js +15 -17
  991. package/dist/undo/manager.js +1 -1
  992. package/dist/undo/types.d.ts +2 -2
  993. package/docs/guide/consumer-guide.md +327 -205
  994. package/docs/guide/directives.md +7 -7
  995. package/docs/guide/plugin-api.md +253 -185
  996. package/docs/guide/plugin-guide.md +332 -235
  997. package/docs/guide/plugin-testing.md +96 -82
  998. package/package.json +12 -16
  999. package/dist/ambient/ambient-cursor.d.ts +0 -41
  1000. package/dist/ambient/ambient-cursor.js +0 -120
  1001. package/dist/components/blocks/code/code-paste.d.ts +0 -24
  1002. package/dist/components/blocks/code/code-paste.js +0 -21
  1003. package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
  1004. package/dist/components/blocks/table/cell-clipboard.js +0 -67
  1005. package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
  1006. package/dist/components/blocks/text/hidden-suffix.js +0 -15
  1007. package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
  1008. package/dist/components/image/image-source-bytes.d.ts +0 -15
  1009. package/dist/components/image/image-source-bytes.js +0 -80
  1010. package/dist/cursor/content-offsets.d.ts +0 -29
  1011. package/dist/cursor/content-offsets.js +0 -151
  1012. package/dist/cursor/reveal-anchor.d.ts +0 -30
  1013. package/dist/cursor/reveal-anchor.js +0 -31
  1014. package/dist/cursor/scroll-hold.d.ts +0 -10
  1015. package/dist/cursor/scroll-hold.js +0 -22
  1016. package/dist/invariants/split-landing.d.ts +0 -8
  1017. package/dist/invariants/split-landing.js +0 -15
  1018. package/dist/tree-operations/list/terminator.d.ts +0 -17
  1019. package/dist/tree-operations/list/terminator.js +0 -60
  1020. package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -31
  1021. package/dist/tree-operations/paste/replace-block-at-parent.js +0 -78
@@ -24,9 +24,10 @@ declare const TextEditableBlock: import("svelte").Component<$$ComponentProps, {
24
24
  isVerticallyTransparent: () => boolean;
25
25
  enterEdgeWidget: (side: "start" | "end") => boolean;
26
26
  claimRootClipboard: (event: ClipboardEvent) => void;
27
- insertMarkdown: (md: string) => boolean;
27
+ insertMarkdown: (md: string) => Promise<boolean>;
28
28
  snapCaretToPoint: (clientX: number, clientY: number) => void;
29
29
  runCommand: (id: CommandId, arg?: unknown) => boolean;
30
+ afterSourceCommit: (run: () => void, offset?: number | import("../../../cursor/coordinate-spaces").RawOffset) => void;
30
31
  isCommandActive: (id: CommandId) => boolean;
31
32
  }, "">;
32
33
  type TextEditableBlock = ReturnType<typeof TextEditableBlock>;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The empty delimiter pair the auto-pair last wrote, one record per editor: only that pair is its
3
+ * to step over, collapse or delete, since the same bytes typed by hand are the user's. It holds
4
+ * while the pair and the text either side are the bytes the write left, so typing inside keeps
5
+ * it; an edit outside it, or a key with the caret elsewhere or in another block, ends it.
6
+ */
7
+ import type { ContentRange } from '../../../core/inline';
8
+ export interface AutoPairRecord {
9
+ /** A view of the record for one block; each call is a new block identity. */
10
+ forBlock(): BlockAutoPairs;
11
+ }
12
+ export interface BlockAutoPairs {
13
+ /**
14
+ * The pair the auto-pair wrote, when it is still empty and `caret` sits between its runs or
15
+ * just past it (a stepped-over partner). A caret anywhere else ends the record.
16
+ */
17
+ consult(text: string, caret: number): ContentRange | null;
18
+ /** Record the empty pair a write left at `pair` in `text`. */
19
+ remember(text: string, pair: ContentRange): void;
20
+ /** The key closed, deleted or dropped the pair. */
21
+ forget(): void;
22
+ }
23
+ export declare function createAutoPairRecord(): AutoPairRecord;
@@ -0,0 +1,51 @@
1
+ /**
2
+ * The empty delimiter pair the auto-pair last wrote, one record per editor: only that pair is its
3
+ * to step over, collapse or delete, since the same bytes typed by hand are the user's. It holds
4
+ * while the pair and the text either side are the bytes the write left, so typing inside keeps
5
+ * it; an edit outside it, or a key with the caret elsewhere or in another block, ends it.
6
+ */
7
+ export function createAutoPairRecord() {
8
+ let written = null;
9
+ return {
10
+ forBlock() {
11
+ const block = {};
12
+ return {
13
+ consult(text, caret) {
14
+ const pair = written?.block === block ? pairIn(written, text) : null;
15
+ const k = written?.run.length ?? 0;
16
+ const inBody = pair !== null && caret >= pair.start + k && caret <= pair.end - k;
17
+ const empty = pair !== null && pair.end - pair.start === 2 * k;
18
+ if (!pair || !(inBody || (empty && caret === pair.end))) {
19
+ written = null;
20
+ return null;
21
+ }
22
+ return empty ? pair : null;
23
+ },
24
+ remember(text, pair) {
25
+ const k = (pair.end - pair.start) / 2;
26
+ written = {
27
+ block,
28
+ before: text.slice(0, pair.start),
29
+ run: text.slice(pair.start, pair.start + k),
30
+ after: text.slice(pair.end)
31
+ };
32
+ },
33
+ forget() {
34
+ written = null;
35
+ }
36
+ };
37
+ }
38
+ };
39
+ }
40
+ // Where the written pair sits in `text` now, body included, or null once the bytes differ.
41
+ function pairIn({ before, run, after }, text) {
42
+ const start = before.length;
43
+ const end = text.length - after.length;
44
+ if (end - start < 2 * run.length)
45
+ return null;
46
+ if (!text.startsWith(before) || !text.endsWith(after))
47
+ return null;
48
+ if (!text.startsWith(run, start) || !text.startsWith(run, end - run.length))
49
+ return null;
50
+ return { start, end };
51
+ }
@@ -1,11 +1,13 @@
1
- /** Native-vs-synthetic caret and plain-key guards shared across the text surface. */
2
- /** Caret in a real text node the reader can see: the native caret renders there, so the
3
- * synthetic indicator stands down. Hidden marker text renders nothing, so it does not count. */
1
+ /** Shared checks about the caret and the key, used across a text block's editable element. */
2
+ /** Caret in a text node the user can see: the browser draws a caret there, so the editor's own
3
+ * caret indicator is not needed. Hidden marker text renders nothing, so it does not count. */
4
4
  export declare function caretIsInTextContent(el: HTMLElement, sel: Selection | null): boolean;
5
- /** A ranged selection this surface holds — the click ladder's rungs, a shift-click, a
6
- * drag-select. It is the gesture's own paint, so a click-time caret seat stands down for it. */
5
+ /** The same read for a caret position given as a node: the one a press is about to make. */
6
+ export declare function seatIsInTextContent(el: HTMLElement, node: Node): boolean;
7
+ /** Whether this element holds a selected range: a double or triple click, a shift-click, a
8
+ * drag-select. The gesture drew that range, so click-time caret placement leaves it alone. */
7
9
  export declare function surfaceHoldsRange(el: HTMLElement, sel: Selection | null): boolean;
8
- /** Ctrl/meta/alt held — a platform command, never an edit of the byte beside the caret. */
10
+ /** Ctrl, meta or alt held: a platform command, never an edit of the byte beside the caret. */
9
11
  export declare function hasModifier(e: KeyboardEvent): boolean;
10
12
  /** A typed character: no modifier chord, one code point. A chord is a command instead. */
11
13
  export declare function isPlainTypingKey(e: KeyboardEvent): boolean;
@@ -1,23 +1,26 @@
1
- /** Native-vs-synthetic caret and plain-key guards shared across the text surface. */
1
+ /** Shared checks about the caret and the key, used across a text block's editable element. */
2
2
  import { isCharacterKey } from '../../../schema/keybindings';
3
3
  import { isHiddenMarkerText } from '../../../cursor/widget-offset';
4
- /** Caret in a real text node the reader can see: the native caret renders there, so the
5
- * synthetic indicator stands down. Hidden marker text renders nothing, so it does not count. */
4
+ /** Caret in a text node the user can see: the browser draws a caret there, so the editor's own
5
+ * caret indicator is not needed. Hidden marker text renders nothing, so it does not count. */
6
6
  export function caretIsInTextContent(el, sel) {
7
7
  if (!sel || sel.rangeCount === 0)
8
8
  return false;
9
- const node = sel.getRangeAt(0).startContainer;
9
+ return seatIsInTextContent(el, sel.getRangeAt(0).startContainer);
10
+ }
11
+ /** The same read for a caret position given as a node: the one a press is about to make. */
12
+ export function seatIsInTextContent(el, node) {
10
13
  return node.nodeType === Node.TEXT_NODE && el.contains(node) && !isHiddenMarkerText(node, el);
11
14
  }
12
- /** A ranged selection this surface holds — the click ladder's rungs, a shift-click, a
13
- * drag-select. It is the gesture's own paint, so a click-time caret seat stands down for it. */
15
+ /** Whether this element holds a selected range: a double or triple click, a shift-click, a
16
+ * drag-select. The gesture drew that range, so click-time caret placement leaves it alone. */
14
17
  export function surfaceHoldsRange(el, sel) {
15
18
  if (!sel || sel.isCollapsed || sel.rangeCount === 0)
16
19
  return false;
17
20
  const range = sel.getRangeAt(0);
18
21
  return el.contains(range.startContainer) || el.contains(range.endContainer);
19
22
  }
20
- /** Ctrl/meta/alt held — a platform command, never an edit of the byte beside the caret. */
23
+ /** Ctrl, meta or alt held: a platform command, never an edit of the byte beside the caret. */
21
24
  export function hasModifier(e) {
22
25
  return e.ctrlKey || e.metaKey || e.altKey;
23
26
  }
@@ -1,32 +1,36 @@
1
1
  /**
2
- * One composition's worth of seat inputs, captured at `compositionstart`. Both inputs the commit's
3
- * relocation needs — the arrival side and the pending marks — belong to the caret the composition
4
- * OPENED at, and the affinity re-arm has spent them by the time the composed run arrives.
2
+ * What an IME composition needs remembered, captured at `compositionstart`. The arrival side and
3
+ * the pending marks both belong to the caret the composition opened at, and by the time the
4
+ * composed run arrives the arrival side has been overwritten, so they are captured up front.
5
5
  */
6
6
  import type { InlineNode } from '../../../core/nodes';
7
7
  import type { VisibilityContext } from '../../../core/inline/visibility';
8
8
  import type { EdgeAffinity } from '../../../cursor/edge-affinity';
9
+ import type { Reading } from '../../../schema/reading';
9
10
  import type { InlineMarkKind } from '../../../schema/inline-construct-policy';
10
11
  export interface CompositionSeatDeps {
11
- /** The block's display bytes — what a commit's read is compared against. */
12
+ /** The block's displayed text, which a commit's reading is compared against. */
12
13
  getDisplayText: () => string;
13
14
  getInlines: () => readonly InlineNode[];
15
+ /** The reading `getInlines` reads with, so a candidate keeps the reference links it shows and
16
+ * reads back as the syntax the editor draws. */
17
+ reading: Reading;
14
18
  getAffinity: () => EdgeAffinity | null;
15
- /** How the surface reads on screen, for the seat's own painted-range question. */
19
+ /** How the block reads on screen, for deciding which ranges are actually drawn. */
16
20
  getScreen: () => VisibilityContext;
17
21
  /** Spend the pending marks: a composition is the one insertion they were promised to. */
18
22
  consumePendingMarks: () => ReadonlySet<InlineMarkKind> | null;
19
- /** Give them back when the composition committed nothing — an IME cancel inserts no run, so
20
- * the promise is still owed. Required, so both surfaces answer for it alike. */
23
+ /** Give them back when the composition wrote nothing: a cancelled IME run inserts nothing, so
24
+ * the marks are still pending. Required, so every block answers the same way. */
21
25
  restorePendingMarks: (marks: ReadonlySet<InlineMarkKind>) => void;
22
- /** The block's live selection, read at compositionstart: composing over one is a range op no
23
- * plain-insertion arm claims, so it routes to `resolveRangeEdit`. Omit to keep ranges verbatim. */
26
+ /** The block's selection, read at `compositionstart`: composing over one goes to
27
+ * `resolveRangeEdit`. Omit to keep ranges as the browser wrote them. */
24
28
  getRawSelection?: () => {
25
29
  start: number;
26
30
  end: number;
27
31
  } | null;
28
- /** The surface's join-seam resolution for a range replace, in display bytes; null keeps the
29
- * engine's own edit — the same decline contract as the keydown selection-edit arm. */
32
+ /** How this block resolves a range replace, in displayed bytes; null keeps the browser's own
33
+ * edit, the same refusal the keydown selection-edit path makes. */
30
34
  resolveRangeEdit?: (range: {
31
35
  start: number;
32
36
  end: number;
@@ -36,9 +40,8 @@ export interface CompositionSeatDeps {
36
40
  } | null;
37
41
  }
38
42
  export interface CompositionSeat {
39
- /** Capture the window the composition opened in. Call BEFORE the surface's own
40
- * `compositionstart`, whose cross-block half clears the affinity, and before the first
41
- * mid-composition `input`, which re-arms it to the typed side. */
43
+ /** Capture the state the composition opened in. Call it before the block's own
44
+ * `compositionstart` and the first `input`, which both overwrite the arrival side. */
42
45
  noteStart(): void;
43
46
  /** The bytes the commit should write, or null to keep the DOM read verbatim. */
44
47
  relocate(after: string, composedAt: number): {
@@ -1,13 +1,13 @@
1
1
  /**
2
- * One composition's worth of seat inputs, captured at `compositionstart`. Both inputs the commit's
3
- * relocation needs — the arrival side and the pending marks — belong to the caret the composition
4
- * OPENED at, and the affinity re-arm has spent them by the time the composed run arrives.
2
+ * What an IME composition needs remembered, captured at `compositionstart`. The arrival side and
3
+ * the pending marks both belong to the caret the composition opened at, and by the time the
4
+ * composed run arrives the arrival side has been overwritten, so they are captured up front.
5
5
  */
6
6
  import { plainInsertionAt, relocateComposedRun } from './edge-seat';
7
7
  import { resolveMarkedInsertion } from './pending-mark-insert';
8
8
  export function createCompositionSeat(deps) {
9
- // A single nullable capture rather than a stack: the window is compositionstart → the one
10
- // commit compositionend drives.
9
+ // One nullable capture rather than a stack: a composition runs from `compositionstart` to the
10
+ // single commit `compositionend` drives.
11
11
  let started = null;
12
12
  return {
13
13
  noteStart: () => {
@@ -23,8 +23,8 @@ export function createCompositionSeat(deps) {
23
23
  if (started === null)
24
24
  return null;
25
25
  started.committed = true;
26
- // A selection at the window's open makes this a range replace: the plain arms below
27
- // cannot claim it, and the engine's literal replace strands the runs the range crossed.
26
+ // A selection open at the start makes this a range replace, which the browser would do
27
+ // literally, stranding the delimiter runs the range crossed.
28
28
  if (started.range && started.range.start < started.range.end) {
29
29
  const typed = replacedRangeInsertion(started.before, after, started.range);
30
30
  if (typed === null)
@@ -37,11 +37,11 @@ export function createCompositionSeat(deps) {
37
37
  const composed = plainInsertionAt(started.before, after, composedAt);
38
38
  const marked = composed === null
39
39
  ? null
40
- : resolveMarkedInsertion(started.before, composedAt, composed, started.marks, deps.getInlines());
40
+ : resolveMarkedInsertion(started.before, composedAt, composed, started.marks, deps.getInlines(), deps.reading);
41
41
  if (marked)
42
42
  return marked;
43
43
  }
44
- return relocateComposedRun(started.before, after, composedAt, deps.getInlines(), started.affinity, deps.getScreen());
44
+ return relocateComposedRun(started.before, after, composedAt, deps.getInlines(), started.affinity, deps.getScreen(), deps.reading);
45
45
  },
46
46
  noteEnd: () => {
47
47
  if (started && !started.committed && started.marks) {
@@ -51,8 +51,8 @@ export function createCompositionSeat(deps) {
51
51
  }
52
52
  };
53
53
  }
54
- /** The run the commit's read put over `range`, or null when the read is not a replacement of
55
- * exactly that span — then nothing here knows what the engine did, and verbatim is honest. */
54
+ /** The run the commit's reading put over `range`, or null when that reading is not a replacement
55
+ * of exactly that span: nothing here can tell what the browser did, so verbatim is honest. */
56
56
  function replacedRangeInsertion(before, after, range) {
57
57
  const length = after.length - before.length + (range.end - range.start);
58
58
  if (length < 0 || range.end > before.length)
@@ -1,47 +1,47 @@
1
1
  /**
2
- * What a destructive key takes at an inline construct's unpainted delimiter run: the adjacent
3
- * CONTENT character, plus the delimiters the cut leaves enclosing nothing (live-mode.md § 4.4
4
- * `autoUnwrapOnEmpty`). Bytes that read right can parse wrong, so a candidate is written only once
5
- * a re-parse says the reader lost exactly what the cut aimed at.
2
+ * What a destructive key takes at an inline construct's hidden delimiter run: the neighbouring
3
+ * content character, plus the delimiters the cut leaves enclosing nothing (live-mode.md § 4.4
4
+ * `autoUnwrapOnEmpty`). Bytes that read right can parse wrong, so a candidate is written only when,
5
+ * read back where it is stored, it shows the user lost exactly what the cut aimed at.
6
6
  */
7
7
  import { type ContentRange } from '../../../core/inline';
8
8
  import { type VisibilityContext } from '../../../core/inline/visibility';
9
- import type { InlineNode } from '../../../core/nodes';
9
+ import type { AnyInlineKind, InlineNode } from '../../../core/nodes';
10
+ import type { StoredAs } from '../../../schema/stored-as';
10
11
  export type DeleteDirection = 'backward' | 'forward';
11
12
  /** Named fields rather than a positional row: `display`, the two ranges and the caret are all
12
13
  * offsets into the same string, and a swapped pair would type-check. */
13
14
  export interface EdgeDeletionQuery {
14
- /** The block's display bytes — its raw without the trailing line ending. */
15
+ /** The block's displayed text: its raw without the trailing line ending. */
15
16
  display: string;
16
17
  /** The bytes the block's own kind calls content; a cut never reaches past them. */
17
18
  content: ContentRange;
18
19
  caret: number;
19
20
  direction: DeleteDirection;
20
- /** How the block reads on screen. Required, so a second caller cannot inherit the hiding
21
- * assumption by silence. */
21
+ /** How the block reads on screen. Required, so a second caller cannot inherit an assumption
22
+ * about what is hidden by saying nothing. */
22
23
  screen: VisibilityContext;
23
- /** The inline tree the render painted from, so the runs skipped here are the runs hidden. */
24
+ /** The inline tree the render drew from, so the runs skipped here are the runs really hidden. */
24
25
  inlines: readonly InlineNode[];
25
- /** What the caller installs the rewrite as, which is what the candidate is read back as.
26
- * Required for the same reason `screen` is: a cell's text is never a block. */
27
- installedAs: EdgeDeletionSurface;
26
+ /** Where the block's bytes are stored, with the reading `inlines` was read in: a candidate is
27
+ * read back there, so a cell's text stays text and a list item's reads behind its marker. */
28
+ store: StoredAs;
28
29
  }
29
- /** A prose surface installs a block; a table cell installs cell text, whose bytes read as a list or
30
- * a quote the moment they open with `- ` or `> ` though the cell paints neither. */
31
- export type EdgeDeletionSurface = 'block' | 'cell';
32
30
  export interface EdgeDeletionWrite {
33
- /** The block's whole display bytes after the cut. */
31
+ /** The block's whole displayed text after the cut. */
34
32
  raw: string;
35
33
  caret: number;
34
+ /** The marks of the constructs the cut emptied and unwrapped, for the caller to hold pending. */
35
+ unwrappedMarks: readonly AnyInlineKind[];
36
36
  }
37
- /** The press is this arm's but no rewrite parses back: taking nothing is the only answer that
38
- * keeps the markers off screen, since the engine's version paints them. */
37
+ /** The key belongs here but no rewrite parses back: taking nothing is the only answer that keeps
38
+ * the markers off screen, since the browser's version would show them. */
39
39
  export interface EdgeDeletionSwallow {
40
40
  swallow: true;
41
41
  }
42
42
  export type EdgeDeletion = EdgeDeletionWrite | EdgeDeletionSwallow;
43
43
  /**
44
- * What a destructive key at `caret` does, or null when the press is not this arm's — nothing
45
- * content-side of the caret, or a cut with no hidden run beside it, which the engine gets right.
44
+ * What a destructive key at `caret` does, or null when it does not belong here: nothing on the
45
+ * content side of the caret, or a cut with no hidden run beside it, which the browser gets right.
46
46
  */
47
47
  export declare function resolveEdgeDeletion(query: EdgeDeletionQuery): EdgeDeletion | null;
@@ -1,21 +1,22 @@
1
1
  /**
2
- * What a destructive key takes at an inline construct's unpainted delimiter run: the adjacent
3
- * CONTENT character, plus the delimiters the cut leaves enclosing nothing (live-mode.md § 4.4
4
- * `autoUnwrapOnEmpty`). Bytes that read right can parse wrong, so a candidate is written only once
5
- * a re-parse says the reader lost exactly what the cut aimed at.
2
+ * What a destructive key takes at an inline construct's hidden delimiter run: the neighbouring
3
+ * content character, plus the delimiters the cut leaves enclosing nothing (live-mode.md § 4.4
4
+ * `autoUnwrapOnEmpty`). Bytes that read right can parse wrong, so a candidate is written only when,
5
+ * read back where it is stored, it shows the user lost exactly what the cut aimed at.
6
6
  */
7
- import { constructContentRange, inlineDescendants, parseInline } from '../../../core/inline';
7
+ import { constructContentRange, inlineDescendants } from '../../../core/inline';
8
8
  import { CONTENT_VISIBILITY, renderedText } from '../../../core/inline/visibility';
9
+ import { readBack, shownOf } from '../../../core/inline/live-edit/read-back';
9
10
  import { getInlineConstructPolicy } from '../../../schema/inline-construct-policy';
10
- import { removesExactly, soleProseReparse } from './screen-diff';
11
+ import { removesExactly } from './screen-diff';
12
+ import { isHighSurrogate, isLowSurrogate } from '../../../core/lines';
11
13
  /**
12
- * What a destructive key at `caret` does, or null when the press is not this arm's — nothing
13
- * content-side of the caret, or a cut with no hidden run beside it, which the engine gets right.
14
+ * What a destructive key at `caret` does, or null when it does not belong here: nothing on the
15
+ * content side of the caret, or a cut with no hidden run beside it, which the browser gets right.
14
16
  */
15
17
  export function resolveEdgeDeletion(query) {
16
- // Painted delimiters are bytes the reader saw, so no run here is this arm's to protect and the
17
- // license to drop one (live-mode.md § 2) does not reach: the press is the engine's. Every
18
- // oracle call below is past this gate, which is why they can all take the content reading.
18
+ // Visible delimiters are bytes the user saw, so the key stays with the browser; everything
19
+ // below can therefore use the content reading.
19
20
  if (query.screen.chromePaints)
20
21
  return null;
21
22
  const { display, content, caret, direction } = query;
@@ -23,28 +24,33 @@ export function resolveEdgeDeletion(query) {
23
24
  const target = deletionTarget(display, constructs, content, caret, direction);
24
25
  if (!target)
25
26
  return null;
26
- // The adjacency that decides is the deleted SPAN's, not the caret's: the engine deletes from
27
- // where the byte is. With no run beside the cut the press stays with the engine, which owns
28
- // grapheme and IME behavior.
27
+ // Decided beside the deleted span, not the caret. With no hidden run beside the cut the key
28
+ // stays with the browser, which handles graphemes and IME.
29
29
  const plain = expandThroughEmptied(constructs, target);
30
30
  const native = nativeCut(caret, direction);
31
31
  const touchesHiddenRun = isDelimiterByte(constructs, target.start - 1) || isDelimiterByte(constructs, target.end);
32
32
  if (!touchesHiddenRun && plain.start === native.start && plain.end === native.end)
33
33
  return null;
34
- const before = visibleText(display, query.installedAs);
34
+ const before = visibleText(display, query);
35
35
  if (before === null)
36
36
  return null;
37
37
  const removed = target.atomic
38
- ? renderedText([target.atomic], display, CONTENT_VISIBILITY)
38
+ ? renderedText([target.atomic], display, CONTENT_VISIBILITY, {
39
+ grammar: query.store.reading.grammar
40
+ })
39
41
  : display.slice(target.start, target.end);
40
42
  for (const cut of [plain, widenThroughRuns(constructs, plain)]) {
41
43
  const raw = display.slice(0, cut.start) + display.slice(cut.end);
42
- const after = visibleText(raw, query.installedAs);
44
+ const after = visibleText(raw, query);
43
45
  if (after === null || !removesExactly(before, after, removed))
44
46
  continue;
45
47
  // Backward lands where the cut opened; forward keeps the caret where it was, which the cut
46
48
  // only moves when it swallowed delimiters ahead of it.
47
- return { raw, caret: direction === 'backward' ? cut.start : Math.min(caret, cut.start) };
49
+ return {
50
+ raw,
51
+ caret: direction === 'backward' ? cut.start : Math.min(caret, cut.start),
52
+ unwrappedMarks: plain.unwrappedMarks
53
+ };
48
54
  }
49
55
  return { swallow: true };
50
56
  }
@@ -53,11 +59,8 @@ function nativeCut(caret, direction) {
53
59
  ? { start: caret - 1, end: caret }
54
60
  : { start: caret, end: caret + 1 };
55
61
  }
56
- /**
57
- * The first thing the reader can see on `direction`'s side of the caret: delimiter bytes are
58
- * stepped over, an atomic run is taken whole, and the walk stops at the content range because the
59
- * block's own structural bytes are not this arm's to touch.
60
- */
62
+ /** The first thing the user can see on `direction`'s side of the caret. The scan stops at the
63
+ * content range, since the block's own structural bytes are never deleted here. */
61
64
  function deletionTarget(display, constructs, content, caret, direction) {
62
65
  const step = direction === 'backward' ? -1 : 1;
63
66
  for (let at = direction === 'backward' ? caret - 1 : caret; at >= content.start && at < content.end; at += step) {
@@ -69,25 +72,16 @@ function deletionTarget(display, constructs, content, caret, direction) {
69
72
  }
70
73
  return null;
71
74
  }
72
- /** The whole code point `at` belongs to. Half a surrogate pair is not a character, and this arm
73
- * claims presses beside a hidden run wherever they land — emoji included. */
75
+ /** The whole code point `at` belongs to. Half a surrogate pair is not a character, and this module
76
+ * handles keys beside a hidden run wherever they land, emoji included. */
74
77
  function codePointAt(display, at) {
75
- const start = isLowSurrogate(display, at) && isHighSurrogate(display, at - 1) ? at - 1 : at;
76
- return { start, end: isHighSurrogate(display, start) ? start + 2 : start + 1 };
77
- }
78
- function isHighSurrogate(display, at) {
79
- const code = display.charCodeAt(at);
80
- return code >= 0xd800 && code <= 0xdbff;
78
+ const start = isLowSurrogate(display.charCodeAt(at)) && isHighSurrogate(display.charCodeAt(at - 1))
79
+ ? at - 1
80
+ : at;
81
+ return { start, end: isHighSurrogate(display.charCodeAt(start)) ? start + 2 : start + 1 };
81
82
  }
82
- function isLowSurrogate(display, at) {
83
- const code = display.charCodeAt(at);
84
- return code >= 0xdc00 && code <= 0xdfff;
85
- }
86
- /**
87
- * The second reading of a press whose plain cut does not parse back: take the delimiter runs the
88
- * cut now sits between with it, the "these two constructs become one" a reader sees when the
89
- * character between them goes. Verified against the SCREEN, not the structure.
90
- */
83
+ /** The second try when the plain cut does not parse back: also take the delimiter runs the cut sits
84
+ * between, so the two constructs become one as the user sees it. */
91
85
  function widenThroughRuns(constructs, cut) {
92
86
  let { start, end } = cut;
93
87
  while (isDelimiterByte(constructs, start - 1))
@@ -96,14 +90,14 @@ function widenThroughRuns(constructs, cut) {
96
90
  end++;
97
91
  return { start, end };
98
92
  }
99
- /** A pair left around nothing is invisible residue, so a construct the cut empties goes with it —
100
- * repeatedly, since dropping the inner pair can empty its parent. */
93
+ /** A delimiter pair left around nothing is invisible leftovers, so a construct the cut empties
94
+ * goes with it, repeatedly, since dropping the inner pair can empty its parent. */
101
95
  function expandThroughEmptied(constructs, target) {
102
- const cut = { start: target.start, end: target.end };
96
+ const cut = { start: target.start, end: target.end, unwrappedMarks: [] };
103
97
  let grew = true;
104
98
  while (grew) {
105
99
  grew = false;
106
- for (const { node, content, autoUnwrapOnEmpty } of constructs) {
100
+ for (const { node, content, autoUnwrapOnEmpty, markable } of constructs) {
107
101
  if (!autoUnwrapOnEmpty || !content)
108
102
  continue;
109
103
  if (content.start < cut.start || content.end > cut.end)
@@ -112,13 +106,15 @@ function expandThroughEmptied(constructs, target) {
112
106
  continue;
113
107
  cut.start = Math.min(cut.start, node.start);
114
108
  cut.end = Math.max(cut.end, node.end);
109
+ if (markable)
110
+ cut.unwrappedMarks.push(node.kind);
115
111
  grew = true;
116
112
  }
117
113
  }
118
114
  return cut;
119
115
  }
120
- /** Only kinds the policy table names take part: an unpolicied construct's bytes are read as
121
- * ordinary content, which is what native already treats them as. */
116
+ /** Only kinds the policy table names take part: a construct with no policy has its bytes read as
117
+ * ordinary content, which is what the browser already treats them as. */
122
118
  function policyConstructs(inlines) {
123
119
  const found = [];
124
120
  for (const node of inlineDescendants(inlines)) {
@@ -128,7 +124,8 @@ function policyConstructs(inlines) {
128
124
  found.push({
129
125
  node,
130
126
  content: constructContentRange(node),
131
- autoUnwrapOnEmpty: policy.autoUnwrapOnEmpty
127
+ autoUnwrapOnEmpty: policy.autoUnwrapOnEmpty,
128
+ markable: policy.mark !== undefined
132
129
  });
133
130
  }
134
131
  return found;
@@ -141,24 +138,12 @@ function isDelimiterByte(constructs, at) {
141
138
  ((at >= node.start && at < content.start) || (at >= content.end && at < node.end)));
142
139
  }
143
140
  // ── Verification ─────────────────────────────────────────────────────────────
144
- /**
145
- * What a reader sees, asked of the thing that paints it, over the bytes read back the way `surface`
146
- * installs them — null where they do not read back at all. The content reading, not the block's
147
- * own: a cut that empties a construct folds its chrome into view, and the diff would read that
148
- * arrival as bytes lost; sound because the painting-chrome case returned at the door.
149
- */
150
- function visibleText(raw, surface) {
151
- // Cell text is never a block, so it reads as its inline content and nothing else can refuse it.
152
- if (surface === 'cell')
153
- return renderedText(parseInline(raw, 0, raw.length), raw, CONTENT_VISIBILITY);
154
- // A cut that empties the block is the one candidate with no block to read: emptied is a shape
155
- // the reload keeps, so it answers for itself rather than through the parser.
141
+ /** What the user sees of the bytes read back where they are stored, or null where they do not
142
+ * read back as one prose block: a cut can push two runs together into a fence opener. */
143
+ function visibleText(raw, { store }) {
144
+ // A cut that empties the block leaves no block to read, and empty shows nothing wherever it is.
156
145
  if (raw === '')
157
146
  return '';
158
- // A candidate that re-reads as another block is not what the caller is about to install: a cut
159
- // can abut two literal runs into a fence opener, which on reload swallows every block below.
160
- const sole = soleProseReparse(raw);
161
- if (sole === null)
162
- return null;
163
- return renderedText(sole.nodes, sole.block.raw, CONTENT_VISIBILITY);
147
+ const read = readBack(raw, store);
148
+ return read && shownOf(read, store);
164
149
  }
@@ -1,39 +1,34 @@
1
1
  /**
2
- * preview-inline's construct-reveal trigger: an inline construct's markers stay CSS-hidden until
3
- * the caret enters its INCLUSIVE `[start, end]`, revealing the whole enclosing chain. Reveal is a
4
- * class flip on `data-construct-*` spans, so the DOM text never changes and raw offsets survive it
5
- * (spec: the preview-inline-affinity e2e requirement).
2
+ * What shows an inline construct's markers in preview-inline mode: they stay hidden by CSS until
3
+ * the caret enters the construct's `[start, end]`, bounds included, and then the whole enclosing
4
+ * chain shows. Showing them only toggles a class on `data-construct-*` spans, so the DOM text
5
+ * never changes and raw offsets survive it (the preview-inline-affinity e2e requirement).
6
6
  */
7
7
  import type { InlineNode } from '../../../core/nodes';
8
8
  import type { NodeView } from '../../../core/node-views';
9
- import type { PresentationMode } from '../../../presentation-mode';
10
- import type { LinkReferenceResolverRef } from '../../../editor-keys';
9
+ import type { Reading } from '../../../schema/reading';
11
10
  /**
12
- * Every revealable construct whose inclusive `[start, end]` contains `offset`, outermost
13
- * first; at a boundary shared by adjacent siblings both are collected.
11
+ * Every construct that can show its markers whose `[start, end]` contains `offset`, bounds
12
+ * included, outermost first; at a boundary two siblings share, both are collected.
14
13
  */
15
14
  export declare function constructChainAtOffset(nodes: InlineNode[], offset: number): InlineNode[];
16
15
  export interface ConstructRevealDeps {
17
16
  get node(): NodeView;
18
- get linkRef(): LinkReferenceResolverRef | undefined;
17
+ get reading(): Reading;
19
18
  getEl: () => HTMLElement | null;
20
- getAmbientLength: () => number;
21
- getPresentationMode: () => PresentationMode;
22
- /** Cross-block selections freeze the reveal state, so a sweep anchored in revealed
23
- * marker text keeps its layout. */
19
+ /** A cross-block selection freezes what is shown, so a drag anchored in visible marker
20
+ * text keeps its layout. */
24
21
  isCrossBlock: () => boolean;
25
22
  }
26
23
  export interface ConstructReveal {
27
- /** Re-evaluate the caret chain and flip marker classes to match. `force` after a
28
- * rebuild: fresh spans carry no reveal class even on an unchanged chain key. */
24
+ /** Work out the caret's chain again and set the marker classes to match. Pass `force`
25
+ * after a rebuild: new spans carry no class even when the chain is unchanged. */
29
26
  update(force?: boolean): void;
30
- /** Synchronous keydown backstop, reveal-only: Chromium prioritizes input events over
31
- * normal tasks, so rapid arrows outrun the selectionchange reveal and would step
32
- * against still-folded markers. Reveals the caret's chain plus `delta`'s (0 = neither). */
27
+ /** Show (never hide) the caret's chain plus `delta`'s on keydown: fast arrow keys outrun the
28
+ * `selectionchange` update and would step against markers still hidden. */
33
29
  prepareStep(delta: -1 | 0 | 1): void;
34
- /** Keydown wiring for `prepareStep`. Owns the key vocabulary so the component stays
35
- * free of destructive-key literals, which G4.12 scans for as interceptor shape;
36
- * this module holds no preventDefault and consumes nothing. */
30
+ /** Keydown wiring for `prepareStep`, holding the key names so the component carries no
31
+ * destructive-key literals for the interceptor scan to flag (G4.12). Consumes no event. */
37
32
  prepareForKeydown(e: KeyboardEvent): void;
38
33
  }
39
34
  export declare function createConstructReveal(deps: ConstructRevealDeps): ConstructReveal;