@voithos-labs/aragonite 0.10.1
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/LICENSE +661 -0
- package/README.md +365 -0
- package/THIRD-PARTY-NOTICES.md +102 -0
- package/dist/a11y-strings.d.ts +46 -0
- package/dist/a11y-strings.js +62 -0
- package/dist/action-contracts.d.ts +301 -0
- package/dist/action-contracts.js +5 -0
- package/dist/active-editor.d.ts +16 -0
- package/dist/active-editor.js +67 -0
- package/dist/ambient/ambient-cursor.d.ts +41 -0
- package/dist/ambient/ambient-cursor.js +120 -0
- package/dist/ambient/ambient-dom.d.ts +9 -0
- package/dist/ambient/ambient-dom.js +102 -0
- package/dist/assert.d.ts +6 -0
- package/dist/assert.js +17 -0
- package/dist/block-component.d.ts +274 -0
- package/dist/block-component.js +43 -0
- package/dist/block-id.d.ts +14 -0
- package/dist/block-id.js +34 -0
- package/dist/bounded-memo.d.ts +14 -0
- package/dist/bounded-memo.js +32 -0
- package/dist/components/BlockDragHandle.svelte +66 -0
- package/dist/components/BlockDragHandle.svelte.d.ts +18 -0
- package/dist/components/BlockHost.svelte +328 -0
- package/dist/components/BlockHost.svelte.d.ts +15 -0
- package/dist/components/BlockList.svelte +114 -0
- package/dist/components/BlockList.svelte.d.ts +16 -0
- package/dist/components/DecorationOverlay.svelte +156 -0
- package/dist/components/DecorationOverlay.svelte.d.ts +14 -0
- package/dist/components/Editor.svelte +1849 -0
- package/dist/components/Editor.svelte.d.ts +49 -0
- package/dist/components/GapCaret.svelte +226 -0
- package/dist/components/GapCaret.svelte.d.ts +9 -0
- package/dist/components/SearchBar.svelte +243 -0
- package/dist/components/SearchBar.svelte.d.ts +7 -0
- package/dist/components/SelectionOverlay.svelte +171 -0
- package/dist/components/SelectionOverlay.svelte.d.ts +14 -0
- package/dist/components/block-content-selector.d.ts +12 -0
- package/dist/components/block-content-selector.js +12 -0
- package/dist/components/blocks/BlockquoteBlock.svelte +32 -0
- package/dist/components/blocks/BlockquoteBlock.svelte.d.ts +11 -0
- package/dist/components/blocks/ThematicBreakBlock.svelte +156 -0
- package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +17 -0
- package/dist/components/blocks/code/CodeBlock.svelte +726 -0
- package/dist/components/blocks/code/CodeBlock.svelte.d.ts +23 -0
- package/dist/components/blocks/code/CodeLanguageChip.svelte +127 -0
- package/dist/components/blocks/code/CodeLanguageChip.svelte.d.ts +14 -0
- package/dist/components/blocks/code/code-beforeinput.d.ts +30 -0
- package/dist/components/blocks/code/code-beforeinput.js +40 -0
- package/dist/components/blocks/code/code-bootstrap.d.ts +8 -0
- package/dist/components/blocks/code/code-bootstrap.js +54 -0
- package/dist/components/blocks/code/code-editing.d.ts +28 -0
- package/dist/components/blocks/code/code-editing.js +79 -0
- package/dist/components/blocks/code/code-enter.d.ts +22 -0
- package/dist/components/blocks/code/code-enter.js +19 -0
- package/dist/components/blocks/code/code-fence-boundary.d.ts +77 -0
- package/dist/components/blocks/code/code-fence-boundary.js +169 -0
- package/dist/components/blocks/code/code-fence-exit.d.ts +24 -0
- package/dist/components/blocks/code/code-fence-exit.js +36 -0
- package/dist/components/blocks/code/code-indent.d.ts +14 -0
- package/dist/components/blocks/code/code-indent.js +87 -0
- package/dist/components/blocks/code/code-languages.d.ts +15 -0
- package/dist/components/blocks/code/code-languages.js +30 -0
- package/dist/components/blocks/code/code-paste-surface.d.ts +6 -0
- package/dist/components/blocks/code/code-paste-surface.js +29 -0
- package/dist/components/blocks/code/code-paste.d.ts +24 -0
- package/dist/components/blocks/code/code-paste.js +21 -0
- package/dist/components/blocks/code/code-renderer.d.ts +18 -0
- package/dist/components/blocks/code/code-renderer.js +249 -0
- package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +51 -0
- package/dist/components/blocks/directive/DirectiveContainerBlock.svelte.d.ts +11 -0
- package/dist/components/blocks/directive/activate-directives.d.ts +7 -0
- package/dist/components/blocks/directive/activate-directives.js +23 -0
- package/dist/components/blocks/editable-leaf.d.ts +126 -0
- package/dist/components/blocks/editable-leaf.js +410 -0
- package/dist/components/blocks/editable-surface.d.ts +209 -0
- package/dist/components/blocks/editable-surface.js +331 -0
- package/dist/components/blocks/list/ListBlock.svelte +162 -0
- package/dist/components/blocks/list/ListBlock.svelte.d.ts +11 -0
- package/dist/components/blocks/list/ListItemBlock.svelte +324 -0
- package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +14 -0
- package/dist/components/blocks/list/task-checkbox.d.ts +3 -0
- package/dist/components/blocks/list/task-checkbox.js +33 -0
- package/dist/components/blocks/plain-text-backend.d.ts +21 -0
- package/dist/components/blocks/plain-text-backend.js +47 -0
- package/dist/components/blocks/surface-wiring.svelte.d.ts +18 -0
- package/dist/components/blocks/surface-wiring.svelte.js +68 -0
- package/dist/components/blocks/table/TableActionMenu.svelte +267 -0
- package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +15 -0
- package/dist/components/blocks/table/TableBlock.svelte +765 -0
- package/dist/components/blocks/table/TableBlock.svelte.d.ts +30 -0
- package/dist/components/blocks/table/TableCellBlock.svelte +1075 -0
- package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +30 -0
- package/dist/components/blocks/table/TableGrip.svelte +91 -0
- package/dist/components/blocks/table/TableGrip.svelte.d.ts +8 -0
- package/dist/components/blocks/table/TableRowBlock.svelte +233 -0
- package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +34 -0
- package/dist/components/blocks/table/cell-clipboard.d.ts +23 -0
- package/dist/components/blocks/table/cell-clipboard.js +34 -0
- package/dist/components/blocks/table/cell-keydown-plan.d.ts +37 -0
- package/dist/components/blocks/table/cell-keydown-plan.js +66 -0
- package/dist/components/blocks/table/cell-pointer.d.ts +58 -0
- package/dist/components/blocks/table/cell-pointer.js +153 -0
- package/dist/components/blocks/table/cell-render.d.ts +51 -0
- package/dist/components/blocks/table/cell-render.js +98 -0
- package/dist/components/blocks/table/cell-table-commands.d.ts +12 -0
- package/dist/components/blocks/table/cell-table-commands.js +21 -0
- package/dist/components/blocks/table/cell-x-mapping.d.ts +6 -0
- package/dist/components/blocks/table/cell-x-mapping.js +16 -0
- package/dist/components/blocks/table/selected-cells.d.ts +19 -0
- package/dist/components/blocks/table/selected-cells.js +35 -0
- package/dist/components/blocks/table/table-caret-at-point.d.ts +8 -0
- package/dist/components/blocks/table/table-caret-at-point.js +35 -0
- package/dist/components/blocks/table/table-cell-paste.d.ts +16 -0
- package/dist/components/blocks/table/table-cell-paste.js +75 -0
- package/dist/components/blocks/table/table-drag-hit-test.d.ts +5 -0
- package/dist/components/blocks/table/table-drag-hit-test.js +20 -0
- package/dist/components/blocks/table/table-drop-target.d.ts +1 -0
- package/dist/components/blocks/table/table-drop-target.js +16 -0
- package/dist/components/blocks/table/table-menu-model.d.ts +52 -0
- package/dist/components/blocks/table/table-menu-model.js +78 -0
- package/dist/components/blocks/table/table-navigation.d.ts +8 -0
- package/dist/components/blocks/table/table-navigation.js +22 -0
- package/dist/components/blocks/table/table-reorder-drag.d.ts +78 -0
- package/dist/components/blocks/table/table-reorder-drag.js +97 -0
- package/dist/components/blocks/text/TextEditableBlock.svelte +1012 -0
- package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +33 -0
- package/dist/components/blocks/text/click-snap-guard.d.ts +8 -0
- package/dist/components/blocks/text/click-snap-guard.js +19 -0
- package/dist/components/blocks/text/composition-seat.d.ts +50 -0
- package/dist/components/blocks/text/composition-seat.js +65 -0
- package/dist/components/blocks/text/construct-edge-delete.d.ts +47 -0
- package/dist/components/blocks/text/construct-edge-delete.js +164 -0
- package/dist/components/blocks/text/construct-reveal.d.ts +39 -0
- package/dist/components/blocks/text/construct-reveal.js +164 -0
- package/dist/components/blocks/text/edge-policy-dispatch.d.ts +91 -0
- package/dist/components/blocks/text/edge-policy-dispatch.js +457 -0
- package/dist/components/blocks/text/edge-seat.d.ts +42 -0
- package/dist/components/blocks/text/edge-seat.js +197 -0
- package/dist/components/blocks/text/hidden-suffix.d.ts +10 -0
- package/dist/components/blocks/text/hidden-suffix.js +15 -0
- package/dist/components/blocks/text/link-at-point.d.ts +33 -0
- package/dist/components/blocks/text/link-at-point.js +47 -0
- package/dist/components/blocks/text/link-source-bytes.d.ts +37 -0
- package/dist/components/blocks/text/link-source-bytes.js +161 -0
- package/dist/components/blocks/text/live-join-seam.d.ts +15 -0
- package/dist/components/blocks/text/live-join-seam.js +327 -0
- package/dist/components/blocks/text/live-selection-edit.d.ts +68 -0
- package/dist/components/blocks/text/live-selection-edit.js +120 -0
- package/dist/components/blocks/text/live-split-rebalance.d.ts +56 -0
- package/dist/components/blocks/text/live-split-rebalance.js +239 -0
- package/dist/components/blocks/text/marker-completion.d.ts +18 -0
- package/dist/components/blocks/text/marker-completion.js +29 -0
- package/dist/components/blocks/text/pending-mark-insert.d.ts +37 -0
- package/dist/components/blocks/text/pending-mark-insert.js +188 -0
- package/dist/components/blocks/text/screen-diff.d.ts +20 -0
- package/dist/components/blocks/text/screen-diff.js +39 -0
- package/dist/components/blocks/text/text-clipboard.d.ts +70 -0
- package/dist/components/blocks/text/text-clipboard.js +131 -0
- package/dist/components/blocks/text/text-keydown.d.ts +39 -0
- package/dist/components/blocks/text/text-keydown.js +80 -0
- package/dist/components/blocks/text/text-render.d.ts +67 -0
- package/dist/components/blocks/text/text-render.js +215 -0
- package/dist/components/blocks/text/widget-adjacency.d.ts +30 -0
- package/dist/components/blocks/text/widget-adjacency.js +68 -0
- package/dist/components/blocks/text/widget-interaction.d.ts +90 -0
- package/dist/components/blocks/text/widget-interaction.js +591 -0
- package/dist/components/blocks/widget-portal.d.ts +54 -0
- package/dist/components/blocks/widget-portal.js +136 -0
- package/dist/components/built-in-blocks.d.ts +7 -0
- package/dist/components/built-in-blocks.js +77 -0
- package/dist/components/editor-root-clipboard.d.ts +29 -0
- package/dist/components/editor-root-clipboard.js +105 -0
- package/dist/components/editor-root-keydown.d.ts +47 -0
- package/dist/components/editor-root-keydown.js +88 -0
- package/dist/components/editor-root-listeners.d.ts +44 -0
- package/dist/components/editor-root-listeners.js +112 -0
- package/dist/components/image/ImageOverlayHost.svelte +115 -0
- package/dist/components/image/ImageOverlayHost.svelte.d.ts +20 -0
- package/dist/components/image/ImageProperties.svelte +153 -0
- package/dist/components/image/ImageProperties.svelte.d.ts +14 -0
- package/dist/components/image/ImageResizeHandles.svelte +188 -0
- package/dist/components/image/ImageResizeHandles.svelte.d.ts +10 -0
- package/dist/components/image/image-edit-commit.d.ts +38 -0
- package/dist/components/image/image-edit-commit.js +159 -0
- package/dist/components/image/image-resize.d.ts +11 -0
- package/dist/components/image/image-resize.js +38 -0
- package/dist/components/image/image-source-bytes.d.ts +15 -0
- package/dist/components/image/image-source-bytes.js +73 -0
- package/dist/components/image/image-widget-editing.d.ts +7 -0
- package/dist/components/image/image-widget-editing.js +41 -0
- package/dist/components/image/widget-dom.d.ts +11 -0
- package/dist/components/image/widget-dom.js +110 -0
- package/dist/components/image/widget-selection-state.svelte.d.ts +18 -0
- package/dist/components/image/widget-selection-state.svelte.js +26 -0
- package/dist/components/link-card/LinkCard.svelte +190 -0
- package/dist/components/link-card/LinkCard.svelte.d.ts +18 -0
- package/dist/components/link-card/LinkCardHost.svelte +181 -0
- package/dist/components/link-card/LinkCardHost.svelte.d.ts +25 -0
- package/dist/components/link-card/link-card-commit.d.ts +50 -0
- package/dist/components/link-card/link-card-commit.js +134 -0
- package/dist/components/link-card/link-card-entry.d.ts +39 -0
- package/dist/components/link-card/link-card-entry.js +51 -0
- package/dist/components/link-card/link-card-state.svelte.d.ts +44 -0
- package/dist/components/link-card/link-card-state.svelte.js +46 -0
- package/dist/components/lrd-map-gate.d.ts +18 -0
- package/dist/components/lrd-map-gate.js +22 -0
- package/dist/components/paste-image-arm.d.ts +29 -0
- package/dist/components/paste-image-arm.js +61 -0
- package/dist/components/portal.d.ts +11 -0
- package/dist/components/portal.js +29 -0
- package/dist/core/directive/activate.d.ts +8 -0
- package/dist/core/directive/activate.js +25 -0
- package/dist/core/directive/container-opener.d.ts +7 -0
- package/dist/core/directive/container-opener.js +162 -0
- package/dist/core/directive/grammar.d.ts +50 -0
- package/dist/core/directive/grammar.js +88 -0
- package/dist/core/directive/kinds.d.ts +31 -0
- package/dist/core/directive/kinds.js +137 -0
- package/dist/core/directive/registry.d.ts +39 -0
- package/dist/core/directive/registry.js +49 -0
- package/dist/core/directive/text-recognizer.d.ts +8 -0
- package/dist/core/directive/text-recognizer.js +87 -0
- package/dist/core/escapable.d.ts +6 -0
- package/dist/core/escapable.js +6 -0
- package/dist/core/inline/backticks.d.ts +16 -0
- package/dist/core/inline/backticks.js +62 -0
- package/dist/core/inline/character-refs.d.ts +7 -0
- package/dist/core/inline/character-refs.js +70 -0
- package/dist/core/inline/destination-bytes.d.ts +7 -0
- package/dist/core/inline/destination-bytes.js +14 -0
- package/dist/core/inline/entity-widget.d.ts +11 -0
- package/dist/core/inline/entity-widget.js +21 -0
- package/dist/core/inline/format-toggle.d.ts +50 -0
- package/dist/core/inline/format-toggle.js +533 -0
- package/dist/core/inline/html-entities.d.ts +8 -0
- package/dist/core/inline/html-entities.js +2134 -0
- package/dist/core/inline/html-tag-grammar.d.ts +16 -0
- package/dist/core/inline/html-tag-grammar.js +58 -0
- package/dist/core/inline/image-dimensions.d.ts +6 -0
- package/dist/core/inline/image-dimensions.js +42 -0
- package/dist/core/inline/index.d.ts +42 -0
- package/dist/core/inline/index.js +77 -0
- package/dist/core/inline/inline-cache.d.ts +20 -0
- package/dist/core/inline/inline-cache.js +28 -0
- package/dist/core/inline/inline-widgets.d.ts +124 -0
- package/dist/core/inline/inline-widgets.js +131 -0
- package/dist/core/inline/link-reference-resolver.d.ts +21 -0
- package/dist/core/inline/link-reference-resolver.js +46 -0
- package/dist/core/inline/raw-html-widget.d.ts +10 -0
- package/dist/core/inline/raw-html-widget.js +22 -0
- package/dist/core/inline/scan/autolinks.d.ts +23 -0
- package/dist/core/inline/scan/autolinks.js +354 -0
- package/dist/core/inline/scan/brackets.d.ts +11 -0
- package/dist/core/inline/scan/brackets.js +284 -0
- package/dist/core/inline/scan/code-spans.d.ts +7 -0
- package/dist/core/inline/scan/code-spans.js +27 -0
- package/dist/core/inline/scan/emphasis.d.ts +10 -0
- package/dist/core/inline/scan/emphasis.js +276 -0
- package/dist/core/inline/scan/index.d.ts +7 -0
- package/dist/core/inline/scan/index.js +176 -0
- package/dist/core/inline/scan/plugin-syntax.d.ts +62 -0
- package/dist/core/inline/scan/plugin-syntax.js +150 -0
- package/dist/core/inline/scan/scan-state.d.ts +47 -0
- package/dist/core/inline/scan/scan-state.js +48 -0
- package/dist/core/inline/scan/simple-nodes.d.ts +14 -0
- package/dist/core/inline/scan/simple-nodes.js +53 -0
- package/dist/core/inline/scan/url.d.ts +12 -0
- package/dist/core/inline/scan/url.js +82 -0
- package/dist/core/inline/transparency.d.ts +8 -0
- package/dist/core/inline/transparency.js +39 -0
- package/dist/core/inline/visibility.d.ts +81 -0
- package/dist/core/inline/visibility.js +144 -0
- package/dist/core/inline/walk.d.ts +14 -0
- package/dist/core/inline/walk.js +29 -0
- package/dist/core/inline-render.d.ts +48 -0
- package/dist/core/inline-render.js +322 -0
- package/dist/core/lines.d.ts +44 -0
- package/dist/core/lines.js +91 -0
- package/dist/core/node-views.d.ts +22 -0
- package/dist/core/node-views.js +8 -0
- package/dist/core/nodes.d.ts +297 -0
- package/dist/core/nodes.js +83 -0
- package/dist/core/parser.d.ts +68 -0
- package/dist/core/parser.js +189 -0
- package/dist/core/parsers/blockquote.d.ts +17 -0
- package/dist/core/parsers/blockquote.js +69 -0
- package/dist/core/parsers/built-in-openers.d.ts +8 -0
- package/dist/core/parsers/built-in-openers.js +124 -0
- package/dist/core/parsers/fence-syntax.d.ts +24 -0
- package/dist/core/parsers/fence-syntax.js +44 -0
- package/dist/core/parsers/fenced-code.d.ts +7 -0
- package/dist/core/parsers/fenced-code.js +29 -0
- package/dist/core/parsers/heading.d.ts +3 -0
- package/dist/core/parsers/heading.js +6 -0
- package/dist/core/parsers/html-block.d.ts +17 -0
- package/dist/core/parsers/html-block.js +94 -0
- package/dist/core/parsers/indented-code.d.ts +4 -0
- package/dist/core/parsers/indented-code.js +41 -0
- package/dist/core/parsers/link-reference.d.ts +7 -0
- package/dist/core/parsers/link-reference.js +152 -0
- package/dist/core/parsers/list.d.ts +19 -0
- package/dist/core/parsers/list.js +133 -0
- package/dist/core/parsers/paragraph.d.ts +10 -0
- package/dist/core/parsers/paragraph.js +42 -0
- package/dist/core/parsers/table-completion.d.ts +13 -0
- package/dist/core/parsers/table-completion.js +48 -0
- package/dist/core/parsers/table.d.ts +18 -0
- package/dist/core/parsers/table.js +110 -0
- package/dist/core/parsers/thematic-break.d.ts +1 -0
- package/dist/core/parsers/thematic-break.js +19 -0
- package/dist/core/serializer.d.ts +15 -0
- package/dist/core/serializer.js +11 -0
- package/dist/core/terminator-escalation.d.ts +8 -0
- package/dist/core/terminator-escalation.js +18 -0
- package/dist/core/url-policy.d.ts +14 -0
- package/dist/core/url-policy.js +44 -0
- package/dist/cursor/content-offsets.d.ts +29 -0
- package/dist/cursor/content-offsets.js +151 -0
- package/dist/cursor/coordinate-spaces.d.ts +65 -0
- package/dist/cursor/coordinate-spaces.js +66 -0
- package/dist/cursor/dom-walk.d.ts +18 -0
- package/dist/cursor/dom-walk.js +31 -0
- package/dist/cursor/edge-affinity.d.ts +44 -0
- package/dist/cursor/edge-affinity.js +60 -0
- package/dist/cursor/focused-caret.d.ts +10 -0
- package/dist/cursor/focused-caret.js +24 -0
- package/dist/cursor/height-model.d.ts +24 -0
- package/dist/cursor/height-model.js +72 -0
- package/dist/cursor/height-oracle.d.ts +24 -0
- package/dist/cursor/height-oracle.js +94 -0
- package/dist/cursor/overlay-rects.d.ts +8 -0
- package/dist/cursor/overlay-rects.js +19 -0
- package/dist/cursor/overlay-remeasure.d.ts +17 -0
- package/dist/cursor/overlay-remeasure.js +31 -0
- package/dist/cursor/pending-marks.d.ts +24 -0
- package/dist/cursor/pending-marks.js +36 -0
- package/dist/cursor/point-offset.d.ts +21 -0
- package/dist/cursor/point-offset.js +48 -0
- package/dist/cursor/reveal-anchor.d.ts +30 -0
- package/dist/cursor/reveal-anchor.js +31 -0
- package/dist/cursor/reveal-source.d.ts +35 -0
- package/dist/cursor/reveal-source.js +51 -0
- package/dist/cursor/scroll-ancestors.d.ts +28 -0
- package/dist/cursor/scroll-ancestors.js +89 -0
- package/dist/cursor/scrollport.d.ts +20 -0
- package/dist/cursor/scrollport.js +41 -0
- package/dist/cursor/sticky-column.d.ts +35 -0
- package/dist/cursor/sticky-column.js +64 -0
- package/dist/cursor/sticky-measure.d.ts +16 -0
- package/dist/cursor/sticky-measure.js +97 -0
- package/dist/cursor/typography-estimates.d.ts +21 -0
- package/dist/cursor/typography-estimates.js +21 -0
- package/dist/cursor/visual-lines.d.ts +25 -0
- package/dist/cursor/visual-lines.js +125 -0
- package/dist/cursor/widget-offset.d.ts +132 -0
- package/dist/cursor/widget-offset.js +543 -0
- package/dist/debug/diagnostics-report.d.ts +17 -0
- package/dist/debug/diagnostics-report.js +25 -0
- package/dist/debug/dump-tree.d.ts +6 -0
- package/dist/debug/dump-tree.js +114 -0
- package/dist/debug/inspect.d.ts +19 -0
- package/dist/debug/inspect.js +116 -0
- package/dist/debug/interaction-trace.d.ts +39 -0
- package/dist/debug/interaction-trace.js +105 -0
- package/dist/debug/operations-log.d.ts +14 -0
- package/dist/debug/operations-log.js +30 -0
- package/dist/decorations/buckets.d.ts +40 -0
- package/dist/decorations/buckets.js +87 -0
- package/dist/decorations/decoration-state.svelte.d.ts +20 -0
- package/dist/decorations/decoration-state.svelte.js +195 -0
- package/dist/decorations/island-dom.d.ts +35 -0
- package/dist/decorations/island-dom.js +148 -0
- package/dist/decorations/reserved-attrs.d.ts +12 -0
- package/dist/decorations/reserved-attrs.js +47 -0
- package/dist/decorations/types.d.ts +68 -0
- package/dist/decorations/types.js +5 -0
- package/dist/decorations/widget-dom.d.ts +15 -0
- package/dist/decorations/widget-dom.js +35 -0
- package/dist/dev-warn.d.ts +13 -0
- package/dist/dev-warn.js +28 -0
- package/dist/editor-actions/ancestry-folds.d.ts +32 -0
- package/dist/editor-actions/ancestry-folds.js +106 -0
- package/dist/editor-actions/block-edit-core.d.ts +29 -0
- package/dist/editor-actions/block-edit-core.js +277 -0
- package/dist/editor-actions/block-edit-scope.d.ts +79 -0
- package/dist/editor-actions/block-edit-scope.js +76 -0
- package/dist/editor-actions/block-edit.d.ts +8 -0
- package/dist/editor-actions/block-edit.js +111 -0
- package/dist/editor-actions/commit/history.d.ts +9 -0
- package/dist/editor-actions/commit/history.js +77 -0
- package/dist/editor-actions/commit/text-batch.d.ts +34 -0
- package/dist/editor-actions/commit/text-batch.js +61 -0
- package/dist/editor-actions/commit/undo-controller.d.ts +7 -0
- package/dist/editor-actions/commit/undo-controller.js +570 -0
- package/dist/editor-actions/container-block-component.d.ts +85 -0
- package/dist/editor-actions/container-block-component.js +228 -0
- package/dist/editor-actions/container-edit.d.ts +7 -0
- package/dist/editor-actions/container-edit.js +49 -0
- package/dist/editor-actions/container-exit-overrides.d.ts +16 -0
- package/dist/editor-actions/container-exit-overrides.js +38 -0
- package/dist/editor-actions/deps.d.ts +60 -0
- package/dist/editor-actions/deps.js +1 -0
- package/dist/editor-actions/enter-completion.d.ts +25 -0
- package/dist/editor-actions/enter-completion.js +76 -0
- package/dist/editor-actions/focus/focus-dispatch.d.ts +36 -0
- package/dist/editor-actions/focus/focus-dispatch.js +106 -0
- package/dist/editor-actions/focus/focus-landing.d.ts +7 -0
- package/dist/editor-actions/focus/focus-landing.js +39 -0
- package/dist/editor-actions/focus/focus.d.ts +7 -0
- package/dist/editor-actions/focus/focus.js +74 -0
- package/dist/editor-actions/index.d.ts +15 -0
- package/dist/editor-actions/index.js +19 -0
- package/dist/editor-actions/inline-range-commit.d.ts +20 -0
- package/dist/editor-actions/inline-range-commit.js +63 -0
- package/dist/editor-actions/list-context.d.ts +25 -0
- package/dist/editor-actions/list-context.js +285 -0
- package/dist/editor-actions/list-overrides.d.ts +13 -0
- package/dist/editor-actions/list-overrides.js +26 -0
- package/dist/editor-actions/merge-fallback.d.ts +19 -0
- package/dist/editor-actions/merge-fallback.js +27 -0
- package/dist/editor-actions/nested/nested-actions.d.ts +65 -0
- package/dist/editor-actions/nested/nested-actions.js +59 -0
- package/dist/editor-actions/nested/nested-block-edit.d.ts +10 -0
- package/dist/editor-actions/nested/nested-block-edit.js +181 -0
- package/dist/editor-actions/nested/nested-focus.d.ts +9 -0
- package/dist/editor-actions/nested/nested-focus.js +30 -0
- package/dist/editor-actions/paste-coordinator.d.ts +4 -0
- package/dist/editor-actions/paste-coordinator.js +20 -0
- package/dist/editor-actions/plugin/chrome-leaf.d.ts +25 -0
- package/dist/editor-actions/plugin/chrome-leaf.js +80 -0
- package/dist/editor-actions/plugin/container.d.ts +137 -0
- package/dist/editor-actions/plugin/container.js +351 -0
- package/dist/editor-actions/plugin/directive-container.d.ts +13 -0
- package/dist/editor-actions/plugin/directive-container.js +31 -0
- package/dist/editor-actions/reorder-action.d.ts +17 -0
- package/dist/editor-actions/reorder-action.js +104 -0
- package/dist/editor-actions/reorder-drag.d.ts +34 -0
- package/dist/editor-actions/reorder-drag.js +152 -0
- package/dist/editor-actions/replacement-focus.d.ts +27 -0
- package/dist/editor-actions/replacement-focus.js +60 -0
- package/dist/editor-actions/search-replace.d.ts +6 -0
- package/dist/editor-actions/search-replace.js +145 -0
- package/dist/editor-actions/table-context.d.ts +34 -0
- package/dist/editor-actions/table-context.js +292 -0
- package/dist/editor-actions/unwrap-strategies.d.ts +14 -0
- package/dist/editor-actions/unwrap-strategies.js +131 -0
- package/dist/editor-actions/whole-block-focus-surface.d.ts +51 -0
- package/dist/editor-actions/whole-block-focus-surface.js +171 -0
- package/dist/editor-events.d.ts +89 -0
- package/dist/editor-events.js +96 -0
- package/dist/editor-keys.d.ts +197 -0
- package/dist/editor-keys.js +40 -0
- package/dist/editor-props.d.ts +164 -0
- package/dist/editor-props.js +1 -0
- package/dist/editor-rects.d.ts +58 -0
- package/dist/editor-rects.js +114 -0
- package/dist/env.d.ts +12 -0
- package/dist/env.js +20 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.js +19 -0
- package/dist/invariants/commit-paths.d.ts +10 -0
- package/dist/invariants/commit-paths.js +25 -0
- package/dist/invariants/commit-scope.d.ts +9 -0
- package/dist/invariants/commit-scope.js +16 -0
- package/dist/invariants/context-keys.d.ts +7 -0
- package/dist/invariants/context-keys.js +14 -0
- package/dist/invariants/descriptor.d.ts +10 -0
- package/dist/invariants/descriptor.js +24 -0
- package/dist/invariants/inline-transitions.d.ts +23 -0
- package/dist/invariants/inline-transitions.js +52 -0
- package/dist/invariants/install.d.ts +36 -0
- package/dist/invariants/install.js +66 -0
- package/dist/invariants/landable-caret.d.ts +12 -0
- package/dist/invariants/landable-caret.js +31 -0
- package/dist/invariants/marker-css-parity.d.ts +10 -0
- package/dist/invariants/marker-css-parity.js +87 -0
- package/dist/invariants/node-shape.d.ts +44 -0
- package/dist/invariants/node-shape.js +258 -0
- package/dist/invariants/registry.d.ts +126 -0
- package/dist/invariants/registry.js +349 -0
- package/dist/invariants/render-fidelity.d.ts +8 -0
- package/dist/invariants/render-fidelity.js +33 -0
- package/dist/invariants/selection-endpoints.d.ts +19 -0
- package/dist/invariants/selection-endpoints.js +78 -0
- package/dist/invariants/single-node-sink.d.ts +9 -0
- package/dist/invariants/single-node-sink.js +16 -0
- package/dist/invariants/snapshot-integrity.d.ts +17 -0
- package/dist/invariants/snapshot-integrity.js +24 -0
- package/dist/invariants/split-landing.d.ts +8 -0
- package/dist/invariants/split-landing.js +15 -0
- package/dist/invariants/structural-descriptor.d.ts +21 -0
- package/dist/invariants/structural-descriptor.js +50 -0
- package/dist/perf/instruments.d.ts +49 -0
- package/dist/perf/instruments.js +154 -0
- package/dist/perf/use-mount-gauge.svelte.d.ts +1 -0
- package/dist/perf/use-mount-gauge.svelte.js +15 -0
- package/dist/plugin.d.ts +102 -0
- package/dist/plugin.js +156 -0
- package/dist/plugins/admonitions/AdmonitionBlock.svelte +144 -0
- package/dist/plugins/admonitions/AdmonitionBlock.svelte.d.ts +11 -0
- package/dist/plugins/admonitions/admonition-kind.d.ts +8 -0
- package/dist/plugins/admonitions/admonition-kind.js +97 -0
- package/dist/plugins/admonitions/convert-document.d.ts +11 -0
- package/dist/plugins/admonitions/convert-document.js +39 -0
- package/dist/plugins/admonitions/gh-alert.d.ts +13 -0
- package/dist/plugins/admonitions/gh-alert.js +83 -0
- package/dist/plugins/admonitions/github-alert-kind.d.ts +12 -0
- package/dist/plugins/admonitions/github-alert-kind.js +125 -0
- package/dist/plugins/admonitions/index.d.ts +6 -0
- package/dist/plugins/admonitions/index.js +8 -0
- package/dist/plugins/admonitions/kinds.d.ts +26 -0
- package/dist/plugins/admonitions/kinds.js +18 -0
- package/dist/plugins/admonitions/register.d.ts +7 -0
- package/dist/plugins/admonitions/register.js +12 -0
- package/dist/plugins/details/DetailsBlock.svelte +129 -0
- package/dist/plugins/details/DetailsBlock.svelte.d.ts +11 -0
- package/dist/plugins/details/details-disclosure.svelte.d.ts +17 -0
- package/dist/plugins/details/details-disclosure.svelte.js +24 -0
- package/dist/plugins/details/details-kind.d.ts +25 -0
- package/dist/plugins/details/details-kind.js +237 -0
- package/dist/plugins/details/index.d.ts +2 -0
- package/dist/plugins/details/index.js +2 -0
- package/dist/plugins/details/register.d.ts +6 -0
- package/dist/plugins/details/register.js +15 -0
- package/dist/plugins/emoji/emoji-plugin.d.ts +2 -0
- package/dist/plugins/emoji/emoji-plugin.js +10 -0
- package/dist/plugins/emoji/emoji-recognizer.d.ts +18 -0
- package/dist/plugins/emoji/emoji-recognizer.js +63 -0
- package/dist/plugins/emoji/emoji-table.d.ts +1 -0
- package/dist/plugins/emoji/emoji-table.js +1919 -0
- package/dist/plugins/emoji/index.d.ts +3 -0
- package/dist/plugins/emoji/index.js +4 -0
- package/dist/plugins/footnotes/FootnoteDefinition.svelte +103 -0
- package/dist/plugins/footnotes/FootnoteDefinition.svelte.d.ts +13 -0
- package/dist/plugins/footnotes/FootnoteReference.svelte +50 -0
- package/dist/plugins/footnotes/FootnoteReference.svelte.d.ts +4 -0
- package/dist/plugins/footnotes/constants.d.ts +2 -0
- package/dist/plugins/footnotes/constants.js +4 -0
- package/dist/plugins/footnotes/footnote-definition.d.ts +14 -0
- package/dist/plugins/footnotes/footnote-definition.js +147 -0
- package/dist/plugins/footnotes/footnote-lookup.d.ts +9 -0
- package/dist/plugins/footnotes/footnote-lookup.js +33 -0
- package/dist/plugins/footnotes/footnote-numbering.d.ts +23 -0
- package/dist/plugins/footnotes/footnote-numbering.js +78 -0
- package/dist/plugins/footnotes/footnote-reference.d.ts +7 -0
- package/dist/plugins/footnotes/footnote-reference.js +54 -0
- package/dist/plugins/footnotes/footnotes-plugin.d.ts +7 -0
- package/dist/plugins/footnotes/footnotes-plugin.js +17 -0
- package/dist/plugins/footnotes/index.d.ts +5 -0
- package/dist/plugins/footnotes/index.js +6 -0
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +17 -0
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +31 -0
- package/dist/plugins/highlight-occurrences/index.d.ts +1 -0
- package/dist/plugins/highlight-occurrences/index.js +1 -0
- package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +26 -0
- package/dist/plugins/highlight-occurrences/occurrence-source.js +54 -0
- package/dist/plugins/highlight-occurrences/occurrences.d.ts +33 -0
- package/dist/plugins/highlight-occurrences/occurrences.js +108 -0
- package/dist/plugins/latex/BlockMath.svelte +119 -0
- package/dist/plugins/latex/BlockMath.svelte.d.ts +21 -0
- package/dist/plugins/latex/MathInline.svelte +28 -0
- package/dist/plugins/latex/MathInline.svelte.d.ts +4 -0
- package/dist/plugins/latex/index.d.ts +3 -0
- package/dist/plugins/latex/index.js +4 -0
- package/dist/plugins/latex/latex-kind.d.ts +17 -0
- package/dist/plugins/latex/latex-kind.js +224 -0
- package/dist/plugins/latex/math-completion.d.ts +10 -0
- package/dist/plugins/latex/math-completion.js +19 -0
- package/dist/plugins/latex/math-renderer.d.ts +26 -0
- package/dist/plugins/latex/math-renderer.js +42 -0
- package/dist/plugins/latex/register.d.ts +10 -0
- package/dist/plugins/latex/register.js +23 -0
- package/dist/plugins/latex/renderer.d.ts +13 -0
- package/dist/plugins/latex/renderer.js +34 -0
- package/dist/plugins/mermaid/MermaidBlock.svelte +572 -0
- package/dist/plugins/mermaid/MermaidBlock.svelte.d.ts +11 -0
- package/dist/plugins/mermaid/index.d.ts +3 -0
- package/dist/plugins/mermaid/index.js +3 -0
- package/dist/plugins/mermaid/mermaid-kind.d.ts +38 -0
- package/dist/plugins/mermaid/mermaid-kind.js +176 -0
- package/dist/plugins/mermaid/mermaid-renderer.d.ts +28 -0
- package/dist/plugins/mermaid/mermaid-renderer.js +35 -0
- package/dist/plugins/mermaid/register.d.ts +10 -0
- package/dist/plugins/mermaid/register.js +20 -0
- package/dist/plugins/mermaid/renderer.d.ts +11 -0
- package/dist/plugins/mermaid/renderer.js +53 -0
- package/dist/plugins/parrot/ParrotBlock.svelte +342 -0
- package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +21 -0
- package/dist/plugins/parrot/index.d.ts +1 -0
- package/dist/plugins/parrot/index.js +2 -0
- package/dist/plugins/parrot/parrot-plugin.d.ts +3 -0
- package/dist/plugins/parrot/parrot-plugin.js +49 -0
- package/dist/plugins/toc/TocBlock.svelte +218 -0
- package/dist/plugins/toc/TocBlock.svelte.d.ts +24 -0
- package/dist/plugins/toc/heading-outline.d.ts +28 -0
- package/dist/plugins/toc/heading-outline.js +65 -0
- package/dist/plugins/toc/index.d.ts +2 -0
- package/dist/plugins/toc/index.js +2 -0
- package/dist/plugins/toc/navigation-queue.d.ts +12 -0
- package/dist/plugins/toc/navigation-queue.js +21 -0
- package/dist/plugins/toc/toc-plugin.d.ts +16 -0
- package/dist/plugins/toc/toc-plugin.js +71 -0
- package/dist/presentation-mode.d.ts +32 -0
- package/dist/presentation-mode.js +50 -0
- package/dist/reactivity/block-list-state.svelte.d.ts +22 -0
- package/dist/reactivity/block-list-state.svelte.js +46 -0
- package/dist/reactivity/block-window.svelte.d.ts +41 -0
- package/dist/reactivity/block-window.svelte.js +93 -0
- package/dist/reactivity/content-version.svelte.d.ts +14 -0
- package/dist/reactivity/content-version.svelte.js +16 -0
- package/dist/reactivity/list-windowing.svelte.d.ts +100 -0
- package/dist/reactivity/list-windowing.svelte.js +402 -0
- package/dist/reactivity/measure-batch.d.ts +15 -0
- package/dist/reactivity/measure-batch.js +18 -0
- package/dist/reactivity/publish-ref.svelte.d.ts +54 -0
- package/dist/reactivity/publish-ref.svelte.js +128 -0
- package/dist/reactivity/scope-geometry.d.ts +18 -0
- package/dist/reactivity/scope-geometry.js +29 -0
- package/dist/reactivity/state-registry.d.ts +10 -0
- package/dist/reactivity/state-registry.js +44 -0
- package/dist/reactivity/use-container-windowing.svelte.d.ts +35 -0
- package/dist/reactivity/use-container-windowing.svelte.js +95 -0
- package/dist/reactivity/window-slice.d.ts +11 -0
- package/dist/reactivity/window-slice.js +9 -0
- package/dist/scan-index.d.ts +11 -0
- package/dist/scan-index.js +27 -0
- package/dist/schema/block-commands.d.ts +105 -0
- package/dist/schema/block-commands.js +179 -0
- package/dist/schema/block-completions.d.ts +33 -0
- package/dist/schema/block-completions.js +49 -0
- package/dist/schema/block-component-registry.d.ts +33 -0
- package/dist/schema/block-component-registry.js +33 -0
- package/dist/schema/block-kind-descriptor.d.ts +281 -0
- package/dist/schema/block-kind-descriptor.js +187 -0
- package/dist/schema/block-openers.d.ts +94 -0
- package/dist/schema/block-openers.js +150 -0
- package/dist/schema/built-in-descriptors.d.ts +8 -0
- package/dist/schema/built-in-descriptors.js +560 -0
- package/dist/schema/child-spans.d.ts +25 -0
- package/dist/schema/child-spans.js +161 -0
- package/dist/schema/closure.d.ts +39 -0
- package/dist/schema/closure.js +55 -0
- package/dist/schema/command-id.d.ts +20 -0
- package/dist/schema/command-id.js +42 -0
- package/dist/schema/commands.d.ts +147 -0
- package/dist/schema/commands.js +294 -0
- package/dist/schema/container-raw.d.ts +21 -0
- package/dist/schema/container-raw.js +43 -0
- package/dist/schema/container-rebuilders.d.ts +32 -0
- package/dist/schema/container-rebuilders.js +95 -0
- package/dist/schema/define-plugin-block.d.ts +15 -0
- package/dist/schema/define-plugin-block.js +18 -0
- package/dist/schema/fenced-code-raw.d.ts +43 -0
- package/dist/schema/fenced-code-raw.js +220 -0
- package/dist/schema/global-commands.d.ts +11 -0
- package/dist/schema/global-commands.js +40 -0
- package/dist/schema/inline-construct-policy.d.ts +131 -0
- package/dist/schema/inline-construct-policy.js +96 -0
- package/dist/schema/keybinding-overrides.d.ts +39 -0
- package/dist/schema/keybinding-overrides.js +43 -0
- package/dist/schema/keybindings.d.ts +36 -0
- package/dist/schema/keybindings.js +75 -0
- package/dist/schema/merge-rules.d.ts +28 -0
- package/dist/schema/merge-rules.js +57 -0
- package/dist/schema/opener-priorities.d.ts +16 -0
- package/dist/schema/opener-priorities.js +16 -0
- package/dist/schema/operations.d.ts +110 -0
- package/dist/schema/operations.js +6 -0
- package/dist/schema/plugin-activation.d.ts +13 -0
- package/dist/schema/plugin-activation.js +18 -0
- package/dist/schema/plugin-editor-context.d.ts +33 -0
- package/dist/schema/plugin-editor-context.js +65 -0
- package/dist/schema/plugin-install.d.ts +58 -0
- package/dist/schema/plugin-install.js +132 -0
- package/dist/schema/plugin-kind.d.ts +21 -0
- package/dist/schema/plugin-kind.js +86 -0
- package/dist/schema/plugin-name.d.ts +1 -0
- package/dist/schema/plugin-name.js +7 -0
- package/dist/schema/register-once.d.ts +9 -0
- package/dist/schema/register-once.js +35 -0
- package/dist/schema/registration-checks.d.ts +32 -0
- package/dist/schema/registration-checks.js +122 -0
- package/dist/schema/registration-pending.d.ts +28 -0
- package/dist/schema/registration-pending.js +48 -0
- package/dist/schema/registry-reset.d.ts +7 -0
- package/dist/schema/registry-reset.js +30 -0
- package/dist/schema/registry-view.d.ts +30 -0
- package/dist/schema/registry-view.js +39 -0
- package/dist/schema/reserved-chords.d.ts +35 -0
- package/dist/schema/reserved-chords.js +313 -0
- package/dist/schema/reserved-chrome.d.ts +23 -0
- package/dist/schema/reserved-chrome.js +33 -0
- package/dist/schema/table-cell-raw.d.ts +14 -0
- package/dist/schema/table-cell-raw.js +30 -0
- package/dist/schema/whole-block-unit.d.ts +8 -0
- package/dist/schema/whole-block-unit.js +12 -0
- package/dist/search/document-scan.d.ts +22 -0
- package/dist/search/document-scan.js +39 -0
- package/dist/search/matcher.d.ts +31 -0
- package/dist/search/matcher.js +70 -0
- package/dist/search/regex-executor.d.ts +41 -0
- package/dist/search/regex-executor.js +165 -0
- package/dist/search/replace.d.ts +15 -0
- package/dist/search/replace.js +29 -0
- package/dist/search/search-state.svelte.d.ts +59 -0
- package/dist/search/search-state.svelte.js +231 -0
- package/dist/selection/autoscroll.d.ts +26 -0
- package/dist/selection/autoscroll.js +91 -0
- package/dist/selection/block-hit-test.d.ts +37 -0
- package/dist/selection/block-hit-test.js +59 -0
- package/dist/selection/caret-doors.d.ts +20 -0
- package/dist/selection/caret-doors.js +44 -0
- package/dist/selection/caret-restore.d.ts +15 -0
- package/dist/selection/caret-restore.js +32 -0
- package/dist/selection/char-endpoint-snap.d.ts +15 -0
- package/dist/selection/char-endpoint-snap.js +39 -0
- package/dist/selection/clipboard-text.d.ts +13 -0
- package/dist/selection/clipboard-text.js +314 -0
- package/dist/selection/cross-block/clipboard.d.ts +14 -0
- package/dist/selection/cross-block/clipboard.js +20 -0
- package/dist/selection/cross-block/dispatch.d.ts +78 -0
- package/dist/selection/cross-block/dispatch.js +57 -0
- package/dist/selection/cross-block/format-range.d.ts +38 -0
- package/dist/selection/cross-block/format-range.js +193 -0
- package/dist/selection/cross-block/format-toggle.d.ts +27 -0
- package/dist/selection/cross-block/format-toggle.js +109 -0
- package/dist/selection/cross-block/keydown.d.ts +11 -0
- package/dist/selection/cross-block/keydown.js +339 -0
- package/dist/selection/cross-block/ops.d.ts +56 -0
- package/dist/selection/cross-block/ops.js +210 -0
- package/dist/selection/cross-block/paste.d.ts +8 -0
- package/dist/selection/cross-block/paste.js +156 -0
- package/dist/selection/cross-block/pointer.d.ts +19 -0
- package/dist/selection/cross-block/pointer.js +80 -0
- package/dist/selection/cross-block/type-replace.d.ts +10 -0
- package/dist/selection/cross-block/type-replace.js +129 -0
- package/dist/selection/dead-space-caret.d.ts +39 -0
- package/dist/selection/dead-space-caret.js +173 -0
- package/dist/selection/drag-pointer.d.ts +22 -0
- package/dist/selection/drag-pointer.js +89 -0
- package/dist/selection/gap-caret.d.ts +47 -0
- package/dist/selection/gap-caret.js +72 -0
- package/dist/selection/keyboard-extend.d.ts +43 -0
- package/dist/selection/keyboard-extend.js +257 -0
- package/dist/selection/native-bridge.d.ts +47 -0
- package/dist/selection/native-bridge.js +204 -0
- package/dist/selection/nearest-block.d.ts +43 -0
- package/dist/selection/nearest-block.js +73 -0
- package/dist/selection/path-lookup.d.ts +32 -0
- package/dist/selection/path-lookup.js +132 -0
- package/dist/selection/path-math.d.ts +35 -0
- package/dist/selection/path-math.js +90 -0
- package/dist/selection/pointer-session.d.ts +43 -0
- package/dist/selection/pointer-session.js +111 -0
- package/dist/selection/primitives.d.ts +75 -0
- package/dist/selection/primitives.js +91 -0
- package/dist/selection/range-delete-ceremony.d.ts +85 -0
- package/dist/selection/range-delete-ceremony.js +197 -0
- package/dist/selection/range-delete-chrome.d.ts +39 -0
- package/dist/selection/range-delete-chrome.js +105 -0
- package/dist/selection/range-delete-table-coverage.d.ts +28 -0
- package/dist/selection/range-delete-table-coverage.js +168 -0
- package/dist/selection/range-delete-table.d.ts +16 -0
- package/dist/selection/range-delete-table.js +347 -0
- package/dist/selection/range-delete.d.ts +33 -0
- package/dist/selection/range-delete.js +121 -0
- package/dist/selection/selection-description.d.ts +7 -0
- package/dist/selection/selection-description.js +18 -0
- package/dist/selection/selection-restore.d.ts +46 -0
- package/dist/selection/selection-restore.js +66 -0
- package/dist/selection/selection-state.svelte.d.ts +72 -0
- package/dist/selection/selection-state.svelte.js +247 -0
- package/dist/selection/shared-keydown.d.ts +61 -0
- package/dist/selection/shared-keydown.js +150 -0
- package/dist/selection/table-endpoint-snap.d.ts +55 -0
- package/dist/selection/table-endpoint-snap.js +143 -0
- package/dist/selection/table-rect-extend.d.ts +23 -0
- package/dist/selection/table-rect-extend.js +46 -0
- package/dist/selection/widget-range-paint.d.ts +12 -0
- package/dist/selection/widget-range-paint.js +44 -0
- package/dist/styles/editor-theme.css +151 -0
- package/dist/styles/editor.css +585 -0
- package/dist/testing/conformance-core.d.ts +45 -0
- package/dist/testing/conformance-core.js +105 -0
- package/dist/testing/container-conformance.d.ts +137 -0
- package/dist/testing/container-conformance.js +533 -0
- package/dist/testing/headless-actions.d.ts +37 -0
- package/dist/testing/headless-actions.js +118 -0
- package/dist/testing/inline-conformance.d.ts +50 -0
- package/dist/testing/inline-conformance.js +442 -0
- package/dist/testing/kind-conformance.d.ts +54 -0
- package/dist/testing/kind-conformance.js +325 -0
- package/dist/testing/mount-dom-stubs.d.ts +8 -0
- package/dist/testing/mount-dom-stubs.js +19 -0
- package/dist/testing/parse-convergence.d.ts +14 -0
- package/dist/testing/parse-convergence.js +81 -0
- package/dist/testing.d.ts +20 -0
- package/dist/testing.js +61 -0
- package/dist/tree-operations/blockquote.d.ts +18 -0
- package/dist/tree-operations/blockquote.js +59 -0
- package/dist/tree-operations/children.d.ts +17 -0
- package/dist/tree-operations/children.js +56 -0
- package/dist/tree-operations/cleanup.d.ts +10 -0
- package/dist/tree-operations/cleanup.js +25 -0
- package/dist/tree-operations/clone.d.ts +5 -0
- package/dist/tree-operations/clone.js +43 -0
- package/dist/tree-operations/container-lift.d.ts +9 -0
- package/dist/tree-operations/container-lift.js +29 -0
- package/dist/tree-operations/index.d.ts +16 -0
- package/dist/tree-operations/index.js +14 -0
- package/dist/tree-operations/list/empty-check.d.ts +7 -0
- package/dist/tree-operations/list/empty-check.js +19 -0
- package/dist/tree-operations/list/exit-replacement.d.ts +13 -0
- package/dist/tree-operations/list/exit-replacement.js +49 -0
- package/dist/tree-operations/list/item-partition.d.ts +13 -0
- package/dist/tree-operations/list/item-partition.js +33 -0
- package/dist/tree-operations/list/list-builders.d.ts +44 -0
- package/dist/tree-operations/list/list-builders.js +129 -0
- package/dist/tree-operations/list/ordered-markers.d.ts +36 -0
- package/dist/tree-operations/list/ordered-markers.js +114 -0
- package/dist/tree-operations/list/reconcile-task.d.ts +12 -0
- package/dist/tree-operations/list/reconcile-task.js +47 -0
- package/dist/tree-operations/list/sublist-separator.d.ts +13 -0
- package/dist/tree-operations/list/sublist-separator.js +34 -0
- package/dist/tree-operations/list/terminator.d.ts +17 -0
- package/dist/tree-operations/list/terminator.js +60 -0
- package/dist/tree-operations/list/unwrap-merge.d.ts +29 -0
- package/dist/tree-operations/list/unwrap-merge.js +202 -0
- package/dist/tree-operations/node-ops.d.ts +296 -0
- package/dist/tree-operations/node-ops.js +1428 -0
- package/dist/tree-operations/parse-block.d.ts +3 -0
- package/dist/tree-operations/parse-block.js +8 -0
- package/dist/tree-operations/paste/apply.d.ts +12 -0
- package/dist/tree-operations/paste/apply.js +75 -0
- package/dist/tree-operations/paste/body-write.d.ts +19 -0
- package/dist/tree-operations/paste/body-write.js +53 -0
- package/dist/tree-operations/paste/container-match.d.ts +32 -0
- package/dist/tree-operations/paste/container-match.js +238 -0
- package/dist/tree-operations/paste/container-paste.d.ts +10 -0
- package/dist/tree-operations/paste/container-paste.js +27 -0
- package/dist/tree-operations/paste/dispatch.d.ts +61 -0
- package/dist/tree-operations/paste/dispatch.js +138 -0
- package/dist/tree-operations/paste/find-enclosing-list.d.ts +8 -0
- package/dist/tree-operations/paste/find-enclosing-list.js +30 -0
- package/dist/tree-operations/paste/focus-target.d.ts +27 -0
- package/dist/tree-operations/paste/focus-target.js +40 -0
- package/dist/tree-operations/paste/hooks.d.ts +17 -0
- package/dist/tree-operations/paste/hooks.js +80 -0
- package/dist/tree-operations/paste/list-absorb.d.ts +29 -0
- package/dist/tree-operations/paste/list-absorb.js +106 -0
- package/dist/tree-operations/paste/list-break-out.d.ts +42 -0
- package/dist/tree-operations/paste/list-break-out.js +136 -0
- package/dist/tree-operations/paste/parent-scope.d.ts +17 -0
- package/dist/tree-operations/paste/parent-scope.js +35 -0
- package/dist/tree-operations/paste/paste-deps.d.ts +20 -0
- package/dist/tree-operations/paste/paste-deps.js +6 -0
- package/dist/tree-operations/paste/paste-replacement.d.ts +8 -0
- package/dist/tree-operations/paste/paste-replacement.js +60 -0
- package/dist/tree-operations/paste/paste-transforms.d.ts +25 -0
- package/dist/tree-operations/paste/paste-transforms.js +72 -0
- package/dist/tree-operations/paste/replace-block-at-parent.d.ts +29 -0
- package/dist/tree-operations/paste/replace-block-at-parent.js +75 -0
- package/dist/tree-operations/paste/strategy.d.ts +9 -0
- package/dist/tree-operations/paste/strategy.js +20 -0
- package/dist/tree-operations/paste/table-slice.d.ts +10 -0
- package/dist/tree-operations/paste/table-slice.js +39 -0
- package/dist/tree-operations/paste-surfaces.d.ts +61 -0
- package/dist/tree-operations/paste-surfaces.js +15 -0
- package/dist/tree-operations/path-mutate.d.ts +12 -0
- package/dist/tree-operations/path-mutate.js +20 -0
- package/dist/tree-operations/reorder-unit.d.ts +17 -0
- package/dist/tree-operations/reorder-unit.js +37 -0
- package/dist/tree-operations/reorder.d.ts +13 -0
- package/dist/tree-operations/reorder.js +57 -0
- package/dist/tree-operations/sharing.d.ts +18 -0
- package/dist/tree-operations/sharing.js +14 -0
- package/dist/tree-operations/splice-many.d.ts +9 -0
- package/dist/tree-operations/splice-many.js +22 -0
- package/dist/tree-operations/structural-change.d.ts +65 -0
- package/dist/tree-operations/structural-change.js +117 -0
- package/dist/tree-operations/sub-table-copy.d.ts +6 -0
- package/dist/tree-operations/sub-table-copy.js +43 -0
- package/dist/tree-operations/table-mutations.d.ts +17 -0
- package/dist/tree-operations/table-mutations.js +101 -0
- package/dist/tree-operations/unshare.d.ts +101 -0
- package/dist/tree-operations/unshare.js +248 -0
- package/dist/undo/manager.d.ts +2 -0
- package/dist/undo/manager.js +50 -0
- package/dist/undo/types.d.ts +44 -0
- package/dist/undo/types.js +7 -0
- package/docs/guide/consumer-guide.md +1098 -0
- package/docs/guide/directives.md +223 -0
- package/docs/guide/plugin-api.md +329 -0
- package/docs/guide/plugin-guide/conspiracy.gif +0 -0
- package/docs/guide/plugin-guide/parrot-frames.md +209 -0
- package/docs/guide/plugin-guide/parrot.gif +0 -0
- package/docs/guide/plugin-guide.md +1693 -0
- package/docs/guide/plugin-testing.md +463 -0
- package/package.json +238 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core range mutation primitive, in place: truncate both endpoints, delete between, re-parse
|
|
3
|
+
* the merged raw, cascade-clean empty ancestors, rebuild container raws. Caller pre-normalizes
|
|
4
|
+
* the range. The "start wins" rule: `docs/design/editor.md` § Cross-block selection.
|
|
5
|
+
*/
|
|
6
|
+
import type { GrammarView } from '../schema/block-openers';
|
|
7
|
+
import type { PresentationMode } from '../presentation-mode';
|
|
8
|
+
import type { InlineResolverRef } from '../schema/inline-construct-policy';
|
|
9
|
+
import { type CstNode, type Document } from '../core/nodes';
|
|
10
|
+
import type { SelectionPoint } from './primitives';
|
|
11
|
+
import type { SharingState } from '../tree-operations/sharing';
|
|
12
|
+
/** A whole-row window the table branch spliced out of `table.children`. */
|
|
13
|
+
export interface TableRowSplice {
|
|
14
|
+
table: CstNode;
|
|
15
|
+
at: number;
|
|
16
|
+
count: number;
|
|
17
|
+
}
|
|
18
|
+
export interface RangeDeleteResult {
|
|
19
|
+
newDoc: Document;
|
|
20
|
+
collapsedCaret: SelectionPoint;
|
|
21
|
+
/**
|
|
22
|
+
* Row splices performed on endpoint tables, so the cross-block commit can descriptor-sync
|
|
23
|
+
* each table's row BlockListState without re-deriving snap math. Table branch only.
|
|
24
|
+
*/
|
|
25
|
+
tableRowSplices?: TableRowSplice[];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Delete [start, end] in place, merge at start's position with its container context preserved,
|
|
29
|
+
* cascade-clean empty ancestors, rebuild container raws. Copy-path-on-write: every spliced or
|
|
30
|
+
* written spine is unshared BEFORE target identities are captured, so the identity gate compares
|
|
31
|
+
* post-unshare references. Caller pre-normalizes and keeps endpoints on focusable blocks.
|
|
32
|
+
*/
|
|
33
|
+
export declare function rangeDelete(doc: Document, start: SelectionPoint, end: SelectionPoint, sharing: SharingState, grammar: GrammarView | undefined, presentationMode: PresentationMode | undefined, linkRef: InlineResolverRef | undefined): RangeDeleteResult;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core range mutation primitive, in place: truncate both endpoints, delete between, re-parse
|
|
3
|
+
* the merged raw, cascade-clean empty ancestors, rebuild container raws. Caller pre-normalizes
|
|
4
|
+
* the range. The "start wins" rule: `docs/design/editor.md` § Cross-block selection.
|
|
5
|
+
*/
|
|
6
|
+
import { metadataOf } from '../core/nodes';
|
|
7
|
+
import { walkBetween, charOffsetOf } from './primitives';
|
|
8
|
+
import { comparePaths, lowestCommonAncestor, isPathSubtreeBetween } from './path-math';
|
|
9
|
+
import { firstLeafAtOrAfter } from './path-lookup';
|
|
10
|
+
import { blockNodeAt, cleanJoinedRaw, nodeAt, normalizeBodyWrite, normalizeOwnRaw, settleSeparatorOnBlank, writeOwnRaw } from '../tree-operations/node-ops';
|
|
11
|
+
import { deleteSubtreesIdentityGated, installTruncatedEndpoint, reparseTruncatedEndpoint } from './range-delete-ceremony';
|
|
12
|
+
import { ensureUnsharedNode, ensureUnsharedPath, rebuildUnsharedAncestry, rebuildUnsharedChain } from '../tree-operations/unshare';
|
|
13
|
+
import { involvesTable, tableAwareRangeDelete } from './range-delete-table';
|
|
14
|
+
import { involvesReservedChrome, chromeAwareRangeDelete } from './range-delete-chrome';
|
|
15
|
+
/**
|
|
16
|
+
* Delete [start, end] in place, merge at start's position with its container context preserved,
|
|
17
|
+
* cascade-clean empty ancestors, rebuild container raws. Copy-path-on-write: every spliced or
|
|
18
|
+
* written spine is unshared BEFORE target identities are captured, so the identity gate compares
|
|
19
|
+
* post-unshare references. Caller pre-normalizes and keeps endpoints on focusable blocks.
|
|
20
|
+
*/
|
|
21
|
+
export function rangeDelete(doc, start, end, sharing, grammar, presentationMode, linkRef) {
|
|
22
|
+
const startBlock = blockNodeAt(doc, start.path);
|
|
23
|
+
const endBlock = blockNodeAt(doc, end.path);
|
|
24
|
+
if (!startBlock || !endBlock) {
|
|
25
|
+
throw new Error('rangeDelete: start or end path does not resolve to a block node');
|
|
26
|
+
}
|
|
27
|
+
// The wall branches join nothing, but a truncation still strands the runs whose partner went
|
|
28
|
+
// with the cut, so their prose endpoints cross the cleaner's unpaired-run half; only the
|
|
29
|
+
// chrome child's own raw writes stay byte-literal.
|
|
30
|
+
if (involvesTable(startBlock, endBlock)) {
|
|
31
|
+
return tableAwareRangeDelete(doc, start, end, sharing, grammar, presentationMode, linkRef);
|
|
32
|
+
}
|
|
33
|
+
if (involvesReservedChrome(doc, start, end)) {
|
|
34
|
+
return chromeAwareRangeDelete(doc, start, end, sharing, grammar, presentationMode, linkRef);
|
|
35
|
+
}
|
|
36
|
+
const sameBlock = comparePaths(start.path, end.path) === 0;
|
|
37
|
+
const startRaw = startBlock.raw;
|
|
38
|
+
const endRaw = endBlock.raw;
|
|
39
|
+
const startOffset = charOffsetOf(start, 'rangeDelete:prose-merge-start');
|
|
40
|
+
const endOffset = charOffsetOf(end, 'rangeDelete:prose-merge-end');
|
|
41
|
+
// The end slice answers to the END block's rule before the join: start's rule below speaks
|
|
42
|
+
// only for start's bytes, so a truncation from the end block's head strands its closer. A
|
|
43
|
+
// same-block merge is one block's bytes and takes that rule once, whole, on the arm below.
|
|
44
|
+
const endTail = endRaw.slice(endOffset);
|
|
45
|
+
// A join can MINT a line neither side held: two lines each carrying a mid-line `</details>`
|
|
46
|
+
// become one that opens with it. The survivor lands in start's container, so it answers to
|
|
47
|
+
// that container's body rule, applied here so the kinds derive from the bytes that land.
|
|
48
|
+
const mergedRaw = normalizeBodyWrite(blockNodeAt(doc, start.path.slice(0, -1))?.kind, startRaw.slice(0, startOffset) + (sameBlock ? endTail : normalizeOwnRaw(endBlock, endTail)));
|
|
49
|
+
// After both normalizers and ahead of both consumers: in live the runs the truncation left
|
|
50
|
+
// unpaired, and the pair a join brings back to back, are bytes the reader never saw
|
|
51
|
+
// (live-mode.md § 4.5).
|
|
52
|
+
const joined = cleanJoinedRaw({
|
|
53
|
+
mergedRaw,
|
|
54
|
+
seam: startOffset,
|
|
55
|
+
start: { node: startBlock, offset: startOffset },
|
|
56
|
+
end: { node: endBlock, offset: endOffset },
|
|
57
|
+
linkRef,
|
|
58
|
+
ambientPrefix: containerAmbientPrefix(doc, start.path)
|
|
59
|
+
}, presentationMode);
|
|
60
|
+
if (sameBlock) {
|
|
61
|
+
// May be nested in a blockquote/list/listItem whose raw depends on this leaf.
|
|
62
|
+
const chain = ensureUnsharedPath(doc, start.path, sharing);
|
|
63
|
+
// start.path resolved above, so the chain reaches the leaf; the fallback still routes
|
|
64
|
+
// through the unshare seam, never a raw capture.
|
|
65
|
+
const owned = chain[chain.length - 1] ?? ensureUnsharedNode(startBlock, sharing);
|
|
66
|
+
// No reparse on this arm, so the survivor's own grammar answers here: a join can mint
|
|
67
|
+
// a line the kind reads as its terminator (a fence run in a code body).
|
|
68
|
+
writeOwnRaw(owned, joined.raw, grammar);
|
|
69
|
+
// Ahead of the rebuild, which reads the body's trivia: a selection covering a block's whole
|
|
70
|
+
// text leaves it blank, and a blank block is the separating line of the one below it.
|
|
71
|
+
const parent = nodeAt(doc, start.path.slice(0, -1));
|
|
72
|
+
if (parent)
|
|
73
|
+
settleSeparatorOnBlank(parent, start.path[start.path.length - 1], sharing);
|
|
74
|
+
rebuildUnsharedChain(doc, chain, sharing, null, grammar);
|
|
75
|
+
return {
|
|
76
|
+
newDoc: doc,
|
|
77
|
+
collapsedCaret: { path: start.path.slice(), offset: joined.seam }
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
// Start's slot, start's rule: the survivor answers to it BEFORE the reparse re-derives
|
|
81
|
+
// metadata, and inherits the slot's separator a fragment reparse would mint empty.
|
|
82
|
+
const replacement = reparseTruncatedEndpoint(startBlock, joined.raw);
|
|
83
|
+
// walkBetween includes ancestors of `end` whose subtrees extend past it, so filter to
|
|
84
|
+
// subtrees fully inside (start, end). Cascade-cleanup handles ancestors emptied afterwards.
|
|
85
|
+
const betweenPaths = walkBetween(doc, start.path, end.path).filter((p) => isPathSubtreeBetween(p, start.path, end.path));
|
|
86
|
+
const deletionPaths = [...betweenPaths, end.path];
|
|
87
|
+
const lcaPath = lowestCommonAncestor(start.path, end.path);
|
|
88
|
+
// Unshare every spliced spine before capturing target identities: a copy made after capture
|
|
89
|
+
// would fail the identity gate and skip the deletion.
|
|
90
|
+
ensureUnsharedPath(doc, start.path, sharing);
|
|
91
|
+
for (const path of deletionPaths) {
|
|
92
|
+
ensureUnsharedPath(doc, path.slice(0, -1), sharing);
|
|
93
|
+
}
|
|
94
|
+
deleteSubtreesIdentityGated(doc, deletionPaths, lcaPath, sharing);
|
|
95
|
+
installTruncatedEndpoint(doc, start.path, replacement, sharing);
|
|
96
|
+
rebuildUnsharedAncestry(doc, start.path, sharing, null, grammar);
|
|
97
|
+
for (const path of deletionPaths) {
|
|
98
|
+
rebuildUnsharedAncestry(doc, path, sharing, null, grammar);
|
|
99
|
+
}
|
|
100
|
+
// The re-parse may change kind, including leaf → CONTAINER (a list marker joined to its item
|
|
101
|
+
// text). Caret restore walks the block element at its path, and a container path drops focus
|
|
102
|
+
// on a non-editable wrapper, so descend to the leaf. The offset stays a byte coordinate (the
|
|
103
|
+
// paste and type-replace splice at it); the restore door's landable clamp owns the caret seat.
|
|
104
|
+
const leafPath = firstLeafAtOrAfter(doc, start.path);
|
|
105
|
+
const collapsedCaret = leafPath && leafPath.length > start.path.length
|
|
106
|
+
? { path: leafPath, offset: 0 }
|
|
107
|
+
: { path: start.path.slice(), offset: joined.seam };
|
|
108
|
+
return { newDoc: doc, collapsedCaret };
|
|
109
|
+
}
|
|
110
|
+
/** The container prefix the survivor renders under, so the join seam can read its candidate back
|
|
111
|
+
* through it (live-mode.md § 4.5). An ambient marker rides the container's FIRST child only, the
|
|
112
|
+
* way `BlockList` forwards it, and a list item is the one built-in container that paints one. */
|
|
113
|
+
function containerAmbientPrefix(doc, path) {
|
|
114
|
+
if (path.length < 2 || path[path.length - 1] !== 0)
|
|
115
|
+
return '';
|
|
116
|
+
const parent = blockNodeAt(doc, path.slice(0, -1));
|
|
117
|
+
const item = parent?.kind === 'listItem' ? metadataOf(parent, 'listItem') : null;
|
|
118
|
+
// A task item's ambient carries its checkbox too, which this derivation does not model: '' skips
|
|
119
|
+
// the read-back rather than checking it against the wrong prefix.
|
|
120
|
+
return item && !item.taskItem ? item.marker : '';
|
|
121
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AT announcement text for a cross-block selection. The overlay paints rects but suppresses
|
|
3
|
+
* native selection, so assistive tech sees nothing without this. Counts top-level blocks
|
|
4
|
+
* spanned; a selection nested inside one top-level block gets a generic phrase.
|
|
5
|
+
*/
|
|
6
|
+
import type { EditorSelection } from './primitives';
|
|
7
|
+
export declare function createSelectionDescription(selection: EditorSelection): string;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AT announcement text for a cross-block selection. The overlay paints rects but suppresses
|
|
3
|
+
* native selection, so assistive tech sees nothing without this. Counts top-level blocks
|
|
4
|
+
* spanned; a selection nested inside one top-level block gets a generic phrase.
|
|
5
|
+
*/
|
|
6
|
+
import { normalize } from './primitives';
|
|
7
|
+
import { pathsEqual } from './path-math';
|
|
8
|
+
import { SELECTED_ACROSS_BLOCKS, selectedBlocks } from '../a11y-strings';
|
|
9
|
+
export function createSelectionDescription(selection) {
|
|
10
|
+
const { start, end } = normalize(selection);
|
|
11
|
+
if (pathsEqual(start.path, end.path))
|
|
12
|
+
return ''; // single-block — native
|
|
13
|
+
// Endpoints inside one top-level block (two items of the same list) span no top-level
|
|
14
|
+
// blocks, and a count would read "1" and mislead.
|
|
15
|
+
if (start.path[0] === end.path[0])
|
|
16
|
+
return SELECTED_ACROSS_BLOCKS;
|
|
17
|
+
return selectedBlocks(end.path[0] - start.path[0] + 1);
|
|
18
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one road from a stored selection back onto the live editor: resolve against the current
|
|
3
|
+
* tree, reveal what the caret will be parked at, then land it. Both entry paths (undo/redo
|
|
4
|
+
* swap, the consumer's `setSelection`) funnel through here, so the resolve/clamp/reveal rules
|
|
5
|
+
* can't be carried by only one. A gap caret takes {@link restoreGapCaret}, the same road minus
|
|
6
|
+
* the endpoint pair.
|
|
7
|
+
*/
|
|
8
|
+
import type { DocumentView } from '../core/node-views';
|
|
9
|
+
import type { BlockElLookup } from '../editor-keys';
|
|
10
|
+
import type { EditorSelection, SelectionPoint } from './primitives';
|
|
11
|
+
import { type GapCaretPosition } from './gap-caret';
|
|
12
|
+
import type { SelectionState } from './selection-state.svelte';
|
|
13
|
+
/**
|
|
14
|
+
* `unresolvable` is decided before anything happens and is the only outcome that leaves the
|
|
15
|
+
* editor untouched. `unplaced` is everything short of both halves landing; the reveal and, on
|
|
16
|
+
* the custom route, the cross-block state write have already run.
|
|
17
|
+
*/
|
|
18
|
+
export type SelectionRestoreOutcome = 'applied' | 'unresolvable' | 'unplaced';
|
|
19
|
+
export interface SelectionRestoreDeps {
|
|
20
|
+
getDoc(): DocumentView;
|
|
21
|
+
selectionState: SelectionState;
|
|
22
|
+
getBlockElByPath: BlockElLookup;
|
|
23
|
+
/** Make the park target ready and report whether it is. Injected because WHICH path gets
|
|
24
|
+
* revealed is this module's rule, how strongly is the caller's. */
|
|
25
|
+
revealTarget(path: number[]): Promise<boolean>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Restore a snapshot. Never throws; an endpoint whose path no longer addresses a block is
|
|
29
|
+
* declined before the reveal, so a dead snapshot cannot move the viewport or disturb a live
|
|
30
|
+
* selection. What a decline does about the on-screen selection is the caller's policy.
|
|
31
|
+
*/
|
|
32
|
+
export declare function restoreSelection(selection: EditorSelection, deps: SelectionRestoreDeps): Promise<SelectionRestoreOutcome>;
|
|
33
|
+
/**
|
|
34
|
+
* Restore a gap caret. The scope check is `gapEligibleAt`'s, not a full eligibility gate:
|
|
35
|
+
* the tree being restored is the one the gap was minted against, so `gapEdges` cannot have
|
|
36
|
+
* changed under it, but the PATH can now name something no BlockList renders.
|
|
37
|
+
*/
|
|
38
|
+
export declare function restoreGapCaret(pos: GapCaretPosition, deps: SelectionRestoreDeps): Promise<SelectionRestoreOutcome>;
|
|
39
|
+
/**
|
|
40
|
+
* Clamp an endpoint into its block's addressable range, or null when its path no longer
|
|
41
|
+
* resolves to a block (the document root included). The NODE KIND picks the coordinate space,
|
|
42
|
+
* not the `cellCoordinate` flag: an intra-table endpoint is unflagged (see
|
|
43
|
+
* {@link SelectionPoint}) yet still carries a cell index. The char-space bound is `raw`, which
|
|
44
|
+
* on a marker-bearing kind runs past the content end; the DOM walk lands such an offset there.
|
|
45
|
+
*/
|
|
46
|
+
export declare function resolveSelectionPoint(doc: DocumentView, point: SelectionPoint): SelectionPoint | null;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one road from a stored selection back onto the live editor: resolve against the current
|
|
3
|
+
* tree, reveal what the caret will be parked at, then land it. Both entry paths (undo/redo
|
|
4
|
+
* swap, the consumer's `setSelection`) funnel through here, so the resolve/clamp/reveal rules
|
|
5
|
+
* can't be carried by only one. A gap caret takes {@link restoreGapCaret}, the same road minus
|
|
6
|
+
* the endpoint pair.
|
|
7
|
+
*/
|
|
8
|
+
import { isBlockNode, nodeAt } from '../tree-operations/node-ops';
|
|
9
|
+
import { applySelectionToDom } from './native-bridge';
|
|
10
|
+
import { placeGapCaret } from './caret-doors';
|
|
11
|
+
import { gapScopeChildren } from './gap-caret';
|
|
12
|
+
import { tableCellCount } from './table-endpoint-snap';
|
|
13
|
+
/**
|
|
14
|
+
* Restore a snapshot. Never throws; an endpoint whose path no longer addresses a block is
|
|
15
|
+
* declined before the reveal, so a dead snapshot cannot move the viewport or disturb a live
|
|
16
|
+
* selection. What a decline does about the on-screen selection is the caller's policy.
|
|
17
|
+
*/
|
|
18
|
+
export async function restoreSelection(selection, deps) {
|
|
19
|
+
const doc = deps.getDoc();
|
|
20
|
+
const anchor = resolveSelectionPoint(doc, selection.anchor);
|
|
21
|
+
const focus = resolveSelectionPoint(doc, selection.focus);
|
|
22
|
+
if (!anchor || !focus)
|
|
23
|
+
return 'unresolvable';
|
|
24
|
+
// Reveal exactly what the applier parks the caret at: a cell-coordinate focus parks in its
|
|
25
|
+
// deep [table, row, col] cell, and table rows window too.
|
|
26
|
+
const revealed = await deps.revealTarget(deps.selectionState.cellLandingFor(focus).path);
|
|
27
|
+
const placed = applySelectionToDom({ anchor, focus }, deps.selectionState, deps.getBlockElByPath);
|
|
28
|
+
return revealed && placed ? 'applied' : 'unplaced';
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Restore a gap caret. The scope check is `gapEligibleAt`'s, not a full eligibility gate:
|
|
32
|
+
* the tree being restored is the one the gap was minted against, so `gapEdges` cannot have
|
|
33
|
+
* changed under it, but the PATH can now name something no BlockList renders.
|
|
34
|
+
*/
|
|
35
|
+
export async function restoreGapCaret(pos, deps) {
|
|
36
|
+
const children = gapScopeChildren(deps.getDoc(), pos.parentPath);
|
|
37
|
+
if (!children)
|
|
38
|
+
return 'unresolvable';
|
|
39
|
+
const index = Math.min(Math.max(pos.index, 0), children.length);
|
|
40
|
+
// The boundary itself mounts nothing; what must be on screen is the block it sits
|
|
41
|
+
// against, so the gap's own BlockList is inside a live window when it renders.
|
|
42
|
+
const neighbour = index < children.length ? index : index - 1;
|
|
43
|
+
const revealed = await deps.revealTarget([...pos.parentPath, neighbour]);
|
|
44
|
+
placeGapCaret(deps.selectionState, { parentPath: pos.parentPath, index });
|
|
45
|
+
return revealed ? 'applied' : 'unplaced';
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Clamp an endpoint into its block's addressable range, or null when its path no longer
|
|
49
|
+
* resolves to a block (the document root included). The NODE KIND picks the coordinate space,
|
|
50
|
+
* not the `cellCoordinate` flag: an intra-table endpoint is unflagged (see
|
|
51
|
+
* {@link SelectionPoint}) yet still carries a cell index. The char-space bound is `raw`, which
|
|
52
|
+
* on a marker-bearing kind runs past the content end; the DOM walk lands such an offset there.
|
|
53
|
+
*/
|
|
54
|
+
export function resolveSelectionPoint(doc, point) {
|
|
55
|
+
const node = nodeAt(doc, point.path);
|
|
56
|
+
if (node === null || !isBlockNode(node))
|
|
57
|
+
return null;
|
|
58
|
+
// Through the extent helper, not a local product: this ceiling and `cellEndpointDeepPath`'s
|
|
59
|
+
// bounds check must be the same number, or a clamped index is rejected by that check.
|
|
60
|
+
const limit = node.kind === 'table' ? tableCellCount(node) - 1 : node.raw.length;
|
|
61
|
+
const offset = Math.min(Math.max(point.offset, 0), Math.max(limit, 0));
|
|
62
|
+
// Path copied so a restored endpoint never aliases the caller's snapshot.
|
|
63
|
+
return point.cellCoordinate
|
|
64
|
+
? { path: point.path.slice(), offset, cellCoordinate: true }
|
|
65
|
+
: { path: point.path.slice(), offset };
|
|
66
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reactive state for the editor-owned selection modes: a cross-block `anchor`/`focus` pair,
|
|
3
|
+
* and the collapsed `gapCaret` (`gap-caret.ts`). Both are null in single-block mode, where the
|
|
4
|
+
* native browser selection rules, and the two are mutually exclusive here rather than at any
|
|
5
|
+
* call site. Transitions: `docs/design/editor.md` § Cross-block selection.
|
|
6
|
+
*/
|
|
7
|
+
import type { DocumentView } from '../core/node-views';
|
|
8
|
+
import type { GapCaretPosition } from './gap-caret';
|
|
9
|
+
import type { SelectionEndpoint, SelectionPoint } from './primitives';
|
|
10
|
+
export interface SelectionStateOptions {
|
|
11
|
+
/**
|
|
12
|
+
* Fires after any mutation, or once at the end of a {@link SelectionState.batch} that
|
|
13
|
+
* contained one. No payload: subscribers read back via `editor.getSelection()`.
|
|
14
|
+
*/
|
|
15
|
+
onChange?: () => void;
|
|
16
|
+
/**
|
|
17
|
+
* Document accessor. Absent in harnesses that only exercise cross-block semantics;
|
|
18
|
+
* without it `isCustomRendered` cannot see intra-table rects and mirrors `isCrossBlock`.
|
|
19
|
+
*/
|
|
20
|
+
getDoc?: () => DocumentView;
|
|
21
|
+
}
|
|
22
|
+
export declare function createSelectionState(options?: SelectionStateOptions): SelectionState;
|
|
23
|
+
export interface SelectionState {
|
|
24
|
+
readonly anchor: SelectionPoint | null;
|
|
25
|
+
readonly focus: SelectionPoint | null;
|
|
26
|
+
readonly isCrossBlock: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* True when the overlay paints instead of the native browser highlight: every
|
|
29
|
+
* cross-block selection, plus same-path multi-offset selections inside tables.
|
|
30
|
+
*/
|
|
31
|
+
readonly isCustomRendered: boolean;
|
|
32
|
+
readonly start: SelectionPoint | null;
|
|
33
|
+
readonly end: SelectionPoint | null;
|
|
34
|
+
readonly selectAllCount: number;
|
|
35
|
+
/** The third mode: a collapsed caret in a between-blocks boundary (`gap-caret.ts`). */
|
|
36
|
+
readonly gapCaret: GapCaretPosition | null;
|
|
37
|
+
enterCrossBlock(anchor: SelectionEndpoint, focus: SelectionEndpoint): void;
|
|
38
|
+
extendFocus(point: SelectionEndpoint): void;
|
|
39
|
+
collapse(): void;
|
|
40
|
+
clear(): void;
|
|
41
|
+
setGapCaret(pos: GapCaretPosition): void;
|
|
42
|
+
clearGapCaret(): void;
|
|
43
|
+
incrementSelectAllCount(): void;
|
|
44
|
+
resetSelectAllCount(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Fire the channel for a selection this state cannot see. Subscribers read the editor
|
|
47
|
+
* back through `getSelection()`, which also answers for a NATIVE caret the restore road
|
|
48
|
+
* lands and for a document a `source` swap replaced under it — neither of which moves a
|
|
49
|
+
* field the mutators above guard on. Coalesces inside a {@link SelectionState.batch}.
|
|
50
|
+
*/
|
|
51
|
+
announceSelection(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Hold change notification until `mutate` returns, then fire once if anything mutated.
|
|
54
|
+
* Nests; flushes even when the body throws. An entry path that writes state AND lands a
|
|
55
|
+
* caret must wrap both: subscribers read the editor back on notify, so a notify between
|
|
56
|
+
* the two reports a caret the DOM half has not moved yet.
|
|
57
|
+
*/
|
|
58
|
+
batch(mutate: () => void): void;
|
|
59
|
+
/**
|
|
60
|
+
* Classify an anchor/focus pair for DOM restore WITHOUT mutating state, so no phantom
|
|
61
|
+
* cross-block onChange fires. Same-path prose is 'single-block' (native highlight); a
|
|
62
|
+
* cross-block or intra-table cell rect is 'custom' (overlay).
|
|
63
|
+
*/
|
|
64
|
+
restoreRoute(anchor: SelectionPoint, focus: SelectionPoint): 'collapsed' | 'single-block' | 'custom';
|
|
65
|
+
/**
|
|
66
|
+
* Where a caret lands for `point`: an endpoint inside a table addresses the table block by
|
|
67
|
+
* cell INDEX, so its landing is the cell's own deep `[table,row,col]` leaf at offset 0.
|
|
68
|
+
* Any other point lands as itself. Every reveal and every park goes through here, so no
|
|
69
|
+
* caller can seat a cell index as a char offset on the table wrapper.
|
|
70
|
+
*/
|
|
71
|
+
cellLandingFor(point: SelectionPoint): SelectionPoint;
|
|
72
|
+
}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reactive state for the editor-owned selection modes: a cross-block `anchor`/`focus` pair,
|
|
3
|
+
* and the collapsed `gapCaret` (`gap-caret.ts`). Both are null in single-block mode, where the
|
|
4
|
+
* native browser selection rules, and the two are mutually exclusive here rather than at any
|
|
5
|
+
* call site. Transitions: `docs/design/editor.md` § Cross-block selection.
|
|
6
|
+
*/
|
|
7
|
+
import { nodeAt } from '../tree-operations/node-ops';
|
|
8
|
+
import { isWholeBlockEndpoint, normalize } from './primitives';
|
|
9
|
+
import { cellEndpointDeepPath, normalizeTableEndpoint, snapCrossBlockTableEndpoints } from './table-endpoint-snap';
|
|
10
|
+
import { normalizeCharEndpoint } from './char-endpoint-snap';
|
|
11
|
+
import { pathsEqual } from './path-math';
|
|
12
|
+
import { assertInvariant } from '../assert';
|
|
13
|
+
import { checkCrossBlockEndpointCoordinates } from '../invariants/selection-endpoints';
|
|
14
|
+
export function createSelectionState(options) {
|
|
15
|
+
return new SelectionStateImpl(options);
|
|
16
|
+
}
|
|
17
|
+
// ── Implementation ──────────────────────────────────────────────────────────
|
|
18
|
+
class SelectionStateImpl {
|
|
19
|
+
#anchor = $state(null);
|
|
20
|
+
#focus = $state(null);
|
|
21
|
+
#gapCaret = $state(null);
|
|
22
|
+
#selectAllCount = $state(0);
|
|
23
|
+
#onChange;
|
|
24
|
+
#getDoc;
|
|
25
|
+
#batchDepth = 0;
|
|
26
|
+
#notifyPending = false;
|
|
27
|
+
constructor(options) {
|
|
28
|
+
this.#onChange = options?.onChange;
|
|
29
|
+
this.#getDoc = options?.getDoc;
|
|
30
|
+
}
|
|
31
|
+
batch(mutate) {
|
|
32
|
+
this.#batchDepth += 1;
|
|
33
|
+
try {
|
|
34
|
+
mutate();
|
|
35
|
+
}
|
|
36
|
+
finally {
|
|
37
|
+
this.#batchDepth -= 1;
|
|
38
|
+
if (this.#batchDepth === 0 && this.#notifyPending) {
|
|
39
|
+
this.#notifyPending = false;
|
|
40
|
+
this.#onChange?.();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
#notify() {
|
|
45
|
+
if (this.#batchDepth > 0) {
|
|
46
|
+
this.#notifyPending = true;
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
this.#onChange?.();
|
|
50
|
+
}
|
|
51
|
+
get anchor() {
|
|
52
|
+
return this.#anchor;
|
|
53
|
+
}
|
|
54
|
+
get focus() {
|
|
55
|
+
return this.#focus;
|
|
56
|
+
}
|
|
57
|
+
// Copied out, as `setGapCaret` copies in: a consumer that mutates what it reads back
|
|
58
|
+
// would otherwise write state without notifying anyone.
|
|
59
|
+
get gapCaret() {
|
|
60
|
+
const gap = this.#gapCaret;
|
|
61
|
+
return gap && { parentPath: gap.parentPath.slice(), index: gap.index };
|
|
62
|
+
}
|
|
63
|
+
get isCrossBlock() {
|
|
64
|
+
return this.#anchor !== null && this.#focus !== null;
|
|
65
|
+
}
|
|
66
|
+
get isCustomRendered() {
|
|
67
|
+
const getDoc = this.#getDoc;
|
|
68
|
+
if (!getDoc)
|
|
69
|
+
return this.isCrossBlock;
|
|
70
|
+
const anchor = this.#anchor;
|
|
71
|
+
const focus = this.#focus;
|
|
72
|
+
if (!anchor || !focus)
|
|
73
|
+
return false;
|
|
74
|
+
if (!pathsEqual(anchor.path, focus.path))
|
|
75
|
+
return true;
|
|
76
|
+
if (anchor.offset === focus.offset)
|
|
77
|
+
return false;
|
|
78
|
+
const node = nodeAt(getDoc(), anchor.path);
|
|
79
|
+
if (!node)
|
|
80
|
+
return false;
|
|
81
|
+
return node.kind === 'table';
|
|
82
|
+
}
|
|
83
|
+
get start() {
|
|
84
|
+
return this.#normalizedSnapped()?.start ?? null;
|
|
85
|
+
}
|
|
86
|
+
get end() {
|
|
87
|
+
return this.#normalizedSnapped()?.end ?? null;
|
|
88
|
+
}
|
|
89
|
+
// Cross-block table endpoints snap to whole rows so highlight, copy, and delete agree
|
|
90
|
+
// (table-endpoint-snap.ts). Harnesses without getDoc never carry a table endpoint.
|
|
91
|
+
#normalizedSnapped() {
|
|
92
|
+
if (!this.#anchor || !this.#focus)
|
|
93
|
+
return null;
|
|
94
|
+
const range = normalize({ anchor: this.#anchor, focus: this.#focus });
|
|
95
|
+
const getDoc = this.#getDoc;
|
|
96
|
+
if (!getDoc)
|
|
97
|
+
return range;
|
|
98
|
+
return snapCrossBlockTableEndpoints(getDoc(), range.start, range.end);
|
|
99
|
+
}
|
|
100
|
+
get selectAllCount() {
|
|
101
|
+
return this.#selectAllCount;
|
|
102
|
+
}
|
|
103
|
+
enterCrossBlock(anchor, focus) {
|
|
104
|
+
this.#gapCaret = null;
|
|
105
|
+
const a = this.#normalizePoint(anchor, focus.path);
|
|
106
|
+
const f = this.#normalizePoint(focus, anchor.path);
|
|
107
|
+
// A same-path prose pair is a single-block range the browser owns; storing it mints an
|
|
108
|
+
// INVISIBLE cross-block state. Refuse it here so no entry path can. Intra-table rects
|
|
109
|
+
// share the table path but flag a cell coordinate, and the same-offset keyboard seed is
|
|
110
|
+
// kept so its immediate `extendFocus` has an anchor.
|
|
111
|
+
if (this.#isSamePathProseRange(a, f)) {
|
|
112
|
+
this.#anchor = null;
|
|
113
|
+
this.#focus = null;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
this.#assertEndpointCoordinates(a, f);
|
|
117
|
+
this.#anchor = a;
|
|
118
|
+
this.#focus = f;
|
|
119
|
+
}
|
|
120
|
+
this.#notify();
|
|
121
|
+
}
|
|
122
|
+
extendFocus(point) {
|
|
123
|
+
if (!this.#anchor) {
|
|
124
|
+
throw new Error('SelectionState.extendFocus called without an anchor');
|
|
125
|
+
}
|
|
126
|
+
this.#gapCaret = null;
|
|
127
|
+
const f = this.#normalizePoint(point, this.#anchor.path);
|
|
128
|
+
// A focus back on the anchor's prose leaf contracts to a single-block range. No
|
|
129
|
+
// `offset !== offset` guard, unlike #isSamePathProseRange: extendFocus never seeds, so
|
|
130
|
+
// landing exactly on the anchor offset is a collapse that must not be stored either.
|
|
131
|
+
if (pathsEqual(this.#anchor.path, f.path) &&
|
|
132
|
+
!this.#anchor.cellCoordinate &&
|
|
133
|
+
!f.cellCoordinate) {
|
|
134
|
+
this.#anchor = null;
|
|
135
|
+
this.#focus = null;
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
this.#assertEndpointCoordinates(this.#anchor, f);
|
|
139
|
+
this.#focus = f;
|
|
140
|
+
}
|
|
141
|
+
this.#notify();
|
|
142
|
+
}
|
|
143
|
+
// G1.29 at the storing seam, the belt behind #normalizePoint: both entries carry it because
|
|
144
|
+
// both store an endpoint pair.
|
|
145
|
+
#assertEndpointCoordinates(anchor, focus) {
|
|
146
|
+
const getDoc = this.#getDoc;
|
|
147
|
+
if (!getDoc)
|
|
148
|
+
return;
|
|
149
|
+
assertInvariant('cross-block-endpoint-coordinates', () => checkCrossBlockEndpointCoordinates(getDoc(), anchor, focus));
|
|
150
|
+
}
|
|
151
|
+
// Same prose leaf, distinct offsets: the shape that must never enter cross-block state.
|
|
152
|
+
// Equal-offset pairs are excluded so the keyboard entry seed survives to its extend.
|
|
153
|
+
#isSamePathProseRange(a, f) {
|
|
154
|
+
return (pathsEqual(a.path, f.path) && !a.cellCoordinate && !f.cellCoordinate && a.offset !== f.offset);
|
|
155
|
+
}
|
|
156
|
+
// The funnel every entry path (keyboard, shift-click, drag, select-all, undo restore) goes
|
|
157
|
+
// through: a table endpoint can never be stored as a deep cell path with a char offset, and a
|
|
158
|
+
// char offset can never be stored outside the space its own block addresses (both funnels'
|
|
159
|
+
// headers). Never normalize at a call site instead. Idempotent; without a doc nothing can be
|
|
160
|
+
// measured, so points pass raw.
|
|
161
|
+
#normalizePoint(point, otherPath) {
|
|
162
|
+
const getDoc = this.#getDoc;
|
|
163
|
+
if (!getDoc) {
|
|
164
|
+
return isWholeBlockEndpoint(point) ? { path: point.path.slice(), offset: 0 } : point;
|
|
165
|
+
}
|
|
166
|
+
const doc = getDoc();
|
|
167
|
+
if (isWholeBlockEndpoint(point))
|
|
168
|
+
return normalizeCharEndpoint(doc, point, otherPath);
|
|
169
|
+
if (point.cellCoordinate)
|
|
170
|
+
return point;
|
|
171
|
+
const snapped = normalizeTableEndpoint(doc, point.path, point.offset);
|
|
172
|
+
return snapped.cellCoordinate ? snapped : normalizeCharEndpoint(doc, snapped, otherPath);
|
|
173
|
+
}
|
|
174
|
+
collapse() {
|
|
175
|
+
if (!this.#hasCaretClaim())
|
|
176
|
+
return;
|
|
177
|
+
this.#anchor = null;
|
|
178
|
+
this.#focus = null;
|
|
179
|
+
this.#gapCaret = null;
|
|
180
|
+
this.#notify();
|
|
181
|
+
}
|
|
182
|
+
clear() {
|
|
183
|
+
if (!this.#hasCaretClaim() && this.#selectAllCount === 0)
|
|
184
|
+
return;
|
|
185
|
+
this.#anchor = null;
|
|
186
|
+
this.#focus = null;
|
|
187
|
+
this.#gapCaret = null;
|
|
188
|
+
this.#selectAllCount = 0;
|
|
189
|
+
this.#notify();
|
|
190
|
+
}
|
|
191
|
+
// Every field the two clears zero: a guard reading fewer of them would swallow the
|
|
192
|
+
// notification for the ones it does not see.
|
|
193
|
+
#hasCaretClaim() {
|
|
194
|
+
return this.#anchor !== null || this.#focus !== null || this.#gapCaret !== null;
|
|
195
|
+
}
|
|
196
|
+
// The mutual exclusion's other half: a gap and a range are never live together, and the
|
|
197
|
+
// copy is what keeps a caller's own position object from writing through.
|
|
198
|
+
setGapCaret(pos) {
|
|
199
|
+
this.#anchor = null;
|
|
200
|
+
this.#focus = null;
|
|
201
|
+
this.#gapCaret = { parentPath: pos.parentPath.slice(), index: pos.index };
|
|
202
|
+
this.#notify();
|
|
203
|
+
}
|
|
204
|
+
clearGapCaret() {
|
|
205
|
+
if (this.#gapCaret === null)
|
|
206
|
+
return;
|
|
207
|
+
this.#gapCaret = null;
|
|
208
|
+
this.#notify();
|
|
209
|
+
}
|
|
210
|
+
incrementSelectAllCount() {
|
|
211
|
+
this.#selectAllCount += 1;
|
|
212
|
+
this.#notify();
|
|
213
|
+
}
|
|
214
|
+
restoreRoute(anchor, focus) {
|
|
215
|
+
if (!pathsEqual(anchor.path, focus.path))
|
|
216
|
+
return 'custom';
|
|
217
|
+
if (anchor.offset === focus.offset)
|
|
218
|
+
return 'collapsed';
|
|
219
|
+
// Same path, distinct offsets: a table cell rect (flagged endpoint, or a table node
|
|
220
|
+
// under the shared path) paints via the overlay; prose is a native range.
|
|
221
|
+
if (anchor.cellCoordinate || focus.cellCoordinate)
|
|
222
|
+
return 'custom';
|
|
223
|
+
const getDoc = this.#getDoc;
|
|
224
|
+
if (!getDoc)
|
|
225
|
+
return 'single-block';
|
|
226
|
+
const node = nodeAt(getDoc(), anchor.path);
|
|
227
|
+
return node?.kind === 'table' ? 'custom' : 'single-block';
|
|
228
|
+
}
|
|
229
|
+
cellLandingFor(point) {
|
|
230
|
+
const getDoc = this.#getDoc;
|
|
231
|
+
if (!getDoc)
|
|
232
|
+
return point;
|
|
233
|
+
// Resolution is the door's, on the node kind: a context-established intra-table endpoint
|
|
234
|
+
// is unflagged and still a cell index, and a non-table path answers null.
|
|
235
|
+
const deepPath = cellEndpointDeepPath(getDoc(), point);
|
|
236
|
+
return deepPath ? { path: deepPath, offset: 0 } : point;
|
|
237
|
+
}
|
|
238
|
+
resetSelectAllCount() {
|
|
239
|
+
if (this.#selectAllCount === 0)
|
|
240
|
+
return;
|
|
241
|
+
this.#selectAllCount = 0;
|
|
242
|
+
this.#notify();
|
|
243
|
+
}
|
|
244
|
+
announceSelection() {
|
|
245
|
+
this.#notify();
|
|
246
|
+
}
|
|
247
|
+
}
|