@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,85 +1,95 @@
|
|
|
1
|
-
import { mintCommandId
|
|
2
|
-
import {
|
|
3
|
-
import { resolveBinding, resolveKindBinding, getCommand, warnDeadKeyCommand, isBuiltinCommandId, CROSS_BLOCK_RANGE_COMMAND_IDS, RANGE_DECLINED_COMMAND_IDS } from './commands';
|
|
4
|
-
import {
|
|
1
|
+
import { mintCommandId } from './command-id';
|
|
2
|
+
import { createPluginRegistry } from './plugin-registry';
|
|
3
|
+
import { resolveBinding, resolveKindBinding, getCommand, isCommandRegistered, warnDeadKeyCommand, isBuiltinCommandId, runPluginCommand, CROSS_BLOCK_RANGE_COMMAND_IDS, RANGE_DECLINED_COMMAND_IDS } from './commands';
|
|
4
|
+
import { pluginEditorFor } from './plugin-install';
|
|
5
5
|
import { isReadingMode } from '../presentation-mode';
|
|
6
|
-
const blockCommands =
|
|
6
|
+
const blockCommands = createPluginRegistry({
|
|
7
|
+
label: 'registerBlockCommand',
|
|
8
|
+
isBuiltin: () => false
|
|
9
|
+
});
|
|
7
10
|
const compositeKey = (kind, id) => `${kind} ${id}`;
|
|
11
|
+
// The two ids every block answers the same way, so they resolve here rather than per component.
|
|
12
|
+
const MOVE_STEP = { 'block.moveUp': -1, 'block.moveDown': 1 };
|
|
8
13
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* inside `apply` before the map write, so an invalid name never leaves an orphaned handler.
|
|
14
|
+
* A duplicate `(kind, name)` reports as a register-once conflict, not an id collision, and the
|
|
15
|
+
* name is validated before the handler is stored, so an invalid name leaves no orphaned handler.
|
|
12
16
|
*/
|
|
13
17
|
export function registerBlockCommand(kind, name, handler) {
|
|
14
18
|
const key = compositeKey(kind, name);
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
blockCommands.set(key, handler);
|
|
19
|
-
}, `registerBlockCommand: (${kind}, ${name}) is already registered — block commands are register-once`);
|
|
19
|
+
// A taken key throws here, or on a dev server replaces the handler under the id it already has.
|
|
20
|
+
const id = blockCommands.has(key) ? name : mintCommandId(name);
|
|
21
|
+
blockCommands.register(key, handler, `registerBlockCommand: (${kind}, ${name}) is already registered — block commands are register-once`);
|
|
20
22
|
return id;
|
|
21
23
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
export function __resetBlockCommandsForTests() {
|
|
26
|
-
blockCommands.clear();
|
|
27
|
-
__resetMintedCommandIdsForTests();
|
|
24
|
+
/** The handler where `activation` resolves the plugin that registered it. */
|
|
25
|
+
export function getBlockCommand(kind, id, activation) {
|
|
26
|
+
return blockCommands.get(compositeKey(kind, id), activation);
|
|
28
27
|
}
|
|
29
28
|
/**
|
|
30
|
-
* The
|
|
31
|
-
*
|
|
32
|
-
* re-fire the focused leaf's undo.
|
|
29
|
+
* The block-level lookups, in dispatch order. A global id resolves as dead here, since the leaf
|
|
30
|
+
* already ran it and a container must never re-fire the focused leaf's undo.
|
|
33
31
|
*/
|
|
34
|
-
function resolveBlockLocalCommand(id, target) {
|
|
32
|
+
function resolveBlockLocalCommand(id, target, activation) {
|
|
35
33
|
if (!target)
|
|
36
34
|
return { tier: 'no-surface' };
|
|
37
|
-
if (getCommand(id))
|
|
35
|
+
if (getCommand(id, activation))
|
|
38
36
|
return { tier: 'dead' };
|
|
39
|
-
const handler = getBlockCommand(target.kind, id);
|
|
37
|
+
const handler = getBlockCommand(target.kind, id, activation);
|
|
40
38
|
// A context is built only where a handler matched, so a built-in id costs nothing extra on the
|
|
41
39
|
// read a host may run per selection change.
|
|
42
40
|
const context = handler ? target.getCommandContext?.() : undefined;
|
|
43
|
-
if (handler && context)
|
|
44
|
-
|
|
45
|
-
|
|
41
|
+
if (handler && context) {
|
|
42
|
+
const owner = blockCommands.ownerOf(compositeKey(target.kind, id));
|
|
43
|
+
return { tier: 'minted', target, handler, context, owner };
|
|
44
|
+
}
|
|
45
|
+
const dir = MOVE_STEP[id];
|
|
46
|
+
if (dir && target.getPath)
|
|
47
|
+
return { tier: 'move', target, path: target.getPath, dir };
|
|
48
|
+
if (isBuiltinCommandId(id)) {
|
|
49
|
+
return target.runCommand ? { tier: 'builtin', target } : { tier: 'no-surface' };
|
|
50
|
+
}
|
|
51
|
+
const installedElsewhere = isCommandRegistered(id) || blockCommands.has(compositeKey(target.kind, id));
|
|
52
|
+
return installedElsewhere && !handler ? { tier: 'unlisted' } : { tier: 'dead' };
|
|
46
53
|
}
|
|
47
|
-
/** The full
|
|
48
|
-
* read
|
|
49
|
-
function resolveCommand(id, target) {
|
|
50
|
-
const globalRun = getCommand(id);
|
|
54
|
+
/** The full lookup: global commands first, then the block-level ones. Both the dispatch and the
|
|
55
|
+
* "can this run" read use it, so a greyed-out button cannot disagree with the click under it. */
|
|
56
|
+
function resolveCommand(id, target, activation) {
|
|
57
|
+
const globalRun = getCommand(id, activation);
|
|
51
58
|
if (globalRun)
|
|
52
59
|
return { tier: 'global', run: globalRun };
|
|
53
|
-
return resolveBlockLocalCommand(id, target);
|
|
60
|
+
return resolveBlockLocalCommand(id, target, activation);
|
|
54
61
|
}
|
|
55
|
-
/**
|
|
56
|
-
*
|
|
57
|
-
|
|
58
|
-
* report. A dead id declines loudly rather than reaching a `runCommand` with no arm for it.
|
|
59
|
-
*/
|
|
60
|
-
function runBlockLocalCommand(resolved, id, arg, path, onCommandError) {
|
|
62
|
+
/** Run a resolved block-level command, catching and reporting a plugin throw; an id no handler
|
|
63
|
+
* answers declines with a warning. */
|
|
64
|
+
function runBlockLocalCommand(resolved, id, arg, path, ctx) {
|
|
61
65
|
switch (resolved.tier) {
|
|
62
|
-
case 'minted':
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
onCommandError?.({ kind: resolved.target.kind, command: id, error });
|
|
68
|
-
return true;
|
|
69
|
-
}
|
|
66
|
+
case 'minted': {
|
|
67
|
+
const { owner, handler, context, target } = resolved;
|
|
68
|
+
const editor = pluginEditorFor(ctx.pluginEditor, owner);
|
|
69
|
+
return runPluginCommand(owner, { kind: target.kind, command: id }, ctx.onCommandError, () => handler({ ...context, editor, arg }));
|
|
70
|
+
}
|
|
70
71
|
case 'builtin':
|
|
71
|
-
return resolved.target.runCommand(id, arg);
|
|
72
|
+
return resolved.target.runCommand?.(id, arg) ?? false;
|
|
73
|
+
case 'move': {
|
|
74
|
+
const { target, path, dir } = resolved;
|
|
75
|
+
const move = () => void ctx.reorder.nudgeReorderUnit(path(), dir);
|
|
76
|
+
if (target.afterSourceCommit)
|
|
77
|
+
target.afterSourceCommit(move);
|
|
78
|
+
else
|
|
79
|
+
move();
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
72
82
|
case 'dead':
|
|
73
83
|
warnDeadKeyCommand(id, path);
|
|
74
84
|
return false;
|
|
75
85
|
case 'no-surface':
|
|
86
|
+
case 'unlisted':
|
|
76
87
|
return false;
|
|
77
88
|
}
|
|
78
89
|
}
|
|
79
90
|
/**
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
* range-safe and runs on the focused surface (`RANGE_DECLINED_COMMAND_IDS` in `./commands`).
|
|
91
|
+
* While a selection spans blocks, a single-block command routes to the cross-block handler or
|
|
92
|
+
* declines (`RANGE_DECLINED_COMMAND_IDS`); anything else runs on the focused block.
|
|
83
93
|
*/
|
|
84
94
|
function rangeRouteFor(id, gates) {
|
|
85
95
|
// Called directly, not optionally: a caller without the getter throws rather than skipping.
|
|
@@ -90,24 +100,11 @@ function rangeRouteFor(id, gates) {
|
|
|
90
100
|
if (!CROSS_BLOCK_RANGE_COMMAND_IDS.has(id))
|
|
91
101
|
return { kind: 'block-local', ranged: true };
|
|
92
102
|
const router = gates.crossBlockCommands;
|
|
93
|
-
return router
|
|
103
|
+
return router.canRun(id) ? { kind: 'cross-block', router } : { kind: 'decline' };
|
|
94
104
|
}
|
|
95
|
-
/**
|
|
96
|
-
*
|
|
97
|
-
|
|
98
|
-
*/
|
|
99
|
-
function commandIsAdmissible(id, gates) {
|
|
100
|
-
if (isReadingMode(gates.getPresentationMode))
|
|
101
|
-
return false;
|
|
102
|
-
return rangeRouteFor(id, gates).kind !== 'decline';
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* The id-keyed seam: chord dispatch enters with a resolved binding, `EditorInstance.runCommand`
|
|
106
|
-
* with the id itself, so both meet the same gates and the same arms. Precedence is the leaf
|
|
107
|
-
* order: global (undo/redo) → minted block command → built-in kind command. A null target means
|
|
108
|
-
* no focused surface, where the global tier still runs and the block-local tiers decline.
|
|
109
|
-
*/
|
|
110
|
-
function runResolvedCommand(id, arg, target, ctx, path, onCommandError) {
|
|
105
|
+
/** The one dispatch keyed by id, which a chord and `EditorInstance.runCommand` both reach. With no
|
|
106
|
+
* focused block (a null target) only global commands run; reading mode runs none. */
|
|
107
|
+
function runResolvedCommand(id, arg, target, ctx, path) {
|
|
111
108
|
if (isReadingMode(ctx.getPresentationMode))
|
|
112
109
|
return false;
|
|
113
110
|
const route = rangeRouteFor(id, ctx);
|
|
@@ -115,18 +112,14 @@ function runResolvedCommand(id, arg, target, ctx, path, onCommandError) {
|
|
|
115
112
|
return false;
|
|
116
113
|
if (route.kind === 'cross-block')
|
|
117
114
|
return route.router.run(id);
|
|
118
|
-
const resolved = resolveCommand(id, target);
|
|
119
|
-
// Inject the sink so a plugin-global handler's contained throw reports through the same
|
|
120
|
-
// channel as a block command's; the global tier is the only path reaching one.
|
|
115
|
+
const resolved = resolveCommand(id, target, ctx.activation);
|
|
121
116
|
if (resolved.tier === 'global')
|
|
122
|
-
return resolved.run({ ...ctx,
|
|
123
|
-
return runBlockLocalCommand(resolved, id, arg, path,
|
|
117
|
+
return resolved.run({ ...ctx, arg });
|
|
118
|
+
return runBlockLocalCommand(resolved, id, arg, path, ctx);
|
|
124
119
|
}
|
|
125
120
|
/**
|
|
126
|
-
* The
|
|
127
|
-
*
|
|
128
|
-
* unreachable id spends none of the dispatch's one-time dead-key diagnostics.
|
|
129
|
-
* See `editor-props.ts` for the contract this answers.
|
|
121
|
+
* The read behind `EditorInstance.canRunCommand`, through the dispatch's own checks and lookup.
|
|
122
|
+
* Silent, since a host may ask on every selection change and must not spend the dead-key warnings.
|
|
130
123
|
*/
|
|
131
124
|
export function canRunCommandById(id, target, gates) {
|
|
132
125
|
if (isReadingMode(gates.getPresentationMode))
|
|
@@ -134,46 +127,40 @@ export function canRunCommandById(id, target, gates) {
|
|
|
134
127
|
const route = rangeRouteFor(id, gates);
|
|
135
128
|
if (route.kind !== 'block-local')
|
|
136
129
|
return route.kind === 'cross-block';
|
|
137
|
-
const { tier } = resolveCommand(id, target);
|
|
138
|
-
return tier
|
|
130
|
+
const { tier } = resolveCommand(id, target, gates.activation);
|
|
131
|
+
return tier === 'global' || tier === 'minted' || tier === 'builtin' || tier === 'move';
|
|
139
132
|
}
|
|
140
|
-
/** The
|
|
141
|
-
*
|
|
142
|
-
* press answers — the cross-block arm over a range, the focused surface at a caret. */
|
|
133
|
+
/** The read behind `EditorInstance.isCommandActive`: state, not permission, so a disabled button
|
|
134
|
+
* may still show pressed. Whoever would run the command answers. */
|
|
143
135
|
export function isCommandActiveById(id, target, gates) {
|
|
144
136
|
const route = rangeRouteFor(id, gates);
|
|
145
137
|
if (route.kind === 'cross-block')
|
|
146
138
|
return route.router.isActive(id);
|
|
147
|
-
// A
|
|
148
|
-
// bytes are not the ones
|
|
139
|
+
// A selection no handler reads has no pressed state: the focused block only holds a resting
|
|
140
|
+
// caret, whose bytes are not the ones the command would rewrite.
|
|
149
141
|
if (route.kind === 'decline' || route.ranged)
|
|
150
142
|
return false;
|
|
151
143
|
return target?.isCommandActive?.(id) ?? false;
|
|
152
144
|
}
|
|
153
|
-
/** The `EditorInstance.runCommand`
|
|
154
|
-
export function runCommandById(id, arg, target, ctx
|
|
155
|
-
return runResolvedCommand(id, arg, target, ctx, 'door'
|
|
145
|
+
/** The `EditorInstance.runCommand` entry point: an id with no keystroke behind it. */
|
|
146
|
+
export function runCommandById(id, arg, target, ctx) {
|
|
147
|
+
return runResolvedCommand(id, arg, target, ctx, 'door');
|
|
156
148
|
}
|
|
157
|
-
/**
|
|
158
|
-
export function dispatchKeyCommand(chord, target, ctx
|
|
159
|
-
const binding = resolveBinding(chord, target.kind,
|
|
149
|
+
/** Chord dispatch on the focused leaf: an editable block, or a container's title row. */
|
|
150
|
+
export function dispatchKeyCommand(chord, target, ctx) {
|
|
151
|
+
const binding = resolveBinding(chord, target.kind, ctx.keybindingOverrides(), ctx.activation);
|
|
160
152
|
if (!binding)
|
|
161
153
|
return false;
|
|
162
|
-
return runResolvedCommand(binding.command, binding.arg, target, ctx, 'chord'
|
|
154
|
+
return runResolvedCommand(binding.command, binding.arg, target, ctx, 'chord');
|
|
163
155
|
}
|
|
164
|
-
/**
|
|
165
|
-
*
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
* dropped by a `runCommand` that has no arm for it.
|
|
170
|
-
*/
|
|
171
|
-
export function dispatchKindCommand(chord, target, gates, overrides, onCommandError) {
|
|
172
|
-
const binding = resolveKindBinding(chord, target.kind, overrides);
|
|
173
|
-
if (!binding)
|
|
156
|
+
/** Dispatch for a chord at a container: kind commands only, since undo/redo and the range
|
|
157
|
+
* commands belong to the focused leaf and would otherwise fire twice. */
|
|
158
|
+
export function dispatchKindCommand(chord, target, ctx) {
|
|
159
|
+
const binding = resolveKindBinding(chord, target.kind, ctx.keybindingOverrides());
|
|
160
|
+
if (!binding || isReadingMode(ctx.getPresentationMode))
|
|
174
161
|
return false;
|
|
175
|
-
if (
|
|
162
|
+
if (rangeRouteFor(binding.command, ctx).kind !== 'block-local')
|
|
176
163
|
return false;
|
|
177
|
-
const resolved = resolveBlockLocalCommand(binding.command, target);
|
|
178
|
-
return runBlockLocalCommand(resolved, binding.command, binding.arg, 'chord',
|
|
164
|
+
const resolved = resolveBlockLocalCommand(binding.command, target, ctx.activation);
|
|
165
|
+
return runBlockLocalCommand(resolved, binding.command, binding.arg, 'chord', ctx);
|
|
179
166
|
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Per-kind Enter-completion registry, the block-opener registry's sibling: an opener recognizes
|
|
3
|
-
* a line while parsing, a completer recognizes a lone typed line
|
|
4
|
-
* the canonical lines that complete it.
|
|
5
|
-
* through `registry-reset.ts` like every other public register-once seam.
|
|
3
|
+
* a line while parsing, a completer recognizes a lone typed line when Enter is pressed and
|
|
4
|
+
* returns the canonical lines that complete it.
|
|
6
5
|
*/
|
|
7
6
|
import { type AnyBlockKind } from '../core/nodes';
|
|
7
|
+
import type { GrammarView } from './block-openers';
|
|
8
8
|
/**
|
|
9
|
-
* The replacement, as lines
|
|
10
|
-
*
|
|
11
|
-
* and `line`/`column`
|
|
12
|
-
*
|
|
9
|
+
* The replacement, as lines with no line endings: the Enter handler attaches the block's own, else
|
|
10
|
+
* the document's. `caret.path` is the child indices inside the new block, empty for the block itself,
|
|
11
|
+
* and `line`/`column` are a position inside that node. Line-relative rather than a byte offset
|
|
12
|
+
* because the Enter handler picks the line ending afterwards, so only it can count bytes.
|
|
13
13
|
*/
|
|
14
14
|
export interface CompletionResult {
|
|
15
15
|
lines: string[];
|
|
@@ -20,22 +20,19 @@ export interface CompletionResult {
|
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
22
|
export interface BlockCompleter {
|
|
23
|
-
/** Attempt to complete `line`; null declines,
|
|
23
|
+
/** Attempt to complete `line`; null declines, and so does a result whose lines render nothing. */
|
|
24
24
|
tryComplete(line: string): CompletionResult | null;
|
|
25
25
|
/**
|
|
26
|
-
* Also
|
|
27
|
-
*
|
|
28
|
-
* Off by default: a table's header row is a prefix of a longer row the user may still be typing.
|
|
26
|
+
* Also tried as the line is typed, for a line that means one thing once complete (a lone `$$`).
|
|
27
|
+
* Off by default, since a table's header row may be a longer row the user is still typing.
|
|
29
28
|
*/
|
|
30
29
|
onType?: boolean;
|
|
31
30
|
}
|
|
32
31
|
export declare function registerBlockCompleter(kind: AnyBlockKind, completer: BlockCompleter): void;
|
|
33
|
-
/** The first
|
|
34
|
-
export declare function completeTypedLine(line: string): CompletionResult | null;
|
|
35
|
-
/** The first
|
|
36
|
-
export declare function completeLineOnType(line: string): CompletionResult | null;
|
|
37
|
-
/**
|
|
38
|
-
*
|
|
32
|
+
/** The first completion for `line`, or null when no completer the editor's grammar allows takes it. */
|
|
33
|
+
export declare function completeTypedLine(line: string, grammar: GrammarView): CompletionResult | null;
|
|
34
|
+
/** The first completion for `line` among the completers that answer as the line is typed. */
|
|
35
|
+
export declare function completeLineOnType(line: string, grammar: GrammarView): CompletionResult | null;
|
|
36
|
+
/** Does `kind` already have a completer? A plugin that may register twice checks this first,
|
|
37
|
+
* so re-installing it never trips the register-once throw. */
|
|
39
38
|
export declare function isBlockCompleterRegistered(kind: string): boolean;
|
|
40
|
-
export declare function __resetBlockCompletersForTests(): void;
|
|
41
|
-
export declare function __removePluginCompletersForTests(): void;
|
|
@@ -1,42 +1,44 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Per-kind Enter-completion registry, the block-opener registry's sibling: an opener recognizes
|
|
3
|
-
* a line while parsing, a completer recognizes a lone typed line
|
|
4
|
-
* the canonical lines that complete it.
|
|
5
|
-
* through `registry-reset.ts` like every other public register-once seam.
|
|
3
|
+
* a line while parsing, a completer recognizes a lone typed line when Enter is pressed and
|
|
4
|
+
* returns the canonical lines that complete it.
|
|
6
5
|
*/
|
|
7
6
|
import { isBuiltinBlockKind } from '../core/nodes';
|
|
8
|
-
import {
|
|
9
|
-
|
|
7
|
+
import { resolvesIn } from './plugin-activation';
|
|
8
|
+
import { createBlockKindRegistry } from './plugin-registry';
|
|
10
9
|
let orderedCache = null;
|
|
10
|
+
const completers = createBlockKindRegistry({
|
|
11
|
+
label: 'registerBlockCompleter',
|
|
12
|
+
isBuiltin: isBuiltinBlockKind,
|
|
13
|
+
onChange: () => (orderedCache = null)
|
|
14
|
+
});
|
|
11
15
|
export function registerBlockCompleter(kind, completer) {
|
|
12
|
-
|
|
13
|
-
completers.set(kind, completer);
|
|
14
|
-
orderedCache = null;
|
|
15
|
-
}, `registerBlockCompleter: "${kind}" is already registered. Completers are register-once.`);
|
|
16
|
+
completers.register(kind, completer, `registerBlockCompleter: "${kind}" is already registered. Completers are register-once.`);
|
|
16
17
|
}
|
|
17
|
-
// Kind-name order, so which completer
|
|
18
|
-
// and never of registration order — the openers' rule, minus a priority no conflict has asked for.
|
|
18
|
+
// Kind-name order, so which completer runs first never depends on registration order.
|
|
19
19
|
function ordered() {
|
|
20
20
|
if (!orderedCache) {
|
|
21
|
-
orderedCache =
|
|
22
|
-
.
|
|
23
|
-
.
|
|
21
|
+
orderedCache = completers
|
|
22
|
+
.records()
|
|
23
|
+
.sort((a, b) => (a.key < b.key ? -1 : a.key > b.key ? 1 : 0));
|
|
24
24
|
}
|
|
25
25
|
return orderedCache;
|
|
26
26
|
}
|
|
27
|
-
/** The first
|
|
28
|
-
export function completeTypedLine(line) {
|
|
29
|
-
for (const completer of ordered()) {
|
|
27
|
+
/** The first completion for `line`, or null when no completer the editor's grammar allows takes it. */
|
|
28
|
+
export function completeTypedLine(line, grammar) {
|
|
29
|
+
for (const { value: completer, owner } of ordered()) {
|
|
30
|
+
if (!resolvesIn(grammar.activation, owner))
|
|
31
|
+
continue;
|
|
30
32
|
const claim = completer.tryComplete(line);
|
|
31
33
|
if (claim)
|
|
32
34
|
return claim;
|
|
33
35
|
}
|
|
34
36
|
return null;
|
|
35
37
|
}
|
|
36
|
-
/** The first
|
|
37
|
-
export function completeLineOnType(line) {
|
|
38
|
-
for (const completer of ordered()) {
|
|
39
|
-
if (!completer.onType)
|
|
38
|
+
/** The first completion for `line` among the completers that answer as the line is typed. */
|
|
39
|
+
export function completeLineOnType(line, grammar) {
|
|
40
|
+
for (const { value: completer, owner } of ordered()) {
|
|
41
|
+
if (!completer.onType || !resolvesIn(grammar.activation, owner))
|
|
40
42
|
continue;
|
|
41
43
|
const claim = completer.tryComplete(line);
|
|
42
44
|
if (claim)
|
|
@@ -44,17 +46,8 @@ export function completeLineOnType(line) {
|
|
|
44
46
|
}
|
|
45
47
|
return null;
|
|
46
48
|
}
|
|
47
|
-
/**
|
|
48
|
-
*
|
|
49
|
+
/** Does `kind` already have a completer? A plugin that may register twice checks this first,
|
|
50
|
+
* so re-installing it never trips the register-once throw. */
|
|
49
51
|
export function isBlockCompleterRegistered(kind) {
|
|
50
52
|
return completers.has(kind);
|
|
51
53
|
}
|
|
52
|
-
export function __resetBlockCompletersForTests() {
|
|
53
|
-
completers.clear();
|
|
54
|
-
orderedCache = null;
|
|
55
|
-
}
|
|
56
|
-
// The unified schema reset preserves built-ins for tests that merely add plugin kinds.
|
|
57
|
-
export function __removePluginCompletersForTests() {
|
|
58
|
-
deletePluginEntries(completers, isBuiltinBlockKind);
|
|
59
|
-
orderedCache = null;
|
|
60
|
-
}
|
|
@@ -6,28 +6,27 @@ import type { Component } from 'svelte';
|
|
|
6
6
|
import { type AnyBlockKind } from '../core/nodes';
|
|
7
7
|
import type { NodeView } from '../core/node-views';
|
|
8
8
|
import type { BlockComponentExports, BlockComponentProps } from '../block-component';
|
|
9
|
+
import type { PluginActivation } from './plugin-activation';
|
|
10
|
+
import { type EditorContext } from './plugin-install';
|
|
9
11
|
export interface BlockComponentEntry {
|
|
10
12
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* surface itself (a leaf) or a container's single `containerApi`.
|
|
13
|
+
* Typed with `BlockComponentExports` so BlockHost's `bind:this` type-checks a component picked
|
|
14
|
+
* at runtime, which must expose a leaf's editable element or a container's `containerApi`.
|
|
14
15
|
*/
|
|
15
16
|
component: Component<Record<string, unknown>, BlockComponentExports>;
|
|
16
17
|
extraProps?: (node: NodeView) => Record<string, unknown>;
|
|
17
18
|
}
|
|
18
19
|
/**
|
|
19
|
-
* Typed constructor for a registry entry
|
|
20
|
-
*
|
|
21
|
-
* its `containerApi` fails here rather than mounting as a block nothing can focus. The internal
|
|
22
|
-
* cast widens contravariant props to the registry's `Record<string, unknown>`.
|
|
20
|
+
* Typed constructor for a registry entry, so a container that forgot its `containerApi`, or props
|
|
21
|
+
* BlockHost never passes, fail to compile rather than mount as a block nothing can focus.
|
|
23
22
|
*/
|
|
24
23
|
export declare function defineBlockComponent<P extends Partial<BlockComponentProps> & Record<string, unknown>>(component: Component<P, BlockComponentExports>, extraProps?: (node: NodeView) => Record<string, unknown>): BlockComponentEntry;
|
|
25
24
|
export declare function registerBlockComponent(kind: AnyBlockKind, entry: BlockComponentEntry): void;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
*
|
|
30
|
-
|
|
25
|
+
/** The kind's component where `activation` resolves the plugin that owns the kind. */
|
|
26
|
+
export declare function getBlockComponent(kind: AnyBlockKind, activation: PluginActivation): BlockComponentEntry | undefined;
|
|
27
|
+
/** An editor's `EditorContext` for the plugin the kind's component answers to, which is the
|
|
28
|
+
* context the component's `getEditor` reads. */
|
|
29
|
+
export declare function componentPluginEditor(pluginEditor: ((pluginName: string) => EditorContext | undefined) | undefined, kind: AnyBlockKind): EditorContext | undefined;
|
|
30
|
+
/** `registerBlockComponent` throws on a duplicate, so a plugin that may register twice (hot
|
|
31
|
+
* reload, re-import) checks this first. */
|
|
31
32
|
export declare function isBlockComponentRegistered(kind: string): boolean;
|
|
32
|
-
/** Test-only. Removes every non-built-in component entry; built-ins survive. */
|
|
33
|
-
export declare function __removePluginComponentsForTests(): void;
|
|
@@ -3,31 +3,33 @@
|
|
|
3
3
|
* kinds register a descriptor plus a component entry.
|
|
4
4
|
*/
|
|
5
5
|
import { isBuiltinBlockKind } from '../core/nodes';
|
|
6
|
-
import {
|
|
6
|
+
import { pluginEditorFor } from './plugin-install';
|
|
7
|
+
import { createBlockKindRegistry } from './plugin-registry';
|
|
7
8
|
/**
|
|
8
|
-
* Typed constructor for a registry entry
|
|
9
|
-
*
|
|
10
|
-
* its `containerApi` fails here rather than mounting as a block nothing can focus. The internal
|
|
11
|
-
* cast widens contravariant props to the registry's `Record<string, unknown>`.
|
|
9
|
+
* Typed constructor for a registry entry, so a container that forgot its `containerApi`, or props
|
|
10
|
+
* BlockHost never passes, fail to compile rather than mount as a block nothing can focus.
|
|
12
11
|
*/
|
|
13
12
|
export function defineBlockComponent(component, extraProps) {
|
|
14
13
|
return { component: component, extraProps };
|
|
15
14
|
}
|
|
16
|
-
const registry =
|
|
15
|
+
const registry = createBlockKindRegistry({
|
|
16
|
+
label: 'registerBlockComponent',
|
|
17
|
+
isBuiltin: isBuiltinBlockKind
|
|
18
|
+
});
|
|
17
19
|
export function registerBlockComponent(kind, entry) {
|
|
18
|
-
|
|
20
|
+
registry.register(kind, entry, `registerBlockComponent: "${kind}" is already registered. Components are register-once.`);
|
|
19
21
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
/** The kind's component where `activation` resolves the plugin that owns the kind. */
|
|
23
|
+
export function getBlockComponent(kind, activation) {
|
|
24
|
+
return registry.get(kind, activation);
|
|
22
25
|
}
|
|
23
|
-
/**
|
|
24
|
-
*
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
/** An editor's `EditorContext` for the plugin the kind's component answers to, which is the
|
|
27
|
+
* context the component's `getEditor` reads. */
|
|
28
|
+
export function componentPluginEditor(pluginEditor, kind) {
|
|
29
|
+
return pluginEditorFor(pluginEditor, registry.ownerOf(kind));
|
|
30
|
+
}
|
|
31
|
+
/** `registerBlockComponent` throws on a duplicate, so a plugin that may register twice (hot
|
|
32
|
+
* reload, re-import) checks this first. */
|
|
27
33
|
export function isBlockComponentRegistered(kind) {
|
|
28
34
|
return registry.has(kind);
|
|
29
35
|
}
|
|
30
|
-
/** Test-only. Removes every non-built-in component entry; built-ins survive. */
|
|
31
|
-
export function __removePluginComponentsForTests() {
|
|
32
|
-
deletePluginEntries(registry, isBuiltinBlockKind);
|
|
33
|
-
}
|