@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,183 +1,116 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Cross-block clipboard text collection.
|
|
3
|
-
*/
|
|
1
|
+
/** Builds the plain text a cross-block selection puts on the clipboard. */
|
|
4
2
|
import { makeBlockNode, metadataOf } from '../core/nodes';
|
|
5
3
|
import { cloneMetadata } from '../tree-operations/clone';
|
|
6
4
|
import { isBlockNode, nodeAt } from '../tree-operations/node-primitives';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
5
|
+
import { charOffsetOf } from './primitives';
|
|
6
|
+
import { gridClipboard } from './grid-selection';
|
|
7
|
+
import { pathHasPrefix, pathsEqual } from './path-math';
|
|
10
8
|
import { cellRowCol } from '../cursor/coordinate-spaces';
|
|
11
|
-
import { displayLength, terminateLine } from '../core/lines';
|
|
9
|
+
import { displayLength, documentLineEnding, terminateLine, trailingLineEnding } from '../core/lines';
|
|
12
10
|
import { copyRectangleAsSubTable } from '../tree-operations/sub-table-copy';
|
|
13
11
|
import { isReservedChromeChild } from '../schema/reserved-chrome';
|
|
14
12
|
import { getBlockKindDescriptor, tryGetBlockKindDescriptor } from '../schema/block-kind-descriptor';
|
|
15
13
|
// ── Public API ─────────────────────────────────────────────────────────────
|
|
16
|
-
/**
|
|
17
|
-
*
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
*/
|
|
23
|
-
export function collectCrossBlockText(doc, anchor, focus) {
|
|
24
|
-
const normalized = normalize({ anchor, focus });
|
|
25
|
-
const { start, end } = snapCrossBlockTableEndpoints(doc, normalized.start, normalized.end);
|
|
14
|
+
/** The plain text of a covered range: whatever the coverage says is covered end to end is copied
|
|
15
|
+
* whole, markers included, and a selection inside one table copies its rectangle. */
|
|
16
|
+
export function collectCrossBlockText(doc, coverage) {
|
|
17
|
+
const { start, end } = coverage.range;
|
|
18
|
+
if (coverage.grid)
|
|
19
|
+
return gridClipboard(doc, coverage.grid)?.text ?? '';
|
|
26
20
|
const startNode = nodeAt(doc, start.path);
|
|
27
21
|
const endNode = nodeAt(doc, end.path);
|
|
28
22
|
if (!startNode || !endNode)
|
|
29
23
|
return '';
|
|
30
|
-
// On a table, offsets index half-open cell ranges (see `SelectionPoint`), not characters,
|
|
31
|
-
// so the three table branches route through emitTablePortion. Same-path intra-table offsets
|
|
32
|
-
// are context-established (unflagged) and read directly; cross-block ones use cellIndexOf.
|
|
33
|
-
if (pathsEqual(start.path, end.path) && isBlockNode(startNode) && startNode.kind === 'table') {
|
|
34
|
-
// Cell offsets are inclusive on both ends (hence the `+ 1`). A collapsed pair is a caret
|
|
35
|
-
// in a cell, not a rect, so copy nothing and let the cell's native copy handle it.
|
|
36
|
-
if (start.offset === end.offset)
|
|
37
|
-
return '';
|
|
38
|
-
return emitTablePortion(startNode, start.offset, end.offset + 1);
|
|
39
|
-
}
|
|
40
24
|
const startRaw = isBlockNode(startNode) ? startNode.raw : '';
|
|
41
25
|
const endRaw = isBlockNode(endNode) ? endNode.raw : '';
|
|
42
|
-
// One
|
|
43
|
-
//
|
|
44
|
-
if (pathsEqual(start.path, end.path)
|
|
26
|
+
// One block selected whole (`SelectionState.wholeUnitPath`) is the only character pair on one
|
|
27
|
+
// path, and the head/tail split below would emit its bytes twice.
|
|
28
|
+
if (pathsEqual(start.path, end.path)) {
|
|
45
29
|
return startRaw.slice(start.offset, end.offset);
|
|
46
30
|
}
|
|
31
|
+
const startRoot = coverage.coveredRootHolding(start.path);
|
|
32
|
+
const endRoot = coverage.coveredRootHolding(end.path);
|
|
33
|
+
if (startRoot && endRoot && pathsEqual(startRoot, endRoot))
|
|
34
|
+
return rawAt(doc, startRoot);
|
|
47
35
|
let effectiveStartPath = start.path;
|
|
48
36
|
let chromeStart = null;
|
|
49
37
|
let startTail = '';
|
|
50
|
-
if (
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
38
|
+
if (startRoot) {
|
|
39
|
+
effectiveStartPath = startRoot;
|
|
40
|
+
startTail = rawAt(doc, startRoot);
|
|
41
|
+
}
|
|
42
|
+
else if (coverage.startCells && isBlockNode(startNode)) {
|
|
43
|
+
startTail = emitTablePortion(startNode, coverage.startCells.from, coverage.startCells.to);
|
|
55
44
|
}
|
|
56
45
|
else {
|
|
57
46
|
const startOffset = charOffsetOf(start, 'collectCrossBlockText:start');
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
startTail = startRaw.slice(startOffset);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
else if (startOffset > 0 && start.path.length > 1) {
|
|
69
|
-
// A chrome start emits nothing here: its wrapper needs the body it encloses,
|
|
70
|
-
// which only the walk below knows.
|
|
71
|
-
chromeStart = startChromeContainer(doc, start, startRaw, startOffset);
|
|
72
|
-
if (!chromeStart) {
|
|
73
|
-
const marker = soleChildContainerPrefix(doc, start.path, startRaw);
|
|
74
|
-
startTail = (marker ?? '') + startRaw.slice(startOffset);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
startTail = startRaw.slice(startOffset);
|
|
47
|
+
// A start inside a container's title line emits nothing yet: the container's opener
|
|
48
|
+
// is rebuilt around the body, which the copy collects below.
|
|
49
|
+
chromeStart =
|
|
50
|
+
start.path.length > 1 ? startChromeContainer(doc, start, startRaw, startOffset) : null;
|
|
51
|
+
if (!chromeStart) {
|
|
52
|
+
const marker = start.path.length > 1 ? soleChildContainerPrefix(doc, start.path, startRaw) : null;
|
|
53
|
+
startTail = (marker ?? '') + startRaw.slice(startOffset);
|
|
79
54
|
}
|
|
80
55
|
}
|
|
56
|
+
// An end block covered to its last byte and held by no container keeps its line ending out, as
|
|
57
|
+
// a slice does; a container covered whole brings its own.
|
|
81
58
|
let effectiveEndPath = end.path;
|
|
82
59
|
let endHead;
|
|
83
|
-
if (
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
60
|
+
if (endRoot && endRoot.length < end.path.length) {
|
|
61
|
+
effectiveEndPath = endRoot;
|
|
62
|
+
endHead = rawAt(doc, endRoot);
|
|
63
|
+
}
|
|
64
|
+
else if (coverage.endCells && isBlockNode(endNode)) {
|
|
65
|
+
endHead = emitTablePortion(endNode, coverage.endCells.from, coverage.endCells.to);
|
|
87
66
|
}
|
|
88
67
|
else {
|
|
89
68
|
const endOffset = charOffsetOf(end, 'collectCrossBlockText:end');
|
|
90
69
|
const chromeBytes = endOffset > 0 ? endChromeContainerBytes(doc, end, endRaw, endOffset) : null;
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
else if (endOffset === displayLength(endRaw) && end.path.length > 1) {
|
|
95
|
-
const promoted = promoteToContainer(doc, end.path, start.path, 'end');
|
|
96
|
-
if (promoted) {
|
|
97
|
-
effectiveEndPath = promoted.path;
|
|
98
|
-
endHead = promoted.raw;
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
endHead = endRaw.slice(0, endOffset);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
else if (endOffset > 0 && endOffset < displayLength(endRaw) && end.path.length > 1) {
|
|
105
|
-
const marker = soleChildContainerPrefix(doc, end.path, endRaw);
|
|
106
|
-
endHead = (marker ?? '') + endRaw.slice(0, endOffset);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
endHead = endRaw.slice(0, endOffset);
|
|
110
|
-
}
|
|
70
|
+
const partial = endOffset > 0 && endOffset < displayLength(endRaw) && end.path.length > 1;
|
|
71
|
+
const marker = partial ? soleChildContainerPrefix(doc, end.path, endRaw) : null;
|
|
72
|
+
endHead = chromeBytes ?? (marker ?? '') + endRaw.slice(0, endOffset);
|
|
111
73
|
}
|
|
112
74
|
let middle = '';
|
|
113
75
|
let chromeBody = '';
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
if (isStrictAncestorOf(path, effectiveStartPath))
|
|
76
|
+
for (const root of coverage.coveredWhole) {
|
|
77
|
+
if (pathHasPrefix(effectiveStartPath, root) || pathHasPrefix(effectiveEndPath, root))
|
|
117
78
|
continue;
|
|
118
|
-
|
|
119
|
-
continue;
|
|
120
|
-
if (isStrictAncestorOf(effectiveStartPath, path))
|
|
121
|
-
continue;
|
|
122
|
-
if (isStrictAncestorOf(effectiveEndPath, path))
|
|
123
|
-
continue;
|
|
124
|
-
if (collectedContainers.some((cp) => isStrictAncestorOf(cp, path)))
|
|
125
|
-
continue;
|
|
126
|
-
const node = nodeAt(doc, path);
|
|
79
|
+
const node = nodeAt(doc, root);
|
|
127
80
|
if (!node || !isBlockNode(node))
|
|
128
81
|
continue;
|
|
129
|
-
if (chromeStart && pathHasPrefix(
|
|
82
|
+
if (chromeStart && pathHasPrefix(root, chromeStart.path)) {
|
|
130
83
|
chromeBody += node.leadingTrivia + node.raw;
|
|
131
84
|
}
|
|
132
85
|
else {
|
|
133
86
|
middle += node.leadingTrivia + node.raw;
|
|
134
87
|
}
|
|
135
|
-
if (node.children && node.children.length > 0) {
|
|
136
|
-
collectedContainers.push(path);
|
|
137
|
-
}
|
|
138
88
|
}
|
|
139
89
|
// Without endLead, blank lines between paragraphs drop and paste reparses as one paragraph.
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
const endNode = nodeAt(doc, effectiveEndPath);
|
|
143
|
-
if (endNode && isBlockNode(endNode)) {
|
|
144
|
-
endLead = endNode.leadingTrivia;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
90
|
+
const effectiveEnd = nodeAt(doc, effectiveEndPath);
|
|
91
|
+
const endLead = effectiveEnd && isBlockNode(effectiveEnd) ? effectiveEnd.leadingTrivia : '';
|
|
147
92
|
if (chromeStart) {
|
|
148
93
|
// The container's subtree is one contiguous doc-order run, so an end inside it
|
|
149
94
|
// leaves `middle` empty and puts the end's own bytes inside the wrapper too.
|
|
150
95
|
const exited = !pathHasPrefix(effectiveEndPath, chromeStart.path);
|
|
151
96
|
const tail = endLead + endHead;
|
|
152
|
-
const wrapped = wrapChromeStartContainer(chromeStart, exited ? chromeBody : chromeBody + tail, exited);
|
|
97
|
+
const wrapped = wrapChromeStartContainer(chromeStart, exited ? chromeBody : chromeBody + tail, exited, documentLineEnding(doc));
|
|
153
98
|
return exited ? wrapped + middle + tail : wrapped;
|
|
154
99
|
}
|
|
155
100
|
return startTail + middle + endLead + endHead;
|
|
156
101
|
}
|
|
157
102
|
// ── Internal ───────────────────────────────────────────────────────────────
|
|
158
|
-
/**
|
|
159
|
-
* Table portion for the half-open cell range `[startCellIdx, endCellIdxExclusive)`. Selection
|
|
160
|
-
* is row-rectangular by GFM constraint, so emit `[startRow..endRow] × all columns`.
|
|
161
|
-
*/
|
|
103
|
+
/** The table rows a kept table edge's cells touch, every column included, as a sub-table. */
|
|
162
104
|
function emitTablePortion(table, startCellIdx, endCellIdxExclusive) {
|
|
163
105
|
if (startCellIdx >= endCellIdxExclusive)
|
|
164
106
|
return '';
|
|
165
107
|
const colCount = metadataOf(table, 'table').columnCount;
|
|
166
|
-
const allCellsCount = table.children.length * colCount;
|
|
167
|
-
if (startCellIdx === 0 && endCellIdxExclusive === allCellsCount) {
|
|
168
|
-
return table.raw;
|
|
169
|
-
}
|
|
170
108
|
const startRow = cellRowCol(startCellIdx, colCount).row;
|
|
171
109
|
const endRow = cellRowCol(endCellIdxExclusive - 1, colCount).row;
|
|
172
110
|
return copyRectangleAsSubTable(table, { rowIdx: startRow, colIdx: 0 }, { rowIdx: endRow, colIdx: colCount - 1 });
|
|
173
111
|
}
|
|
174
|
-
/**
|
|
175
|
-
*
|
|
176
|
-
* of a strip container ("3. " so "3. thi" survives rather than "thi"). Without it CommonMark
|
|
177
|
-
* §5.2 stops a following "N." line from interrupting the paragraph and the round-trip
|
|
178
|
-
* collapses into one block. Eligibility is the descriptor's `strip` contract, not a kind list.
|
|
179
|
-
* Sole-child is required: earlier siblings sit between the marker and the leaf's raw.
|
|
180
|
-
*/
|
|
112
|
+
/** The list or quote marker a partial slice of a sole-child leaf keeps ("3. thi", not "thi"):
|
|
113
|
+
* without it, a following "N." line joins the pasted paragraph and the text becomes one block. */
|
|
181
114
|
function soleChildContainerPrefix(doc, leafPath, leafRaw) {
|
|
182
115
|
const parent = nodeAt(doc, leafPath.slice(0, -1));
|
|
183
116
|
if (!parent || !isBlockNode(parent) || !parent.children)
|
|
@@ -192,13 +125,8 @@ function soleChildContainerPrefix(doc, leafPath, leafRaw) {
|
|
|
192
125
|
return null;
|
|
193
126
|
return parent.raw.slice(0, parent.raw.length - leafRaw.length);
|
|
194
127
|
}
|
|
195
|
-
/**
|
|
196
|
-
*
|
|
197
|
-
* wrapper isn't faithful. Both chrome endpoint paths consult this and nothing else, so the
|
|
198
|
-
* rule cannot hold on one endpoint and not the other. Only `'opaque'` qualifies: its syntax is
|
|
199
|
-
* an opener plus a closer, so a truncated chrome IS an opener. `'strip'` has nothing to close
|
|
200
|
-
* (`soleChildContainerPrefix` is its seam); `'grid'` declares no chrome and rides the table arm.
|
|
201
|
-
*/
|
|
128
|
+
/** The kind's `rebuildRaw` when a copy endpoint in `container`'s title line can be re-emitted as
|
|
129
|
+
* a truncated opener; only an `'opaque'` container's shortened title stays a valid opener. */
|
|
202
130
|
function chromeWrapperRebuild(container, childIndex) {
|
|
203
131
|
if (!isReservedChromeChild(container, childIndex))
|
|
204
132
|
return null;
|
|
@@ -207,13 +135,8 @@ function chromeWrapperRebuild(container, childIndex) {
|
|
|
207
135
|
return null;
|
|
208
136
|
return descriptor.rebuildRaw ?? null;
|
|
209
137
|
}
|
|
210
|
-
/**
|
|
211
|
-
*
|
|
212
|
-
* emits wrapper-less bytes that reparse to a bare paragraph, losing the kind on paste, so
|
|
213
|
-
* synthesize a chrome-only container (truncated chrome, empty body) and run the kind's own
|
|
214
|
-
* rebuildRaw. Metadata is shallow-copied (primitive-valued by G1.6) because rebuildRaw is
|
|
215
|
-
* plugin code fed a node that would otherwise alias the LIVE tree.
|
|
216
|
-
*/
|
|
138
|
+
/** The bytes for a copy that ends inside a container's title line, rebuilt as a container with
|
|
139
|
+
* an empty body, since a plain `raw.slice` would paste back as a bare paragraph. */
|
|
217
140
|
function endChromeContainerBytes(doc, end, endRaw, endOffset) {
|
|
218
141
|
const childIndex = end.path[end.path.length - 1];
|
|
219
142
|
const parent = nodeAt(doc, end.path.slice(0, -1));
|
|
@@ -226,6 +149,7 @@ function endChromeContainerBytes(doc, end, endRaw, endOffset) {
|
|
|
226
149
|
kind: parent.kind,
|
|
227
150
|
leadingTrivia: '',
|
|
228
151
|
raw: '',
|
|
152
|
+
// `rebuildRaw` is plugin code, so it gets a copy of the metadata, never the live tree's.
|
|
229
153
|
metadata: parent.metadata ? cloneMetadata(parent.metadata) : undefined,
|
|
230
154
|
innerPrefix: '',
|
|
231
155
|
innerSuffix: '',
|
|
@@ -240,10 +164,8 @@ function endChromeContainerBytes(doc, end, endRaw, endOffset) {
|
|
|
240
164
|
rebuildRaw(synthetic);
|
|
241
165
|
return synthetic.raw;
|
|
242
166
|
}
|
|
243
|
-
/**
|
|
244
|
-
*
|
|
245
|
-
* collected body is faithful; null when it isn't. Eligibility is `chromeWrapperRebuild`'s.
|
|
246
|
-
*/
|
|
167
|
+
/** The container whose title line the copy starts inside, when its opener can be re-emitted
|
|
168
|
+
* around the collected body. */
|
|
247
169
|
function startChromeContainer(doc, start, startRaw, startOffset) {
|
|
248
170
|
const containerPath = start.path.slice(0, -1);
|
|
249
171
|
const container = nodeAt(doc, containerPath);
|
|
@@ -259,20 +181,15 @@ function startChromeContainer(doc, start, startRaw, startOffset) {
|
|
|
259
181
|
rebuildRaw
|
|
260
182
|
};
|
|
261
183
|
}
|
|
262
|
-
/**
|
|
263
|
-
*
|
|
264
|
-
|
|
265
|
-
* widens when its body reproduces the terminator, so opener and closer derived in the same call
|
|
266
|
-
* cannot disagree about width. `exited` means the walk left the subtree, i.e. the body ran to
|
|
267
|
-
* the end, so the trailing inner trivia belongs to the copy; otherwise line-terminate instead.
|
|
268
|
-
*/
|
|
269
|
-
function wrapChromeStartContainer(start, body, exited) {
|
|
184
|
+
/** Re-emits the container around `body` in one `rebuildRaw` call, so a fence that widens for its
|
|
185
|
+
* body keeps opener and closer in agreement. `exited`: the selection ran past the container. */
|
|
186
|
+
function wrapChromeStartContainer(start, body, exited, ending) {
|
|
270
187
|
const { node } = start;
|
|
271
188
|
const innerSuffix = exited ? (node.innerSuffix ?? '') : '';
|
|
272
189
|
const synthetic = makeBlockNode({
|
|
273
190
|
kind: node.kind,
|
|
274
191
|
leadingTrivia: '',
|
|
275
|
-
// The live raw, so the rebuild
|
|
192
|
+
// The live raw, so the rebuild copies the closer line's own line ending.
|
|
276
193
|
raw: node.raw,
|
|
277
194
|
metadata: node.metadata ? cloneMetadata(node.metadata) : undefined,
|
|
278
195
|
innerPrefix: node.innerPrefix ?? '',
|
|
@@ -284,36 +201,16 @@ function wrapChromeStartContainer(start, body, exited) {
|
|
|
284
201
|
makeBlockNode({
|
|
285
202
|
kind: 'paragraph',
|
|
286
203
|
leadingTrivia: '',
|
|
287
|
-
raw: innerSuffix === '' && body !== ''
|
|
204
|
+
raw: innerSuffix === '' && body !== ''
|
|
205
|
+
? terminateLine(body, trailingLineEnding(node.raw, ending))
|
|
206
|
+
: body
|
|
288
207
|
})
|
|
289
208
|
]
|
|
290
209
|
});
|
|
291
210
|
start.rebuildRaw(synthetic);
|
|
292
211
|
return synthetic.raw;
|
|
293
212
|
}
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
*/
|
|
298
|
-
function promoteToContainer(doc, leafPath, otherPath, side) {
|
|
299
|
-
const lcaDepth = sharedPrefixLength(leafPath, otherPath);
|
|
300
|
-
let bestPath = null;
|
|
301
|
-
for (let depth = leafPath.length - 1; depth > lcaDepth; depth--) {
|
|
302
|
-
const parentPath = leafPath.slice(0, depth);
|
|
303
|
-
const parent = nodeAt(doc, parentPath);
|
|
304
|
-
if (!parent || !parent.children)
|
|
305
|
-
break;
|
|
306
|
-
const childIndex = leafPath[depth];
|
|
307
|
-
if (side === 'start' && childIndex !== 0)
|
|
308
|
-
break;
|
|
309
|
-
if (side === 'end' && childIndex !== parent.children.length - 1)
|
|
310
|
-
break;
|
|
311
|
-
bestPath = parentPath;
|
|
312
|
-
}
|
|
313
|
-
if (!bestPath || bestPath.length <= lcaDepth)
|
|
314
|
-
return null;
|
|
315
|
-
const node = nodeAt(doc, bestPath);
|
|
316
|
-
if (!node || !isBlockNode(node))
|
|
317
|
-
return null;
|
|
318
|
-
return { path: bestPath, raw: node.raw };
|
|
213
|
+
function rawAt(doc, path) {
|
|
214
|
+
const node = nodeAt(doc, path);
|
|
215
|
+
return node && isBlockNode(node) ? node.raw : '';
|
|
319
216
|
}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The block a range
|
|
3
|
-
* inside
|
|
4
|
-
* its
|
|
2
|
+
* The block a range covers whole, for the paste and typing paths that replace it, read off
|
|
3
|
+
* `rangeCoverage`. There is no join inside such a range to merge at: the block leaves the tree, so
|
|
4
|
+
* the new bytes go into its list position rather than at a caret in whatever block took it.
|
|
5
5
|
*/
|
|
6
|
-
import type {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
* rather than characters: the table's own coverage rule is `cross-block/paste.ts`'s. */
|
|
10
|
-
export declare function blockCoveredWhole(doc: DocumentView, anchor: SelectionPoint | null, focus: SelectionPoint | null): number[] | null;
|
|
6
|
+
import type { RangeCoverage } from './range-coverage';
|
|
7
|
+
/** The one block both endpoints sit in and the range holds whole, a table included, or null. */
|
|
8
|
+
export declare function blockCoveredWhole(coverage: RangeCoverage): number[] | null;
|
|
@@ -1,24 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The block a range
|
|
3
|
-
* inside
|
|
4
|
-
* its
|
|
2
|
+
* The block a range covers whole, for the paste and typing paths that replace it, read off
|
|
3
|
+
* `rangeCoverage`. There is no join inside such a range to merge at: the block leaves the tree, so
|
|
4
|
+
* the new bytes go into its list position rather than at a caret in whatever block took it.
|
|
5
5
|
*/
|
|
6
|
-
import { displayLength } from '../core/lines';
|
|
7
|
-
import { isBlockNode, nodeAt } from '../tree-operations/node-primitives';
|
|
8
6
|
import { pathsEqual } from './path-math';
|
|
9
|
-
/** The block both endpoints
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (!
|
|
7
|
+
/** The one block both endpoints sit in and the range holds whole, a table included, or null. */
|
|
8
|
+
export function blockCoveredWhole(coverage) {
|
|
9
|
+
const { start, end } = coverage.range;
|
|
10
|
+
if (!pathsEqual(start.path, end.path) || coverage.wholeRoots.length !== 1)
|
|
13
11
|
return null;
|
|
14
|
-
|
|
15
|
-
return null;
|
|
16
|
-
if (anchor.cellCoordinate || focus.cellCoordinate)
|
|
17
|
-
return null;
|
|
18
|
-
const node = nodeAt(doc, anchor.path);
|
|
19
|
-
if (!node || !isBlockNode(node))
|
|
20
|
-
return null;
|
|
21
|
-
const low = Math.min(anchor.offset, focus.offset);
|
|
22
|
-
const high = Math.max(anchor.offset, focus.offset);
|
|
23
|
-
return low === 0 && high >= displayLength(node.raw) ? anchor.path.slice() : null;
|
|
12
|
+
return coverage.wholeRoots[0].slice();
|
|
24
13
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* The cross-block branch of copy and cut, shared by every editable block and the editor root:
|
|
3
|
+
* each block keeps its own single-block logic and delegates the cross-block case here, a cell
|
|
4
|
+
* rectangle included. The boolean return lets callers keep their own fall-through.
|
|
4
5
|
*/
|
|
5
6
|
import type { DocumentGetter } from '../../editor-keys';
|
|
6
7
|
import type { CrossBlockHandlers } from './dispatch';
|
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* The cross-block branch of copy and cut, shared by every editable block and the editor root:
|
|
3
|
+
* each block keeps its own single-block logic and delegates the cross-block case here, a cell
|
|
4
|
+
* rectangle included. The boolean return lets callers keep their own fall-through.
|
|
4
5
|
*/
|
|
5
6
|
import { collectCrossBlockText } from '../clipboard-text';
|
|
7
|
+
import { gridClipboard } from '../grid-selection';
|
|
8
|
+
import { coverRange, rangeCoverage } from '../range-coverage';
|
|
6
9
|
export function writeCrossBlockCopy(e, deps) {
|
|
7
10
|
const { selection } = deps;
|
|
8
11
|
if (!selection.isCrossBlock || !selection.anchor || !selection.focus)
|
|
9
12
|
return false;
|
|
10
13
|
e.preventDefault();
|
|
11
|
-
|
|
14
|
+
const doc = deps.getDoc();
|
|
15
|
+
const coverage = rangeCoverage(doc, coverRange(doc, selection.anchor, selection.focus));
|
|
16
|
+
const cells = coverage.grid && gridClipboard(doc, coverage.grid);
|
|
17
|
+
e.clipboardData?.setData('text/plain', cells ? cells.text : collectCrossBlockText(doc, coverage));
|
|
18
|
+
// A rectangle of cells also goes on as an HTML table, which spreadsheets read.
|
|
19
|
+
if (cells)
|
|
20
|
+
e.clipboardData?.setData('text/html', cells.html);
|
|
12
21
|
return true;
|
|
13
22
|
}
|
|
14
23
|
export async function writeCrossBlockCut(e, deps) {
|
|
15
24
|
if (!writeCrossBlockCopy(e, deps))
|
|
16
25
|
return false;
|
|
17
26
|
// Clipboard written synchronously above, so the cut survives an interrupted delete.
|
|
18
|
-
await deps.crossBlock.
|
|
27
|
+
await deps.crossBlock.performCrossBlockCut();
|
|
19
28
|
return true;
|
|
20
29
|
}
|
|
@@ -1,81 +1,85 @@
|
|
|
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
|
-
import type { BlockEditActions
|
|
5
|
+
import type { BlockEditActions } from '../../action-contracts';
|
|
8
6
|
import type { BlockComponent } from '../../block-component';
|
|
9
|
-
import type { BlockElLookup, DocumentGetter
|
|
7
|
+
import type { BlockElLookup, DocumentGetter } from '../../editor-keys';
|
|
10
8
|
import type { UserScrollport } from '../../cursor/scroll-ancestors';
|
|
9
|
+
import type { ScrollOwner } from '../../cursor/scroll-owner';
|
|
11
10
|
import type { SelectionState } from '../selection-state.svelte';
|
|
12
|
-
import type {
|
|
13
|
-
import type {
|
|
11
|
+
import type { SelectedWidgetHandle } from '../primitives';
|
|
12
|
+
import type { CaretMemory } from '../../cursor/caret-memory';
|
|
13
|
+
import type { CaretLanding } from '../caret-landing';
|
|
14
14
|
import type { CommitController } from '../../action-contracts';
|
|
15
|
-
import type {
|
|
16
|
-
import type { CommandErrorSink, CrossBlockCommandRouter } from '../../schema/block-commands';
|
|
15
|
+
import type { CommandDispatchContext } from '../../schema/block-commands';
|
|
17
16
|
import type { EditorEvents } from '../../editor-events';
|
|
18
|
-
import type {
|
|
17
|
+
import type { Reading } from '../../schema/reading';
|
|
19
18
|
import type { PluginActivation } from '../../schema/plugin-activation';
|
|
20
19
|
import type { PasteCommitCoordinator } from '../../tree-operations/paste/paste-deps';
|
|
20
|
+
import { type PaddingPress } from './pointer';
|
|
21
21
|
export interface CrossBlockDispatchContext {
|
|
22
22
|
getEl: () => HTMLElement | null;
|
|
23
23
|
getMyPath: () => number[];
|
|
24
|
-
getIndex: () => number;
|
|
25
24
|
selection: SelectionState;
|
|
26
25
|
getDoc: DocumentGetter;
|
|
27
26
|
getBlockElByPath: BlockElLookup;
|
|
27
|
+
/** Where a collapse, an extend's parked caret and a command's target block are put down. */
|
|
28
|
+
caretLanding: Pick<CaretLanding, 'restore' | 'park' | 'mount'>;
|
|
29
|
+
/** A mount for the delete, typing and paste over a range, which still place their own caret. */
|
|
28
30
|
revealPath: (path: number[]) => Promise<BlockComponent | null>;
|
|
29
31
|
getEditorRoot: () => HTMLElement | null;
|
|
30
32
|
/** What autoscrolls a drag-select that reaches an edge: the root, the host's scroller, or the
|
|
31
33
|
* window. See `cursor/scroll-ancestors`. */
|
|
32
34
|
getScrollHost: () => UserScrollport | null;
|
|
35
|
+
/** Brings the endpoint a keyboard extend reached to the nearest edge. */
|
|
36
|
+
scrollOwner: Pick<ScrollOwner, 'place'>;
|
|
33
37
|
/** Aborted when the owning editor unmounts. See the document facet's `lifetime`. */
|
|
34
38
|
getEditorLifetime: () => AbortSignal | null;
|
|
35
|
-
|
|
36
|
-
edgeAffinity: EdgeAffinityState;
|
|
39
|
+
caretMemory: CaretMemory;
|
|
37
40
|
blockEdit: BlockEditActions;
|
|
38
41
|
controller: CommitController;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
* nullable like `pluginEditor`, so a new construction site can't silently skip the thread. */
|
|
45
|
-
linkRef: LinkReferenceResolverRef | undefined;
|
|
46
|
-
onCommandError: CommandErrorSink | undefined;
|
|
47
|
-
/** The arm a format chord takes over the live range; the seam routes there rather than
|
|
48
|
-
* declining. Non-nullable: without it a rewrite chord is swallowed and nothing else. */
|
|
49
|
-
crossBlockCommands: CrossBlockCommandRouter;
|
|
50
|
-
getKeybindingOverrides: () => KeybindingOverrideMap;
|
|
42
|
+
/** How the editor reads its bytes: the delete's join cleanup and the paste reparse read it, and
|
|
43
|
+
* the destructive branches refuse its reading mode. */
|
|
44
|
+
reading: Reading;
|
|
45
|
+
/** The editor's command dispatch, which runs a chord pressed over a range. */
|
|
46
|
+
commands: CommandDispatchContext;
|
|
51
47
|
pasteCoordinator: PasteCommitCoordinator;
|
|
52
|
-
/**
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
/** The plugins this instance activated, forwarded to the paste-transform pipeline.
|
|
56
|
-
* Required-nullable like `grammar`; `undefined` means every installed plugin. */
|
|
57
|
-
activePlugins: PluginActivation | undefined;
|
|
58
|
-
/** The instance event surface, the paste arm's only channel for a gesture it consumed but
|
|
48
|
+
/** The plugins this instance activated, forwarded to the paste hooks. */
|
|
49
|
+
activePlugins: PluginActivation;
|
|
50
|
+
/** The editor's event emitter, the paste handler's only channel for a gesture it consumed but
|
|
59
51
|
* could not land. Non-nullable: skipping it drops a paste in silence. */
|
|
60
52
|
events: EditorEvents;
|
|
61
|
-
|
|
62
|
-
|
|
53
|
+
/** An image selected whole, which a shift-press grows its range from. */
|
|
54
|
+
selectedWidget: SelectedWidgetHandle;
|
|
55
|
+
/** Svelte's `tick()`, awaited after mutations so the DOM has updated. */
|
|
63
56
|
afterReactivity: () => Promise<void>;
|
|
64
57
|
}
|
|
58
|
+
/** What the block handling a press knows about it that the shared pointer handler cannot read. */
|
|
59
|
+
export interface PointerPressOptions {
|
|
60
|
+
/** The press landed on a non-editable inline widget (an emoji), which the browser starts no
|
|
61
|
+
* drag from, so the block paints the range itself or the drag selects nothing. */
|
|
62
|
+
paintSameBlock?: boolean;
|
|
63
|
+
/** The raw offset the press anchors at, from a block that resolves its own press better than
|
|
64
|
+
* the browser's hit test does. Absent, the point is hit-tested. */
|
|
65
|
+
anchorOffset?: number;
|
|
66
|
+
/** A block that runs its own drag from a press (a table's cell rectangle) installs it here, told
|
|
67
|
+
* of a press in the padding the editor placed itself, where no native drag runs. */
|
|
68
|
+
ownDrag?: (padding: PaddingPress | null) => void;
|
|
69
|
+
}
|
|
65
70
|
export interface CrossBlockHandlers {
|
|
66
71
|
/** Returns true if the event was fully handled (caller should return). */
|
|
67
72
|
handleKeyDown(e: KeyboardEvent): Promise<boolean>;
|
|
68
|
-
handlePointerDown(e: PointerEvent): boolean;
|
|
69
|
-
/** `replacement` stands in for the clipboard
|
|
70
|
-
* payload
|
|
71
|
-
* programmatic insertion: no gesture to consume, so `replacement` carries the payload. */
|
|
73
|
+
handlePointerDown(e: PointerEvent, press?: PointerPressOptions): boolean;
|
|
74
|
+
/** `replacement` stands in for the clipboard text, for a caller that already converted the
|
|
75
|
+
* payload and can't re-read the event after its awaits. A null event is a scripted insert. */
|
|
72
76
|
handlePaste(e: ClipboardEvent | null, replacement?: string): Promise<boolean>;
|
|
73
77
|
handleBeforeInput(e: InputEvent): Promise<boolean>;
|
|
74
|
-
/** Type-replace from a
|
|
75
|
-
*
|
|
78
|
+
/** Type-replace from a caller with no `InputEvent`: the editor root, where a range over a block
|
|
79
|
+
* with no character position leaves no editable element for `beforeinput` to fire on. */
|
|
76
80
|
insertText(text: string): Promise<boolean>;
|
|
77
81
|
handleCompositionStart(): boolean;
|
|
78
|
-
/**
|
|
79
|
-
|
|
82
|
+
/** The delete half of a cut, run once the handler wrote the clipboard synchronously. */
|
|
83
|
+
performCrossBlockCut(): Promise<void>;
|
|
80
84
|
}
|
|
81
85
|
export declare function createCrossBlockHandlers(ctx: CrossBlockDispatchContext): CrossBlockHandlers;
|