@voithos-labs/aragonite 0.10.4 → 0.10.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1021) hide show
  1. package/README.md +2 -2
  2. package/dist/a11y-strings.d.ts +11 -5
  3. package/dist/a11y-strings.js +60 -5
  4. package/dist/action-contracts.d.ts +242 -155
  5. package/dist/action-contracts.js +2 -2
  6. package/dist/active-editor.d.ts +3 -3
  7. package/dist/active-editor.js +8 -9
  8. package/dist/ambient/ambient-dom.d.ts +2 -5
  9. package/dist/ambient/ambient-dom.js +16 -62
  10. package/dist/assert.js +6 -5
  11. package/dist/block-component.d.ts +135 -109
  12. package/dist/block-component.js +30 -22
  13. package/dist/block-id.d.ts +6 -10
  14. package/dist/block-id.js +25 -14
  15. package/dist/bounded-memo.d.ts +5 -5
  16. package/dist/bounded-memo.js +6 -6
  17. package/dist/components/BlockDragHandle.svelte +12 -21
  18. package/dist/components/BlockHost.svelte +56 -134
  19. package/dist/components/BlockList.svelte +22 -19
  20. package/dist/components/DecorationOverlay.svelte +9 -10
  21. package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
  22. package/dist/components/Editor.svelte +603 -1126
  23. package/dist/components/Editor.svelte.d.ts +9 -20
  24. package/dist/components/GapCaret.svelte +26 -59
  25. package/dist/components/SelectionOverlay.svelte +26 -51
  26. package/dist/components/SelectionOverlay.svelte.d.ts +5 -3
  27. package/dist/components/TailInsert.svelte +8 -55
  28. package/dist/components/TailInsert.svelte.d.ts +4 -6
  29. package/dist/components/block-content-selector.d.ts +11 -11
  30. package/dist/components/block-content-selector.js +11 -11
  31. package/dist/components/block-el-lookup.d.ts +6 -0
  32. package/dist/components/block-el-lookup.js +27 -0
  33. package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
  34. package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
  35. package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
  36. package/dist/components/blocks/code/CodeBlock.svelte +255 -276
  37. package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
  38. package/dist/components/blocks/code/CodeBlockRail.svelte +72 -87
  39. package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
  40. package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
  41. package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
  42. package/dist/components/blocks/code/code-bootstrap.js +29 -34
  43. package/dist/components/blocks/code/code-context-actions.js +5 -4
  44. package/dist/components/blocks/code/code-enter.js +2 -2
  45. package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
  46. package/dist/components/blocks/code/code-fence-boundary.js +40 -66
  47. package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
  48. package/dist/components/blocks/code/code-fence-exit.js +24 -25
  49. package/dist/components/blocks/code/code-indent.d.ts +2 -2
  50. package/dist/components/blocks/code/code-indent.js +4 -7
  51. package/dist/components/blocks/code/code-languages.d.ts +16 -12
  52. package/dist/components/blocks/code/code-languages.js +57 -39
  53. package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
  54. package/dist/components/blocks/code/code-paste-surface.js +9 -18
  55. package/dist/components/blocks/code/code-renderer.d.ts +21 -5
  56. package/dist/components/blocks/code/code-renderer.js +90 -125
  57. package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
  58. package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
  59. package/dist/components/blocks/directive/activate-directives.js +18 -13
  60. package/dist/components/blocks/editable-leaf.d.ts +50 -74
  61. package/dist/components/blocks/editable-leaf.js +141 -203
  62. package/dist/components/blocks/editable-surface.d.ts +96 -100
  63. package/dist/components/blocks/editable-surface.js +101 -109
  64. package/dist/components/blocks/list/ListBlock.svelte +45 -90
  65. package/dist/components/blocks/list/ListItemBlock.svelte +93 -147
  66. package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +1 -0
  67. package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
  68. package/dist/components/blocks/list/task-checkbox.js +12 -7
  69. package/dist/components/blocks/plain-text-backend.d.ts +4 -20
  70. package/dist/components/blocks/plain-text-backend.js +9 -43
  71. package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
  72. package/dist/components/blocks/surface-wiring.svelte.js +15 -34
  73. package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
  74. package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
  75. package/dist/components/blocks/table/TableBlock.svelte +100 -165
  76. package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
  77. package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
  78. package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
  79. package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
  80. package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
  81. package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
  82. package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
  83. package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
  84. package/dist/components/blocks/table/cell-pointer.js +49 -71
  85. package/dist/components/blocks/table/cell-render.d.ts +24 -29
  86. package/dist/components/blocks/table/cell-render.js +29 -31
  87. package/dist/components/blocks/table/selected-cells.d.ts +7 -7
  88. package/dist/components/blocks/table/selected-cells.js +9 -13
  89. package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
  90. package/dist/components/blocks/table/table-caret-at-point.js +5 -5
  91. package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
  92. package/dist/components/blocks/table/table-cell-paste.js +27 -43
  93. package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
  94. package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
  95. package/dist/components/blocks/table/table-menu-model.js +6 -10
  96. package/dist/components/blocks/table/table-navigation.js +2 -2
  97. package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
  98. package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
  99. package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
  100. package/dist/components/blocks/text/auto-pair-record.js +51 -0
  101. package/dist/components/blocks/text/click-snap-guard.d.ts +8 -6
  102. package/dist/components/blocks/text/click-snap-guard.js +10 -7
  103. package/dist/components/blocks/text/composition-seat.d.ts +17 -14
  104. package/dist/components/blocks/text/composition-seat.js +11 -11
  105. package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
  106. package/dist/components/blocks/text/construct-edge-delete.js +50 -65
  107. package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
  108. package/dist/components/blocks/text/construct-reveal.js +13 -14
  109. package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
  110. package/dist/components/blocks/text/delimiter-autopair.js +87 -103
  111. package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
  112. package/dist/components/blocks/text/edge-policy-dispatch.js +150 -181
  113. package/dist/components/blocks/text/edge-seat.d.ts +17 -26
  114. package/dist/components/blocks/text/edge-seat.js +43 -70
  115. package/dist/components/blocks/text/link-at-point.d.ts +9 -9
  116. package/dist/components/blocks/text/link-at-point.js +12 -15
  117. package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
  118. package/dist/components/blocks/text/live-join-seam.js +75 -112
  119. package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
  120. package/dist/components/blocks/text/live-selection-edit.js +32 -108
  121. package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
  122. package/dist/components/blocks/text/live-split-rebalance.js +50 -67
  123. package/dist/components/blocks/text/marker-completion.d.ts +7 -12
  124. package/dist/components/blocks/text/marker-completion.js +17 -10
  125. package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
  126. package/dist/components/blocks/text/pending-mark-insert.js +30 -49
  127. package/dist/components/blocks/text/screen-diff.d.ts +5 -15
  128. package/dist/components/blocks/text/screen-diff.js +5 -19
  129. package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
  130. package/dist/components/blocks/text/text-clipboard.js +27 -32
  131. package/dist/components/blocks/text/text-keydown.d.ts +20 -30
  132. package/dist/components/blocks/text/text-keydown.js +54 -51
  133. package/dist/components/blocks/text/text-render.d.ts +25 -35
  134. package/dist/components/blocks/text/text-render.js +82 -61
  135. package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
  136. package/dist/components/blocks/text/widget-adjacency.js +17 -17
  137. package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
  138. package/dist/components/blocks/text/widget-interaction.js +212 -199
  139. package/dist/components/blocks/widget-portal.d.ts +20 -29
  140. package/dist/components/blocks/widget-portal.js +16 -14
  141. package/dist/components/built-in-blocks.d.ts +3 -4
  142. package/dist/components/built-in-blocks.js +17 -18
  143. package/dist/components/drag-handle.d.ts +12 -35
  144. package/dist/components/drag-handle.js +22 -68
  145. package/dist/components/editor-built-ins.d.ts +1 -0
  146. package/dist/components/editor-built-ins.js +16 -0
  147. package/dist/components/editor-root-clipboard.d.ts +6 -6
  148. package/dist/components/editor-root-clipboard.js +16 -27
  149. package/dist/components/editor-root-document-swap.d.ts +49 -0
  150. package/dist/components/editor-root-document-swap.js +54 -0
  151. package/dist/components/editor-root-focus.d.ts +5 -4
  152. package/dist/components/editor-root-focus.js +51 -22
  153. package/dist/components/editor-root-focused-surface.d.ts +35 -0
  154. package/dist/components/editor-root-focused-surface.js +65 -0
  155. package/dist/components/editor-root-geometry.d.ts +15 -24
  156. package/dist/components/editor-root-geometry.js +27 -31
  157. package/dist/components/editor-root-gestures.d.ts +39 -0
  158. package/dist/components/editor-root-gestures.js +189 -0
  159. package/dist/components/editor-root-keydown.d.ts +10 -25
  160. package/dist/components/editor-root-keydown.js +19 -43
  161. package/dist/components/editor-root-listeners.d.ts +22 -24
  162. package/dist/components/editor-root-listeners.js +49 -24
  163. package/dist/components/editor-root-menus.d.ts +51 -0
  164. package/dist/components/editor-root-menus.js +147 -0
  165. package/dist/components/editor-root-mode-flip.d.ts +16 -11
  166. package/dist/components/editor-root-mode-flip.js +36 -34
  167. package/dist/components/editor-root-scroll-host.d.ts +22 -0
  168. package/dist/components/editor-root-scroll-host.js +34 -0
  169. package/dist/components/editor-root-test-surface.d.ts +48 -0
  170. package/dist/components/editor-root-test-surface.js +6 -0
  171. package/dist/components/image/ImageOverlayHost.svelte +44 -35
  172. package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
  173. package/dist/components/image/ImageProperties.svelte +37 -41
  174. package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
  175. package/dist/components/image/ImageResizeHandles.svelte +14 -26
  176. package/dist/components/image/image-crop.d.ts +5 -11
  177. package/dist/components/image/image-crop.js +5 -11
  178. package/dist/components/image/image-edit-commit.d.ts +19 -16
  179. package/dist/components/image/image-edit-commit.js +74 -38
  180. package/dist/components/image/image-resize.d.ts +2 -5
  181. package/dist/components/image/image-resize.js +3 -6
  182. package/dist/components/image/image-widget-editing.d.ts +3 -3
  183. package/dist/components/image/image-widget-editing.js +9 -9
  184. package/dist/components/image/widget-dom.d.ts +2 -3
  185. package/dist/components/image/widget-dom.js +19 -24
  186. package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
  187. package/dist/components/image/widget-selection-state.svelte.js +26 -19
  188. package/dist/components/kind-cue.svelte.d.ts +21 -0
  189. package/dist/components/kind-cue.svelte.js +35 -0
  190. package/dist/components/link-card/LinkCard.svelte +115 -64
  191. package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
  192. package/dist/components/link-card/LinkCardHost.svelte +42 -33
  193. package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
  194. package/dist/components/link-card/link-card-commit.d.ts +16 -19
  195. package/dist/components/link-card/link-card-commit.js +21 -30
  196. package/dist/components/link-card/link-card-entry.d.ts +13 -23
  197. package/dist/components/link-card/link-card-entry.js +16 -24
  198. package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
  199. package/dist/components/link-card/link-card-state.svelte.js +2 -2
  200. package/dist/components/lrd-map-gate.d.ts +4 -11
  201. package/dist/components/lrd-map-gate.js +5 -11
  202. package/dist/components/menu/BlockMenu.svelte +20 -81
  203. package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
  204. package/dist/components/menu/InlineMenuHost.svelte +191 -0
  205. package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
  206. package/dist/components/menu/MenuIcon.svelte +3 -103
  207. package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
  208. package/dist/components/menu/SelectionToolbar.svelte +30 -35
  209. package/dist/components/menu/SelectionToolbar.svelte.d.ts +3 -5
  210. package/dist/components/menu/clipboard-actions.d.ts +3 -4
  211. package/dist/components/menu/clipboard-actions.js +3 -4
  212. package/dist/components/menu/default-context-actions.d.ts +4 -13
  213. package/dist/components/menu/default-context-actions.js +49 -67
  214. package/dist/components/menu/flyout-placement.d.ts +2 -2
  215. package/dist/components/menu/flyout-placement.js +2 -2
  216. package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
  217. package/dist/components/menu/menu-presence.svelte.js +19 -0
  218. package/dist/components/paste-image-arm.d.ts +6 -11
  219. package/dist/components/paste-image-arm.js +11 -18
  220. package/dist/components/portal.d.ts +2 -5
  221. package/dist/components/portal.js +4 -7
  222. package/dist/core/directive/activate.d.ts +4 -5
  223. package/dist/core/directive/activate.js +8 -9
  224. package/dist/core/directive/container-opener.js +13 -12
  225. package/dist/core/directive/grammar.d.ts +2 -5
  226. package/dist/core/directive/grammar.js +10 -10
  227. package/dist/core/directive/kinds.d.ts +4 -7
  228. package/dist/core/directive/kinds.js +14 -16
  229. package/dist/core/directive/registry.d.ts +12 -9
  230. package/dist/core/directive/registry.js +19 -20
  231. package/dist/core/directive/text-recognizer.d.ts +3 -2
  232. package/dist/core/directive/text-recognizer.js +5 -9
  233. package/dist/core/escapable.d.ts +1 -5
  234. package/dist/core/escapable.js +1 -5
  235. package/dist/core/inline/backticks.d.ts +3 -4
  236. package/dist/core/inline/backticks.js +3 -4
  237. package/dist/core/inline/character-refs.js +2 -1
  238. package/dist/core/inline/destination-bytes.d.ts +6 -3
  239. package/dist/core/inline/destination-bytes.js +50 -8
  240. package/dist/core/inline/entity-widget.d.ts +4 -3
  241. package/dist/core/inline/entity-widget.js +6 -6
  242. package/dist/core/inline/format-toggle.d.ts +22 -28
  243. package/dist/core/inline/format-toggle.js +97 -129
  244. package/dist/core/inline/html-entities.d.ts +2 -3
  245. package/dist/core/inline/html-entities.js +2 -3
  246. package/dist/core/inline/html-tag-grammar.js +6 -2
  247. package/dist/core/inline/image-dimensions.d.ts +2 -0
  248. package/dist/core/inline/image-dimensions.js +19 -2
  249. package/dist/core/inline/image-source-bytes.d.ts +11 -0
  250. package/dist/core/inline/image-source-bytes.js +71 -0
  251. package/dist/core/inline/index.d.ts +28 -21
  252. package/dist/core/inline/index.js +56 -34
  253. package/dist/core/inline/inline-cache.d.ts +12 -15
  254. package/dist/core/inline/inline-cache.js +11 -14
  255. package/dist/core/inline/inline-widgets.d.ts +54 -75
  256. package/dist/core/inline/inline-widgets.js +54 -62
  257. package/dist/core/inline/link-destination.d.ts +31 -0
  258. package/dist/core/inline/link-destination.js +129 -0
  259. package/dist/core/inline/link-reference-resolver.d.ts +8 -6
  260. package/dist/core/inline/link-reference-resolver.js +10 -6
  261. package/dist/core/inline/link-source-bytes.d.ts +31 -0
  262. package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
  263. package/dist/core/inline/live-edit/read-back.d.ts +29 -0
  264. package/dist/core/inline/live-edit/read-back.js +50 -0
  265. package/dist/core/inline/picture.d.ts +10 -0
  266. package/dist/core/inline/picture.js +40 -0
  267. package/dist/core/inline/scan/autolinks.d.ts +7 -8
  268. package/dist/core/inline/scan/autolinks.js +80 -59
  269. package/dist/core/inline/scan/brackets.d.ts +2 -2
  270. package/dist/core/inline/scan/brackets.js +6 -103
  271. package/dist/core/inline/scan/code-spans.d.ts +4 -0
  272. package/dist/core/inline/scan/code-spans.js +8 -0
  273. package/dist/core/inline/scan/emphasis.js +10 -14
  274. package/dist/core/inline/scan/index.d.ts +3 -1
  275. package/dist/core/inline/scan/index.js +32 -33
  276. package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
  277. package/dist/core/inline/scan/plugin-syntax.js +75 -89
  278. package/dist/core/inline/scan/scan-state.d.ts +2 -0
  279. package/dist/core/inline/scan/scan-state.js +1 -0
  280. package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
  281. package/dist/core/inline/scan/simple-nodes.js +2 -5
  282. package/dist/core/inline/scan/triggers.d.ts +17 -0
  283. package/dist/core/inline/scan/triggers.js +26 -0
  284. package/dist/core/inline/scan/url.js +8 -10
  285. package/dist/core/inline/transparency.d.ts +2 -1
  286. package/dist/core/inline/transparency.js +31 -15
  287. package/dist/core/inline/visibility.d.ts +30 -49
  288. package/dist/core/inline/visibility.js +31 -49
  289. package/dist/core/inline/walk.d.ts +4 -10
  290. package/dist/core/inline/walk.js +4 -10
  291. package/dist/core/inline-render.d.ts +22 -27
  292. package/dist/core/inline-render.js +51 -60
  293. package/dist/core/lines.d.ts +67 -26
  294. package/dist/core/lines.js +164 -33
  295. package/dist/core/metadata-parity.d.ts +9 -0
  296. package/dist/core/metadata-parity.js +25 -0
  297. package/dist/core/node-views.d.ts +7 -6
  298. package/dist/core/node-views.js +5 -5
  299. package/dist/core/nodes.d.ts +34 -44
  300. package/dist/core/nodes.js +4 -12
  301. package/dist/core/parser.d.ts +27 -34
  302. package/dist/core/parser.js +53 -67
  303. package/dist/core/parsers/blockquote.d.ts +5 -8
  304. package/dist/core/parsers/blockquote.js +11 -10
  305. package/dist/core/parsers/built-in-openers.d.ts +2 -5
  306. package/dist/core/parsers/built-in-openers.js +5 -8
  307. package/dist/core/parsers/fence-syntax.d.ts +36 -7
  308. package/dist/core/parsers/fence-syntax.js +61 -11
  309. package/dist/core/parsers/fenced-code.d.ts +16 -0
  310. package/dist/core/parsers/fenced-code.js +16 -15
  311. package/dist/core/parsers/heading.d.ts +19 -2
  312. package/dist/core/parsers/heading.js +50 -2
  313. package/dist/core/parsers/html-block.d.ts +3 -6
  314. package/dist/core/parsers/html-block.js +10 -11
  315. package/dist/core/parsers/indented-code.d.ts +1 -1
  316. package/dist/core/parsers/indented-code.js +2 -8
  317. package/dist/core/parsers/link-reference.d.ts +5 -3
  318. package/dist/core/parsers/link-reference.js +116 -120
  319. package/dist/core/parsers/list.d.ts +12 -5
  320. package/dist/core/parsers/list.js +53 -36
  321. package/dist/core/parsers/paragraph.d.ts +3 -3
  322. package/dist/core/parsers/paragraph.js +14 -5
  323. package/dist/core/parsers/table-completion.d.ts +2 -5
  324. package/dist/core/parsers/table-completion.js +7 -10
  325. package/dist/core/parsers/table.d.ts +8 -8
  326. package/dist/core/parsers/table.js +23 -26
  327. package/dist/core/parsers/thematic-break.js +15 -14
  328. package/dist/core/paths.d.ts +13 -0
  329. package/dist/core/paths.js +31 -0
  330. package/dist/core/terminator-escalation.d.ts +0 -7
  331. package/dist/core/terminator-escalation.js +5 -8
  332. package/dist/core/url-policy.d.ts +2 -5
  333. package/dist/core/url-policy.js +8 -12
  334. package/dist/cursor/caret-memory.d.ts +34 -0
  335. package/dist/cursor/caret-memory.js +82 -0
  336. package/dist/cursor/coordinate-spaces.d.ts +26 -19
  337. package/dist/cursor/coordinate-spaces.js +32 -20
  338. package/dist/cursor/dom-walk.d.ts +7 -13
  339. package/dist/cursor/dom-walk.js +7 -13
  340. package/dist/cursor/edge-affinity.d.ts +7 -35
  341. package/dist/cursor/edge-affinity.js +13 -44
  342. package/dist/cursor/focused-caret.d.ts +6 -8
  343. package/dist/cursor/focused-caret.js +7 -16
  344. package/dist/cursor/height-model.d.ts +3 -3
  345. package/dist/cursor/height-model.js +5 -5
  346. package/dist/cursor/height-oracle.d.ts +10 -6
  347. package/dist/cursor/height-oracle.js +26 -74
  348. package/dist/cursor/observe-resize.d.ts +13 -0
  349. package/dist/cursor/observe-resize.js +43 -0
  350. package/dist/cursor/overlay-rects.d.ts +2 -5
  351. package/dist/cursor/overlay-rects.js +2 -5
  352. package/dist/cursor/overlay-remeasure.d.ts +6 -7
  353. package/dist/cursor/overlay-remeasure.js +10 -14
  354. package/dist/cursor/pending-marks.d.ts +7 -9
  355. package/dist/cursor/pending-marks.js +6 -27
  356. package/dist/cursor/point-offset.d.ts +16 -10
  357. package/dist/cursor/point-offset.js +60 -25
  358. package/dist/cursor/reveal-source.d.ts +7 -11
  359. package/dist/cursor/reveal-source.js +10 -18
  360. package/dist/cursor/scroll-ancestors.d.ts +9 -20
  361. package/dist/cursor/scroll-ancestors.js +14 -26
  362. package/dist/cursor/scroll-owner.d.ts +92 -0
  363. package/dist/cursor/scroll-owner.js +283 -0
  364. package/dist/cursor/scrollport.d.ts +14 -15
  365. package/dist/cursor/scrollport.js +7 -13
  366. package/dist/cursor/sticky-column.d.ts +6 -29
  367. package/dist/cursor/sticky-column.js +6 -49
  368. package/dist/cursor/sticky-measure.d.ts +14 -9
  369. package/dist/cursor/sticky-measure.js +99 -49
  370. package/dist/cursor/surface-backend.d.ts +41 -0
  371. package/dist/cursor/surface-backend.js +78 -0
  372. package/dist/cursor/typography-estimates.d.ts +3 -3
  373. package/dist/cursor/typography-estimates.js +3 -3
  374. package/dist/cursor/visual-lines.d.ts +25 -14
  375. package/dist/cursor/visual-lines.js +45 -46
  376. package/dist/cursor/widget-edge-snap.d.ts +10 -15
  377. package/dist/cursor/widget-edge-snap.js +13 -12
  378. package/dist/cursor/widget-offset.d.ts +110 -104
  379. package/dist/cursor/widget-offset.js +344 -179
  380. package/dist/debug/diagnostics-report.d.ts +6 -6
  381. package/dist/debug/diagnostics-report.js +5 -5
  382. package/dist/debug/dump-tree.js +2 -2
  383. package/dist/debug/editor-diagnostics.d.ts +15 -0
  384. package/dist/debug/editor-diagnostics.js +33 -0
  385. package/dist/debug/inspect.d.ts +2 -2
  386. package/dist/debug/inspect.js +4 -4
  387. package/dist/debug/interaction-trace.d.ts +14 -15
  388. package/dist/debug/interaction-trace.js +19 -20
  389. package/dist/debug/operations-log.d.ts +1 -1
  390. package/dist/debug/operations-log.js +1 -1
  391. package/dist/decorations/buckets.d.ts +6 -12
  392. package/dist/decorations/buckets.js +4 -11
  393. package/dist/decorations/decoration-state.svelte.d.ts +2 -3
  394. package/dist/decorations/decoration-state.svelte.js +24 -26
  395. package/dist/decorations/island-dom.d.ts +10 -18
  396. package/dist/decorations/island-dom.js +25 -50
  397. package/dist/decorations/reserved-attrs.d.ts +6 -8
  398. package/dist/decorations/reserved-attrs.js +30 -17
  399. package/dist/decorations/types.d.ts +6 -7
  400. package/dist/decorations/types.js +2 -1
  401. package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
  402. package/dist/decorations/use-block-decorations.svelte.js +71 -0
  403. package/dist/decorations/widget-dom.d.ts +3 -3
  404. package/dist/decorations/widget-dom.js +5 -5
  405. package/dist/dev-warn.d.ts +5 -2
  406. package/dist/dev-warn.js +16 -4
  407. package/dist/editor-actions/ancestry-folds.d.ts +9 -14
  408. package/dist/editor-actions/ancestry-folds.js +13 -18
  409. package/dist/editor-actions/block-edit-core.d.ts +49 -22
  410. package/dist/editor-actions/block-edit-core.js +279 -151
  411. package/dist/editor-actions/block-edit-scope.d.ts +63 -50
  412. package/dist/editor-actions/block-edit-scope.js +100 -48
  413. package/dist/editor-actions/block-edit.d.ts +2 -3
  414. package/dist/editor-actions/block-edit.js +14 -90
  415. package/dist/editor-actions/commit/history.d.ts +4 -4
  416. package/dist/editor-actions/commit/history.js +33 -34
  417. package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
  418. package/dist/editor-actions/commit/reading-write-gate.js +56 -0
  419. package/dist/editor-actions/commit/text-batch.d.ts +7 -11
  420. package/dist/editor-actions/commit/text-batch.js +6 -7
  421. package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
  422. package/dist/editor-actions/commit/undo-controller.js +346 -216
  423. package/dist/editor-actions/container-block-component.d.ts +32 -51
  424. package/dist/editor-actions/container-block-component.js +66 -92
  425. package/dist/editor-actions/container-edit.d.ts +4 -2
  426. package/dist/editor-actions/container-edit.js +14 -44
  427. package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
  428. package/dist/editor-actions/container-exit-overrides.js +19 -21
  429. package/dist/editor-actions/deps.d.ts +25 -32
  430. package/dist/editor-actions/enter-completion.d.ts +12 -15
  431. package/dist/editor-actions/enter-completion.js +49 -51
  432. package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
  433. package/dist/editor-actions/focus/focus-dispatch.js +28 -50
  434. package/dist/editor-actions/focus/focus-landing.d.ts +8 -11
  435. package/dist/editor-actions/focus/focus-landing.js +15 -14
  436. package/dist/editor-actions/focus/focus.d.ts +3 -2
  437. package/dist/editor-actions/focus/focus.js +42 -59
  438. package/dist/editor-actions/index.d.ts +4 -3
  439. package/dist/editor-actions/index.js +5 -4
  440. package/dist/editor-actions/inline-range-commit.d.ts +18 -16
  441. package/dist/editor-actions/inline-range-commit.js +45 -54
  442. package/dist/editor-actions/leaf-write.d.ts +11 -0
  443. package/dist/editor-actions/leaf-write.js +102 -0
  444. package/dist/editor-actions/list-context.d.ts +9 -10
  445. package/dist/editor-actions/list-context.js +115 -110
  446. package/dist/editor-actions/list-overrides.d.ts +13 -5
  447. package/dist/editor-actions/list-overrides.js +36 -12
  448. package/dist/editor-actions/merge-fallback.d.ts +10 -16
  449. package/dist/editor-actions/merge-fallback.js +11 -22
  450. package/dist/editor-actions/nested/container-actions.d.ts +37 -0
  451. package/dist/editor-actions/nested/container-actions.js +42 -0
  452. package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
  453. package/dist/editor-actions/nested/emptied-container.js +5 -0
  454. package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
  455. package/dist/editor-actions/nested/nested-actions.js +17 -15
  456. package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
  457. package/dist/editor-actions/nested/nested-block-edit.js +40 -134
  458. package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
  459. package/dist/editor-actions/nested/nested-focus.js +33 -21
  460. package/dist/editor-actions/paste-coordinator.d.ts +3 -2
  461. package/dist/editor-actions/paste-coordinator.js +17 -13
  462. package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
  463. package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
  464. package/dist/editor-actions/plugin/container.d.ts +54 -82
  465. package/dist/editor-actions/plugin/container.js +105 -188
  466. package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
  467. package/dist/editor-actions/plugin/directive-container.js +7 -8
  468. package/dist/editor-actions/reorder-action.d.ts +7 -12
  469. package/dist/editor-actions/reorder-action.js +32 -48
  470. package/dist/editor-actions/reorder-drag.d.ts +12 -8
  471. package/dist/editor-actions/reorder-drag.js +45 -41
  472. package/dist/editor-actions/replacement-focus.d.ts +13 -21
  473. package/dist/editor-actions/replacement-focus.js +32 -33
  474. package/dist/editor-actions/search-replace.js +71 -67
  475. package/dist/editor-actions/stored-caret.d.ts +7 -0
  476. package/dist/editor-actions/stored-caret.js +10 -0
  477. package/dist/editor-actions/table-context.d.ts +9 -11
  478. package/dist/editor-actions/table-context.js +70 -93
  479. package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
  480. package/dist/editor-actions/unwrap-strategies.js +52 -63
  481. package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
  482. package/dist/editor-actions/whole-block-focus-surface.js +43 -53
  483. package/dist/editor-events.d.ts +25 -29
  484. package/dist/editor-events.js +17 -28
  485. package/dist/editor-keys.d.ts +96 -104
  486. package/dist/editor-keys.js +11 -24
  487. package/dist/editor-props.d.ts +88 -71
  488. package/dist/editor-rects.d.ts +23 -34
  489. package/dist/editor-rects.js +9 -77
  490. package/dist/env.d.ts +6 -4
  491. package/dist/env.js +8 -4
  492. package/dist/index.d.ts +6 -2
  493. package/dist/index.js +5 -2
  494. package/dist/inline-menu/inline-menu-session.d.ts +37 -0
  495. package/dist/inline-menu/inline-menu-session.js +98 -0
  496. package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
  497. package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
  498. package/dist/inline-menu/types.d.ts +77 -0
  499. package/dist/inline-menu/types.js +7 -0
  500. package/dist/invariants/child-id-parity.d.ts +23 -0
  501. package/dist/invariants/child-id-parity.js +39 -0
  502. package/dist/invariants/commit-paths.d.ts +4 -4
  503. package/dist/invariants/commit-paths.js +4 -4
  504. package/dist/invariants/commit-scope.d.ts +4 -4
  505. package/dist/invariants/commit-scope.js +9 -8
  506. package/dist/invariants/context-keys.d.ts +2 -5
  507. package/dist/invariants/context-keys.js +3 -6
  508. package/dist/invariants/descriptor.d.ts +2 -6
  509. package/dist/invariants/descriptor.js +2 -6
  510. package/dist/invariants/inline-transitions.d.ts +9 -16
  511. package/dist/invariants/inline-transitions.js +10 -18
  512. package/dist/invariants/install.d.ts +18 -27
  513. package/dist/invariants/install.js +29 -30
  514. package/dist/invariants/keeps-a-block.d.ts +7 -0
  515. package/dist/invariants/keeps-a-block.js +14 -0
  516. package/dist/invariants/landable-caret.d.ts +5 -7
  517. package/dist/invariants/landable-caret.js +8 -11
  518. package/dist/invariants/landing-focus-scroll.d.ts +7 -0
  519. package/dist/invariants/landing-focus-scroll.js +13 -0
  520. package/dist/invariants/landing-value.d.ts +13 -0
  521. package/dist/invariants/landing-value.js +27 -0
  522. package/dist/invariants/marker-css-parity.d.ts +5 -6
  523. package/dist/invariants/marker-css-parity.js +11 -12
  524. package/dist/invariants/measures-in-own-list.d.ts +6 -0
  525. package/dist/invariants/measures-in-own-list.js +13 -0
  526. package/dist/invariants/node-shape.d.ts +18 -37
  527. package/dist/invariants/node-shape.js +123 -79
  528. package/dist/invariants/open-tail.d.ts +7 -0
  529. package/dist/invariants/open-tail.js +45 -0
  530. package/dist/invariants/placement-ends-widget.d.ts +8 -0
  531. package/dist/invariants/placement-ends-widget.js +13 -0
  532. package/dist/invariants/registry.d.ts +27 -66
  533. package/dist/invariants/registry.js +61 -137
  534. package/dist/invariants/render-fidelity.d.ts +4 -4
  535. package/dist/invariants/render-fidelity.js +5 -5
  536. package/dist/invariants/selection-endpoints.d.ts +6 -7
  537. package/dist/invariants/selection-endpoints.js +18 -16
  538. package/dist/invariants/single-node-sink.d.ts +4 -5
  539. package/dist/invariants/single-node-sink.js +4 -5
  540. package/dist/invariants/snapshot-integrity.d.ts +5 -6
  541. package/dist/invariants/snapshot-integrity.js +1 -1
  542. package/dist/invariants/structural-descriptor.d.ts +6 -15
  543. package/dist/invariants/structural-descriptor.js +6 -15
  544. package/dist/menu-icons.d.ts +47 -0
  545. package/dist/menu-icons.js +113 -0
  546. package/dist/perf/instruments.d.ts +20 -5
  547. package/dist/perf/instruments.js +35 -15
  548. package/dist/perf/use-mount-gauge.svelte.js +4 -4
  549. package/dist/plugin.d.ts +37 -8
  550. package/dist/plugin.js +100 -77
  551. package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
  552. package/dist/plugins/admonitions/admonition-kind.js +12 -10
  553. package/dist/plugins/admonitions/convert-document.d.ts +5 -5
  554. package/dist/plugins/admonitions/convert-document.js +8 -7
  555. package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
  556. package/dist/plugins/admonitions/gh-alert.js +21 -22
  557. package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
  558. package/dist/plugins/admonitions/github-alert-kind.js +28 -37
  559. package/dist/plugins/admonitions/index.js +2 -2
  560. package/dist/plugins/admonitions/kinds.d.ts +1 -1
  561. package/dist/plugins/admonitions/register.js +11 -2
  562. package/dist/plugins/details/DetailsBlock.svelte +20 -20
  563. package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
  564. package/dist/plugins/details/details-disclosure.svelte.js +6 -7
  565. package/dist/plugins/details/details-kind.d.ts +6 -7
  566. package/dist/plugins/details/details-kind.js +44 -59
  567. package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
  568. package/dist/plugins/emoji/emoji-recognizer.js +7 -14
  569. package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
  570. package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
  571. package/dist/plugins/footnotes/constants.d.ts +2 -0
  572. package/dist/plugins/footnotes/constants.js +3 -0
  573. package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
  574. package/dist/plugins/footnotes/footnote-definition.js +69 -45
  575. package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
  576. package/dist/plugins/footnotes/footnote-lookup.js +14 -26
  577. package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
  578. package/dist/plugins/footnotes/footnote-numbering.js +22 -31
  579. package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
  580. package/dist/plugins/footnotes/footnote-reference.js +8 -13
  581. package/dist/plugins/footnotes/index.js +2 -3
  582. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
  583. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
  584. package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
  585. package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
  586. package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
  587. package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
  588. package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
  589. package/dist/plugins/highlight-occurrences/word-char.js +4 -0
  590. package/dist/plugins/latex/BlockMath.svelte +58 -75
  591. package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
  592. package/dist/plugins/latex/MathInline.svelte +10 -9
  593. package/dist/plugins/latex/flanking.d.ts +1 -0
  594. package/dist/plugins/latex/flanking.js +3 -0
  595. package/dist/plugins/latex/index.d.ts +1 -1
  596. package/dist/plugins/latex/latex-kind.d.ts +4 -4
  597. package/dist/plugins/latex/latex-kind.js +78 -67
  598. package/dist/plugins/latex/math-completion.d.ts +1 -1
  599. package/dist/plugins/latex/math-completion.js +5 -8
  600. package/dist/plugins/latex/math-layout.d.ts +2 -8
  601. package/dist/plugins/latex/math-layout.js +0 -9
  602. package/dist/plugins/latex/math-renderer.d.ts +17 -20
  603. package/dist/plugins/latex/math-renderer.js +21 -38
  604. package/dist/plugins/latex/math-source.d.ts +4 -8
  605. package/dist/plugins/latex/math-source.js +36 -81
  606. package/dist/plugins/latex/register.d.ts +10 -11
  607. package/dist/plugins/latex/register.js +24 -10
  608. package/dist/plugins/latex/renderer.d.ts +9 -10
  609. package/dist/plugins/latex/renderer.js +9 -24
  610. package/dist/plugins/mermaid/MermaidBlock.svelte +51 -45
  611. package/dist/plugins/mermaid/index.js +1 -1
  612. package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
  613. package/dist/plugins/mermaid/mermaid-kind.js +30 -47
  614. package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
  615. package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
  616. package/dist/plugins/mermaid/register.d.ts +3 -3
  617. package/dist/plugins/mermaid/register.js +5 -5
  618. package/dist/plugins/mermaid/renderer.d.ts +5 -5
  619. package/dist/plugins/mermaid/renderer.js +8 -11
  620. package/dist/plugins/parrot/ParrotBlock.svelte +15 -6
  621. package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
  622. package/dist/plugins/parrot/parrot-plugin.js +3 -3
  623. package/dist/plugins/slash-commands/filter.d.ts +23 -0
  624. package/dist/plugins/slash-commands/filter.js +31 -0
  625. package/dist/plugins/slash-commands/index.d.ts +2 -0
  626. package/dist/plugins/slash-commands/index.js +2 -0
  627. package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
  628. package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
  629. package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
  630. package/dist/plugins/slash-commands/slash-source.js +108 -0
  631. package/dist/plugins/toc/TocBlock.svelte +23 -22
  632. package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
  633. package/dist/plugins/toc/heading-outline.d.ts +7 -12
  634. package/dist/plugins/toc/heading-outline.js +22 -36
  635. package/dist/plugins/toc/navigation-queue.d.ts +2 -4
  636. package/dist/plugins/toc/toc-plugin.d.ts +5 -5
  637. package/dist/plugins/toc/toc-plugin.js +20 -13
  638. package/dist/presentation-mode.d.ts +15 -23
  639. package/dist/presentation-mode.js +19 -25
  640. package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
  641. package/dist/reactivity/block-list-state.svelte.js +8 -9
  642. package/dist/reactivity/block-window.svelte.d.ts +12 -6
  643. package/dist/reactivity/block-window.svelte.js +44 -17
  644. package/dist/reactivity/child-list.d.ts +34 -0
  645. package/dist/reactivity/child-list.js +48 -0
  646. package/dist/reactivity/content-version.svelte.d.ts +4 -7
  647. package/dist/reactivity/content-version.svelte.js +3 -5
  648. package/dist/reactivity/hold-across.d.ts +39 -0
  649. package/dist/reactivity/hold-across.js +57 -0
  650. package/dist/reactivity/layout-state.svelte.d.ts +27 -0
  651. package/dist/reactivity/layout-state.svelte.js +51 -0
  652. package/dist/reactivity/list-tree.d.ts +39 -0
  653. package/dist/reactivity/list-tree.js +132 -0
  654. package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
  655. package/dist/reactivity/list-windowing.svelte.js +141 -310
  656. package/dist/reactivity/measure-batch.d.ts +6 -8
  657. package/dist/reactivity/measure-batch.js +5 -6
  658. package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
  659. package/dist/reactivity/publish-ref.svelte.js +21 -85
  660. package/dist/reactivity/scope-geometry.d.ts +6 -13
  661. package/dist/reactivity/scope-geometry.js +7 -14
  662. package/dist/reactivity/state-registry.d.ts +5 -5
  663. package/dist/reactivity/state-registry.js +11 -15
  664. package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
  665. package/dist/reactivity/use-container-windowing.svelte.js +64 -74
  666. package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
  667. package/dist/reactivity/use-measured-child.svelte.js +41 -0
  668. package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
  669. package/dist/reactivity/use-window-floor.svelte.js +27 -0
  670. package/dist/reactivity/window-slice.d.ts +4 -4
  671. package/dist/reactivity/window-slice.js +0 -2
  672. package/dist/renderer-slot.d.ts +48 -0
  673. package/dist/renderer-slot.js +85 -0
  674. package/dist/scan-index.d.ts +4 -4
  675. package/dist/scan-index.js +4 -4
  676. package/dist/schema/block-commands.d.ts +69 -54
  677. package/dist/schema/block-commands.js +91 -104
  678. package/dist/schema/block-completions.d.ts +16 -19
  679. package/dist/schema/block-completions.js +25 -32
  680. package/dist/schema/block-component-registry.d.ts +13 -14
  681. package/dist/schema/block-component-registry.js +19 -17
  682. package/dist/schema/block-kind-descriptor.d.ts +234 -168
  683. package/dist/schema/block-kind-descriptor.js +151 -66
  684. package/dist/schema/block-openers.d.ts +48 -39
  685. package/dist/schema/block-openers.js +73 -83
  686. package/dist/schema/built-in-descriptors.d.ts +3 -5
  687. package/dist/schema/built-in-descriptors.js +96 -80
  688. package/dist/schema/child-spans.d.ts +12 -10
  689. package/dist/schema/child-spans.js +68 -34
  690. package/dist/schema/closure.d.ts +18 -16
  691. package/dist/schema/closure.js +24 -14
  692. package/dist/schema/command-id.d.ts +6 -8
  693. package/dist/schema/command-id.js +20 -25
  694. package/dist/schema/commands.d.ts +78 -84
  695. package/dist/schema/commands.js +152 -117
  696. package/dist/schema/container-raw.d.ts +51 -11
  697. package/dist/schema/container-raw.js +143 -14
  698. package/dist/schema/container-rebuilders.d.ts +17 -15
  699. package/dist/schema/container-rebuilders.js +30 -22
  700. package/dist/schema/context-actions.d.ts +25 -13
  701. package/dist/schema/context-actions.js +32 -17
  702. package/dist/schema/define-plugin-block.d.ts +8 -6
  703. package/dist/schema/define-plugin-block.js +6 -4
  704. package/dist/schema/fenced-code-raw.d.ts +30 -17
  705. package/dist/schema/fenced-code-raw.js +155 -107
  706. package/dist/schema/global-commands.d.ts +6 -6
  707. package/dist/schema/global-commands.js +14 -22
  708. package/dist/schema/height-estimates.d.ts +31 -0
  709. package/dist/schema/height-estimates.js +64 -0
  710. package/dist/schema/inline-construct-policy.d.ts +42 -55
  711. package/dist/schema/inline-construct-policy.js +36 -35
  712. package/dist/schema/insert-catalogue.d.ts +30 -0
  713. package/dist/schema/insert-catalogue.js +95 -0
  714. package/dist/schema/keybinding-overrides.d.ts +9 -11
  715. package/dist/schema/keybinding-overrides.js +1 -1
  716. package/dist/schema/keybindings.d.ts +15 -7
  717. package/dist/schema/keybindings.js +21 -9
  718. package/dist/schema/merge-rules.d.ts +5 -7
  719. package/dist/schema/merge-rules.js +7 -9
  720. package/dist/schema/opener-priorities.d.ts +4 -4
  721. package/dist/schema/opener-priorities.js +4 -4
  722. package/dist/schema/operations.d.ts +8 -10
  723. package/dist/schema/operations.js +3 -3
  724. package/dist/schema/page-role.d.ts +14 -0
  725. package/dist/schema/page-role.js +19 -0
  726. package/dist/schema/plugin-activation.d.ts +4 -6
  727. package/dist/schema/plugin-activation.js +12 -10
  728. package/dist/schema/plugin-editor-context.d.ts +25 -10
  729. package/dist/schema/plugin-editor-context.js +40 -9
  730. package/dist/schema/plugin-install.d.ts +49 -17
  731. package/dist/schema/plugin-install.js +51 -25
  732. package/dist/schema/plugin-kind.d.ts +12 -8
  733. package/dist/schema/plugin-kind.js +35 -42
  734. package/dist/schema/plugin-name.js +3 -3
  735. package/dist/schema/plugin-registry.d.ts +54 -0
  736. package/dist/schema/plugin-registry.js +70 -0
  737. package/dist/schema/reading.d.ts +23 -0
  738. package/dist/schema/reading.js +7 -0
  739. package/dist/schema/register-once.d.ts +3 -5
  740. package/dist/schema/register-once.js +7 -16
  741. package/dist/schema/registration-checks.d.ts +12 -16
  742. package/dist/schema/registration-checks.js +35 -51
  743. package/dist/schema/registration-pairs.d.ts +54 -0
  744. package/dist/schema/registration-pairs.js +48 -0
  745. package/dist/schema/registration-pending.d.ts +8 -12
  746. package/dist/schema/registration-pending.js +9 -9
  747. package/dist/schema/registry-reset.d.ts +8 -4
  748. package/dist/schema/registry-reset.js +13 -26
  749. package/dist/schema/registry-view.d.ts +25 -13
  750. package/dist/schema/registry-view.js +26 -20
  751. package/dist/schema/reserved-chords.d.ts +9 -10
  752. package/dist/schema/reserved-chords.js +63 -80
  753. package/dist/schema/reserved-chrome.d.ts +12 -11
  754. package/dist/schema/reserved-chrome.js +15 -11
  755. package/dist/schema/setext-raw.d.ts +13 -0
  756. package/dist/schema/setext-raw.js +33 -0
  757. package/dist/schema/stored-as.d.ts +20 -0
  758. package/dist/schema/stored-as.js +6 -0
  759. package/dist/schema/table-cell-raw.d.ts +18 -7
  760. package/dist/schema/table-cell-raw.js +28 -7
  761. package/dist/schema/whole-block-unit.d.ts +5 -4
  762. package/dist/schema/whole-block-unit.js +5 -4
  763. package/dist/search/document-scan.d.ts +3 -3
  764. package/dist/search/document-scan.js +2 -2
  765. package/dist/search/matcher.d.ts +1 -1
  766. package/dist/search/regex-executor.d.ts +5 -6
  767. package/dist/search/regex-executor.js +6 -8
  768. package/dist/search/replace.d.ts +2 -5
  769. package/dist/search/replace.js +2 -5
  770. package/dist/search/search-state.svelte.d.ts +5 -5
  771. package/dist/search/search-state.svelte.js +12 -16
  772. package/dist/selection/autoscroll.d.ts +6 -9
  773. package/dist/selection/block-hit-test.d.ts +16 -24
  774. package/dist/selection/block-hit-test.js +29 -22
  775. package/dist/selection/caret-doors.d.ts +15 -14
  776. package/dist/selection/caret-doors.js +37 -26
  777. package/dist/selection/caret-landing.d.ts +62 -0
  778. package/dist/selection/caret-landing.js +157 -0
  779. package/dist/selection/caret-restore.d.ts +17 -10
  780. package/dist/selection/caret-restore.js +10 -22
  781. package/dist/selection/caret-target.d.ts +30 -0
  782. package/dist/selection/caret-target.js +84 -0
  783. package/dist/selection/char-endpoint-snap.d.ts +6 -10
  784. package/dist/selection/char-endpoint-snap.js +8 -14
  785. package/dist/selection/clipboard-text.d.ts +5 -12
  786. package/dist/selection/clipboard-text.js +69 -172
  787. package/dist/selection/covered-block.d.ts +6 -8
  788. package/dist/selection/covered-block.js +8 -19
  789. package/dist/selection/cross-block/clipboard.d.ts +3 -2
  790. package/dist/selection/cross-block/clipboard.js +13 -4
  791. package/dist/selection/cross-block/dispatch.d.ts +47 -43
  792. package/dist/selection/cross-block/dispatch.js +12 -23
  793. package/dist/selection/cross-block/format-range.d.ts +18 -21
  794. package/dist/selection/cross-block/format-range.js +104 -103
  795. package/dist/selection/cross-block/format-toggle.d.ts +10 -15
  796. package/dist/selection/cross-block/format-toggle.js +28 -33
  797. package/dist/selection/cross-block/keydown.d.ts +4 -4
  798. package/dist/selection/cross-block/keydown.js +92 -125
  799. package/dist/selection/cross-block/ops.d.ts +19 -34
  800. package/dist/selection/cross-block/ops.js +110 -95
  801. package/dist/selection/cross-block/paste.d.ts +2 -3
  802. package/dist/selection/cross-block/paste.js +59 -96
  803. package/dist/selection/cross-block/pointer.d.ts +17 -15
  804. package/dist/selection/cross-block/pointer.js +74 -25
  805. package/dist/selection/cross-block/type-replace.d.ts +4 -6
  806. package/dist/selection/cross-block/type-replace.js +51 -134
  807. package/dist/selection/dead-space-caret.d.ts +19 -30
  808. package/dist/selection/dead-space-caret.js +70 -88
  809. package/dist/selection/drag-pointer.d.ts +7 -9
  810. package/dist/selection/drag-pointer.js +23 -33
  811. package/dist/selection/gap-caret.d.ts +17 -28
  812. package/dist/selection/gap-caret.js +14 -26
  813. package/dist/selection/grid-selection.d.ts +12 -0
  814. package/dist/selection/grid-selection.js +22 -0
  815. package/dist/selection/keyboard-extend.d.ts +27 -40
  816. package/dist/selection/keyboard-extend.js +94 -117
  817. package/dist/selection/multi-click.d.ts +13 -18
  818. package/dist/selection/multi-click.js +32 -38
  819. package/dist/selection/native-bridge.d.ts +29 -39
  820. package/dist/selection/native-bridge.js +78 -127
  821. package/dist/selection/nearest-block.d.ts +17 -12
  822. package/dist/selection/nearest-block.js +37 -18
  823. package/dist/selection/path-lookup.d.ts +25 -16
  824. package/dist/selection/path-lookup.js +101 -18
  825. package/dist/selection/path-math.d.ts +9 -11
  826. package/dist/selection/path-math.js +5 -7
  827. package/dist/selection/pointer-gesture.d.ts +5 -5
  828. package/dist/selection/pointer-gesture.js +5 -5
  829. package/dist/selection/pointer-session.d.ts +10 -16
  830. package/dist/selection/pointer-session.js +6 -7
  831. package/dist/selection/primitives.d.ts +64 -40
  832. package/dist/selection/primitives.js +57 -67
  833. package/dist/selection/range-coverage.d.ts +94 -0
  834. package/dist/selection/range-coverage.js +365 -0
  835. package/dist/selection/range-delete-ceremony.d.ts +28 -74
  836. package/dist/selection/range-delete-ceremony.js +100 -141
  837. package/dist/selection/range-delete-chrome.d.ts +20 -33
  838. package/dist/selection/range-delete-chrome.js +53 -78
  839. package/dist/selection/range-delete-table-coverage.d.ts +11 -25
  840. package/dist/selection/range-delete-table-coverage.js +42 -112
  841. package/dist/selection/range-delete-table.d.ts +14 -12
  842. package/dist/selection/range-delete-table.js +106 -310
  843. package/dist/selection/range-delete.d.ts +18 -23
  844. package/dist/selection/range-delete.js +83 -123
  845. package/dist/selection/round-trip-restore.d.ts +18 -0
  846. package/dist/selection/round-trip-restore.js +19 -0
  847. package/dist/selection/selection-announcer.d.ts +17 -0
  848. package/dist/selection/selection-announcer.js +25 -0
  849. package/dist/selection/selection-description.d.ts +4 -3
  850. package/dist/selection/selection-description.js +5 -4
  851. package/dist/selection/selection-drop.d.ts +34 -16
  852. package/dist/selection/selection-drop.js +159 -95
  853. package/dist/selection/selection-restore.d.ts +20 -33
  854. package/dist/selection/selection-restore.js +21 -44
  855. package/dist/selection/selection-state.svelte.d.ts +50 -42
  856. package/dist/selection/selection-state.svelte.js +144 -98
  857. package/dist/selection/shared-keydown.d.ts +22 -27
  858. package/dist/selection/shared-keydown.js +25 -45
  859. package/dist/selection/table-endpoint-snap.d.ts +17 -41
  860. package/dist/selection/table-endpoint-snap.js +54 -80
  861. package/dist/selection/table-rect-extend.d.ts +3 -6
  862. package/dist/selection/table-rect-extend.js +19 -14
  863. package/dist/styles/editor-theme.css +60 -53
  864. package/dist/styles/editor.css +201 -143
  865. package/dist/testing/conformance-core.d.ts +50 -18
  866. package/dist/testing/conformance-core.js +88 -50
  867. package/dist/testing/container-conformance.d.ts +48 -84
  868. package/dist/testing/container-conformance.js +159 -285
  869. package/dist/testing/headless-actions.d.ts +34 -19
  870. package/dist/testing/headless-actions.js +116 -65
  871. package/dist/testing/headless-block-list.svelte.d.ts +16 -0
  872. package/dist/testing/headless-block-list.svelte.js +22 -0
  873. package/dist/testing/inline-conformance.d.ts +15 -22
  874. package/dist/testing/inline-conformance.js +131 -148
  875. package/dist/testing/kind-conformance.d.ts +19 -24
  876. package/dist/testing/kind-conformance.js +204 -117
  877. package/dist/testing/kit-reading.d.ts +7 -0
  878. package/dist/testing/kit-reading.js +16 -0
  879. package/dist/testing/mount-dom-stubs.d.ts +4 -5
  880. package/dist/testing/mount-dom-stubs.js +8 -5
  881. package/dist/testing/parse-convergence.d.ts +10 -10
  882. package/dist/testing/parse-convergence.js +14 -49
  883. package/dist/testing.d.ts +13 -9
  884. package/dist/testing.js +28 -38
  885. package/dist/tree-operations/blockquote.d.ts +8 -14
  886. package/dist/tree-operations/blockquote.js +25 -45
  887. package/dist/tree-operations/chain-rebuild.d.ts +34 -25
  888. package/dist/tree-operations/chain-rebuild.js +115 -52
  889. package/dist/tree-operations/children.d.ts +5 -9
  890. package/dist/tree-operations/children.js +7 -11
  891. package/dist/tree-operations/cleanup.d.ts +6 -7
  892. package/dist/tree-operations/cleanup.js +14 -11
  893. package/dist/tree-operations/clone.js +5 -4
  894. package/dist/tree-operations/container-lift.d.ts +10 -5
  895. package/dist/tree-operations/container-lift.js +20 -14
  896. package/dist/tree-operations/container-offsets.d.ts +22 -0
  897. package/dist/tree-operations/container-offsets.js +89 -0
  898. package/dist/tree-operations/content-write.d.ts +52 -29
  899. package/dist/tree-operations/content-write.js +155 -110
  900. package/dist/tree-operations/index.d.ts +4 -4
  901. package/dist/tree-operations/index.js +4 -4
  902. package/dist/tree-operations/keep-one-block.d.ts +10 -0
  903. package/dist/tree-operations/keep-one-block.js +19 -0
  904. package/dist/tree-operations/leaf-range.d.ts +33 -0
  905. package/dist/tree-operations/leaf-range.js +67 -0
  906. package/dist/tree-operations/list/empty-check.d.ts +2 -3
  907. package/dist/tree-operations/list/empty-check.js +4 -4
  908. package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
  909. package/dist/tree-operations/list/exit-replacement.js +4 -9
  910. package/dist/tree-operations/list/item-partition.d.ts +2 -2
  911. package/dist/tree-operations/list/item-partition.js +2 -2
  912. package/dist/tree-operations/list/list-builders.d.ts +18 -16
  913. package/dist/tree-operations/list/list-builders.js +59 -30
  914. package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
  915. package/dist/tree-operations/list/ordered-markers.js +7 -16
  916. package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
  917. package/dist/tree-operations/list/reconcile-task.js +80 -23
  918. package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
  919. package/dist/tree-operations/list/sublist-separator.js +20 -27
  920. package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
  921. package/dist/tree-operations/list/task-paragraph.js +54 -0
  922. package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
  923. package/dist/tree-operations/list/unwrap-merge.js +44 -79
  924. package/dist/tree-operations/node-ops.d.ts +30 -52
  925. package/dist/tree-operations/node-ops.js +152 -218
  926. package/dist/tree-operations/node-primitives.d.ts +44 -31
  927. package/dist/tree-operations/node-primitives.js +84 -60
  928. package/dist/tree-operations/open-tail.d.ts +25 -0
  929. package/dist/tree-operations/open-tail.js +100 -0
  930. package/dist/tree-operations/parse-block.d.ts +15 -2
  931. package/dist/tree-operations/parse-block.js +19 -4
  932. package/dist/tree-operations/paste/apply.d.ts +7 -8
  933. package/dist/tree-operations/paste/apply.js +33 -63
  934. package/dist/tree-operations/paste/body-write.d.ts +8 -6
  935. package/dist/tree-operations/paste/body-write.js +13 -14
  936. package/dist/tree-operations/paste/container-match.d.ts +7 -10
  937. package/dist/tree-operations/paste/container-match.js +76 -58
  938. package/dist/tree-operations/paste/container-paste.d.ts +3 -3
  939. package/dist/tree-operations/paste/container-paste.js +3 -3
  940. package/dist/tree-operations/paste/dispatch.d.ts +26 -29
  941. package/dist/tree-operations/paste/dispatch.js +68 -53
  942. package/dist/tree-operations/paste/focus-target.d.ts +11 -14
  943. package/dist/tree-operations/paste/focus-target.js +13 -18
  944. package/dist/tree-operations/paste/hooks.d.ts +7 -12
  945. package/dist/tree-operations/paste/hooks.js +49 -46
  946. package/dist/tree-operations/paste/line-ending.d.ts +11 -0
  947. package/dist/tree-operations/paste/line-ending.js +32 -0
  948. package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
  949. package/dist/tree-operations/paste/list-absorb.js +17 -19
  950. package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
  951. package/dist/tree-operations/paste/list-break-out.js +24 -32
  952. package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
  953. package/dist/tree-operations/paste/parent-scope.js +9 -16
  954. package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
  955. package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
  956. package/dist/tree-operations/paste/paste-replacement.js +73 -42
  957. package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
  958. package/dist/tree-operations/paste/paste-transforms.js +18 -27
  959. package/dist/tree-operations/paste/replacement-parse.d.ts +9 -7
  960. package/dist/tree-operations/paste/replacement-parse.js +12 -10
  961. package/dist/tree-operations/paste/strategy.d.ts +1 -1
  962. package/dist/tree-operations/paste/strategy.js +1 -1
  963. package/dist/tree-operations/paste/table-slice.js +15 -10
  964. package/dist/tree-operations/paste-surfaces.d.ts +18 -29
  965. package/dist/tree-operations/paste-surfaces.js +14 -10
  966. package/dist/tree-operations/path-mutate.d.ts +7 -8
  967. package/dist/tree-operations/path-mutate.js +4 -4
  968. package/dist/tree-operations/reorder-unit.d.ts +4 -5
  969. package/dist/tree-operations/reorder-unit.js +5 -6
  970. package/dist/tree-operations/reorder.d.ts +7 -9
  971. package/dist/tree-operations/reorder.js +39 -40
  972. package/dist/tree-operations/settle.d.ts +42 -53
  973. package/dist/tree-operations/settle.js +241 -162
  974. package/dist/tree-operations/sharing.d.ts +5 -5
  975. package/dist/tree-operations/splice-many.d.ts +5 -5
  976. package/dist/tree-operations/splice-many.js +5 -5
  977. package/dist/tree-operations/stored-as.d.ts +13 -0
  978. package/dist/tree-operations/stored-as.js +48 -0
  979. package/dist/tree-operations/structural-change.d.ts +11 -15
  980. package/dist/tree-operations/structural-change.js +10 -14
  981. package/dist/tree-operations/structural-suffix.d.ts +22 -0
  982. package/dist/tree-operations/structural-suffix.js +61 -0
  983. package/dist/tree-operations/sub-table-copy.d.ts +7 -0
  984. package/dist/tree-operations/sub-table-copy.js +40 -36
  985. package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
  986. package/dist/tree-operations/table-grid-clipboard.js +11 -36
  987. package/dist/tree-operations/table-mutations.d.ts +7 -3
  988. package/dist/tree-operations/table-mutations.js +45 -9
  989. package/dist/tree-operations/unshare.d.ts +11 -15
  990. package/dist/tree-operations/unshare.js +15 -17
  991. package/dist/undo/manager.js +1 -1
  992. package/dist/undo/types.d.ts +2 -2
  993. package/docs/guide/consumer-guide.md +327 -205
  994. package/docs/guide/directives.md +7 -7
  995. package/docs/guide/plugin-api.md +253 -185
  996. package/docs/guide/plugin-guide.md +332 -235
  997. package/docs/guide/plugin-testing.md +96 -82
  998. package/package.json +12 -16
  999. package/dist/ambient/ambient-cursor.d.ts +0 -41
  1000. package/dist/ambient/ambient-cursor.js +0 -120
  1001. package/dist/components/blocks/code/code-paste.d.ts +0 -24
  1002. package/dist/components/blocks/code/code-paste.js +0 -21
  1003. package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
  1004. package/dist/components/blocks/table/cell-clipboard.js +0 -67
  1005. package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
  1006. package/dist/components/blocks/text/hidden-suffix.js +0 -15
  1007. package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
  1008. package/dist/components/image/image-source-bytes.d.ts +0 -15
  1009. package/dist/components/image/image-source-bytes.js +0 -80
  1010. package/dist/cursor/content-offsets.d.ts +0 -29
  1011. package/dist/cursor/content-offsets.js +0 -151
  1012. package/dist/cursor/reveal-anchor.d.ts +0 -30
  1013. package/dist/cursor/reveal-anchor.js +0 -31
  1014. package/dist/cursor/scroll-hold.d.ts +0 -10
  1015. package/dist/cursor/scroll-hold.js +0 -22
  1016. package/dist/invariants/split-landing.d.ts +0 -8
  1017. package/dist/invariants/split-landing.js +0 -15
  1018. package/dist/tree-operations/list/terminator.d.ts +0 -17
  1019. package/dist/tree-operations/list/terminator.js +0 -60
  1020. package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -31
  1021. package/dist/tree-operations/paste/replace-block-at-parent.js +0 -78
@@ -1,11 +1,13 @@
1
- // `|N` / `|NxM` is an Obsidian extension, not part of GFM. The `@X,Y[,Z]` tail on the `NxM`
2
- // form is this editor's own: the pan and zoom of the image inside that frame.
1
+ // The size hint at the end of an image's alt text, read and written here. `|N` / `|NxM` is an
2
+ // Obsidian extension, not part of GFM; the `@X,Y[,Z]` tail on the `NxM` form is this editor's
3
+ // own: the pan and zoom of the image inside that frame.
3
4
  const MAX_DIMENSION = 10000;
4
5
  export const MAX_CROP_ZOOM = 4;
5
6
  // The longest decodable suffix, `|10000x10000@100,100,4.00`. Bounding the pipe search to that
6
7
  // tail keeps nested-label floods linear.
7
8
  const MAX_SUFFIX_SEARCH = 26;
8
9
  const NO_HINT = { width: undefined, height: undefined, crop: undefined };
10
+ // ── Reading ─────────────────────────────────────────────────────────────────
9
11
  export function parseImageDimensions(alt) {
10
12
  const lastPipe = boundedLastPipe(alt);
11
13
  const dims = lastPipe === -1 ? null : parseDimensionSuffix(alt.slice(lastPipe + 1));
@@ -76,3 +78,18 @@ function parseStrictInt(s) {
76
78
  return null;
77
79
  return n;
78
80
  }
81
+ // ── Writing ─────────────────────────────────────────────────────────────────
82
+ /** The suffix `parseImageDimensions` reads back as these values; empty for no width. */
83
+ export function buildDimSuffix(width, height, crop) {
84
+ if (width === undefined)
85
+ return '';
86
+ if (height === undefined)
87
+ return `|${width}`;
88
+ return `|${width}x${height}${crop ? buildCropTail(crop) : ''}`;
89
+ }
90
+ /** The pan in whole percents, then the zoom to two decimals, left out at 1. */
91
+ function buildCropTail(crop) {
92
+ const z = Math.round(crop.z * 100) / 100;
93
+ const zoom = z === 1 ? '' : `,${String(z)}`;
94
+ return `@${Math.round(crop.x)},${Math.round(crop.y)}${zoom}`;
95
+ }
@@ -0,0 +1,11 @@
1
+ import type { ImageFields, InlineNode } from '../nodes';
2
+ /** Bytes to splice over `image`'s range, or null when the edit is refused. A node a plugin's
3
+ * syntax owns is written by its `rewriteImage` hook (`docs/design/plugin-contract.md`). */
4
+ export declare function buildImageEditBytes(image: InlineNode, blockRaw: string, fields: ImageFields): string | null;
5
+ /** Only the optional keys the node holds, so a rebuild adds no field the source lacked and
6
+ * repeated resizes leave the alt text unchanged. */
7
+ export declare function imageFieldsFromInline(image: InlineNode): ImageFields;
8
+ export declare function sameImageFields(a: ImageFields, b: ImageFields): boolean;
9
+ /** The inverse of the built-in grammar; call `buildImageEditBytes`, which decides whether the
10
+ * bytes are GFM's to write. */
11
+ export declare function buildImageSourceBytes(fields: ImageFields): string;
@@ -0,0 +1,71 @@
1
+ // Where an image edit becomes bytes: the one function every image write goes through, and
2
+ // below it the GFM serializer, which nothing else may call.
3
+ import { encodeDestination, escapeTitle } from './destination-bytes';
4
+ import { buildDimSuffix } from './image-dimensions';
5
+ import { devWarn } from '../../dev-warn';
6
+ // ── Where the bytes are written ─────────────────────────────────────────────
7
+ /** Bytes to splice over `image`'s range, or null when the edit is refused. A node a plugin's
8
+ * syntax owns is written by its `rewriteImage` hook (`docs/design/plugin-contract.md`). */
9
+ export function buildImageEditBytes(image, blockRaw, fields) {
10
+ const claim = image.syntaxClaim;
11
+ if (!claim)
12
+ return buildImageSourceBytes(fields);
13
+ const bytes = claim.rewriteImage?.(blockRaw.slice(image.start, image.end), fields) ?? null;
14
+ if (bytes === null) {
15
+ devWarn('image-edit', `declined: the "${claim.prefix}" inline syntax handler owns these bytes and ` +
16
+ `${claim.rewriteImage ? 'its rewriteImage hook cannot represent this edit' : 'registered no rewriteImage hook'}`, fields);
17
+ }
18
+ return bytes;
19
+ }
20
+ /** Only the optional keys the node holds, so a rebuild adds no field the source lacked and
21
+ * repeated resizes leave the alt text unchanged. */
22
+ export function imageFieldsFromInline(image) {
23
+ return {
24
+ alt: image.alt ?? '',
25
+ url: image.url ?? '',
26
+ ...(image.title !== undefined ? { title: image.title } : {}),
27
+ ...(image.width !== undefined ? { width: image.width } : {}),
28
+ ...(image.height !== undefined ? { height: image.height } : {}),
29
+ ...(image.crop !== undefined ? { crop: image.crop } : {}),
30
+ ...(image.label !== undefined ? { label: image.label } : {})
31
+ };
32
+ }
33
+ export function sameImageFields(a, b) {
34
+ return (a.alt === b.alt &&
35
+ a.url === b.url &&
36
+ a.title === b.title &&
37
+ a.width === b.width &&
38
+ a.height === b.height &&
39
+ a.label === b.label &&
40
+ a.crop?.x === b.crop?.x &&
41
+ a.crop?.y === b.crop?.y &&
42
+ a.crop?.z === b.crop?.z);
43
+ }
44
+ // ── The GFM serializer ──────────────────────────────────────────────────────
45
+ /** The inverse of the built-in grammar; call `buildImageEditBytes`, which decides whether the
46
+ * bytes are GFM's to write. */
47
+ export function buildImageSourceBytes(fields) {
48
+ const dimSuffix = buildDimSuffix(fields.width, fields.height, fields.crop);
49
+ const altSegment = escapeAlt(fields.alt) + dimSuffix;
50
+ // A reference image's url and title belong to its link reference definition.
51
+ if (fields.label !== undefined) {
52
+ return `![${altSegment}][${fields.label}]`;
53
+ }
54
+ const titleSegment = fields.title !== undefined ? ` "${escapeTitle(fields.title)}"` : '';
55
+ return `![${altSegment}](${encodeDestination(fields.url)}${titleSegment})`;
56
+ }
57
+ // Alt text keeps the label's bytes as written: a bare bracket is escaped so it can't end the
58
+ // label, and an existing backslash pair passes through so repeated commits never double it.
59
+ function escapeAlt(alt) {
60
+ let out = '';
61
+ for (let i = 0; i < alt.length; i++) {
62
+ const ch = alt[i];
63
+ if (ch === '\\' && i + 1 < alt.length) {
64
+ out += ch + alt[i + 1];
65
+ i++;
66
+ continue;
67
+ }
68
+ out += ch === '[' || ch === ']' || ch === '\\' ? '\\' + ch : ch;
69
+ }
70
+ return out;
71
+ }
@@ -2,41 +2,48 @@
2
2
  import type { AnyInlineKind, CstNode, InlineNode } from '../nodes';
3
3
  import type { NodeView } from '../node-views';
4
4
  import type { LinkReferenceResolver } from './link-reference-resolver';
5
+ import type { Reading } from '../../schema/reading';
6
+ import { type GrammarView } from '../../schema/block-openers';
5
7
  import { inlineDescendants } from './walk';
6
8
  export interface ContentRange {
7
9
  start: number;
8
10
  end: number;
9
11
  }
10
12
  declare const contentLengthBrand: unique symbol;
11
- /** Raw-space length of a block's rendered content, mintable only from its content range: a
12
- * DOM-measured length answers in walk space and lags the pass that is rewriting the DOM. */
13
+ /** Raw-offset length of a block's rendered content, built only from its content range: a
14
+ * DOM-measured length counts as the DOM traversal does and lags the pass rewriting the DOM. */
13
15
  export type ContentLength = number & {
14
16
  readonly [contentLengthBrand]: true;
15
17
  };
16
18
  /** Content range within a prose block's raw; marker-bearing kinds override via descriptor. */
17
19
  export declare function getContentRange(node: NodeView): ContentRange;
18
- /** The one {@link ContentLength} mint. */
20
+ /** The structure between a block's content and its line ending, like a setext underline: drawn
21
+ * as a marker after the text, and kept by every edit that keeps the block's head. */
22
+ export declare function structuralSuffix(node: NodeView): string;
23
+ /** The structural suffix's part on the text's own line, an ATX closing run: a line break made
24
+ * at the text's end goes after it. A setext underline starts on a line of its own. */
25
+ export declare function sameLineSuffix(node: NodeView): string;
26
+ /** {@link sameLineSuffix} over a prose block's raw and its content end. */
27
+ export declare function sameLineSuffixOf(raw: string, contentEnd: number): string;
28
+ /** The one place a {@link ContentLength} is created. */
19
29
  export declare function contentLengthOf(node: NodeView): ContentLength;
20
30
  export declare function isProseKind(kind: CstNode['kind']): boolean;
21
- /**
22
- * The bytes an INLINE construct's delimiters do not cover, or null for a kind that has none — a
23
- * bare text run, an escape, a pair emptied of content. The inline twin of {@link getContentRange},
24
- * here rather than beside one of its callers because the caret bounds, the typing seat, the
25
- * destructive arm and the toggles all need the same answer.
26
- */
31
+ /** The inline counterpart of {@link getContentRange}: the bytes a construct's delimiters do not
32
+ * cover, or null for one with no content (a text run, an escape, an emptied pair). */
27
33
  export declare function constructContentRange(node: InlineNode): ContentRange | null;
28
- /**
29
- * A prose node's inline tree, pure: no caching, no reactive reads. The render path calls this
30
- * directly; the caching accessor (inline-cache.ts) calls it on a miss.
31
- */
32
- export declare function computeInlineContent(node: NodeView, resolver?: LinkReferenceResolver): InlineNode[];
33
- /**
34
- * Parse inline content over raw[start, end). Node offsets are absolute into raw, and every byte
35
- * lands in exactly one node's range. Both bounds are checked, not just typed: a caller the
36
- * compiler cannot reach that passes only the source would otherwise get one whole-string text
37
- * node, which is wrong output that looks like a result.
38
- */
39
- export declare function parseInline(raw: string, start: number, end: number, resolver?: LinkReferenceResolver): InlineNode[];
34
+ /** Uncached and free of reactive reads, so the render path can call it directly. An editor
35
+ * passes its own grammar, so a plugin it left out takes no bytes. */
36
+ export declare function computeInlineContent(node: NodeView, resolver: LinkReferenceResolver | undefined, grammar: GrammarView): InlineNode[];
37
+ type InlineReader = (node: NodeView) => InlineNode[];
38
+ /** The inline parse a plugin gets: this editor's grammar and the document's definitions as they
39
+ * stand at each call. A new function per definitions change, so a cache keyed on it refreshes. */
40
+ export declare function inlineReaderFor(reading: Reading): InlineReader;
41
+ /** Node offsets are absolute into raw, and each byte of raw[start, end) lands in exactly one node.
42
+ * With no grammar it reads every installed plugin's syntax; the editor uses {@link readInline}. */
43
+ export declare function parseInline(raw: string, start: number, end: number, resolver?: LinkReferenceResolver, grammar?: GrammarView): InlineNode[];
44
+ /** Both bounds are checked at runtime: a caller outside the type checker that passes only the
45
+ * source would get one whole-string text node, wrong output that looks like a result. */
46
+ export declare function readInline(raw: string, start: number, end: number, resolver: LinkReferenceResolver | undefined, grammar: GrammarView): InlineNode[];
40
47
  export { inlineDescendants };
41
48
  /** Every construct kind anywhere in a parse, at any depth. */
42
49
  export declare function constructKinds(nodes: readonly InlineNode[]): Set<AnyInlineKind>;
@@ -1,10 +1,12 @@
1
1
  /** Inline parser entry. See docs/design/inline-parsing.md. */
2
- import { displayLength } from '../lines';
2
+ import { displayLength, firstDisplayLine } from '../lines';
3
3
  import { getBlockKindDescriptor } from '../../schema/block-kind-descriptor';
4
- // Registered before any descriptor read, headless of the editor mount. Explicit call: a bare
5
- // side-effect import is tree-shaken from the production build.
4
+ // The built-in descriptors register before any read, with or without a mounted editor; the call
5
+ // is explicit because a bare side-effect import is tree-shaken from the production build.
6
6
  import { registerBuiltInDescriptors } from '../../schema/built-in-descriptors';
7
+ import { defaultGrammarView } from '../../schema/block-openers';
7
8
  import { scanInline } from './scan';
9
+ import { codeSpanFence } from './scan/code-spans';
8
10
  import { inlineDescendants } from './walk';
9
11
  import { recordInlineCompute } from '../../perf/instruments';
10
12
  registerBuiltInDescriptors();
@@ -15,55 +17,75 @@ export function getContentRange(node) {
15
17
  return d.getContentRange(node);
16
18
  return { start: 0, end: displayLength(node.raw) };
17
19
  }
18
- /** The one {@link ContentLength} mint. */
20
+ /** The structure between a block's content and its line ending, like a setext underline: drawn
21
+ * as a marker after the text, and kept by every edit that keeps the block's head. */
22
+ export function structuralSuffix(node) {
23
+ // A kind that is not prose shows its whole display as content.
24
+ if (!isProseKind(node.kind))
25
+ return '';
26
+ return node.raw.slice(getContentRange(node).end, displayLength(node.raw));
27
+ }
28
+ /** The structural suffix's part on the text's own line, an ATX closing run: a line break made
29
+ * at the text's end goes after it. A setext underline starts on a line of its own. */
30
+ export function sameLineSuffix(node) {
31
+ if (!isProseKind(node.kind))
32
+ return '';
33
+ return sameLineSuffixOf(node.raw, getContentRange(node).end);
34
+ }
35
+ /** {@link sameLineSuffix} over a prose block's raw and its content end. */
36
+ export function sameLineSuffixOf(raw, contentEnd) {
37
+ return firstDisplayLine(raw.slice(contentEnd, displayLength(raw))).text;
38
+ }
39
+ /** The one place a {@link ContentLength} is created. */
19
40
  export function contentLengthOf(node) {
20
41
  return getContentRange(node).end;
21
42
  }
22
43
  export function isProseKind(kind) {
23
44
  return getBlockKindDescriptor(kind).supportsInline;
24
45
  }
25
- /**
26
- * The bytes an INLINE construct's delimiters do not cover, or null for a kind that has none — a
27
- * bare text run, an escape, a pair emptied of content. The inline twin of {@link getContentRange},
28
- * here rather than beside one of its callers because the caret bounds, the typing seat, the
29
- * destructive arm and the toggles all need the same answer.
30
- */
46
+ /** The inline counterpart of {@link getContentRange}: the bytes a construct's delimiters do not
47
+ * cover, or null for one with no content (a text run, an escape, an emptied pair). */
31
48
  export function constructContentRange(node) {
32
49
  const children = node.children;
33
50
  if (children && children.length > 0) {
34
51
  return { start: children[0].start, end: children[children.length - 1].end };
35
52
  }
36
- // A code span carries its content as `text` rather than children, and a matched span's two
37
- // backtick runs are equal, so what the content does not cover splits evenly between them.
38
- if (node.kind === 'inlineCode' && node.text !== undefined) {
39
- const fence = (node.end - node.start - node.text.length) / 2;
40
- if (Number.isInteger(fence) && fence > 0) {
41
- return { start: node.start + fence, end: node.end - fence };
42
- }
43
- }
44
- return null;
53
+ // A code span carries its content as `text` rather than children.
54
+ const fence = node.kind === 'inlineCode' ? codeSpanFence(node) : 0;
55
+ return fence > 0 ? { start: node.start + fence, end: node.end - fence } : null;
45
56
  }
46
- /**
47
- * A prose node's inline tree, pure: no caching, no reactive reads. The render path calls this
48
- * directly; the caching accessor (inline-cache.ts) calls it on a miss.
49
- */
50
- export function computeInlineContent(node, resolver) {
57
+ /** Uncached and free of reactive reads, so the render path can call it directly. An editor
58
+ * passes its own grammar, so a plugin it left out takes no bytes. */
59
+ export function computeInlineContent(node, resolver, grammar) {
51
60
  recordInlineCompute();
52
61
  const range = getContentRange(node);
53
- return parseInline(node.raw, range.start, range.end, resolver);
62
+ return readInline(node.raw, range.start, range.end, resolver, grammar);
63
+ }
64
+ const readersByReading = new WeakMap();
65
+ /** The inline parse a plugin gets: this editor's grammar and the document's definitions as they
66
+ * stand at each call. A new function per definitions change, so a cache keyed on it refreshes. */
67
+ export function inlineReaderFor(reading) {
68
+ const epoch = reading.resolverEpoch;
69
+ const held = readersByReading.get(reading);
70
+ if (held?.epoch === epoch)
71
+ return held.read;
72
+ const read = (node) => computeInlineContent(node, reading.resolver, reading.grammar);
73
+ readersByReading.set(reading, { epoch, read });
74
+ return read;
54
75
  }
55
76
  // ── Inline Parser ──────────────────────────────────────────────────────────
56
- /**
57
- * Parse inline content over raw[start, end). Node offsets are absolute into raw, and every byte
58
- * lands in exactly one node's range. Both bounds are checked, not just typed: a caller the
59
- * compiler cannot reach that passes only the source would otherwise get one whole-string text
60
- * node, which is wrong output that looks like a result.
61
- */
62
- export function parseInline(raw, start, end, resolver) {
77
+ /** Node offsets are absolute into raw, and each byte of raw[start, end) lands in exactly one node.
78
+ * With no grammar it reads every installed plugin's syntax; the editor uses {@link readInline}. */
79
+ export function parseInline(raw, start, end, resolver, grammar) {
80
+ return readInline(raw, start, end, resolver, grammar ?? defaultGrammarView);
81
+ }
82
+ /** Both bounds are checked at runtime: a caller outside the type checker that passes only the
83
+ * source would get one whole-string text node, wrong output that looks like a result. */
84
+ export function readInline(raw, start, end, resolver, grammar) {
63
85
  if (!Number.isFinite(start) || !Number.isFinite(end)) {
64
- throw new TypeError('parseInline requires both scan bounds — to scan a whole string, call parseInline(src, 0, src.length)');
86
+ throw new TypeError('parseInline requires both scan bounds: to scan a whole string, call parseInline(src, 0, src.length)');
65
87
  }
66
- return scanInline(raw, start, end, resolver);
88
+ return scanInline(raw, start, end, resolver, grammar);
67
89
  }
68
90
  // ── Inline Tree Walks ──────────────────────────────────────────────────────
69
91
  export { inlineDescendants };
@@ -1,20 +1,17 @@
1
1
  /**
2
- * Lazy `inlineContent` accessor for non-render consumers, over a node-keyed WeakMap.
3
- * Non-reactive by design: never call from the render path (which uses computeInlineContent),
4
- * since a reactive read+write here re-introduces the keyed-`{#each}` corruption G4.2 guards.
5
- * One sub-entry per signature space, so resolver-less and signature-bearing callers cannot
6
- * evict each other on a bracket-bearing block.
2
+ * Lazy `inlineContent` accessor for code outside the render path, over a node-keyed WeakMap.
3
+ * Never call it from the render path, which computes from `node.raw` with `computeInlineContent` so a
4
+ * render effect reads nothing else (G4.2). Resolver-less and resolving callers get
5
+ * separate slots so they never evict each other, and a slot answers only its own grammar.
7
6
  */
8
7
  import type { InlineNode } from '../nodes';
9
8
  import type { NodeView } from '../node-views';
10
9
  import type { LinkReferenceResolver } from './link-reference-resolver';
11
- export declare function getInlineContent(node: NodeView, resolver?: LinkReferenceResolver, signature?: string): InlineNode[];
12
- /**
13
- * The one spelling of `getInlineContent(node, ref.current, ref.signature)`, so a non-render
14
- * call site cannot drop the signature and silently desync from what render drew. `linkRef`
15
- * stays structural: naming editor-keys' type would cycle that module back onto this layer.
16
- */
17
- export declare function resolvedInlineContent(node: NodeView, linkRef?: {
18
- current?: LinkReferenceResolver;
19
- signature?: string;
20
- }): InlineNode[];
10
+ import type { GrammarView } from '../../schema/block-openers';
11
+ import type { Reading } from '../../schema/reading';
12
+ export declare function getInlineContent(node: NodeView, resolver: LinkReferenceResolver | undefined, signature: string | undefined, grammar: GrammarView): InlineNode[];
13
+ /** The parts of an editor's reading its inline parse needs. */
14
+ export type InlineReading = Pick<Reading, 'grammar' | 'resolver' | 'resolverSignature'>;
15
+ /** Takes the whole reading, so a call site outside the render path cannot drop the signature or
16
+ * the grammar and disagree with what the render path drew. */
17
+ export declare function resolvedInlineContent(node: NodeView, reading: InlineReading): InlineNode[];
@@ -1,28 +1,25 @@
1
1
  import { computeInlineContent, isProseKind } from './index';
2
2
  const cache = new WeakMap();
3
- export function getInlineContent(node, resolver, signature = '') {
3
+ export function getInlineContent(node, resolver, signature = '', grammar) {
4
4
  if (!isProseKind(node.kind))
5
5
  return [];
6
- // A block resolves through an LRD only if it holds a bracket; mirroring the render gate keeps
7
- // a bracketless block off both the resolver and the signature.
6
+ // A block resolves a link reference definition only if it holds a bracket; the render path
7
+ // checks the same, so a bracketless block skips both the resolver and the signature.
8
8
  const hasRef = node.raw.includes('[');
9
9
  const sig = hasRef ? signature : '';
10
10
  const effectiveResolver = hasRef ? resolver : undefined;
11
11
  const entry = cache.get(node);
12
12
  const slot = sig === '' ? 'plain' : 'resolved';
13
13
  const hit = entry?.[slot];
14
- if (hit && hit.raw === node.raw && hit.signature === sig)
14
+ if (hit && hit.raw === node.raw && hit.signature === sig && hit.grammar === grammar) {
15
15
  return hit.content;
16
- const content = computeInlineContent(node, effectiveResolver);
17
- // Spread, so refilling one slot carries the other one through untouched.
18
- cache.set(node, { ...entry, [slot]: { raw: node.raw, signature: sig, content } });
16
+ }
17
+ const content = computeInlineContent(node, effectiveResolver, grammar);
18
+ cache.set(node, { ...entry, [slot]: { raw: node.raw, signature: sig, grammar, content } });
19
19
  return content;
20
20
  }
21
- /**
22
- * The one spelling of `getInlineContent(node, ref.current, ref.signature)`, so a non-render
23
- * call site cannot drop the signature and silently desync from what render drew. `linkRef`
24
- * stays structural: naming editor-keys' type would cycle that module back onto this layer.
25
- */
26
- export function resolvedInlineContent(node, linkRef) {
27
- return getInlineContent(node, linkRef?.current, linkRef?.signature ?? '');
21
+ /** Takes the whole reading, so a call site outside the render path cannot drop the signature or
22
+ * the grammar and disagree with what the render path drew. */
23
+ export function resolvedInlineContent(node, reading) {
24
+ return getInlineContent(node, reading.resolver, reading.resolverSignature, reading.grammar);
28
25
  }
@@ -1,59 +1,54 @@
1
1
  /**
2
- * The single source of truth for which inline kinds render as live atomic widgets
3
- * (contenteditable=false islands marked `[data-inline-widget]`) and how each is recognized.
4
- * Recognition is registry-owned; DOM building dispatches by layer: a `buildWidget` for
5
- * core-built widgets, a `component` mounted through the injected portal builder, or neither
6
- * for the image, whose per-instance builder is injected per render.
2
+ * The one registry of which inline kinds render as live widgets (non-editable spans marked
3
+ * `[data-inline-widget]`) and how each is recognized. DOM building has three routes: a
4
+ * `buildWidget` for core-built widgets, a `component` mounted through the injected portal
5
+ * builder, or neither for the image, whose builder is injected per render.
7
6
  */
8
7
  import type { Component } from 'svelte';
9
- import type { AnyInlineKind, InlineNode } from '../nodes';
8
+ import { type AnyInlineKind, type InlineNode } from '../nodes';
10
9
  import type { DocumentView, NodeView } from '../node-views';
11
10
  import type { PresentationMode } from '../../presentation-mode';
11
+ import type { GrammarView } from '../../schema/block-openers';
12
12
  /**
13
- * The atomic-widget shell every core builder shares. Its `data-*` attributes are the offset
14
- * walk's only handle, so the shell is minted here once and builders add only the body.
13
+ * The widget shell every core builder shares. Its `data-*` attributes are the only handle the
14
+ * DOM-to-offset traversal has, so the shell is created here once and builders add only the body.
15
15
  */
16
16
  export declare function mintWidgetShell(className: string, node: InlineNode): HTMLSpanElement;
17
- /** The raw byte range a shell carries, or null when the attributes are absent or malformed —
18
- * {@link mintWidgetShell}'s inverse, so the mint and every read-back move together. */
17
+ /** The raw byte range a shell carries, or null when the attributes are absent or malformed:
18
+ * {@link mintWidgetShell}'s inverse, kept beside it so the two move together. */
19
19
  export declare function widgetSourceRange(el: Element): {
20
20
  start: number;
21
21
  end: number;
22
22
  } | null;
23
23
  /**
24
24
  * Props a `component` widget kind is mounted with. Frozen at mount: the pool remounts on a
25
- * source change, so `source` never shifts under a live instance, but `inline.start`/`end` CAN
26
- * lag once adjacent typing moves the widget. The live position is the wrapper's re-stamped
27
- * `data-source-*`, never these fields. The getters below are live for the same reason inverted:
28
- * an instance the pool reuses would go stale on a frozen value.
25
+ * source change, so `source` never shifts under a live instance, but `inline.start`/`end` can
26
+ * lag once typing beside the widget moves it. The live position is the wrapper's rewritten
27
+ * `data-source-*`, never these fields. The getters below are live for the inverse reason: a
28
+ * reused instance would go stale on a frozen value.
29
29
  */
30
30
  export interface InlineWidgetComponentProps {
31
31
  inline: InlineNode;
32
32
  source: string;
33
- /** Absent reads as 'source'. */
34
- getPresentationMode?: () => PresentationMode;
35
- /** A widget whose body an ENGINE paints emits colors no stylesheet reaches, so it keys its
36
- * render on this. One styled with CSS tokens needs nothing here. Absent reads as 'dark'. */
37
- getTheme?: () => string;
33
+ getPresentationMode: () => PresentationMode;
34
+ /** A widget whose body a renderer such as KaTeX draws emits colors no stylesheet reaches, so
35
+ * it keys its render on this. One styled with CSS tokens needs nothing. */
36
+ getTheme: () => string;
38
37
  /** The pool keys on `${kind} ${source}`, so a widget whose value derives from the document
39
38
  * (footnote numbering) needs this to survive edits elsewhere that change no source. */
40
- getDocument?: () => DocumentView | undefined;
41
- /**
42
- * Memo key for a whole-document derivation: the `$state` document is mutated in place, so
43
- * its identity never changes and an identity-keyed memo would hit forever on stale data.
44
- * Read it INSIDE the widget's `$derived`; that read is what subscribes it to edits anywhere.
45
- */
46
- getContentVersion?: () => number;
47
- /** `EditorRects.navigateTo`: reveal, scroll and land the caret at a raw offset in a block
48
- * path. Absent in a bare harness, so a widget that navigates declines rather than throws. */
49
- navigateTo?: (path: number[], offset?: number) => Promise<boolean>;
39
+ getDocument: () => DocumentView | undefined;
40
+ /** Memo key for a whole-document derivation, since the `$state` document mutates in place and
41
+ * keeps its identity. Read it inside the widget's `$derived` to re-run on edits anywhere. */
42
+ getContentVersion: () => number;
43
+ /** `EditorRects.navigateTo`: mount, scroll to and put the caret at a raw offset in a block
44
+ * path. Resolves false where it can't land, so a widget never needs a fallback. */
45
+ navigateTo: (path: number[], offset?: number) => Promise<boolean>;
46
+ /** `EditorContext.computeInlineContent` for the widget's editor: it parses as that editor draws,
47
+ * and it's a new function whenever the document's definitions change. */
48
+ computeInlineContent: (node: NodeView) => InlineNode[];
50
49
  }
51
- /**
52
- * The editor's activation gesture, shared by the surface deciding whether to reveal and the
53
- * widget deciding whether to act: a Ctrl/Cmd chord while editing, a plain click in reading
54
- * mode, where there is no caret for a plain click to place. The link click's rule
55
- * (`Editor.svelte`), applied to widgets.
56
- */
50
+ /** Shared by the editable element deciding whether to show the source and the widget deciding
51
+ * whether to act. Reading mode has no caret to place, so a plain click activates, as for links. */
57
52
  export declare function isWidgetActivationClick(modified: boolean, mode: PresentationMode): boolean;
58
53
  /** The closed vocabularies as values, so the published conformance kit checks a registration
59
54
  * against the type's own members rather than a copy that ages out of step with it. */
@@ -61,37 +56,30 @@ export declare const DELETE_GRANULARITIES: readonly ["atomic", "select-then-dele
61
56
  export declare const ON_EDGE_POLICIES: readonly ["select", "step-over"];
62
57
  /**
63
58
  * Per-kind editing behavior, read by the caret-edge dispatch
64
- * (`components/blocks/text/edge-policy-dispatch.ts`). `atomic` deletes in one press where
59
+ * (`components/blocks/text/edge-policy-dispatch.ts`). `atomic` deletes in one keypress where
65
60
  * `select-then-delete` takes two; `onEdge` chooses between selecting the construct whole and
66
61
  * stepping over it like a character.
67
62
  */
68
63
  export interface InlineWidgetEditingPolicy {
69
64
  revealSource?: boolean;
70
- /**
71
- * Where this kind's editable CONTENT sits inside its source span, as offsets relative to
72
- * that span — `$x$` answers `{ start: 1, end: 2 }`. It bounds a caret entering the source,
73
- * and `end` is where a revealing click lands when the kind maps no point of its own. Only
74
- * the kind knows its own delimiters; absent, the caret keeps the leading edge.
75
- */
65
+ /** The editable content's offsets in the source span (`$x$` gives `{ start: 1, end: 2 }`),
66
+ * bounding the caret; a click with no mapped point lands at `end`. Absent: the start edge. */
76
67
  revealContentSpan?: (source: string) => {
77
68
  start: number;
78
69
  end: number;
79
70
  } | null;
80
- /**
81
- * The offset in `source` a press on the RENDERED widget names, so a click seats the caret
82
- * where it landed rather than at one edge. Only the kind can map its render back to bytes (a
83
- * KaTeX island paints glyphs, not source); null declines this point and keeps the fallback.
84
- */
71
+ /** The `source` offset under a click, so the caret goes where the user clicked; only the kind
72
+ * can map its render (KaTeX glyphs) back to bytes. Null keeps the fallback. */
85
73
  revealOffsetAtPoint?: (widgetEl: HTMLElement, source: string, clientX: number, clientY: number) => number | null;
86
74
  deleteGranularity?: (typeof DELETE_GRANULARITIES)[number];
87
75
  onEdge?: (typeof ON_EDGE_POLICIES)[number];
88
76
  onSelectedKey?: (e: KeyboardEvent, ctx: InlineWidgetEditingContext) => boolean;
89
77
  /** The widget's own component handles an activation click ({@link isWidgetActivationClick}),
90
- * so the surface stands its reveal down rather than unmounting the widget under it. */
78
+ * so the editable element does not show the source, which would unmount the widget. */
91
79
  claimsActivationClick?: boolean;
92
80
  }
93
81
  export interface InlineWidgetEditingContext {
94
- /** Bytes-readonly (G1.9); edits go through `updateContent`. */
82
+ /** Read-only, since an undo entry may share the node (G1.9); edit through `updateContent`. */
95
83
  node: NodeView;
96
84
  inline: InlineNode;
97
85
  widgetStart: number;
@@ -109,35 +97,26 @@ export interface InlineWidgetDescriptor {
109
97
  /** Omitted for a kind whose builder is injected per render (image) or that uses `component`. */
110
98
  buildWidget?(node: InlineNode, raw: string): HTMLElement;
111
99
  /** The recommended path, mutually exclusive with `buildWidget`: the render layer wraps it in
112
- * the atomic-island span and mounts it through the injected portal builder. */
100
+ * the widget shell span and mounts it through the injected portal builder. */
113
101
  component?: Component<InlineWidgetComponentProps>;
114
102
  editing?: InlineWidgetEditingPolicy;
115
103
  }
116
104
  export declare function registerInlineWidgetKind(kind: AnyInlineKind, descriptor: InlineWidgetDescriptor): void;
117
- /**
118
- * Layer editing fields onto an already-registered kind. The editor-layer wire-up
119
- * (components/built-in-blocks.ts) attaches behavior here that would otherwise make a core
120
- * registration import a downstream layer. Throws for an unregistered kind.
121
- */
105
+ /** Lets the editor layer (`components/built-in-blocks.ts`) attach editing behavior without a core
106
+ * registration importing it. Throws for an unregistered kind. */
122
107
  export declare function augmentInlineWidgetKind(kind: AnyInlineKind, editing: Partial<InlineWidgetEditingPolicy>): void;
108
+ /** Whether the kind renders as a widget under the editor's grammar, whatever one node's bytes. */
109
+ export declare function isInlineWidgetKind(kind: AnyInlineKind, grammar: GrammarView): boolean;
123
110
  /** Kind-level recognition, independent of per-block render policy (renderImagesAsWidgets). */
124
- export declare function isInlineWidget(node: InlineNode, raw: string): boolean;
125
- export declare function getInlineWidgetEditing(kind: AnyInlineKind): InlineWidgetEditingPolicy | undefined;
126
- /** A kind the caret reads as one character: it steps over in one press, carries a column of its
127
- * own, and a press ON its glyph names an edge rather than selecting the island whole. */
128
- export declare function isCharacterLikeWidget(kind: AnyInlineKind): boolean;
129
- export declare function getInlineWidgetComponent(kind: AnyInlineKind): Component<InlineWidgetComponentProps> | undefined;
130
- /**
131
- * Every live widget reachable from `nodes`, in document order. Descends so a widget nested in a
132
- * non-widget parent is found (the `image` inside `[![alt][ref]][repo]`), but never into a
133
- * widget's own children, which are atomic. `raw` is the enclosing block's source.
134
- */
135
- export declare function flattenInlineWidgets(nodes: ReadonlyArray<InlineNode>, raw: string): InlineNode[];
136
- /**
137
- * A `component` kind routes through the injected `buildPortalWidget` because the component layer
138
- * owns Svelte mounting and `core/` stays framework-free. Null when the node is not a widget, its
139
- * builder is injected per render (image), or the portal builder is absent or failed.
140
- */
141
- export declare function buildCoreInlineWidget(node: InlineNode, raw: string, buildPortalWidget?: (node: InlineNode, raw: string) => HTMLElement | null): HTMLElement | null;
142
- /** Test-only. Removes every plugin-registered inline-widget kind; built-ins survive. */
143
- export declare function __resetInlineWidgetsForTests(): void;
111
+ export declare function isInlineWidget(node: InlineNode, raw: string, grammar: GrammarView): boolean;
112
+ export declare function getInlineWidgetEditing(kind: AnyInlineKind, grammar: GrammarView): InlineWidgetEditingPolicy | undefined;
113
+ /** A kind the caret treats as one character: it steps over in one keypress, has a column of its
114
+ * own, and a click on its glyph names an edge rather than selecting the widget whole. */
115
+ export declare function isCharacterLikeWidget(kind: AnyInlineKind, grammar: GrammarView): boolean;
116
+ export declare function getInlineWidgetComponent(kind: AnyInlineKind, grammar: GrammarView): Component<InlineWidgetComponentProps> | undefined;
117
+ /** Descends into non-widget parents (the `image` inside `[![alt][ref]][repo]`) but never into a
118
+ * widget, whose children are atomic. `raw` is the enclosing block's source. */
119
+ export declare function flattenInlineWidgets(nodes: ReadonlyArray<InlineNode>, raw: string, grammar: GrammarView): InlineNode[];
120
+ /** A `component` kind mounts through the injected `buildPortalWidget`, keeping `core/` free of
121
+ * Svelte. Null for a non-widget, an image (built per render), or a missing or failed portal. */
122
+ export declare function buildCoreInlineWidget(node: InlineNode, raw: string, buildPortalWidget: ((node: InlineNode, raw: string) => HTMLElement | null) | undefined, grammar: GrammarView): HTMLElement | null;