@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,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cumulative block-height model for one BlockList: a Fenwick tree giving O(log n)
|
|
3
|
+
* prefix-sum, offset→index lookup, and per-index update. Virtual rendering maps scrollTop
|
|
4
|
+
* to a window range through it without laying off-screen blocks out.
|
|
5
|
+
*/
|
|
6
|
+
export class HeightModel {
|
|
7
|
+
tree; // 1-indexed Fenwick sums
|
|
8
|
+
heights; // per-index current height, for O(1) read-back
|
|
9
|
+
count;
|
|
10
|
+
constructor(initialHeights) {
|
|
11
|
+
this.count = initialHeights.length;
|
|
12
|
+
this.heights = initialHeights.slice();
|
|
13
|
+
this.tree = new Array(this.count + 1).fill(0);
|
|
14
|
+
for (let i = 0; i < this.count; i++)
|
|
15
|
+
this.bump(i, initialHeights[i]);
|
|
16
|
+
}
|
|
17
|
+
get size() {
|
|
18
|
+
return this.count;
|
|
19
|
+
}
|
|
20
|
+
/** Total pixel height of all entries. */
|
|
21
|
+
total() {
|
|
22
|
+
return this.prefix(this.count);
|
|
23
|
+
}
|
|
24
|
+
/** Pixel offset of the top of index `i` (sum of heights[0..i)); `offsetOf(count)` == total. */
|
|
25
|
+
offsetOf(i) {
|
|
26
|
+
// prefix(i) past `count` reads off the Fenwick array → NaN into every spacer.
|
|
27
|
+
return this.prefix(Math.max(0, Math.min(i, this.count)));
|
|
28
|
+
}
|
|
29
|
+
/** Current height stored for index `i`. */
|
|
30
|
+
heightOf(i) {
|
|
31
|
+
return this.heights[i] ?? 0;
|
|
32
|
+
}
|
|
33
|
+
/** Set index `i` to `height` in O(log n). No-op when unchanged or out of range. */
|
|
34
|
+
setHeight(i, height) {
|
|
35
|
+
// Out of range corrupts the model: i >= count poisons heights[] with no tree update,
|
|
36
|
+
// and i < 0 makes bump's `p += p & -p` stall at p=0 forever.
|
|
37
|
+
if (i < 0 || i >= this.count)
|
|
38
|
+
return;
|
|
39
|
+
const delta = height - this.heights[i];
|
|
40
|
+
if (delta === 0)
|
|
41
|
+
return;
|
|
42
|
+
this.heights[i] = height;
|
|
43
|
+
this.bump(i, delta);
|
|
44
|
+
}
|
|
45
|
+
/** Largest index whose top offset is <= `y` (the block visible at scroll y), clamped to [0, count-1]. */
|
|
46
|
+
indexAtOffset(y) {
|
|
47
|
+
if (this.count === 0)
|
|
48
|
+
return 0;
|
|
49
|
+
let idx = 0;
|
|
50
|
+
let remaining = y;
|
|
51
|
+
let bit = 1 << Math.floor(Math.log2(this.count));
|
|
52
|
+
while (bit > 0) {
|
|
53
|
+
const next = idx + bit;
|
|
54
|
+
if (next <= this.count && this.tree[next] <= remaining) {
|
|
55
|
+
idx = next;
|
|
56
|
+
remaining -= this.tree[next];
|
|
57
|
+
}
|
|
58
|
+
bit >>= 1;
|
|
59
|
+
}
|
|
60
|
+
return Math.min(idx, this.count - 1);
|
|
61
|
+
}
|
|
62
|
+
bump(i, delta) {
|
|
63
|
+
for (let p = i + 1; p <= this.count; p += p & -p)
|
|
64
|
+
this.tree[p] += delta;
|
|
65
|
+
}
|
|
66
|
+
prefix(i) {
|
|
67
|
+
let s = 0;
|
|
68
|
+
for (let p = i; p > 0; p -= p & -p)
|
|
69
|
+
s += this.tree[p];
|
|
70
|
+
return s;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-kind block-height estimator plus a measured-height cache for virtual rendering.
|
|
3
|
+
* `estimate` is O(1) from `node.raw` length even for containers (their raw is
|
|
4
|
+
* materialized, so no subtree walk). Measured heights supersede estimates and are keyed by
|
|
5
|
+
* stable block id, so structural index shifts and undo don't invalidate them.
|
|
6
|
+
*/
|
|
7
|
+
import type { NodeView } from '../core/node-views';
|
|
8
|
+
export interface HeightOracleOptions {
|
|
9
|
+
lineHeight: number;
|
|
10
|
+
codeLineHeight: number;
|
|
11
|
+
avgCharWidth: number;
|
|
12
|
+
blockChrome: number;
|
|
13
|
+
imageBlockMinHeight: number;
|
|
14
|
+
}
|
|
15
|
+
export interface HeightOracle {
|
|
16
|
+
estimate(node: NodeView, width: number): number;
|
|
17
|
+
measured(id: string): number | undefined;
|
|
18
|
+
recordMeasured(id: string, height: number): void;
|
|
19
|
+
/** measured(id) ?? estimate(node, width). */
|
|
20
|
+
height(id: string, node: NodeView, width: number): number;
|
|
21
|
+
/** Drop every measured height; estimates carry the model until each block re-measures. */
|
|
22
|
+
dropMeasured(): void;
|
|
23
|
+
}
|
|
24
|
+
export declare function createHeightOracle(opts: HeightOracleOptions): HeightOracle;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { isCollapsedByDescriptor } from '../schema/reserved-chrome';
|
|
2
|
+
import { tryGetBlockKindDescriptor } from '../schema/block-kind-descriptor';
|
|
3
|
+
// Any image form, capturing the alt segment for its `|WxH` size hint. The char-based prose
|
|
4
|
+
// estimate badly undercounts a rendered image, so an image-bearing block sizes off this.
|
|
5
|
+
const IMAGE_ALT = /!\[([^\]]*)\]/g;
|
|
6
|
+
// Size hint inside the alt, e.g. `Square|200x200` or `photo|400` (width only).
|
|
7
|
+
const SIZE_HINT = /\|(\d+)(?:x(\d+))?/;
|
|
8
|
+
const NEWLINE = 10;
|
|
9
|
+
export function createHeightOracle(opts) {
|
|
10
|
+
const measuredById = new Map();
|
|
11
|
+
function wrappedLines(visibleLen, width) {
|
|
12
|
+
const perLine = Math.max(1, Math.floor(width / opts.avgCharWidth));
|
|
13
|
+
return Math.max(1, Math.ceil(visibleLen / perLine));
|
|
14
|
+
}
|
|
15
|
+
function sourceLines(raw) {
|
|
16
|
+
let n = 1;
|
|
17
|
+
// Code units, not `raw[i]`: the indexed read mints a one-character string per byte.
|
|
18
|
+
for (let i = 0; i < raw.length; i++)
|
|
19
|
+
if (raw.charCodeAt(i) === NEWLINE)
|
|
20
|
+
n++;
|
|
21
|
+
if (raw.endsWith('\n'))
|
|
22
|
+
n--; // trailing newline shouldn't add a phantom line
|
|
23
|
+
return Math.max(1, n);
|
|
24
|
+
}
|
|
25
|
+
// Each image contributes its `|WxH` hint height, else the min-height floor — an unsized
|
|
26
|
+
// image isn't knowable until decode, which the ResizeObserver corrects post-mount.
|
|
27
|
+
function imageHeights(raw) {
|
|
28
|
+
let total = 0;
|
|
29
|
+
IMAGE_ALT.lastIndex = 0;
|
|
30
|
+
let m;
|
|
31
|
+
while ((m = IMAGE_ALT.exec(raw)) !== null) {
|
|
32
|
+
const hint = SIZE_HINT.exec(m[1]);
|
|
33
|
+
total += hint && hint[2] ? Number(hint[2]) : opts.imageBlockMinHeight;
|
|
34
|
+
}
|
|
35
|
+
return total;
|
|
36
|
+
}
|
|
37
|
+
function estimate(node, width) {
|
|
38
|
+
// One registry lookup, read twice: the model seeds this once per block of the document.
|
|
39
|
+
const descriptor = tryGetBlockKindDescriptor(node.kind);
|
|
40
|
+
// A collapsed container's body lives in `raw` but never renders, so estimating from
|
|
41
|
+
// full `raw` over-counts it several-fold; only the chrome row paints.
|
|
42
|
+
if (isCollapsedByDescriptor(descriptor, node))
|
|
43
|
+
return opts.lineHeight + opts.blockChrome;
|
|
44
|
+
// A descriptor's own O(1) estimate supersedes the built-in arms (a rendered artifact
|
|
45
|
+
// is far taller than its source text); the oracle still adds chrome.
|
|
46
|
+
const custom = descriptor?.estimateHeight;
|
|
47
|
+
if (custom)
|
|
48
|
+
return custom(node, { width }) + opts.blockChrome;
|
|
49
|
+
const kind = node.kind;
|
|
50
|
+
const raw = node.raw;
|
|
51
|
+
switch (kind) {
|
|
52
|
+
case 'thematicBreak':
|
|
53
|
+
return opts.lineHeight + opts.blockChrome;
|
|
54
|
+
case 'fencedCode':
|
|
55
|
+
case 'indentedCode':
|
|
56
|
+
case 'htmlBlock':
|
|
57
|
+
return sourceLines(raw) * opts.codeLineHeight + opts.blockChrome;
|
|
58
|
+
case 'table':
|
|
59
|
+
case 'tableRow':
|
|
60
|
+
// Source lines model a normal table; a wide one wraps its cells far beyond its
|
|
61
|
+
// row count, which the blob-wrap of the whole raw catches.
|
|
62
|
+
return (Math.max(sourceLines(raw), wrappedLines(raw.length, width)) * opts.lineHeight +
|
|
63
|
+
opts.blockChrome);
|
|
64
|
+
case 'blockquote':
|
|
65
|
+
case 'list':
|
|
66
|
+
case 'listItem': {
|
|
67
|
+
// Max of two terms, each alone wrong: the blob term ignores newlines and
|
|
68
|
+
// per-child chrome, the child-count term ignores wrap. Still O(1), no walk.
|
|
69
|
+
const childCount = Math.max(1, node.children?.length ?? 1);
|
|
70
|
+
const byChildren = childCount * (opts.lineHeight + opts.blockChrome);
|
|
71
|
+
const byText = wrappedLines(raw.length, width) * opts.lineHeight + opts.blockChrome;
|
|
72
|
+
return Math.max(byChildren, byText);
|
|
73
|
+
}
|
|
74
|
+
default: {
|
|
75
|
+
const prose = wrappedLines(raw.length, width) * opts.lineHeight + opts.blockChrome;
|
|
76
|
+
// Substring test first: the alt-capturing scan otherwise runs over every prose
|
|
77
|
+
// block in the document, and all but a handful carry no image at all.
|
|
78
|
+
if (!raw.includes('!['))
|
|
79
|
+
return prose;
|
|
80
|
+
const images = imageHeights(raw);
|
|
81
|
+
return images > 0 ? Math.max(prose, images) : prose;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
estimate,
|
|
87
|
+
measured: (id) => measuredById.get(id),
|
|
88
|
+
recordMeasured: (id, height) => {
|
|
89
|
+
measuredById.set(id, height);
|
|
90
|
+
},
|
|
91
|
+
height: (id, node, width) => measuredById.get(id) ?? estimate(node, width),
|
|
92
|
+
dropMeasured: () => measuredById.clear()
|
|
93
|
+
};
|
|
94
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** The client rects a block contributes when it is an endpoint of a cross-block selection. */
|
|
2
|
+
import type { DomTextOffset } from './coordinate-spaces';
|
|
3
|
+
/**
|
|
4
|
+
* Client rects covering the walk-space range [startOffset, endOffset) within `el` (see
|
|
5
|
+
* `cursor/widget-offset.ts`). The `getClientRects` guard keeps jsdom unit tests from
|
|
6
|
+
* crashing; real pixel geometry is covered by e2e.
|
|
7
|
+
*/
|
|
8
|
+
export declare function measurePartialRectsInContentEditable(el: HTMLElement, startOffset: DomTextOffset, endOffset: DomTextOffset): DOMRect[];
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** The client rects a block contributes when it is an endpoint of a cross-block selection. */
|
|
2
|
+
import { createRangeAtDomTextOffsets, widgetsIntersectingRange } from './widget-offset';
|
|
3
|
+
/**
|
|
4
|
+
* Client rects covering the walk-space range [startOffset, endOffset) within `el` (see
|
|
5
|
+
* `cursor/widget-offset.ts`). The `getClientRects` guard keeps jsdom unit tests from
|
|
6
|
+
* crashing; real pixel geometry is covered by e2e.
|
|
7
|
+
*/
|
|
8
|
+
export function measurePartialRectsInContentEditable(el, startOffset, endOffset) {
|
|
9
|
+
if (startOffset === endOffset)
|
|
10
|
+
return [];
|
|
11
|
+
const range = createRangeAtDomTextOffsets(el, startOffset, endOffset);
|
|
12
|
+
const rects = range && typeof range.getClientRects === 'function' ? Array.from(range.getClientRects()) : [];
|
|
13
|
+
// An atomic widget adds 0 chars to textContent, so a range inside one emits no text
|
|
14
|
+
// rect; its bounding box is what keeps the highlight visible over it.
|
|
15
|
+
for (const widget of widgetsIntersectingRange(el, startOffset, endOffset)) {
|
|
16
|
+
rects.push(widget.getBoundingClientRect());
|
|
17
|
+
}
|
|
18
|
+
return rects;
|
|
19
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared scroll-listener wiring for DecorationOverlay and SelectionOverlay: measure on
|
|
3
|
+
* mount, on scroll, and on the table's row-window `$derived` moving. That third trigger is
|
|
4
|
+
* load-bearing for windowed tables — a raw 'scroll' fires BEFORE the windowed `{#each}`
|
|
5
|
+
* mounts the new rows, so only the dep-based re-run measures post-commit.
|
|
6
|
+
*/
|
|
7
|
+
import type { BlockComponent } from '../block-component';
|
|
8
|
+
export declare function wireOverlayRemeasure(opts: {
|
|
9
|
+
el: HTMLElement;
|
|
10
|
+
editorRoot: HTMLElement | null;
|
|
11
|
+
blockRef: BlockComponent | undefined;
|
|
12
|
+
measure: () => void;
|
|
13
|
+
/** Run the SETUP measure untracked, for a caller whose `measure` reads the document: tracking
|
|
14
|
+
* it would tear down and re-wire these listeners on every keystroke. Scoped to that one call,
|
|
15
|
+
* never the whole wiring — the row-window read below must stay tracked either way. */
|
|
16
|
+
untrackSetupMeasure?: boolean;
|
|
17
|
+
}): () => void;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared scroll-listener wiring for DecorationOverlay and SelectionOverlay: measure on
|
|
3
|
+
* mount, on scroll, and on the table's row-window `$derived` moving. That third trigger is
|
|
4
|
+
* load-bearing for windowed tables — a raw 'scroll' fires BEFORE the windowed `{#each}`
|
|
5
|
+
* mounts the new rows, so only the dep-based re-run measures post-commit.
|
|
6
|
+
*/
|
|
7
|
+
import { untrack } from 'svelte';
|
|
8
|
+
import { firstScrollableDescendant, nearestScrollContainer } from './scroll-ancestors';
|
|
9
|
+
export function wireOverlayRemeasure(opts) {
|
|
10
|
+
const { el, editorRoot, blockRef, measure } = opts;
|
|
11
|
+
// Plain synchronous read so the enclosing $effect registers as a dep of the table's win
|
|
12
|
+
// $derived. Must NOT be inside untrack().
|
|
13
|
+
blockRef?.mountedRowWindow?.();
|
|
14
|
+
if (opts.untrackSetupMeasure)
|
|
15
|
+
untrack(measure);
|
|
16
|
+
else
|
|
17
|
+
measure();
|
|
18
|
+
const scrollEl = firstScrollableDescendant(el) ?? (editorRoot ? nearestScrollContainer(el, editorRoot) : null);
|
|
19
|
+
const disposers = [];
|
|
20
|
+
if (scrollEl) {
|
|
21
|
+
scrollEl.addEventListener('scroll', measure, { passive: true });
|
|
22
|
+
disposers.push(() => scrollEl.removeEventListener('scroll', measure));
|
|
23
|
+
}
|
|
24
|
+
// The editor root's vertical scroll is distinct from a block's inner scroll container;
|
|
25
|
+
// this covers the non-windowed repaint-on-scroll path.
|
|
26
|
+
if (editorRoot && editorRoot !== scrollEl) {
|
|
27
|
+
editorRoot.addEventListener('scroll', measure, { passive: true });
|
|
28
|
+
disposers.push(() => editorRoot.removeEventListener('scroll', measure));
|
|
29
|
+
}
|
|
30
|
+
return () => disposers.forEach((dispose) => dispose());
|
|
31
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pending marks: the inline constructs a collapsed-caret toggle promises the NEXT insertion,
|
|
3
|
+
* relative to the caret's construct chain — a kind already in the chain is a removal, one absent
|
|
4
|
+
* is an application. Live mode paints no delimiter, so materializing an empty pair in the bytes
|
|
5
|
+
* would leave invisible `****` behind on an abandoned toggle. SET by the toggle command, CONSUMED
|
|
6
|
+
* by the typing and composition seats, INVALIDATED by the edge affinity (live-mode.md § 4.3).
|
|
7
|
+
*/
|
|
8
|
+
import type { InlineMarkKind } from '../schema/inline-construct-policy';
|
|
9
|
+
export interface PendingMarksState {
|
|
10
|
+
/** Null when nothing is pending; never an empty set, so a read is the whole question. */
|
|
11
|
+
get(): ReadonlySet<InlineMarkKind> | null;
|
|
12
|
+
/** A toggle chord at a collapsed caret. The same chord twice pends nothing again. */
|
|
13
|
+
toggle(kind: InlineMarkKind): void;
|
|
14
|
+
/** Read and clear: exactly one insertion spends the set. */
|
|
15
|
+
consume(): ReadonlySet<InlineMarkKind> | null;
|
|
16
|
+
/** Hand back a set taken for an insertion that never happened (an IME cancel). Declines once
|
|
17
|
+
* anything else is pending: that is a newer instruction about the same caret. */
|
|
18
|
+
restore(marks: ReadonlySet<InlineMarkKind>): void;
|
|
19
|
+
reset(): void;
|
|
20
|
+
}
|
|
21
|
+
export declare function createPendingMarksState(): PendingMarksState;
|
|
22
|
+
/** The set a chord press produces, or null once it empties. Pure, so the toggle matrix is
|
|
23
|
+
* testable without an instance. */
|
|
24
|
+
export declare function flipMark(marks: ReadonlySet<InlineMarkKind> | null, kind: InlineMarkKind): ReadonlySet<InlineMarkKind> | null;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pending marks: the inline constructs a collapsed-caret toggle promises the NEXT insertion,
|
|
3
|
+
* relative to the caret's construct chain — a kind already in the chain is a removal, one absent
|
|
4
|
+
* is an application. Live mode paints no delimiter, so materializing an empty pair in the bytes
|
|
5
|
+
* would leave invisible `****` behind on an abandoned toggle. SET by the toggle command, CONSUMED
|
|
6
|
+
* by the typing and composition seats, INVALIDATED by the edge affinity (live-mode.md § 4.3).
|
|
7
|
+
*/
|
|
8
|
+
export function createPendingMarksState() {
|
|
9
|
+
let marks = null;
|
|
10
|
+
return {
|
|
11
|
+
get: () => marks,
|
|
12
|
+
toggle: (kind) => {
|
|
13
|
+
marks = flipMark(marks, kind);
|
|
14
|
+
},
|
|
15
|
+
consume: () => {
|
|
16
|
+
const spent = marks;
|
|
17
|
+
marks = null;
|
|
18
|
+
return spent;
|
|
19
|
+
},
|
|
20
|
+
restore: (unspent) => {
|
|
21
|
+
if (marks === null)
|
|
22
|
+
marks = unspent;
|
|
23
|
+
},
|
|
24
|
+
reset: () => {
|
|
25
|
+
marks = null;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** The set a chord press produces, or null once it empties. Pure, so the toggle matrix is
|
|
30
|
+
* testable without an instance. */
|
|
31
|
+
export function flipMark(marks, kind) {
|
|
32
|
+
const next = new Set(marks ?? []);
|
|
33
|
+
if (!next.delete(kind))
|
|
34
|
+
next.add(kind);
|
|
35
|
+
return next.size > 0 ? next : null;
|
|
36
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Viewport point → caret offset inside one element. The probe is the browser's, the arithmetic
|
|
3
|
+
* is `widget-offset.ts`'s walk: this module mints no offset of its own, so an atomic widget and
|
|
4
|
+
* a leading ambient marker count here exactly as they do for a live caret read.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* The caret offset in `el` NEAREST a viewport point: the point clamps into `el`'s box first, so a
|
|
8
|
+
* press on chrome above or beside the text still names one. What `caretTargetAtPoint` owes, since
|
|
9
|
+
* a caret-placing gesture must land. Null where the element holds no text position at all.
|
|
10
|
+
*/
|
|
11
|
+
export declare function caretOffsetAtPoint(el: HTMLElement, clientX: number, clientY: number): number | null;
|
|
12
|
+
/**
|
|
13
|
+
* The EXACT twin: null for a point outside `el`, which a hit test must decline rather than
|
|
14
|
+
* round into the nearest offset.
|
|
15
|
+
*/
|
|
16
|
+
export declare function offsetFromViewportPoint(blockEl: HTMLElement, clientX: number, clientY: number): number | null;
|
|
17
|
+
/** A point one pixel inside `rect`, so the topmost element there is the box's own content. */
|
|
18
|
+
export declare function clampPointIntoBox(rect: DOMRect, x: number, y: number): {
|
|
19
|
+
x: number;
|
|
20
|
+
y: number;
|
|
21
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Viewport point → caret offset inside one element. The probe is the browser's, the arithmetic
|
|
3
|
+
* is `widget-offset.ts`'s walk: this module mints no offset of its own, so an atomic widget and
|
|
4
|
+
* a leading ambient marker count here exactly as they do for a live caret read.
|
|
5
|
+
*/
|
|
6
|
+
import { ambientLengthOf } from '../ambient/ambient-dom';
|
|
7
|
+
import { toClampedRawOffset } from './coordinate-spaces';
|
|
8
|
+
import { domTextOffsetAtNode } from './widget-offset';
|
|
9
|
+
/**
|
|
10
|
+
* The caret offset in `el` NEAREST a viewport point: the point clamps into `el`'s box first, so a
|
|
11
|
+
* press on chrome above or beside the text still names one. What `caretTargetAtPoint` owes, since
|
|
12
|
+
* a caret-placing gesture must land. Null where the element holds no text position at all.
|
|
13
|
+
*/
|
|
14
|
+
export function caretOffsetAtPoint(el, clientX, clientY) {
|
|
15
|
+
const probe = clampPointIntoBox(el.getBoundingClientRect(), clientX, clientY);
|
|
16
|
+
return offsetFromViewportPoint(el, probe.x, probe.y);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The EXACT twin: null for a point outside `el`, which a hit test must decline rather than
|
|
20
|
+
* round into the nearest offset.
|
|
21
|
+
*/
|
|
22
|
+
export function offsetFromViewportPoint(blockEl, clientX, clientY) {
|
|
23
|
+
const doc = blockEl.ownerDocument;
|
|
24
|
+
// caretRangeFromPoint is Chromium/WebKit (all Tauri webviews);
|
|
25
|
+
// caretPositionFromPoint is the Firefox-style fallback.
|
|
26
|
+
const ambient = ambientLengthOf(blockEl);
|
|
27
|
+
const rangeFromPoint = doc.caretRangeFromPoint?.(clientX, clientY);
|
|
28
|
+
if (rangeFromPoint && blockEl.contains(rangeFromPoint.startContainer)) {
|
|
29
|
+
const content = domTextOffsetAtNode(blockEl, rangeFromPoint.startContainer, rangeFromPoint.startOffset);
|
|
30
|
+
return toClampedRawOffset(content, ambient);
|
|
31
|
+
}
|
|
32
|
+
const posFromPoint = doc.caretPositionFromPoint?.(clientX, clientY);
|
|
33
|
+
if (posFromPoint && blockEl.contains(posFromPoint.offsetNode)) {
|
|
34
|
+
const content = domTextOffsetAtNode(blockEl, posFromPoint.offsetNode, posFromPoint.offset);
|
|
35
|
+
return toClampedRawOffset(content, ambient);
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
/** A point one pixel inside `rect`, so the topmost element there is the box's own content. */
|
|
40
|
+
export function clampPointIntoBox(rect, x, y) {
|
|
41
|
+
return {
|
|
42
|
+
x: clamp(x, rect.left + 1, rect.right - 1),
|
|
43
|
+
y: clamp(y, rect.top + 1, rect.bottom - 1)
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function clamp(value, low, high) {
|
|
47
|
+
return Math.min(Math.max(value, low), high);
|
|
48
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reveal-target anchor. While a reveal is in flight the top-level windowing scope's
|
|
3
|
+
* `correctAnchor` re-asserts the target's screen position at its requested `block`
|
|
4
|
+
* placement instead of anchoring the top-of-viewport block, so image-decode churn
|
|
5
|
+
* above it can't shrink the document and clamp the scroll off it. One slot with
|
|
6
|
+
* per-call ownership; a plain closed-over value, never reactive `$state`.
|
|
7
|
+
*/
|
|
8
|
+
export type RevealBlock = 'nearest' | 'center';
|
|
9
|
+
export interface RevealTarget {
|
|
10
|
+
/** The full path the reveal was asked for, not a top-level narrowing. */
|
|
11
|
+
path: number[];
|
|
12
|
+
block: RevealBlock;
|
|
13
|
+
}
|
|
14
|
+
/** One `scrollTo`'s hold on the slot. */
|
|
15
|
+
export interface RevealClaim {
|
|
16
|
+
/** Drop the pin, iff this claim still holds it — a superseded claimant's release is a no-op. */
|
|
17
|
+
release(): void;
|
|
18
|
+
/** True once a LATER claim was minted — the only signal that another reveal owns the
|
|
19
|
+
* viewport. An empty slot (a user or self release) is not one, and is no reason for a
|
|
20
|
+
* reveal in flight to abandon what it was asked to do. */
|
|
21
|
+
isSuperseded(): boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface RevealAnchorState {
|
|
24
|
+
get(): RevealTarget | null;
|
|
25
|
+
/** Take the slot, superseding whoever held it. */
|
|
26
|
+
claim(path: readonly number[], block?: RevealBlock): RevealClaim;
|
|
27
|
+
/** Drop the pin whoever holds it — the user-intent release. */
|
|
28
|
+
releaseAll(): void;
|
|
29
|
+
}
|
|
30
|
+
export declare function createRevealAnchorState(): RevealAnchorState;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export function createRevealAnchorState() {
|
|
2
|
+
let target = null;
|
|
3
|
+
// A new claim supersedes the last MINT, not the current holder: supersession is a fact
|
|
4
|
+
// about reveals, and reading the holder would let `claim → release → claim` leave the
|
|
5
|
+
// first reveal believing it still owns the viewport (two settle loops, one scrollTop).
|
|
6
|
+
let owner = null;
|
|
7
|
+
let lastMinted = null;
|
|
8
|
+
function drop() {
|
|
9
|
+
owner = null;
|
|
10
|
+
target = null;
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
get: () => target,
|
|
14
|
+
claim(path, block = 'nearest') {
|
|
15
|
+
const token = { superseded: false };
|
|
16
|
+
if (lastMinted)
|
|
17
|
+
lastMinted.superseded = true;
|
|
18
|
+
lastMinted = token;
|
|
19
|
+
owner = token;
|
|
20
|
+
target = { path: [...path], block };
|
|
21
|
+
return {
|
|
22
|
+
release: () => {
|
|
23
|
+
if (owner === token)
|
|
24
|
+
drop();
|
|
25
|
+
},
|
|
26
|
+
isSuperseded: () => token.superseded
|
|
27
|
+
};
|
|
28
|
+
},
|
|
29
|
+
releaseAll: drop
|
|
30
|
+
};
|
|
31
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rendered↔source reveal: the caret kernel shared by the inline-island and
|
|
3
|
+
* render-primary-block swaps (both injected, along with the revealed flag). Placement runs
|
|
4
|
+
* only through `cursor/widget-offset.ts`, offset translation's one home, converting
|
|
5
|
+
* block-source offsets to walk space by `+ getAmbientLength()` at the single `placeCaret`
|
|
6
|
+
* seam. Precondition `source.length === sourceEnd - sourceStart`, asserted at entry (G1.26).
|
|
7
|
+
*/
|
|
8
|
+
export interface SourceRevealDeps {
|
|
9
|
+
/** The block's contenteditable host — where the offset walk runs. Null while a
|
|
10
|
+
* reactive consumer has the source unmounted (the block case, while rendered). */
|
|
11
|
+
get container(): HTMLElement | null;
|
|
12
|
+
/** Source's raw byte range [start, end) in the block source. */
|
|
13
|
+
get sourceStart(): number;
|
|
14
|
+
get sourceEnd(): number;
|
|
15
|
+
/** The source's raw bytes; `length` MUST equal `sourceEnd - sourceStart`. */
|
|
16
|
+
get source(): string;
|
|
17
|
+
/** Rendered marker prefix length the DOM walk counts but block source excludes. */
|
|
18
|
+
getAmbientLength(): number;
|
|
19
|
+
/** Whether the editable source is currently shown. Owned by the consumer
|
|
20
|
+
* (inline: a captured text node; block: a reactive flag). */
|
|
21
|
+
isRevealed(): boolean;
|
|
22
|
+
/** Swap the rendered view for editable source. May decline (leave `isRevealed`
|
|
23
|
+
* false) — e.g. the inline widget island isn't in the DOM. */
|
|
24
|
+
showSource(): void;
|
|
25
|
+
/** Swap the editable source back for the rendered view (inverse of showSource). */
|
|
26
|
+
showRendered(): void;
|
|
27
|
+
}
|
|
28
|
+
export interface SourceReveal {
|
|
29
|
+
isRevealed(): boolean;
|
|
30
|
+
/** Swap to editable source; caret at `sourceStart + atSourceOffset` (default edge). */
|
|
31
|
+
reveal(atSourceOffset?: number): Promise<void>;
|
|
32
|
+
/** Swap back to the rendered view; caret at the trailing edge (`sourceEnd`). */
|
|
33
|
+
commit(): Promise<void>;
|
|
34
|
+
}
|
|
35
|
+
export declare function createSourceReveal(deps: SourceRevealDeps): SourceReveal;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rendered↔source reveal: the caret kernel shared by the inline-island and
|
|
3
|
+
* render-primary-block swaps (both injected, along with the revealed flag). Placement runs
|
|
4
|
+
* only through `cursor/widget-offset.ts`, offset translation's one home, converting
|
|
5
|
+
* block-source offsets to walk space by `+ getAmbientLength()` at the single `placeCaret`
|
|
6
|
+
* seam. Precondition `source.length === sourceEnd - sourceStart`, asserted at entry (G1.26).
|
|
7
|
+
*/
|
|
8
|
+
import { tick } from 'svelte';
|
|
9
|
+
import { asRawOffset, toDomTextOffset } from './coordinate-spaces';
|
|
10
|
+
import { restoreCaretAtWalkOffset } from './focused-caret';
|
|
11
|
+
import { assertInvariant } from '../assert';
|
|
12
|
+
import { checkRevealSourceLength } from '../invariants/inline-transitions';
|
|
13
|
+
export function createSourceReveal(deps) {
|
|
14
|
+
/** Places the caret at a BLOCK-source offset, converting to ambient-included walk space. */
|
|
15
|
+
function placeCaret(container, blockSourceOffset) {
|
|
16
|
+
const walkOffset = toDomTextOffset(asRawOffset(blockSourceOffset), deps.getAmbientLength());
|
|
17
|
+
restoreCaretAtWalkOffset(container, walkOffset);
|
|
18
|
+
}
|
|
19
|
+
async function reveal(atSourceOffset = 0) {
|
|
20
|
+
assertInvariant('reveal-transition', () => checkRevealSourceLength(deps.source.length, deps.sourceStart, deps.sourceEnd));
|
|
21
|
+
if (!deps.isRevealed())
|
|
22
|
+
deps.showSource();
|
|
23
|
+
if (!deps.isRevealed())
|
|
24
|
+
return; // swap declined (island not in the DOM)
|
|
25
|
+
await tick();
|
|
26
|
+
const settled = deps.container;
|
|
27
|
+
if (!settled)
|
|
28
|
+
return;
|
|
29
|
+
// Focus BEFORE the caret write: a caret placed in an unfocused editable receives no
|
|
30
|
+
// typing, and focusing after would reset the selection to the element start.
|
|
31
|
+
if (document.activeElement !== settled)
|
|
32
|
+
settled.focus();
|
|
33
|
+
const clamped = Math.max(0, Math.min(atSourceOffset, deps.source.length));
|
|
34
|
+
placeCaret(settled, deps.sourceStart + clamped);
|
|
35
|
+
}
|
|
36
|
+
async function commit() {
|
|
37
|
+
if (!deps.isRevealed())
|
|
38
|
+
return;
|
|
39
|
+
deps.showRendered();
|
|
40
|
+
await tick();
|
|
41
|
+
const settled = deps.container;
|
|
42
|
+
if (!settled)
|
|
43
|
+
return;
|
|
44
|
+
placeCaret(settled, deps.sourceEnd);
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
isRevealed: () => deps.isRevealed(),
|
|
48
|
+
reveal,
|
|
49
|
+
commit
|
|
50
|
+
};
|
|
51
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "What scrolls" and "what clips" are two walks, never one: SCROLLING asks for
|
|
3
|
+
* `auto`/`scroll` and stops at the first answer, CLIPPING asks for anything that bounds
|
|
4
|
+
* the visible region and collects the whole chain, since visibility is their intersection.
|
|
5
|
+
* An `overflow: hidden` auto-height card matches a clipping predicate while doing neither.
|
|
6
|
+
* `selection/drag-pointer.ts` keeps its own inner walk, so a change here is not one to it.
|
|
7
|
+
*/
|
|
8
|
+
export declare function nearestScrollContainer(el: HTMLElement, stopAt: HTMLElement): HTMLElement | null;
|
|
9
|
+
/** What a drag can autoscroll: an element, or the page's own viewport. */
|
|
10
|
+
export type UserScrollport = HTMLElement | Window;
|
|
11
|
+
/**
|
|
12
|
+
* What a drag autoscrolls to bring more of `el` into reach: the nearest user-scrollable
|
|
13
|
+
* ancestor, or the window when the page's own viewport is the scrollport. Total on
|
|
14
|
+
* purpose — a null for the page-scrolled case reads as "no autoscroll targets", and
|
|
15
|
+
* `document.scrollingElement` is no substitute (its rect is the document box).
|
|
16
|
+
*/
|
|
17
|
+
export declare function userScrollportFor(el: HTMLElement): UserScrollport;
|
|
18
|
+
/**
|
|
19
|
+
* Every ancestor that bounds what can be seen of `el`, outermost-last. The whole chain,
|
|
20
|
+
* not the nearest: only the intersection answers "is this visible", and the innermost
|
|
21
|
+
* match alone can be a rounded card that bounds nothing. Callers intersect the window
|
|
22
|
+
* viewport with these; an empty result means the window alone bounds it.
|
|
23
|
+
*/
|
|
24
|
+
export declare function clippingAncestors(el: HTMLElement): HTMLElement[];
|
|
25
|
+
/** First scrollable descendant of `el` in document order. A block-host wrapper sits
|
|
26
|
+
* OUTSIDE a block's internal scroll container, so finding what scrolls beneath the host
|
|
27
|
+
* means looking inward, not up. */
|
|
28
|
+
export declare function firstScrollableDescendant(el: HTMLElement): HTMLElement | null;
|