@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,41 +1,38 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* below the last one) and the public `placeCaretAtPoint
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* Only what is mounted is measured, so "below the last block" resolves against the CST (VR-6).
|
|
2
|
+
* Places the caret from a viewport point, for a click in the editor's dead space (the padding
|
|
3
|
+
* beside a block, the area below the last one) and the public `placeCaretAtPoint` alike. A point
|
|
4
|
+
* between two blocks may become a gap caret; otherwise it clamps into the nearest mounted block
|
|
5
|
+
* and descends to the child level with it. Only mounted blocks are measured.
|
|
7
6
|
*/
|
|
8
7
|
import { CURSOR_END } from '../block-component';
|
|
9
|
-
import { blockAtPoint } from './block-hit-test';
|
|
10
|
-
import { measureBlocks, nearestBand, probePointIn } from './nearest-block';
|
|
8
|
+
import { blockAtPoint, holdsOwnText } from './block-hit-test';
|
|
9
|
+
import { descendToLevelChild, measureBlocks, nearestBand, probePointIn } from './nearest-block';
|
|
11
10
|
import { placeGapCaret } from './caret-doors';
|
|
12
11
|
import { canGapStop } from './gap-caret';
|
|
13
|
-
import {
|
|
12
|
+
import { caretOffsetAtPoint } from '../cursor/point-offset';
|
|
13
|
+
import { docPathFrom } from '../cursor/coordinate-spaces';
|
|
14
14
|
export function createDeadSpaceCaret(deps) {
|
|
15
|
-
//
|
|
16
|
-
//
|
|
15
|
+
// Tracked from pointerdown because `click` alone cannot tell a dead-space click from a drag
|
|
16
|
+
// that started on a block and released in the margin: both report dead space as the target.
|
|
17
17
|
let pressedOnDeadSpace = false;
|
|
18
|
-
/**
|
|
19
|
-
*
|
|
20
|
-
* slice already reaches it. */
|
|
18
|
+
/** A click below the document when its tail is not mounted: land at the real last block's end,
|
|
19
|
+
* which is where the clamped point below lands once the tail is mounted. */
|
|
21
20
|
async function landAtDocumentEnd() {
|
|
22
21
|
const index = deps.lastBlockIndex();
|
|
23
22
|
if (index < 0)
|
|
24
23
|
return;
|
|
25
|
-
|
|
26
|
-
if (!component?.focusable)
|
|
27
|
-
return;
|
|
24
|
+
// Before the landing, which then records the end it lands at as the outside of a closer.
|
|
28
25
|
deps.resetSelectionForClick();
|
|
29
|
-
|
|
26
|
+
await deps.land({ path: docPathFrom([index]), offset: CURSOR_END });
|
|
30
27
|
}
|
|
31
28
|
function placeAtPoint(root, x, y) {
|
|
32
|
-
// One measuring pass
|
|
33
|
-
//
|
|
29
|
+
// One measuring pass: the gap check and the nearest-block clamp read the same layout, and
|
|
30
|
+
// a second query would force layout again inside one click.
|
|
34
31
|
const blocks = measureBlocks(root);
|
|
35
32
|
const boundary = rootBoundaryOutsideBands(blocks, y);
|
|
36
33
|
if (boundary !== null && canGapStop(deps.gapScope, [], boundary)) {
|
|
37
|
-
// The
|
|
38
|
-
//
|
|
34
|
+
// The reset runs first, as for a block below: it clears the gap caret, so nothing may
|
|
35
|
+
// run between it and `placeGapCaret`, which also ends a live range (G2.12).
|
|
39
36
|
deps.resetSelectionForClick();
|
|
40
37
|
placeGapCaret(deps.gapScope.selection, { parentPath: [], index: boundary });
|
|
41
38
|
return true;
|
|
@@ -43,22 +40,18 @@ export function createDeadSpaceCaret(deps) {
|
|
|
43
40
|
const band = nearestBand(blocks.map((b) => b.rect), y);
|
|
44
41
|
if (!band)
|
|
45
42
|
return false;
|
|
46
|
-
// Below the last
|
|
47
|
-
// and
|
|
48
|
-
// the two would land a document apart. The reveal road is the only answer available
|
|
49
|
-
// here: the target has no box to probe until it mounts.
|
|
43
|
+
// Below the last mounted block is not below the document while a tail is windowed out,
|
|
44
|
+
// and the real last block has no box to hit-test until it mounts.
|
|
50
45
|
if (band.belowAll && lastMountedTopLevel(blocks) !== deps.lastBlockIndex()) {
|
|
51
46
|
void landAtDocumentEnd();
|
|
52
47
|
return true;
|
|
53
48
|
}
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
if (!hit)
|
|
49
|
+
const near = hitInBand(root, blocks, band, x, y);
|
|
50
|
+
if (!near)
|
|
57
51
|
return false;
|
|
58
|
-
|
|
59
|
-
// with no
|
|
60
|
-
//
|
|
61
|
-
// on nothing, and focuses nothing (the click's owner then blurs what was being edited).
|
|
52
|
+
const { hit, x: probeX, y: probeY } = near;
|
|
53
|
+
// A block with no text line (an equation, a table, source shown only while editing) takes
|
|
54
|
+
// only a click on its content; a click beside it focuses nothing, so the edit blurs.
|
|
62
55
|
const transient = hit.charSurface?.classList.contains('md-source-surface') ?? false;
|
|
63
56
|
if ((!hit.charSurface || transient) && !pressedOnBlockContent(root, x, y))
|
|
64
57
|
return false;
|
|
@@ -68,27 +61,28 @@ export function createDeadSpaceCaret(deps) {
|
|
|
68
61
|
const component = deps.getBlockComponent(hit.path);
|
|
69
62
|
if (!component?.focusable)
|
|
70
63
|
return false;
|
|
71
|
-
//
|
|
72
|
-
//
|
|
64
|
+
// A caret target inside a grid needs `focusByPath`; declining a block that lacks it keeps
|
|
65
|
+
// the selection intact.
|
|
73
66
|
if (landing.path.length > 0 && !component.focusByPath)
|
|
74
67
|
return false;
|
|
75
|
-
//
|
|
76
|
-
//
|
|
77
|
-
// printable key type-replaces the whole of it.
|
|
68
|
+
// The reset waits for a known caret target, so a declined point leaves a live range painted
|
|
69
|
+
// and the next printable key replaces the whole of it.
|
|
78
70
|
deps.resetSelectionForClick();
|
|
79
|
-
// Both
|
|
80
|
-
//
|
|
71
|
+
// Both calls end a live range (`selection/caret-doors.ts`); `focusByPath` reaches the
|
|
72
|
+
// leaf's own `focus`.
|
|
81
73
|
if (landing.path.length === 0)
|
|
82
74
|
component.focus(landing.offset);
|
|
83
75
|
else
|
|
84
76
|
component.focusByPath(landing.path, landing.offset);
|
|
85
|
-
// The
|
|
86
|
-
//
|
|
87
|
-
|
|
88
|
-
|
|
77
|
+
// The block's own snap answers the clamped point as a click there, so a caret beside a
|
|
78
|
+
// non-editable widget is painted rather than showing nothing.
|
|
79
|
+
const leaf = landing.path.length === 0
|
|
80
|
+
? component
|
|
81
|
+
: deps.getBlockComponent([...hit.path, ...landing.path]);
|
|
82
|
+
leaf?.snapCaretToPoint?.(probeX, probeY);
|
|
89
83
|
return true;
|
|
90
84
|
}
|
|
91
|
-
/** The nearest block's hit for a
|
|
85
|
+
/** The nearest block's hit for a click, with the point clamped into its box. */
|
|
92
86
|
function hitNearPoint(root, x, y) {
|
|
93
87
|
const blocks = measureBlocks(root);
|
|
94
88
|
const band = nearestBand(blocks.map((b) => b.rect), y);
|
|
@@ -96,19 +90,15 @@ export function createDeadSpaceCaret(deps) {
|
|
|
96
90
|
return null;
|
|
97
91
|
if (band.belowAll && lastMountedTopLevel(blocks) !== deps.lastBlockIndex())
|
|
98
92
|
return null;
|
|
99
|
-
|
|
100
|
-
const hit = blockAtPoint(root, probeX, probeY);
|
|
101
|
-
return hit && { hit, probeX, probeY };
|
|
93
|
+
return hitInBand(root, blocks, band, x, y);
|
|
102
94
|
}
|
|
103
95
|
function anchorAtPoint(root, x, y) {
|
|
104
96
|
const near = hitNearPoint(root, x, y);
|
|
105
97
|
if (!near)
|
|
106
98
|
return null;
|
|
107
|
-
const { hit, probeX, probeY } = near;
|
|
108
|
-
// No
|
|
109
|
-
//
|
|
110
|
-
// put a range END at the block's start and leave it out; a cell would make the drag a caret
|
|
111
|
-
// placement in the nearest column. A rule names no landing at all, and is a unit all the same.
|
|
99
|
+
const { hit, x: probeX, y: probeY } = near;
|
|
100
|
+
// No text to measure against: an offset would put a range end at the block's start and
|
|
101
|
+
// leave the block out, and a cell would turn the drag into a caret placement.
|
|
112
102
|
if (!hit.charSurface)
|
|
113
103
|
return { path: hit.path.slice(), wholeBlock: true };
|
|
114
104
|
const landing = landingFor(hit, probeX, probeY);
|
|
@@ -137,9 +127,8 @@ export function createDeadSpaceCaret(deps) {
|
|
|
137
127
|
pressedOnDeadSpace = false;
|
|
138
128
|
if (!pressed || !isDeadSpace(root, event.target))
|
|
139
129
|
return false;
|
|
140
|
-
// A drag that ended in the margin leaves a
|
|
141
|
-
//
|
|
142
|
-
// range is overlay-painted with the native selection empty, and is ended below instead.
|
|
130
|
+
// A drag that ended in the margin leaves a native range the user just selected. A
|
|
131
|
+
// cross-block range leaves the native selection empty, so it is ended below instead.
|
|
143
132
|
const native = root.ownerDocument.defaultView?.getSelection();
|
|
144
133
|
if (native && native.rangeCount > 0 && !native.isCollapsed)
|
|
145
134
|
return false;
|
|
@@ -149,7 +138,7 @@ export function createDeadSpaceCaret(deps) {
|
|
|
149
138
|
};
|
|
150
139
|
}
|
|
151
140
|
// ── Internal ───────────────────────────────────────────────────────────────
|
|
152
|
-
/** The last top-level index
|
|
141
|
+
/** The last mounted top-level index; -1 when none is mounted. */
|
|
153
142
|
function lastMountedTopLevel(blocks) {
|
|
154
143
|
for (let i = blocks.length - 1; i >= 0; i--) {
|
|
155
144
|
const path = blocks[i].path;
|
|
@@ -158,18 +147,14 @@ function lastMountedTopLevel(blocks) {
|
|
|
158
147
|
}
|
|
159
148
|
return -1;
|
|
160
149
|
}
|
|
161
|
-
/**
|
|
162
|
-
*
|
|
163
|
-
* and the space between two adjacent bands where a layout leaves one. Below the last band
|
|
164
|
-
* is excluded — that y is the end-of-document gesture, and under windowing the last MOUNTED
|
|
165
|
-
* band is not the last block. Indices come off the path attribute for the same reason.
|
|
166
|
-
*/
|
|
150
|
+
/** The root-level gap a `y` outside every block's box names. Below the last block is excluded:
|
|
151
|
+
* that click means end of document, and the last mounted block may not be the last block. */
|
|
167
152
|
function rootBoundaryOutsideBands(blocks, y) {
|
|
168
153
|
const bands = blocks.flatMap((b) => b.path?.length === 1 ? [{ index: b.path[0], top: b.rect.top, bottom: b.rect.bottom }] : []);
|
|
169
154
|
if (bands.length === 0)
|
|
170
155
|
return null;
|
|
171
|
-
// Only when the document's
|
|
172
|
-
//
|
|
156
|
+
// Only when the document's first block is mounted: above a windowed-out head, the blocks
|
|
157
|
+
// under the point are not the ones the gap would name.
|
|
173
158
|
if (y < bands[0].top)
|
|
174
159
|
return bands[0].index === 0 ? 0 : null;
|
|
175
160
|
for (let i = 1; i < bands.length; i++) {
|
|
@@ -180,26 +165,22 @@ function rootBoundaryOutsideBands(blocks, y) {
|
|
|
180
165
|
}
|
|
181
166
|
return null;
|
|
182
167
|
}
|
|
183
|
-
/** The
|
|
184
|
-
*
|
|
185
|
-
function
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
return
|
|
168
|
+
/** The block a band answers for a point: the point clamped into the band's box, then handed
|
|
169
|
+
* down to the child level with it when the box is a container's. */
|
|
170
|
+
function hitInBand(root, blocks, band, x, y) {
|
|
171
|
+
const probe = probePointIn(blocks[band.index].rect, x, y, band.belowAll);
|
|
172
|
+
const hit = blockAtPoint(root, probe.x, probe.y);
|
|
173
|
+
return hit && descendToLevelChild(root, { hit, ...probe }, band.belowAll);
|
|
189
174
|
}
|
|
190
|
-
/**
|
|
191
|
-
*
|
|
192
|
-
* widens or pads `.block-list` moves the whole visible side gutter onto the list, which
|
|
193
|
-
* reports itself rather than the root. Everything else the editor renders has its own
|
|
194
|
-
* identity and is declined here.
|
|
195
|
-
*/
|
|
175
|
+
/** The root and any block list inside it: a host that pads `.block-list` moves the side gutter
|
|
176
|
+
* onto the list, which then reports itself as the click target. */
|
|
196
177
|
function isDeadSpace(root, target) {
|
|
197
178
|
if (target === root)
|
|
198
179
|
return true;
|
|
199
180
|
return target instanceof Element && target.classList.contains('block-list');
|
|
200
181
|
}
|
|
201
|
-
/** Whether the
|
|
202
|
-
* descendant of a host, not on the host's own box or the dead space around it. */
|
|
182
|
+
/** Whether the original point (not the clamped one) sits inside some block's content: on a
|
|
183
|
+
* descendant of a block host, not on the host's own box or the dead space around it. */
|
|
203
184
|
function pressedOnBlockContent(root, x, y) {
|
|
204
185
|
const direct = document.elementFromPoint(x, y);
|
|
205
186
|
if (!(direct instanceof Element) || isDeadSpace(root, direct))
|
|
@@ -207,23 +188,24 @@ function pressedOnBlockContent(root, x, y) {
|
|
|
207
188
|
const host = direct.closest('[data-block-path]');
|
|
208
189
|
return host !== null && host !== direct;
|
|
209
190
|
}
|
|
210
|
-
/**
|
|
211
|
-
*
|
|
212
|
-
* character-addressed surface) plus the offset within that leaf. Null declines the click.
|
|
213
|
-
*/
|
|
191
|
+
/** Where the caret goes for a hit: an inner child path (empty for a text block) and the offset
|
|
192
|
+
* within that leaf; null declines the click. */
|
|
214
193
|
function landingFor(hit, probeX, probeY) {
|
|
215
194
|
if (hit.caretTargetAtPoint)
|
|
216
195
|
return hit.caretTargetAtPoint(probeX, probeY);
|
|
217
|
-
// A kind with only the drag hook addresses cells and
|
|
196
|
+
// A kind with only the drag hook addresses cells and names no caret target.
|
|
218
197
|
if (hit.foreignDragHitTest)
|
|
219
198
|
return null;
|
|
220
|
-
// A leaf with no
|
|
221
|
-
//
|
|
199
|
+
// A leaf with no text (a rule, a rendered equation) reaches here only when clicked on its
|
|
200
|
+
// own box: the block itself is the target, and its `focus` ignores the offset.
|
|
222
201
|
if (!hit.charSurface)
|
|
223
202
|
return { path: [], offset: 0 };
|
|
224
|
-
// Reading mode
|
|
225
|
-
|
|
203
|
+
// Reading mode turns editing off, so no text is a block's own there. A container that kept
|
|
204
|
+
// the point has only its children's text, none of it level with the point.
|
|
205
|
+
if (!holdsOwnText(hit))
|
|
226
206
|
return null;
|
|
227
|
-
|
|
207
|
+
// A block whose box pads its own text (a code block) lands a point in that padding on the
|
|
208
|
+
// nearest line.
|
|
209
|
+
const offset = caretOffsetAtPoint(hit.charSurface, probeX, probeY);
|
|
228
210
|
return offset === null ? null : { path: [], offset };
|
|
229
211
|
}
|
|
@@ -16,18 +16,16 @@ export interface DragContext {
|
|
|
16
16
|
getBlockElByPath: BlockElLookup;
|
|
17
17
|
/** Aborted on editor unmount; forwarded to the session's teardown. */
|
|
18
18
|
lifetimeSignal?: AbortSignal;
|
|
19
|
-
/**
|
|
20
|
-
*
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
paintSameBlock?: boolean;
|
|
24
|
-
/** A drag continuing a multi-click: the range grows by that rung's unit. */
|
|
19
|
+
/** Read at each move: the drag began where no native drag extends a selection underneath (the
|
|
20
|
+
* editor's margin, a press it placed itself), so the session paints the same-block range. */
|
|
21
|
+
paintSameBlock?: () => boolean;
|
|
22
|
+
/** A drag continuing a double or triple click: the range grows by that click's unit. */
|
|
25
23
|
granularity?: DragGranularity;
|
|
26
24
|
}
|
|
27
|
-
/** The unit a multi-click drag grows by. Spans are raw offsets; the
|
|
28
|
-
* floor the range never shrinks below. */
|
|
25
|
+
/** The unit a multi-click drag grows by. Spans are raw offsets; the span the click itself
|
|
26
|
+
* selected is the floor the range never shrinks below. */
|
|
29
27
|
export interface DragGranularity {
|
|
30
|
-
/**
|
|
28
|
+
/** The element the click selected in; a pointer over no other block paints here. */
|
|
31
29
|
surface: HTMLElement;
|
|
32
30
|
anchorSpan: {
|
|
33
31
|
start: number;
|
|
@@ -13,9 +13,8 @@ import { blockNearPoint } from './nearest-block';
|
|
|
13
13
|
/** Document-level pointer listeners for a cross-block drag started at `down`, plus a disposer. */
|
|
14
14
|
export function installDragListener(ctx, anchorPoint, down) {
|
|
15
15
|
function processMove(clientX, clientY) {
|
|
16
|
-
// The nearest block, not the one under the pointer: moves coalesce to one per frame,
|
|
17
|
-
//
|
|
18
|
-
// autoscrolling drag sends nothing but off-block points.
|
|
16
|
+
// The nearest block, not the one under the pointer: moves coalesce to one per frame, and
|
|
17
|
+
// an autoscrolling drag sends nothing but off-block points.
|
|
19
18
|
const near = blockNearPoint(ctx.editorRoot, clientX, clientY);
|
|
20
19
|
if (!near)
|
|
21
20
|
return;
|
|
@@ -25,17 +24,16 @@ export function installDragListener(ctx, anchorPoint, down) {
|
|
|
25
24
|
}
|
|
26
25
|
if (comparePaths(near.path, anchorPoint.path) === 0) {
|
|
27
26
|
if (!('offset' in anchorPoint)) {
|
|
28
|
-
if (ctx.paintSameBlock)
|
|
27
|
+
if (ctx.paintSameBlock?.())
|
|
29
28
|
takeAnchorBlockWhole();
|
|
30
29
|
return;
|
|
31
30
|
}
|
|
32
31
|
if (ctx.selection.isCrossBlock) {
|
|
33
|
-
//
|
|
34
|
-
//
|
|
35
|
-
// underneath all along, so handing back gives the right single-block highlight.
|
|
32
|
+
// Back in the anchor block: the browser's drag has been extending the native
|
|
33
|
+
// selection all along, so collapsing the cross-block range restores its highlight.
|
|
36
34
|
ctx.selection.collapse();
|
|
37
35
|
}
|
|
38
|
-
if (ctx.paintSameBlock)
|
|
36
|
+
if (ctx.paintSameBlock?.())
|
|
39
37
|
paintSameBlockRange(near.endpointHere());
|
|
40
38
|
return;
|
|
41
39
|
}
|
|
@@ -44,8 +42,8 @@ export function installDragListener(ctx, anchorPoint, down) {
|
|
|
44
42
|
return;
|
|
45
43
|
if (isWholeBlockEndpoint(focusPoint) && !reachedCentreLine(near.path, clientY))
|
|
46
44
|
return;
|
|
47
|
-
// A whole
|
|
48
|
-
// new focus
|
|
45
|
+
// A whole-block range re-enters rather than extends: entering picks the anchor's side
|
|
46
|
+
// against the new focus, where extending would keep the block's start as the anchor.
|
|
49
47
|
if (!ctx.selection.isCrossBlock || ctx.selection.wholeUnitPath) {
|
|
50
48
|
ctx.selection.enterCrossBlock(anchorPoint, focusPoint);
|
|
51
49
|
}
|
|
@@ -53,8 +51,8 @@ export function installDragListener(ctx, anchorPoint, down) {
|
|
|
53
51
|
ctx.selection.extendFocus(focusPoint);
|
|
54
52
|
}
|
|
55
53
|
}
|
|
56
|
-
// The anchor's side
|
|
57
|
-
// starts it going down), so a
|
|
54
|
+
// The anchor's side follows the drag's direction (the clicked span ends the range going up,
|
|
55
|
+
// starts it going down), so a direction change re-enters; a same-side move only extends.
|
|
58
56
|
let anchorAfter = null;
|
|
59
57
|
function processGranularMove(unit, near, clientX, clientY) {
|
|
60
58
|
const anchorIsChar = 'offset' in anchorPoint && !anchorPoint.cellCoordinate;
|
|
@@ -90,10 +88,8 @@ export function installDragListener(ctx, anchorPoint, down) {
|
|
|
90
88
|
ctx.selection.extendFocus(focus);
|
|
91
89
|
}
|
|
92
90
|
}
|
|
93
|
-
// A block with no positions inside
|
|
94
|
-
//
|
|
95
|
-
// merely touched its edge has not asked for it. Not reached, the last focus stands, so the
|
|
96
|
-
// range grows to the block only when the pointer commits to it.
|
|
91
|
+
// A block with no positions inside joins the range only once the pointer crosses its centre
|
|
92
|
+
// line from the anchor's side; a sweep that merely touches its edge has not asked for it.
|
|
97
93
|
function reachedCentreLine(path, clientY) {
|
|
98
94
|
const box = ctx.getBlockElByPath(path)?.getBoundingClientRect();
|
|
99
95
|
if (!box)
|
|
@@ -101,16 +97,13 @@ export function installDragListener(ctx, anchorPoint, down) {
|
|
|
101
97
|
const middle = box.top + box.height / 2;
|
|
102
98
|
return comparePaths(anchorPoint.path, path) < 0 ? clientY >= middle : clientY <= middle;
|
|
103
99
|
}
|
|
104
|
-
// A whole-block anchor (a table, an equation) has nothing to paint natively
|
|
105
|
-
//
|
|
106
|
-
// The block is taken whole the moment the pointer moves, as the unit the state stores and the
|
|
107
|
-
// overlay paints (`wholeUnitPath`); a pointer returning from outside takes it whole again.
|
|
100
|
+
// A whole-block anchor (a table, an equation) has nothing to paint natively, so the block is
|
|
101
|
+
// taken whole the moment the pointer moves, or the drag would look like it does nothing.
|
|
108
102
|
function takeAnchorBlockWhole() {
|
|
109
103
|
if (ctx.selection.wholeUnitPath)
|
|
110
104
|
return;
|
|
111
|
-
// Both ends whole:
|
|
112
|
-
//
|
|
113
|
-
// pointer, the opposite of the sweep). The block is the unit until the drag leaves it.
|
|
105
|
+
// Both ends whole: a click beside a table dragged up over it would otherwise select the
|
|
106
|
+
// rows below the pointer, the opposite of the sweep.
|
|
114
107
|
ctx.selection.enterCrossBlock(anchorPoint, {
|
|
115
108
|
path: anchorPoint.path.slice(),
|
|
116
109
|
wholeBlock: true
|
|
@@ -129,8 +122,8 @@ export function installDragListener(ctx, anchorPoint, down) {
|
|
|
129
122
|
blockEl.focus({ preventScroll: true });
|
|
130
123
|
applySingleBlockRange(blockEl, Math.min(anchorPoint.offset, focusPoint.offset), Math.max(anchorPoint.offset, focusPoint.offset));
|
|
131
124
|
}
|
|
132
|
-
//
|
|
133
|
-
// search from `target` itself, not its parent.
|
|
125
|
+
// The pointer may land on a scrollable element directly (the table's `.table-block` edge),
|
|
126
|
+
// so the search starts from `target` itself, not its parent.
|
|
134
127
|
function scrollableSelfOrAncestor(target) {
|
|
135
128
|
let cur = target;
|
|
136
129
|
while (cur && cur !== ctx.editorRoot) {
|
|
@@ -164,24 +157,21 @@ export function installDragListener(ctx, anchorPoint, down) {
|
|
|
164
157
|
lifetimeSignal: ctx.lifetimeSignal
|
|
165
158
|
});
|
|
166
159
|
}
|
|
167
|
-
/**
|
|
168
|
-
*
|
|
169
|
-
* Chromium routes paste events to <body>. The highlight still comes from SelectionOverlay.
|
|
170
|
-
*/
|
|
160
|
+
/** Plants a collapsed native caret in the focus block so paste and key events have a target;
|
|
161
|
+
* without it Chromium routes paste events to <body>. */
|
|
171
162
|
function parkCaretInFocusBlock(ctx) {
|
|
172
163
|
const focus = ctx.selection.focus;
|
|
173
164
|
if (!focus)
|
|
174
165
|
return;
|
|
175
|
-
// A whole
|
|
176
|
-
// and clipboard
|
|
177
|
-
// native range left behind for the browser to act on.
|
|
166
|
+
// A whole-block range has no text node for a caret, so the editor root takes focus and its
|
|
167
|
+
// keydown and clipboard handlers serve the range.
|
|
178
168
|
if (ctx.selection.wholeUnitPath) {
|
|
179
169
|
clearNativeSelection();
|
|
180
170
|
ctx.editorRoot.focus({ preventScroll: true });
|
|
181
171
|
return;
|
|
182
172
|
}
|
|
183
173
|
// A drag ending inside a table leaves a focus addressing the table block by cell index; the
|
|
184
|
-
//
|
|
174
|
+
// caret goes in the cell that actually holds one.
|
|
185
175
|
const landing = ctx.selection.cellLandingFor(focus);
|
|
186
176
|
const blockEl = ctx.getBlockElByPath(landing.path);
|
|
187
177
|
if (!blockEl)
|
|
@@ -1,8 +1,8 @@
|
|
|
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 type { DocumentView, NodeView } from '../core/node-views';
|
|
8
8
|
import { type PresentationMode } from '../presentation-mode';
|
|
@@ -12,36 +12,25 @@ export interface GapCaretPosition {
|
|
|
12
12
|
parentPath: number[];
|
|
13
13
|
index: number;
|
|
14
14
|
}
|
|
15
|
-
/**
|
|
16
|
-
*
|
|
17
|
-
* undeclared kind refuses on its side. The root's trailing boundary is excluded: the
|
|
18
|
-
* move-past-end append (`editor-actions/focus/focus.ts`) already owns it.
|
|
19
|
-
*/
|
|
15
|
+
/** A boundary is eligible when every block facing it declares that edge. The root's trailing
|
|
16
|
+
* boundary is excluded, since the move-past-end append already handles it. */
|
|
20
17
|
export declare function gapEligibleAt(doc: DocumentView, parentPath: number[], index: number): boolean;
|
|
21
|
-
/**
|
|
22
|
-
*
|
|
23
|
-
* in hand and no path to resolve. `ownsTrailingBoundary` is false for the root, whose trailing
|
|
24
|
-
* boundary belongs to the move-past-end append.
|
|
25
|
-
*/
|
|
18
|
+
/** The same rule for a caller that already has the children and no path to resolve;
|
|
19
|
+
* `ownsTrailingBoundary` is false for the root. */
|
|
26
20
|
export declare function gapEligibleAmong(children: readonly NodeView[], index: number, ownsTrailingBoundary: boolean): boolean;
|
|
27
|
-
/**
|
|
28
|
-
*
|
|
29
|
-
* scope a BlockList renders. Shared with the undo restore road, so a drifted path cannot
|
|
30
|
-
* park a caret somewhere nothing would paint it.
|
|
31
|
-
*/
|
|
21
|
+
/** The children a gap could sit between at `parentPath`, or null when that path names no child
|
|
22
|
+
* list a BlockList renders, so a stale path cannot put a caret where nothing paints it. */
|
|
32
23
|
export declare function gapScopeChildren(doc: DocumentView, parentPath: number[]): readonly NodeView[] | null;
|
|
33
|
-
/** What
|
|
24
|
+
/** What placing a gap caret needs beyond the boundary itself. Its reads are getters, so a stop
|
|
25
|
+
* bound early sees live values. */
|
|
34
26
|
export interface GapStopScope {
|
|
35
27
|
getDoc: () => DocumentView;
|
|
36
28
|
selection: SelectionState;
|
|
37
|
-
getPresentationMode
|
|
29
|
+
getPresentationMode: () => PresentationMode;
|
|
38
30
|
}
|
|
39
|
-
/**
|
|
40
|
-
*
|
|
41
|
-
* all, so the gesture keeps its old landing. A caller that must act BETWEEN the decision
|
|
42
|
-
* and the landing asks this, then goes through the door itself.
|
|
43
|
-
*/
|
|
31
|
+
/** Whether a gesture may put the caret in this gap; reading mode has no caret, so never. A caller
|
|
32
|
+
* that must act between the decision and the placement asks this, then calls `placeGapCaret`. */
|
|
44
33
|
export declare function canGapStop(scope: GapStopScope, parentPath: number[], boundaryIndex: number): boolean;
|
|
45
|
-
/**
|
|
46
|
-
*
|
|
34
|
+
/** Puts the caret at an eligible `boundaryIndex` and reports whether it did, so a traversal
|
|
35
|
+
* can stop instead of entering its target. */
|
|
47
36
|
export declare function tryGapStop(scope: GapStopScope, parentPath: number[], boundaryIndex: number): boolean;
|
|
@@ -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
|
+
}
|