@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,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The live-mode split rewrite (live-mode.md § 4.4 close-and-reopen): Enter inside a construct
|
|
3
|
+
* closes it before the cut and reopens it after, so neither half strands a run the reader never
|
|
4
|
+
* saw. Bytes stay candidates until the parser agrees; null leaves `splitNode`'s byte-literal cut.
|
|
5
|
+
*/
|
|
6
|
+
import { constructContentRange, constructKinds, getContentRange, inlineDescendants, isProseKind, parseInline } from '../../../core/inline';
|
|
7
|
+
import { CONTENT_VISIBILITY, paintsOnlyChrome, renderedText } from '../../../core/inline/visibility';
|
|
8
|
+
import { getInlineConstructPolicy } from '../../../schema/inline-construct-policy';
|
|
9
|
+
import { soleProseReparse } from './screen-diff';
|
|
10
|
+
// ── The rewrite ──────────────────────────────────────────────────────────────
|
|
11
|
+
export const rebalanceLiveSplit = (node, offset, firstRaw, secondRaw, linkRef) => {
|
|
12
|
+
const read = readSplitBytes(node, offset, firstRaw, secondRaw);
|
|
13
|
+
if (read === null)
|
|
14
|
+
return null;
|
|
15
|
+
const resolver = linkRef?.current;
|
|
16
|
+
const inlines = parseInline(read.raw, read.contentStart, read.contentEnd, resolver);
|
|
17
|
+
// Chrome standing over nothing is all on screen (live-mode.md § 4.1), so closing and reopening
|
|
18
|
+
// it moves delimiters the reader is looking at: the byte-literal cut stands.
|
|
19
|
+
if (paintsOnlyChrome(inlines, read.raw))
|
|
20
|
+
return null;
|
|
21
|
+
const moved = wholeConstructEdge(inlines, offset);
|
|
22
|
+
const at = moved ?? offset;
|
|
23
|
+
const bytes = moved === null ? read : { ...read, cut: moved };
|
|
24
|
+
const chain = splittableChainAt(inlines, at);
|
|
25
|
+
// An empty chain with the cut where the caller put it is a cut no construct touches, and the
|
|
26
|
+
// byte-literal halves are already right; a MOVED cut is a rewrite in its own right.
|
|
27
|
+
if (chain === null || (chain.length === 0 && moved === null))
|
|
28
|
+
return null;
|
|
29
|
+
const seam = seamParts(bytes, chain, at);
|
|
30
|
+
const candidates = [
|
|
31
|
+
assemble(bytes, seam),
|
|
32
|
+
assembleSpaceOutside(bytes, seam),
|
|
33
|
+
assembleDroppingTerminalTrivia(bytes, seam)
|
|
34
|
+
];
|
|
35
|
+
for (const candidate of candidates) {
|
|
36
|
+
// The dropped bytes are the verification's business, not the caller's: what it gets back
|
|
37
|
+
// is the two halves, whatever the candidate had to state to earn them.
|
|
38
|
+
if (candidate !== null && parsesBack(bytes, seam, candidate, resolver)) {
|
|
39
|
+
return { firstRaw: candidate.firstRaw, secondRaw: candidate.secondRaw };
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Read the caller's two halves back against the original, so a cut this rewrite did not make (a
|
|
46
|
+
* container body-write rule, a suffix move, a consumed line ending) surfaces as a failed anchor.
|
|
47
|
+
*/
|
|
48
|
+
function readSplitBytes(node, offset, firstRaw, secondRaw) {
|
|
49
|
+
if (!isProseKind(node.kind))
|
|
50
|
+
return null;
|
|
51
|
+
const raw = node.raw;
|
|
52
|
+
const { start, end } = getContentRange(node);
|
|
53
|
+
if (offset <= start || offset >= end)
|
|
54
|
+
return null;
|
|
55
|
+
if (!firstRaw.startsWith(raw.slice(0, offset)))
|
|
56
|
+
return null;
|
|
57
|
+
for (let cut = offset; cut <= offset + 2 && cut < end; cut++) {
|
|
58
|
+
const body = raw.slice(cut, end);
|
|
59
|
+
if (!secondRaw.startsWith(body))
|
|
60
|
+
continue;
|
|
61
|
+
return {
|
|
62
|
+
raw,
|
|
63
|
+
contentStart: start,
|
|
64
|
+
contentEnd: end,
|
|
65
|
+
cut,
|
|
66
|
+
firstResidue: firstRaw.slice(offset),
|
|
67
|
+
secondResidue: secondRaw.slice(body.length)
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The edge a cut moves to rather than landing inside a childless never-extend construct: two
|
|
74
|
+
* halves of a URL are not two URLs, and half an escape is a literal backslash, so the whole
|
|
75
|
+
* construct goes to the half the caret was nearer (live-mode.md § 4.4). Null where the cut lands
|
|
76
|
+
* in no such construct. Innermost wins, as everywhere else.
|
|
77
|
+
*/
|
|
78
|
+
function wholeConstructEdge(inlines, offset) {
|
|
79
|
+
let found = null;
|
|
80
|
+
for (const node of inlineDescendants(inlines)) {
|
|
81
|
+
const childless = node.kind !== 'text' && constructContentRange(node) === null;
|
|
82
|
+
const takesWhole = childless && getInlineConstructPolicy(node.kind)?.edgeAffinity === 'never-extend';
|
|
83
|
+
if (takesWhole && offset > node.start && offset < node.end) {
|
|
84
|
+
found = offset - node.start <= node.end - offset ? node.start : node.end;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return found;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Every construct holding `offset`, outermost first — or null when one of them declines. A kind
|
|
91
|
+
* with no policy row, one whose split behavior is plain and one whose content bounds are unknown
|
|
92
|
+
* cannot be cut open, and cutting the constructs inside one would strand its pair. Exported for
|
|
93
|
+
* the depth pin, which has to reach it with a tree no split this deep could be rendered at.
|
|
94
|
+
*/
|
|
95
|
+
export function splittableChainAt(inlines, offset) {
|
|
96
|
+
const chain = [];
|
|
97
|
+
const holds = (node) => holdsOffset(node, offset);
|
|
98
|
+
for (const node of inlineDescendants(inlines, holds)) {
|
|
99
|
+
if (!holds(node))
|
|
100
|
+
continue;
|
|
101
|
+
const content = constructContentRange(node);
|
|
102
|
+
if (!content)
|
|
103
|
+
return null;
|
|
104
|
+
if (getInlineConstructPolicy(node.kind)?.splitBehavior !== 'close-and-reopen')
|
|
105
|
+
return null;
|
|
106
|
+
chain.push({
|
|
107
|
+
kind: node.kind,
|
|
108
|
+
start: node.start,
|
|
109
|
+
end: node.end,
|
|
110
|
+
contentStart: content.start,
|
|
111
|
+
contentEnd: content.end
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
return chain;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Whether a cut at `offset` lands in this construct. One with children is content-INCLUSIVE so
|
|
118
|
+
* its edges reach the chain (the handover cases); a childless one is strict-interior, its edges
|
|
119
|
+
* being ordinary seams. Text is content, and nothing under it is a construct either.
|
|
120
|
+
*/
|
|
121
|
+
function holdsOffset(node, offset) {
|
|
122
|
+
if (node.kind === 'text')
|
|
123
|
+
return false;
|
|
124
|
+
const content = constructContentRange(node);
|
|
125
|
+
return content
|
|
126
|
+
? offset >= content.start && offset <= content.end
|
|
127
|
+
: offset > node.start && offset < node.end;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Innermost first, so a closer written before its enclosing one nests the halves as the original
|
|
131
|
+
* did. A side with no content takes the whole construct: a pair enclosing nothing is residue live
|
|
132
|
+
* may never write.
|
|
133
|
+
*/
|
|
134
|
+
function seamParts(bytes, chain, offset) {
|
|
135
|
+
let leftEnd = offset;
|
|
136
|
+
let rightStart = bytes.cut;
|
|
137
|
+
let closers = '';
|
|
138
|
+
let openers = '';
|
|
139
|
+
const closed = [];
|
|
140
|
+
const reopened = [];
|
|
141
|
+
for (const link of [...chain].reverse()) {
|
|
142
|
+
if (leftEnd === link.contentStart)
|
|
143
|
+
leftEnd = link.start;
|
|
144
|
+
else {
|
|
145
|
+
closers += bytes.raw.slice(link.contentEnd, link.end);
|
|
146
|
+
closed.push(link.kind);
|
|
147
|
+
}
|
|
148
|
+
if (rightStart === link.contentEnd)
|
|
149
|
+
rightStart = link.end;
|
|
150
|
+
else {
|
|
151
|
+
openers = bytes.raw.slice(link.start, link.contentStart) + openers;
|
|
152
|
+
reopened.push(link.kind);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
head: bytes.raw.slice(0, leftEnd),
|
|
157
|
+
closers,
|
|
158
|
+
openers,
|
|
159
|
+
tail: bytes.raw.slice(rightStart, bytes.contentEnd),
|
|
160
|
+
closed,
|
|
161
|
+
reopened
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
const assemble = (bytes, seam) => ({
|
|
165
|
+
firstRaw: seam.head + seam.closers + bytes.firstResidue,
|
|
166
|
+
secondRaw: seam.openers + seam.tail + bytes.secondResidue
|
|
167
|
+
});
|
|
168
|
+
/**
|
|
169
|
+
* The same seam with a boundary space handed to the plain text beside it. Markdown opens and
|
|
170
|
+
* closes a run against a word, never whitespace, so a space left inside kills the construct; a
|
|
171
|
+
* space's formatting is invisible, so moving it is the reading that parses and looks unchanged.
|
|
172
|
+
*/
|
|
173
|
+
function assembleSpaceOutside(bytes, seam) {
|
|
174
|
+
const trailing = seam.closers !== '' && seam.head.endsWith(' ');
|
|
175
|
+
const leading = seam.openers !== '' && seam.tail.startsWith(' ');
|
|
176
|
+
if (!trailing && !leading)
|
|
177
|
+
return null;
|
|
178
|
+
return {
|
|
179
|
+
firstRaw: (trailing ? seam.head.slice(0, -1) + seam.closers + ' ' : seam.head + seam.closers) +
|
|
180
|
+
bytes.firstResidue,
|
|
181
|
+
secondRaw: (leading ? ' ' + seam.openers + seam.tail.slice(1) : seam.openers + seam.tail) +
|
|
182
|
+
bytes.secondResidue
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* The seam with a whitespace-only tail dropped rather than handed to either half. A block's
|
|
187
|
+
* TERMINAL whitespace is a hard break with no following line, so it paints nothing, and
|
|
188
|
+
* live-mode.md § 4.5 licenses live to drop what it never showed.
|
|
189
|
+
*/
|
|
190
|
+
function assembleDroppingTerminalTrivia(bytes, seam) {
|
|
191
|
+
if (seam.openers !== '' || seam.tail === '' || seam.tail.trim() !== '')
|
|
192
|
+
return null;
|
|
193
|
+
return {
|
|
194
|
+
firstRaw: seam.head + seam.closers + bytes.firstResidue,
|
|
195
|
+
secondRaw: bytes.secondResidue,
|
|
196
|
+
droppedTail: seam.tail
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* A candidate answers every question below or it is not written. Exported for the verification
|
|
201
|
+
* test, which has to reach it with a candidate no producer here would build.
|
|
202
|
+
*/
|
|
203
|
+
export function parsesBack(bytes, seam, candidate, resolver) {
|
|
204
|
+
const first = soleProseBlock(candidate.firstRaw, resolver);
|
|
205
|
+
const second = soleProseBlock(candidate.secondRaw, resolver);
|
|
206
|
+
if (first === null || second === null)
|
|
207
|
+
return false;
|
|
208
|
+
// Each half must be a block the RELOAD keeps. Empty is one; whitespace-only is not, since the
|
|
209
|
+
// document reads those bytes as blank trivia and the pair comes back a different shape.
|
|
210
|
+
if (isWhitespaceOnly(first.visible) || isWhitespaceOnly(second.visible))
|
|
211
|
+
return false;
|
|
212
|
+
if (!seam.closed.every((kind) => first.kinds.has(kind)))
|
|
213
|
+
return false;
|
|
214
|
+
if (!seam.reopened.every((kind) => second.kinds.has(kind)))
|
|
215
|
+
return false;
|
|
216
|
+
// The render oracle below counts characters while CSS collapses a terminal run to nothing, so
|
|
217
|
+
// the "screen never showed it" rule is read here rather than trusted from the producer.
|
|
218
|
+
if (candidate.droppedTail !== undefined && candidate.droppedTail.trim() !== '')
|
|
219
|
+
return false;
|
|
220
|
+
const whole = renderedText(parseInline(bytes.raw, bytes.contentStart, bytes.contentEnd, resolver), bytes.raw, CONTENT_VISIBILITY);
|
|
221
|
+
if (!whole.startsWith(first.visible))
|
|
222
|
+
return false;
|
|
223
|
+
// The line ending the cut landed on is the one character a split legitimately consumes; a
|
|
224
|
+
// dropped tail is the only other, and the candidate names those bytes rather than the check
|
|
225
|
+
// inferring them.
|
|
226
|
+
const rest = whole.slice(first.visible.length);
|
|
227
|
+
const tail = second.visible + (candidate.droppedTail ?? '');
|
|
228
|
+
return rest === tail || rest === '\n' + tail || rest === '\r\n' + tail;
|
|
229
|
+
}
|
|
230
|
+
const isWhitespaceOnly = (visible) => visible !== '' && visible.trim() === '';
|
|
231
|
+
function soleProseBlock(raw, resolver) {
|
|
232
|
+
const sole = soleProseReparse(raw, resolver);
|
|
233
|
+
if (sole === null)
|
|
234
|
+
return null;
|
|
235
|
+
return {
|
|
236
|
+
visible: renderedText(sole.nodes, sole.block.raw, CONTENT_VISIBILITY),
|
|
237
|
+
kinds: constructKinds(sole.nodes)
|
|
238
|
+
};
|
|
239
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The space that finishes a container's marker. An opener firing on the bare marker byte
|
|
3
|
+
* (`>`) mints the container before the space arrives, so that space belongs to the marker
|
|
4
|
+
* and not to the empty child the caret landed in. Declared by the container
|
|
5
|
+
* (`contentStartSpace`), never by kind name here.
|
|
6
|
+
*/
|
|
7
|
+
import type { NodeView } from '../../../core/node-views';
|
|
8
|
+
export interface MarkerCompletion {
|
|
9
|
+
/**
|
|
10
|
+
* Claim a bare space at `caretOffset` for the container's marker, or decline it to the
|
|
11
|
+
* content. `parent` is the block's NEAREST ancestor container — a nested quote completes at
|
|
12
|
+
* its own depth — or null at the document root. One claim per child: a claimed space writes
|
|
13
|
+
* nothing, so only this memory tells press 2 from press 1, and press 2 is the only way to
|
|
14
|
+
* type a leading space inside an empty quoted line.
|
|
15
|
+
*/
|
|
16
|
+
claimSpace(node: NodeView, parent: NodeView | null, caretOffset: number): boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare function createMarkerCompletion(): MarkerCompletion;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The space that finishes a container's marker. An opener firing on the bare marker byte
|
|
3
|
+
* (`>`) mints the container before the space arrives, so that space belongs to the marker
|
|
4
|
+
* and not to the empty child the caret landed in. Declared by the container
|
|
5
|
+
* (`contentStartSpace`), never by kind name here.
|
|
6
|
+
*/
|
|
7
|
+
import { displayLength } from '../../../core/lines';
|
|
8
|
+
import { isProseKind } from '../../../core/inline';
|
|
9
|
+
import { tryGetBlockKindDescriptor } from '../../../schema/block-kind-descriptor';
|
|
10
|
+
export function createMarkerCompletion() {
|
|
11
|
+
// The node, not a bare flag: a surface re-used for another child — or the same child re-minted
|
|
12
|
+
// by a commit's copy-path-on-write — owes a fresh completion.
|
|
13
|
+
let claimedFor = null;
|
|
14
|
+
return {
|
|
15
|
+
claimSpace(node, parent, caretOffset) {
|
|
16
|
+
if (caretOffset !== 0 || !parent)
|
|
17
|
+
return false;
|
|
18
|
+
if (!isProseKind(node.kind) || displayLength(node.raw) !== 0)
|
|
19
|
+
return false;
|
|
20
|
+
if (tryGetBlockKindDescriptor(parent.kind)?.contentStartSpace !== 'complete-marker') {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
if (claimedFor === node)
|
|
24
|
+
return false;
|
|
25
|
+
claimedFor = node;
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The bytes an insertion produces while marks are pending. A mark resolves against the caret's
|
|
3
|
+
* construct chain (live-mode.md § 4.3): a kind the chain lacks WRAPS the insertion, a kind it
|
|
4
|
+
* carries escapes it. Flanking rules mean a splice that READS right can PARSE wrong
|
|
5
|
+
* (`**hello**X** world**` renders literal stars), so every candidate is re-parsed and checked.
|
|
6
|
+
*/
|
|
7
|
+
import type { AnyInlineKind, InlineNode } from '../../../core/nodes';
|
|
8
|
+
import { type InlineMarkKind } from '../../../schema/inline-construct-policy';
|
|
9
|
+
export interface MarkedInsertion {
|
|
10
|
+
/** The block's whole display bytes after the insertion. */
|
|
11
|
+
raw: string;
|
|
12
|
+
/** Where the caret lands — after the inserted text, inside whatever now wraps it. */
|
|
13
|
+
caret: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The insertion `text` at `caretOffset` makes under `marks`. Null when the marks name nothing to
|
|
17
|
+
* do, or when no candidate parses back to what was asked — markdown cannot express every
|
|
18
|
+
* combination at every caret, and a byte that types plain beats one that shows delimiters.
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveMarkedInsertion(display: string, caretOffset: number, text: string, marks: ReadonlySet<InlineMarkKind>, inlines: readonly InlineNode[]): MarkedInsertion | null;
|
|
21
|
+
export interface ChainNode {
|
|
22
|
+
kind: AnyInlineKind;
|
|
23
|
+
/** The mark a chord can toggle, or null for a construct no chord addresses. */
|
|
24
|
+
mark: InlineMarkKind | null;
|
|
25
|
+
start: number;
|
|
26
|
+
end: number;
|
|
27
|
+
contentStart: number;
|
|
28
|
+
contentEnd: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* EVERY construct holding `offset`, outermost first: one missing from the chain is missing from
|
|
32
|
+
* `intended`, which is what lets a candidate destroy it unnoticed. A construct with children is
|
|
33
|
+
* content-INCLUSIVE, a childless one STRICT-interior, its edges being ordinary insertion points.
|
|
34
|
+
* Exported for the depth pin, which has to reach it with a tree no insertion this deep could be
|
|
35
|
+
* rendered at.
|
|
36
|
+
*/
|
|
37
|
+
export declare function constructChainAt(offset: number, inlines: readonly InlineNode[]): ChainNode[];
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The bytes an insertion produces while marks are pending. A mark resolves against the caret's
|
|
3
|
+
* construct chain (live-mode.md § 4.3): a kind the chain lacks WRAPS the insertion, a kind it
|
|
4
|
+
* carries escapes it. Flanking rules mean a splice that READS right can PARSE wrong
|
|
5
|
+
* (`**hello**X** world**` renders literal stars), so every candidate is re-parsed and checked.
|
|
6
|
+
*/
|
|
7
|
+
import { constructContentRange, constructKinds, inlineDescendants, parseInline } from '../../../core/inline';
|
|
8
|
+
import { CONTENT_VISIBILITY, renderedText } from '../../../core/inline/visibility';
|
|
9
|
+
import { getInlineConstructPolicy, getInlineMarkPolicy, listInlineMarks } from '../../../schema/inline-construct-policy';
|
|
10
|
+
import { insertsExactly } from './screen-diff';
|
|
11
|
+
/**
|
|
12
|
+
* The insertion `text` at `caretOffset` makes under `marks`. Null when the marks name nothing to
|
|
13
|
+
* do, or when no candidate parses back to what was asked — markdown cannot express every
|
|
14
|
+
* combination at every caret, and a byte that types plain beats one that shows delimiters.
|
|
15
|
+
*/
|
|
16
|
+
export function resolveMarkedInsertion(display, caretOffset, text, marks, inlines) {
|
|
17
|
+
if (marks.size === 0 || text.length === 0)
|
|
18
|
+
return null;
|
|
19
|
+
const chain = constructChainAt(caretOffset, inlines);
|
|
20
|
+
const removed = chain.filter((node) => node.mark !== null && marks.has(node.mark));
|
|
21
|
+
const applied = listInlineMarks()
|
|
22
|
+
.map((entry) => entry.kind)
|
|
23
|
+
.filter((kind) => marks.has(kind) && !chain.some((node) => node.mark === kind));
|
|
24
|
+
const removedKinds = new Set(removed.map((node) => node.kind));
|
|
25
|
+
// What must enclose the inserted text afterwards: every construct the caret was inside minus
|
|
26
|
+
// the ones this chord removes, plus the ones it adds. Non-markable ancestors are in it too —
|
|
27
|
+
// that is what stops an escape from carrying the byte out of a link it was inside.
|
|
28
|
+
const intended = new Set([
|
|
29
|
+
...chain.map((node) => node.kind).filter((kind) => !removedKinds.has(kind)),
|
|
30
|
+
...applied
|
|
31
|
+
]);
|
|
32
|
+
const before = { visible: visibleText(display), kinds: constructKinds(inlines) };
|
|
33
|
+
for (const candidate of candidateInsertions(display, caretOffset, text, chain, removed, intended)) {
|
|
34
|
+
if (parsesAsIntended(candidate, text, intended, before)) {
|
|
35
|
+
return { raw: candidate.raw, caret: candidate.textAt + text.length };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* In preference order: the in-place rewrite first, because a split keeps the user's text where
|
|
42
|
+
* they put it; then stepping outside the removed construct, nearer edge first.
|
|
43
|
+
*/
|
|
44
|
+
function* candidateInsertions(display, caretOffset, text, chain, removed, intended) {
|
|
45
|
+
if (removed.length === 0) {
|
|
46
|
+
// Nothing is escaped, so every construct the caret sits in still provides its kind.
|
|
47
|
+
yield spliceWrapped(display, caretOffset, text, marksToWrite(intended, chain));
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const outermost = removed[0];
|
|
51
|
+
const depth = chain.indexOf(outermost);
|
|
52
|
+
const escaped = chain.slice(depth);
|
|
53
|
+
const outside = chain.slice(0, depth);
|
|
54
|
+
const payload = marksToWrite(intended, outside);
|
|
55
|
+
// A link or a widget between the caret and the construct being escaped cannot be cut open: its
|
|
56
|
+
// closer is not a mirror of its opener the way a mark's is, and splicing inside one writes
|
|
57
|
+
// literal bytes into content. Only stepping outside is available there.
|
|
58
|
+
if (escaped.every((node) => isSymmetricPair(node.kind))) {
|
|
59
|
+
yield splitOpen(display, caretOffset, text, escaped, payload);
|
|
60
|
+
}
|
|
61
|
+
const nearerIsStart = caretOffset - outermost.contentStart <= outermost.contentEnd - caretOffset;
|
|
62
|
+
const sides = nearerIsStart ? [outermost.start, outermost.end] : [outermost.end, outermost.start];
|
|
63
|
+
for (const at of sides)
|
|
64
|
+
yield spliceWrapped(display, at, text, payload);
|
|
65
|
+
}
|
|
66
|
+
/** The marks the insertion must declare for itself: the intended ones its surroundings do not
|
|
67
|
+
* already provide, outermost first. Rows rather than kinds, so nothing downstream can look a
|
|
68
|
+
* marker up and miss. */
|
|
69
|
+
function marksToWrite(intended, provided) {
|
|
70
|
+
return listInlineMarks().filter(({ kind }) => intended.has(kind) && !provided.some((node) => node.kind === kind));
|
|
71
|
+
}
|
|
72
|
+
function spliceWrapped(display, at, text, payload) {
|
|
73
|
+
const openers = payload.map((entry) => entry.mark.markerBytes).join('');
|
|
74
|
+
const closers = [...payload]
|
|
75
|
+
.reverse()
|
|
76
|
+
.map((entry) => entry.mark.markerBytes)
|
|
77
|
+
.join('');
|
|
78
|
+
return {
|
|
79
|
+
raw: display.slice(0, at) + openers + text + closers + display.slice(at),
|
|
80
|
+
textAt: at + openers.length
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/** Close every escaped construct before the insertion and reopen it after — the split that keeps
|
|
84
|
+
* the user's text where they put it. An empty half would leave a pair enclosing nothing, the
|
|
85
|
+
* invisible `****` residue live mode must never mint, so that side steps outside the run. */
|
|
86
|
+
function splitOpen(display, caretOffset, text, escaped, payload) {
|
|
87
|
+
let leftEnd = caretOffset;
|
|
88
|
+
let rightStart = caretOffset;
|
|
89
|
+
let closers = '';
|
|
90
|
+
let openers = '';
|
|
91
|
+
for (const node of [...escaped].reverse()) {
|
|
92
|
+
if (leftEnd === node.contentStart)
|
|
93
|
+
leftEnd = node.start;
|
|
94
|
+
else
|
|
95
|
+
closers += display.slice(node.contentEnd, node.end);
|
|
96
|
+
if (rightStart === node.contentEnd)
|
|
97
|
+
rightStart = node.end;
|
|
98
|
+
else
|
|
99
|
+
openers = display.slice(node.start, node.contentStart) + openers;
|
|
100
|
+
}
|
|
101
|
+
const inner = spliceWrapped('', 0, text, payload);
|
|
102
|
+
return {
|
|
103
|
+
raw: display.slice(0, leftEnd) + closers + inner.raw + openers + display.slice(rightStart),
|
|
104
|
+
textAt: leftEnd + closers.length + inner.textAt
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Three questions, and a candidate answers all of them or it is not written. Did the mark TAKE —
|
|
109
|
+
* do exactly the intended constructs enclose the inserted text? Did every construct the block
|
|
110
|
+
* already held SURVIVE — a delimiter run shared between two pairings rebinds under any splice, and
|
|
111
|
+
* the loser is a construct nobody asked to spend. And is the rewrite invisible otherwise?
|
|
112
|
+
*/
|
|
113
|
+
function parsesAsIntended(candidate, text, intended, before) {
|
|
114
|
+
const nodes = parseInline(candidate.raw, 0, candidate.raw.length);
|
|
115
|
+
const around = enclosingKinds(nodes, candidate.textAt, candidate.textAt + text.length);
|
|
116
|
+
if (around.size !== intended.size)
|
|
117
|
+
return false;
|
|
118
|
+
for (const kind of intended)
|
|
119
|
+
if (!around.has(kind))
|
|
120
|
+
return false;
|
|
121
|
+
const after = constructKinds(nodes);
|
|
122
|
+
for (const kind of before.kinds)
|
|
123
|
+
if (!after.has(kind))
|
|
124
|
+
return false;
|
|
125
|
+
return insertsExactly(before.visible, visibleText(candidate.raw, nodes), text);
|
|
126
|
+
}
|
|
127
|
+
/** The construct kinds covering `[start, end)`; `text` is content, not a construct. */
|
|
128
|
+
function enclosingKinds(nodes, start, end) {
|
|
129
|
+
const covers = (node) => node.start <= start && end <= node.end;
|
|
130
|
+
const kinds = new Set();
|
|
131
|
+
for (const node of inlineDescendants(nodes, covers)) {
|
|
132
|
+
if (covers(node) && node.kind !== 'text')
|
|
133
|
+
kinds.add(node.kind);
|
|
134
|
+
}
|
|
135
|
+
return kinds;
|
|
136
|
+
}
|
|
137
|
+
/** What a reader sees, asked of the thing that actually paints it: only the render path knows
|
|
138
|
+
* which bytes a kind paints as markers (G4.33), so no private walk over the parse. The content
|
|
139
|
+
* reading, not the block's own: the first byte typed into content-empty chrome folds it away, and
|
|
140
|
+
* the diff above would read that fold as bytes lost. This arm only ADDS bytes, so no reading of
|
|
141
|
+
* it licenses dropping one the reader saw. */
|
|
142
|
+
function visibleText(raw, parsed) {
|
|
143
|
+
return renderedText(parsed ?? parseInline(raw, 0, raw.length), raw, CONTENT_VISIBILITY);
|
|
144
|
+
}
|
|
145
|
+
/** Read off the kind's row rather than a second list, so a new format joins in one place. */
|
|
146
|
+
function markOf(kind) {
|
|
147
|
+
return getInlineMarkPolicy(kind) ? kind : null;
|
|
148
|
+
}
|
|
149
|
+
/** Whether a construct's closer mirrors its opener, so a split can close and reopen it. The policy
|
|
150
|
+
* table answers, not this module's mark list: the rule is the table's to change. */
|
|
151
|
+
function isSymmetricPair(kind) {
|
|
152
|
+
return getInlineConstructPolicy(kind)?.edgeAffinity === 'symmetric-pair';
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* EVERY construct holding `offset`, outermost first: one missing from the chain is missing from
|
|
156
|
+
* `intended`, which is what lets a candidate destroy it unnoticed. A construct with children is
|
|
157
|
+
* content-INCLUSIVE, a childless one STRICT-interior, its edges being ordinary insertion points.
|
|
158
|
+
* Exported for the depth pin, which has to reach it with a tree no insertion this deep could be
|
|
159
|
+
* rendered at.
|
|
160
|
+
*/
|
|
161
|
+
export function constructChainAt(offset, inlines) {
|
|
162
|
+
const holds = (node) => holdsOffset(node, offset);
|
|
163
|
+
const chain = [];
|
|
164
|
+
for (const node of inlineDescendants(inlines, holds)) {
|
|
165
|
+
if (!holds(node))
|
|
166
|
+
continue;
|
|
167
|
+
const content = constructContentRange(node);
|
|
168
|
+
chain.push({
|
|
169
|
+
kind: node.kind,
|
|
170
|
+
mark: markOf(node.kind),
|
|
171
|
+
start: node.start,
|
|
172
|
+
end: node.end,
|
|
173
|
+
contentStart: content?.start ?? node.start,
|
|
174
|
+
contentEnd: content?.end ?? node.end
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
return chain;
|
|
178
|
+
}
|
|
179
|
+
/** Whether `offset` sits inside this construct, on the reading the chain doc states. Text is
|
|
180
|
+
* content, and nothing under it is a construct either. */
|
|
181
|
+
function holdsOffset(node, offset) {
|
|
182
|
+
if (node.kind === 'text')
|
|
183
|
+
return false;
|
|
184
|
+
const content = constructContentRange(node);
|
|
185
|
+
return content
|
|
186
|
+
? offset >= content.start && offset <= content.end
|
|
187
|
+
: offset > node.start && offset < node.end;
|
|
188
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a live rewrite claims it did to the SCREEN, as two predicates over the painter's before and
|
|
3
|
+
* after readings (live-mode.md § 2), plus the sole-prose reparse a candidate must survive first.
|
|
4
|
+
* Shared, so the verification arms ask the same questions of the same shapes rather than each
|
|
5
|
+
* carrying its own walk.
|
|
6
|
+
*/
|
|
7
|
+
import type { LinkReferenceResolver } from '../../../core/inline/link-reference-resolver';
|
|
8
|
+
import type { CstNode, InlineNode } from '../../../core/nodes';
|
|
9
|
+
/** Whether `after` is `before` with `text` spliced in at one place and nothing else moved. */
|
|
10
|
+
export declare function insertsExactly(before: string, after: string, text: string): boolean;
|
|
11
|
+
/** Whether `after` is `before` with exactly `removed` gone from one place — the whole claim a cut
|
|
12
|
+
* makes to the reader, asked of the bytes the parser produced rather than the ones it was given. */
|
|
13
|
+
export declare function removesExactly(before: string, after: string, removed: string): boolean;
|
|
14
|
+
/** A candidate's admission gate: its bytes reload as exactly ONE prose block, whose inline tree the
|
|
15
|
+
* caller then reads its own oracle over. Null declines — a reload that splits or re-kinds the
|
|
16
|
+
* block is not what the caller is about to install. */
|
|
17
|
+
export declare function soleProseReparse(raw: string, resolver?: LinkReferenceResolver): {
|
|
18
|
+
block: CstNode;
|
|
19
|
+
nodes: InlineNode[];
|
|
20
|
+
} | null;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a live rewrite claims it did to the SCREEN, as two predicates over the painter's before and
|
|
3
|
+
* after readings (live-mode.md § 2), plus the sole-prose reparse a candidate must survive first.
|
|
4
|
+
* Shared, so the verification arms ask the same questions of the same shapes rather than each
|
|
5
|
+
* carrying its own walk.
|
|
6
|
+
*/
|
|
7
|
+
import { getContentRange, isProseKind, parseInline } from '../../../core/inline';
|
|
8
|
+
import { parse } from '../../../core/parser';
|
|
9
|
+
/** Whether `after` is `before` with `text` spliced in at one place and nothing else moved. */
|
|
10
|
+
export function insertsExactly(before, after, text) {
|
|
11
|
+
if (after.length !== before.length + text.length)
|
|
12
|
+
return false;
|
|
13
|
+
let at = 0;
|
|
14
|
+
while (at < before.length && before[at] === after[at])
|
|
15
|
+
at++;
|
|
16
|
+
return (after.slice(at, at + text.length) === text && after.slice(at + text.length) === before.slice(at));
|
|
17
|
+
}
|
|
18
|
+
/** Whether `after` is `before` with exactly `removed` gone from one place — the whole claim a cut
|
|
19
|
+
* makes to the reader, asked of the bytes the parser produced rather than the ones it was given. */
|
|
20
|
+
export function removesExactly(before, after, removed) {
|
|
21
|
+
if (after.length !== before.length - removed.length)
|
|
22
|
+
return false;
|
|
23
|
+
let at = 0;
|
|
24
|
+
while (at < after.length && before[at] === after[at])
|
|
25
|
+
at++;
|
|
26
|
+
return (before.slice(at, at + removed.length) === removed &&
|
|
27
|
+
after.slice(at) === before.slice(at + removed.length));
|
|
28
|
+
}
|
|
29
|
+
/** A candidate's admission gate: its bytes reload as exactly ONE prose block, whose inline tree the
|
|
30
|
+
* caller then reads its own oracle over. Null declines — a reload that splits or re-kinds the
|
|
31
|
+
* block is not what the caller is about to install. */
|
|
32
|
+
export function soleProseReparse(raw, resolver) {
|
|
33
|
+
const blocks = parse(raw, { scope: 'fragment' }).children;
|
|
34
|
+
if (blocks.length !== 1 || !isProseKind(blocks[0].kind))
|
|
35
|
+
return null;
|
|
36
|
+
const block = blocks[0];
|
|
37
|
+
const range = getContentRange(block);
|
|
38
|
+
return { block, nodes: parseInline(block.raw, range.start, range.end, resolver) };
|
|
39
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clipboard handler bodies for TextEditableBlock; the component keeps the
|
|
3
|
+
* oncopy/oncut/onpaste bindings.
|
|
4
|
+
*/
|
|
5
|
+
import type { BlockEditActions } from '../../../action-contracts';
|
|
6
|
+
import type { NodeView } from '../../../core/node-views';
|
|
7
|
+
import type { DocumentGetter, LinkReferenceResolverRef, PasteImageHook } from '../../../editor-keys';
|
|
8
|
+
import type { EditorEvents } from '../../../editor-events';
|
|
9
|
+
import type { WidgetSelectionState } from '../../image/widget-selection-state.svelte';
|
|
10
|
+
import type { AmbientCursorIO } from '../../../ambient/ambient-cursor';
|
|
11
|
+
import type { CrossBlockHandlers } from '../../../selection/cross-block/dispatch';
|
|
12
|
+
import type { PasteCommitCoordinator } from '../../../tree-operations/paste/paste-deps';
|
|
13
|
+
import type { GrammarView } from '../../../schema/block-openers';
|
|
14
|
+
import type { PluginActivation } from '../../../schema/plugin-activation';
|
|
15
|
+
import type { SelectionState } from '../../../selection/selection-state.svelte';
|
|
16
|
+
import type { StickyColumnState } from '../../../cursor/sticky-column';
|
|
17
|
+
import type { EdgeAffinityState } from '../../../cursor/edge-affinity';
|
|
18
|
+
import { type ClipboardCaretIO, type ClipboardHandlers, type RevealFold } from '../editable-surface';
|
|
19
|
+
import type { PresentationMode } from '../../../presentation-mode';
|
|
20
|
+
export interface TextClipboardDeps {
|
|
21
|
+
get node(): NodeView;
|
|
22
|
+
get index(): number;
|
|
23
|
+
get myPath(): number[];
|
|
24
|
+
/** Local caret reads go through `cursor`; `caret` is the narrower door the shared
|
|
25
|
+
* clipboard seam anchors an image insertion with, a passthrough never read here. */
|
|
26
|
+
cursor: AmbientCursorIO;
|
|
27
|
+
caret: ClipboardCaretIO;
|
|
28
|
+
crossBlock: CrossBlockHandlers;
|
|
29
|
+
events: EditorEvents;
|
|
30
|
+
onPasteImage: PasteImageHook | undefined;
|
|
31
|
+
selection: SelectionState;
|
|
32
|
+
stickyColumn: StickyColumnState;
|
|
33
|
+
edgeAffinity: EdgeAffinityState;
|
|
34
|
+
blockEdit: BlockEditActions;
|
|
35
|
+
pasteCoordinator: PasteCommitCoordinator;
|
|
36
|
+
/** The instance grammar, so an unlisted plugin's opener never claims pasted bytes here. */
|
|
37
|
+
grammar: GrammarView | undefined;
|
|
38
|
+
/** The plugins this instance activated, so an unlisted plugin's paste transform stays out. */
|
|
39
|
+
activePlugins: PluginActivation;
|
|
40
|
+
getDoc: DocumentGetter;
|
|
41
|
+
widgetSelection: WidgetSelectionState;
|
|
42
|
+
setPendingCursor: (offset: number | null) => void;
|
|
43
|
+
/** Reading mode: cut degrades to copy, paste is inert. The events still fire
|
|
44
|
+
* on a non-editable surface, so the gate lives in the handlers. */
|
|
45
|
+
isReadOnly: () => boolean;
|
|
46
|
+
/** Fold a live source-reveal before a clipboard mutation, so cut/paste run against
|
|
47
|
+
* a CST consistent with the swapped DOM. Null when no reveal was open. */
|
|
48
|
+
foldRevealBeforeMutation: () => RevealFold | null;
|
|
49
|
+
/** True while an inline-widget source reveal is active on this block. */
|
|
50
|
+
isRevealing: () => boolean;
|
|
51
|
+
/** The effective mode the cut's join seam answers to (live-mode.md § 4.5); `undefined` reads
|
|
52
|
+
* as not-live. */
|
|
53
|
+
getPresentationMode: () => PresentationMode | undefined;
|
|
54
|
+
/** The container prefix this block renders under, which the cut's seam reads its candidate
|
|
55
|
+
* back through — an item body the cut left starting with a space reloads under a wider marker. */
|
|
56
|
+
getAmbientPrefix: () => string;
|
|
57
|
+
/** The block's live DOM as raw text, so a copy over a revealed (uncommitted) edit
|
|
58
|
+
* yields what the user sees rather than the stale raw slice. */
|
|
59
|
+
readRevealedText: () => string;
|
|
60
|
+
get linkRef(): LinkReferenceResolverRef | undefined;
|
|
61
|
+
}
|
|
62
|
+
export interface TextClipboard extends ClipboardHandlers {
|
|
63
|
+
/**
|
|
64
|
+
* The block's own handler for a copy/cut/paste the editor root received: a selected widget
|
|
65
|
+
* clears the native selection, so a block with no text position for a caret to survive in
|
|
66
|
+
* gets its events at `<body>`, where no surface binding sees them.
|
|
67
|
+
*/
|
|
68
|
+
claimRootClipboard(event: ClipboardEvent): void;
|
|
69
|
+
}
|
|
70
|
+
export declare function createTextClipboard(deps: TextClipboardDeps): TextClipboard;
|