@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,32 +1,37 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Reactive state for the editor
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* Reactive state for the selections the editor owns: a cross-block range, a gap caret
|
|
3
|
+
* (`gap-caret.ts`), or an inline widget selected whole. At most one is live, since every mutator
|
|
4
|
+
* writes all three through one private writer; all are null while the browser's own selection
|
|
5
|
+
* rules. Transitions: `docs/design/editor.md` § Cross-block selection.
|
|
6
6
|
*/
|
|
7
7
|
import type { DocumentView } from '../core/node-views';
|
|
8
8
|
import type { GapCaretPosition } from './gap-caret';
|
|
9
|
-
import type { SelectionEndpoint, SelectionPoint } from './primitives';
|
|
9
|
+
import type { SelectedWidgetRange, SelectionEndpoint, SelectionPoint, WidgetTarget } from './primitives';
|
|
10
10
|
export interface SelectionStateOptions {
|
|
11
|
-
/**
|
|
12
|
-
*
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
*
|
|
18
|
-
* without it `isCustomRendered` cannot see intra-table rects and mirrors `isCrossBlock`.
|
|
19
|
-
*/
|
|
11
|
+
/** Fires after any mutation, or once at the end of a {@link SelectionState.batch} that held
|
|
12
|
+
* one; `placementOnly` says a caret placement was all the flush held. */
|
|
13
|
+
onChange?: (change: {
|
|
14
|
+
placementOnly: boolean;
|
|
15
|
+
}) => void;
|
|
16
|
+
/** Document accessor. Absent in harnesses that only exercise cross-block semantics, where no
|
|
17
|
+
* point is normalized and a table endpoint is stored as written. */
|
|
20
18
|
getDoc?: () => DocumentView;
|
|
19
|
+
/** The live span of the widget a selection holds, or null once none starts there. Absent, a
|
|
20
|
+
* selected widget has no range and reports the offset it was entered at. */
|
|
21
|
+
widgetSpan?: (target: WidgetTarget) => {
|
|
22
|
+
start: number;
|
|
23
|
+
end: number;
|
|
24
|
+
} | null;
|
|
21
25
|
}
|
|
22
26
|
export declare function createSelectionState(options?: SelectionStateOptions): SelectionState;
|
|
27
|
+
export type RestoreRoute = 'collapsed' | 'single-block' | 'whole-block' | 'custom';
|
|
23
28
|
export interface SelectionState {
|
|
24
29
|
readonly anchor: SelectionPoint | null;
|
|
25
30
|
readonly focus: SelectionPoint | null;
|
|
26
31
|
readonly isCrossBlock: boolean;
|
|
27
32
|
/**
|
|
28
33
|
* True when the overlay paints instead of the native browser highlight: every
|
|
29
|
-
* cross-block selection, plus
|
|
34
|
+
* cross-block selection, plus a rectangle of two or more cells inside one table.
|
|
30
35
|
*/
|
|
31
36
|
readonly isCustomRendered: boolean;
|
|
32
37
|
readonly start: SelectionPoint | null;
|
|
@@ -34,45 +39,48 @@ export interface SelectionState {
|
|
|
34
39
|
readonly selectAllCount: number;
|
|
35
40
|
/** The third mode: a collapsed caret in a between-blocks boundary (`gap-caret.ts`). */
|
|
36
41
|
readonly gapCaret: GapCaretPosition | null;
|
|
37
|
-
/**
|
|
38
|
-
*
|
|
39
|
-
* dragged inside it. The stored pair spans the block's bytes on a shared path, which the
|
|
40
|
-
* same-path guard would otherwise refuse, so the overlay reads this to paint it as a unit.
|
|
41
|
-
*/
|
|
42
|
+
/** One block taken whole as the range (a drag inside a leaf with no text, such as an equation),
|
|
43
|
+
* which the same-path check would otherwise refuse; the overlay paints it as a unit. */
|
|
42
44
|
readonly wholeUnitPath: number[] | null;
|
|
45
|
+
/** The inline widget selected whole, or null. Copied out, like `gapCaret`. */
|
|
46
|
+
readonly widget: WidgetTarget | null;
|
|
47
|
+
/** The selected widget's span read from the live document, since its own commits move its
|
|
48
|
+
* end; null with no widget selected, or once no widget starts at its byte. */
|
|
49
|
+
widgetRange(): SelectedWidgetRange | null;
|
|
50
|
+
/** The caret a selected widget stands for: the edge of its span it was entered from. */
|
|
51
|
+
widgetCaret(): SelectionPoint | null;
|
|
43
52
|
enterCrossBlock(anchor: SelectionEndpoint, focus: SelectionEndpoint): void;
|
|
44
53
|
extendFocus(point: SelectionEndpoint): void;
|
|
45
54
|
collapse(): void;
|
|
46
55
|
clear(): void;
|
|
56
|
+
/** Drops whatever is live without notifying, for a document swap: it addresses the outgoing
|
|
57
|
+
* tree, and the restore that follows announces the new selection. */
|
|
58
|
+
dropForDocumentSwap(): void;
|
|
47
59
|
setGapCaret(pos: GapCaretPosition): void;
|
|
48
60
|
clearGapCaret(): void;
|
|
61
|
+
/** Selects a widget whole and announces it. A widget ending by itself announces nothing: the
|
|
62
|
+
* caret that replaces it announces itself. */
|
|
63
|
+
selectWidget(target: WidgetTarget): void;
|
|
64
|
+
/** Moves a selected widget by `delta` bytes when it sits in `path` at or past `editEnd`: an
|
|
65
|
+
* edit to another widget earlier in the block moved its bytes, not its identity. Silent. */
|
|
66
|
+
followWidgetEdit(path: readonly number[], editEnd: number, delta: number): void;
|
|
49
67
|
incrementSelectAllCount(): void;
|
|
50
68
|
resetSelectAllCount(): void;
|
|
51
|
-
/**
|
|
52
|
-
*
|
|
53
|
-
* back through `getSelection()`, which also answers for a NATIVE caret the restore road
|
|
54
|
-
* lands and for a document a `source` swap replaced under it — neither of which moves a
|
|
55
|
-
* field the mutators above guard on. Coalesces inside a {@link SelectionState.batch}.
|
|
56
|
-
*/
|
|
69
|
+
/** Notifies for a change no mutator above sees (a caret the editor placed, a restore, a source
|
|
70
|
+
* swap), since subscribers read back through `getSelection()`. Coalesces inside a batch. */
|
|
57
71
|
announceSelection(): void;
|
|
58
72
|
/**
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
* caret must wrap both: subscribers read the editor back on notify, so a notify between
|
|
62
|
-
* the two reports a caret the DOM half has not moved yet.
|
|
73
|
+
* Notifies for a caret placement. The flush says whether a placement was all it held, so a
|
|
74
|
+
* listener can drop one that put the caret where it already was.
|
|
63
75
|
*/
|
|
76
|
+
announcePlacement(): void;
|
|
77
|
+
/** Holds the change notification until `mutate` returns, then fires once; nests, and flushes on
|
|
78
|
+
* a throw. Wrap a state write and its caret placement so no notify lands between the two. */
|
|
64
79
|
batch(mutate: () => void): void;
|
|
65
|
-
/**
|
|
66
|
-
*
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
*/
|
|
70
|
-
restoreRoute(anchor: SelectionPoint, focus: SelectionPoint): 'collapsed' | 'single-block' | 'custom';
|
|
71
|
-
/**
|
|
72
|
-
* Where a caret lands for `point`: an endpoint inside a table addresses the table block by
|
|
73
|
-
* cell INDEX, so its landing is the cell's own deep `[table,row,col]` leaf at offset 0.
|
|
74
|
-
* Any other point lands as itself. Every reveal and every park goes through here, so no
|
|
75
|
-
* caller can seat a cell index as a char offset on the table wrapper.
|
|
76
|
-
*/
|
|
80
|
+
/** Classifies a pair `resolveSelectionPoint` returned, for a DOM restore, touching no state. A
|
|
81
|
+
* same-path pair over a block with no character position is that block held whole. */
|
|
82
|
+
restoreRoute(anchor: SelectionPoint, focus: SelectionPoint): RestoreRoute;
|
|
83
|
+
/** Where a caret lands for `point`: a cell endpoint in its cell's `[table, row, col]` leaf at
|
|
84
|
+
* offset 0, any other point as itself. Every mount and caret placement goes through here. */
|
|
77
85
|
cellLandingFor(point: SelectionPoint): SelectionPoint;
|
|
78
86
|
}
|
|
@@ -1,34 +1,55 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Reactive state for the editor
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* Reactive state for the selections the editor owns: a cross-block range, a gap caret
|
|
3
|
+
* (`gap-caret.ts`), or an inline widget selected whole. At most one is live, since every mutator
|
|
4
|
+
* writes all three through one private writer; all are null while the browser's own selection
|
|
5
|
+
* rules. Transitions: `docs/design/editor.md` § Cross-block selection.
|
|
6
6
|
*/
|
|
7
|
-
import { nodeAt } from '../tree-operations/node-primitives';
|
|
7
|
+
import { isBlockNode, nodeAt } from '../tree-operations/node-primitives';
|
|
8
8
|
import { isWholeBlockEndpoint, normalize } from './primitives';
|
|
9
|
-
import { cellEndpointDeepPath, normalizeTableEndpoint, snapCrossBlockTableEndpoints } from './table-endpoint-snap';
|
|
9
|
+
import { cellEndpointDeepPath, normalizeTableEndpoint, snapCrossBlockTableEndpoints, wholeTableEndpoint } from './table-endpoint-snap';
|
|
10
10
|
import { normalizeCharEndpoint } from './char-endpoint-snap';
|
|
11
|
-
import { pathsEqual } from './path-math';
|
|
11
|
+
import { comparePaths, pathsEqual } from './path-math';
|
|
12
12
|
import { displayLength } from '../core/lines';
|
|
13
13
|
import { assertInvariant } from '../assert';
|
|
14
14
|
import { checkCrossBlockEndpointCoordinates } from '../invariants/selection-endpoints';
|
|
15
|
+
import { isWholeBlockUnit } from '../schema/whole-block-unit';
|
|
15
16
|
export function createSelectionState(options) {
|
|
16
17
|
return new SelectionStateImpl(options);
|
|
17
18
|
}
|
|
18
19
|
// ── Implementation ──────────────────────────────────────────────────────────
|
|
20
|
+
// Normalization flags both corners of a rectangle, so either flag names the pair's space.
|
|
21
|
+
function isCellPair(a, f) {
|
|
22
|
+
return a.cellCoordinate === true || f.cellCoordinate === true;
|
|
23
|
+
}
|
|
19
24
|
class SelectionStateImpl {
|
|
25
|
+
// Separate cells, so a reader of one kind (the image overlay reads the widget) doesn't re-run
|
|
26
|
+
// on every write of another, such as each move of a drag.
|
|
20
27
|
#anchor = $state(null);
|
|
21
28
|
#focus = $state(null);
|
|
22
29
|
#gapCaret = $state(null);
|
|
23
30
|
#wholeUnit = $state(null);
|
|
31
|
+
#widget = $state(null);
|
|
24
32
|
#selectAllCount = $state(0);
|
|
25
33
|
#onChange;
|
|
26
34
|
#getDoc;
|
|
35
|
+
#widgetSpan;
|
|
27
36
|
#batchDepth = 0;
|
|
28
37
|
#notifyPending = false;
|
|
38
|
+
// False once a notification that is not a caret placement joins the pending flush.
|
|
39
|
+
#placementOnly = true;
|
|
29
40
|
constructor(options) {
|
|
30
41
|
this.#onChange = options?.onChange;
|
|
31
42
|
this.#getDoc = options?.getDoc;
|
|
43
|
+
this.#widgetSpan = options?.widgetSpan;
|
|
44
|
+
}
|
|
45
|
+
// The only writer of the five cells, so no mutator can set one kind without ending the others.
|
|
46
|
+
#claim(next) {
|
|
47
|
+
const range = next && 'range' in next ? next.range : null;
|
|
48
|
+
this.#anchor = range?.anchor ?? null;
|
|
49
|
+
this.#focus = range?.focus ?? null;
|
|
50
|
+
this.#wholeUnit = range?.wholeUnit ?? null;
|
|
51
|
+
this.#gapCaret = next && 'gap' in next ? next.gap : null;
|
|
52
|
+
this.#widget = next && 'widget' in next ? next.widget : null;
|
|
32
53
|
}
|
|
33
54
|
batch(mutate) {
|
|
34
55
|
this.#batchDepth += 1;
|
|
@@ -39,16 +60,23 @@ class SelectionStateImpl {
|
|
|
39
60
|
this.#batchDepth -= 1;
|
|
40
61
|
if (this.#batchDepth === 0 && this.#notifyPending) {
|
|
41
62
|
this.#notifyPending = false;
|
|
42
|
-
this.#
|
|
63
|
+
this.#flush();
|
|
43
64
|
}
|
|
44
65
|
}
|
|
45
66
|
}
|
|
46
|
-
#notify() {
|
|
67
|
+
#notify(fromPlacement = false) {
|
|
68
|
+
if (!fromPlacement)
|
|
69
|
+
this.#placementOnly = false;
|
|
47
70
|
if (this.#batchDepth > 0) {
|
|
48
71
|
this.#notifyPending = true;
|
|
49
72
|
return;
|
|
50
73
|
}
|
|
51
|
-
this.#
|
|
74
|
+
this.#flush();
|
|
75
|
+
}
|
|
76
|
+
#flush() {
|
|
77
|
+
const placementOnly = this.#placementOnly;
|
|
78
|
+
this.#placementOnly = true;
|
|
79
|
+
this.#onChange?.({ placementOnly });
|
|
52
80
|
}
|
|
53
81
|
get anchor() {
|
|
54
82
|
return this.#anchor;
|
|
@@ -68,10 +96,27 @@ class SelectionStateImpl {
|
|
|
68
96
|
get wholeUnitPath() {
|
|
69
97
|
return this.#wholeUnit?.slice() ?? null;
|
|
70
98
|
}
|
|
99
|
+
get widget() {
|
|
100
|
+
const widget = this.#widget;
|
|
101
|
+
return widget && copyWidget(widget);
|
|
102
|
+
}
|
|
103
|
+
widgetRange() {
|
|
104
|
+
const widget = this.#widget;
|
|
105
|
+
const span = widget && this.#widgetSpan?.(copyWidget(widget));
|
|
106
|
+
return widget && span
|
|
107
|
+
? { path: widget.paragraphPath.slice(), start: span.start, end: span.end }
|
|
108
|
+
: null;
|
|
109
|
+
}
|
|
110
|
+
widgetCaret() {
|
|
111
|
+
const widget = this.#widget;
|
|
112
|
+
if (!widget)
|
|
113
|
+
return null;
|
|
114
|
+
const live = this.widgetRange();
|
|
115
|
+
const fromStart = widget.preSelectOffset === widget.sourceStart;
|
|
116
|
+
const offset = live ? (fromStart ? live.start : live.end) : widget.preSelectOffset;
|
|
117
|
+
return { path: widget.paragraphPath.slice(), offset };
|
|
118
|
+
}
|
|
71
119
|
get isCustomRendered() {
|
|
72
|
-
const getDoc = this.#getDoc;
|
|
73
|
-
if (!getDoc)
|
|
74
|
-
return this.isCrossBlock;
|
|
75
120
|
const anchor = this.#anchor;
|
|
76
121
|
const focus = this.#focus;
|
|
77
122
|
if (!anchor || !focus)
|
|
@@ -80,12 +125,8 @@ class SelectionStateImpl {
|
|
|
80
125
|
return true;
|
|
81
126
|
if (!pathsEqual(anchor.path, focus.path))
|
|
82
127
|
return true;
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
const node = nodeAt(getDoc(), anchor.path);
|
|
86
|
-
if (!node)
|
|
87
|
-
return false;
|
|
88
|
-
return node.kind === 'table';
|
|
128
|
+
// A same-path pair is one cell (the browser's) or a rectangle of cells (the overlay's).
|
|
129
|
+
return anchor.offset !== focus.offset && isCellPair(anchor, focus);
|
|
89
130
|
}
|
|
90
131
|
get start() {
|
|
91
132
|
return this.#normalizedSnapped()?.start ?? null;
|
|
@@ -108,34 +149,33 @@ class SelectionStateImpl {
|
|
|
108
149
|
return this.#selectAllCount;
|
|
109
150
|
}
|
|
110
151
|
enterCrossBlock(anchor, focus) {
|
|
111
|
-
|
|
112
|
-
//
|
|
113
|
-
// byte span and flagged, since below a same-path pair is refused as prose.
|
|
152
|
+
// Both ends on one block with no text: the block is the range, stored as its full span
|
|
153
|
+
// (a table's first and last cell) and flagged whole, as a same-path pair is refused below.
|
|
114
154
|
if (isWholeBlockEndpoint(anchor) &&
|
|
115
155
|
isWholeBlockEndpoint(focus) &&
|
|
116
156
|
pathsEqual(anchor.path, focus.path)) {
|
|
117
157
|
const path = anchor.path.slice();
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
158
|
+
const doc = this.#getDoc?.();
|
|
159
|
+
const a = (doc && wholeTableEndpoint(doc, path, 'start')) ?? { path, offset: 0 };
|
|
160
|
+
const f = (doc && wholeTableEndpoint(doc, path, 'end')) ?? {
|
|
161
|
+
path: path.slice(),
|
|
162
|
+
offset: this.#byteLengthAt(path)
|
|
163
|
+
};
|
|
164
|
+
this.#assertEndpointCoordinates(a, f);
|
|
165
|
+
this.#claim({ range: { anchor: a, focus: f, wholeUnit: path.slice() } });
|
|
121
166
|
this.#notify();
|
|
122
167
|
return;
|
|
123
168
|
}
|
|
124
|
-
this.#wholeUnit = null;
|
|
125
169
|
const a = this.#normalizePoint(anchor, focus.path);
|
|
126
170
|
const f = this.#normalizePoint(focus, anchor.path);
|
|
127
|
-
// A same-path
|
|
128
|
-
//
|
|
129
|
-
// share the table path but flag a cell coordinate, and the same-offset keyboard seed is
|
|
130
|
-
// kept so its immediate `extendFocus` has an anchor.
|
|
171
|
+
// A same-path text pair is a single-block range the browser owns, refused here where every
|
|
172
|
+
// entry path passes; a cell rectangle and the keyboard's equal-offset first pair are kept.
|
|
131
173
|
if (this.#isSamePathProseRange(a, f)) {
|
|
132
|
-
this.#
|
|
133
|
-
this.#focus = null;
|
|
174
|
+
this.#claim(null);
|
|
134
175
|
}
|
|
135
176
|
else {
|
|
136
177
|
this.#assertEndpointCoordinates(a, f);
|
|
137
|
-
this.#anchor
|
|
138
|
-
this.#focus = f;
|
|
178
|
+
this.#claim({ range: { anchor: a, focus: f, wholeUnit: null } });
|
|
139
179
|
}
|
|
140
180
|
this.#notify();
|
|
141
181
|
}
|
|
@@ -143,105 +183,105 @@ class SelectionStateImpl {
|
|
|
143
183
|
if (!this.#anchor) {
|
|
144
184
|
throw new Error('SelectionState.extendFocus called without an anchor');
|
|
145
185
|
}
|
|
146
|
-
|
|
147
|
-
//
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
// `offset !== offset` guard, unlike #isSamePathProseRange: extendFocus never seeds, so
|
|
157
|
-
// landing exactly on the anchor offset is a collapse that must not be stored either.
|
|
158
|
-
if (pathsEqual(this.#anchor.path, f.path) &&
|
|
159
|
-
!this.#anchor.cellCoordinate &&
|
|
160
|
-
!f.cellCoordinate) {
|
|
161
|
-
this.#anchor = null;
|
|
162
|
-
this.#focus = null;
|
|
186
|
+
// Leaving a whole-block range: its anchor is the block as a whole again, so the side it
|
|
187
|
+
// means (start below the new focus, end above it) is resolved afresh rather than kept at 0.
|
|
188
|
+
const anchor = this.#wholeUnit
|
|
189
|
+
? this.#normalizePoint({ path: this.#wholeUnit, wholeBlock: true }, point.path)
|
|
190
|
+
: this.#anchor;
|
|
191
|
+
const f = this.#normalizePoint(point, anchor.path);
|
|
192
|
+
// A focus back on the anchor's text leaf shrinks to a single-block range, even at the
|
|
193
|
+
// anchor's own offset: `extendFocus` never starts a pair, so landing there is a collapse.
|
|
194
|
+
if (pathsEqual(anchor.path, f.path) && !isCellPair(anchor, f)) {
|
|
195
|
+
this.#claim(null);
|
|
163
196
|
}
|
|
164
197
|
else {
|
|
165
|
-
this.#assertEndpointCoordinates(
|
|
166
|
-
this.#focus
|
|
198
|
+
this.#assertEndpointCoordinates(anchor, f);
|
|
199
|
+
this.#claim({ range: { anchor, focus: f, wholeUnit: null } });
|
|
167
200
|
}
|
|
168
201
|
this.#notify();
|
|
169
202
|
}
|
|
170
|
-
// G1.29 at the storing seam, the belt behind #normalizePoint: both entries carry it because
|
|
171
|
-
// both store an endpoint pair.
|
|
172
203
|
#byteLengthAt(path) {
|
|
173
204
|
const doc = this.#getDoc?.();
|
|
174
205
|
const node = doc ? nodeAt(doc, path) : null;
|
|
175
206
|
return node && 'raw' in node ? displayLength(node.raw) : 0;
|
|
176
207
|
}
|
|
208
|
+
// The endpoint coordinate check backs up `#normalizePoint` at every write of anchor and focus.
|
|
177
209
|
#assertEndpointCoordinates(anchor, focus) {
|
|
178
210
|
const getDoc = this.#getDoc;
|
|
179
211
|
if (!getDoc)
|
|
180
212
|
return;
|
|
181
213
|
assertInvariant('cross-block-endpoint-coordinates', () => checkCrossBlockEndpointCoordinates(getDoc(), anchor, focus));
|
|
182
214
|
}
|
|
183
|
-
// Same
|
|
184
|
-
// Equal-offset pairs are excluded so the keyboard
|
|
215
|
+
// Same text leaf, distinct offsets: the shape that must never enter cross-block state.
|
|
216
|
+
// Equal-offset pairs are excluded so the keyboard's starting pair survives to its extend.
|
|
185
217
|
#isSamePathProseRange(a, f) {
|
|
186
|
-
return
|
|
218
|
+
return pathsEqual(a.path, f.path) && !isCellPair(a, f) && a.offset !== f.offset;
|
|
187
219
|
}
|
|
188
|
-
// The
|
|
189
|
-
//
|
|
190
|
-
// char offset can never be stored outside the space its own block addresses (both funnels'
|
|
191
|
-
// headers). Never normalize at a call site instead. Idempotent; without a doc nothing can be
|
|
192
|
-
// measured, so points pass raw.
|
|
220
|
+
// The one place every entry path normalizes: a table endpoint becomes a flagged cell index and
|
|
221
|
+
// a character offset is clamped into its block. Without a document, points pass through.
|
|
193
222
|
#normalizePoint(point, otherPath) {
|
|
194
223
|
const getDoc = this.#getDoc;
|
|
195
224
|
if (!getDoc) {
|
|
196
225
|
return isWholeBlockEndpoint(point) ? { path: point.path.slice(), offset: 0 } : point;
|
|
197
226
|
}
|
|
198
227
|
const doc = getDoc();
|
|
199
|
-
if (isWholeBlockEndpoint(point))
|
|
200
|
-
|
|
228
|
+
if (isWholeBlockEndpoint(point)) {
|
|
229
|
+
const side = comparePaths(point.path, otherPath) > 0 ? 'end' : 'start';
|
|
230
|
+
return (wholeTableEndpoint(doc, point.path, side) ?? normalizeCharEndpoint(doc, point, otherPath));
|
|
231
|
+
}
|
|
201
232
|
if (point.cellCoordinate)
|
|
202
233
|
return point;
|
|
203
234
|
const snapped = normalizeTableEndpoint(doc, point.path, point.offset);
|
|
204
235
|
return snapped.cellCoordinate ? snapped : normalizeCharEndpoint(doc, snapped, otherPath);
|
|
205
236
|
}
|
|
206
237
|
collapse() {
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
this.#
|
|
238
|
+
const announce = this.#hasCaretClaim();
|
|
239
|
+
this.#claim(null);
|
|
240
|
+
if (announce)
|
|
241
|
+
this.#notify();
|
|
242
|
+
}
|
|
243
|
+
dropForDocumentSwap() {
|
|
244
|
+
this.#claim(null);
|
|
214
245
|
}
|
|
215
246
|
clear() {
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
this.#anchor = null;
|
|
219
|
-
this.#focus = null;
|
|
220
|
-
this.#gapCaret = null;
|
|
221
|
-
this.#wholeUnit = null;
|
|
247
|
+
const announce = this.#hasCaretClaim() || this.#selectAllCount !== 0;
|
|
248
|
+
this.#claim(null);
|
|
222
249
|
this.#selectAllCount = 0;
|
|
223
|
-
|
|
250
|
+
if (announce)
|
|
251
|
+
this.#notify();
|
|
224
252
|
}
|
|
225
|
-
//
|
|
226
|
-
//
|
|
253
|
+
// A range or a gap caret: what the clears announce ending. A widget is left out, since the
|
|
254
|
+
// caret that replaces it announces itself.
|
|
227
255
|
#hasCaretClaim() {
|
|
228
256
|
return this.#anchor !== null || this.#focus !== null || this.#gapCaret !== null;
|
|
229
257
|
}
|
|
230
|
-
// The
|
|
231
|
-
// copy is what keeps a caller's own position object from writing through.
|
|
258
|
+
// The copy keeps a caller's own position object from writing through.
|
|
232
259
|
setGapCaret(pos) {
|
|
233
|
-
this.#
|
|
234
|
-
this.#focus = null;
|
|
235
|
-
this.#wholeUnit = null;
|
|
236
|
-
this.#gapCaret = { parentPath: pos.parentPath.slice(), index: pos.index };
|
|
260
|
+
this.#claim({ gap: { parentPath: pos.parentPath.slice(), index: pos.index } });
|
|
237
261
|
this.#notify();
|
|
238
262
|
}
|
|
239
263
|
clearGapCaret() {
|
|
240
264
|
if (this.#gapCaret === null)
|
|
241
265
|
return;
|
|
242
|
-
this.#
|
|
266
|
+
this.#claim(null);
|
|
267
|
+
this.#notify();
|
|
268
|
+
}
|
|
269
|
+
selectWidget(target) {
|
|
270
|
+
this.#claim({ widget: copyWidget(target) });
|
|
243
271
|
this.#notify();
|
|
244
272
|
}
|
|
273
|
+
followWidgetEdit(path, editEnd, delta) {
|
|
274
|
+
const widget = this.#widget;
|
|
275
|
+
if (!widget || widget.sourceStart < editEnd || !pathsEqual(widget.paragraphPath, path))
|
|
276
|
+
return;
|
|
277
|
+
this.#claim({
|
|
278
|
+
widget: {
|
|
279
|
+
paragraphPath: widget.paragraphPath.slice(),
|
|
280
|
+
sourceStart: widget.sourceStart + delta,
|
|
281
|
+
preSelectOffset: widget.preSelectOffset + delta
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
}
|
|
245
285
|
incrementSelectAllCount() {
|
|
246
286
|
this.#selectAllCount += 1;
|
|
247
287
|
this.#notify();
|
|
@@ -251,22 +291,16 @@ class SelectionStateImpl {
|
|
|
251
291
|
return 'custom';
|
|
252
292
|
if (anchor.offset === focus.offset)
|
|
253
293
|
return 'collapsed';
|
|
254
|
-
|
|
255
|
-
// under the shared path) paints via the overlay; prose is a native range.
|
|
256
|
-
if (anchor.cellCoordinate || focus.cellCoordinate)
|
|
294
|
+
if (isCellPair(anchor, focus))
|
|
257
295
|
return 'custom';
|
|
258
|
-
const
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
const node = nodeAt(getDoc(), anchor.path);
|
|
262
|
-
return node?.kind === 'table' ? 'custom' : 'single-block';
|
|
296
|
+
const doc = this.#getDoc?.();
|
|
297
|
+
const node = doc ? nodeAt(doc, anchor.path) : null;
|
|
298
|
+
return node && isBlockNode(node) && isWholeBlockUnit(node) ? 'whole-block' : 'single-block';
|
|
263
299
|
}
|
|
264
300
|
cellLandingFor(point) {
|
|
265
301
|
const getDoc = this.#getDoc;
|
|
266
302
|
if (!getDoc)
|
|
267
303
|
return point;
|
|
268
|
-
// Resolution is the door's, on the node kind: a context-established intra-table endpoint
|
|
269
|
-
// is unflagged and still a cell index, and a non-table path answers null.
|
|
270
304
|
const deepPath = cellEndpointDeepPath(getDoc(), point);
|
|
271
305
|
return deepPath ? { path: deepPath, offset: 0 } : point;
|
|
272
306
|
}
|
|
@@ -279,4 +313,16 @@ class SelectionStateImpl {
|
|
|
279
313
|
announceSelection() {
|
|
280
314
|
this.#notify();
|
|
281
315
|
}
|
|
316
|
+
announcePlacement() {
|
|
317
|
+
this.#notify(true);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
// Copied at both ends, as the gap caret is: neither a caller's object nor a reader's copy can
|
|
321
|
+
// write the stored widget without a notification.
|
|
322
|
+
function copyWidget(target) {
|
|
323
|
+
return {
|
|
324
|
+
paragraphPath: target.paragraphPath.slice(),
|
|
325
|
+
sourceStart: target.sourceStart,
|
|
326
|
+
preSelectOffset: target.preSelectOffset
|
|
327
|
+
};
|
|
282
328
|
}
|
|
@@ -1,34 +1,37 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared keydown prelude for contenteditable blocks: Ctrl+A counter, cross-block dispatch,
|
|
3
|
-
*
|
|
3
|
+
* the caret memory's key note, undo/redo, arrow boundary navigation. Block-specific handlers
|
|
4
4
|
* (Enter, Backspace, Tab, formatting) stay in each component.
|
|
5
5
|
*/
|
|
6
6
|
import type { FocusActions, HistoryActions } from '../action-contracts';
|
|
7
|
-
import type {
|
|
8
|
-
import type {
|
|
9
|
-
import type {
|
|
7
|
+
import type { DocumentGetter } from '../editor-keys';
|
|
8
|
+
import type { CaretMemory } from '../cursor/caret-memory';
|
|
9
|
+
import type { ScrollOwner } from '../cursor/scroll-owner';
|
|
10
10
|
import type { SelectionState } from './selection-state.svelte';
|
|
11
11
|
import type { CrossBlockHandlers } from './cross-block/dispatch';
|
|
12
|
-
import type {
|
|
12
|
+
import type { CommandDispatchContext } from '../schema/block-commands';
|
|
13
|
+
import type { Reading } from '../schema/reading';
|
|
13
14
|
export interface SharedKeydownContext extends LandableBoundsContext {
|
|
14
15
|
getEl(): HTMLElement | null;
|
|
15
|
-
/** Current caret offset in raw-content coordinates (
|
|
16
|
+
/** Current caret offset in raw-content coordinates (the container's marker prefix excluded). */
|
|
16
17
|
getCursorOffset(): number | null;
|
|
17
|
-
/** Shift-selection focus offset in raw-content coordinates (
|
|
18
|
+
/** Shift-selection focus offset in raw-content coordinates (the marker prefix excluded). */
|
|
18
19
|
getFocusOffset(): number | null;
|
|
19
20
|
getIndex(): number;
|
|
20
21
|
getMyPath(): number[];
|
|
21
22
|
getDoc: DocumentGetter;
|
|
22
23
|
crossBlock: CrossBlockHandlers;
|
|
23
24
|
selection: SelectionState;
|
|
24
|
-
|
|
25
|
-
edgeAffinity: EdgeAffinityState;
|
|
25
|
+
caretMemory: CaretMemory;
|
|
26
26
|
history: HistoryActions;
|
|
27
27
|
focus: FocusActions;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
/** Brings the block a Shift+Arrow extends into to the nearest edge. */
|
|
29
|
+
scrollOwner: Pick<ScrollOwner, 'place'>;
|
|
30
|
+
/** The editor's command dispatch: the caret memory reads a chord by its current binding, and
|
|
31
|
+
* the history suppression below takes only this editor's plugin chords. */
|
|
32
|
+
commands: CommandDispatchContext;
|
|
33
|
+
/** How the editor reads its bytes, whose grammar the vertical extension skips leaves by. */
|
|
34
|
+
reading: Reading;
|
|
32
35
|
}
|
|
33
36
|
/** True when the event was fully handled; the caller must skip its block-specific branches. */
|
|
34
37
|
export declare function handleSharedKeydown(e: KeyboardEvent, ctx: SharedKeydownContext): Promise<boolean>;
|
|
@@ -36,25 +39,17 @@ export interface LandableBounds {
|
|
|
36
39
|
start: number;
|
|
37
40
|
end: number;
|
|
38
41
|
}
|
|
39
|
-
/** The reads the bounds need, so a block-edge
|
|
42
|
+
/** The reads the bounds need, so a block-edge check outside this file can ask without building
|
|
40
43
|
* the whole keydown context. */
|
|
41
44
|
export interface LandableBoundsContext {
|
|
42
|
-
/** textContent length in raw-content coordinates (
|
|
45
|
+
/** textContent length in raw-content coordinates (the marker prefix excluded). */
|
|
43
46
|
getTextLen(): number;
|
|
44
|
-
getAmbientLength(): number;
|
|
45
47
|
}
|
|
46
|
-
/**
|
|
47
|
-
*
|
|
48
|
-
* caret lands. A mode that hides a block's own markers with no reveal puts those bytes out of
|
|
49
|
-
* reach, so the exits move in to what the DOM can land — the kind's declared content range is
|
|
50
|
-
* not that bound: paragraph, fenced code and table cell each declare the whole raw and still
|
|
51
|
-
* open or close with a run nothing paints. Every block-edge gate reads this, not 0/length.
|
|
52
|
-
*/
|
|
48
|
+
/** The raw offsets a caret can reach in the block, from the same walk that places it: hidden
|
|
49
|
+
* markers put bytes out of reach, so every block-edge check reads this, not 0 and length. */
|
|
53
50
|
export declare function caretLandableBounds(ctx: LandableBoundsContext, el: HTMLElement): LandableBounds;
|
|
54
|
-
/**
|
|
55
|
-
*
|
|
56
|
-
* paste/type-replace. True when the caller should return early from its own `onBeforeInput`.
|
|
57
|
-
*/
|
|
51
|
+
/** Routes historyUndo/historyRedo through the undo controller and delegates cross-block paste
|
|
52
|
+
* and typing; true when the caller should return early from its own `onBeforeInput`. */
|
|
58
53
|
export declare function handleSharedBeforeInput(e: InputEvent, ctx: {
|
|
59
54
|
history: HistoryActions;
|
|
60
55
|
crossBlock: CrossBlockHandlers;
|