@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,75 @@
|
|
|
1
|
+
import { devWarn } from '../dev-warn';
|
|
2
|
+
const MOD_ORDER = ['Mod', 'Alt', 'Shift'];
|
|
3
|
+
/**
|
|
4
|
+
* Keys that are a modifier being held, never a keystroke of their own. Every keydown consumer
|
|
5
|
+
* that must ignore "not a chord yet" reads this set rather than re-listing it.
|
|
6
|
+
*/
|
|
7
|
+
export const BARE_MODIFIER_KEYS = [
|
|
8
|
+
'Control',
|
|
9
|
+
'Shift',
|
|
10
|
+
'Alt',
|
|
11
|
+
'Meta',
|
|
12
|
+
'AltGraph',
|
|
13
|
+
'CapsLock'
|
|
14
|
+
];
|
|
15
|
+
const BARE_MODIFIERS = new Set(BARE_MODIFIER_KEYS);
|
|
16
|
+
/** A `key` value that is one typed character: one code point, so an astral glyph's two
|
|
17
|
+
* UTF-16 units still count as a single keystroke. */
|
|
18
|
+
export function isCharacterKey(key) {
|
|
19
|
+
return [...key].length === 1;
|
|
20
|
+
}
|
|
21
|
+
function normalizeKey(key) {
|
|
22
|
+
return key.length === 1 ? key.toUpperCase() : key;
|
|
23
|
+
}
|
|
24
|
+
export function eventToChord(e) {
|
|
25
|
+
if (BARE_MODIFIERS.has(e.key))
|
|
26
|
+
return null;
|
|
27
|
+
const mods = [];
|
|
28
|
+
if (e.ctrlKey || e.metaKey)
|
|
29
|
+
mods.push('Mod');
|
|
30
|
+
if (e.altKey)
|
|
31
|
+
mods.push('Alt');
|
|
32
|
+
if (e.shiftKey)
|
|
33
|
+
mods.push('Shift');
|
|
34
|
+
return [...mods, normalizeKey(e.key)].join('+');
|
|
35
|
+
}
|
|
36
|
+
export function normalizeChord(chord) {
|
|
37
|
+
const parts = chord.split('+');
|
|
38
|
+
const key = parts.pop() ?? '';
|
|
39
|
+
const present = new Set(parts);
|
|
40
|
+
const mods = MOD_ORDER.filter((m) => present.has(m));
|
|
41
|
+
return [...mods, normalizeKey(key)].join('+');
|
|
42
|
+
}
|
|
43
|
+
const VALID_MODIFIERS = new Set(MOD_ORDER);
|
|
44
|
+
/**
|
|
45
|
+
* Why a chord is malformed, or null when it is well-formed. Shared core of the strict paths;
|
|
46
|
+
* keeping the reason lets `normalizeChordStrict` name it in the warn.
|
|
47
|
+
*/
|
|
48
|
+
function chordDefect(chord) {
|
|
49
|
+
const parts = chord.split('+');
|
|
50
|
+
const key = parts.pop() ?? '';
|
|
51
|
+
if (key === '')
|
|
52
|
+
return 'empty key';
|
|
53
|
+
const bad = parts.find((mod) => !VALID_MODIFIERS.has(mod));
|
|
54
|
+
return bad === undefined ? null : `unrecognized modifier "${bad}" (use Mod/Alt/Shift)`;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The well-formedness the strict ingestion paths gate on, so a mis-typed `'Ctrl+B'` can't
|
|
58
|
+
* collapse to a bare `'B'` that fires on every keypress. Pure: the caller decides whether to
|
|
59
|
+
* warn, throw, or report.
|
|
60
|
+
*/
|
|
61
|
+
export function isChordWellFormed(chord) {
|
|
62
|
+
return chordDefect(chord) === null;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Validate then normalize a consumer-supplied chord; null (dev-warned) when malformed, guarding
|
|
66
|
+
* the trap where `'Ctrl+B'` drops the unrecognized `Ctrl` and collapses to bare `'B'`.
|
|
67
|
+
*/
|
|
68
|
+
export function normalizeChordStrict(chord) {
|
|
69
|
+
const defect = chordDefect(chord);
|
|
70
|
+
if (defect !== null) {
|
|
71
|
+
devWarn('keybindings', `chord "${chord}": ${defect}; entry dropped`);
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
return normalizeChord(chord);
|
|
75
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merge eligibility and target resolution for Backspace-at-start — the role-pair rules and the
|
|
3
|
+
* target-finding walker; per-kind `MergeRole` assignment lives on `BlockKindDescriptor`.
|
|
4
|
+
* See docs/design/editor.md — Merge eligibility: roles, not pairs.
|
|
5
|
+
*/
|
|
6
|
+
import type { CstNode } from '../core/nodes';
|
|
7
|
+
import { type MergeRole } from './block-kind-descriptor';
|
|
8
|
+
/** Can `currKind` merge into `prevKind` on Backspace? Derived from role pairs, never kinds. */
|
|
9
|
+
export declare function isMergeEligible(prevKind: CstNode['kind'], currKind: CstNode['kind']): boolean;
|
|
10
|
+
export declare function getMergeRole(kind: CstNode['kind']): MergeRole;
|
|
11
|
+
/**
|
|
12
|
+
* `target` is the leaf whose `raw` receives the merged text; `path` walks from the caller's
|
|
13
|
+
* `prev` block down to it, and is empty when `target === prev`.
|
|
14
|
+
*/
|
|
15
|
+
export interface MergeTarget {
|
|
16
|
+
target: CstNode;
|
|
17
|
+
path: number[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Descend into the last child until landing on a prose / prose-absorber leaf; null on a
|
|
21
|
+
* not-mergeable leaf or an empty container. A collapsed container clamps its body out of view,
|
|
22
|
+
* so the walk descends to the chrome leaf (child 0) instead — its not-mergeable role turns the
|
|
23
|
+
* merge into the caller's focus-move fallback rather than a hidden-body write.
|
|
24
|
+
*/
|
|
25
|
+
export declare function walkToDeepestMergeLeaf(node: CstNode, path: number[]): MergeTarget | null;
|
|
26
|
+
/** The leaf that receives text merged into `prev`; null means the caller moves focus instead. */
|
|
27
|
+
export declare function findMergeTarget(prev: CstNode): MergeTarget | null;
|
|
28
|
+
export declare function isBlockEditable(kind: CstNode['kind']): boolean;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merge eligibility and target resolution for Backspace-at-start — the role-pair rules and the
|
|
3
|
+
* target-finding walker; per-kind `MergeRole` assignment lives on `BlockKindDescriptor`.
|
|
4
|
+
* See docs/design/editor.md — Merge eligibility: roles, not pairs.
|
|
5
|
+
*/
|
|
6
|
+
import { getBlockKindDescriptor } from './block-kind-descriptor';
|
|
7
|
+
import { isCollapsedContainer } from './reserved-chrome';
|
|
8
|
+
// ── Merge Eligibility ───────────────────────────────────────────────────────
|
|
9
|
+
/** Can `currKind` merge into `prevKind` on Backspace? Derived from role pairs, never kinds. */
|
|
10
|
+
export function isMergeEligible(prevKind, currKind) {
|
|
11
|
+
const prev = getMergeRole(prevKind);
|
|
12
|
+
const curr = getMergeRole(currKind);
|
|
13
|
+
if (prev === 'prose' && curr === 'prose')
|
|
14
|
+
return true;
|
|
15
|
+
if (prev === 'prose-absorber' && curr === 'prose')
|
|
16
|
+
return true;
|
|
17
|
+
if (prev === 'container' && curr === 'prose')
|
|
18
|
+
return true;
|
|
19
|
+
if (prev === 'self-merge' && curr === 'self-merge')
|
|
20
|
+
return true;
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
export function getMergeRole(kind) {
|
|
24
|
+
return getBlockKindDescriptor(kind).mergeRole;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Descend into the last child until landing on a prose / prose-absorber leaf; null on a
|
|
28
|
+
* not-mergeable leaf or an empty container. A collapsed container clamps its body out of view,
|
|
29
|
+
* so the walk descends to the chrome leaf (child 0) instead — its not-mergeable role turns the
|
|
30
|
+
* merge into the caller's focus-move fallback rather than a hidden-body write.
|
|
31
|
+
*/
|
|
32
|
+
export function walkToDeepestMergeLeaf(node, path) {
|
|
33
|
+
const role = getMergeRole(node.kind);
|
|
34
|
+
if (role === 'prose' || role === 'prose-absorber') {
|
|
35
|
+
return { target: node, path };
|
|
36
|
+
}
|
|
37
|
+
if (!node.children || node.children.length === 0) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
const nextIndex = isCollapsedContainer(node) ? 0 : node.children.length - 1;
|
|
41
|
+
return walkToDeepestMergeLeaf(node.children[nextIndex], [...path, nextIndex]);
|
|
42
|
+
}
|
|
43
|
+
/** The leaf that receives text merged into `prev`; null means the caller moves focus instead. */
|
|
44
|
+
export function findMergeTarget(prev) {
|
|
45
|
+
const role = getMergeRole(prev.kind);
|
|
46
|
+
if (role === 'prose' || role === 'prose-absorber' || role === 'self-merge') {
|
|
47
|
+
return { target: prev, path: [] };
|
|
48
|
+
}
|
|
49
|
+
if (role === 'container') {
|
|
50
|
+
return walkToDeepestMergeLeaf(prev, []);
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
// ── Block Editability ───────────────────────────────────────────────────────
|
|
55
|
+
export function isBlockEditable(kind) {
|
|
56
|
+
return getBlockKindDescriptor(kind).editable;
|
|
57
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Priority ladder for the built-in block openers, single-sourced here so the published table and
|
|
3
|
+
* the registry cannot drift. Lower dispatches first, ties broken by kind name. A plugin opener
|
|
4
|
+
* whose matcher is a superset of a built-in's must price BELOW it (```mermaid under
|
|
5
|
+
* `fencedCode`); one that only slots between built-ins prices into the gap.
|
|
6
|
+
*/
|
|
7
|
+
export declare const OPENER_PRIORITIES: {
|
|
8
|
+
readonly fencedCode: 10;
|
|
9
|
+
readonly heading: 20;
|
|
10
|
+
readonly thematicBreak: 30;
|
|
11
|
+
readonly blockquote: 40;
|
|
12
|
+
readonly list: 50;
|
|
13
|
+
readonly indentedCode: 60;
|
|
14
|
+
readonly htmlBlock: 70;
|
|
15
|
+
readonly linkReferenceDefinition: 80;
|
|
16
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Priority ladder for the built-in block openers, single-sourced here so the published table and
|
|
3
|
+
* the registry cannot drift. Lower dispatches first, ties broken by kind name. A plugin opener
|
|
4
|
+
* whose matcher is a superset of a built-in's must price BELOW it (```mermaid under
|
|
5
|
+
* `fencedCode`); one that only slots between built-ins prices into the gap.
|
|
6
|
+
*/
|
|
7
|
+
export const OPENER_PRIORITIES = {
|
|
8
|
+
fencedCode: 10,
|
|
9
|
+
heading: 20,
|
|
10
|
+
thematicBreak: 30,
|
|
11
|
+
blockquote: 40,
|
|
12
|
+
list: 50,
|
|
13
|
+
indentedCode: 60,
|
|
14
|
+
htmlBlock: 70,
|
|
15
|
+
linkReferenceDefinition: 80
|
|
16
|
+
};
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single source of truth for the structural-operation vocabulary: `OperationKind`,
|
|
3
|
+
* `OpDescriptor`, and `EditEvent` all derive from `OperationDetailMap`, so drift is a compile
|
|
4
|
+
* error rather than a one-place-missed edit.
|
|
5
|
+
*/
|
|
6
|
+
export interface OperationDetailMap {
|
|
7
|
+
split: {
|
|
8
|
+
at: number;
|
|
9
|
+
itemIndex?: number;
|
|
10
|
+
innerIndex?: number;
|
|
11
|
+
};
|
|
12
|
+
merge: {
|
|
13
|
+
direction: 'prev' | 'next';
|
|
14
|
+
};
|
|
15
|
+
reorder: {
|
|
16
|
+
from: number;
|
|
17
|
+
to: number;
|
|
18
|
+
};
|
|
19
|
+
delete: {
|
|
20
|
+
crossBlock?: true;
|
|
21
|
+
table?: 'whole';
|
|
22
|
+
} | undefined;
|
|
23
|
+
input: {
|
|
24
|
+
byteLength: number;
|
|
25
|
+
};
|
|
26
|
+
/** `crossBlock` marks a write that spanned the range's other blocks too: `path` names one
|
|
27
|
+
* block, as every op does, and `length` is that block's. The `delete` twin reads the same.
|
|
28
|
+
* A toggle endpoint carrying a CELL INDEX names its grid, whose own bytes no write holds, so
|
|
29
|
+
* `length` is the grid's PRE-write length; a deep cell path names that cell like any block. */
|
|
30
|
+
updateContent: {
|
|
31
|
+
length: number;
|
|
32
|
+
crossBlock?: true;
|
|
33
|
+
};
|
|
34
|
+
replaceBlock: {
|
|
35
|
+
count: number;
|
|
36
|
+
} | {
|
|
37
|
+
action: 'indentItem' | 'promoteNestedItem';
|
|
38
|
+
itemIndex?: number;
|
|
39
|
+
parentItemIdx?: number;
|
|
40
|
+
nestedItemIdx?: number;
|
|
41
|
+
} | {
|
|
42
|
+
source: 'paste-dispatch' | 'paste-dispatch-table-cell' | 'cross-block-paste-whole-table';
|
|
43
|
+
};
|
|
44
|
+
paste: {
|
|
45
|
+
count: number;
|
|
46
|
+
} | {
|
|
47
|
+
source: 'list-absorb' | 'list-break-out' | 'container-matching' | 'container-matching-merge' | 'container-matching-merge-singleton';
|
|
48
|
+
listPath?: number[];
|
|
49
|
+
outerPath?: number[];
|
|
50
|
+
};
|
|
51
|
+
appendBlock: {
|
|
52
|
+
itemIndex?: number;
|
|
53
|
+
} | undefined;
|
|
54
|
+
/** Insert at an interior index; `appendBlock`'s sibling for a block minted BETWEEN two. */
|
|
55
|
+
insertBlock: undefined;
|
|
56
|
+
metadataUpdate: {
|
|
57
|
+
fields: string[];
|
|
58
|
+
};
|
|
59
|
+
undo: undefined;
|
|
60
|
+
redo: undefined;
|
|
61
|
+
tableInsertRow: {
|
|
62
|
+
rowIdx: number;
|
|
63
|
+
side: 'above' | 'below';
|
|
64
|
+
};
|
|
65
|
+
tableDeleteRow: {
|
|
66
|
+
rowIdx: number;
|
|
67
|
+
crossBlock?: true;
|
|
68
|
+
};
|
|
69
|
+
tableInsertColumn: {
|
|
70
|
+
colIdx: number;
|
|
71
|
+
side: 'left' | 'right';
|
|
72
|
+
};
|
|
73
|
+
tableDeleteColumn: {
|
|
74
|
+
colIdx: number;
|
|
75
|
+
crossBlock?: true;
|
|
76
|
+
};
|
|
77
|
+
tableReorderRow: {
|
|
78
|
+
from: number;
|
|
79
|
+
to: number;
|
|
80
|
+
};
|
|
81
|
+
tableReorderColumn: {
|
|
82
|
+
from: number;
|
|
83
|
+
to: number;
|
|
84
|
+
};
|
|
85
|
+
tableCycleAlignment: {
|
|
86
|
+
colIdx: number;
|
|
87
|
+
};
|
|
88
|
+
tableSetAlignment: {
|
|
89
|
+
colIdx: number;
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
import type { DocPath } from '../selection/path-math';
|
|
93
|
+
export type OperationKind = keyof OperationDetailMap;
|
|
94
|
+
/** Correlated kind↔detail pair; detail is optional only where the map allows undefined. */
|
|
95
|
+
export type OpDescriptor = {
|
|
96
|
+
[K in OperationKind]: undefined extends OperationDetailMap[K] ? {
|
|
97
|
+
kind: K;
|
|
98
|
+
detail?: OperationDetailMap[K];
|
|
99
|
+
} : {
|
|
100
|
+
kind: K;
|
|
101
|
+
detail: OperationDetailMap[K];
|
|
102
|
+
};
|
|
103
|
+
}[OperationKind];
|
|
104
|
+
/**
|
|
105
|
+
* OpDescriptor plus the doc-absolute event path container/multi-scope commits carry. `eventPath`
|
|
106
|
+
* is `DocPath` so the op families composing it can't decay to a raw `number[]`.
|
|
107
|
+
*/
|
|
108
|
+
export type ScopedOpDescriptor = OpDescriptor & {
|
|
109
|
+
eventPath: DocPath;
|
|
110
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { KindEnablement } from './registry-view';
|
|
2
|
+
export interface PluginActivation {
|
|
3
|
+
isActive(pluginName: string): boolean;
|
|
4
|
+
}
|
|
5
|
+
/** The prop-less default: everything installed in the process is active. */
|
|
6
|
+
export declare const everyInstalledPlugin: PluginActivation;
|
|
7
|
+
export declare function activationFor(pluginNames: readonly string[]): PluginActivation;
|
|
8
|
+
/**
|
|
9
|
+
* A kind whose owning plugin this instance did not activate resolves no component and drops
|
|
10
|
+
* its opener. A kind no plugin owns is never gated, which covers the built-ins and any kind
|
|
11
|
+
* registered outside an install.
|
|
12
|
+
*/
|
|
13
|
+
export declare function kindEnablementFor(activation: PluginActivation): KindEnablement;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { pluginKindOwner } from './plugin-install';
|
|
2
|
+
/** The prop-less default: everything installed in the process is active. */
|
|
3
|
+
export const everyInstalledPlugin = { isActive: () => true };
|
|
4
|
+
export function activationFor(pluginNames) {
|
|
5
|
+
const active = new Set(pluginNames);
|
|
6
|
+
return { isActive: (name) => active.has(name) };
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* A kind whose owning plugin this instance did not activate resolves no component and drops
|
|
10
|
+
* its opener. A kind no plugin owns is never gated, which covers the built-ins and any kind
|
|
11
|
+
* registered outside an install.
|
|
12
|
+
*/
|
|
13
|
+
export function kindEnablementFor(activation) {
|
|
14
|
+
return (kind) => {
|
|
15
|
+
const owner = pluginKindOwner(kind);
|
|
16
|
+
return owner === null || activation.isActive(owner);
|
|
17
|
+
};
|
|
18
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-(instance, plugin) EditorContext: the one object onEditor callbacks, global-command
|
|
3
|
+
* handlers, and BlockCommandContext.editor all receive. `document` is a getter so every read is
|
|
4
|
+
* live (rules.md: getters, not values).
|
|
5
|
+
*/
|
|
6
|
+
import type { DocumentView } from '../core/node-views';
|
|
7
|
+
import type { DecorationRegistry } from '../decorations/types';
|
|
8
|
+
import type { EditorRects } from '../editor-rects';
|
|
9
|
+
import type { PresentationMode } from '../presentation-mode';
|
|
10
|
+
import type { PluginActivation } from './plugin-activation';
|
|
11
|
+
import { type EditorContext, type EditorEventSubscriptions } from './plugin-install';
|
|
12
|
+
export interface EditorPluginContexts {
|
|
13
|
+
/** The instance's context for a plugin it activated; `undefined` for one it did not. The
|
|
14
|
+
* empty name is the instance's own base context (an unowned kind's), never gated. */
|
|
15
|
+
get(pluginName: string): EditorContext | undefined;
|
|
16
|
+
attachAll(onError: (report: {
|
|
17
|
+
plugin: string;
|
|
18
|
+
error: unknown;
|
|
19
|
+
}) => void): void;
|
|
20
|
+
dispose(): void;
|
|
21
|
+
}
|
|
22
|
+
export declare const mintEditorId: () => string;
|
|
23
|
+
export declare function createEditorPluginContexts(deps: {
|
|
24
|
+
editorId: string;
|
|
25
|
+
getDoc: () => DocumentView;
|
|
26
|
+
events: EditorEventSubscriptions;
|
|
27
|
+
optionsFor: (pluginName: string) => unknown;
|
|
28
|
+
decorations: DecorationRegistry;
|
|
29
|
+
rects: EditorRects;
|
|
30
|
+
getPresentationMode: () => PresentationMode;
|
|
31
|
+
getTheme: () => string;
|
|
32
|
+
activation: PluginActivation;
|
|
33
|
+
}): EditorPluginContexts;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { installedPluginNames, onEditorCallbacks } from './plugin-install';
|
|
2
|
+
// Process-monotonic instance id: `editor-1`, `editor-2`, … Stable per mount, so a
|
|
3
|
+
// plugin can key per-instance state on `editor.editorId`.
|
|
4
|
+
let n = 0;
|
|
5
|
+
export const mintEditorId = () => `editor-${++n}`;
|
|
6
|
+
export function createEditorPluginContexts(deps) {
|
|
7
|
+
const contexts = new Map();
|
|
8
|
+
const disposers = [];
|
|
9
|
+
let onDisposeError = () => { };
|
|
10
|
+
function get(pluginName) {
|
|
11
|
+
if (pluginName !== '' && !deps.activation.isActive(pluginName))
|
|
12
|
+
return undefined;
|
|
13
|
+
let ctx = contexts.get(pluginName);
|
|
14
|
+
if (!ctx) {
|
|
15
|
+
ctx = {
|
|
16
|
+
editorId: deps.editorId,
|
|
17
|
+
get document() {
|
|
18
|
+
return deps.getDoc();
|
|
19
|
+
},
|
|
20
|
+
events: deps.events,
|
|
21
|
+
options: deps.optionsFor(pluginName),
|
|
22
|
+
decorations: deps.decorations,
|
|
23
|
+
rects: deps.rects,
|
|
24
|
+
get presentationMode() {
|
|
25
|
+
return deps.getPresentationMode();
|
|
26
|
+
},
|
|
27
|
+
get theme() {
|
|
28
|
+
return deps.getTheme();
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
contexts.set(pluginName, ctx);
|
|
32
|
+
}
|
|
33
|
+
return ctx;
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
get,
|
|
37
|
+
attachAll(onError) {
|
|
38
|
+
onDisposeError = onError;
|
|
39
|
+
for (const plugin of installedPluginNames()) {
|
|
40
|
+
if (!deps.activation.isActive(plugin))
|
|
41
|
+
continue;
|
|
42
|
+
for (const cb of onEditorCallbacks(plugin)) {
|
|
43
|
+
try {
|
|
44
|
+
const dispose = cb(get(plugin));
|
|
45
|
+
if (typeof dispose === 'function')
|
|
46
|
+
disposers.push({ plugin, dispose });
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
onError({ plugin, error });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
dispose() {
|
|
55
|
+
for (const d of disposers.splice(0)) {
|
|
56
|
+
try {
|
|
57
|
+
d.dispose();
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
onDisposeError({ plugin: d.plugin, error });
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { DocumentView } from '../core/node-views';
|
|
2
|
+
import type { EditorEvents } from '../editor-events';
|
|
3
|
+
import type { DecorationRegistry } from '../decorations/types';
|
|
4
|
+
import type { EditorRects } from '../editor-rects';
|
|
5
|
+
import type { PresentationMode } from '../presentation-mode';
|
|
6
|
+
export interface EditorPlugin<Options = unknown> {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly version?: string;
|
|
9
|
+
setup(ctx: PluginSetupContext<Options>): void;
|
|
10
|
+
}
|
|
11
|
+
export interface PluginSetupContext<Options = unknown> {
|
|
12
|
+
onEditor(cb: OnEditorCallback<Options>): void;
|
|
13
|
+
}
|
|
14
|
+
export type OnEditorCallback<Options = unknown> = (editor: EditorContext<Options>) => void | (() => void);
|
|
15
|
+
/** Subscribe-only view of the events surface. EditorContext must NOT expose the
|
|
16
|
+
* full EditorEvents — that would freeze plugin-visible `emit` at 1.0. */
|
|
17
|
+
export type EditorEventSubscriptions = Pick<EditorEvents, 'on'>;
|
|
18
|
+
export interface EditorContext<Options = unknown> {
|
|
19
|
+
readonly editorId: string;
|
|
20
|
+
readonly document: DocumentView;
|
|
21
|
+
readonly events: EditorEventSubscriptions;
|
|
22
|
+
readonly options: Options;
|
|
23
|
+
readonly decorations: DecorationRegistry;
|
|
24
|
+
readonly rects: EditorRects;
|
|
25
|
+
/** Getter-backed, live; the EFFECTIVE mode. Change signal: the `presentationModeChange` event. */
|
|
26
|
+
readonly presentationMode: PresentationMode;
|
|
27
|
+
/** Getter-backed, live; the theme name reflected to `data-editor-theme`. Change signal: the
|
|
28
|
+
* `themeChange` event. Needed only by a plugin that PAINTS its own colors. */
|
|
29
|
+
readonly theme: string;
|
|
30
|
+
}
|
|
31
|
+
export declare function definePlugin<Options = unknown>(plugin: EditorPlugin<Options>): EditorPlugin<Options>;
|
|
32
|
+
export declare function installPlugins(plugins: readonly EditorPlugin[]): void;
|
|
33
|
+
/** A `plugins` prop entry: a bare unit, or a unit with per-instance options. */
|
|
34
|
+
export type EditorPluginEntry = EditorPlugin | {
|
|
35
|
+
plugin: EditorPlugin;
|
|
36
|
+
options?: unknown;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Split a `plugins` prop into the install list and a name→options map. Options are per-instance
|
|
40
|
+
* even though a unit installs once process-global. A plugin listed twice keeps the first entry,
|
|
41
|
+
* the same first-wins rule installPlugins applies, so the options map can't disagree with it.
|
|
42
|
+
*/
|
|
43
|
+
export declare function normalizePluginEntries(entries: readonly EditorPluginEntry[]): {
|
|
44
|
+
plugins: EditorPlugin[];
|
|
45
|
+
optionsByName: Map<string, unknown>;
|
|
46
|
+
};
|
|
47
|
+
export declare function isPluginInstalled(name: string): boolean;
|
|
48
|
+
export declare function currentInstallingPlugin(): string | null;
|
|
49
|
+
export declare function recordPluginKindOwner(kind: string, plugin: string): void;
|
|
50
|
+
export declare function pluginKindOwner(kind: string): string | null;
|
|
51
|
+
/** The per-instance EditorContext of the plugin owning `kind`. The `''` miss arm hands an
|
|
52
|
+
* unowned kind the base per-instance context, so the leaf and container tiers resolve alike. */
|
|
53
|
+
export declare function owningPluginEditor(pluginEditor: ((pluginName: string) => EditorContext | undefined) | undefined, kind: string): EditorContext | undefined;
|
|
54
|
+
/** onEditor callbacks a plugin registered during setup, in registration order. */
|
|
55
|
+
export declare function onEditorCallbacks(pluginName: string): readonly OnEditorCallback[];
|
|
56
|
+
/** Installed plugin names, in install order. */
|
|
57
|
+
export declare function installedPluginNames(): string[];
|
|
58
|
+
export declare function __resetInstalledPluginsForTests(): void;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { devWarn } from '../dev-warn';
|
|
2
|
+
import { isValidPluginName } from './plugin-name';
|
|
3
|
+
// ── Process-global install state ─────────────────────────────────────────────
|
|
4
|
+
// A plugin is code: its setup writes into register-once registries, so it runs at most once per
|
|
5
|
+
// process. `failed` remembers a name whose setup threw alongside its original error, since a
|
|
6
|
+
// partial setup can't be re-run and a later attempt must advise a reload without losing the cause.
|
|
7
|
+
const installed = new Map();
|
|
8
|
+
const failed = new Map();
|
|
9
|
+
const kindOwners = new Map();
|
|
10
|
+
const onEditorSubs = new Map();
|
|
11
|
+
let installing = null;
|
|
12
|
+
// ── Public API ───────────────────────────────────────────────────────────────
|
|
13
|
+
export function definePlugin(plugin) {
|
|
14
|
+
if (typeof plugin.setup !== 'function') {
|
|
15
|
+
throw new Error(`definePlugin: '${plugin.name}' setup must be a function`);
|
|
16
|
+
}
|
|
17
|
+
if (!isValidPluginName(plugin.name)) {
|
|
18
|
+
throw new Error(`definePlugin: invalid plugin name "${plugin.name}" — lowercase first letter, then letters/digits/hyphens`);
|
|
19
|
+
}
|
|
20
|
+
return plugin;
|
|
21
|
+
}
|
|
22
|
+
export function installPlugins(plugins) {
|
|
23
|
+
for (const plugin of plugins) {
|
|
24
|
+
const alreadyInstalled = installed.get(plugin.name);
|
|
25
|
+
if (alreadyInstalled) {
|
|
26
|
+
if (alreadyInstalled !== plugin) {
|
|
27
|
+
devWarn('plugin-install', `plugin '${pluginLabel(plugin)}' already installed; this definition (including any options) is ignored — definitions are process-global`);
|
|
28
|
+
}
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (failed.has(plugin.name)) {
|
|
32
|
+
throw new Error(`plugin '${pluginLabel(plugin)}' failed during a previous install; reload the page (or restart the dev server) — register-once registries cannot re-run a partial setup`, { cause: failed.get(plugin.name) });
|
|
33
|
+
}
|
|
34
|
+
installOne(plugin);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Split a `plugins` prop into the install list and a name→options map. Options are per-instance
|
|
39
|
+
* even though a unit installs once process-global. A plugin listed twice keeps the first entry,
|
|
40
|
+
* the same first-wins rule installPlugins applies, so the options map can't disagree with it.
|
|
41
|
+
*/
|
|
42
|
+
export function normalizePluginEntries(entries) {
|
|
43
|
+
const plugins = [];
|
|
44
|
+
const optionsByName = new Map();
|
|
45
|
+
const seen = new Set();
|
|
46
|
+
for (const entry of entries) {
|
|
47
|
+
const plugin = 'plugin' in entry ? entry.plugin : entry;
|
|
48
|
+
if (seen.has(plugin.name)) {
|
|
49
|
+
devWarn('plugin-install', `plugin '${plugin.name}' listed twice in one plugins prop; the first entry (and its options) wins`);
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
seen.add(plugin.name);
|
|
53
|
+
plugins.push(plugin);
|
|
54
|
+
if ('plugin' in entry && 'options' in entry)
|
|
55
|
+
optionsByName.set(plugin.name, entry.options);
|
|
56
|
+
}
|
|
57
|
+
return { plugins, optionsByName };
|
|
58
|
+
}
|
|
59
|
+
export function isPluginInstalled(name) {
|
|
60
|
+
return installed.has(name);
|
|
61
|
+
}
|
|
62
|
+
export function currentInstallingPlugin() {
|
|
63
|
+
return installing;
|
|
64
|
+
}
|
|
65
|
+
export function recordPluginKindOwner(kind, plugin) {
|
|
66
|
+
kindOwners.set(kind, plugin);
|
|
67
|
+
}
|
|
68
|
+
export function pluginKindOwner(kind) {
|
|
69
|
+
return kindOwners.get(kind) ?? null;
|
|
70
|
+
}
|
|
71
|
+
/** The per-instance EditorContext of the plugin owning `kind`. The `''` miss arm hands an
|
|
72
|
+
* unowned kind the base per-instance context, so the leaf and container tiers resolve alike. */
|
|
73
|
+
export function owningPluginEditor(pluginEditor, kind) {
|
|
74
|
+
return pluginEditor?.(pluginKindOwner(kind) ?? '');
|
|
75
|
+
}
|
|
76
|
+
/** onEditor callbacks a plugin registered during setup, in registration order. */
|
|
77
|
+
export function onEditorCallbacks(pluginName) {
|
|
78
|
+
return onEditorSubs.get(pluginName) ?? [];
|
|
79
|
+
}
|
|
80
|
+
/** Installed plugin names, in install order. */
|
|
81
|
+
export function installedPluginNames() {
|
|
82
|
+
return [...installed.keys()];
|
|
83
|
+
}
|
|
84
|
+
export function __resetInstalledPluginsForTests() {
|
|
85
|
+
installed.clear();
|
|
86
|
+
failed.clear();
|
|
87
|
+
kindOwners.clear();
|
|
88
|
+
onEditorSubs.clear();
|
|
89
|
+
}
|
|
90
|
+
// ── Internal ─────────────────────────────────────────────────────────────────
|
|
91
|
+
function installOne(plugin) {
|
|
92
|
+
installing = plugin.name;
|
|
93
|
+
const { ctx, close } = makeSetupContext(plugin.name);
|
|
94
|
+
try {
|
|
95
|
+
plugin.setup(ctx);
|
|
96
|
+
}
|
|
97
|
+
catch (original) {
|
|
98
|
+
// A setup that threw after calling onEditor must leave no orphaned subscriptions: the
|
|
99
|
+
// plugin never installs, so its callbacks must never run.
|
|
100
|
+
onEditorSubs.delete(plugin.name);
|
|
101
|
+
failed.set(plugin.name, original);
|
|
102
|
+
const message = original instanceof Error ? original.message : String(original);
|
|
103
|
+
throw new Error(`plugin '${pluginLabel(plugin)}': ${message}`, { cause: original });
|
|
104
|
+
}
|
|
105
|
+
finally {
|
|
106
|
+
close();
|
|
107
|
+
installing = null;
|
|
108
|
+
}
|
|
109
|
+
installed.set(plugin.name, plugin);
|
|
110
|
+
}
|
|
111
|
+
// onEditor is synchronous-only: the closer fires the moment setup returns, so a context leaked
|
|
112
|
+
// past setup throws instead of silently registering into a wiped install.
|
|
113
|
+
function makeSetupContext(pluginName) {
|
|
114
|
+
let open = true;
|
|
115
|
+
const ctx = {
|
|
116
|
+
onEditor(cb) {
|
|
117
|
+
if (!open) {
|
|
118
|
+
throw new Error(`onEditor: '${pluginName}' called onEditor after setup returned — subscriptions are synchronous-only (the same boundary as kind attribution)`);
|
|
119
|
+
}
|
|
120
|
+
let list = onEditorSubs.get(pluginName);
|
|
121
|
+
if (!list)
|
|
122
|
+
onEditorSubs.set(pluginName, (list = []));
|
|
123
|
+
list.push(cb);
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
return { ctx, close: () => (open = false) };
|
|
127
|
+
}
|
|
128
|
+
// `name@version` when the plugin carries a version, so a two-version collision reads
|
|
129
|
+
// unambiguously in the warn and the two failure throws.
|
|
130
|
+
function pluginLabel(plugin) {
|
|
131
|
+
return plugin.version ? `${plugin.name}@${plugin.version}` : plugin.name;
|
|
132
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type PluginBlockKind, type PluginInlineKind } from '../core/nodes';
|
|
2
|
+
export declare function declarePluginKind(name: string): PluginBlockKind;
|
|
3
|
+
/**
|
|
4
|
+
* Recover the branded kind for an already-declared name, so a module that didn't mint it reaches
|
|
5
|
+
* the brand without an unchecked cast. Throws for an undeclared name, so a typo can't silently
|
|
6
|
+
* register against a kind that doesn't exist.
|
|
7
|
+
*/
|
|
8
|
+
export declare function declaredPluginKind(name: string): PluginBlockKind;
|
|
9
|
+
/**
|
|
10
|
+
* Non-throwing declaration probe, so an idempotent module (HMR, a re-imported registrar) asks
|
|
11
|
+
* before declaring instead of catching {@link declarePluginKind}'s or {@link declaredPluginKind}'s
|
|
12
|
+
* throw.
|
|
13
|
+
*/
|
|
14
|
+
export declare function isBlockKindDeclared(name: string): boolean;
|
|
15
|
+
export declare function __clearDeclaredPluginKindsForTests(): void;
|
|
16
|
+
export declare function declarePluginInlineKind(name: string): PluginInlineKind;
|
|
17
|
+
/** The inline mirror of {@link declaredPluginKind}; throws for an undeclared name. */
|
|
18
|
+
export declare function declaredPluginInlineKind(name: string): PluginInlineKind;
|
|
19
|
+
/** The inline mirror of {@link isBlockKindDeclared}. */
|
|
20
|
+
export declare function isInlineKindDeclared(name: string): boolean;
|
|
21
|
+
export declare function __clearDeclaredPluginInlineKindsForTests(): void;
|