@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,410 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The editable-leaf seam a plugin block component builds on: a text-editing block surface with
|
|
3
|
+
* native caret/IME/undo/cross-block-selection parity, in one factory so a plugin never touches an
|
|
4
|
+
* editor context key. Two modes: `plain` commits per keystroke, `render-primary` reveals its
|
|
5
|
+
* source and commits on blur. Call synchronously during init. Contract: plugin-guide § The
|
|
6
|
+
* editable leaf.
|
|
7
|
+
*/
|
|
8
|
+
import { getContext } from 'svelte';
|
|
9
|
+
import { createAttachmentKey } from 'svelte/attachments';
|
|
10
|
+
import { EDITOR_POLICIES_KEY, EDITOR_SERVICES_KEY } from '../../editor-keys';
|
|
11
|
+
import { asDomTextOffset } from '../../cursor/coordinate-spaces';
|
|
12
|
+
import { setCursorOffset, getCursorOffset, getSelectionOffsets } from '../../cursor/content-offsets';
|
|
13
|
+
import { handleSharedKeydown } from '../../selection/shared-keydown';
|
|
14
|
+
import { createEditableSurface, createClipboardHandlers, consumePendingRestore } from './editable-surface';
|
|
15
|
+
import { wireSurfaceContexts } from './surface-wiring.svelte';
|
|
16
|
+
import { createContentOffsetBackend, anchorTrailingNewline } from './plain-text-backend';
|
|
17
|
+
import { parkFocusOnEditorRoot } from '../../selection/native-bridge';
|
|
18
|
+
import { resetForPointerDown } from '../../selection/cross-block/pointer';
|
|
19
|
+
import { placeCaret } from '../../selection/caret-doors';
|
|
20
|
+
import { createSourceReveal } from '../../cursor/reveal-source';
|
|
21
|
+
import { traceRevealOpen, traceRevealFold } from '../../debug/interaction-trace';
|
|
22
|
+
import { trimTrailingLineEnding, trailingLineEnding } from '../../core/lines';
|
|
23
|
+
import { tryGetBlockKindDescriptor } from '../../schema/block-kind-descriptor';
|
|
24
|
+
import {} from '../../schema/commands';
|
|
25
|
+
import {} from '../../schema/block-commands';
|
|
26
|
+
import { owningPluginEditor } from '../../schema/plugin-install';
|
|
27
|
+
import { reorderRunCommand } from '../../editor-actions/reorder-action';
|
|
28
|
+
/**
|
|
29
|
+
* The node → metadata bridge (plus `commandHooks`) a minted block command resolves
|
|
30
|
+
* against on the leaf tier — the container factory's `buildContainerKindTarget` sibling.
|
|
31
|
+
* Every field reads through `deps`' thunks at dispatch, so a node swap or hook rebind is
|
|
32
|
+
* observed live; `pluginEditor` resolves by the kind's recorded owner.
|
|
33
|
+
*/
|
|
34
|
+
export function buildLeafCommandContext(deps, blockEdit, pluginEditor) {
|
|
35
|
+
return {
|
|
36
|
+
node: deps.getNode(),
|
|
37
|
+
updateMetadata: (patch) => void blockEdit.updateBlockMetadata(deps.getIndex(), patch),
|
|
38
|
+
hooks: deps.commandHooks?.(),
|
|
39
|
+
editor: owningPluginEditor(pluginEditor, deps.getNode().kind)
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export function createEditableLeaf(deps) {
|
|
43
|
+
const mode = deps.mode ?? 'plain';
|
|
44
|
+
const singleLine = deps.singleLine ?? false;
|
|
45
|
+
if (mode === 'render-primary' && (!deps.isRevealed || !deps.setRevealed)) {
|
|
46
|
+
throw new Error('createEditableLeaf: render-primary mode requires isRevealed + setRevealed');
|
|
47
|
+
}
|
|
48
|
+
// Plain mode's source is always the editable view.
|
|
49
|
+
const isRevealed = mode === 'render-primary' ? deps.isRevealed : () => true;
|
|
50
|
+
const wiring = wireSurfaceContexts();
|
|
51
|
+
const { blockEdit, stickyColumn, edgeAffinity, selection, getDoc, getBlockElByPath, getEditorRoot, pluginEditor, events: editorEvents } = wiring.deps;
|
|
52
|
+
const { reorder } = getContext(EDITOR_SERVICES_KEY);
|
|
53
|
+
const { presentationMode: getPresentationModeCtx, theme: getThemeCtx, onPasteImage } = getContext(EDITOR_POLICIES_KEY);
|
|
54
|
+
const getPresentationMode = () => getPresentationModeCtx?.() ?? 'source';
|
|
55
|
+
const getTheme = () => getThemeCtx?.() ?? 'dark';
|
|
56
|
+
// Resolved by the kind's recorded owner, like the command context's `editor`.
|
|
57
|
+
const getOptions = () => owningPluginEditor(pluginEditor, deps.getNode().kind)?.options;
|
|
58
|
+
const isReading = () => getPresentationMode() === 'reading';
|
|
59
|
+
let composing = false;
|
|
60
|
+
let preEditOffset = 0;
|
|
61
|
+
let pendingCursor = null;
|
|
62
|
+
/** The bytes the open reveal was measured against; null while folded. */
|
|
63
|
+
let revealedBase = null;
|
|
64
|
+
const sourceText = () => trimTrailingLineEnding(deps.getNode().raw);
|
|
65
|
+
const { backend, getFocusOffset, getTextLen, readText } = createContentOffsetBackend(() => deps.getEl());
|
|
66
|
+
const editableSurface = createEditableSurface({
|
|
67
|
+
...wiring.deps,
|
|
68
|
+
getEl: () => deps.getEl(),
|
|
69
|
+
getAmbientLength: () => 0,
|
|
70
|
+
// render-primary edits are ephemeral (one commit on blur); plain commits per keystroke.
|
|
71
|
+
isInputSuppressed: () => mode === 'render-primary',
|
|
72
|
+
backend,
|
|
73
|
+
getMyPath: deps.getPath,
|
|
74
|
+
getIndex: deps.getIndex,
|
|
75
|
+
getComposing: () => composing,
|
|
76
|
+
setComposing: (value) => {
|
|
77
|
+
composing = value;
|
|
78
|
+
},
|
|
79
|
+
getPreEditOffset: () => preEditOffset,
|
|
80
|
+
setPreEditOffset: (offset) => {
|
|
81
|
+
preEditOffset = offset;
|
|
82
|
+
},
|
|
83
|
+
// render-primary never restores a pending caret — focus has already left on
|
|
84
|
+
// commit, and a re-render must not yank it back.
|
|
85
|
+
setPendingCursor: (offset) => {
|
|
86
|
+
if (mode === 'plain')
|
|
87
|
+
pendingCursor = offset;
|
|
88
|
+
},
|
|
89
|
+
getPresentationMode,
|
|
90
|
+
getFocusOffset,
|
|
91
|
+
getTextLen,
|
|
92
|
+
readText,
|
|
93
|
+
commitInput: (text, preEdit, saved) => {
|
|
94
|
+
// !isReading: the leaf is the seam — even if a plain-mode component keeps
|
|
95
|
+
// its source editable in reading mode, nothing reaches the CST.
|
|
96
|
+
if (mode === 'plain' && !isReading()) {
|
|
97
|
+
void blockEdit.updateBlockContent(deps.getIndex(), text + trailingLineEnding(deps.getNode().raw), preEdit, saved);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
const surface = editableSurface.surface;
|
|
102
|
+
const crossBlock = editableSurface.crossBlock;
|
|
103
|
+
// The caret core; the swap is the component's reveal flag. Blocks commit on blur via
|
|
104
|
+
// `commitReveal`, never the kernel's Escape-cancel `commit()`, so only `reveal()` is
|
|
105
|
+
// driven here. Plain mode's swap thunks are inert.
|
|
106
|
+
const revealKernel = createSourceReveal({
|
|
107
|
+
get container() {
|
|
108
|
+
return deps.getEl();
|
|
109
|
+
},
|
|
110
|
+
get sourceStart() {
|
|
111
|
+
return 0;
|
|
112
|
+
},
|
|
113
|
+
get sourceEnd() {
|
|
114
|
+
return sourceText().length;
|
|
115
|
+
},
|
|
116
|
+
get source() {
|
|
117
|
+
return sourceText();
|
|
118
|
+
},
|
|
119
|
+
getAmbientLength: () => 0,
|
|
120
|
+
isRevealed,
|
|
121
|
+
// The one point block source is shown — the kernel calls it only when not
|
|
122
|
+
// already revealed, so it fires once per open.
|
|
123
|
+
showSource: () => {
|
|
124
|
+
traceRevealOpen('leaf');
|
|
125
|
+
revealedBase = sourceText();
|
|
126
|
+
deps.setRevealed?.(true);
|
|
127
|
+
},
|
|
128
|
+
showRendered: () => {
|
|
129
|
+
revealedBase = null;
|
|
130
|
+
deps.setRevealed?.(false);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
// ── Commit ─────────────────────────────────────────────────────────────────
|
|
134
|
+
// Returns the commit's own promise, so a caller that has to act on the committed bytes
|
|
135
|
+
// (a single-line Enter's split) can wait for the write to land.
|
|
136
|
+
function commitSource(edited) {
|
|
137
|
+
// One undo entry: the anchor is where the caret entered the edit; the post-edit
|
|
138
|
+
// caret follows the edit position.
|
|
139
|
+
return Promise.resolve(blockEdit.updateBlockContent(deps.getIndex(), edited + trailingLineEnding(deps.getNode().raw), preEditOffset, edited.length));
|
|
140
|
+
}
|
|
141
|
+
async function commitReveal() {
|
|
142
|
+
if (mode !== 'render-primary' || !isRevealed())
|
|
143
|
+
return;
|
|
144
|
+
// A cross-block selection sweeping through keeps the source revealed so its rects
|
|
145
|
+
// measure real text, and focusout is this fold's only entry — so the leaf stays in
|
|
146
|
+
// source view until the user focuses it and leaves again.
|
|
147
|
+
if (selection.isCrossBlock)
|
|
148
|
+
return;
|
|
149
|
+
// Only wired to onFocusOut — the block leaf folds on blur, never Escape-cancel.
|
|
150
|
+
traceRevealFold('blur');
|
|
151
|
+
const edited = deps.getEl()?.textContent ?? sourceText();
|
|
152
|
+
const base = revealedBase;
|
|
153
|
+
revealedBase = null;
|
|
154
|
+
deps.setRevealed(false); // reactive re-render of the edited source
|
|
155
|
+
// The fold writes back only what the reveal measured. An undo, or a `source` prop swap,
|
|
156
|
+
// can seat a DIFFERENT document at this index before focusout fires — the component is
|
|
157
|
+
// destroyed and the blur arrives on the way out, so these bytes belong to a block that is
|
|
158
|
+
// no longer here and writing them corrupts the one that is (#161).
|
|
159
|
+
if (base !== null && base !== sourceText())
|
|
160
|
+
return;
|
|
161
|
+
if (edited === sourceText())
|
|
162
|
+
return; // pure view toggle, nothing for the CST
|
|
163
|
+
await commitSource(edited);
|
|
164
|
+
}
|
|
165
|
+
// ── BlockComponent surface ─────────────────────────────────────────────────
|
|
166
|
+
function parkCaret(offset) {
|
|
167
|
+
if (mode === 'render-primary') {
|
|
168
|
+
// Reading mode: a rendered view has no source to reveal; focus is a no-op
|
|
169
|
+
// and block-level traversal passes over.
|
|
170
|
+
if (isReading())
|
|
171
|
+
return;
|
|
172
|
+
void revealKernel.reveal(offset);
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
surface.parkCaret(offset);
|
|
176
|
+
}
|
|
177
|
+
const focus = placeCaret(selection, parkCaret);
|
|
178
|
+
// Sticky-column entry: mount the source, then land at the column nearest x
|
|
179
|
+
// on the first/last visual line — the code-block traversal contract.
|
|
180
|
+
function focusAtColumn(x, from) {
|
|
181
|
+
void (async () => {
|
|
182
|
+
if (!isRevealed()) {
|
|
183
|
+
if (isReading())
|
|
184
|
+
return;
|
|
185
|
+
// Through the kernel like every other open, so this entry gets the same trace pair,
|
|
186
|
+
// length assert and reveal base; it seats a caret at 0, which the column re-seats.
|
|
187
|
+
await revealKernel.reveal();
|
|
188
|
+
}
|
|
189
|
+
if (!deps.getEl())
|
|
190
|
+
return;
|
|
191
|
+
surface.focusAtColumn(x, from);
|
|
192
|
+
})();
|
|
193
|
+
}
|
|
194
|
+
function runCommand(id) {
|
|
195
|
+
return reorderRunCommand(id, reorder, deps.getPath);
|
|
196
|
+
}
|
|
197
|
+
const getCommandContext = () => buildLeafCommandContext(deps, blockEdit, pluginEditor);
|
|
198
|
+
// ── View sync ──────────────────────────────────────────────────────────────
|
|
199
|
+
function syncSource() {
|
|
200
|
+
const text = sourceText();
|
|
201
|
+
const el = deps.getEl();
|
|
202
|
+
if (!el)
|
|
203
|
+
return;
|
|
204
|
+
const pending = pendingCursor;
|
|
205
|
+
pendingCursor = null;
|
|
206
|
+
if ((el.textContent ?? '') !== text) {
|
|
207
|
+
el.textContent = text;
|
|
208
|
+
anchorTrailingNewline(el);
|
|
209
|
+
// Restore only under a live caret — an external rewrite (undo, structural
|
|
210
|
+
// replace) must not steal focus.
|
|
211
|
+
consumePendingRestore(el, pending, (offset) => setCursorOffset(el, asDomTextOffset(offset)));
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
// ── Event handlers ─────────────────────────────────────────────────────────
|
|
215
|
+
// Splice `insert` over the source text node's [start, end) and reseat the caret. A
|
|
216
|
+
// DOM-text mutation keeps the offset walk exact where a native Enter/cut/paste would
|
|
217
|
+
// inject <div>/<br> that vanish from textContent.
|
|
218
|
+
function spliceSourceText(el, start, end, insert) {
|
|
219
|
+
const text = el.textContent ?? '';
|
|
220
|
+
el.textContent = text.slice(0, start) + insert + text.slice(end);
|
|
221
|
+
anchorTrailingNewline(el);
|
|
222
|
+
preEditOffset = start;
|
|
223
|
+
setCursorOffset(el, asDomTextOffset(start + insert.length));
|
|
224
|
+
if (mode === 'plain')
|
|
225
|
+
editableSurface.onInput();
|
|
226
|
+
}
|
|
227
|
+
// ── Clipboard ────────────────────────────────────────────────────────────
|
|
228
|
+
// The leaf's DOM-text space IS its raw, so copy falls to the seam's visible-selection
|
|
229
|
+
// default and cut/paste splice verbatim. No structural paste hook: the commit
|
|
230
|
+
// re-parses the whole raw, re-splitting only where the grammar demands. No reveal
|
|
231
|
+
// fold — the render-primary source folds on blur instead.
|
|
232
|
+
const clipboard = createClipboardHandlers({
|
|
233
|
+
stickyColumn,
|
|
234
|
+
edgeAffinity,
|
|
235
|
+
selection,
|
|
236
|
+
getDoc,
|
|
237
|
+
crossBlock,
|
|
238
|
+
isReadOnly: isReading,
|
|
239
|
+
caret: editableSurface.caret,
|
|
240
|
+
events: editorEvents,
|
|
241
|
+
onPasteImage,
|
|
242
|
+
cutTail: (e) => {
|
|
243
|
+
const el = deps.getEl();
|
|
244
|
+
if (!el)
|
|
245
|
+
return;
|
|
246
|
+
const sel = getSelectionOffsets(el);
|
|
247
|
+
if (!sel || sel.start === sel.end)
|
|
248
|
+
return;
|
|
249
|
+
e.clipboardData?.setData('text/plain', (el.textContent ?? '').slice(sel.start, sel.end));
|
|
250
|
+
spliceSourceText(el, sel.start, sel.end, '');
|
|
251
|
+
},
|
|
252
|
+
pasteTail: (pastedText) => {
|
|
253
|
+
const el = deps.getEl();
|
|
254
|
+
if (!el)
|
|
255
|
+
return;
|
|
256
|
+
const sel = getSelectionOffsets(el);
|
|
257
|
+
const start = sel ? sel.start : (getCursorOffset(el) ?? (el.textContent ?? '').length);
|
|
258
|
+
const end = sel ? sel.end : start;
|
|
259
|
+
spliceSourceText(el, start, end, pastedText);
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
/** Resolve a chord at this leaf's kind and report whether it was consumed. Both views spend
|
|
263
|
+
* it: undo belongs to the block whatever half of the swap holds focus. */
|
|
264
|
+
const dispatchChord = (e) => wiring.dispatchChord(e, { kind: deps.getNode().kind, runCommand, getCommandContext });
|
|
265
|
+
async function handleKeydown(e) {
|
|
266
|
+
const el = deps.getEl();
|
|
267
|
+
if (composing || !el)
|
|
268
|
+
return;
|
|
269
|
+
preEditOffset = getCursorOffset(el) ?? 0;
|
|
270
|
+
if ((await handleSharedKeydown(e, editableSurface.sharedCtx)) || editableSurface.isDetached())
|
|
271
|
+
return;
|
|
272
|
+
if (dispatchChord(e))
|
|
273
|
+
return;
|
|
274
|
+
// Enter stays inside the leaf as a literal newline (multiline source); it never splits
|
|
275
|
+
// the block, and plain mode commits the insertion. A single-line leaf has nowhere to put
|
|
276
|
+
// that byte, so it spends the press on the document instead.
|
|
277
|
+
if (e.key === 'Enter') {
|
|
278
|
+
e.preventDefault();
|
|
279
|
+
if (isReading())
|
|
280
|
+
return;
|
|
281
|
+
// Read before any fold: `setRevealed(false)` unmounts the element the offset lives in.
|
|
282
|
+
const offset = getCursorOffset(el) ?? (el.textContent ?? '').length;
|
|
283
|
+
if (singleLine) {
|
|
284
|
+
// Through the fold, not a bare commit: it is the one door deciding whether an open
|
|
285
|
+
// reveal's bytes may still be written, and the split reads `node.raw` after it.
|
|
286
|
+
await commitReveal();
|
|
287
|
+
await blockEdit.splitBlock(deps.getIndex(), offset);
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
spliceSourceText(el, offset, offset, '\n');
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
function onPointerDown(e) {
|
|
294
|
+
void crossBlock.handlePointerDown(e);
|
|
295
|
+
}
|
|
296
|
+
// The rendered view and the source are different strings, so only the kind can map a point
|
|
297
|
+
// to a source offset: `caretTargetAtPoint` is that one declaration, and a kind naming none
|
|
298
|
+
// reveals at the source start. The host, not the component root, is what the hook is bound to.
|
|
299
|
+
function revealOffsetAt(e) {
|
|
300
|
+
const host = getBlockElByPath(deps.getPath())?.closest('[data-block-path]');
|
|
301
|
+
if (!(host instanceof HTMLElement))
|
|
302
|
+
return 0;
|
|
303
|
+
const descriptor = tryGetBlockKindDescriptor(deps.getNode().kind);
|
|
304
|
+
return descriptor?.caretTargetAtPoint?.(host, e.clientX, e.clientY)?.offset ?? 0;
|
|
305
|
+
}
|
|
306
|
+
function onRenderPointerDown(e) {
|
|
307
|
+
// Shift-click extends a selection; a plain click reveals. Reading mode: no reveal
|
|
308
|
+
// and no preventDefault, so native selection over the rendered view stays live.
|
|
309
|
+
if (e.shiftKey || isReading())
|
|
310
|
+
return;
|
|
311
|
+
e.preventDefault();
|
|
312
|
+
// The reveal lands a caret, so this owes the shared preamble. NOT through
|
|
313
|
+
// crossBlock.handlePointerDown: that hit-tests against the SOURCE text, which the
|
|
314
|
+
// rendered view is not.
|
|
315
|
+
resetForPointerDown(selection, stickyColumn, edgeAffinity, e.shiftKey);
|
|
316
|
+
void revealKernel.reveal(revealOffsetAt(e));
|
|
317
|
+
}
|
|
318
|
+
// The revealed source owns the press and has already spent the chord, so a spread the fold
|
|
319
|
+
// does not unmount must not re-run either on the way up.
|
|
320
|
+
const renderProps = {
|
|
321
|
+
onpointerdown: (e) => {
|
|
322
|
+
if (!isRevealed())
|
|
323
|
+
onRenderPointerDown(e);
|
|
324
|
+
},
|
|
325
|
+
onkeydown: (e) => {
|
|
326
|
+
if (!isRevealed())
|
|
327
|
+
void dispatchChord(e);
|
|
328
|
+
}
|
|
329
|
+
};
|
|
330
|
+
// ── Source surface bundle ────────────────────────────────────────────────────
|
|
331
|
+
const surfaceHandlers = {
|
|
332
|
+
tabindex: 0,
|
|
333
|
+
role: 'textbox',
|
|
334
|
+
spellcheck: 'false',
|
|
335
|
+
oninput: editableSurface.onInput,
|
|
336
|
+
onkeydown: handleKeydown,
|
|
337
|
+
oncopy: clipboard.onCopy,
|
|
338
|
+
oncut: clipboard.onCut,
|
|
339
|
+
onpaste: clipboard.onPaste,
|
|
340
|
+
onpointerdown: onPointerDown,
|
|
341
|
+
onfocusout: () => void commitReveal(),
|
|
342
|
+
oncompositionstart: editableSurface.onCompositionStart,
|
|
343
|
+
oncompositionend: editableSurface.onCompositionEnd
|
|
344
|
+
};
|
|
345
|
+
// Both modes mirror external raw changes (undo, structural replace) into the source —
|
|
346
|
+
// tracked, so it re-runs on raw change. A render-primary edit is ephemeral until blur, so
|
|
347
|
+
// nothing else moves the raw mid-edit and the mirror cannot clobber an in-flight one. No
|
|
348
|
+
// cleanup, so it never parks focus mid-edit.
|
|
349
|
+
const syncAttachment = () => {
|
|
350
|
+
syncSource();
|
|
351
|
+
};
|
|
352
|
+
// Park focus when the source unmounts. A separate, stable, untracked attachment, so a
|
|
353
|
+
// recompute of the spread never fires the park mid-edit.
|
|
354
|
+
const parkAttachment = (el) => () => parkFocusOnEditorRoot(el, getEditorRoot());
|
|
355
|
+
// The mode splits the rest of the view-lifecycle contract: render-primary's
|
|
356
|
+
// `contenteditable` is constant, since reveal never fires in reading mode.
|
|
357
|
+
const surfaceProps = mode === 'render-primary'
|
|
358
|
+
? {
|
|
359
|
+
...surfaceHandlers,
|
|
360
|
+
contenteditable: 'true',
|
|
361
|
+
[createAttachmentKey()]: syncAttachment,
|
|
362
|
+
[createAttachmentKey()]: parkAttachment
|
|
363
|
+
}
|
|
364
|
+
: {
|
|
365
|
+
...surfaceHandlers,
|
|
366
|
+
get contenteditable() {
|
|
367
|
+
return isReading() ? 'false' : 'true';
|
|
368
|
+
},
|
|
369
|
+
[createAttachmentKey()]: syncAttachment,
|
|
370
|
+
[createAttachmentKey()]: parkAttachment
|
|
371
|
+
};
|
|
372
|
+
return {
|
|
373
|
+
get sourceText() {
|
|
374
|
+
return sourceText();
|
|
375
|
+
},
|
|
376
|
+
surfaceProps,
|
|
377
|
+
renderProps,
|
|
378
|
+
getPresentationMode,
|
|
379
|
+
getTheme,
|
|
380
|
+
getOptions,
|
|
381
|
+
focus,
|
|
382
|
+
parkCaret,
|
|
383
|
+
focusAtColumn,
|
|
384
|
+
getCursorOffset: () => (isRevealed() ? surface.getCursorOffset() : null),
|
|
385
|
+
getSelectedText: () => (isRevealed() ? surface.getSelectedText() : ''),
|
|
386
|
+
setSelection: (start, end) => {
|
|
387
|
+
if (isRevealed())
|
|
388
|
+
surface.setSelection(start, end);
|
|
389
|
+
},
|
|
390
|
+
measurePartialRects: (startOffset, endOffset) => {
|
|
391
|
+
if (isRevealed())
|
|
392
|
+
return surface.measurePartialRects(startOffset, endOffset);
|
|
393
|
+
// Folded render-primary leaf: no source text node to measure, so mirror the
|
|
394
|
+
// opaque single-unit container shim and cover the rendered block box for any
|
|
395
|
+
// non-empty range (SELECTION_END exceeds every real start, so to-end paints too).
|
|
396
|
+
if (endOffset <= startOffset)
|
|
397
|
+
return [];
|
|
398
|
+
const box = getBlockElByPath(deps.getPath());
|
|
399
|
+
return box ? [box.getBoundingClientRect()] : [];
|
|
400
|
+
},
|
|
401
|
+
runCommand,
|
|
402
|
+
insertMarkdown: clipboard.insertMarkdown,
|
|
403
|
+
reveal: (offset = 0) => {
|
|
404
|
+
if (mode !== 'render-primary')
|
|
405
|
+
return Promise.resolve(surface.focus(offset));
|
|
406
|
+
return isReading() ? Promise.resolve() : revealKernel.reveal(offset);
|
|
407
|
+
},
|
|
408
|
+
commitSource: (edited) => void commitSource(edited)
|
|
409
|
+
};
|
|
410
|
+
}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared editable-surface plumbing for the core contenteditable blocks (TextEditableBlock,
|
|
3
|
+
* CodeBlock, TableCellBlock) and the `editable-leaf` seam: cross-block wiring, the
|
|
4
|
+
* SharedKeydownContext, the BlockComponent surface methods, the input/composition + clipboard
|
|
5
|
+
* skeletons. Each consumer supplies a CursorBackend for its own coordinate system plus the input
|
|
6
|
+
* commit; mutable block state crosses the seam as live thunks, never as snapshots.
|
|
7
|
+
*/
|
|
8
|
+
import type { BlockEditActions, FocusActions, HistoryActions } from '../../action-contracts';
|
|
9
|
+
import { type StickyColumnDirection } from '../../block-component';
|
|
10
|
+
import type { UserScrollport } from '../../cursor/scroll-ancestors';
|
|
11
|
+
import type { BlockElLookup, DocumentGetter, PasteImageHook, PluginEditorLookup, LinkReferenceResolverRef, PresentationModeGetter } from '../../editor-keys';
|
|
12
|
+
import { type EditorEvents } from '../../editor-events';
|
|
13
|
+
import type { KeybindingOverrideMap } from '../../schema/keybinding-overrides';
|
|
14
|
+
import type { CommandErrorSink, CrossBlockCommandRouter } from '../../schema/block-commands';
|
|
15
|
+
import type { GrammarView } from '../../schema/block-openers';
|
|
16
|
+
import type { PluginActivation } from '../../schema/plugin-activation';
|
|
17
|
+
import type { UndoController } from '../../editor-actions/deps';
|
|
18
|
+
import type { PasteCommitCoordinator } from '../../tree-operations/paste/paste-deps';
|
|
19
|
+
import type { StickyColumnState } from '../../cursor/sticky-column';
|
|
20
|
+
import type { EdgeAffinityState } from '../../cursor/edge-affinity';
|
|
21
|
+
import type { SelectionState } from '../../selection/selection-state.svelte';
|
|
22
|
+
import { type RawOffset } from '../../cursor/coordinate-spaces';
|
|
23
|
+
import { type CrossBlockHandlers } from '../../selection/cross-block/dispatch';
|
|
24
|
+
import type { SharedKeydownContext } from '../../selection/shared-keydown';
|
|
25
|
+
/**
|
|
26
|
+
* Per-surface cursor I/O in raw-content coordinates (ambient marker excluded).
|
|
27
|
+
* `buildRange` maps a raw-offset span to a DOM Range for selection writes.
|
|
28
|
+
*/
|
|
29
|
+
export interface CursorBackend {
|
|
30
|
+
getRaw(): RawOffset | null;
|
|
31
|
+
setRaw(offset: RawOffset): void;
|
|
32
|
+
buildRange(start: RawOffset, end: RawOffset): Range | null;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Guarded pending-caret restore. Applies only while `el` still holds focus, so a blur
|
|
36
|
+
* between arming the restore and the render drops it instead of yanking the global
|
|
37
|
+
* selection back. Callers clear their pending field unconditionally regardless.
|
|
38
|
+
*/
|
|
39
|
+
export declare function consumePendingRestore<T>(el: HTMLElement | null, pending: T | null, apply: (value: T) => void): boolean;
|
|
40
|
+
export interface EditableSurfaceDeps {
|
|
41
|
+
getEl: () => HTMLElement | null;
|
|
42
|
+
/** Ambient marker length in raw units — 0 for code/cell, prose marker width for text. */
|
|
43
|
+
getAmbientLength: () => number;
|
|
44
|
+
backend: CursorBackend;
|
|
45
|
+
/** True while an ephemeral edit (inline-math source reveal) owns the DOM: the block
|
|
46
|
+
* commits on exit, so keyboard input and IME compositionend both skip the commit. */
|
|
47
|
+
isInputSuppressed?: () => boolean;
|
|
48
|
+
getMyPath: () => number[];
|
|
49
|
+
getIndex: () => number;
|
|
50
|
+
getComposing: () => boolean;
|
|
51
|
+
setComposing: (value: boolean) => void;
|
|
52
|
+
getPreEditOffset: () => number;
|
|
53
|
+
setPreEditOffset: (offset: number) => void;
|
|
54
|
+
setPendingCursor: (offset: number | null) => void;
|
|
55
|
+
selection: SelectionState;
|
|
56
|
+
getDoc: DocumentGetter;
|
|
57
|
+
getBlockElByPath: BlockElLookup;
|
|
58
|
+
focusActions: FocusActions;
|
|
59
|
+
getEditorRoot: () => HTMLElement | null;
|
|
60
|
+
/** What scrolls this editor — the root in self mode, the host's scroller (or the
|
|
61
|
+
* window) in host mode; threaded to the cross-block drag-select autoscroll. */
|
|
62
|
+
getScrollHost: () => UserScrollport | null;
|
|
63
|
+
getEditorLifetime: () => AbortSignal | null;
|
|
64
|
+
stickyColumn: StickyColumnState;
|
|
65
|
+
edgeAffinity: EdgeAffinityState;
|
|
66
|
+
blockEdit: BlockEditActions;
|
|
67
|
+
controller: UndoController;
|
|
68
|
+
history: HistoryActions;
|
|
69
|
+
pluginEditor: PluginEditorLookup | undefined;
|
|
70
|
+
/** The effective presentation mode, threaded to the cross-block reading gate — a
|
|
71
|
+
* sibling to `pluginEditor`, never smuggled through it. */
|
|
72
|
+
getPresentationMode: PresentationModeGetter | undefined;
|
|
73
|
+
/** The instance's link-reference resolver, forwarded to the cross-block join seam. */
|
|
74
|
+
linkRef: LinkReferenceResolverRef | undefined;
|
|
75
|
+
onCommandError: CommandErrorSink | undefined;
|
|
76
|
+
/** The arm a range command routes to; forwarded to the cross-block composer. */
|
|
77
|
+
crossBlockCommands: CrossBlockCommandRouter;
|
|
78
|
+
getKeybindingOverrides: () => KeybindingOverrideMap;
|
|
79
|
+
pasteCoordinator: PasteCommitCoordinator;
|
|
80
|
+
/** The instance's block grammar, forwarded to the cross-block join-paste reparse.
|
|
81
|
+
* Required-nullable: a surface must answer, and `undefined` means the global one. */
|
|
82
|
+
grammar: GrammarView | undefined;
|
|
83
|
+
/** The plugins this instance activated, forwarded to the paste-transform pipeline. */
|
|
84
|
+
activePlugins: PluginActivation;
|
|
85
|
+
/** The instance event surface, forwarded to the cross-block tier's clipboard
|
|
86
|
+
* error channel — the same `EditorServices.events` the clipboard seam takes. */
|
|
87
|
+
events: EditorEvents;
|
|
88
|
+
/** Selection focus endpoint in raw space — surfaces convert or door-mint their DOM read. */
|
|
89
|
+
getFocusOffset: () => RawOffset | null;
|
|
90
|
+
getTextLen: () => number;
|
|
91
|
+
/** Read the current DOM content as raw text for the input commit. */
|
|
92
|
+
readText: () => string;
|
|
93
|
+
/** Live mode's typing seat for a COMPOSITION: an IME inserts at the DOM caret and its
|
|
94
|
+
* beforeinput is not cancelable, so the byte relocation a keystroke takes at keydown is
|
|
95
|
+
* taken on this commit instead. Null keeps the read verbatim. */
|
|
96
|
+
relocateComposedText?: (after: string, composedAt: number) => {
|
|
97
|
+
raw: string;
|
|
98
|
+
caret: number;
|
|
99
|
+
} | null;
|
|
100
|
+
/**
|
|
101
|
+
* Commit the read text to the CST. Returns the caret offset to restore when the
|
|
102
|
+
* committed bytes differ from the DOM (a cell escaping a typed `|` to `\|`); void
|
|
103
|
+
* keeps the DOM caret.
|
|
104
|
+
*/
|
|
105
|
+
commitInput: (text: string, preEditOffset: number, savedOffset: number) => number | void;
|
|
106
|
+
/** Extra input prelude before the shared body (text resets snap target + keystroke mark). */
|
|
107
|
+
inputPrelude?: () => void;
|
|
108
|
+
}
|
|
109
|
+
export interface EditableSurface {
|
|
110
|
+
crossBlock: CrossBlockHandlers;
|
|
111
|
+
sharedCtx: SharedKeydownContext;
|
|
112
|
+
surface: EditableSurfaceMethods;
|
|
113
|
+
caret: ClipboardCaretIO;
|
|
114
|
+
/**
|
|
115
|
+
* True while this surface's element is out of the document — a torn-down host, and equally a
|
|
116
|
+
* render-primary leaf whose source is folded. Svelte's delegated walk does not await a keydown
|
|
117
|
+
* handler, so a container above it (a list item's Tab) claims the press and unmounts the block
|
|
118
|
+
* while a step is suspended; every awaited step asks this before reading on.
|
|
119
|
+
*/
|
|
120
|
+
isDetached(): boolean;
|
|
121
|
+
onInput: () => void;
|
|
122
|
+
onCompositionStart: () => void;
|
|
123
|
+
onCompositionEnd: () => void;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* The caret door the clipboard seam borrows from its surface. `getEl` is a liveness
|
|
127
|
+
* test: a host import hook can outlive the block that started the paste.
|
|
128
|
+
*/
|
|
129
|
+
export interface ClipboardCaretIO {
|
|
130
|
+
getEl: () => HTMLElement | null;
|
|
131
|
+
getCursorOffset: () => number | null;
|
|
132
|
+
focus: (offset: number) => void;
|
|
133
|
+
}
|
|
134
|
+
/** The BlockComponent methods shared verbatim across every editable surface. */
|
|
135
|
+
export interface EditableSurfaceMethods {
|
|
136
|
+
focus(offset: number): void;
|
|
137
|
+
/** Required here, optional on `BlockComponent`: an editable surface is what the
|
|
138
|
+
* cross-block extend paths park into, so every one of them owes the door. */
|
|
139
|
+
parkCaret(offset: number): void;
|
|
140
|
+
focusAtColumn(x: number, from: StickyColumnDirection): void;
|
|
141
|
+
getCursorOffset(): number | null;
|
|
142
|
+
getSelectedText(): string;
|
|
143
|
+
setSelection(start: number, end: number): void;
|
|
144
|
+
measurePartialRects(startOffset: number, endOffset: number): DOMRect[];
|
|
145
|
+
}
|
|
146
|
+
export declare function createEditableSurface(deps: EditableSurfaceDeps): EditableSurface;
|
|
147
|
+
/**
|
|
148
|
+
* What folding a live source reveal hands the mutation that triggered it. A fold that
|
|
149
|
+
* changes the block's KIND takes the structural path, whose completion is a promise —
|
|
150
|
+
* so a mutation seam waits on `settled`, not on a tick that happens to outlast it.
|
|
151
|
+
*/
|
|
152
|
+
export interface RevealFold {
|
|
153
|
+
/** Committed caret offset — where the folded edit left the caret. */
|
|
154
|
+
caret: number;
|
|
155
|
+
/** Resolves once the fold's write has landed and its render has flushed. */
|
|
156
|
+
settled: Promise<void>;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* The ordered copy / cut / paste skeleton shared by the four editable surfaces, owning the arms
|
|
160
|
+
* that must stay in lockstep (reading gate, cross-block write, reveal fold, image arm) so no
|
|
161
|
+
* surface can skip or resequence one. Paste prevents before its first await, or native paste fires
|
|
162
|
+
* while the fold settles. Reads and writes go through the event's synchronous `clipboardData`;
|
|
163
|
+
* `navigator.clipboard` is permission-gated and unreliable in Tauri's wry webview.
|
|
164
|
+
*/
|
|
165
|
+
export interface ClipboardSurfaceDeps {
|
|
166
|
+
stickyColumn: StickyColumnState;
|
|
167
|
+
edgeAffinity: EdgeAffinityState;
|
|
168
|
+
selection: SelectionState;
|
|
169
|
+
getDoc: DocumentGetter;
|
|
170
|
+
crossBlock: CrossBlockHandlers;
|
|
171
|
+
/** Reading mode: copy/cut write the visible selection string, paste is inert. */
|
|
172
|
+
isReadOnly: () => boolean;
|
|
173
|
+
/** The surface's caret door, borrowed by the image arm to anchor its insertion. */
|
|
174
|
+
caret: ClipboardCaretIO;
|
|
175
|
+
/** The instance event surface — the image arm's only channel for a host hook that
|
|
176
|
+
* rejects. Non-nullable so a surface cannot silently swallow a failed import. */
|
|
177
|
+
events: EditorEvents;
|
|
178
|
+
/** Host image-import hook from the policies context. Undefined leaves an
|
|
179
|
+
* image-bearing paste on the text/plain path, exactly as before the hook. */
|
|
180
|
+
onPasteImage: PasteImageHook | undefined;
|
|
181
|
+
/** Fold a live inline-source reveal before a cut/paste mutates, so the mutation runs
|
|
182
|
+
* against a CST consistent with the swapped DOM. Omit on a surface with no reveal. */
|
|
183
|
+
foldReveal?: () => RevealFold | null;
|
|
184
|
+
/** Pre-cross-block copy arm (selected-widget slice, intra-table rect). True when it
|
|
185
|
+
* wrote the payload and the handler should stop; owns its own preventDefault. */
|
|
186
|
+
copyPreHook?: (e: ClipboardEvent) => boolean;
|
|
187
|
+
/** Pre-cross-block cut arm (selected-widget splice, intra-table rect cut). */
|
|
188
|
+
cutPreHook?: (e: ClipboardEvent) => boolean | Promise<boolean>;
|
|
189
|
+
/** The intra-block copy payload; owns its preventDefault. Omit to write the
|
|
190
|
+
* visible selection string (code, leaf); text and the cell slice their raw. */
|
|
191
|
+
copyTail?: (e: ClipboardEvent) => void;
|
|
192
|
+
/** The intra-block cut: a synchronous clipboardData write, then the CST delete. */
|
|
193
|
+
cutTail: (e: ClipboardEvent) => void | Promise<void>;
|
|
194
|
+
/** The intra-block paste after normalize: the surface's splice/dispatch, handed
|
|
195
|
+
* the normalized text and the reveal-fold landing caret. */
|
|
196
|
+
pasteTail: (pastedText: string, foldedCaret: number | null) => void | Promise<void>;
|
|
197
|
+
}
|
|
198
|
+
export interface ClipboardHandlers {
|
|
199
|
+
onCopy(e: ClipboardEvent): void;
|
|
200
|
+
onCut(e: ClipboardEvent): Promise<void>;
|
|
201
|
+
onPaste(e: ClipboardEvent): Promise<void>;
|
|
202
|
+
/**
|
|
203
|
+
* Insert `md` exactly as pasting it here would, minus the clipboard — the surface half of
|
|
204
|
+
* `EditorInstance.insertMarkdown`. True means the pipeline took the text, not that its
|
|
205
|
+
* commit has flushed; the synchronous declines are reading mode and an empty payload.
|
|
206
|
+
*/
|
|
207
|
+
insertMarkdown(md: string): boolean;
|
|
208
|
+
}
|
|
209
|
+
export declare function createClipboardHandlers(deps: ClipboardSurfaceDeps): ClipboardHandlers;
|