@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,570 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The commit ceremony: snapshot capture, copy-path-on-write unshare, rollback.
|
|
3
|
+
* Owns G1.9 — snapshot-shared nodes stay byte-readonly until this seam unshares
|
|
4
|
+
* them. Keystroke batching is delegated to text-batch.ts.
|
|
5
|
+
*/
|
|
6
|
+
import { DEV } from 'esm-env';
|
|
7
|
+
import { tick } from 'svelte';
|
|
8
|
+
import { digestDoc } from '../../invariants/snapshot-integrity';
|
|
9
|
+
import { readCurrentSelection } from '../../selection/native-bridge';
|
|
10
|
+
import { asDocPath, pathsEqual } from '../../selection/path-math';
|
|
11
|
+
import { assertInvariant } from '../../assert';
|
|
12
|
+
import { beginCommit, endCommit } from '../../invariants/commit-scope';
|
|
13
|
+
import { assignIds } from '../../block-id';
|
|
14
|
+
import { replaceRefs } from '../../reactivity/publish-ref.svelte';
|
|
15
|
+
import { nodeAt, settleSeparator } from '../../tree-operations/node-ops';
|
|
16
|
+
import { attachedChainPrefix, ensureUnsharedPath, rebuildUnsharedChain } from '../../tree-operations/unshare';
|
|
17
|
+
import { foldLandingFor, publishAncestryFolds } from '../ancestry-folds';
|
|
18
|
+
import { createTextBatch } from './text-batch';
|
|
19
|
+
import { toEditEvent } from '../../editor-events';
|
|
20
|
+
import { applyStructuralChangeToIdsRefs } from '../../tree-operations/structural-change';
|
|
21
|
+
import { assertCommitPaths, assertCommittedNodes, assertIdsInLockstep, assertUndoTopIntegrity } from '../../invariants/install';
|
|
22
|
+
import { tryGetBlockKindDescriptor } from '../../schema/block-kind-descriptor';
|
|
23
|
+
import { dropChildSpans } from '../../schema/child-spans';
|
|
24
|
+
import { docByteLength, perfEnabled, recordSnapshotClone, setUndoGauge } from '../../perf/instruments';
|
|
25
|
+
// ── Dev invariant scoping (DEV-only paths) ────────────────────────────────────
|
|
26
|
+
/** A `noop` change names no new positions, so the caller passes its leaf via `explicit`. */
|
|
27
|
+
function touchedFromChange(change, children, explicit) {
|
|
28
|
+
if (change.op === 'insert')
|
|
29
|
+
return children.slice(change.at, change.at + change.count);
|
|
30
|
+
if (change.op === 'replace')
|
|
31
|
+
return children.slice(change.at, change.at + change.newCount);
|
|
32
|
+
return explicit ?? [];
|
|
33
|
+
}
|
|
34
|
+
/** Direct children ride along: a strip rebuild concatenates them into the container. */
|
|
35
|
+
function touchedContainersWithChildren(containers) {
|
|
36
|
+
if (!containers)
|
|
37
|
+
return [];
|
|
38
|
+
const out = [];
|
|
39
|
+
for (const c of containers) {
|
|
40
|
+
out.push(c);
|
|
41
|
+
// Appended, never spread: a giant table's row list outnumbers an argument list (G4.60).
|
|
42
|
+
for (const child of c.children ?? [])
|
|
43
|
+
out.push(child);
|
|
44
|
+
}
|
|
45
|
+
return out;
|
|
46
|
+
}
|
|
47
|
+
export function createUndoController(deps) {
|
|
48
|
+
// ── Selection helpers ─────────────────────────────────────────────────────
|
|
49
|
+
/**
|
|
50
|
+
* The document as the settle's parent, over the mutate's working array. The suffix rides as
|
|
51
|
+
* accessors: a tail settle spends the live document's folded line, and the rollback frame
|
|
52
|
+
* restores it.
|
|
53
|
+
*/
|
|
54
|
+
function docSettleParent(children) {
|
|
55
|
+
return {
|
|
56
|
+
kind: 'document',
|
|
57
|
+
children,
|
|
58
|
+
get suffix() {
|
|
59
|
+
return deps.doc.suffix;
|
|
60
|
+
},
|
|
61
|
+
set suffix(value) {
|
|
62
|
+
deps.doc.suffix = value;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function collapsedSelectionAt(blockIndex, offset) {
|
|
67
|
+
const point = { path: [blockIndex], offset };
|
|
68
|
+
return { anchor: point, focus: point };
|
|
69
|
+
}
|
|
70
|
+
function collapsedSelectionAtPath(path, offset) {
|
|
71
|
+
const point = { path: path.slice(), offset };
|
|
72
|
+
return { anchor: point, focus: point };
|
|
73
|
+
}
|
|
74
|
+
// ── Snapshot pushers ─────────────────────────────────────────────────────
|
|
75
|
+
/**
|
|
76
|
+
* Snapshots share the live tree's nodes; only the top-level children array is
|
|
77
|
+
* copied. G1.9: mutations copy-path-on-write first (`tree-operations/unshare.ts`).
|
|
78
|
+
*/
|
|
79
|
+
function shareSnapshot() {
|
|
80
|
+
deps.sharing.markSnapshotTaken();
|
|
81
|
+
const snapshot = {
|
|
82
|
+
kind: 'document',
|
|
83
|
+
prefix: deps.doc.prefix,
|
|
84
|
+
children: [...deps.doc.children],
|
|
85
|
+
suffix: deps.doc.suffix
|
|
86
|
+
};
|
|
87
|
+
return { snapshot, integrity: DEV ? digestDoc(snapshot) : undefined };
|
|
88
|
+
}
|
|
89
|
+
function recordSnapshotPerf() {
|
|
90
|
+
if (!perfEnabled())
|
|
91
|
+
return;
|
|
92
|
+
recordSnapshotClone(docByteLength(deps.doc));
|
|
93
|
+
const undo = deps.undoManager.getStacks().undo;
|
|
94
|
+
let liveBytes = 0;
|
|
95
|
+
for (const entry of undo)
|
|
96
|
+
liveBytes += docByteLength(entry.snapshot);
|
|
97
|
+
setUndoGauge(liveBytes, undo.length);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* What an entry records as "where the caret was". The gap outranks the caller's declared
|
|
101
|
+
* coordinate and not the live caret: it IS a live caret, but no block ref can report it,
|
|
102
|
+
* so it would otherwise fall through to a fallback naming a block it isn't in.
|
|
103
|
+
*/
|
|
104
|
+
function entrySelection(fallback) {
|
|
105
|
+
const live = readCurrentSelection(deps.selectionState, deps.blockRefs);
|
|
106
|
+
if (live)
|
|
107
|
+
return live;
|
|
108
|
+
const gap = deps.selectionState.gapCaret;
|
|
109
|
+
return gap ? { gapCaret: gap } : fallback();
|
|
110
|
+
}
|
|
111
|
+
function pushUndoSnapshotPath(fallbackPath, offset) {
|
|
112
|
+
deps.undoManager.push({
|
|
113
|
+
...shareSnapshot(),
|
|
114
|
+
blockIds: [...deps.blockIds],
|
|
115
|
+
selection: entrySelection(() => collapsedSelectionAtPath(fallbackPath, offset))
|
|
116
|
+
});
|
|
117
|
+
recordSnapshotPerf();
|
|
118
|
+
}
|
|
119
|
+
// Top-level only: a deep-path caller must route through pushUndoSnapshotPath, or its
|
|
120
|
+
// no-caret fallback restores to the top-level block instead of the edited leaf.
|
|
121
|
+
function pushUndoSnapshot(blockIndex, offset) {
|
|
122
|
+
pushUndoSnapshotPath([blockIndex], offset);
|
|
123
|
+
}
|
|
124
|
+
// Path from the live focused leaf, offset from the caller: the live cursor is
|
|
125
|
+
// post-edit, but its path still points at the same leaf.
|
|
126
|
+
function pushTypingSnapshot(leafPath, offset) {
|
|
127
|
+
const live = readCurrentSelection(deps.selectionState, deps.blockRefs);
|
|
128
|
+
const liveIsCollapsed = !!live &&
|
|
129
|
+
pathsEqual(live.anchor.path, live.focus.path) &&
|
|
130
|
+
live.anchor.offset === live.focus.offset;
|
|
131
|
+
const selection = liveIsCollapsed
|
|
132
|
+
? collapsedSelectionAtPath(live.anchor.path, offset)
|
|
133
|
+
: collapsedSelectionAtPath(leafPath, offset);
|
|
134
|
+
deps.undoManager.push({
|
|
135
|
+
...shareSnapshot(),
|
|
136
|
+
blockIds: [...deps.blockIds],
|
|
137
|
+
selection
|
|
138
|
+
});
|
|
139
|
+
recordSnapshotPerf();
|
|
140
|
+
}
|
|
141
|
+
const textBatch = createTextBatch({
|
|
142
|
+
pushSnapshot: pushTypingSnapshot,
|
|
143
|
+
emitInput: (leafPath, byteLength) => deps.events.emit('edit', {
|
|
144
|
+
op: 'input',
|
|
145
|
+
path: leafPath,
|
|
146
|
+
detail: { byteLength },
|
|
147
|
+
timestamp: Date.now()
|
|
148
|
+
})
|
|
149
|
+
});
|
|
150
|
+
/**
|
|
151
|
+
* Every register a throwing or discardIfNoop-bailing commit rolls back, in one
|
|
152
|
+
* place. Container per-scope registers aren't minted until `mutate` unshares, so
|
|
153
|
+
* restore() delegates those to the `rollback` thunk.
|
|
154
|
+
*/
|
|
155
|
+
function captureRollbackFrame(args) {
|
|
156
|
+
// Wholesale restore, not a pop: the push may evict the oldest at cap.
|
|
157
|
+
const savedStacks = args.snapshot !== 'skip' ? deps.undoManager.getStacks() : null;
|
|
158
|
+
// The container branch mutates the live tree in place; the document branch
|
|
159
|
+
// publishes children only on success, but its tail settle can spend the live
|
|
160
|
+
// document's suffix, so that register restores in both branches.
|
|
161
|
+
const savedDocChildren = args.kind === 'container' ? [...deps.doc.children] : null;
|
|
162
|
+
const savedDocSuffix = deps.doc.suffix;
|
|
163
|
+
return {
|
|
164
|
+
restore() {
|
|
165
|
+
// Top-down: stacks, top-level array, then the thunk for the in-place splices
|
|
166
|
+
// the array swap can't reach.
|
|
167
|
+
if (savedStacks)
|
|
168
|
+
deps.undoManager.restoreStacks(savedStacks);
|
|
169
|
+
if (savedDocChildren)
|
|
170
|
+
deps.doc.children = savedDocChildren;
|
|
171
|
+
deps.doc.suffix = savedDocSuffix;
|
|
172
|
+
if (args.kind === 'container')
|
|
173
|
+
args.rollback?.();
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
/** The one door to the `error` channel, so every throw site attributes alike (editor.md §12). */
|
|
178
|
+
function reportCommitError(args, error) {
|
|
179
|
+
deps.events.emit('error', {
|
|
180
|
+
origin: 'commit',
|
|
181
|
+
error,
|
|
182
|
+
context: { op: args.op?.kind, path: args.op?.eventPath }
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
function runCommitCeremony(args) {
|
|
186
|
+
deps.stickyColumn.reset();
|
|
187
|
+
deps.edgeAffinity.reset();
|
|
188
|
+
textBatch.interrupt();
|
|
189
|
+
if (DEV) {
|
|
190
|
+
// Both declared coordinates must be doc-absolute; `invariants` stays a runtime
|
|
191
|
+
// leaf, so the number[]→DocPath mint lives here at the ceremony.
|
|
192
|
+
assertCommitPaths(deps.doc, args.snapshot === 'skip' ? null : asDocPath(args.snapshot.path), args.op?.eventPath ? asDocPath(args.op.eventPath) : null);
|
|
193
|
+
}
|
|
194
|
+
// Outside the try: the stack registers must be read BEFORE the push below.
|
|
195
|
+
const rollback = captureRollbackFrame(args);
|
|
196
|
+
// A `discardIfNoop` op that changed nothing takes the throw path's restore minus
|
|
197
|
+
// the error emit. afterTick still runs.
|
|
198
|
+
let discarded = false;
|
|
199
|
+
try {
|
|
200
|
+
if (args.snapshot !== 'skip') {
|
|
201
|
+
// Inside the try: readCurrentSelection walks live block refs, plugin leaves
|
|
202
|
+
// included, so it throws like every other ceremony site.
|
|
203
|
+
pushUndoSnapshotPath(args.snapshot.path, args.snapshot.offset);
|
|
204
|
+
}
|
|
205
|
+
if (args.kind === 'document') {
|
|
206
|
+
const childrenCopy = [...deps.doc.children];
|
|
207
|
+
const idsCopy = [...deps.blockIds];
|
|
208
|
+
const refsCopy = [...deps.blockRefs];
|
|
209
|
+
// `deps.doc.children` is still the pre-mutate array here (`publish` swaps it),
|
|
210
|
+
// so the settle reads was-blank off it with no caller threading any facts.
|
|
211
|
+
const change = settleSeparator(docSettleParent(childrenCopy), deps.doc.children, args.mutate(childrenCopy), deps.sharing);
|
|
212
|
+
if (args.discardIfNoop && change.op === 'noop') {
|
|
213
|
+
// Document branch never published; the frame restores only the stacks here.
|
|
214
|
+
rollback.restore();
|
|
215
|
+
discarded = true;
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
applyStructuralChangeToIdsRefs(change, idsCopy, refsCopy);
|
|
219
|
+
assertIdsInLockstep('commitStructural', idsCopy.length, childrenCopy.length);
|
|
220
|
+
args.publish(childrenCopy, idsCopy, refsCopy);
|
|
221
|
+
if (DEV) {
|
|
222
|
+
assertCommittedNodes(touchedFromChange(change, childrenCopy, args.touchedNodes));
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
const changed = args.mutate();
|
|
228
|
+
if (args.discardIfNoop && !changed) {
|
|
229
|
+
// The in-place mutation ran but every scope no-op'd — unwind as a throw would.
|
|
230
|
+
rollback.restore();
|
|
231
|
+
discarded = true;
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
args.publish();
|
|
235
|
+
if (DEV) {
|
|
236
|
+
assertCommittedNodes(touchedContainersWithChildren(args.touchedNodes?.()));
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
if (!discarded && DEV) {
|
|
241
|
+
// G1.9 commit seam: a missed copy-path-on-write here corrupts the freshest
|
|
242
|
+
// entry — catch it at the commit, not at some distant undo. Never throws.
|
|
243
|
+
assertUndoTopIntegrity(deps.undoManager.peekUndo() ?? undefined);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
catch (err) {
|
|
247
|
+
rollback.restore();
|
|
248
|
+
reportCommitError(args, err);
|
|
249
|
+
// Loud in dev; production swallows so one failed mutation doesn't kill the
|
|
250
|
+
// editor. The tree is intact either way: rolled back, or never published.
|
|
251
|
+
if (DEV)
|
|
252
|
+
throw err;
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
if (!discarded) {
|
|
256
|
+
// After both publish arms, so nothing can memoize the new key against a tree the
|
|
257
|
+
// ceremony has not finished handing over. A discarded commit rolled its own
|
|
258
|
+
// mutation back, and announcing it would claim bytes that never moved.
|
|
259
|
+
deps.bumpContentVersion();
|
|
260
|
+
// The gap names a BOUNDARY INDEX, and a commit moves what that index names. Ended
|
|
261
|
+
// here rather than remapped: no arm can say which boundary the user meant afterwards.
|
|
262
|
+
// After the push above, so the entry this commit stored keeps the gap it was taken at.
|
|
263
|
+
deps.selectionState.clearGapCaret();
|
|
264
|
+
}
|
|
265
|
+
if (!discarded && args.op) {
|
|
266
|
+
deps.events.emit('edit', toEditEvent(args.op, args.op.eventPath, Date.now()));
|
|
267
|
+
}
|
|
268
|
+
return true;
|
|
269
|
+
}
|
|
270
|
+
// Bracket the synchronous ceremony so the decoration engine keeps a source off a
|
|
271
|
+
// half-applied commit. Cleared before the first await.
|
|
272
|
+
async function __commit(args) {
|
|
273
|
+
beginCommit();
|
|
274
|
+
let committed;
|
|
275
|
+
try {
|
|
276
|
+
committed = runCommitCeremony(args);
|
|
277
|
+
}
|
|
278
|
+
finally {
|
|
279
|
+
endCommit();
|
|
280
|
+
}
|
|
281
|
+
if (!committed)
|
|
282
|
+
return;
|
|
283
|
+
await tick();
|
|
284
|
+
try {
|
|
285
|
+
// Awaited: a landing that reveals an off-window target is async, and this
|
|
286
|
+
// promise is what every caller treats as "the caret has settled".
|
|
287
|
+
await args.afterTick?.();
|
|
288
|
+
}
|
|
289
|
+
catch (err) {
|
|
290
|
+
// No rollback: the commit succeeded and the tree is correct. Contained so a
|
|
291
|
+
// plugin's afterTick is a reported no-op, not an unhandled rejection.
|
|
292
|
+
reportCommitError(args, err);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
// ── Structural-mutation ceremony ─────────────────────────────────────────
|
|
296
|
+
/** `snapshot: 'skip'` lets composite operations share a single undo entry. */
|
|
297
|
+
async function commitStructural(args) {
|
|
298
|
+
const { snapshot, mutate, op, afterTick, touchedNodes, discardIfNoop } = args;
|
|
299
|
+
await __commit({
|
|
300
|
+
kind: 'document',
|
|
301
|
+
snapshot,
|
|
302
|
+
mutate,
|
|
303
|
+
publish: (children, ids, refs) => {
|
|
304
|
+
deps.doc.children = children;
|
|
305
|
+
deps.setBlockIds(ids);
|
|
306
|
+
deps.setBlockRefs(refs);
|
|
307
|
+
},
|
|
308
|
+
op,
|
|
309
|
+
afterTick,
|
|
310
|
+
touchedNodes,
|
|
311
|
+
discardIfNoop
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
async function commitContainerStructural(args) {
|
|
315
|
+
const { containerNode, path, state, snapshot, mutate, op, afterTick, discardIfNoop } = args;
|
|
316
|
+
await commitMultiScope({
|
|
317
|
+
scopes: [{ node: containerNode, state, path }],
|
|
318
|
+
snapshot,
|
|
319
|
+
mutate: ([scope]) => [mutate(scope)],
|
|
320
|
+
op,
|
|
321
|
+
afterTick,
|
|
322
|
+
discardIfNoop
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
/** Bytes at risk: the unshared spine plus direct children — `savedChildren`'s granularity. */
|
|
326
|
+
function captureScopeRaws(chain, owned) {
|
|
327
|
+
const saved = chain.map((node) => ({ node, raw: node.raw }));
|
|
328
|
+
for (const child of owned.children ?? [])
|
|
329
|
+
saved.push({ node: child, raw: child.raw });
|
|
330
|
+
return saved;
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Runs over ALL scopes BEFORE any spine is unshared: preparing an earlier scope
|
|
334
|
+
* copies nodes a later, overlapping scope still points at.
|
|
335
|
+
*/
|
|
336
|
+
function assertScopeIdentity(s) {
|
|
337
|
+
if (s.node === deps.doc)
|
|
338
|
+
return;
|
|
339
|
+
// A stale-but-in-range path would unshare and rebuild the wrong spine.
|
|
340
|
+
assertInvariant('multi-scope-commit-path', () => nodeAt(deps.doc, s.path) === s.node
|
|
341
|
+
? null
|
|
342
|
+
: {
|
|
343
|
+
code: 'multi-scope-commit-path',
|
|
344
|
+
message: `commit: path [${s.path.join(',')}] does not resolve to scope node (${s.node.kind})`
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
/** Unshares the spine and attaches a working children array (`tree-operations/unshare.ts`). */
|
|
348
|
+
function prepareScopeView(s) {
|
|
349
|
+
const isDoc = s.node === deps.doc;
|
|
350
|
+
const chain = isDoc ? [] : ensureUnsharedPath(deps.doc, s.path, deps.sharing);
|
|
351
|
+
if (!isDoc && chain.length !== s.path.length) {
|
|
352
|
+
// Falling back to the caller's still-shared node would silently corrupt the
|
|
353
|
+
// snapshot entry sharing it (G1.9); G1.19/G1.22 are dev-only. This door throws;
|
|
354
|
+
// its sibling (`withUnsharedSpine`, G1.20) rebuilds what the walk did reach.
|
|
355
|
+
const message = `commitMultiScope: unshared chain depth ${chain.length} != scope path depth ${s.path.length} (path [${s.path.join(',')}])`;
|
|
356
|
+
assertInvariant('multi-scope-scope-depth', () => ({
|
|
357
|
+
code: 'multi-scope-scope-depth',
|
|
358
|
+
message
|
|
359
|
+
}));
|
|
360
|
+
throw new Error(message);
|
|
361
|
+
}
|
|
362
|
+
// The ceremony's view→mutable door (core/node-views.ts): the unshared chain owns
|
|
363
|
+
// the scope node, and the doc scope owns the root by construction.
|
|
364
|
+
const owned = isDoc ? s.node : chain[chain.length - 1];
|
|
365
|
+
// A container that never mounted has NO ids, which is not an empty list: seeding `[]`
|
|
366
|
+
// publishes one id per structural change against N children, and nothing reconciles it.
|
|
367
|
+
const ids = isDoc
|
|
368
|
+
? [...s.state.innerBlockIds]
|
|
369
|
+
: [...(owned.childIds ?? assignIds(owned.children ?? []))];
|
|
370
|
+
const refs = [...s.state.innerBlockRefs];
|
|
371
|
+
// Distinct copies: publishScopeView mutates `ids`/`refs` above in place.
|
|
372
|
+
const savedStateIds = [...s.state.innerBlockIds];
|
|
373
|
+
const savedStateRefs = [...s.state.innerBlockRefs];
|
|
374
|
+
const savedChildren = owned.children;
|
|
375
|
+
const savedChildIds = owned.childIds;
|
|
376
|
+
const savedRaws = captureScopeRaws(chain, owned);
|
|
377
|
+
owned.children = [...(owned.children ?? [])];
|
|
378
|
+
return {
|
|
379
|
+
target: s,
|
|
380
|
+
isDoc,
|
|
381
|
+
chain,
|
|
382
|
+
owned,
|
|
383
|
+
view: { node: owned, children: owned.children, sharing: deps.sharing },
|
|
384
|
+
ids,
|
|
385
|
+
refs,
|
|
386
|
+
savedChildren,
|
|
387
|
+
savedChildIds,
|
|
388
|
+
savedStateIds,
|
|
389
|
+
savedStateRefs,
|
|
390
|
+
savedRaws
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Doc-scope ids route through deps setters; container ids live on the owned node,
|
|
395
|
+
* because the state bundle's setter would write the stale shared node prop.
|
|
396
|
+
*/
|
|
397
|
+
function publishScopeView(p, change) {
|
|
398
|
+
applyStructuralChangeToIdsRefs(change, p.ids, p.refs);
|
|
399
|
+
assertIdsInLockstep(`commitMultiScope [${p.target.path.join(',')}]`, p.ids.length, p.owned.children?.length ?? 0);
|
|
400
|
+
if (p.isDoc) {
|
|
401
|
+
p.target.state.innerBlockIds = p.ids;
|
|
402
|
+
}
|
|
403
|
+
else {
|
|
404
|
+
p.owned.childIds = p.ids;
|
|
405
|
+
}
|
|
406
|
+
replaceRefs(p.target.state.innerBlockRefs, p.refs);
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Atomic structural commit across container scopes — one undo snapshot, one edit
|
|
410
|
+
* event. Each spine is unshared before `mutate` and raw-rebuilt after, deepest
|
|
411
|
+
* first. Mutate through the provided scope views, never pre-commit captures.
|
|
412
|
+
*/
|
|
413
|
+
async function commitMultiScope(args) {
|
|
414
|
+
const { scopes, snapshot, mutate, op, afterTick, discardIfNoop, trackCaret } = args;
|
|
415
|
+
const prepared = [];
|
|
416
|
+
// Container slots the chain rebuild re-kinded: the replacements are what the DEV
|
|
417
|
+
// probes check, and the slot is what an unwind restores.
|
|
418
|
+
const reclassified = [];
|
|
419
|
+
// Parent-scope folds the ancestry settle spliced, with the caret landing they owe: the
|
|
420
|
+
// fold re-mints every block in its window, so a scope it ate has no ref left to focus.
|
|
421
|
+
const folds = [];
|
|
422
|
+
let landing = null;
|
|
423
|
+
let unwindFolds = null;
|
|
424
|
+
await __commit({
|
|
425
|
+
kind: 'container',
|
|
426
|
+
snapshot,
|
|
427
|
+
mutate: () => {
|
|
428
|
+
for (const s of scopes)
|
|
429
|
+
assertScopeIdentity(s);
|
|
430
|
+
// Pushed as each resolves, so a scope that fails to prepare still leaves the
|
|
431
|
+
// frame holding the registers of the scopes prepared before it.
|
|
432
|
+
for (const s of scopes)
|
|
433
|
+
prepared.push(prepareScopeView(s));
|
|
434
|
+
const changes = mutate(prepared.map((p) => p.view));
|
|
435
|
+
// Dynamically-built scope arrays degrade to array typing, so this runtime
|
|
436
|
+
// check backstops the tuple types.
|
|
437
|
+
const changeList = [...changes];
|
|
438
|
+
if (changeList.length !== scopes.length) {
|
|
439
|
+
throw new Error(`commitMultiScope: mutate returned ${changeList.length} changes for ${scopes.length} scopes`);
|
|
440
|
+
}
|
|
441
|
+
for (let i = 0; i < prepared.length; i++) {
|
|
442
|
+
// `savedChildren` is the pre-mutate array the scope prep swapped out, so the
|
|
443
|
+
// settle reads was-blank off it (`prepareScopeView`).
|
|
444
|
+
changeList[i] = settleSeparator(prepared[i].owned, prepared[i].savedChildren ?? [], changeList[i], deps.sharing, trackCaret?.[i]);
|
|
445
|
+
publishScopeView(prepared[i], changeList[i]);
|
|
446
|
+
}
|
|
447
|
+
// Deepest chains first: an inner scope's raw must be current before an outer
|
|
448
|
+
// chain concatenates it. Truncating to the attached prefix keeps a
|
|
449
|
+
// spliced-out scope from being rebuilt off its emptied children.
|
|
450
|
+
for (const p of [...prepared].sort((a, b) => b.chain.length - a.chain.length)) {
|
|
451
|
+
const before = folds.length;
|
|
452
|
+
reclassified.push(...rebuildUnsharedChain(deps.doc, attachedChainPrefix(deps.doc, p.chain), deps.sharing, folds, deps.grammar));
|
|
453
|
+
landing = foldLandingFor(folds.slice(before), p.target.path) ?? landing;
|
|
454
|
+
}
|
|
455
|
+
unwindFolds = publishAncestryFolds(deps, folds);
|
|
456
|
+
return changeList.some((c) => c.op !== 'noop') || folds.length > 0;
|
|
457
|
+
},
|
|
458
|
+
publish: () => {
|
|
459
|
+
// Nudge top-level reactivity so ancestor-raw mutations propagate.
|
|
460
|
+
deps.doc.children = [...deps.doc.children];
|
|
461
|
+
},
|
|
462
|
+
op,
|
|
463
|
+
afterTick: async () => {
|
|
464
|
+
try {
|
|
465
|
+
await afterTick?.();
|
|
466
|
+
}
|
|
467
|
+
finally {
|
|
468
|
+
// After the caller's landing and regardless of it: the fold ate the scope that
|
|
469
|
+
// landing addressed, so it resolved no ref — or read through a detached node.
|
|
470
|
+
if (landing)
|
|
471
|
+
(await deps.revealPath(landing.path))?.focus(landing.offset);
|
|
472
|
+
}
|
|
473
|
+
},
|
|
474
|
+
discardIfNoop,
|
|
475
|
+
// Detached scopes are no longer committed tree state — checking one would fire
|
|
476
|
+
// stale-raw on a node the document no longer contains.
|
|
477
|
+
touchedNodes: () => [
|
|
478
|
+
...prepared
|
|
479
|
+
.filter((p) => attachedChainPrefix(deps.doc, p.chain).length === p.chain.length)
|
|
480
|
+
.map((p) => p.owned),
|
|
481
|
+
...reclassified.map((r) => r.replacement)
|
|
482
|
+
].filter((n) => tryGetBlockKindDescriptor(n.kind) !== undefined),
|
|
483
|
+
rollback: () => {
|
|
484
|
+
// Folds unwind first: each restores a whole parent array, which the
|
|
485
|
+
// reclassification registers below then correct slot by slot.
|
|
486
|
+
unwindFolds?.();
|
|
487
|
+
// Reverse of the landing order, so a slot is never restored under a node the
|
|
488
|
+
// next restore is about to replace.
|
|
489
|
+
for (let i = reclassified.length - 1; i >= 0; i--) {
|
|
490
|
+
const { siblings, index, previous } = reclassified[i];
|
|
491
|
+
siblings[index] = previous;
|
|
492
|
+
}
|
|
493
|
+
for (const p of prepared) {
|
|
494
|
+
p.owned.children = p.savedChildren;
|
|
495
|
+
p.owned.childIds = p.savedChildIds;
|
|
496
|
+
// Bytes as well as shape: the chain rebuild dispatches into plugin
|
|
497
|
+
// `rebuildRaw`, so an unwind leaves raws the children no longer justify.
|
|
498
|
+
for (const { node, raw } of p.savedRaws) {
|
|
499
|
+
node.raw = raw;
|
|
500
|
+
dropChildSpans(node);
|
|
501
|
+
}
|
|
502
|
+
// Without this, ids/refs published before the throw keep reflecting it.
|
|
503
|
+
if (p.isDoc)
|
|
504
|
+
p.target.state.innerBlockIds = p.savedStateIds;
|
|
505
|
+
replaceRefs(p.target.state.innerBlockRefs, p.savedStateRefs);
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
});
|
|
509
|
+
}
|
|
510
|
+
// ── Doc scope adapter ────────────────────────────────────────────────────
|
|
511
|
+
/** Forwards top-level ids through the deps setter, so the write reaches the `$state`
|
|
512
|
+
* proxy; refs are the editor's own array, which every publish mutates in place. */
|
|
513
|
+
function createDocScopeAdapter() {
|
|
514
|
+
return {
|
|
515
|
+
get innerBlockIds() {
|
|
516
|
+
return deps.blockIds;
|
|
517
|
+
},
|
|
518
|
+
set innerBlockIds(v) {
|
|
519
|
+
deps.setBlockIds(v);
|
|
520
|
+
},
|
|
521
|
+
get innerBlockRefs() {
|
|
522
|
+
return deps.blockRefs;
|
|
523
|
+
},
|
|
524
|
+
refSlots: deps.blockRefSlots
|
|
525
|
+
};
|
|
526
|
+
}
|
|
527
|
+
/** The document root as a MultiScopeTarget, for cross-scope ops whose LCA is doc level. */
|
|
528
|
+
function getDocScope() {
|
|
529
|
+
return { node: deps.doc, path: [], state: createDocScopeAdapter() };
|
|
530
|
+
}
|
|
531
|
+
// ── State capture / checkpoint control ──────────────────────────────────
|
|
532
|
+
// Every history swap replaces the whole tree, so a landing that awaited across one is
|
|
533
|
+
// aimed at content that no longer exists. Monotonic and never reset: a landing compares
|
|
534
|
+
// stamps, it never reads the value.
|
|
535
|
+
let historyGeneration = 0;
|
|
536
|
+
function captureCurrentState() {
|
|
537
|
+
// Same three-tier read as the snapshot pushers — this is the entry a history swap
|
|
538
|
+
// pushes onto the opposite stack, so a gap live at the swap must survive the return.
|
|
539
|
+
return {
|
|
540
|
+
...shareSnapshot(),
|
|
541
|
+
blockIds: [...deps.blockIds],
|
|
542
|
+
// Fallback for unfocused-at-capture (headless harness, programmatic capture).
|
|
543
|
+
selection: entrySelection(() => collapsedSelectionAt(0, 0))
|
|
544
|
+
};
|
|
545
|
+
}
|
|
546
|
+
return {
|
|
547
|
+
sharing: deps.sharing,
|
|
548
|
+
pushUndoSnapshot,
|
|
549
|
+
pushUndoSnapshotPath,
|
|
550
|
+
pushUndoSnapshotDebounced: textBatch.keystroke,
|
|
551
|
+
armUndoPause: textBatch.armPause,
|
|
552
|
+
commitStructural,
|
|
553
|
+
commitContainerStructural,
|
|
554
|
+
commitMultiScope,
|
|
555
|
+
getDocScope,
|
|
556
|
+
captureCurrentState,
|
|
557
|
+
historyGeneration: () => historyGeneration,
|
|
558
|
+
noteHistorySwap: () => {
|
|
559
|
+
historyGeneration++;
|
|
560
|
+
},
|
|
561
|
+
flushDebouncedCheckpoint: textBatch.interrupt,
|
|
562
|
+
isolateUndoEntry: (write) => {
|
|
563
|
+
// Both sides: the leading break makes the write push its own snapshot instead of
|
|
564
|
+
// joining the burst before it, the trailing one keeps the next keystroke out of it.
|
|
565
|
+
textBatch.interrupt();
|
|
566
|
+
write();
|
|
567
|
+
textBatch.interrupt();
|
|
568
|
+
}
|
|
569
|
+
};
|
|
570
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/** Shared `BlockComponent` shim for container blocks. */
|
|
2
|
+
import { type BlockComponent, type ContainerBlockComponent } from '../block-component';
|
|
3
|
+
import { type RefSlots } from '../reactivity/publish-ref.svelte';
|
|
4
|
+
import type { AnyBlockKind } from '../core/nodes';
|
|
5
|
+
import type { NodeView } from '../core/node-views';
|
|
6
|
+
import type { BlockEditActions, FocusActions } from '../action-contracts';
|
|
7
|
+
import { type GlobalCommandContext } from '../schema/commands';
|
|
8
|
+
import type { KeybindingOverrideMap } from '../schema/keybinding-overrides';
|
|
9
|
+
import type { PluginActivation } from '../schema/plugin-activation';
|
|
10
|
+
import type { StickyColumnState } from '../cursor/sticky-column';
|
|
11
|
+
import type { EdgeAffinityState } from '../cursor/edge-affinity';
|
|
12
|
+
import type { SelectionState } from '../selection/selection-state.svelte';
|
|
13
|
+
import { type WholeBlockInputProxy } from './whole-block-focus-surface';
|
|
14
|
+
export interface EditorGlobalChordDeps extends Pick<GlobalCommandContext, 'history' | 'pluginEditor' | 'onCommandError'> {
|
|
15
|
+
getKind: () => AnyBlockKind;
|
|
16
|
+
getKeybindingOverrides: () => KeybindingOverrideMap | undefined;
|
|
17
|
+
isReading: () => boolean;
|
|
18
|
+
/** Required here though optional on the context: a whole-block surface that skipped it
|
|
19
|
+
* would consume an unlisted plugin's chord. `undefined` = every installed plugin. */
|
|
20
|
+
activation: PluginActivation | undefined;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Undo/redo for a block that IS its own focus target: no inner leaf carries the global tier for
|
|
24
|
+
* it, and the editor root declines while focus sits on the block. `true` means consumed —
|
|
25
|
+
* including in reading mode, since bypassing `dispatchKeyCommand` would otherwise hand a read-only
|
|
26
|
+
* document the browser's native undo.
|
|
27
|
+
*/
|
|
28
|
+
export declare function handleEditorGlobalChord(chord: string, deps: EditorGlobalChordDeps): boolean;
|
|
29
|
+
export interface BlockEdgeExitDeps {
|
|
30
|
+
getIndex: () => number;
|
|
31
|
+
focus: Pick<FocusActions, 'moveFocus'>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The four plain-arrow exits out of a block, in the direction the key points. Shared by
|
|
35
|
+
* whole-block focus and the plugin container's `moveFocusOut`, so a surface that reaches its
|
|
36
|
+
* own edge lands the same way the built-ins do. False for any other key.
|
|
37
|
+
*/
|
|
38
|
+
export declare function focusAcrossBlockEdge(key: string, deps: BlockEdgeExitDeps): boolean;
|
|
39
|
+
export interface WholeBlockKeyDeps extends BlockEdgeExitDeps {
|
|
40
|
+
getRaw: () => string;
|
|
41
|
+
blockEdit: Pick<BlockEditActions, 'splitBlock' | 'deleteBlock' | 'insertParagraph'>;
|
|
42
|
+
isReading: () => boolean;
|
|
43
|
+
stickyColumn: Pick<StickyColumnState, 'noteKey'>;
|
|
44
|
+
edgeAffinity: Pick<EdgeAffinityState, 'note'>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The whole-block-focus key tail shared by ThematicBreakBlock and the plugin container
|
|
48
|
+
* factory, so a new gate lands once instead of at both. Navigation never gates.
|
|
49
|
+
*/
|
|
50
|
+
export declare function handleWholeBlockKeys(e: KeyboardEvent, deps: WholeBlockKeyDeps): void;
|
|
51
|
+
export interface ContainerBlockComponentDeps {
|
|
52
|
+
/** What the mounted surface reports as `editable`, mirroring the kind's descriptor flag;
|
|
53
|
+
* omitted stays `true`, the built-in containers' answer. A getter, never a snapshot. */
|
|
54
|
+
readonly editable?: boolean;
|
|
55
|
+
/** Ends a live cross-block range when `focus` lands a caret — a whole-block landing
|
|
56
|
+
* reaches no child to borrow it from. */
|
|
57
|
+
readonly selection: SelectionState;
|
|
58
|
+
readonly innerBlockRefs: (BlockComponent | undefined)[];
|
|
59
|
+
/** The same scope's slots — the array for the dispatch walks, this for the reveal's
|
|
60
|
+
* mount-wait, which needs an identity the array's replacement can't invalidate. */
|
|
61
|
+
readonly refSlots: RefSlots<BlockComponent>;
|
|
62
|
+
readonly nodeChildrenLength: number;
|
|
63
|
+
/** For the pure-data transparency test, which must work off-window where
|
|
64
|
+
* `innerBlockRefs` is sparse (VR-6). */
|
|
65
|
+
readonly node: NodeView;
|
|
66
|
+
/** Scroll this scope so child `index` enters its window; resolves after a tick. */
|
|
67
|
+
readonly revealChild?: (index: number) => Promise<void>;
|
|
68
|
+
/** Lets the reveal degrade instead of hanging when a scroll missed (VR-5). */
|
|
69
|
+
readonly isInWindow?: (index: number) => boolean;
|
|
70
|
+
/** Collapse clamp — while true only the chrome row is mounted, so a focus extremum
|
|
71
|
+
* entering the container clamps to it rather than no-oping on an unmounted child. */
|
|
72
|
+
readonly isCollapsed?: () => boolean;
|
|
73
|
+
/** Open this container so a reveal can descend into its clamped-out body, as a real
|
|
74
|
+
* committed edit. Absent leaves the reveal to degrade on the chrome row. */
|
|
75
|
+
readonly expandCollapsed?: () => Promise<boolean>;
|
|
76
|
+
/** Whole-block-focus element for an opaque childless container, already composed
|
|
77
|
+
* through `composeWholeBlockFocusSurface`. */
|
|
78
|
+
readonly getFocusEl?: () => HTMLElement | null | undefined;
|
|
79
|
+
/** A childless opaque container has no child hosts to paint search/decoration
|
|
80
|
+
* rects, so `measurePartialRects` measures the block itself off this element. */
|
|
81
|
+
readonly getBoxEl?: () => HTMLElement | null | undefined;
|
|
82
|
+
/** The hidden editing host beside the declared surface, where whole-block focus lands. */
|
|
83
|
+
readonly inputProxy?: WholeBlockInputProxy;
|
|
84
|
+
}
|
|
85
|
+
export declare function createContainerBlockComponent(deps: ContainerBlockComponentDeps): ContainerBlockComponent;
|