@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,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-block event dispatch, wired by `components/blocks/editable-surface.ts` and by
|
|
3
|
+
* `Editor.svelte` for editor-root routing. The factory returns handlers each caller runs at the
|
|
4
|
+
* top of its own event handlers; single-block handling stays with the caller. This file is the
|
|
5
|
+
* composer: keydown in keydown.ts, pointer in pointer.ts, paste / type-replace passthroughs.
|
|
6
|
+
*/
|
|
7
|
+
import type { BlockEditActions, HistoryActions } from '../../action-contracts';
|
|
8
|
+
import type { BlockComponent } from '../../block-component';
|
|
9
|
+
import type { BlockElLookup, DocumentGetter, LinkReferenceResolverRef, PluginEditorLookup, PresentationModeGetter } from '../../editor-keys';
|
|
10
|
+
import type { UserScrollport } from '../../cursor/scroll-ancestors';
|
|
11
|
+
import type { SelectionState } from '../selection-state.svelte';
|
|
12
|
+
import type { StickyColumnState } from '../../cursor/sticky-column';
|
|
13
|
+
import type { EdgeAffinityState } from '../../cursor/edge-affinity';
|
|
14
|
+
import type { CommitController } from '../../action-contracts';
|
|
15
|
+
import type { KeybindingOverrideMap } from '../../schema/keybinding-overrides';
|
|
16
|
+
import type { CommandErrorSink, CrossBlockCommandRouter } from '../../schema/block-commands';
|
|
17
|
+
import type { EditorEvents } from '../../editor-events';
|
|
18
|
+
import type { GrammarView } from '../../schema/block-openers';
|
|
19
|
+
import type { PluginActivation } from '../../schema/plugin-activation';
|
|
20
|
+
import type { PasteCommitCoordinator } from '../../tree-operations/paste/paste-deps';
|
|
21
|
+
export interface CrossBlockDispatchContext {
|
|
22
|
+
getEl: () => HTMLElement | null;
|
|
23
|
+
getMyPath: () => number[];
|
|
24
|
+
getIndex: () => number;
|
|
25
|
+
selection: SelectionState;
|
|
26
|
+
getDoc: DocumentGetter;
|
|
27
|
+
getBlockElByPath: BlockElLookup;
|
|
28
|
+
revealPath: (path: number[]) => Promise<BlockComponent | null>;
|
|
29
|
+
getEditorRoot: () => HTMLElement | null;
|
|
30
|
+
/** What autoscrolls a drag-select that reaches an edge: the root, the host's scroller, or the
|
|
31
|
+
* window. See `cursor/scroll-ancestors`. */
|
|
32
|
+
getScrollHost: () => UserScrollport | null;
|
|
33
|
+
/** Aborted when the owning editor unmounts. See the document facet's `lifetime`. */
|
|
34
|
+
getEditorLifetime: () => AbortSignal | null;
|
|
35
|
+
stickyColumn: StickyColumnState;
|
|
36
|
+
edgeAffinity: EdgeAffinityState;
|
|
37
|
+
blockEdit: BlockEditActions;
|
|
38
|
+
controller: CommitController;
|
|
39
|
+
history: HistoryActions;
|
|
40
|
+
pluginEditor: PluginEditorLookup | undefined;
|
|
41
|
+
/** The effective presentation mode; the destructive-branch reading gate keys off this. */
|
|
42
|
+
getPresentationMode: PresentationModeGetter | undefined;
|
|
43
|
+
/** The instance's link-reference resolver, forwarded to the delete's join seam. Required-
|
|
44
|
+
* nullable like `pluginEditor`, so a new construction site can't silently skip the thread. */
|
|
45
|
+
linkRef: LinkReferenceResolverRef | undefined;
|
|
46
|
+
onCommandError: CommandErrorSink | undefined;
|
|
47
|
+
/** The arm a format chord takes over the live range; the seam routes there rather than
|
|
48
|
+
* declining. Non-nullable: without it a rewrite chord is swallowed and nothing else. */
|
|
49
|
+
crossBlockCommands: CrossBlockCommandRouter;
|
|
50
|
+
getKeybindingOverrides: () => KeybindingOverrideMap;
|
|
51
|
+
pasteCoordinator: PasteCommitCoordinator;
|
|
52
|
+
/** Block grammar forwarded to the join-paste reparse. Required-nullable like `pluginEditor`
|
|
53
|
+
* so a new construction site can't silently skip the thread; `undefined` = global. */
|
|
54
|
+
grammar: GrammarView | undefined;
|
|
55
|
+
/** The plugins this instance activated, forwarded to the paste-transform pipeline.
|
|
56
|
+
* Required-nullable like `grammar`; `undefined` means every installed plugin. */
|
|
57
|
+
activePlugins: PluginActivation | undefined;
|
|
58
|
+
/** The instance event surface, the paste arm's only channel for a gesture it consumed but
|
|
59
|
+
* could not land. Non-nullable: skipping it drops a paste in silence. */
|
|
60
|
+
events: EditorEvents;
|
|
61
|
+
getCursorOffset: () => number | null;
|
|
62
|
+
/** Svelte's tick() — awaited after mutations so the DOM settles. */
|
|
63
|
+
afterReactivity: () => Promise<void>;
|
|
64
|
+
}
|
|
65
|
+
export interface CrossBlockHandlers {
|
|
66
|
+
/** Returns true if the event was fully handled (caller should return). */
|
|
67
|
+
handleKeyDown(e: KeyboardEvent): Promise<boolean>;
|
|
68
|
+
handlePointerDown(e: PointerEvent): boolean;
|
|
69
|
+
/** `replacement` stands in for the clipboard's own text, for a caller that already turned the
|
|
70
|
+
* payload into markdown and must not re-read the event past its awaits. A null event is a
|
|
71
|
+
* programmatic insertion: no gesture to consume, so `replacement` carries the payload. */
|
|
72
|
+
handlePaste(e: ClipboardEvent | null, replacement?: string): Promise<boolean>;
|
|
73
|
+
handleBeforeInput(e: InputEvent): Promise<boolean>;
|
|
74
|
+
handleCompositionStart(): boolean;
|
|
75
|
+
/** Cross-block range delete for Cut handlers, after they synchronously wrote the clipboard. */
|
|
76
|
+
performCrossBlockDeleteFromEvent(): Promise<void>;
|
|
77
|
+
}
|
|
78
|
+
export declare function createCrossBlockHandlers(ctx: CrossBlockDispatchContext): CrossBlockHandlers;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-block event dispatch, wired by `components/blocks/editable-surface.ts` and by
|
|
3
|
+
* `Editor.svelte` for editor-root routing. The factory returns handlers each caller runs at the
|
|
4
|
+
* top of its own event handlers; single-block handling stays with the caller. This file is the
|
|
5
|
+
* composer: keydown in keydown.ts, pointer in pointer.ts, paste / type-replace passthroughs.
|
|
6
|
+
*/
|
|
7
|
+
import { isReadingMode } from '../../presentation-mode';
|
|
8
|
+
import { performCrossBlockDelete } from './ops';
|
|
9
|
+
import { handleCrossBlockPaste } from './paste';
|
|
10
|
+
import { handleCrossBlockTypeReplace } from './type-replace';
|
|
11
|
+
import { createCrossBlockKeydown } from './keydown';
|
|
12
|
+
import { createCrossBlockPointer } from './pointer';
|
|
13
|
+
export function createCrossBlockHandlers(ctx) {
|
|
14
|
+
const mutationCtx = {
|
|
15
|
+
selection: ctx.selection,
|
|
16
|
+
getDoc: ctx.getDoc,
|
|
17
|
+
getBlockElByPath: ctx.getBlockElByPath,
|
|
18
|
+
revealPath: ctx.revealPath,
|
|
19
|
+
controller: ctx.controller,
|
|
20
|
+
pushUndoSnapshot: () => ctx.controller.pushUndoSnapshot(ctx.getIndex(), ctx.getCursorOffset() ?? 0),
|
|
21
|
+
grammar: ctx.grammar,
|
|
22
|
+
getPresentationMode: ctx.getPresentationMode,
|
|
23
|
+
linkRef: ctx.linkRef
|
|
24
|
+
};
|
|
25
|
+
const keydown = createCrossBlockKeydown(ctx, mutationCtx);
|
|
26
|
+
const pointer = createCrossBlockPointer(ctx);
|
|
27
|
+
// Reading-mode gates for the mutating halves live at the composer, so every construction site
|
|
28
|
+
// (each editable surface, the editor root) inherits them. Keydown gates its own destructive
|
|
29
|
+
// branches, since it also carries navigation, which stays live.
|
|
30
|
+
const reading = () => isReadingMode(ctx.getPresentationMode);
|
|
31
|
+
return {
|
|
32
|
+
handleKeyDown: keydown.handleKeyDown,
|
|
33
|
+
handleCompositionStart: keydown.handleCompositionStart,
|
|
34
|
+
handlePointerDown: pointer.handlePointerDown,
|
|
35
|
+
handlePaste: async (e, replacement) => {
|
|
36
|
+
if (reading()) {
|
|
37
|
+
e?.preventDefault();
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
return handleCrossBlockPaste(ctx, mutationCtx, e, replacement);
|
|
41
|
+
},
|
|
42
|
+
handleBeforeInput: async (e) => {
|
|
43
|
+
if (reading()) {
|
|
44
|
+
e.preventDefault();
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
return handleCrossBlockTypeReplace(ctx, mutationCtx, e);
|
|
48
|
+
},
|
|
49
|
+
performCrossBlockDeleteFromEvent: async () => {
|
|
50
|
+
// Reached from cut handlers after the clipboard write; declining the delete
|
|
51
|
+
// degrades a reading-mode cut to a copy.
|
|
52
|
+
if (reading())
|
|
53
|
+
return;
|
|
54
|
+
await performCrossBlockDelete(mutationCtx);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The per-block spans a cross-block format toggle rewrites, and the write over them. Pure over
|
|
3
|
+
* the tree, like `../range-delete`: the commit ceremony lives in `./format-toggle`. Direction is
|
|
4
|
+
* coverage across the WHOLE range — every span covered unapplies, anything else applies — so an
|
|
5
|
+
* apply leaves an already-marked block alone instead of toggling it the other way. Each span goes
|
|
6
|
+
* through the single-block seam, so its arms, candidates and mode verification are the same ones.
|
|
7
|
+
* A grid joins by its cells, which the range covers whole.
|
|
8
|
+
*/
|
|
9
|
+
import type { DocumentView } from '../../core/node-views';
|
|
10
|
+
import type { InlineMarkKind } from '../../schema/inline-construct-policy';
|
|
11
|
+
import type { PresentationMode } from '../../presentation-mode';
|
|
12
|
+
import type { GrammarView } from '../../schema/block-openers';
|
|
13
|
+
import { type NodeParent } from '../../tree-operations/node-ops';
|
|
14
|
+
import type { SharingState } from '../../tree-operations/sharing';
|
|
15
|
+
import { type SelectionPoint } from '../primitives';
|
|
16
|
+
export interface CrossBlockFormatWrite {
|
|
17
|
+
path: number[];
|
|
18
|
+
/** The block's display bytes after the toggle — its raw minus the trailing line ending. */
|
|
19
|
+
newDisplay: string;
|
|
20
|
+
newSelStart: number;
|
|
21
|
+
newSelEnd: number;
|
|
22
|
+
}
|
|
23
|
+
export interface CrossBlockFormatPlan {
|
|
24
|
+
writes: CrossBlockFormatWrite[];
|
|
25
|
+
/** The range's own endpoints after the rewrite, in document order, each in the space its own
|
|
26
|
+
* endpoint addresses: a char offset in prose and in the grid cell a deep path names, a cell
|
|
27
|
+
* index where the endpoint counts cells. */
|
|
28
|
+
startOffset: number;
|
|
29
|
+
endOffset: number;
|
|
30
|
+
}
|
|
31
|
+
/** Null where no block participates: the press is still consumed, but nothing is written. */
|
|
32
|
+
export declare function planCrossBlockFormat(doc: DocumentView, start: SelectionPoint, end: SelectionPoint, format: InlineMarkKind, mode: PresentationMode | undefined): CrossBlockFormatPlan | null;
|
|
33
|
+
/** The pressed-state a toolbar paints over a range, every mark at once: one is active where
|
|
34
|
+
* EVERY participating span carries it. All marks together, because a toolbar asks once per
|
|
35
|
+
* button against the same range and the decomposition is the cost. */
|
|
36
|
+
export declare function crossBlockActiveFormats(doc: DocumentView, start: SelectionPoint, end: SelectionPoint): ReadonlySet<InlineMarkKind>;
|
|
37
|
+
/** Write a plan into the tree, copy-path-on-write. The caller owns the commit ceremony. */
|
|
38
|
+
export declare function applyCrossBlockFormat(root: NodeParent, plan: CrossBlockFormatPlan, sharing: SharingState, grammar: GrammarView | undefined): void;
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The per-block spans a cross-block format toggle rewrites, and the write over them. Pure over
|
|
3
|
+
* the tree, like `../range-delete`: the commit ceremony lives in `./format-toggle`. Direction is
|
|
4
|
+
* coverage across the WHOLE range — every span covered unapplies, anything else applies — so an
|
|
5
|
+
* apply leaves an already-marked block alone instead of toggling it the other way. Each span goes
|
|
6
|
+
* through the single-block seam, so its arms, candidates and mode verification are the same ones.
|
|
7
|
+
* A grid joins by its cells, which the range covers whole.
|
|
8
|
+
*/
|
|
9
|
+
import { activeInlineFormats, inlineFormatsCovering, isInlineFormatActive, isInlineFormatActiveAfter, toggleInlineFormat } from '../../core/inline/format-toggle';
|
|
10
|
+
import { getContentRange } from '../../core/inline';
|
|
11
|
+
import { ownTrailingLineEnding, trimTrailingLineEnding } from '../../core/lines';
|
|
12
|
+
import { tryGetBlockKindDescriptor } from '../../schema/block-kind-descriptor';
|
|
13
|
+
import { normalizeBodyWrite, writeOwnRaw } from '../../tree-operations/node-ops';
|
|
14
|
+
import { ensureUnsharedPath, rebuildUnsharedChain } from '../../tree-operations/unshare';
|
|
15
|
+
import { comparePaths } from '../path-math';
|
|
16
|
+
import { charOffsetOf } from '../primitives';
|
|
17
|
+
import { coveredGridCells, gridEndpointCellIndex } from '../table-endpoint-snap';
|
|
18
|
+
const TAG = 'cross-block-format';
|
|
19
|
+
/** Null where no block participates: the press is still consumed, but nothing is written. */
|
|
20
|
+
export function planCrossBlockFormat(doc, start, end, format, mode) {
|
|
21
|
+
const spans = spansInRange(doc, start, end);
|
|
22
|
+
if (spans.length === 0)
|
|
23
|
+
return null;
|
|
24
|
+
// Read once per span: the vote and the per-span skip below ask the same question, and the
|
|
25
|
+
// answer costs a parse of the block's inlines.
|
|
26
|
+
const covered = spans.map((span) => isInlineFormatActive(span.edit, format));
|
|
27
|
+
const unapply = covered.every(Boolean);
|
|
28
|
+
// Each endpoint's own space, carried rather than read: a participating span overwrites its side
|
|
29
|
+
// with a char offset, and an endpoint counting cells owns no span, so its index stands.
|
|
30
|
+
const plan = {
|
|
31
|
+
writes: [],
|
|
32
|
+
startOffset: start.offset,
|
|
33
|
+
endOffset: end.offset
|
|
34
|
+
};
|
|
35
|
+
for (const [index, span] of spans.entries()) {
|
|
36
|
+
if (covered[index] !== unapply)
|
|
37
|
+
continue;
|
|
38
|
+
const toggled = toggleInlineFormat(span.edit, format, mode);
|
|
39
|
+
if (!toggled || !landedOnIntendedSide(span.edit, toggled, format, unapply))
|
|
40
|
+
continue;
|
|
41
|
+
plan.writes.push({
|
|
42
|
+
path: span.path,
|
|
43
|
+
newDisplay: toggled.newDisplay,
|
|
44
|
+
newSelStart: toggled.newSelStart,
|
|
45
|
+
newSelEnd: toggled.newSelEnd
|
|
46
|
+
});
|
|
47
|
+
if (span.isStart)
|
|
48
|
+
plan.startOffset = toggled.newSelStart;
|
|
49
|
+
if (span.isEnd)
|
|
50
|
+
plan.endOffset = toggled.newSelEnd;
|
|
51
|
+
}
|
|
52
|
+
return plan.writes.length === 0 ? null : plan;
|
|
53
|
+
}
|
|
54
|
+
/** The pressed-state a toolbar paints over a range, every mark at once: one is active where
|
|
55
|
+
* EVERY participating span carries it. All marks together, because a toolbar asks once per
|
|
56
|
+
* button against the same range and the decomposition is the cost. */
|
|
57
|
+
export function crossBlockActiveFormats(doc, start, end) {
|
|
58
|
+
const spans = spansInRange(doc, start, end);
|
|
59
|
+
if (spans.length === 0)
|
|
60
|
+
return new Set();
|
|
61
|
+
// The running intersection is the next span's candidate set, so a span costs one parse and a
|
|
62
|
+
// walk per mark still standing, and it empties where a per-mark `every` would stop.
|
|
63
|
+
let active = activeInlineFormats(spans[0].edit);
|
|
64
|
+
for (let index = 1; index < spans.length && active.size > 0; index++)
|
|
65
|
+
active = inlineFormatsCovering(spans[index].edit, active);
|
|
66
|
+
return active;
|
|
67
|
+
}
|
|
68
|
+
/** Write a plan into the tree, copy-path-on-write. The caller owns the commit ceremony. */
|
|
69
|
+
export function applyCrossBlockFormat(root, plan, sharing, grammar) {
|
|
70
|
+
const chains = [];
|
|
71
|
+
for (const write of plan.writes) {
|
|
72
|
+
const chain = ensureUnsharedPath(root, write.path, sharing);
|
|
73
|
+
const owned = chain[chain.length - 1];
|
|
74
|
+
if (!owned)
|
|
75
|
+
continue;
|
|
76
|
+
// A line ending reaching a cell's raw would be normalized into a space at the write sink.
|
|
77
|
+
const raw = write.newDisplay + ownTrailingLineEnding(owned.raw);
|
|
78
|
+
writeOwnRaw(owned, normalizeBodyWrite(chain[chain.length - 2]?.kind, raw), grammar);
|
|
79
|
+
chains.push(chain);
|
|
80
|
+
}
|
|
81
|
+
// Every write lands before any rebuild, and a chain rebuild re-emits its whole ancestry from
|
|
82
|
+
// children that are already current, so chain order is free.
|
|
83
|
+
for (const chain of chains)
|
|
84
|
+
rebuildUnsharedChain(root, chain, sharing, null, grammar);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* The anchor block's tail, every middle block's content, the focus block's head — in document
|
|
88
|
+
* order. Participation is the kind's own declaration, never its name: an editable, inline-bearing
|
|
89
|
+
* leaf with a non-blank span joins, and a grid hands over its covered cells, which are leaves of
|
|
90
|
+
* that same shape.
|
|
91
|
+
*/
|
|
92
|
+
function spansInRange(doc, start, end) {
|
|
93
|
+
const spans = [];
|
|
94
|
+
const visit = (holder, path) => {
|
|
95
|
+
const children = holder.children ?? [];
|
|
96
|
+
for (let index = 0; index < children.length; index++) {
|
|
97
|
+
const here = [...path, index];
|
|
98
|
+
// Everything past the end endpoint is out of the range, subtrees included.
|
|
99
|
+
if (comparePaths(here, end.path) > 0)
|
|
100
|
+
return;
|
|
101
|
+
const child = children[index];
|
|
102
|
+
if (child.children) {
|
|
103
|
+
if (tryGetBlockKindDescriptor(child.kind)?.containerContract === 'grid') {
|
|
104
|
+
// Appended, never spread: covered cells outnumber an argument list (G4.60).
|
|
105
|
+
for (const span of gridSpans(child, here, start, end))
|
|
106
|
+
spans.push(span);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
visit(child, here);
|
|
110
|
+
}
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
const span = spanFor(child, here, start, end);
|
|
114
|
+
if (span)
|
|
115
|
+
spans.push(span);
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
visit(doc, []);
|
|
119
|
+
return spans;
|
|
120
|
+
}
|
|
121
|
+
function spanFor(node, path, start, end) {
|
|
122
|
+
if (comparePaths(path, start.path) < 0 || comparePaths(path, end.path) > 0)
|
|
123
|
+
return null;
|
|
124
|
+
const isStart = comparePaths(path, start.path) === 0;
|
|
125
|
+
const isEnd = comparePaths(path, end.path) === 0;
|
|
126
|
+
const body = contentSpan(node, path, isStart ? charOffsetOf(start, TAG) : null, isEnd ? charOffsetOf(end, TAG) : null);
|
|
127
|
+
return body && { ...body, isStart, isEnd };
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* A grid's covered cells, each contributing its WHOLE content. An endpoint inside a grid resolves
|
|
131
|
+
* to one of its cells, so no cell is ever cut in half: an endpoint counting cells stays on the one
|
|
132
|
+
* it named, while one naming its cell by path follows that cell's own write.
|
|
133
|
+
*/
|
|
134
|
+
function gridSpans(grid, path, start, end) {
|
|
135
|
+
const from = gridEndpointCellIndex(grid, path, start);
|
|
136
|
+
// No endpoint of its own, and the range starts after it: the grid sits wholly before the range.
|
|
137
|
+
if (from === null && comparePaths(path, start.path) < 0)
|
|
138
|
+
return [];
|
|
139
|
+
const cells = coveredGridCells(grid, path, from, gridEndpointCellIndex(grid, path, end));
|
|
140
|
+
const spans = [];
|
|
141
|
+
for (const cell of cells) {
|
|
142
|
+
const body = contentSpan(cell.node, cell.path, null, null);
|
|
143
|
+
if (body)
|
|
144
|
+
spans.push({
|
|
145
|
+
...body,
|
|
146
|
+
isStart: addressesCell(start, cell.path),
|
|
147
|
+
isEnd: addressesCell(end, cell.path)
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
return spans;
|
|
151
|
+
}
|
|
152
|
+
/** Whether the endpoint names this cell BY PATH, which is the same question as whether its offset
|
|
153
|
+
* is a CHAR offset: only the deep `[grid, row, col]` endpoint G1.29 permits can match a cell path,
|
|
154
|
+
* so a table's cell index keeps its own space while a plugin grid's edge follows its cell's
|
|
155
|
+
* rewrite, as a prose edge follows its block's. */
|
|
156
|
+
function addressesCell(point, cellPath) {
|
|
157
|
+
return comparePaths(point.path, cellPath) === 0;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* What one leaf contributes between two char offsets — null on a side meaning the block's own
|
|
161
|
+
* content edge. Null where the kind declares itself out of inline marking, or where the boundary
|
|
162
|
+
* trim leaves nothing to mark.
|
|
163
|
+
*/
|
|
164
|
+
function contentSpan(node, path, from, to) {
|
|
165
|
+
const descriptor = tryGetBlockKindDescriptor(node.kind);
|
|
166
|
+
if (!descriptor?.supportsInline || !descriptor.editable || descriptor.isContainer)
|
|
167
|
+
return null;
|
|
168
|
+
const display = trimTrailingLineEnding(node.raw);
|
|
169
|
+
const content = getContentRange(node);
|
|
170
|
+
const selection = withoutBoundaryWhitespace(display, clampToContent(from ?? content.start, content), clampToContent(to ?? content.end, content));
|
|
171
|
+
return selection && { path, edit: { display, content, selection } };
|
|
172
|
+
}
|
|
173
|
+
/** The span minus its boundary whitespace, null once nothing is left. Markdown opens and closes a
|
|
174
|
+
* run against a word, never a space, so an untrimmed edge yields delimiters that form no
|
|
175
|
+
* construct — which the modes that paint them write anyway (`wrapCandidates` is unverified there). */
|
|
176
|
+
function withoutBoundaryWhitespace(display, from, to) {
|
|
177
|
+
let start = from;
|
|
178
|
+
let end = to;
|
|
179
|
+
while (start < end && /\s/.test(display[start]))
|
|
180
|
+
start++;
|
|
181
|
+
while (end > start && /\s/.test(display[end - 1]))
|
|
182
|
+
end--;
|
|
183
|
+
return start === end ? null : { start, end };
|
|
184
|
+
}
|
|
185
|
+
const clampToContent = (offset, content) => Math.min(Math.max(offset, content.start), content.end);
|
|
186
|
+
/**
|
|
187
|
+
* Whether the span actually changed sides. The single-block seam decides its own arm from the
|
|
188
|
+
* span alone, so a block whose write disagreed with the range's direction is dropped rather than
|
|
189
|
+
* committed against the press the user made.
|
|
190
|
+
*/
|
|
191
|
+
function landedOnIntendedSide(edit, toggled, format, unapply) {
|
|
192
|
+
return isInlineFormatActiveAfter(edit, toggled, format) !== unapply;
|
|
193
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The cross-block arm of the inline format toggles: plan the per-block spans (`./format-range`),
|
|
3
|
+
* write them all under ONE undo entry through the multi-scope ceremony, then put the range back
|
|
4
|
+
* over the result through the shared restore road. The dispatch seam reaches this through an
|
|
5
|
+
* injected router, so `schema/` keeps no edge to selection machinery.
|
|
6
|
+
*/
|
|
7
|
+
import type { BlockComponent } from '../../block-component';
|
|
8
|
+
import type { CommitController } from '../../action-contracts';
|
|
9
|
+
import type { BlockElLookup, DocumentGetter, PresentationModeGetter } from '../../editor-keys';
|
|
10
|
+
import type { CrossBlockCommandRouter } from '../../schema/block-commands';
|
|
11
|
+
import type { GrammarView } from '../../schema/block-openers';
|
|
12
|
+
import type { SelectionState } from '../selection-state.svelte';
|
|
13
|
+
export interface CrossBlockCommandDeps {
|
|
14
|
+
selection: SelectionState;
|
|
15
|
+
getDoc: DocumentGetter;
|
|
16
|
+
getBlockElByPath: BlockElLookup;
|
|
17
|
+
revealPath: (path: number[]) => Promise<BlockComponent | null>;
|
|
18
|
+
controller: CommitController;
|
|
19
|
+
/** The mode each per-block rewrite verifies against. Required-nullable like the cross-block
|
|
20
|
+
* dispatch context's own threads; `undefined` reads as source. */
|
|
21
|
+
getPresentationMode: PresentationModeGetter | undefined;
|
|
22
|
+
grammar: GrammarView | undefined;
|
|
23
|
+
/** The pressed-state memo's key alongside the range: the document is mutated in place, so its
|
|
24
|
+
* identity witnesses nothing (`docs/design/editor.md` § 7). */
|
|
25
|
+
getContentVersion: () => number;
|
|
26
|
+
}
|
|
27
|
+
export declare function createCrossBlockCommands(deps: CrossBlockCommandDeps): CrossBlockCommandRouter;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The cross-block arm of the inline format toggles: plan the per-block spans (`./format-range`),
|
|
3
|
+
* write them all under ONE undo entry through the multi-scope ceremony, then put the range back
|
|
4
|
+
* over the result through the shared restore road. The dispatch seam reaches this through an
|
|
5
|
+
* injected router, so `schema/` keeps no edge to selection machinery.
|
|
6
|
+
*/
|
|
7
|
+
import { ownTrailingLineEnding } from '../../core/lines';
|
|
8
|
+
import { docPathFrom } from '../../cursor/coordinate-spaces';
|
|
9
|
+
import { inlineMarkForCommand } from '../../schema/inline-construct-policy';
|
|
10
|
+
import { blockNodeAt } from '../../tree-operations/node-ops';
|
|
11
|
+
import { comparePaths } from '../path-math';
|
|
12
|
+
import { restoreSelection } from '../selection-restore';
|
|
13
|
+
import { applyCrossBlockFormat, crossBlockActiveFormats, planCrossBlockFormat } from './format-range';
|
|
14
|
+
export function createCrossBlockCommands(deps) {
|
|
15
|
+
const activeFormats = createActiveFormatMemo(deps);
|
|
16
|
+
return {
|
|
17
|
+
// Reachability of the arm, not participation: whether any block joins is only known once
|
|
18
|
+
// the range is decomposed, and a press that reaches no block writes nothing.
|
|
19
|
+
canRun: (id) => inlineMarkForCommand(id) !== null,
|
|
20
|
+
run: (id) => {
|
|
21
|
+
const mark = inlineMarkForCommand(id);
|
|
22
|
+
if (!mark)
|
|
23
|
+
return false;
|
|
24
|
+
void toggleFormatOverRange(deps, mark.kind);
|
|
25
|
+
return true;
|
|
26
|
+
},
|
|
27
|
+
isActive: (id) => {
|
|
28
|
+
const mark = inlineMarkForCommand(id);
|
|
29
|
+
return mark !== null && activeFormats().has(mark.kind);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// ── The pressed-state memo ─────────────────────────────────────────────────
|
|
34
|
+
const NO_MARKS = new Set();
|
|
35
|
+
/** One slot rather than a cache: a toolbar asks once per button against one range, and the previous
|
|
36
|
+
* key is dead the moment the selection moves. Outside reactive state like `inline-cache.ts`, since
|
|
37
|
+
* a derived read that wrote `$state` would be a write during a read. */
|
|
38
|
+
function createActiveFormatMemo(deps) {
|
|
39
|
+
let slot = null;
|
|
40
|
+
return () => {
|
|
41
|
+
const { start, end } = deps.selection;
|
|
42
|
+
if (!start || !end)
|
|
43
|
+
return NO_MARKS;
|
|
44
|
+
const key = `${deps.getContentVersion()}|${pointKey(start)}|${pointKey(end)}`;
|
|
45
|
+
if (slot?.key !== key) {
|
|
46
|
+
slot = { key, marks: crossBlockActiveFormats(deps.getDoc(), start, end) };
|
|
47
|
+
}
|
|
48
|
+
return slot.marks;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/** The offset's SPACE is part of the identity: a cell point counts cells where a char point
|
|
52
|
+
* counts bytes, so the flag rides the key. */
|
|
53
|
+
const pointKey = (point) => `${point.path.join(',')}@${point.offset}${point.cellCoordinate ? 'c' : ''}`;
|
|
54
|
+
// ── The commit ─────────────────────────────────────────────────────────────
|
|
55
|
+
async function toggleFormatOverRange(deps, format) {
|
|
56
|
+
const { anchor, focus, start, end } = deps.selection;
|
|
57
|
+
if (!anchor || !focus || !start || !end)
|
|
58
|
+
return;
|
|
59
|
+
const doc = deps.getDoc();
|
|
60
|
+
const plan = planCrossBlockFormat(doc, start, end, format, deps.getPresentationMode?.());
|
|
61
|
+
if (!plan)
|
|
62
|
+
return;
|
|
63
|
+
const restored = restoredRange(anchor, focus, start, end, plan);
|
|
64
|
+
await deps.controller.commitMultiScope({
|
|
65
|
+
// Doc scope alone: the writes are bytes, not splices, so no container's children array
|
|
66
|
+
// or id list moves and each touched spine rebuilds from the leaf it owns.
|
|
67
|
+
scopes: [deps.controller.getDocScope()],
|
|
68
|
+
// The endpoint's own space, like the plan's offsets: undo restores through the clamp that
|
|
69
|
+
// reads a grid's path as cell indices.
|
|
70
|
+
snapshot: { path: docPathFrom(start.path), offset: start.offset },
|
|
71
|
+
mutate: ([docScope]) => {
|
|
72
|
+
applyCrossBlockFormat({ children: docScope.children }, plan, docScope.sharing, deps.grammar);
|
|
73
|
+
return [{ op: 'noop' }];
|
|
74
|
+
},
|
|
75
|
+
op: {
|
|
76
|
+
kind: 'updateContent',
|
|
77
|
+
detail: { length: startBlockLength(doc, start, plan), crossBlock: true },
|
|
78
|
+
eventPath: docPathFrom(start.path)
|
|
79
|
+
},
|
|
80
|
+
afterTick: async () => {
|
|
81
|
+
await restoreSelection(restored, {
|
|
82
|
+
getDoc: deps.getDoc,
|
|
83
|
+
selectionState: deps.selection,
|
|
84
|
+
getBlockElByPath: deps.getBlockElByPath,
|
|
85
|
+
revealTarget: async (path) => (await deps.revealPath(path)) !== null
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/** The same pair, re-offset, with the user's anchor still on the side it was drawn from. */
|
|
91
|
+
function restoredRange(anchor, focus, start, end, plan) {
|
|
92
|
+
const order = comparePaths(anchor.path, focus.path);
|
|
93
|
+
const anchorLeads = order < 0 || (order === 0 && anchor.offset <= focus.offset);
|
|
94
|
+
const first = withOffset(start, plan.startOffset);
|
|
95
|
+
const last = withOffset(end, plan.endOffset);
|
|
96
|
+
return anchorLeads ? { anchor: first, focus: last } : { anchor: last, focus: first };
|
|
97
|
+
}
|
|
98
|
+
const withOffset = (point, offset) => ({
|
|
99
|
+
...point,
|
|
100
|
+
path: point.path.slice(),
|
|
101
|
+
offset
|
|
102
|
+
});
|
|
103
|
+
/** The event detail's post-write length, read off the plan: `op` is spent before `mutate` runs.
|
|
104
|
+
* A block the plan does not write reports the length it already stands at (`schema/operations.ts`). */
|
|
105
|
+
function startBlockLength(doc, start, plan) {
|
|
106
|
+
const raw = blockNodeAt(doc, start.path)?.raw ?? '';
|
|
107
|
+
const write = plan.writes.find((entry) => comparePaths(entry.path, start.path) === 0);
|
|
108
|
+
return write ? write.newDisplay.length + ownTrailingLineEnding(raw).length : raw.length;
|
|
109
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keydown + compositionstart half of the cross-block dispatcher. See dispatch.ts for the
|
|
3
|
+
* composer that wires this together with the pointer half.
|
|
4
|
+
*/
|
|
5
|
+
import type { CrossBlockMutationContext } from './ops';
|
|
6
|
+
import type { CrossBlockDispatchContext } from './dispatch';
|
|
7
|
+
export interface CrossBlockKeydown {
|
|
8
|
+
handleKeyDown(e: KeyboardEvent): Promise<boolean>;
|
|
9
|
+
handleCompositionStart(): boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function createCrossBlockKeydown(ctx: CrossBlockDispatchContext, mutCtx: CrossBlockMutationContext): CrossBlockKeydown;
|