@voithos-labs/aragonite 0.10.3 → 0.10.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/a11y-strings.d.ts +12 -5
- package/dist/a11y-strings.js +61 -5
- package/dist/action-contracts.d.ts +242 -155
- package/dist/action-contracts.js +2 -2
- package/dist/active-editor.d.ts +3 -3
- package/dist/active-editor.js +8 -9
- package/dist/ambient/ambient-dom.d.ts +2 -5
- package/dist/ambient/ambient-dom.js +16 -62
- package/dist/assert.js +6 -5
- package/dist/block-component.d.ts +135 -109
- package/dist/block-component.js +30 -22
- package/dist/block-id.d.ts +6 -10
- package/dist/block-id.js +25 -14
- package/dist/bounded-memo.d.ts +5 -5
- package/dist/bounded-memo.js +6 -6
- package/dist/components/BlockDragHandle.svelte +13 -20
- package/dist/components/BlockHost.svelte +56 -134
- package/dist/components/BlockList.svelte +22 -19
- package/dist/components/DecorationOverlay.svelte +9 -10
- package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
- package/dist/components/Editor.svelte +619 -1089
- package/dist/components/Editor.svelte.d.ts +9 -20
- package/dist/components/GapCaret.svelte +26 -59
- package/dist/components/SelectionOverlay.svelte +36 -67
- package/dist/components/SelectionOverlay.svelte.d.ts +6 -4
- package/dist/components/TailInsert.svelte +8 -55
- package/dist/components/TailInsert.svelte.d.ts +4 -6
- package/dist/components/block-content-selector.d.ts +11 -11
- package/dist/components/block-content-selector.js +11 -11
- package/dist/components/block-el-lookup.d.ts +6 -0
- package/dist/components/block-el-lookup.js +27 -0
- package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
- package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
- package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
- package/dist/components/blocks/code/CodeBlock.svelte +255 -276
- package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
- package/dist/components/blocks/code/CodeBlockRail.svelte +103 -100
- package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
- package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
- package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
- package/dist/components/blocks/code/code-bootstrap.js +35 -28
- package/dist/components/blocks/code/code-context-actions.js +5 -4
- package/dist/components/blocks/code/code-enter.js +2 -2
- package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
- package/dist/components/blocks/code/code-fence-boundary.js +40 -66
- package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
- package/dist/components/blocks/code/code-fence-exit.js +24 -25
- package/dist/components/blocks/code/code-indent.d.ts +2 -2
- package/dist/components/blocks/code/code-indent.js +4 -7
- package/dist/components/blocks/code/code-languages.d.ts +16 -12
- package/dist/components/blocks/code/code-languages.js +58 -32
- package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
- package/dist/components/blocks/code/code-paste-surface.js +9 -18
- package/dist/components/blocks/code/code-renderer.d.ts +21 -5
- package/dist/components/blocks/code/code-renderer.js +90 -125
- package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
- package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
- package/dist/components/blocks/directive/activate-directives.js +18 -13
- package/dist/components/blocks/editable-leaf.d.ts +50 -74
- package/dist/components/blocks/editable-leaf.js +144 -202
- package/dist/components/blocks/editable-surface.d.ts +96 -100
- package/dist/components/blocks/editable-surface.js +101 -109
- package/dist/components/blocks/list/ListBlock.svelte +46 -90
- package/dist/components/blocks/list/ListItemBlock.svelte +99 -144
- package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +3 -0
- package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
- package/dist/components/blocks/list/task-checkbox.js +12 -7
- package/dist/components/blocks/plain-text-backend.d.ts +4 -20
- package/dist/components/blocks/plain-text-backend.js +9 -43
- package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
- package/dist/components/blocks/surface-wiring.svelte.js +15 -34
- package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
- package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
- package/dist/components/blocks/table/TableBlock.svelte +100 -165
- package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
- package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
- package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
- package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
- package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
- package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
- package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
- package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
- package/dist/components/blocks/table/cell-pointer.js +49 -71
- package/dist/components/blocks/table/cell-render.d.ts +24 -29
- package/dist/components/blocks/table/cell-render.js +29 -31
- package/dist/components/blocks/table/selected-cells.d.ts +7 -7
- package/dist/components/blocks/table/selected-cells.js +9 -13
- package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
- package/dist/components/blocks/table/table-caret-at-point.js +5 -5
- package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
- package/dist/components/blocks/table/table-cell-paste.js +27 -43
- package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
- package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
- package/dist/components/blocks/table/table-menu-model.js +6 -10
- package/dist/components/blocks/table/table-navigation.js +2 -2
- package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
- package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
- package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
- package/dist/components/blocks/text/auto-pair-record.js +51 -0
- package/dist/components/blocks/text/click-snap-guard.d.ts +9 -4
- package/dist/components/blocks/text/click-snap-guard.js +16 -5
- package/dist/components/blocks/text/composition-seat.d.ts +17 -14
- package/dist/components/blocks/text/composition-seat.js +11 -11
- package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
- package/dist/components/blocks/text/construct-edge-delete.js +50 -65
- package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
- package/dist/components/blocks/text/construct-reveal.js +13 -14
- package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
- package/dist/components/blocks/text/delimiter-autopair.js +87 -103
- package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
- package/dist/components/blocks/text/edge-policy-dispatch.js +164 -180
- package/dist/components/blocks/text/edge-seat.d.ts +17 -26
- package/dist/components/blocks/text/edge-seat.js +43 -70
- package/dist/components/blocks/text/link-at-point.d.ts +9 -9
- package/dist/components/blocks/text/link-at-point.js +12 -15
- package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
- package/dist/components/blocks/text/live-join-seam.js +75 -112
- package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
- package/dist/components/blocks/text/live-selection-edit.js +32 -105
- package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
- package/dist/components/blocks/text/live-split-rebalance.js +50 -67
- package/dist/components/blocks/text/marker-completion.d.ts +7 -12
- package/dist/components/blocks/text/marker-completion.js +17 -10
- package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
- package/dist/components/blocks/text/pending-mark-insert.js +30 -49
- package/dist/components/blocks/text/screen-diff.d.ts +5 -15
- package/dist/components/blocks/text/screen-diff.js +5 -19
- package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
- package/dist/components/blocks/text/text-clipboard.js +27 -32
- package/dist/components/blocks/text/text-keydown.d.ts +20 -30
- package/dist/components/blocks/text/text-keydown.js +54 -51
- package/dist/components/blocks/text/text-render.d.ts +25 -35
- package/dist/components/blocks/text/text-render.js +82 -61
- package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
- package/dist/components/blocks/text/widget-adjacency.js +17 -17
- package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
- package/dist/components/blocks/text/widget-interaction.js +243 -208
- package/dist/components/blocks/widget-portal.d.ts +20 -29
- package/dist/components/blocks/widget-portal.js +16 -14
- package/dist/components/built-in-blocks.d.ts +3 -4
- package/dist/components/built-in-blocks.js +17 -18
- package/dist/components/drag-handle.d.ts +13 -30
- package/dist/components/drag-handle.js +25 -63
- package/dist/components/editor-built-ins.d.ts +1 -0
- package/dist/components/editor-built-ins.js +16 -0
- package/dist/components/editor-root-clipboard.d.ts +6 -6
- package/dist/components/editor-root-clipboard.js +16 -27
- package/dist/components/editor-root-document-swap.d.ts +49 -0
- package/dist/components/editor-root-document-swap.js +54 -0
- package/dist/components/editor-root-focus.d.ts +5 -4
- package/dist/components/editor-root-focus.js +51 -22
- package/dist/components/editor-root-focused-surface.d.ts +35 -0
- package/dist/components/editor-root-focused-surface.js +65 -0
- package/dist/components/editor-root-geometry.d.ts +15 -24
- package/dist/components/editor-root-geometry.js +27 -31
- package/dist/components/editor-root-gestures.d.ts +39 -0
- package/dist/components/editor-root-gestures.js +189 -0
- package/dist/components/editor-root-keydown.d.ts +10 -25
- package/dist/components/editor-root-keydown.js +19 -43
- package/dist/components/editor-root-listeners.d.ts +22 -31
- package/dist/components/editor-root-listeners.js +49 -46
- package/dist/components/editor-root-menus.d.ts +51 -0
- package/dist/components/editor-root-menus.js +147 -0
- package/dist/components/editor-root-mode-flip.d.ts +16 -11
- package/dist/components/editor-root-mode-flip.js +36 -34
- package/dist/components/editor-root-scroll-host.d.ts +22 -0
- package/dist/components/editor-root-scroll-host.js +34 -0
- package/dist/components/editor-root-test-surface.d.ts +48 -0
- package/dist/components/editor-root-test-surface.js +6 -0
- package/dist/components/image/ImageOverlayHost.svelte +44 -35
- package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
- package/dist/components/image/ImageProperties.svelte +37 -41
- package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
- package/dist/components/image/ImageResizeHandles.svelte +26 -30
- package/dist/components/image/image-crop.d.ts +5 -11
- package/dist/components/image/image-crop.js +5 -11
- package/dist/components/image/image-edit-commit.d.ts +19 -16
- package/dist/components/image/image-edit-commit.js +74 -38
- package/dist/components/image/image-resize.d.ts +2 -5
- package/dist/components/image/image-resize.js +3 -6
- package/dist/components/image/image-widget-editing.d.ts +3 -3
- package/dist/components/image/image-widget-editing.js +9 -9
- package/dist/components/image/widget-dom.d.ts +2 -3
- package/dist/components/image/widget-dom.js +19 -24
- package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
- package/dist/components/image/widget-selection-state.svelte.js +26 -19
- package/dist/components/kind-cue.svelte.d.ts +21 -0
- package/dist/components/kind-cue.svelte.js +35 -0
- package/dist/components/link-card/LinkCard.svelte +115 -64
- package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
- package/dist/components/link-card/LinkCardHost.svelte +42 -33
- package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
- package/dist/components/link-card/link-card-commit.d.ts +16 -19
- package/dist/components/link-card/link-card-commit.js +21 -30
- package/dist/components/link-card/link-card-entry.d.ts +13 -23
- package/dist/components/link-card/link-card-entry.js +16 -24
- package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
- package/dist/components/link-card/link-card-state.svelte.js +2 -2
- package/dist/components/lrd-map-gate.d.ts +4 -11
- package/dist/components/lrd-map-gate.js +5 -11
- package/dist/components/menu/BlockMenu.svelte +20 -81
- package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
- package/dist/components/menu/InlineMenuHost.svelte +191 -0
- package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
- package/dist/components/menu/MenuIcon.svelte +3 -103
- package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
- package/dist/components/menu/SelectionToolbar.svelte +380 -0
- package/dist/components/menu/SelectionToolbar.svelte.d.ts +14 -0
- package/dist/components/menu/clipboard-actions.d.ts +3 -4
- package/dist/components/menu/clipboard-actions.js +3 -4
- package/dist/components/menu/default-context-actions.d.ts +4 -13
- package/dist/components/menu/default-context-actions.js +49 -67
- package/dist/components/menu/flyout-placement.d.ts +2 -2
- package/dist/components/menu/flyout-placement.js +2 -2
- package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
- package/dist/components/menu/menu-presence.svelte.js +19 -0
- package/dist/components/paste-image-arm.d.ts +6 -11
- package/dist/components/paste-image-arm.js +11 -18
- package/dist/components/portal.d.ts +2 -5
- package/dist/components/portal.js +4 -7
- package/dist/core/directive/activate.d.ts +4 -5
- package/dist/core/directive/activate.js +8 -9
- package/dist/core/directive/container-opener.js +13 -12
- package/dist/core/directive/grammar.d.ts +2 -5
- package/dist/core/directive/grammar.js +10 -10
- package/dist/core/directive/kinds.d.ts +4 -7
- package/dist/core/directive/kinds.js +14 -16
- package/dist/core/directive/registry.d.ts +12 -9
- package/dist/core/directive/registry.js +19 -20
- package/dist/core/directive/text-recognizer.d.ts +3 -2
- package/dist/core/directive/text-recognizer.js +5 -9
- package/dist/core/escapable.d.ts +1 -5
- package/dist/core/escapable.js +1 -5
- package/dist/core/inline/backticks.d.ts +3 -4
- package/dist/core/inline/backticks.js +3 -4
- package/dist/core/inline/character-refs.js +2 -1
- package/dist/core/inline/destination-bytes.d.ts +6 -3
- package/dist/core/inline/destination-bytes.js +50 -8
- package/dist/core/inline/entity-widget.d.ts +4 -3
- package/dist/core/inline/entity-widget.js +6 -6
- package/dist/core/inline/format-toggle.d.ts +22 -28
- package/dist/core/inline/format-toggle.js +97 -129
- package/dist/core/inline/html-entities.d.ts +2 -3
- package/dist/core/inline/html-entities.js +2 -3
- package/dist/core/inline/html-tag-grammar.js +6 -2
- package/dist/core/inline/image-dimensions.d.ts +2 -0
- package/dist/core/inline/image-dimensions.js +19 -2
- package/dist/core/inline/image-source-bytes.d.ts +11 -0
- package/dist/core/inline/image-source-bytes.js +71 -0
- package/dist/core/inline/index.d.ts +28 -21
- package/dist/core/inline/index.js +56 -34
- package/dist/core/inline/inline-cache.d.ts +12 -15
- package/dist/core/inline/inline-cache.js +11 -14
- package/dist/core/inline/inline-widgets.d.ts +55 -68
- package/dist/core/inline/inline-widgets.js +55 -58
- package/dist/core/inline/link-destination.d.ts +31 -0
- package/dist/core/inline/link-destination.js +129 -0
- package/dist/core/inline/link-reference-resolver.d.ts +8 -6
- package/dist/core/inline/link-reference-resolver.js +10 -6
- package/dist/core/inline/link-source-bytes.d.ts +31 -0
- package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
- package/dist/core/inline/live-edit/read-back.d.ts +29 -0
- package/dist/core/inline/live-edit/read-back.js +50 -0
- package/dist/core/inline/picture.d.ts +10 -0
- package/dist/core/inline/picture.js +40 -0
- package/dist/core/inline/scan/autolinks.d.ts +7 -8
- package/dist/core/inline/scan/autolinks.js +80 -59
- package/dist/core/inline/scan/brackets.d.ts +2 -2
- package/dist/core/inline/scan/brackets.js +6 -103
- package/dist/core/inline/scan/code-spans.d.ts +4 -0
- package/dist/core/inline/scan/code-spans.js +8 -0
- package/dist/core/inline/scan/emphasis.js +10 -14
- package/dist/core/inline/scan/index.d.ts +3 -1
- package/dist/core/inline/scan/index.js +32 -33
- package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
- package/dist/core/inline/scan/plugin-syntax.js +75 -89
- package/dist/core/inline/scan/scan-state.d.ts +2 -0
- package/dist/core/inline/scan/scan-state.js +1 -0
- package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
- package/dist/core/inline/scan/simple-nodes.js +2 -5
- package/dist/core/inline/scan/triggers.d.ts +17 -0
- package/dist/core/inline/scan/triggers.js +26 -0
- package/dist/core/inline/scan/url.js +8 -10
- package/dist/core/inline/transparency.d.ts +2 -1
- package/dist/core/inline/transparency.js +33 -17
- package/dist/core/inline/visibility.d.ts +30 -49
- package/dist/core/inline/visibility.js +31 -49
- package/dist/core/inline/walk.d.ts +4 -10
- package/dist/core/inline/walk.js +4 -10
- package/dist/core/inline-render.d.ts +22 -27
- package/dist/core/inline-render.js +51 -60
- package/dist/core/lines.d.ts +67 -26
- package/dist/core/lines.js +164 -33
- package/dist/core/metadata-parity.d.ts +9 -0
- package/dist/core/metadata-parity.js +25 -0
- package/dist/core/node-views.d.ts +7 -6
- package/dist/core/node-views.js +5 -5
- package/dist/core/nodes.d.ts +34 -44
- package/dist/core/nodes.js +4 -12
- package/dist/core/parser.d.ts +27 -34
- package/dist/core/parser.js +53 -67
- package/dist/core/parsers/blockquote.d.ts +5 -8
- package/dist/core/parsers/blockquote.js +11 -10
- package/dist/core/parsers/built-in-openers.d.ts +2 -5
- package/dist/core/parsers/built-in-openers.js +5 -8
- package/dist/core/parsers/fence-syntax.d.ts +36 -7
- package/dist/core/parsers/fence-syntax.js +61 -11
- package/dist/core/parsers/fenced-code.d.ts +16 -0
- package/dist/core/parsers/fenced-code.js +16 -15
- package/dist/core/parsers/heading.d.ts +19 -2
- package/dist/core/parsers/heading.js +50 -2
- package/dist/core/parsers/html-block.d.ts +3 -6
- package/dist/core/parsers/html-block.js +10 -11
- package/dist/core/parsers/indented-code.d.ts +1 -1
- package/dist/core/parsers/indented-code.js +2 -8
- package/dist/core/parsers/link-reference.d.ts +5 -3
- package/dist/core/parsers/link-reference.js +116 -120
- package/dist/core/parsers/list.d.ts +12 -5
- package/dist/core/parsers/list.js +53 -36
- package/dist/core/parsers/paragraph.d.ts +3 -3
- package/dist/core/parsers/paragraph.js +14 -5
- package/dist/core/parsers/table-completion.d.ts +2 -5
- package/dist/core/parsers/table-completion.js +7 -10
- package/dist/core/parsers/table.d.ts +8 -8
- package/dist/core/parsers/table.js +23 -26
- package/dist/core/parsers/thematic-break.js +15 -14
- package/dist/core/paths.d.ts +13 -0
- package/dist/core/paths.js +31 -0
- package/dist/core/terminator-escalation.d.ts +0 -7
- package/dist/core/terminator-escalation.js +5 -8
- package/dist/core/url-policy.d.ts +2 -5
- package/dist/core/url-policy.js +8 -12
- package/dist/cursor/caret-memory.d.ts +34 -0
- package/dist/cursor/caret-memory.js +82 -0
- package/dist/cursor/coordinate-spaces.d.ts +26 -19
- package/dist/cursor/coordinate-spaces.js +32 -20
- package/dist/cursor/dom-walk.d.ts +7 -13
- package/dist/cursor/dom-walk.js +7 -13
- package/dist/cursor/edge-affinity.d.ts +7 -35
- package/dist/cursor/edge-affinity.js +13 -44
- package/dist/cursor/focused-caret.d.ts +6 -8
- package/dist/cursor/focused-caret.js +7 -16
- package/dist/cursor/height-model.d.ts +3 -3
- package/dist/cursor/height-model.js +5 -5
- package/dist/cursor/height-oracle.d.ts +10 -7
- package/dist/cursor/height-oracle.js +26 -75
- package/dist/cursor/observe-resize.d.ts +13 -0
- package/dist/cursor/observe-resize.js +43 -0
- package/dist/cursor/overlay-rects.d.ts +2 -5
- package/dist/cursor/overlay-rects.js +2 -5
- package/dist/cursor/overlay-remeasure.d.ts +6 -7
- package/dist/cursor/overlay-remeasure.js +10 -14
- package/dist/cursor/pending-marks.d.ts +7 -9
- package/dist/cursor/pending-marks.js +6 -27
- package/dist/cursor/point-offset.d.ts +16 -10
- package/dist/cursor/point-offset.js +60 -25
- package/dist/cursor/reveal-source.d.ts +7 -11
- package/dist/cursor/reveal-source.js +10 -18
- package/dist/cursor/scroll-ancestors.d.ts +9 -20
- package/dist/cursor/scroll-ancestors.js +14 -26
- package/dist/cursor/scroll-owner.d.ts +92 -0
- package/dist/cursor/scroll-owner.js +283 -0
- package/dist/cursor/scrollport.d.ts +16 -8
- package/dist/cursor/scrollport.js +28 -5
- package/dist/cursor/sticky-column.d.ts +6 -29
- package/dist/cursor/sticky-column.js +6 -49
- package/dist/cursor/sticky-measure.d.ts +14 -9
- package/dist/cursor/sticky-measure.js +99 -49
- package/dist/cursor/surface-backend.d.ts +41 -0
- package/dist/cursor/surface-backend.js +78 -0
- package/dist/cursor/typography-estimates.d.ts +3 -3
- package/dist/cursor/typography-estimates.js +3 -3
- package/dist/cursor/visual-lines.d.ts +25 -13
- package/dist/cursor/visual-lines.js +72 -28
- package/dist/cursor/widget-edge-snap.d.ts +23 -0
- package/dist/cursor/widget-edge-snap.js +39 -0
- package/dist/cursor/widget-offset.d.ts +111 -102
- package/dist/cursor/widget-offset.js +352 -177
- package/dist/debug/diagnostics-report.d.ts +6 -6
- package/dist/debug/diagnostics-report.js +5 -5
- package/dist/debug/dump-tree.js +2 -2
- package/dist/debug/editor-diagnostics.d.ts +15 -0
- package/dist/debug/editor-diagnostics.js +33 -0
- package/dist/debug/inspect.d.ts +2 -2
- package/dist/debug/inspect.js +4 -4
- package/dist/debug/interaction-trace.d.ts +14 -15
- package/dist/debug/interaction-trace.js +19 -20
- package/dist/debug/operations-log.d.ts +1 -1
- package/dist/debug/operations-log.js +1 -1
- package/dist/decorations/buckets.d.ts +6 -12
- package/dist/decorations/buckets.js +4 -11
- package/dist/decorations/decoration-state.svelte.d.ts +2 -3
- package/dist/decorations/decoration-state.svelte.js +24 -26
- package/dist/decorations/island-dom.d.ts +10 -18
- package/dist/decorations/island-dom.js +25 -50
- package/dist/decorations/reserved-attrs.d.ts +6 -8
- package/dist/decorations/reserved-attrs.js +31 -17
- package/dist/decorations/types.d.ts +6 -7
- package/dist/decorations/types.js +2 -1
- package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
- package/dist/decorations/use-block-decorations.svelte.js +71 -0
- package/dist/decorations/widget-dom.d.ts +3 -3
- package/dist/decorations/widget-dom.js +5 -5
- package/dist/dev-warn.d.ts +5 -2
- package/dist/dev-warn.js +16 -4
- package/dist/editor-actions/ancestry-folds.d.ts +9 -14
- package/dist/editor-actions/ancestry-folds.js +13 -18
- package/dist/editor-actions/block-edit-core.d.ts +49 -22
- package/dist/editor-actions/block-edit-core.js +279 -151
- package/dist/editor-actions/block-edit-scope.d.ts +63 -50
- package/dist/editor-actions/block-edit-scope.js +100 -48
- package/dist/editor-actions/block-edit.d.ts +2 -3
- package/dist/editor-actions/block-edit.js +14 -90
- package/dist/editor-actions/commit/history.d.ts +4 -4
- package/dist/editor-actions/commit/history.js +33 -34
- package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
- package/dist/editor-actions/commit/reading-write-gate.js +56 -0
- package/dist/editor-actions/commit/text-batch.d.ts +7 -11
- package/dist/editor-actions/commit/text-batch.js +6 -7
- package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
- package/dist/editor-actions/commit/undo-controller.js +346 -216
- package/dist/editor-actions/container-block-component.d.ts +32 -51
- package/dist/editor-actions/container-block-component.js +66 -92
- package/dist/editor-actions/container-edit.d.ts +4 -2
- package/dist/editor-actions/container-edit.js +14 -44
- package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
- package/dist/editor-actions/container-exit-overrides.js +19 -21
- package/dist/editor-actions/deps.d.ts +25 -32
- package/dist/editor-actions/enter-completion.d.ts +12 -15
- package/dist/editor-actions/enter-completion.js +49 -51
- package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
- package/dist/editor-actions/focus/focus-dispatch.js +33 -52
- package/dist/editor-actions/focus/focus-landing.d.ts +11 -5
- package/dist/editor-actions/focus/focus-landing.js +29 -14
- package/dist/editor-actions/focus/focus.d.ts +3 -2
- package/dist/editor-actions/focus/focus.js +42 -59
- package/dist/editor-actions/index.d.ts +4 -3
- package/dist/editor-actions/index.js +5 -4
- package/dist/editor-actions/inline-range-commit.d.ts +18 -16
- package/dist/editor-actions/inline-range-commit.js +45 -54
- package/dist/editor-actions/leaf-write.d.ts +11 -0
- package/dist/editor-actions/leaf-write.js +102 -0
- package/dist/editor-actions/list-context.d.ts +9 -10
- package/dist/editor-actions/list-context.js +115 -110
- package/dist/editor-actions/list-overrides.d.ts +13 -5
- package/dist/editor-actions/list-overrides.js +36 -12
- package/dist/editor-actions/merge-fallback.d.ts +10 -16
- package/dist/editor-actions/merge-fallback.js +11 -22
- package/dist/editor-actions/nested/container-actions.d.ts +37 -0
- package/dist/editor-actions/nested/container-actions.js +42 -0
- package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
- package/dist/editor-actions/nested/emptied-container.js +5 -0
- package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
- package/dist/editor-actions/nested/nested-actions.js +17 -15
- package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
- package/dist/editor-actions/nested/nested-block-edit.js +40 -134
- package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
- package/dist/editor-actions/nested/nested-focus.js +33 -21
- package/dist/editor-actions/paste-coordinator.d.ts +3 -2
- package/dist/editor-actions/paste-coordinator.js +17 -13
- package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
- package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
- package/dist/editor-actions/plugin/container.d.ts +55 -76
- package/dist/editor-actions/plugin/container.js +105 -186
- package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
- package/dist/editor-actions/plugin/directive-container.js +7 -8
- package/dist/editor-actions/reorder-action.d.ts +7 -12
- package/dist/editor-actions/reorder-action.js +32 -48
- package/dist/editor-actions/reorder-drag.d.ts +12 -8
- package/dist/editor-actions/reorder-drag.js +45 -41
- package/dist/editor-actions/replacement-focus.d.ts +13 -21
- package/dist/editor-actions/replacement-focus.js +32 -33
- package/dist/editor-actions/search-replace.js +71 -67
- package/dist/editor-actions/stored-caret.d.ts +7 -0
- package/dist/editor-actions/stored-caret.js +10 -0
- package/dist/editor-actions/table-context.d.ts +9 -11
- package/dist/editor-actions/table-context.js +70 -93
- package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
- package/dist/editor-actions/unwrap-strategies.js +52 -63
- package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
- package/dist/editor-actions/whole-block-focus-surface.js +43 -53
- package/dist/editor-events.d.ts +25 -29
- package/dist/editor-events.js +17 -28
- package/dist/editor-keys.d.ts +96 -104
- package/dist/editor-keys.js +11 -24
- package/dist/editor-props.d.ts +91 -71
- package/dist/editor-rects.d.ts +23 -34
- package/dist/editor-rects.js +9 -77
- package/dist/env.d.ts +6 -4
- package/dist/env.js +8 -4
- package/dist/index.d.ts +6 -2
- package/dist/index.js +5 -2
- package/dist/inline-menu/inline-menu-session.d.ts +37 -0
- package/dist/inline-menu/inline-menu-session.js +98 -0
- package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
- package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
- package/dist/inline-menu/types.d.ts +77 -0
- package/dist/inline-menu/types.js +7 -0
- package/dist/invariants/child-id-parity.d.ts +23 -0
- package/dist/invariants/child-id-parity.js +39 -0
- package/dist/invariants/commit-paths.d.ts +4 -4
- package/dist/invariants/commit-paths.js +4 -4
- package/dist/invariants/commit-scope.d.ts +4 -4
- package/dist/invariants/commit-scope.js +9 -8
- package/dist/invariants/context-keys.d.ts +2 -5
- package/dist/invariants/context-keys.js +3 -6
- package/dist/invariants/descriptor.d.ts +2 -6
- package/dist/invariants/descriptor.js +2 -6
- package/dist/invariants/inline-transitions.d.ts +9 -16
- package/dist/invariants/inline-transitions.js +10 -18
- package/dist/invariants/install.d.ts +18 -27
- package/dist/invariants/install.js +29 -30
- package/dist/invariants/keeps-a-block.d.ts +7 -0
- package/dist/invariants/keeps-a-block.js +14 -0
- package/dist/invariants/landable-caret.d.ts +5 -7
- package/dist/invariants/landable-caret.js +8 -11
- package/dist/invariants/landing-focus-scroll.d.ts +7 -0
- package/dist/invariants/landing-focus-scroll.js +13 -0
- package/dist/invariants/landing-value.d.ts +13 -0
- package/dist/invariants/landing-value.js +27 -0
- package/dist/invariants/marker-css-parity.d.ts +5 -6
- package/dist/invariants/marker-css-parity.js +11 -12
- package/dist/invariants/measures-in-own-list.d.ts +6 -0
- package/dist/invariants/measures-in-own-list.js +13 -0
- package/dist/invariants/node-shape.d.ts +18 -37
- package/dist/invariants/node-shape.js +123 -79
- package/dist/invariants/open-tail.d.ts +7 -0
- package/dist/invariants/open-tail.js +45 -0
- package/dist/invariants/placement-ends-widget.d.ts +8 -0
- package/dist/invariants/placement-ends-widget.js +13 -0
- package/dist/invariants/registry.d.ts +27 -66
- package/dist/invariants/registry.js +61 -137
- package/dist/invariants/render-fidelity.d.ts +4 -4
- package/dist/invariants/render-fidelity.js +5 -5
- package/dist/invariants/selection-endpoints.d.ts +6 -7
- package/dist/invariants/selection-endpoints.js +18 -16
- package/dist/invariants/single-node-sink.d.ts +4 -5
- package/dist/invariants/single-node-sink.js +4 -5
- package/dist/invariants/snapshot-integrity.d.ts +5 -6
- package/dist/invariants/snapshot-integrity.js +1 -1
- package/dist/invariants/structural-descriptor.d.ts +6 -15
- package/dist/invariants/structural-descriptor.js +6 -15
- package/dist/menu-icons.d.ts +47 -0
- package/dist/menu-icons.js +113 -0
- package/dist/perf/instruments.d.ts +20 -5
- package/dist/perf/instruments.js +35 -15
- package/dist/perf/use-mount-gauge.svelte.js +4 -4
- package/dist/plugin.d.ts +38 -8
- package/dist/plugin.js +102 -74
- package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
- package/dist/plugins/admonitions/admonition-kind.js +12 -10
- package/dist/plugins/admonitions/convert-document.d.ts +5 -5
- package/dist/plugins/admonitions/convert-document.js +8 -7
- package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
- package/dist/plugins/admonitions/gh-alert.js +21 -22
- package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
- package/dist/plugins/admonitions/github-alert-kind.js +28 -37
- package/dist/plugins/admonitions/index.js +2 -2
- package/dist/plugins/admonitions/kinds.d.ts +1 -1
- package/dist/plugins/admonitions/register.js +11 -2
- package/dist/plugins/details/DetailsBlock.svelte +20 -20
- package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
- package/dist/plugins/details/details-disclosure.svelte.js +6 -7
- package/dist/plugins/details/details-kind.d.ts +6 -7
- package/dist/plugins/details/details-kind.js +44 -59
- package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
- package/dist/plugins/emoji/emoji-recognizer.js +7 -14
- package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
- package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
- package/dist/plugins/footnotes/constants.d.ts +2 -0
- package/dist/plugins/footnotes/constants.js +3 -0
- package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
- package/dist/plugins/footnotes/footnote-definition.js +69 -45
- package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
- package/dist/plugins/footnotes/footnote-lookup.js +14 -26
- package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
- package/dist/plugins/footnotes/footnote-numbering.js +22 -31
- package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
- package/dist/plugins/footnotes/footnote-reference.js +8 -13
- package/dist/plugins/footnotes/index.js +2 -3
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
- package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
- package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
- package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
- package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
- package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
- package/dist/plugins/highlight-occurrences/word-char.js +4 -0
- package/dist/plugins/latex/BlockMath.svelte +58 -75
- package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
- package/dist/plugins/latex/MathInline.svelte +10 -9
- package/dist/plugins/latex/flanking.d.ts +1 -0
- package/dist/plugins/latex/flanking.js +3 -0
- package/dist/plugins/latex/index.d.ts +1 -1
- package/dist/plugins/latex/latex-kind.d.ts +4 -4
- package/dist/plugins/latex/latex-kind.js +113 -85
- package/dist/plugins/latex/math-completion.d.ts +1 -1
- package/dist/plugins/latex/math-completion.js +5 -8
- package/dist/plugins/latex/math-layout.d.ts +2 -8
- package/dist/plugins/latex/math-layout.js +0 -9
- package/dist/plugins/latex/math-renderer.d.ts +17 -20
- package/dist/plugins/latex/math-renderer.js +21 -38
- package/dist/plugins/latex/math-source.d.ts +4 -8
- package/dist/plugins/latex/math-source.js +36 -75
- package/dist/plugins/latex/register.d.ts +10 -11
- package/dist/plugins/latex/register.js +24 -10
- package/dist/plugins/latex/renderer.d.ts +9 -10
- package/dist/plugins/latex/renderer.js +9 -24
- package/dist/plugins/mermaid/MermaidBlock.svelte +63 -47
- package/dist/plugins/mermaid/index.js +1 -1
- package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
- package/dist/plugins/mermaid/mermaid-kind.js +30 -47
- package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
- package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
- package/dist/plugins/mermaid/register.d.ts +3 -3
- package/dist/plugins/mermaid/register.js +5 -5
- package/dist/plugins/mermaid/renderer.d.ts +5 -5
- package/dist/plugins/mermaid/renderer.js +8 -11
- package/dist/plugins/parrot/ParrotBlock.svelte +18 -7
- package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
- package/dist/plugins/parrot/parrot-plugin.js +3 -3
- package/dist/plugins/slash-commands/filter.d.ts +23 -0
- package/dist/plugins/slash-commands/filter.js +31 -0
- package/dist/plugins/slash-commands/index.d.ts +2 -0
- package/dist/plugins/slash-commands/index.js +2 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
- package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
- package/dist/plugins/slash-commands/slash-source.js +108 -0
- package/dist/plugins/toc/TocBlock.svelte +23 -22
- package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
- package/dist/plugins/toc/heading-outline.d.ts +7 -12
- package/dist/plugins/toc/heading-outline.js +22 -36
- package/dist/plugins/toc/navigation-queue.d.ts +2 -4
- package/dist/plugins/toc/toc-plugin.d.ts +5 -5
- package/dist/plugins/toc/toc-plugin.js +20 -13
- package/dist/presentation-mode.d.ts +15 -23
- package/dist/presentation-mode.js +19 -25
- package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
- package/dist/reactivity/block-list-state.svelte.js +8 -9
- package/dist/reactivity/block-window.svelte.d.ts +12 -6
- package/dist/reactivity/block-window.svelte.js +44 -17
- package/dist/reactivity/child-list.d.ts +34 -0
- package/dist/reactivity/child-list.js +48 -0
- package/dist/reactivity/content-version.svelte.d.ts +4 -7
- package/dist/reactivity/content-version.svelte.js +3 -5
- package/dist/reactivity/hold-across.d.ts +39 -0
- package/dist/reactivity/hold-across.js +57 -0
- package/dist/reactivity/layout-state.svelte.d.ts +27 -0
- package/dist/reactivity/layout-state.svelte.js +51 -0
- package/dist/reactivity/list-tree.d.ts +39 -0
- package/dist/reactivity/list-tree.js +132 -0
- package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
- package/dist/reactivity/list-windowing.svelte.js +143 -292
- package/dist/reactivity/measure-batch.d.ts +6 -8
- package/dist/reactivity/measure-batch.js +5 -6
- package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
- package/dist/reactivity/publish-ref.svelte.js +21 -85
- package/dist/reactivity/scope-geometry.d.ts +6 -13
- package/dist/reactivity/scope-geometry.js +7 -14
- package/dist/reactivity/state-registry.d.ts +5 -5
- package/dist/reactivity/state-registry.js +11 -15
- package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
- package/dist/reactivity/use-container-windowing.svelte.js +64 -74
- package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
- package/dist/reactivity/use-measured-child.svelte.js +41 -0
- package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
- package/dist/reactivity/use-window-floor.svelte.js +27 -0
- package/dist/reactivity/window-slice.d.ts +4 -4
- package/dist/reactivity/window-slice.js +0 -2
- package/dist/renderer-slot.d.ts +48 -0
- package/dist/renderer-slot.js +85 -0
- package/dist/scan-index.d.ts +4 -4
- package/dist/scan-index.js +4 -4
- package/dist/schema/block-commands.d.ts +69 -54
- package/dist/schema/block-commands.js +91 -104
- package/dist/schema/block-completions.d.ts +16 -19
- package/dist/schema/block-completions.js +25 -32
- package/dist/schema/block-component-registry.d.ts +13 -14
- package/dist/schema/block-component-registry.js +19 -17
- package/dist/schema/block-kind-descriptor.d.ts +234 -168
- package/dist/schema/block-kind-descriptor.js +151 -66
- package/dist/schema/block-openers.d.ts +48 -39
- package/dist/schema/block-openers.js +73 -83
- package/dist/schema/built-in-descriptors.d.ts +3 -5
- package/dist/schema/built-in-descriptors.js +96 -80
- package/dist/schema/child-spans.d.ts +12 -10
- package/dist/schema/child-spans.js +68 -34
- package/dist/schema/closure.d.ts +18 -16
- package/dist/schema/closure.js +24 -14
- package/dist/schema/command-id.d.ts +6 -8
- package/dist/schema/command-id.js +20 -25
- package/dist/schema/commands.d.ts +79 -81
- package/dist/schema/commands.js +156 -116
- package/dist/schema/container-raw.d.ts +51 -11
- package/dist/schema/container-raw.js +143 -14
- package/dist/schema/container-rebuilders.d.ts +17 -15
- package/dist/schema/container-rebuilders.js +30 -22
- package/dist/schema/context-actions.d.ts +25 -13
- package/dist/schema/context-actions.js +32 -17
- package/dist/schema/define-plugin-block.d.ts +8 -6
- package/dist/schema/define-plugin-block.js +6 -4
- package/dist/schema/fenced-code-raw.d.ts +30 -17
- package/dist/schema/fenced-code-raw.js +155 -107
- package/dist/schema/global-commands.d.ts +6 -6
- package/dist/schema/global-commands.js +14 -22
- package/dist/schema/height-estimates.d.ts +31 -0
- package/dist/schema/height-estimates.js +64 -0
- package/dist/schema/inline-construct-policy.d.ts +42 -55
- package/dist/schema/inline-construct-policy.js +36 -35
- package/dist/schema/insert-catalogue.d.ts +30 -0
- package/dist/schema/insert-catalogue.js +95 -0
- package/dist/schema/keybinding-overrides.d.ts +9 -11
- package/dist/schema/keybinding-overrides.js +1 -1
- package/dist/schema/keybindings.d.ts +15 -7
- package/dist/schema/keybindings.js +21 -9
- package/dist/schema/merge-rules.d.ts +5 -7
- package/dist/schema/merge-rules.js +7 -9
- package/dist/schema/opener-priorities.d.ts +4 -4
- package/dist/schema/opener-priorities.js +4 -4
- package/dist/schema/operations.d.ts +9 -11
- package/dist/schema/operations.js +3 -3
- package/dist/schema/page-role.d.ts +14 -0
- package/dist/schema/page-role.js +19 -0
- package/dist/schema/plugin-activation.d.ts +4 -6
- package/dist/schema/plugin-activation.js +12 -10
- package/dist/schema/plugin-editor-context.d.ts +25 -10
- package/dist/schema/plugin-editor-context.js +40 -9
- package/dist/schema/plugin-install.d.ts +49 -17
- package/dist/schema/plugin-install.js +51 -25
- package/dist/schema/plugin-kind.d.ts +12 -8
- package/dist/schema/plugin-kind.js +35 -42
- package/dist/schema/plugin-name.js +3 -3
- package/dist/schema/plugin-registry.d.ts +54 -0
- package/dist/schema/plugin-registry.js +70 -0
- package/dist/schema/reading.d.ts +23 -0
- package/dist/schema/reading.js +7 -0
- package/dist/schema/register-once.d.ts +3 -5
- package/dist/schema/register-once.js +7 -16
- package/dist/schema/registration-checks.d.ts +12 -16
- package/dist/schema/registration-checks.js +35 -51
- package/dist/schema/registration-pairs.d.ts +54 -0
- package/dist/schema/registration-pairs.js +48 -0
- package/dist/schema/registration-pending.d.ts +8 -12
- package/dist/schema/registration-pending.js +9 -9
- package/dist/schema/registry-reset.d.ts +8 -4
- package/dist/schema/registry-reset.js +13 -26
- package/dist/schema/registry-view.d.ts +25 -13
- package/dist/schema/registry-view.js +26 -20
- package/dist/schema/reserved-chords.d.ts +9 -10
- package/dist/schema/reserved-chords.js +73 -78
- package/dist/schema/reserved-chrome.d.ts +12 -11
- package/dist/schema/reserved-chrome.js +15 -11
- package/dist/schema/setext-raw.d.ts +13 -0
- package/dist/schema/setext-raw.js +33 -0
- package/dist/schema/stored-as.d.ts +20 -0
- package/dist/schema/stored-as.js +6 -0
- package/dist/schema/table-cell-raw.d.ts +18 -7
- package/dist/schema/table-cell-raw.js +28 -7
- package/dist/schema/whole-block-unit.d.ts +5 -4
- package/dist/schema/whole-block-unit.js +5 -4
- package/dist/search/document-scan.d.ts +3 -3
- package/dist/search/document-scan.js +2 -2
- package/dist/search/matcher.d.ts +1 -1
- package/dist/search/regex-executor.d.ts +5 -6
- package/dist/search/regex-executor.js +6 -8
- package/dist/search/replace.d.ts +2 -5
- package/dist/search/replace.js +2 -5
- package/dist/search/search-state.svelte.d.ts +5 -5
- package/dist/search/search-state.svelte.js +12 -16
- package/dist/selection/autoscroll.d.ts +6 -9
- package/dist/selection/block-hit-test.d.ts +16 -24
- package/dist/selection/block-hit-test.js +29 -22
- package/dist/selection/caret-doors.d.ts +15 -14
- package/dist/selection/caret-doors.js +37 -26
- package/dist/selection/caret-landing.d.ts +62 -0
- package/dist/selection/caret-landing.js +157 -0
- package/dist/selection/caret-restore.d.ts +17 -10
- package/dist/selection/caret-restore.js +10 -22
- package/dist/selection/caret-target.d.ts +30 -0
- package/dist/selection/caret-target.js +84 -0
- package/dist/selection/char-endpoint-snap.d.ts +6 -10
- package/dist/selection/char-endpoint-snap.js +8 -14
- package/dist/selection/clipboard-text.d.ts +5 -12
- package/dist/selection/clipboard-text.js +69 -172
- package/dist/selection/covered-block.d.ts +6 -8
- package/dist/selection/covered-block.js +8 -19
- package/dist/selection/cross-block/clipboard.d.ts +3 -2
- package/dist/selection/cross-block/clipboard.js +13 -4
- package/dist/selection/cross-block/dispatch.d.ts +47 -43
- package/dist/selection/cross-block/dispatch.js +12 -23
- package/dist/selection/cross-block/format-range.d.ts +18 -21
- package/dist/selection/cross-block/format-range.js +104 -103
- package/dist/selection/cross-block/format-toggle.d.ts +10 -15
- package/dist/selection/cross-block/format-toggle.js +28 -33
- package/dist/selection/cross-block/keydown.d.ts +4 -4
- package/dist/selection/cross-block/keydown.js +93 -152
- package/dist/selection/cross-block/ops.d.ts +19 -34
- package/dist/selection/cross-block/ops.js +110 -95
- package/dist/selection/cross-block/paste.d.ts +2 -3
- package/dist/selection/cross-block/paste.js +61 -104
- package/dist/selection/cross-block/pointer.d.ts +17 -15
- package/dist/selection/cross-block/pointer.js +74 -25
- package/dist/selection/cross-block/type-replace.d.ts +4 -6
- package/dist/selection/cross-block/type-replace.js +53 -146
- package/dist/selection/dead-space-caret.d.ts +20 -28
- package/dist/selection/dead-space-caret.js +79 -87
- package/dist/selection/drag-pointer.d.ts +22 -5
- package/dist/selection/drag-pointer.js +63 -31
- package/dist/selection/gap-caret.d.ts +17 -28
- package/dist/selection/gap-caret.js +14 -26
- package/dist/selection/grid-selection.d.ts +12 -0
- package/dist/selection/grid-selection.js +22 -0
- package/dist/selection/keyboard-extend.d.ts +27 -39
- package/dist/selection/keyboard-extend.js +94 -116
- package/dist/selection/multi-click.d.ts +37 -0
- package/dist/selection/multi-click.js +197 -0
- package/dist/selection/native-bridge.d.ts +30 -37
- package/dist/selection/native-bridge.js +80 -100
- package/dist/selection/nearest-block.d.ts +17 -12
- package/dist/selection/nearest-block.js +37 -18
- package/dist/selection/path-lookup.d.ts +31 -14
- package/dist/selection/path-lookup.js +110 -20
- package/dist/selection/path-math.d.ts +9 -11
- package/dist/selection/path-math.js +5 -7
- package/dist/selection/pointer-gesture.d.ts +9 -0
- package/dist/selection/pointer-gesture.js +11 -0
- package/dist/selection/pointer-session.d.ts +10 -16
- package/dist/selection/pointer-session.js +6 -7
- package/dist/selection/primitives.d.ts +64 -33
- package/dist/selection/primitives.js +61 -53
- package/dist/selection/range-coverage.d.ts +94 -0
- package/dist/selection/range-coverage.js +365 -0
- package/dist/selection/range-delete-ceremony.d.ts +28 -74
- package/dist/selection/range-delete-ceremony.js +100 -141
- package/dist/selection/range-delete-chrome.d.ts +20 -33
- package/dist/selection/range-delete-chrome.js +53 -78
- package/dist/selection/range-delete-table-coverage.d.ts +11 -25
- package/dist/selection/range-delete-table-coverage.js +42 -112
- package/dist/selection/range-delete-table.d.ts +14 -12
- package/dist/selection/range-delete-table.js +106 -310
- package/dist/selection/range-delete.d.ts +18 -19
- package/dist/selection/range-delete.js +83 -123
- package/dist/selection/round-trip-restore.d.ts +18 -0
- package/dist/selection/round-trip-restore.js +19 -0
- package/dist/selection/selection-announcer.d.ts +17 -0
- package/dist/selection/selection-announcer.js +25 -0
- package/dist/selection/selection-description.d.ts +4 -3
- package/dist/selection/selection-description.js +5 -4
- package/dist/selection/selection-drop.d.ts +52 -0
- package/dist/selection/selection-drop.js +317 -0
- package/dist/selection/selection-restore.d.ts +20 -33
- package/dist/selection/selection-restore.js +21 -44
- package/dist/selection/selection-state.svelte.d.ts +50 -42
- package/dist/selection/selection-state.svelte.js +144 -98
- package/dist/selection/shared-keydown.d.ts +22 -27
- package/dist/selection/shared-keydown.js +25 -45
- package/dist/selection/table-endpoint-snap.d.ts +17 -41
- package/dist/selection/table-endpoint-snap.js +54 -80
- package/dist/selection/table-rect-extend.d.ts +3 -6
- package/dist/selection/table-rect-extend.js +19 -14
- package/dist/styles/editor-theme.css +75 -53
- package/dist/styles/editor.css +248 -139
- package/dist/testing/conformance-core.d.ts +50 -18
- package/dist/testing/conformance-core.js +88 -50
- package/dist/testing/container-conformance.d.ts +48 -84
- package/dist/testing/container-conformance.js +159 -285
- package/dist/testing/headless-actions.d.ts +34 -19
- package/dist/testing/headless-actions.js +116 -65
- package/dist/testing/headless-block-list.svelte.d.ts +16 -0
- package/dist/testing/headless-block-list.svelte.js +22 -0
- package/dist/testing/inline-conformance.d.ts +15 -22
- package/dist/testing/inline-conformance.js +131 -148
- package/dist/testing/kind-conformance.d.ts +19 -24
- package/dist/testing/kind-conformance.js +204 -117
- package/dist/testing/kit-reading.d.ts +7 -0
- package/dist/testing/kit-reading.js +16 -0
- package/dist/testing/mount-dom-stubs.d.ts +4 -5
- package/dist/testing/mount-dom-stubs.js +8 -5
- package/dist/testing/parse-convergence.d.ts +10 -10
- package/dist/testing/parse-convergence.js +14 -49
- package/dist/testing.d.ts +13 -9
- package/dist/testing.js +28 -38
- package/dist/tree-operations/blockquote.d.ts +8 -14
- package/dist/tree-operations/blockquote.js +25 -45
- package/dist/tree-operations/chain-rebuild.d.ts +34 -25
- package/dist/tree-operations/chain-rebuild.js +115 -52
- package/dist/tree-operations/children.d.ts +5 -9
- package/dist/tree-operations/children.js +7 -11
- package/dist/tree-operations/cleanup.d.ts +6 -7
- package/dist/tree-operations/cleanup.js +14 -11
- package/dist/tree-operations/clone.js +5 -4
- package/dist/tree-operations/container-lift.d.ts +10 -5
- package/dist/tree-operations/container-lift.js +20 -14
- package/dist/tree-operations/container-offsets.d.ts +22 -0
- package/dist/tree-operations/container-offsets.js +89 -0
- package/dist/tree-operations/content-write.d.ts +52 -29
- package/dist/tree-operations/content-write.js +155 -110
- package/dist/tree-operations/index.d.ts +4 -4
- package/dist/tree-operations/index.js +4 -4
- package/dist/tree-operations/keep-one-block.d.ts +10 -0
- package/dist/tree-operations/keep-one-block.js +19 -0
- package/dist/tree-operations/leaf-range.d.ts +33 -0
- package/dist/tree-operations/leaf-range.js +67 -0
- package/dist/tree-operations/list/empty-check.d.ts +2 -3
- package/dist/tree-operations/list/empty-check.js +4 -4
- package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
- package/dist/tree-operations/list/exit-replacement.js +4 -9
- package/dist/tree-operations/list/item-partition.d.ts +2 -2
- package/dist/tree-operations/list/item-partition.js +2 -2
- package/dist/tree-operations/list/list-builders.d.ts +18 -16
- package/dist/tree-operations/list/list-builders.js +59 -30
- package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
- package/dist/tree-operations/list/ordered-markers.js +7 -16
- package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
- package/dist/tree-operations/list/reconcile-task.js +80 -23
- package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
- package/dist/tree-operations/list/sublist-separator.js +20 -27
- package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
- package/dist/tree-operations/list/task-paragraph.js +54 -0
- package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
- package/dist/tree-operations/list/unwrap-merge.js +44 -79
- package/dist/tree-operations/node-ops.d.ts +30 -52
- package/dist/tree-operations/node-ops.js +152 -218
- package/dist/tree-operations/node-primitives.d.ts +44 -31
- package/dist/tree-operations/node-primitives.js +84 -60
- package/dist/tree-operations/open-tail.d.ts +25 -0
- package/dist/tree-operations/open-tail.js +100 -0
- package/dist/tree-operations/parse-block.d.ts +15 -2
- package/dist/tree-operations/parse-block.js +19 -4
- package/dist/tree-operations/paste/apply.d.ts +7 -8
- package/dist/tree-operations/paste/apply.js +33 -63
- package/dist/tree-operations/paste/body-write.d.ts +8 -6
- package/dist/tree-operations/paste/body-write.js +13 -14
- package/dist/tree-operations/paste/container-match.d.ts +7 -10
- package/dist/tree-operations/paste/container-match.js +76 -58
- package/dist/tree-operations/paste/container-paste.d.ts +3 -3
- package/dist/tree-operations/paste/container-paste.js +3 -3
- package/dist/tree-operations/paste/dispatch.d.ts +26 -29
- package/dist/tree-operations/paste/dispatch.js +68 -53
- package/dist/tree-operations/paste/focus-target.d.ts +11 -14
- package/dist/tree-operations/paste/focus-target.js +13 -18
- package/dist/tree-operations/paste/hooks.d.ts +7 -12
- package/dist/tree-operations/paste/hooks.js +49 -46
- package/dist/tree-operations/paste/line-ending.d.ts +11 -0
- package/dist/tree-operations/paste/line-ending.js +32 -0
- package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
- package/dist/tree-operations/paste/list-absorb.js +17 -19
- package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
- package/dist/tree-operations/paste/list-break-out.js +24 -32
- package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
- package/dist/tree-operations/paste/parent-scope.js +9 -16
- package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
- package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
- package/dist/tree-operations/paste/paste-replacement.js +73 -42
- package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
- package/dist/tree-operations/paste/paste-transforms.js +18 -27
- package/dist/tree-operations/paste/replacement-parse.d.ts +19 -0
- package/dist/tree-operations/paste/replacement-parse.js +24 -0
- package/dist/tree-operations/paste/strategy.d.ts +1 -1
- package/dist/tree-operations/paste/strategy.js +1 -1
- package/dist/tree-operations/paste/table-slice.js +15 -10
- package/dist/tree-operations/paste-surfaces.d.ts +18 -29
- package/dist/tree-operations/paste-surfaces.js +14 -10
- package/dist/tree-operations/path-mutate.d.ts +7 -8
- package/dist/tree-operations/path-mutate.js +4 -4
- package/dist/tree-operations/reorder-unit.d.ts +4 -5
- package/dist/tree-operations/reorder-unit.js +5 -6
- package/dist/tree-operations/reorder.d.ts +7 -9
- package/dist/tree-operations/reorder.js +39 -40
- package/dist/tree-operations/settle.d.ts +42 -53
- package/dist/tree-operations/settle.js +241 -162
- package/dist/tree-operations/sharing.d.ts +5 -5
- package/dist/tree-operations/splice-many.d.ts +5 -5
- package/dist/tree-operations/splice-many.js +5 -5
- package/dist/tree-operations/stored-as.d.ts +13 -0
- package/dist/tree-operations/stored-as.js +48 -0
- package/dist/tree-operations/structural-change.d.ts +11 -15
- package/dist/tree-operations/structural-change.js +10 -14
- package/dist/tree-operations/structural-suffix.d.ts +22 -0
- package/dist/tree-operations/structural-suffix.js +61 -0
- package/dist/tree-operations/sub-table-copy.d.ts +7 -0
- package/dist/tree-operations/sub-table-copy.js +40 -36
- package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
- package/dist/tree-operations/table-grid-clipboard.js +11 -36
- package/dist/tree-operations/table-mutations.d.ts +7 -3
- package/dist/tree-operations/table-mutations.js +45 -9
- package/dist/tree-operations/unshare.d.ts +11 -15
- package/dist/tree-operations/unshare.js +15 -17
- package/dist/undo/manager.js +1 -1
- package/dist/undo/types.d.ts +2 -2
- package/docs/guide/consumer-guide.md +329 -205
- package/docs/guide/directives.md +7 -7
- package/docs/guide/plugin-api.md +267 -183
- package/docs/guide/plugin-guide.md +341 -235
- package/docs/guide/plugin-testing.md +96 -82
- package/package.json +17 -21
- package/dist/ambient/ambient-cursor.d.ts +0 -41
- package/dist/ambient/ambient-cursor.js +0 -120
- package/dist/components/blocks/code/code-paste.d.ts +0 -24
- package/dist/components/blocks/code/code-paste.js +0 -21
- package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
- package/dist/components/blocks/table/cell-clipboard.js +0 -67
- package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
- package/dist/components/blocks/text/hidden-suffix.js +0 -15
- package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
- package/dist/components/image/image-source-bytes.d.ts +0 -15
- package/dist/components/image/image-source-bytes.js +0 -80
- package/dist/cursor/content-offsets.d.ts +0 -29
- package/dist/cursor/content-offsets.js +0 -151
- package/dist/cursor/reveal-anchor.d.ts +0 -30
- package/dist/cursor/reveal-anchor.js +0 -31
- package/dist/invariants/split-landing.d.ts +0 -8
- package/dist/invariants/split-landing.js +0 -15
- package/dist/selection/double-click-trim.d.ts +0 -17
- package/dist/selection/double-click-trim.js +0 -57
- package/dist/tree-operations/list/terminator.d.ts +0 -17
- package/dist/tree-operations/list/terminator.js +0 -60
- package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -29
- package/dist/tree-operations/paste/replace-block-at-parent.js +0 -75
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Cross-block event dispatch
|
|
3
|
-
*
|
|
4
|
-
* top of its own event handlers; single-block handling stays with the caller. This file is the
|
|
5
|
-
* composer: keydown in keydown.ts, pointer in pointer.ts, paste / type-replace passthroughs.
|
|
2
|
+
* Cross-block event dispatch: handlers an editable block, or the editor root, runs at the top of
|
|
3
|
+
* its own event handlers, before its single-block handling.
|
|
6
4
|
*/
|
|
7
5
|
import { isReadingMode } from '../../presentation-mode';
|
|
8
6
|
import { performCrossBlockDelete } from './ops';
|
|
@@ -17,19 +15,15 @@ export function createCrossBlockHandlers(ctx) {
|
|
|
17
15
|
getBlockElByPath: ctx.getBlockElByPath,
|
|
18
16
|
revealPath: ctx.revealPath,
|
|
19
17
|
controller: ctx.controller,
|
|
20
|
-
|
|
21
|
-
grammar: ctx.grammar,
|
|
22
|
-
getPresentationMode: ctx.getPresentationMode,
|
|
23
|
-
linkRef: ctx.linkRef
|
|
18
|
+
reading: ctx.reading
|
|
24
19
|
};
|
|
25
20
|
const keydown = createCrossBlockKeydown(ctx, mutationCtx);
|
|
26
21
|
const pointer = createCrossBlockPointer(ctx);
|
|
27
|
-
//
|
|
28
|
-
//
|
|
29
|
-
|
|
30
|
-
const reading = () => isReadingMode(ctx.getPresentationMode);
|
|
22
|
+
// The reading-mode checks for the mutating handlers live here so every caller inherits them;
|
|
23
|
+
// keydown checks its own destructive branches, since its navigation stays live.
|
|
24
|
+
const refusesWrites = () => isReadingMode(ctx.reading.mode);
|
|
31
25
|
const insertText = async (text) => {
|
|
32
|
-
if (
|
|
26
|
+
if (refusesWrites())
|
|
33
27
|
return true;
|
|
34
28
|
if (!ctx.selection.isCrossBlock)
|
|
35
29
|
return false;
|
|
@@ -41,29 +35,24 @@ export function createCrossBlockHandlers(ctx) {
|
|
|
41
35
|
handleCompositionStart: keydown.handleCompositionStart,
|
|
42
36
|
handlePointerDown: pointer.handlePointerDown,
|
|
43
37
|
handlePaste: async (e, replacement) => {
|
|
44
|
-
if (
|
|
38
|
+
if (refusesWrites()) {
|
|
45
39
|
e?.preventDefault();
|
|
46
40
|
return true;
|
|
47
41
|
}
|
|
48
42
|
return handleCrossBlockPaste(ctx, mutationCtx, e, replacement);
|
|
49
43
|
},
|
|
50
44
|
handleBeforeInput: async (e) => {
|
|
51
|
-
if (reading()) {
|
|
52
|
-
e.preventDefault();
|
|
53
|
-
return true;
|
|
54
|
-
}
|
|
55
45
|
if (!ctx.selection.isCrossBlock || e.inputType !== 'insertText')
|
|
56
46
|
return false;
|
|
57
47
|
e.preventDefault();
|
|
58
48
|
return insertText(e.data ?? '');
|
|
59
49
|
},
|
|
60
50
|
insertText,
|
|
61
|
-
|
|
62
|
-
//
|
|
63
|
-
|
|
64
|
-
if (reading())
|
|
51
|
+
performCrossBlockCut: async () => {
|
|
52
|
+
// Declining the delete degrades a reading-mode cut to a copy.
|
|
53
|
+
if (refusesWrites())
|
|
65
54
|
return;
|
|
66
|
-
await performCrossBlockDelete(mutationCtx);
|
|
55
|
+
await performCrossBlockDelete(mutationCtx, 'cut');
|
|
67
56
|
}
|
|
68
57
|
};
|
|
69
58
|
}
|
|
@@ -1,38 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The per-block spans a cross-block format toggle rewrites, and the write over them
|
|
3
|
-
* the tree,
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* through the single-block seam, so its arms, candidates and mode verification are the same ones.
|
|
7
|
-
* A grid joins by its cells, which the range covers whole.
|
|
2
|
+
* The per-block spans a cross-block format toggle rewrites, and the write over them; pure over
|
|
3
|
+
* the tree, with the commit in `./format-toggle`. The direction is decided over the whole range:
|
|
4
|
+
* every span already marked removes the mark, anything else adds it. Each span goes through the
|
|
5
|
+
* single-block toggle, and a table joins by its covered cells.
|
|
8
6
|
*/
|
|
9
7
|
import type { DocumentView } from '../../core/node-views';
|
|
10
8
|
import type { InlineMarkKind } from '../../schema/inline-construct-policy';
|
|
11
|
-
import type {
|
|
9
|
+
import type { Reading } from '../../schema/reading';
|
|
12
10
|
import type { GrammarView } from '../../schema/block-openers';
|
|
13
|
-
import { type
|
|
11
|
+
import { type BodyParent } from '../../tree-operations/node-primitives';
|
|
14
12
|
import type { SharingState } from '../../tree-operations/sharing';
|
|
15
|
-
import { type
|
|
13
|
+
import { type CoveredRange } from '../range-coverage';
|
|
16
14
|
export interface CrossBlockFormatWrite {
|
|
17
15
|
path: number[];
|
|
18
|
-
/** The block's display bytes after the toggle
|
|
16
|
+
/** The block's display bytes after the toggle: its raw minus the trailing line ending. */
|
|
19
17
|
newDisplay: string;
|
|
20
18
|
newSelStart: number;
|
|
21
19
|
newSelEnd: number;
|
|
22
20
|
}
|
|
23
21
|
export interface CrossBlockFormatPlan {
|
|
24
22
|
writes: CrossBlockFormatWrite[];
|
|
25
|
-
/** The range's
|
|
26
|
-
*
|
|
27
|
-
* index where the endpoint counts cells. */
|
|
23
|
+
/** The range's endpoints after the rewrite, each in its own space: a character offset in a
|
|
24
|
+
* text block or a path-named grid cell, a cell index where the endpoint counts cells. */
|
|
28
25
|
startOffset: number;
|
|
29
26
|
endOffset: number;
|
|
30
27
|
}
|
|
31
|
-
/** Null where no block participates: the
|
|
32
|
-
export declare function planCrossBlockFormat(doc: DocumentView,
|
|
33
|
-
/**
|
|
34
|
-
*
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
export declare function applyCrossBlockFormat(
|
|
28
|
+
/** Null where no block participates: the keystroke is still consumed, but nothing is written. */
|
|
29
|
+
export declare function planCrossBlockFormat(doc: DocumentView, range: CoveredRange, format: InlineMarkKind, reading: Reading): CrossBlockFormatPlan | null;
|
|
30
|
+
/** A mark is active where every participating span carries it. All marks at once, since
|
|
31
|
+
* splitting the range into spans is the cost and a toolbar asks once per button. */
|
|
32
|
+
export declare function crossBlockActiveFormats(doc: DocumentView, range: CoveredRange, reading: Reading): ReadonlySet<InlineMarkKind>;
|
|
33
|
+
/** Writes a plan into the document body, copying each chain before writing. The caller owns the
|
|
34
|
+
* commit. */
|
|
35
|
+
export declare function applyCrossBlockFormat(body: BodyParent, plan: CrossBlockFormatPlan, sharing: SharingState, grammar: GrammarView): void;
|
|
@@ -1,33 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The per-block spans a cross-block format toggle rewrites, and the write over them
|
|
3
|
-
* the tree,
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* through the single-block seam, so its arms, candidates and mode verification are the same ones.
|
|
7
|
-
* A grid joins by its cells, which the range covers whole.
|
|
2
|
+
* The per-block spans a cross-block format toggle rewrites, and the write over them; pure over
|
|
3
|
+
* the tree, with the commit in `./format-toggle`. The direction is decided over the whole range:
|
|
4
|
+
* every span already marked removes the mark, anything else adds it. Each span goes through the
|
|
5
|
+
* single-block toggle, and a table joins by its covered cells.
|
|
8
6
|
*/
|
|
9
7
|
import { activeInlineFormats, inlineFormatsCovering, isInlineFormatActive, isInlineFormatActiveAfter, toggleInlineFormat, withoutBoundaryWhitespace } from '../../core/inline/format-toggle';
|
|
10
8
|
import { getContentRange } from '../../core/inline';
|
|
11
9
|
import { ownTrailingLineEnding, trimTrailingLineEnding } from '../../core/lines';
|
|
12
10
|
import { tryGetBlockKindDescriptor } from '../../schema/block-kind-descriptor';
|
|
13
|
-
import {
|
|
11
|
+
import { blockNodeAt } from '../../tree-operations/node-primitives';
|
|
12
|
+
import { rewriteLeafInPlace } from '../../tree-operations/content-write';
|
|
14
13
|
import { ensureUnsharedPath } from '../../tree-operations/unshare';
|
|
15
|
-
import { rebuildUnsharedChain } from '../../tree-operations/chain-rebuild';
|
|
16
|
-
import {
|
|
14
|
+
import { rebuildUnsharedChain, sharedChainLevels } from '../../tree-operations/chain-rebuild';
|
|
15
|
+
import { pathsEqual } from '../path-math';
|
|
17
16
|
import { charOffsetOf } from '../primitives';
|
|
18
|
-
import {
|
|
17
|
+
import { rangeCoverage } from '../range-coverage';
|
|
18
|
+
import { gridCellsInRect, gridCellsInRun } from '../table-endpoint-snap';
|
|
19
19
|
const TAG = 'cross-block-format';
|
|
20
|
-
/** Null where no block participates: the
|
|
21
|
-
export function planCrossBlockFormat(doc,
|
|
22
|
-
const
|
|
20
|
+
/** Null where no block participates: the keystroke is still consumed, but nothing is written. */
|
|
21
|
+
export function planCrossBlockFormat(doc, range, format, reading) {
|
|
22
|
+
const coverage = rangeCoverage(doc, range);
|
|
23
|
+
const { start, end } = range;
|
|
24
|
+
const spans = spansInRange(doc, coverage, reading);
|
|
23
25
|
if (spans.length === 0)
|
|
24
26
|
return null;
|
|
25
27
|
// Read once per span: the vote and the per-span skip below ask the same question, and the
|
|
26
28
|
// answer costs a parse of the block's inlines.
|
|
27
29
|
const covered = spans.map((span) => isInlineFormatActive(span.edit, format));
|
|
28
30
|
const unapply = covered.every(Boolean);
|
|
29
|
-
// Each endpoint
|
|
30
|
-
//
|
|
31
|
+
// Each endpoint keeps its own space: a participating span overwrites its side with a
|
|
32
|
+
// character offset, and an endpoint counting cells owns no span, so its index stands.
|
|
31
33
|
const plan = {
|
|
32
34
|
writes: [],
|
|
33
35
|
startOffset: start.offset,
|
|
@@ -36,7 +38,7 @@ export function planCrossBlockFormat(doc, start, end, format, mode) {
|
|
|
36
38
|
for (const [index, span] of spans.entries()) {
|
|
37
39
|
if (covered[index] !== unapply)
|
|
38
40
|
continue;
|
|
39
|
-
const toggled = toggleInlineFormat(span.edit, format
|
|
41
|
+
const toggled = toggleInlineFormat(span.edit, format);
|
|
40
42
|
if (!toggled || !landedOnIntendedSide(span.edit, toggled, format, unapply))
|
|
41
43
|
continue;
|
|
42
44
|
plan.writes.push({
|
|
@@ -49,14 +51,17 @@ export function planCrossBlockFormat(doc, start, end, format, mode) {
|
|
|
49
51
|
plan.startOffset = toggled.newSelStart;
|
|
50
52
|
if (span.isEnd)
|
|
51
53
|
plan.endOffset = toggled.newSelEnd;
|
|
54
|
+
// An end block held whole stays held at its new last byte.
|
|
55
|
+
if (!coverage.endEdge && pathsEqual(span.path, end.path)) {
|
|
56
|
+
plan.endOffset = toggled.newDisplay.length;
|
|
57
|
+
}
|
|
52
58
|
}
|
|
53
59
|
return plan.writes.length === 0 ? null : plan;
|
|
54
60
|
}
|
|
55
|
-
/**
|
|
56
|
-
*
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
const spans = spansInRange(doc, start, end);
|
|
61
|
+
/** A mark is active where every participating span carries it. All marks at once, since
|
|
62
|
+
* splitting the range into spans is the cost and a toolbar asks once per button. */
|
|
63
|
+
export function crossBlockActiveFormats(doc, range, reading) {
|
|
64
|
+
const spans = spansInRange(doc, rangeCoverage(doc, range), reading);
|
|
60
65
|
if (spans.length === 0)
|
|
61
66
|
return new Set();
|
|
62
67
|
// The running intersection is the next span's candidate set, so a span costs one parse and a
|
|
@@ -66,117 +71,113 @@ export function crossBlockActiveFormats(doc, start, end) {
|
|
|
66
71
|
active = inlineFormatsCovering(spans[index].edit, active);
|
|
67
72
|
return active;
|
|
68
73
|
}
|
|
69
|
-
/**
|
|
70
|
-
|
|
74
|
+
/** Writes a plan into the document body, copying each chain before writing. The caller owns the
|
|
75
|
+
* commit. */
|
|
76
|
+
export function applyCrossBlockFormat(body, plan, sharing, grammar) {
|
|
71
77
|
const chains = [];
|
|
72
78
|
for (const write of plan.writes) {
|
|
73
|
-
const chain = ensureUnsharedPath(
|
|
79
|
+
const chain = ensureUnsharedPath(body, write.path, sharing);
|
|
74
80
|
const owned = chain[chain.length - 1];
|
|
75
81
|
if (!owned)
|
|
76
82
|
continue;
|
|
77
|
-
|
|
83
|
+
const owner = chain[chain.length - 2];
|
|
84
|
+
const holder = owner ? { children: owner.children, owner, lineEnding: body.lineEnding } : body;
|
|
85
|
+
// A line ending reaching a cell's raw would be turned into a space by the cell's write rule.
|
|
78
86
|
const raw = write.newDisplay + ownTrailingLineEnding(owned.raw);
|
|
79
|
-
|
|
87
|
+
rewriteLeafInPlace(holder, write.path[write.path.length - 1], raw, grammar, sharing);
|
|
80
88
|
chains.push(chain);
|
|
81
89
|
}
|
|
82
|
-
// Every write lands before any rebuild, and
|
|
83
|
-
//
|
|
84
|
-
|
|
85
|
-
|
|
90
|
+
// Every write lands before any rebuild, and an ancestor the chains share is rebuilt once, by the
|
|
91
|
+
// last chain holding it, after every chain below it.
|
|
92
|
+
const levels = sharedChainLevels(chains);
|
|
93
|
+
chains.forEach((chain, i) => {
|
|
94
|
+
rebuildUnsharedChain(body, chain, sharing, null, grammar, undefined, levels[i]);
|
|
95
|
+
});
|
|
86
96
|
}
|
|
87
|
-
/**
|
|
88
|
-
*
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
* that same shape.
|
|
92
|
-
*/
|
|
93
|
-
function spansInRange(doc, start, end) {
|
|
97
|
+
/** The start edge's tail, every block the range holds whole and the end edge's head, in document
|
|
98
|
+
* order, read off `rangeCoverage`. A kind joins by what its descriptor declares, never by name. */
|
|
99
|
+
function spansInRange(doc, coverage, reading) {
|
|
100
|
+
const { start, end } = coverage.range;
|
|
94
101
|
const spans = [];
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
if (comparePaths(here, end.path) > 0)
|
|
101
|
-
return;
|
|
102
|
-
const child = children[index];
|
|
103
|
-
if (child.children) {
|
|
104
|
-
if (tryGetBlockKindDescriptor(child.kind)?.containerContract === 'grid') {
|
|
105
|
-
// Appended, never spread: covered cells outnumber an argument list (G4.60).
|
|
106
|
-
for (const span of gridSpans(child, here, start, end))
|
|
107
|
-
spans.push(span);
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
visit(child, here);
|
|
111
|
-
}
|
|
112
|
-
continue;
|
|
113
|
-
}
|
|
114
|
-
const span = spanFor(child, here, start, end);
|
|
115
|
-
if (span)
|
|
116
|
-
spans.push(span);
|
|
117
|
-
}
|
|
102
|
+
// Pushed one by one, never spread: a large grid's cells can exceed the argument-list limit
|
|
103
|
+
// (G4.60).
|
|
104
|
+
const push = (cells) => {
|
|
105
|
+
for (const span of cells)
|
|
106
|
+
spans.push(span);
|
|
118
107
|
};
|
|
119
|
-
|
|
108
|
+
if (coverage.grid) {
|
|
109
|
+
const { path, rect } = coverage.grid;
|
|
110
|
+
const table = blockNodeAt(doc, path);
|
|
111
|
+
if (table)
|
|
112
|
+
push(cellSpans(gridCellsInRect(table, path, rect), reading));
|
|
113
|
+
return spans;
|
|
114
|
+
}
|
|
115
|
+
if (coverage.startEdge && coverage.endEdge && pathsEqual(start.path, end.path)) {
|
|
116
|
+
push(edgeSpans(doc, start, end, null, reading));
|
|
117
|
+
return spans;
|
|
118
|
+
}
|
|
119
|
+
if (coverage.startEdge)
|
|
120
|
+
push(edgeSpans(doc, start, null, coverage.startCells, reading));
|
|
121
|
+
for (const root of coverage.wholeRoots)
|
|
122
|
+
push(wholeSpans(doc, root, reading));
|
|
123
|
+
if (coverage.endEdge)
|
|
124
|
+
push(edgeSpans(doc, null, end, coverage.endCells, reading));
|
|
120
125
|
return spans;
|
|
121
126
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
const
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
/** A kept edge's part of its block: the text from the start or up to the end, or the cells a
|
|
128
|
+
* table edge hands over. */
|
|
129
|
+
function edgeSpans(doc, start, end, cells, reading) {
|
|
130
|
+
const point = (start ?? end);
|
|
131
|
+
const node = blockNodeAt(doc, point.path);
|
|
132
|
+
if (!node)
|
|
133
|
+
return [];
|
|
134
|
+
if (cells)
|
|
135
|
+
return cellSpans(gridCellsInRun(node, point.path, cells.from, cells.to - 1), reading);
|
|
136
|
+
const body = contentSpan(node, point.path, start ? charOffsetOf(start, TAG) : null, end ? charOffsetOf(end, TAG) : null, reading);
|
|
137
|
+
return body ? [{ ...body, isStart: start !== null, isEnd: end !== null }] : [];
|
|
129
138
|
}
|
|
130
|
-
/**
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
*/
|
|
135
|
-
function gridSpans(grid, path, start, end) {
|
|
136
|
-
const from = gridEndpointCellIndex(grid, path, start);
|
|
137
|
-
// No endpoint of its own, and the range starts after it: the grid sits wholly before the range.
|
|
138
|
-
if (from === null && comparePaths(path, start.path) < 0)
|
|
139
|
+
/** Every leaf of a subtree the range holds whole, each whole, in document order. */
|
|
140
|
+
function wholeSpans(doc, root, reading) {
|
|
141
|
+
const node = blockNodeAt(doc, [...root]);
|
|
142
|
+
if (!node)
|
|
139
143
|
return [];
|
|
140
|
-
const
|
|
144
|
+
const spans = [];
|
|
145
|
+
const visit = (at, atPath) => {
|
|
146
|
+
if (at.children) {
|
|
147
|
+
at.children.forEach((child, index) => visit(child, [...atPath, index]));
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
const body = contentSpan(at, atPath, null, null, reading);
|
|
151
|
+
if (body)
|
|
152
|
+
spans.push({ ...body, isStart: false, isEnd: false });
|
|
153
|
+
};
|
|
154
|
+
visit(node, [...root]);
|
|
155
|
+
return spans;
|
|
156
|
+
}
|
|
157
|
+
/** Each cell whole; a table endpoint counting cells never names a cell path (G1.29). */
|
|
158
|
+
function cellSpans(cells, reading) {
|
|
141
159
|
const spans = [];
|
|
142
160
|
for (const cell of cells) {
|
|
143
|
-
const body = contentSpan(cell.node, cell.path, null, null);
|
|
161
|
+
const body = contentSpan(cell.node, cell.path, null, null, reading);
|
|
144
162
|
if (body)
|
|
145
|
-
spans.push({
|
|
146
|
-
...body,
|
|
147
|
-
isStart: addressesCell(start, cell.path),
|
|
148
|
-
isEnd: addressesCell(end, cell.path)
|
|
149
|
-
});
|
|
163
|
+
spans.push({ ...body, isStart: false, isEnd: false });
|
|
150
164
|
}
|
|
151
165
|
return spans;
|
|
152
166
|
}
|
|
153
|
-
/**
|
|
154
|
-
*
|
|
155
|
-
|
|
156
|
-
* rewrite, as a prose edge follows its block's. */
|
|
157
|
-
function addressesCell(point, cellPath) {
|
|
158
|
-
return comparePaths(point.path, cellPath) === 0;
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* What one leaf contributes between two char offsets — null on a side meaning the block's own
|
|
162
|
-
* content edge. Null where the kind declares itself out of inline marking, or where the boundary
|
|
163
|
-
* trim leaves nothing to mark.
|
|
164
|
-
*/
|
|
165
|
-
function contentSpan(node, path, from, to) {
|
|
167
|
+
/** What one leaf contributes between two character offsets, a null side meaning its content
|
|
168
|
+
* edge. Null for a kind outside inline marking, or when trimming whitespace leaves nothing. */
|
|
169
|
+
function contentSpan(node, path, from, to, reading) {
|
|
166
170
|
const descriptor = tryGetBlockKindDescriptor(node.kind);
|
|
167
171
|
if (!descriptor?.supportsInline || !descriptor.editable || descriptor.isContainer)
|
|
168
172
|
return null;
|
|
169
173
|
const display = trimTrailingLineEnding(node.raw);
|
|
170
174
|
const content = getContentRange(node);
|
|
171
175
|
const selection = withoutBoundaryWhitespace(display, clampToContent(from ?? content.start, content), clampToContent(to ?? content.end, content));
|
|
172
|
-
return selection && { path, edit: { display, content, selection } };
|
|
176
|
+
return selection && { path, edit: { display, content, selection, reading } };
|
|
173
177
|
}
|
|
174
178
|
const clampToContent = (offset, content) => Math.min(Math.max(offset, content.start), content.end);
|
|
175
|
-
/**
|
|
176
|
-
*
|
|
177
|
-
* span alone, so a block whose write disagreed with the range's direction is dropped rather than
|
|
178
|
-
* committed against the press the user made.
|
|
179
|
-
*/
|
|
179
|
+
/** Whether the span's toggle went the range's way. The single-block toggle decides from the span
|
|
180
|
+
* alone, so a block that went the other way is dropped rather than written. */
|
|
180
181
|
function landedOnIntendedSide(edit, toggled, format, unapply) {
|
|
181
182
|
return isInlineFormatActiveAfter(edit, toggled, format) !== unapply;
|
|
182
183
|
}
|
|
@@ -1,27 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The cross-block
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* injected router, so `schema/` keeps no edge to selection machinery.
|
|
2
|
+
* The cross-block half of the inline format toggles: plan the per-block spans, write them under
|
|
3
|
+
* one undo entry, and put the range back over the result. The key dispatcher reaches this module
|
|
4
|
+
* through an injected router, so `schema/` keeps no import of selection code.
|
|
6
5
|
*/
|
|
7
|
-
import type { BlockComponent } from '../../block-component';
|
|
8
6
|
import type { CommitController } from '../../action-contracts';
|
|
9
|
-
import type {
|
|
7
|
+
import type { DocumentGetter } from '../../editor-keys';
|
|
10
8
|
import type { CrossBlockCommandRouter } from '../../schema/block-commands';
|
|
11
|
-
import type {
|
|
9
|
+
import type { Reading } from '../../schema/reading';
|
|
12
10
|
import type { SelectionState } from '../selection-state.svelte';
|
|
13
11
|
export interface CrossBlockCommandDeps {
|
|
14
12
|
selection: SelectionState;
|
|
15
13
|
getDoc: DocumentGetter;
|
|
16
|
-
getBlockElByPath: BlockElLookup;
|
|
17
|
-
revealPath: (path: number[]) => Promise<BlockComponent | null>;
|
|
18
14
|
controller: CommitController;
|
|
19
|
-
/**
|
|
20
|
-
*
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
* identity witnesses nothing (`docs/design/editor.md` § 7). */
|
|
15
|
+
/** How the blocks were drawn: each span's toggle reads its link definitions and grammar, and
|
|
16
|
+
* verifies its rewrite against its mode. */
|
|
17
|
+
reading: Reading;
|
|
18
|
+
/** The active-marks memo's key alongside the range: the document is mutated in place, so its
|
|
19
|
+
* identity says nothing about whether it changed. */
|
|
25
20
|
getContentVersion: () => number;
|
|
26
21
|
}
|
|
27
22
|
export declare function createCrossBlockCommands(deps: CrossBlockCommandDeps): CrossBlockCommandRouter;
|
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The cross-block
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* injected router, so `schema/` keeps no edge to selection machinery.
|
|
2
|
+
* The cross-block half of the inline format toggles: plan the per-block spans, write them under
|
|
3
|
+
* one undo entry, and put the range back over the result. The key dispatcher reaches this module
|
|
4
|
+
* through an injected router, so `schema/` keeps no import of selection code.
|
|
6
5
|
*/
|
|
7
6
|
import { ownTrailingLineEnding } from '../../core/lines';
|
|
8
7
|
import { docPathFrom } from '../../cursor/coordinate-spaces';
|
|
9
8
|
import { inlineMarkForCommand } from '../../schema/inline-construct-policy';
|
|
10
9
|
import { blockNodeAt } from '../../tree-operations/node-primitives';
|
|
11
10
|
import { comparePaths } from '../path-math';
|
|
12
|
-
import {
|
|
11
|
+
import { coverRange } from '../range-coverage';
|
|
13
12
|
import { applyCrossBlockFormat, crossBlockActiveFormats, planCrossBlockFormat } from './format-range';
|
|
14
13
|
export function createCrossBlockCommands(deps) {
|
|
15
14
|
const activeFormats = createActiveFormatMemo(deps);
|
|
16
15
|
return {
|
|
17
|
-
//
|
|
18
|
-
// the range
|
|
16
|
+
// Whether the command has a cross-block handler, not whether any block joins, which is known
|
|
17
|
+
// only once the range splits into spans; a keystroke that reaches no block writes nothing.
|
|
19
18
|
canRun: (id) => inlineMarkForCommand(id) !== null,
|
|
20
19
|
run: (id) => {
|
|
21
20
|
const mark = inlineMarkForCommand(id);
|
|
@@ -30,46 +29,49 @@ export function createCrossBlockCommands(deps) {
|
|
|
30
29
|
}
|
|
31
30
|
};
|
|
32
31
|
}
|
|
33
|
-
// ── The
|
|
32
|
+
// ── The active-marks memo ──────────────────────────────────────────────────
|
|
34
33
|
const NO_MARKS = new Set();
|
|
35
|
-
/** One
|
|
36
|
-
*
|
|
37
|
-
* a derived read that wrote `$state` would be a write during a read. */
|
|
34
|
+
/** One entry, not a cache: the previous key is dead once the selection moves. Outside reactive
|
|
35
|
+
* state, since a derived read that wrote `$state` would be a write during a read. */
|
|
38
36
|
function createActiveFormatMemo(deps) {
|
|
39
37
|
let slot = null;
|
|
40
38
|
return () => {
|
|
41
|
-
const {
|
|
42
|
-
if (!
|
|
39
|
+
const { anchor, focus } = deps.selection;
|
|
40
|
+
if (!anchor || !focus)
|
|
43
41
|
return NO_MARKS;
|
|
44
|
-
const key = `${deps.getContentVersion()}|${pointKey(
|
|
42
|
+
const key = `${deps.getContentVersion()}|${pointKey(anchor)}|${pointKey(focus)}`;
|
|
45
43
|
if (slot?.key !== key) {
|
|
46
|
-
|
|
44
|
+
const doc = deps.getDoc();
|
|
45
|
+
const range = coverRange(doc, anchor, focus);
|
|
46
|
+
slot = { key, marks: crossBlockActiveFormats(doc, range, deps.reading) };
|
|
47
47
|
}
|
|
48
48
|
return slot.marks;
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
|
-
/** The offset's
|
|
52
|
-
* counts bytes, so the flag
|
|
51
|
+
/** The offset's space is part of the identity: a cell point counts cells where a character
|
|
52
|
+
* point counts bytes, so the flag goes in the key. */
|
|
53
53
|
const pointKey = (point) => `${point.path.join(',')}@${point.offset}${point.cellCoordinate ? 'c' : ''}`;
|
|
54
54
|
// ── The commit ─────────────────────────────────────────────────────────────
|
|
55
55
|
async function toggleFormatOverRange(deps, format) {
|
|
56
|
-
const { anchor, focus
|
|
57
|
-
if (!anchor || !focus
|
|
56
|
+
const { anchor, focus } = deps.selection;
|
|
57
|
+
if (!anchor || !focus)
|
|
58
58
|
return;
|
|
59
59
|
const doc = deps.getDoc();
|
|
60
|
-
const
|
|
60
|
+
const range = coverRange(doc, anchor, focus);
|
|
61
|
+
const plan = planCrossBlockFormat(doc, range, format, deps.reading);
|
|
61
62
|
if (!plan)
|
|
62
63
|
return;
|
|
64
|
+
const { start, end } = range;
|
|
63
65
|
const restored = restoredRange(anchor, focus, start, end, plan);
|
|
64
66
|
await deps.controller.commitMultiScope({
|
|
65
|
-
//
|
|
66
|
-
// or id list moves and each touched
|
|
67
|
+
// The document scope alone: the writes are bytes, not splices, so no container's children
|
|
68
|
+
// array or id list moves and each touched chain rebuilds from its own leaf.
|
|
67
69
|
scopes: [deps.controller.getDocScope()],
|
|
68
70
|
// The endpoint's own space, like the plan's offsets: undo restores through the clamp that
|
|
69
71
|
// reads a grid's path as cell indices.
|
|
70
72
|
snapshot: { path: docPathFrom(start.path), offset: start.offset },
|
|
71
73
|
mutate: ([docScope]) => {
|
|
72
|
-
applyCrossBlockFormat(
|
|
74
|
+
applyCrossBlockFormat(docScope.body, plan, docScope.sharing, deps.reading.grammar);
|
|
73
75
|
return [{ op: 'noop' }];
|
|
74
76
|
},
|
|
75
77
|
op: {
|
|
@@ -77,14 +79,7 @@ async function toggleFormatOverRange(deps, format) {
|
|
|
77
79
|
detail: { length: startBlockLength(doc, start, plan), crossBlock: true },
|
|
78
80
|
eventPath: docPathFrom(start.path)
|
|
79
81
|
},
|
|
80
|
-
|
|
81
|
-
await restoreSelection(restored, {
|
|
82
|
-
getDoc: deps.getDoc,
|
|
83
|
-
selectionState: deps.selection,
|
|
84
|
-
getBlockElByPath: deps.getBlockElByPath,
|
|
85
|
-
revealTarget: async (path) => (await deps.revealPath(path)) !== null
|
|
86
|
-
});
|
|
87
|
-
}
|
|
82
|
+
landing: () => restored
|
|
88
83
|
});
|
|
89
84
|
}
|
|
90
85
|
/** The same pair, re-offset, with the user's anchor still on the side it was drawn from. */
|
|
@@ -100,8 +95,8 @@ const withOffset = (point, offset) => ({
|
|
|
100
95
|
path: point.path.slice(),
|
|
101
96
|
offset
|
|
102
97
|
});
|
|
103
|
-
/** The event detail's post-write length, read off the plan
|
|
104
|
-
* A block the plan
|
|
98
|
+
/** The event detail's post-write length, read off the plan, since `op` is evaluated before
|
|
99
|
+
* `mutate` runs. A block the plan doesn't write reports its current length. */
|
|
105
100
|
function startBlockLength(doc, start, plan) {
|
|
106
101
|
const raw = blockNodeAt(doc, start.path)?.raw ?? '';
|
|
107
102
|
const write = plan.writes.find((entry) => comparePaths(entry.path, start.path) === 0);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Keydown + compositionstart half of the cross-block dispatcher. See dispatch.ts for the
|
|
3
|
-
* composer that wires this together with the pointer half.
|
|
4
|
-
*/
|
|
1
|
+
/** The keydown and compositionstart half of cross-block dispatch. */
|
|
5
2
|
import type { CrossBlockMutationContext } from './ops';
|
|
6
3
|
import type { CrossBlockDispatchContext } from './dispatch';
|
|
4
|
+
import type { AnyCommandId } from '../../schema/command-id';
|
|
7
5
|
export interface CrossBlockKeydown {
|
|
8
6
|
handleKeyDown(e: KeyboardEvent): Promise<boolean>;
|
|
9
7
|
handleCompositionStart(): boolean;
|
|
10
8
|
}
|
|
11
9
|
export declare function createCrossBlockKeydown(ctx: CrossBlockDispatchContext, mutCtx: CrossBlockMutationContext): CrossBlockKeydown;
|
|
10
|
+
/** What a keypress resolves to at the block at `getMyPath`, or at global scope with none. */
|
|
11
|
+
export declare function commandAtBlock(e: KeyboardEvent, ctx: Pick<CrossBlockDispatchContext, 'getDoc' | 'getMyPath' | 'commands'>): AnyCommandId | null;
|