@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,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Viewport point to the block under it, for pointer hit-testing: walks ancestors of the topmost
|
|
3
|
+
* element to the nearest `data-block-path` host. A kind with internal coordinate addressing
|
|
4
|
+
* carries the point→internals hooks its descriptor declares, so a caller resolves a
|
|
5
|
+
* cell-coordinate point without knowing the kind. What the hit does NOT carry is what a kind
|
|
6
|
+
* cannot answer: a block with no character surface reports none.
|
|
7
|
+
*/
|
|
8
|
+
import { WHOLE_BLOCK_INPUT_ATTR } from '../editor-actions/whole-block-focus-surface';
|
|
9
|
+
import { tryGetBlockKindDescriptor } from '../schema/block-kind-descriptor';
|
|
10
|
+
import { offsetFromViewportPoint } from '../cursor/point-offset';
|
|
11
|
+
import { readBlockPath } from './path-lookup';
|
|
12
|
+
export function blockAtPoint(editorRoot, clientX, clientY) {
|
|
13
|
+
let el = document.elementFromPoint(clientX, clientY);
|
|
14
|
+
while (el && el !== editorRoot) {
|
|
15
|
+
if (el instanceof HTMLElement && el.getAttribute('data-block-path')) {
|
|
16
|
+
const path = readBlockPath(el);
|
|
17
|
+
if (!path)
|
|
18
|
+
return null;
|
|
19
|
+
const wrapper = el;
|
|
20
|
+
const kind = wrapper.getAttribute('data-block-kind');
|
|
21
|
+
// tryGet tolerates junk DOM strings — unregistered kinds resolve undefined.
|
|
22
|
+
const descriptor = kind ? tryGetBlockKindDescriptor(kind) : undefined;
|
|
23
|
+
const dragHitTest = descriptor?.foreignDragHitTest;
|
|
24
|
+
const caretTarget = descriptor?.caretTargetAtPoint;
|
|
25
|
+
return {
|
|
26
|
+
path,
|
|
27
|
+
// A cell-addressed kind's first contenteditable is one of its CELLS, so declaring
|
|
28
|
+
// the drag hook withdraws the block-level surface rather than offering that. The
|
|
29
|
+
// whole-block editing host is chrome, not characters, so it is excluded too.
|
|
30
|
+
charSurface: dragHitTest
|
|
31
|
+
? null
|
|
32
|
+
: wrapper.querySelector(`[contenteditable]:not([${WHOLE_BLOCK_INPUT_ATTR}])`),
|
|
33
|
+
foreignDragHitTest: dragHitTest && ((cx, cy) => dragHitTest(wrapper, cx, cy)),
|
|
34
|
+
caretTargetAtPoint: caretTarget && ((cx, cy) => caretTarget(wrapper, cx, cy))
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
el = el.parentElement;
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The selection endpoint a pointer over `hit` addresses: a row-major cell index where the kind
|
|
43
|
+
* declares the drag hook, a char offset on a character surface, and otherwise the block as a
|
|
44
|
+
* whole — the selection funnel resolves which of its two ends this side of the range wants.
|
|
45
|
+
* Shared by both drag consumers, so neither can hit-test characters against a block with none.
|
|
46
|
+
*/
|
|
47
|
+
export function endpointAtPoint(hit, clientX, clientY) {
|
|
48
|
+
if (hit.foreignDragHitTest) {
|
|
49
|
+
const cellIdx = hit.foreignDragHitTest(clientX, clientY);
|
|
50
|
+
// The flag routes collapse/reveal to the deep cell, matching the keyboard path.
|
|
51
|
+
return cellIdx === null
|
|
52
|
+
? null
|
|
53
|
+
: { path: hit.path, offset: cellIdx, cellCoordinate: true };
|
|
54
|
+
}
|
|
55
|
+
if (!hit.charSurface)
|
|
56
|
+
return { path: hit.path, wholeBlock: true };
|
|
57
|
+
const offset = offsetFromViewportPoint(hit.charSurface, clientX, clientY);
|
|
58
|
+
return offset === null ? null : { path: hit.path, offset };
|
|
59
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The two caret doors a block component exposes. `parkCaret` is the primitive: it seats a caret
|
|
3
|
+
* and touches nothing else, which is what the cross-block dispatcher needs while an extend is
|
|
4
|
+
* still growing a range. `focus` is that primitive plus the claim-ending every other placement
|
|
5
|
+
* owes, since a caret left in a live cross-block range leaves a document the next keystroke
|
|
6
|
+
* type-replaces. The door a caller reaches for by default is the safe one.
|
|
7
|
+
*/
|
|
8
|
+
import type { GapCaretPosition } from './gap-caret';
|
|
9
|
+
import type { SelectionState } from './selection-state.svelte';
|
|
10
|
+
/**
|
|
11
|
+
* Mint a component's public `focus` from its park primitive. Batched because `clear()` notifies:
|
|
12
|
+
* an emission between the state write and the DOM landing reports a caret about to move.
|
|
13
|
+
*/
|
|
14
|
+
export declare function placeCaret(selection: SelectionState, parkCaret: (offset: number) => void): (offset: number) => void;
|
|
15
|
+
/**
|
|
16
|
+
* The gap's own door: every arrival path writes gap state through here and nowhere else. The
|
|
17
|
+
* native clear is inside the batch because no native caret may outlive the landing — the gap
|
|
18
|
+
* owns the caret from here until something else claims it.
|
|
19
|
+
*/
|
|
20
|
+
export declare function placeGapCaret(selection: SelectionState, pos: GapCaretPosition): void;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The two caret doors a block component exposes. `parkCaret` is the primitive: it seats a caret
|
|
3
|
+
* and touches nothing else, which is what the cross-block dispatcher needs while an extend is
|
|
4
|
+
* still growing a range. `focus` is that primitive plus the claim-ending every other placement
|
|
5
|
+
* owes, since a caret left in a live cross-block range leaves a document the next keystroke
|
|
6
|
+
* type-replaces. The door a caller reaches for by default is the safe one.
|
|
7
|
+
*/
|
|
8
|
+
import { clearNativeSelection } from './native-bridge';
|
|
9
|
+
/**
|
|
10
|
+
* Mint a component's public `focus` from its park primitive. Batched because `clear()` notifies:
|
|
11
|
+
* an emission between the state write and the DOM landing reports a caret about to move.
|
|
12
|
+
*/
|
|
13
|
+
export function placeCaret(selection, parkCaret) {
|
|
14
|
+
return (offset) => selection.batch(() => {
|
|
15
|
+
endLiveCaretClaim(selection);
|
|
16
|
+
parkCaret(offset);
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The gap's own door: every arrival path writes gap state through here and nowhere else. The
|
|
21
|
+
* native clear is inside the batch because no native caret may outlive the landing — the gap
|
|
22
|
+
* owns the caret from here until something else claims it.
|
|
23
|
+
*/
|
|
24
|
+
export function placeGapCaret(selection, pos) {
|
|
25
|
+
selection.batch(() => {
|
|
26
|
+
endLiveCaretClaim(selection);
|
|
27
|
+
selection.setGapCaret(pos);
|
|
28
|
+
clearNativeSelection();
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Ends any editor-owned caret claim (cross-block range or gap) before a new caret lands. The
|
|
33
|
+
* range arm takes the gap with it, so the split is on which claim is live rather than on which
|
|
34
|
+
* field to zero. The native clear matters for a whole-block landing, which seats no DOM range
|
|
35
|
+
* of its own.
|
|
36
|
+
*/
|
|
37
|
+
function endLiveCaretClaim(selection) {
|
|
38
|
+
if (selection.isCrossBlock) {
|
|
39
|
+
selection.clear();
|
|
40
|
+
clearNativeSelection();
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
selection.clearGapCaret();
|
|
44
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hold the document caret while editor-owned chrome borrows focus, and put it back on close.
|
|
3
|
+
* Focusing an overlay's input collapses the native selection, so the range has to live somewhere
|
|
4
|
+
* that outlives the borrow.
|
|
5
|
+
*/
|
|
6
|
+
export interface CaretRestore {
|
|
7
|
+
/** Snapshot the live caret. Null clears the slot, which makes `restore` fall back to the root. */
|
|
8
|
+
save(range: Range | null): void;
|
|
9
|
+
/** Snapshot the live caret from the window selection — the usual door. */
|
|
10
|
+
saveCurrent(): void;
|
|
11
|
+
/** Re-seat the saved caret and focus its host leaf. A container the DOM no longer holds falls
|
|
12
|
+
* back to the editor root, so cross-block keyboard routing survives a rebuild. */
|
|
13
|
+
restore(): void;
|
|
14
|
+
}
|
|
15
|
+
export declare function createCaretRestore(getEditorEl: () => HTMLElement | null): CaretRestore;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hold the document caret while editor-owned chrome borrows focus, and put it back on close.
|
|
3
|
+
* Focusing an overlay's input collapses the native selection, so the range has to live somewhere
|
|
4
|
+
* that outlives the borrow.
|
|
5
|
+
*/
|
|
6
|
+
export function createCaretRestore(getEditorEl) {
|
|
7
|
+
let saved = null;
|
|
8
|
+
return {
|
|
9
|
+
save(range) {
|
|
10
|
+
saved = range;
|
|
11
|
+
},
|
|
12
|
+
saveCurrent() {
|
|
13
|
+
const selection = window.getSelection();
|
|
14
|
+
saved = selection && selection.rangeCount ? selection.getRangeAt(0).cloneRange() : null;
|
|
15
|
+
},
|
|
16
|
+
restore() {
|
|
17
|
+
const editorEl = getEditorEl();
|
|
18
|
+
if (saved && editorEl?.contains(saved.startContainer)) {
|
|
19
|
+
const node = saved.startContainer;
|
|
20
|
+
const host = node instanceof Element ? node : node.parentElement;
|
|
21
|
+
host?.closest('[contenteditable]')?.focus();
|
|
22
|
+
const selection = window.getSelection();
|
|
23
|
+
selection?.removeAllRanges();
|
|
24
|
+
selection?.addRange(saved);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
editorEl?.focus();
|
|
28
|
+
}
|
|
29
|
+
saved = null;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The char-space funnel, sibling of `table-endpoint-snap.ts`'s cell-space one: a cross-block
|
|
3
|
+
* endpoint's offset lands inside its own block's raw, and inside a kind with no character
|
|
4
|
+
* positions it lands on one of the two ends — a hit-test over such a block's rendered body walks
|
|
5
|
+
* chrome text and mints neither. Whole-unit inclusion is the rule: the side comes from document
|
|
6
|
+
* order against the other endpoint, never the anchor/focus role, which `normalize` reorders later.
|
|
7
|
+
*/
|
|
8
|
+
import type { DocumentView } from '../core/node-views';
|
|
9
|
+
import { type SelectionEndpoint, type SelectionPoint } from './primitives';
|
|
10
|
+
/**
|
|
11
|
+
* `endpoint` in its block's legal char space. Equal paths carry no document order — and no
|
|
12
|
+
* cross-block range — so they resolve to the block start. Tables are the cell funnel's subject
|
|
13
|
+
* and pass through untouched.
|
|
14
|
+
*/
|
|
15
|
+
export declare function normalizeCharEndpoint(doc: DocumentView, endpoint: SelectionEndpoint, otherPath: readonly number[]): SelectionPoint;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The char-space funnel, sibling of `table-endpoint-snap.ts`'s cell-space one: a cross-block
|
|
3
|
+
* endpoint's offset lands inside its own block's raw, and inside a kind with no character
|
|
4
|
+
* positions it lands on one of the two ends — a hit-test over such a block's rendered body walks
|
|
5
|
+
* chrome text and mints neither. Whole-unit inclusion is the rule: the side comes from document
|
|
6
|
+
* order against the other endpoint, never the anchor/focus role, which `normalize` reorders later.
|
|
7
|
+
*/
|
|
8
|
+
import { displayLength, snapToScalarBoundary } from '../core/lines';
|
|
9
|
+
import { isBlockNode, nodeAt } from '../tree-operations/node-ops';
|
|
10
|
+
import { isWholeBlockUnit } from '../schema/whole-block-unit';
|
|
11
|
+
import { comparePaths } from './path-math';
|
|
12
|
+
import { isWholeBlockEndpoint } from './primitives';
|
|
13
|
+
/**
|
|
14
|
+
* `endpoint` in its block's legal char space. Equal paths carry no document order — and no
|
|
15
|
+
* cross-block range — so they resolve to the block start. Tables are the cell funnel's subject
|
|
16
|
+
* and pass through untouched.
|
|
17
|
+
*/
|
|
18
|
+
export function normalizeCharEndpoint(doc, endpoint, otherPath) {
|
|
19
|
+
const node = nodeAt(doc, endpoint.path);
|
|
20
|
+
if (!node || !isBlockNode(node)) {
|
|
21
|
+
return isWholeBlockEndpoint(endpoint) ? { path: endpoint.path.slice(), offset: 0 } : endpoint;
|
|
22
|
+
}
|
|
23
|
+
const end = displayLength(node.raw);
|
|
24
|
+
const wholeUnit = {
|
|
25
|
+
path: endpoint.path.slice(),
|
|
26
|
+
offset: comparePaths(endpoint.path, otherPath) > 0 ? end : 0
|
|
27
|
+
};
|
|
28
|
+
if (isWholeBlockEndpoint(endpoint))
|
|
29
|
+
return wholeUnit;
|
|
30
|
+
if (node.kind === 'table')
|
|
31
|
+
return endpoint;
|
|
32
|
+
if (isWholeBlockUnit(node)) {
|
|
33
|
+
return endpoint.offset === 0 || endpoint.offset === end ? endpoint : wholeUnit;
|
|
34
|
+
}
|
|
35
|
+
// Range AND scalar: `setSelection` takes plain numbers, so this is the only gate between a
|
|
36
|
+
// caller's arithmetic and a delete that would halve an astral scalar.
|
|
37
|
+
const clamped = snapToScalarBoundary(node.raw, Math.min(Math.max(endpoint.offset, 0), end));
|
|
38
|
+
return clamped === endpoint.offset ? endpoint : { path: endpoint.path.slice(), offset: clamped };
|
|
39
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-block clipboard text collection.
|
|
3
|
+
*/
|
|
4
|
+
import type { SelectionPoint } from './primitives';
|
|
5
|
+
import type { DocumentView } from '../core/node-views';
|
|
6
|
+
/**
|
|
7
|
+
* Plain text spanning a cross-block selection: the start block's tail, every middle block's
|
|
8
|
+
* leadingTrivia + raw, the end block's head. Descendants of an already-collected container
|
|
9
|
+
* are skipped, since a container's raw already holds its children's text. Full-boundary leaf
|
|
10
|
+
* endpoints promote to their deepest non-shared container ancestor so list markers and
|
|
11
|
+
* blockquote prefixes survive; a start inside reserved chrome re-emits its container once.
|
|
12
|
+
*/
|
|
13
|
+
export declare function collectCrossBlockText(doc: DocumentView, anchor: SelectionPoint, focus: SelectionPoint): string;
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-block clipboard text collection.
|
|
3
|
+
*/
|
|
4
|
+
import { makeBlockNode, metadataOf } from '../core/nodes';
|
|
5
|
+
import { cloneMetadata } from '../tree-operations/clone';
|
|
6
|
+
import { isBlockNode, nodeAt } from '../tree-operations/node-ops';
|
|
7
|
+
import { walkBetween, normalize, charOffsetOf, cellIndexOf } from './primitives';
|
|
8
|
+
import { snapCrossBlockTableEndpoints } from './table-endpoint-snap';
|
|
9
|
+
import { isStrictAncestorOf, pathHasPrefix, pathsEqual, sharedPrefixLength } from './path-math';
|
|
10
|
+
import { cellRowCol } from '../cursor/coordinate-spaces';
|
|
11
|
+
import { displayLength, terminateLine } from '../core/lines';
|
|
12
|
+
import { copyRectangleAsSubTable } from '../tree-operations/sub-table-copy';
|
|
13
|
+
import { isReservedChromeChild } from '../schema/reserved-chrome';
|
|
14
|
+
import { getBlockKindDescriptor, tryGetBlockKindDescriptor } from '../schema/block-kind-descriptor';
|
|
15
|
+
// ── Public API ─────────────────────────────────────────────────────────────
|
|
16
|
+
/**
|
|
17
|
+
* Plain text spanning a cross-block selection: the start block's tail, every middle block's
|
|
18
|
+
* leadingTrivia + raw, the end block's head. Descendants of an already-collected container
|
|
19
|
+
* are skipped, since a container's raw already holds its children's text. Full-boundary leaf
|
|
20
|
+
* endpoints promote to their deepest non-shared container ancestor so list markers and
|
|
21
|
+
* blockquote prefixes survive; a start inside reserved chrome re-emits its container once.
|
|
22
|
+
*/
|
|
23
|
+
export function collectCrossBlockText(doc, anchor, focus) {
|
|
24
|
+
const normalized = normalize({ anchor, focus });
|
|
25
|
+
const { start, end } = snapCrossBlockTableEndpoints(doc, normalized.start, normalized.end);
|
|
26
|
+
const startNode = nodeAt(doc, start.path);
|
|
27
|
+
const endNode = nodeAt(doc, end.path);
|
|
28
|
+
if (!startNode || !endNode)
|
|
29
|
+
return '';
|
|
30
|
+
// On a table, offsets index half-open cell ranges (see `SelectionPoint`), not characters,
|
|
31
|
+
// so the three table branches route through emitTablePortion. Same-path intra-table offsets
|
|
32
|
+
// are context-established (unflagged) and read directly; cross-block ones use cellIndexOf.
|
|
33
|
+
if (pathsEqual(start.path, end.path) && isBlockNode(startNode) && startNode.kind === 'table') {
|
|
34
|
+
// Cell offsets are inclusive on both ends (hence the `+ 1`). A collapsed pair is a caret
|
|
35
|
+
// in a cell, not a rect, so copy nothing and let the cell's native copy handle it.
|
|
36
|
+
if (start.offset === end.offset)
|
|
37
|
+
return '';
|
|
38
|
+
return emitTablePortion(startNode, start.offset, end.offset + 1);
|
|
39
|
+
}
|
|
40
|
+
const startRaw = isBlockNode(startNode) ? startNode.raw : '';
|
|
41
|
+
const endRaw = isBlockNode(endNode) ? endNode.raw : '';
|
|
42
|
+
let effectiveStartPath = start.path;
|
|
43
|
+
let chromeStart = null;
|
|
44
|
+
let startTail = '';
|
|
45
|
+
if (isBlockNode(startNode) && startNode.kind === 'table') {
|
|
46
|
+
const tableNode = startNode;
|
|
47
|
+
const colCount = metadataOf(tableNode, 'table').columnCount;
|
|
48
|
+
const allCellsCount = tableNode.children.length * colCount;
|
|
49
|
+
startTail = emitTablePortion(tableNode, cellIndexOf(start, 'collectCrossBlockText:startTable'), allCellsCount);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
const startOffset = charOffsetOf(start, 'collectCrossBlockText:start');
|
|
53
|
+
if (startOffset === 0 && start.path.length > 1) {
|
|
54
|
+
const promoted = promoteToContainer(doc, start.path, end.path, 'start');
|
|
55
|
+
if (promoted) {
|
|
56
|
+
effectiveStartPath = promoted.path;
|
|
57
|
+
startTail = promoted.raw;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
startTail = startRaw.slice(startOffset);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else if (startOffset > 0 && start.path.length > 1) {
|
|
64
|
+
// A chrome start emits nothing here: its wrapper needs the body it encloses,
|
|
65
|
+
// which only the walk below knows.
|
|
66
|
+
chromeStart = startChromeContainer(doc, start, startRaw, startOffset);
|
|
67
|
+
if (!chromeStart) {
|
|
68
|
+
const marker = soleChildContainerPrefix(doc, start.path, startRaw);
|
|
69
|
+
startTail = (marker ?? '') + startRaw.slice(startOffset);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
startTail = startRaw.slice(startOffset);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
let effectiveEndPath = end.path;
|
|
77
|
+
let endHead;
|
|
78
|
+
if (isBlockNode(endNode) && endNode.kind === 'table') {
|
|
79
|
+
// Snapped end cell is the inclusive last cell of its row; emitTablePortion takes an
|
|
80
|
+
// exclusive end, so +1 makes the captured rows match the delete.
|
|
81
|
+
endHead = emitTablePortion(endNode, 0, cellIndexOf(end, 'collectCrossBlockText:endTable') + 1);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
const endOffset = charOffsetOf(end, 'collectCrossBlockText:end');
|
|
85
|
+
const chromeBytes = endOffset > 0 ? endChromeContainerBytes(doc, end, endRaw, endOffset) : null;
|
|
86
|
+
if (chromeBytes !== null) {
|
|
87
|
+
endHead = chromeBytes;
|
|
88
|
+
}
|
|
89
|
+
else if (endOffset === displayLength(endRaw) && end.path.length > 1) {
|
|
90
|
+
const promoted = promoteToContainer(doc, end.path, start.path, 'end');
|
|
91
|
+
if (promoted) {
|
|
92
|
+
effectiveEndPath = promoted.path;
|
|
93
|
+
endHead = promoted.raw;
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
endHead = endRaw.slice(0, endOffset);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
else if (endOffset > 0 && endOffset < displayLength(endRaw) && end.path.length > 1) {
|
|
100
|
+
const marker = soleChildContainerPrefix(doc, end.path, endRaw);
|
|
101
|
+
endHead = (marker ?? '') + endRaw.slice(0, endOffset);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
endHead = endRaw.slice(0, endOffset);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
let middle = '';
|
|
108
|
+
let chromeBody = '';
|
|
109
|
+
const collectedContainers = [];
|
|
110
|
+
for (const path of walkBetween(doc, effectiveStartPath, effectiveEndPath)) {
|
|
111
|
+
if (isStrictAncestorOf(path, effectiveStartPath))
|
|
112
|
+
continue;
|
|
113
|
+
if (isStrictAncestorOf(path, effectiveEndPath))
|
|
114
|
+
continue;
|
|
115
|
+
if (isStrictAncestorOf(effectiveStartPath, path))
|
|
116
|
+
continue;
|
|
117
|
+
if (isStrictAncestorOf(effectiveEndPath, path))
|
|
118
|
+
continue;
|
|
119
|
+
if (collectedContainers.some((cp) => isStrictAncestorOf(cp, path)))
|
|
120
|
+
continue;
|
|
121
|
+
const node = nodeAt(doc, path);
|
|
122
|
+
if (!node || !isBlockNode(node))
|
|
123
|
+
continue;
|
|
124
|
+
if (chromeStart && pathHasPrefix(path, chromeStart.path)) {
|
|
125
|
+
chromeBody += node.leadingTrivia + node.raw;
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
middle += node.leadingTrivia + node.raw;
|
|
129
|
+
}
|
|
130
|
+
if (node.children && node.children.length > 0) {
|
|
131
|
+
collectedContainers.push(path);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Without endLead, blank lines between paragraphs drop and paste reparses as one paragraph.
|
|
135
|
+
let endLead = '';
|
|
136
|
+
if (!pathsEqual(effectiveStartPath, effectiveEndPath)) {
|
|
137
|
+
const endNode = nodeAt(doc, effectiveEndPath);
|
|
138
|
+
if (endNode && isBlockNode(endNode)) {
|
|
139
|
+
endLead = endNode.leadingTrivia;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if (chromeStart) {
|
|
143
|
+
// The container's subtree is one contiguous doc-order run, so an end inside it
|
|
144
|
+
// leaves `middle` empty and puts the end's own bytes inside the wrapper too.
|
|
145
|
+
const exited = !pathHasPrefix(effectiveEndPath, chromeStart.path);
|
|
146
|
+
const tail = endLead + endHead;
|
|
147
|
+
const wrapped = wrapChromeStartContainer(chromeStart, exited ? chromeBody : chromeBody + tail, exited);
|
|
148
|
+
return exited ? wrapped + middle + tail : wrapped;
|
|
149
|
+
}
|
|
150
|
+
return startTail + middle + endLead + endHead;
|
|
151
|
+
}
|
|
152
|
+
// ── Internal ───────────────────────────────────────────────────────────────
|
|
153
|
+
/**
|
|
154
|
+
* Table portion for the half-open cell range `[startCellIdx, endCellIdxExclusive)`. Selection
|
|
155
|
+
* is row-rectangular by GFM constraint, so emit `[startRow..endRow] × all columns`.
|
|
156
|
+
*/
|
|
157
|
+
function emitTablePortion(table, startCellIdx, endCellIdxExclusive) {
|
|
158
|
+
if (startCellIdx >= endCellIdxExclusive)
|
|
159
|
+
return '';
|
|
160
|
+
const colCount = metadataOf(table, 'table').columnCount;
|
|
161
|
+
const allCellsCount = table.children.length * colCount;
|
|
162
|
+
if (startCellIdx === 0 && endCellIdxExclusive === allCellsCount) {
|
|
163
|
+
return table.raw;
|
|
164
|
+
}
|
|
165
|
+
const startRow = cellRowCol(startCellIdx, colCount).row;
|
|
166
|
+
const endRow = cellRowCol(endCellIdxExclusive - 1, colCount).row;
|
|
167
|
+
return copyRectangleAsSubTable(table, { rowIdx: startRow, colIdx: 0 }, { rowIdx: endRow, colIdx: colCount - 1 });
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* The container marker prefix a partial-leaf slice must keep when the leaf is the sole child
|
|
171
|
+
* of a strip container ("3. " so "3. thi" survives rather than "thi"). Without it CommonMark
|
|
172
|
+
* §5.2 stops a following "N." line from interrupting the paragraph and the round-trip
|
|
173
|
+
* collapses into one block. Eligibility is the descriptor's `strip` contract, not a kind list.
|
|
174
|
+
* Sole-child is required: earlier siblings sit between the marker and the leaf's raw.
|
|
175
|
+
*/
|
|
176
|
+
function soleChildContainerPrefix(doc, leafPath, leafRaw) {
|
|
177
|
+
const parent = nodeAt(doc, leafPath.slice(0, -1));
|
|
178
|
+
if (!parent || !isBlockNode(parent) || !parent.children)
|
|
179
|
+
return null;
|
|
180
|
+
if (tryGetBlockKindDescriptor(parent.kind)?.containerContract !== 'strip')
|
|
181
|
+
return null;
|
|
182
|
+
if (parent.children.length !== 1)
|
|
183
|
+
return null;
|
|
184
|
+
if (leafPath[leafPath.length - 1] !== 0)
|
|
185
|
+
return null;
|
|
186
|
+
if (!parent.raw.endsWith(leafRaw))
|
|
187
|
+
return null;
|
|
188
|
+
return parent.raw.slice(0, parent.raw.length - leafRaw.length);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* The rebuild a chrome-wrapper synthesis may run for `container`, or null when re-emitting its
|
|
192
|
+
* wrapper isn't faithful. Both chrome endpoint paths consult this and nothing else, so the
|
|
193
|
+
* rule cannot hold on one endpoint and not the other. Only `'opaque'` qualifies: its syntax is
|
|
194
|
+
* an opener plus a closer, so a truncated chrome IS an opener. `'strip'` has nothing to close
|
|
195
|
+
* (`soleChildContainerPrefix` is its seam); `'grid'` declares no chrome and rides the table arm.
|
|
196
|
+
*/
|
|
197
|
+
function chromeWrapperRebuild(container, childIndex) {
|
|
198
|
+
if (!isReservedChromeChild(container, childIndex))
|
|
199
|
+
return null;
|
|
200
|
+
const descriptor = getBlockKindDescriptor(container.kind);
|
|
201
|
+
if (descriptor.containerContract !== 'opaque')
|
|
202
|
+
return null;
|
|
203
|
+
return descriptor.rebuildRaw ?? null;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Bytes for a copy endpoint landing inside a container's reserved chrome. A generic raw.slice
|
|
207
|
+
* emits wrapper-less bytes that reparse to a bare paragraph, losing the kind on paste, so
|
|
208
|
+
* synthesize a chrome-only container (truncated chrome, empty body) and run the kind's own
|
|
209
|
+
* rebuildRaw. Metadata is shallow-copied (primitive-valued by G1.6) because rebuildRaw is
|
|
210
|
+
* plugin code fed a node that would otherwise alias the LIVE tree.
|
|
211
|
+
*/
|
|
212
|
+
function endChromeContainerBytes(doc, end, endRaw, endOffset) {
|
|
213
|
+
const childIndex = end.path[end.path.length - 1];
|
|
214
|
+
const parent = nodeAt(doc, end.path.slice(0, -1));
|
|
215
|
+
if (!parent || !isBlockNode(parent))
|
|
216
|
+
return null;
|
|
217
|
+
const rebuildRaw = chromeWrapperRebuild(parent, childIndex);
|
|
218
|
+
if (!rebuildRaw)
|
|
219
|
+
return null;
|
|
220
|
+
const synthetic = makeBlockNode({
|
|
221
|
+
kind: parent.kind,
|
|
222
|
+
leadingTrivia: '',
|
|
223
|
+
raw: '',
|
|
224
|
+
metadata: parent.metadata ? cloneMetadata(parent.metadata) : undefined,
|
|
225
|
+
innerPrefix: '',
|
|
226
|
+
innerSuffix: '',
|
|
227
|
+
children: [
|
|
228
|
+
makeBlockNode({
|
|
229
|
+
kind: parent.children[childIndex].kind,
|
|
230
|
+
leadingTrivia: '',
|
|
231
|
+
raw: endRaw.slice(0, endOffset)
|
|
232
|
+
})
|
|
233
|
+
]
|
|
234
|
+
});
|
|
235
|
+
rebuildRaw(synthetic);
|
|
236
|
+
return synthetic.raw;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* The container a copy STARTS inside the chrome of, when re-emitting its wrapper around the
|
|
240
|
+
* collected body is faithful; null when it isn't. Eligibility is `chromeWrapperRebuild`'s.
|
|
241
|
+
*/
|
|
242
|
+
function startChromeContainer(doc, start, startRaw, startOffset) {
|
|
243
|
+
const containerPath = start.path.slice(0, -1);
|
|
244
|
+
const container = nodeAt(doc, containerPath);
|
|
245
|
+
if (!container || !isBlockNode(container))
|
|
246
|
+
return null;
|
|
247
|
+
const rebuildRaw = chromeWrapperRebuild(container, start.path[start.path.length - 1]);
|
|
248
|
+
if (!rebuildRaw)
|
|
249
|
+
return null;
|
|
250
|
+
return {
|
|
251
|
+
path: containerPath,
|
|
252
|
+
node: container,
|
|
253
|
+
chromeTail: startRaw.slice(startOffset),
|
|
254
|
+
rebuildRaw
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Re-emit the container around `body` with the truncated chrome back in the opener line. ONE
|
|
259
|
+
* rebuildRaw call over the real body is what makes the closer trustworthy: a directive fence
|
|
260
|
+
* widens when its body reproduces the terminator, so opener and closer derived in the same call
|
|
261
|
+
* cannot disagree about width. `exited` means the walk left the subtree, i.e. the body ran to
|
|
262
|
+
* the end, so the trailing inner trivia belongs to the copy; otherwise line-terminate instead.
|
|
263
|
+
*/
|
|
264
|
+
function wrapChromeStartContainer(start, body, exited) {
|
|
265
|
+
const { node } = start;
|
|
266
|
+
const innerSuffix = exited ? (node.innerSuffix ?? '') : '';
|
|
267
|
+
const synthetic = makeBlockNode({
|
|
268
|
+
kind: node.kind,
|
|
269
|
+
leadingTrivia: '',
|
|
270
|
+
// The live raw, so the rebuild reads the authored closer line ending (G4.20).
|
|
271
|
+
raw: node.raw,
|
|
272
|
+
metadata: node.metadata ? cloneMetadata(node.metadata) : undefined,
|
|
273
|
+
innerPrefix: node.innerPrefix ?? '',
|
|
274
|
+
innerSuffix,
|
|
275
|
+
children: [
|
|
276
|
+
makeBlockNode({ kind: node.children[0].kind, leadingTrivia: '', raw: start.chromeTail }),
|
|
277
|
+
// One stand-in for the whole collected body: a rebuild serializes its
|
|
278
|
+
// children's bytes, so the kind is immaterial and only the bytes travel.
|
|
279
|
+
makeBlockNode({
|
|
280
|
+
kind: 'paragraph',
|
|
281
|
+
leadingTrivia: '',
|
|
282
|
+
raw: innerSuffix === '' && body !== '' ? terminateLine(body, node.raw) : body
|
|
283
|
+
})
|
|
284
|
+
]
|
|
285
|
+
});
|
|
286
|
+
start.rebuildRaw(synthetic);
|
|
287
|
+
return synthetic.raw;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Walk up from a leaf endpoint to the deepest container ancestor entirely inside the
|
|
291
|
+
* selection. Start-side promotion is safe only while each child is first; end-side, last.
|
|
292
|
+
*/
|
|
293
|
+
function promoteToContainer(doc, leafPath, otherPath, side) {
|
|
294
|
+
const lcaDepth = sharedPrefixLength(leafPath, otherPath);
|
|
295
|
+
let bestPath = null;
|
|
296
|
+
for (let depth = leafPath.length - 1; depth > lcaDepth; depth--) {
|
|
297
|
+
const parentPath = leafPath.slice(0, depth);
|
|
298
|
+
const parent = nodeAt(doc, parentPath);
|
|
299
|
+
if (!parent || !parent.children)
|
|
300
|
+
break;
|
|
301
|
+
const childIndex = leafPath[depth];
|
|
302
|
+
if (side === 'start' && childIndex !== 0)
|
|
303
|
+
break;
|
|
304
|
+
if (side === 'end' && childIndex !== parent.children.length - 1)
|
|
305
|
+
break;
|
|
306
|
+
bestPath = parentPath;
|
|
307
|
+
}
|
|
308
|
+
if (!bestPath || bestPath.length <= lcaDepth)
|
|
309
|
+
return null;
|
|
310
|
+
const node = nodeAt(doc, bestPath);
|
|
311
|
+
if (!node || !isBlockNode(node))
|
|
312
|
+
return null;
|
|
313
|
+
return { path: bestPath, raw: node.raw };
|
|
314
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared cross-block copy/cut prologue: each surface owns its intra-block logic but delegates
|
|
3
|
+
* the cross-block branch here. The boolean return lets callers keep their own fall-through.
|
|
4
|
+
*/
|
|
5
|
+
import type { DocumentGetter } from '../../editor-keys';
|
|
6
|
+
import type { CrossBlockHandlers } from './dispatch';
|
|
7
|
+
import type { SelectionState } from '../selection-state.svelte';
|
|
8
|
+
export interface CrossBlockClipboardDeps {
|
|
9
|
+
selection: SelectionState;
|
|
10
|
+
getDoc: DocumentGetter;
|
|
11
|
+
crossBlock: CrossBlockHandlers;
|
|
12
|
+
}
|
|
13
|
+
export declare function writeCrossBlockCopy(e: ClipboardEvent, deps: CrossBlockClipboardDeps): boolean;
|
|
14
|
+
export declare function writeCrossBlockCut(e: ClipboardEvent, deps: CrossBlockClipboardDeps): Promise<boolean>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared cross-block copy/cut prologue: each surface owns its intra-block logic but delegates
|
|
3
|
+
* the cross-block branch here. The boolean return lets callers keep their own fall-through.
|
|
4
|
+
*/
|
|
5
|
+
import { collectCrossBlockText } from '../clipboard-text';
|
|
6
|
+
export function writeCrossBlockCopy(e, deps) {
|
|
7
|
+
const { selection } = deps;
|
|
8
|
+
if (!selection.isCrossBlock || !selection.anchor || !selection.focus)
|
|
9
|
+
return false;
|
|
10
|
+
e.preventDefault();
|
|
11
|
+
e.clipboardData?.setData('text/plain', collectCrossBlockText(deps.getDoc(), selection.anchor, selection.focus));
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
export async function writeCrossBlockCut(e, deps) {
|
|
15
|
+
if (!writeCrossBlockCopy(e, deps))
|
|
16
|
+
return false;
|
|
17
|
+
// Clipboard written synchronously above, so the cut survives an interrupted delete.
|
|
18
|
+
await deps.crossBlock.performCrossBlockDeleteFromEvent();
|
|
19
|
+
return true;
|
|
20
|
+
}
|