@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,79 +1,124 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Dragging a selection and dropping it
|
|
3
|
-
*
|
|
4
|
-
* over a document that lost bytes in between, and inside one block the source commit rebuilds the
|
|
5
|
-
* surface under the drop. Owned here instead: one snapshot over two raw writes, which splice
|
|
6
|
-
* nothing, so no path moves under the second.
|
|
2
|
+
* Dragging a selection and dropping it, as one undo entry over two raw writes (the cut, then
|
|
3
|
+
* the insert). The browser's own drag is two separate edits, which undo would take in two steps.
|
|
7
4
|
*/
|
|
8
5
|
import { emitClipboardError } from '../editor-events';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { replaceRangeRaw } from '../components/blocks/text/live-selection-edit';
|
|
14
|
-
import { blockNodeAt, emptyParagraph, writeOwnRaw } from '../tree-operations/node-primitives';
|
|
6
|
+
import { rawOffsetAt, rawRangeToDomRange } from '../cursor/widget-offset';
|
|
7
|
+
import { documentLineEnding, trailingLineEnding, trimTrailingLineEnding } from '../core/lines';
|
|
8
|
+
import { blockContentElAt } from '../components/block-el-lookup';
|
|
9
|
+
import { blockNodeAt, emptyParagraph, normalizeOwnRaw, writeOwnRaw } from '../tree-operations/node-primitives';
|
|
15
10
|
import { cloneNode } from '../tree-operations/clone';
|
|
16
|
-
import {
|
|
11
|
+
import { replaceRangeInLeaf } from '../tree-operations/leaf-range';
|
|
17
12
|
import { rebuildAncestryRaw } from '../schema/container-raw';
|
|
18
13
|
import { applyPasteTransforms } from '../tree-operations/paste/paste-transforms';
|
|
19
|
-
import { replaceBlockAtParent } from '../tree-operations/paste/replace-block-at-parent';
|
|
20
14
|
import { parseReplacement } from '../tree-operations/paste/replacement-parse';
|
|
15
|
+
import { slotReaderAt } from '../tree-operations/list/task-paragraph';
|
|
21
16
|
import { blockNearPoint } from './nearest-block';
|
|
22
17
|
import { findSurfaceForElement } from './path-lookup';
|
|
23
|
-
import {
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
import { charOffsetOf } from './primitives';
|
|
19
|
+
import { storedAsAt } from '../tree-operations/stored-as';
|
|
20
|
+
import { docPathFrom } from '../cursor/coordinate-spaces';
|
|
21
|
+
/** A drag of the editor's selection in a shape the drop can't move (leaving its element, empty,
|
|
22
|
+
* holding a line break); the drop cancels it rather than handing it back to the browser. */
|
|
26
23
|
const DECLINED = 'declined';
|
|
27
24
|
// ── Public entry ───────────────────────────────────────────────────────────
|
|
28
25
|
export function installSelectionDrop(deps) {
|
|
29
26
|
let source = null;
|
|
27
|
+
// Where the painted caret stands. A drag fires `dragover` over and over at one position,
|
|
28
|
+
// and only a move to a different drop point has a new caret to draw.
|
|
29
|
+
let caretAt = null;
|
|
30
|
+
function hideCaret() {
|
|
31
|
+
if (!caretAt)
|
|
32
|
+
return;
|
|
33
|
+
caretAt = null;
|
|
34
|
+
deps.setDropCaret(null);
|
|
35
|
+
}
|
|
36
|
+
/** The caret saying where a release would land: cancelling the browser's drop takes its own
|
|
37
|
+
* caret away, so the editor's stands where the drop would land and declines where it does. */
|
|
38
|
+
function drawCaretAt(clientX, clientY, copy) {
|
|
39
|
+
const from = source;
|
|
40
|
+
if (!from || from === DECLINED || deps.isReadOnly())
|
|
41
|
+
return hideCaret();
|
|
42
|
+
const target = dropTarget(deps, clientX, clientY);
|
|
43
|
+
if (!target)
|
|
44
|
+
return hideCaret();
|
|
45
|
+
// The same refusal `dropOffsetAfterCut` makes once the cut has shrunk the block, tested
|
|
46
|
+
// here before the cut: a move has nowhere to put bytes inside the range it took them from.
|
|
47
|
+
const inside = pathsEqual(target.path, from.path) && insideRange(target.offset, from.start, from.end);
|
|
48
|
+
if (inside && !copy) {
|
|
49
|
+
return hideCaret();
|
|
50
|
+
}
|
|
51
|
+
if (caretAt && caretAt.offset === target.offset && pathsEqual(caretAt.path, target.path)) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const rect = dropCaretRect(deps.editorRoot, target.path, target.offset);
|
|
55
|
+
if (!rect)
|
|
56
|
+
return hideCaret();
|
|
57
|
+
caretAt = target;
|
|
58
|
+
deps.setDropCaret(rect);
|
|
59
|
+
}
|
|
30
60
|
const onDragStart = (e) => {
|
|
31
|
-
source = readSelectionSource(deps
|
|
61
|
+
source = readSelectionSource(deps, e.target);
|
|
32
62
|
};
|
|
33
63
|
const onDragEnd = () => {
|
|
34
64
|
source = null;
|
|
65
|
+
hideCaret();
|
|
35
66
|
};
|
|
36
|
-
// The editor is the drop target for every drag
|
|
37
|
-
//
|
|
67
|
+
// The editor is the drop target for every drag recognised here, declined ones included: the
|
|
68
|
+
// drop handler below must run to cancel the browser's pair of native edits.
|
|
38
69
|
const onDragOver = (e) => {
|
|
39
|
-
if (source)
|
|
40
|
-
|
|
70
|
+
if (!source)
|
|
71
|
+
return;
|
|
72
|
+
e.preventDefault();
|
|
73
|
+
drawCaretAt(e.clientX, e.clientY, isCopyDrag(e));
|
|
74
|
+
};
|
|
75
|
+
// `dragleave` also fires for every child the pointer crosses, so the caret goes only once
|
|
76
|
+
// the point is outside the editor's own box.
|
|
77
|
+
const onDragLeave = (e) => {
|
|
78
|
+
if (source && !isInside(deps.editorRoot, e.clientX, e.clientY))
|
|
79
|
+
hideCaret();
|
|
41
80
|
};
|
|
42
81
|
const onDrop = (e) => {
|
|
43
82
|
const from = source;
|
|
44
83
|
source = null;
|
|
84
|
+
hideCaret();
|
|
45
85
|
if (!from)
|
|
46
86
|
return;
|
|
47
|
-
// Before every decline below, not after: the browser's two edits land
|
|
48
|
-
// is not
|
|
87
|
+
// Before every decline below, not after: the browser's two edits land separately and its
|
|
88
|
+
// undo is not the editor's, so a declined shape changes nothing rather than half of it.
|
|
49
89
|
e.preventDefault();
|
|
50
90
|
if (from === DECLINED || deps.isReadOnly())
|
|
51
91
|
return;
|
|
52
92
|
const target = dropTarget(deps, e.clientX, e.clientY);
|
|
53
93
|
if (!target)
|
|
54
94
|
return;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
void runDrop(deps, from, target, text, e.ctrlKey || e.altKey).catch((error) => {
|
|
59
|
-
// A throw between the two writes leaves a snapshot pushed and half the move applied;
|
|
60
|
-
// the host hears it on the channel the paste route reports through.
|
|
95
|
+
void runDrop(deps, from, target, isCopyDrag(e)).catch((error) => {
|
|
96
|
+
// A throw between the two writes leaves half the move applied; the host hears about it on
|
|
97
|
+
// the same channel paste errors use.
|
|
61
98
|
emitClipboardError(deps.events, { error, path: from.path });
|
|
62
99
|
});
|
|
63
100
|
};
|
|
64
101
|
deps.editorRoot.addEventListener('dragstart', onDragStart);
|
|
65
102
|
deps.editorRoot.addEventListener('dragend', onDragEnd);
|
|
66
103
|
deps.editorRoot.addEventListener('dragover', onDragOver);
|
|
104
|
+
deps.editorRoot.addEventListener('dragleave', onDragLeave);
|
|
67
105
|
deps.editorRoot.addEventListener('drop', onDrop);
|
|
68
106
|
return () => {
|
|
107
|
+
// A reinstall mid-drag hands the new listeners no caret to clear, so it goes here.
|
|
108
|
+
hideCaret();
|
|
69
109
|
deps.editorRoot.removeEventListener('dragstart', onDragStart);
|
|
70
110
|
deps.editorRoot.removeEventListener('dragend', onDragEnd);
|
|
71
111
|
deps.editorRoot.removeEventListener('dragover', onDragOver);
|
|
112
|
+
deps.editorRoot.removeEventListener('dragleave', onDragLeave);
|
|
72
113
|
deps.editorRoot.removeEventListener('drop', onDrop);
|
|
73
114
|
};
|
|
74
115
|
}
|
|
75
|
-
/**
|
|
76
|
-
|
|
116
|
+
/** Ctrl, or Alt (Option, macOS's copy key for a drag): the release copies instead of moving. */
|
|
117
|
+
function isCopyDrag(e) {
|
|
118
|
+
return e.ctrlKey || e.altKey;
|
|
119
|
+
}
|
|
120
|
+
/** Where `target` ends up after a splice of `delta` blocks at `at` inside `parent`: what the
|
|
121
|
+
* drop's second write addresses once the first write's reparse changed the block count. */
|
|
77
122
|
export function shiftPathAfterSplice(target, parent, at, delta) {
|
|
78
123
|
if (delta === 0 || target.length <= parent.length)
|
|
79
124
|
return target;
|
|
@@ -86,42 +131,40 @@ export function shiftPathAfterSplice(target, parent, at, delta) {
|
|
|
86
131
|
shifted[parent.length] += delta;
|
|
87
132
|
return shifted;
|
|
88
133
|
}
|
|
89
|
-
/** Where a drop at `offset` lands once `[start, end)` left the same block,
|
|
90
|
-
*
|
|
134
|
+
/** Where a drop at `offset` lands once `[start, end)` has left the same block, which shrank by
|
|
135
|
+
* `shrunkBy` bytes after the join cleanup. Null inside the range. */
|
|
91
136
|
export function dropOffsetAfterCut(offset, start, end, shrunkBy) {
|
|
92
|
-
if (offset
|
|
137
|
+
if (insideRange(offset, start, end))
|
|
93
138
|
return null;
|
|
94
139
|
return offset <= start ? offset : Math.max(0, offset - shrunkBy);
|
|
95
140
|
}
|
|
96
141
|
// ── Reading the gesture ────────────────────────────────────────────────────
|
|
97
|
-
/**
|
|
98
|
-
*
|
|
99
|
-
|
|
100
|
-
* move, which the drop cancels. A cross-block selection reaches neither: it paints through the
|
|
101
|
-
* overlay and leaves no native range for the browser to drag.
|
|
102
|
-
*/
|
|
103
|
-
function readSelectionSource(editorRoot, dragged) {
|
|
142
|
+
/** The native range the drag carries, in raw offsets: null leaves the drag to the browser, and
|
|
143
|
+
* {@link DECLINED} is the editor's selection in a shape the drop cancels. */
|
|
144
|
+
function readSelectionSource(deps, dragged) {
|
|
104
145
|
const sel = window.getSelection();
|
|
105
146
|
if (!sel || sel.isCollapsed || sel.rangeCount === 0)
|
|
106
147
|
return null;
|
|
107
148
|
const range = sel.getRangeAt(0);
|
|
108
|
-
//
|
|
109
|
-
// painted elsewhere: a selection drag
|
|
149
|
+
// An element that is draggable on its own (a rendered link, an image) is not this gesture,
|
|
150
|
+
// even with a range painted elsewhere: a selection drag starts on a node the range covers.
|
|
110
151
|
if (!(dragged instanceof Node) || !range.intersectsNode(dragged))
|
|
111
152
|
return null;
|
|
112
153
|
const surface = surfaceOf(range.startContainer);
|
|
113
|
-
if (!surface || !editorRoot.contains(surface))
|
|
154
|
+
if (!surface || !deps.editorRoot.contains(surface))
|
|
114
155
|
return null;
|
|
115
|
-
//
|
|
156
|
+
// From here the drag is the editor's selection, so every remaining shape is declined.
|
|
116
157
|
if (!surface.contains(range.endContainer))
|
|
117
158
|
return DECLINED;
|
|
118
159
|
const found = findSurfaceForElement(surface);
|
|
119
160
|
if (!found)
|
|
120
161
|
return DECLINED;
|
|
121
|
-
const
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
162
|
+
const start = rawOffsetAt(surface, range.startContainer, range.startOffset);
|
|
163
|
+
const end = rawOffsetAt(surface, range.endContainer, range.endOffset);
|
|
164
|
+
if (start >= end)
|
|
165
|
+
return DECLINED;
|
|
166
|
+
const text = movedText(deps, { ...found, start, end });
|
|
167
|
+
return text === null ? DECLINED : { ...found, start, end, text };
|
|
125
168
|
}
|
|
126
169
|
/** The block and offset a drop point addresses, as a single-click caret would land. Null where
|
|
127
170
|
* the point names no character position (a whole-block unit, a table cell). */
|
|
@@ -132,8 +175,25 @@ function dropTarget(deps, clientX, clientY) {
|
|
|
132
175
|
return null;
|
|
133
176
|
return blockNodeAt(deps.getDoc(), point.path) ? { path: point.path, offset: point.offset } : null;
|
|
134
177
|
}
|
|
135
|
-
/**
|
|
136
|
-
*
|
|
178
|
+
/** Viewport rect of the caret at `offset` in the block at `path`. A block whose offset names no
|
|
179
|
+
* text position falls back to its own box, and an unmounted one to null. */
|
|
180
|
+
function dropCaretRect(root, path, offset) {
|
|
181
|
+
const el = blockContentElAt(root, path);
|
|
182
|
+
if (!el)
|
|
183
|
+
return null;
|
|
184
|
+
const at = charOffsetOf({ path, offset }, 'selection-drop:caret');
|
|
185
|
+
const rect = rawRangeToDomRange(el, at, at)?.getBoundingClientRect();
|
|
186
|
+
if (rect && rect.height > 0)
|
|
187
|
+
return { left: rect.left, top: rect.top, height: rect.height };
|
|
188
|
+
const box = el.getBoundingClientRect();
|
|
189
|
+
return box.height > 0 ? { left: box.left, top: box.top, height: box.height } : null;
|
|
190
|
+
}
|
|
191
|
+
function isInside(el, clientX, clientY) {
|
|
192
|
+
const box = el.getBoundingClientRect();
|
|
193
|
+
return clientX >= box.left && clientX <= box.right && clientY >= box.top && clientY <= box.bottom;
|
|
194
|
+
}
|
|
195
|
+
/** The source element's bytes for the range, after the paste transforms. Null for text this
|
|
196
|
+
* module does not handle: a line break needs the structural paste path. */
|
|
137
197
|
function movedText(deps, from) {
|
|
138
198
|
const node = blockNodeAt(deps.getDoc(), from.path);
|
|
139
199
|
if (!node)
|
|
@@ -142,10 +202,15 @@ function movedText(deps, from) {
|
|
|
142
202
|
const text = applyPasteTransforms(raw, deps.activePlugins);
|
|
143
203
|
return text && !/[\r\n]/.test(text) ? text : null;
|
|
144
204
|
}
|
|
145
|
-
// ── The commit
|
|
146
|
-
|
|
205
|
+
// ── The commit ─────────────────────────────────────────────────────────────
|
|
206
|
+
export function runDrop(deps, from, to, copy) {
|
|
207
|
+
// One entry for the cut and the insert, and none when neither lands.
|
|
208
|
+
return deps.controller.undoStep({ path: docPathFrom(from.path), offset: from.start }, () => moveOrCopy(deps, from, to, copy));
|
|
209
|
+
}
|
|
210
|
+
async function moveOrCopy(deps, from, to, copy) {
|
|
211
|
+
const text = from.text;
|
|
147
212
|
if (copy) {
|
|
148
|
-
await writeBlockRaw(deps, to.path, insert(to.offset, text), to.offset + text.length
|
|
213
|
+
await writeBlockRaw(deps, to.path, insert(to.offset, text), to.offset + text.length);
|
|
149
214
|
return;
|
|
150
215
|
}
|
|
151
216
|
const cut = cutFrom(deps, from);
|
|
@@ -156,23 +221,25 @@ async function runDrop(deps, from, to, text, copy) {
|
|
|
156
221
|
if (offset === null)
|
|
157
222
|
return;
|
|
158
223
|
const merged = spliceAt(cut.raw, offset, text);
|
|
159
|
-
await writeBlockRaw(deps, cut.path, () => merged, offset + text.length
|
|
224
|
+
await writeBlockRaw(deps, cut.path, () => merged, offset + text.length);
|
|
160
225
|
return;
|
|
161
226
|
}
|
|
162
|
-
|
|
163
|
-
//
|
|
164
|
-
// transient caret the second write moves off is its first cell.
|
|
227
|
+
// A table's `focus` takes a cell, never a character offset, so the temporary caret the second
|
|
228
|
+
// write moves away from is its first cell (G1.29).
|
|
165
229
|
const sourceCaret = from.inCell ? 0 : from.start;
|
|
166
|
-
const spliced = await writeBlockRaw(deps, cut.path, () => cut.raw, sourceCaret
|
|
230
|
+
const spliced = await writeBlockRaw(deps, cut.path, () => cut.raw, sourceCaret);
|
|
231
|
+
// An insert after a cut that never landed would turn the move into a copy.
|
|
232
|
+
if (spliced === null)
|
|
233
|
+
return;
|
|
167
234
|
const at = cut.path[cut.path.length - 1];
|
|
168
235
|
const target = shiftPathAfterSplice(to.path, cut.path.slice(0, -1), at, spliced);
|
|
169
|
-
await writeBlockRaw(deps, target, insert(to.offset, text), to.offset + text.length
|
|
236
|
+
await writeBlockRaw(deps, target, insert(to.offset, text), to.offset + text.length);
|
|
170
237
|
}
|
|
171
238
|
function insert(offset, text) {
|
|
172
239
|
return (raw) => spliceAt(raw, offset, text);
|
|
173
240
|
}
|
|
174
|
-
/** The source
|
|
175
|
-
* live-mode join cleans up after itself. */
|
|
241
|
+
/** The source element's display bytes with the dragged range gone, cut as any in-leaf edit is so
|
|
242
|
+
* a live-mode join cleans up after itself. */
|
|
176
243
|
function cutFrom(deps, from) {
|
|
177
244
|
const node = blockNodeAt(deps.getDoc(), from.path);
|
|
178
245
|
if (!node)
|
|
@@ -180,68 +247,65 @@ function cutFrom(deps, from) {
|
|
|
180
247
|
if (from.inCell)
|
|
181
248
|
return cutFromCell(deps, from, node);
|
|
182
249
|
const before = trimTrailingLineEnding(node.raw);
|
|
183
|
-
const
|
|
250
|
+
const store = storedAsAt(deps.getDoc(), from.path, deps.reading);
|
|
251
|
+
const edit = replaceRangeInLeaf(node, { start: from.start, end: from.end }, '', store);
|
|
184
252
|
const raw = trimTrailingLineEnding(edit.raw);
|
|
185
253
|
return { path: from.path, raw, shrunkBy: before.length - raw.length };
|
|
186
254
|
}
|
|
187
|
-
/** A cell's bytes are joined into its row, so the
|
|
188
|
-
* own
|
|
255
|
+
/** A cell's bytes are joined into its row, so the table is the block the cut rewrites: the cell's
|
|
256
|
+
* own cut on a copy, then the kind's escaping and the ancestor rebuild around it. */
|
|
189
257
|
function cutFromCell(deps, from, cell) {
|
|
190
258
|
const tablePath = from.path.slice(0, -2);
|
|
191
259
|
// The cell path is resolved from a DOM selector contract, so the kind is read, not assumed.
|
|
192
260
|
const table = blockNodeAt(deps.getDoc(), tablePath);
|
|
193
261
|
if (!table || table.kind !== 'table')
|
|
194
262
|
return null;
|
|
195
|
-
const
|
|
263
|
+
const store = storedAsAt(deps.getDoc(), from.path, deps.reading);
|
|
264
|
+
const cut = replaceRangeInLeaf(cell, { start: from.start, end: from.end }, '', store);
|
|
196
265
|
const rebuilt = cloneNode(table);
|
|
197
266
|
const inner = from.path.slice(-2);
|
|
198
267
|
const [rowIdx, colIdx] = inner;
|
|
199
268
|
const written = rebuilt.children?.[rowIdx]?.children?.[colIdx];
|
|
200
269
|
if (!written)
|
|
201
270
|
return null;
|
|
202
|
-
writeOwnRaw(written, cut.
|
|
203
|
-
rebuildAncestryRaw(rebuilt, inner);
|
|
271
|
+
writeOwnRaw(written, trimTrailingLineEnding(cut.raw), documentLineEnding(deps.getDoc()), deps.reading.grammar);
|
|
272
|
+
rebuildAncestryRaw(rebuilt, inner, deps.reading.grammar);
|
|
204
273
|
const raw = trimTrailingLineEnding(rebuilt.raw);
|
|
205
274
|
return { path: tablePath, raw, shrunkBy: trimTrailingLineEnding(table.raw).length - raw.length };
|
|
206
275
|
}
|
|
207
|
-
/**
|
|
208
|
-
*
|
|
209
|
-
|
|
210
|
-
* write's path honest. `own` pushes this write's own undo entry.
|
|
211
|
-
*/
|
|
212
|
-
async function writeBlockRaw(deps, path, rewrite, caret, own) {
|
|
276
|
+
/** Replaces the block at `path` with the reparse of `rewrite`'s bytes. Returns the change in block
|
|
277
|
+
* count at that position, so a second write's path stays right, or null when nothing landed. */
|
|
278
|
+
async function writeBlockRaw(deps, path, rewrite, caret) {
|
|
213
279
|
const doc = deps.getDoc();
|
|
214
280
|
const node = blockNodeAt(doc, path);
|
|
215
281
|
if (!node)
|
|
216
|
-
return
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
282
|
+
return null;
|
|
283
|
+
// The bytes are built outside the block's own element, so the kind's write rule runs here.
|
|
284
|
+
const lineEnding = documentLineEnding(doc);
|
|
285
|
+
const written = normalizeOwnRaw(node, rewrite(trimTrailingLineEnding(node.raw)), lineEnding);
|
|
286
|
+
// A block emptied by the cut keeps its position as a blank paragraph: no splice, so the
|
|
287
|
+
// second write's path is still the one resolved at the drop.
|
|
288
|
+
const read = slotReaderAt(doc, path, deps.reading.grammar);
|
|
289
|
+
const parsed = parseReplacement(node, written, lineEnding, read, () => [
|
|
290
|
+
emptyParagraph(node.leadingTrivia ?? '', trailingLineEnding(node.raw, lineEnding))
|
|
222
291
|
]);
|
|
223
292
|
if (!parsed)
|
|
224
|
-
return
|
|
225
|
-
const landed = await
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
undoEntry: own ? 'own' : 'join',
|
|
231
|
-
focusReplacementIndex: parsed.replacement.length - 1,
|
|
232
|
-
focusOffset: caret,
|
|
233
|
-
source: 'selection-drop',
|
|
234
|
-
...(deps.grammar ? { grammar: deps.grammar } : {})
|
|
235
|
-
});
|
|
236
|
-
// The LANDED count, not the parse's: a body rule inside the scope can rewrite the list. Zero
|
|
237
|
-
// is the unmounted-scope decline, which wrote nothing and so moved nothing.
|
|
238
|
-
return Math.max(0, landed - 1);
|
|
293
|
+
return null;
|
|
294
|
+
const landed = await deps.coordinator.replaceBlock(path, parsed.replacement, { replacementIndex: parsed.replacement.length - 1, offset: caret },
|
|
295
|
+
// The drop's undo step records the selection, so this offset is never read.
|
|
296
|
+
{ source: 'selection-drop', snapshotOffset: 0 });
|
|
297
|
+
// The count that landed, not the parse's: a container's body rule can rewrite the list.
|
|
298
|
+
return landed === null ? null : landed - 1;
|
|
239
299
|
}
|
|
240
300
|
// ── Small helpers ──────────────────────────────────────────────────────────
|
|
241
301
|
function spliceAt(raw, offset, text) {
|
|
242
302
|
const at = Math.max(0, Math.min(offset, raw.length));
|
|
243
303
|
return raw.slice(0, at) + text + raw.slice(at);
|
|
244
304
|
}
|
|
305
|
+
/** Strictly between `start` and `end`: a position the dragged range itself covers. */
|
|
306
|
+
function insideRange(offset, start, end) {
|
|
307
|
+
return offset > start && offset < end;
|
|
308
|
+
}
|
|
245
309
|
function pathsEqual(a, b) {
|
|
246
310
|
return a.length === b.length && a.every((v, i) => v === b[i]);
|
|
247
311
|
}
|
|
@@ -1,46 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* can't be carried by only one. A gap caret takes {@link restoreGapCaret}, the same road minus
|
|
6
|
-
* the endpoint pair.
|
|
2
|
+
* The checks a stored selection passes before it goes back onto the live editor: each endpoint
|
|
3
|
+
* resolved against the current tree and clamped into its block. `caret-landing.ts :: restore` puts
|
|
4
|
+
* every stored selection back, a gap caret through {@link restoreGapCaret}.
|
|
7
5
|
*/
|
|
8
6
|
import type { DocumentView } from '../core/node-views';
|
|
9
|
-
import type {
|
|
10
|
-
import
|
|
7
|
+
import type { BlockComponent } from '../block-component';
|
|
8
|
+
import { type SelectionPoint } from './primitives';
|
|
11
9
|
import { type GapCaretPosition } from './gap-caret';
|
|
12
10
|
import type { SelectionState } from './selection-state.svelte';
|
|
11
|
+
import type { CaretMemory } from '../cursor/caret-memory';
|
|
13
12
|
/**
|
|
14
13
|
* `unresolvable` is decided before anything happens and is the only outcome that leaves the
|
|
15
|
-
* editor untouched. `unplaced` is everything short of both halves landing; the
|
|
16
|
-
* the
|
|
14
|
+
* editor untouched. `unplaced` is everything short of both halves landing; the mount and, on
|
|
15
|
+
* the overlay route, the cross-block state write have already run.
|
|
17
16
|
*/
|
|
18
17
|
export type SelectionRestoreOutcome = 'applied' | 'unresolvable' | 'unplaced';
|
|
19
|
-
export interface
|
|
18
|
+
export interface GapCaretRestoreDeps {
|
|
20
19
|
getDoc(): DocumentView;
|
|
21
20
|
selectionState: SelectionState;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
/** Mounts the block at `path`: the caret landing's `mount`. */
|
|
22
|
+
mount(path: number[]): Promise<BlockComponent | null>;
|
|
23
|
+
/** Brings the mounted block into view as the restore's reveal policy says. */
|
|
24
|
+
reveal(path: number[]): Promise<void>;
|
|
25
|
+
/** Cleared on each restore, since a placed caret did not arrive by a key. */
|
|
26
|
+
caretMemory: Pick<CaretMemory, 'forget'>;
|
|
26
27
|
}
|
|
27
|
-
/**
|
|
28
|
-
*
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
*/
|
|
32
|
-
export declare function restoreSelection(selection: EditorSelection, deps: SelectionRestoreDeps): Promise<SelectionRestoreOutcome>;
|
|
33
|
-
/**
|
|
34
|
-
* Restore a gap caret. The scope check is `gapEligibleAt`'s, not a full eligibility gate:
|
|
35
|
-
* the tree being restored is the one the gap was minted against, so `gapEdges` cannot have
|
|
36
|
-
* changed under it, but the PATH can now name something no BlockList renders.
|
|
37
|
-
*/
|
|
38
|
-
export declare function restoreGapCaret(pos: GapCaretPosition, deps: SelectionRestoreDeps): Promise<SelectionRestoreOutcome>;
|
|
39
|
-
/**
|
|
40
|
-
* Clamp an endpoint into its block's addressable range, or null when its path no longer
|
|
41
|
-
* resolves to a block (the document root included). The NODE KIND picks the coordinate space,
|
|
42
|
-
* not the `cellCoordinate` flag: an intra-table endpoint is unflagged (see
|
|
43
|
-
* {@link SelectionPoint}) yet still carries a cell index. The char-space bound is `raw`, which
|
|
44
|
-
* on a marker-bearing kind runs past the content end; the DOM walk lands such an offset there.
|
|
45
|
-
*/
|
|
28
|
+
/** Restores a gap caret with only the child-list check: the tree is the one the gap was made
|
|
29
|
+
* against, so its `gapEdges` hold, but the path may name something no BlockList renders. */
|
|
30
|
+
export declare function restoreGapCaret(pos: GapCaretPosition, deps: GapCaretRestoreDeps): Promise<SelectionRestoreOutcome>;
|
|
31
|
+
/** Clamps an endpoint into its block's whole `raw`, markers included, or null when its path names
|
|
32
|
+
* no block. An offset on a table path comes back flagged as a cell index, even a plain one. */
|
|
46
33
|
export declare function resolveSelectionPoint(doc: DocumentView, point: SelectionPoint): SelectionPoint | null;
|
|
@@ -1,66 +1,43 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* can't be carried by only one. A gap caret takes {@link restoreGapCaret}, the same road minus
|
|
6
|
-
* the endpoint pair.
|
|
2
|
+
* The checks a stored selection passes before it goes back onto the live editor: each endpoint
|
|
3
|
+
* resolved against the current tree and clamped into its block. `caret-landing.ts :: restore` puts
|
|
4
|
+
* every stored selection back, a gap caret through {@link restoreGapCaret}.
|
|
7
5
|
*/
|
|
8
6
|
import { isBlockNode, nodeAt } from '../tree-operations/node-primitives';
|
|
9
|
-
import {
|
|
7
|
+
import { cellPoint } from './primitives';
|
|
10
8
|
import { placeGapCaret } from './caret-doors';
|
|
11
9
|
import { gapScopeChildren } from './gap-caret';
|
|
12
|
-
import {
|
|
13
|
-
/**
|
|
14
|
-
*
|
|
15
|
-
* declined before the reveal, so a dead snapshot cannot move the viewport or disturb a live
|
|
16
|
-
* selection. What a decline does about the on-screen selection is the caller's policy.
|
|
17
|
-
*/
|
|
18
|
-
export async function restoreSelection(selection, deps) {
|
|
19
|
-
const doc = deps.getDoc();
|
|
20
|
-
const anchor = resolveSelectionPoint(doc, selection.anchor);
|
|
21
|
-
const focus = resolveSelectionPoint(doc, selection.focus);
|
|
22
|
-
if (!anchor || !focus)
|
|
23
|
-
return 'unresolvable';
|
|
24
|
-
// Reveal exactly what the applier parks the caret at: a cell-coordinate focus parks in its
|
|
25
|
-
// deep [table, row, col] cell, and table rows window too.
|
|
26
|
-
const revealed = await deps.revealTarget(deps.selectionState.cellLandingFor(focus).path);
|
|
27
|
-
const placed = applySelectionToDom({ anchor, focus }, deps.selectionState, deps.getBlockElByPath);
|
|
28
|
-
return revealed && placed ? 'applied' : 'unplaced';
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Restore a gap caret. The scope check is `gapEligibleAt`'s, not a full eligibility gate:
|
|
32
|
-
* the tree being restored is the one the gap was minted against, so `gapEdges` cannot have
|
|
33
|
-
* changed under it, but the PATH can now name something no BlockList renders.
|
|
34
|
-
*/
|
|
10
|
+
import { clampCellIndex, countsCells } from '../schema/block-kind-descriptor';
|
|
11
|
+
/** Restores a gap caret with only the child-list check: the tree is the one the gap was made
|
|
12
|
+
* against, so its `gapEdges` hold, but the path may name something no BlockList renders. */
|
|
35
13
|
export async function restoreGapCaret(pos, deps) {
|
|
36
14
|
const children = gapScopeChildren(deps.getDoc(), pos.parentPath);
|
|
37
15
|
if (!children)
|
|
38
16
|
return 'unresolvable';
|
|
17
|
+
deps.caretMemory.forget();
|
|
39
18
|
const index = Math.min(Math.max(pos.index, 0), children.length);
|
|
40
19
|
// The boundary itself mounts nothing; what must be on screen is the block it sits
|
|
41
20
|
// against, so the gap's own BlockList is inside a live window when it renders.
|
|
42
21
|
const neighbour = index < children.length ? index : index - 1;
|
|
43
|
-
const
|
|
22
|
+
const neighbourPath = [...pos.parentPath, neighbour];
|
|
23
|
+
const mounted = (await deps.mount(neighbourPath)) !== null;
|
|
24
|
+
if (mounted)
|
|
25
|
+
await deps.reveal(neighbourPath);
|
|
44
26
|
placeGapCaret(deps.selectionState, { parentPath: pos.parentPath, index });
|
|
45
|
-
return
|
|
27
|
+
return mounted ? 'applied' : 'unplaced';
|
|
46
28
|
}
|
|
47
|
-
/**
|
|
48
|
-
*
|
|
49
|
-
* resolves to a block (the document root included). The NODE KIND picks the coordinate space,
|
|
50
|
-
* not the `cellCoordinate` flag: an intra-table endpoint is unflagged (see
|
|
51
|
-
* {@link SelectionPoint}) yet still carries a cell index. The char-space bound is `raw`, which
|
|
52
|
-
* on a marker-bearing kind runs past the content end; the DOM walk lands such an offset there.
|
|
53
|
-
*/
|
|
29
|
+
/** Clamps an endpoint into its block's whole `raw`, markers included, or null when its path names
|
|
30
|
+
* no block. An offset on a table path comes back flagged as a cell index, even a plain one. */
|
|
54
31
|
export function resolveSelectionPoint(doc, point) {
|
|
55
32
|
const node = nodeAt(doc, point.path);
|
|
56
33
|
if (node === null || !isBlockNode(node))
|
|
57
34
|
return null;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
35
|
+
const cells = countsCells(node);
|
|
36
|
+
const offset = cells
|
|
37
|
+
? clampCellIndex(node, point.offset)
|
|
38
|
+
: Math.min(Math.max(point.offset, 0), node.raw.length);
|
|
62
39
|
// Path copied so a restored endpoint never aliases the caller's snapshot.
|
|
63
|
-
return point.cellCoordinate
|
|
64
|
-
?
|
|
40
|
+
return cells || point.cellCoordinate
|
|
41
|
+
? cellPoint(point.path, offset)
|
|
65
42
|
: { path: point.path.slice(), offset };
|
|
66
43
|
}
|