@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,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>
|
|
@@ -282,7 +291,7 @@ cNd.........................................;lOc
|
|
|
282
291
|
overflow-x: auto;
|
|
283
292
|
overflow-y: hidden;
|
|
284
293
|
scrollbar-width: none;
|
|
285
|
-
/*
|
|
294
|
+
/* decoration, not content: every frame is in the DOM and none of them belong in a copy */
|
|
286
295
|
user-select: none;
|
|
287
296
|
animation: parrot-hue 0.49s step-end infinite;
|
|
288
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 {};
|
|
@@ -0,0 +1,108 @@
|
|
|
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 { blockNodeAt, isBlankText } from '../../plugin';
|
|
7
|
+
import { acceptsQuery, filterEntries, splitQuery } from './filter';
|
|
8
|
+
export const SLASH_COMMANDS_MENU = 'slash-commands';
|
|
9
|
+
const HEADING_LEVELS = [1, 2, 3];
|
|
10
|
+
/** The `/` source for one editor: its rows come from `editor.options` and the live catalogue. */
|
|
11
|
+
export function createSlashSource(editor) {
|
|
12
|
+
function rows() {
|
|
13
|
+
const { entries = [], exclude = [] } = editor.options;
|
|
14
|
+
const hidden = new Set([...exclude, ...entries.map((entry) => entry.id)]);
|
|
15
|
+
const builtIn = [
|
|
16
|
+
...editor.insertCatalogue.map(catalogueRow),
|
|
17
|
+
...HEADING_LEVELS.map(headingRow)
|
|
18
|
+
];
|
|
19
|
+
return [...builtIn.filter((row) => !hidden.has(row.id)), ...entries.map(hostRow)];
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
name: SLASH_COMMANDS_MENU,
|
|
23
|
+
trigger: '/',
|
|
24
|
+
// A slash inside a word (`and/or`, `9/22`) is text.
|
|
25
|
+
opensAt: (raw, pos) => pos === 0 || /\s/.test(raw[pos - 1]),
|
|
26
|
+
accepts: (query) => acceptsQuery(rows(), query),
|
|
27
|
+
items: ({ query }) => {
|
|
28
|
+
const { head, argument } = splitQuery(query);
|
|
29
|
+
return filterEntries(rows(), head).map((row) => ({
|
|
30
|
+
id: row.id,
|
|
31
|
+
label: row.label,
|
|
32
|
+
icon: row.icon,
|
|
33
|
+
detail: argument === null ? undefined : argumentDetail(row, argument),
|
|
34
|
+
insert: ''
|
|
35
|
+
}));
|
|
36
|
+
},
|
|
37
|
+
onCommit: async (item, range) => {
|
|
38
|
+
const row = rows().find((candidate) => candidate.id === item.id);
|
|
39
|
+
if (!row)
|
|
40
|
+
return;
|
|
41
|
+
const { argument } = splitQuery(range.query);
|
|
42
|
+
const action = row.action;
|
|
43
|
+
if (action.kind === 'heading') {
|
|
44
|
+
editor.runCommand('heading.cycle', action.level);
|
|
45
|
+
}
|
|
46
|
+
else if (action.kind === 'run') {
|
|
47
|
+
action.run(editor, argument ?? undefined);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// An empty line becomes the block; a line with text keeps it and gets the block below.
|
|
51
|
+
// Copied because `blockNodeAt` takes a mutable path and the range's is readonly.
|
|
52
|
+
const empty = isBlankText(blockNodeAt(editor.document, [...range.path])?.raw ?? '');
|
|
53
|
+
// Awaited, so the block lands inside the pick's undo entry.
|
|
54
|
+
await editor.insertMarkdown(action.build(argument).markdown, {
|
|
55
|
+
placement: empty ? 'caret' : 'below'
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// ── Rows ─────────────────────────────────────────────────────────────────────
|
|
62
|
+
function catalogueRow(entry) {
|
|
63
|
+
const { withArgument } = entry;
|
|
64
|
+
return {
|
|
65
|
+
id: entry.id,
|
|
66
|
+
label: entry.label,
|
|
67
|
+
icon: entry.icon,
|
|
68
|
+
keywords: entry.keywords,
|
|
69
|
+
takesArgument: withArgument !== undefined,
|
|
70
|
+
action: {
|
|
71
|
+
kind: 'insert',
|
|
72
|
+
// A space with no word after it yet is no argument, so `withArgument` only sees a word.
|
|
73
|
+
build: (argument) => argument && withArgument ? withArgument(argument) : { markdown: entry.markdown }
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
function headingRow(level) {
|
|
78
|
+
return {
|
|
79
|
+
id: `h${level}`,
|
|
80
|
+
label: `Heading ${level}`,
|
|
81
|
+
icon: 'heading',
|
|
82
|
+
keywords: [`h${level}`, 'heading', 'title'],
|
|
83
|
+
takesArgument: false,
|
|
84
|
+
action: { kind: 'heading', level }
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function hostRow(entry) {
|
|
88
|
+
const base = {
|
|
89
|
+
id: entry.id,
|
|
90
|
+
label: entry.label,
|
|
91
|
+
icon: entry.icon,
|
|
92
|
+
keywords: entry.keywords ?? []
|
|
93
|
+
};
|
|
94
|
+
if (entry.run) {
|
|
95
|
+
return {
|
|
96
|
+
...base,
|
|
97
|
+
takesArgument: !!entry.takesArgument,
|
|
98
|
+
action: { kind: 'run', run: entry.run }
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
const markdown = entry.insert ?? '';
|
|
102
|
+
return { ...base, takesArgument: false, action: { kind: 'insert', build: () => ({ markdown }) } };
|
|
103
|
+
}
|
|
104
|
+
function argumentDetail(row, argument) {
|
|
105
|
+
if (row.action.kind === 'insert')
|
|
106
|
+
return row.action.build(argument).detail;
|
|
107
|
+
return argument === '' ? undefined : argument;
|
|
108
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
//
|
|
3
|
-
//
|
|
2
|
+
// A render-primary editable block: all editing behavior lives in `createEditableLeaf`, so
|
|
3
|
+
// this component owns only the swap between the list and the source, and navigation.
|
|
4
4
|
import {
|
|
5
5
|
createEditableLeaf,
|
|
6
6
|
type BlockComponent,
|
|
@@ -8,23 +8,22 @@
|
|
|
8
8
|
type EditorRects,
|
|
9
9
|
type NodeView
|
|
10
10
|
} from '../../plugin';
|
|
11
|
-
import { collectHeadings,
|
|
11
|
+
import { collectHeadings, MAX_HEADING_DEPTH } from './heading-outline';
|
|
12
12
|
import { createNavigationQueue } from './navigation-queue';
|
|
13
|
+
import type { TocOptions } from './toc-plugin';
|
|
13
14
|
|
|
14
15
|
let {
|
|
15
16
|
node,
|
|
16
17
|
index,
|
|
17
18
|
myPath = [],
|
|
18
19
|
document,
|
|
19
|
-
rects
|
|
20
|
-
maxDepth = 6
|
|
20
|
+
rects
|
|
21
21
|
}: {
|
|
22
22
|
node: NodeView;
|
|
23
23
|
index: number;
|
|
24
24
|
myPath?: number[];
|
|
25
25
|
document?: DocumentView;
|
|
26
26
|
rects?: EditorRects;
|
|
27
|
-
maxDepth?: number;
|
|
28
27
|
} = $props();
|
|
29
28
|
|
|
30
29
|
let sourceEl: HTMLDivElement | undefined = $state();
|
|
@@ -42,22 +41,24 @@
|
|
|
42
41
|
}
|
|
43
42
|
});
|
|
44
43
|
|
|
45
|
-
//
|
|
46
|
-
|
|
47
|
-
const depth =
|
|
44
|
+
// Undefined only for a block mounted with no editor, as the unit tests mount it.
|
|
45
|
+
const options = leaf.getOptions() as Required<TocOptions> | undefined;
|
|
46
|
+
const depth = options?.maxDepth ?? MAX_HEADING_DEPTH;
|
|
48
47
|
|
|
49
|
-
//
|
|
50
|
-
//
|
|
51
|
-
const headings = $derived(
|
|
48
|
+
// This reads heading bytes through the prop, subscribing to the CST's $state proxy, so an
|
|
49
|
+
// edit above re-runs it; left uncached so the derived stays reactive.
|
|
50
|
+
const headings = $derived(
|
|
51
|
+
collectHeadings(document, depth, leaf.getEditor()?.computeInlineContent)
|
|
52
|
+
);
|
|
52
53
|
|
|
53
|
-
//
|
|
54
|
-
// well as scrolling, so focus never stays
|
|
54
|
+
// One navigation at a time per block (`navigation-queue.ts` says why). `navigateTo` moves
|
|
55
|
+
// the caret as well as scrolling, so focus never stays somewhere the keyboard cannot reach.
|
|
55
56
|
const navigation = createNavigationQueue({
|
|
56
57
|
navigateTo: (path) => rects?.navigateTo(path) ?? Promise.resolve()
|
|
57
58
|
});
|
|
58
59
|
|
|
59
|
-
//
|
|
60
|
-
//
|
|
60
|
+
// Stops the block showing its source on pointerdown, so clicking an entry navigates instead
|
|
61
|
+
// of opening the source. It only reads, so it works in reading mode too.
|
|
61
62
|
function onEntryPointerDown(e: PointerEvent): void {
|
|
62
63
|
e.stopPropagation();
|
|
63
64
|
}
|
|
@@ -74,8 +75,8 @@
|
|
|
74
75
|
export const getSelectedText = leaf.getSelectedText;
|
|
75
76
|
export const setSelection = leaf.setSelection;
|
|
76
77
|
export const measurePartialRects = leaf.measurePartialRects;
|
|
77
|
-
export const runCommand = leaf.runCommand;
|
|
78
78
|
export const insertMarkdown = leaf.insertMarkdown;
|
|
79
|
+
export const afterSourceCommit = leaf.afterSourceCommit;
|
|
79
80
|
|
|
80
81
|
void ({
|
|
81
82
|
editable,
|
|
@@ -87,8 +88,8 @@
|
|
|
87
88
|
getSelectedText,
|
|
88
89
|
setSelection,
|
|
89
90
|
measurePartialRects,
|
|
90
|
-
|
|
91
|
-
|
|
91
|
+
insertMarkdown,
|
|
92
|
+
afterSourceCommit
|
|
92
93
|
} satisfies BlockComponent);
|
|
93
94
|
</script>
|
|
94
95
|
|
|
@@ -131,7 +132,7 @@
|
|
|
131
132
|
{/if}
|
|
132
133
|
|
|
133
134
|
<style>
|
|
134
|
-
/*
|
|
135
|
+
/* Only the differences from the shared .md-source-surface (editor.css). */
|
|
135
136
|
.toc-block-source {
|
|
136
137
|
outline: none;
|
|
137
138
|
padding: 8px 12px;
|
|
@@ -157,8 +158,8 @@
|
|
|
157
158
|
list-style: none;
|
|
158
159
|
}
|
|
159
160
|
|
|
160
|
-
/*
|
|
161
|
-
ring are the only
|
|
161
|
+
/* The browser's button styling is reset to a plain full-width row: the accent hover and
|
|
162
|
+
the focus ring are the only cues. */
|
|
162
163
|
.toc-block-item {
|
|
163
164
|
display: block;
|
|
164
165
|
width: 100%;
|
|
@@ -5,7 +5,6 @@ type $$ComponentProps = {
|
|
|
5
5
|
myPath?: number[];
|
|
6
6
|
document?: DocumentView;
|
|
7
7
|
rects?: EditorRects;
|
|
8
|
-
maxDepth?: number;
|
|
9
8
|
};
|
|
10
9
|
declare const TocBlock: import("svelte").Component<$$ComponentProps, {
|
|
11
10
|
editable: true;
|
|
@@ -17,8 +16,8 @@ declare const TocBlock: import("svelte").Component<$$ComponentProps, {
|
|
|
17
16
|
getSelectedText: () => string;
|
|
18
17
|
setSelection: (start: number, end: number) => void;
|
|
19
18
|
measurePartialRects: (startOffset: number, endOffset: number) => DOMRect[];
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
insertMarkdown: (md: string) => Promise<boolean>;
|
|
20
|
+
afterSourceCommit: (run: () => void) => void;
|
|
22
21
|
}, "">;
|
|
23
22
|
type TocBlock = ReturnType<typeof TocBlock>;
|
|
24
23
|
export default TocBlock;
|