@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,21 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The heading outline as a pure function over the read-only document.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* The heading outline as a pure function over the read-only document. It recurses through
|
|
3
|
+
* containers, so a heading nested in a blockquote or list is still collected at its own path
|
|
4
|
+
* and stays navigable.
|
|
5
5
|
*/
|
|
6
|
-
import { type DocumentView, type InlineNode } from '../../plugin';
|
|
6
|
+
import { type DocumentView, type EditorContext, type InlineNode } from '../../plugin';
|
|
7
7
|
/** Deepest heading level a document can list; `[[toc]]` has no meaning past GFM's six. */
|
|
8
8
|
export declare const MAX_HEADING_DEPTH = 6;
|
|
9
|
-
/**
|
|
10
|
-
* The instance's `{ plugin, options }` depth, else `fallback` (the factory argument's
|
|
11
|
-
* bare-install default). Options arrive as `unknown` from the platform, so anything but a
|
|
12
|
-
* whole number in 1..6 is not a depth and falls back rather than listing nothing.
|
|
13
|
-
*/
|
|
14
|
-
export declare function resolveMaxDepth(options: unknown, fallback: number): number;
|
|
15
9
|
export interface TocEntry {
|
|
16
10
|
/** Stable and unique per position: the keyed-loop identity. */
|
|
17
11
|
id: string;
|
|
18
|
-
/**
|
|
12
|
+
/** Document-absolute block path of the heading, for `rects.scrollTo`. */
|
|
19
13
|
path: number[];
|
|
20
14
|
level: number;
|
|
21
15
|
label: string;
|
|
@@ -25,4 +19,5 @@ export interface TocEntry {
|
|
|
25
19
|
* render to, and anything unrecognized falls back to its source bytes.
|
|
26
20
|
*/
|
|
27
21
|
export declare function projectInlineText(nodes: readonly InlineNode[], raw: string): string;
|
|
28
|
-
|
|
22
|
+
/** Labels read through `read`, the editor's inline parse, so syntax it left out stays text. */
|
|
23
|
+
export declare function collectHeadings(document: DocumentView | undefined, maxDepth: number, read?: EditorContext['computeInlineContent']): TocEntry[];
|
|
@@ -1,22 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The heading outline as a pure function over the read-only document.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* The heading outline as a pure function over the read-only document. It recurses through
|
|
3
|
+
* containers, so a heading nested in a blockquote or list is still collected at its own path
|
|
4
|
+
* and stays navigable.
|
|
5
5
|
*/
|
|
6
|
-
import { computeInlineContent, headingLevel } from '../../plugin';
|
|
6
|
+
import { computeInlineContent, headingLevel, trimWhitespace, walkBlocks } from '../../plugin';
|
|
7
7
|
/** Deepest heading level a document can list; `[[toc]]` has no meaning past GFM's six. */
|
|
8
8
|
export const MAX_HEADING_DEPTH = 6;
|
|
9
|
-
/**
|
|
10
|
-
* The instance's `{ plugin, options }` depth, else `fallback` (the factory argument's
|
|
11
|
-
* bare-install default). Options arrive as `unknown` from the platform, so anything but a
|
|
12
|
-
* whole number in 1..6 is not a depth and falls back rather than listing nothing.
|
|
13
|
-
*/
|
|
14
|
-
export function resolveMaxDepth(options, fallback) {
|
|
15
|
-
const declared = options?.maxDepth;
|
|
16
|
-
if (typeof declared !== 'number' || !Number.isInteger(declared))
|
|
17
|
-
return fallback;
|
|
18
|
-
return declared >= 1 && declared <= MAX_HEADING_DEPTH ? declared : fallback;
|
|
19
|
-
}
|
|
20
9
|
/**
|
|
21
10
|
* Plain-text projection: markers drop with their wrapper, value nodes show what they
|
|
22
11
|
* render to, and anything unrecognized falls back to its source bytes.
|
|
@@ -39,27 +28,24 @@ export function projectInlineText(nodes, raw) {
|
|
|
39
28
|
}
|
|
40
29
|
return text;
|
|
41
30
|
}
|
|
42
|
-
|
|
31
|
+
/** Labels read through `read`, the editor's inline parse, so syntax it left out stays text. */
|
|
32
|
+
export function collectHeadings(document, maxDepth, read = computeInlineContent) {
|
|
43
33
|
const entries = [];
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
};
|
|
63
|
-
walk(document?.children ?? [], []);
|
|
34
|
+
if (!document)
|
|
35
|
+
return entries;
|
|
36
|
+
walkBlocks(document, (node, path) => {
|
|
37
|
+
const level = headingLevel(node);
|
|
38
|
+
if (level === null)
|
|
39
|
+
return;
|
|
40
|
+
if (level <= maxDepth) {
|
|
41
|
+
entries.push({
|
|
42
|
+
id: path.join('.'),
|
|
43
|
+
path,
|
|
44
|
+
level,
|
|
45
|
+
label: trimWhitespace(projectInlineText(read(node), node.raw))
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
return 'skip';
|
|
49
|
+
});
|
|
64
50
|
return entries;
|
|
65
51
|
}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* caret, and two overlapping navigations from one block land two. A mid-flight call
|
|
5
|
-
* overwrites the pending target, so the newest wins with no extra scroll.
|
|
2
|
+
* One `rects.navigateTo` at a time per block, since two overlapping navigations would move the
|
|
3
|
+
* caret twice. A call while one is in progress replaces the pending target, so the newest wins.
|
|
6
4
|
*/
|
|
7
5
|
export interface NavigationQueue {
|
|
8
6
|
navigateTo(path: number[]): Promise<void>;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* A `[[toc]]`
|
|
3
|
-
* `BlockComponentProps.document
|
|
4
|
-
*
|
|
2
|
+
* A `[[toc]]` block whose rendered view lists the document's headings, read straight off
|
|
3
|
+
* `BlockComponentProps.document`: the worked example of using that prop. Recognition starts
|
|
4
|
+
* only once the plugin registers, so without it `[[toc]]` is a plain paragraph.
|
|
5
5
|
*/
|
|
6
6
|
import { type EditorPlugin } from '../../plugin';
|
|
7
7
|
export declare const TOC_BLOCK = "toc";
|
|
8
8
|
export declare function registerTocBlock(): void;
|
|
9
9
|
export type MaxHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
|
|
10
|
-
/** The
|
|
11
|
-
*
|
|
10
|
+
/** The factory argument, which sets every editor's default, and an editor's `{ plugin, options }`
|
|
11
|
+
* entry, which overrides it. */
|
|
12
12
|
export interface TocOptions {
|
|
13
13
|
/** Deepest heading level listed (default 6 = every level). */
|
|
14
14
|
maxDepth?: MaxHeadingLevel;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* A `[[toc]]`
|
|
3
|
-
* `BlockComponentProps.document
|
|
4
|
-
*
|
|
2
|
+
* A `[[toc]]` block whose rendered view lists the document's headings, read straight off
|
|
3
|
+
* `BlockComponentProps.document`: the worked example of using that prop. Recognition starts
|
|
4
|
+
* only once the plugin registers, so without it `[[toc]]` is a plain paragraph.
|
|
5
5
|
*/
|
|
6
6
|
import { definePlugin, declarePluginKind, declaredPluginKind, registerBlockKind, registerBlockOpener, registerBlockComponent, defineBlockComponent, simpleLeafClosure, OPENER_PRIORITIES } from '../../plugin';
|
|
7
7
|
import TocBlock from './TocBlock.svelte';
|
|
@@ -10,14 +10,15 @@ export const TOC_BLOCK = 'toc';
|
|
|
10
10
|
const TOC_LINE = '[[toc]]';
|
|
11
11
|
export function registerTocBlock() {
|
|
12
12
|
const toc = declarePluginKind(TOC_BLOCK);
|
|
13
|
-
// A source
|
|
14
|
-
// so a raw taken verbatim from the line round-trips.
|
|
13
|
+
// A block that holds its own source, like `fencedCode`: `serialize` re-emits
|
|
14
|
+
// `leadingTrivia + raw`, so a raw taken verbatim from the line round-trips.
|
|
15
15
|
registerBlockKind(toc, {
|
|
16
|
+
label: 'Table of contents',
|
|
16
17
|
mergeRole: 'not-mergeable',
|
|
17
18
|
editable: true,
|
|
18
19
|
supportsInline: false,
|
|
19
|
-
// Render-primary like the math
|
|
20
|
-
// at either edge, so both
|
|
20
|
+
// Render-primary like the math blocks: the rendered view gives the caret nowhere to sit
|
|
21
|
+
// at either edge, so both edges take the gap caret.
|
|
21
22
|
gapEdges: 'both',
|
|
22
23
|
conformanceFixture: '[[toc]]\n',
|
|
23
24
|
closure: simpleLeafClosure({
|
|
@@ -41,8 +42,8 @@ export function registerTocBlock() {
|
|
|
41
42
|
})
|
|
42
43
|
});
|
|
43
44
|
registerBlockOpener(toc, {
|
|
44
|
-
//
|
|
45
|
-
// whatever that matcher
|
|
45
|
+
// Just below the only built-in that consumes brackets, so `[[toc]]` resolves here
|
|
46
|
+
// whatever that matcher does.
|
|
46
47
|
priority: OPENER_PRIORITIES.linkReferenceDefinition - 5,
|
|
47
48
|
interruptsParagraph: (text) => text === TOC_LINE,
|
|
48
49
|
tryOpen(ctx) {
|
|
@@ -58,14 +59,20 @@ export function registerTocBlock() {
|
|
|
58
59
|
});
|
|
59
60
|
}
|
|
60
61
|
export function tocPlugin(options) {
|
|
61
|
-
// Definition-time, so it is the BARE-install default only: the block prefers this editor's
|
|
62
|
-
// `{ plugin, options }` depth, which is what lets two instances differ.
|
|
63
|
-
const maxDepth = options?.maxDepth ?? MAX_HEADING_DEPTH;
|
|
64
62
|
return definePlugin({
|
|
65
63
|
name: 'toc',
|
|
64
|
+
defaults: { maxDepth: options?.maxDepth ?? MAX_HEADING_DEPTH },
|
|
65
|
+
// Anything but a whole number in 1..6 keeps the default rather than listing nothing.
|
|
66
|
+
parseOptions(raw) {
|
|
67
|
+
const maxDepth = raw?.maxDepth;
|
|
68
|
+
return isMaxHeadingLevel(maxDepth) ? { maxDepth } : {};
|
|
69
|
+
},
|
|
66
70
|
setup() {
|
|
67
71
|
registerTocBlock();
|
|
68
|
-
registerBlockComponent(declaredPluginKind(TOC_BLOCK), defineBlockComponent(TocBlock
|
|
72
|
+
registerBlockComponent(declaredPluginKind(TOC_BLOCK), defineBlockComponent(TocBlock));
|
|
69
73
|
}
|
|
70
74
|
});
|
|
71
75
|
}
|
|
76
|
+
function isMaxHeadingLevel(value) {
|
|
77
|
+
return (Number.isInteger(value) && value >= 1 && value <= MAX_HEADING_DEPTH);
|
|
78
|
+
}
|
|
@@ -1,32 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The presentation-mode contract. `source` is the editing default (
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* while staying editable. Every door reports the EFFECTIVE mode.
|
|
2
|
+
* The presentation-mode contract. `source` is the editing default (styled source); `reading`
|
|
3
|
+
* hides markers and is read-only; the preview modes show markers back in the caret's block or
|
|
4
|
+
* construct (`components/blocks/text/construct-reveal.ts`); `live` hides markers and shows none
|
|
5
|
+
* back while staying editable. Every read reports the mode in effect.
|
|
7
6
|
*/
|
|
8
7
|
export type PresentationMode = 'source' | 'reading' | 'preview-block' | 'preview-inline' | 'live';
|
|
9
|
-
/**
|
|
10
|
-
*
|
|
11
|
-
* families match known values only, so an unrecognized one must read as the editing default here or
|
|
12
|
-
* the stylesheet and the caret walk disagree about the same block.
|
|
13
|
-
*/
|
|
8
|
+
/** Narrows a mode read off the DOM or handed in untyped: an unrecognized value reads as the
|
|
9
|
+
* editing default, as the marker-hiding CSS does, or the two would disagree about a block. */
|
|
14
10
|
export declare function asPresentationMode(value: string | null | undefined): PresentationMode;
|
|
15
11
|
/** Membership for the marker-hiding CSS families and the `data-list-marker` hook that
|
|
16
12
|
* feeds them: styled source is the one mode that paints Markdown syntax. */
|
|
17
13
|
export declare function hidesMarkers(mode: PresentationMode): boolean;
|
|
18
|
-
/** The
|
|
19
|
-
*
|
|
14
|
+
/** The modes that show markers back in a focused block, the only ones needing `data-focused`;
|
|
15
|
+
* live hides markers and never shows them back. */
|
|
20
16
|
export declare function isPreviewMode(mode: PresentationMode): boolean;
|
|
21
|
-
/**
|
|
22
|
-
*
|
|
23
|
-
* preview rungs by revealing that block. The question every seam writing at the caret asks, since
|
|
24
|
-
* a rewrite may only drop bytes the reader never saw (live-mode.md § 2).
|
|
25
|
-
*/
|
|
17
|
+
/** Whether the mode paints markers in the caret's block: the check everything writing at the caret
|
|
18
|
+
* asks, since a rewrite may drop only bytes the user never saw (`docs/design/live-mode.md` § 2). */
|
|
26
19
|
export declare function paintsFocusedMarkers(mode: PresentationMode): boolean;
|
|
27
|
-
/**
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
*
|
|
31
|
-
|
|
32
|
-
export declare function isReadingMode(getMode: (() => PresentationMode) | undefined): boolean;
|
|
20
|
+
/** The converse, the one check a rewrite asks before dropping delimiter bytes at the caret. */
|
|
21
|
+
export declare function hidesDelimitersAtCaret(mode: PresentationMode): boolean;
|
|
22
|
+
/** The read-only check every dispatch path keys off. A plain getter type keeps `schema/` and
|
|
23
|
+
* `selection/` off `editor-keys`; the getter is required, since only the editor picks the default. */
|
|
24
|
+
export declare function isReadingMode(getMode: () => PresentationMode): boolean;
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The presentation-mode contract. `source` is the editing default (
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* while staying editable. Every door reports the EFFECTIVE mode.
|
|
2
|
+
* The presentation-mode contract. `source` is the editing default (styled source); `reading`
|
|
3
|
+
* hides markers and is read-only; the preview modes show markers back in the caret's block or
|
|
4
|
+
* construct (`components/blocks/text/construct-reveal.ts`); `live` hides markers and shows none
|
|
5
|
+
* back while staying editable. Every read reports the mode in effect.
|
|
7
6
|
*/
|
|
8
|
-
/** Keyed by the union, so a
|
|
9
|
-
* silently through {@link asPresentationMode}
|
|
7
|
+
/** Keyed by the union, so a mode added to it fails `npm run check` here rather than falling
|
|
8
|
+
* silently through {@link asPresentationMode}. */
|
|
10
9
|
const MODES = {
|
|
11
10
|
source: true,
|
|
12
11
|
reading: true,
|
|
@@ -14,11 +13,8 @@ const MODES = {
|
|
|
14
13
|
'preview-inline': true,
|
|
15
14
|
live: true
|
|
16
15
|
};
|
|
17
|
-
/**
|
|
18
|
-
*
|
|
19
|
-
* families match known values only, so an unrecognized one must read as the editing default here or
|
|
20
|
-
* the stylesheet and the caret walk disagree about the same block.
|
|
21
|
-
*/
|
|
16
|
+
/** Narrows a mode read off the DOM or handed in untyped: an unrecognized value reads as the
|
|
17
|
+
* editing default, as the marker-hiding CSS does, or the two would disagree about a block. */
|
|
22
18
|
export function asPresentationMode(value) {
|
|
23
19
|
return value != null && Object.hasOwn(MODES, value) ? value : 'source';
|
|
24
20
|
}
|
|
@@ -27,24 +23,22 @@ export function asPresentationMode(value) {
|
|
|
27
23
|
export function hidesMarkers(mode) {
|
|
28
24
|
return mode !== 'source';
|
|
29
25
|
}
|
|
30
|
-
/** The
|
|
31
|
-
*
|
|
26
|
+
/** The modes that show markers back in a focused block, the only ones needing `data-focused`;
|
|
27
|
+
* live hides markers and never shows them back. */
|
|
32
28
|
export function isPreviewMode(mode) {
|
|
33
29
|
return mode === 'preview-block' || mode === 'preview-inline';
|
|
34
30
|
}
|
|
35
|
-
/**
|
|
36
|
-
*
|
|
37
|
-
* preview rungs by revealing that block. The question every seam writing at the caret asks, since
|
|
38
|
-
* a rewrite may only drop bytes the reader never saw (live-mode.md § 2).
|
|
39
|
-
*/
|
|
31
|
+
/** Whether the mode paints markers in the caret's block: the check everything writing at the caret
|
|
32
|
+
* asks, since a rewrite may drop only bytes the user never saw (`docs/design/live-mode.md` § 2). */
|
|
40
33
|
export function paintsFocusedMarkers(mode) {
|
|
41
34
|
return !hidesMarkers(mode) || isPreviewMode(mode);
|
|
42
35
|
}
|
|
43
|
-
/**
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
36
|
+
/** The converse, the one check a rewrite asks before dropping delimiter bytes at the caret. */
|
|
37
|
+
export function hidesDelimitersAtCaret(mode) {
|
|
38
|
+
return !paintsFocusedMarkers(mode);
|
|
39
|
+
}
|
|
40
|
+
/** The read-only check every dispatch path keys off. A plain getter type keeps `schema/` and
|
|
41
|
+
* `selection/` off `editor-keys`; the getter is required, since only the editor picks the default. */
|
|
48
42
|
export function isReadingMode(getMode) {
|
|
49
|
-
return getMode
|
|
43
|
+
return getMode() === 'reading';
|
|
50
44
|
}
|
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* A container's inner
|
|
3
|
-
*
|
|
4
|
-
* apply `StructuralChange`
|
|
2
|
+
* A container's inner block list: where its keyed-each ids come from and where its child
|
|
3
|
+
* component refs are stored. Structural changes go through the commit calls on
|
|
4
|
+
* `UndoController`, which apply a `StructuralChange` to keep ids and refs lined up with the
|
|
5
|
+
* children.
|
|
5
6
|
*/
|
|
6
7
|
import type { BlockComponent } from '../block-component';
|
|
7
8
|
import type { NodeView } from '../core/node-views';
|
|
8
9
|
import { type RefSlots } from './publish-ref.svelte';
|
|
9
10
|
export interface BlockListState {
|
|
10
|
-
/** Settable because ids live on the node, where the write reaches the `$state` proxy.
|
|
11
|
-
*
|
|
12
|
-
* and the property itself never moves. */
|
|
11
|
+
/** Settable because the ids live on the node, where the write reaches the `$state` proxy.
|
|
12
|
+
* The refs array keeps its identity for life; `replaceRefs` rewrites its contents. */
|
|
13
13
|
innerBlockIds: string[];
|
|
14
14
|
readonly innerBlockRefs: (BlockComponent | undefined)[];
|
|
15
|
-
/**
|
|
16
|
-
* the container surface, the mount registry — addresses the scope by one identity. */
|
|
15
|
+
/** The accessors over `innerBlockRefs` that a child's mount writes through. */
|
|
17
16
|
readonly refSlots: RefSlots<BlockComponent>;
|
|
18
17
|
}
|
|
19
|
-
/** `getNode` must be a live getter
|
|
20
|
-
*
|
|
21
|
-
* the bytes-view carve-out. */
|
|
18
|
+
/** `getNode` must be a live getter: a node passed by value goes stale when undo swaps in a deep
|
|
19
|
+
* clone. A view is enough, since `childIds` is the only field written. */
|
|
22
20
|
export declare function createBlockListState(getNode: () => NodeView): BlockListState;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* A container's inner
|
|
3
|
-
*
|
|
4
|
-
* apply `StructuralChange`
|
|
2
|
+
* A container's inner block list: where its keyed-each ids come from and where its child
|
|
3
|
+
* component refs are stored. Structural changes go through the commit calls on
|
|
4
|
+
* `UndoController`, which apply a `StructuralChange` to keep ids and refs lined up with the
|
|
5
|
+
* children.
|
|
5
6
|
*/
|
|
6
7
|
import { assignIds } from '../block-id';
|
|
7
8
|
import { registerBlockListState } from './state-registry';
|
|
8
9
|
import { refSlotsOver } from './publish-ref.svelte';
|
|
9
|
-
/** `getNode` must be a live getter
|
|
10
|
-
*
|
|
11
|
-
* the bytes-view carve-out. */
|
|
10
|
+
/** `getNode` must be a live getter: a node passed by value goes stale when undo swaps in a deep
|
|
11
|
+
* clone. A view is enough, since `childIds` is the only field written. */
|
|
12
12
|
export function createBlockListState(getNode) {
|
|
13
13
|
const initialNode = getNode();
|
|
14
14
|
if (!initialNode.childIds) {
|
|
@@ -34,9 +34,8 @@ export function createBlockListState(getNode) {
|
|
|
34
34
|
node.childIds = assignIds(node.children ?? []);
|
|
35
35
|
}
|
|
36
36
|
registerBlockListState(node, state);
|
|
37
|
-
// A parent
|
|
38
|
-
//
|
|
39
|
-
// the array, and refs length must track children exactly, so reconcile it here.
|
|
37
|
+
// A replacement in the parent list can reuse this instance with fewer children, and ref
|
|
38
|
+
// cleanup empties entries without shrinking the array; the refs must match the children.
|
|
40
39
|
const childCount = node.children?.length ?? 0;
|
|
41
40
|
if (innerBlockRefs.length > childCount) {
|
|
42
41
|
innerBlockRefs.length = childCount;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { HeightModel } from '../cursor/height-model';
|
|
2
|
-
import type {
|
|
2
|
+
import type { ScrollportReader } from '../cursor/scrollport';
|
|
3
3
|
export interface WindowInputs {
|
|
4
4
|
scrollTop: number;
|
|
5
5
|
viewportHeight: number;
|
|
@@ -16,15 +16,22 @@ export interface WindowResult {
|
|
|
16
16
|
end: number;
|
|
17
17
|
topSpacerPx: number;
|
|
18
18
|
bottomSpacerPx: number;
|
|
19
|
+
/** The table's height for the whole list, which `useWindowFloor` holds the list's box at while
|
|
20
|
+
* the window changes; 0 when not windowing. */
|
|
21
|
+
floorPx: number;
|
|
19
22
|
}
|
|
20
23
|
export declare function computeWindow(model: HeightModel, input: WindowInputs): WindowResult;
|
|
21
24
|
export interface BlockWindowDeps {
|
|
22
25
|
getModel: () => HeightModel;
|
|
23
|
-
getPort: () =>
|
|
24
|
-
/**
|
|
26
|
+
getPort: () => ScrollportReader | null;
|
|
27
|
+
/** Convert the scroll container's `scrollTop` into this list's own range. Unchanged at the
|
|
28
|
+
* top level. */
|
|
25
29
|
getLocalScrollTop: () => number;
|
|
26
30
|
getViewportHeight: () => number;
|
|
27
31
|
getPinnedIndex: () => number | null;
|
|
32
|
+
/** True while a height change's scroll correction is still to come: the range then keeps the
|
|
33
|
+
* blocks it has as well, since the scroll doesn't match the table yet. */
|
|
34
|
+
holdsRange: () => boolean;
|
|
28
35
|
overscan: number;
|
|
29
36
|
pinExtensionCap: number;
|
|
30
37
|
activateAbovePx: number;
|
|
@@ -32,9 +39,8 @@ export interface BlockWindowDeps {
|
|
|
32
39
|
}
|
|
33
40
|
export interface BlockWindow {
|
|
34
41
|
readonly result: WindowResult;
|
|
35
|
-
/**
|
|
36
|
-
*
|
|
37
|
-
* listener wouldn't update the derived in time for a deterministic reveal. */
|
|
42
|
+
/** A scripted `scrollTop` write fires no `scroll` event, so a scroll into view calls this to
|
|
43
|
+
* update the window before reading it. */
|
|
38
44
|
syncScrollTop(): void;
|
|
39
45
|
dispose(): void;
|
|
40
46
|
}
|
|
@@ -1,28 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Window math for virtual rendering
|
|
3
|
-
* scroll
|
|
4
|
-
*
|
|
5
|
-
* activation state. `createBlockWindow` wires live getters and a scroll listener to it.
|
|
2
|
+
* Window math for virtual rendering: which blocks to mount, and the spacer heights that keep the
|
|
3
|
+
* browser's scroll geometry. `computeWindow` is pure; `createBlockWindow` wires live getters and
|
|
4
|
+
* a scroll listener to it.
|
|
6
5
|
*/
|
|
7
6
|
import { untrack } from 'svelte';
|
|
8
7
|
export function computeWindow(model, input) {
|
|
9
8
|
const n = model.size;
|
|
10
9
|
const total = model.total();
|
|
11
|
-
// The one
|
|
12
|
-
// height, so who owns the scroll changes which
|
|
10
|
+
// The one place windowing turns on or off: a list decides purely on its own estimated
|
|
11
|
+
// height, so who owns the scroll changes which container is read and nothing else.
|
|
13
12
|
const active = input.active ? total >= input.deactivateBelowPx : total >= input.activateAbovePx;
|
|
14
13
|
if (!active || n === 0) {
|
|
15
|
-
return { active: false, start: 0, end: n, topSpacerPx: 0, bottomSpacerPx: 0 };
|
|
14
|
+
return { active: false, start: 0, end: n, topSpacerPx: 0, bottomSpacerPx: 0, floorPx: 0 };
|
|
16
15
|
}
|
|
17
16
|
const firstVisible = model.indexAtOffset(input.scrollTop);
|
|
18
|
-
//
|
|
19
|
-
// exactly on the bottom edge isn't visible.
|
|
17
|
+
// Check the last on-screen pixel: the viewport range is half-open, so a block whose top
|
|
18
|
+
// sits exactly on the bottom edge isn't visible.
|
|
20
19
|
const lastVisible = model.indexAtOffset(input.scrollTop + input.viewportHeight - 1);
|
|
21
20
|
let start = Math.max(0, firstVisible - input.overscan);
|
|
22
21
|
let end = Math.min(n, lastVisible + 1 + input.overscan);
|
|
23
|
-
//
|
|
24
|
-
//
|
|
25
|
-
// doesn't mount thousands. Beyond the cap it blurs.
|
|
22
|
+
// Growing the range to the caret block keeps its DOM node, so focus and IME survive a scroll;
|
|
23
|
+
// capped so a caret left far away doesn't mount thousands of blocks (it loses focus instead).
|
|
26
24
|
const pin = input.pinnedIndex;
|
|
27
25
|
if (pin !== null && pin >= 0 && pin < n) {
|
|
28
26
|
if (pin < start && start - pin <= input.pinExtensionCap)
|
|
@@ -35,7 +33,21 @@ export function computeWindow(model, input) {
|
|
|
35
33
|
start,
|
|
36
34
|
end,
|
|
37
35
|
topSpacerPx: model.offsetOf(start),
|
|
38
|
-
bottomSpacerPx: total - model.offsetOf(end)
|
|
36
|
+
bottomSpacerPx: total - model.offsetOf(end),
|
|
37
|
+
floorPx: total
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/** `next` widened to keep `shown`'s blocks too, with the spacers the table now gives them. */
|
|
41
|
+
function widened(model, next, shown) {
|
|
42
|
+
const end = Math.min(Math.max(next.end, shown.end), model.size);
|
|
43
|
+
const start = Math.min(next.start, shown.start, end);
|
|
44
|
+
return {
|
|
45
|
+
active: true,
|
|
46
|
+
start,
|
|
47
|
+
end,
|
|
48
|
+
topSpacerPx: model.offsetOf(start),
|
|
49
|
+
bottomSpacerPx: model.total() - model.offsetOf(end),
|
|
50
|
+
floorPx: model.total()
|
|
39
51
|
};
|
|
40
52
|
}
|
|
41
53
|
export function createBlockWindow(deps) {
|
|
@@ -56,8 +68,11 @@ export function createBlockWindow(deps) {
|
|
|
56
68
|
unsubscribe = null;
|
|
57
69
|
};
|
|
58
70
|
});
|
|
71
|
+
// Plain, not state: the range last shown, and the scroll it was worked out at.
|
|
72
|
+
let last = null;
|
|
59
73
|
const result = $derived.by(() => {
|
|
60
|
-
|
|
74
|
+
const model = deps.getModel();
|
|
75
|
+
const next = computeWindow(model, {
|
|
61
76
|
scrollTop,
|
|
62
77
|
viewportHeight: deps.getViewportHeight(),
|
|
63
78
|
overscan: deps.overscan,
|
|
@@ -67,10 +82,22 @@ export function createBlockWindow(deps) {
|
|
|
67
82
|
activateAbovePx: deps.activateAbovePx,
|
|
68
83
|
deactivateBelowPx: deps.deactivateBelowPx
|
|
69
84
|
});
|
|
85
|
+
// Unmounting the blocks at the top before the correction lands would remount them fresh; a
|
|
86
|
+
// range the new one doesn't touch is a jump elsewhere, and goes.
|
|
87
|
+
const shown = last?.scrollTop === scrollTop ? last.result : null;
|
|
88
|
+
const kept = shown &&
|
|
89
|
+
shown.active &&
|
|
90
|
+
next.active &&
|
|
91
|
+
next.start <= shown.end &&
|
|
92
|
+
shown.start <= next.end &&
|
|
93
|
+
deps.holdsRange()
|
|
94
|
+
? widened(model, next, shown)
|
|
95
|
+
: next;
|
|
96
|
+
last = { result: kept, scrollTop };
|
|
97
|
+
return kept;
|
|
70
98
|
});
|
|
71
|
-
// Hysteresis
|
|
72
|
-
//
|
|
73
|
-
// converges: once `active` equals `result.active` the guard writes nothing.
|
|
99
|
+
// Hysteresis: `result` reads `active` and this effect writes it, so the write is untracked
|
|
100
|
+
// and skipped when unchanged, or the effect would depend on its own write.
|
|
74
101
|
$effect(() => {
|
|
75
102
|
const next = result.active;
|
|
76
103
|
untrack(() => {
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One block list's children as a walk down the tree reads them, and the two walks: `descendTo`
|
|
3
|
+
* scrolls each level's child into the mounted range, `componentAt` reads only what is mounted.
|
|
4
|
+
* The editor root, every container, the table and each table row publish one.
|
|
5
|
+
*/
|
|
6
|
+
import type { BlockComponent } from '../block-component';
|
|
7
|
+
import { type RefSlots } from './publish-ref.svelte';
|
|
8
|
+
/** One mounted child list, as the descent reads it. Every field is read live. */
|
|
9
|
+
export interface ChildList {
|
|
10
|
+
count(): number;
|
|
11
|
+
readonly refs: RefSlots<BlockComponent>;
|
|
12
|
+
/** Required, so a list that cannot say whether a child is in range cannot exist. */
|
|
13
|
+
readonly windowing: {
|
|
14
|
+
/** Scrolls this list so child `index` is inside the mounted range; resolves after a tick. */
|
|
15
|
+
revealChild(index: number): Promise<void>;
|
|
16
|
+
/** Whether `index` is inside the mounted range. */
|
|
17
|
+
isInWindow(index: number): boolean;
|
|
18
|
+
};
|
|
19
|
+
/** Scrolls child `index` into this list's own scroller on another axis (a table's columns). */
|
|
20
|
+
bringChildIntoView?(index: number): void;
|
|
21
|
+
/** True while only the title row (child 0) is mounted. */
|
|
22
|
+
isCollapsed?(): boolean;
|
|
23
|
+
/** Opens a collapsed body as an undoable commit, for a descent asked to open one. */
|
|
24
|
+
openCollapsed?(): Promise<boolean>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Mounts each level of `path` below `root` and returns the component at its end, or null when
|
|
28
|
+
* a level can't mount. A path into a collapsed body stops there unless `openCollapsed` is set.
|
|
29
|
+
*/
|
|
30
|
+
export declare function descendTo(root: ChildList, path: readonly number[], opts?: {
|
|
31
|
+
openCollapsed?: boolean;
|
|
32
|
+
}): Promise<BlockComponent | null>;
|
|
33
|
+
/** The mounted component at `path`, or null; never mounts anything. */
|
|
34
|
+
export declare function componentAt(root: ChildList, path: readonly number[]): BlockComponent | null;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { revealChildOrWait } from './publish-ref.svelte';
|
|
2
|
+
/**
|
|
3
|
+
* Mounts each level of `path` below `root` and returns the component at its end, or null when
|
|
4
|
+
* a level can't mount. A path into a collapsed body stops there unless `openCollapsed` is set.
|
|
5
|
+
*/
|
|
6
|
+
export async function descendTo(root, path, opts = {}) {
|
|
7
|
+
let list = root;
|
|
8
|
+
for (let depth = 0; depth < path.length; depth++) {
|
|
9
|
+
const index = path[depth];
|
|
10
|
+
// Only a body child is hidden; the title row stays mounted while collapsed.
|
|
11
|
+
if (index >= 1 && list.isCollapsed?.()) {
|
|
12
|
+
if (!opts.openCollapsed || !list.openCollapsed)
|
|
13
|
+
return null;
|
|
14
|
+
await list.openCollapsed();
|
|
15
|
+
}
|
|
16
|
+
const { windowing } = list;
|
|
17
|
+
await revealChildOrWait(index, {
|
|
18
|
+
slots: list.refs,
|
|
19
|
+
childCount: list.count(),
|
|
20
|
+
revealChild: (i) => windowing.revealChild(i),
|
|
21
|
+
isInWindow: (i) => windowing.isInWindow(i)
|
|
22
|
+
});
|
|
23
|
+
const ref = list.refs.get(index);
|
|
24
|
+
if (!ref)
|
|
25
|
+
return null;
|
|
26
|
+
list.bringChildIntoView?.(index);
|
|
27
|
+
if (depth === path.length - 1)
|
|
28
|
+
return ref;
|
|
29
|
+
const next = ref.childList?.();
|
|
30
|
+
if (!next)
|
|
31
|
+
return null;
|
|
32
|
+
list = next;
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
/** The mounted component at `path`, or null; never mounts anything. */
|
|
37
|
+
export function componentAt(root, path) {
|
|
38
|
+
let list = root;
|
|
39
|
+
for (let depth = 0; depth < path.length && list; depth++) {
|
|
40
|
+
const ref = list.refs.get(path[depth]);
|
|
41
|
+
if (!ref)
|
|
42
|
+
return null;
|
|
43
|
+
if (depth === path.length - 1)
|
|
44
|
+
return ref;
|
|
45
|
+
list = ref.childList?.();
|
|
46
|
+
}
|
|
47
|
+
return null;
|
|
48
|
+
}
|