@voithos-labs/aragonite 0.10.3 → 0.10.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1021) hide show
  1. package/README.md +2 -2
  2. package/dist/a11y-strings.d.ts +12 -5
  3. package/dist/a11y-strings.js +61 -5
  4. package/dist/action-contracts.d.ts +242 -155
  5. package/dist/action-contracts.js +2 -2
  6. package/dist/active-editor.d.ts +3 -3
  7. package/dist/active-editor.js +8 -9
  8. package/dist/ambient/ambient-dom.d.ts +2 -5
  9. package/dist/ambient/ambient-dom.js +16 -62
  10. package/dist/assert.js +6 -5
  11. package/dist/block-component.d.ts +135 -109
  12. package/dist/block-component.js +30 -22
  13. package/dist/block-id.d.ts +6 -10
  14. package/dist/block-id.js +25 -14
  15. package/dist/bounded-memo.d.ts +5 -5
  16. package/dist/bounded-memo.js +6 -6
  17. package/dist/components/BlockDragHandle.svelte +13 -20
  18. package/dist/components/BlockHost.svelte +56 -134
  19. package/dist/components/BlockList.svelte +22 -19
  20. package/dist/components/DecorationOverlay.svelte +9 -10
  21. package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
  22. package/dist/components/Editor.svelte +619 -1089
  23. package/dist/components/Editor.svelte.d.ts +9 -20
  24. package/dist/components/GapCaret.svelte +26 -59
  25. package/dist/components/SelectionOverlay.svelte +36 -67
  26. package/dist/components/SelectionOverlay.svelte.d.ts +6 -4
  27. package/dist/components/TailInsert.svelte +8 -55
  28. package/dist/components/TailInsert.svelte.d.ts +4 -6
  29. package/dist/components/block-content-selector.d.ts +11 -11
  30. package/dist/components/block-content-selector.js +11 -11
  31. package/dist/components/block-el-lookup.d.ts +6 -0
  32. package/dist/components/block-el-lookup.js +27 -0
  33. package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
  34. package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
  35. package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
  36. package/dist/components/blocks/code/CodeBlock.svelte +255 -276
  37. package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
  38. package/dist/components/blocks/code/CodeBlockRail.svelte +103 -100
  39. package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
  40. package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
  41. package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
  42. package/dist/components/blocks/code/code-bootstrap.js +35 -28
  43. package/dist/components/blocks/code/code-context-actions.js +5 -4
  44. package/dist/components/blocks/code/code-enter.js +2 -2
  45. package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
  46. package/dist/components/blocks/code/code-fence-boundary.js +40 -66
  47. package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
  48. package/dist/components/blocks/code/code-fence-exit.js +24 -25
  49. package/dist/components/blocks/code/code-indent.d.ts +2 -2
  50. package/dist/components/blocks/code/code-indent.js +4 -7
  51. package/dist/components/blocks/code/code-languages.d.ts +16 -12
  52. package/dist/components/blocks/code/code-languages.js +58 -32
  53. package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
  54. package/dist/components/blocks/code/code-paste-surface.js +9 -18
  55. package/dist/components/blocks/code/code-renderer.d.ts +21 -5
  56. package/dist/components/blocks/code/code-renderer.js +90 -125
  57. package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
  58. package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
  59. package/dist/components/blocks/directive/activate-directives.js +18 -13
  60. package/dist/components/blocks/editable-leaf.d.ts +50 -74
  61. package/dist/components/blocks/editable-leaf.js +144 -202
  62. package/dist/components/blocks/editable-surface.d.ts +96 -100
  63. package/dist/components/blocks/editable-surface.js +101 -109
  64. package/dist/components/blocks/list/ListBlock.svelte +46 -90
  65. package/dist/components/blocks/list/ListItemBlock.svelte +99 -144
  66. package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +3 -0
  67. package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
  68. package/dist/components/blocks/list/task-checkbox.js +12 -7
  69. package/dist/components/blocks/plain-text-backend.d.ts +4 -20
  70. package/dist/components/blocks/plain-text-backend.js +9 -43
  71. package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
  72. package/dist/components/blocks/surface-wiring.svelte.js +15 -34
  73. package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
  74. package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
  75. package/dist/components/blocks/table/TableBlock.svelte +100 -165
  76. package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
  77. package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
  78. package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
  79. package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
  80. package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
  81. package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
  82. package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
  83. package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
  84. package/dist/components/blocks/table/cell-pointer.js +49 -71
  85. package/dist/components/blocks/table/cell-render.d.ts +24 -29
  86. package/dist/components/blocks/table/cell-render.js +29 -31
  87. package/dist/components/blocks/table/selected-cells.d.ts +7 -7
  88. package/dist/components/blocks/table/selected-cells.js +9 -13
  89. package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
  90. package/dist/components/blocks/table/table-caret-at-point.js +5 -5
  91. package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
  92. package/dist/components/blocks/table/table-cell-paste.js +27 -43
  93. package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
  94. package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
  95. package/dist/components/blocks/table/table-menu-model.js +6 -10
  96. package/dist/components/blocks/table/table-navigation.js +2 -2
  97. package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
  98. package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
  99. package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
  100. package/dist/components/blocks/text/auto-pair-record.js +51 -0
  101. package/dist/components/blocks/text/click-snap-guard.d.ts +9 -4
  102. package/dist/components/blocks/text/click-snap-guard.js +16 -5
  103. package/dist/components/blocks/text/composition-seat.d.ts +17 -14
  104. package/dist/components/blocks/text/composition-seat.js +11 -11
  105. package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
  106. package/dist/components/blocks/text/construct-edge-delete.js +50 -65
  107. package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
  108. package/dist/components/blocks/text/construct-reveal.js +13 -14
  109. package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
  110. package/dist/components/blocks/text/delimiter-autopair.js +87 -103
  111. package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
  112. package/dist/components/blocks/text/edge-policy-dispatch.js +164 -180
  113. package/dist/components/blocks/text/edge-seat.d.ts +17 -26
  114. package/dist/components/blocks/text/edge-seat.js +43 -70
  115. package/dist/components/blocks/text/link-at-point.d.ts +9 -9
  116. package/dist/components/blocks/text/link-at-point.js +12 -15
  117. package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
  118. package/dist/components/blocks/text/live-join-seam.js +75 -112
  119. package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
  120. package/dist/components/blocks/text/live-selection-edit.js +32 -105
  121. package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
  122. package/dist/components/blocks/text/live-split-rebalance.js +50 -67
  123. package/dist/components/blocks/text/marker-completion.d.ts +7 -12
  124. package/dist/components/blocks/text/marker-completion.js +17 -10
  125. package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
  126. package/dist/components/blocks/text/pending-mark-insert.js +30 -49
  127. package/dist/components/blocks/text/screen-diff.d.ts +5 -15
  128. package/dist/components/blocks/text/screen-diff.js +5 -19
  129. package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
  130. package/dist/components/blocks/text/text-clipboard.js +27 -32
  131. package/dist/components/blocks/text/text-keydown.d.ts +20 -30
  132. package/dist/components/blocks/text/text-keydown.js +54 -51
  133. package/dist/components/blocks/text/text-render.d.ts +25 -35
  134. package/dist/components/blocks/text/text-render.js +82 -61
  135. package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
  136. package/dist/components/blocks/text/widget-adjacency.js +17 -17
  137. package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
  138. package/dist/components/blocks/text/widget-interaction.js +243 -208
  139. package/dist/components/blocks/widget-portal.d.ts +20 -29
  140. package/dist/components/blocks/widget-portal.js +16 -14
  141. package/dist/components/built-in-blocks.d.ts +3 -4
  142. package/dist/components/built-in-blocks.js +17 -18
  143. package/dist/components/drag-handle.d.ts +13 -30
  144. package/dist/components/drag-handle.js +25 -63
  145. package/dist/components/editor-built-ins.d.ts +1 -0
  146. package/dist/components/editor-built-ins.js +16 -0
  147. package/dist/components/editor-root-clipboard.d.ts +6 -6
  148. package/dist/components/editor-root-clipboard.js +16 -27
  149. package/dist/components/editor-root-document-swap.d.ts +49 -0
  150. package/dist/components/editor-root-document-swap.js +54 -0
  151. package/dist/components/editor-root-focus.d.ts +5 -4
  152. package/dist/components/editor-root-focus.js +51 -22
  153. package/dist/components/editor-root-focused-surface.d.ts +35 -0
  154. package/dist/components/editor-root-focused-surface.js +65 -0
  155. package/dist/components/editor-root-geometry.d.ts +15 -24
  156. package/dist/components/editor-root-geometry.js +27 -31
  157. package/dist/components/editor-root-gestures.d.ts +39 -0
  158. package/dist/components/editor-root-gestures.js +189 -0
  159. package/dist/components/editor-root-keydown.d.ts +10 -25
  160. package/dist/components/editor-root-keydown.js +19 -43
  161. package/dist/components/editor-root-listeners.d.ts +22 -31
  162. package/dist/components/editor-root-listeners.js +49 -46
  163. package/dist/components/editor-root-menus.d.ts +51 -0
  164. package/dist/components/editor-root-menus.js +147 -0
  165. package/dist/components/editor-root-mode-flip.d.ts +16 -11
  166. package/dist/components/editor-root-mode-flip.js +36 -34
  167. package/dist/components/editor-root-scroll-host.d.ts +22 -0
  168. package/dist/components/editor-root-scroll-host.js +34 -0
  169. package/dist/components/editor-root-test-surface.d.ts +48 -0
  170. package/dist/components/editor-root-test-surface.js +6 -0
  171. package/dist/components/image/ImageOverlayHost.svelte +44 -35
  172. package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
  173. package/dist/components/image/ImageProperties.svelte +37 -41
  174. package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
  175. package/dist/components/image/ImageResizeHandles.svelte +26 -30
  176. package/dist/components/image/image-crop.d.ts +5 -11
  177. package/dist/components/image/image-crop.js +5 -11
  178. package/dist/components/image/image-edit-commit.d.ts +19 -16
  179. package/dist/components/image/image-edit-commit.js +74 -38
  180. package/dist/components/image/image-resize.d.ts +2 -5
  181. package/dist/components/image/image-resize.js +3 -6
  182. package/dist/components/image/image-widget-editing.d.ts +3 -3
  183. package/dist/components/image/image-widget-editing.js +9 -9
  184. package/dist/components/image/widget-dom.d.ts +2 -3
  185. package/dist/components/image/widget-dom.js +19 -24
  186. package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
  187. package/dist/components/image/widget-selection-state.svelte.js +26 -19
  188. package/dist/components/kind-cue.svelte.d.ts +21 -0
  189. package/dist/components/kind-cue.svelte.js +35 -0
  190. package/dist/components/link-card/LinkCard.svelte +115 -64
  191. package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
  192. package/dist/components/link-card/LinkCardHost.svelte +42 -33
  193. package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
  194. package/dist/components/link-card/link-card-commit.d.ts +16 -19
  195. package/dist/components/link-card/link-card-commit.js +21 -30
  196. package/dist/components/link-card/link-card-entry.d.ts +13 -23
  197. package/dist/components/link-card/link-card-entry.js +16 -24
  198. package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
  199. package/dist/components/link-card/link-card-state.svelte.js +2 -2
  200. package/dist/components/lrd-map-gate.d.ts +4 -11
  201. package/dist/components/lrd-map-gate.js +5 -11
  202. package/dist/components/menu/BlockMenu.svelte +20 -81
  203. package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
  204. package/dist/components/menu/InlineMenuHost.svelte +191 -0
  205. package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
  206. package/dist/components/menu/MenuIcon.svelte +3 -103
  207. package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
  208. package/dist/components/menu/SelectionToolbar.svelte +380 -0
  209. package/dist/components/menu/SelectionToolbar.svelte.d.ts +14 -0
  210. package/dist/components/menu/clipboard-actions.d.ts +3 -4
  211. package/dist/components/menu/clipboard-actions.js +3 -4
  212. package/dist/components/menu/default-context-actions.d.ts +4 -13
  213. package/dist/components/menu/default-context-actions.js +49 -67
  214. package/dist/components/menu/flyout-placement.d.ts +2 -2
  215. package/dist/components/menu/flyout-placement.js +2 -2
  216. package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
  217. package/dist/components/menu/menu-presence.svelte.js +19 -0
  218. package/dist/components/paste-image-arm.d.ts +6 -11
  219. package/dist/components/paste-image-arm.js +11 -18
  220. package/dist/components/portal.d.ts +2 -5
  221. package/dist/components/portal.js +4 -7
  222. package/dist/core/directive/activate.d.ts +4 -5
  223. package/dist/core/directive/activate.js +8 -9
  224. package/dist/core/directive/container-opener.js +13 -12
  225. package/dist/core/directive/grammar.d.ts +2 -5
  226. package/dist/core/directive/grammar.js +10 -10
  227. package/dist/core/directive/kinds.d.ts +4 -7
  228. package/dist/core/directive/kinds.js +14 -16
  229. package/dist/core/directive/registry.d.ts +12 -9
  230. package/dist/core/directive/registry.js +19 -20
  231. package/dist/core/directive/text-recognizer.d.ts +3 -2
  232. package/dist/core/directive/text-recognizer.js +5 -9
  233. package/dist/core/escapable.d.ts +1 -5
  234. package/dist/core/escapable.js +1 -5
  235. package/dist/core/inline/backticks.d.ts +3 -4
  236. package/dist/core/inline/backticks.js +3 -4
  237. package/dist/core/inline/character-refs.js +2 -1
  238. package/dist/core/inline/destination-bytes.d.ts +6 -3
  239. package/dist/core/inline/destination-bytes.js +50 -8
  240. package/dist/core/inline/entity-widget.d.ts +4 -3
  241. package/dist/core/inline/entity-widget.js +6 -6
  242. package/dist/core/inline/format-toggle.d.ts +22 -28
  243. package/dist/core/inline/format-toggle.js +97 -129
  244. package/dist/core/inline/html-entities.d.ts +2 -3
  245. package/dist/core/inline/html-entities.js +2 -3
  246. package/dist/core/inline/html-tag-grammar.js +6 -2
  247. package/dist/core/inline/image-dimensions.d.ts +2 -0
  248. package/dist/core/inline/image-dimensions.js +19 -2
  249. package/dist/core/inline/image-source-bytes.d.ts +11 -0
  250. package/dist/core/inline/image-source-bytes.js +71 -0
  251. package/dist/core/inline/index.d.ts +28 -21
  252. package/dist/core/inline/index.js +56 -34
  253. package/dist/core/inline/inline-cache.d.ts +12 -15
  254. package/dist/core/inline/inline-cache.js +11 -14
  255. package/dist/core/inline/inline-widgets.d.ts +55 -68
  256. package/dist/core/inline/inline-widgets.js +55 -58
  257. package/dist/core/inline/link-destination.d.ts +31 -0
  258. package/dist/core/inline/link-destination.js +129 -0
  259. package/dist/core/inline/link-reference-resolver.d.ts +8 -6
  260. package/dist/core/inline/link-reference-resolver.js +10 -6
  261. package/dist/core/inline/link-source-bytes.d.ts +31 -0
  262. package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
  263. package/dist/core/inline/live-edit/read-back.d.ts +29 -0
  264. package/dist/core/inline/live-edit/read-back.js +50 -0
  265. package/dist/core/inline/picture.d.ts +10 -0
  266. package/dist/core/inline/picture.js +40 -0
  267. package/dist/core/inline/scan/autolinks.d.ts +7 -8
  268. package/dist/core/inline/scan/autolinks.js +80 -59
  269. package/dist/core/inline/scan/brackets.d.ts +2 -2
  270. package/dist/core/inline/scan/brackets.js +6 -103
  271. package/dist/core/inline/scan/code-spans.d.ts +4 -0
  272. package/dist/core/inline/scan/code-spans.js +8 -0
  273. package/dist/core/inline/scan/emphasis.js +10 -14
  274. package/dist/core/inline/scan/index.d.ts +3 -1
  275. package/dist/core/inline/scan/index.js +32 -33
  276. package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
  277. package/dist/core/inline/scan/plugin-syntax.js +75 -89
  278. package/dist/core/inline/scan/scan-state.d.ts +2 -0
  279. package/dist/core/inline/scan/scan-state.js +1 -0
  280. package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
  281. package/dist/core/inline/scan/simple-nodes.js +2 -5
  282. package/dist/core/inline/scan/triggers.d.ts +17 -0
  283. package/dist/core/inline/scan/triggers.js +26 -0
  284. package/dist/core/inline/scan/url.js +8 -10
  285. package/dist/core/inline/transparency.d.ts +2 -1
  286. package/dist/core/inline/transparency.js +33 -17
  287. package/dist/core/inline/visibility.d.ts +30 -49
  288. package/dist/core/inline/visibility.js +31 -49
  289. package/dist/core/inline/walk.d.ts +4 -10
  290. package/dist/core/inline/walk.js +4 -10
  291. package/dist/core/inline-render.d.ts +22 -27
  292. package/dist/core/inline-render.js +51 -60
  293. package/dist/core/lines.d.ts +67 -26
  294. package/dist/core/lines.js +164 -33
  295. package/dist/core/metadata-parity.d.ts +9 -0
  296. package/dist/core/metadata-parity.js +25 -0
  297. package/dist/core/node-views.d.ts +7 -6
  298. package/dist/core/node-views.js +5 -5
  299. package/dist/core/nodes.d.ts +34 -44
  300. package/dist/core/nodes.js +4 -12
  301. package/dist/core/parser.d.ts +27 -34
  302. package/dist/core/parser.js +53 -67
  303. package/dist/core/parsers/blockquote.d.ts +5 -8
  304. package/dist/core/parsers/blockquote.js +11 -10
  305. package/dist/core/parsers/built-in-openers.d.ts +2 -5
  306. package/dist/core/parsers/built-in-openers.js +5 -8
  307. package/dist/core/parsers/fence-syntax.d.ts +36 -7
  308. package/dist/core/parsers/fence-syntax.js +61 -11
  309. package/dist/core/parsers/fenced-code.d.ts +16 -0
  310. package/dist/core/parsers/fenced-code.js +16 -15
  311. package/dist/core/parsers/heading.d.ts +19 -2
  312. package/dist/core/parsers/heading.js +50 -2
  313. package/dist/core/parsers/html-block.d.ts +3 -6
  314. package/dist/core/parsers/html-block.js +10 -11
  315. package/dist/core/parsers/indented-code.d.ts +1 -1
  316. package/dist/core/parsers/indented-code.js +2 -8
  317. package/dist/core/parsers/link-reference.d.ts +5 -3
  318. package/dist/core/parsers/link-reference.js +116 -120
  319. package/dist/core/parsers/list.d.ts +12 -5
  320. package/dist/core/parsers/list.js +53 -36
  321. package/dist/core/parsers/paragraph.d.ts +3 -3
  322. package/dist/core/parsers/paragraph.js +14 -5
  323. package/dist/core/parsers/table-completion.d.ts +2 -5
  324. package/dist/core/parsers/table-completion.js +7 -10
  325. package/dist/core/parsers/table.d.ts +8 -8
  326. package/dist/core/parsers/table.js +23 -26
  327. package/dist/core/parsers/thematic-break.js +15 -14
  328. package/dist/core/paths.d.ts +13 -0
  329. package/dist/core/paths.js +31 -0
  330. package/dist/core/terminator-escalation.d.ts +0 -7
  331. package/dist/core/terminator-escalation.js +5 -8
  332. package/dist/core/url-policy.d.ts +2 -5
  333. package/dist/core/url-policy.js +8 -12
  334. package/dist/cursor/caret-memory.d.ts +34 -0
  335. package/dist/cursor/caret-memory.js +82 -0
  336. package/dist/cursor/coordinate-spaces.d.ts +26 -19
  337. package/dist/cursor/coordinate-spaces.js +32 -20
  338. package/dist/cursor/dom-walk.d.ts +7 -13
  339. package/dist/cursor/dom-walk.js +7 -13
  340. package/dist/cursor/edge-affinity.d.ts +7 -35
  341. package/dist/cursor/edge-affinity.js +13 -44
  342. package/dist/cursor/focused-caret.d.ts +6 -8
  343. package/dist/cursor/focused-caret.js +7 -16
  344. package/dist/cursor/height-model.d.ts +3 -3
  345. package/dist/cursor/height-model.js +5 -5
  346. package/dist/cursor/height-oracle.d.ts +10 -7
  347. package/dist/cursor/height-oracle.js +26 -75
  348. package/dist/cursor/observe-resize.d.ts +13 -0
  349. package/dist/cursor/observe-resize.js +43 -0
  350. package/dist/cursor/overlay-rects.d.ts +2 -5
  351. package/dist/cursor/overlay-rects.js +2 -5
  352. package/dist/cursor/overlay-remeasure.d.ts +6 -7
  353. package/dist/cursor/overlay-remeasure.js +10 -14
  354. package/dist/cursor/pending-marks.d.ts +7 -9
  355. package/dist/cursor/pending-marks.js +6 -27
  356. package/dist/cursor/point-offset.d.ts +16 -10
  357. package/dist/cursor/point-offset.js +60 -25
  358. package/dist/cursor/reveal-source.d.ts +7 -11
  359. package/dist/cursor/reveal-source.js +10 -18
  360. package/dist/cursor/scroll-ancestors.d.ts +9 -20
  361. package/dist/cursor/scroll-ancestors.js +14 -26
  362. package/dist/cursor/scroll-owner.d.ts +92 -0
  363. package/dist/cursor/scroll-owner.js +283 -0
  364. package/dist/cursor/scrollport.d.ts +16 -8
  365. package/dist/cursor/scrollport.js +28 -5
  366. package/dist/cursor/sticky-column.d.ts +6 -29
  367. package/dist/cursor/sticky-column.js +6 -49
  368. package/dist/cursor/sticky-measure.d.ts +14 -9
  369. package/dist/cursor/sticky-measure.js +99 -49
  370. package/dist/cursor/surface-backend.d.ts +41 -0
  371. package/dist/cursor/surface-backend.js +78 -0
  372. package/dist/cursor/typography-estimates.d.ts +3 -3
  373. package/dist/cursor/typography-estimates.js +3 -3
  374. package/dist/cursor/visual-lines.d.ts +25 -13
  375. package/dist/cursor/visual-lines.js +72 -28
  376. package/dist/cursor/widget-edge-snap.d.ts +23 -0
  377. package/dist/cursor/widget-edge-snap.js +39 -0
  378. package/dist/cursor/widget-offset.d.ts +111 -102
  379. package/dist/cursor/widget-offset.js +352 -177
  380. package/dist/debug/diagnostics-report.d.ts +6 -6
  381. package/dist/debug/diagnostics-report.js +5 -5
  382. package/dist/debug/dump-tree.js +2 -2
  383. package/dist/debug/editor-diagnostics.d.ts +15 -0
  384. package/dist/debug/editor-diagnostics.js +33 -0
  385. package/dist/debug/inspect.d.ts +2 -2
  386. package/dist/debug/inspect.js +4 -4
  387. package/dist/debug/interaction-trace.d.ts +14 -15
  388. package/dist/debug/interaction-trace.js +19 -20
  389. package/dist/debug/operations-log.d.ts +1 -1
  390. package/dist/debug/operations-log.js +1 -1
  391. package/dist/decorations/buckets.d.ts +6 -12
  392. package/dist/decorations/buckets.js +4 -11
  393. package/dist/decorations/decoration-state.svelte.d.ts +2 -3
  394. package/dist/decorations/decoration-state.svelte.js +24 -26
  395. package/dist/decorations/island-dom.d.ts +10 -18
  396. package/dist/decorations/island-dom.js +25 -50
  397. package/dist/decorations/reserved-attrs.d.ts +6 -8
  398. package/dist/decorations/reserved-attrs.js +31 -17
  399. package/dist/decorations/types.d.ts +6 -7
  400. package/dist/decorations/types.js +2 -1
  401. package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
  402. package/dist/decorations/use-block-decorations.svelte.js +71 -0
  403. package/dist/decorations/widget-dom.d.ts +3 -3
  404. package/dist/decorations/widget-dom.js +5 -5
  405. package/dist/dev-warn.d.ts +5 -2
  406. package/dist/dev-warn.js +16 -4
  407. package/dist/editor-actions/ancestry-folds.d.ts +9 -14
  408. package/dist/editor-actions/ancestry-folds.js +13 -18
  409. package/dist/editor-actions/block-edit-core.d.ts +49 -22
  410. package/dist/editor-actions/block-edit-core.js +279 -151
  411. package/dist/editor-actions/block-edit-scope.d.ts +63 -50
  412. package/dist/editor-actions/block-edit-scope.js +100 -48
  413. package/dist/editor-actions/block-edit.d.ts +2 -3
  414. package/dist/editor-actions/block-edit.js +14 -90
  415. package/dist/editor-actions/commit/history.d.ts +4 -4
  416. package/dist/editor-actions/commit/history.js +33 -34
  417. package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
  418. package/dist/editor-actions/commit/reading-write-gate.js +56 -0
  419. package/dist/editor-actions/commit/text-batch.d.ts +7 -11
  420. package/dist/editor-actions/commit/text-batch.js +6 -7
  421. package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
  422. package/dist/editor-actions/commit/undo-controller.js +346 -216
  423. package/dist/editor-actions/container-block-component.d.ts +32 -51
  424. package/dist/editor-actions/container-block-component.js +66 -92
  425. package/dist/editor-actions/container-edit.d.ts +4 -2
  426. package/dist/editor-actions/container-edit.js +14 -44
  427. package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
  428. package/dist/editor-actions/container-exit-overrides.js +19 -21
  429. package/dist/editor-actions/deps.d.ts +25 -32
  430. package/dist/editor-actions/enter-completion.d.ts +12 -15
  431. package/dist/editor-actions/enter-completion.js +49 -51
  432. package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
  433. package/dist/editor-actions/focus/focus-dispatch.js +33 -52
  434. package/dist/editor-actions/focus/focus-landing.d.ts +11 -5
  435. package/dist/editor-actions/focus/focus-landing.js +29 -14
  436. package/dist/editor-actions/focus/focus.d.ts +3 -2
  437. package/dist/editor-actions/focus/focus.js +42 -59
  438. package/dist/editor-actions/index.d.ts +4 -3
  439. package/dist/editor-actions/index.js +5 -4
  440. package/dist/editor-actions/inline-range-commit.d.ts +18 -16
  441. package/dist/editor-actions/inline-range-commit.js +45 -54
  442. package/dist/editor-actions/leaf-write.d.ts +11 -0
  443. package/dist/editor-actions/leaf-write.js +102 -0
  444. package/dist/editor-actions/list-context.d.ts +9 -10
  445. package/dist/editor-actions/list-context.js +115 -110
  446. package/dist/editor-actions/list-overrides.d.ts +13 -5
  447. package/dist/editor-actions/list-overrides.js +36 -12
  448. package/dist/editor-actions/merge-fallback.d.ts +10 -16
  449. package/dist/editor-actions/merge-fallback.js +11 -22
  450. package/dist/editor-actions/nested/container-actions.d.ts +37 -0
  451. package/dist/editor-actions/nested/container-actions.js +42 -0
  452. package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
  453. package/dist/editor-actions/nested/emptied-container.js +5 -0
  454. package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
  455. package/dist/editor-actions/nested/nested-actions.js +17 -15
  456. package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
  457. package/dist/editor-actions/nested/nested-block-edit.js +40 -134
  458. package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
  459. package/dist/editor-actions/nested/nested-focus.js +33 -21
  460. package/dist/editor-actions/paste-coordinator.d.ts +3 -2
  461. package/dist/editor-actions/paste-coordinator.js +17 -13
  462. package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
  463. package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
  464. package/dist/editor-actions/plugin/container.d.ts +55 -76
  465. package/dist/editor-actions/plugin/container.js +105 -186
  466. package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
  467. package/dist/editor-actions/plugin/directive-container.js +7 -8
  468. package/dist/editor-actions/reorder-action.d.ts +7 -12
  469. package/dist/editor-actions/reorder-action.js +32 -48
  470. package/dist/editor-actions/reorder-drag.d.ts +12 -8
  471. package/dist/editor-actions/reorder-drag.js +45 -41
  472. package/dist/editor-actions/replacement-focus.d.ts +13 -21
  473. package/dist/editor-actions/replacement-focus.js +32 -33
  474. package/dist/editor-actions/search-replace.js +71 -67
  475. package/dist/editor-actions/stored-caret.d.ts +7 -0
  476. package/dist/editor-actions/stored-caret.js +10 -0
  477. package/dist/editor-actions/table-context.d.ts +9 -11
  478. package/dist/editor-actions/table-context.js +70 -93
  479. package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
  480. package/dist/editor-actions/unwrap-strategies.js +52 -63
  481. package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
  482. package/dist/editor-actions/whole-block-focus-surface.js +43 -53
  483. package/dist/editor-events.d.ts +25 -29
  484. package/dist/editor-events.js +17 -28
  485. package/dist/editor-keys.d.ts +96 -104
  486. package/dist/editor-keys.js +11 -24
  487. package/dist/editor-props.d.ts +91 -71
  488. package/dist/editor-rects.d.ts +23 -34
  489. package/dist/editor-rects.js +9 -77
  490. package/dist/env.d.ts +6 -4
  491. package/dist/env.js +8 -4
  492. package/dist/index.d.ts +6 -2
  493. package/dist/index.js +5 -2
  494. package/dist/inline-menu/inline-menu-session.d.ts +37 -0
  495. package/dist/inline-menu/inline-menu-session.js +98 -0
  496. package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
  497. package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
  498. package/dist/inline-menu/types.d.ts +77 -0
  499. package/dist/inline-menu/types.js +7 -0
  500. package/dist/invariants/child-id-parity.d.ts +23 -0
  501. package/dist/invariants/child-id-parity.js +39 -0
  502. package/dist/invariants/commit-paths.d.ts +4 -4
  503. package/dist/invariants/commit-paths.js +4 -4
  504. package/dist/invariants/commit-scope.d.ts +4 -4
  505. package/dist/invariants/commit-scope.js +9 -8
  506. package/dist/invariants/context-keys.d.ts +2 -5
  507. package/dist/invariants/context-keys.js +3 -6
  508. package/dist/invariants/descriptor.d.ts +2 -6
  509. package/dist/invariants/descriptor.js +2 -6
  510. package/dist/invariants/inline-transitions.d.ts +9 -16
  511. package/dist/invariants/inline-transitions.js +10 -18
  512. package/dist/invariants/install.d.ts +18 -27
  513. package/dist/invariants/install.js +29 -30
  514. package/dist/invariants/keeps-a-block.d.ts +7 -0
  515. package/dist/invariants/keeps-a-block.js +14 -0
  516. package/dist/invariants/landable-caret.d.ts +5 -7
  517. package/dist/invariants/landable-caret.js +8 -11
  518. package/dist/invariants/landing-focus-scroll.d.ts +7 -0
  519. package/dist/invariants/landing-focus-scroll.js +13 -0
  520. package/dist/invariants/landing-value.d.ts +13 -0
  521. package/dist/invariants/landing-value.js +27 -0
  522. package/dist/invariants/marker-css-parity.d.ts +5 -6
  523. package/dist/invariants/marker-css-parity.js +11 -12
  524. package/dist/invariants/measures-in-own-list.d.ts +6 -0
  525. package/dist/invariants/measures-in-own-list.js +13 -0
  526. package/dist/invariants/node-shape.d.ts +18 -37
  527. package/dist/invariants/node-shape.js +123 -79
  528. package/dist/invariants/open-tail.d.ts +7 -0
  529. package/dist/invariants/open-tail.js +45 -0
  530. package/dist/invariants/placement-ends-widget.d.ts +8 -0
  531. package/dist/invariants/placement-ends-widget.js +13 -0
  532. package/dist/invariants/registry.d.ts +27 -66
  533. package/dist/invariants/registry.js +61 -137
  534. package/dist/invariants/render-fidelity.d.ts +4 -4
  535. package/dist/invariants/render-fidelity.js +5 -5
  536. package/dist/invariants/selection-endpoints.d.ts +6 -7
  537. package/dist/invariants/selection-endpoints.js +18 -16
  538. package/dist/invariants/single-node-sink.d.ts +4 -5
  539. package/dist/invariants/single-node-sink.js +4 -5
  540. package/dist/invariants/snapshot-integrity.d.ts +5 -6
  541. package/dist/invariants/snapshot-integrity.js +1 -1
  542. package/dist/invariants/structural-descriptor.d.ts +6 -15
  543. package/dist/invariants/structural-descriptor.js +6 -15
  544. package/dist/menu-icons.d.ts +47 -0
  545. package/dist/menu-icons.js +113 -0
  546. package/dist/perf/instruments.d.ts +20 -5
  547. package/dist/perf/instruments.js +35 -15
  548. package/dist/perf/use-mount-gauge.svelte.js +4 -4
  549. package/dist/plugin.d.ts +38 -8
  550. package/dist/plugin.js +102 -74
  551. package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
  552. package/dist/plugins/admonitions/admonition-kind.js +12 -10
  553. package/dist/plugins/admonitions/convert-document.d.ts +5 -5
  554. package/dist/plugins/admonitions/convert-document.js +8 -7
  555. package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
  556. package/dist/plugins/admonitions/gh-alert.js +21 -22
  557. package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
  558. package/dist/plugins/admonitions/github-alert-kind.js +28 -37
  559. package/dist/plugins/admonitions/index.js +2 -2
  560. package/dist/plugins/admonitions/kinds.d.ts +1 -1
  561. package/dist/plugins/admonitions/register.js +11 -2
  562. package/dist/plugins/details/DetailsBlock.svelte +20 -20
  563. package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
  564. package/dist/plugins/details/details-disclosure.svelte.js +6 -7
  565. package/dist/plugins/details/details-kind.d.ts +6 -7
  566. package/dist/plugins/details/details-kind.js +44 -59
  567. package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
  568. package/dist/plugins/emoji/emoji-recognizer.js +7 -14
  569. package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
  570. package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
  571. package/dist/plugins/footnotes/constants.d.ts +2 -0
  572. package/dist/plugins/footnotes/constants.js +3 -0
  573. package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
  574. package/dist/plugins/footnotes/footnote-definition.js +69 -45
  575. package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
  576. package/dist/plugins/footnotes/footnote-lookup.js +14 -26
  577. package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
  578. package/dist/plugins/footnotes/footnote-numbering.js +22 -31
  579. package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
  580. package/dist/plugins/footnotes/footnote-reference.js +8 -13
  581. package/dist/plugins/footnotes/index.js +2 -3
  582. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
  583. package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
  584. package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
  585. package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
  586. package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
  587. package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
  588. package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
  589. package/dist/plugins/highlight-occurrences/word-char.js +4 -0
  590. package/dist/plugins/latex/BlockMath.svelte +58 -75
  591. package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
  592. package/dist/plugins/latex/MathInline.svelte +10 -9
  593. package/dist/plugins/latex/flanking.d.ts +1 -0
  594. package/dist/plugins/latex/flanking.js +3 -0
  595. package/dist/plugins/latex/index.d.ts +1 -1
  596. package/dist/plugins/latex/latex-kind.d.ts +4 -4
  597. package/dist/plugins/latex/latex-kind.js +113 -85
  598. package/dist/plugins/latex/math-completion.d.ts +1 -1
  599. package/dist/plugins/latex/math-completion.js +5 -8
  600. package/dist/plugins/latex/math-layout.d.ts +2 -8
  601. package/dist/plugins/latex/math-layout.js +0 -9
  602. package/dist/plugins/latex/math-renderer.d.ts +17 -20
  603. package/dist/plugins/latex/math-renderer.js +21 -38
  604. package/dist/plugins/latex/math-source.d.ts +4 -8
  605. package/dist/plugins/latex/math-source.js +36 -75
  606. package/dist/plugins/latex/register.d.ts +10 -11
  607. package/dist/plugins/latex/register.js +24 -10
  608. package/dist/plugins/latex/renderer.d.ts +9 -10
  609. package/dist/plugins/latex/renderer.js +9 -24
  610. package/dist/plugins/mermaid/MermaidBlock.svelte +63 -47
  611. package/dist/plugins/mermaid/index.js +1 -1
  612. package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
  613. package/dist/plugins/mermaid/mermaid-kind.js +30 -47
  614. package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
  615. package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
  616. package/dist/plugins/mermaid/register.d.ts +3 -3
  617. package/dist/plugins/mermaid/register.js +5 -5
  618. package/dist/plugins/mermaid/renderer.d.ts +5 -5
  619. package/dist/plugins/mermaid/renderer.js +8 -11
  620. package/dist/plugins/parrot/ParrotBlock.svelte +18 -7
  621. package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
  622. package/dist/plugins/parrot/parrot-plugin.js +3 -3
  623. package/dist/plugins/slash-commands/filter.d.ts +23 -0
  624. package/dist/plugins/slash-commands/filter.js +31 -0
  625. package/dist/plugins/slash-commands/index.d.ts +2 -0
  626. package/dist/plugins/slash-commands/index.js +2 -0
  627. package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
  628. package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
  629. package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
  630. package/dist/plugins/slash-commands/slash-source.js +108 -0
  631. package/dist/plugins/toc/TocBlock.svelte +23 -22
  632. package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
  633. package/dist/plugins/toc/heading-outline.d.ts +7 -12
  634. package/dist/plugins/toc/heading-outline.js +22 -36
  635. package/dist/plugins/toc/navigation-queue.d.ts +2 -4
  636. package/dist/plugins/toc/toc-plugin.d.ts +5 -5
  637. package/dist/plugins/toc/toc-plugin.js +20 -13
  638. package/dist/presentation-mode.d.ts +15 -23
  639. package/dist/presentation-mode.js +19 -25
  640. package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
  641. package/dist/reactivity/block-list-state.svelte.js +8 -9
  642. package/dist/reactivity/block-window.svelte.d.ts +12 -6
  643. package/dist/reactivity/block-window.svelte.js +44 -17
  644. package/dist/reactivity/child-list.d.ts +34 -0
  645. package/dist/reactivity/child-list.js +48 -0
  646. package/dist/reactivity/content-version.svelte.d.ts +4 -7
  647. package/dist/reactivity/content-version.svelte.js +3 -5
  648. package/dist/reactivity/hold-across.d.ts +39 -0
  649. package/dist/reactivity/hold-across.js +57 -0
  650. package/dist/reactivity/layout-state.svelte.d.ts +27 -0
  651. package/dist/reactivity/layout-state.svelte.js +51 -0
  652. package/dist/reactivity/list-tree.d.ts +39 -0
  653. package/dist/reactivity/list-tree.js +132 -0
  654. package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
  655. package/dist/reactivity/list-windowing.svelte.js +143 -292
  656. package/dist/reactivity/measure-batch.d.ts +6 -8
  657. package/dist/reactivity/measure-batch.js +5 -6
  658. package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
  659. package/dist/reactivity/publish-ref.svelte.js +21 -85
  660. package/dist/reactivity/scope-geometry.d.ts +6 -13
  661. package/dist/reactivity/scope-geometry.js +7 -14
  662. package/dist/reactivity/state-registry.d.ts +5 -5
  663. package/dist/reactivity/state-registry.js +11 -15
  664. package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
  665. package/dist/reactivity/use-container-windowing.svelte.js +64 -74
  666. package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
  667. package/dist/reactivity/use-measured-child.svelte.js +41 -0
  668. package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
  669. package/dist/reactivity/use-window-floor.svelte.js +27 -0
  670. package/dist/reactivity/window-slice.d.ts +4 -4
  671. package/dist/reactivity/window-slice.js +0 -2
  672. package/dist/renderer-slot.d.ts +48 -0
  673. package/dist/renderer-slot.js +85 -0
  674. package/dist/scan-index.d.ts +4 -4
  675. package/dist/scan-index.js +4 -4
  676. package/dist/schema/block-commands.d.ts +69 -54
  677. package/dist/schema/block-commands.js +91 -104
  678. package/dist/schema/block-completions.d.ts +16 -19
  679. package/dist/schema/block-completions.js +25 -32
  680. package/dist/schema/block-component-registry.d.ts +13 -14
  681. package/dist/schema/block-component-registry.js +19 -17
  682. package/dist/schema/block-kind-descriptor.d.ts +234 -168
  683. package/dist/schema/block-kind-descriptor.js +151 -66
  684. package/dist/schema/block-openers.d.ts +48 -39
  685. package/dist/schema/block-openers.js +73 -83
  686. package/dist/schema/built-in-descriptors.d.ts +3 -5
  687. package/dist/schema/built-in-descriptors.js +96 -80
  688. package/dist/schema/child-spans.d.ts +12 -10
  689. package/dist/schema/child-spans.js +68 -34
  690. package/dist/schema/closure.d.ts +18 -16
  691. package/dist/schema/closure.js +24 -14
  692. package/dist/schema/command-id.d.ts +6 -8
  693. package/dist/schema/command-id.js +20 -25
  694. package/dist/schema/commands.d.ts +79 -81
  695. package/dist/schema/commands.js +156 -116
  696. package/dist/schema/container-raw.d.ts +51 -11
  697. package/dist/schema/container-raw.js +143 -14
  698. package/dist/schema/container-rebuilders.d.ts +17 -15
  699. package/dist/schema/container-rebuilders.js +30 -22
  700. package/dist/schema/context-actions.d.ts +25 -13
  701. package/dist/schema/context-actions.js +32 -17
  702. package/dist/schema/define-plugin-block.d.ts +8 -6
  703. package/dist/schema/define-plugin-block.js +6 -4
  704. package/dist/schema/fenced-code-raw.d.ts +30 -17
  705. package/dist/schema/fenced-code-raw.js +155 -107
  706. package/dist/schema/global-commands.d.ts +6 -6
  707. package/dist/schema/global-commands.js +14 -22
  708. package/dist/schema/height-estimates.d.ts +31 -0
  709. package/dist/schema/height-estimates.js +64 -0
  710. package/dist/schema/inline-construct-policy.d.ts +42 -55
  711. package/dist/schema/inline-construct-policy.js +36 -35
  712. package/dist/schema/insert-catalogue.d.ts +30 -0
  713. package/dist/schema/insert-catalogue.js +95 -0
  714. package/dist/schema/keybinding-overrides.d.ts +9 -11
  715. package/dist/schema/keybinding-overrides.js +1 -1
  716. package/dist/schema/keybindings.d.ts +15 -7
  717. package/dist/schema/keybindings.js +21 -9
  718. package/dist/schema/merge-rules.d.ts +5 -7
  719. package/dist/schema/merge-rules.js +7 -9
  720. package/dist/schema/opener-priorities.d.ts +4 -4
  721. package/dist/schema/opener-priorities.js +4 -4
  722. package/dist/schema/operations.d.ts +9 -11
  723. package/dist/schema/operations.js +3 -3
  724. package/dist/schema/page-role.d.ts +14 -0
  725. package/dist/schema/page-role.js +19 -0
  726. package/dist/schema/plugin-activation.d.ts +4 -6
  727. package/dist/schema/plugin-activation.js +12 -10
  728. package/dist/schema/plugin-editor-context.d.ts +25 -10
  729. package/dist/schema/plugin-editor-context.js +40 -9
  730. package/dist/schema/plugin-install.d.ts +49 -17
  731. package/dist/schema/plugin-install.js +51 -25
  732. package/dist/schema/plugin-kind.d.ts +12 -8
  733. package/dist/schema/plugin-kind.js +35 -42
  734. package/dist/schema/plugin-name.js +3 -3
  735. package/dist/schema/plugin-registry.d.ts +54 -0
  736. package/dist/schema/plugin-registry.js +70 -0
  737. package/dist/schema/reading.d.ts +23 -0
  738. package/dist/schema/reading.js +7 -0
  739. package/dist/schema/register-once.d.ts +3 -5
  740. package/dist/schema/register-once.js +7 -16
  741. package/dist/schema/registration-checks.d.ts +12 -16
  742. package/dist/schema/registration-checks.js +35 -51
  743. package/dist/schema/registration-pairs.d.ts +54 -0
  744. package/dist/schema/registration-pairs.js +48 -0
  745. package/dist/schema/registration-pending.d.ts +8 -12
  746. package/dist/schema/registration-pending.js +9 -9
  747. package/dist/schema/registry-reset.d.ts +8 -4
  748. package/dist/schema/registry-reset.js +13 -26
  749. package/dist/schema/registry-view.d.ts +25 -13
  750. package/dist/schema/registry-view.js +26 -20
  751. package/dist/schema/reserved-chords.d.ts +9 -10
  752. package/dist/schema/reserved-chords.js +73 -78
  753. package/dist/schema/reserved-chrome.d.ts +12 -11
  754. package/dist/schema/reserved-chrome.js +15 -11
  755. package/dist/schema/setext-raw.d.ts +13 -0
  756. package/dist/schema/setext-raw.js +33 -0
  757. package/dist/schema/stored-as.d.ts +20 -0
  758. package/dist/schema/stored-as.js +6 -0
  759. package/dist/schema/table-cell-raw.d.ts +18 -7
  760. package/dist/schema/table-cell-raw.js +28 -7
  761. package/dist/schema/whole-block-unit.d.ts +5 -4
  762. package/dist/schema/whole-block-unit.js +5 -4
  763. package/dist/search/document-scan.d.ts +3 -3
  764. package/dist/search/document-scan.js +2 -2
  765. package/dist/search/matcher.d.ts +1 -1
  766. package/dist/search/regex-executor.d.ts +5 -6
  767. package/dist/search/regex-executor.js +6 -8
  768. package/dist/search/replace.d.ts +2 -5
  769. package/dist/search/replace.js +2 -5
  770. package/dist/search/search-state.svelte.d.ts +5 -5
  771. package/dist/search/search-state.svelte.js +12 -16
  772. package/dist/selection/autoscroll.d.ts +6 -9
  773. package/dist/selection/block-hit-test.d.ts +16 -24
  774. package/dist/selection/block-hit-test.js +29 -22
  775. package/dist/selection/caret-doors.d.ts +15 -14
  776. package/dist/selection/caret-doors.js +37 -26
  777. package/dist/selection/caret-landing.d.ts +62 -0
  778. package/dist/selection/caret-landing.js +157 -0
  779. package/dist/selection/caret-restore.d.ts +17 -10
  780. package/dist/selection/caret-restore.js +10 -22
  781. package/dist/selection/caret-target.d.ts +30 -0
  782. package/dist/selection/caret-target.js +84 -0
  783. package/dist/selection/char-endpoint-snap.d.ts +6 -10
  784. package/dist/selection/char-endpoint-snap.js +8 -14
  785. package/dist/selection/clipboard-text.d.ts +5 -12
  786. package/dist/selection/clipboard-text.js +69 -172
  787. package/dist/selection/covered-block.d.ts +6 -8
  788. package/dist/selection/covered-block.js +8 -19
  789. package/dist/selection/cross-block/clipboard.d.ts +3 -2
  790. package/dist/selection/cross-block/clipboard.js +13 -4
  791. package/dist/selection/cross-block/dispatch.d.ts +47 -43
  792. package/dist/selection/cross-block/dispatch.js +12 -23
  793. package/dist/selection/cross-block/format-range.d.ts +18 -21
  794. package/dist/selection/cross-block/format-range.js +104 -103
  795. package/dist/selection/cross-block/format-toggle.d.ts +10 -15
  796. package/dist/selection/cross-block/format-toggle.js +28 -33
  797. package/dist/selection/cross-block/keydown.d.ts +4 -4
  798. package/dist/selection/cross-block/keydown.js +93 -152
  799. package/dist/selection/cross-block/ops.d.ts +19 -34
  800. package/dist/selection/cross-block/ops.js +110 -95
  801. package/dist/selection/cross-block/paste.d.ts +2 -3
  802. package/dist/selection/cross-block/paste.js +61 -104
  803. package/dist/selection/cross-block/pointer.d.ts +17 -15
  804. package/dist/selection/cross-block/pointer.js +74 -25
  805. package/dist/selection/cross-block/type-replace.d.ts +4 -6
  806. package/dist/selection/cross-block/type-replace.js +53 -146
  807. package/dist/selection/dead-space-caret.d.ts +20 -28
  808. package/dist/selection/dead-space-caret.js +79 -87
  809. package/dist/selection/drag-pointer.d.ts +22 -5
  810. package/dist/selection/drag-pointer.js +63 -31
  811. package/dist/selection/gap-caret.d.ts +17 -28
  812. package/dist/selection/gap-caret.js +14 -26
  813. package/dist/selection/grid-selection.d.ts +12 -0
  814. package/dist/selection/grid-selection.js +22 -0
  815. package/dist/selection/keyboard-extend.d.ts +27 -39
  816. package/dist/selection/keyboard-extend.js +94 -116
  817. package/dist/selection/multi-click.d.ts +37 -0
  818. package/dist/selection/multi-click.js +197 -0
  819. package/dist/selection/native-bridge.d.ts +30 -37
  820. package/dist/selection/native-bridge.js +80 -100
  821. package/dist/selection/nearest-block.d.ts +17 -12
  822. package/dist/selection/nearest-block.js +37 -18
  823. package/dist/selection/path-lookup.d.ts +31 -14
  824. package/dist/selection/path-lookup.js +110 -20
  825. package/dist/selection/path-math.d.ts +9 -11
  826. package/dist/selection/path-math.js +5 -7
  827. package/dist/selection/pointer-gesture.d.ts +9 -0
  828. package/dist/selection/pointer-gesture.js +11 -0
  829. package/dist/selection/pointer-session.d.ts +10 -16
  830. package/dist/selection/pointer-session.js +6 -7
  831. package/dist/selection/primitives.d.ts +64 -33
  832. package/dist/selection/primitives.js +61 -53
  833. package/dist/selection/range-coverage.d.ts +94 -0
  834. package/dist/selection/range-coverage.js +365 -0
  835. package/dist/selection/range-delete-ceremony.d.ts +28 -74
  836. package/dist/selection/range-delete-ceremony.js +100 -141
  837. package/dist/selection/range-delete-chrome.d.ts +20 -33
  838. package/dist/selection/range-delete-chrome.js +53 -78
  839. package/dist/selection/range-delete-table-coverage.d.ts +11 -25
  840. package/dist/selection/range-delete-table-coverage.js +42 -112
  841. package/dist/selection/range-delete-table.d.ts +14 -12
  842. package/dist/selection/range-delete-table.js +106 -310
  843. package/dist/selection/range-delete.d.ts +18 -19
  844. package/dist/selection/range-delete.js +83 -123
  845. package/dist/selection/round-trip-restore.d.ts +18 -0
  846. package/dist/selection/round-trip-restore.js +19 -0
  847. package/dist/selection/selection-announcer.d.ts +17 -0
  848. package/dist/selection/selection-announcer.js +25 -0
  849. package/dist/selection/selection-description.d.ts +4 -3
  850. package/dist/selection/selection-description.js +5 -4
  851. package/dist/selection/selection-drop.d.ts +52 -0
  852. package/dist/selection/selection-drop.js +317 -0
  853. package/dist/selection/selection-restore.d.ts +20 -33
  854. package/dist/selection/selection-restore.js +21 -44
  855. package/dist/selection/selection-state.svelte.d.ts +50 -42
  856. package/dist/selection/selection-state.svelte.js +144 -98
  857. package/dist/selection/shared-keydown.d.ts +22 -27
  858. package/dist/selection/shared-keydown.js +25 -45
  859. package/dist/selection/table-endpoint-snap.d.ts +17 -41
  860. package/dist/selection/table-endpoint-snap.js +54 -80
  861. package/dist/selection/table-rect-extend.d.ts +3 -6
  862. package/dist/selection/table-rect-extend.js +19 -14
  863. package/dist/styles/editor-theme.css +75 -53
  864. package/dist/styles/editor.css +248 -139
  865. package/dist/testing/conformance-core.d.ts +50 -18
  866. package/dist/testing/conformance-core.js +88 -50
  867. package/dist/testing/container-conformance.d.ts +48 -84
  868. package/dist/testing/container-conformance.js +159 -285
  869. package/dist/testing/headless-actions.d.ts +34 -19
  870. package/dist/testing/headless-actions.js +116 -65
  871. package/dist/testing/headless-block-list.svelte.d.ts +16 -0
  872. package/dist/testing/headless-block-list.svelte.js +22 -0
  873. package/dist/testing/inline-conformance.d.ts +15 -22
  874. package/dist/testing/inline-conformance.js +131 -148
  875. package/dist/testing/kind-conformance.d.ts +19 -24
  876. package/dist/testing/kind-conformance.js +204 -117
  877. package/dist/testing/kit-reading.d.ts +7 -0
  878. package/dist/testing/kit-reading.js +16 -0
  879. package/dist/testing/mount-dom-stubs.d.ts +4 -5
  880. package/dist/testing/mount-dom-stubs.js +8 -5
  881. package/dist/testing/parse-convergence.d.ts +10 -10
  882. package/dist/testing/parse-convergence.js +14 -49
  883. package/dist/testing.d.ts +13 -9
  884. package/dist/testing.js +28 -38
  885. package/dist/tree-operations/blockquote.d.ts +8 -14
  886. package/dist/tree-operations/blockquote.js +25 -45
  887. package/dist/tree-operations/chain-rebuild.d.ts +34 -25
  888. package/dist/tree-operations/chain-rebuild.js +115 -52
  889. package/dist/tree-operations/children.d.ts +5 -9
  890. package/dist/tree-operations/children.js +7 -11
  891. package/dist/tree-operations/cleanup.d.ts +6 -7
  892. package/dist/tree-operations/cleanup.js +14 -11
  893. package/dist/tree-operations/clone.js +5 -4
  894. package/dist/tree-operations/container-lift.d.ts +10 -5
  895. package/dist/tree-operations/container-lift.js +20 -14
  896. package/dist/tree-operations/container-offsets.d.ts +22 -0
  897. package/dist/tree-operations/container-offsets.js +89 -0
  898. package/dist/tree-operations/content-write.d.ts +52 -29
  899. package/dist/tree-operations/content-write.js +155 -110
  900. package/dist/tree-operations/index.d.ts +4 -4
  901. package/dist/tree-operations/index.js +4 -4
  902. package/dist/tree-operations/keep-one-block.d.ts +10 -0
  903. package/dist/tree-operations/keep-one-block.js +19 -0
  904. package/dist/tree-operations/leaf-range.d.ts +33 -0
  905. package/dist/tree-operations/leaf-range.js +67 -0
  906. package/dist/tree-operations/list/empty-check.d.ts +2 -3
  907. package/dist/tree-operations/list/empty-check.js +4 -4
  908. package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
  909. package/dist/tree-operations/list/exit-replacement.js +4 -9
  910. package/dist/tree-operations/list/item-partition.d.ts +2 -2
  911. package/dist/tree-operations/list/item-partition.js +2 -2
  912. package/dist/tree-operations/list/list-builders.d.ts +18 -16
  913. package/dist/tree-operations/list/list-builders.js +59 -30
  914. package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
  915. package/dist/tree-operations/list/ordered-markers.js +7 -16
  916. package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
  917. package/dist/tree-operations/list/reconcile-task.js +80 -23
  918. package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
  919. package/dist/tree-operations/list/sublist-separator.js +20 -27
  920. package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
  921. package/dist/tree-operations/list/task-paragraph.js +54 -0
  922. package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
  923. package/dist/tree-operations/list/unwrap-merge.js +44 -79
  924. package/dist/tree-operations/node-ops.d.ts +30 -52
  925. package/dist/tree-operations/node-ops.js +152 -218
  926. package/dist/tree-operations/node-primitives.d.ts +44 -31
  927. package/dist/tree-operations/node-primitives.js +84 -60
  928. package/dist/tree-operations/open-tail.d.ts +25 -0
  929. package/dist/tree-operations/open-tail.js +100 -0
  930. package/dist/tree-operations/parse-block.d.ts +15 -2
  931. package/dist/tree-operations/parse-block.js +19 -4
  932. package/dist/tree-operations/paste/apply.d.ts +7 -8
  933. package/dist/tree-operations/paste/apply.js +33 -63
  934. package/dist/tree-operations/paste/body-write.d.ts +8 -6
  935. package/dist/tree-operations/paste/body-write.js +13 -14
  936. package/dist/tree-operations/paste/container-match.d.ts +7 -10
  937. package/dist/tree-operations/paste/container-match.js +76 -58
  938. package/dist/tree-operations/paste/container-paste.d.ts +3 -3
  939. package/dist/tree-operations/paste/container-paste.js +3 -3
  940. package/dist/tree-operations/paste/dispatch.d.ts +26 -29
  941. package/dist/tree-operations/paste/dispatch.js +68 -53
  942. package/dist/tree-operations/paste/focus-target.d.ts +11 -14
  943. package/dist/tree-operations/paste/focus-target.js +13 -18
  944. package/dist/tree-operations/paste/hooks.d.ts +7 -12
  945. package/dist/tree-operations/paste/hooks.js +49 -46
  946. package/dist/tree-operations/paste/line-ending.d.ts +11 -0
  947. package/dist/tree-operations/paste/line-ending.js +32 -0
  948. package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
  949. package/dist/tree-operations/paste/list-absorb.js +17 -19
  950. package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
  951. package/dist/tree-operations/paste/list-break-out.js +24 -32
  952. package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
  953. package/dist/tree-operations/paste/parent-scope.js +9 -16
  954. package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
  955. package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
  956. package/dist/tree-operations/paste/paste-replacement.js +73 -42
  957. package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
  958. package/dist/tree-operations/paste/paste-transforms.js +18 -27
  959. package/dist/tree-operations/paste/replacement-parse.d.ts +19 -0
  960. package/dist/tree-operations/paste/replacement-parse.js +24 -0
  961. package/dist/tree-operations/paste/strategy.d.ts +1 -1
  962. package/dist/tree-operations/paste/strategy.js +1 -1
  963. package/dist/tree-operations/paste/table-slice.js +15 -10
  964. package/dist/tree-operations/paste-surfaces.d.ts +18 -29
  965. package/dist/tree-operations/paste-surfaces.js +14 -10
  966. package/dist/tree-operations/path-mutate.d.ts +7 -8
  967. package/dist/tree-operations/path-mutate.js +4 -4
  968. package/dist/tree-operations/reorder-unit.d.ts +4 -5
  969. package/dist/tree-operations/reorder-unit.js +5 -6
  970. package/dist/tree-operations/reorder.d.ts +7 -9
  971. package/dist/tree-operations/reorder.js +39 -40
  972. package/dist/tree-operations/settle.d.ts +42 -53
  973. package/dist/tree-operations/settle.js +241 -162
  974. package/dist/tree-operations/sharing.d.ts +5 -5
  975. package/dist/tree-operations/splice-many.d.ts +5 -5
  976. package/dist/tree-operations/splice-many.js +5 -5
  977. package/dist/tree-operations/stored-as.d.ts +13 -0
  978. package/dist/tree-operations/stored-as.js +48 -0
  979. package/dist/tree-operations/structural-change.d.ts +11 -15
  980. package/dist/tree-operations/structural-change.js +10 -14
  981. package/dist/tree-operations/structural-suffix.d.ts +22 -0
  982. package/dist/tree-operations/structural-suffix.js +61 -0
  983. package/dist/tree-operations/sub-table-copy.d.ts +7 -0
  984. package/dist/tree-operations/sub-table-copy.js +40 -36
  985. package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
  986. package/dist/tree-operations/table-grid-clipboard.js +11 -36
  987. package/dist/tree-operations/table-mutations.d.ts +7 -3
  988. package/dist/tree-operations/table-mutations.js +45 -9
  989. package/dist/tree-operations/unshare.d.ts +11 -15
  990. package/dist/tree-operations/unshare.js +15 -17
  991. package/dist/undo/manager.js +1 -1
  992. package/dist/undo/types.d.ts +2 -2
  993. package/docs/guide/consumer-guide.md +329 -205
  994. package/docs/guide/directives.md +7 -7
  995. package/docs/guide/plugin-api.md +267 -183
  996. package/docs/guide/plugin-guide.md +341 -235
  997. package/docs/guide/plugin-testing.md +96 -82
  998. package/package.json +17 -21
  999. package/dist/ambient/ambient-cursor.d.ts +0 -41
  1000. package/dist/ambient/ambient-cursor.js +0 -120
  1001. package/dist/components/blocks/code/code-paste.d.ts +0 -24
  1002. package/dist/components/blocks/code/code-paste.js +0 -21
  1003. package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
  1004. package/dist/components/blocks/table/cell-clipboard.js +0 -67
  1005. package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
  1006. package/dist/components/blocks/text/hidden-suffix.js +0 -15
  1007. package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
  1008. package/dist/components/image/image-source-bytes.d.ts +0 -15
  1009. package/dist/components/image/image-source-bytes.js +0 -80
  1010. package/dist/cursor/content-offsets.d.ts +0 -29
  1011. package/dist/cursor/content-offsets.js +0 -151
  1012. package/dist/cursor/reveal-anchor.d.ts +0 -30
  1013. package/dist/cursor/reveal-anchor.js +0 -31
  1014. package/dist/invariants/split-landing.d.ts +0 -8
  1015. package/dist/invariants/split-landing.js +0 -15
  1016. package/dist/selection/double-click-trim.d.ts +0 -17
  1017. package/dist/selection/double-click-trim.js +0 -57
  1018. package/dist/tree-operations/list/terminator.d.ts +0 -17
  1019. package/dist/tree-operations/list/terminator.js +0 -60
  1020. package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -29
  1021. package/dist/tree-operations/paste/replace-block-at-parent.js +0 -75
@@ -1,4 +1,3 @@
1
- import { type StickyColumnDirection } from '../../../block-component';
2
1
  import type { NodeView } from '../../../core/node-views';
3
2
  import { type CommandId } from '../../../schema/commands';
4
3
  type $$ComponentProps = {
@@ -11,13 +10,13 @@ declare const CodeBlock: import("svelte").Component<$$ComponentProps, {
11
10
  focusable: true;
12
11
  focus: (offset: number) => void;
13
12
  parkCaret: (offset: number) => void;
14
- focusAtColumn: (x: number, from: StickyColumnDirection) => void;
13
+ focusAtColumn: (x: number, from: import("../../../block-component").StickyColumnDirection) => void;
15
14
  getCursorOffset: () => number | null;
16
15
  getSelectedText: () => string;
17
16
  setSelection: (start: number, end: number) => void;
18
17
  measurePartialRects: (startOffset: number, endOffset: number) => DOMRect[];
19
18
  runCommand: (id: CommandId) => boolean;
20
- insertMarkdown: (md: string) => boolean;
19
+ insertMarkdown: (md: string) => Promise<boolean>;
21
20
  }, "">;
22
21
  type CodeBlock = ReturnType<typeof CodeBlock>;
23
22
  export default CodeBlock;
@@ -10,54 +10,59 @@
10
10
  codeLanguageLabel
11
11
  } from '../../../a11y-strings';
12
12
  import type { CodeMenuItem } from '../../../editor-keys';
13
- import { listLanguages } from './code-languages';
13
+ import type { MenuPresence } from '../../menu/menu-presence.svelte';
14
+ import type { PluginActivation } from '../../../schema/plugin-activation';
15
+ import { getLanguageAliases, getLanguageGrammar, listLanguages } from './code-languages';
16
+ import { fenceLanguage } from '../../../core/parsers/fence-syntax';
14
17
 
15
- // The chrome for the modes that paint no fence: the language door plus whatever action
16
- // affordances the host has earned by installing a hook. Drafts live here and only a
18
+ // What the modes that draw no fence show instead: the language control plus whatever
19
+ // actions the host has enabled by installing a hook. A draft lives here and only a
17
20
  // commit reaches the tree.
18
21
  let {
19
22
  info,
23
+ activation,
20
24
  editable,
21
25
  autoOpen = false,
22
26
  onCommit,
23
27
  onCancel,
24
28
  onRun,
25
29
  onCopy,
26
- menuItems
30
+ menuItems,
31
+ menuPresence
27
32
  }: {
28
33
  /** The opener's full info string; the button shows its first token. */
29
34
  info: string;
30
- /** False in reading mode, which writes no bytes — the chip is then a label. */
35
+ /** The editor's plugins, so the picker offers only the languages this editor highlights. */
36
+ activation: PluginActivation;
37
+ /** False in reading mode, which writes no bytes, so the chip is then a label. */
31
38
  editable: boolean;
32
- /** Open the language field as soon as the rail mounts: a fence the user just created
33
- * has no language yet, and asking is the whole reason the chip exists. */
39
+ /** Open the language field as soon as the gutter mounts, for a fence the user just
40
+ * created and has not given a language yet. */
34
41
  autoOpen?: boolean;
35
42
  /** Only Enter or a list pick calls this, and it owns the caret's landing afterwards. */
36
43
  onCommit: (info: string) => void;
37
44
  /** Nothing written. Escape asks for the caret back; a blur must not yank it from
38
45
  * wherever the user just clicked, so it does not. */
39
46
  onCancel: (returnCaret: boolean) => void;
40
- /** Absent when the host installed no execution hook — no run affordance renders. */
47
+ /** Absent when the host installed no execution hook, so no run button renders. */
41
48
  onRun?: () => void;
42
49
  /** Copies the fence body; resolves once the clipboard write settles. */
43
50
  onCopy: () => Promise<boolean>;
44
51
  /** Consulted on each open, so items read live state. Empty renders no affordance. */
45
52
  menuItems?: () => readonly CodeMenuItem[];
53
+ menuPresence: MenuPresence;
46
54
  } = $props();
47
55
 
48
- const language = $derived(info.split(/\s+/)[0] || 'text');
56
+ const language = $derived(fenceLanguage(info) || 'text');
49
57
 
50
58
  let editing = $state(false);
51
59
  let draft = $state('');
52
- // The draft SEEDS with the current language, so filtering on it from the start would open
53
- // the picker onto a list of one. Filtering waits for a keystroke; until then the full list
54
- // shows with the current language highlighted, which is also what Enter would re-commit.
60
+ // Filtering waits for a keystroke: the field opens empty, and until then the whole list
61
+ // shows with the block's own language leading it, which is what a bare Enter re-commits.
55
62
  let filtering = $state(false);
56
- // Whether the LIST is what Enter should take. Until the user types or arrows, it is not:
57
- // the highlight is only a where-you-stand marker, and a language the registry does not
58
- // carry (an unregistered grammar, or a bare mount that registered none) would otherwise
59
- // have no entry to seat on, so a bare Enter would rewrite it to the list's first row.
60
63
  let activeIndex = $state(0);
64
+ /** The user moved the highlight, so the row it sits on wins over whatever they typed. */
65
+ let highlightMoved = false;
61
66
  let copied = $state(false);
62
67
  let menuOpen = $state(false);
63
68
  let openMenuItems = $state<readonly CodeMenuItem[]>([]);
@@ -70,32 +75,44 @@
70
75
  let menuEl: HTMLElement | undefined = $state();
71
76
  let menuButtonEl: HTMLElement | undefined = $state();
72
77
 
73
- // The picker offers what the renderer can actually tokenize, filtered as the draft is
74
- // typed. `text` is always offered: it is how a user CLEARS a language, and no grammar
75
- // registers under that name.
78
+ // The picker offers what the renderer can highlight. `text` is always offered: it is how a
79
+ // user clears a language, and no grammar registers under that name.
76
80
  const suggestions = $derived.by(() => {
77
- const all = ['text', ...listLanguages().filter((name) => name !== 'text')];
81
+ const all = ['text', ...listLanguages(activation).filter((name) => name !== 'text')];
78
82
  const needle = filtering ? draft.trim().toLowerCase() : '';
79
83
  if (needle.length > 0) {
80
- const starts = all.filter((name) => name.startsWith(needle));
81
- const contains = all.filter((name) => !name.startsWith(needle) && name.includes(needle));
84
+ // An alternate spelling is a search key, never a row of its own: `rs` finds `rust`,
85
+ // and the list still carries one entry per language.
86
+ const spellings = (name: string) => [name, ...getLanguageAliases(name, activation)];
87
+ const starts = all.filter((name) => spellings(name).some((s) => s.startsWith(needle)));
88
+ const seated = new Set(starts);
89
+ const contains = all.filter(
90
+ (name) => !seated.has(name) && spellings(name).some((s) => s.includes(needle))
91
+ );
82
92
  return [...starts, ...contains];
83
93
  }
84
- // Unfiltered, the block's own language leads. This menu is ours to order, so the row
85
- // that matters goes where the eye already is rather than somewhere the list has to be
86
- // scrolled to — which is why nothing here scrolls itself on open.
94
+ // Unfiltered, the block's own language leads, spelled as the fence spells it, so the
95
+ // row that matters is where the eye already is and its canonical form is not below it.
87
96
  const current = language;
88
- const rest = all.filter((name) => name !== current);
89
- return all.includes(current) ? [current, ...rest] : [current, ...rest];
97
+ const rest = all.filter((name) => name !== current && !isCurrentLanguage(name));
98
+ return [current, ...rest];
90
99
  });
91
100
 
101
+ /** One language in two spellings is still the block's own, so the check compares what the
102
+ * registry resolves rather than the text. */
103
+ function isCurrentLanguage(name: string): boolean {
104
+ const canonical = (spelling: string) =>
105
+ getLanguageGrammar(spelling, activation)?.name ?? spelling.toLowerCase();
106
+ return canonical(name) === canonical(language);
107
+ }
108
+
92
109
  // The highlight cannot outrun a filter that shortened the list under it.
93
110
  $effect(() => {
94
111
  if (activeIndex >= suggestions.length) activeIndex = 0;
95
112
  });
96
113
 
97
- // Mount-time open for a freshly minted fence. Guarded on `editable` like every other
98
- // write door, and fired once: re-arming it would reopen the field after every commit.
114
+ // Opens on mount for a fence that was just created. Checked against `editable` like every
115
+ // other write, and fired once: setting it again would reopen the field after every commit.
99
116
  let autoOpened = false;
100
117
  $effect(() => {
101
118
  if (!autoOpen || autoOpened || !editable) return;
@@ -107,15 +124,14 @@
107
124
  if (!editable) return;
108
125
  draft = '';
109
126
  filtering = false;
127
+ highlightMoved = false;
110
128
  menuOpen = false;
111
129
  editing = true;
112
130
  // Row 0 is the block's own language (see `suggestions`), so the highlight starts where
113
- // a bare Enter would re-commit what is already set.
131
+ // a bare Enter re-commits what is already set.
114
132
  activeIndex = 0;
115
- // A provisional placement at the trigger, BEFORE the popout renders. Without it the
116
- // popout mounts parked at the viewport's top-left corner while it waits to be measured,
117
- // and focusing the field inside it drags the page up there — which is the scroll
118
- // jumping to the top on creating a code block. The measure below refines it.
133
+ // A first guess at the trigger's position before the popout is measured: mounted at the
134
+ // viewport's corner, focusing the field inside it would scroll the page up there.
119
135
  const anchor = chipEl?.getBoundingClientRect();
120
136
  if (anchor) {
121
137
  listAt = {
@@ -125,8 +141,8 @@
125
141
  };
126
142
  }
127
143
  void tick().then(() => {
128
- // `preventScroll`: the rail is already on screen, and a scroll here would land as a
129
- // genuine scroll event on the reposition path below.
144
+ // `preventScroll`: the gutter is already on screen, and a scroll here would arrive
145
+ // as a real scroll event on the repositioning path below.
130
146
  inputEl?.focus({ preventScroll: true });
131
147
  });
132
148
  }
@@ -137,33 +153,37 @@
137
153
 
138
154
  function commit(value: string): void {
139
155
  close();
140
- // `text` is the picker's spelling of "no language", and the info string's is empty.
156
+ // `text` is the picker's way of saying "no language"; the info string says it with ''.
141
157
  onCommit(value.trim() === 'text' ? '' : value);
142
158
  }
143
159
 
144
160
  function onFieldKeyDown(e: KeyboardEvent): void {
145
- // The field owns its keys while open: no Escape of this state may reach whatever else
146
- // listens for one. A composing Enter/Escape is the IME's, never the field's.
161
+ // The field owns its keys while open: an Escape that closes it must not reach anything
162
+ // else listening for one. An Enter or Escape during a composition belongs to the IME.
147
163
  e.stopPropagation();
148
164
  if (e.isComposing) return;
149
165
  if (e.key === 'Enter') {
150
166
  e.preventDefault();
151
- // The highlighted row is what Enter takes once the user has engaged the list; the
152
- // raw draft stands otherwise, and whenever the filter matched nothing, so an
153
- // unregistered language survives both opening the field and typing it in.
154
- // The highlighted row wins; a typed string the list never matched still commits, so
155
- // an unregistered language stays authorable.
156
- commit(suggestions[activeIndex] ?? (draft.trim() === '' ? language : draft));
167
+ // A spelling the registry resolves is a name, not a search: it commits as typed, so
168
+ // `js` survives a picker whose rows are canonical. A moved highlight takes the row.
169
+ const typed = draft.trim();
170
+ const namesLanguage =
171
+ !highlightMoved && typed !== '' && getLanguageGrammar(typed, activation) !== null;
172
+ commit(
173
+ namesLanguage ? typed : (suggestions[activeIndex] ?? (typed === '' ? language : typed))
174
+ );
157
175
  } else if (e.key === 'Escape') {
158
176
  e.preventDefault();
159
177
  close();
160
178
  onCancel(true);
161
179
  } else if (e.key === 'ArrowDown') {
162
180
  e.preventDefault();
181
+ highlightMoved = true;
163
182
  activeIndex = suggestions.length === 0 ? 0 : (activeIndex + 1) % suggestions.length;
164
183
  scrollActiveIntoView();
165
184
  } else if (e.key === 'ArrowUp') {
166
185
  e.preventDefault();
186
+ highlightMoved = true;
167
187
  activeIndex =
168
188
  suggestions.length === 0 ? 0 : (activeIndex - 1 + suggestions.length) % suggestions.length;
169
189
  scrollActiveIntoView();
@@ -171,7 +191,7 @@
171
191
  }
172
192
 
173
193
  // Only for keyboard travel: the highlight must stay on screen as it moves. Opening does
174
- // NOT call this — the menu opens at row 0, which is already in view.
194
+ // not call this: the menu opens at row 0, which is already in view.
175
195
  function scrollActiveIntoView(): void {
176
196
  void tick().then(() => {
177
197
  listEl?.querySelector('[data-active="true"]')?.scrollIntoView({ block: 'nearest' });
@@ -180,7 +200,7 @@
180
200
 
181
201
  function onFieldBlur(e: FocusEvent): void {
182
202
  if (!editing) return;
183
- // A pointer moving from the field to its own list is not a dismissal; the list's
203
+ // A pointer moving from the field to its own list is not a dismissal: the list's
184
204
  // mousedown handler commits, and this must not tear the field down before it does.
185
205
  const next = e.relatedTarget;
186
206
  if (next instanceof Node && (railEl?.contains(next) || pickerEl?.contains(next))) return;
@@ -192,10 +212,8 @@
192
212
  copied = await onCopy();
193
213
  }
194
214
 
195
- // The confirmation lives exactly as long as the rail's own reveal: the pointer leaving
196
- // the block (or focus leaving the rail) hides the rail, and the next reveal is a fresh
197
- // gesture that should offer to copy again rather than still be reporting the last one.
198
- // A wall-clock revert would be sequencing on a timer, which G4.4 rules out.
215
+ // The copied confirmation clears when the pointer or focus leaves the gutter, so the next
216
+ // showing offers to copy again without a timer (G4.4).
199
217
  function clearCopied(): void {
200
218
  copied = false;
201
219
  }
@@ -216,9 +234,8 @@
216
234
  item.run();
217
235
  }
218
236
 
219
- // Escape rides the BUTTONS, not their container: the rail is a labelled `group`, and a
220
- // non-interactive role may not carry key handlers. Focus sits on the ⋮ button while the
221
- // menu is open, and on an item once the user tabs in — both are covered here.
237
+ // Escape is handled on the ⋮ button and the items, where focus sits while the menu is open:
238
+ // the gutter is a labelled `group`, and a non-interactive role may not carry key handlers.
222
239
  function onMenuKeyDown(e: KeyboardEvent): void {
223
240
  if (e.key !== 'Escape' || !menuOpen) return;
224
241
  e.stopPropagation();
@@ -227,9 +244,8 @@
227
244
  menuButtonEl?.focus();
228
245
  }
229
246
 
230
- // The menu outlives the click that opened it, so it closes on the next press anywhere
231
- // else. Scoped by containment, not target identity: a press on a disabled item is
232
- // still inside.
247
+ // The menu closes when focus leaves the gutter and its menu, judged by containment, so a
248
+ // click on a disabled item still counts as inside.
233
249
  function onRailFocusOut(e: FocusEvent): void {
234
250
  const next = e.relatedTarget;
235
251
  if (next instanceof Node && (railEl?.contains(next) || menuEl?.contains(next))) return;
@@ -238,16 +254,14 @@
238
254
  }
239
255
 
240
256
  // ── Popout placement ──────────────────────────────────────────────────────
241
- // Both popouts are `position: fixed`, like the table's action menu: an absolutely
242
- // positioned one inside the block host would extend the editor's own scrollable area
243
- // when it overhangs the last block, which is the surface growing under the reader.
244
- // Fixed takes them out of flow entirely, so opening one can resize nothing.
257
+ // Both popouts are `position: fixed`: an absolute one overhanging the last block would grow
258
+ // the editor's scrollable area under the user.
245
259
 
246
260
  interface Placement {
247
261
  x: number;
248
262
  y: number;
249
- /** Space the popout may occupy on the side it was placed, so a long list scrolls
250
- * inside the gap instead of growing past the viewport edge. */
263
+ /** How much space the popout may take on the side it was placed, so a long list
264
+ * scrolls inside that space instead of growing past the viewport edge. */
251
265
  maxHeight: number;
252
266
  }
253
267
  let listAt = $state<Placement | null>(null);
@@ -255,27 +269,17 @@
255
269
 
256
270
  const EDGE_MARGIN = 8;
257
271
  const ANCHOR_GAP = 6;
258
- /** A menu is a menu, not a column of the viewport: past this it scrolls. The room actually
259
- * available still wins when it is smaller. */
272
+ /** Past this height a popout scrolls; the space actually available wins when it is smaller. */
260
273
  const MAX_POPOUT_HEIGHT = 320;
261
274
 
262
- /**
263
- * Place a popout beside its trigger WITHOUT ever covering it. Below is preferred; above is
264
- * taken when below cannot hold it and above can; whichever side wins caps the popout's
265
- * height to the room actually there. A plain viewport clamp — what this used to do — slides
266
- * the box up over the button that opened it, which is exactly what must not happen.
267
- */
275
+ /** Short of room below its trigger, a popout caps its height and scrolls rather than moving
276
+ * above, so one gesture always opens the same way. */
268
277
  function placeAgainst(anchor: HTMLElement | undefined, popout: HTMLElement): Placement {
269
278
  const a = (anchor ?? popout).getBoundingClientRect();
270
279
  const size = popout.getBoundingClientRect();
271
- // ALWAYS downward. Flipping above when the room below ran short made the menu appear
272
- // on whichever side the block happened to sit, so the same gesture opened in two
273
- // directions; a menu that is always under its trigger is the predictable one. When the
274
- // room is short the popout scrolls inside what is there instead of moving.
275
280
  const roomBelow = window.innerHeight - a.bottom - ANCHOR_GAP - EDGE_MARGIN;
276
281
  const maxHeight = Math.min(MAX_POPOUT_HEIGHT, Math.max(120, roomBelow));
277
282
  const y = a.bottom + ANCHOR_GAP;
278
- // Right-aligned to the trigger, then held inside the viewport horizontally only.
279
283
  const maxX = Math.max(EDGE_MARGIN, window.innerWidth - size.width - EDGE_MARGIN);
280
284
  const x = Math.min(Math.max(EDGE_MARGIN, a.right - size.width), maxX);
281
285
  return { x, y, maxHeight };
@@ -297,10 +301,8 @@
297
301
  menuAt = placeAgainst(menuButtonEl, menuEl);
298
302
  });
299
303
 
300
- // A fixed popout does not move with the rail it hangs off, so it is re-placed against
301
- // its anchor whenever the page scrolls or resizes. Re-placing, not dismissing: a
302
- // dismissal both threw away a menu the user had just opened and raced the scroll that
303
- // focusing the field used to cause, closing the picker in the same tick it opened.
304
+ // A fixed popout does not move with the gutter, so it is placed again on every scroll and
305
+ // resize; not closed, since focusing the field can itself scroll and would close the picker.
304
306
  $effect(() => {
305
307
  if (!editing && !menuOpen) return;
306
308
  const reposition = (): void => {
@@ -320,14 +322,13 @@
320
322
  ? `left:${at.x}px;top:${at.y}px;max-height:${at.maxHeight}px`
321
323
  : 'left:0;top:0;visibility:hidden';
322
324
 
323
- // Presence of a hook is the whole gate — see `EditorPolicies.onRunCode`.
325
+ // Whether a hook exists is the whole condition; see `EditorPolicies.onRunCode`.
324
326
  const showRun = $derived(editable && onRun !== undefined);
325
327
  const showMenu = $derived(menuItems !== undefined);
326
328
  </script>
327
329
 
328
- <!-- Lucide (ISC) path data, inlined rather than depended on: the editor ships two runtime
329
- dependencies and an icon package would be a third. Sized 14 / stroke 1.75 to match the
330
- host app's menus. See THIRD-PARTY-NOTICES.md. -->
330
+ <!-- Lucide (ISC) path data, inlined rather than adding an icon package; sized to match
331
+ the host app's menus. See THIRD-PARTY-NOTICES.md. -->
331
332
  {#snippet icon(paths: string)}
332
333
  <svg
333
334
  viewBox="0 0 24 24"
@@ -415,6 +416,7 @@
415
416
  bind:this={pickerEl}
416
417
  class="md-menu code-rail-popout code-lang-picker"
417
418
  style={popoutStyle(listAt)}
419
+ {@attach menuPresence.track}
418
420
  >
419
421
  <div class="code-lang-search">
420
422
  {@render icon('<circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/>')}
@@ -431,6 +433,7 @@
431
433
  placeholder="Search for a language…"
432
434
  oninput={() => {
433
435
  filtering = true;
436
+ highlightMoved = false;
434
437
  activeIndex = 0;
435
438
  }}
436
439
  onkeydown={onFieldKeyDown}
@@ -444,10 +447,13 @@
444
447
  <button
445
448
  type="button"
446
449
  role="option"
447
- aria-selected={name === language}
450
+ aria-selected={isCurrentLanguage(name)}
448
451
  data-active={i === activeIndex}
449
452
  tabindex="-1"
450
- onmouseenter={() => (activeIndex = i)}
453
+ onmouseenter={() => {
454
+ highlightMoved = true;
455
+ activeIndex = i;
456
+ }}
451
457
  onmousedown={(e) => {
452
458
  // mousedown, not click: the field's blur would otherwise cancel the edit
453
459
  // before a click ever landed.
@@ -456,7 +462,7 @@
456
462
  }}
457
463
  >
458
464
  <span class="code-lang-name">{name}</span>
459
- {#if name === language}
465
+ {#if isCurrentLanguage(name)}
460
466
  <span class="code-lang-check">
461
467
  {@render icon('<path d="M20 6 9 17l-5-5"/>')}
462
468
  </span>
@@ -478,6 +484,7 @@
478
484
  role="menu"
479
485
  aria-label={CODE_MENU_LABEL}
480
486
  style={popoutStyle(menuAt)}
487
+ {@attach menuPresence.track}
481
488
  >
482
489
  {#each openMenuItems as item (item.id)}
483
490
  <li role="none">
@@ -494,10 +501,8 @@
494
501
  {/if}
495
502
 
496
503
  <style>
497
- /* Bare controls over the code box's top-right — no container of their own, so the code
498
- they sit above reads through between them. Positioned against the block host, whose
499
- box the code box fills below the host's 6px stand-off (editor.css, fencedCode), and out
500
- of the code box's own scroller so a horizontal scroll leaves them where they are. */
504
+ /* Positioned against the block host rather than inside the code box's scroller, so a
505
+ horizontal scroll leaves the controls where they are. */
501
506
  .code-rail {
502
507
  position: absolute;
503
508
  top: 12px;
@@ -513,9 +518,8 @@
513
518
  transition: opacity 120ms ease-out;
514
519
  }
515
520
 
516
- /* Block hover or block focus, and nothing else — plus the two states that outlive both,
517
- since a popout must not vanish from under the pointer that opened it. Child and sibling
518
- combinators, so an outer container's hover never reveals a nested block's rail. */
521
+ /* Shown on block hover or focus, or while a popout is open; child and sibling combinators
522
+ keep an outer container's hover from showing a nested block's controls. */
519
523
  :global(.block-host:hover) > .code-rail,
520
524
  :global(.code-block:focus) ~ .code-rail,
521
525
  .code-rail:focus-within,
@@ -574,9 +578,8 @@
574
578
  outline-offset: -1px;
575
579
  }
576
580
 
577
- /* The host app's menu surface, so a code block's menus read as the app's own. */
578
- /* Surface, hairline, shadow, face and colour come from the shared `.md-menu` (editor.css);
579
- this adds only the picker's own layout. */
581
+ /* Panel, hairline, shadow, face and colour come from the shared `.md-menu` (editor.css);
582
+ this adds only the popouts' own layout. */
580
583
  .code-rail-popout {
581
584
  display: flex;
582
585
  flex-direction: column;
@@ -586,7 +589,7 @@
586
589
  overflow: hidden;
587
590
  }
588
591
 
589
- /* Search sits INSIDE the menu rather than swapping the rail's chip for a field: the chip
592
+ /* Search sits inside the menu rather than swapping the gutter's chip for a field: the chip
590
593
  is a fixed box that never changes width, so opening the picker moves nothing. */
591
594
  .code-lang-search {
592
595
  display: flex;
@@ -596,7 +599,7 @@
596
599
  margin: -4px -4px 4px;
597
600
  padding: 8px 12px;
598
601
  border-bottom: 1px solid var(--menu-search-divider, rgba(255, 255, 255, 0.08));
599
- color: var(--color-ui-muted, #8f8f89);
602
+ color: var(--color-ui-muted, #93938d);
600
603
  }
601
604
 
602
605
  .code-lang-search input {
@@ -624,7 +627,7 @@
624
627
  overscroll-behavior: contain;
625
628
  }
626
629
 
627
- /* A hairline thumb, as the host app's list menus use — the platform's default bar is
630
+ /* A hairline thumb, as the host app's list menus use, since the platform's default bar is
628
631
  wider than the rows it sits beside. */
629
632
  .code-lang-list::-webkit-scrollbar {
630
633
  width: 1px;
@@ -1,23 +1,28 @@
1
1
  import type { CodeMenuItem } from '../../../editor-keys';
2
+ import type { MenuPresence } from '../../menu/menu-presence.svelte';
3
+ import type { PluginActivation } from '../../../schema/plugin-activation';
2
4
  type $$ComponentProps = {
3
5
  /** The opener's full info string; the button shows its first token. */
4
6
  info: string;
5
- /** False in reading mode, which writes no bytes — the chip is then a label. */
7
+ /** The editor's plugins, so the picker offers only the languages this editor highlights. */
8
+ activation: PluginActivation;
9
+ /** False in reading mode, which writes no bytes, so the chip is then a label. */
6
10
  editable: boolean;
7
- /** Open the language field as soon as the rail mounts: a fence the user just created
8
- * has no language yet, and asking is the whole reason the chip exists. */
11
+ /** Open the language field as soon as the gutter mounts, for a fence the user just
12
+ * created and has not given a language yet. */
9
13
  autoOpen?: boolean;
10
14
  /** Only Enter or a list pick calls this, and it owns the caret's landing afterwards. */
11
15
  onCommit: (info: string) => void;
12
16
  /** Nothing written. Escape asks for the caret back; a blur must not yank it from
13
17
  * wherever the user just clicked, so it does not. */
14
18
  onCancel: (returnCaret: boolean) => void;
15
- /** Absent when the host installed no execution hook — no run affordance renders. */
19
+ /** Absent when the host installed no execution hook, so no run button renders. */
16
20
  onRun?: () => void;
17
21
  /** Copies the fence body; resolves once the clipboard write settles. */
18
22
  onCopy: () => Promise<boolean>;
19
23
  /** Consulted on each open, so items read live state. Empty renders no affordance. */
20
24
  menuItems?: () => readonly CodeMenuItem[];
25
+ menuPresence: MenuPresence;
21
26
  };
22
27
  declare const CodeBlockRail: import("svelte").Component<$$ComponentProps, {
23
28
  open: () => void;
@@ -9,7 +9,7 @@ export interface AutoPairInput {
9
9
  end: number;
10
10
  };
11
11
  typed: string;
12
- /** True when the host block is an unclosed backtick fence — backticks would extend it. */
12
+ /** True when the block is an unclosed backtick fence, where backticks would extend it. */
13
13
  unclosedBacktickFence?: boolean;
14
14
  }
15
15
  export type AutoPairResult = {
@@ -1,8 +1,6 @@
1
1
  /**
2
- * Idempotent bootstrap for code-block languages + the fencedCode PasteSurface.
3
- * Adding a language = one import + one registerLanguage call.
2
+ * Sets up the code-block languages and the fencedCode paste handling; safe to call twice. These
3
+ * are built-ins, so the test reset keeps them. Adding a language is one import plus one
4
+ * `registerBuiltinLanguage` call.
4
5
  */
5
6
  export declare function bootstrapCodeLanguages(): void;
6
- /** Test-only: reset the booted flag and unregister the paste surface, so a
7
- * re-bootstrap doesn't hit the register-once duplicate throw. */
8
- export declare function __resetBootForTests(): void;
@@ -1,9 +1,10 @@
1
1
  /**
2
- * Idempotent bootstrap for code-block languages + the fencedCode PasteSurface.
3
- * Adding a language = one import + one registerLanguage call.
2
+ * Sets up the code-block languages and the fencedCode paste handling; safe to call twice. These
3
+ * are built-ins, so the test reset keeps them. Adding a language is one import plus one
4
+ * `registerBuiltinLanguage` call.
4
5
  */
5
- import { registerLanguage } from './code-languages';
6
- import { registerPasteSurface, __removePasteSurfaceForTests } from '../../../tree-operations/paste-surfaces';
6
+ import { registerBuiltinLanguage } from './code-languages';
7
+ import { registerPasteSurface } from '../../../tree-operations/paste-surfaces';
7
8
  import { codePasteSurface } from './code-paste-surface';
8
9
  import { registerCodeContextActions } from './code-context-actions';
9
10
  import javascript from 'highlight.js/lib/languages/javascript';
@@ -24,35 +25,41 @@ import ruby from 'highlight.js/lib/languages/ruby';
24
25
  import markdown from 'highlight.js/lib/languages/markdown';
25
26
  import diff from 'highlight.js/lib/languages/diff';
26
27
  import latex from 'highlight.js/lib/languages/latex';
28
+ import csharp from 'highlight.js/lib/languages/csharp';
29
+ import kotlin from 'highlight.js/lib/languages/kotlin';
30
+ import swift from 'highlight.js/lib/languages/swift';
31
+ import php from 'highlight.js/lib/languages/php';
32
+ import powershell from 'highlight.js/lib/languages/powershell';
33
+ import dockerfile from 'highlight.js/lib/languages/dockerfile';
27
34
  let booted = false;
28
35
  export function bootstrapCodeLanguages() {
29
36
  if (booted)
30
37
  return;
31
38
  booted = true;
32
- registerLanguage('javascript', javascript, ['js']);
33
- registerLanguage('typescript', typescript, ['ts']);
34
- registerLanguage('python', python, ['py']);
35
- registerLanguage('rust', rust, ['rs']);
36
- registerLanguage('go', go);
37
- registerLanguage('bash', bash, ['sh', 'shell']);
38
- registerLanguage('json', json);
39
- registerLanguage('yaml', yaml, ['yml']);
40
- registerLanguage('sql', sql);
41
- registerLanguage('html', xml, ['htm']); // hljs 'xml' grammar handles HTML
42
- registerLanguage('css', css);
43
- registerLanguage('java', java);
44
- registerLanguage('c', c);
45
- registerLanguage('cpp', cpp, ['c++']);
46
- registerLanguage('ruby', ruby);
47
- registerLanguage('markdown', markdown, ['md']);
48
- registerLanguage('diff', diff);
49
- registerLanguage('latex', latex, ['tex']);
39
+ registerBuiltinLanguage('javascript', javascript, ['js']);
40
+ registerBuiltinLanguage('typescript', typescript, ['ts']);
41
+ registerBuiltinLanguage('python', python, ['py']);
42
+ registerBuiltinLanguage('rust', rust, ['rs']);
43
+ registerBuiltinLanguage('go', go);
44
+ registerBuiltinLanguage('bash', bash, ['sh', 'shell']);
45
+ registerBuiltinLanguage('json', json);
46
+ registerBuiltinLanguage('yaml', yaml, ['yml']);
47
+ registerBuiltinLanguage('sql', sql);
48
+ registerBuiltinLanguage('html', xml, ['htm']); // hljs 'xml' grammar handles HTML
49
+ registerBuiltinLanguage('css', css);
50
+ registerBuiltinLanguage('java', java);
51
+ registerBuiltinLanguage('c', c);
52
+ registerBuiltinLanguage('cpp', cpp, ['c++']);
53
+ registerBuiltinLanguage('ruby', ruby);
54
+ registerBuiltinLanguage('markdown', markdown, ['md']);
55
+ registerBuiltinLanguage('diff', diff);
56
+ registerBuiltinLanguage('latex', latex, ['tex']);
57
+ registerBuiltinLanguage('csharp', csharp, ['cs', 'c#']);
58
+ registerBuiltinLanguage('kotlin', kotlin, ['kt']);
59
+ registerBuiltinLanguage('swift', swift);
60
+ registerBuiltinLanguage('php', php);
61
+ registerBuiltinLanguage('powershell', powershell, ['ps1']);
62
+ registerBuiltinLanguage('dockerfile', dockerfile, ['docker']);
50
63
  registerPasteSurface(codePasteSurface);
51
64
  registerCodeContextActions();
52
65
  }
53
- /** Test-only: reset the booted flag and unregister the paste surface, so a
54
- * re-bootstrap doesn't hit the register-once duplicate throw. */
55
- export function __resetBootForTests() {
56
- booted = false;
57
- __removePasteSurfaceForTests(codePasteSurface.kind);
58
- }