@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,19 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `
|
|
3
|
-
*
|
|
4
|
-
* runs unguarded.
|
|
2
|
+
* `katexRenderer` is the one-import way to supply `renderer`; without one, each formula shows its
|
|
3
|
+
* source. The plugin installs this setup once per process, so it runs unguarded.
|
|
5
4
|
*/
|
|
6
5
|
import { type EditorPlugin } from '../../plugin';
|
|
7
6
|
import { type MathRenderer } from './math-renderer';
|
|
8
7
|
import { type MathBlockLayout } from './math-layout';
|
|
9
8
|
export interface LatexPluginOptions {
|
|
10
|
-
renderer
|
|
11
|
-
/**
|
|
12
|
-
*
|
|
13
|
-
* `stacked` (preview below), or `source` (no preview). Definition-time, so it is the
|
|
14
|
-
* bare-install default; an editor's `{ plugin, options: { blockLayout } }` entry overrides it
|
|
15
|
-
* per instance. The block's own toggle cycles from whichever applies.
|
|
16
|
-
*/
|
|
9
|
+
renderer?: MathRenderer;
|
|
10
|
+
/** How a `$$` block opens for editing (`math-layout.ts`); an editor's
|
|
11
|
+
* `{ plugin, options: { blockLayout } }` entry overrides it. */
|
|
17
12
|
blockLayout?: MathBlockLayout;
|
|
18
13
|
}
|
|
19
|
-
|
|
14
|
+
/** What one editor reads: the renderer is process-wide, so only the layout varies per editor. */
|
|
15
|
+
export interface LatexEditorOptions {
|
|
16
|
+
blockLayout: MathBlockLayout;
|
|
17
|
+
}
|
|
18
|
+
export declare function latexPlugin(options?: LatexPluginOptions): EditorPlugin;
|
|
@@ -1,25 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `
|
|
3
|
-
*
|
|
4
|
-
* runs unguarded.
|
|
2
|
+
* `katexRenderer` is the one-import way to supply `renderer`; without one, each formula shows its
|
|
3
|
+
* source. The plugin installs this setup once per process, so it runs unguarded.
|
|
5
4
|
*/
|
|
6
|
-
import { definePlugin, registerBlockComponent, defineBlockComponent, declaredPluginKind } from '../../plugin';
|
|
5
|
+
import { definePlugin, registerBlockComponent, defineBlockComponent, declaredPluginKind, registerInsertEntry } from '../../plugin';
|
|
7
6
|
import { registerMathInline, registerMathBlock, MATH_BLOCK, MATH_FENCE } from './latex-kind';
|
|
8
|
-
import {
|
|
7
|
+
import { mathSlot } from './math-renderer';
|
|
9
8
|
import { isMathBlockLayout } from './math-layout';
|
|
10
9
|
import BlockMath from './BlockMath.svelte';
|
|
11
|
-
export function latexPlugin(options) {
|
|
12
|
-
const
|
|
10
|
+
export function latexPlugin(options = {}) {
|
|
11
|
+
const { renderer } = options;
|
|
13
12
|
return definePlugin({
|
|
14
13
|
name: 'latex',
|
|
14
|
+
defaults: {
|
|
15
|
+
blockLayout: isMathBlockLayout(options.blockLayout) ? options.blockLayout : 'split'
|
|
16
|
+
},
|
|
17
|
+
// An unknown layout keeps the default rather than breaking the block.
|
|
18
|
+
parseOptions(raw) {
|
|
19
|
+
const blockLayout = raw?.blockLayout;
|
|
20
|
+
return isMathBlockLayout(blockLayout) ? { blockLayout } : {};
|
|
21
|
+
},
|
|
15
22
|
setup() {
|
|
16
|
-
|
|
23
|
+
mathSlot.set(renderer ? ({ source, display }, { theme }) => renderer(source, { display, theme }) : null);
|
|
17
24
|
registerMathInline();
|
|
18
|
-
// registerMathBlock
|
|
25
|
+
// registerMathBlock also registers the ```math fence kind; both render through BlockMath.
|
|
19
26
|
registerMathBlock();
|
|
20
|
-
const blockMath = defineBlockComponent(BlockMath
|
|
27
|
+
const blockMath = defineBlockComponent(BlockMath);
|
|
21
28
|
registerBlockComponent(declaredPluginKind(MATH_BLOCK), blockMath);
|
|
22
29
|
registerBlockComponent(declaredPluginKind(MATH_FENCE), blockMath);
|
|
30
|
+
registerInsertEntry({
|
|
31
|
+
id: 'math',
|
|
32
|
+
label: 'Math block',
|
|
33
|
+
icon: 'sigma',
|
|
34
|
+
keywords: ['math', 'latex', 'equation', 'tex'],
|
|
35
|
+
markdown: '$$\n\n$$\n'
|
|
36
|
+
});
|
|
23
37
|
}
|
|
24
38
|
});
|
|
25
39
|
}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
3
|
-
* it is how a consumer opts into `katex`, an optional peer
|
|
4
|
-
* pulls.
|
|
2
|
+
* The KaTeX adapter behind the `@voithos-labs/aragonite/plugins/latex/renderer` subpath.
|
|
3
|
+
* Importing it is how a consumer opts into `katex`, an optional peer dependency nothing else
|
|
4
|
+
* pulls in.
|
|
5
5
|
*/
|
|
6
6
|
import 'katex/dist/katex.min.css';
|
|
7
|
-
import type
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
export declare const katexRenderer: MathRenderer;
|
|
7
|
+
import { type MathRender } from './math-renderer';
|
|
8
|
+
/** `throwOnError: false` paints a malformed formula as `mathErrorNode` rather than throwing.
|
|
9
|
+
* KaTeX draws no colors of its own, so it has no use for the theme. */
|
|
10
|
+
export declare const katexRenderer: (source: string, { display }: {
|
|
11
|
+
display: boolean;
|
|
12
|
+
}) => MathRender;
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
3
|
-
* it is how a consumer opts into `katex`, an optional peer
|
|
4
|
-
* pulls.
|
|
2
|
+
* The KaTeX adapter behind the `@voithos-labs/aragonite/plugins/latex/renderer` subpath.
|
|
3
|
+
* Importing it is how a consumer opts into `katex`, an optional peer dependency nothing else
|
|
4
|
+
* pulls in.
|
|
5
5
|
*/
|
|
6
6
|
import katex from 'katex';
|
|
7
|
-
//
|
|
8
|
-
//
|
|
7
|
+
// Imported here so a consumer wiring the adapter cannot forget it: `htmlAndMathml` emits a
|
|
8
|
+
// `.katex-mathml` accessibility tree this CSS clips to 1px; without it every equation paints twice.
|
|
9
9
|
import 'katex/dist/katex.min.css';
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
*
|
|
13
|
-
* hover — so a broken formula reads as what the author typed, not as a sentence about it.
|
|
14
|
-
*/
|
|
10
|
+
import { mathErrorNode } from './math-renderer';
|
|
11
|
+
/** `throwOnError: false` paints a malformed formula as `mathErrorNode` rather than throwing.
|
|
12
|
+
* KaTeX draws no colors of its own, so it has no use for the theme. */
|
|
15
13
|
export const katexRenderer = (source, { display }) => {
|
|
16
14
|
const container = document.createElement('span');
|
|
17
15
|
container.innerHTML = katex.renderToString(source, {
|
|
@@ -22,20 +20,7 @@ export const katexRenderer = (source, { display }) => {
|
|
|
22
20
|
const errorSpan = container.querySelector('.katex-error');
|
|
23
21
|
if (errorSpan) {
|
|
24
22
|
const message = (errorSpan.getAttribute('title') ?? 'invalid LaTeX').replace(/^ParseError:\s*/, '');
|
|
25
|
-
return { dom:
|
|
23
|
+
return { dom: mathErrorNode(source, message), error: message };
|
|
26
24
|
}
|
|
27
25
|
return { dom: container };
|
|
28
26
|
};
|
|
29
|
-
function buildErrorNode(source, message) {
|
|
30
|
-
const span = document.createElement('span');
|
|
31
|
-
span.className = 'math-error';
|
|
32
|
-
span.textContent = source;
|
|
33
|
-
span.title = message;
|
|
34
|
-
// Inline style rather than a stylesheet: the span lands inside any prose block, where no
|
|
35
|
-
// plugin sheet is guaranteed to be mounted.
|
|
36
|
-
span.style.color = 'var(--color-error, #d03025)';
|
|
37
|
-
span.style.fontFamily = 'var(--font-code, ui-monospace, monospace)';
|
|
38
|
-
span.style.fontSize = '0.9em';
|
|
39
|
-
span.style.cursor = 'help';
|
|
40
|
-
return span;
|
|
41
|
-
}
|
|
@@ -1,25 +1,26 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
// Render-primary on the public
|
|
3
|
-
// commit and kind
|
|
4
|
-
// BlockList. Editing swaps in a plugin
|
|
5
|
-
//
|
|
2
|
+
// Render-primary, built on the public API: `createContainerBlock` supplies the metadata
|
|
3
|
+
// commit and the keydown for kind commands, but the body renders the diagram, with no
|
|
4
|
+
// BlockList. Editing swaps in a textarea this plugin owns, whose text commits through the
|
|
5
|
+
// metadata update as one undo entry.
|
|
6
6
|
import { tick } from 'svelte';
|
|
7
7
|
import {
|
|
8
8
|
createContainerBlock,
|
|
9
9
|
getPluginMetadata,
|
|
10
10
|
trimTrailingLineEnding,
|
|
11
11
|
normalizeLineEndings,
|
|
12
|
+
POINTER_GESTURE_ATTR,
|
|
12
13
|
type NodeView
|
|
13
14
|
} from '../../plugin';
|
|
14
15
|
import { joinMermaidBody, type MermaidMetadata } from './mermaid-kind';
|
|
15
|
-
import {
|
|
16
|
+
import { mermaidSlot, type MermaidRenderResult } from './mermaid-renderer';
|
|
16
17
|
|
|
17
18
|
let { node, index, myPath = [] }: { node: NodeView; index: number; myPath?: number[] } = $props();
|
|
18
19
|
|
|
19
20
|
let boxEl: HTMLElement | undefined = $state();
|
|
20
21
|
|
|
21
|
-
// Every
|
|
22
|
-
//
|
|
22
|
+
// Every state has something focusable, the edit textarea included, so a broken or empty
|
|
23
|
+
// diagram is a stop for the arrow keys and a way back in rather than a caret trap.
|
|
23
24
|
function focusSurfaceEl(): HTMLElement | null {
|
|
24
25
|
return (
|
|
25
26
|
boxEl?.querySelector<HTMLElement>('.mermaid-source, .mermaid-viewport, .mermaid-surface') ??
|
|
@@ -46,15 +47,15 @@
|
|
|
46
47
|
commandHooks: () => ({ openEdit, openFocusView })
|
|
47
48
|
});
|
|
48
49
|
|
|
49
|
-
// The factory
|
|
50
|
-
//
|
|
50
|
+
// The factory handles whole-block focus, delete, traversal and reorder, and provides the
|
|
51
|
+
// `measurePartialRects` the overlays are painted from: there are no child blocks here.
|
|
51
52
|
export { containerApi };
|
|
52
53
|
|
|
53
54
|
const code = $derived(getPluginMetadata<MermaidMetadata>(node)?.code ?? '');
|
|
54
55
|
const displayCode = $derived(trimTrailingLineEnding(code));
|
|
55
56
|
|
|
56
|
-
// An empty diagram has no picture to draw and
|
|
57
|
-
// the
|
|
57
|
+
// An empty diagram has no picture to draw and mermaid rejects it, so it opens straight into
|
|
58
|
+
// the textarea; reading mode, which writes no bytes, gets a placeholder instead.
|
|
58
59
|
const isEmpty = $derived(displayCode.trim() === '');
|
|
59
60
|
const isReading = $derived(getPresentationMode() === 'reading');
|
|
60
61
|
|
|
@@ -63,15 +64,15 @@
|
|
|
63
64
|
let rendered = $state<MermaidRenderResult | null>(null);
|
|
64
65
|
$effect(() => {
|
|
65
66
|
const current = code;
|
|
66
|
-
// Reading the theme here is what
|
|
67
|
-
// redraw because
|
|
67
|
+
// Reading the theme here is what makes this effect re-run when the theme changes, and
|
|
68
|
+
// it must redraw because mermaid writes colors into the SVG.
|
|
68
69
|
const theme = getTheme();
|
|
69
|
-
if (isEmpty || !
|
|
70
|
+
if (isEmpty || !mermaidSlot.configured) return;
|
|
70
71
|
let stale = false;
|
|
71
|
-
void
|
|
72
|
+
void mermaidSlot.render(current, { theme }).then(async (result) => {
|
|
72
73
|
if (stale) return;
|
|
73
|
-
// A
|
|
74
|
-
// the editor hidden input
|
|
74
|
+
// A redraw replaces only the rendered element, so only focus inside it is handed back:
|
|
75
|
+
// the editor's hidden input and the toolbar are children of the box and survive.
|
|
75
76
|
const hadFocus = focusSurfaceEl()?.contains(document.activeElement) ?? false;
|
|
76
77
|
rendered = result;
|
|
77
78
|
if (hadFocus) {
|
|
@@ -87,7 +88,7 @@
|
|
|
87
88
|
const surfaceState = $derived(
|
|
88
89
|
isEmpty
|
|
89
90
|
? 'empty'
|
|
90
|
-
: !
|
|
91
|
+
: !mermaidSlot.configured
|
|
91
92
|
? 'no-renderer'
|
|
92
93
|
: rendered?.error
|
|
93
94
|
? 'error'
|
|
@@ -143,9 +144,12 @@
|
|
|
143
144
|
const view = createPanZoom();
|
|
144
145
|
const overlayView = createPanZoom();
|
|
145
146
|
|
|
146
|
-
//
|
|
147
|
-
//
|
|
147
|
+
// Turned on by focus, so an unfocused diagram hijacks neither the page nor the editor's own
|
|
148
|
+
// drag. The markup attribute is written from this one value.
|
|
148
149
|
let gestureArmed = $state(false);
|
|
150
|
+
// The attribute that tells the editor's pointer handling a drag here is the diagram's own.
|
|
151
|
+
const viewportGesture = $derived({ [POINTER_GESTURE_ATTR]: gestureArmed ? '' : undefined });
|
|
152
|
+
const overlayGesture = { [POINTER_GESTURE_ATTR]: '' };
|
|
149
153
|
|
|
150
154
|
function onViewportWheel(e: WheelEvent): void {
|
|
151
155
|
if (!gestureArmed || !(e.ctrlKey || e.metaKey)) return;
|
|
@@ -160,15 +164,15 @@
|
|
|
160
164
|
}
|
|
161
165
|
|
|
162
166
|
function onOverlayWheel(e: WheelEvent): void {
|
|
163
|
-
// A
|
|
164
|
-
//
|
|
167
|
+
// A zoom view of its own with nothing behind it to scroll, so unlike the in-document
|
|
168
|
+
// view a plain wheel zooms.
|
|
165
169
|
e.preventDefault();
|
|
166
170
|
e.stopPropagation();
|
|
167
171
|
overlayView.zoomBy(e.deltaY);
|
|
168
172
|
}
|
|
169
173
|
|
|
170
|
-
//
|
|
171
|
-
// the
|
|
174
|
+
// The viewport and the cards that show no picture answer clicks the same way, so a double
|
|
175
|
+
// click stays the way out of a broken diagram.
|
|
172
176
|
function onSurfacePointerDown(e: PointerEvent): void {
|
|
173
177
|
e.stopPropagation();
|
|
174
178
|
}
|
|
@@ -218,11 +222,11 @@
|
|
|
218
222
|
// there too, so this closes the command path.
|
|
219
223
|
if (isReading) return;
|
|
220
224
|
if (!editing) seedDraft();
|
|
221
|
-
// Captured
|
|
222
|
-
// a
|
|
225
|
+
// Captured before the swap: the card reaches its fitted height only after mounting, and
|
|
226
|
+
// a scroll container at the document's end clamps against the short layout in between.
|
|
223
227
|
const restoreScroll = captureScrollPosition();
|
|
224
228
|
editRequested = true;
|
|
225
|
-
void restoreScroll().then(() => textareaEl?.focus());
|
|
229
|
+
void restoreScroll().then(() => textareaEl?.focus({ preventScroll: true }));
|
|
226
230
|
}
|
|
227
231
|
|
|
228
232
|
function cancelEdit(): void {
|
|
@@ -241,10 +245,12 @@
|
|
|
241
245
|
// an untouched CRLF block must not rewrite its bytes on blur.
|
|
242
246
|
if (value === normalizeLineEndings(editSeed)) return;
|
|
243
247
|
const lineEnding = getPluginMetadata<MermaidMetadata>(node)?.openerLineEnding ?? '\n';
|
|
244
|
-
|
|
245
|
-
//
|
|
246
|
-
|
|
247
|
-
|
|
248
|
+
// Only a keyboard commit puts the caret back on the block; a blur commit must not yank
|
|
249
|
+
// focus back from wherever the user clicked.
|
|
250
|
+
updateOwnMetadata(
|
|
251
|
+
{ code: joinMermaidBody(value, lineEnding) },
|
|
252
|
+
refocus ? { caret: { path: [], offset: 0 } } : undefined
|
|
253
|
+
);
|
|
248
254
|
}
|
|
249
255
|
|
|
250
256
|
// Logical lines, not visual: the box carries no editor caret geometry, so the newlines
|
|
@@ -271,8 +277,8 @@
|
|
|
271
277
|
e.preventDefault();
|
|
272
278
|
cancelEdit();
|
|
273
279
|
} else if (atEditBoxEdge(e.key) && moveFocusOut(e)) {
|
|
274
|
-
// Focus leaves the box, so `focusout` commits the
|
|
275
|
-
//
|
|
280
|
+
// Focus leaves the box, so `focusout` commits the text: leaving by arrow key takes
|
|
281
|
+
// the same path as a blur.
|
|
276
282
|
e.preventDefault();
|
|
277
283
|
} else if (e.key === 'Tab') {
|
|
278
284
|
// Escape is the exit, so Tab indents in place. execCommand inserts through the
|
|
@@ -338,7 +344,7 @@
|
|
|
338
344
|
<!-- svelte-ignore a11y_no_noninteractive_tabindex -->
|
|
339
345
|
<div
|
|
340
346
|
class="mermaid-viewport"
|
|
341
|
-
|
|
347
|
+
{...viewportGesture}
|
|
342
348
|
tabindex="0"
|
|
343
349
|
role="img"
|
|
344
350
|
aria-label="Mermaid diagram"
|
|
@@ -354,8 +360,8 @@
|
|
|
354
360
|
</div>
|
|
355
361
|
</div>
|
|
356
362
|
{:else}
|
|
357
|
-
<!-- {#key}
|
|
358
|
-
|
|
363
|
+
<!-- {#key} remounts once per state: a change of state replaces the element, and
|
|
364
|
+
its focus and blur timing with it. -->
|
|
359
365
|
{#key surfaceState}
|
|
360
366
|
<!-- svelte-ignore a11y_no_noninteractive_tabindex -->
|
|
361
367
|
<div
|
|
@@ -367,7 +373,7 @@
|
|
|
367
373
|
ondblclick={onSurfaceDblClick}
|
|
368
374
|
>
|
|
369
375
|
{#if surfaceState === 'empty'}
|
|
370
|
-
<!-- Reading mode only: everywhere else an empty diagram
|
|
376
|
+
<!-- Reading mode only: everywhere else an empty diagram opens its textarea. -->
|
|
371
377
|
<div class="mermaid-empty">Empty diagram</div>
|
|
372
378
|
{:else if surfaceState === 'no-renderer'}
|
|
373
379
|
<pre class="mermaid-static">{displayCode}</pre>
|
|
@@ -401,7 +407,7 @@
|
|
|
401
407
|
</div>
|
|
402
408
|
<div
|
|
403
409
|
class="mermaid-overlay-viewport"
|
|
404
|
-
|
|
410
|
+
{...overlayGesture}
|
|
405
411
|
onwheel={onOverlayWheel}
|
|
406
412
|
onpointerdown={(e) => {
|
|
407
413
|
e.stopPropagation();
|
|
@@ -442,8 +448,8 @@
|
|
|
442
448
|
background: var(--color-bg-secondary, rgba(128, 128, 128, 0.12));
|
|
443
449
|
}
|
|
444
450
|
|
|
445
|
-
/*
|
|
446
|
-
|
|
451
|
+
/* Shown on hover or focus so the diagram has no buttons over it at rest, following
|
|
452
|
+
SearchBar's raised panel and plain buttons. */
|
|
447
453
|
.mermaid-toolbar {
|
|
448
454
|
position: absolute;
|
|
449
455
|
top: 6px;
|
|
@@ -467,7 +473,7 @@
|
|
|
467
473
|
pointer-events: auto;
|
|
468
474
|
}
|
|
469
475
|
|
|
470
|
-
/* Reading mode drops the edit
|
|
476
|
+
/* Reading mode drops the edit button; Focus and Reset only change the view, so they stay. */
|
|
471
477
|
:global([data-presentation='reading']) .mermaid-toolbar :global([data-testid='mermaid-edit']) {
|
|
472
478
|
display: none;
|
|
473
479
|
}
|
|
@@ -502,8 +508,8 @@
|
|
|
502
508
|
outline: none;
|
|
503
509
|
}
|
|
504
510
|
|
|
505
|
-
/* Only a focused block pans, so only then does the viewport
|
|
506
|
-
`:focus-within
|
|
511
|
+
/* Only a focused block pans, so only then does the viewport show the grab cursor.
|
|
512
|
+
`:focus-within`, because whole-block focus goes to the editor's hidden input beside it. */
|
|
507
513
|
.mermaid-block:focus-within .mermaid-viewport {
|
|
508
514
|
cursor: grab;
|
|
509
515
|
}
|
|
@@ -514,8 +520,8 @@
|
|
|
514
520
|
justify-content: center;
|
|
515
521
|
}
|
|
516
522
|
|
|
517
|
-
/*
|
|
518
|
-
fit-to-content effect; `overflow-y: hidden`
|
|
523
|
+
/* Only the differences from the shared .md-source-surface (editor.css). Height is written by
|
|
524
|
+
the fit-to-content effect; `overflow-y: hidden` lets the box grow rather than scroll. */
|
|
519
525
|
.mermaid-source {
|
|
520
526
|
padding: 8px;
|
|
521
527
|
overflow-y: hidden;
|
|
@@ -1,7 +1,7 @@
|
|
|
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
7
|
import { type CstNode } from '../../plugin';
|
|
@@ -25,11 +25,8 @@ export interface MermaidMetadata {
|
|
|
25
25
|
* ending put back on every body line. An emptied body commits as `''`, no stray line.
|
|
26
26
|
*/
|
|
27
27
|
export declare function joinMermaidBody(draft: string, lineEnding: string): string;
|
|
28
|
-
/**
|
|
29
|
-
*
|
|
30
|
-
* this kind never re-parses, so the fence is sized against it here — a diagram line that reads as
|
|
31
|
-
* this block's closer would otherwise truncate the block on its next load.
|
|
32
|
-
*/
|
|
28
|
+
/** The opener's inverse, which every code edit goes through; the fence is sized against the body
|
|
29
|
+
* here, since a diagram line reading as the closer would cut the block short on reload. */
|
|
33
30
|
export declare function rebuildMermaidRaw(node: CstNode): void;
|
|
34
31
|
export interface MermaidUiHooks {
|
|
35
32
|
openEdit(): void;
|
|
@@ -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>;
|