@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,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The commit scope a paste addresses when it re-mints or splices a block: the block's
|
|
3
|
+
* PARENT container, resolved from the path rather than from whatever `blockEdit` is in
|
|
4
|
+
* scope — a caller holding a nested-bundle blockEdit would misroute through the wrong
|
|
5
|
+
* container.
|
|
6
|
+
*/
|
|
7
|
+
import type { CstNode, Document } from '../../core/nodes';
|
|
8
|
+
import type { MultiScopeTarget, PasteCommitCoordinator } from './paste-deps';
|
|
9
|
+
/** Null when `blockPath`'s parent doesn't resolve to a container. */
|
|
10
|
+
export declare function resolveParentScope(doc: Document, blockPath: number[], controller: PasteCommitCoordinator): MultiScopeTarget | null;
|
|
11
|
+
/**
|
|
12
|
+
* A container's mounted `BlockListState`, or a detached stand-in. Never `expectState`:
|
|
13
|
+
* these routes can be a cross-block paste whose range delete ALREADY committed, so a throw
|
|
14
|
+
* would leave the selection deleted and nothing pasted. The ceremony writes ids to the
|
|
15
|
+
* owned node's `childIds`, so only ref alignment is lost on the stand-in.
|
|
16
|
+
*/
|
|
17
|
+
export declare function containerScopeState(controller: PasteCommitCoordinator, node: CstNode): MultiScopeTarget['state'];
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The commit scope a paste addresses when it re-mints or splices a block: the block's
|
|
3
|
+
* PARENT container, resolved from the path rather than from whatever `blockEdit` is in
|
|
4
|
+
* scope — a caller holding a nested-bundle blockEdit would misroute through the wrong
|
|
5
|
+
* container.
|
|
6
|
+
*/
|
|
7
|
+
import { nodeAt } from '../node-ops';
|
|
8
|
+
import { devWarn } from '../../dev-warn';
|
|
9
|
+
/** Null when `blockPath`'s parent doesn't resolve to a container. */
|
|
10
|
+
export function resolveParentScope(doc, blockPath, controller) {
|
|
11
|
+
const parentPath = blockPath.slice(0, -1);
|
|
12
|
+
if (parentPath.length === 0)
|
|
13
|
+
return controller.getDocScope();
|
|
14
|
+
const parentNode = nodeAt(doc, parentPath);
|
|
15
|
+
if (!parentNode?.children)
|
|
16
|
+
return null;
|
|
17
|
+
return {
|
|
18
|
+
node: parentNode,
|
|
19
|
+
state: containerScopeState(controller, parentNode),
|
|
20
|
+
path: parentPath
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* A container's mounted `BlockListState`, or a detached stand-in. Never `expectState`:
|
|
25
|
+
* these routes can be a cross-block paste whose range delete ALREADY committed, so a throw
|
|
26
|
+
* would leave the selection deleted and nothing pasted. The ceremony writes ids to the
|
|
27
|
+
* owned node's `childIds`, so only ref alignment is lost on the stand-in.
|
|
28
|
+
*/
|
|
29
|
+
export function containerScopeState(controller, node) {
|
|
30
|
+
const mounted = controller.resolveState(node);
|
|
31
|
+
if (mounted)
|
|
32
|
+
return mounted;
|
|
33
|
+
devWarn('paste', `committing at an unmounted ${node.kind} scope — ids realign, component refs do not`);
|
|
34
|
+
return { innerBlockIds: [...(node.childIds ?? [])], innerBlockRefs: [] };
|
|
35
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What paste modules need from the commit/undo layer. Declared here rather than imported,
|
|
3
|
+
* which is what keeps the `tree-operations -> editor-actions` and
|
|
4
|
+
* `tree-operations -> reactivity` back-edges out of the graph.
|
|
5
|
+
*/
|
|
6
|
+
import type { CommitMultiScopeArgs, MultiScopeTarget } from '../../action-contracts';
|
|
7
|
+
import type { CstNode } from '../../core/nodes';
|
|
8
|
+
export type { CommitMultiScopeArgs, MultiScopeTarget };
|
|
9
|
+
export interface PasteCommitCoordinator {
|
|
10
|
+
commitMultiScope<const S extends readonly MultiScopeTarget[]>(args: CommitMultiScopeArgs<S>): Promise<void>;
|
|
11
|
+
getDocScope(): MultiScopeTarget;
|
|
12
|
+
/** Resolve a container node to its mounted reactive state. */
|
|
13
|
+
resolveState(node: CstNode): MultiScopeTarget['state'] | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Land the caret at a doc-absolute path, revealing an off-window target first. A
|
|
16
|
+
* structural paste lands at the END of the pasted run, so its target index scales with
|
|
17
|
+
* the clipboard and a sync ref lookup would no-op past the window's overscan (VR-12).
|
|
18
|
+
*/
|
|
19
|
+
landCaret(path: number[], offset: number): Promise<void>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replacement node list for a multi-block paste into a single leaf: the leaf's raw split
|
|
3
|
+
* at the cursor, with the pasted blocks between the slices. STRUCTURAL pastes only —
|
|
4
|
+
* routing a single-paragraph clipboard here would split it into three nodes.
|
|
5
|
+
*/
|
|
6
|
+
import type { CstNode } from '../../core/nodes';
|
|
7
|
+
import type { NodeView } from '../../core/node-views';
|
|
8
|
+
export declare function buildPastedReplacement(leaf: NodeView, offset: number, blocks: CstNode[]): CstNode[];
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replacement node list for a multi-block paste into a single leaf: the leaf's raw split
|
|
3
|
+
* at the cursor, with the pasted blocks between the slices. STRUCTURAL pastes only —
|
|
4
|
+
* routing a single-paragraph clipboard here would split it into three nodes.
|
|
5
|
+
*/
|
|
6
|
+
import { snapToScalarBoundary, trailingLineEnding, trimTrailingLineEnding } from '../../core/lines';
|
|
7
|
+
import { isBlankParagraph } from '../../core/parser';
|
|
8
|
+
import { ensureEditableContainers } from '../node-ops';
|
|
9
|
+
import { parseFirstBlock } from '../parse-block';
|
|
10
|
+
export function buildPastedReplacement(leaf, offset, blocks) {
|
|
11
|
+
if (blocks.length === 0)
|
|
12
|
+
return [];
|
|
13
|
+
const leafRaw = leaf.raw;
|
|
14
|
+
const lineEnding = trailingLineEnding(leafRaw);
|
|
15
|
+
const display = trimTrailingLineEnding(leafRaw);
|
|
16
|
+
// Off any scalar interior before the cut: the halves land in DIFFERENT blocks, so a pair
|
|
17
|
+
// split here is unrecoverable bytes rather than a recoverable edit.
|
|
18
|
+
const cut = snapToScalarBoundary(display, offset);
|
|
19
|
+
const rawBefore = display.slice(0, cut);
|
|
20
|
+
const rawAfter = display.slice(cut);
|
|
21
|
+
const originalTrivia = leaf.leadingTrivia ?? '';
|
|
22
|
+
const newNodes = [];
|
|
23
|
+
// Re-parsed so heading/list leaves round-trip through their own parser rather than
|
|
24
|
+
// being forced back to a paragraph.
|
|
25
|
+
if (rawBefore.length > 0) {
|
|
26
|
+
const beforeRaw = rawBefore + lineEnding;
|
|
27
|
+
const beforeNode = parseFirstBlock(beforeRaw);
|
|
28
|
+
beforeNode.leadingTrivia = originalTrivia;
|
|
29
|
+
ensureEditableContainers(beforeNode);
|
|
30
|
+
newNodes.push(beforeNode);
|
|
31
|
+
}
|
|
32
|
+
// A blank-line separator is forced where source trivia is empty, or the block butts
|
|
33
|
+
// against its predecessor via a soft break and renders as one merged paragraph. A blank
|
|
34
|
+
// predecessor already holds a run open, so its successor takes no separator of its own.
|
|
35
|
+
for (let i = 0; i < blocks.length; i++) {
|
|
36
|
+
const node = { ...blocks[i] };
|
|
37
|
+
const prev = newNodes[newNodes.length - 1];
|
|
38
|
+
if (newNodes.length === 0) {
|
|
39
|
+
node.leadingTrivia = originalTrivia;
|
|
40
|
+
}
|
|
41
|
+
else if (prev !== undefined && isBlankParagraph(prev)) {
|
|
42
|
+
node.leadingTrivia = blocks[i].leadingTrivia ?? '';
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
node.leadingTrivia = blocks[i].leadingTrivia ? blocks[i].leadingTrivia : lineEnding;
|
|
46
|
+
}
|
|
47
|
+
ensureEditableContainers(node);
|
|
48
|
+
newNodes.push(node);
|
|
49
|
+
}
|
|
50
|
+
// Separate node rather than merged into the last pasted block, which would let a
|
|
51
|
+
// non-paragraph tail absorb it as a continuation line.
|
|
52
|
+
if (rawAfter.length > 0) {
|
|
53
|
+
const afterRaw = rawAfter + lineEnding;
|
|
54
|
+
const afterNode = parseFirstBlock(afterRaw);
|
|
55
|
+
afterNode.leadingTrivia = lineEnding;
|
|
56
|
+
ensureEditableContainers(afterNode);
|
|
57
|
+
newNodes.push(afterNode);
|
|
58
|
+
}
|
|
59
|
+
return newNodes;
|
|
60
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content-keyed, pre-parse paste transforms: a plugin registers a named transform that
|
|
3
|
+
* rewrites the raw clipboard text or declines. Register-once, throw-on-duplicate — the
|
|
4
|
+
* `customElements` model shared with `paste-surfaces.ts`.
|
|
5
|
+
*/
|
|
6
|
+
import type { PluginActivation } from '../../schema/plugin-activation';
|
|
7
|
+
export interface PasteTransform {
|
|
8
|
+
/** Unique across the process; a duplicate registration throws. */
|
|
9
|
+
readonly name: string;
|
|
10
|
+
/** A replacement for `text`, or null to decline. A throw is contained as a decline. */
|
|
11
|
+
transform(text: string): string | null;
|
|
12
|
+
}
|
|
13
|
+
export declare function registerPasteTransform(transform: PasteTransform): void;
|
|
14
|
+
/**
|
|
15
|
+
* Non-throwing registration probe, so an idempotent module (HMR, a re-imported registrar) asks
|
|
16
|
+
* before registering instead of catching the duplicate throw.
|
|
17
|
+
*/
|
|
18
|
+
export declare function isPasteTransformRegistered(name: string): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Run every transform over `text` in registration order, each seeing the prior's output;
|
|
21
|
+
* a null return leaves the running text untouched. `activation` scopes the run to one
|
|
22
|
+
* instance's plugins; absent = every installed one. A transform no plugin owns always runs.
|
|
23
|
+
*/
|
|
24
|
+
export declare function applyPasteTransforms(text: string, activation?: PluginActivation): string;
|
|
25
|
+
export declare function __resetPasteTransformsForTests(): void;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { currentInstallingPlugin } from '../../schema/plugin-install';
|
|
2
|
+
import { registerOnce } from '../../schema/register-once';
|
|
3
|
+
import { devWarn } from '../../dev-warn';
|
|
4
|
+
import { editorEnv } from '../../env';
|
|
5
|
+
// Map iteration is insertion order, so `.values()` is the pipeline order while the keyed
|
|
6
|
+
// lookup guards duplicates — one structure, no parallel array.
|
|
7
|
+
const transforms = new Map();
|
|
8
|
+
export function registerPasteTransform(transform) {
|
|
9
|
+
const existing = transforms.get(transform.name);
|
|
10
|
+
registerOnce(existing !== undefined, () => transforms.set(transform.name, { transform, owner: currentInstallingPlugin() }), `registerPasteTransform: "${transform.name}" is already registered` +
|
|
11
|
+
(existing?.owner ? ` by plugin '${existing.owner}'` : '') +
|
|
12
|
+
`. Paste transforms are register-once.`);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Non-throwing registration probe, so an idempotent module (HMR, a re-imported registrar) asks
|
|
16
|
+
* before registering instead of catching the duplicate throw.
|
|
17
|
+
*/
|
|
18
|
+
export function isPasteTransformRegistered(name) {
|
|
19
|
+
return transforms.has(name);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Run every transform over `text` in registration order, each seeing the prior's output;
|
|
23
|
+
* a null return leaves the running text untouched. `activation` scopes the run to one
|
|
24
|
+
* instance's plugins; absent = every installed one. A transform no plugin owns always runs.
|
|
25
|
+
*/
|
|
26
|
+
export function applyPasteTransforms(text, activation) {
|
|
27
|
+
if (transforms.size === 0)
|
|
28
|
+
return text;
|
|
29
|
+
let result = text;
|
|
30
|
+
for (const { transform, owner } of transforms.values()) {
|
|
31
|
+
if (owner !== null && activation && !activation.isActive(owner))
|
|
32
|
+
continue;
|
|
33
|
+
const next = runContained(transform, result, 'pipeline');
|
|
34
|
+
if (next === null)
|
|
35
|
+
continue;
|
|
36
|
+
warnIfNonIdempotent(transform, next);
|
|
37
|
+
result = next;
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
export function __resetPasteTransformsForTests() {
|
|
42
|
+
transforms.clear();
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The one door plugin `transform()` code is called through. On the cross-block route the
|
|
46
|
+
* covering range delete has already committed, so an escaping throw would leave the
|
|
47
|
+
* selection deleted and nothing pasted; a throw becomes the null a decline returns. The
|
|
48
|
+
* warning names its phase because a probe-time throw read as a decline would send the
|
|
49
|
+
* author debugging a paste that worked.
|
|
50
|
+
*/
|
|
51
|
+
function runContained(transform, text, phase) {
|
|
52
|
+
try {
|
|
53
|
+
return transform.transform(text);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
const outcome = phase === 'pipeline'
|
|
57
|
+
? 'in the paste pipeline; declining, so the running text is untouched'
|
|
58
|
+
: 'in the dev idempotence probe; the paste keeps its first result';
|
|
59
|
+
devWarn('paste-transform', `transform '${transform.name}' threw ${outcome}`, error);
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// A transform whose own output feeds back into a further rewrite drives a paste feedback
|
|
64
|
+
// loop, so in dev it is re-run on its result: it must decline or reproduce it.
|
|
65
|
+
function warnIfNonIdempotent(transform, result) {
|
|
66
|
+
if (!editorEnv.isDev)
|
|
67
|
+
return;
|
|
68
|
+
const again = runContained(transform, result, 'probe');
|
|
69
|
+
if (again !== null && again !== result) {
|
|
70
|
+
devWarn('paste-transform', `transform '${transform.name}' is not idempotent — re-running it on its own output changed the text again`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replace the block at `blockPath`, committing at its parent scope (`parent-scope.ts`)
|
|
3
|
+
* rather than through the caller's blockEdit — paste-into-cell must mutate `doc.children`
|
|
4
|
+
* while holding the row-level nested bundle.
|
|
5
|
+
*/
|
|
6
|
+
import type { UndoEntryMode } from '../../action-contracts';
|
|
7
|
+
import type { OperationDetailMap } from '../../schema/operations';
|
|
8
|
+
import type { CstNode, Document } from '../../core/nodes';
|
|
9
|
+
import type { GrammarView } from '../../schema/block-openers';
|
|
10
|
+
import type { PasteCommitCoordinator } from './paste-deps';
|
|
11
|
+
export interface ReplaceBlockAtParentArgs {
|
|
12
|
+
doc: Document;
|
|
13
|
+
/** Path to the block being replaced. Length ≥ 1. */
|
|
14
|
+
blockPath: number[];
|
|
15
|
+
replacement: CstNode[];
|
|
16
|
+
controller: PasteCommitCoordinator;
|
|
17
|
+
undoEntry: UndoEntryMode;
|
|
18
|
+
/** Index into `replacement` to focus after the commit. */
|
|
19
|
+
focusReplacementIndex: number;
|
|
20
|
+
focusOffset: number;
|
|
21
|
+
source: Extract<OperationDetailMap['replaceBlock'], {
|
|
22
|
+
source: unknown;
|
|
23
|
+
}>['source'];
|
|
24
|
+
/** Instance grammar for the escape's kind re-derive; absent = global. */
|
|
25
|
+
grammar?: GrammarView;
|
|
26
|
+
/** The clipboard's own trailing blank line, where nothing in the splice stands for it. */
|
|
27
|
+
trailingSeparator?: string;
|
|
28
|
+
}
|
|
29
|
+
export declare function replaceBlockAtParent(args: ReplaceBlockAtParentArgs): Promise<void>;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replace the block at `blockPath`, committing at its parent scope (`parent-scope.ts`)
|
|
3
|
+
* rather than through the caller's blockEdit — paste-into-cell must mutate `doc.children`
|
|
4
|
+
* while holding the row-level nested bundle.
|
|
5
|
+
*/
|
|
6
|
+
import { nodeAt } from '../node-ops';
|
|
7
|
+
import { spliceMany } from '../splice-many';
|
|
8
|
+
import { trailingLineEnding } from '../../core/lines';
|
|
9
|
+
import { normalizeReplacementForBody } from './body-write';
|
|
10
|
+
import { landedPasteOffset, trackedPasteCaret } from './focus-target';
|
|
11
|
+
import { resolveParentScope } from './parent-scope';
|
|
12
|
+
import { docPathFrom } from '../../cursor/coordinate-spaces';
|
|
13
|
+
import { replacePreservingFirst, stampStructuralChange } from '../structural-change';
|
|
14
|
+
/**
|
|
15
|
+
* Land the clipboard's trailing blank where a reload folds one: the DOCUMENT's own suffix, and
|
|
16
|
+
* only at a tail whose slot is empty — one separation is one separation. A container tail
|
|
17
|
+
* declines, since `innerSuffix` is the wrap-peel settle's register on this same commit. The
|
|
18
|
+
* clipboard says WHETHER a line lands, never which one: normalized to LF at every entry point,
|
|
19
|
+
* its own suffix would strand an LF line in a CRLF document (G4.20).
|
|
20
|
+
*/
|
|
21
|
+
function landTrailingSeparator(args, children, afterIndex, ending) {
|
|
22
|
+
if (!args.trailingSeparator || args.blockPath.length !== 1)
|
|
23
|
+
return;
|
|
24
|
+
if (args.doc.suffix !== '' || afterIndex !== children.length)
|
|
25
|
+
return;
|
|
26
|
+
args.doc.suffix = ending;
|
|
27
|
+
}
|
|
28
|
+
export async function replaceBlockAtParent(args) {
|
|
29
|
+
const { doc, blockPath, controller, undoEntry, focusOffset, source } = args;
|
|
30
|
+
const blockIdx = blockPath[blockPath.length - 1];
|
|
31
|
+
const scope = resolveParentScope(doc, blockPath, controller);
|
|
32
|
+
if (!scope)
|
|
33
|
+
return;
|
|
34
|
+
// A replacement is minted before any byte sink sees it, so the owner's bodyWrite escape
|
|
35
|
+
// lands here — on the clipboard blocks AND the target's split halves alike.
|
|
36
|
+
const ownerKind = blockPath.length > 1 ? scope.node.kind : undefined;
|
|
37
|
+
const { replacement, mapIndex } = normalizeReplacementForBody(ownerKind, args.replacement, args.grammar);
|
|
38
|
+
const focusReplacementIndex = mapIndex(args.focusReplacementIndex);
|
|
39
|
+
// The settle can fold the spliced window into its neighbours, which moves both halves of the
|
|
40
|
+
// landing: the residue reattaches inside the last pasted leaf, and an absorb above moves the
|
|
41
|
+
// slot itself. The commit carries this through its folds and `afterTick` reads it back.
|
|
42
|
+
const caret = trackedPasteCaret(replacement, blockIdx, focusReplacementIndex, focusOffset);
|
|
43
|
+
const oldBlock = nodeAt(doc, blockPath);
|
|
44
|
+
const sameKindFirst = oldBlock !== null && replacement.length > 0 && replacement[0].kind === oldBlock.kind;
|
|
45
|
+
// Read as bytes before the commit: the displaced block is the document's own ending, and a
|
|
46
|
+
// node held across a commit goes stale the moment the spine unshares.
|
|
47
|
+
const tailEnding = oldBlock ? trailingLineEnding(oldBlock.raw) : '\n';
|
|
48
|
+
await controller.commitMultiScope({
|
|
49
|
+
scopes: [scope],
|
|
50
|
+
snapshot: undoEntry === 'join' ? 'skip' : { path: docPathFrom(blockPath), offset: 0 },
|
|
51
|
+
mutate: ([scopeView]) => {
|
|
52
|
+
spliceMany(scopeView.children, blockIdx, 1, replacement);
|
|
53
|
+
// Identity preservation only helps on a kind match; BlockHost dispatches by kind,
|
|
54
|
+
// so a different kind remounts anyway.
|
|
55
|
+
const change = sameKindFirst
|
|
56
|
+
? replacePreservingFirst(blockIdx, 1, replacement.length)
|
|
57
|
+
: { op: 'replace', at: blockIdx, count: 1, newCount: replacement.length };
|
|
58
|
+
stampStructuralChange(scopeView.children, change, scopeView.sharing);
|
|
59
|
+
landTrailingSeparator(args, scopeView.children, blockIdx + replacement.length, tailEnding);
|
|
60
|
+
return [change];
|
|
61
|
+
},
|
|
62
|
+
op: {
|
|
63
|
+
kind: 'replaceBlock',
|
|
64
|
+
detail: { source },
|
|
65
|
+
eventPath: docPathFrom(blockPath)
|
|
66
|
+
},
|
|
67
|
+
trackCaret: [caret],
|
|
68
|
+
afterTick: () => {
|
|
69
|
+
// Re-read from the document: the ceremony unshares the spine, so the scope node the
|
|
70
|
+
// caller resolved is a stale copy by now.
|
|
71
|
+
const landed = nodeAt(doc, scope.path)?.children?.[caret.index];
|
|
72
|
+
return controller.landCaret([...scope.path, caret.index], landedPasteOffset(landed, caret, focusOffset));
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CstNode } from '../../core/nodes';
|
|
2
|
+
import type { PasteStrategy } from './dispatch';
|
|
3
|
+
/**
|
|
4
|
+
* The clipboard's content blocks: a blank block at either edge is the copy's packaging, which a
|
|
5
|
+
* surface holding no blocks classifies past. Empty when nothing but packaging came across.
|
|
6
|
+
*/
|
|
7
|
+
export declare function contentBlocks(blocks: readonly CstNode[]): readonly CstNode[];
|
|
8
|
+
/** One paragraph is text any leaf can take inline; anything else is structure. */
|
|
9
|
+
export declare function pickPasteStrategy(blocks: readonly CstNode[]): PasteStrategy;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { isBlankParagraph } from '../../core/parser';
|
|
2
|
+
/**
|
|
3
|
+
* The clipboard's content blocks: a blank block at either edge is the copy's packaging, which a
|
|
4
|
+
* surface holding no blocks classifies past. Empty when nothing but packaging came across.
|
|
5
|
+
*/
|
|
6
|
+
export function contentBlocks(blocks) {
|
|
7
|
+
let start = 0;
|
|
8
|
+
let end = blocks.length;
|
|
9
|
+
while (start < end && isBlankParagraph(blocks[start]))
|
|
10
|
+
start++;
|
|
11
|
+
while (end > start && isBlankParagraph(blocks[end - 1]))
|
|
12
|
+
end--;
|
|
13
|
+
return blocks.slice(start, end);
|
|
14
|
+
}
|
|
15
|
+
/** One paragraph is text any leaf can take inline; anything else is structure. */
|
|
16
|
+
export function pickPasteStrategy(blocks) {
|
|
17
|
+
if (blocks.length === 0)
|
|
18
|
+
return 'inline';
|
|
19
|
+
return blocks.length === 1 && blocks[0].kind === 'paragraph' ? 'inline' : 'structural';
|
|
20
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Split a table at a row boundary. `rowGoes` sends the anchor row to whichever half
|
|
3
|
+
* preserves caret continuity for the break-and-splice paste path.
|
|
4
|
+
*/
|
|
5
|
+
import type { CstNode } from '../../core/nodes';
|
|
6
|
+
export type RowGoes = 'first' | 'second';
|
|
7
|
+
export declare function sliceTableAtRow(table: CstNode, sliceRow: number, rowGoes: RowGoes): {
|
|
8
|
+
firstHalf: CstNode | null;
|
|
9
|
+
secondHalf: CstNode | null;
|
|
10
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Split a table at a row boundary. `rowGoes` sends the anchor row to whichever half
|
|
3
|
+
* preserves caret continuity for the break-and-splice paste path.
|
|
4
|
+
*/
|
|
5
|
+
import { metadataOf } from '../../core/nodes';
|
|
6
|
+
import { rebuildContainerRaw } from '../../schema/container-raw';
|
|
7
|
+
export function sliceTableAtRow(table, sliceRow, rowGoes) {
|
|
8
|
+
const rows = table.children;
|
|
9
|
+
const meta = metadataOf(table, 'table');
|
|
10
|
+
const splitAt = rowGoes === 'first' ? sliceRow + 1 : sliceRow;
|
|
11
|
+
const firstRows = rows.slice(0, splitAt);
|
|
12
|
+
const secondRows = rows.slice(splitAt);
|
|
13
|
+
const firstHalf = buildHalf(firstRows, meta);
|
|
14
|
+
const secondHalf = buildHalf(secondRows, meta);
|
|
15
|
+
if (firstHalf)
|
|
16
|
+
rebuildContainerRaw(firstHalf);
|
|
17
|
+
if (secondHalf)
|
|
18
|
+
rebuildContainerRaw(secondHalf);
|
|
19
|
+
return { firstHalf, secondHalf };
|
|
20
|
+
}
|
|
21
|
+
function buildHalf(rows, sourceMeta) {
|
|
22
|
+
if (rows.length === 0)
|
|
23
|
+
return null;
|
|
24
|
+
const cloned = rows.map((row, idx) => ({
|
|
25
|
+
...row,
|
|
26
|
+
metadata: { isHeader: idx === 0 },
|
|
27
|
+
children: row.children.map((cell) => ({ ...cell }))
|
|
28
|
+
}));
|
|
29
|
+
return {
|
|
30
|
+
kind: 'table',
|
|
31
|
+
leadingTrivia: '',
|
|
32
|
+
raw: '',
|
|
33
|
+
metadata: {
|
|
34
|
+
columnCount: sourceMeta.columnCount,
|
|
35
|
+
alignments: sourceMeta.alignments.slice()
|
|
36
|
+
},
|
|
37
|
+
children: cloned
|
|
38
|
+
};
|
|
39
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { UndoEntryMode } from '../action-contracts';
|
|
2
|
+
import type { AnyBlockKind, CstNode, Document } from '../core/nodes';
|
|
3
|
+
import type { PresentationMode } from '../presentation-mode';
|
|
4
|
+
import type { InlineResolverRef } from '../schema/inline-construct-policy';
|
|
5
|
+
import type { GrammarView } from '../schema/block-openers';
|
|
6
|
+
import type { PasteCommitCoordinator } from './paste/paste-deps';
|
|
7
|
+
export interface PasteRange {
|
|
8
|
+
start: number;
|
|
9
|
+
end: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* What the join-seam cleanup needs from the caller: the paste's delete half is a join, and in
|
|
13
|
+
* live the runs it strands are bytes the reader never saw. Absent leaves the cut byte-literal,
|
|
14
|
+
* which is every non-live mode's answer anyway.
|
|
15
|
+
*/
|
|
16
|
+
export interface PasteSeam {
|
|
17
|
+
presentationMode: PresentationMode | undefined;
|
|
18
|
+
linkRef: InlineResolverRef | undefined;
|
|
19
|
+
}
|
|
20
|
+
export interface InlinePasteResult {
|
|
21
|
+
/** New raw for the target node (including trailing line ending). */
|
|
22
|
+
newRaw: string;
|
|
23
|
+
caretOffset: number;
|
|
24
|
+
}
|
|
25
|
+
export interface StructuralPasteResult {
|
|
26
|
+
replacement: CstNode[];
|
|
27
|
+
focusReplacementIndex: number;
|
|
28
|
+
focusOffset: number;
|
|
29
|
+
}
|
|
30
|
+
export interface ScopedStructuralPasteInput {
|
|
31
|
+
doc: Document;
|
|
32
|
+
targetPath: number[];
|
|
33
|
+
/** Pasted blocks, blank-line-materialized. */
|
|
34
|
+
blocks: CstNode[];
|
|
35
|
+
controller: PasteCommitCoordinator;
|
|
36
|
+
undoEntry: UndoEntryMode;
|
|
37
|
+
/** The instance grammar the splice owes its bodyWrite escape reparse. Required-nullable, so
|
|
38
|
+
* a new scoped surface cannot silently drop it; `undefined` = global. */
|
|
39
|
+
grammar: GrammarView | undefined;
|
|
40
|
+
}
|
|
41
|
+
export interface PasteSurface {
|
|
42
|
+
kind: AnyBlockKind;
|
|
43
|
+
/**
|
|
44
|
+
* This surface holds text, never blocks (a table cell), so a blank block at the clipboard's
|
|
45
|
+
* edge is the copy's packaging: it neither picks the route nor lands in a structural splice.
|
|
46
|
+
*/
|
|
47
|
+
blankEdgesArePackaging?: boolean;
|
|
48
|
+
/** Splice `text` into `node` at `offset` (optionally pre-deleting a range). Pure. */
|
|
49
|
+
onInlinePaste?(node: CstNode, offset: number, text: string, preDelete?: PasteRange, seam?: PasteSeam): InlinePasteResult;
|
|
50
|
+
/** Splice CST blocks at the target. Pure data transform. */
|
|
51
|
+
onStructuralPaste?(node: CstNode, offset: number, blocks: CstNode[], preDelete?: PasteRange, seam?: PasteSeam): StructuralPasteResult;
|
|
52
|
+
/**
|
|
53
|
+
* Structural paste whose splice scope is an ancestor (a tableCell splices at the
|
|
54
|
+
* table's parent). The hook owns the whole mutation; dispatch does nothing afterward.
|
|
55
|
+
*/
|
|
56
|
+
onScopedStructuralPaste?(input: ScopedStructuralPasteInput): Promise<void>;
|
|
57
|
+
}
|
|
58
|
+
export declare function registerPasteSurface(surface: PasteSurface): void;
|
|
59
|
+
export declare function getPasteSurface(kind: AnyBlockKind): PasteSurface | undefined;
|
|
60
|
+
export declare function __resetPasteSurfacesForTests(): void;
|
|
61
|
+
export declare function __removePasteSurfaceForTests(kind: AnyBlockKind): void;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { registerOnce } from '../schema/register-once';
|
|
2
|
+
// ── Registry ───────────────────────────────────────────────────────────────
|
|
3
|
+
const surfaces = new Map();
|
|
4
|
+
export function registerPasteSurface(surface) {
|
|
5
|
+
registerOnce(surfaces.has(surface.kind), () => surfaces.set(surface.kind, surface), `registerPasteSurface: "${surface.kind}" is already registered. Paste surfaces are register-once.`);
|
|
6
|
+
}
|
|
7
|
+
export function getPasteSurface(kind) {
|
|
8
|
+
return surfaces.get(kind);
|
|
9
|
+
}
|
|
10
|
+
export function __resetPasteSurfacesForTests() {
|
|
11
|
+
surfaces.clear();
|
|
12
|
+
}
|
|
13
|
+
export function __removePasteSurfaceForTests(kind) {
|
|
14
|
+
surfaces.delete(kind);
|
|
15
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path-addressed child splices for the range-delete ceremony. Both route through
|
|
3
|
+
* `spliceChildrenSettled` (`node-ops.ts`): they address containers at arbitrary depth, which is
|
|
4
|
+
* exactly where a desynced `childIds` or an unsettled separator becomes permanent. `sharing` is
|
|
5
|
+
* REQUIRED, not optional: the settle writes the surviving neighbours' own bytes, so a door
|
|
6
|
+
* reached without it writes through a snapshot-shared node (G1.9). Callers unshare the PARENT
|
|
7
|
+
* spine themselves; `sharing` is what unshares the children the settle touches.
|
|
8
|
+
*/
|
|
9
|
+
import type { CstNode, Document } from '../core/nodes';
|
|
10
|
+
import type { SharingState } from './sharing';
|
|
11
|
+
export declare function deleteAtPath(doc: Document, path: number[], sharing: SharingState): void;
|
|
12
|
+
export declare function replaceAtPath(doc: Document, path: number[], replacement: CstNode[], sharing: SharingState): void;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { nodeAt, spliceChildrenSettled } from './node-ops';
|
|
2
|
+
export function deleteAtPath(doc, path, sharing) {
|
|
3
|
+
if (path.length === 0)
|
|
4
|
+
return;
|
|
5
|
+
const parent = nodeAt(doc, path.slice(0, -1));
|
|
6
|
+
if (!parent || !parent.children)
|
|
7
|
+
return;
|
|
8
|
+
const idx = path[path.length - 1];
|
|
9
|
+
if (idx < parent.children.length) {
|
|
10
|
+
spliceChildrenSettled(parent, idx, 1, [], sharing);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export function replaceAtPath(doc, path, replacement, sharing) {
|
|
14
|
+
if (path.length === 0)
|
|
15
|
+
return;
|
|
16
|
+
const parent = nodeAt(doc, path.slice(0, -1));
|
|
17
|
+
if (!parent || !parent.children)
|
|
18
|
+
return;
|
|
19
|
+
spliceChildrenSettled(parent, path[path.length - 1], 1, replacement, sharing);
|
|
20
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve the reorderable unit a path points into: the nearest ancestor slot whose parent
|
|
3
|
+
* reorders its children among themselves. Membership is the parent's declared
|
|
4
|
+
* `reorderChildren` capability, never a kind name, so a plugin container opts in as the
|
|
5
|
+
* built-ins do. An opaque container is a hard boundary — reorder DECLINES there rather
|
|
6
|
+
* than walking past to the document and teleporting the container to a top-level index.
|
|
7
|
+
*/
|
|
8
|
+
import type { Document } from '../core/nodes';
|
|
9
|
+
export interface ReorderUnit {
|
|
10
|
+
parentPath: number[];
|
|
11
|
+
index: number;
|
|
12
|
+
/** The root reorders structurally; a container reorders through its own commit scope. */
|
|
13
|
+
scope: 'document' | 'container';
|
|
14
|
+
/** The parent renumbers position-dependent child markers after the move (ordered list). */
|
|
15
|
+
renumberMarkers: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function resolveReorderUnit(doc: Document, path: number[]): ReorderUnit | null;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve the reorderable unit a path points into: the nearest ancestor slot whose parent
|
|
3
|
+
* reorders its children among themselves. Membership is the parent's declared
|
|
4
|
+
* `reorderChildren` capability, never a kind name, so a plugin container opts in as the
|
|
5
|
+
* built-ins do. An opaque container is a hard boundary — reorder DECLINES there rather
|
|
6
|
+
* than walking past to the document and teleporting the container to a top-level index.
|
|
7
|
+
*/
|
|
8
|
+
import { tryGetBlockKindDescriptor } from '../schema/block-kind-descriptor';
|
|
9
|
+
import { nodeAt } from './node-ops';
|
|
10
|
+
export function resolveReorderUnit(doc, path) {
|
|
11
|
+
for (let depth = path.length; depth >= 1; depth--) {
|
|
12
|
+
const parentPath = path.slice(0, depth - 1);
|
|
13
|
+
// The root is identified structurally, never by kind: a plugin may mint 'document'
|
|
14
|
+
// as a block kind, and such a node is just another container.
|
|
15
|
+
if (parentPath.length === 0) {
|
|
16
|
+
return { parentPath, index: path[depth - 1], scope: 'document', renumberMarkers: false };
|
|
17
|
+
}
|
|
18
|
+
const parentKind = nodeAt(doc, parentPath)?.kind;
|
|
19
|
+
// `!== 'document'` narrows out the root's kind at the type level (nodeAt widens to
|
|
20
|
+
// include it); at runtime the root is already handled above.
|
|
21
|
+
if (parentKind && parentKind !== 'document') {
|
|
22
|
+
const descriptor = tryGetBlockKindDescriptor(parentKind);
|
|
23
|
+
const reorderChildren = descriptor?.reorderChildren;
|
|
24
|
+
if (reorderChildren) {
|
|
25
|
+
return {
|
|
26
|
+
parentPath,
|
|
27
|
+
index: path[depth - 1],
|
|
28
|
+
scope: 'container',
|
|
29
|
+
renumberMarkers: reorderChildren.renumberMarkers ?? false
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
if (descriptor?.containerContract === 'opaque')
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CstNode } from '../core/nodes';
|
|
2
|
+
import type { SharingState } from './sharing';
|
|
3
|
+
import { type SettledSplice } from './node-ops';
|
|
4
|
+
import type { StructuralChange } from './structural-change';
|
|
5
|
+
export declare function reorderChildren(children: CstNode[], from: number, to: number): StructuralChange;
|
|
6
|
+
/**
|
|
7
|
+
* Reorder children while keeping block separators positional. A separator is stored as the next
|
|
8
|
+
* child's `leadingTrivia` but read per slot, so it belongs to the position, not the node. Writing
|
|
9
|
+
* it is a byte write, so spanned children are unshared first (`unshare.ts`) and `children` must
|
|
10
|
+
* already be an owned array. The landing rides the result: a fold settling a seam the move
|
|
11
|
+
* invalidated can sit above the moved block.
|
|
12
|
+
*/
|
|
13
|
+
export declare function reorderChildrenWithTrivia(children: CstNode[], from: number, to: number, sharing: SharingState): SettledSplice;
|