@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,50 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* counts toward DOM offsets but not raw.
|
|
2
|
+
* Bridges the browser's Selection API and `SelectionPoint`. Callers provide the elements and
|
|
3
|
+
* paths; nothing here walks the tree. A `SelectionPoint` offset counts raw bytes, and every
|
|
4
|
+
* conversion goes through `cursor/widget-offset.ts`.
|
|
6
5
|
*/
|
|
7
|
-
import type
|
|
6
|
+
import { type SelectionPoint, type EditorSelection } from './primitives';
|
|
8
7
|
import type { SelectionState } from './selection-state.svelte';
|
|
9
8
|
import type { BlockComponent } from '../block-component';
|
|
10
|
-
/**
|
|
11
|
-
* Read the collapsed caret inside `blockEl` into a raw-semantic SelectionPoint.
|
|
12
|
-
* Returns null when the caret isn't inside this element.
|
|
13
|
-
*/
|
|
9
|
+
/** Reads the caret inside `blockEl` as a raw-offset point; null when the caret is elsewhere. */
|
|
14
10
|
export declare function readNativeCaretInBlock(blockEl: HTMLElement, path: number[]): SelectionPoint | null;
|
|
15
|
-
/**
|
|
16
|
-
*
|
|
17
|
-
* ambient length. The park door's twin, so the same landable clamp applies: a caret may not sit
|
|
18
|
-
* past a hidden marker run, whatever offset the caller derived. Only collapsed carets clamp — a
|
|
19
|
-
* selection may COVER such a run, so `applySingleBlockRange` does not. Raw offset 0 under an
|
|
20
|
-
* ambient marker goes AFTER the span: Chromium bounces carets out of its contenteditable="false".
|
|
21
|
-
*/
|
|
11
|
+
/** Places a collapsed native caret at a `SelectionPoint`, clamped as `parkCaret` clamps: never
|
|
12
|
+
* behind a hidden marker run. */
|
|
22
13
|
export declare function applyCollapsedCaret(blockEl: HTMLElement, point: SelectionPoint): void;
|
|
23
|
-
/**
|
|
24
|
-
*
|
|
25
|
-
* Returns whether an element was found; a missing target is a no-op.
|
|
26
|
-
*/
|
|
14
|
+
/** A focused collapsed caret in `point`'s mounted block, scrolled to by the focus call itself: kept
|
|
15
|
+
* for the cross-block delete, typing and paste until they land through the caret landing. */
|
|
27
16
|
export declare function focusCollapsedCaret(getBlockElByPath: (path: number[]) => HTMLElement | null, point: SelectionPoint): boolean;
|
|
28
|
-
/**
|
|
29
|
-
* the triple-click one. */
|
|
17
|
+
/** Selects an editable element's whole content, past its marker prefix: the first Ctrl+A
|
|
18
|
+
* range and the triple-click one. */
|
|
30
19
|
export declare function applySurfaceContentRange(el: HTMLElement): void;
|
|
31
|
-
|
|
20
|
+
/** Selects raw `[anchorOffset, focusOffset]` in one block, backward when the focus comes first. */
|
|
21
|
+
export declare function applySingleBlockRange(blockEl: HTMLElement, anchorOffset: number, focusOffset: number): void;
|
|
32
22
|
export declare function clearNativeSelection(): void;
|
|
33
|
-
/**
|
|
34
|
-
*
|
|
35
|
-
* otherwise fall to <body>. The root is non-editable (`tabindex="-1"`), so focusing it creates
|
|
36
|
-
* no native range to sync. No-op unless this block holds focus and the root is still connected.
|
|
37
|
-
*/
|
|
23
|
+
/** Keeps focus in the editor when a focused block is windowed out, or it would fall to <body>.
|
|
24
|
+
* The root is non-editable, so focusing it creates no native range to sync. */
|
|
38
25
|
export declare function parkFocusOnEditorRoot(blockEl: HTMLElement | null, editorRoot: HTMLElement | null): void;
|
|
39
|
-
/**
|
|
40
|
-
*
|
|
41
|
-
* path (via getCursorPosition) or a shallow one. Null when no block reports a cursor.
|
|
42
|
-
*/
|
|
26
|
+
/** The editor's live selection, for every caller outside a gesture. A selected widget reads as its
|
|
27
|
+
* caret, ahead of the caret the browser briefly puts at its paragraph's start. */
|
|
43
28
|
export declare function readCurrentSelection(selectionState: SelectionState, blockRefs: (BlockComponent | undefined)[]): EditorSelection | null;
|
|
44
|
-
/**
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
29
|
+
/** What a restore writes into, beside the selection state. */
|
|
30
|
+
export interface RestoreTarget {
|
|
31
|
+
selectionState: SelectionState;
|
|
32
|
+
getBlockElByPath: (path: number[]) => HTMLElement | null;
|
|
33
|
+
/** Where the caret goes for an endpoint: the leaf a caret can sit in, never a hidden one. */
|
|
34
|
+
caretAt: (point: SelectionPoint) => SelectionPoint;
|
|
35
|
+
/** Takes focus for a block held whole, which has no text for a caret, as a drag leaves it. */
|
|
36
|
+
getEditorRoot: () => HTMLElement | null;
|
|
37
|
+
}
|
|
38
|
+
/** Restores an `EditorSelection` to the DOM in one `SelectionState` batch, so the single
|
|
39
|
+
* notification carries the final selection. False when the target is not mounted. */
|
|
40
|
+
export declare function applySelectionToDom(selection: EditorSelection, target: RestoreTarget): boolean;
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* counts toward DOM offsets but not raw.
|
|
2
|
+
* Bridges the browser's Selection API and `SelectionPoint`. Callers provide the elements and
|
|
3
|
+
* paths; nothing here walks the tree. A `SelectionPoint` offset counts raw bytes, and every
|
|
4
|
+
* conversion goes through `cursor/widget-offset.ts`.
|
|
6
5
|
*/
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
6
|
+
import { cellPoint } from './primitives';
|
|
7
|
+
import { assertInvariant } from '../assert';
|
|
8
|
+
import { checkPlacementEndsWidget } from '../invariants/placement-ends-widget';
|
|
9
|
+
import { placeCaretAtRaw, rawOffsetAt, selectRawRange, selectSurfaceContent } from '../cursor/widget-offset';
|
|
11
10
|
// ── Read native → SelectionPoint ────────────────────────────────────────────
|
|
12
|
-
/**
|
|
13
|
-
* Read the collapsed caret inside `blockEl` into a raw-semantic SelectionPoint.
|
|
14
|
-
* Returns null when the caret isn't inside this element.
|
|
15
|
-
*/
|
|
11
|
+
/** Reads the caret inside `blockEl` as a raw-offset point; null when the caret is elsewhere. */
|
|
16
12
|
export function readNativeCaretInBlock(blockEl, path) {
|
|
17
13
|
if (document.activeElement !== blockEl)
|
|
18
14
|
return null;
|
|
@@ -20,43 +16,21 @@ export function readNativeCaretInBlock(blockEl, path) {
|
|
|
20
16
|
if (!sel || sel.rangeCount === 0)
|
|
21
17
|
return null;
|
|
22
18
|
const range = sel.getRangeAt(0);
|
|
23
|
-
//
|
|
24
|
-
//
|
|
25
|
-
// span. Use the real anchor when it resolves inside this block, else keep range.start.
|
|
19
|
+
// In a backward selection the anchor sits at the range's end, so the range start would be the
|
|
20
|
+
// moving focus; the real anchor is used whenever it lies inside the block.
|
|
26
21
|
const useAnchor = !sel.isCollapsed && sel.anchorNode !== null && blockEl.contains(sel.anchorNode);
|
|
27
22
|
const node = useAnchor ? sel.anchorNode : range.startContainer;
|
|
28
23
|
const nodeOffset = useAnchor ? sel.anchorOffset : range.startOffset;
|
|
29
|
-
|
|
30
|
-
return {
|
|
31
|
-
path: path.slice(),
|
|
32
|
-
offset: toClampedRawOffset(content, ambientLengthOf(blockEl))
|
|
33
|
-
};
|
|
24
|
+
return { path: path.slice(), offset: rawOffsetAt(blockEl, node, nodeOffset) };
|
|
34
25
|
}
|
|
35
26
|
// ── Apply SelectionPoint → native ───────────────────────────────────────────
|
|
36
|
-
/**
|
|
37
|
-
*
|
|
38
|
-
* ambient length. The park door's twin, so the same landable clamp applies: a caret may not sit
|
|
39
|
-
* past a hidden marker run, whatever offset the caller derived. Only collapsed carets clamp — a
|
|
40
|
-
* selection may COVER such a run, so `applySingleBlockRange` does not. Raw offset 0 under an
|
|
41
|
-
* ambient marker goes AFTER the span: Chromium bounces carets out of its contenteditable="false".
|
|
42
|
-
*/
|
|
27
|
+
/** Places a collapsed native caret at a `SelectionPoint`, clamped as `parkCaret` clamps: never
|
|
28
|
+
* behind a hidden marker run. */
|
|
43
29
|
export function applyCollapsedCaret(blockEl, point) {
|
|
44
|
-
|
|
45
|
-
const offset = clampToLandableRaw(blockEl, point.offset, ambient);
|
|
46
|
-
if (ambient > 0 && offset <= 0 && placeCaretAfterAmbientSpan(blockEl))
|
|
47
|
-
return;
|
|
48
|
-
const target = toDomTextOffset(asRawOffset(offset), ambient);
|
|
49
|
-
const range = createRangeAtDomTextOffsets(blockEl, target, target);
|
|
50
|
-
if (!range)
|
|
51
|
-
return;
|
|
52
|
-
const sel = window.getSelection();
|
|
53
|
-
sel?.removeAllRanges();
|
|
54
|
-
sel?.addRange(range);
|
|
30
|
+
placeCaretAtRaw(blockEl, point.offset, { clamp: 'reachable' });
|
|
55
31
|
}
|
|
56
|
-
/**
|
|
57
|
-
*
|
|
58
|
-
* Returns whether an element was found; a missing target is a no-op.
|
|
59
|
-
*/
|
|
32
|
+
/** A focused collapsed caret in `point`'s mounted block, scrolled to by the focus call itself: kept
|
|
33
|
+
* for the cross-block delete, typing and paste until they land through the caret landing. */
|
|
60
34
|
export function focusCollapsedCaret(getBlockElByPath, point) {
|
|
61
35
|
const blockEl = getBlockElByPath(point.path);
|
|
62
36
|
if (!blockEl)
|
|
@@ -65,65 +39,44 @@ export function focusCollapsedCaret(getBlockElByPath, point) {
|
|
|
65
39
|
blockEl.focus();
|
|
66
40
|
return true;
|
|
67
41
|
}
|
|
68
|
-
|
|
69
|
-
|
|
42
|
+
// A restore's caret; the restore's reveal policy decides the scroll.
|
|
43
|
+
function restoreCollapsedCaret(getBlockElByPath, point) {
|
|
44
|
+
const blockEl = getBlockElByPath(point.path);
|
|
45
|
+
if (!blockEl)
|
|
46
|
+
return false;
|
|
47
|
+
applyCollapsedCaret(blockEl, point);
|
|
48
|
+
blockEl.focus({ preventScroll: true });
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
/** Selects an editable element's whole content, past its marker prefix: the first Ctrl+A
|
|
52
|
+
* range and the triple-click one. */
|
|
70
53
|
export function applySurfaceContentRange(el) {
|
|
71
|
-
|
|
72
|
-
const ambientLen = ambient?.textContent?.length ?? 0;
|
|
73
|
-
const textLen = el.textContent?.length ?? 0;
|
|
74
|
-
if (ambient && textLen > ambientLen) {
|
|
75
|
-
if (!placeCaretAfterAmbientSpan(el))
|
|
76
|
-
return;
|
|
77
|
-
// textLen counts the full textContent (marker included) — a DomTextOffset by construction.
|
|
78
|
-
const endRange = createRangeFromOffsets(el, asDomTextOffset(textLen), asDomTextOffset(textLen));
|
|
79
|
-
if (endRange) {
|
|
80
|
-
window.getSelection()?.extend(endRange.endContainer, endRange.endOffset);
|
|
81
|
-
}
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
const range = document.createRange();
|
|
85
|
-
range.selectNodeContents(el);
|
|
86
|
-
const sel = window.getSelection();
|
|
87
|
-
sel?.removeAllRanges();
|
|
88
|
-
sel?.addRange(range);
|
|
54
|
+
selectSurfaceContent(el);
|
|
89
55
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
if (!range)
|
|
94
|
-
return;
|
|
95
|
-
const sel = window.getSelection();
|
|
96
|
-
// A start at raw 0 under an ambient marker goes AFTER the island, as a caret does: Chromium
|
|
97
|
-
// drops a range that opens inside its contenteditable="false".
|
|
98
|
-
if (ambient > 0 && startOffset <= 0 && placeCaretAfterAmbientSpan(blockEl)) {
|
|
99
|
-
sel?.extend(range.endContainer, range.endOffset);
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
sel?.removeAllRanges();
|
|
103
|
-
sel?.addRange(range);
|
|
56
|
+
/** Selects raw `[anchorOffset, focusOffset]` in one block, backward when the focus comes first. */
|
|
57
|
+
export function applySingleBlockRange(blockEl, anchorOffset, focusOffset) {
|
|
58
|
+
selectRawRange(blockEl, anchorOffset, focusOffset);
|
|
104
59
|
}
|
|
105
60
|
export function clearNativeSelection() {
|
|
106
61
|
window.getSelection()?.removeAllRanges();
|
|
107
62
|
}
|
|
108
|
-
/**
|
|
109
|
-
*
|
|
110
|
-
* otherwise fall to <body>. The root is non-editable (`tabindex="-1"`), so focusing it creates
|
|
111
|
-
* no native range to sync. No-op unless this block holds focus and the root is still connected.
|
|
112
|
-
*/
|
|
63
|
+
/** Keeps focus in the editor when a focused block is windowed out, or it would fall to <body>.
|
|
64
|
+
* The root is non-editable, so focusing it creates no native range to sync. */
|
|
113
65
|
export function parkFocusOnEditorRoot(blockEl, editorRoot) {
|
|
114
66
|
if (!blockEl || !editorRoot?.isConnected)
|
|
115
67
|
return;
|
|
116
|
-
// preventScroll
|
|
117
|
-
//
|
|
68
|
+
// `preventScroll`: the focus call's own scroll would fight the scroll-into-view that mounts
|
|
69
|
+
// the block.
|
|
118
70
|
if (document.activeElement === blockEl)
|
|
119
71
|
editorRoot.focus({ preventScroll: true });
|
|
120
72
|
}
|
|
121
|
-
// ── Selection read/restore
|
|
122
|
-
/**
|
|
123
|
-
*
|
|
124
|
-
* path (via getCursorPosition) or a shallow one. Null when no block reports a cursor.
|
|
125
|
-
*/
|
|
73
|
+
// ── Selection read/restore ───────────────────────────────────────────────────
|
|
74
|
+
/** The editor's live selection, for every caller outside a gesture. A selected widget reads as its
|
|
75
|
+
* caret, ahead of the caret the browser briefly puts at its paragraph's start. */
|
|
126
76
|
export function readCurrentSelection(selectionState, blockRefs) {
|
|
77
|
+
const widget = selectionState.widgetCaret();
|
|
78
|
+
if (widget)
|
|
79
|
+
return collapsedSelectionAt(widget.path, widget.offset);
|
|
127
80
|
if (selectionState.isCrossBlock && selectionState.anchor && selectionState.focus) {
|
|
128
81
|
return {
|
|
129
82
|
anchor: copySelectionPoint(selectionState.anchor),
|
|
@@ -149,11 +102,8 @@ export function readCurrentSelection(selectionState, blockRefs) {
|
|
|
149
102
|
function collapsedSelectionAt(path, offset) {
|
|
150
103
|
return { anchor: { path: path.slice(), offset }, focus: { path: path.slice(), offset } };
|
|
151
104
|
}
|
|
152
|
-
/**
|
|
153
|
-
*
|
|
154
|
-
* reports a within-block range instead of collapsing it to the caret. Null when collapsed or
|
|
155
|
-
* outside the active block. Offsets convert through that block's ambient length.
|
|
156
|
-
*/
|
|
105
|
+
/** The focused block's native selection as distinct raw offsets, so a within-block range is not
|
|
106
|
+
* reported collapsed to the caret. Null when collapsed or outside the active block. */
|
|
157
107
|
function nativeRangeInFocusedBlock(path) {
|
|
158
108
|
// Node-env callers (undo snapshot capture in unit tests) have no DOM; fall back to the
|
|
159
109
|
// single caret offset rather than touching document/window.
|
|
@@ -167,65 +117,66 @@ function nativeRangeInFocusedBlock(path) {
|
|
|
167
117
|
return null;
|
|
168
118
|
if (!active.contains(sel.anchorNode) || !active.contains(sel.focusNode))
|
|
169
119
|
return null;
|
|
170
|
-
const ambient = ambientLengthOf(active);
|
|
171
|
-
const anchorOffset = toClampedRawOffset(domTextOffsetAtNode(active, sel.anchorNode, sel.anchorOffset), ambient);
|
|
172
|
-
const focusOffset = toClampedRawOffset(domTextOffsetAtNode(active, sel.focusNode, sel.focusOffset), ambient);
|
|
173
120
|
return {
|
|
174
|
-
anchor: { path: path.slice(), offset: anchorOffset },
|
|
175
|
-
focus: { path: path.slice(), offset: focusOffset }
|
|
121
|
+
anchor: { path: path.slice(), offset: rawOffsetAt(active, sel.anchorNode, sel.anchorOffset) },
|
|
122
|
+
focus: { path: path.slice(), offset: rawOffsetAt(active, sel.focusNode, sel.focusOffset) }
|
|
176
123
|
};
|
|
177
124
|
}
|
|
178
|
-
// A restored table endpoint must keep cellCoordinate
|
|
179
|
-
//
|
|
125
|
+
// A restored table endpoint must keep `cellCoordinate`, or it skips the whole-row snap and the
|
|
126
|
+
// collapse into the cell; the two branches keep the union variant intact through undo.
|
|
180
127
|
function copySelectionPoint(point) {
|
|
181
128
|
if (point.cellCoordinate) {
|
|
182
|
-
return
|
|
129
|
+
return cellPoint(point.path, point.offset);
|
|
183
130
|
}
|
|
184
131
|
return { path: point.path.slice(), offset: point.offset };
|
|
185
132
|
}
|
|
186
|
-
/**
|
|
187
|
-
*
|
|
188
|
-
|
|
189
|
-
* write and caret landing run inside ONE SelectionState batch, so the single notification
|
|
190
|
-
* carries the settled selection. False = the target resolved in the model but not in the DOM.
|
|
191
|
-
*/
|
|
192
|
-
export function applySelectionToDom(selection, selectionState, getBlockElByPath) {
|
|
133
|
+
/** Restores an `EditorSelection` to the DOM in one `SelectionState` batch, so the single
|
|
134
|
+
* notification carries the final selection. False when the target is not mounted. */
|
|
135
|
+
export function applySelectionToDom(selection, target) {
|
|
193
136
|
let placed = false;
|
|
194
|
-
selectionState.batch(() => {
|
|
195
|
-
placed = placeRestoredSelection(selection,
|
|
196
|
-
|
|
197
|
-
//
|
|
198
|
-
|
|
137
|
+
target.selectionState.batch(() => {
|
|
138
|
+
placed = placeRestoredSelection(selection, target);
|
|
139
|
+
assertInvariant('placement-ends-widget', () => checkPlacementEndsWidget(target.selectionState.widget));
|
|
140
|
+
// Announced explicitly: a restore onto an already clear state changes no field of the
|
|
141
|
+
// selection state and still moves the caret that subscribers read back.
|
|
142
|
+
target.selectionState.announceSelection();
|
|
199
143
|
});
|
|
200
144
|
return placed;
|
|
201
145
|
}
|
|
202
|
-
function placeRestoredSelection(selection,
|
|
203
|
-
|
|
204
|
-
//
|
|
146
|
+
function placeRestoredSelection(selection, target) {
|
|
147
|
+
const { selectionState, getBlockElByPath } = target;
|
|
148
|
+
// Classify before touching state, so a single-block restore never passes through a transient
|
|
149
|
+
// cross-block state (`enterCrossBlock` then `clear`).
|
|
205
150
|
const route = selectionState.restoreRoute(selection.anchor, selection.focus);
|
|
206
151
|
if (route === 'collapsed') {
|
|
207
152
|
selectionState.clear();
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
153
|
+
return restoreCollapsedCaret(getBlockElByPath, target.caretAt(selection.anchor));
|
|
154
|
+
}
|
|
155
|
+
if (route === 'whole-block') {
|
|
156
|
+
const whole = { path: selection.anchor.path.slice(), wholeBlock: true };
|
|
157
|
+
selectionState.enterCrossBlock(whole, whole);
|
|
158
|
+
clearNativeSelection();
|
|
159
|
+
const root = target.getEditorRoot();
|
|
160
|
+
root?.focus({ preventScroll: true });
|
|
161
|
+
return root !== null;
|
|
212
162
|
}
|
|
213
|
-
// No
|
|
214
|
-
//
|
|
163
|
+
// No cell translation here: a same-path pair inside a table routes to the overlay, so every
|
|
164
|
+
// pair reaching this branch is a character range on a text leaf.
|
|
215
165
|
if (route === 'single-block') {
|
|
216
166
|
selectionState.clear();
|
|
217
167
|
const blockEl = getBlockElByPath(selection.anchor.path);
|
|
218
168
|
if (!blockEl)
|
|
219
169
|
return false;
|
|
220
170
|
applySingleBlockRange(blockEl, selection.anchor.offset, selection.focus.offset);
|
|
221
|
-
blockEl.focus();
|
|
171
|
+
blockEl.focus({ preventScroll: true });
|
|
222
172
|
return true;
|
|
223
173
|
}
|
|
224
|
-
//
|
|
225
|
-
//
|
|
226
|
-
// addresses the table wrapper by cell index, so park in its deep cell instead.
|
|
174
|
+
// The overlay paints the range; a collapsed caret in the focus block (or its cell) gives paste
|
|
175
|
+
// and key events a target, since Chromium otherwise routes paste to <body>.
|
|
227
176
|
selectionState.enterCrossBlock(selection.anchor, selection.focus);
|
|
228
|
-
|
|
177
|
+
// The stored focus, which normalization may have turned into a cell index.
|
|
178
|
+
const focus = selectionState.focus ?? selection.focus;
|
|
179
|
+
if (restoreCollapsedCaret(getBlockElByPath, target.caretAt(focus))) {
|
|
229
180
|
return true;
|
|
230
181
|
}
|
|
231
182
|
clearNativeSelection();
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The mounted block nearest a viewport point, and the endpoint that point addresses. A gesture
|
|
3
|
-
* that must answer
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* Only mounted blocks are measured; a caller answering for a windowed-out tail reconciles itself.
|
|
3
|
+
* that must answer every point (a dead-space click, a drag into the margin) resolves an off-block
|
|
4
|
+
* point here: clamped into the nearest box, then handed down a container to the child level with
|
|
5
|
+
* it. Only mounted blocks are measured; a caller handling an unmounted tail does so itself.
|
|
7
6
|
*/
|
|
7
|
+
import { type BlockHit } from './block-hit-test';
|
|
8
8
|
import type { SelectionEndpoint } from './primitives';
|
|
9
9
|
export interface BlockBand {
|
|
10
10
|
top: number;
|
|
@@ -17,18 +17,14 @@ export interface MeasuredBlock {
|
|
|
17
17
|
}
|
|
18
18
|
/** Document order, since bands may nest and every walk over them depends on it. */
|
|
19
19
|
export declare function measureBlocks(root: HTMLElement): MeasuredBlock[];
|
|
20
|
-
/**
|
|
21
|
-
*
|
|
22
|
-
* gesture, which lands at a trailing corner rather than under its own x. A y in a gap resolves to
|
|
23
|
-
* the nearest band, so no point is left unanswered. Bands arrive in document order and may nest,
|
|
24
|
-
* so containment scans forward, outermost wins.
|
|
25
|
-
*/
|
|
20
|
+
/** The band a `y` belongs to; a y in a gap resolves to the nearest band, so no point is left
|
|
21
|
+
* unanswered. `belowAll` marks a point past the last band, which lands at a trailing corner. */
|
|
26
22
|
export declare function nearestBand(bands: BlockBand[], y: number): {
|
|
27
23
|
index: number;
|
|
28
24
|
belowAll: boolean;
|
|
29
25
|
} | null;
|
|
30
|
-
/** The band
|
|
31
|
-
* trailing corner
|
|
26
|
+
/** The point a band is hit-tested at: {@link clampPointIntoBox}, except that `belowAll` takes the
|
|
27
|
+
* trailing corner (the block's last position) rather than the point's own x. */
|
|
32
28
|
export declare function probePointIn(rect: DOMRect, x: number, y: number, belowAll: boolean): {
|
|
33
29
|
x: number;
|
|
34
30
|
y: number;
|
|
@@ -41,3 +37,12 @@ export interface NearestBlock {
|
|
|
41
37
|
/** The block a point addresses: the one under it, else the nearest one with the point clamped
|
|
42
38
|
* into its box. Null only where nothing is mounted. */
|
|
43
39
|
export declare function blockNearPoint(editorRoot: HTMLElement, clientX: number, clientY: number): NearestBlock | null;
|
|
40
|
+
/** A hit and the point it was hit-tested at. */
|
|
41
|
+
export interface ProbedHit {
|
|
42
|
+
hit: BlockHit;
|
|
43
|
+
x: number;
|
|
44
|
+
y: number;
|
|
45
|
+
}
|
|
46
|
+
/** Hands a point on a container's own box (a quote's gutter, a list's indent) down to the child
|
|
47
|
+
* level with it, at any depth; a container with its own editable row keeps an unmatched point. */
|
|
48
|
+
export declare function descendToLevelChild(root: HTMLElement, probed: ProbedHit, belowAll?: boolean): ProbedHit;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The mounted block nearest a viewport point, and the endpoint that point addresses. A gesture
|
|
3
|
-
* that must answer
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* Only mounted blocks are measured; a caller answering for a windowed-out tail reconciles itself.
|
|
3
|
+
* that must answer every point (a dead-space click, a drag into the margin) resolves an off-block
|
|
4
|
+
* point here: clamped into the nearest box, then handed down a container to the child level with
|
|
5
|
+
* it. Only mounted blocks are measured; a caller handling an unmounted tail does so itself.
|
|
7
6
|
*/
|
|
8
7
|
import { clampPointIntoBox } from '../cursor/point-offset';
|
|
9
|
-
import { blockAtPoint, endpointAtPoint } from './block-hit-test';
|
|
8
|
+
import { blockAtPoint, endpointAtPoint, holdsOwnText } from './block-hit-test';
|
|
10
9
|
import { readBlockPath } from './path-lookup';
|
|
10
|
+
import { isStrictAncestorOf } from './path-math';
|
|
11
11
|
/** Document order, since bands may nest and every walk over them depends on it. */
|
|
12
12
|
export function measureBlocks(root) {
|
|
13
13
|
return blockHosts(root).map((el) => ({
|
|
@@ -15,12 +15,8 @@ export function measureBlocks(root) {
|
|
|
15
15
|
rect: el.getBoundingClientRect()
|
|
16
16
|
}));
|
|
17
17
|
}
|
|
18
|
-
/**
|
|
19
|
-
*
|
|
20
|
-
* gesture, which lands at a trailing corner rather than under its own x. A y in a gap resolves to
|
|
21
|
-
* the nearest band, so no point is left unanswered. Bands arrive in document order and may nest,
|
|
22
|
-
* so containment scans forward, outermost wins.
|
|
23
|
-
*/
|
|
18
|
+
/** The band a `y` belongs to; a y in a gap resolves to the nearest band, so no point is left
|
|
19
|
+
* unanswered. `belowAll` marks a point past the last band, which lands at a trailing corner. */
|
|
24
20
|
export function nearestBand(bands, y) {
|
|
25
21
|
if (bands.length === 0)
|
|
26
22
|
return null;
|
|
@@ -43,8 +39,8 @@ export function nearestBand(bands, y) {
|
|
|
43
39
|
return { index: nearest, belowAll: false };
|
|
44
40
|
}
|
|
45
41
|
// ── Probing ────────────────────────────────────────────────────────────────
|
|
46
|
-
/** The band
|
|
47
|
-
* trailing corner
|
|
42
|
+
/** The point a band is hit-tested at: {@link clampPointIntoBox}, except that `belowAll` takes the
|
|
43
|
+
* trailing corner (the block's last position) rather than the point's own x. */
|
|
48
44
|
export function probePointIn(rect, x, y, belowAll) {
|
|
49
45
|
const inside = clampPointIntoBox(rect, x, y);
|
|
50
46
|
return { x: belowAll ? rect.right - 1 : inside.x, y: inside.y };
|
|
@@ -54,20 +50,43 @@ export function probePointIn(rect, x, y, belowAll) {
|
|
|
54
50
|
export function blockNearPoint(editorRoot, clientX, clientY) {
|
|
55
51
|
const direct = blockAtPoint(editorRoot, clientX, clientY);
|
|
56
52
|
if (direct)
|
|
57
|
-
return addressedAt(direct, clientX, clientY);
|
|
53
|
+
return addressedAt(descendToLevelChild(editorRoot, { hit: direct, x: clientX, y: clientY }));
|
|
58
54
|
const rects = blockHosts(editorRoot).map((el) => el.getBoundingClientRect());
|
|
59
55
|
const band = nearestBand(rects, clientY);
|
|
60
56
|
if (!band)
|
|
61
57
|
return null;
|
|
62
58
|
const probe = probePointIn(rects[band.index], clientX, clientY, band.belowAll);
|
|
63
59
|
const hit = blockAtPoint(editorRoot, probe.x, probe.y);
|
|
64
|
-
return hit && addressedAt(hit, probe
|
|
60
|
+
return hit && addressedAt(descendToLevelChild(editorRoot, { hit, ...probe }, band.belowAll));
|
|
61
|
+
}
|
|
62
|
+
/** Hands a point on a container's own box (a quote's gutter, a list's indent) down to the child
|
|
63
|
+
* level with it, at any depth; a container with its own editable row keeps an unmatched point. */
|
|
64
|
+
export function descendToLevelChild(root, probed, belowAll = false) {
|
|
65
|
+
let current = probed;
|
|
66
|
+
for (;;) {
|
|
67
|
+
const { hit, x, y } = current;
|
|
68
|
+
// A grid kind resolves points inside itself through its own hooks.
|
|
69
|
+
if (hit.foreignDragHitTest || hit.caretTargetAtPoint)
|
|
70
|
+
return current;
|
|
71
|
+
const rects = blockHosts(hit.host).map((el) => el.getBoundingClientRect());
|
|
72
|
+
const band = nearestBand(rects, y);
|
|
73
|
+
if (!band)
|
|
74
|
+
return current;
|
|
75
|
+
if (holdsOwnText(hit) && !rects.some((r) => y >= r.top && y <= r.bottom))
|
|
76
|
+
return current;
|
|
77
|
+
const probe = probePointIn(rects[band.index], x, y, belowAll);
|
|
78
|
+
const next = blockAtPoint(root, probe.x, probe.y);
|
|
79
|
+
// Something drawn over the child answered instead, so the container keeps the point.
|
|
80
|
+
if (!next || !isStrictAncestorOf(hit.path, next.path))
|
|
81
|
+
return current;
|
|
82
|
+
current = { hit: next, ...probe };
|
|
83
|
+
}
|
|
65
84
|
}
|
|
66
85
|
// ── Internal ───────────────────────────────────────────────────────────────
|
|
67
|
-
function addressedAt(hit,
|
|
68
|
-
return { path: hit.path, endpointHere: () => endpointAtPoint(hit,
|
|
86
|
+
function addressedAt({ hit, x, y }) {
|
|
87
|
+
return { path: hit.path, endpointHere: () => endpointAtPoint(hit, x, y) };
|
|
69
88
|
}
|
|
70
|
-
/** The one selector for the mounted hosts, so the
|
|
89
|
+
/** The one selector for the mounted hosts, so the lookups above can't drift apart. */
|
|
71
90
|
function blockHosts(root) {
|
|
72
91
|
return [...root.querySelectorAll('[data-block-path]')];
|
|
73
92
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** Walks the document tree by path, and reads block paths off the DOM. */
|
|
2
2
|
import type { Document } from '../core/nodes';
|
|
3
|
+
import type { DocumentView } from '../core/node-views';
|
|
3
4
|
/** Block immediately after `path` in doc order (children before siblings), else null. */
|
|
4
5
|
export declare function nextPath(doc: Document, path: number[]): number[] | null;
|
|
5
6
|
/** Block immediately before `path` in doc order (deepest last descendant first), else null. */
|
|
@@ -12,29 +13,37 @@ export declare function lastPath(doc: Document): number[] | null;
|
|
|
12
13
|
export declare function firstLeafAtOrAfter(doc: Document, path: number[]): number[] | null;
|
|
13
14
|
/** Descend `path` to its last leaf, or null when `path` doesn't resolve to a node. */
|
|
14
15
|
export declare function lastLeafAtOrBefore(doc: Document, path: number[]): number[] | null;
|
|
15
|
-
/**
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
/** The first leaf a caret can reach at or inside `path`, or null when `path` does not resolve. */
|
|
17
|
+
export declare function firstCaretLeaf(doc: DocumentView, path: readonly number[]): number[] | null;
|
|
18
|
+
/** The last leaf a caret can reach at or inside `path`, or null when `path` does not resolve. */
|
|
19
|
+
export declare function lastCaretLeaf(doc: DocumentView, path: readonly number[]): number[] | null;
|
|
20
|
+
/** The first caret leaf after `path` in document order, descending into it first when it has
|
|
21
|
+
* children, as {@link nextPath} does. */
|
|
22
|
+
export declare function nextCaretPath(doc: DocumentView, path: readonly number[]): number[] | null;
|
|
23
|
+
/** The last caret leaf before `path`'s subtree in document order; an ancestor of `path` is never
|
|
24
|
+
* the answer. `path` need not resolve, so the position a removed block left reads the same. */
|
|
25
|
+
export declare function previousCaretPath(doc: DocumentView, path: readonly number[]): number[] | null;
|
|
26
|
+
/** The first caret leaf at `slot` or after it, where `slot` may sit one past the end of its list
|
|
27
|
+
* (the place a removed last child left). */
|
|
28
|
+
export declare function firstCaretLeafFrom(doc: DocumentView, slot: readonly number[]): number[] | null;
|
|
29
|
+
/** The outermost collapsed container whose hidden body `path` runs through, or null. */
|
|
30
|
+
export declare function collapsedContainerHiding(doc: DocumentView, path: readonly number[]): number[] | null;
|
|
31
|
+
/** The path an element's own `data-block-path` carries, read in one place: a plugin may own the
|
|
32
|
+
* attribute with content of its own, so anything but a list of numbers reads as null. */
|
|
19
33
|
export declare function readBlockPath(el: Element | null): number[] | null;
|
|
20
34
|
/** Walk up from `el` to the nearest ancestor carrying `data-block-path`. */
|
|
21
35
|
export declare function findBlockPathForElement(el: Element | null): number[] | null;
|
|
22
|
-
/**
|
|
23
|
-
*
|
|
24
|
-
* emit `data-block-path`, so {@link findBlockPathForElement} stops at the table and returns a
|
|
25
|
-
* path whose offsets are cell indices while a caret read from the same element is in characters.
|
|
26
|
-
* Any producer resolving an endpoint path from the DOM must come through here. Null outside a
|
|
27
|
-
* cell grid; addresses the grid by selector contract (`data-table-row-idx`, `role="cell"`).
|
|
28
|
-
*/
|
|
36
|
+
/** The `[...tablePath, row, col]` path of an element in a table cell: only block hosts carry a
|
|
37
|
+
* path, so a DOM-read endpoint in a cell must come through here or it reads as the table's. */
|
|
29
38
|
export declare function findCellPathForElement(el: Element | null): number[] | null;
|
|
30
|
-
/** The
|
|
31
|
-
* block,
|
|
32
|
-
*
|
|
39
|
+
/** The editable element `el` sits in: the enclosing cell where there is one, else the enclosing
|
|
40
|
+
* block, plus which of the two answered, so a caller that treats cells differently reads the
|
|
41
|
+
* flag rather than re-deriving it. */
|
|
33
42
|
export interface EditingSurface {
|
|
34
43
|
path: number[];
|
|
35
44
|
inCell: boolean;
|
|
36
45
|
}
|
|
37
|
-
/** The
|
|
46
|
+
/** The cell-then-block lookup {@link findCellPathForElement} requires, in one place. */
|
|
38
47
|
export declare function findSurfaceForElement(el: Element | null): EditingSurface | null;
|
|
39
48
|
/** {@link findSurfaceForElement} for a caller that needs only the path. */
|
|
40
49
|
export declare function findSurfacePathForElement(el: Element | null): number[] | null;
|