@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.
- package/README.md +2 -2
- package/dist/a11y-strings.d.ts +12 -5
- package/dist/a11y-strings.js +61 -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 +13 -20
- 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 +619 -1089
- package/dist/components/Editor.svelte.d.ts +9 -20
- package/dist/components/GapCaret.svelte +26 -59
- package/dist/components/SelectionOverlay.svelte +36 -67
- package/dist/components/SelectionOverlay.svelte.d.ts +6 -4
- 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 +103 -100
- 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 +35 -28
- 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 +58 -32
- 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 +144 -202
- 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 +46 -90
- package/dist/components/blocks/list/ListItemBlock.svelte +99 -144
- package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +3 -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 +9 -4
- package/dist/components/blocks/text/click-snap-guard.js +16 -5
- 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 +164 -180
- 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 -105
- 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 +243 -208
- 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 +13 -30
- package/dist/components/drag-handle.js +25 -63
- 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 -31
- package/dist/components/editor-root-listeners.js +49 -46
- 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 +26 -30
- 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 +380 -0
- package/dist/components/menu/SelectionToolbar.svelte.d.ts +14 -0
- 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 +55 -68
- package/dist/core/inline/inline-widgets.js +55 -58
- 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 +33 -17
- 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 -7
- package/dist/cursor/height-oracle.js +26 -75
- 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 +16 -8
- package/dist/cursor/scrollport.js +28 -5
- 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 -13
- package/dist/cursor/visual-lines.js +72 -28
- package/dist/cursor/widget-edge-snap.d.ts +23 -0
- package/dist/cursor/widget-edge-snap.js +39 -0
- package/dist/cursor/widget-offset.d.ts +111 -102
- package/dist/cursor/widget-offset.js +352 -177
- 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 +31 -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 +33 -52
- package/dist/editor-actions/focus/focus-landing.d.ts +11 -5
- package/dist/editor-actions/focus/focus-landing.js +29 -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 +55 -76
- package/dist/editor-actions/plugin/container.js +105 -186
- 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 +91 -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 +38 -8
- package/dist/plugin.js +102 -74
- 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 +113 -85
- 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 -75
- 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 +63 -47
- 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 +18 -7
- 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 +143 -292
- 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 +79 -81
- package/dist/schema/commands.js +156 -116
- 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 +9 -11
- 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 +73 -78
- 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 +93 -152
- 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 +61 -104
- 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 +53 -146
- package/dist/selection/dead-space-caret.d.ts +20 -28
- package/dist/selection/dead-space-caret.js +79 -87
- package/dist/selection/drag-pointer.d.ts +22 -5
- package/dist/selection/drag-pointer.js +63 -31
- 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 -39
- package/dist/selection/keyboard-extend.js +94 -116
- package/dist/selection/multi-click.d.ts +37 -0
- package/dist/selection/multi-click.js +197 -0
- package/dist/selection/native-bridge.d.ts +30 -37
- package/dist/selection/native-bridge.js +80 -100
- package/dist/selection/nearest-block.d.ts +17 -12
- package/dist/selection/nearest-block.js +37 -18
- package/dist/selection/path-lookup.d.ts +31 -14
- package/dist/selection/path-lookup.js +110 -20
- package/dist/selection/path-math.d.ts +9 -11
- package/dist/selection/path-math.js +5 -7
- package/dist/selection/pointer-gesture.d.ts +9 -0
- package/dist/selection/pointer-gesture.js +11 -0
- package/dist/selection/pointer-session.d.ts +10 -16
- package/dist/selection/pointer-session.js +6 -7
- package/dist/selection/primitives.d.ts +64 -33
- package/dist/selection/primitives.js +61 -53
- 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 -19
- 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 +52 -0
- package/dist/selection/selection-drop.js +317 -0
- 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 +75 -53
- package/dist/styles/editor.css +248 -139
- 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 +19 -0
- package/dist/tree-operations/paste/replacement-parse.js +24 -0
- 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 +329 -205
- package/docs/guide/directives.md +7 -7
- package/docs/guide/plugin-api.md +267 -183
- package/docs/guide/plugin-guide.md +341 -235
- package/docs/guide/plugin-testing.md +96 -82
- package/package.json +17 -21
- 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/invariants/split-landing.d.ts +0 -8
- package/dist/invariants/split-landing.js +0 -15
- package/dist/selection/double-click-trim.d.ts +0 -17
- package/dist/selection/double-click-trim.js +0 -57
- 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 -29
- package/dist/tree-operations/paste/replace-block-at-parent.js +0 -75
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
2
|
+
* The worked example of a whole-block container, using public registration only: an opaque
|
|
3
3
|
* container with no children, its diagram code in typed metadata, so an
|
|
4
|
-
* `updateOwnMetadata({ code })` commit is the whole edit path.
|
|
4
|
+
* `updateOwnMetadata({ code })` commit is the whole edit path. Uninstalling is safe by
|
|
5
5
|
* construction: without this opener the same bytes parse as plain `fencedCode`.
|
|
6
6
|
*/
|
|
7
|
-
import { declarePluginKind, registerBlockKind, registerBlockOpener, registerBlockCommand, setPluginMetadata, getPluginMetadata,
|
|
7
|
+
import { declarePluginKind, registerBlockKind, registerBlockOpener, registerBlockCommand, setPluginMetadata, getPluginMetadata, matchFenceInfo, escalatedFenceLength, fenceRawWrite, fenceShapeOfRaw, scanFence, OPENER_PRIORITIES } from '../../plugin';
|
|
8
8
|
export const MERMAID = 'mermaid';
|
|
9
9
|
// ── Fence grammar ─────────────────────────────────────────────────────────────
|
|
10
|
-
// The
|
|
11
|
-
//
|
|
12
|
-
|
|
13
|
-
const fence = matchFenceOpen(text);
|
|
14
|
-
return fence && fence.info.split(/\s+/)[0] === MERMAID ? fence : null;
|
|
15
|
-
}
|
|
10
|
+
// The editor's own fence matcher, filtered on the info string's first word, so the CommonMark
|
|
11
|
+
// fence rules stay in one place and never become a plugin's copy of them.
|
|
12
|
+
const matchMermaidFence = matchFenceInfo(MERMAID);
|
|
16
13
|
/**
|
|
17
14
|
* The edit textarea normalizes to LF, so a CRLF-authored diagram needs its authored
|
|
18
15
|
* ending put back on every body line. An emptied body commits as `''`, no stray line.
|
|
@@ -22,11 +19,8 @@ export function joinMermaidBody(draft, lineEnding) {
|
|
|
22
19
|
return '';
|
|
23
20
|
return draft.replaceAll('\n', lineEnding) + lineEnding;
|
|
24
21
|
}
|
|
25
|
-
/**
|
|
26
|
-
*
|
|
27
|
-
* this kind never re-parses, so the fence is sized against it here — a diagram line that reads as
|
|
28
|
-
* this block's closer would otherwise truncate the block on its next load.
|
|
29
|
-
*/
|
|
22
|
+
/** The opener's inverse, which every code edit goes through; the fence is sized against the body
|
|
23
|
+
* here, since a diagram line reading as the closer would cut the block short on reload. */
|
|
30
24
|
export function rebuildMermaidRaw(node) {
|
|
31
25
|
const meta = getPluginMetadata(node);
|
|
32
26
|
if (!meta)
|
|
@@ -43,13 +37,10 @@ export function rebuildMermaidRaw(node) {
|
|
|
43
37
|
? grownCloser(meta.closerRaw, marker, fenceLength)
|
|
44
38
|
: meta.closerRaw);
|
|
45
39
|
}
|
|
46
|
-
/**
|
|
47
|
-
*
|
|
48
|
-
* ending. An unterminated block has no closer line and gains none: the parser reads it to the end
|
|
49
|
-
* of input either way.
|
|
50
|
-
*/
|
|
40
|
+
/** Grow a verbatim closer line's run to `length`, keeping its indent, trailing spaces and ending;
|
|
41
|
+
* an unterminated block has no closer line and gains none. */
|
|
51
42
|
function grownCloser(closerRaw, marker, length) {
|
|
52
|
-
const match = /^( {0,3})([`~]+)(
|
|
43
|
+
const match = /^( {0,3})([`~]+)(.*)$/s.exec(closerRaw);
|
|
53
44
|
if (!match)
|
|
54
45
|
return closerRaw;
|
|
55
46
|
return match[1] + marker.repeat(Math.max(match[2].length, length)) + match[3];
|
|
@@ -57,8 +48,8 @@ function grownCloser(closerRaw, marker, length) {
|
|
|
57
48
|
// ── Registration ─────────────────────────────────────────────────────────────
|
|
58
49
|
export function registerMermaidKind() {
|
|
59
50
|
const mermaid = declarePluginKind(MERMAID);
|
|
60
|
-
// No default
|
|
61
|
-
// consumer
|
|
51
|
+
// No default key binding: the button is how you edit, and this command exists so a
|
|
52
|
+
// consumer can bind its own.
|
|
62
53
|
registerBlockCommand(mermaid, 'mermaid.edit', (ctx) => {
|
|
63
54
|
const hooks = ctx.hooks;
|
|
64
55
|
if (!hooks)
|
|
@@ -74,25 +65,28 @@ export function registerMermaidKind() {
|
|
|
74
65
|
return true;
|
|
75
66
|
});
|
|
76
67
|
registerBlockKind(mermaid, {
|
|
68
|
+
label: 'Diagram',
|
|
69
|
+
dragLabel: 'Diagram',
|
|
77
70
|
// Backspace from the block below must never merge text into a diagram.
|
|
78
71
|
mergeRole: 'not-mergeable',
|
|
79
72
|
editable: true,
|
|
80
73
|
supportsInline: false,
|
|
81
|
-
//
|
|
82
|
-
//
|
|
74
|
+
// Focus first, then delete, as a thematic break does: arrows stop on it, and Backspace
|
|
75
|
+
// from the next block focuses it before a second Backspace deletes it.
|
|
83
76
|
blockFocus: 'whole-block',
|
|
84
|
-
// Leading edge only, for the same reason as
|
|
85
|
-
// inserts a paragraph below.
|
|
77
|
+
// Leading edge only, for the same reason as a thematic break: pressing Enter while it
|
|
78
|
+
// is focused already inserts a paragraph below.
|
|
86
79
|
gapEdges: 'before',
|
|
87
80
|
container: {
|
|
88
|
-
// Raw is rebuilt from metadata alone, so
|
|
89
|
-
// and
|
|
81
|
+
// Raw is rebuilt from metadata alone, so the strip byte-check is skipped and the
|
|
82
|
+
// reparse and determinism checks cover it instead.
|
|
90
83
|
contract: 'opaque',
|
|
91
84
|
rebuildRaw: rebuildMermaidRaw
|
|
92
85
|
},
|
|
93
|
-
// The
|
|
94
|
-
// height
|
|
86
|
+
// The character-count default would estimate a rendered diagram at about one line; the
|
|
87
|
+
// measured height replaces this on mount.
|
|
95
88
|
estimateHeight: () => 320,
|
|
89
|
+
rawWrite: fenceRawWrite(fenceShapeOfRaw),
|
|
96
90
|
keymap: [{ chord: 'Mod+M', command: focusCommand }],
|
|
97
91
|
conformanceFixture: '```mermaid\ngraph TD\n```\n',
|
|
98
92
|
closure: {
|
|
@@ -132,27 +126,16 @@ export function registerMermaidKind() {
|
|
|
132
126
|
}
|
|
133
127
|
});
|
|
134
128
|
registerBlockOpener(mermaid, {
|
|
135
|
-
// `fencedCode` accepts every fence, ```mermaid included, so this
|
|
136
|
-
//
|
|
129
|
+
// `fencedCode` accepts every fence, ```mermaid included, so this has to be tried
|
|
130
|
+
// before it rather than sit between two built-ins.
|
|
137
131
|
priority: OPENER_PRIORITIES.fencedCode - 5,
|
|
138
132
|
interruptsParagraph: (line) => matchMermaidFence(line) !== null,
|
|
139
133
|
tryOpen(ctx) {
|
|
140
134
|
const fence = matchMermaidFence(ctx.line.text);
|
|
141
135
|
if (!fence)
|
|
142
136
|
return null;
|
|
143
|
-
let closeIdx = -1;
|
|
144
|
-
for (let i = ctx.index + 1; i < ctx.end; i++) {
|
|
145
|
-
if (matchFenceClose(ctx.lines[i].text, fence.marker, fence.length)) {
|
|
146
|
-
closeIdx = i;
|
|
147
|
-
break;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
137
|
// Unterminated consumes to end of input, like the built-in fence.
|
|
151
|
-
const
|
|
152
|
-
const code = ctx.lines
|
|
153
|
-
.slice(ctx.index + 1, codeEnd)
|
|
154
|
-
.map((l) => l.raw)
|
|
155
|
-
.join('');
|
|
138
|
+
const scan = scanFence(ctx, fence);
|
|
156
139
|
const node = {
|
|
157
140
|
kind: mermaid,
|
|
158
141
|
leadingTrivia: ctx.leadingTrivia,
|
|
@@ -160,17 +143,17 @@ export function registerMermaidKind() {
|
|
|
160
143
|
children: []
|
|
161
144
|
};
|
|
162
145
|
setPluginMetadata(node, {
|
|
163
|
-
code,
|
|
146
|
+
code: scan.body,
|
|
164
147
|
openerIndent: fence.indent,
|
|
165
148
|
fenceChar: fence.marker,
|
|
166
149
|
fenceLength: fence.length,
|
|
167
150
|
infoRaw: fence.infoRaw,
|
|
168
151
|
openerLineEnding: ctx.line.lineEnding,
|
|
169
|
-
closerRaw:
|
|
152
|
+
closerRaw: scan.closer === -1 ? '' : ctx.lines[scan.closer].raw
|
|
170
153
|
});
|
|
171
154
|
// Raw comes from the rebuild, so opener and rebuild agree by construction.
|
|
172
155
|
rebuildMermaidRaw(node);
|
|
173
|
-
return { node, consumed:
|
|
156
|
+
return { node, consumed: scan.consumed };
|
|
174
157
|
}
|
|
175
158
|
});
|
|
176
159
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* with standard block props. No default: absent a renderer the code renders statically.
|
|
2
|
+
* Where the mermaid renderer is plugged in: `mermaidSlot` holds it and its cache, never mermaid
|
|
3
|
+
* itself, which stays behind the `/renderer` subpath so it never lands in the main bundle.
|
|
4
|
+
* `MermaidBlock` mounts with the standard block props, so it reads the renderer from here.
|
|
6
5
|
*/
|
|
6
|
+
import { type RenderContext } from '../../plugin';
|
|
7
7
|
/** What the editor knows at render time that the diagram text does not carry. */
|
|
8
8
|
export interface MermaidRenderContext {
|
|
9
|
-
/**
|
|
10
|
-
*
|
|
9
|
+
/** Mermaid paints colors into the SVG, so a stylesheet cannot retheme a drawn diagram:
|
|
10
|
+
* the renderer has to draw for the theme. */
|
|
11
11
|
theme: string;
|
|
12
12
|
}
|
|
13
13
|
/** Third parameter, so an existing `(code, id) => …` renderer stays assignable. */
|
|
@@ -16,13 +16,6 @@ export interface MermaidRenderResult {
|
|
|
16
16
|
svg?: string;
|
|
17
17
|
error?: string;
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
export declare function
|
|
22
|
-
export declare function hasMermaidRenderer(): boolean;
|
|
23
|
-
/**
|
|
24
|
-
* Theme belongs in the memo key rather than in a cache reset, so flipping back is a hit; an
|
|
25
|
-
* SVG string needs no per-caller clone. A parse failure resolves to an `error` and caches
|
|
26
|
-
* like a success. `theme` is required, so a caller cannot forget it and still compile.
|
|
27
|
-
*/
|
|
28
|
-
export declare function renderMermaid(code: string, theme: string): Promise<MermaidRenderResult>;
|
|
19
|
+
export declare const mermaidSlot: import("../../plugin").AsyncRendererSlot<string, MermaidRenderResult>;
|
|
20
|
+
/** Mermaid needs a fresh element id per render, which the slot's `(code, ctx)` call leaves out. */
|
|
21
|
+
export declare function adaptMermaidRenderer(renderer: MermaidRenderer): (code: string, ctx: RenderContext) => Promise<MermaidRenderResult>;
|
|
@@ -1,35 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* with standard block props. No default: absent a renderer the code renders statically.
|
|
2
|
+
* Where the mermaid renderer is plugged in: `mermaidSlot` holds it and its cache, never mermaid
|
|
3
|
+
* itself, which stays behind the `/renderer` subpath so it never lands in the main bundle.
|
|
4
|
+
* `MermaidBlock` mounts with the standard block props, so it reads the renderer from here.
|
|
6
5
|
*/
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
let memo = newMemo();
|
|
6
|
+
import { createAsyncRendererSlot } from '../../plugin';
|
|
7
|
+
export const mermaidSlot = createAsyncRendererSlot({
|
|
8
|
+
key: (code) => code,
|
|
9
|
+
missing: () => ({ error: 'renderer not configured' }),
|
|
10
|
+
failed: (_code, error) => ({ error: error instanceof Error ? error.message : String(error) })
|
|
11
|
+
});
|
|
14
12
|
let renderSeq = 0;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
export function hasMermaidRenderer() {
|
|
20
|
-
return activeRenderer !== null;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Theme belongs in the memo key rather than in a cache reset, so flipping back is a hit; an
|
|
24
|
-
* SVG string needs no per-caller clone. A parse failure resolves to an `error` and caches
|
|
25
|
-
* like a success. `theme` is required, so a caller cannot forget it and still compile.
|
|
26
|
-
*/
|
|
27
|
-
export function renderMermaid(code, theme) {
|
|
28
|
-
// NUL-joined so no (theme, code) pair can concatenate into another's key.
|
|
29
|
-
return memo(`${theme}\0${code}`, () => {
|
|
30
|
-
const renderer = activeRenderer;
|
|
31
|
-
return renderer
|
|
32
|
-
? renderer(code, `aragonite-mermaid-${renderSeq++}`, { theme }).then((svg) => ({ svg }), (reason) => ({ error: reason instanceof Error ? reason.message : String(reason) }))
|
|
33
|
-
: Promise.resolve({ error: 'renderer not configured' });
|
|
34
|
-
});
|
|
13
|
+
/** Mermaid needs a fresh element id per render, which the slot's `(code, ctx)` call leaves out. */
|
|
14
|
+
export function adaptMermaidRenderer(renderer) {
|
|
15
|
+
return (code, { theme }) => renderer(code, `aragonite-mermaid-${renderSeq++}`, { theme }).then((svg) => ({ svg }));
|
|
35
16
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The renderer is
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* The renderer is passed in because mermaid is the consumer's dependency; without one the
|
|
3
|
+
* block shows its code as plain text. The plugin installs this setup once per process, so it
|
|
4
|
+
* runs unguarded.
|
|
5
5
|
*/
|
|
6
6
|
import { type EditorPlugin } from '../../plugin';
|
|
7
7
|
import { type MermaidRenderer } from './mermaid-renderer';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The renderer is
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* The renderer is passed in because mermaid is the consumer's dependency; without one the
|
|
3
|
+
* block shows its code as plain text. The plugin installs this setup once per process, so it
|
|
4
|
+
* runs unguarded.
|
|
5
5
|
*/
|
|
6
6
|
import { definePluginBlock } from '../../plugin';
|
|
7
7
|
import { registerMermaidKind, MERMAID } from './mermaid-kind';
|
|
8
|
-
import {
|
|
8
|
+
import { adaptMermaidRenderer, mermaidSlot } from './mermaid-renderer';
|
|
9
9
|
import MermaidBlock from './MermaidBlock.svelte';
|
|
10
10
|
export function mermaidPlugin(options) {
|
|
11
11
|
return definePluginBlock({
|
|
@@ -13,7 +13,7 @@ export function mermaidPlugin(options) {
|
|
|
13
13
|
kind: MERMAID,
|
|
14
14
|
component: MermaidBlock,
|
|
15
15
|
register() {
|
|
16
|
-
|
|
16
|
+
mermaidSlot.set(options?.renderer ? adaptMermaidRenderer(options.renderer) : null);
|
|
17
17
|
registerMermaidKind();
|
|
18
18
|
}
|
|
19
19
|
});
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* The mermaid adapter behind the `@voithos-labs/aragonite/plugins/mermaid/renderer` subpath,
|
|
3
|
+
* the half a consumer supplies. The dynamic import keeps mermaid out of module evaluation, so
|
|
4
|
+
* nothing touches `document` until a diagram actually renders.
|
|
5
5
|
*/
|
|
6
6
|
import type { MermaidRenderer } from './mermaid-renderer';
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
9
|
-
* theme
|
|
8
|
+
* One after another, not together: the config is global to the process, so two renders either
|
|
9
|
+
* side of a theme change would interleave and one diagram would come back half-themed.
|
|
10
10
|
*/
|
|
11
11
|
export declare const mermaidRenderer: MermaidRenderer;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* The mermaid adapter behind the `@voithos-labs/aragonite/plugins/mermaid/renderer` subpath,
|
|
3
|
+
* the half a consumer supplies. The dynamic import keeps mermaid out of module evaluation, so
|
|
4
|
+
* nothing touches `document` until a diagram actually renders.
|
|
5
5
|
*/
|
|
6
6
|
/** Respread on every re-initialize, because mermaid's `initialize` replaces the site
|
|
7
7
|
* config rather than patching it. */
|
|
@@ -13,11 +13,8 @@ const BASE_CONFIG = {
|
|
|
13
13
|
suppressErrorRendering: true
|
|
14
14
|
};
|
|
15
15
|
const MERMAID_THEMES = new Set(['default', 'base', 'dark', 'forest', 'neutral']);
|
|
16
|
-
/**
|
|
17
|
-
*
|
|
18
|
-
* get it; anything else falls to mermaid's light palette. Wrapping this injected renderer to
|
|
19
|
-
* rewrite `context.theme` is how a custom theme maps.
|
|
20
|
-
*/
|
|
16
|
+
/** Mermaid's own theme names pass through (an editor theme named `'forest'` gets it) and anything
|
|
17
|
+
* else gets its light palette; wrap the renderer to map a custom theme onto one of mermaid's. */
|
|
21
18
|
function toMermaidTheme(editorTheme) {
|
|
22
19
|
return (MERMAID_THEMES.has(editorTheme) ? editorTheme : 'default');
|
|
23
20
|
}
|
|
@@ -41,11 +38,11 @@ async function renderThemed(code, id, theme) {
|
|
|
41
38
|
return svg;
|
|
42
39
|
}
|
|
43
40
|
/**
|
|
44
|
-
*
|
|
45
|
-
* theme
|
|
41
|
+
* One after another, not together: the config is global to the process, so two renders either
|
|
42
|
+
* side of a theme change would interleave and one diagram would come back half-themed.
|
|
46
43
|
*/
|
|
47
44
|
export const mermaidRenderer = (code, id, context) => {
|
|
48
|
-
const theme = toMermaidTheme(context
|
|
45
|
+
const theme = toMermaidTheme(context.theme);
|
|
49
46
|
const svg = queue.then(() => renderThemed(code, id, theme));
|
|
50
47
|
// The chain must survive a rejection, or one bad diagram strands every later render.
|
|
51
48
|
queue = svg.then(() => { }, () => { });
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<!-- ParrotBlock.svelte -->
|
|
2
2
|
<script lang="ts">
|
|
3
|
-
import { createEditableLeaf, type NodeView } from '../../plugin';
|
|
3
|
+
import { createEditableLeaf, trimWhitespace, type NodeView } from '../../plugin';
|
|
4
4
|
|
|
5
5
|
let { node, index, myPath = [] }: { node: NodeView; index: number; myPath?: number[] } = $props();
|
|
6
6
|
let sourceEl: HTMLDivElement | undefined = $state();
|
|
@@ -220,13 +220,21 @@ Ol;......................................;l'
|
|
|
220
220
|
cNd.........................................;lOc
|
|
221
221
|
`
|
|
222
222
|
];
|
|
223
|
-
// One strip the CSS scrolls a frame at a time. The closing newline
|
|
223
|
+
// One strip the CSS scrolls a frame at a time. The closing newline matters: a `pre`
|
|
224
224
|
// drops a trailing blank line, and a strip a row short steps a fraction off every frame.
|
|
225
225
|
const REEL = FRAMES.join('\n') + '\n';
|
|
226
226
|
// The clip window's height, which is why every frame has to be the same number of rows.
|
|
227
227
|
const FRAME_ROWS = FRAMES[0].split('\n').length;
|
|
228
228
|
|
|
229
|
-
|
|
229
|
+
// The caption is the rest of the marker line, trimmed, and `start` is where it sits in the
|
|
230
|
+
// source: `parrotCaretAtPoint` reads it off the element to map a press back to a byte.
|
|
231
|
+
function parrotCaption(raw: string): { text: string; start: number } {
|
|
232
|
+
const rest = raw.slice('%%parrot'.length);
|
|
233
|
+
const text = trimWhitespace(rest);
|
|
234
|
+
return { text, start: '%%parrot'.length + rest.indexOf(text) };
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
const caption = $derived(parrotCaption(node.raw));
|
|
230
238
|
|
|
231
239
|
export const editable = true;
|
|
232
240
|
export const focusable = true;
|
|
@@ -237,8 +245,8 @@ cNd.........................................;lOc
|
|
|
237
245
|
export const getSelectedText = leaf.getSelectedText;
|
|
238
246
|
export const setSelection = leaf.setSelection;
|
|
239
247
|
export const measurePartialRects = leaf.measurePartialRects;
|
|
240
|
-
export const runCommand = leaf.runCommand;
|
|
241
248
|
export const insertMarkdown = leaf.insertMarkdown;
|
|
249
|
+
export const afterSourceCommit = leaf.afterSourceCommit;
|
|
242
250
|
</script>
|
|
243
251
|
|
|
244
252
|
<div
|
|
@@ -258,11 +266,12 @@ cNd.........................................;lOc
|
|
|
258
266
|
{:else}
|
|
259
267
|
<div
|
|
260
268
|
class="parrot-caption"
|
|
269
|
+
data-caption-start={caption.start}
|
|
261
270
|
role="button"
|
|
262
271
|
tabindex="-1"
|
|
263
272
|
aria-label="Party parrot caption (click to edit)"
|
|
264
273
|
>
|
|
265
|
-
{caption}
|
|
274
|
+
{caption.text}
|
|
266
275
|
</div>
|
|
267
276
|
{/if}
|
|
268
277
|
</div>
|
|
@@ -273,14 +282,16 @@ cNd.........................................;lOc
|
|
|
273
282
|
font-size: 1.1em;
|
|
274
283
|
line-height: 1.1;
|
|
275
284
|
letter-spacing: 0.05em;
|
|
276
|
-
/* one frame tall, in the reel's own rows so a step lands on the next frame exactly
|
|
285
|
+
/* one frame tall, in the reel's own rows so a step lands on the next frame exactly; the
|
|
286
|
+
em line is the same height for engines without lh (Safari before 16.4) */
|
|
287
|
+
height: calc(var(--parrot-rows) * 1.1em);
|
|
277
288
|
height: calc(var(--parrot-rows) * 1lh);
|
|
278
289
|
/* wider than a phone column, and the editor root pans if it isn't contained; the bar
|
|
279
290
|
would sit across the bird, which is decoration rather than a pane to scroll */
|
|
280
291
|
overflow-x: auto;
|
|
281
292
|
overflow-y: hidden;
|
|
282
293
|
scrollbar-width: none;
|
|
283
|
-
/*
|
|
294
|
+
/* decoration, not content: every frame is in the DOM and none of them belong in a copy */
|
|
284
295
|
user-select: none;
|
|
285
296
|
animation: parrot-hue 0.49s step-end infinite;
|
|
286
297
|
}
|
|
@@ -14,8 +14,8 @@ declare const ParrotBlock: import("svelte").Component<$$ComponentProps, {
|
|
|
14
14
|
getSelectedText: () => string;
|
|
15
15
|
setSelection: (start: number, end: number) => void;
|
|
16
16
|
measurePartialRects: (startOffset: number, endOffset: number) => DOMRect[];
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
insertMarkdown: (md: string) => Promise<boolean>;
|
|
18
|
+
afterSourceCommit: (run: () => void) => void;
|
|
19
19
|
}, "">;
|
|
20
20
|
type ParrotBlock = ReturnType<typeof ParrotBlock>;
|
|
21
21
|
export default ParrotBlock;
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
import { caretOffsetAtPoint, declarePluginKind, definePluginBlock, registerBlockKind, registerBlockOpener, simpleLeafClosure } from '../../plugin';
|
|
3
3
|
import ParrotBlock from './ParrotBlock.svelte';
|
|
4
4
|
export const PARROT = 'parrot';
|
|
5
|
-
/** Where a
|
|
6
|
-
* so an offset in it sits that far along
|
|
5
|
+
/** Where a click in the block puts the caret. The caption says where it starts in the source,
|
|
6
|
+
* so an offset in it sits that far along; the shown source is the source itself. */
|
|
7
7
|
function parrotCaretAtPoint(blockEl, clientX, clientY) {
|
|
8
8
|
const source = blockEl.querySelector('.parrot-source');
|
|
9
9
|
const view = source ?? blockEl.querySelector('.parrot-caption');
|
|
10
10
|
if (!view)
|
|
11
11
|
return null;
|
|
12
12
|
const offset = caretOffsetAtPoint(view, clientX, clientY) ?? 0;
|
|
13
|
-
return { path: [], offset: source ? offset : offset +
|
|
13
|
+
return { path: [], offset: source ? offset : offset + Number(view.dataset.captionStart) };
|
|
14
14
|
}
|
|
15
15
|
function registerParrotBlock() {
|
|
16
16
|
const parrot = declarePluginKind(PARROT);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a `/` query picks rows: a prefix match on the label or a keyword, and at most one argument
|
|
3
|
+
* after the first space. Pure, so the list's narrowing is testable without an editor.
|
|
4
|
+
*/
|
|
5
|
+
export interface FilterableEntry {
|
|
6
|
+
readonly label: string;
|
|
7
|
+
readonly keywords: readonly string[];
|
|
8
|
+
readonly takesArgument: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface SplitQuery {
|
|
11
|
+
/** The words before the first space: what names the entry. */
|
|
12
|
+
head: string;
|
|
13
|
+
/** What follows the first space, or null when the query has none. */
|
|
14
|
+
argument: string | null;
|
|
15
|
+
}
|
|
16
|
+
export declare function splitQuery(query: string): SplitQuery;
|
|
17
|
+
/** The entries whose label or a keyword starts with `head`, ignoring case, in their given order. */
|
|
18
|
+
export declare function filterEntries<T extends FilterableEntry>(entries: readonly T[], head: string): T[];
|
|
19
|
+
/**
|
|
20
|
+
* Whether the session outlives this query. A space ends it unless the words before it name
|
|
21
|
+
* exactly one entry that takes an argument, so `and / or` stays text; the argument is one word.
|
|
22
|
+
*/
|
|
23
|
+
export declare function acceptsQuery(entries: readonly FilterableEntry[], query: string): boolean;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a `/` query picks rows: a prefix match on the label or a keyword, and at most one argument
|
|
3
|
+
* after the first space. Pure, so the list's narrowing is testable without an editor.
|
|
4
|
+
*/
|
|
5
|
+
export function splitQuery(query) {
|
|
6
|
+
const space = query.search(/\s/);
|
|
7
|
+
if (space === -1)
|
|
8
|
+
return { head: query, argument: null };
|
|
9
|
+
return { head: query.slice(0, space), argument: query.slice(space + 1) };
|
|
10
|
+
}
|
|
11
|
+
/** The entries whose label or a keyword starts with `head`, ignoring case, in their given order. */
|
|
12
|
+
export function filterEntries(entries, head) {
|
|
13
|
+
const wanted = head.toLowerCase();
|
|
14
|
+
return entries.filter((entry) => entry.label.toLowerCase().startsWith(wanted) ||
|
|
15
|
+
entry.keywords.some((keyword) => keyword.toLowerCase().startsWith(wanted)));
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Whether the session outlives this query. A space ends it unless the words before it name
|
|
19
|
+
* exactly one entry that takes an argument, so `and / or` stays text; the argument is one word.
|
|
20
|
+
*/
|
|
21
|
+
export function acceptsQuery(entries, query) {
|
|
22
|
+
if (/[\r\n]/.test(query))
|
|
23
|
+
return false;
|
|
24
|
+
const { head, argument } = splitQuery(query);
|
|
25
|
+
if (argument === null)
|
|
26
|
+
return true;
|
|
27
|
+
if (/\s/.test(argument))
|
|
28
|
+
return false;
|
|
29
|
+
const named = filterEntries(entries, head);
|
|
30
|
+
return named.length === 1 && named[0].takesArgument;
|
|
31
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slash commands: `/` at the start of a line or after a space lists the blocks to insert, three
|
|
3
|
+
* heading levels and the host's own rows. Built on public API alone: an inline-menu source, the
|
|
4
|
+
* insert catalogue, and a global command (`Mod+/`) that types the `/` for a keyboard or touch user.
|
|
5
|
+
*/
|
|
6
|
+
import { type EditorPlugin } from '../../plugin';
|
|
7
|
+
import { type SlashCommandsOptions } from './slash-source';
|
|
8
|
+
/** `runCommand(SLASH_COMMANDS_OPEN, 'table')` opens the list already narrowed to its argument. */
|
|
9
|
+
export declare const SLASH_COMMANDS_OPEN = "slashCommands.open";
|
|
10
|
+
/** `options` are every editor's defaults; an editor's `{ plugin, options }` entry replaces them
|
|
11
|
+
* field by field, so passing `exclude` alone keeps these `entries`. */
|
|
12
|
+
export declare function slashCommandsPlugin(options?: SlashCommandsOptions): EditorPlugin;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slash commands: `/` at the start of a line or after a space lists the blocks to insert, three
|
|
3
|
+
* heading levels and the host's own rows. Built on public API alone: an inline-menu source, the
|
|
4
|
+
* insert catalogue, and a global command (`Mod+/`) that types the `/` for a keyboard or touch user.
|
|
5
|
+
*/
|
|
6
|
+
import { definePlugin, registerGlobalCommand } from '../../plugin';
|
|
7
|
+
import { createSlashSource, SLASH_COMMANDS_MENU } from './slash-source';
|
|
8
|
+
/** `runCommand(SLASH_COMMANDS_OPEN, 'table')` opens the list already narrowed to its argument. */
|
|
9
|
+
export const SLASH_COMMANDS_OPEN = 'slashCommands.open';
|
|
10
|
+
/** `options` are every editor's defaults; an editor's `{ plugin, options }` entry replaces them
|
|
11
|
+
* field by field, so passing `exclude` alone keeps these `entries`. */
|
|
12
|
+
export function slashCommandsPlugin(options = {}) {
|
|
13
|
+
checkEntries(options.entries);
|
|
14
|
+
return definePlugin({
|
|
15
|
+
name: 'slash-commands',
|
|
16
|
+
defaults: options,
|
|
17
|
+
parseOptions(raw) {
|
|
18
|
+
const { entries, exclude } = (raw ?? {});
|
|
19
|
+
checkEntries(entries);
|
|
20
|
+
return { entries, exclude };
|
|
21
|
+
},
|
|
22
|
+
setup(ctx) {
|
|
23
|
+
registerGlobalCommand(SLASH_COMMANDS_OPEN, (editor, arg) => editor.inlineMenus.open(SLASH_COMMANDS_MENU, {
|
|
24
|
+
query: typeof arg === 'string' ? arg : undefined
|
|
25
|
+
}), { chord: 'Mod+/' });
|
|
26
|
+
ctx.onEditor((editor) => {
|
|
27
|
+
const handle = editor.inlineMenus.addSource(createSlashSource(editor));
|
|
28
|
+
return () => handle.dispose();
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/** A row that neither inserts nor runs would do nothing when picked, so it is refused up front. */
|
|
34
|
+
function checkEntries(entries) {
|
|
35
|
+
for (const entry of entries ?? []) {
|
|
36
|
+
if ((entry.insert === undefined) === (entry.run === undefined)) {
|
|
37
|
+
throw new Error(`slashCommandsPlugin: entry '${entry.id}' needs exactly one of insert and run`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `/` list: the insert catalogue, three heading rows and the host's own entries, read fresh
|
|
3
|
+
* from the editor on every keystroke. A pick removes the `/query` bytes first (its `insert` is
|
|
4
|
+
* empty), then `onCommit` does the row's work through the editor's own entry points.
|
|
5
|
+
*/
|
|
6
|
+
import { type EditorContext, type InlineMenuSource, type MenuIconName } from '../../plugin';
|
|
7
|
+
export declare const SLASH_COMMANDS_MENU = "slash-commands";
|
|
8
|
+
interface SlashCommandEntryBase {
|
|
9
|
+
/** Unique among host rows; a built-in id here replaces that built-in row. */
|
|
10
|
+
id: string;
|
|
11
|
+
label: string;
|
|
12
|
+
icon?: MenuIconName;
|
|
13
|
+
/** Other words the query finds the row by. */
|
|
14
|
+
keywords?: readonly string[];
|
|
15
|
+
}
|
|
16
|
+
/** A host's own row: Markdown to insert, or a function to run. Never both, never neither. */
|
|
17
|
+
export type SlashCommandEntry = SlashCommandEntryBase & ({
|
|
18
|
+
insert: string;
|
|
19
|
+
run?: never;
|
|
20
|
+
takesArgument?: never;
|
|
21
|
+
} | {
|
|
22
|
+
/** Runs after the `/query` bytes are gone, with the argument typed after a space. */
|
|
23
|
+
run: (editor: EditorContext, argument?: string) => void;
|
|
24
|
+
/** Lets the list survive a space, so `/name word` hands `word` to `run`. */
|
|
25
|
+
takesArgument?: boolean;
|
|
26
|
+
insert?: never;
|
|
27
|
+
});
|
|
28
|
+
export interface SlashCommandsOptions {
|
|
29
|
+
/** Rows added after the built-in ones. */
|
|
30
|
+
entries?: readonly SlashCommandEntry[];
|
|
31
|
+
/** Built-in row ids to leave out: an insert catalogue id, or `h1`, `h2`, `h3`. */
|
|
32
|
+
exclude?: readonly string[];
|
|
33
|
+
}
|
|
34
|
+
/** The `/` source for one editor: its rows come from `editor.options` and the live catalogue. */
|
|
35
|
+
export declare function createSlashSource(editor: EditorContext<SlashCommandsOptions>): InlineMenuSource;
|
|
36
|
+
export {};
|