@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,327 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The live-mode join rewrite (live-mode.md § 4.5): a literal concatenation surfaces the runs a
|
|
3
|
+
* truncation left unpaired and the closer/opener pair a split's inverse abuts around nothing. Both
|
|
4
|
+
* are dropped here and nowhere else, and only once the joined block re-parses to ONE prose block
|
|
5
|
+
* showing what the two sides showed.
|
|
6
|
+
*/
|
|
7
|
+
import { constructContentRange, getContentRange, inlineDescendants, isProseKind, parseInline } from '../../../core/inline';
|
|
8
|
+
import { CONTENT_VISIBILITY, paintsOnlyChrome, renderedText } from '../../../core/inline/visibility';
|
|
9
|
+
import { trimTrailingLineEnding } from '../../../core/lines';
|
|
10
|
+
import { parse } from '../../../core/parser';
|
|
11
|
+
import { getInlineConstructPolicy } from '../../../schema/inline-construct-policy';
|
|
12
|
+
import { soleProseReparse } from './screen-diff';
|
|
13
|
+
// ── The rewrite ──────────────────────────────────────────────────────────────
|
|
14
|
+
export const cleanLiveJoinSeam = (join) => {
|
|
15
|
+
const resolver = join.linkRef?.current;
|
|
16
|
+
const left = readSide(join.start, 'before', resolver);
|
|
17
|
+
const right = readSide(join.end, 'after', resolver);
|
|
18
|
+
if (left === null || right === null)
|
|
19
|
+
return null;
|
|
20
|
+
// Nothing stands on the seam, so the literal join is already the answer — and the ordinary
|
|
21
|
+
// Backspace between two plain paragraphs pays no parse for it.
|
|
22
|
+
if (!standsOnSeam(left) && !standsOnSeam(right))
|
|
23
|
+
return null;
|
|
24
|
+
if (!anchorsOnMerged(join, left, right))
|
|
25
|
+
return null;
|
|
26
|
+
// The caller splices `typed` at the seam once this returns, so the bytes verified below are the
|
|
27
|
+
// bytes written: a typed run changes the flanking a kept delimiter pairs against.
|
|
28
|
+
const typed = join.typed ?? '';
|
|
29
|
+
const shown = shownAfterJoin(left, right, typed);
|
|
30
|
+
const pairs = abuttingPairSpans(join, left, right);
|
|
31
|
+
// Least destructive first: keep the runs the two sides can still pair across the seam, and fall
|
|
32
|
+
// back to dropping every stranded one. Identical readings render once.
|
|
33
|
+
const readings = [unpairedSpans(join, left, right), everyDanglingSpan(join, left, right)];
|
|
34
|
+
const spanSets = readings.map((dangling) => [...dangling, ...pairs]);
|
|
35
|
+
const candidates = (sameSpans(spanSets[0], spanSets[1]) ? [spanSets[0]] : spanSets).map((spans) => {
|
|
36
|
+
const raw = withoutSpans(join.mergedRaw, spans);
|
|
37
|
+
const seam = join.seam - droppedBefore(spans, join.seam);
|
|
38
|
+
return {
|
|
39
|
+
spans,
|
|
40
|
+
raw,
|
|
41
|
+
seam,
|
|
42
|
+
read: readCandidate(raw.slice(0, seam) + typed + raw.slice(seam), resolver, join)
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
// § 4.1's other half: a run the leanest reading keeps can be one the cut left enclosing nothing,
|
|
46
|
+
// and a pair over nothing passes the screen check. Least destructive is read among the rest.
|
|
47
|
+
const floor = Math.min(...candidates.map(({ read }) => read?.residue ?? Infinity));
|
|
48
|
+
for (const { raw: candidate, seam, read } of candidates) {
|
|
49
|
+
if (read === null || read.visible !== shown || read.residue > floor)
|
|
50
|
+
continue;
|
|
51
|
+
// A candidate that changed nothing IS the literal join: declining says so, and keeps the
|
|
52
|
+
// caller off a rewrite path it does not need.
|
|
53
|
+
if (candidate === join.mergedRaw)
|
|
54
|
+
return null;
|
|
55
|
+
// The split half's terminal-trivia rule, on the join: a whitespace-only survivor paints
|
|
56
|
+
// nothing and reloads as blank trivia, a different shape than the block written.
|
|
57
|
+
const display = trimTrailingLineEnding(candidate);
|
|
58
|
+
if (display !== '' && display.trim() === '') {
|
|
59
|
+
return { raw: candidate.slice(display.length), seam: 0 };
|
|
60
|
+
}
|
|
61
|
+
return { raw: candidate, seam };
|
|
62
|
+
}
|
|
63
|
+
return null;
|
|
64
|
+
};
|
|
65
|
+
/** Every byte a reading drops ahead of the seam moves the caret's landing with it. */
|
|
66
|
+
const droppedBefore = (spans, seam) => spans
|
|
67
|
+
.filter((span) => span.end <= seam)
|
|
68
|
+
.reduce((total, span) => total + span.end - span.start, 0);
|
|
69
|
+
const standsOnSeam = (side) => side.dangling.length > 0 || side.touching.length > 0;
|
|
70
|
+
const sameSpans = (a, b) => a.length === b.length && a.every((span, i) => span.start === b[i].start && span.end === b[i].end);
|
|
71
|
+
/**
|
|
72
|
+
* Read one endpoint's surviving bytes and the constructs its cut leaves at the seam. Null where
|
|
73
|
+
* the cleanup has no business running: a non-prose kind, an offset outside the content, or a cut
|
|
74
|
+
* through a family that declares no close-and-reopen, whose bytes mean nothing apart.
|
|
75
|
+
*/
|
|
76
|
+
function readSide(endpoint, keep, resolver) {
|
|
77
|
+
const { node, offset } = endpoint;
|
|
78
|
+
if (!isProseKind(node.kind))
|
|
79
|
+
return null;
|
|
80
|
+
const content = getContentRange(node);
|
|
81
|
+
if (offset < content.start || offset > content.end)
|
|
82
|
+
return null;
|
|
83
|
+
const inlines = parseInline(node.raw, content.start, content.end, resolver);
|
|
84
|
+
// Chrome standing over nothing is all on screen (live-mode.md § 4.1), so a run surviving this
|
|
85
|
+
// cut is bytes the reader saw, not a stranded one: the literal join stands.
|
|
86
|
+
if (paintsOnlyChrome(inlines, node.raw))
|
|
87
|
+
return null;
|
|
88
|
+
const { ranged, atomic } = classifyConstructs(inlines);
|
|
89
|
+
// Neither an atomic construct's interior nor the middle of a delimiter run leaves halves any
|
|
90
|
+
// reading of the seam can repair. Live's caret cannot land there; a plugin's can.
|
|
91
|
+
if (atomic.some((span) => offset > span.start && offset < span.end))
|
|
92
|
+
return null;
|
|
93
|
+
if (ranged.some((c) => splitsARun(c, offset)))
|
|
94
|
+
return null;
|
|
95
|
+
// Dangling is about the PARTNER, so content-range containment is not the test: a cut at a
|
|
96
|
+
// construct's content start leaves its opener behind just as one in the middle does.
|
|
97
|
+
const dangling = ranged.filter((c) => keep === 'before'
|
|
98
|
+
? c.content.start <= offset && offset < c.node.end
|
|
99
|
+
: c.node.start < offset && offset <= c.content.end);
|
|
100
|
+
if (dangling.some((c) => !isRejoinable(c.kind)))
|
|
101
|
+
return null;
|
|
102
|
+
return {
|
|
103
|
+
raw: node.raw,
|
|
104
|
+
content,
|
|
105
|
+
cut: offset,
|
|
106
|
+
inlines,
|
|
107
|
+
dangling,
|
|
108
|
+
touching: touchingChain(ranged, offset, keep)
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/** Text is content, not a construct, and nothing under it is one either — the descent predicate
|
|
112
|
+
* the two censuses below share. */
|
|
113
|
+
const isConstruct = (node) => node.kind !== 'text';
|
|
114
|
+
/** Constructs with a content range (outermost first) apart from those without one, whose bytes
|
|
115
|
+
* the seam can only step around. */
|
|
116
|
+
function classifyConstructs(inlines) {
|
|
117
|
+
const ranged = [];
|
|
118
|
+
const atomic = [];
|
|
119
|
+
for (const node of inlineDescendants(inlines, isConstruct)) {
|
|
120
|
+
if (node.kind === 'text')
|
|
121
|
+
continue;
|
|
122
|
+
const content = constructContentRange(node);
|
|
123
|
+
if (!content) {
|
|
124
|
+
atomic.push({ start: node.start, end: node.end });
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
ranged.push({ kind: node.kind, node: { start: node.start, end: node.end }, content });
|
|
128
|
+
}
|
|
129
|
+
return { ranged, atomic };
|
|
130
|
+
}
|
|
131
|
+
const splitsARun = (c, at) => (at > c.node.start && at < c.content.start) || (at > c.content.end && at < c.node.end);
|
|
132
|
+
/** Whether the family declares its delimiters cuttable and rejoinable at all (live-mode.md § 4.4). */
|
|
133
|
+
function isRejoinable(kind) {
|
|
134
|
+
return getInlineConstructPolicy(kind)?.splitBehavior === 'close-and-reopen';
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* The nested chain of closers ending at `cut` (or openers starting there), peeled outermost
|
|
138
|
+
* first: `**a *b***` cut at its end gives the strong, then the emphasis its closer wraps. This is
|
|
139
|
+
* the shape `live-split-rebalance` writes, read back.
|
|
140
|
+
*/
|
|
141
|
+
function touchingChain(constructs, cut, keep) {
|
|
142
|
+
const chain = [];
|
|
143
|
+
let at = cut;
|
|
144
|
+
for (;;) {
|
|
145
|
+
const link = constructs.find((c) => keep === 'before' ? c.node.end === at : c.node.start === at);
|
|
146
|
+
if (!link || !isRejoinable(link.kind))
|
|
147
|
+
return chain;
|
|
148
|
+
chain.push(link);
|
|
149
|
+
at = keep === 'before' ? link.content.end : link.content.start;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/** Whether the merged bytes are still the two sides' bytes end to end — a normalizer that
|
|
153
|
+
* rewrote either one moves every offset below, so the cleanup stands down instead. */
|
|
154
|
+
function anchorsOnMerged(join, left, right) {
|
|
155
|
+
return (join.mergedRaw.slice(0, join.seam) === left.raw.slice(0, left.cut) &&
|
|
156
|
+
join.mergedRaw.startsWith(right.raw.slice(right.cut, right.content.end), join.seam));
|
|
157
|
+
}
|
|
158
|
+
// ── The spans a join may drop ────────────────────────────────────────────────
|
|
159
|
+
/** A left-side span is already in merged coordinates; a right-side one shifts by the seam. */
|
|
160
|
+
const rightSpan = (join, right, span) => ({
|
|
161
|
+
start: join.seam + span.start - right.cut,
|
|
162
|
+
end: join.seam + span.end - right.cut
|
|
163
|
+
});
|
|
164
|
+
const openerRun = (c) => ({ start: c.node.start, end: c.content.start });
|
|
165
|
+
const closerRun = (c) => ({ start: c.content.end, end: c.node.end });
|
|
166
|
+
/** Whether two constructs are written with the same delimiters — the byte-level test for "these
|
|
167
|
+
* are one construct's two halves", which kind equality alone cannot make (`__a__` vs `**a**`). */
|
|
168
|
+
const sameDelimiters = (left, lc, right, rc) => left.raw.slice(lc.node.start, lc.content.start) ===
|
|
169
|
+
right.raw.slice(rc.node.start, rc.content.start) &&
|
|
170
|
+
left.raw.slice(lc.content.end, lc.node.end) === right.raw.slice(rc.content.end, rc.node.end);
|
|
171
|
+
/**
|
|
172
|
+
* The runs a truncation stranded that the join does NOT put back together: the left's opener
|
|
173
|
+
* chain and the right's closer chain, minus the leading pairs whose kinds line up — those two
|
|
174
|
+
* halves make one construct across the seam, which is what the reader had.
|
|
175
|
+
*/
|
|
176
|
+
function unpairedSpans(join, left, right) {
|
|
177
|
+
let paired = 0;
|
|
178
|
+
while (paired < left.dangling.length &&
|
|
179
|
+
paired < right.dangling.length &&
|
|
180
|
+
left.dangling[paired].kind === right.dangling[paired].kind) {
|
|
181
|
+
paired++;
|
|
182
|
+
}
|
|
183
|
+
return [
|
|
184
|
+
...left.dangling.slice(paired).map(openerRun),
|
|
185
|
+
...right.dangling.slice(paired).map((c) => rightSpan(join, right, closerRun(c)))
|
|
186
|
+
];
|
|
187
|
+
}
|
|
188
|
+
/** The fallback reading: every stranded run goes, so the joined text stands as plain content. */
|
|
189
|
+
function everyDanglingSpan(join, left, right) {
|
|
190
|
+
return [
|
|
191
|
+
...left.dangling.map(openerRun),
|
|
192
|
+
...right.dangling.map((c) => rightSpan(join, right, closerRun(c)))
|
|
193
|
+
];
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* The closer/opener pair a split's inverse brings back to back: same kinds nested the same way,
|
|
197
|
+
* written with the same bytes, enclosing nothing between them. Whole chain or nothing — dropping
|
|
198
|
+
* an outer pair while an inner one stays would leave both halves' runs unbalanced.
|
|
199
|
+
*/
|
|
200
|
+
function abuttingPairSpans(join, left, right) {
|
|
201
|
+
const closing = left.touching;
|
|
202
|
+
const opening = right.touching;
|
|
203
|
+
if (closing.length === 0 || closing.length !== opening.length)
|
|
204
|
+
return [];
|
|
205
|
+
for (let i = 0; i < closing.length; i++) {
|
|
206
|
+
if (closing[i].kind !== opening[i].kind)
|
|
207
|
+
return [];
|
|
208
|
+
if (!sameDelimiters(left, closing[i], right, opening[i]))
|
|
209
|
+
return [];
|
|
210
|
+
}
|
|
211
|
+
return [
|
|
212
|
+
{ start: closing[closing.length - 1].content.end, end: left.cut },
|
|
213
|
+
rightSpan(join, right, {
|
|
214
|
+
start: right.cut,
|
|
215
|
+
end: opening[opening.length - 1].content.start
|
|
216
|
+
})
|
|
217
|
+
];
|
|
218
|
+
}
|
|
219
|
+
function withoutSpans(raw, spans) {
|
|
220
|
+
let out = '';
|
|
221
|
+
let at = 0;
|
|
222
|
+
for (const span of [...spans].sort((a, b) => a.start - b.start)) {
|
|
223
|
+
if (span.start < at)
|
|
224
|
+
continue;
|
|
225
|
+
out += raw.slice(at, span.start);
|
|
226
|
+
at = span.end;
|
|
227
|
+
}
|
|
228
|
+
return out + raw.slice(at);
|
|
229
|
+
}
|
|
230
|
+
// ── Verification ─────────────────────────────────────────────────────────────
|
|
231
|
+
/**
|
|
232
|
+
* What the reader is owed: what each side ALREADY SHOWED of the bytes that survive. Read off the
|
|
233
|
+
* pre-join parse, never off the joined halves — either of those bakes the defect this checks for
|
|
234
|
+
* into its own expectation.
|
|
235
|
+
*/
|
|
236
|
+
const shownAfterJoin = (left, right, typed) => visibleSide(left, 'before') + typed + visibleSide(right, 'after');
|
|
237
|
+
/**
|
|
238
|
+
* What a reader sees, asked of the thing that paints it: the render path's own DOM with every
|
|
239
|
+
* marker span dropped. The clip decides only WHERE the bytes stop; a construct the cut crosses
|
|
240
|
+
* contributes its content, since its delimiter runs paint nothing either way — which `readSide`
|
|
241
|
+
* has already established by declining a side whose chrome paints.
|
|
242
|
+
*/
|
|
243
|
+
function visibleSide(side, keep) {
|
|
244
|
+
return renderedText(clipNodes(side.inlines, side.cut, keep), side.raw, CONTENT_VISIBILITY);
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* The `keep` side of `level`, rebuilt: a construct the cut crosses hands its place to its own
|
|
248
|
+
* clipped children. Exported for the depth pin, which has to reach the rebuild with a tree no
|
|
249
|
+
* side this deep could be rendered at.
|
|
250
|
+
*/
|
|
251
|
+
export function clipNodes(level, cut, keep) {
|
|
252
|
+
const before = keep === 'before';
|
|
253
|
+
// A crossed construct is emitted as its children, in its own place, so the pre-order's
|
|
254
|
+
// emission order is the rebuilt list's order.
|
|
255
|
+
const crossed = (node) => isConstruct(node) && node.start < cut && node.end > cut;
|
|
256
|
+
const out = [];
|
|
257
|
+
for (const node of inlineDescendants(level, crossed)) {
|
|
258
|
+
if (before ? node.end <= cut : node.start >= cut) {
|
|
259
|
+
out.push(node);
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
if (before ? node.start >= cut : node.end <= cut)
|
|
263
|
+
continue;
|
|
264
|
+
if (node.kind === 'text') {
|
|
265
|
+
out.push({ ...node, ...(before ? { end: cut } : { start: cut }) });
|
|
266
|
+
continue;
|
|
267
|
+
}
|
|
268
|
+
const content = constructContentRange(node);
|
|
269
|
+
if (!content)
|
|
270
|
+
continue;
|
|
271
|
+
if (node.children && node.children.length > 0)
|
|
272
|
+
continue;
|
|
273
|
+
// A code span carries its content as bytes rather than children, so the surviving part of
|
|
274
|
+
// it is that byte range read as text — which is exactly what the span paints.
|
|
275
|
+
const start = before ? content.start : Math.max(content.start, cut);
|
|
276
|
+
const end = before ? Math.min(content.end, cut) : content.end;
|
|
277
|
+
if (end > start)
|
|
278
|
+
out.push({ kind: 'text', start, end });
|
|
279
|
+
}
|
|
280
|
+
return out;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* The candidate read back as the caller will install it: what it shows, and how many constructs its
|
|
284
|
+
* row unwraps are left standing over nothing. Null where a join produces something the caller cannot
|
|
285
|
+
* install — two blocks, a kind with no inline content, or a body the container would re-read.
|
|
286
|
+
*/
|
|
287
|
+
function readCandidate(raw, resolver, join) {
|
|
288
|
+
if (!keepsContainerMarker(join.ambientPrefix ?? '', raw))
|
|
289
|
+
return null;
|
|
290
|
+
const sole = soleProseReparse(raw, resolver);
|
|
291
|
+
if (sole === null)
|
|
292
|
+
return null;
|
|
293
|
+
const { block, nodes } = sole;
|
|
294
|
+
return {
|
|
295
|
+
visible: renderedText(nodes, block.raw, CONTENT_VISIBILITY),
|
|
296
|
+
// Chrome standing over nothing is all on screen (§ 4.1), so a block that paints hides no pair.
|
|
297
|
+
residue: paintsOnlyChrome(nodes, block.raw) ? 0 : countResidue(nodes, block.raw)
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Whether the container still reads its own marker off the candidate. The item's marker is not in
|
|
302
|
+
* these bytes but absorbs from them, so a body the cut left starting with a space reloads under a
|
|
303
|
+
* WIDER marker than the live tree holds — the load/save cycle would then change the tree.
|
|
304
|
+
*/
|
|
305
|
+
function keepsContainerMarker(prefix, raw) {
|
|
306
|
+
if (prefix === '')
|
|
307
|
+
return true;
|
|
308
|
+
const blocks = parse(prefix + raw, { scope: 'fragment' }).children;
|
|
309
|
+
if (blocks.length !== 1)
|
|
310
|
+
return false;
|
|
311
|
+
return blocks[0].marker === prefix;
|
|
312
|
+
}
|
|
313
|
+
/** Constructs the reader would meet as nothing at all: no painted byte, and a row that unwraps
|
|
314
|
+
* them when emptied rather than leaving delimiters over nothing. */
|
|
315
|
+
function countResidue(nodes, raw) {
|
|
316
|
+
let found = 0;
|
|
317
|
+
for (const node of inlineDescendants(nodes, isConstruct)) {
|
|
318
|
+
if (node.kind === 'text')
|
|
319
|
+
continue;
|
|
320
|
+
if (node.end > node.start &&
|
|
321
|
+
renderedText([node], raw, CONTENT_VISIBILITY) === '' &&
|
|
322
|
+
getInlineConstructPolicy(node.kind)?.autoUnwrapOnEmpty === true) {
|
|
323
|
+
found++;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
return found;
|
|
327
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a native ranged edit writes in live mode. The range it targets can span delimiter runs the
|
|
3
|
+
* user never saw and contenteditable takes those literally, so the edit is re-expressed as a JOIN
|
|
4
|
+
* of what survives on either side and crosses the shared seam (live-mode.md § 4.5). Every editable
|
|
5
|
+
* prose surface routes its `beforeinput` through {@link resolveLiveRangeEdit}, so a gesture family
|
|
6
|
+
* cannot reach the bytes by being absent from a list.
|
|
7
|
+
*/
|
|
8
|
+
import type { NodeView } from '../../../core/node-views';
|
|
9
|
+
import type { PresentationMode } from '../../../presentation-mode';
|
|
10
|
+
import type { InlineResolverRef } from '../../../schema/inline-construct-policy';
|
|
11
|
+
export interface SelectionEdit {
|
|
12
|
+
/** The block's whole bytes after the edit, trailing line ending included. */
|
|
13
|
+
raw: string;
|
|
14
|
+
caret: number;
|
|
15
|
+
}
|
|
16
|
+
/** The raw-offset readers a native ranged edit needs from its surface. */
|
|
17
|
+
export interface LiveEditCursor {
|
|
18
|
+
rawRangeOf(range: AbstractRange): {
|
|
19
|
+
start: number;
|
|
20
|
+
end: number;
|
|
21
|
+
} | null;
|
|
22
|
+
getRawSelection(): {
|
|
23
|
+
start: number;
|
|
24
|
+
end: number;
|
|
25
|
+
} | null;
|
|
26
|
+
}
|
|
27
|
+
/** Rewrite the block's bytes, or SWALLOW the press: an input this seam owns whose payload it may
|
|
28
|
+
* not read writes nothing, since the engine's version would splice the hidden runs literally. */
|
|
29
|
+
export type LiveRangeEdit = LiveRangeRewrite | {
|
|
30
|
+
kind: 'swallow';
|
|
31
|
+
};
|
|
32
|
+
export interface LiveRangeRewrite {
|
|
33
|
+
kind: 'rewrite';
|
|
34
|
+
range: {
|
|
35
|
+
start: number;
|
|
36
|
+
end: number;
|
|
37
|
+
};
|
|
38
|
+
raw: string;
|
|
39
|
+
caret: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* What a prose surface does with a `beforeinput` in live mode. Null wherever the press is not this
|
|
43
|
+
* seam's or the seam has nothing to clean — there the engine's own edit is already right, and
|
|
44
|
+
* leaving it native keeps its grapheme and IME behavior.
|
|
45
|
+
*/
|
|
46
|
+
export declare function resolveLiveRangeEdit(e: InputEvent, node: NodeView, cursor: LiveEditCursor, presentationMode: PresentationMode | undefined, linkRef: InlineResolverRef | undefined, ambientPrefix?: string): LiveRangeEdit | null;
|
|
47
|
+
/**
|
|
48
|
+
* The whole surface arm around {@link resolveLiveRangeEdit}: stand down while a source reveal has
|
|
49
|
+
* outrun the CST, resolve, preventDefault what the seam owns, then swallow or hand the rewrite to
|
|
50
|
+
* the surface's own `commit`. Shared so a new precondition lands on every surface at once.
|
|
51
|
+
*/
|
|
52
|
+
export declare function applyLiveRangeEdit(e: InputEvent, node: NodeView, cursor: LiveEditCursor, presentationMode: PresentationMode | undefined, linkRef: InlineResolverRef | undefined, ambientPrefix: string, isRevealing: () => boolean, commit: (edit: LiveRangeRewrite) => void): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* The bytes replacing `[start, end)` with `typed`, or null when the seam had nothing to clean.
|
|
55
|
+
* Exported for the callers that already hold a range of their own (the composition commit, the
|
|
56
|
+
* gesture fuzzer) rather than an event to read one off.
|
|
57
|
+
*/
|
|
58
|
+
export declare function resolveSelectionEdit(node: NodeView, selection: {
|
|
59
|
+
start: number;
|
|
60
|
+
end: number;
|
|
61
|
+
}, typed: string, presentationMode: PresentationMode | undefined, linkRef: InlineResolverRef | undefined, ambientPrefix?: string): SelectionEdit | null;
|
|
62
|
+
/** The delete of `[start, end)` a destructive gesture installs: the seam's cleaned rewrite where
|
|
63
|
+
* it has one, else the literal display splice with the caret at the cut — the fallback's one
|
|
64
|
+
* home, so no arm carrying it can drift. */
|
|
65
|
+
export declare function deleteRangeRaw(node: NodeView, range: {
|
|
66
|
+
start: number;
|
|
67
|
+
end: number;
|
|
68
|
+
}, presentationMode: PresentationMode | undefined, linkRef: InlineResolverRef | undefined, ambientPrefix: string): SelectionEdit;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a native ranged edit writes in live mode. The range it targets can span delimiter runs the
|
|
3
|
+
* user never saw and contenteditable takes those literally, so the edit is re-expressed as a JOIN
|
|
4
|
+
* of what survives on either side and crosses the shared seam (live-mode.md § 4.5). Every editable
|
|
5
|
+
* prose surface routes its `beforeinput` through {@link resolveLiveRangeEdit}, so a gesture family
|
|
6
|
+
* cannot reach the bytes by being absent from a list.
|
|
7
|
+
*/
|
|
8
|
+
import { snapToScalarBoundary, trailingLineEnding, trimTrailingLineEnding } from '../../../core/lines';
|
|
9
|
+
import { cleanJoinedRaw } from '../../../tree-operations/node-ops';
|
|
10
|
+
/**
|
|
11
|
+
* What a prose surface does with a `beforeinput` in live mode. Null wherever the press is not this
|
|
12
|
+
* seam's or the seam has nothing to clean — there the engine's own edit is already right, and
|
|
13
|
+
* leaving it native keeps its grapheme and IME behavior.
|
|
14
|
+
*/
|
|
15
|
+
export function resolveLiveRangeEdit(e, node, cursor, presentationMode, linkRef, ambientPrefix = '') {
|
|
16
|
+
if (presentationMode !== 'live' || !rewritesTargetRange(e))
|
|
17
|
+
return null;
|
|
18
|
+
const range = pendingEditRange(e, cursor);
|
|
19
|
+
if (!range)
|
|
20
|
+
return null;
|
|
21
|
+
const insert = replacementText(e);
|
|
22
|
+
const edit = resolveSelectionEdit(node, range, insert ?? '', presentationMode, linkRef, ambientPrefix);
|
|
23
|
+
if (!edit)
|
|
24
|
+
return null;
|
|
25
|
+
return insert === null
|
|
26
|
+
? { kind: 'swallow' }
|
|
27
|
+
: { kind: 'rewrite', range, raw: edit.raw, caret: edit.caret };
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The whole surface arm around {@link resolveLiveRangeEdit}: stand down while a source reveal has
|
|
31
|
+
* outrun the CST, resolve, preventDefault what the seam owns, then swallow or hand the rewrite to
|
|
32
|
+
* the surface's own `commit`. Shared so a new precondition lands on every surface at once.
|
|
33
|
+
*/
|
|
34
|
+
export function applyLiveRangeEdit(e, node, cursor, presentationMode, linkRef, ambientPrefix, isRevealing, commit) {
|
|
35
|
+
if (isRevealing())
|
|
36
|
+
return false;
|
|
37
|
+
const edit = resolveLiveRangeEdit(e, node, cursor, presentationMode, linkRef, ambientPrefix);
|
|
38
|
+
if (!edit)
|
|
39
|
+
return false;
|
|
40
|
+
e.preventDefault();
|
|
41
|
+
if (edit.kind === 'rewrite')
|
|
42
|
+
commit(edit);
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The bytes replacing `[start, end)` with `typed`, or null when the seam had nothing to clean.
|
|
47
|
+
* Exported for the callers that already hold a range of their own (the composition commit, the
|
|
48
|
+
* gesture fuzzer) rather than an event to read one off.
|
|
49
|
+
*/
|
|
50
|
+
export function resolveSelectionEdit(node, selection, typed, presentationMode, linkRef, ambientPrefix = '') {
|
|
51
|
+
// Both ends off any scalar interior before the slice: a half-pair here is unrecoverable
|
|
52
|
+
// bytes, not a recoverable edit. Snapping the same direction cannot invert the range.
|
|
53
|
+
const start = snapToScalarBoundary(node.raw, selection.start);
|
|
54
|
+
const end = snapToScalarBoundary(node.raw, selection.end);
|
|
55
|
+
if (start >= end)
|
|
56
|
+
return null;
|
|
57
|
+
const mergedRaw = node.raw.slice(0, start) + node.raw.slice(end);
|
|
58
|
+
// `typed` rides the seam rather than being spliced past it: the bytes the cleanup verifies have
|
|
59
|
+
// to be the bytes this returns, or the flanking it checked is not the flanking that ships.
|
|
60
|
+
const joined = cleanJoinedRaw({
|
|
61
|
+
mergedRaw,
|
|
62
|
+
seam: start,
|
|
63
|
+
start: { node, offset: start },
|
|
64
|
+
end: { node, offset: end },
|
|
65
|
+
linkRef,
|
|
66
|
+
typed,
|
|
67
|
+
ambientPrefix
|
|
68
|
+
}, presentationMode);
|
|
69
|
+
if (joined.raw === mergedRaw)
|
|
70
|
+
return null;
|
|
71
|
+
// The insert lands where the two sides now meet — the paste-at-a-cleaned-seam rule: cleanup
|
|
72
|
+
// runs in the DELETE half, and the commit's own re-parse settles what the new bytes make of it.
|
|
73
|
+
return {
|
|
74
|
+
raw: joined.raw.slice(0, joined.seam) + typed + joined.raw.slice(joined.seam),
|
|
75
|
+
caret: joined.seam + typed.length
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/** The delete of `[start, end)` a destructive gesture installs: the seam's cleaned rewrite where
|
|
79
|
+
* it has one, else the literal display splice with the caret at the cut — the fallback's one
|
|
80
|
+
* home, so no arm carrying it can drift. */
|
|
81
|
+
export function deleteRangeRaw(node, range, presentationMode, linkRef, ambientPrefix) {
|
|
82
|
+
const cleaned = resolveSelectionEdit(node, range, '', presentationMode, linkRef, ambientPrefix);
|
|
83
|
+
if (cleaned)
|
|
84
|
+
return cleaned;
|
|
85
|
+
const display = trimTrailingLineEnding(node.raw);
|
|
86
|
+
return {
|
|
87
|
+
raw: display.slice(0, range.start) + display.slice(range.end) + trailingLineEnding(node.raw),
|
|
88
|
+
caret: range.start
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
// ── Reading the event ────────────────────────────────────────────────────────
|
|
92
|
+
/**
|
|
93
|
+
* The range the pending edit will rewrite. `getTargetRanges()` is the authority — a word or line
|
|
94
|
+
* delete at a COLLAPSED caret reports the run, not the caret — and is feature-detected because
|
|
95
|
+
* jsdom implements no such method.
|
|
96
|
+
*/
|
|
97
|
+
function pendingEditRange(e, cursor) {
|
|
98
|
+
const targets = typeof e.getTargetRanges === 'function' ? e.getTargetRanges() : [];
|
|
99
|
+
return targets.length > 0 ? cursor.rawRangeOf(targets[0]) : cursor.getRawSelection();
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* The inputs that rewrite the range they target: every delete family — word, line, drag, cut,
|
|
103
|
+
* forward, backward — plus the two that replace it with text. Paste and composition carry seams of
|
|
104
|
+
* their own; composing is excluded by the NAME and by the flag rather than by listing the two
|
|
105
|
+
* delete types today's engines spell, since `composition-seat.ts` owns that window end to end and a
|
|
106
|
+
* second resolution here writes the block twice.
|
|
107
|
+
*/
|
|
108
|
+
function rewritesTargetRange(e) {
|
|
109
|
+
if (e.isComposing || /composition/i.test(e.inputType))
|
|
110
|
+
return false;
|
|
111
|
+
return (e.inputType.startsWith('delete') ||
|
|
112
|
+
e.inputType === 'insertText' ||
|
|
113
|
+
e.inputType === 'insertReplacementText');
|
|
114
|
+
}
|
|
115
|
+
/** What an input writes over its range, or null for a payload this seam may not read: text riding
|
|
116
|
+
* a `dataTransfer` would reach the commit's re-parse without the paste transforms (G4.11), and a
|
|
117
|
+
* swallowed press is sounder than turning a replacement into a delete. */
|
|
118
|
+
function replacementText(e) {
|
|
119
|
+
return e.inputType.startsWith('delete') ? '' : e.data;
|
|
120
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The live-mode split rewrite (live-mode.md § 4.4 close-and-reopen): Enter inside a construct
|
|
3
|
+
* closes it before the cut and reopens it after, so neither half strands a run the reader never
|
|
4
|
+
* saw. Bytes stay candidates until the parser agrees; null leaves `splitNode`'s byte-literal cut.
|
|
5
|
+
*/
|
|
6
|
+
import type { LinkReferenceResolver } from '../../../core/inline/link-reference-resolver';
|
|
7
|
+
import type { AnyInlineKind, InlineNode } from '../../../core/nodes';
|
|
8
|
+
import { type LiveSplitRebalancer } from '../../../schema/inline-construct-policy';
|
|
9
|
+
export declare const rebalanceLiveSplit: LiveSplitRebalancer;
|
|
10
|
+
/** The original bytes, plus what each half carries beyond the content it took: the padding line
|
|
11
|
+
* ending, or a structural suffix the split has already moved (a setext underline). */
|
|
12
|
+
interface SplitBytes {
|
|
13
|
+
raw: string;
|
|
14
|
+
contentStart: number;
|
|
15
|
+
contentEnd: number;
|
|
16
|
+
/** Where the second half's content begins in `raw` — past a line ending the cut consumed. */
|
|
17
|
+
cut: number;
|
|
18
|
+
firstResidue: string;
|
|
19
|
+
secondResidue: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ChainLink {
|
|
22
|
+
kind: AnyInlineKind;
|
|
23
|
+
start: number;
|
|
24
|
+
end: number;
|
|
25
|
+
contentStart: number;
|
|
26
|
+
contentEnd: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Every construct holding `offset`, outermost first — or null when one of them declines. A kind
|
|
30
|
+
* with no policy row, one whose split behavior is plain and one whose content bounds are unknown
|
|
31
|
+
* cannot be cut open, and cutting the constructs inside one would strand its pair. Exported for
|
|
32
|
+
* the depth pin, which has to reach it with a tree no split this deep could be rendered at.
|
|
33
|
+
*/
|
|
34
|
+
export declare function splittableChainAt(inlines: readonly InlineNode[], offset: number): ChainLink[] | null;
|
|
35
|
+
interface SeamParts {
|
|
36
|
+
/** Bytes before the seam, the block's own marker prefix included. */
|
|
37
|
+
head: string;
|
|
38
|
+
closers: string;
|
|
39
|
+
openers: string;
|
|
40
|
+
/** Bytes after the seam, up to the block's content end. */
|
|
41
|
+
tail: string;
|
|
42
|
+
closed: AnyInlineKind[];
|
|
43
|
+
reopened: AnyInlineKind[];
|
|
44
|
+
}
|
|
45
|
+
interface RebalancedHalves {
|
|
46
|
+
firstRaw: string;
|
|
47
|
+
secondRaw: string;
|
|
48
|
+
/** Bytes this candidate left out, which the conservation check then expects to be missing. */
|
|
49
|
+
droppedTail?: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* A candidate answers every question below or it is not written. Exported for the verification
|
|
53
|
+
* test, which has to reach it with a candidate no producer here would build.
|
|
54
|
+
*/
|
|
55
|
+
export declare function parsesBack(bytes: SplitBytes, seam: SeamParts, candidate: RebalancedHalves, resolver: LinkReferenceResolver | undefined): boolean;
|
|
56
|
+
export {};
|