@voithos-labs/aragonite 0.10.4 → 0.10.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/a11y-strings.d.ts +11 -5
- package/dist/a11y-strings.js +60 -5
- package/dist/action-contracts.d.ts +242 -155
- package/dist/action-contracts.js +2 -2
- package/dist/active-editor.d.ts +3 -3
- package/dist/active-editor.js +8 -9
- package/dist/ambient/ambient-dom.d.ts +2 -5
- package/dist/ambient/ambient-dom.js +16 -62
- package/dist/assert.js +6 -5
- package/dist/block-component.d.ts +135 -109
- package/dist/block-component.js +30 -22
- package/dist/block-id.d.ts +6 -10
- package/dist/block-id.js +25 -14
- package/dist/bounded-memo.d.ts +5 -5
- package/dist/bounded-memo.js +6 -6
- package/dist/components/BlockDragHandle.svelte +12 -21
- package/dist/components/BlockHost.svelte +56 -134
- package/dist/components/BlockList.svelte +22 -19
- package/dist/components/DecorationOverlay.svelte +9 -10
- package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
- package/dist/components/Editor.svelte +603 -1126
- package/dist/components/Editor.svelte.d.ts +9 -20
- package/dist/components/GapCaret.svelte +26 -59
- package/dist/components/SelectionOverlay.svelte +26 -51
- package/dist/components/SelectionOverlay.svelte.d.ts +5 -3
- package/dist/components/TailInsert.svelte +8 -55
- package/dist/components/TailInsert.svelte.d.ts +4 -6
- package/dist/components/block-content-selector.d.ts +11 -11
- package/dist/components/block-content-selector.js +11 -11
- package/dist/components/block-el-lookup.d.ts +6 -0
- package/dist/components/block-el-lookup.js +27 -0
- package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
- package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
- package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
- package/dist/components/blocks/code/CodeBlock.svelte +255 -276
- package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
- package/dist/components/blocks/code/CodeBlockRail.svelte +72 -87
- package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
- package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
- package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
- package/dist/components/blocks/code/code-bootstrap.js +29 -34
- package/dist/components/blocks/code/code-context-actions.js +5 -4
- package/dist/components/blocks/code/code-enter.js +2 -2
- package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
- package/dist/components/blocks/code/code-fence-boundary.js +40 -66
- package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
- package/dist/components/blocks/code/code-fence-exit.js +24 -25
- package/dist/components/blocks/code/code-indent.d.ts +2 -2
- package/dist/components/blocks/code/code-indent.js +4 -7
- package/dist/components/blocks/code/code-languages.d.ts +16 -12
- package/dist/components/blocks/code/code-languages.js +57 -39
- package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
- package/dist/components/blocks/code/code-paste-surface.js +9 -18
- package/dist/components/blocks/code/code-renderer.d.ts +21 -5
- package/dist/components/blocks/code/code-renderer.js +90 -125
- package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
- package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
- package/dist/components/blocks/directive/activate-directives.js +18 -13
- package/dist/components/blocks/editable-leaf.d.ts +50 -74
- package/dist/components/blocks/editable-leaf.js +141 -203
- package/dist/components/blocks/editable-surface.d.ts +96 -100
- package/dist/components/blocks/editable-surface.js +101 -109
- package/dist/components/blocks/list/ListBlock.svelte +45 -90
- package/dist/components/blocks/list/ListItemBlock.svelte +93 -147
- package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +1 -0
- package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
- package/dist/components/blocks/list/task-checkbox.js +12 -7
- package/dist/components/blocks/plain-text-backend.d.ts +4 -20
- package/dist/components/blocks/plain-text-backend.js +9 -43
- package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
- package/dist/components/blocks/surface-wiring.svelte.js +15 -34
- package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
- package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
- package/dist/components/blocks/table/TableBlock.svelte +100 -165
- package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
- package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
- package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
- package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
- package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
- package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
- package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
- package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
- package/dist/components/blocks/table/cell-pointer.js +49 -71
- package/dist/components/blocks/table/cell-render.d.ts +24 -29
- package/dist/components/blocks/table/cell-render.js +29 -31
- package/dist/components/blocks/table/selected-cells.d.ts +7 -7
- package/dist/components/blocks/table/selected-cells.js +9 -13
- package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
- package/dist/components/blocks/table/table-caret-at-point.js +5 -5
- package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
- package/dist/components/blocks/table/table-cell-paste.js +27 -43
- package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
- package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
- package/dist/components/blocks/table/table-menu-model.js +6 -10
- package/dist/components/blocks/table/table-navigation.js +2 -2
- package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
- package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
- package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
- package/dist/components/blocks/text/auto-pair-record.js +51 -0
- package/dist/components/blocks/text/click-snap-guard.d.ts +8 -6
- package/dist/components/blocks/text/click-snap-guard.js +10 -7
- package/dist/components/blocks/text/composition-seat.d.ts +17 -14
- package/dist/components/blocks/text/composition-seat.js +11 -11
- package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
- package/dist/components/blocks/text/construct-edge-delete.js +50 -65
- package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
- package/dist/components/blocks/text/construct-reveal.js +13 -14
- package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
- package/dist/components/blocks/text/delimiter-autopair.js +87 -103
- package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
- package/dist/components/blocks/text/edge-policy-dispatch.js +150 -181
- package/dist/components/blocks/text/edge-seat.d.ts +17 -26
- package/dist/components/blocks/text/edge-seat.js +43 -70
- package/dist/components/blocks/text/link-at-point.d.ts +9 -9
- package/dist/components/blocks/text/link-at-point.js +12 -15
- package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
- package/dist/components/blocks/text/live-join-seam.js +75 -112
- package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
- package/dist/components/blocks/text/live-selection-edit.js +32 -108
- package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
- package/dist/components/blocks/text/live-split-rebalance.js +50 -67
- package/dist/components/blocks/text/marker-completion.d.ts +7 -12
- package/dist/components/blocks/text/marker-completion.js +17 -10
- package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
- package/dist/components/blocks/text/pending-mark-insert.js +30 -49
- package/dist/components/blocks/text/screen-diff.d.ts +5 -15
- package/dist/components/blocks/text/screen-diff.js +5 -19
- package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
- package/dist/components/blocks/text/text-clipboard.js +27 -32
- package/dist/components/blocks/text/text-keydown.d.ts +20 -30
- package/dist/components/blocks/text/text-keydown.js +54 -51
- package/dist/components/blocks/text/text-render.d.ts +25 -35
- package/dist/components/blocks/text/text-render.js +82 -61
- package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
- package/dist/components/blocks/text/widget-adjacency.js +17 -17
- package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
- package/dist/components/blocks/text/widget-interaction.js +212 -199
- package/dist/components/blocks/widget-portal.d.ts +20 -29
- package/dist/components/blocks/widget-portal.js +16 -14
- package/dist/components/built-in-blocks.d.ts +3 -4
- package/dist/components/built-in-blocks.js +17 -18
- package/dist/components/drag-handle.d.ts +12 -35
- package/dist/components/drag-handle.js +22 -68
- package/dist/components/editor-built-ins.d.ts +1 -0
- package/dist/components/editor-built-ins.js +16 -0
- package/dist/components/editor-root-clipboard.d.ts +6 -6
- package/dist/components/editor-root-clipboard.js +16 -27
- package/dist/components/editor-root-document-swap.d.ts +49 -0
- package/dist/components/editor-root-document-swap.js +54 -0
- package/dist/components/editor-root-focus.d.ts +5 -4
- package/dist/components/editor-root-focus.js +51 -22
- package/dist/components/editor-root-focused-surface.d.ts +35 -0
- package/dist/components/editor-root-focused-surface.js +65 -0
- package/dist/components/editor-root-geometry.d.ts +15 -24
- package/dist/components/editor-root-geometry.js +27 -31
- package/dist/components/editor-root-gestures.d.ts +39 -0
- package/dist/components/editor-root-gestures.js +189 -0
- package/dist/components/editor-root-keydown.d.ts +10 -25
- package/dist/components/editor-root-keydown.js +19 -43
- package/dist/components/editor-root-listeners.d.ts +22 -24
- package/dist/components/editor-root-listeners.js +49 -24
- package/dist/components/editor-root-menus.d.ts +51 -0
- package/dist/components/editor-root-menus.js +147 -0
- package/dist/components/editor-root-mode-flip.d.ts +16 -11
- package/dist/components/editor-root-mode-flip.js +36 -34
- package/dist/components/editor-root-scroll-host.d.ts +22 -0
- package/dist/components/editor-root-scroll-host.js +34 -0
- package/dist/components/editor-root-test-surface.d.ts +48 -0
- package/dist/components/editor-root-test-surface.js +6 -0
- package/dist/components/image/ImageOverlayHost.svelte +44 -35
- package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
- package/dist/components/image/ImageProperties.svelte +37 -41
- package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
- package/dist/components/image/ImageResizeHandles.svelte +14 -26
- package/dist/components/image/image-crop.d.ts +5 -11
- package/dist/components/image/image-crop.js +5 -11
- package/dist/components/image/image-edit-commit.d.ts +19 -16
- package/dist/components/image/image-edit-commit.js +74 -38
- package/dist/components/image/image-resize.d.ts +2 -5
- package/dist/components/image/image-resize.js +3 -6
- package/dist/components/image/image-widget-editing.d.ts +3 -3
- package/dist/components/image/image-widget-editing.js +9 -9
- package/dist/components/image/widget-dom.d.ts +2 -3
- package/dist/components/image/widget-dom.js +19 -24
- package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
- package/dist/components/image/widget-selection-state.svelte.js +26 -19
- package/dist/components/kind-cue.svelte.d.ts +21 -0
- package/dist/components/kind-cue.svelte.js +35 -0
- package/dist/components/link-card/LinkCard.svelte +115 -64
- package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
- package/dist/components/link-card/LinkCardHost.svelte +42 -33
- package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
- package/dist/components/link-card/link-card-commit.d.ts +16 -19
- package/dist/components/link-card/link-card-commit.js +21 -30
- package/dist/components/link-card/link-card-entry.d.ts +13 -23
- package/dist/components/link-card/link-card-entry.js +16 -24
- package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
- package/dist/components/link-card/link-card-state.svelte.js +2 -2
- package/dist/components/lrd-map-gate.d.ts +4 -11
- package/dist/components/lrd-map-gate.js +5 -11
- package/dist/components/menu/BlockMenu.svelte +20 -81
- package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
- package/dist/components/menu/InlineMenuHost.svelte +191 -0
- package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
- package/dist/components/menu/MenuIcon.svelte +3 -103
- package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
- package/dist/components/menu/SelectionToolbar.svelte +30 -35
- package/dist/components/menu/SelectionToolbar.svelte.d.ts +3 -5
- package/dist/components/menu/clipboard-actions.d.ts +3 -4
- package/dist/components/menu/clipboard-actions.js +3 -4
- package/dist/components/menu/default-context-actions.d.ts +4 -13
- package/dist/components/menu/default-context-actions.js +49 -67
- package/dist/components/menu/flyout-placement.d.ts +2 -2
- package/dist/components/menu/flyout-placement.js +2 -2
- package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
- package/dist/components/menu/menu-presence.svelte.js +19 -0
- package/dist/components/paste-image-arm.d.ts +6 -11
- package/dist/components/paste-image-arm.js +11 -18
- package/dist/components/portal.d.ts +2 -5
- package/dist/components/portal.js +4 -7
- package/dist/core/directive/activate.d.ts +4 -5
- package/dist/core/directive/activate.js +8 -9
- package/dist/core/directive/container-opener.js +13 -12
- package/dist/core/directive/grammar.d.ts +2 -5
- package/dist/core/directive/grammar.js +10 -10
- package/dist/core/directive/kinds.d.ts +4 -7
- package/dist/core/directive/kinds.js +14 -16
- package/dist/core/directive/registry.d.ts +12 -9
- package/dist/core/directive/registry.js +19 -20
- package/dist/core/directive/text-recognizer.d.ts +3 -2
- package/dist/core/directive/text-recognizer.js +5 -9
- package/dist/core/escapable.d.ts +1 -5
- package/dist/core/escapable.js +1 -5
- package/dist/core/inline/backticks.d.ts +3 -4
- package/dist/core/inline/backticks.js +3 -4
- package/dist/core/inline/character-refs.js +2 -1
- package/dist/core/inline/destination-bytes.d.ts +6 -3
- package/dist/core/inline/destination-bytes.js +50 -8
- package/dist/core/inline/entity-widget.d.ts +4 -3
- package/dist/core/inline/entity-widget.js +6 -6
- package/dist/core/inline/format-toggle.d.ts +22 -28
- package/dist/core/inline/format-toggle.js +97 -129
- package/dist/core/inline/html-entities.d.ts +2 -3
- package/dist/core/inline/html-entities.js +2 -3
- package/dist/core/inline/html-tag-grammar.js +6 -2
- package/dist/core/inline/image-dimensions.d.ts +2 -0
- package/dist/core/inline/image-dimensions.js +19 -2
- package/dist/core/inline/image-source-bytes.d.ts +11 -0
- package/dist/core/inline/image-source-bytes.js +71 -0
- package/dist/core/inline/index.d.ts +28 -21
- package/dist/core/inline/index.js +56 -34
- package/dist/core/inline/inline-cache.d.ts +12 -15
- package/dist/core/inline/inline-cache.js +11 -14
- package/dist/core/inline/inline-widgets.d.ts +54 -75
- package/dist/core/inline/inline-widgets.js +54 -62
- package/dist/core/inline/link-destination.d.ts +31 -0
- package/dist/core/inline/link-destination.js +129 -0
- package/dist/core/inline/link-reference-resolver.d.ts +8 -6
- package/dist/core/inline/link-reference-resolver.js +10 -6
- package/dist/core/inline/link-source-bytes.d.ts +31 -0
- package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
- package/dist/core/inline/live-edit/read-back.d.ts +29 -0
- package/dist/core/inline/live-edit/read-back.js +50 -0
- package/dist/core/inline/picture.d.ts +10 -0
- package/dist/core/inline/picture.js +40 -0
- package/dist/core/inline/scan/autolinks.d.ts +7 -8
- package/dist/core/inline/scan/autolinks.js +80 -59
- package/dist/core/inline/scan/brackets.d.ts +2 -2
- package/dist/core/inline/scan/brackets.js +6 -103
- package/dist/core/inline/scan/code-spans.d.ts +4 -0
- package/dist/core/inline/scan/code-spans.js +8 -0
- package/dist/core/inline/scan/emphasis.js +10 -14
- package/dist/core/inline/scan/index.d.ts +3 -1
- package/dist/core/inline/scan/index.js +32 -33
- package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
- package/dist/core/inline/scan/plugin-syntax.js +75 -89
- package/dist/core/inline/scan/scan-state.d.ts +2 -0
- package/dist/core/inline/scan/scan-state.js +1 -0
- package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
- package/dist/core/inline/scan/simple-nodes.js +2 -5
- package/dist/core/inline/scan/triggers.d.ts +17 -0
- package/dist/core/inline/scan/triggers.js +26 -0
- package/dist/core/inline/scan/url.js +8 -10
- package/dist/core/inline/transparency.d.ts +2 -1
- package/dist/core/inline/transparency.js +31 -15
- package/dist/core/inline/visibility.d.ts +30 -49
- package/dist/core/inline/visibility.js +31 -49
- package/dist/core/inline/walk.d.ts +4 -10
- package/dist/core/inline/walk.js +4 -10
- package/dist/core/inline-render.d.ts +22 -27
- package/dist/core/inline-render.js +51 -60
- package/dist/core/lines.d.ts +67 -26
- package/dist/core/lines.js +164 -33
- package/dist/core/metadata-parity.d.ts +9 -0
- package/dist/core/metadata-parity.js +25 -0
- package/dist/core/node-views.d.ts +7 -6
- package/dist/core/node-views.js +5 -5
- package/dist/core/nodes.d.ts +34 -44
- package/dist/core/nodes.js +4 -12
- package/dist/core/parser.d.ts +27 -34
- package/dist/core/parser.js +53 -67
- package/dist/core/parsers/blockquote.d.ts +5 -8
- package/dist/core/parsers/blockquote.js +11 -10
- package/dist/core/parsers/built-in-openers.d.ts +2 -5
- package/dist/core/parsers/built-in-openers.js +5 -8
- package/dist/core/parsers/fence-syntax.d.ts +36 -7
- package/dist/core/parsers/fence-syntax.js +61 -11
- package/dist/core/parsers/fenced-code.d.ts +16 -0
- package/dist/core/parsers/fenced-code.js +16 -15
- package/dist/core/parsers/heading.d.ts +19 -2
- package/dist/core/parsers/heading.js +50 -2
- package/dist/core/parsers/html-block.d.ts +3 -6
- package/dist/core/parsers/html-block.js +10 -11
- package/dist/core/parsers/indented-code.d.ts +1 -1
- package/dist/core/parsers/indented-code.js +2 -8
- package/dist/core/parsers/link-reference.d.ts +5 -3
- package/dist/core/parsers/link-reference.js +116 -120
- package/dist/core/parsers/list.d.ts +12 -5
- package/dist/core/parsers/list.js +53 -36
- package/dist/core/parsers/paragraph.d.ts +3 -3
- package/dist/core/parsers/paragraph.js +14 -5
- package/dist/core/parsers/table-completion.d.ts +2 -5
- package/dist/core/parsers/table-completion.js +7 -10
- package/dist/core/parsers/table.d.ts +8 -8
- package/dist/core/parsers/table.js +23 -26
- package/dist/core/parsers/thematic-break.js +15 -14
- package/dist/core/paths.d.ts +13 -0
- package/dist/core/paths.js +31 -0
- package/dist/core/terminator-escalation.d.ts +0 -7
- package/dist/core/terminator-escalation.js +5 -8
- package/dist/core/url-policy.d.ts +2 -5
- package/dist/core/url-policy.js +8 -12
- package/dist/cursor/caret-memory.d.ts +34 -0
- package/dist/cursor/caret-memory.js +82 -0
- package/dist/cursor/coordinate-spaces.d.ts +26 -19
- package/dist/cursor/coordinate-spaces.js +32 -20
- package/dist/cursor/dom-walk.d.ts +7 -13
- package/dist/cursor/dom-walk.js +7 -13
- package/dist/cursor/edge-affinity.d.ts +7 -35
- package/dist/cursor/edge-affinity.js +13 -44
- package/dist/cursor/focused-caret.d.ts +6 -8
- package/dist/cursor/focused-caret.js +7 -16
- package/dist/cursor/height-model.d.ts +3 -3
- package/dist/cursor/height-model.js +5 -5
- package/dist/cursor/height-oracle.d.ts +10 -6
- package/dist/cursor/height-oracle.js +26 -74
- package/dist/cursor/observe-resize.d.ts +13 -0
- package/dist/cursor/observe-resize.js +43 -0
- package/dist/cursor/overlay-rects.d.ts +2 -5
- package/dist/cursor/overlay-rects.js +2 -5
- package/dist/cursor/overlay-remeasure.d.ts +6 -7
- package/dist/cursor/overlay-remeasure.js +10 -14
- package/dist/cursor/pending-marks.d.ts +7 -9
- package/dist/cursor/pending-marks.js +6 -27
- package/dist/cursor/point-offset.d.ts +16 -10
- package/dist/cursor/point-offset.js +60 -25
- package/dist/cursor/reveal-source.d.ts +7 -11
- package/dist/cursor/reveal-source.js +10 -18
- package/dist/cursor/scroll-ancestors.d.ts +9 -20
- package/dist/cursor/scroll-ancestors.js +14 -26
- package/dist/cursor/scroll-owner.d.ts +92 -0
- package/dist/cursor/scroll-owner.js +283 -0
- package/dist/cursor/scrollport.d.ts +14 -15
- package/dist/cursor/scrollport.js +7 -13
- package/dist/cursor/sticky-column.d.ts +6 -29
- package/dist/cursor/sticky-column.js +6 -49
- package/dist/cursor/sticky-measure.d.ts +14 -9
- package/dist/cursor/sticky-measure.js +99 -49
- package/dist/cursor/surface-backend.d.ts +41 -0
- package/dist/cursor/surface-backend.js +78 -0
- package/dist/cursor/typography-estimates.d.ts +3 -3
- package/dist/cursor/typography-estimates.js +3 -3
- package/dist/cursor/visual-lines.d.ts +25 -14
- package/dist/cursor/visual-lines.js +45 -46
- package/dist/cursor/widget-edge-snap.d.ts +10 -15
- package/dist/cursor/widget-edge-snap.js +13 -12
- package/dist/cursor/widget-offset.d.ts +110 -104
- package/dist/cursor/widget-offset.js +344 -179
- package/dist/debug/diagnostics-report.d.ts +6 -6
- package/dist/debug/diagnostics-report.js +5 -5
- package/dist/debug/dump-tree.js +2 -2
- package/dist/debug/editor-diagnostics.d.ts +15 -0
- package/dist/debug/editor-diagnostics.js +33 -0
- package/dist/debug/inspect.d.ts +2 -2
- package/dist/debug/inspect.js +4 -4
- package/dist/debug/interaction-trace.d.ts +14 -15
- package/dist/debug/interaction-trace.js +19 -20
- package/dist/debug/operations-log.d.ts +1 -1
- package/dist/debug/operations-log.js +1 -1
- package/dist/decorations/buckets.d.ts +6 -12
- package/dist/decorations/buckets.js +4 -11
- package/dist/decorations/decoration-state.svelte.d.ts +2 -3
- package/dist/decorations/decoration-state.svelte.js +24 -26
- package/dist/decorations/island-dom.d.ts +10 -18
- package/dist/decorations/island-dom.js +25 -50
- package/dist/decorations/reserved-attrs.d.ts +6 -8
- package/dist/decorations/reserved-attrs.js +30 -17
- package/dist/decorations/types.d.ts +6 -7
- package/dist/decorations/types.js +2 -1
- package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
- package/dist/decorations/use-block-decorations.svelte.js +71 -0
- package/dist/decorations/widget-dom.d.ts +3 -3
- package/dist/decorations/widget-dom.js +5 -5
- package/dist/dev-warn.d.ts +5 -2
- package/dist/dev-warn.js +16 -4
- package/dist/editor-actions/ancestry-folds.d.ts +9 -14
- package/dist/editor-actions/ancestry-folds.js +13 -18
- package/dist/editor-actions/block-edit-core.d.ts +49 -22
- package/dist/editor-actions/block-edit-core.js +279 -151
- package/dist/editor-actions/block-edit-scope.d.ts +63 -50
- package/dist/editor-actions/block-edit-scope.js +100 -48
- package/dist/editor-actions/block-edit.d.ts +2 -3
- package/dist/editor-actions/block-edit.js +14 -90
- package/dist/editor-actions/commit/history.d.ts +4 -4
- package/dist/editor-actions/commit/history.js +33 -34
- package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
- package/dist/editor-actions/commit/reading-write-gate.js +56 -0
- package/dist/editor-actions/commit/text-batch.d.ts +7 -11
- package/dist/editor-actions/commit/text-batch.js +6 -7
- package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
- package/dist/editor-actions/commit/undo-controller.js +346 -216
- package/dist/editor-actions/container-block-component.d.ts +32 -51
- package/dist/editor-actions/container-block-component.js +66 -92
- package/dist/editor-actions/container-edit.d.ts +4 -2
- package/dist/editor-actions/container-edit.js +14 -44
- package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
- package/dist/editor-actions/container-exit-overrides.js +19 -21
- package/dist/editor-actions/deps.d.ts +25 -32
- package/dist/editor-actions/enter-completion.d.ts +12 -15
- package/dist/editor-actions/enter-completion.js +49 -51
- package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
- package/dist/editor-actions/focus/focus-dispatch.js +28 -50
- package/dist/editor-actions/focus/focus-landing.d.ts +8 -11
- package/dist/editor-actions/focus/focus-landing.js +15 -14
- package/dist/editor-actions/focus/focus.d.ts +3 -2
- package/dist/editor-actions/focus/focus.js +42 -59
- package/dist/editor-actions/index.d.ts +4 -3
- package/dist/editor-actions/index.js +5 -4
- package/dist/editor-actions/inline-range-commit.d.ts +18 -16
- package/dist/editor-actions/inline-range-commit.js +45 -54
- package/dist/editor-actions/leaf-write.d.ts +11 -0
- package/dist/editor-actions/leaf-write.js +102 -0
- package/dist/editor-actions/list-context.d.ts +9 -10
- package/dist/editor-actions/list-context.js +115 -110
- package/dist/editor-actions/list-overrides.d.ts +13 -5
- package/dist/editor-actions/list-overrides.js +36 -12
- package/dist/editor-actions/merge-fallback.d.ts +10 -16
- package/dist/editor-actions/merge-fallback.js +11 -22
- package/dist/editor-actions/nested/container-actions.d.ts +37 -0
- package/dist/editor-actions/nested/container-actions.js +42 -0
- package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
- package/dist/editor-actions/nested/emptied-container.js +5 -0
- package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
- package/dist/editor-actions/nested/nested-actions.js +17 -15
- package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
- package/dist/editor-actions/nested/nested-block-edit.js +40 -134
- package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
- package/dist/editor-actions/nested/nested-focus.js +33 -21
- package/dist/editor-actions/paste-coordinator.d.ts +3 -2
- package/dist/editor-actions/paste-coordinator.js +17 -13
- package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
- package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
- package/dist/editor-actions/plugin/container.d.ts +54 -82
- package/dist/editor-actions/plugin/container.js +105 -188
- package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
- package/dist/editor-actions/plugin/directive-container.js +7 -8
- package/dist/editor-actions/reorder-action.d.ts +7 -12
- package/dist/editor-actions/reorder-action.js +32 -48
- package/dist/editor-actions/reorder-drag.d.ts +12 -8
- package/dist/editor-actions/reorder-drag.js +45 -41
- package/dist/editor-actions/replacement-focus.d.ts +13 -21
- package/dist/editor-actions/replacement-focus.js +32 -33
- package/dist/editor-actions/search-replace.js +71 -67
- package/dist/editor-actions/stored-caret.d.ts +7 -0
- package/dist/editor-actions/stored-caret.js +10 -0
- package/dist/editor-actions/table-context.d.ts +9 -11
- package/dist/editor-actions/table-context.js +70 -93
- package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
- package/dist/editor-actions/unwrap-strategies.js +52 -63
- package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
- package/dist/editor-actions/whole-block-focus-surface.js +43 -53
- package/dist/editor-events.d.ts +25 -29
- package/dist/editor-events.js +17 -28
- package/dist/editor-keys.d.ts +96 -104
- package/dist/editor-keys.js +11 -24
- package/dist/editor-props.d.ts +88 -71
- package/dist/editor-rects.d.ts +23 -34
- package/dist/editor-rects.js +9 -77
- package/dist/env.d.ts +6 -4
- package/dist/env.js +8 -4
- package/dist/index.d.ts +6 -2
- package/dist/index.js +5 -2
- package/dist/inline-menu/inline-menu-session.d.ts +37 -0
- package/dist/inline-menu/inline-menu-session.js +98 -0
- package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
- package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
- package/dist/inline-menu/types.d.ts +77 -0
- package/dist/inline-menu/types.js +7 -0
- package/dist/invariants/child-id-parity.d.ts +23 -0
- package/dist/invariants/child-id-parity.js +39 -0
- package/dist/invariants/commit-paths.d.ts +4 -4
- package/dist/invariants/commit-paths.js +4 -4
- package/dist/invariants/commit-scope.d.ts +4 -4
- package/dist/invariants/commit-scope.js +9 -8
- package/dist/invariants/context-keys.d.ts +2 -5
- package/dist/invariants/context-keys.js +3 -6
- package/dist/invariants/descriptor.d.ts +2 -6
- package/dist/invariants/descriptor.js +2 -6
- package/dist/invariants/inline-transitions.d.ts +9 -16
- package/dist/invariants/inline-transitions.js +10 -18
- package/dist/invariants/install.d.ts +18 -27
- package/dist/invariants/install.js +29 -30
- package/dist/invariants/keeps-a-block.d.ts +7 -0
- package/dist/invariants/keeps-a-block.js +14 -0
- package/dist/invariants/landable-caret.d.ts +5 -7
- package/dist/invariants/landable-caret.js +8 -11
- package/dist/invariants/landing-focus-scroll.d.ts +7 -0
- package/dist/invariants/landing-focus-scroll.js +13 -0
- package/dist/invariants/landing-value.d.ts +13 -0
- package/dist/invariants/landing-value.js +27 -0
- package/dist/invariants/marker-css-parity.d.ts +5 -6
- package/dist/invariants/marker-css-parity.js +11 -12
- package/dist/invariants/measures-in-own-list.d.ts +6 -0
- package/dist/invariants/measures-in-own-list.js +13 -0
- package/dist/invariants/node-shape.d.ts +18 -37
- package/dist/invariants/node-shape.js +123 -79
- package/dist/invariants/open-tail.d.ts +7 -0
- package/dist/invariants/open-tail.js +45 -0
- package/dist/invariants/placement-ends-widget.d.ts +8 -0
- package/dist/invariants/placement-ends-widget.js +13 -0
- package/dist/invariants/registry.d.ts +27 -66
- package/dist/invariants/registry.js +61 -137
- package/dist/invariants/render-fidelity.d.ts +4 -4
- package/dist/invariants/render-fidelity.js +5 -5
- package/dist/invariants/selection-endpoints.d.ts +6 -7
- package/dist/invariants/selection-endpoints.js +18 -16
- package/dist/invariants/single-node-sink.d.ts +4 -5
- package/dist/invariants/single-node-sink.js +4 -5
- package/dist/invariants/snapshot-integrity.d.ts +5 -6
- package/dist/invariants/snapshot-integrity.js +1 -1
- package/dist/invariants/structural-descriptor.d.ts +6 -15
- package/dist/invariants/structural-descriptor.js +6 -15
- package/dist/menu-icons.d.ts +47 -0
- package/dist/menu-icons.js +113 -0
- package/dist/perf/instruments.d.ts +20 -5
- package/dist/perf/instruments.js +35 -15
- package/dist/perf/use-mount-gauge.svelte.js +4 -4
- package/dist/plugin.d.ts +37 -8
- package/dist/plugin.js +100 -77
- package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
- package/dist/plugins/admonitions/admonition-kind.js +12 -10
- package/dist/plugins/admonitions/convert-document.d.ts +5 -5
- package/dist/plugins/admonitions/convert-document.js +8 -7
- package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
- package/dist/plugins/admonitions/gh-alert.js +21 -22
- package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
- package/dist/plugins/admonitions/github-alert-kind.js +28 -37
- package/dist/plugins/admonitions/index.js +2 -2
- package/dist/plugins/admonitions/kinds.d.ts +1 -1
- package/dist/plugins/admonitions/register.js +11 -2
- package/dist/plugins/details/DetailsBlock.svelte +20 -20
- package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
- package/dist/plugins/details/details-disclosure.svelte.js +6 -7
- package/dist/plugins/details/details-kind.d.ts +6 -7
- package/dist/plugins/details/details-kind.js +44 -59
- package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
- package/dist/plugins/emoji/emoji-recognizer.js +7 -14
- package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
- package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
- package/dist/plugins/footnotes/constants.d.ts +2 -0
- package/dist/plugins/footnotes/constants.js +3 -0
- package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
- package/dist/plugins/footnotes/footnote-definition.js +69 -45
- package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
- package/dist/plugins/footnotes/footnote-lookup.js +14 -26
- package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
- package/dist/plugins/footnotes/footnote-numbering.js +22 -31
- package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
- package/dist/plugins/footnotes/footnote-reference.js +8 -13
- package/dist/plugins/footnotes/index.js +2 -3
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
- package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
- package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
- package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
- package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
- package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
- package/dist/plugins/highlight-occurrences/word-char.js +4 -0
- package/dist/plugins/latex/BlockMath.svelte +58 -75
- package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
- package/dist/plugins/latex/MathInline.svelte +10 -9
- package/dist/plugins/latex/flanking.d.ts +1 -0
- package/dist/plugins/latex/flanking.js +3 -0
- package/dist/plugins/latex/index.d.ts +1 -1
- package/dist/plugins/latex/latex-kind.d.ts +4 -4
- package/dist/plugins/latex/latex-kind.js +78 -67
- package/dist/plugins/latex/math-completion.d.ts +1 -1
- package/dist/plugins/latex/math-completion.js +5 -8
- package/dist/plugins/latex/math-layout.d.ts +2 -8
- package/dist/plugins/latex/math-layout.js +0 -9
- package/dist/plugins/latex/math-renderer.d.ts +17 -20
- package/dist/plugins/latex/math-renderer.js +21 -38
- package/dist/plugins/latex/math-source.d.ts +4 -8
- package/dist/plugins/latex/math-source.js +36 -81
- package/dist/plugins/latex/register.d.ts +10 -11
- package/dist/plugins/latex/register.js +24 -10
- package/dist/plugins/latex/renderer.d.ts +9 -10
- package/dist/plugins/latex/renderer.js +9 -24
- package/dist/plugins/mermaid/MermaidBlock.svelte +51 -45
- package/dist/plugins/mermaid/index.js +1 -1
- package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
- package/dist/plugins/mermaid/mermaid-kind.js +30 -47
- package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
- package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
- package/dist/plugins/mermaid/register.d.ts +3 -3
- package/dist/plugins/mermaid/register.js +5 -5
- package/dist/plugins/mermaid/renderer.d.ts +5 -5
- package/dist/plugins/mermaid/renderer.js +8 -11
- package/dist/plugins/parrot/ParrotBlock.svelte +15 -6
- package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
- package/dist/plugins/parrot/parrot-plugin.js +3 -3
- package/dist/plugins/slash-commands/filter.d.ts +23 -0
- package/dist/plugins/slash-commands/filter.js +31 -0
- package/dist/plugins/slash-commands/index.d.ts +2 -0
- package/dist/plugins/slash-commands/index.js +2 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
- package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
- package/dist/plugins/slash-commands/slash-source.js +108 -0
- package/dist/plugins/toc/TocBlock.svelte +23 -22
- package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
- package/dist/plugins/toc/heading-outline.d.ts +7 -12
- package/dist/plugins/toc/heading-outline.js +22 -36
- package/dist/plugins/toc/navigation-queue.d.ts +2 -4
- package/dist/plugins/toc/toc-plugin.d.ts +5 -5
- package/dist/plugins/toc/toc-plugin.js +20 -13
- package/dist/presentation-mode.d.ts +15 -23
- package/dist/presentation-mode.js +19 -25
- package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
- package/dist/reactivity/block-list-state.svelte.js +8 -9
- package/dist/reactivity/block-window.svelte.d.ts +12 -6
- package/dist/reactivity/block-window.svelte.js +44 -17
- package/dist/reactivity/child-list.d.ts +34 -0
- package/dist/reactivity/child-list.js +48 -0
- package/dist/reactivity/content-version.svelte.d.ts +4 -7
- package/dist/reactivity/content-version.svelte.js +3 -5
- package/dist/reactivity/hold-across.d.ts +39 -0
- package/dist/reactivity/hold-across.js +57 -0
- package/dist/reactivity/layout-state.svelte.d.ts +27 -0
- package/dist/reactivity/layout-state.svelte.js +51 -0
- package/dist/reactivity/list-tree.d.ts +39 -0
- package/dist/reactivity/list-tree.js +132 -0
- package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
- package/dist/reactivity/list-windowing.svelte.js +141 -310
- package/dist/reactivity/measure-batch.d.ts +6 -8
- package/dist/reactivity/measure-batch.js +5 -6
- package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
- package/dist/reactivity/publish-ref.svelte.js +21 -85
- package/dist/reactivity/scope-geometry.d.ts +6 -13
- package/dist/reactivity/scope-geometry.js +7 -14
- package/dist/reactivity/state-registry.d.ts +5 -5
- package/dist/reactivity/state-registry.js +11 -15
- package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
- package/dist/reactivity/use-container-windowing.svelte.js +64 -74
- package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
- package/dist/reactivity/use-measured-child.svelte.js +41 -0
- package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
- package/dist/reactivity/use-window-floor.svelte.js +27 -0
- package/dist/reactivity/window-slice.d.ts +4 -4
- package/dist/reactivity/window-slice.js +0 -2
- package/dist/renderer-slot.d.ts +48 -0
- package/dist/renderer-slot.js +85 -0
- package/dist/scan-index.d.ts +4 -4
- package/dist/scan-index.js +4 -4
- package/dist/schema/block-commands.d.ts +69 -54
- package/dist/schema/block-commands.js +91 -104
- package/dist/schema/block-completions.d.ts +16 -19
- package/dist/schema/block-completions.js +25 -32
- package/dist/schema/block-component-registry.d.ts +13 -14
- package/dist/schema/block-component-registry.js +19 -17
- package/dist/schema/block-kind-descriptor.d.ts +234 -168
- package/dist/schema/block-kind-descriptor.js +151 -66
- package/dist/schema/block-openers.d.ts +48 -39
- package/dist/schema/block-openers.js +73 -83
- package/dist/schema/built-in-descriptors.d.ts +3 -5
- package/dist/schema/built-in-descriptors.js +96 -80
- package/dist/schema/child-spans.d.ts +12 -10
- package/dist/schema/child-spans.js +68 -34
- package/dist/schema/closure.d.ts +18 -16
- package/dist/schema/closure.js +24 -14
- package/dist/schema/command-id.d.ts +6 -8
- package/dist/schema/command-id.js +20 -25
- package/dist/schema/commands.d.ts +78 -84
- package/dist/schema/commands.js +152 -117
- package/dist/schema/container-raw.d.ts +51 -11
- package/dist/schema/container-raw.js +143 -14
- package/dist/schema/container-rebuilders.d.ts +17 -15
- package/dist/schema/container-rebuilders.js +30 -22
- package/dist/schema/context-actions.d.ts +25 -13
- package/dist/schema/context-actions.js +32 -17
- package/dist/schema/define-plugin-block.d.ts +8 -6
- package/dist/schema/define-plugin-block.js +6 -4
- package/dist/schema/fenced-code-raw.d.ts +30 -17
- package/dist/schema/fenced-code-raw.js +155 -107
- package/dist/schema/global-commands.d.ts +6 -6
- package/dist/schema/global-commands.js +14 -22
- package/dist/schema/height-estimates.d.ts +31 -0
- package/dist/schema/height-estimates.js +64 -0
- package/dist/schema/inline-construct-policy.d.ts +42 -55
- package/dist/schema/inline-construct-policy.js +36 -35
- package/dist/schema/insert-catalogue.d.ts +30 -0
- package/dist/schema/insert-catalogue.js +95 -0
- package/dist/schema/keybinding-overrides.d.ts +9 -11
- package/dist/schema/keybinding-overrides.js +1 -1
- package/dist/schema/keybindings.d.ts +15 -7
- package/dist/schema/keybindings.js +21 -9
- package/dist/schema/merge-rules.d.ts +5 -7
- package/dist/schema/merge-rules.js +7 -9
- package/dist/schema/opener-priorities.d.ts +4 -4
- package/dist/schema/opener-priorities.js +4 -4
- package/dist/schema/operations.d.ts +8 -10
- package/dist/schema/operations.js +3 -3
- package/dist/schema/page-role.d.ts +14 -0
- package/dist/schema/page-role.js +19 -0
- package/dist/schema/plugin-activation.d.ts +4 -6
- package/dist/schema/plugin-activation.js +12 -10
- package/dist/schema/plugin-editor-context.d.ts +25 -10
- package/dist/schema/plugin-editor-context.js +40 -9
- package/dist/schema/plugin-install.d.ts +49 -17
- package/dist/schema/plugin-install.js +51 -25
- package/dist/schema/plugin-kind.d.ts +12 -8
- package/dist/schema/plugin-kind.js +35 -42
- package/dist/schema/plugin-name.js +3 -3
- package/dist/schema/plugin-registry.d.ts +54 -0
- package/dist/schema/plugin-registry.js +70 -0
- package/dist/schema/reading.d.ts +23 -0
- package/dist/schema/reading.js +7 -0
- package/dist/schema/register-once.d.ts +3 -5
- package/dist/schema/register-once.js +7 -16
- package/dist/schema/registration-checks.d.ts +12 -16
- package/dist/schema/registration-checks.js +35 -51
- package/dist/schema/registration-pairs.d.ts +54 -0
- package/dist/schema/registration-pairs.js +48 -0
- package/dist/schema/registration-pending.d.ts +8 -12
- package/dist/schema/registration-pending.js +9 -9
- package/dist/schema/registry-reset.d.ts +8 -4
- package/dist/schema/registry-reset.js +13 -26
- package/dist/schema/registry-view.d.ts +25 -13
- package/dist/schema/registry-view.js +26 -20
- package/dist/schema/reserved-chords.d.ts +9 -10
- package/dist/schema/reserved-chords.js +63 -80
- package/dist/schema/reserved-chrome.d.ts +12 -11
- package/dist/schema/reserved-chrome.js +15 -11
- package/dist/schema/setext-raw.d.ts +13 -0
- package/dist/schema/setext-raw.js +33 -0
- package/dist/schema/stored-as.d.ts +20 -0
- package/dist/schema/stored-as.js +6 -0
- package/dist/schema/table-cell-raw.d.ts +18 -7
- package/dist/schema/table-cell-raw.js +28 -7
- package/dist/schema/whole-block-unit.d.ts +5 -4
- package/dist/schema/whole-block-unit.js +5 -4
- package/dist/search/document-scan.d.ts +3 -3
- package/dist/search/document-scan.js +2 -2
- package/dist/search/matcher.d.ts +1 -1
- package/dist/search/regex-executor.d.ts +5 -6
- package/dist/search/regex-executor.js +6 -8
- package/dist/search/replace.d.ts +2 -5
- package/dist/search/replace.js +2 -5
- package/dist/search/search-state.svelte.d.ts +5 -5
- package/dist/search/search-state.svelte.js +12 -16
- package/dist/selection/autoscroll.d.ts +6 -9
- package/dist/selection/block-hit-test.d.ts +16 -24
- package/dist/selection/block-hit-test.js +29 -22
- package/dist/selection/caret-doors.d.ts +15 -14
- package/dist/selection/caret-doors.js +37 -26
- package/dist/selection/caret-landing.d.ts +62 -0
- package/dist/selection/caret-landing.js +157 -0
- package/dist/selection/caret-restore.d.ts +17 -10
- package/dist/selection/caret-restore.js +10 -22
- package/dist/selection/caret-target.d.ts +30 -0
- package/dist/selection/caret-target.js +84 -0
- package/dist/selection/char-endpoint-snap.d.ts +6 -10
- package/dist/selection/char-endpoint-snap.js +8 -14
- package/dist/selection/clipboard-text.d.ts +5 -12
- package/dist/selection/clipboard-text.js +69 -172
- package/dist/selection/covered-block.d.ts +6 -8
- package/dist/selection/covered-block.js +8 -19
- package/dist/selection/cross-block/clipboard.d.ts +3 -2
- package/dist/selection/cross-block/clipboard.js +13 -4
- package/dist/selection/cross-block/dispatch.d.ts +47 -43
- package/dist/selection/cross-block/dispatch.js +12 -23
- package/dist/selection/cross-block/format-range.d.ts +18 -21
- package/dist/selection/cross-block/format-range.js +104 -103
- package/dist/selection/cross-block/format-toggle.d.ts +10 -15
- package/dist/selection/cross-block/format-toggle.js +28 -33
- package/dist/selection/cross-block/keydown.d.ts +4 -4
- package/dist/selection/cross-block/keydown.js +92 -125
- package/dist/selection/cross-block/ops.d.ts +19 -34
- package/dist/selection/cross-block/ops.js +110 -95
- package/dist/selection/cross-block/paste.d.ts +2 -3
- package/dist/selection/cross-block/paste.js +59 -96
- package/dist/selection/cross-block/pointer.d.ts +17 -15
- package/dist/selection/cross-block/pointer.js +74 -25
- package/dist/selection/cross-block/type-replace.d.ts +4 -6
- package/dist/selection/cross-block/type-replace.js +51 -134
- package/dist/selection/dead-space-caret.d.ts +19 -30
- package/dist/selection/dead-space-caret.js +70 -88
- package/dist/selection/drag-pointer.d.ts +7 -9
- package/dist/selection/drag-pointer.js +23 -33
- package/dist/selection/gap-caret.d.ts +17 -28
- package/dist/selection/gap-caret.js +14 -26
- package/dist/selection/grid-selection.d.ts +12 -0
- package/dist/selection/grid-selection.js +22 -0
- package/dist/selection/keyboard-extend.d.ts +27 -40
- package/dist/selection/keyboard-extend.js +94 -117
- package/dist/selection/multi-click.d.ts +13 -18
- package/dist/selection/multi-click.js +32 -38
- package/dist/selection/native-bridge.d.ts +29 -39
- package/dist/selection/native-bridge.js +78 -127
- package/dist/selection/nearest-block.d.ts +17 -12
- package/dist/selection/nearest-block.js +37 -18
- package/dist/selection/path-lookup.d.ts +25 -16
- package/dist/selection/path-lookup.js +101 -18
- package/dist/selection/path-math.d.ts +9 -11
- package/dist/selection/path-math.js +5 -7
- package/dist/selection/pointer-gesture.d.ts +5 -5
- package/dist/selection/pointer-gesture.js +5 -5
- package/dist/selection/pointer-session.d.ts +10 -16
- package/dist/selection/pointer-session.js +6 -7
- package/dist/selection/primitives.d.ts +64 -40
- package/dist/selection/primitives.js +57 -67
- package/dist/selection/range-coverage.d.ts +94 -0
- package/dist/selection/range-coverage.js +365 -0
- package/dist/selection/range-delete-ceremony.d.ts +28 -74
- package/dist/selection/range-delete-ceremony.js +100 -141
- package/dist/selection/range-delete-chrome.d.ts +20 -33
- package/dist/selection/range-delete-chrome.js +53 -78
- package/dist/selection/range-delete-table-coverage.d.ts +11 -25
- package/dist/selection/range-delete-table-coverage.js +42 -112
- package/dist/selection/range-delete-table.d.ts +14 -12
- package/dist/selection/range-delete-table.js +106 -310
- package/dist/selection/range-delete.d.ts +18 -23
- package/dist/selection/range-delete.js +83 -123
- package/dist/selection/round-trip-restore.d.ts +18 -0
- package/dist/selection/round-trip-restore.js +19 -0
- package/dist/selection/selection-announcer.d.ts +17 -0
- package/dist/selection/selection-announcer.js +25 -0
- package/dist/selection/selection-description.d.ts +4 -3
- package/dist/selection/selection-description.js +5 -4
- package/dist/selection/selection-drop.d.ts +34 -16
- package/dist/selection/selection-drop.js +159 -95
- package/dist/selection/selection-restore.d.ts +20 -33
- package/dist/selection/selection-restore.js +21 -44
- package/dist/selection/selection-state.svelte.d.ts +50 -42
- package/dist/selection/selection-state.svelte.js +144 -98
- package/dist/selection/shared-keydown.d.ts +22 -27
- package/dist/selection/shared-keydown.js +25 -45
- package/dist/selection/table-endpoint-snap.d.ts +17 -41
- package/dist/selection/table-endpoint-snap.js +54 -80
- package/dist/selection/table-rect-extend.d.ts +3 -6
- package/dist/selection/table-rect-extend.js +19 -14
- package/dist/styles/editor-theme.css +60 -53
- package/dist/styles/editor.css +201 -143
- package/dist/testing/conformance-core.d.ts +50 -18
- package/dist/testing/conformance-core.js +88 -50
- package/dist/testing/container-conformance.d.ts +48 -84
- package/dist/testing/container-conformance.js +159 -285
- package/dist/testing/headless-actions.d.ts +34 -19
- package/dist/testing/headless-actions.js +116 -65
- package/dist/testing/headless-block-list.svelte.d.ts +16 -0
- package/dist/testing/headless-block-list.svelte.js +22 -0
- package/dist/testing/inline-conformance.d.ts +15 -22
- package/dist/testing/inline-conformance.js +131 -148
- package/dist/testing/kind-conformance.d.ts +19 -24
- package/dist/testing/kind-conformance.js +204 -117
- package/dist/testing/kit-reading.d.ts +7 -0
- package/dist/testing/kit-reading.js +16 -0
- package/dist/testing/mount-dom-stubs.d.ts +4 -5
- package/dist/testing/mount-dom-stubs.js +8 -5
- package/dist/testing/parse-convergence.d.ts +10 -10
- package/dist/testing/parse-convergence.js +14 -49
- package/dist/testing.d.ts +13 -9
- package/dist/testing.js +28 -38
- package/dist/tree-operations/blockquote.d.ts +8 -14
- package/dist/tree-operations/blockquote.js +25 -45
- package/dist/tree-operations/chain-rebuild.d.ts +34 -25
- package/dist/tree-operations/chain-rebuild.js +115 -52
- package/dist/tree-operations/children.d.ts +5 -9
- package/dist/tree-operations/children.js +7 -11
- package/dist/tree-operations/cleanup.d.ts +6 -7
- package/dist/tree-operations/cleanup.js +14 -11
- package/dist/tree-operations/clone.js +5 -4
- package/dist/tree-operations/container-lift.d.ts +10 -5
- package/dist/tree-operations/container-lift.js +20 -14
- package/dist/tree-operations/container-offsets.d.ts +22 -0
- package/dist/tree-operations/container-offsets.js +89 -0
- package/dist/tree-operations/content-write.d.ts +52 -29
- package/dist/tree-operations/content-write.js +155 -110
- package/dist/tree-operations/index.d.ts +4 -4
- package/dist/tree-operations/index.js +4 -4
- package/dist/tree-operations/keep-one-block.d.ts +10 -0
- package/dist/tree-operations/keep-one-block.js +19 -0
- package/dist/tree-operations/leaf-range.d.ts +33 -0
- package/dist/tree-operations/leaf-range.js +67 -0
- package/dist/tree-operations/list/empty-check.d.ts +2 -3
- package/dist/tree-operations/list/empty-check.js +4 -4
- package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
- package/dist/tree-operations/list/exit-replacement.js +4 -9
- package/dist/tree-operations/list/item-partition.d.ts +2 -2
- package/dist/tree-operations/list/item-partition.js +2 -2
- package/dist/tree-operations/list/list-builders.d.ts +18 -16
- package/dist/tree-operations/list/list-builders.js +59 -30
- package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
- package/dist/tree-operations/list/ordered-markers.js +7 -16
- package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
- package/dist/tree-operations/list/reconcile-task.js +80 -23
- package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
- package/dist/tree-operations/list/sublist-separator.js +20 -27
- package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
- package/dist/tree-operations/list/task-paragraph.js +54 -0
- package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
- package/dist/tree-operations/list/unwrap-merge.js +44 -79
- package/dist/tree-operations/node-ops.d.ts +30 -52
- package/dist/tree-operations/node-ops.js +152 -218
- package/dist/tree-operations/node-primitives.d.ts +44 -31
- package/dist/tree-operations/node-primitives.js +84 -60
- package/dist/tree-operations/open-tail.d.ts +25 -0
- package/dist/tree-operations/open-tail.js +100 -0
- package/dist/tree-operations/parse-block.d.ts +15 -2
- package/dist/tree-operations/parse-block.js +19 -4
- package/dist/tree-operations/paste/apply.d.ts +7 -8
- package/dist/tree-operations/paste/apply.js +33 -63
- package/dist/tree-operations/paste/body-write.d.ts +8 -6
- package/dist/tree-operations/paste/body-write.js +13 -14
- package/dist/tree-operations/paste/container-match.d.ts +7 -10
- package/dist/tree-operations/paste/container-match.js +76 -58
- package/dist/tree-operations/paste/container-paste.d.ts +3 -3
- package/dist/tree-operations/paste/container-paste.js +3 -3
- package/dist/tree-operations/paste/dispatch.d.ts +26 -29
- package/dist/tree-operations/paste/dispatch.js +68 -53
- package/dist/tree-operations/paste/focus-target.d.ts +11 -14
- package/dist/tree-operations/paste/focus-target.js +13 -18
- package/dist/tree-operations/paste/hooks.d.ts +7 -12
- package/dist/tree-operations/paste/hooks.js +49 -46
- package/dist/tree-operations/paste/line-ending.d.ts +11 -0
- package/dist/tree-operations/paste/line-ending.js +32 -0
- package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
- package/dist/tree-operations/paste/list-absorb.js +17 -19
- package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
- package/dist/tree-operations/paste/list-break-out.js +24 -32
- package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
- package/dist/tree-operations/paste/parent-scope.js +9 -16
- package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
- package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
- package/dist/tree-operations/paste/paste-replacement.js +73 -42
- package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
- package/dist/tree-operations/paste/paste-transforms.js +18 -27
- package/dist/tree-operations/paste/replacement-parse.d.ts +9 -7
- package/dist/tree-operations/paste/replacement-parse.js +12 -10
- package/dist/tree-operations/paste/strategy.d.ts +1 -1
- package/dist/tree-operations/paste/strategy.js +1 -1
- package/dist/tree-operations/paste/table-slice.js +15 -10
- package/dist/tree-operations/paste-surfaces.d.ts +18 -29
- package/dist/tree-operations/paste-surfaces.js +14 -10
- package/dist/tree-operations/path-mutate.d.ts +7 -8
- package/dist/tree-operations/path-mutate.js +4 -4
- package/dist/tree-operations/reorder-unit.d.ts +4 -5
- package/dist/tree-operations/reorder-unit.js +5 -6
- package/dist/tree-operations/reorder.d.ts +7 -9
- package/dist/tree-operations/reorder.js +39 -40
- package/dist/tree-operations/settle.d.ts +42 -53
- package/dist/tree-operations/settle.js +241 -162
- package/dist/tree-operations/sharing.d.ts +5 -5
- package/dist/tree-operations/splice-many.d.ts +5 -5
- package/dist/tree-operations/splice-many.js +5 -5
- package/dist/tree-operations/stored-as.d.ts +13 -0
- package/dist/tree-operations/stored-as.js +48 -0
- package/dist/tree-operations/structural-change.d.ts +11 -15
- package/dist/tree-operations/structural-change.js +10 -14
- package/dist/tree-operations/structural-suffix.d.ts +22 -0
- package/dist/tree-operations/structural-suffix.js +61 -0
- package/dist/tree-operations/sub-table-copy.d.ts +7 -0
- package/dist/tree-operations/sub-table-copy.js +40 -36
- package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
- package/dist/tree-operations/table-grid-clipboard.js +11 -36
- package/dist/tree-operations/table-mutations.d.ts +7 -3
- package/dist/tree-operations/table-mutations.js +45 -9
- package/dist/tree-operations/unshare.d.ts +11 -15
- package/dist/tree-operations/unshare.js +15 -17
- package/dist/undo/manager.js +1 -1
- package/dist/undo/types.d.ts +2 -2
- package/docs/guide/consumer-guide.md +327 -205
- package/docs/guide/directives.md +7 -7
- package/docs/guide/plugin-api.md +253 -185
- package/docs/guide/plugin-guide.md +332 -235
- package/docs/guide/plugin-testing.md +96 -82
- package/package.json +12 -16
- package/dist/ambient/ambient-cursor.d.ts +0 -41
- package/dist/ambient/ambient-cursor.js +0 -120
- package/dist/components/blocks/code/code-paste.d.ts +0 -24
- package/dist/components/blocks/code/code-paste.js +0 -21
- package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
- package/dist/components/blocks/table/cell-clipboard.js +0 -67
- package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
- package/dist/components/blocks/text/hidden-suffix.js +0 -15
- package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
- package/dist/components/image/image-source-bytes.d.ts +0 -15
- package/dist/components/image/image-source-bytes.js +0 -80
- package/dist/cursor/content-offsets.d.ts +0 -29
- package/dist/cursor/content-offsets.js +0 -151
- package/dist/cursor/reveal-anchor.d.ts +0 -30
- package/dist/cursor/reveal-anchor.js +0 -31
- package/dist/cursor/scroll-hold.d.ts +0 -10
- package/dist/cursor/scroll-hold.js +0 -22
- package/dist/invariants/split-landing.d.ts +0 -8
- package/dist/invariants/split-landing.js +0 -15
- package/dist/tree-operations/list/terminator.d.ts +0 -17
- package/dist/tree-operations/list/terminator.js +0 -60
- package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -31
- package/dist/tree-operations/paste/replace-block-at-parent.js +0 -78
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Pure decisions that keep an edit off
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Pure decisions that keep a caret and an edit off a fenced code block's fence lines where the
|
|
3
|
+
* mode hides them; there, editable content is the body plus the opener's info string. Where the
|
|
4
|
+
* mode paints them, edits land and the fence write rule keeps one opener and one closer.
|
|
5
|
+
* Display-text coordinates throughout.
|
|
5
6
|
*/
|
|
6
7
|
import type { NodeView } from '../../../core/node-views';
|
|
8
|
+
import type { RawRange } from '../../../cursor/widget-offset';
|
|
7
9
|
export interface FenceBoundaryInput {
|
|
8
10
|
node: NodeView;
|
|
9
11
|
offset: number;
|
|
10
12
|
/** True when the user pressed Delete (forward) rather than Backspace. */
|
|
11
13
|
forward: boolean;
|
|
12
14
|
}
|
|
13
|
-
/** Display-text offset range, as the code gestures pass it around. */
|
|
14
|
-
export interface CodeRange {
|
|
15
|
-
start: number;
|
|
16
|
-
end: number;
|
|
17
|
-
}
|
|
18
15
|
export type FenceBoundaryResult = {
|
|
19
16
|
kind: 'allow';
|
|
20
17
|
} | {
|
|
@@ -22,56 +19,42 @@ export type FenceBoundaryResult = {
|
|
|
22
19
|
} | {
|
|
23
20
|
kind: 'exitNext';
|
|
24
21
|
};
|
|
25
|
-
/**
|
|
26
|
-
*
|
|
27
|
-
* would delete the opener's terminating `\n`, Delete at bodyEnd the body's — either
|
|
28
|
-
* re-parses the block in a different shape, so both become a focus-move out instead.
|
|
29
|
-
* What else a keystroke may rewrite is `crossesFenceBoundary`'s question.
|
|
30
|
-
*/
|
|
22
|
+
/** Backspace at the body start would delete the opener's `\n`, and Delete at the body end the
|
|
23
|
+
* body's; either reshapes the block, so both move focus out instead. */
|
|
31
24
|
export declare function classifyFenceBoundary(input: FenceBoundaryInput): FenceBoundaryResult;
|
|
32
|
-
/**
|
|
33
|
-
*
|
|
34
|
-
* inside the opener re-shapes the fence, one inside the closer breaks it apart. Each
|
|
35
|
-
* fence line's inner edge is left alone: splicing after the info string, or at the
|
|
36
|
-
* start of the closer line, is already safe.
|
|
37
|
-
*/
|
|
25
|
+
/** A `\n` inside either fence line breaks the fence, so an Enter there moves to the nearest body
|
|
26
|
+
* edge; each fence line's inner edge is already safe and stays put. */
|
|
38
27
|
export declare function clampEnterOffsetToBody(node: NodeView, offset: number): number;
|
|
39
|
-
/**
|
|
40
|
-
*
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
*/
|
|
44
|
-
export declare function
|
|
45
|
-
/**
|
|
46
|
-
* Does a pending edit reach out of the editable content — the body, plus the opener's info string?
|
|
47
|
-
* Every other offset on the fence lines is one keystroke from swallowing the following blocks into
|
|
48
|
-
* the code node. An UNCLOSED fence is the exception: with no closer to orphan, its run is content
|
|
49
|
-
* too, so demoting the block is how a just-typed ` ``` ` gets undone.
|
|
50
|
-
*/
|
|
51
|
-
export declare function crossesFenceBoundary(node: NodeView, range: CodeRange): boolean;
|
|
28
|
+
/** For gestures that rewrite whole lines (indent, dedent): a tab on the closer pushes it past
|
|
29
|
+
* GFM's three-space limit, and one on the opener demotes the block. */
|
|
30
|
+
export declare function clampRangeToBody(node: NodeView, range: RawRange): RawRange;
|
|
31
|
+
/** Whether an edit reaches past the body and the opener's info string. An unclosed fence's run
|
|
32
|
+
* counts as content, so deleting it is how a just-typed ` ``` ` is undone. */
|
|
33
|
+
export declare function crossesFenceBoundary(node: NodeView, range: RawRange): boolean;
|
|
52
34
|
/**
|
|
53
35
|
* The span a ranged edit actually rewrites: the range itself while it stays inside
|
|
54
36
|
* one content region, its intersection with the body once it reaches structure.
|
|
55
37
|
*/
|
|
56
|
-
export declare function fenceEditSpan(node: NodeView, range:
|
|
38
|
+
export declare function fenceEditSpan(node: NodeView, range: RawRange): RawRange;
|
|
57
39
|
/**
|
|
58
|
-
* Where a caret
|
|
59
|
-
*
|
|
60
|
-
* the landing looks successful and the next character disappears.
|
|
40
|
+
* Where a caret arriving from outside the block lands, in every mode: on the body. On a hidden
|
|
41
|
+
* fence line it would take keystrokes the fence check refuses, so the next character disappears.
|
|
61
42
|
*/
|
|
62
43
|
export declare function clampCaretToBody(node: NodeView, offset: number): number;
|
|
44
|
+
/** A range that reached the fence lines and keeps no body after the clamp is declined, rather
|
|
45
|
+
* than moved to a body edge the user never pointed at. */
|
|
46
|
+
export declare function isStructureOnlyRange(node: NodeView, range: RawRange): boolean;
|
|
63
47
|
/**
|
|
64
|
-
* The
|
|
65
|
-
*
|
|
66
|
-
* Paste consults it directly, since it splices through the paste tree-op.
|
|
67
|
-
*/
|
|
68
|
-
export declare function isStructureOnlyRange(node: NodeView, range: CodeRange): boolean;
|
|
69
|
-
/**
|
|
70
|
-
* The one in-place range splice — native delete/type-over (via the beforeinput guard)
|
|
71
|
-
* and cut. Null when there is nothing to rewrite, so no undo entry is spent.
|
|
48
|
+
* The one splice over a range in place where the fence lines are hidden: the browser's delete
|
|
49
|
+
* and type-over, through the beforeinput check, and cut. Null when there is nothing to rewrite.
|
|
72
50
|
*/
|
|
73
|
-
export declare function computeFenceRangedEdit(node: NodeView, range:
|
|
51
|
+
export declare function computeFenceRangedEdit(node: NodeView, range: RawRange, insert: string): FenceRangedEdit | null;
|
|
52
|
+
/** `insert` spliced over `range` of `display`; null when it changes nothing, so no undo entry is used. */
|
|
53
|
+
export declare function computeRangedEdit(display: string, range: RawRange, insert: string): FenceRangedEdit | null;
|
|
74
54
|
export interface FenceRangedEdit {
|
|
75
55
|
newText: string;
|
|
76
56
|
newCursor: number;
|
|
77
57
|
}
|
|
58
|
+
/** The body's own span, the only lines a vertical arrival may land a caret on. */
|
|
59
|
+
export declare function bodyWindow(node: NodeView): RawRange;
|
|
60
|
+
export declare function orderedRange(range: RawRange): RawRange;
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Pure decisions that keep an edit off
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Pure decisions that keep a caret and an edit off a fenced code block's fence lines where the
|
|
3
|
+
* mode hides them; there, editable content is the body plus the opener's info string. Where the
|
|
4
|
+
* mode paints them, edits land and the fence write rule keeps one opener and one closer.
|
|
5
|
+
* Display-text coordinates throughout.
|
|
5
6
|
*/
|
|
6
7
|
import { metadataOf } from '../../../core/nodes';
|
|
7
8
|
import { displayLength, trimTrailingLineEnding } from '../../../core/lines';
|
|
9
|
+
import { fenceAnatomy } from '../../../core/parsers/fence-syntax';
|
|
8
10
|
import { sliceFencedCode } from './code-renderer';
|
|
9
|
-
/**
|
|
10
|
-
*
|
|
11
|
-
* would delete the opener's terminating `\n`, Delete at bodyEnd the body's — either
|
|
12
|
-
* re-parses the block in a different shape, so both become a focus-move out instead.
|
|
13
|
-
* What else a keystroke may rewrite is `crossesFenceBoundary`'s question.
|
|
14
|
-
*/
|
|
11
|
+
/** Backspace at the body start would delete the opener's `\n`, and Delete at the body end the
|
|
12
|
+
* body's; either reshapes the block, so both move focus out instead. */
|
|
15
13
|
export function classifyFenceBoundary(input) {
|
|
16
14
|
const { node, offset, forward } = input;
|
|
17
15
|
const slice = sliceFencedCode(node);
|
|
@@ -25,12 +23,8 @@ export function classifyFenceBoundary(input) {
|
|
|
25
23
|
return { kind: 'exitNext' };
|
|
26
24
|
return { kind: 'allow' };
|
|
27
25
|
}
|
|
28
|
-
/**
|
|
29
|
-
*
|
|
30
|
-
* inside the opener re-shapes the fence, one inside the closer breaks it apart. Each
|
|
31
|
-
* fence line's inner edge is left alone: splicing after the info string, or at the
|
|
32
|
-
* start of the closer line, is already safe.
|
|
33
|
-
*/
|
|
26
|
+
/** A `\n` inside either fence line breaks the fence, so an Enter there moves to the nearest body
|
|
27
|
+
* edge; each fence line's inner edge is already safe and stays put. */
|
|
34
28
|
export function clampEnterOffsetToBody(node, offset) {
|
|
35
29
|
const { openerTextEnd, body, closerTextStart } = fenceRegions(node);
|
|
36
30
|
if (offset < openerTextEnd)
|
|
@@ -39,22 +33,15 @@ export function clampEnterOffsetToBody(node, offset) {
|
|
|
39
33
|
return body.end;
|
|
40
34
|
return offset;
|
|
41
35
|
}
|
|
42
|
-
/**
|
|
43
|
-
*
|
|
44
|
-
* indent, Shift+Tab dedent), where a tab on the closer pushes it past GFM's 3-space limit and one
|
|
45
|
-
* on the opener demotes the block. Arbitrary RANGE gestures use `fenceEditSpan` instead.
|
|
46
|
-
*/
|
|
36
|
+
/** For gestures that rewrite whole lines (indent, dedent): a tab on the closer pushes it past
|
|
37
|
+
* GFM's three-space limit, and one on the opener demotes the block. */
|
|
47
38
|
export function clampRangeToBody(node, range) {
|
|
48
39
|
const { start: lo, end: hi } = bodyWindow(node);
|
|
49
40
|
const clamp = (offset) => Math.min(Math.max(offset, lo), hi);
|
|
50
41
|
return { start: clamp(range.start), end: clamp(range.end) };
|
|
51
42
|
}
|
|
52
|
-
/**
|
|
53
|
-
*
|
|
54
|
-
* Every other offset on the fence lines is one keystroke from swallowing the following blocks into
|
|
55
|
-
* the code node. An UNCLOSED fence is the exception: with no closer to orphan, its run is content
|
|
56
|
-
* too, so demoting the block is how a just-typed ` ``` ` gets undone.
|
|
57
|
-
*/
|
|
43
|
+
/** Whether an edit reaches past the body and the opener's info string. An unclosed fence's run
|
|
44
|
+
* counts as content, so deleting it is how a just-typed ` ``` ` is undone. */
|
|
58
45
|
export function crossesFenceBoundary(node, range) {
|
|
59
46
|
const { openerContent, body } = fenceRegions(node);
|
|
60
47
|
const lo = Math.min(range.start, range.end);
|
|
@@ -72,9 +59,8 @@ export function fenceEditSpan(node, range) {
|
|
|
72
59
|
return crossesFenceBoundary(node, span) ? clampRangeToBody(node, span) : span;
|
|
73
60
|
}
|
|
74
61
|
/**
|
|
75
|
-
* Where a caret
|
|
76
|
-
*
|
|
77
|
-
* the landing looks successful and the next character disappears.
|
|
62
|
+
* Where a caret arriving from outside the block lands, in every mode: on the body. On a hidden
|
|
63
|
+
* fence line it would take keystrokes the fence check refuses, so the next character disappears.
|
|
78
64
|
*/
|
|
79
65
|
export function clampCaretToBody(node, offset) {
|
|
80
66
|
const caret = { start: offset, end: offset };
|
|
@@ -82,11 +68,8 @@ export function clampCaretToBody(node, offset) {
|
|
|
82
68
|
return offset;
|
|
83
69
|
return clampRangeToBody(node, caret).start;
|
|
84
70
|
}
|
|
85
|
-
/**
|
|
86
|
-
*
|
|
87
|
-
* no body after the clamp is declined, not re-sited to a body edge the user never pointed at.
|
|
88
|
-
* Paste consults it directly, since it splices through the paste tree-op.
|
|
89
|
-
*/
|
|
71
|
+
/** A range that reached the fence lines and keeps no body after the clamp is declined, rather
|
|
72
|
+
* than moved to a body edge the user never pointed at. */
|
|
90
73
|
export function isStructureOnlyRange(node, range) {
|
|
91
74
|
const ordered = orderedRange(range);
|
|
92
75
|
if (!crossesFenceBoundary(node, ordered))
|
|
@@ -95,28 +78,41 @@ export function isStructureOnlyRange(node, range) {
|
|
|
95
78
|
return span.start === span.end;
|
|
96
79
|
}
|
|
97
80
|
/**
|
|
98
|
-
* The one in
|
|
99
|
-
* and cut. Null when there is nothing to rewrite
|
|
81
|
+
* The one splice over a range in place where the fence lines are hidden: the browser's delete
|
|
82
|
+
* and type-over, through the beforeinput check, and cut. Null when there is nothing to rewrite.
|
|
100
83
|
*/
|
|
101
84
|
export function computeFenceRangedEdit(node, range, insert) {
|
|
102
85
|
if (isStructureOnlyRange(node, range))
|
|
103
86
|
return null;
|
|
104
|
-
|
|
105
|
-
|
|
87
|
+
return computeRangedEdit(trimTrailingLineEnding(node.raw), fenceEditSpan(node, range), insert);
|
|
88
|
+
}
|
|
89
|
+
/** `insert` spliced over `range` of `display`; null when it changes nothing, so no undo entry is used. */
|
|
90
|
+
export function computeRangedEdit(display, range, insert) {
|
|
91
|
+
const span = orderedRange(range);
|
|
106
92
|
const newText = display.slice(0, span.start) + insert + display.slice(span.end);
|
|
107
93
|
if (newText === display)
|
|
108
94
|
return null;
|
|
109
95
|
return { newText, newCursor: span.start + insert.length };
|
|
110
96
|
}
|
|
97
|
+
/** The body's own span, the only lines a vertical arrival may land a caret on. */
|
|
98
|
+
export function bodyWindow(node) {
|
|
99
|
+
return bodyWindowOf(sliceFencedCode(node), displayLength(node.raw));
|
|
100
|
+
}
|
|
111
101
|
function fenceRegions(node) {
|
|
112
102
|
const slice = sliceFencedCode(node);
|
|
113
103
|
const displayEnd = displayLength(node.raw);
|
|
114
104
|
const body = bodyWindowOf(slice, displayEnd);
|
|
115
105
|
const openerTextEnd = Math.min(displayLength(slice.openerLine), displayEnd);
|
|
106
|
+
// The run is measured, so an opener a paste grew to four markers measures as four; a line past
|
|
107
|
+
// the three-space indent limit opens no fence and has no info string at all.
|
|
108
|
+
const marker = metadataOf(node, 'fencedCode').fenceMarker;
|
|
109
|
+
const opener = fenceAnatomy(slice.openerLine, { marker, length: 3 });
|
|
116
110
|
const hasCloser = slice.closerLine.length > 0;
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
111
|
+
let contentStart = 0;
|
|
112
|
+
if (!opener)
|
|
113
|
+
contentStart = openerTextEnd;
|
|
114
|
+
else if (hasCloser)
|
|
115
|
+
contentStart = Math.min(opener.runEnd, openerTextEnd);
|
|
120
116
|
return {
|
|
121
117
|
openerTextEnd,
|
|
122
118
|
openerContent: { start: contentStart, end: openerTextEnd },
|
|
@@ -126,31 +122,12 @@ function fenceRegions(node) {
|
|
|
126
122
|
closerTextStart: Math.min(body.start + slice.body.length, displayEnd)
|
|
127
123
|
};
|
|
128
124
|
}
|
|
129
|
-
|
|
130
|
-
* Past the opener's indentation and marker run — where the info string starts. The run's LENGTH is
|
|
131
|
-
* measured rather than read from `fenceLength`, so an opener a paste bumped to four markers
|
|
132
|
-
* measures as four. Past GFM's 3-space indent limit there is no info string at all.
|
|
133
|
-
*/
|
|
134
|
-
function markerRunEnd(openerLine, marker) {
|
|
135
|
-
const MAX_INDENT = 3;
|
|
136
|
-
let index = 0;
|
|
137
|
-
while (index < MAX_INDENT && openerLine[index] === ' ')
|
|
138
|
-
index++;
|
|
139
|
-
if (openerLine[index] !== marker)
|
|
140
|
-
return openerLine.length;
|
|
141
|
-
while (openerLine[index] === marker)
|
|
142
|
-
index++;
|
|
143
|
-
return index;
|
|
144
|
-
}
|
|
145
|
-
function orderedRange(range) {
|
|
125
|
+
export function orderedRange(range) {
|
|
146
126
|
return {
|
|
147
127
|
start: Math.min(range.start, range.end),
|
|
148
128
|
end: Math.max(range.start, range.end)
|
|
149
129
|
};
|
|
150
130
|
}
|
|
151
|
-
function bodyWindow(node) {
|
|
152
|
-
return bodyWindowOf(sliceFencedCode(node), displayLength(node.raw));
|
|
153
|
-
}
|
|
154
131
|
function bodyWindowOf(slice, displayEnd) {
|
|
155
132
|
const bounds = fenceBodyBounds(slice);
|
|
156
133
|
// A fence with no body line yet (` ``` ` plus its ending) has a body start past
|
|
@@ -158,11 +135,8 @@ function bodyWindowOf(slice, displayEnd) {
|
|
|
158
135
|
const start = Math.min(bounds.start, displayEnd);
|
|
159
136
|
return { start, end: Math.min(Math.max(bounds.end, start), displayEnd) };
|
|
160
137
|
}
|
|
161
|
-
/**
|
|
162
|
-
*
|
|
163
|
-
* own trailing ending through `displayLength`, so a CRLF document's boundary does not
|
|
164
|
-
* land between the `\r` and the `\n`.
|
|
165
|
-
*/
|
|
138
|
+
/** `end` reads the body's trailing ending through `displayLength`, so a CRLF boundary never
|
|
139
|
+
* lands between the `\r` and the `\n`. */
|
|
166
140
|
function fenceBodyBounds(slice) {
|
|
167
141
|
const start = slice.openerLine.length;
|
|
168
142
|
return { start, end: start + displayLength(slice.body) };
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* `none` means Enter falls through to in-block edit handling.
|
|
2
|
+
* Whether pressing Enter leaves a fenced code block. An unclosed fence leaves by writing its own
|
|
3
|
+
* closer: the gesture creates a block below, and without a closer a reload would absorb that
|
|
4
|
+
* block back into the fence. `none` means Enter falls through to editing inside the block.
|
|
6
5
|
*/
|
|
7
6
|
import type { FencedCodeMetadata } from '../../../core/nodes';
|
|
8
7
|
export interface FenceExitInput {
|
|
@@ -25,15 +24,11 @@ export interface TypedFenceExitInput extends FenceExitInput {
|
|
|
25
24
|
/** The one character the pending `insertText` would write. */
|
|
26
25
|
typed: string;
|
|
27
26
|
}
|
|
28
|
-
/** A typed closer either leaves
|
|
27
|
+
/** A typed closer either leaves the block, taking its own line with it, or is just a byte. */
|
|
29
28
|
export type TypedFenceExitResult = Extract<FenceExitResult, {
|
|
30
29
|
kind: 'exitWithEdit' | 'none';
|
|
31
30
|
}>;
|
|
32
31
|
export declare function computeFenceExit(input: FenceExitInput): FenceExitResult;
|
|
33
|
-
/**
|
|
34
|
-
*
|
|
35
|
-
* editor reads that run as "done here", and the bytes never land — written, they would be a body
|
|
36
|
-
* line reading as the closer, which the write seam can only answer by growing the fence. A run
|
|
37
|
-
* anywhere else is content, and that escalation keeps its CommonMark meaning.
|
|
38
|
-
*/
|
|
32
|
+
/** A closer run typed on the body's empty last line leaves the block unwritten, since written
|
|
33
|
+
* it would grow the fence; a run anywhere else is content. */
|
|
39
34
|
export declare function computeTypedFenceExit(input: TypedFenceExitInput): TypedFenceExitResult;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* `none` means Enter falls through to in-block edit handling.
|
|
2
|
+
* Whether pressing Enter leaves a fenced code block. An unclosed fence leaves by writing its own
|
|
3
|
+
* closer: the gesture creates a block below, and without a closer a reload would absorb that
|
|
4
|
+
* block back into the fence. `none` means Enter falls through to editing inside the block.
|
|
6
5
|
*/
|
|
7
|
-
import {
|
|
6
|
+
import { firstDisplayLine, lineEndingAt, ownTrailingLineEnding } from '../../../core/lines';
|
|
8
7
|
import { matchFenceClose } from '../../../core/parsers/fence-syntax';
|
|
9
8
|
// ── Public API ──────────────────────────────────────────────────────────────
|
|
10
9
|
export function computeFenceExit(input) {
|
|
@@ -12,51 +11,51 @@ export function computeFenceExit(input) {
|
|
|
12
11
|
if (meta.closed) {
|
|
13
12
|
if (offset === text.length)
|
|
14
13
|
return { kind: 'exit' };
|
|
14
|
+
// The caret starts an empty line: a break before it, and its own break right at it.
|
|
15
|
+
const ending = lineEndingAt(text, offset);
|
|
15
16
|
const onEmptyLineBeforeCloser = offset >= 1 &&
|
|
16
17
|
text[offset - 1] === '\n' &&
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
ending !== '' &&
|
|
19
|
+
startsCloserLine(text, offset + ending.length, meta);
|
|
19
20
|
if (onEmptyLineBeforeCloser) {
|
|
20
|
-
return {
|
|
21
|
+
return {
|
|
22
|
+
kind: 'exitWithEdit',
|
|
23
|
+
newText: text.slice(0, offset) + text.slice(offset + ending.length)
|
|
24
|
+
};
|
|
21
25
|
}
|
|
22
26
|
return { kind: 'none' };
|
|
23
27
|
}
|
|
24
|
-
|
|
25
|
-
|
|
28
|
+
const ending = ownTrailingLineEnding(text);
|
|
29
|
+
if (offset === text.length && ending !== '') {
|
|
26
30
|
const body = text.slice(0, text.length - ending.length);
|
|
27
31
|
const closer = meta.fenceMarker.repeat(meta.fenceLength);
|
|
28
32
|
return { kind: 'closeAndExit', newText: body + ending + closer };
|
|
29
33
|
}
|
|
30
34
|
return { kind: 'none' };
|
|
31
35
|
}
|
|
32
|
-
/**
|
|
33
|
-
*
|
|
34
|
-
* editor reads that run as "done here", and the bytes never land — written, they would be a body
|
|
35
|
-
* line reading as the closer, which the write seam can only answer by growing the fence. A run
|
|
36
|
-
* anywhere else is content, and that escalation keeps its CommonMark meaning.
|
|
37
|
-
*/
|
|
36
|
+
/** A closer run typed on the body's empty last line leaves the block unwritten, since written
|
|
37
|
+
* it would grow the fence; a run anywhere else is content. */
|
|
38
38
|
export function computeTypedFenceExit(input) {
|
|
39
39
|
const { text, offset, meta, typed } = input;
|
|
40
40
|
const none = { kind: 'none' };
|
|
41
41
|
if (!meta.closed || typed !== meta.fenceMarker)
|
|
42
42
|
return none;
|
|
43
43
|
// The caret must sit at the end of a line that has one below it: the closer's.
|
|
44
|
-
const ending =
|
|
45
|
-
if (
|
|
44
|
+
const ending = lineEndingAt(text, offset);
|
|
45
|
+
if (ending === '')
|
|
46
46
|
return none;
|
|
47
47
|
const lineStart = text.lastIndexOf('\n', offset - 1) + 1;
|
|
48
48
|
const run = text.slice(lineStart, offset);
|
|
49
49
|
if (run !== meta.fenceMarker.repeat(run.length) || run.length + 1 < meta.fenceLength)
|
|
50
50
|
return none;
|
|
51
|
-
const below = offset + ending
|
|
52
|
-
if (!
|
|
51
|
+
const below = offset + ending.length;
|
|
52
|
+
if (!startsCloserLine(text, below, meta))
|
|
53
53
|
return none;
|
|
54
|
-
// The run's line goes with the exit, as Enter's own
|
|
54
|
+
// The run's line goes with the exit, as Enter's own exit takes the blank line.
|
|
55
55
|
return { kind: 'exitWithEdit', newText: text.slice(0, lineStart) + text.slice(below) };
|
|
56
56
|
}
|
|
57
57
|
// ── Internal ────────────────────────────────────────────────────────────────
|
|
58
|
-
|
|
59
|
-
function
|
|
60
|
-
|
|
61
|
-
return end === -1 ? text.slice(start) : text.slice(start, end);
|
|
58
|
+
/** Whether the line starting at `offset` closes the block's fence. */
|
|
59
|
+
function startsCloserLine(text, offset, meta) {
|
|
60
|
+
return matchFenceClose(firstDisplayLine(text.slice(offset)).text, meta.fenceMarker, meta.fenceLength);
|
|
62
61
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* four leading spaces per line, preferring tab.
|
|
2
|
+
* Tab indent and Shift+Tab dedent for code-block text. Dedent removes one tab, or up to
|
|
3
|
+
* four leading spaces per line, preferring a tab.
|
|
4
4
|
*/
|
|
5
5
|
export interface Selection {
|
|
6
6
|
start: number;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* four leading spaces per line, preferring tab.
|
|
2
|
+
* Tab indent and Shift+Tab dedent for code-block text. Dedent removes one tab, or up to
|
|
3
|
+
* four leading spaces per line, preferring a tab.
|
|
4
4
|
*/
|
|
5
5
|
// ── Public API ──────────────────────────────────────────────────────────────
|
|
6
6
|
export function indentLines(text, selection) {
|
|
@@ -59,11 +59,8 @@ export function dedentLines(text, selection) {
|
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
61
|
// ── Internal ────────────────────────────────────────────────────────────────
|
|
62
|
-
/**
|
|
63
|
-
*
|
|
64
|
-
* at or before a line's terminating newline stays on that line; one ending at
|
|
65
|
-
* the next line's start pulls that line in.
|
|
66
|
-
*/
|
|
62
|
+
/** Line starts for every line the selection touches; a selection ending at the next line's
|
|
63
|
+
* start pulls that line in. */
|
|
67
64
|
function collectLineStarts(text, selection) {
|
|
68
65
|
const first = text.lastIndexOf('\n', selection.start - 1) + 1;
|
|
69
66
|
const starts = [first];
|
|
@@ -1,21 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* imports highlight.js directly;
|
|
4
|
-
*
|
|
2
|
+
* The registry of languages code blocks are highlighted with. Nothing outside this directory
|
|
3
|
+
* imports highlight.js directly; whether a language loads eagerly is decided above this.
|
|
4
|
+
* Alternate spellings resolve to their canonical name here, so no caller keeps its own table.
|
|
5
|
+
* Every read takes an editor's activation, so a plugin's language shows only where it is listed.
|
|
5
6
|
*/
|
|
6
7
|
import type { LanguageFn } from 'highlight.js';
|
|
8
|
+
import type { PluginActivation } from '../../../schema/plugin-activation';
|
|
7
9
|
export interface LanguageGrammar {
|
|
8
10
|
readonly name: string;
|
|
9
11
|
readonly definition: LanguageFn;
|
|
10
12
|
}
|
|
11
|
-
/**
|
|
13
|
+
/** Register-once: a name already taken throws (a dev server replaces). */
|
|
12
14
|
export declare function registerLanguage(name: string, definition: LanguageFn, aliasList?: readonly string[]): void;
|
|
15
|
+
/** The code bootstrap's entry: a language the test reset keeps, owned by no plugin. */
|
|
16
|
+
export declare function registerBuiltinLanguage(name: string, definition: LanguageFn, aliasList?: readonly string[]): void;
|
|
17
|
+
/** Whether the name is taken, whatever the activation: the check before a guarded register. */
|
|
18
|
+
export declare function isLanguageRegistered(name: string): boolean;
|
|
13
19
|
/** Info strings with trailing attributes (`js {1-3}`) resolve on the first token. */
|
|
14
|
-
export declare function getLanguageGrammar(infoString: string): LanguageGrammar | null;
|
|
15
|
-
/** Every registered language once, under its canonical name, sorted
|
|
16
|
-
export declare function listLanguages(): string[];
|
|
17
|
-
/** The alternate spellings a language answers to, from any spelling of it
|
|
18
|
-
* matches `rs` to `rust` without a table of its own. */
|
|
19
|
-
export declare function getLanguageAliases(name: string): readonly string[];
|
|
20
|
-
/** Test-only: clear all registered languages. */
|
|
21
|
-
export declare function __resetRegistryForTests(): void;
|
|
20
|
+
export declare function getLanguageGrammar(infoString: string, activation: PluginActivation): LanguageGrammar | null;
|
|
21
|
+
/** Every registered language once, under its canonical name, sorted: the picker's rows. */
|
|
22
|
+
export declare function listLanguages(activation: PluginActivation): string[];
|
|
23
|
+
/** The alternate spellings a language answers to, from any spelling of it, so a picker's
|
|
24
|
+
* filter matches `rs` to `rust` without a table of its own. */
|
|
25
|
+
export declare function getLanguageAliases(name: string, activation: PluginActivation): readonly string[];
|
|
@@ -1,49 +1,67 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* imports highlight.js directly;
|
|
4
|
-
*
|
|
2
|
+
* The registry of languages code blocks are highlighted with. Nothing outside this directory
|
|
3
|
+
* imports highlight.js directly; whether a language loads eagerly is decided above this.
|
|
4
|
+
* Alternate spellings resolve to their canonical name here, so no caller keeps its own table.
|
|
5
|
+
* Every read takes an editor's activation, so a plugin's language shows only where it is listed.
|
|
5
6
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
import { createPluginRegistry } from '../../../schema/plugin-registry';
|
|
8
|
+
import { fenceLanguage } from '../../../core/parsers/fence-syntax';
|
|
9
|
+
const grammars = createPluginRegistry({
|
|
10
|
+
label: 'registerLanguage',
|
|
11
|
+
isBuiltin: () => false
|
|
12
|
+
});
|
|
13
|
+
/** Register-once: a name already taken throws (a dev server replaces). */
|
|
9
14
|
export function registerLanguage(name, definition, aliasList = []) {
|
|
15
|
+
const { key, language, conflict } = languageEntry(name, definition, aliasList);
|
|
16
|
+
grammars.register(key, language, conflict);
|
|
17
|
+
}
|
|
18
|
+
/** The code bootstrap's entry: a language the test reset keeps, owned by no plugin. */
|
|
19
|
+
export function registerBuiltinLanguage(name, definition, aliasList = []) {
|
|
20
|
+
const { key, language, conflict } = languageEntry(name, definition, aliasList);
|
|
21
|
+
grammars.registerCore(key, language, conflict);
|
|
22
|
+
}
|
|
23
|
+
function languageEntry(name, definition, aliasList) {
|
|
10
24
|
const key = name.toLowerCase();
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
|
|
20
|
-
|
|
25
|
+
const aliases = [...new Set(aliasList.map((alias) => alias.toLowerCase()))];
|
|
26
|
+
return {
|
|
27
|
+
key,
|
|
28
|
+
language: { name: key, definition, aliases },
|
|
29
|
+
conflict: `registerLanguage: "${key}" is already registered. Languages are register-once.`
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** Whether the name is taken, whatever the activation: the check before a guarded register. */
|
|
33
|
+
export function isLanguageRegistered(name) {
|
|
34
|
+
return grammars.has(name.toLowerCase());
|
|
35
|
+
}
|
|
36
|
+
/** Any spelling of a language to the one name it is registered under. A name of its own beats
|
|
37
|
+
* another language's alternate spelling, so no grammar is hidden behind somebody's nickname. */
|
|
38
|
+
function canonicalName(spelling, activation) {
|
|
21
39
|
const key = spelling.toLowerCase();
|
|
22
|
-
|
|
40
|
+
const languages = grammars.entries(activation);
|
|
41
|
+
if (languages.some(([name]) => name === key))
|
|
23
42
|
return key;
|
|
24
|
-
|
|
43
|
+
let canonical = key;
|
|
44
|
+
for (const [name, language] of languages)
|
|
45
|
+
if (language.aliases.includes(key))
|
|
46
|
+
canonical = name;
|
|
47
|
+
return canonical;
|
|
25
48
|
}
|
|
26
49
|
/** Info strings with trailing attributes (`js {1-3}`) resolve on the first token. */
|
|
27
|
-
export function getLanguageGrammar(infoString) {
|
|
28
|
-
const
|
|
29
|
-
if (
|
|
50
|
+
export function getLanguageGrammar(infoString, activation) {
|
|
51
|
+
const language = fenceLanguage(infoString);
|
|
52
|
+
if (language === '')
|
|
30
53
|
return null;
|
|
31
|
-
return grammars.get(canonicalName(
|
|
32
|
-
}
|
|
33
|
-
/** Every registered language once, under its canonical name, sorted
|
|
34
|
-
export function listLanguages() {
|
|
35
|
-
return
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return
|
|
44
|
-
}
|
|
45
|
-
/** Test-only: clear all registered languages. */
|
|
46
|
-
export function __resetRegistryForTests() {
|
|
47
|
-
grammars.clear();
|
|
48
|
-
aliases.clear();
|
|
54
|
+
return grammars.get(canonicalName(language, activation), activation) ?? null;
|
|
55
|
+
}
|
|
56
|
+
/** Every registered language once, under its canonical name, sorted: the picker's rows. */
|
|
57
|
+
export function listLanguages(activation) {
|
|
58
|
+
return grammars
|
|
59
|
+
.entries(activation)
|
|
60
|
+
.map(([name]) => name)
|
|
61
|
+
.sort();
|
|
62
|
+
}
|
|
63
|
+
/** The alternate spellings a language answers to, from any spelling of it, so a picker's
|
|
64
|
+
* filter matches `rs` to `rust` without a table of its own. */
|
|
65
|
+
export function getLanguageAliases(name, activation) {
|
|
66
|
+
return grammars.get(canonicalName(name, activation), activation)?.aliases ?? [];
|
|
49
67
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* PasteSurface for fenced code blocks. Paste is always literal text, so the structural
|
|
3
|
-
*
|
|
2
|
+
* PasteSurface for fenced code blocks. Paste is always literal text, so the structural hook is
|
|
3
|
+
* omitted and pasteDispatch falls through to the inline path; the write that stores the splice
|
|
4
|
+
* runs the fence rule, which grows the fence past a run the paste lands.
|
|
4
5
|
*/
|
|
5
6
|
import type { PasteSurface } from '../../../tree-operations/paste-surfaces';
|
|
6
7
|
export declare const codePasteSurface: PasteSurface;
|