@voithos-labs/aragonite 0.10.3 → 0.10.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/a11y-strings.d.ts +12 -5
- package/dist/a11y-strings.js +61 -5
- package/dist/action-contracts.d.ts +242 -155
- package/dist/action-contracts.js +2 -2
- package/dist/active-editor.d.ts +3 -3
- package/dist/active-editor.js +8 -9
- package/dist/ambient/ambient-dom.d.ts +2 -5
- package/dist/ambient/ambient-dom.js +16 -62
- package/dist/assert.js +6 -5
- package/dist/block-component.d.ts +135 -109
- package/dist/block-component.js +30 -22
- package/dist/block-id.d.ts +6 -10
- package/dist/block-id.js +25 -14
- package/dist/bounded-memo.d.ts +5 -5
- package/dist/bounded-memo.js +6 -6
- package/dist/components/BlockDragHandle.svelte +13 -20
- package/dist/components/BlockHost.svelte +56 -134
- package/dist/components/BlockList.svelte +22 -19
- package/dist/components/DecorationOverlay.svelte +9 -10
- package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
- package/dist/components/Editor.svelte +619 -1089
- package/dist/components/Editor.svelte.d.ts +9 -20
- package/dist/components/GapCaret.svelte +26 -59
- package/dist/components/SelectionOverlay.svelte +36 -67
- package/dist/components/SelectionOverlay.svelte.d.ts +6 -4
- package/dist/components/TailInsert.svelte +8 -55
- package/dist/components/TailInsert.svelte.d.ts +4 -6
- package/dist/components/block-content-selector.d.ts +11 -11
- package/dist/components/block-content-selector.js +11 -11
- package/dist/components/block-el-lookup.d.ts +6 -0
- package/dist/components/block-el-lookup.js +27 -0
- package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
- package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
- package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
- package/dist/components/blocks/code/CodeBlock.svelte +255 -276
- package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
- package/dist/components/blocks/code/CodeBlockRail.svelte +103 -100
- package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
- package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
- package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
- package/dist/components/blocks/code/code-bootstrap.js +35 -28
- package/dist/components/blocks/code/code-context-actions.js +5 -4
- package/dist/components/blocks/code/code-enter.js +2 -2
- package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
- package/dist/components/blocks/code/code-fence-boundary.js +40 -66
- package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
- package/dist/components/blocks/code/code-fence-exit.js +24 -25
- package/dist/components/blocks/code/code-indent.d.ts +2 -2
- package/dist/components/blocks/code/code-indent.js +4 -7
- package/dist/components/blocks/code/code-languages.d.ts +16 -12
- package/dist/components/blocks/code/code-languages.js +58 -32
- package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
- package/dist/components/blocks/code/code-paste-surface.js +9 -18
- package/dist/components/blocks/code/code-renderer.d.ts +21 -5
- package/dist/components/blocks/code/code-renderer.js +90 -125
- package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
- package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
- package/dist/components/blocks/directive/activate-directives.js +18 -13
- package/dist/components/blocks/editable-leaf.d.ts +50 -74
- package/dist/components/blocks/editable-leaf.js +144 -202
- package/dist/components/blocks/editable-surface.d.ts +96 -100
- package/dist/components/blocks/editable-surface.js +101 -109
- package/dist/components/blocks/list/ListBlock.svelte +46 -90
- package/dist/components/blocks/list/ListItemBlock.svelte +99 -144
- package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +3 -0
- package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
- package/dist/components/blocks/list/task-checkbox.js +12 -7
- package/dist/components/blocks/plain-text-backend.d.ts +4 -20
- package/dist/components/blocks/plain-text-backend.js +9 -43
- package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
- package/dist/components/blocks/surface-wiring.svelte.js +15 -34
- package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
- package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
- package/dist/components/blocks/table/TableBlock.svelte +100 -165
- package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
- package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
- package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
- package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
- package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
- package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
- package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
- package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
- package/dist/components/blocks/table/cell-pointer.js +49 -71
- package/dist/components/blocks/table/cell-render.d.ts +24 -29
- package/dist/components/blocks/table/cell-render.js +29 -31
- package/dist/components/blocks/table/selected-cells.d.ts +7 -7
- package/dist/components/blocks/table/selected-cells.js +9 -13
- package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
- package/dist/components/blocks/table/table-caret-at-point.js +5 -5
- package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
- package/dist/components/blocks/table/table-cell-paste.js +27 -43
- package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
- package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
- package/dist/components/blocks/table/table-menu-model.js +6 -10
- package/dist/components/blocks/table/table-navigation.js +2 -2
- package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
- package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
- package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
- package/dist/components/blocks/text/auto-pair-record.js +51 -0
- package/dist/components/blocks/text/click-snap-guard.d.ts +9 -4
- package/dist/components/blocks/text/click-snap-guard.js +16 -5
- package/dist/components/blocks/text/composition-seat.d.ts +17 -14
- package/dist/components/blocks/text/composition-seat.js +11 -11
- package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
- package/dist/components/blocks/text/construct-edge-delete.js +50 -65
- package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
- package/dist/components/blocks/text/construct-reveal.js +13 -14
- package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
- package/dist/components/blocks/text/delimiter-autopair.js +87 -103
- package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
- package/dist/components/blocks/text/edge-policy-dispatch.js +164 -180
- package/dist/components/blocks/text/edge-seat.d.ts +17 -26
- package/dist/components/blocks/text/edge-seat.js +43 -70
- package/dist/components/blocks/text/link-at-point.d.ts +9 -9
- package/dist/components/blocks/text/link-at-point.js +12 -15
- package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
- package/dist/components/blocks/text/live-join-seam.js +75 -112
- package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
- package/dist/components/blocks/text/live-selection-edit.js +32 -105
- package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
- package/dist/components/blocks/text/live-split-rebalance.js +50 -67
- package/dist/components/blocks/text/marker-completion.d.ts +7 -12
- package/dist/components/blocks/text/marker-completion.js +17 -10
- package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
- package/dist/components/blocks/text/pending-mark-insert.js +30 -49
- package/dist/components/blocks/text/screen-diff.d.ts +5 -15
- package/dist/components/blocks/text/screen-diff.js +5 -19
- package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
- package/dist/components/blocks/text/text-clipboard.js +27 -32
- package/dist/components/blocks/text/text-keydown.d.ts +20 -30
- package/dist/components/blocks/text/text-keydown.js +54 -51
- package/dist/components/blocks/text/text-render.d.ts +25 -35
- package/dist/components/blocks/text/text-render.js +82 -61
- package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
- package/dist/components/blocks/text/widget-adjacency.js +17 -17
- package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
- package/dist/components/blocks/text/widget-interaction.js +243 -208
- package/dist/components/blocks/widget-portal.d.ts +20 -29
- package/dist/components/blocks/widget-portal.js +16 -14
- package/dist/components/built-in-blocks.d.ts +3 -4
- package/dist/components/built-in-blocks.js +17 -18
- package/dist/components/drag-handle.d.ts +13 -30
- package/dist/components/drag-handle.js +25 -63
- package/dist/components/editor-built-ins.d.ts +1 -0
- package/dist/components/editor-built-ins.js +16 -0
- package/dist/components/editor-root-clipboard.d.ts +6 -6
- package/dist/components/editor-root-clipboard.js +16 -27
- package/dist/components/editor-root-document-swap.d.ts +49 -0
- package/dist/components/editor-root-document-swap.js +54 -0
- package/dist/components/editor-root-focus.d.ts +5 -4
- package/dist/components/editor-root-focus.js +51 -22
- package/dist/components/editor-root-focused-surface.d.ts +35 -0
- package/dist/components/editor-root-focused-surface.js +65 -0
- package/dist/components/editor-root-geometry.d.ts +15 -24
- package/dist/components/editor-root-geometry.js +27 -31
- package/dist/components/editor-root-gestures.d.ts +39 -0
- package/dist/components/editor-root-gestures.js +189 -0
- package/dist/components/editor-root-keydown.d.ts +10 -25
- package/dist/components/editor-root-keydown.js +19 -43
- package/dist/components/editor-root-listeners.d.ts +22 -31
- package/dist/components/editor-root-listeners.js +49 -46
- package/dist/components/editor-root-menus.d.ts +51 -0
- package/dist/components/editor-root-menus.js +147 -0
- package/dist/components/editor-root-mode-flip.d.ts +16 -11
- package/dist/components/editor-root-mode-flip.js +36 -34
- package/dist/components/editor-root-scroll-host.d.ts +22 -0
- package/dist/components/editor-root-scroll-host.js +34 -0
- package/dist/components/editor-root-test-surface.d.ts +48 -0
- package/dist/components/editor-root-test-surface.js +6 -0
- package/dist/components/image/ImageOverlayHost.svelte +44 -35
- package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
- package/dist/components/image/ImageProperties.svelte +37 -41
- package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
- package/dist/components/image/ImageResizeHandles.svelte +26 -30
- package/dist/components/image/image-crop.d.ts +5 -11
- package/dist/components/image/image-crop.js +5 -11
- package/dist/components/image/image-edit-commit.d.ts +19 -16
- package/dist/components/image/image-edit-commit.js +74 -38
- package/dist/components/image/image-resize.d.ts +2 -5
- package/dist/components/image/image-resize.js +3 -6
- package/dist/components/image/image-widget-editing.d.ts +3 -3
- package/dist/components/image/image-widget-editing.js +9 -9
- package/dist/components/image/widget-dom.d.ts +2 -3
- package/dist/components/image/widget-dom.js +19 -24
- package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
- package/dist/components/image/widget-selection-state.svelte.js +26 -19
- package/dist/components/kind-cue.svelte.d.ts +21 -0
- package/dist/components/kind-cue.svelte.js +35 -0
- package/dist/components/link-card/LinkCard.svelte +115 -64
- package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
- package/dist/components/link-card/LinkCardHost.svelte +42 -33
- package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
- package/dist/components/link-card/link-card-commit.d.ts +16 -19
- package/dist/components/link-card/link-card-commit.js +21 -30
- package/dist/components/link-card/link-card-entry.d.ts +13 -23
- package/dist/components/link-card/link-card-entry.js +16 -24
- package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
- package/dist/components/link-card/link-card-state.svelte.js +2 -2
- package/dist/components/lrd-map-gate.d.ts +4 -11
- package/dist/components/lrd-map-gate.js +5 -11
- package/dist/components/menu/BlockMenu.svelte +20 -81
- package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
- package/dist/components/menu/InlineMenuHost.svelte +191 -0
- package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
- package/dist/components/menu/MenuIcon.svelte +3 -103
- package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
- package/dist/components/menu/SelectionToolbar.svelte +380 -0
- package/dist/components/menu/SelectionToolbar.svelte.d.ts +14 -0
- package/dist/components/menu/clipboard-actions.d.ts +3 -4
- package/dist/components/menu/clipboard-actions.js +3 -4
- package/dist/components/menu/default-context-actions.d.ts +4 -13
- package/dist/components/menu/default-context-actions.js +49 -67
- package/dist/components/menu/flyout-placement.d.ts +2 -2
- package/dist/components/menu/flyout-placement.js +2 -2
- package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
- package/dist/components/menu/menu-presence.svelte.js +19 -0
- package/dist/components/paste-image-arm.d.ts +6 -11
- package/dist/components/paste-image-arm.js +11 -18
- package/dist/components/portal.d.ts +2 -5
- package/dist/components/portal.js +4 -7
- package/dist/core/directive/activate.d.ts +4 -5
- package/dist/core/directive/activate.js +8 -9
- package/dist/core/directive/container-opener.js +13 -12
- package/dist/core/directive/grammar.d.ts +2 -5
- package/dist/core/directive/grammar.js +10 -10
- package/dist/core/directive/kinds.d.ts +4 -7
- package/dist/core/directive/kinds.js +14 -16
- package/dist/core/directive/registry.d.ts +12 -9
- package/dist/core/directive/registry.js +19 -20
- package/dist/core/directive/text-recognizer.d.ts +3 -2
- package/dist/core/directive/text-recognizer.js +5 -9
- package/dist/core/escapable.d.ts +1 -5
- package/dist/core/escapable.js +1 -5
- package/dist/core/inline/backticks.d.ts +3 -4
- package/dist/core/inline/backticks.js +3 -4
- package/dist/core/inline/character-refs.js +2 -1
- package/dist/core/inline/destination-bytes.d.ts +6 -3
- package/dist/core/inline/destination-bytes.js +50 -8
- package/dist/core/inline/entity-widget.d.ts +4 -3
- package/dist/core/inline/entity-widget.js +6 -6
- package/dist/core/inline/format-toggle.d.ts +22 -28
- package/dist/core/inline/format-toggle.js +97 -129
- package/dist/core/inline/html-entities.d.ts +2 -3
- package/dist/core/inline/html-entities.js +2 -3
- package/dist/core/inline/html-tag-grammar.js +6 -2
- package/dist/core/inline/image-dimensions.d.ts +2 -0
- package/dist/core/inline/image-dimensions.js +19 -2
- package/dist/core/inline/image-source-bytes.d.ts +11 -0
- package/dist/core/inline/image-source-bytes.js +71 -0
- package/dist/core/inline/index.d.ts +28 -21
- package/dist/core/inline/index.js +56 -34
- package/dist/core/inline/inline-cache.d.ts +12 -15
- package/dist/core/inline/inline-cache.js +11 -14
- package/dist/core/inline/inline-widgets.d.ts +55 -68
- package/dist/core/inline/inline-widgets.js +55 -58
- package/dist/core/inline/link-destination.d.ts +31 -0
- package/dist/core/inline/link-destination.js +129 -0
- package/dist/core/inline/link-reference-resolver.d.ts +8 -6
- package/dist/core/inline/link-reference-resolver.js +10 -6
- package/dist/core/inline/link-source-bytes.d.ts +31 -0
- package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
- package/dist/core/inline/live-edit/read-back.d.ts +29 -0
- package/dist/core/inline/live-edit/read-back.js +50 -0
- package/dist/core/inline/picture.d.ts +10 -0
- package/dist/core/inline/picture.js +40 -0
- package/dist/core/inline/scan/autolinks.d.ts +7 -8
- package/dist/core/inline/scan/autolinks.js +80 -59
- package/dist/core/inline/scan/brackets.d.ts +2 -2
- package/dist/core/inline/scan/brackets.js +6 -103
- package/dist/core/inline/scan/code-spans.d.ts +4 -0
- package/dist/core/inline/scan/code-spans.js +8 -0
- package/dist/core/inline/scan/emphasis.js +10 -14
- package/dist/core/inline/scan/index.d.ts +3 -1
- package/dist/core/inline/scan/index.js +32 -33
- package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
- package/dist/core/inline/scan/plugin-syntax.js +75 -89
- package/dist/core/inline/scan/scan-state.d.ts +2 -0
- package/dist/core/inline/scan/scan-state.js +1 -0
- package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
- package/dist/core/inline/scan/simple-nodes.js +2 -5
- package/dist/core/inline/scan/triggers.d.ts +17 -0
- package/dist/core/inline/scan/triggers.js +26 -0
- package/dist/core/inline/scan/url.js +8 -10
- package/dist/core/inline/transparency.d.ts +2 -1
- package/dist/core/inline/transparency.js +33 -17
- package/dist/core/inline/visibility.d.ts +30 -49
- package/dist/core/inline/visibility.js +31 -49
- package/dist/core/inline/walk.d.ts +4 -10
- package/dist/core/inline/walk.js +4 -10
- package/dist/core/inline-render.d.ts +22 -27
- package/dist/core/inline-render.js +51 -60
- package/dist/core/lines.d.ts +67 -26
- package/dist/core/lines.js +164 -33
- package/dist/core/metadata-parity.d.ts +9 -0
- package/dist/core/metadata-parity.js +25 -0
- package/dist/core/node-views.d.ts +7 -6
- package/dist/core/node-views.js +5 -5
- package/dist/core/nodes.d.ts +34 -44
- package/dist/core/nodes.js +4 -12
- package/dist/core/parser.d.ts +27 -34
- package/dist/core/parser.js +53 -67
- package/dist/core/parsers/blockquote.d.ts +5 -8
- package/dist/core/parsers/blockquote.js +11 -10
- package/dist/core/parsers/built-in-openers.d.ts +2 -5
- package/dist/core/parsers/built-in-openers.js +5 -8
- package/dist/core/parsers/fence-syntax.d.ts +36 -7
- package/dist/core/parsers/fence-syntax.js +61 -11
- package/dist/core/parsers/fenced-code.d.ts +16 -0
- package/dist/core/parsers/fenced-code.js +16 -15
- package/dist/core/parsers/heading.d.ts +19 -2
- package/dist/core/parsers/heading.js +50 -2
- package/dist/core/parsers/html-block.d.ts +3 -6
- package/dist/core/parsers/html-block.js +10 -11
- package/dist/core/parsers/indented-code.d.ts +1 -1
- package/dist/core/parsers/indented-code.js +2 -8
- package/dist/core/parsers/link-reference.d.ts +5 -3
- package/dist/core/parsers/link-reference.js +116 -120
- package/dist/core/parsers/list.d.ts +12 -5
- package/dist/core/parsers/list.js +53 -36
- package/dist/core/parsers/paragraph.d.ts +3 -3
- package/dist/core/parsers/paragraph.js +14 -5
- package/dist/core/parsers/table-completion.d.ts +2 -5
- package/dist/core/parsers/table-completion.js +7 -10
- package/dist/core/parsers/table.d.ts +8 -8
- package/dist/core/parsers/table.js +23 -26
- package/dist/core/parsers/thematic-break.js +15 -14
- package/dist/core/paths.d.ts +13 -0
- package/dist/core/paths.js +31 -0
- package/dist/core/terminator-escalation.d.ts +0 -7
- package/dist/core/terminator-escalation.js +5 -8
- package/dist/core/url-policy.d.ts +2 -5
- package/dist/core/url-policy.js +8 -12
- package/dist/cursor/caret-memory.d.ts +34 -0
- package/dist/cursor/caret-memory.js +82 -0
- package/dist/cursor/coordinate-spaces.d.ts +26 -19
- package/dist/cursor/coordinate-spaces.js +32 -20
- package/dist/cursor/dom-walk.d.ts +7 -13
- package/dist/cursor/dom-walk.js +7 -13
- package/dist/cursor/edge-affinity.d.ts +7 -35
- package/dist/cursor/edge-affinity.js +13 -44
- package/dist/cursor/focused-caret.d.ts +6 -8
- package/dist/cursor/focused-caret.js +7 -16
- package/dist/cursor/height-model.d.ts +3 -3
- package/dist/cursor/height-model.js +5 -5
- package/dist/cursor/height-oracle.d.ts +10 -7
- package/dist/cursor/height-oracle.js +26 -75
- package/dist/cursor/observe-resize.d.ts +13 -0
- package/dist/cursor/observe-resize.js +43 -0
- package/dist/cursor/overlay-rects.d.ts +2 -5
- package/dist/cursor/overlay-rects.js +2 -5
- package/dist/cursor/overlay-remeasure.d.ts +6 -7
- package/dist/cursor/overlay-remeasure.js +10 -14
- package/dist/cursor/pending-marks.d.ts +7 -9
- package/dist/cursor/pending-marks.js +6 -27
- package/dist/cursor/point-offset.d.ts +16 -10
- package/dist/cursor/point-offset.js +60 -25
- package/dist/cursor/reveal-source.d.ts +7 -11
- package/dist/cursor/reveal-source.js +10 -18
- package/dist/cursor/scroll-ancestors.d.ts +9 -20
- package/dist/cursor/scroll-ancestors.js +14 -26
- package/dist/cursor/scroll-owner.d.ts +92 -0
- package/dist/cursor/scroll-owner.js +283 -0
- package/dist/cursor/scrollport.d.ts +16 -8
- package/dist/cursor/scrollport.js +28 -5
- package/dist/cursor/sticky-column.d.ts +6 -29
- package/dist/cursor/sticky-column.js +6 -49
- package/dist/cursor/sticky-measure.d.ts +14 -9
- package/dist/cursor/sticky-measure.js +99 -49
- package/dist/cursor/surface-backend.d.ts +41 -0
- package/dist/cursor/surface-backend.js +78 -0
- package/dist/cursor/typography-estimates.d.ts +3 -3
- package/dist/cursor/typography-estimates.js +3 -3
- package/dist/cursor/visual-lines.d.ts +25 -13
- package/dist/cursor/visual-lines.js +72 -28
- package/dist/cursor/widget-edge-snap.d.ts +23 -0
- package/dist/cursor/widget-edge-snap.js +39 -0
- package/dist/cursor/widget-offset.d.ts +111 -102
- package/dist/cursor/widget-offset.js +352 -177
- package/dist/debug/diagnostics-report.d.ts +6 -6
- package/dist/debug/diagnostics-report.js +5 -5
- package/dist/debug/dump-tree.js +2 -2
- package/dist/debug/editor-diagnostics.d.ts +15 -0
- package/dist/debug/editor-diagnostics.js +33 -0
- package/dist/debug/inspect.d.ts +2 -2
- package/dist/debug/inspect.js +4 -4
- package/dist/debug/interaction-trace.d.ts +14 -15
- package/dist/debug/interaction-trace.js +19 -20
- package/dist/debug/operations-log.d.ts +1 -1
- package/dist/debug/operations-log.js +1 -1
- package/dist/decorations/buckets.d.ts +6 -12
- package/dist/decorations/buckets.js +4 -11
- package/dist/decorations/decoration-state.svelte.d.ts +2 -3
- package/dist/decorations/decoration-state.svelte.js +24 -26
- package/dist/decorations/island-dom.d.ts +10 -18
- package/dist/decorations/island-dom.js +25 -50
- package/dist/decorations/reserved-attrs.d.ts +6 -8
- package/dist/decorations/reserved-attrs.js +31 -17
- package/dist/decorations/types.d.ts +6 -7
- package/dist/decorations/types.js +2 -1
- package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
- package/dist/decorations/use-block-decorations.svelte.js +71 -0
- package/dist/decorations/widget-dom.d.ts +3 -3
- package/dist/decorations/widget-dom.js +5 -5
- package/dist/dev-warn.d.ts +5 -2
- package/dist/dev-warn.js +16 -4
- package/dist/editor-actions/ancestry-folds.d.ts +9 -14
- package/dist/editor-actions/ancestry-folds.js +13 -18
- package/dist/editor-actions/block-edit-core.d.ts +49 -22
- package/dist/editor-actions/block-edit-core.js +279 -151
- package/dist/editor-actions/block-edit-scope.d.ts +63 -50
- package/dist/editor-actions/block-edit-scope.js +100 -48
- package/dist/editor-actions/block-edit.d.ts +2 -3
- package/dist/editor-actions/block-edit.js +14 -90
- package/dist/editor-actions/commit/history.d.ts +4 -4
- package/dist/editor-actions/commit/history.js +33 -34
- package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
- package/dist/editor-actions/commit/reading-write-gate.js +56 -0
- package/dist/editor-actions/commit/text-batch.d.ts +7 -11
- package/dist/editor-actions/commit/text-batch.js +6 -7
- package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
- package/dist/editor-actions/commit/undo-controller.js +346 -216
- package/dist/editor-actions/container-block-component.d.ts +32 -51
- package/dist/editor-actions/container-block-component.js +66 -92
- package/dist/editor-actions/container-edit.d.ts +4 -2
- package/dist/editor-actions/container-edit.js +14 -44
- package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
- package/dist/editor-actions/container-exit-overrides.js +19 -21
- package/dist/editor-actions/deps.d.ts +25 -32
- package/dist/editor-actions/enter-completion.d.ts +12 -15
- package/dist/editor-actions/enter-completion.js +49 -51
- package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
- package/dist/editor-actions/focus/focus-dispatch.js +33 -52
- package/dist/editor-actions/focus/focus-landing.d.ts +11 -5
- package/dist/editor-actions/focus/focus-landing.js +29 -14
- package/dist/editor-actions/focus/focus.d.ts +3 -2
- package/dist/editor-actions/focus/focus.js +42 -59
- package/dist/editor-actions/index.d.ts +4 -3
- package/dist/editor-actions/index.js +5 -4
- package/dist/editor-actions/inline-range-commit.d.ts +18 -16
- package/dist/editor-actions/inline-range-commit.js +45 -54
- package/dist/editor-actions/leaf-write.d.ts +11 -0
- package/dist/editor-actions/leaf-write.js +102 -0
- package/dist/editor-actions/list-context.d.ts +9 -10
- package/dist/editor-actions/list-context.js +115 -110
- package/dist/editor-actions/list-overrides.d.ts +13 -5
- package/dist/editor-actions/list-overrides.js +36 -12
- package/dist/editor-actions/merge-fallback.d.ts +10 -16
- package/dist/editor-actions/merge-fallback.js +11 -22
- package/dist/editor-actions/nested/container-actions.d.ts +37 -0
- package/dist/editor-actions/nested/container-actions.js +42 -0
- package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
- package/dist/editor-actions/nested/emptied-container.js +5 -0
- package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
- package/dist/editor-actions/nested/nested-actions.js +17 -15
- package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
- package/dist/editor-actions/nested/nested-block-edit.js +40 -134
- package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
- package/dist/editor-actions/nested/nested-focus.js +33 -21
- package/dist/editor-actions/paste-coordinator.d.ts +3 -2
- package/dist/editor-actions/paste-coordinator.js +17 -13
- package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
- package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
- package/dist/editor-actions/plugin/container.d.ts +55 -76
- package/dist/editor-actions/plugin/container.js +105 -186
- package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
- package/dist/editor-actions/plugin/directive-container.js +7 -8
- package/dist/editor-actions/reorder-action.d.ts +7 -12
- package/dist/editor-actions/reorder-action.js +32 -48
- package/dist/editor-actions/reorder-drag.d.ts +12 -8
- package/dist/editor-actions/reorder-drag.js +45 -41
- package/dist/editor-actions/replacement-focus.d.ts +13 -21
- package/dist/editor-actions/replacement-focus.js +32 -33
- package/dist/editor-actions/search-replace.js +71 -67
- package/dist/editor-actions/stored-caret.d.ts +7 -0
- package/dist/editor-actions/stored-caret.js +10 -0
- package/dist/editor-actions/table-context.d.ts +9 -11
- package/dist/editor-actions/table-context.js +70 -93
- package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
- package/dist/editor-actions/unwrap-strategies.js +52 -63
- package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
- package/dist/editor-actions/whole-block-focus-surface.js +43 -53
- package/dist/editor-events.d.ts +25 -29
- package/dist/editor-events.js +17 -28
- package/dist/editor-keys.d.ts +96 -104
- package/dist/editor-keys.js +11 -24
- package/dist/editor-props.d.ts +91 -71
- package/dist/editor-rects.d.ts +23 -34
- package/dist/editor-rects.js +9 -77
- package/dist/env.d.ts +6 -4
- package/dist/env.js +8 -4
- package/dist/index.d.ts +6 -2
- package/dist/index.js +5 -2
- package/dist/inline-menu/inline-menu-session.d.ts +37 -0
- package/dist/inline-menu/inline-menu-session.js +98 -0
- package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
- package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
- package/dist/inline-menu/types.d.ts +77 -0
- package/dist/inline-menu/types.js +7 -0
- package/dist/invariants/child-id-parity.d.ts +23 -0
- package/dist/invariants/child-id-parity.js +39 -0
- package/dist/invariants/commit-paths.d.ts +4 -4
- package/dist/invariants/commit-paths.js +4 -4
- package/dist/invariants/commit-scope.d.ts +4 -4
- package/dist/invariants/commit-scope.js +9 -8
- package/dist/invariants/context-keys.d.ts +2 -5
- package/dist/invariants/context-keys.js +3 -6
- package/dist/invariants/descriptor.d.ts +2 -6
- package/dist/invariants/descriptor.js +2 -6
- package/dist/invariants/inline-transitions.d.ts +9 -16
- package/dist/invariants/inline-transitions.js +10 -18
- package/dist/invariants/install.d.ts +18 -27
- package/dist/invariants/install.js +29 -30
- package/dist/invariants/keeps-a-block.d.ts +7 -0
- package/dist/invariants/keeps-a-block.js +14 -0
- package/dist/invariants/landable-caret.d.ts +5 -7
- package/dist/invariants/landable-caret.js +8 -11
- package/dist/invariants/landing-focus-scroll.d.ts +7 -0
- package/dist/invariants/landing-focus-scroll.js +13 -0
- package/dist/invariants/landing-value.d.ts +13 -0
- package/dist/invariants/landing-value.js +27 -0
- package/dist/invariants/marker-css-parity.d.ts +5 -6
- package/dist/invariants/marker-css-parity.js +11 -12
- package/dist/invariants/measures-in-own-list.d.ts +6 -0
- package/dist/invariants/measures-in-own-list.js +13 -0
- package/dist/invariants/node-shape.d.ts +18 -37
- package/dist/invariants/node-shape.js +123 -79
- package/dist/invariants/open-tail.d.ts +7 -0
- package/dist/invariants/open-tail.js +45 -0
- package/dist/invariants/placement-ends-widget.d.ts +8 -0
- package/dist/invariants/placement-ends-widget.js +13 -0
- package/dist/invariants/registry.d.ts +27 -66
- package/dist/invariants/registry.js +61 -137
- package/dist/invariants/render-fidelity.d.ts +4 -4
- package/dist/invariants/render-fidelity.js +5 -5
- package/dist/invariants/selection-endpoints.d.ts +6 -7
- package/dist/invariants/selection-endpoints.js +18 -16
- package/dist/invariants/single-node-sink.d.ts +4 -5
- package/dist/invariants/single-node-sink.js +4 -5
- package/dist/invariants/snapshot-integrity.d.ts +5 -6
- package/dist/invariants/snapshot-integrity.js +1 -1
- package/dist/invariants/structural-descriptor.d.ts +6 -15
- package/dist/invariants/structural-descriptor.js +6 -15
- package/dist/menu-icons.d.ts +47 -0
- package/dist/menu-icons.js +113 -0
- package/dist/perf/instruments.d.ts +20 -5
- package/dist/perf/instruments.js +35 -15
- package/dist/perf/use-mount-gauge.svelte.js +4 -4
- package/dist/plugin.d.ts +38 -8
- package/dist/plugin.js +102 -74
- package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
- package/dist/plugins/admonitions/admonition-kind.js +12 -10
- package/dist/plugins/admonitions/convert-document.d.ts +5 -5
- package/dist/plugins/admonitions/convert-document.js +8 -7
- package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
- package/dist/plugins/admonitions/gh-alert.js +21 -22
- package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
- package/dist/plugins/admonitions/github-alert-kind.js +28 -37
- package/dist/plugins/admonitions/index.js +2 -2
- package/dist/plugins/admonitions/kinds.d.ts +1 -1
- package/dist/plugins/admonitions/register.js +11 -2
- package/dist/plugins/details/DetailsBlock.svelte +20 -20
- package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
- package/dist/plugins/details/details-disclosure.svelte.js +6 -7
- package/dist/plugins/details/details-kind.d.ts +6 -7
- package/dist/plugins/details/details-kind.js +44 -59
- package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
- package/dist/plugins/emoji/emoji-recognizer.js +7 -14
- package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
- package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
- package/dist/plugins/footnotes/constants.d.ts +2 -0
- package/dist/plugins/footnotes/constants.js +3 -0
- package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
- package/dist/plugins/footnotes/footnote-definition.js +69 -45
- package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
- package/dist/plugins/footnotes/footnote-lookup.js +14 -26
- package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
- package/dist/plugins/footnotes/footnote-numbering.js +22 -31
- package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
- package/dist/plugins/footnotes/footnote-reference.js +8 -13
- package/dist/plugins/footnotes/index.js +2 -3
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
- package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
- package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
- package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
- package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
- package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
- package/dist/plugins/highlight-occurrences/word-char.js +4 -0
- package/dist/plugins/latex/BlockMath.svelte +58 -75
- package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
- package/dist/plugins/latex/MathInline.svelte +10 -9
- package/dist/plugins/latex/flanking.d.ts +1 -0
- package/dist/plugins/latex/flanking.js +3 -0
- package/dist/plugins/latex/index.d.ts +1 -1
- package/dist/plugins/latex/latex-kind.d.ts +4 -4
- package/dist/plugins/latex/latex-kind.js +113 -85
- package/dist/plugins/latex/math-completion.d.ts +1 -1
- package/dist/plugins/latex/math-completion.js +5 -8
- package/dist/plugins/latex/math-layout.d.ts +2 -8
- package/dist/plugins/latex/math-layout.js +0 -9
- package/dist/plugins/latex/math-renderer.d.ts +17 -20
- package/dist/plugins/latex/math-renderer.js +21 -38
- package/dist/plugins/latex/math-source.d.ts +4 -8
- package/dist/plugins/latex/math-source.js +36 -75
- package/dist/plugins/latex/register.d.ts +10 -11
- package/dist/plugins/latex/register.js +24 -10
- package/dist/plugins/latex/renderer.d.ts +9 -10
- package/dist/plugins/latex/renderer.js +9 -24
- package/dist/plugins/mermaid/MermaidBlock.svelte +63 -47
- package/dist/plugins/mermaid/index.js +1 -1
- package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
- package/dist/plugins/mermaid/mermaid-kind.js +30 -47
- package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
- package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
- package/dist/plugins/mermaid/register.d.ts +3 -3
- package/dist/plugins/mermaid/register.js +5 -5
- package/dist/plugins/mermaid/renderer.d.ts +5 -5
- package/dist/plugins/mermaid/renderer.js +8 -11
- package/dist/plugins/parrot/ParrotBlock.svelte +18 -7
- package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
- package/dist/plugins/parrot/parrot-plugin.js +3 -3
- package/dist/plugins/slash-commands/filter.d.ts +23 -0
- package/dist/plugins/slash-commands/filter.js +31 -0
- package/dist/plugins/slash-commands/index.d.ts +2 -0
- package/dist/plugins/slash-commands/index.js +2 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
- package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
- package/dist/plugins/slash-commands/slash-source.js +108 -0
- package/dist/plugins/toc/TocBlock.svelte +23 -22
- package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
- package/dist/plugins/toc/heading-outline.d.ts +7 -12
- package/dist/plugins/toc/heading-outline.js +22 -36
- package/dist/plugins/toc/navigation-queue.d.ts +2 -4
- package/dist/plugins/toc/toc-plugin.d.ts +5 -5
- package/dist/plugins/toc/toc-plugin.js +20 -13
- package/dist/presentation-mode.d.ts +15 -23
- package/dist/presentation-mode.js +19 -25
- package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
- package/dist/reactivity/block-list-state.svelte.js +8 -9
- package/dist/reactivity/block-window.svelte.d.ts +12 -6
- package/dist/reactivity/block-window.svelte.js +44 -17
- package/dist/reactivity/child-list.d.ts +34 -0
- package/dist/reactivity/child-list.js +48 -0
- package/dist/reactivity/content-version.svelte.d.ts +4 -7
- package/dist/reactivity/content-version.svelte.js +3 -5
- package/dist/reactivity/hold-across.d.ts +39 -0
- package/dist/reactivity/hold-across.js +57 -0
- package/dist/reactivity/layout-state.svelte.d.ts +27 -0
- package/dist/reactivity/layout-state.svelte.js +51 -0
- package/dist/reactivity/list-tree.d.ts +39 -0
- package/dist/reactivity/list-tree.js +132 -0
- package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
- package/dist/reactivity/list-windowing.svelte.js +143 -292
- package/dist/reactivity/measure-batch.d.ts +6 -8
- package/dist/reactivity/measure-batch.js +5 -6
- package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
- package/dist/reactivity/publish-ref.svelte.js +21 -85
- package/dist/reactivity/scope-geometry.d.ts +6 -13
- package/dist/reactivity/scope-geometry.js +7 -14
- package/dist/reactivity/state-registry.d.ts +5 -5
- package/dist/reactivity/state-registry.js +11 -15
- package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
- package/dist/reactivity/use-container-windowing.svelte.js +64 -74
- package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
- package/dist/reactivity/use-measured-child.svelte.js +41 -0
- package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
- package/dist/reactivity/use-window-floor.svelte.js +27 -0
- package/dist/reactivity/window-slice.d.ts +4 -4
- package/dist/reactivity/window-slice.js +0 -2
- package/dist/renderer-slot.d.ts +48 -0
- package/dist/renderer-slot.js +85 -0
- package/dist/scan-index.d.ts +4 -4
- package/dist/scan-index.js +4 -4
- package/dist/schema/block-commands.d.ts +69 -54
- package/dist/schema/block-commands.js +91 -104
- package/dist/schema/block-completions.d.ts +16 -19
- package/dist/schema/block-completions.js +25 -32
- package/dist/schema/block-component-registry.d.ts +13 -14
- package/dist/schema/block-component-registry.js +19 -17
- package/dist/schema/block-kind-descriptor.d.ts +234 -168
- package/dist/schema/block-kind-descriptor.js +151 -66
- package/dist/schema/block-openers.d.ts +48 -39
- package/dist/schema/block-openers.js +73 -83
- package/dist/schema/built-in-descriptors.d.ts +3 -5
- package/dist/schema/built-in-descriptors.js +96 -80
- package/dist/schema/child-spans.d.ts +12 -10
- package/dist/schema/child-spans.js +68 -34
- package/dist/schema/closure.d.ts +18 -16
- package/dist/schema/closure.js +24 -14
- package/dist/schema/command-id.d.ts +6 -8
- package/dist/schema/command-id.js +20 -25
- package/dist/schema/commands.d.ts +79 -81
- package/dist/schema/commands.js +156 -116
- package/dist/schema/container-raw.d.ts +51 -11
- package/dist/schema/container-raw.js +143 -14
- package/dist/schema/container-rebuilders.d.ts +17 -15
- package/dist/schema/container-rebuilders.js +30 -22
- package/dist/schema/context-actions.d.ts +25 -13
- package/dist/schema/context-actions.js +32 -17
- package/dist/schema/define-plugin-block.d.ts +8 -6
- package/dist/schema/define-plugin-block.js +6 -4
- package/dist/schema/fenced-code-raw.d.ts +30 -17
- package/dist/schema/fenced-code-raw.js +155 -107
- package/dist/schema/global-commands.d.ts +6 -6
- package/dist/schema/global-commands.js +14 -22
- package/dist/schema/height-estimates.d.ts +31 -0
- package/dist/schema/height-estimates.js +64 -0
- package/dist/schema/inline-construct-policy.d.ts +42 -55
- package/dist/schema/inline-construct-policy.js +36 -35
- package/dist/schema/insert-catalogue.d.ts +30 -0
- package/dist/schema/insert-catalogue.js +95 -0
- package/dist/schema/keybinding-overrides.d.ts +9 -11
- package/dist/schema/keybinding-overrides.js +1 -1
- package/dist/schema/keybindings.d.ts +15 -7
- package/dist/schema/keybindings.js +21 -9
- package/dist/schema/merge-rules.d.ts +5 -7
- package/dist/schema/merge-rules.js +7 -9
- package/dist/schema/opener-priorities.d.ts +4 -4
- package/dist/schema/opener-priorities.js +4 -4
- package/dist/schema/operations.d.ts +9 -11
- package/dist/schema/operations.js +3 -3
- package/dist/schema/page-role.d.ts +14 -0
- package/dist/schema/page-role.js +19 -0
- package/dist/schema/plugin-activation.d.ts +4 -6
- package/dist/schema/plugin-activation.js +12 -10
- package/dist/schema/plugin-editor-context.d.ts +25 -10
- package/dist/schema/plugin-editor-context.js +40 -9
- package/dist/schema/plugin-install.d.ts +49 -17
- package/dist/schema/plugin-install.js +51 -25
- package/dist/schema/plugin-kind.d.ts +12 -8
- package/dist/schema/plugin-kind.js +35 -42
- package/dist/schema/plugin-name.js +3 -3
- package/dist/schema/plugin-registry.d.ts +54 -0
- package/dist/schema/plugin-registry.js +70 -0
- package/dist/schema/reading.d.ts +23 -0
- package/dist/schema/reading.js +7 -0
- package/dist/schema/register-once.d.ts +3 -5
- package/dist/schema/register-once.js +7 -16
- package/dist/schema/registration-checks.d.ts +12 -16
- package/dist/schema/registration-checks.js +35 -51
- package/dist/schema/registration-pairs.d.ts +54 -0
- package/dist/schema/registration-pairs.js +48 -0
- package/dist/schema/registration-pending.d.ts +8 -12
- package/dist/schema/registration-pending.js +9 -9
- package/dist/schema/registry-reset.d.ts +8 -4
- package/dist/schema/registry-reset.js +13 -26
- package/dist/schema/registry-view.d.ts +25 -13
- package/dist/schema/registry-view.js +26 -20
- package/dist/schema/reserved-chords.d.ts +9 -10
- package/dist/schema/reserved-chords.js +73 -78
- package/dist/schema/reserved-chrome.d.ts +12 -11
- package/dist/schema/reserved-chrome.js +15 -11
- package/dist/schema/setext-raw.d.ts +13 -0
- package/dist/schema/setext-raw.js +33 -0
- package/dist/schema/stored-as.d.ts +20 -0
- package/dist/schema/stored-as.js +6 -0
- package/dist/schema/table-cell-raw.d.ts +18 -7
- package/dist/schema/table-cell-raw.js +28 -7
- package/dist/schema/whole-block-unit.d.ts +5 -4
- package/dist/schema/whole-block-unit.js +5 -4
- package/dist/search/document-scan.d.ts +3 -3
- package/dist/search/document-scan.js +2 -2
- package/dist/search/matcher.d.ts +1 -1
- package/dist/search/regex-executor.d.ts +5 -6
- package/dist/search/regex-executor.js +6 -8
- package/dist/search/replace.d.ts +2 -5
- package/dist/search/replace.js +2 -5
- package/dist/search/search-state.svelte.d.ts +5 -5
- package/dist/search/search-state.svelte.js +12 -16
- package/dist/selection/autoscroll.d.ts +6 -9
- package/dist/selection/block-hit-test.d.ts +16 -24
- package/dist/selection/block-hit-test.js +29 -22
- package/dist/selection/caret-doors.d.ts +15 -14
- package/dist/selection/caret-doors.js +37 -26
- package/dist/selection/caret-landing.d.ts +62 -0
- package/dist/selection/caret-landing.js +157 -0
- package/dist/selection/caret-restore.d.ts +17 -10
- package/dist/selection/caret-restore.js +10 -22
- package/dist/selection/caret-target.d.ts +30 -0
- package/dist/selection/caret-target.js +84 -0
- package/dist/selection/char-endpoint-snap.d.ts +6 -10
- package/dist/selection/char-endpoint-snap.js +8 -14
- package/dist/selection/clipboard-text.d.ts +5 -12
- package/dist/selection/clipboard-text.js +69 -172
- package/dist/selection/covered-block.d.ts +6 -8
- package/dist/selection/covered-block.js +8 -19
- package/dist/selection/cross-block/clipboard.d.ts +3 -2
- package/dist/selection/cross-block/clipboard.js +13 -4
- package/dist/selection/cross-block/dispatch.d.ts +47 -43
- package/dist/selection/cross-block/dispatch.js +12 -23
- package/dist/selection/cross-block/format-range.d.ts +18 -21
- package/dist/selection/cross-block/format-range.js +104 -103
- package/dist/selection/cross-block/format-toggle.d.ts +10 -15
- package/dist/selection/cross-block/format-toggle.js +28 -33
- package/dist/selection/cross-block/keydown.d.ts +4 -4
- package/dist/selection/cross-block/keydown.js +93 -152
- package/dist/selection/cross-block/ops.d.ts +19 -34
- package/dist/selection/cross-block/ops.js +110 -95
- package/dist/selection/cross-block/paste.d.ts +2 -3
- package/dist/selection/cross-block/paste.js +61 -104
- package/dist/selection/cross-block/pointer.d.ts +17 -15
- package/dist/selection/cross-block/pointer.js +74 -25
- package/dist/selection/cross-block/type-replace.d.ts +4 -6
- package/dist/selection/cross-block/type-replace.js +53 -146
- package/dist/selection/dead-space-caret.d.ts +20 -28
- package/dist/selection/dead-space-caret.js +79 -87
- package/dist/selection/drag-pointer.d.ts +22 -5
- package/dist/selection/drag-pointer.js +63 -31
- package/dist/selection/gap-caret.d.ts +17 -28
- package/dist/selection/gap-caret.js +14 -26
- package/dist/selection/grid-selection.d.ts +12 -0
- package/dist/selection/grid-selection.js +22 -0
- package/dist/selection/keyboard-extend.d.ts +27 -39
- package/dist/selection/keyboard-extend.js +94 -116
- package/dist/selection/multi-click.d.ts +37 -0
- package/dist/selection/multi-click.js +197 -0
- package/dist/selection/native-bridge.d.ts +30 -37
- package/dist/selection/native-bridge.js +80 -100
- package/dist/selection/nearest-block.d.ts +17 -12
- package/dist/selection/nearest-block.js +37 -18
- package/dist/selection/path-lookup.d.ts +31 -14
- package/dist/selection/path-lookup.js +110 -20
- package/dist/selection/path-math.d.ts +9 -11
- package/dist/selection/path-math.js +5 -7
- package/dist/selection/pointer-gesture.d.ts +9 -0
- package/dist/selection/pointer-gesture.js +11 -0
- package/dist/selection/pointer-session.d.ts +10 -16
- package/dist/selection/pointer-session.js +6 -7
- package/dist/selection/primitives.d.ts +64 -33
- package/dist/selection/primitives.js +61 -53
- package/dist/selection/range-coverage.d.ts +94 -0
- package/dist/selection/range-coverage.js +365 -0
- package/dist/selection/range-delete-ceremony.d.ts +28 -74
- package/dist/selection/range-delete-ceremony.js +100 -141
- package/dist/selection/range-delete-chrome.d.ts +20 -33
- package/dist/selection/range-delete-chrome.js +53 -78
- package/dist/selection/range-delete-table-coverage.d.ts +11 -25
- package/dist/selection/range-delete-table-coverage.js +42 -112
- package/dist/selection/range-delete-table.d.ts +14 -12
- package/dist/selection/range-delete-table.js +106 -310
- package/dist/selection/range-delete.d.ts +18 -19
- package/dist/selection/range-delete.js +83 -123
- package/dist/selection/round-trip-restore.d.ts +18 -0
- package/dist/selection/round-trip-restore.js +19 -0
- package/dist/selection/selection-announcer.d.ts +17 -0
- package/dist/selection/selection-announcer.js +25 -0
- package/dist/selection/selection-description.d.ts +4 -3
- package/dist/selection/selection-description.js +5 -4
- package/dist/selection/selection-drop.d.ts +52 -0
- package/dist/selection/selection-drop.js +317 -0
- package/dist/selection/selection-restore.d.ts +20 -33
- package/dist/selection/selection-restore.js +21 -44
- package/dist/selection/selection-state.svelte.d.ts +50 -42
- package/dist/selection/selection-state.svelte.js +144 -98
- package/dist/selection/shared-keydown.d.ts +22 -27
- package/dist/selection/shared-keydown.js +25 -45
- package/dist/selection/table-endpoint-snap.d.ts +17 -41
- package/dist/selection/table-endpoint-snap.js +54 -80
- package/dist/selection/table-rect-extend.d.ts +3 -6
- package/dist/selection/table-rect-extend.js +19 -14
- package/dist/styles/editor-theme.css +75 -53
- package/dist/styles/editor.css +248 -139
- package/dist/testing/conformance-core.d.ts +50 -18
- package/dist/testing/conformance-core.js +88 -50
- package/dist/testing/container-conformance.d.ts +48 -84
- package/dist/testing/container-conformance.js +159 -285
- package/dist/testing/headless-actions.d.ts +34 -19
- package/dist/testing/headless-actions.js +116 -65
- package/dist/testing/headless-block-list.svelte.d.ts +16 -0
- package/dist/testing/headless-block-list.svelte.js +22 -0
- package/dist/testing/inline-conformance.d.ts +15 -22
- package/dist/testing/inline-conformance.js +131 -148
- package/dist/testing/kind-conformance.d.ts +19 -24
- package/dist/testing/kind-conformance.js +204 -117
- package/dist/testing/kit-reading.d.ts +7 -0
- package/dist/testing/kit-reading.js +16 -0
- package/dist/testing/mount-dom-stubs.d.ts +4 -5
- package/dist/testing/mount-dom-stubs.js +8 -5
- package/dist/testing/parse-convergence.d.ts +10 -10
- package/dist/testing/parse-convergence.js +14 -49
- package/dist/testing.d.ts +13 -9
- package/dist/testing.js +28 -38
- package/dist/tree-operations/blockquote.d.ts +8 -14
- package/dist/tree-operations/blockquote.js +25 -45
- package/dist/tree-operations/chain-rebuild.d.ts +34 -25
- package/dist/tree-operations/chain-rebuild.js +115 -52
- package/dist/tree-operations/children.d.ts +5 -9
- package/dist/tree-operations/children.js +7 -11
- package/dist/tree-operations/cleanup.d.ts +6 -7
- package/dist/tree-operations/cleanup.js +14 -11
- package/dist/tree-operations/clone.js +5 -4
- package/dist/tree-operations/container-lift.d.ts +10 -5
- package/dist/tree-operations/container-lift.js +20 -14
- package/dist/tree-operations/container-offsets.d.ts +22 -0
- package/dist/tree-operations/container-offsets.js +89 -0
- package/dist/tree-operations/content-write.d.ts +52 -29
- package/dist/tree-operations/content-write.js +155 -110
- package/dist/tree-operations/index.d.ts +4 -4
- package/dist/tree-operations/index.js +4 -4
- package/dist/tree-operations/keep-one-block.d.ts +10 -0
- package/dist/tree-operations/keep-one-block.js +19 -0
- package/dist/tree-operations/leaf-range.d.ts +33 -0
- package/dist/tree-operations/leaf-range.js +67 -0
- package/dist/tree-operations/list/empty-check.d.ts +2 -3
- package/dist/tree-operations/list/empty-check.js +4 -4
- package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
- package/dist/tree-operations/list/exit-replacement.js +4 -9
- package/dist/tree-operations/list/item-partition.d.ts +2 -2
- package/dist/tree-operations/list/item-partition.js +2 -2
- package/dist/tree-operations/list/list-builders.d.ts +18 -16
- package/dist/tree-operations/list/list-builders.js +59 -30
- package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
- package/dist/tree-operations/list/ordered-markers.js +7 -16
- package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
- package/dist/tree-operations/list/reconcile-task.js +80 -23
- package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
- package/dist/tree-operations/list/sublist-separator.js +20 -27
- package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
- package/dist/tree-operations/list/task-paragraph.js +54 -0
- package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
- package/dist/tree-operations/list/unwrap-merge.js +44 -79
- package/dist/tree-operations/node-ops.d.ts +30 -52
- package/dist/tree-operations/node-ops.js +152 -218
- package/dist/tree-operations/node-primitives.d.ts +44 -31
- package/dist/tree-operations/node-primitives.js +84 -60
- package/dist/tree-operations/open-tail.d.ts +25 -0
- package/dist/tree-operations/open-tail.js +100 -0
- package/dist/tree-operations/parse-block.d.ts +15 -2
- package/dist/tree-operations/parse-block.js +19 -4
- package/dist/tree-operations/paste/apply.d.ts +7 -8
- package/dist/tree-operations/paste/apply.js +33 -63
- package/dist/tree-operations/paste/body-write.d.ts +8 -6
- package/dist/tree-operations/paste/body-write.js +13 -14
- package/dist/tree-operations/paste/container-match.d.ts +7 -10
- package/dist/tree-operations/paste/container-match.js +76 -58
- package/dist/tree-operations/paste/container-paste.d.ts +3 -3
- package/dist/tree-operations/paste/container-paste.js +3 -3
- package/dist/tree-operations/paste/dispatch.d.ts +26 -29
- package/dist/tree-operations/paste/dispatch.js +68 -53
- package/dist/tree-operations/paste/focus-target.d.ts +11 -14
- package/dist/tree-operations/paste/focus-target.js +13 -18
- package/dist/tree-operations/paste/hooks.d.ts +7 -12
- package/dist/tree-operations/paste/hooks.js +49 -46
- package/dist/tree-operations/paste/line-ending.d.ts +11 -0
- package/dist/tree-operations/paste/line-ending.js +32 -0
- package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
- package/dist/tree-operations/paste/list-absorb.js +17 -19
- package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
- package/dist/tree-operations/paste/list-break-out.js +24 -32
- package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
- package/dist/tree-operations/paste/parent-scope.js +9 -16
- package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
- package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
- package/dist/tree-operations/paste/paste-replacement.js +73 -42
- package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
- package/dist/tree-operations/paste/paste-transforms.js +18 -27
- package/dist/tree-operations/paste/replacement-parse.d.ts +19 -0
- package/dist/tree-operations/paste/replacement-parse.js +24 -0
- package/dist/tree-operations/paste/strategy.d.ts +1 -1
- package/dist/tree-operations/paste/strategy.js +1 -1
- package/dist/tree-operations/paste/table-slice.js +15 -10
- package/dist/tree-operations/paste-surfaces.d.ts +18 -29
- package/dist/tree-operations/paste-surfaces.js +14 -10
- package/dist/tree-operations/path-mutate.d.ts +7 -8
- package/dist/tree-operations/path-mutate.js +4 -4
- package/dist/tree-operations/reorder-unit.d.ts +4 -5
- package/dist/tree-operations/reorder-unit.js +5 -6
- package/dist/tree-operations/reorder.d.ts +7 -9
- package/dist/tree-operations/reorder.js +39 -40
- package/dist/tree-operations/settle.d.ts +42 -53
- package/dist/tree-operations/settle.js +241 -162
- package/dist/tree-operations/sharing.d.ts +5 -5
- package/dist/tree-operations/splice-many.d.ts +5 -5
- package/dist/tree-operations/splice-many.js +5 -5
- package/dist/tree-operations/stored-as.d.ts +13 -0
- package/dist/tree-operations/stored-as.js +48 -0
- package/dist/tree-operations/structural-change.d.ts +11 -15
- package/dist/tree-operations/structural-change.js +10 -14
- package/dist/tree-operations/structural-suffix.d.ts +22 -0
- package/dist/tree-operations/structural-suffix.js +61 -0
- package/dist/tree-operations/sub-table-copy.d.ts +7 -0
- package/dist/tree-operations/sub-table-copy.js +40 -36
- package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
- package/dist/tree-operations/table-grid-clipboard.js +11 -36
- package/dist/tree-operations/table-mutations.d.ts +7 -3
- package/dist/tree-operations/table-mutations.js +45 -9
- package/dist/tree-operations/unshare.d.ts +11 -15
- package/dist/tree-operations/unshare.js +15 -17
- package/dist/undo/manager.js +1 -1
- package/dist/undo/types.d.ts +2 -2
- package/docs/guide/consumer-guide.md +329 -205
- package/docs/guide/directives.md +7 -7
- package/docs/guide/plugin-api.md +267 -183
- package/docs/guide/plugin-guide.md +341 -235
- package/docs/guide/plugin-testing.md +96 -82
- package/package.json +17 -21
- package/dist/ambient/ambient-cursor.d.ts +0 -41
- package/dist/ambient/ambient-cursor.js +0 -120
- package/dist/components/blocks/code/code-paste.d.ts +0 -24
- package/dist/components/blocks/code/code-paste.js +0 -21
- package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
- package/dist/components/blocks/table/cell-clipboard.js +0 -67
- package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
- package/dist/components/blocks/text/hidden-suffix.js +0 -15
- package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
- package/dist/components/image/image-source-bytes.d.ts +0 -15
- package/dist/components/image/image-source-bytes.js +0 -80
- package/dist/cursor/content-offsets.d.ts +0 -29
- package/dist/cursor/content-offsets.js +0 -151
- package/dist/cursor/reveal-anchor.d.ts +0 -30
- package/dist/cursor/reveal-anchor.js +0 -31
- package/dist/invariants/split-landing.d.ts +0 -8
- package/dist/invariants/split-landing.js +0 -15
- package/dist/selection/double-click-trim.d.ts +0 -17
- package/dist/selection/double-click-trim.js +0 -57
- package/dist/tree-operations/list/terminator.d.ts +0 -17
- package/dist/tree-operations/list/terminator.js +0 -60
- package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -29
- package/dist/tree-operations/paste/replace-block-at-parent.js +0 -75
|
@@ -1,29 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Where a caret can
|
|
3
|
-
*
|
|
4
|
-
* in, boolean out; `tryGapStop` is the one
|
|
5
|
-
*
|
|
2
|
+
* Where a caret can sit between two sibling blocks: the boundaries no block's own editable
|
|
3
|
+
* element can reach, read off the kinds' `gapEdges`. The eligibility checks are pure (document
|
|
4
|
+
* in, boolean out); `tryGapStop` is the one call that places the caret. A gap is deliberately
|
|
5
|
+
* not a `SelectionPoint`: it is never a cross-block endpoint.
|
|
6
6
|
*/
|
|
7
7
|
import { isBlockNode, nodeAt } from '../tree-operations/node-primitives';
|
|
8
8
|
import { tryGetBlockKindDescriptor } from '../schema/block-kind-descriptor';
|
|
9
9
|
import { isReadingMode } from '../presentation-mode';
|
|
10
10
|
import { placeGapCaret } from './caret-doors';
|
|
11
|
-
/**
|
|
12
|
-
*
|
|
13
|
-
* undeclared kind refuses on its side. The root's trailing boundary is excluded: the
|
|
14
|
-
* move-past-end append (`editor-actions/focus/focus.ts`) already owns it.
|
|
15
|
-
*/
|
|
11
|
+
/** A boundary is eligible when every block facing it declares that edge. The root's trailing
|
|
12
|
+
* boundary is excluded, since the move-past-end append already handles it. */
|
|
16
13
|
export function gapEligibleAt(doc, parentPath, index) {
|
|
17
14
|
const children = gapScopeChildren(doc, parentPath);
|
|
18
15
|
if (!children)
|
|
19
16
|
return false;
|
|
20
17
|
return gapEligibleAmong(children, index, parentPath.length > 0);
|
|
21
18
|
}
|
|
22
|
-
/**
|
|
23
|
-
*
|
|
24
|
-
* in hand and no path to resolve. `ownsTrailingBoundary` is false for the root, whose trailing
|
|
25
|
-
* boundary belongs to the move-past-end append.
|
|
26
|
-
*/
|
|
19
|
+
/** The same rule for a caller that already has the children and no path to resolve;
|
|
20
|
+
* `ownsTrailingBoundary` is false for the root. */
|
|
27
21
|
export function gapEligibleAmong(children, index, ownsTrailingBoundary) {
|
|
28
22
|
if (index < 0 || index > children.length)
|
|
29
23
|
return false;
|
|
@@ -34,11 +28,8 @@ export function gapEligibleAmong(children, index, ownsTrailingBoundary) {
|
|
|
34
28
|
}
|
|
35
29
|
return declaresEdge(children[index - 1], 'after') && declaresEdge(children[index], 'before');
|
|
36
30
|
}
|
|
37
|
-
/**
|
|
38
|
-
*
|
|
39
|
-
* scope a BlockList renders. Shared with the undo restore road, so a drifted path cannot
|
|
40
|
-
* park a caret somewhere nothing would paint it.
|
|
41
|
-
*/
|
|
31
|
+
/** The children a gap could sit between at `parentPath`, or null when that path names no child
|
|
32
|
+
* list a BlockList renders, so a stale path cannot put a caret where nothing paints it. */
|
|
42
33
|
export function gapScopeChildren(doc, parentPath) {
|
|
43
34
|
const parent = nodeAt(doc, parentPath);
|
|
44
35
|
if (!parent)
|
|
@@ -52,18 +43,15 @@ function declaresEdge(node, edge) {
|
|
|
52
43
|
const edges = tryGetBlockKindDescriptor(node.kind)?.gapEdges;
|
|
53
44
|
return edges === edge || edges === 'both';
|
|
54
45
|
}
|
|
55
|
-
/**
|
|
56
|
-
*
|
|
57
|
-
* all, so the gesture keeps its old landing. A caller that must act BETWEEN the decision
|
|
58
|
-
* and the landing asks this, then goes through the door itself.
|
|
59
|
-
*/
|
|
46
|
+
/** Whether a gesture may put the caret in this gap; reading mode has no caret, so never. A caller
|
|
47
|
+
* that must act between the decision and the placement asks this, then calls `placeGapCaret`. */
|
|
60
48
|
export function canGapStop(scope, parentPath, boundaryIndex) {
|
|
61
49
|
if (isReadingMode(scope.getPresentationMode))
|
|
62
50
|
return false;
|
|
63
51
|
return gapEligibleAt(scope.getDoc(), parentPath, boundaryIndex);
|
|
64
52
|
}
|
|
65
|
-
/**
|
|
66
|
-
*
|
|
53
|
+
/** Puts the caret at an eligible `boundaryIndex` and reports whether it did, so a traversal
|
|
54
|
+
* can stop instead of entering its target. */
|
|
67
55
|
export function tryGapStop(scope, parentPath, boundaryIndex) {
|
|
68
56
|
if (!canGapStop(scope, parentPath, boundaryIndex))
|
|
69
57
|
return false;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What copying a rectangle of table cells writes: a GFM sub-table for plain text and an HTML
|
|
3
|
+
* table for spreadsheets. The cell's copy and the editor root's copy both write it.
|
|
4
|
+
*/
|
|
5
|
+
import type { DocumentView } from '../core/node-views';
|
|
6
|
+
import type { GridCoverage } from './range-coverage';
|
|
7
|
+
export interface GridClipboard {
|
|
8
|
+
text: string;
|
|
9
|
+
html: string;
|
|
10
|
+
}
|
|
11
|
+
/** Null for a single cell, whose copy is its own text. */
|
|
12
|
+
export declare function gridClipboard(doc: DocumentView, grid: GridCoverage): GridClipboard | null;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What copying a rectangle of table cells writes: a GFM sub-table for plain text and an HTML
|
|
3
|
+
* table for spreadsheets. The cell's copy and the editor root's copy both write it.
|
|
4
|
+
*/
|
|
5
|
+
import { isBlockNode, nodeAt } from '../tree-operations/node-primitives';
|
|
6
|
+
import { copyRectangleAsSubTable } from '../tree-operations/sub-table-copy';
|
|
7
|
+
import { gridToHtmlTable, rectangleGrid } from '../tree-operations/table-grid-clipboard';
|
|
8
|
+
/** Null for a single cell, whose copy is its own text. */
|
|
9
|
+
export function gridClipboard(doc, grid) {
|
|
10
|
+
const { top, left, rows, cols } = grid.rect;
|
|
11
|
+
if (rows * cols === 1)
|
|
12
|
+
return null;
|
|
13
|
+
const table = nodeAt(doc, grid.path);
|
|
14
|
+
if (!table || !isBlockNode(table))
|
|
15
|
+
return null;
|
|
16
|
+
const from = { rowIdx: top, colIdx: left };
|
|
17
|
+
const to = { rowIdx: top + rows - 1, colIdx: left + cols - 1 };
|
|
18
|
+
return {
|
|
19
|
+
text: copyRectangleAsSubTable(table, from, to),
|
|
20
|
+
html: gridToHtmlTable(rectangleGrid(table, from, to))
|
|
21
|
+
};
|
|
22
|
+
}
|
|
@@ -1,43 +1,31 @@
|
|
|
1
|
-
/** Cross-block keyboard extension and collapse
|
|
1
|
+
/** Cross-block keyboard extension and collapse: `SelectionState` writes plus the native caret. */
|
|
2
2
|
import type { SelectionState } from './selection-state.svelte';
|
|
3
|
+
import type { SelectedWidgetHandle, SelectedWidgetRange, SelectionPoint } from './primitives';
|
|
3
4
|
import type { Document } from '../core/nodes';
|
|
4
|
-
import type {
|
|
5
|
+
import type { GrammarView } from '../schema/block-openers';
|
|
6
|
+
import type { CaretLanding } from './caret-landing';
|
|
5
7
|
import type { BlockElLookup } from '../editor-keys';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
*
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
*
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
*
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
*/
|
|
24
|
-
export declare function extendFocusToNextBlock(selection: SelectionState, doc: Document, currentBlockEl: HTMLElement, currentBlockPath: number[], axis?: 'horizontal' | 'vertical', getBlockElByPath?: BlockElLookup): boolean;
|
|
25
|
-
/**
|
|
26
|
-
* Extend focus to the previous leaf (Shift+ArrowUp / Shift+ArrowLeft). `side` = 'end' for
|
|
27
|
-
* ArrowLeft (cross the boundary by one char), 'start' for ArrowUp (select the whole previous
|
|
28
|
-
* line, matching native). The vertical path skips vertically-transparent leaves.
|
|
29
|
-
*/
|
|
30
|
-
export declare function extendFocusToPreviousBlock(selection: SelectionState, doc: Document, currentBlockEl: HTMLElement, currentBlockPath: number[], side?: 'start' | 'end', getBlockElByPath?: BlockElLookup): boolean;
|
|
31
|
-
/**
|
|
32
|
-
* Extend focus to the document edge (Mod+Shift+Home / Mod+Shift+End). A transparent edge
|
|
33
|
-
* leaf is bypassed for the nearest text-bearing one, matching the cross-block extension path.
|
|
34
|
-
*/
|
|
35
|
-
export declare function extendFocusToDocEdge(selection: SelectionState, doc: Document, currentBlockEl: HTMLElement, currentBlockPath: number[], to: 'start' | 'end', getBlockElByPath?: BlockElLookup): boolean;
|
|
36
|
-
/** Select the entire document as a cross-block range (second Ctrl+A press). */
|
|
8
|
+
import type { ScrollOwner } from '../cursor/scroll-owner';
|
|
9
|
+
/** Collapses a cross-block range to its start or end and puts the caret back there as a stored
|
|
10
|
+
* byte, brought into view, mounting a windowed-out target and never opening a closed body. */
|
|
11
|
+
export declare function collapseCrossBlock(selection: SelectionState, to: 'start' | 'end', doc: Document, restore: CaretLanding['restore']): Promise<void>;
|
|
12
|
+
/** Scrolls the focus block into view if mounted, without mounting it: a document-edge extend
|
|
13
|
+
* mounts its endpoint first, and one Shift+Arrow step lands beside the mounted range. */
|
|
14
|
+
export declare function scrollFocusBlockIntoView(selection: SelectionState, scroll: Pick<ScrollOwner, 'place'>): void;
|
|
15
|
+
/** Extends focus to the next leaf a caret can reach. The vertical axis skips leaves the caret
|
|
16
|
+
* passes over (an image-only paragraph); the horizontal stops on each, so it stays selectable. */
|
|
17
|
+
export declare function extendFocusToNextBlock(selection: SelectionState, doc: Document, grammar: GrammarView, currentBlockEl: HTMLElement, currentBlockPath: number[], axis?: 'horizontal' | 'vertical', getBlockElByPath?: BlockElLookup): boolean;
|
|
18
|
+
/** Extends focus to the previous leaf: `'end'` crosses the boundary by one character, `'start'`
|
|
19
|
+
* takes the whole previous line as native ArrowUp does, skipping leaves the caret passes over. */
|
|
20
|
+
export declare function extendFocusToPreviousBlock(selection: SelectionState, doc: Document, grammar: GrammarView, currentBlockEl: HTMLElement, currentBlockPath: number[], side?: 'start' | 'end', getBlockElByPath?: BlockElLookup): boolean;
|
|
21
|
+
/** Extends focus to the document edge; a transparent edge leaf is bypassed for the nearest
|
|
22
|
+
* text-bearing one, as the one-step extension does. */
|
|
23
|
+
export declare function extendFocusToDocEdge(selection: SelectionState, doc: Document, grammar: GrammarView, currentBlockEl: HTMLElement, currentBlockPath: number[], to: 'start' | 'end', getBlockElByPath?: BlockElLookup): boolean;
|
|
24
|
+
/** Selects the entire document as a cross-block range (the second Ctrl+A). */
|
|
37
25
|
export declare function selectWholeDocument(selection: SelectionState, doc: Document, getBlockElByPath?: (path: number[]) => HTMLElement | null): boolean;
|
|
38
|
-
/**
|
|
39
|
-
*
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
*/
|
|
43
|
-
export declare function
|
|
26
|
+
/** Shift+click on a block: extends the range, grows one from an image selected whole, or enters
|
|
27
|
+
* cross-block mode from the last caret. False for a same-block click, left to the browser. */
|
|
28
|
+
export declare function handleShiftClick(selection: SelectionState, clickedBlockEl: HTMLElement, clickedBlockPath: number[], clickedX: number, clickedY: number, previouslyFocusedBlockEl: HTMLElement | null, previouslyFocusedBlockPath: number[] | null, selectedWidget: SelectedWidgetHandle): boolean;
|
|
29
|
+
/** The edge of a selected widget a shift-click grows from: the one away from the click, so the
|
|
30
|
+
* range covers the widget and everything up to the click. */
|
|
31
|
+
export declare function widgetShiftAnchor(widget: SelectedWidgetRange, press: SelectionPoint): SelectionPoint;
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
/** Cross-block keyboard extension and collapse
|
|
1
|
+
/** Cross-block keyboard extension and collapse: `SelectionState` writes plus the native caret. */
|
|
2
2
|
import { isVerticallyTransparentNode } from '../core/inline/transparency';
|
|
3
|
-
import { readNativeCaretInBlock, applyCollapsedCaret,
|
|
3
|
+
import { readNativeCaretInBlock, applyCollapsedCaret, applySingleBlockRange, clearNativeSelection } from './native-bridge';
|
|
4
4
|
import { offsetFromViewportPoint } from '../cursor/point-offset';
|
|
5
|
-
import {
|
|
5
|
+
import { firstPath, lastPath, firstCaretLeaf, lastCaretLeaf, nextCaretPath, previousCaretPath, findCellPathForElement } from './path-lookup';
|
|
6
6
|
import { nodeAt } from '../tree-operations/node-primitives';
|
|
7
|
-
import { comparePaths,
|
|
7
|
+
import { comparePaths, pathsEqual } from './path-math';
|
|
8
8
|
import { displayLength } from '../core/lines';
|
|
9
9
|
// ── Enter / Collapse / Scroll ──────────────────────────────────────────────
|
|
10
|
-
/**
|
|
11
|
-
*
|
|
12
|
-
* native caret as both anchor and focus; the caller immediately extendFocus()es to the target.
|
|
13
|
-
*/
|
|
10
|
+
/** Enters cross-block mode on a Shift+Arrow leaving a block, with the native caret as both
|
|
11
|
+
* anchor and focus; the caller extends the focus right after. */
|
|
14
12
|
function enterCrossBlockFromKeyboard(selection, currentBlockEl, currentBlockPath) {
|
|
15
13
|
const anchorPoint = readNativeCaretInBlock(currentBlockEl, currentBlockPath);
|
|
16
14
|
if (!anchorPoint)
|
|
@@ -19,52 +17,37 @@ function enterCrossBlockFromKeyboard(selection, currentBlockEl, currentBlockPath
|
|
|
19
17
|
path: anchorPoint.path.slice(),
|
|
20
18
|
offset: anchorPoint.offset
|
|
21
19
|
});
|
|
22
|
-
//
|
|
23
|
-
//
|
|
24
|
-
// no text position gets no caret, which is why components/editor-root-clipboard.ts exists.
|
|
20
|
+
// A collapsed caret stays in the focus block, or Chromium sends clipboard events to <body>;
|
|
21
|
+
// an endpoint with no text position gets none, and `editor-root-clipboard.ts` covers it.
|
|
25
22
|
applyCollapsedCaret(currentBlockEl, anchorPoint);
|
|
26
23
|
return true;
|
|
27
24
|
}
|
|
28
|
-
/**
|
|
29
|
-
*
|
|
30
|
-
|
|
31
|
-
* offset, so the caret lands at the cell's edge via the cell ref.
|
|
32
|
-
*/
|
|
33
|
-
export async function collapseCrossBlock(selection, to, doc, getBlockElByPath, revealPath) {
|
|
25
|
+
/** Collapses a cross-block range to its start or end and puts the caret back there as a stored
|
|
26
|
+
* byte, brought into view, mounting a windowed-out target and never opening a closed body. */
|
|
27
|
+
export async function collapseCrossBlock(selection, to, doc, restore) {
|
|
34
28
|
const target = to === 'start' ? selection.start : selection.end;
|
|
35
29
|
if (!target)
|
|
36
30
|
return;
|
|
37
31
|
selection.collapse();
|
|
38
32
|
clearNativeSelection();
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
// ceremony, and the byte typed at the arrival would join the construct the cell opens with
|
|
42
|
-
// rather than land in front of it. Only the END side overrides the landing's own offset.
|
|
33
|
+
// A cell target takes the text-leaf caret path: the cell's own `focus` skips the collapse
|
|
34
|
+
// steps, and a byte typed there would join the construct the cell opens with.
|
|
43
35
|
const landing = selection.cellLandingFor(target);
|
|
44
36
|
const point = to === 'end' && !pathsEqual(landing.path, target.path)
|
|
45
37
|
? { path: landing.path, offset: leafOffsetEnd(doc, landing.path) }
|
|
46
38
|
: landing;
|
|
47
|
-
|
|
48
|
-
await revealPath(landing.path);
|
|
49
|
-
focusCollapsedCaret(getBlockElByPath, point);
|
|
39
|
+
await restore({ anchor: point, focus: point }, { reveal: 'into-view' });
|
|
50
40
|
}
|
|
51
|
-
/**
|
|
52
|
-
*
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (!selection.focus)
|
|
58
|
-
return;
|
|
59
|
-
const blockEl = getBlockElByPath(selection.focus.path);
|
|
60
|
-
blockEl?.scrollIntoView({ block: 'nearest', inline: 'nearest' });
|
|
41
|
+
/** Scrolls the focus block into view if mounted, without mounting it: a document-edge extend
|
|
42
|
+
* mounts its endpoint first, and one Shift+Arrow step lands beside the mounted range. */
|
|
43
|
+
export function scrollFocusBlockIntoView(selection, scroll) {
|
|
44
|
+
if (selection.focus) {
|
|
45
|
+
void scroll.place(selection.focus.path, { block: 'nearest', hold: false }).scroll();
|
|
46
|
+
}
|
|
61
47
|
}
|
|
62
48
|
// ── Keyboard Extension ─────────────────────────────────────────────────────
|
|
63
|
-
/**
|
|
64
|
-
*
|
|
65
|
-
* when the seam collapses (focus contracted back onto the anchor's prose leaf). Keyboard entry
|
|
66
|
-
* parks only a collapsed caret, so the range must be re-established here to stay visible.
|
|
67
|
-
*/
|
|
49
|
+
/** Moves the cross-block focus to `target`, or re-creates the range natively when the focus is
|
|
50
|
+
* back on the anchor's block, since keyboard entry left only a collapsed caret there. */
|
|
68
51
|
function extendFocusOrRestore(selection, target, offset, getBlockElByPath) {
|
|
69
52
|
const anchor = selection.anchor;
|
|
70
53
|
selection.extendFocus({ path: target, offset });
|
|
@@ -76,16 +59,12 @@ function extendFocusOrRestore(selection, target, offset, getBlockElByPath) {
|
|
|
76
59
|
blockEl.focus();
|
|
77
60
|
applySingleBlockRange(blockEl, Math.min(anchor.offset, offset), Math.max(anchor.offset, offset));
|
|
78
61
|
}
|
|
79
|
-
/**
|
|
80
|
-
*
|
|
81
|
-
|
|
82
|
-
* 'vertical' skips vertically-transparent leaves, mirroring single-block focus dispatch;
|
|
83
|
-
* 'horizontal' lands unconditionally so an image-only paragraph is selectable in one step.
|
|
84
|
-
*/
|
|
85
|
-
export function extendFocusToNextBlock(selection, doc, currentBlockEl, currentBlockPath, axis = 'horizontal', getBlockElByPath) {
|
|
62
|
+
/** Extends focus to the next leaf a caret can reach. The vertical axis skips leaves the caret
|
|
63
|
+
* passes over (an image-only paragraph); the horizontal stops on each, so it stays selectable. */
|
|
64
|
+
export function extendFocusToNextBlock(selection, doc, grammar, currentBlockEl, currentBlockPath, axis = 'horizontal', getBlockElByPath) {
|
|
86
65
|
const leafTarget = axis === 'vertical'
|
|
87
|
-
? firstNonTransparentLeafAfter(doc, currentBlockPath)
|
|
88
|
-
:
|
|
66
|
+
? firstNonTransparentLeafAfter(doc, grammar, currentBlockPath)
|
|
67
|
+
: nextCaretPath(doc, currentBlockPath);
|
|
89
68
|
if (!leafTarget)
|
|
90
69
|
return false;
|
|
91
70
|
if (!selection.isCrossBlock) {
|
|
@@ -95,15 +74,12 @@ export function extendFocusToNextBlock(selection, doc, currentBlockEl, currentBl
|
|
|
95
74
|
extendFocusOrRestore(selection, leafTarget, 0, getBlockElByPath);
|
|
96
75
|
return true;
|
|
97
76
|
}
|
|
98
|
-
/**
|
|
99
|
-
*
|
|
100
|
-
|
|
101
|
-
* line, matching native). The vertical path skips vertically-transparent leaves.
|
|
102
|
-
*/
|
|
103
|
-
export function extendFocusToPreviousBlock(selection, doc, currentBlockEl, currentBlockPath, side = 'end', getBlockElByPath) {
|
|
77
|
+
/** Extends focus to the previous leaf: `'end'` crosses the boundary by one character, `'start'`
|
|
78
|
+
* takes the whole previous line as native ArrowUp does, skipping leaves the caret passes over. */
|
|
79
|
+
export function extendFocusToPreviousBlock(selection, doc, grammar, currentBlockEl, currentBlockPath, side = 'end', getBlockElByPath) {
|
|
104
80
|
const leafTarget = side === 'start'
|
|
105
|
-
? lastNonTransparentLeafBefore(doc, currentBlockPath)
|
|
106
|
-
:
|
|
81
|
+
? lastNonTransparentLeafBefore(doc, grammar, currentBlockPath)
|
|
82
|
+
: previousCaretPath(doc, currentBlockPath);
|
|
107
83
|
if (!leafTarget)
|
|
108
84
|
return false;
|
|
109
85
|
if (!selection.isCrossBlock) {
|
|
@@ -114,18 +90,16 @@ export function extendFocusToPreviousBlock(selection, doc, currentBlockEl, curre
|
|
|
114
90
|
extendFocusOrRestore(selection, leafTarget, offset, getBlockElByPath);
|
|
115
91
|
return true;
|
|
116
92
|
}
|
|
117
|
-
/**
|
|
118
|
-
*
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
export function extendFocusToDocEdge(selection, doc, currentBlockEl, currentBlockPath, to, getBlockElByPath) {
|
|
122
|
-
const edge = to === 'start' ? firstPath(doc) : lastPath(doc);
|
|
93
|
+
/** Extends focus to the document edge; a transparent edge leaf is bypassed for the nearest
|
|
94
|
+
* text-bearing one, as the one-step extension does. */
|
|
95
|
+
export function extendFocusToDocEdge(selection, doc, grammar, currentBlockEl, currentBlockPath, to, getBlockElByPath) {
|
|
96
|
+
const edge = to === 'start' ? firstCaretLeaf(doc, [0]) : lastCaretLeaf(doc, [doc.children.length - 1]);
|
|
123
97
|
if (!edge)
|
|
124
98
|
return false;
|
|
125
|
-
const target = isTransparent(doc, edge)
|
|
99
|
+
const target = isTransparent(doc, grammar, edge)
|
|
126
100
|
? to === 'start'
|
|
127
|
-
? firstNonTransparentLeafFrom(doc, edge)
|
|
128
|
-
: lastNonTransparentLeafFrom(doc, edge)
|
|
101
|
+
? firstNonTransparentLeafFrom(doc, grammar, edge)
|
|
102
|
+
: lastNonTransparentLeafFrom(doc, grammar, edge)
|
|
129
103
|
: edge;
|
|
130
104
|
if (!target)
|
|
131
105
|
return false;
|
|
@@ -137,16 +111,18 @@ export function extendFocusToDocEdge(selection, doc, currentBlockEl, currentBloc
|
|
|
137
111
|
extendFocusOrRestore(selection, target, offset, getBlockElByPath);
|
|
138
112
|
return true;
|
|
139
113
|
}
|
|
140
|
-
/**
|
|
114
|
+
/** Selects the entire document as a cross-block range (the second Ctrl+A). */
|
|
141
115
|
export function selectWholeDocument(selection, doc, getBlockElByPath) {
|
|
116
|
+
// Not the caret-reachable order: the range has to cover a closed container's hidden body, so
|
|
117
|
+
// that a delete or a copy of the whole document takes it too.
|
|
142
118
|
const first = firstPath(doc);
|
|
143
119
|
const last = lastPath(doc);
|
|
144
120
|
if (!first || !last)
|
|
145
121
|
return false;
|
|
146
122
|
const lastOffset = leafOffsetEnd(doc, last);
|
|
147
123
|
selection.enterCrossBlock({ path: first, offset: 0 }, { path: last, offset: lastOffset });
|
|
148
|
-
// A
|
|
149
|
-
//
|
|
124
|
+
// A one-block document has no cross-block range to paint and `enterCrossBlock` refuses it,
|
|
125
|
+
// so select natively; otherwise a second Ctrl+A would deselect.
|
|
150
126
|
if (!selection.isCustomRendered) {
|
|
151
127
|
selection.collapse();
|
|
152
128
|
const blockEl = getBlockElByPath?.(first);
|
|
@@ -156,8 +132,8 @@ export function selectWholeDocument(selection, doc, getBlockElByPath) {
|
|
|
156
132
|
}
|
|
157
133
|
return true;
|
|
158
134
|
}
|
|
159
|
-
//
|
|
160
|
-
// table block, whose wrapper holds no caret, so
|
|
135
|
+
// A collapsed caret for paste dispatch, as in `enterCrossBlockFromKeyboard`. A table focus
|
|
136
|
+
// names the table block, whose wrapper holds no caret, so the caret goes in the cell.
|
|
161
137
|
const focus = selection.focus;
|
|
162
138
|
const parkPoint = focus && selection.cellLandingFor(focus);
|
|
163
139
|
const focusBlockEl = parkPoint ? getBlockElByPath?.(parkPoint.path) : null;
|
|
@@ -168,12 +144,14 @@ export function selectWholeDocument(selection, doc, getBlockElByPath) {
|
|
|
168
144
|
return true;
|
|
169
145
|
}
|
|
170
146
|
// ── Shift+Click ────────────────────────────────────────────────────────────
|
|
171
|
-
/**
|
|
172
|
-
*
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
147
|
+
/** Shift+click on a block: extends the range, grows one from an image selected whole, or enters
|
|
148
|
+
* cross-block mode from the last caret. False for a same-block click, left to the browser. */
|
|
149
|
+
export function handleShiftClick(selection, clickedBlockEl, clickedBlockPath, clickedX, clickedY, previouslyFocusedBlockEl, previouslyFocusedBlockPath, selectedWidget) {
|
|
150
|
+
// While an image is selected whole there is no caret to grow from, so the image is the
|
|
151
|
+
// anchor; the click ends that selection either way, as a range and it never coexist.
|
|
152
|
+
const widget = selectedWidget.range();
|
|
153
|
+
if (widget)
|
|
154
|
+
selectedWidget.clear();
|
|
177
155
|
const clickOffset = offsetFromViewportPoint(clickedBlockEl, clickedX, clickedY);
|
|
178
156
|
if (clickOffset === null)
|
|
179
157
|
return false;
|
|
@@ -182,71 +160,71 @@ export function handleShiftClick(selection, clickedBlockEl, clickedBlockPath, cl
|
|
|
182
160
|
selection.extendFocus(focusPoint);
|
|
183
161
|
return true;
|
|
184
162
|
}
|
|
163
|
+
if (widget) {
|
|
164
|
+
const anchor = widgetShiftAnchor(widget, focusPoint);
|
|
165
|
+
if (comparePaths(anchor.path, focusPoint.path) === 0) {
|
|
166
|
+
applySingleBlockRange(clickedBlockEl, anchor.offset, focusPoint.offset);
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
selection.enterCrossBlock(anchor, focusPoint);
|
|
170
|
+
applyCollapsedCaret(clickedBlockEl, focusPoint);
|
|
171
|
+
return true;
|
|
172
|
+
}
|
|
185
173
|
if (!previouslyFocusedBlockEl || !previouslyFocusedBlockPath)
|
|
186
174
|
return false;
|
|
187
|
-
//
|
|
188
|
-
//
|
|
189
|
-
// tell that from a cell index, so deepen to the cell here and let the seam convert.
|
|
175
|
+
// Nothing below a table carries a path, so a caret in a cell would read as the table's path
|
|
176
|
+
// with a character offset, which the endpoint snap can't tell from a cell index.
|
|
190
177
|
const anchorPath = findCellPathForElement(previouslyFocusedBlockEl) ?? previouslyFocusedBlockPath;
|
|
191
178
|
const anchor = readNativeCaretInBlock(previouslyFocusedBlockEl, anchorPath);
|
|
192
179
|
if (!anchor)
|
|
193
180
|
return false;
|
|
194
|
-
// Same
|
|
181
|
+
// Same block: the browser's own shift-click already made the range.
|
|
195
182
|
if (comparePaths(anchor.path, focusPoint.path) === 0)
|
|
196
183
|
return false;
|
|
197
184
|
selection.enterCrossBlock(anchor, focusPoint);
|
|
198
|
-
//
|
|
185
|
+
// A collapsed caret for paste dispatch (see `enterCrossBlockFromKeyboard`); the click's
|
|
186
|
+
// default is not relied on.
|
|
199
187
|
applyCollapsedCaret(clickedBlockEl, focusPoint);
|
|
200
188
|
return true;
|
|
201
189
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
function
|
|
205
|
-
const
|
|
206
|
-
|
|
207
|
-
}
|
|
208
|
-
/** Last leaf reachable from `fromPath` going backward (descend or step). */
|
|
209
|
-
function lastLeafBefore(doc, fromPath) {
|
|
210
|
-
// previousPath is doc-order (ancestor-before-descendant), so a first-child leaf's "previous"
|
|
211
|
-
// is its own container, and descending into that ancestor's LAST leaf would move the walk
|
|
212
|
-
// forward. Skip ancestors until a genuinely preceding subtree is reached.
|
|
213
|
-
let prev = previousPath(doc, fromPath);
|
|
214
|
-
while (prev && isStrictAncestorOf(prev, fromPath))
|
|
215
|
-
prev = previousPath(doc, prev);
|
|
216
|
-
return prev ? lastLeafAtOrBefore(doc, prev) : null;
|
|
190
|
+
/** The edge of a selected widget a shift-click grows from: the one away from the click, so the
|
|
191
|
+
* range covers the widget and everything up to the click. */
|
|
192
|
+
export function widgetShiftAnchor(widget, press) {
|
|
193
|
+
const order = comparePaths(press.path, widget.path);
|
|
194
|
+
const pressAfter = order > 0 || (order === 0 && press.offset > widget.start);
|
|
195
|
+
return { path: widget.path.slice(), offset: pressAfter ? widget.start : widget.end };
|
|
217
196
|
}
|
|
218
|
-
|
|
197
|
+
// ── Internal ───────────────────────────────────────────────────────────────
|
|
198
|
+
function isTransparent(doc, grammar, path) {
|
|
219
199
|
const node = nodeAt(doc, path);
|
|
220
200
|
// nodeAt returns the Document for an empty path; narrow it out (Document has no `raw`).
|
|
221
|
-
return node !== null && 'raw' in node && isVerticallyTransparentNode(node);
|
|
201
|
+
return node !== null && 'raw' in node && isVerticallyTransparentNode(node, grammar);
|
|
222
202
|
}
|
|
223
|
-
function firstNonTransparentLeafAfter(doc, fromPath) {
|
|
224
|
-
let leaf =
|
|
225
|
-
while (leaf && isTransparent(doc, leaf)) {
|
|
226
|
-
leaf =
|
|
203
|
+
function firstNonTransparentLeafAfter(doc, grammar, fromPath) {
|
|
204
|
+
let leaf = nextCaretPath(doc, fromPath);
|
|
205
|
+
while (leaf && isTransparent(doc, grammar, leaf)) {
|
|
206
|
+
leaf = nextCaretPath(doc, leaf);
|
|
227
207
|
}
|
|
228
208
|
return leaf;
|
|
229
209
|
}
|
|
230
|
-
function lastNonTransparentLeafBefore(doc, fromPath) {
|
|
231
|
-
let leaf =
|
|
232
|
-
while (leaf && isTransparent(doc, leaf)) {
|
|
233
|
-
leaf =
|
|
210
|
+
function lastNonTransparentLeafBefore(doc, grammar, fromPath) {
|
|
211
|
+
let leaf = previousCaretPath(doc, fromPath);
|
|
212
|
+
while (leaf && isTransparent(doc, grammar, leaf)) {
|
|
213
|
+
leaf = previousCaretPath(doc, leaf);
|
|
234
214
|
}
|
|
235
215
|
return leaf;
|
|
236
216
|
}
|
|
237
|
-
/**
|
|
238
|
-
*
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
function firstNonTransparentLeafFrom(doc, startPath) {
|
|
242
|
-
if (!isTransparent(doc, startPath))
|
|
217
|
+
/** Starts at the edge leaf itself and steps inward, unlike `nextCaretPath` and
|
|
218
|
+
* `previousCaretPath`, which step away from their start. */
|
|
219
|
+
function firstNonTransparentLeafFrom(doc, grammar, startPath) {
|
|
220
|
+
if (!isTransparent(doc, grammar, startPath))
|
|
243
221
|
return startPath;
|
|
244
|
-
return firstNonTransparentLeafAfter(doc, startPath);
|
|
222
|
+
return firstNonTransparentLeafAfter(doc, grammar, startPath);
|
|
245
223
|
}
|
|
246
|
-
function lastNonTransparentLeafFrom(doc, startPath) {
|
|
247
|
-
if (!isTransparent(doc, startPath))
|
|
224
|
+
function lastNonTransparentLeafFrom(doc, grammar, startPath) {
|
|
225
|
+
if (!isTransparent(doc, grammar, startPath))
|
|
248
226
|
return startPath;
|
|
249
|
-
return lastNonTransparentLeafBefore(doc, startPath);
|
|
227
|
+
return lastNonTransparentLeafBefore(doc, grammar, startPath);
|
|
250
228
|
}
|
|
251
229
|
function leafOffsetEnd(doc, path) {
|
|
252
230
|
const node = nodeAt(doc, path);
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Double and triple click: the second click of a run selects the word under it, the third the
|
|
3
|
+
* whole block's text, and a drag from either grows by that unit. The editor owns the gesture
|
|
4
|
+
* from the second click so the browser paints nothing of its own: its word rule varies by
|
|
5
|
+
* platform, it walks into non-editable widgets, and a marker here never joins a word.
|
|
6
|
+
*/
|
|
7
|
+
import type { UserScrollport } from '../cursor/scroll-ancestors';
|
|
8
|
+
import type { BlockElLookup } from '../editor-keys';
|
|
9
|
+
import type { SelectionState } from './selection-state.svelte';
|
|
10
|
+
export type ClickGranularity = 'word' | 'block';
|
|
11
|
+
export interface Span {
|
|
12
|
+
start: number;
|
|
13
|
+
end: number;
|
|
14
|
+
}
|
|
15
|
+
/** The segment at `offset`: the word ending there if there is one, else the segment starting
|
|
16
|
+
* there, as the browser takes it. Null on a platform with no segmenter. */
|
|
17
|
+
export declare function wordSpanAt(text: string, offset: number): Span | null;
|
|
18
|
+
/** The raw span `granularity` takes around a raw offset in `surface`; null where the word rule
|
|
19
|
+
* has nothing to read. */
|
|
20
|
+
export declare function spanAround(surface: HTMLElement, granularity: ClickGranularity, rawOffset: number): Span | null;
|
|
21
|
+
/** The unit a click count selects; a run stays at the block unit past three clicks. */
|
|
22
|
+
export declare function granularityForClickCount(clickCount: number): ClickGranularity | null;
|
|
23
|
+
export interface MultiClickDeps {
|
|
24
|
+
editorRoot: HTMLElement;
|
|
25
|
+
selection: SelectionState;
|
|
26
|
+
getBlockElByPath: BlockElLookup;
|
|
27
|
+
getScrollContainer(): UserScrollport;
|
|
28
|
+
lifetimeSignal?: AbortSignal;
|
|
29
|
+
/** A click outside every editable element (the margin, a container's own box) names the
|
|
30
|
+
* nearest block, as a single click there does; null when the click is on a button or handle. */
|
|
31
|
+
marginBlockAt(target: EventTarget | null, clientX: number, clientY: number): number[] | null;
|
|
32
|
+
/** Whether the click landed on an inline widget the editor already holds selected whole. */
|
|
33
|
+
pressesSelectedWidget(target: EventTarget | null): boolean;
|
|
34
|
+
}
|
|
35
|
+
/** Root listeners for the gesture. The mousedown and mouseup are cancelled so the browser paints
|
|
36
|
+
* no caret over the range, but never the pointerdown, which would silence the click. */
|
|
37
|
+
export declare function installMultiClickSelect(deps: MultiClickDeps): () => void;
|