@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,195 @@
|
|
|
1
|
+
import { DEV } from 'esm-env';
|
|
2
|
+
import { tick } from 'svelte';
|
|
3
|
+
import { groupDecorationsByAncestor, groupDecorationsByPath, pathKey } from './buckets';
|
|
4
|
+
import { islandPosition } from './island-dom';
|
|
5
|
+
import { assertInvariant } from '../assert';
|
|
6
|
+
import { isCommitInProgress } from '../invariants/commit-scope';
|
|
7
|
+
import { contentLengthOf, isProseKind } from '../core/inline';
|
|
8
|
+
import { isBlockNode, nodeAt } from '../tree-operations/node-ops';
|
|
9
|
+
import { devWarn } from '../dev-warn';
|
|
10
|
+
import { recordDecorationRun } from '../perf/instruments';
|
|
11
|
+
const EMPTY_MARKS = [];
|
|
12
|
+
const EMPTY_ISLANDS = [];
|
|
13
|
+
const EMPTY_BLOCKS = [];
|
|
14
|
+
export function createDecorationEngine(deps) {
|
|
15
|
+
// Non-reactive registry state, index-aligned with `results`. Handles close over the source
|
|
16
|
+
// object, not its index, so a dispose mid-list never staleness-shifts a surviving handle.
|
|
17
|
+
const sources = [];
|
|
18
|
+
const names = new Set();
|
|
19
|
+
const warnedUnrenderableIslands = new Set();
|
|
20
|
+
let results = $state([]);
|
|
21
|
+
// Deliberately not reactive: an invalidate() that reads it must not schedule a
|
|
22
|
+
// recompute of the derived buckets.
|
|
23
|
+
let editEpoch = 0;
|
|
24
|
+
const merged = $derived(results.flat());
|
|
25
|
+
const byPath = $derived(groupDecorationsByPath(merged));
|
|
26
|
+
const byAncestor = $derived(groupDecorationsByAncestor(merged));
|
|
27
|
+
function runSource(source) {
|
|
28
|
+
const i = sources.indexOf(source);
|
|
29
|
+
if (i < 0)
|
|
30
|
+
return; // disposed between schedule and run
|
|
31
|
+
recordDecorationRun();
|
|
32
|
+
let next;
|
|
33
|
+
try {
|
|
34
|
+
next = source.provide(deps.getDoc(), { editEpoch });
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
deps.onSourceError?.(source.name, error);
|
|
38
|
+
return; // keep the source's prior decorations — a throw never blanks the view
|
|
39
|
+
}
|
|
40
|
+
warnUnrenderableIslands(source.name, next);
|
|
41
|
+
// An empty→empty re-run must not reassign `results`, or every keystroke would
|
|
42
|
+
// republish the derived buckets for sources that never emit.
|
|
43
|
+
if (results[i].length === 0 && next.length === 0)
|
|
44
|
+
return;
|
|
45
|
+
const copy = results.slice();
|
|
46
|
+
copy[i] = next;
|
|
47
|
+
results = copy;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Why the render path will apply nothing for this island, or null when it will. The
|
|
51
|
+
* verdict belongs here and nowhere downstream: only this pass holds the decorations
|
|
52
|
+
* beside the document they were derived from, so only here does an unrenderable island
|
|
53
|
+
* mean the author placed it wrong rather than the document having moved since.
|
|
54
|
+
*/
|
|
55
|
+
function islandDefect(dec, node) {
|
|
56
|
+
// Non-prose kinds run no inline pass, so they apply no islands.
|
|
57
|
+
if (!isProseKind(node.kind)) {
|
|
58
|
+
return {
|
|
59
|
+
key: `non-prose\0${node.kind}`,
|
|
60
|
+
message: `on a non-prose ${node.kind} block; islands render only in prose blocks`
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
// An END offset, not a count: a heading's content starts past its marker, so reporting it as
|
|
64
|
+
// a byte total would name a number the author cannot place anything at.
|
|
65
|
+
const contentEnd = contentLengthOf(node);
|
|
66
|
+
const held = `the block's content ends at ${contentEnd}`;
|
|
67
|
+
if (dec.type === 'widget') {
|
|
68
|
+
if (dec.offset >= 0 && dec.offset <= contentEnd)
|
|
69
|
+
return null;
|
|
70
|
+
return { key: 'range', message: `at offset ${dec.offset}, but ${held}` };
|
|
71
|
+
}
|
|
72
|
+
if (dec.start >= 0 && dec.start < dec.end && dec.end <= contentEnd)
|
|
73
|
+
return null;
|
|
74
|
+
return { key: 'range', message: `at ${dec.start}..${dec.end}, but ${held}` };
|
|
75
|
+
}
|
|
76
|
+
function warnUnrenderableIslands(sourceName, decs) {
|
|
77
|
+
if (!DEV)
|
|
78
|
+
return;
|
|
79
|
+
const doc = deps.getDoc();
|
|
80
|
+
for (const dec of decs) {
|
|
81
|
+
if (dec.type !== 'widget' && dec.type !== 'replace')
|
|
82
|
+
continue;
|
|
83
|
+
const node = nodeAt(doc, dec.path);
|
|
84
|
+
if (!node || !isBlockNode(node))
|
|
85
|
+
continue;
|
|
86
|
+
const defect = islandDefect(dec, node);
|
|
87
|
+
if (!defect)
|
|
88
|
+
continue;
|
|
89
|
+
const key = `${sourceName}\0${defect.key}`;
|
|
90
|
+
if (warnedUnrenderableIslands.has(key))
|
|
91
|
+
continue;
|
|
92
|
+
warnedUnrenderableIslands.add(key);
|
|
93
|
+
devWarn('decorations', `source '${sourceName}' places a ${dec.type} island ${defect.message}`, { path: dec.path });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// A source invalidating from its own `edit` handler is asking to re-run inside the commit
|
|
97
|
+
// that emitted the event; deferred here to one run per source once the commit publishes.
|
|
98
|
+
const deferred = new Set();
|
|
99
|
+
let flushQueued = false;
|
|
100
|
+
function runAfterCommit(source) {
|
|
101
|
+
deferred.add(source);
|
|
102
|
+
if (flushQueued)
|
|
103
|
+
return;
|
|
104
|
+
flushQueued = true;
|
|
105
|
+
void tick().then(() => {
|
|
106
|
+
flushQueued = false;
|
|
107
|
+
const pending = [...deferred];
|
|
108
|
+
deferred.clear();
|
|
109
|
+
for (const source of pending)
|
|
110
|
+
runSource(source);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
function runAll() {
|
|
114
|
+
assertNotInCommit();
|
|
115
|
+
for (const source of sources)
|
|
116
|
+
runSource(source);
|
|
117
|
+
}
|
|
118
|
+
function addSource(source) {
|
|
119
|
+
if (names.has(source.name)) {
|
|
120
|
+
throw new Error(`addSource: a decoration source named '${source.name}' is already registered`);
|
|
121
|
+
}
|
|
122
|
+
names.add(source.name);
|
|
123
|
+
sources.push(source);
|
|
124
|
+
results = [...results, []];
|
|
125
|
+
runSource(source);
|
|
126
|
+
// Not `sources.indexOf`: dispose frees the name, so the same source object may be
|
|
127
|
+
// registered again, and this handle must stay inert over that second registration.
|
|
128
|
+
let live = true;
|
|
129
|
+
return {
|
|
130
|
+
invalidate: () => {
|
|
131
|
+
if (!live)
|
|
132
|
+
return;
|
|
133
|
+
if (isCommitInProgress())
|
|
134
|
+
runAfterCommit(source);
|
|
135
|
+
else
|
|
136
|
+
runSource(source);
|
|
137
|
+
},
|
|
138
|
+
dispose: () => {
|
|
139
|
+
if (!live)
|
|
140
|
+
return;
|
|
141
|
+
live = false;
|
|
142
|
+
const i = sources.indexOf(source);
|
|
143
|
+
sources.splice(i, 1);
|
|
144
|
+
names.delete(source.name);
|
|
145
|
+
results = results.filter((_, idx) => idx !== i);
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
function filterMarks(bucket) {
|
|
150
|
+
return bucket.filter((d) => d.dec.type === 'mark');
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
addSource,
|
|
154
|
+
get sourceCount() {
|
|
155
|
+
return sources.length;
|
|
156
|
+
},
|
|
157
|
+
notifyEdit() {
|
|
158
|
+
assertNotInCommit();
|
|
159
|
+
editEpoch++;
|
|
160
|
+
runAll();
|
|
161
|
+
},
|
|
162
|
+
marksForPath(path) {
|
|
163
|
+
const bucket = byPath.get(pathKey(path));
|
|
164
|
+
return bucket ? filterMarks(bucket) : EMPTY_MARKS;
|
|
165
|
+
},
|
|
166
|
+
marksForDescendants(path) {
|
|
167
|
+
const bucket = byAncestor.get(pathKey(path));
|
|
168
|
+
return bucket ? filterMarks(bucket) : EMPTY_MARKS;
|
|
169
|
+
},
|
|
170
|
+
islandsForPath(path) {
|
|
171
|
+
const bucket = byPath.get(pathKey(path));
|
|
172
|
+
if (!bucket)
|
|
173
|
+
return EMPTY_ISLANDS;
|
|
174
|
+
const islands = bucket.filter((d) => d.dec.type === 'widget' || d.dec.type === 'replace');
|
|
175
|
+
return islands.sort((a, b) => islandPosition(a.dec) - islandPosition(b.dec));
|
|
176
|
+
},
|
|
177
|
+
blockDecorationsForPath(path) {
|
|
178
|
+
const bucket = byPath.get(pathKey(path));
|
|
179
|
+
if (!bucket)
|
|
180
|
+
return EMPTY_BLOCKS;
|
|
181
|
+
return bucket
|
|
182
|
+
.filter((d) => d.dec.type === 'block')
|
|
183
|
+
.map((d) => d.dec);
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
// A re-run inside the commit ceremony would let a source read a half-applied tree.
|
|
188
|
+
function assertNotInCommit() {
|
|
189
|
+
assertInvariant('decoration-run-in-commit', () => isCommitInProgress()
|
|
190
|
+
? {
|
|
191
|
+
code: 'decoration-run-in-commit',
|
|
192
|
+
message: 'decoration engine re-ran inside the commit ceremony'
|
|
193
|
+
}
|
|
194
|
+
: null);
|
|
195
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-flow decoration islands: zero-width `widget` insertions and byte-carrying `replace`
|
|
3
|
+
* covers. An island is an atomic inline widget, so the shared raw-offset walk reads the
|
|
4
|
+
* block back byte-exact with no walker changes — a widget island spans zero bytes, and a
|
|
5
|
+
* replace island's `data-source-*` span equals the raw span of the DOM it displaced.
|
|
6
|
+
*
|
|
7
|
+
* Whether a range is one the author could place at all is decided where the source and the
|
|
8
|
+
* document it read are provably the same version (`decoration-state.svelte.ts`); a range
|
|
9
|
+
* this pass cannot honour is one the document has since outgrown, so it drops silently.
|
|
10
|
+
*/
|
|
11
|
+
import type { ContentLength } from '../core/inline';
|
|
12
|
+
import type { IndexedDecoration } from './buckets';
|
|
13
|
+
import type { Decoration, DecorationWidgetSpec, ReplaceDecoration, WidgetDecoration } from './types';
|
|
14
|
+
export interface ApplyIslandsOpts {
|
|
15
|
+
mountWidget: (spec: DecorationWidgetSpec, dec: Decoration) => {
|
|
16
|
+
el: HTMLElement;
|
|
17
|
+
destroy(): void;
|
|
18
|
+
} | null;
|
|
19
|
+
onSkipped?: (dec: Decoration, reason: string) => void;
|
|
20
|
+
/** Raw-space length of the block's rendered content (see {@link ContentLength}). */
|
|
21
|
+
contentLength: ContentLength;
|
|
22
|
+
/** Rendered ambient-marker length. Island offsets are raw-relative and the shared walk
|
|
23
|
+
* counts ambient text as ordinary text, so every boundary adds this (the
|
|
24
|
+
* TextEditableBlock compensation pattern). Default 0. */
|
|
25
|
+
ambientLength?: number;
|
|
26
|
+
}
|
|
27
|
+
/** Mutates `root` (the freshly built inline fragment). Returns destroy handles for
|
|
28
|
+
* mounted widgets — the caller sweeps them next rebuild. */
|
|
29
|
+
export declare function applyIslandDecorations(root: ParentNode, raw: string, islands: IndexedDecoration<WidgetDecoration | ReplaceDecoration>[], opts: ApplyIslandsOpts): Array<() => void>;
|
|
30
|
+
/** Gated island signature for a render key. No islands ⇒ '', keeping an undecorated
|
|
31
|
+
* block's key byte-identical to the island-free format. Widget identity is deliberately
|
|
32
|
+
* untracked: same position + class ⇒ equal signature (see DecorationWidgetSpec). */
|
|
33
|
+
export declare function islandRenderKeyPart(islands: IndexedDecoration<WidgetDecoration | ReplaceDecoration>[]): string;
|
|
34
|
+
/** An island's ordering position, shared by the application pass and the render order. */
|
|
35
|
+
export declare function islandPosition(dec: WidgetDecoration | ReplaceDecoration): number;
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-flow decoration islands: zero-width `widget` insertions and byte-carrying `replace`
|
|
3
|
+
* covers. An island is an atomic inline widget, so the shared raw-offset walk reads the
|
|
4
|
+
* block back byte-exact with no walker changes — a widget island spans zero bytes, and a
|
|
5
|
+
* replace island's `data-source-*` span equals the raw span of the DOM it displaced.
|
|
6
|
+
*
|
|
7
|
+
* Whether a range is one the author could place at all is decided where the source and the
|
|
8
|
+
* document it read are provably the same version (`decoration-state.svelte.ts`); a range
|
|
9
|
+
* this pass cannot honour is one the document has since outgrown, so it drops silently.
|
|
10
|
+
*/
|
|
11
|
+
import { DEV } from 'esm-env';
|
|
12
|
+
import { ambientSpanOf } from '../ambient/ambient-dom';
|
|
13
|
+
import { asRawOffset, toDomTextOffset, toRawOffset } from '../cursor/coordinate-spaces';
|
|
14
|
+
import { createRangeAtDomTextOffsets, rawTextOfNode, widgetSpanContainingOffset } from '../cursor/widget-offset';
|
|
15
|
+
import { devWarn } from '../dev-warn';
|
|
16
|
+
/** Mutates `root` (the freshly built inline fragment). Returns destroy handles for
|
|
17
|
+
* mounted widgets — the caller sweeps them next rebuild. */
|
|
18
|
+
export function applyIslandDecorations(root, raw, islands, opts) {
|
|
19
|
+
if (islands.length === 0)
|
|
20
|
+
return [];
|
|
21
|
+
const ambientLength = opts.ambientLength ?? 0;
|
|
22
|
+
const contentLength = opts.contentLength;
|
|
23
|
+
const destroys = [];
|
|
24
|
+
for (const { dec } of orderForApplication(islands)) {
|
|
25
|
+
if (dec.type === 'widget')
|
|
26
|
+
applyWidget(dec);
|
|
27
|
+
else
|
|
28
|
+
applyReplace(dec);
|
|
29
|
+
}
|
|
30
|
+
return destroys;
|
|
31
|
+
function applyWidget(dec) {
|
|
32
|
+
if (dec.offset < 0 || dec.offset > contentLength)
|
|
33
|
+
return;
|
|
34
|
+
const walkOffset = toDomTextOffset(asRawOffset(dec.offset), ambientLength);
|
|
35
|
+
const range = createRangeAtDomTextOffsets(root, walkOffset, walkOffset);
|
|
36
|
+
if (!range) {
|
|
37
|
+
opts.onSkipped?.(dec, 'no DOM position at offset');
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const mounted = opts.mountWidget(dec.widget, dec);
|
|
41
|
+
if (!mounted) {
|
|
42
|
+
opts.onSkipped?.(dec, 'widget mount failed');
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
destroys.push(mounted.destroy);
|
|
46
|
+
const island = buildIsland(dec.offset, dec.offset);
|
|
47
|
+
island.appendChild(mounted.el);
|
|
48
|
+
insertHoistedOutOfAmbient(range, island);
|
|
49
|
+
}
|
|
50
|
+
function applyReplace(dec) {
|
|
51
|
+
if (dec.start < 0 || dec.end > contentLength || dec.start >= dec.end)
|
|
52
|
+
return;
|
|
53
|
+
// A boundary strictly inside an atomic widget snaps outward to whole-element
|
|
54
|
+
// coverage, so the island's span still equals the bytes it displaces.
|
|
55
|
+
let start = dec.start;
|
|
56
|
+
let end = dec.end;
|
|
57
|
+
const startSpan = widgetSpanContainingOffset(root, toDomTextOffset(asRawOffset(start), ambientLength));
|
|
58
|
+
if (startSpan)
|
|
59
|
+
start = toRawOffset(startSpan.start, ambientLength);
|
|
60
|
+
const endSpan = widgetSpanContainingOffset(root, toDomTextOffset(asRawOffset(end), ambientLength));
|
|
61
|
+
if (endSpan)
|
|
62
|
+
end = toRawOffset(endSpan.end, ambientLength);
|
|
63
|
+
if (startSpan || endSpan) {
|
|
64
|
+
devWarn('decorations', `replace boundary inside an atomic widget; snapped ${dec.start}..${dec.end} outward to ${start}..${end}`);
|
|
65
|
+
}
|
|
66
|
+
const range = createRangeAtDomTextOffsets(root, toDomTextOffset(asRawOffset(start), ambientLength), toDomTextOffset(asRawOffset(end), ambientLength));
|
|
67
|
+
if (!range) {
|
|
68
|
+
opts.onSkipped?.(dec, 'no DOM range for span');
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const ambient = ambientSpanOf(root);
|
|
72
|
+
if (ambient && ambient.contains(range.startContainer))
|
|
73
|
+
range.setStartAfter(ambient);
|
|
74
|
+
const extracted = range.extractContents();
|
|
75
|
+
if (DEV) {
|
|
76
|
+
const displaced = rawTextOfNode(extracted, raw);
|
|
77
|
+
if (displaced !== raw.slice(start, end)) {
|
|
78
|
+
devWarn('decorations', 'replace island span disagrees with the displaced DOM bytes', {
|
|
79
|
+
span: [start, end],
|
|
80
|
+
displaced
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
const island = buildIsland(start, end);
|
|
85
|
+
if (dec.class)
|
|
86
|
+
island.classList.add(...dec.class.split(/\s+/).filter(Boolean));
|
|
87
|
+
if (dec.widget) {
|
|
88
|
+
const mounted = opts.mountWidget(dec.widget, dec);
|
|
89
|
+
if (mounted) {
|
|
90
|
+
destroys.push(mounted.destroy);
|
|
91
|
+
island.appendChild(mounted.el);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
range.insertNode(island);
|
|
95
|
+
}
|
|
96
|
+
// The walk resolves a position at the ambient boundary to the END of the span's text,
|
|
97
|
+
// but an island must land after the span, never inside the read-only marker.
|
|
98
|
+
function insertHoistedOutOfAmbient(range, island) {
|
|
99
|
+
const ambient = ambientSpanOf(root);
|
|
100
|
+
if (ambient && ambient.contains(range.startContainer)) {
|
|
101
|
+
ambient.after(island);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
range.insertNode(island);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/** Gated island signature for a render key. No islands ⇒ '', keeping an undecorated
|
|
108
|
+
* block's key byte-identical to the island-free format. Widget identity is deliberately
|
|
109
|
+
* untracked: same position + class ⇒ equal signature (see DecorationWidgetSpec). */
|
|
110
|
+
export function islandRenderKeyPart(islands) {
|
|
111
|
+
if (islands.length === 0)
|
|
112
|
+
return '';
|
|
113
|
+
return `\0${islands.map((i) => islandSig(i.dec)).join(';')}`;
|
|
114
|
+
}
|
|
115
|
+
const islandSig = (d) => d.type === 'widget'
|
|
116
|
+
? `w:${d.offset}:${d.side ?? 'after'}`
|
|
117
|
+
: `r:${d.start}-${d.end}:${d.class ?? ''}:${d.widget ? 1 : 0}`;
|
|
118
|
+
/** An island's ordering position, shared by the application pass and the render order. */
|
|
119
|
+
export function islandPosition(dec) {
|
|
120
|
+
return dec.type === 'widget' ? dec.offset : dec.start;
|
|
121
|
+
}
|
|
122
|
+
// ── Internal ────────────────────────────────────────────────────────────────
|
|
123
|
+
/**
|
|
124
|
+
* Descending position order, so a replace extraction never spans an island inserted
|
|
125
|
+
* earlier in the pass. Ties put replaces first, since a same-start widget island would be
|
|
126
|
+
* swallowed by the extraction; `side: 'after'` widgets follow, leaving the final DOM order
|
|
127
|
+
* at one offset as [before, after].
|
|
128
|
+
*/
|
|
129
|
+
function orderForApplication(islands) {
|
|
130
|
+
return [...islands].sort((a, b) => islandPosition(b.dec) - islandPosition(a.dec) ||
|
|
131
|
+
tieRank(a.dec) - tieRank(b.dec) ||
|
|
132
|
+
b.index - a.index);
|
|
133
|
+
}
|
|
134
|
+
function tieRank(dec) {
|
|
135
|
+
if (dec.type === 'replace')
|
|
136
|
+
return 0;
|
|
137
|
+
return dec.side === 'before' ? 2 : 1;
|
|
138
|
+
}
|
|
139
|
+
function buildIsland(sourceStart, sourceEnd) {
|
|
140
|
+
const island = document.createElement('span');
|
|
141
|
+
island.className = 'decoration-island';
|
|
142
|
+
island.dataset.inlineWidget = '';
|
|
143
|
+
island.dataset.decorationIsland = '';
|
|
144
|
+
island.dataset.sourceStart = String(sourceStart);
|
|
145
|
+
island.dataset.sourceEnd = String(sourceEnd);
|
|
146
|
+
island.setAttribute('contenteditable', 'false');
|
|
147
|
+
return island;
|
|
148
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `data-` names a block decoration may not spell. `.block-host` is an ancestor of every walk
|
|
3
|
+
* container, so an attribute here answers the ancestor lookups the CSS families, the offset walk
|
|
4
|
+
* and selection/windowing all make — a decoration spelling one diverges the readers from what the
|
|
5
|
+
* DOM actually holds. The list is what those consumers read via `closest()` or an ancestor
|
|
6
|
+
* combinator; a name read only on the element that writes it is not in scope.
|
|
7
|
+
*/
|
|
8
|
+
export declare const RESERVED_BLOCK_ATTRS: ReadonlySet<string>;
|
|
9
|
+
/** A block decoration's attributes minus the names it may not spell, which are dropped with a dev
|
|
10
|
+
* warn. Reserved is asked in lowercase: `setAttribute` lowercases, so a capital is not a
|
|
11
|
+
* different name, only a different spelling of the same one. */
|
|
12
|
+
export declare function acceptedBlockAttrs(attrs: Record<string, string> | undefined, path: number[]): Array<[string, string]>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `data-` names a block decoration may not spell. `.block-host` is an ancestor of every walk
|
|
3
|
+
* container, so an attribute here answers the ancestor lookups the CSS families, the offset walk
|
|
4
|
+
* and selection/windowing all make — a decoration spelling one diverges the readers from what the
|
|
5
|
+
* DOM actually holds. The list is what those consumers read via `closest()` or an ancestor
|
|
6
|
+
* combinator; a name read only on the element that writes it is not in scope.
|
|
7
|
+
*/
|
|
8
|
+
import { devWarn } from '../dev-warn';
|
|
9
|
+
export const RESERVED_BLOCK_ATTRS = new Set([
|
|
10
|
+
'data-block-path',
|
|
11
|
+
'data-block-kind',
|
|
12
|
+
'data-content-empty',
|
|
13
|
+
'data-cross-block',
|
|
14
|
+
'data-decoration-island',
|
|
15
|
+
'data-focused',
|
|
16
|
+
'data-gap-caret',
|
|
17
|
+
'data-image-overlay',
|
|
18
|
+
'data-image-widget',
|
|
19
|
+
'data-inline-widget',
|
|
20
|
+
'data-link-card',
|
|
21
|
+
'data-presentation',
|
|
22
|
+
'data-table-row-idx'
|
|
23
|
+
]);
|
|
24
|
+
/** The name production `setAttribute` enforces: a name it refuses throws inside the decoration
|
|
25
|
+
* effect, taking the whole mount rather than one attribute. */
|
|
26
|
+
const ATTR_NAME = /^[A-Za-z_:][A-Za-z0-9_.:-]*$/;
|
|
27
|
+
/** A block decoration's attributes minus the names it may not spell, which are dropped with a dev
|
|
28
|
+
* warn. Reserved is asked in lowercase: `setAttribute` lowercases, so a capital is not a
|
|
29
|
+
* different name, only a different spelling of the same one. */
|
|
30
|
+
export function acceptedBlockAttrs(attrs, path) {
|
|
31
|
+
const accepted = [];
|
|
32
|
+
for (const [name, value] of Object.entries(attrs ?? {})) {
|
|
33
|
+
const refusal = !ATTR_NAME.test(name)
|
|
34
|
+
? 'is not a valid attribute name'
|
|
35
|
+
: RESERVED_BLOCK_ATTRS.has(name.toLowerCase())
|
|
36
|
+
? 'is reserved by the editor'
|
|
37
|
+
: null;
|
|
38
|
+
if (refusal !== null) {
|
|
39
|
+
devWarn('decorations', `block decoration attribute '${name}' ${refusal} and was dropped`, {
|
|
40
|
+
path
|
|
41
|
+
});
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
accepted.push([name, value]);
|
|
45
|
+
}
|
|
46
|
+
return accepted;
|
|
47
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* View-only annotations layered over the rendered document. Decorations never enter the
|
|
3
|
+
* CST: pure sources produce them per-instance, and overlays/islands consume them.
|
|
4
|
+
*/
|
|
5
|
+
import type { DocumentView } from '../core/node-views';
|
|
6
|
+
export interface MarkDecoration {
|
|
7
|
+
type: 'mark';
|
|
8
|
+
path: number[];
|
|
9
|
+
start: number;
|
|
10
|
+
end: number;
|
|
11
|
+
class: string;
|
|
12
|
+
attrs?: Record<string, string>;
|
|
13
|
+
interactive?: {
|
|
14
|
+
onClick: (dec: MarkDecoration, ev: MouseEvent) => void;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export interface WidgetDecoration {
|
|
18
|
+
type: 'widget';
|
|
19
|
+
path: number[];
|
|
20
|
+
offset: number;
|
|
21
|
+
side?: 'before' | 'after';
|
|
22
|
+
widget: DecorationWidgetSpec;
|
|
23
|
+
}
|
|
24
|
+
export interface ReplaceDecoration {
|
|
25
|
+
type: 'replace';
|
|
26
|
+
path: number[];
|
|
27
|
+
start: number;
|
|
28
|
+
end: number;
|
|
29
|
+
widget?: DecorationWidgetSpec;
|
|
30
|
+
class?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface BlockDecoration {
|
|
33
|
+
type: 'block';
|
|
34
|
+
path: number[];
|
|
35
|
+
class?: string;
|
|
36
|
+
attrs?: Record<string, string>;
|
|
37
|
+
badge?: DecorationWidgetSpec;
|
|
38
|
+
}
|
|
39
|
+
export type Decoration = MarkDecoration | WidgetDecoration | ReplaceDecoration | BlockDecoration;
|
|
40
|
+
/** Render keys don't track widget identity: same position + class ⇒ equal. Vary `class`
|
|
41
|
+
* to force a re-render. */
|
|
42
|
+
export type DecorationWidgetSpec = {
|
|
43
|
+
component: import('svelte').Component<{
|
|
44
|
+
decoration: Decoration;
|
|
45
|
+
}>;
|
|
46
|
+
} | {
|
|
47
|
+
buildDom: (dec: Decoration) => HTMLElement;
|
|
48
|
+
};
|
|
49
|
+
export interface ProvideContext {
|
|
50
|
+
/** Bumped once per document change, never by invalidate(). The memo key for sources that
|
|
51
|
+
* cache their scan; `doc.children` identity is NOT one, since typing mutates in place. */
|
|
52
|
+
editEpoch: number;
|
|
53
|
+
}
|
|
54
|
+
export interface DecorationSource {
|
|
55
|
+
name: string;
|
|
56
|
+
provide: (doc: DocumentView, ctx: ProvideContext) => Decoration[];
|
|
57
|
+
}
|
|
58
|
+
export interface DecorationSourceHandle {
|
|
59
|
+
/** Synchronous by contract: decorations and buckets reflect the new result before this
|
|
60
|
+
* returns. Search's setQuery relies on it — never defer. The one exception is a call
|
|
61
|
+
* from inside a commit (an `edit` handler): those coalesce to one run once it publishes,
|
|
62
|
+
* since a source must never read a half-applied tree. */
|
|
63
|
+
invalidate(): void;
|
|
64
|
+
dispose(): void;
|
|
65
|
+
}
|
|
66
|
+
export interface DecorationRegistry {
|
|
67
|
+
addSource(source: DecorationSource): DecorationSourceHandle;
|
|
68
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one mounting seam for decoration widget specs, so error containment and teardown
|
|
3
|
+
* semantics can't drift between block badges and inline islands.
|
|
4
|
+
*/
|
|
5
|
+
import type { Decoration, DecorationWidgetSpec } from './types';
|
|
6
|
+
export interface DecorationWidgetHandle {
|
|
7
|
+
el: HTMLElement;
|
|
8
|
+
/** Unmounts the component (if any) and detaches `el`. Idempotent. */
|
|
9
|
+
destroy(): void;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Build a widget spec's DOM. A synchronous throw is contained and surfaced as null, so the
|
|
13
|
+
* caller renders without the widget instead of tearing down the block.
|
|
14
|
+
*/
|
|
15
|
+
export declare function mountDecorationWidget(spec: DecorationWidgetSpec, dec: Decoration, reportError?: (error: unknown) => void): DecorationWidgetHandle | null;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one mounting seam for decoration widget specs, so error containment and teardown
|
|
3
|
+
* semantics can't drift between block badges and inline islands.
|
|
4
|
+
*/
|
|
5
|
+
import { mount, unmount } from 'svelte';
|
|
6
|
+
/**
|
|
7
|
+
* Build a widget spec's DOM. A synchronous throw is contained and surfaced as null, so the
|
|
8
|
+
* caller renders without the widget instead of tearing down the block.
|
|
9
|
+
*/
|
|
10
|
+
export function mountDecorationWidget(spec, dec, reportError) {
|
|
11
|
+
try {
|
|
12
|
+
if ('component' in spec) {
|
|
13
|
+
const el = document.createElement('span');
|
|
14
|
+
const instance = mount(spec.component, { target: el, props: { decoration: dec } });
|
|
15
|
+
// The flag is what makes the documented idempotence real: a second `unmount` of the same
|
|
16
|
+
// instance is not a no-op the way a second `remove()` is.
|
|
17
|
+
let unmounted = false;
|
|
18
|
+
return {
|
|
19
|
+
el,
|
|
20
|
+
destroy: () => {
|
|
21
|
+
if (!unmounted)
|
|
22
|
+
void unmount(instance);
|
|
23
|
+
unmounted = true;
|
|
24
|
+
el.remove();
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const el = spec.buildDom(dec);
|
|
29
|
+
return { el, destroy: () => el.remove() };
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
reportError?.(error);
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface DevWarnEntry {
|
|
2
|
+
tag: string;
|
|
3
|
+
message: string;
|
|
4
|
+
details?: unknown;
|
|
5
|
+
}
|
|
6
|
+
export type DevWarnSink = (entry: DevWarnEntry) => void;
|
|
7
|
+
/**
|
|
8
|
+
* Route fires to `next` instead of the console, and return the sink it replaced. For a
|
|
9
|
+
* harness that must read fires structurally; runner-agnostic by contract, so nothing here
|
|
10
|
+
* may know about a test runner. Nothing registers one in production or on a dev server.
|
|
11
|
+
*/
|
|
12
|
+
export declare function setDevWarnSink(next: DevWarnSink | null): DevWarnSink | null;
|
|
13
|
+
export declare function devWarn(tag: string, message: string, details?: unknown): void;
|
package/dist/dev-warn.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { editorEnv } from './env';
|
|
2
|
+
let sink = null;
|
|
3
|
+
/**
|
|
4
|
+
* Route fires to `next` instead of the console, and return the sink it replaced. For a
|
|
5
|
+
* harness that must read fires structurally; runner-agnostic by contract, so nothing here
|
|
6
|
+
* may know about a test runner. Nothing registers one in production or on a dev server.
|
|
7
|
+
*/
|
|
8
|
+
export function setDevWarnSink(next) {
|
|
9
|
+
const previous = sink;
|
|
10
|
+
sink = next;
|
|
11
|
+
return previous;
|
|
12
|
+
}
|
|
13
|
+
export function devWarn(tag, message, details) {
|
|
14
|
+
if (!editorEnv.isDev)
|
|
15
|
+
return;
|
|
16
|
+
if (sink) {
|
|
17
|
+
sink({ tag, message, details });
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
// The `aragonite:` sentinel is what the e2e watchers key on: a console head no page
|
|
21
|
+
// script or dependency shares, so a browser-side gate can fail on ours alone.
|
|
22
|
+
if (details !== undefined) {
|
|
23
|
+
console.warn(`[aragonite:${tag}] ${message}`, details);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
console.warn(`[aragonite:${tag}] ${message}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Publishing side of the ancestry settle (`tree-operations/unshare.ts`): a fold at a container's
|
|
3
|
+
* own slot splices its PARENT's children, a scope the commit's own change descriptor never
|
|
4
|
+
* covers, so that scope's ids and refs are resynced here instead.
|
|
5
|
+
*/
|
|
6
|
+
import type { CstNode } from '../core/nodes';
|
|
7
|
+
import type { AncestrySeamFold } from '../tree-operations/unshare';
|
|
8
|
+
import { type StructuralChange } from '../tree-operations/structural-change';
|
|
9
|
+
import type { EditorActionsDeps } from './deps';
|
|
10
|
+
/** Where the folded container's first byte ended up, as a document path. */
|
|
11
|
+
export interface FoldLanding {
|
|
12
|
+
path: number[];
|
|
13
|
+
offset: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Resync every folded scope's ids/refs and return the unwind for them, which a commit rolling
|
|
17
|
+
* back runs beside its own registers.
|
|
18
|
+
*/
|
|
19
|
+
export declare function publishAncestryFolds(deps: EditorActionsDeps, folds: readonly AncestrySeamFold[]): () => void;
|
|
20
|
+
/**
|
|
21
|
+
* The landing a fold owes the caret: the container's slot is always gone (the reparse re-mints
|
|
22
|
+
* every block in the folded window), so a door whose focus addressed it has nothing to land on.
|
|
23
|
+
* `scopePath` is the committing scope's own path, from which the fold's depth names the parent.
|
|
24
|
+
* The chain rebuilds innermost-first, so the LAST fold is the outermost one — the one whose slot
|
|
25
|
+
* swallowed the others, and the only landing still addressable after them all.
|
|
26
|
+
*/
|
|
27
|
+
export declare function foldLandingFor(folds: readonly AncestrySeamFold[], scopePath: readonly number[]): FoldLanding | null;
|
|
28
|
+
/**
|
|
29
|
+
* A splice made outside the commit ceremony, published as the ceremony publishes the change its
|
|
30
|
+
* mutate returns. `owner` is the container whose children moved, or undefined for the document.
|
|
31
|
+
*/
|
|
32
|
+
export declare function publishScopeFold(deps: EditorActionsDeps, owner: CstNode | undefined, change: StructuralChange): void;
|