@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,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cell-aware pointer drag and shift+click for tables. Builds the shallow-path
|
|
3
|
+
* intra-table multi-cell SelectionState (anchor.path === focus.path === tablePath,
|
|
4
|
+
* offsets are cellIdx-based) when input crosses cell boundaries inside one table.
|
|
5
|
+
*/
|
|
6
|
+
import { createPointerDragSession } from '../../../selection/pointer-session';
|
|
7
|
+
import { blockNearPoint } from '../../../selection/nearest-block';
|
|
8
|
+
import { firstScrollableDescendant } from '../../../cursor/scroll-ancestors';
|
|
9
|
+
// ── Public API ─────────────────────────────────────────────────────────────
|
|
10
|
+
/**
|
|
11
|
+
* Pointer-drag from inside `anchor`'s cell: drives the multi-cell encoding while the
|
|
12
|
+
* pointer stays in the table, and extends focus to the foreign block underneath once
|
|
13
|
+
* it leaves. Anchor cell coords are frozen; only the focus tracks the pointer.
|
|
14
|
+
*/
|
|
15
|
+
export function installCellDragListener(ctx, anchor, down) {
|
|
16
|
+
const anchorCellIdx = anchor.rowIdx * anchor.columnCount + anchor.colIdx;
|
|
17
|
+
// cellCoordinate marks the offset row-major, so a drag that exits to a foreign block
|
|
18
|
+
// gets the whole-row snap (table-endpoint-snap.ts) and copy/delete agree on the same
|
|
19
|
+
// rows. Same-table extends compare equal paths and short-circuit the snap.
|
|
20
|
+
const anchorPoint = {
|
|
21
|
+
path: anchor.tablePath.slice(),
|
|
22
|
+
offset: anchorCellIdx,
|
|
23
|
+
cellCoordinate: true
|
|
24
|
+
};
|
|
25
|
+
// `anchor.tableEl` is `[role="table"]`; the scrollable element is its first
|
|
26
|
+
// scrollable descendant (the `.table-block` grid).
|
|
27
|
+
const tableScrollEl = firstScrollableDescendant(anchor.tableEl) ?? anchor.tableEl;
|
|
28
|
+
function processMove(clientX, clientY) {
|
|
29
|
+
const cellHit = cellAtPoint(clientX, clientY, anchor.tableEl);
|
|
30
|
+
if (cellHit) {
|
|
31
|
+
if (cellHit.rowIdx === anchor.rowIdx && cellHit.colIdx === anchor.colIdx) {
|
|
32
|
+
// Back in the anchor cell: collapse so native resumes the intra-cell selection.
|
|
33
|
+
if (ctx.selection.isCrossBlock) {
|
|
34
|
+
ctx.selection.collapse();
|
|
35
|
+
}
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
extendToCell(cellHit.rowIdx, cellHit.colIdx);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// Inside the table but not over a cell (a padding gap): hold the current focus,
|
|
42
|
+
// so crossing a cell border doesn't flicker.
|
|
43
|
+
const target = document.elementFromPoint(clientX, clientY);
|
|
44
|
+
if (target && anchor.tableEl.contains(target))
|
|
45
|
+
return;
|
|
46
|
+
extendToForeignBlock(clientX, clientY);
|
|
47
|
+
}
|
|
48
|
+
function extendToCell(rowIdx, colIdx) {
|
|
49
|
+
const cellIdx = rowIdx * anchor.columnCount + colIdx;
|
|
50
|
+
const focusPoint = {
|
|
51
|
+
path: anchor.tablePath.slice(),
|
|
52
|
+
offset: cellIdx
|
|
53
|
+
};
|
|
54
|
+
if (!ctx.selection.isCustomRendered) {
|
|
55
|
+
ctx.selection.enterCrossBlock(anchorPoint, focusPoint);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
ctx.selection.extendFocus(focusPoint);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function extendToForeignBlock(clientX, clientY) {
|
|
62
|
+
// Nearest, not under: one coalesced frame can hand over a point off every block (the
|
|
63
|
+
// margin, a gutter), and declining it would drop the whole gesture.
|
|
64
|
+
const near = blockNearPoint(ctx.editorRoot, clientX, clientY);
|
|
65
|
+
if (!near)
|
|
66
|
+
return;
|
|
67
|
+
// Shared with the cross-block drag, so a table destination carries cellCoordinate for the
|
|
68
|
+
// whole-row snap symmetrically with the anchor, and a surfaceless kind is not hit-tested.
|
|
69
|
+
const focusPoint = near.endpointHere();
|
|
70
|
+
if (!focusPoint)
|
|
71
|
+
return;
|
|
72
|
+
if (!ctx.selection.isCustomRendered) {
|
|
73
|
+
ctx.selection.enterCrossBlock(anchorPoint, focusPoint);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
ctx.selection.extendFocus(focusPoint);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return createPointerDragSession(down, {
|
|
80
|
+
onMove: (p) => processMove(p.clientX, p.clientY),
|
|
81
|
+
autoScroll: { getTargets: () => [tableScrollEl] },
|
|
82
|
+
lifetimeSignal: ctx.lifetimeSignal
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/** Shift+click on a cell when the previous focus was another cell of the same table. */
|
|
86
|
+
export function handleCellShiftClick(selection, anchor, target) {
|
|
87
|
+
const anchorCellIdx = anchor.rowIdx * anchor.columnCount + anchor.colIdx;
|
|
88
|
+
const focusCellIdx = target.rowIdx * anchor.columnCount + target.colIdx;
|
|
89
|
+
const tablePath = anchor.tablePath.slice();
|
|
90
|
+
if (selection.isCustomRendered) {
|
|
91
|
+
selection.extendFocus({ path: tablePath, offset: focusCellIdx });
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
// Flagged row-major to match the drag anchor, so a later exit-the-table extend snaps
|
|
95
|
+
// whole rows. The focus stays unflagged: same-table extends short-circuit the snap.
|
|
96
|
+
selection.enterCrossBlock({
|
|
97
|
+
path: tablePath.slice(),
|
|
98
|
+
offset: anchorCellIdx,
|
|
99
|
+
cellCoordinate: true
|
|
100
|
+
}, { path: tablePath.slice(), offset: focusCellIdx });
|
|
101
|
+
}
|
|
102
|
+
// ── DOM geometry ─────────────────────────────────────────────────────────────
|
|
103
|
+
//
|
|
104
|
+
// Selector contract: rows carry `data-table-row-idx`, cells carry `role="cell"`. Two
|
|
105
|
+
// other readers walk the same selectors — `selection/path-lookup.ts` upward and
|
|
106
|
+
// `Editor.svelte`'s `getBlockElByPath` downward — so a markup change lands in all three.
|
|
107
|
+
/**
|
|
108
|
+
* The mounted table rows, in DOM order. Row windowing unmounts row 0 once the table
|
|
109
|
+
* scrolls past it (VR-K1), so index 0 is the first MOUNTED row — still fine for column
|
|
110
|
+
* geometry, since the column tracks are uniform.
|
|
111
|
+
*/
|
|
112
|
+
export function mountedRowEls(tableEl) {
|
|
113
|
+
return Array.from(tableEl.querySelectorAll(':scope > [data-table-row-idx]'));
|
|
114
|
+
}
|
|
115
|
+
/** The cells of one row, in column order. */
|
|
116
|
+
export function rowCellEls(rowEl) {
|
|
117
|
+
return Array.from(rowEl.querySelectorAll(':scope > [role="cell"]'));
|
|
118
|
+
}
|
|
119
|
+
// ── Hit testing ────────────────────────────────────────────────────────────
|
|
120
|
+
/**
|
|
121
|
+
* A viewport point → its cell within `tableEl`, or null when the point falls outside
|
|
122
|
+
* this specific table. Thin entry over `cellCoordsOfElement`.
|
|
123
|
+
*/
|
|
124
|
+
export function cellAtPoint(clientX, clientY, tableEl) {
|
|
125
|
+
return cellCoordsOfElement(document.elementFromPoint(clientX, clientY), tableEl);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* An element (click target, previously focused element) → its cell coords within
|
|
129
|
+
* `tableEl`. Identity-checks the owning table, so a sibling table can't masquerade
|
|
130
|
+
* as the originating one.
|
|
131
|
+
*/
|
|
132
|
+
export function cellCoordsOfElement(el, tableEl) {
|
|
133
|
+
if (!el)
|
|
134
|
+
return null;
|
|
135
|
+
const cellEl = el.closest('[role="cell"]');
|
|
136
|
+
if (!cellEl)
|
|
137
|
+
return null;
|
|
138
|
+
const rowEl = cellEl.closest('[data-table-row-idx]');
|
|
139
|
+
if (!rowEl)
|
|
140
|
+
return null;
|
|
141
|
+
if (rowEl.closest('[role="table"]') !== tableEl)
|
|
142
|
+
return null;
|
|
143
|
+
const rowIdxAttr = rowEl.getAttribute('data-table-row-idx');
|
|
144
|
+
if (rowIdxAttr === null)
|
|
145
|
+
return null;
|
|
146
|
+
const rowIdx = Number(rowIdxAttr);
|
|
147
|
+
if (Number.isNaN(rowIdx))
|
|
148
|
+
return null;
|
|
149
|
+
const colIdx = rowCellEls(rowEl).indexOf(cellEl);
|
|
150
|
+
if (colIdx < 0)
|
|
151
|
+
return null;
|
|
152
|
+
return { rowIdx, colIdx, cellEl };
|
|
153
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOM-build for TableCellBlock's render $effect. Mirrors text-render.ts without the
|
|
3
|
+
* ambient prefix or block marker — a cell's entire raw is content, so every island
|
|
4
|
+
* offset is a raw offset. The component owns the effect and the pending-cursor
|
|
5
|
+
* restore; this factory owns the imperative build.
|
|
6
|
+
*/
|
|
7
|
+
import type { DocumentView, NodeView } from '../../../core/node-views';
|
|
8
|
+
import type { LinkReferenceResolverRef, ResolveLinkUrl } from '../../../editor-keys';
|
|
9
|
+
import type { PresentationMode } from '../../../presentation-mode';
|
|
10
|
+
import type { IndexedDecoration } from '../../../decorations/buckets';
|
|
11
|
+
import type { ReplaceDecoration, WidgetDecoration } from '../../../decorations/types';
|
|
12
|
+
export interface CellRenderDeps {
|
|
13
|
+
get el(): HTMLElement | null;
|
|
14
|
+
get node(): NodeView;
|
|
15
|
+
get linkRef(): LinkReferenceResolverRef | undefined;
|
|
16
|
+
resolveLinkUrl: ResolveLinkUrl;
|
|
17
|
+
/** Effective mode. Read inside the render pass on purpose: the read is the
|
|
18
|
+
* reactive dependency that re-renders every mounted cell on a mode flip. */
|
|
19
|
+
get presentationMode(): PresentationMode;
|
|
20
|
+
/** The editor's theme name, forwarded to widgets. NOT a render-key term: this DOM is
|
|
21
|
+
* themed by CSS, so only a widget whose engine paints its own colors reads it. */
|
|
22
|
+
getTheme?: () => string;
|
|
23
|
+
/** Live root document for widgets that derive from it. A getter, so a pooled widget
|
|
24
|
+
* re-reads the current document across edits rather than a mount-time snapshot. */
|
|
25
|
+
getDocument: () => DocumentView | undefined;
|
|
26
|
+
/** The editor's content version, so a widget can memoize a document-wide derivation
|
|
27
|
+
* on it. Absent in a bare harness. */
|
|
28
|
+
getContentVersion?: () => number;
|
|
29
|
+
/** The editor's navigation door, forwarded to widgets whose gesture jumps elsewhere. */
|
|
30
|
+
navigateTo?: (path: number[]) => Promise<boolean>;
|
|
31
|
+
/** Position-sorted islands. A getter read inside the render pass on purpose: that
|
|
32
|
+
* read is the reactive dependency that re-renders the cell on an island change. */
|
|
33
|
+
get islands(): IndexedDecoration<WidgetDecoration | ReplaceDecoration>[];
|
|
34
|
+
/** A widget's synchronous mount throw goes to the editor's `error` channel. Absent →
|
|
35
|
+
* unsurfaced; the widget still falls back to its raw source. */
|
|
36
|
+
reportRenderError?: (error: unknown) => void;
|
|
37
|
+
}
|
|
38
|
+
export interface CellRender {
|
|
39
|
+
/**
|
|
40
|
+
* Rebuild the cell's children from current node state. Skips work on an unchanged
|
|
41
|
+
* memo key unless `forceRebuild` — pass it when a pending cursor restore needs the
|
|
42
|
+
* DOM re-anchored even though the key held.
|
|
43
|
+
*/
|
|
44
|
+
render(opts?: {
|
|
45
|
+
forceRebuild?: boolean;
|
|
46
|
+
carryCaret?: boolean;
|
|
47
|
+
}): void;
|
|
48
|
+
/** Destroy every pooled widget instance and mounted island — called on unmount. */
|
|
49
|
+
dispose(): void;
|
|
50
|
+
}
|
|
51
|
+
export declare function createCellRender(deps: CellRenderDeps): CellRender;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOM-build for TableCellBlock's render $effect. Mirrors text-render.ts without the
|
|
3
|
+
* ambient prefix or block marker — a cell's entire raw is content, so every island
|
|
4
|
+
* offset is a raw offset. The component owns the effect and the pending-cursor
|
|
5
|
+
* restore; this factory owns the imperative build.
|
|
6
|
+
*/
|
|
7
|
+
import { computeInlineContent, contentLengthOf } from '../../../core/inline';
|
|
8
|
+
import { renderInlineNodes } from '../../../core/inline-render';
|
|
9
|
+
import { trimTrailingLineEnding } from '../../../core/lines';
|
|
10
|
+
import { captureFocusedCaretWalkOffset, restoreCaretAtWalkOffset } from '../../../cursor/focused-caret';
|
|
11
|
+
import { CONTENT_EMPTY_ATTR, holdsOnlyMarkerChrome } from '../../../cursor/widget-offset';
|
|
12
|
+
import { applyIslandDecorations, islandRenderKeyPart } from '../../../decorations/island-dom';
|
|
13
|
+
import { mountDecorationWidget } from '../../../decorations/widget-dom';
|
|
14
|
+
import { devWarn } from '../../../dev-warn';
|
|
15
|
+
import { getBlockKindDescriptor } from '../../../schema/block-kind-descriptor';
|
|
16
|
+
import { createSvelteWidgetPool } from '../widget-portal';
|
|
17
|
+
export function createCellRender(deps) {
|
|
18
|
+
let lastRenderedKey = '';
|
|
19
|
+
const widgetPool = createSvelteWidgetPool({
|
|
20
|
+
reportError: deps.reportRenderError,
|
|
21
|
+
getPresentationMode: () => deps.presentationMode,
|
|
22
|
+
getTheme: deps.getTheme,
|
|
23
|
+
getDocument: deps.getDocument,
|
|
24
|
+
getContentVersion: deps.getContentVersion,
|
|
25
|
+
navigateTo: deps.navigateTo
|
|
26
|
+
});
|
|
27
|
+
let islandDestroys = [];
|
|
28
|
+
function destroyIslands() {
|
|
29
|
+
for (const destroy of islandDestroys)
|
|
30
|
+
destroy();
|
|
31
|
+
islandDestroys = [];
|
|
32
|
+
}
|
|
33
|
+
function buildPortalWidget(node, raw) {
|
|
34
|
+
return widgetPool.acquire(node.kind, node, raw.slice(node.start, node.end));
|
|
35
|
+
}
|
|
36
|
+
function render(opts) {
|
|
37
|
+
const el = deps.el;
|
|
38
|
+
if (!el)
|
|
39
|
+
return;
|
|
40
|
+
const node = deps.node;
|
|
41
|
+
// Gating both the signature dependency and the resolver read on the bracket keeps
|
|
42
|
+
// an LRD change from re-rendering every cell. A false positive re-parses identically.
|
|
43
|
+
const hasRef = node.raw.includes('[');
|
|
44
|
+
// Key on the compact signature epoch, never the ~MB-scale string (text-render's twin).
|
|
45
|
+
const sig = hasRef ? String(deps.linkRef?.epoch ?? deps.linkRef?.signature ?? '') : '';
|
|
46
|
+
// Unconditional, unlike the ref gating: a mode flip re-renders every mounted cell.
|
|
47
|
+
// '' in source keeps the default key byte-identical but for one NUL (text-render's twin).
|
|
48
|
+
const mode = deps.presentationMode;
|
|
49
|
+
const modeKeyPart = mode === 'source' ? '' : mode;
|
|
50
|
+
const islands = deps.islands;
|
|
51
|
+
const renderKey = `${node.raw}\0${sig}\0${modeKeyPart}${islandRenderKeyPart(islands)}`;
|
|
52
|
+
const forceRebuild = opts?.forceRebuild ?? false;
|
|
53
|
+
if (renderKey === lastRenderedKey && !forceRebuild)
|
|
54
|
+
return;
|
|
55
|
+
const content = computeInlineContent(node, hasRef ? deps.linkRef?.current : undefined);
|
|
56
|
+
// An island-signature change rebuilds a focused cell with no edit-path pending
|
|
57
|
+
// offset, so carry the caret in walk space; the edit path opts out because its
|
|
58
|
+
// own restore runs after and wins (text-render's twin).
|
|
59
|
+
const caretWalkOffset = (opts?.carryCaret ?? true) ? captureFocusedCaretWalkOffset(el) : null;
|
|
60
|
+
// Bracketing the rebuild pools portal widgets, so an unchanged `$…$` keeps its
|
|
61
|
+
// instance across per-keystroke rebuilds. Island widgets are unpooled.
|
|
62
|
+
widgetPool.beginPass();
|
|
63
|
+
destroyIslands();
|
|
64
|
+
el.replaceChildren(renderInlineNodes(content, node.raw, {
|
|
65
|
+
renderImagesAsWidgets: getBlockKindDescriptor(node.kind).renderImagesAsWidgets ?? true,
|
|
66
|
+
resolveLinkUrl: deps.resolveLinkUrl,
|
|
67
|
+
buildPortalWidget
|
|
68
|
+
}));
|
|
69
|
+
// Ambient length 0: a cell carries no marker, so island offsets are raw offsets.
|
|
70
|
+
islandDestroys = applyIslandDecorations(el, node.raw, islands, {
|
|
71
|
+
contentLength: contentLengthOf(node),
|
|
72
|
+
ambientLength: 0,
|
|
73
|
+
mountWidget: (spec, dec) => mountDecorationWidget(spec, dec, deps.reportRenderError),
|
|
74
|
+
onSkipped: (dec, reason) => devWarn('decorations', `island skipped: ${reason}`, dec)
|
|
75
|
+
});
|
|
76
|
+
widgetPool.sweep();
|
|
77
|
+
lastRenderedKey = renderKey;
|
|
78
|
+
// An empty cell needs a `<br>` caret anchor, but a `<br>` inside an island
|
|
79
|
+
// belongs to the widget, not the cell — it must not satisfy the anchor.
|
|
80
|
+
if (trimTrailingLineEnding(node.raw) === '') {
|
|
81
|
+
const hasAnchorBr = [...el.querySelectorAll('br')].some((br) => !br.closest('[data-decoration-island]'));
|
|
82
|
+
if (!hasAnchorBr)
|
|
83
|
+
el.appendChild(document.createElement('br'));
|
|
84
|
+
}
|
|
85
|
+
// A cell whose whole content is an empty construct (`[](u)`) would otherwise paint
|
|
86
|
+
// nothing; the stamp precedes the restore, which lands through the same walk.
|
|
87
|
+
el.toggleAttribute(CONTENT_EMPTY_ATTR, holdsOnlyMarkerChrome(el));
|
|
88
|
+
if (caretWalkOffset !== null)
|
|
89
|
+
restoreCaretAtWalkOffset(el, caretWalkOffset);
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
render,
|
|
93
|
+
dispose: () => {
|
|
94
|
+
destroyIslands();
|
|
95
|
+
widgetPool.dispose();
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a cell resolves the table's structural commands: a command id names a
|
|
3
|
+
* `TableContext` mutation plus which of the cell's two coordinates indexes it.
|
|
4
|
+
* The chord half lives on the `tableCell` keymap.
|
|
5
|
+
*/
|
|
6
|
+
import type { TableAxisAction } from '../../../action-contracts';
|
|
7
|
+
import type { AnyCommandId } from '../../../schema/command-id';
|
|
8
|
+
export type CommandAxis = 'row' | 'column';
|
|
9
|
+
export declare function tableAxisCommand(id: AnyCommandId): {
|
|
10
|
+
action: TableAxisAction;
|
|
11
|
+
axis: CommandAxis;
|
|
12
|
+
} | null;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a cell resolves the table's structural commands: a command id names a
|
|
3
|
+
* `TableContext` mutation plus which of the cell's two coordinates indexes it.
|
|
4
|
+
* The chord half lives on the `tableCell` keymap.
|
|
5
|
+
*/
|
|
6
|
+
const TABLE_AXIS_COMMANDS = {
|
|
7
|
+
'table.insertRowBelow': { action: 'insertRowBelow', axis: 'row' },
|
|
8
|
+
'table.insertRowAbove': { action: 'insertRowAbove', axis: 'row' },
|
|
9
|
+
'table.insertColumnRight': { action: 'insertColumnRight', axis: 'column' },
|
|
10
|
+
'table.insertColumnLeft': { action: 'insertColumnLeft', axis: 'column' },
|
|
11
|
+
'table.deleteRow': { action: 'deleteRow', axis: 'row' },
|
|
12
|
+
'table.deleteColumn': { action: 'deleteColumn', axis: 'column' },
|
|
13
|
+
'table.moveRowUp': { action: 'moveRowUp', axis: 'row' },
|
|
14
|
+
'table.moveRowDown': { action: 'moveRowDown', axis: 'row' },
|
|
15
|
+
'table.moveColumnLeft': { action: 'moveColumnLeft', axis: 'column' },
|
|
16
|
+
'table.moveColumnRight': { action: 'moveColumnRight', axis: 'column' },
|
|
17
|
+
'table.cycleAlignment': { action: 'cycleAlignment', axis: 'column' }
|
|
18
|
+
};
|
|
19
|
+
export function tableAxisCommand(id) {
|
|
20
|
+
return TABLE_AXIS_COMMANDS[id] ?? null;
|
|
21
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Pick the column whose horizontal range contains an editor-relative pixel X, so
|
|
2
|
+
// arrowing into the table lands near where the caret was horizontally. The result is
|
|
3
|
+
// a column index, not a row-major cell index.
|
|
4
|
+
export function columnNearestX(x, rects) {
|
|
5
|
+
if (rects.length === 0)
|
|
6
|
+
return 0;
|
|
7
|
+
if (x < rects[0].left)
|
|
8
|
+
return 0;
|
|
9
|
+
if (x >= rects[rects.length - 1].right)
|
|
10
|
+
return rects.length - 1;
|
|
11
|
+
for (let i = 0; i < rects.length; i++) {
|
|
12
|
+
if (x >= rects[i].left && x < rects[i].right)
|
|
13
|
+
return i;
|
|
14
|
+
}
|
|
15
|
+
return rects.length - 1;
|
|
16
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which cells of one table a measurement request covers: a live intra-table
|
|
3
|
+
* rectangle, or a plain `[start, end)` run of row-major cell indices. The rectangle
|
|
4
|
+
* wins only when it belongs to THIS table.
|
|
5
|
+
*/
|
|
6
|
+
import type { IntraTableRect } from './cell-clipboard';
|
|
7
|
+
import type { CellCoord } from './table-navigation';
|
|
8
|
+
export interface SelectedCellsInput {
|
|
9
|
+
/** The live rectangle from anywhere in the document, or null. */
|
|
10
|
+
rect: IntraTableRect | null;
|
|
11
|
+
/** This table's doc path — the owner check against `rect.tablePath`. */
|
|
12
|
+
myPath: readonly number[];
|
|
13
|
+
start: number;
|
|
14
|
+
/** `SELECTION_END` means "through the last cell". */
|
|
15
|
+
end: number;
|
|
16
|
+
rowCount: number;
|
|
17
|
+
columnCount: number;
|
|
18
|
+
}
|
|
19
|
+
export declare function selectedCells(input: SelectedCellsInput): CellCoord[];
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which cells of one table a measurement request covers: a live intra-table
|
|
3
|
+
* rectangle, or a plain `[start, end)` run of row-major cell indices. The rectangle
|
|
4
|
+
* wins only when it belongs to THIS table.
|
|
5
|
+
*/
|
|
6
|
+
import { SELECTION_END } from '../../../block-component';
|
|
7
|
+
import { cellRowCol } from '../../../cursor/coordinate-spaces';
|
|
8
|
+
import { pathsEqual } from '../../../selection/path-math';
|
|
9
|
+
export function selectedCells(input) {
|
|
10
|
+
const { rect, myPath, columnCount, rowCount } = input;
|
|
11
|
+
if (rect && pathsEqual(rect.tablePath, myPath)) {
|
|
12
|
+
return rectangleCells(rect, columnCount);
|
|
13
|
+
}
|
|
14
|
+
const cellCount = rowCount * columnCount;
|
|
15
|
+
const end = input.end === SELECTION_END ? cellCount : Math.min(input.end, cellCount);
|
|
16
|
+
const cells = [];
|
|
17
|
+
for (let i = Math.max(0, input.start); i < end; i++)
|
|
18
|
+
cells.push(coordOf(i, columnCount));
|
|
19
|
+
return cells;
|
|
20
|
+
}
|
|
21
|
+
function rectangleCells(rect, columnCount) {
|
|
22
|
+
const a = coordOf(rect.anchorCellIdx, columnCount);
|
|
23
|
+
const b = coordOf(rect.focusCellIdx, columnCount);
|
|
24
|
+
const cells = [];
|
|
25
|
+
for (let r = Math.min(a.rowIdx, b.rowIdx); r <= Math.max(a.rowIdx, b.rowIdx); r++) {
|
|
26
|
+
for (let c = Math.min(a.colIdx, b.colIdx); c <= Math.max(a.colIdx, b.colIdx); c++) {
|
|
27
|
+
cells.push({ rowIdx: r, colIdx: c });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return cells;
|
|
31
|
+
}
|
|
32
|
+
function coordOf(cellIdx, columnCount) {
|
|
33
|
+
const { row, col } = cellRowCol(cellIdx, columnCount);
|
|
34
|
+
return { rowIdx: row, colIdx: col };
|
|
35
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Table's `caretTargetAtPoint`: the cell a point lands a caret in, as a `[rowIdx, colIdx]` path
|
|
3
|
+
* plus a within-cell offset. NEAREST, not exact — the difference from `tableDragHitTest` beside
|
|
4
|
+
* it. A point clamped into the table's box can sit in a gutter, a padding gap or a windowing
|
|
5
|
+
* spacer and must still land a caret, where an exact `elementFromPoint` hit declines.
|
|
6
|
+
*/
|
|
7
|
+
import type { CaretTarget } from '../../../schema/block-kind-descriptor';
|
|
8
|
+
export declare function tableCaretAtPoint(blockEl: HTMLElement, clientX: number, clientY: number): CaretTarget | null;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Table's `caretTargetAtPoint`: the cell a point lands a caret in, as a `[rowIdx, colIdx]` path
|
|
3
|
+
* plus a within-cell offset. NEAREST, not exact — the difference from `tableDragHitTest` beside
|
|
4
|
+
* it. A point clamped into the table's box can sit in a gutter, a padding gap or a windowing
|
|
5
|
+
* spacer and must still land a caret, where an exact `elementFromPoint` hit declines.
|
|
6
|
+
*/
|
|
7
|
+
import { CURSOR_END } from '../../../block-component';
|
|
8
|
+
import { mountedRowEls, rowCellEls } from './cell-pointer';
|
|
9
|
+
export function tableCaretAtPoint(blockEl, clientX, clientY) {
|
|
10
|
+
const tableEl = blockEl.querySelector(':scope > [role="table"]');
|
|
11
|
+
if (!tableEl)
|
|
12
|
+
return null;
|
|
13
|
+
let nearest = null;
|
|
14
|
+
let smallestDistance = Infinity;
|
|
15
|
+
for (const rowEl of mountedRowEls(tableEl)) {
|
|
16
|
+
// The ABSOLUTE row index: under row windowing the first mounted row is not row 0.
|
|
17
|
+
const rowIdx = Number(rowEl.getAttribute('data-table-row-idx'));
|
|
18
|
+
if (Number.isNaN(rowIdx))
|
|
19
|
+
continue;
|
|
20
|
+
rowCellEls(rowEl).forEach((cell, colIdx) => {
|
|
21
|
+
const distance = squaredDistanceToBox(cell.getBoundingClientRect(), clientX, clientY);
|
|
22
|
+
if (distance < smallestDistance) {
|
|
23
|
+
smallestDistance = distance;
|
|
24
|
+
nearest = [rowIdx, colIdx];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return nearest === null ? null : { path: nearest, offset: CURSOR_END };
|
|
29
|
+
}
|
|
30
|
+
// Squared: only the ordering is read, and ties keep the first (lowest row, then column).
|
|
31
|
+
function squaredDistanceToBox(box, x, y) {
|
|
32
|
+
const dx = x < box.left ? box.left - x : x > box.right ? x - box.right : 0;
|
|
33
|
+
const dy = y < box.top ? box.top - y : y > box.bottom ? y - box.bottom : 0;
|
|
34
|
+
return dx * dx + dy * dy;
|
|
35
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cell text ingestion for tableCell: the caret mapping that follows the sink's
|
|
3
|
+
* inserted backslashes, plus the paste hooks exposed as a PasteSurface. The bytes
|
|
4
|
+
* are the kind's business — every hook hands back plain spliced text and
|
|
5
|
+
* `normalizeCellRaw` runs at the write sink.
|
|
6
|
+
*/
|
|
7
|
+
import type { CstNode } from '../../../core/nodes';
|
|
8
|
+
import type { InlinePasteResult, PasteRange, PasteSeam, PasteSurface } from '../../../tree-operations/paste-surfaces';
|
|
9
|
+
export declare function normalizeWhitespace(s: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Where `offset` lands once the sink's `normalizeCellRaw` has run — defined as that
|
|
12
|
+
* same pass over the prefix, so the caret cannot drift out of step with the bytes.
|
|
13
|
+
*/
|
|
14
|
+
export declare function escapedCellOffset(text: string, offset: number): number;
|
|
15
|
+
export declare function tableCellInlinePaste(node: CstNode, offset: number, text: string, preDelete?: PasteRange, seam?: PasteSeam): InlinePasteResult;
|
|
16
|
+
export declare const tableCellPasteSurface: PasteSurface;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cell text ingestion for tableCell: the caret mapping that follows the sink's
|
|
3
|
+
* inserted backslashes, plus the paste hooks exposed as a PasteSurface. The bytes
|
|
4
|
+
* are the kind's business — every hook hands back plain spliced text and
|
|
5
|
+
* `normalizeCellRaw` runs at the write sink.
|
|
6
|
+
*/
|
|
7
|
+
import { CURSOR_END } from '../../../block-component';
|
|
8
|
+
import { normalizeCellRaw } from '../../../schema/table-cell-raw';
|
|
9
|
+
import { blockNodeAt, cutRangeFromDisplay } from '../../../tree-operations/node-ops';
|
|
10
|
+
import { sliceTableAtRow } from '../../../tree-operations/paste/table-slice';
|
|
11
|
+
import { focusIndexBeforeResidue } from '../../../tree-operations/paste/focus-target';
|
|
12
|
+
import { replaceBlockAtParent } from '../../../tree-operations/paste/replace-block-at-parent';
|
|
13
|
+
// ── Public API ─────────────────────────────────────────────────────────────
|
|
14
|
+
export function normalizeWhitespace(s) {
|
|
15
|
+
return s.replace(/\n+/g, ' ').trim();
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Where `offset` lands once the sink's `normalizeCellRaw` has run — defined as that
|
|
19
|
+
* same pass over the prefix, so the caret cannot drift out of step with the bytes.
|
|
20
|
+
*/
|
|
21
|
+
export function escapedCellOffset(text, offset) {
|
|
22
|
+
return normalizeCellRaw(text.slice(0, offset)).length;
|
|
23
|
+
}
|
|
24
|
+
export function tableCellInlinePaste(node, offset, text, preDelete, seam) {
|
|
25
|
+
const cleaned = normalizeWhitespace(text);
|
|
26
|
+
// The delete half crosses the join seam BEFORE the escaping stage (live-mode.md § 4.5): the
|
|
27
|
+
// seam reads and writes the cell's own display bytes, and `normalizeCellRaw` still runs at the
|
|
28
|
+
// sink over whatever they end up being.
|
|
29
|
+
const { display: raw, offset: effectiveOffset } = cutRangeFromDisplay(node, node.raw, preDelete ?? { start: offset, end: offset }, seam?.presentationMode, seam?.linkRef);
|
|
30
|
+
const spliced = raw.slice(0, effectiveOffset) + cleaned + raw.slice(effectiveOffset);
|
|
31
|
+
// Escaped space, because the sink escapes the whole spliced raw and not just the
|
|
32
|
+
// pasted text: the insertion point can sit between a `\` and the `|` it frees.
|
|
33
|
+
return {
|
|
34
|
+
newRaw: spliced,
|
|
35
|
+
caretOffset: escapedCellOffset(spliced, effectiveOffset + cleaned.length)
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export const tableCellPasteSurface = {
|
|
39
|
+
kind: 'tableCell',
|
|
40
|
+
blankEdgesArePackaging: true,
|
|
41
|
+
onInlinePaste: tableCellInlinePaste,
|
|
42
|
+
onScopedStructuralPaste: tableCellScopedStructuralPaste
|
|
43
|
+
};
|
|
44
|
+
// ── Internal ───────────────────────────────────────────────────────────────
|
|
45
|
+
// The cell's blockEdit is the row-level nested bundle (its `replaceBlock` targets the
|
|
46
|
+
// row's cells), so the splice routes through `replaceBlockAtParent` at the table's parent.
|
|
47
|
+
async function tableCellScopedStructuralPaste(input) {
|
|
48
|
+
const tablePath = input.targetPath.slice(0, -2);
|
|
49
|
+
const rowIdx = input.targetPath[input.targetPath.length - 2];
|
|
50
|
+
const table = blockNodeAt(input.doc, tablePath);
|
|
51
|
+
// Malformed path: swallow the paste.
|
|
52
|
+
if (!table || table.kind !== 'table')
|
|
53
|
+
return;
|
|
54
|
+
const { firstHalf, secondHalf } = sliceTableAtRow(table, rowIdx, 'first');
|
|
55
|
+
const replacement = [];
|
|
56
|
+
if (firstHalf)
|
|
57
|
+
replacement.push(firstHalf);
|
|
58
|
+
// Appended, never spread: a paste can outnumber an argument list (G4.60).
|
|
59
|
+
for (const block of input.blocks)
|
|
60
|
+
replacement.push(block);
|
|
61
|
+
if (secondHalf)
|
|
62
|
+
replacement.push(secondHalf);
|
|
63
|
+
await replaceBlockAtParent({
|
|
64
|
+
doc: input.doc,
|
|
65
|
+
blockPath: tablePath,
|
|
66
|
+
replacement,
|
|
67
|
+
controller: input.controller,
|
|
68
|
+
undoEntry: input.undoEntry,
|
|
69
|
+
// The last pasted block, before the second table half (the residue).
|
|
70
|
+
focusReplacementIndex: focusIndexBeforeResidue(replacement.length, secondHalf !== null),
|
|
71
|
+
focusOffset: CURSOR_END,
|
|
72
|
+
source: 'paste-dispatch-table-cell',
|
|
73
|
+
...(input.grammar ? { grammar: input.grammar } : {})
|
|
74
|
+
});
|
|
75
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Table's `foreignDragHitTest`: a foreign drag's viewport point → a row-major cellIdx.
|
|
3
|
+
* Owns the encoding so the selection layer stays free of table-DOM knowledge.
|
|
4
|
+
*/
|
|
5
|
+
export declare function tableDragHitTest(blockEl: HTMLElement, clientX: number, clientY: number): number | null;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Table's `foreignDragHitTest`: a foreign drag's viewport point → a row-major cellIdx.
|
|
3
|
+
* Owns the encoding so the selection layer stays free of table-DOM knowledge.
|
|
4
|
+
*/
|
|
5
|
+
import { cellAtPoint, mountedRowEls, rowCellEls } from './cell-pointer';
|
|
6
|
+
export function tableDragHitTest(blockEl, clientX, clientY) {
|
|
7
|
+
const tableEl = blockEl.querySelector(':scope > [role="table"]');
|
|
8
|
+
if (!tableEl)
|
|
9
|
+
return null;
|
|
10
|
+
const cell = cellAtPoint(clientX, clientY, tableEl);
|
|
11
|
+
if (!cell)
|
|
12
|
+
return null;
|
|
13
|
+
const firstRow = mountedRowEls(tableEl)[0];
|
|
14
|
+
if (!firstRow)
|
|
15
|
+
return null;
|
|
16
|
+
const columnCount = rowCellEls(firstRow).length;
|
|
17
|
+
if (columnCount === 0)
|
|
18
|
+
return null;
|
|
19
|
+
return cell.rowIdx * columnCount + cell.colIdx;
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function dropGapIndex(pointer: number, edges: number[]): number;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Map a reorder drag's pointer to the insertion gap it sits nearest. `edges` are the
|
|
2
|
+
// row/column boundaries in pointer space, so N tracks yield N+1 edges. The result is a
|
|
3
|
+
// gap index, not the occupied cell `table-drag-hit-test` returns.
|
|
4
|
+
export function dropGapIndex(pointer, edges) {
|
|
5
|
+
let nearest = 0;
|
|
6
|
+
let nearestDistance = Infinity;
|
|
7
|
+
for (let i = 0; i < edges.length; i++) {
|
|
8
|
+
const distance = Math.abs(pointer - edges[i]);
|
|
9
|
+
// Strict `<` keeps the lower gap when the pointer is exactly equidistant.
|
|
10
|
+
if (distance < nearestDistance) {
|
|
11
|
+
nearest = i;
|
|
12
|
+
nearestDistance = distance;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return nearest;
|
|
16
|
+
}
|