@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,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pointer drag lifecycle for cross-block selection. Runs on a shared
|
|
3
|
+
* `createPointerDragSession`, whose document-level listeners deliver events even after the
|
|
4
|
+
* pointer leaves the originating block.
|
|
5
|
+
*/
|
|
6
|
+
import { applyCollapsedCaret } from './native-bridge';
|
|
7
|
+
import { comparePaths } from './path-math';
|
|
8
|
+
import { createPointerDragSession } from './pointer-session';
|
|
9
|
+
import { blockNearPoint } from './nearest-block';
|
|
10
|
+
// ── Public entry ───────────────────────────────────────────────────────────
|
|
11
|
+
/** Document-level pointer listeners for a cross-block drag started at `down`, plus a disposer. */
|
|
12
|
+
export function installDragListener(ctx, anchorPoint, down) {
|
|
13
|
+
function processMove(clientX, clientY) {
|
|
14
|
+
// The nearest block, not the one under the pointer: moves coalesce to one per frame, so a
|
|
15
|
+
// burst ending in the margin would otherwise discard every on-block sample in it, and an
|
|
16
|
+
// autoscrolling drag sends nothing but off-block points.
|
|
17
|
+
const near = blockNearPoint(ctx.editorRoot, clientX, clientY);
|
|
18
|
+
if (!near)
|
|
19
|
+
return;
|
|
20
|
+
if (comparePaths(near.path, anchorPoint.path) === 0) {
|
|
21
|
+
if (ctx.selection.isCrossBlock) {
|
|
22
|
+
// Pointer returned to the anchor block: collapse so the overlay stops painting a
|
|
23
|
+
// stale remote range. The browser's drag has been extending the native selection
|
|
24
|
+
// underneath all along, so handing back gives the right single-block highlight.
|
|
25
|
+
ctx.selection.collapse();
|
|
26
|
+
}
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const focusPoint = near.endpointHere();
|
|
30
|
+
if (!focusPoint)
|
|
31
|
+
return;
|
|
32
|
+
if (!ctx.selection.isCrossBlock) {
|
|
33
|
+
ctx.selection.enterCrossBlock(anchorPoint, focusPoint);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
ctx.selection.extendFocus(focusPoint);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Pointer may land on a scrollable element directly (the table's `.table-block` edge), so
|
|
40
|
+
// search from `target` itself, not its parent.
|
|
41
|
+
function scrollableSelfOrAncestor(target) {
|
|
42
|
+
let cur = target;
|
|
43
|
+
while (cur && cur !== ctx.editorRoot) {
|
|
44
|
+
const cs = getComputedStyle(cur);
|
|
45
|
+
const ox = cs.overflowX;
|
|
46
|
+
const oy = cs.overflowY;
|
|
47
|
+
if (ox === 'auto' || ox === 'scroll' || oy === 'auto' || oy === 'scroll')
|
|
48
|
+
return cur;
|
|
49
|
+
cur = cur.parentElement;
|
|
50
|
+
}
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
return createPointerDragSession(down, {
|
|
54
|
+
onMove: (p) => processMove(p.clientX, p.clientY),
|
|
55
|
+
onEnd: () => {
|
|
56
|
+
if (ctx.selection.isCrossBlock)
|
|
57
|
+
parkCaretInFocusBlock(ctx);
|
|
58
|
+
},
|
|
59
|
+
autoScroll: {
|
|
60
|
+
getTargets: (clientX, clientY) => {
|
|
61
|
+
const targets = [ctx.scrollContainer];
|
|
62
|
+
const t = document.elementFromPoint(clientX, clientY);
|
|
63
|
+
if (t instanceof HTMLElement) {
|
|
64
|
+
const inner = scrollableSelfOrAncestor(t);
|
|
65
|
+
if (inner && inner !== ctx.scrollContainer)
|
|
66
|
+
targets.push(inner);
|
|
67
|
+
}
|
|
68
|
+
return targets;
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
lifetimeSignal: ctx.lifetimeSignal
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Plant a collapsed native caret in the focus block as a paste/key-dispatch anchor; without it
|
|
76
|
+
* Chromium routes paste events to <body>. The highlight still comes from SelectionOverlay.
|
|
77
|
+
*/
|
|
78
|
+
function parkCaretInFocusBlock(ctx) {
|
|
79
|
+
const focus = ctx.selection.focus;
|
|
80
|
+
if (!focus)
|
|
81
|
+
return;
|
|
82
|
+
// A drag ending inside a table leaves a focus addressing the table block by cell index; the
|
|
83
|
+
// landing is the cell that actually holds a caret.
|
|
84
|
+
const landing = ctx.selection.cellLandingFor(focus);
|
|
85
|
+
const blockEl = ctx.getBlockElByPath(landing.path);
|
|
86
|
+
if (!blockEl)
|
|
87
|
+
return;
|
|
88
|
+
applyCollapsedCaret(blockEl, landing);
|
|
89
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a caret can live BETWEEN two sibling blocks: the boundaries no block's own editing
|
|
3
|
+
* surface can reach, read off the kinds' `gapEdges` declarations. Eligibility is pure — doc
|
|
4
|
+
* in, boolean out; `tryGapStop` is the one seam that turns it into an arrival.
|
|
5
|
+
* The gap is deliberately not a `SelectionPoint`: it is never a cross-block endpoint.
|
|
6
|
+
*/
|
|
7
|
+
import type { DocumentView, NodeView } from '../core/node-views';
|
|
8
|
+
import { type PresentationMode } from '../presentation-mode';
|
|
9
|
+
import type { SelectionState } from './selection-state.svelte';
|
|
10
|
+
/** The boundary before child `index` of the container at `parentPath`; root is `[]`. */
|
|
11
|
+
export interface GapCaretPosition {
|
|
12
|
+
parentPath: number[];
|
|
13
|
+
index: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A boundary is eligible when every block facing it declares that edge — an unregistered or
|
|
17
|
+
* undeclared kind refuses on its side. The root's trailing boundary is excluded: the
|
|
18
|
+
* move-past-end append (`editor-actions/focus/focus.ts`) already owns it.
|
|
19
|
+
*/
|
|
20
|
+
export declare function gapEligibleAt(doc: DocumentView, parentPath: number[], index: number): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* The same rule for a scope that already holds its own children — the renderer, which has them
|
|
23
|
+
* in hand and no path to resolve. `ownsTrailingBoundary` is false for the root, whose trailing
|
|
24
|
+
* boundary belongs to the move-past-end append.
|
|
25
|
+
*/
|
|
26
|
+
export declare function gapEligibleAmong(children: readonly NodeView[], index: number, ownsTrailingBoundary: boolean): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* The children a gap could live between at `parentPath`, or null when that path names no
|
|
29
|
+
* scope a BlockList renders. Shared with the undo restore road, so a drifted path cannot
|
|
30
|
+
* park a caret somewhere nothing would paint it.
|
|
31
|
+
*/
|
|
32
|
+
export declare function gapScopeChildren(doc: DocumentView, parentPath: number[]): readonly NodeView[] | null;
|
|
33
|
+
/** What an arrival needs beyond the boundary itself. Getters, so a bound stop reads live. */
|
|
34
|
+
export interface GapStopScope {
|
|
35
|
+
getDoc: () => DocumentView;
|
|
36
|
+
selection: SelectionState;
|
|
37
|
+
getPresentationMode?: () => PresentationMode;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Whether an arriving gesture may park here. Reading mode never may: it has no caret at
|
|
41
|
+
* all, so the gesture keeps its old landing. A caller that must act BETWEEN the decision
|
|
42
|
+
* and the landing asks this, then goes through the door itself.
|
|
43
|
+
*/
|
|
44
|
+
export declare function canGapStop(scope: GapStopScope, parentPath: number[], boundaryIndex: number): boolean;
|
|
45
|
+
/** Park the caret at an eligible `boundaryIndex`, reporting whether it did — so a
|
|
46
|
+
* traversal can stop instead of entering its target. */
|
|
47
|
+
export declare function tryGapStop(scope: GapStopScope, parentPath: number[], boundaryIndex: number): boolean;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a caret can live BETWEEN two sibling blocks: the boundaries no block's own editing
|
|
3
|
+
* surface can reach, read off the kinds' `gapEdges` declarations. Eligibility is pure — doc
|
|
4
|
+
* in, boolean out; `tryGapStop` is the one seam that turns it into an arrival.
|
|
5
|
+
* The gap is deliberately not a `SelectionPoint`: it is never a cross-block endpoint.
|
|
6
|
+
*/
|
|
7
|
+
import { isBlockNode, nodeAt } from '../tree-operations/node-ops';
|
|
8
|
+
import { tryGetBlockKindDescriptor } from '../schema/block-kind-descriptor';
|
|
9
|
+
import { isReadingMode } from '../presentation-mode';
|
|
10
|
+
import { placeGapCaret } from './caret-doors';
|
|
11
|
+
/**
|
|
12
|
+
* A boundary is eligible when every block facing it declares that edge — an unregistered or
|
|
13
|
+
* undeclared kind refuses on its side. The root's trailing boundary is excluded: the
|
|
14
|
+
* move-past-end append (`editor-actions/focus/focus.ts`) already owns it.
|
|
15
|
+
*/
|
|
16
|
+
export function gapEligibleAt(doc, parentPath, index) {
|
|
17
|
+
const children = gapScopeChildren(doc, parentPath);
|
|
18
|
+
if (!children)
|
|
19
|
+
return false;
|
|
20
|
+
return gapEligibleAmong(children, index, parentPath.length > 0);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The same rule for a scope that already holds its own children — the renderer, which has them
|
|
24
|
+
* in hand and no path to resolve. `ownsTrailingBoundary` is false for the root, whose trailing
|
|
25
|
+
* boundary belongs to the move-past-end append.
|
|
26
|
+
*/
|
|
27
|
+
export function gapEligibleAmong(children, index, ownsTrailingBoundary) {
|
|
28
|
+
if (index < 0 || index > children.length)
|
|
29
|
+
return false;
|
|
30
|
+
if (index === 0)
|
|
31
|
+
return declaresEdge(children[0], 'before');
|
|
32
|
+
if (index === children.length) {
|
|
33
|
+
return ownsTrailingBoundary && declaresEdge(children[index - 1], 'after');
|
|
34
|
+
}
|
|
35
|
+
return declaresEdge(children[index - 1], 'after') && declaresEdge(children[index], 'before');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The children a gap could live between at `parentPath`, or null when that path names no
|
|
39
|
+
* scope a BlockList renders. Shared with the undo restore road, so a drifted path cannot
|
|
40
|
+
* park a caret somewhere nothing would paint it.
|
|
41
|
+
*/
|
|
42
|
+
export function gapScopeChildren(doc, parentPath) {
|
|
43
|
+
const parent = nodeAt(doc, parentPath);
|
|
44
|
+
if (!parent)
|
|
45
|
+
return null;
|
|
46
|
+
if (isBlockNode(parent) && !tryGetBlockKindDescriptor(parent.kind)?.isContainer)
|
|
47
|
+
return null;
|
|
48
|
+
const children = parent.children;
|
|
49
|
+
return children && children.length > 0 ? children : null;
|
|
50
|
+
}
|
|
51
|
+
function declaresEdge(node, edge) {
|
|
52
|
+
const edges = tryGetBlockKindDescriptor(node.kind)?.gapEdges;
|
|
53
|
+
return edges === edge || edges === 'both';
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Whether an arriving gesture may park here. Reading mode never may: it has no caret at
|
|
57
|
+
* all, so the gesture keeps its old landing. A caller that must act BETWEEN the decision
|
|
58
|
+
* and the landing asks this, then goes through the door itself.
|
|
59
|
+
*/
|
|
60
|
+
export function canGapStop(scope, parentPath, boundaryIndex) {
|
|
61
|
+
if (isReadingMode(scope.getPresentationMode))
|
|
62
|
+
return false;
|
|
63
|
+
return gapEligibleAt(scope.getDoc(), parentPath, boundaryIndex);
|
|
64
|
+
}
|
|
65
|
+
/** Park the caret at an eligible `boundaryIndex`, reporting whether it did — so a
|
|
66
|
+
* traversal can stop instead of entering its target. */
|
|
67
|
+
export function tryGapStop(scope, parentPath, boundaryIndex) {
|
|
68
|
+
if (!canGapStop(scope, parentPath, boundaryIndex))
|
|
69
|
+
return false;
|
|
70
|
+
placeGapCaret(scope.selection, { parentPath, index: boundaryIndex });
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** Cross-block keyboard extension and collapse. Pure helpers over SelectionState. */
|
|
2
|
+
import type { SelectionState } from './selection-state.svelte';
|
|
3
|
+
import type { Document } from '../core/nodes';
|
|
4
|
+
import type { BlockComponent } from '../block-component';
|
|
5
|
+
import type { BlockElLookup } from '../editor-keys';
|
|
6
|
+
/**
|
|
7
|
+
* Collapse to start/end, restore a native caret, exit cross-block mode. `revealPath` mounts an
|
|
8
|
+
* off-window target first. A cell-coordinate target's offset is a cell index, not a char
|
|
9
|
+
* offset, so the caret lands at the cell's edge via the cell ref.
|
|
10
|
+
*/
|
|
11
|
+
export declare function collapseCrossBlock(selection: SelectionState, to: 'start' | 'end', doc: Document, getBlockElByPath: (path: number[]) => HTMLElement | null, revealPath: (path: number[]) => Promise<BlockComponent | null>): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Scroll the focus block into view when mounted. Does not itself reveal a windowed-out block:
|
|
14
|
+
* the doc-edge extend reveals its endpoint via `revealActiveEndpoint` first, and a single-step
|
|
15
|
+
* Shift+Arrow extend lands adjacent to the mounted window.
|
|
16
|
+
*/
|
|
17
|
+
export declare function scrollFocusBlockIntoView(selection: SelectionState, getBlockElByPath: (path: number[]) => HTMLElement | null): void;
|
|
18
|
+
/**
|
|
19
|
+
* Extend focus to the next leaf in document order (Shift+ArrowDown / Shift+ArrowRight leaving
|
|
20
|
+
* the block), entering cross-block mode if needed. Returns true if focus moved. `axis` =
|
|
21
|
+
* 'vertical' skips vertically-transparent leaves, mirroring single-block focus dispatch;
|
|
22
|
+
* 'horizontal' lands unconditionally so an image-only paragraph is selectable in one step.
|
|
23
|
+
*/
|
|
24
|
+
export declare function extendFocusToNextBlock(selection: SelectionState, doc: Document, currentBlockEl: HTMLElement, currentBlockPath: number[], axis?: 'horizontal' | 'vertical', getBlockElByPath?: BlockElLookup): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Extend focus to the previous leaf (Shift+ArrowUp / Shift+ArrowLeft). `side` = 'end' for
|
|
27
|
+
* ArrowLeft (cross the boundary by one char), 'start' for ArrowUp (select the whole previous
|
|
28
|
+
* line, matching native). The vertical path skips vertically-transparent leaves.
|
|
29
|
+
*/
|
|
30
|
+
export declare function extendFocusToPreviousBlock(selection: SelectionState, doc: Document, currentBlockEl: HTMLElement, currentBlockPath: number[], side?: 'start' | 'end', getBlockElByPath?: BlockElLookup): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Extend focus to the document edge (Mod+Shift+Home / Mod+Shift+End). A transparent edge
|
|
33
|
+
* leaf is bypassed for the nearest text-bearing one, matching the cross-block extension path.
|
|
34
|
+
*/
|
|
35
|
+
export declare function extendFocusToDocEdge(selection: SelectionState, doc: Document, currentBlockEl: HTMLElement, currentBlockPath: number[], to: 'start' | 'end', getBlockElByPath?: BlockElLookup): boolean;
|
|
36
|
+
/** Select the entire document as a cross-block range (second Ctrl+A press). */
|
|
37
|
+
export declare function selectWholeDocument(selection: SelectionState, doc: Document, getBlockElByPath?: (path: number[]) => HTMLElement | null): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Shift+click on a block: extend the cross-block selection, or enter cross-block mode using the
|
|
40
|
+
* previously focused block's caret as the anchor. False when no anchor could be recovered, or
|
|
41
|
+
* the click stayed within the same block (native shift-click handles that).
|
|
42
|
+
*/
|
|
43
|
+
export declare function handleShiftClick(selection: SelectionState, clickedBlockEl: HTMLElement, clickedBlockPath: number[], clickedX: number, clickedY: number, previouslyFocusedBlockEl: HTMLElement | null, previouslyFocusedBlockPath: number[] | null): boolean;
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/** Cross-block keyboard extension and collapse. Pure helpers over SelectionState. */
|
|
2
|
+
import { isVerticallyTransparentNode } from '../core/inline/transparency';
|
|
3
|
+
import { readNativeCaretInBlock, applyCollapsedCaret, focusCollapsedCaret, applySingleBlockRange, clearNativeSelection } from './native-bridge';
|
|
4
|
+
import { offsetFromViewportPoint } from '../cursor/point-offset';
|
|
5
|
+
import { nextPath, previousPath, firstPath, lastPath, firstLeafAtOrAfter, lastLeafAtOrBefore, findCellPathForElement } from './path-lookup';
|
|
6
|
+
import { nodeAt } from '../tree-operations/node-ops';
|
|
7
|
+
import { comparePaths, isStrictAncestorOf, pathsEqual } from './path-math';
|
|
8
|
+
import { displayLength } from '../core/lines';
|
|
9
|
+
// ── Enter / Collapse / Scroll ──────────────────────────────────────────────
|
|
10
|
+
/**
|
|
11
|
+
* Enter cross-block mode on a keyboard extension (Shift+Arrow leaving a block). Captures the
|
|
12
|
+
* native caret as both anchor and focus; the caller immediately extendFocus()es to the target.
|
|
13
|
+
*/
|
|
14
|
+
function enterCrossBlockFromKeyboard(selection, currentBlockEl, currentBlockPath) {
|
|
15
|
+
const anchorPoint = readNativeCaretInBlock(currentBlockEl, currentBlockPath);
|
|
16
|
+
if (!anchorPoint)
|
|
17
|
+
return false;
|
|
18
|
+
selection.enterCrossBlock(anchorPoint, {
|
|
19
|
+
path: anchorPoint.path.slice(),
|
|
20
|
+
offset: anchorPoint.offset
|
|
21
|
+
});
|
|
22
|
+
// Collapse (not clear) so the focus block retains a caret, or Chromium retargets clipboard
|
|
23
|
+
// events to <body> (same rule as `parkCaretInFocusBlock`). Best-effort: an endpoint hosting
|
|
24
|
+
// no text position gets no caret, which is why components/editor-root-clipboard.ts exists.
|
|
25
|
+
applyCollapsedCaret(currentBlockEl, anchorPoint);
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Collapse to start/end, restore a native caret, exit cross-block mode. `revealPath` mounts an
|
|
30
|
+
* off-window target first. A cell-coordinate target's offset is a cell index, not a char
|
|
31
|
+
* offset, so the caret lands at the cell's edge via the cell ref.
|
|
32
|
+
*/
|
|
33
|
+
export async function collapseCrossBlock(selection, to, doc, getBlockElByPath, revealPath) {
|
|
34
|
+
const target = to === 'start' ? selection.start : selection.end;
|
|
35
|
+
if (!target)
|
|
36
|
+
return;
|
|
37
|
+
selection.collapse();
|
|
38
|
+
clearNativeSelection();
|
|
39
|
+
// The cell landing seats at the cell's own edge; from there it takes the SAME seat as a
|
|
40
|
+
// prose leaf. Seating through the cell's own focus door instead would skip the collapse
|
|
41
|
+
// ceremony, and the byte typed at the arrival would join the construct the cell opens with
|
|
42
|
+
// rather than land in front of it. Only the END side overrides the landing's own offset.
|
|
43
|
+
const landing = selection.cellLandingFor(target);
|
|
44
|
+
const point = to === 'end' && !pathsEqual(landing.path, target.path)
|
|
45
|
+
? { path: landing.path, offset: leafOffsetEnd(doc, landing.path) }
|
|
46
|
+
: landing;
|
|
47
|
+
// The landable clamp (a caret may not sit past a hidden run) lives in applyCollapsedCaret.
|
|
48
|
+
await revealPath(landing.path);
|
|
49
|
+
focusCollapsedCaret(getBlockElByPath, point);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Scroll the focus block into view when mounted. Does not itself reveal a windowed-out block:
|
|
53
|
+
* the doc-edge extend reveals its endpoint via `revealActiveEndpoint` first, and a single-step
|
|
54
|
+
* Shift+Arrow extend lands adjacent to the mounted window.
|
|
55
|
+
*/
|
|
56
|
+
export function scrollFocusBlockIntoView(selection, getBlockElByPath) {
|
|
57
|
+
if (!selection.focus)
|
|
58
|
+
return;
|
|
59
|
+
const blockEl = getBlockElByPath(selection.focus.path);
|
|
60
|
+
blockEl?.scrollIntoView({ block: 'nearest', inline: 'nearest' });
|
|
61
|
+
}
|
|
62
|
+
// ── Keyboard Extension ─────────────────────────────────────────────────────
|
|
63
|
+
/**
|
|
64
|
+
* Move the cross-block focus to `target`, or restore the resulting single-block range natively
|
|
65
|
+
* when the seam collapses (focus contracted back onto the anchor's prose leaf). Keyboard entry
|
|
66
|
+
* parks only a collapsed caret, so the range must be re-established here to stay visible.
|
|
67
|
+
*/
|
|
68
|
+
function extendFocusOrRestore(selection, target, offset, getBlockElByPath) {
|
|
69
|
+
const anchor = selection.anchor;
|
|
70
|
+
selection.extendFocus({ path: target, offset });
|
|
71
|
+
if (!anchor || selection.isCrossBlock || !getBlockElByPath)
|
|
72
|
+
return;
|
|
73
|
+
const blockEl = getBlockElByPath(target);
|
|
74
|
+
if (!blockEl)
|
|
75
|
+
return;
|
|
76
|
+
blockEl.focus();
|
|
77
|
+
applySingleBlockRange(blockEl, Math.min(anchor.offset, offset), Math.max(anchor.offset, offset));
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Extend focus to the next leaf in document order (Shift+ArrowDown / Shift+ArrowRight leaving
|
|
81
|
+
* the block), entering cross-block mode if needed. Returns true if focus moved. `axis` =
|
|
82
|
+
* 'vertical' skips vertically-transparent leaves, mirroring single-block focus dispatch;
|
|
83
|
+
* 'horizontal' lands unconditionally so an image-only paragraph is selectable in one step.
|
|
84
|
+
*/
|
|
85
|
+
export function extendFocusToNextBlock(selection, doc, currentBlockEl, currentBlockPath, axis = 'horizontal', getBlockElByPath) {
|
|
86
|
+
const leafTarget = axis === 'vertical'
|
|
87
|
+
? firstNonTransparentLeafAfter(doc, currentBlockPath)
|
|
88
|
+
: firstLeafAfter(doc, currentBlockPath);
|
|
89
|
+
if (!leafTarget)
|
|
90
|
+
return false;
|
|
91
|
+
if (!selection.isCrossBlock) {
|
|
92
|
+
if (!enterCrossBlockFromKeyboard(selection, currentBlockEl, currentBlockPath))
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
extendFocusOrRestore(selection, leafTarget, 0, getBlockElByPath);
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Extend focus to the previous leaf (Shift+ArrowUp / Shift+ArrowLeft). `side` = 'end' for
|
|
100
|
+
* ArrowLeft (cross the boundary by one char), 'start' for ArrowUp (select the whole previous
|
|
101
|
+
* line, matching native). The vertical path skips vertically-transparent leaves.
|
|
102
|
+
*/
|
|
103
|
+
export function extendFocusToPreviousBlock(selection, doc, currentBlockEl, currentBlockPath, side = 'end', getBlockElByPath) {
|
|
104
|
+
const leafTarget = side === 'start'
|
|
105
|
+
? lastNonTransparentLeafBefore(doc, currentBlockPath)
|
|
106
|
+
: lastLeafBefore(doc, currentBlockPath);
|
|
107
|
+
if (!leafTarget)
|
|
108
|
+
return false;
|
|
109
|
+
if (!selection.isCrossBlock) {
|
|
110
|
+
if (!enterCrossBlockFromKeyboard(selection, currentBlockEl, currentBlockPath))
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
const offset = side === 'start' ? 0 : leafOffsetEnd(doc, leafTarget);
|
|
114
|
+
extendFocusOrRestore(selection, leafTarget, offset, getBlockElByPath);
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Extend focus to the document edge (Mod+Shift+Home / Mod+Shift+End). A transparent edge
|
|
119
|
+
* leaf is bypassed for the nearest text-bearing one, matching the cross-block extension path.
|
|
120
|
+
*/
|
|
121
|
+
export function extendFocusToDocEdge(selection, doc, currentBlockEl, currentBlockPath, to, getBlockElByPath) {
|
|
122
|
+
const edge = to === 'start' ? firstPath(doc) : lastPath(doc);
|
|
123
|
+
if (!edge)
|
|
124
|
+
return false;
|
|
125
|
+
const target = isTransparent(doc, edge)
|
|
126
|
+
? to === 'start'
|
|
127
|
+
? firstNonTransparentLeafFrom(doc, edge)
|
|
128
|
+
: lastNonTransparentLeafFrom(doc, edge)
|
|
129
|
+
: edge;
|
|
130
|
+
if (!target)
|
|
131
|
+
return false;
|
|
132
|
+
if (!selection.isCrossBlock) {
|
|
133
|
+
if (!enterCrossBlockFromKeyboard(selection, currentBlockEl, currentBlockPath))
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
const offset = to === 'end' ? leafOffsetEnd(doc, target) : 0;
|
|
137
|
+
extendFocusOrRestore(selection, target, offset, getBlockElByPath);
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
/** Select the entire document as a cross-block range (second Ctrl+A press). */
|
|
141
|
+
export function selectWholeDocument(selection, doc, getBlockElByPath) {
|
|
142
|
+
const first = firstPath(doc);
|
|
143
|
+
const last = lastPath(doc);
|
|
144
|
+
if (!first || !last)
|
|
145
|
+
return false;
|
|
146
|
+
const lastOffset = leafOffsetEnd(doc, last);
|
|
147
|
+
selection.enterCrossBlock({ path: first, offset: 0 }, { path: last, offset: lastOffset });
|
|
148
|
+
// A single prose leaf (whole doc is one block) has no cross-block state to paint; the seam
|
|
149
|
+
// refuses it. Select natively so a 2nd Ctrl+A on a one-block doc doesn't deselect.
|
|
150
|
+
if (!selection.isCustomRendered) {
|
|
151
|
+
selection.collapse();
|
|
152
|
+
const blockEl = getBlockElByPath?.(first);
|
|
153
|
+
if (blockEl) {
|
|
154
|
+
blockEl.focus();
|
|
155
|
+
applySingleBlockRange(blockEl, 0, lastOffset);
|
|
156
|
+
}
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
// Paste-dispatch anchor, see enterCrossBlockFromKeyboard. A table focus normalizes to the
|
|
160
|
+
// table block, whose wrapper holds no caret, so park in its deep cell.
|
|
161
|
+
const focus = selection.focus;
|
|
162
|
+
const parkPoint = focus && selection.cellLandingFor(focus);
|
|
163
|
+
const focusBlockEl = parkPoint ? getBlockElByPath?.(parkPoint.path) : null;
|
|
164
|
+
if (focusBlockEl && parkPoint)
|
|
165
|
+
applyCollapsedCaret(focusBlockEl, parkPoint);
|
|
166
|
+
else
|
|
167
|
+
clearNativeSelection();
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
// ── Shift+Click ────────────────────────────────────────────────────────────
|
|
171
|
+
/**
|
|
172
|
+
* Shift+click on a block: extend the cross-block selection, or enter cross-block mode using the
|
|
173
|
+
* previously focused block's caret as the anchor. False when no anchor could be recovered, or
|
|
174
|
+
* the click stayed within the same block (native shift-click handles that).
|
|
175
|
+
*/
|
|
176
|
+
export function handleShiftClick(selection, clickedBlockEl, clickedBlockPath, clickedX, clickedY, previouslyFocusedBlockEl, previouslyFocusedBlockPath) {
|
|
177
|
+
const clickOffset = offsetFromViewportPoint(clickedBlockEl, clickedX, clickedY);
|
|
178
|
+
if (clickOffset === null)
|
|
179
|
+
return false;
|
|
180
|
+
const focusPoint = { path: clickedBlockPath.slice(), offset: clickOffset };
|
|
181
|
+
if (selection.isCrossBlock) {
|
|
182
|
+
selection.extendFocus(focusPoint);
|
|
183
|
+
return true;
|
|
184
|
+
}
|
|
185
|
+
if (!previouslyFocusedBlockEl || !previouslyFocusedBlockPath)
|
|
186
|
+
return false;
|
|
187
|
+
// The anchor path comes from the DOM, and no path host exists below a table, so a caret
|
|
188
|
+
// parked in a cell would carry the TABLE's path with a char offset. The endpoint seam can't
|
|
189
|
+
// tell that from a cell index, so deepen to the cell here and let the seam convert.
|
|
190
|
+
const anchorPath = findCellPathForElement(previouslyFocusedBlockEl) ?? previouslyFocusedBlockPath;
|
|
191
|
+
const anchor = readNativeCaretInBlock(previouslyFocusedBlockEl, anchorPath);
|
|
192
|
+
if (!anchor)
|
|
193
|
+
return false;
|
|
194
|
+
// Same-block — native selection already produced a single-block range.
|
|
195
|
+
if (comparePaths(anchor.path, focusPoint.path) === 0)
|
|
196
|
+
return false;
|
|
197
|
+
selection.enterCrossBlock(anchor, focusPoint);
|
|
198
|
+
// Paste-dispatch anchor (see enterCrossBlockFromKeyboard); the click default isn't relied on.
|
|
199
|
+
applyCollapsedCaret(clickedBlockEl, focusPoint);
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
// ── Internal ───────────────────────────────────────────────────────────────
|
|
203
|
+
/** First leaf reachable from `fromPath` going forward (descend or step). */
|
|
204
|
+
function firstLeafAfter(doc, fromPath) {
|
|
205
|
+
const next = nextPath(doc, fromPath);
|
|
206
|
+
return next ? firstLeafAtOrAfter(doc, next) : null;
|
|
207
|
+
}
|
|
208
|
+
/** Last leaf reachable from `fromPath` going backward (descend or step). */
|
|
209
|
+
function lastLeafBefore(doc, fromPath) {
|
|
210
|
+
// previousPath is doc-order (ancestor-before-descendant), so a first-child leaf's "previous"
|
|
211
|
+
// is its own container, and descending into that ancestor's LAST leaf would move the walk
|
|
212
|
+
// forward. Skip ancestors until a genuinely preceding subtree is reached.
|
|
213
|
+
let prev = previousPath(doc, fromPath);
|
|
214
|
+
while (prev && isStrictAncestorOf(prev, fromPath))
|
|
215
|
+
prev = previousPath(doc, prev);
|
|
216
|
+
return prev ? lastLeafAtOrBefore(doc, prev) : null;
|
|
217
|
+
}
|
|
218
|
+
function isTransparent(doc, path) {
|
|
219
|
+
const node = nodeAt(doc, path);
|
|
220
|
+
// nodeAt returns the Document for an empty path; narrow it out (Document has no `raw`).
|
|
221
|
+
return node !== null && 'raw' in node && isVerticallyTransparentNode(node);
|
|
222
|
+
}
|
|
223
|
+
function firstNonTransparentLeafAfter(doc, fromPath) {
|
|
224
|
+
let leaf = firstLeafAfter(doc, fromPath);
|
|
225
|
+
while (leaf && isTransparent(doc, leaf)) {
|
|
226
|
+
leaf = firstLeafAfter(doc, leaf);
|
|
227
|
+
}
|
|
228
|
+
return leaf;
|
|
229
|
+
}
|
|
230
|
+
function lastNonTransparentLeafBefore(doc, fromPath) {
|
|
231
|
+
let leaf = lastLeafBefore(doc, fromPath);
|
|
232
|
+
while (leaf && isTransparent(doc, leaf)) {
|
|
233
|
+
leaf = lastLeafBefore(doc, leaf);
|
|
234
|
+
}
|
|
235
|
+
return leaf;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Doc-edge resolver: start AT the edge leaf and step inward to a text-bearing leaf. Distinct
|
|
239
|
+
* from the leafAfter/leafBefore walkers, which step away from `fromPath`.
|
|
240
|
+
*/
|
|
241
|
+
function firstNonTransparentLeafFrom(doc, startPath) {
|
|
242
|
+
if (!isTransparent(doc, startPath))
|
|
243
|
+
return startPath;
|
|
244
|
+
return firstNonTransparentLeafAfter(doc, startPath);
|
|
245
|
+
}
|
|
246
|
+
function lastNonTransparentLeafFrom(doc, startPath) {
|
|
247
|
+
if (!isTransparent(doc, startPath))
|
|
248
|
+
return startPath;
|
|
249
|
+
return lastNonTransparentLeafBefore(doc, startPath);
|
|
250
|
+
}
|
|
251
|
+
function leafOffsetEnd(doc, path) {
|
|
252
|
+
const node = nodeAt(doc, path);
|
|
253
|
+
if (!node || !('raw' in node) || typeof node.raw !== 'string')
|
|
254
|
+
return 0;
|
|
255
|
+
// raw includes a trailing newline; the cursor works in display space.
|
|
256
|
+
return displayLength(node.raw);
|
|
257
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bridge between the browser's native Selection API and SelectionPoint. Pure: callers provide
|
|
3
|
+
* target elements and paths, no tree walking. SelectionPoint offsets are raw-semantic, so
|
|
4
|
+
* DOM→raw conversion subtracts the length of a leading ambient marker span, whose textContent
|
|
5
|
+
* counts toward DOM offsets but not raw.
|
|
6
|
+
*/
|
|
7
|
+
import type { SelectionPoint, EditorSelection } from './primitives';
|
|
8
|
+
import type { SelectionState } from './selection-state.svelte';
|
|
9
|
+
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
|
+
*/
|
|
14
|
+
export declare function readNativeCaretInBlock(blockEl: HTMLElement, path: number[]): SelectionPoint | null;
|
|
15
|
+
/**
|
|
16
|
+
* Place a collapsed native caret at a raw-semantic SelectionPoint, translating through the block's
|
|
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
|
+
*/
|
|
22
|
+
export declare function applyCollapsedCaret(blockEl: HTMLElement, point: SelectionPoint): void;
|
|
23
|
+
/**
|
|
24
|
+
* Resolve `point.path` to its mounted block element and place a focused collapsed caret there.
|
|
25
|
+
* Returns whether an element was found; a missing target is a no-op.
|
|
26
|
+
*/
|
|
27
|
+
export declare function focusCollapsedCaret(getBlockElByPath: (path: number[]) => HTMLElement | null, point: SelectionPoint): boolean;
|
|
28
|
+
export declare function applySingleBlockRange(blockEl: HTMLElement, startOffset: number, endOffset: number): void;
|
|
29
|
+
export declare function clearNativeSelection(): void;
|
|
30
|
+
/**
|
|
31
|
+
* Keep focus inside the editor when an editable block holding it is windowed out; it would
|
|
32
|
+
* otherwise fall to <body>. The root is non-editable (`tabindex="-1"`), so focusing it creates
|
|
33
|
+
* no native range to sync. No-op unless this block holds focus and the root is still connected.
|
|
34
|
+
*/
|
|
35
|
+
export declare function parkFocusOnEditorRoot(blockEl: HTMLElement | null, editorRoot: HTMLElement | null): void;
|
|
36
|
+
/**
|
|
37
|
+
* Cross-block from SelectionState if active; otherwise the focused block's cursor as a deep
|
|
38
|
+
* path (via getCursorPosition) or a shallow one. Null when no block reports a cursor.
|
|
39
|
+
*/
|
|
40
|
+
export declare function readCurrentSelection(selectionState: SelectionState, blockRefs: (BlockComponent | undefined)[]): EditorSelection | null;
|
|
41
|
+
/**
|
|
42
|
+
* Restore an EditorSelection to the DOM: custom-rendered selections (intra-table, cross-block)
|
|
43
|
+
* route through SelectionState's overlay, same-path prose uses the native selection. State
|
|
44
|
+
* write and caret landing run inside ONE SelectionState batch, so the single notification
|
|
45
|
+
* carries the settled selection. False = the target resolved in the model but not in the DOM.
|
|
46
|
+
*/
|
|
47
|
+
export declare function applySelectionToDom(selection: EditorSelection, selectionState: SelectionState, getBlockElByPath: (path: number[]) => HTMLElement | null): boolean;
|