@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,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which side of a construct's unpainted marker run a typed byte belongs to: a run painted at zero
|
|
3
|
+
* width leaves one screen position naming two raw offsets. The kind's `edgeAffinity` policy answers
|
|
4
|
+
* first (a link never extends), the arrival affinity second — and the painter has the last word
|
|
5
|
+
* (live-mode.md § 2), since a seat that reads right can parse wrong.
|
|
6
|
+
*/
|
|
7
|
+
import { constructContentRange, inlineDescendants, parseInline } from '../../../core/inline';
|
|
8
|
+
import { CONTENT_VISIBILITY, renderedText, visibleRuns } from '../../../core/inline/visibility';
|
|
9
|
+
import { getInlineConstructPolicy } from '../../../schema/inline-construct-policy';
|
|
10
|
+
import { insertsExactly } from './screen-diff';
|
|
11
|
+
/**
|
|
12
|
+
* Where `typed` belongs when the caret sits at `caretOffset`, or null when the offset touches no
|
|
13
|
+
* construct marker run, the kind declares no policy, or no candidate earns the write. Declining is
|
|
14
|
+
* the honest fallback: the byte then lands at the caret, which is what the engine writes anyway.
|
|
15
|
+
*/
|
|
16
|
+
export function resolveEdgeSeat(caretOffset, inlines, affinity, raw, screen, typed) {
|
|
17
|
+
const runs = markerRuns(inlines, raw, screen);
|
|
18
|
+
const run = runAt(caretOffset, runs);
|
|
19
|
+
if (!run)
|
|
20
|
+
return null;
|
|
21
|
+
const policy = getInlineConstructPolicy(run.kind);
|
|
22
|
+
if (!policy)
|
|
23
|
+
return null;
|
|
24
|
+
const content = contentBounds(inlines);
|
|
25
|
+
const before = shown(raw, content.start, content.end);
|
|
26
|
+
const holds = (offset) => {
|
|
27
|
+
const candidate = raw.slice(0, offset) + typed + raw.slice(offset);
|
|
28
|
+
const after = shown(candidate, content.start, content.end + typed.length);
|
|
29
|
+
return insertsExactly(before, after, typed);
|
|
30
|
+
};
|
|
31
|
+
for (const offset of candidateOffsets(run, policy.edgeAffinity, affinity, caretOffset, runs)) {
|
|
32
|
+
// The walk's read and Chromium's insertion canonicalize the same way, so a verified
|
|
33
|
+
// `seat === caret` means native typing already lands where the seat wants it.
|
|
34
|
+
if (offset === caretOffset) {
|
|
35
|
+
if (holds(offset))
|
|
36
|
+
return null;
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (holds(offset))
|
|
40
|
+
return { offset, kind: run.kind };
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The bytes a COMPOSITION commit should have written. `insertCompositionText` beforeinput is not
|
|
46
|
+
* cancelable, so the seat cannot intercept the keystroke and relocates the composed run once, on
|
|
47
|
+
* the commit that lands it. Null leaves the read as-is.
|
|
48
|
+
*/
|
|
49
|
+
export function relocateComposedRun(before, after, composedAt, inlines, affinity, screen) {
|
|
50
|
+
const composed = plainInsertionAt(before, after, composedAt);
|
|
51
|
+
if (composed === null)
|
|
52
|
+
return null;
|
|
53
|
+
const seat = resolveEdgeSeat(composedAt, inlines, affinity, before, screen, composed);
|
|
54
|
+
if (!seat)
|
|
55
|
+
return null;
|
|
56
|
+
return {
|
|
57
|
+
raw: before.slice(0, seat.offset) + composed + before.slice(seat.offset),
|
|
58
|
+
caret: seat.offset + composed.length
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/** The text a commit's read added at `at`, or null when the read is not a plain insertion
|
|
62
|
+
* there — a composition over a selection is a range op, and no seat claims a range. */
|
|
63
|
+
export function plainInsertionAt(before, after, at) {
|
|
64
|
+
const length = after.length - before.length;
|
|
65
|
+
if (length <= 0 || at < 0 || at > before.length)
|
|
66
|
+
return null;
|
|
67
|
+
if (after.slice(0, at) !== before.slice(0, at))
|
|
68
|
+
return null;
|
|
69
|
+
if (after.slice(at + length) !== before.slice(at))
|
|
70
|
+
return null;
|
|
71
|
+
return after.slice(at, at + length);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Every raw offset the caret's screen position ADMITS — the seat's whole reach, and empty where no
|
|
75
|
+
* marker run touches the caret. A hidden run's hidden neighbours name the same position, so the
|
|
76
|
+
* stretch of abutting runs is one position and each boundary in it is a seat; an offset inside a
|
|
77
|
+
* run's own bytes is inside some construct's delimiters, which is where no byte belongs. A caret
|
|
78
|
+
* strictly inside a run is one such offset, so the reach can exclude the caret it was asked about.
|
|
79
|
+
*/
|
|
80
|
+
export function seatOffsetsAt(caretOffset, inlines, raw, screen) {
|
|
81
|
+
const runs = markerRuns(inlines, raw, screen);
|
|
82
|
+
const run = runAt(caretOffset, runs);
|
|
83
|
+
if (!run)
|
|
84
|
+
return [];
|
|
85
|
+
const offsets = screenPositionOffsets(run, runs);
|
|
86
|
+
return getInlineConstructPolicy(run.kind)?.edgeAffinity === 'never-extend'
|
|
87
|
+
? offsets.filter((offset) => outsideSpan(run, offset))
|
|
88
|
+
: offsets;
|
|
89
|
+
}
|
|
90
|
+
function offsetForSide(run, side) {
|
|
91
|
+
if (side === 'near')
|
|
92
|
+
return run.start;
|
|
93
|
+
if (side === 'far')
|
|
94
|
+
return run.end;
|
|
95
|
+
return run.leading ? run.start : run.end;
|
|
96
|
+
}
|
|
97
|
+
const otherEnd = (run, side) => offsetForSide(run, side) === run.start ? run.end : run.start;
|
|
98
|
+
/**
|
|
99
|
+
* The offsets to try, best first: the policy's side, then the run's other end — the split
|
|
100
|
+
* rebalancer's space-outside reading in the seat's terms, since a byte the run's inner side kills
|
|
101
|
+
* is one its outer side keeps. Then the byte-literal write, verified like any other candidate: a
|
|
102
|
+
* parse it rebinds is no reason to stop looking. The rest of the screen position ends the list,
|
|
103
|
+
* nearest the policy's side first, for the caret whose own construct has no answer to give.
|
|
104
|
+
*/
|
|
105
|
+
function candidateOffsets(run, edgeAffinity, affinity, caretOffset, runs) {
|
|
106
|
+
// Never-extend resolves like a line extreme: past the construct's delimiters, which is the
|
|
107
|
+
// run's near side at an opener and its far side at a closer. A symmetric pair follows the
|
|
108
|
+
// arrival, defaulting to the near side — the gdocs click default (live-mode.md § 4.2).
|
|
109
|
+
const side = edgeAffinity === 'never-extend' ? 'outside' : (affinity ?? 'near');
|
|
110
|
+
const preferred = offsetForSide(run, side);
|
|
111
|
+
const ranked = [preferred, otherEnd(run, side), caretOffset];
|
|
112
|
+
const rest = screenPositionOffsets(run, runs)
|
|
113
|
+
.filter((offset) => !ranked.includes(offset))
|
|
114
|
+
.sort((a, b) => Math.abs(a - preferred) - Math.abs(b - preferred));
|
|
115
|
+
const offsets = [...new Set([...ranked, ...rest])];
|
|
116
|
+
return edgeAffinity === 'never-extend' ? offsets.filter((o) => outsideSpan(run, o)) : offsets;
|
|
117
|
+
}
|
|
118
|
+
/** Whether `offset` lies outside the run's own construct. A `never-extend` row admits nothing
|
|
119
|
+
* inside: half a URL is not a URL, half an escape is a literal backslash, and a destination the
|
|
120
|
+
* mode never paints is one the painter cannot check. Stated over the SPAN rather than over the
|
|
121
|
+
* run's inner end, since the screen position reaches an interior through a neighbour's run too. */
|
|
122
|
+
const outsideSpan = (run, offset) => offset <= run.span.start || offset >= run.span.end;
|
|
123
|
+
/** The stretch of abutting runs `run` belongs to, as the boundary offsets inside it. */
|
|
124
|
+
function screenPositionOffsets(run, runs) {
|
|
125
|
+
let lo = run.start;
|
|
126
|
+
let hi = run.end;
|
|
127
|
+
for (let grew = true; grew;) {
|
|
128
|
+
grew = false;
|
|
129
|
+
for (const other of runs) {
|
|
130
|
+
if (other.start > hi || other.end < lo)
|
|
131
|
+
continue;
|
|
132
|
+
if (other.start < lo) {
|
|
133
|
+
lo = other.start;
|
|
134
|
+
grew = true;
|
|
135
|
+
}
|
|
136
|
+
if (other.end > hi) {
|
|
137
|
+
hi = other.end;
|
|
138
|
+
grew = true;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
const bounds = new Set([lo, hi]);
|
|
143
|
+
for (const other of runs) {
|
|
144
|
+
if (other.start >= lo && other.start <= hi)
|
|
145
|
+
bounds.add(other.start);
|
|
146
|
+
if (other.end >= lo && other.end <= hi)
|
|
147
|
+
bounds.add(other.end);
|
|
148
|
+
}
|
|
149
|
+
return [...bounds];
|
|
150
|
+
}
|
|
151
|
+
/** The bytes the inline tree covers — the block's content range, read off the tree rather than
|
|
152
|
+
* taken as a second parameter that could disagree with it. */
|
|
153
|
+
function contentBounds(inlines) {
|
|
154
|
+
return { start: inlines[0].start, end: inlines[inlines.length - 1].end };
|
|
155
|
+
}
|
|
156
|
+
/** What a reader sees, asked of the thing that paints it (G4.33). The content reading, not the
|
|
157
|
+
* block's own: this seam only ADDS bytes, so no reading of it licenses dropping one. */
|
|
158
|
+
const shown = (raw, start, end) => renderedText(parseInline(raw, start, end), raw, CONTENT_VISIBILITY);
|
|
159
|
+
/** Every construct marker run, in pre-order. */
|
|
160
|
+
function markerRuns(inlines, raw, screen) {
|
|
161
|
+
const runs = [];
|
|
162
|
+
for (const node of inlineDescendants(inlines)) {
|
|
163
|
+
const content = constructContentRange(node) ?? paintedRange(node, raw, screen);
|
|
164
|
+
if (!content)
|
|
165
|
+
continue;
|
|
166
|
+
const span = { start: node.start, end: node.end };
|
|
167
|
+
if (node.start < content.start) {
|
|
168
|
+
runs.push({ start: node.start, end: content.start, leading: true, kind: node.kind, span });
|
|
169
|
+
}
|
|
170
|
+
if (content.end < node.end) {
|
|
171
|
+
runs.push({ start: content.end, end: node.end, leading: false, kind: node.kind, span });
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return runs;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* The run `offset` sits in, its own boundaries included — the LAST in pre-order, so the innermost
|
|
178
|
+
* construct at a shared boundary wins. INSIDE counts, not just the two ends: a doubled code fence
|
|
179
|
+
* is a run a caret can be handed the middle of.
|
|
180
|
+
*/
|
|
181
|
+
const runAt = (offset, runs) => runs.reduce((found, run) => (offset >= run.start && offset <= run.end ? run : found), null);
|
|
182
|
+
/**
|
|
183
|
+
* What a CHILDLESS construct paints, as a range in the block's own bytes: the outer bounds of its
|
|
184
|
+
* visible runs, which such a construct has one contiguous stretch of — the precondition the two
|
|
185
|
+
* marker runs below are carved out of, held by `test/core/inline/painted-contiguity.property`.
|
|
186
|
+
* Asked of the render path rather than derived per kind, since which bytes a construct shows only
|
|
187
|
+
* the painter answers (G4.33), and in the block's OWN reading: where its chrome paints, the whole
|
|
188
|
+
* construct is on screen, no run is hidden, and the seat has nothing to relocate.
|
|
189
|
+
*/
|
|
190
|
+
function paintedRange(node, raw, screen) {
|
|
191
|
+
if (node.kind === 'text')
|
|
192
|
+
return null;
|
|
193
|
+
const painted = visibleRuns([node], raw, screen).filter((run) => run.visible && run.text !== '');
|
|
194
|
+
if (painted.length === 0)
|
|
195
|
+
return null;
|
|
196
|
+
return { start: painted[0].start, end: painted[painted.length - 1].end };
|
|
197
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a block keeps structure PAST its content that the surface paints nothing for — today the
|
|
3
|
+
* setext underline. A merge past it concatenates it into view (`Title\n===` + `next` reparses to a
|
|
4
|
+
* paragraph showing `===next`), so the keydown dispatch consumes the press and the command arm
|
|
5
|
+
* declines it — one home, since the two ask from different coordinate sources (live-mode.md § 4.5).
|
|
6
|
+
*/
|
|
7
|
+
import type { NodeView } from '../../../core/node-views';
|
|
8
|
+
/** `displayLength` is the caller's, not this module's: the component reads the DOM while a widget
|
|
9
|
+
* reveal is open, where `node.raw` is stale by construction. */
|
|
10
|
+
export declare function hidesStructuralSuffix(el: HTMLElement | null, node: NodeView, displayLength: number): boolean;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a block keeps structure PAST its content that the surface paints nothing for — today the
|
|
3
|
+
* setext underline. A merge past it concatenates it into view (`Title\n===` + `next` reparses to a
|
|
4
|
+
* paragraph showing `===next`), so the keydown dispatch consumes the press and the command arm
|
|
5
|
+
* declines it — one home, since the two ask from different coordinate sources (live-mode.md § 4.5).
|
|
6
|
+
*/
|
|
7
|
+
import { getContentRange } from '../../../core/inline';
|
|
8
|
+
import { revealsNoMarkers } from '../../../cursor/widget-offset';
|
|
9
|
+
/** `displayLength` is the caller's, not this module's: the component reads the DOM while a widget
|
|
10
|
+
* reveal is open, where `node.raw` is stale by construction. */
|
|
11
|
+
export function hidesStructuralSuffix(el, node, displayLength) {
|
|
12
|
+
if (!el || !revealsNoMarkers(el))
|
|
13
|
+
return false;
|
|
14
|
+
return getContentRange(node).end < displayLength;
|
|
15
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which link construct a pointer landed in, and how to find that construct again after an edit
|
|
3
|
+
* rebuilt the tree. The offset comes from the shared DOM↔raw walk and the construct from the
|
|
4
|
+
* reveal chain, so the card addresses exactly what the render path drew.
|
|
5
|
+
*/
|
|
6
|
+
import type { InlineNode } from '../../../core/nodes';
|
|
7
|
+
import type { NodeView } from '../../../core/node-views';
|
|
8
|
+
import type { LinkReferenceResolverRef } from '../../../editor-keys';
|
|
9
|
+
/** Both DOM shapes a bracketed link takes: `a` for an allowed scheme, `span.md-link-blocked` for a
|
|
10
|
+
* rejected one — and a blocked link is precisely the one a user opens the card to fix. */
|
|
11
|
+
export declare const LINK_ELEMENT_SELECTOR = ".md-link-content";
|
|
12
|
+
/** Path plus construct start, never a node reference: every commit rebuilds the inline tree and the
|
|
13
|
+
* DOM under it, so an open card re-resolves from this identity after each edit. */
|
|
14
|
+
export interface LinkTarget {
|
|
15
|
+
path: number[];
|
|
16
|
+
sourceStart: number;
|
|
17
|
+
}
|
|
18
|
+
export interface LinkPointResolution {
|
|
19
|
+
target: LinkTarget;
|
|
20
|
+
link: InlineNode;
|
|
21
|
+
}
|
|
22
|
+
export interface LinkPointQuery {
|
|
23
|
+
/** The block's content element — the walk container the raw offset is measured in. */
|
|
24
|
+
contentEl: HTMLElement;
|
|
25
|
+
block: NodeView;
|
|
26
|
+
path: number[];
|
|
27
|
+
linkRef?: LinkReferenceResolverRef;
|
|
28
|
+
}
|
|
29
|
+
/** The link the caret sits inside, read after the pointer has seated it. */
|
|
30
|
+
export declare function resolveLinkAtPoint(query: LinkPointQuery): LinkPointResolution | null;
|
|
31
|
+
/** The construct an open card is anchored to, re-read from the live tree; null once an edit moved
|
|
32
|
+
* or removed it. */
|
|
33
|
+
export declare function linkConstructAt(block: NodeView, sourceStart: number, linkRef?: LinkReferenceResolverRef): InlineNode | null;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which link construct a pointer landed in, and how to find that construct again after an edit
|
|
3
|
+
* rebuilt the tree. The offset comes from the shared DOM↔raw walk and the construct from the
|
|
4
|
+
* reveal chain, so the card addresses exactly what the render path drew.
|
|
5
|
+
*/
|
|
6
|
+
import { ambientLengthOf } from '../../../ambient/ambient-dom';
|
|
7
|
+
import { inlineDescendants } from '../../../core/inline';
|
|
8
|
+
import { resolvedInlineContent } from '../../../core/inline/inline-cache';
|
|
9
|
+
import { toClampedRawOffset } from '../../../cursor/coordinate-spaces';
|
|
10
|
+
import { domTextOffsetAtNode } from '../../../cursor/widget-offset';
|
|
11
|
+
import { isCardEditableInlineKind } from '../../../schema/inline-construct-policy';
|
|
12
|
+
import { constructChainAtOffset } from './construct-reveal';
|
|
13
|
+
/** Both DOM shapes a bracketed link takes: `a` for an allowed scheme, `span.md-link-blocked` for a
|
|
14
|
+
* rejected one — and a blocked link is precisely the one a user opens the card to fix. */
|
|
15
|
+
export const LINK_ELEMENT_SELECTOR = '.md-link-content';
|
|
16
|
+
/** The link the caret sits inside, read after the pointer has seated it. */
|
|
17
|
+
export function resolveLinkAtPoint(query) {
|
|
18
|
+
const offset = caretRawOffset(query.contentEl);
|
|
19
|
+
if (offset === null)
|
|
20
|
+
return null;
|
|
21
|
+
const inlines = resolvedInlineContent(query.block, query.linkRef);
|
|
22
|
+
// Outermost-first, so the last card-editable construct in the chain is the one whose bytes
|
|
23
|
+
// enclose the pointer most tightly. The chain itself is the reveal's, which admits only
|
|
24
|
+
// revealable kinds, so an autolink never reaches this filter either way.
|
|
25
|
+
const link = constructChainAtOffset(inlines, offset).filter(isCardEditable).at(-1);
|
|
26
|
+
if (link === undefined)
|
|
27
|
+
return null;
|
|
28
|
+
return { target: { path: query.path, sourceStart: link.start }, link };
|
|
29
|
+
}
|
|
30
|
+
const isCardEditable = (node) => isCardEditableInlineKind(node.kind);
|
|
31
|
+
/** The construct an open card is anchored to, re-read from the live tree; null once an edit moved
|
|
32
|
+
* or removed it. */
|
|
33
|
+
export function linkConstructAt(block, sourceStart, linkRef) {
|
|
34
|
+
for (const node of inlineDescendants(resolvedInlineContent(block, linkRef))) {
|
|
35
|
+
if (isCardEditable(node) && node.start === sourceStart)
|
|
36
|
+
return node;
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
function caretRawOffset(contentEl) {
|
|
41
|
+
const sel = window.getSelection();
|
|
42
|
+
if (!sel || sel.rangeCount === 0 || !sel.focusNode)
|
|
43
|
+
return null;
|
|
44
|
+
if (!contentEl.contains(sel.focusNode))
|
|
45
|
+
return null;
|
|
46
|
+
return toClampedRawOffset(domTextOffsetAtNode(contentEl, sel.focusNode, sel.focusOffset), ambientLengthOf(contentEl));
|
|
47
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a link edit becomes bytes: the seam every link write path calls (G4.34), and under it the
|
|
3
|
+
* GFM branch. A candidate is written only once the RENDER PATH says the reader sees exactly what
|
|
4
|
+
* they saw before — a destination that breaks its own construct surfaces as literal source, which
|
|
5
|
+
* a private walk over the parse cannot see.
|
|
6
|
+
*/
|
|
7
|
+
import type { LinkReferenceResolver } from '../../../core/inline/link-reference-resolver';
|
|
8
|
+
import type { InlineNode } from '../../../core/nodes';
|
|
9
|
+
export interface LinkFields {
|
|
10
|
+
/** RAW inner bytes of the link text. Never re-escaped: the text holds whole nested constructs,
|
|
11
|
+
* and re-emitting them from the parse would rewrite bytes the user never touched. */
|
|
12
|
+
text: string;
|
|
13
|
+
url: string;
|
|
14
|
+
title?: string;
|
|
15
|
+
/** Reference forms only: the raw tail after the text's `]` (`[ref]`, `[]`, or empty for the
|
|
16
|
+
* shortcut form). Present preserves the reference; absent inlines the destination. */
|
|
17
|
+
reference?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Bytes to splice over `link`'s range, or `null` when the edit must be declined. **Every link
|
|
21
|
+
* write path goes through here** (G4.34): a node an inline rung claimed carries no `rewriteLink`
|
|
22
|
+
* hook, so emitting built-in grammar over its bytes would destroy the author's syntax.
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildLinkEditBytes(link: InlineNode, display: string, fields: LinkFields, resolver?: LinkReferenceResolver): string | null;
|
|
25
|
+
/** Bytes that unwrap `link` to the text the reader already sees — remove-link. An autolink has no
|
|
26
|
+
* brackets to drop, so its removal is the same escape rewrite a re-linking text needs. */
|
|
27
|
+
export declare function buildLinkUnwrapBytes(link: InlineNode, display: string, resolver?: LinkReferenceResolver): string | null;
|
|
28
|
+
/** Bytes that mint `[text](url)` over `[start, end)` — the card's create half. Declines an empty
|
|
29
|
+
* destination, a range crossing another construct's bytes, and any candidate the render check
|
|
30
|
+
* refuses (a neighbouring `!` would turn the wrap into an image). */
|
|
31
|
+
export declare function buildLinkWrapBytes(display: string, start: number, end: number, url: string, resolver?: LinkReferenceResolver): string | null;
|
|
32
|
+
/** True when `[start, end)` holds only bytes safe to become link text. Wrapping inside or across
|
|
33
|
+
* another construct is a policy question create does not answer — it declines. */
|
|
34
|
+
export declare function canWrapRangeAsLink(display: string, start: number, end: number, resolver?: LinkReferenceResolver): boolean;
|
|
35
|
+
/** The fields the card edits, read off the source bytes: `url`/`title` are decoded on the node,
|
|
36
|
+
* but the text and the reference tail must survive as the author wrote them. */
|
|
37
|
+
export declare function linkFieldsFromInline(link: InlineNode, display: string): LinkFields;
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a link edit becomes bytes: the seam every link write path calls (G4.34), and under it the
|
|
3
|
+
* GFM branch. A candidate is written only once the RENDER PATH says the reader sees exactly what
|
|
4
|
+
* they saw before — a destination that breaks its own construct surfaces as literal source, which
|
|
5
|
+
* a private walk over the parse cannot see.
|
|
6
|
+
*/
|
|
7
|
+
import { inlineDescendants, parseInline } from '../../../core/inline';
|
|
8
|
+
import { encodeDestination, escapeTitle } from '../../../core/inline/destination-bytes';
|
|
9
|
+
import { CONTENT_VISIBILITY, renderedText } from '../../../core/inline/visibility';
|
|
10
|
+
import { devWarn } from '../../../dev-warn';
|
|
11
|
+
/**
|
|
12
|
+
* Bytes to splice over `link`'s range, or `null` when the edit must be declined. **Every link
|
|
13
|
+
* write path goes through here** (G4.34): a node an inline rung claimed carries no `rewriteLink`
|
|
14
|
+
* hook, so emitting built-in grammar over its bytes would destroy the author's syntax.
|
|
15
|
+
*/
|
|
16
|
+
export function buildLinkEditBytes(link, display, fields, resolver) {
|
|
17
|
+
if (declineClaimed(link, 'edit'))
|
|
18
|
+
return null;
|
|
19
|
+
return verified(buildLinkSourceBytes(fields), link.start, link.end, display, resolver);
|
|
20
|
+
}
|
|
21
|
+
/** Bytes that unwrap `link` to the text the reader already sees — remove-link. An autolink has no
|
|
22
|
+
* brackets to drop, so its removal is the same escape rewrite a re-linking text needs. */
|
|
23
|
+
export function buildLinkUnwrapBytes(link, display, resolver) {
|
|
24
|
+
if (declineClaimed(link, 'remove'))
|
|
25
|
+
return null;
|
|
26
|
+
const [textStart, textEnd] = textRange(link, display);
|
|
27
|
+
const plain = display.slice(textStart, textEnd);
|
|
28
|
+
return verified(escapeRelinkingText(plain, link, display, resolver), link.start, link.end, display, resolver);
|
|
29
|
+
}
|
|
30
|
+
/** Bytes that mint `[text](url)` over `[start, end)` — the card's create half. Declines an empty
|
|
31
|
+
* destination, a range crossing another construct's bytes, and any candidate the render check
|
|
32
|
+
* refuses (a neighbouring `!` would turn the wrap into an image). */
|
|
33
|
+
export function buildLinkWrapBytes(display, start, end, url, resolver) {
|
|
34
|
+
if (url.trim() === '' || !canWrapRangeAsLink(display, start, end, resolver))
|
|
35
|
+
return null;
|
|
36
|
+
// A bare bracket would close the construct early; an existing `\x` pair passes through whole.
|
|
37
|
+
const text = display
|
|
38
|
+
.slice(start, end)
|
|
39
|
+
.replace(/\\[\s\S]|[[\]]/g, (m) => (m.length === 2 ? m : '\\' + m));
|
|
40
|
+
return verified(`[${text}](${encodeDestination(url)})`, start, end, display, resolver);
|
|
41
|
+
}
|
|
42
|
+
const WRAP_SAFE_KINDS = new Set(['text', 'escape', 'entityReference']);
|
|
43
|
+
/** True when `[start, end)` holds only bytes safe to become link text. Wrapping inside or across
|
|
44
|
+
* another construct is a policy question create does not answer — it declines. */
|
|
45
|
+
export function canWrapRangeAsLink(display, start, end, resolver) {
|
|
46
|
+
if (start >= end || end > display.length)
|
|
47
|
+
return false;
|
|
48
|
+
return flattenInline(parseInline(display, 0, display.length, resolver)).every((n) => WRAP_SAFE_KINDS.has(n.kind) || n.end <= start || n.start >= end);
|
|
49
|
+
}
|
|
50
|
+
/** The fields the card edits, read off the source bytes: `url`/`title` are decoded on the node,
|
|
51
|
+
* but the text and the reference tail must survive as the author wrote them. */
|
|
52
|
+
export function linkFieldsFromInline(link, display) {
|
|
53
|
+
const [textStart, textEnd] = textRange(link, display);
|
|
54
|
+
return {
|
|
55
|
+
text: display.slice(textStart, textEnd),
|
|
56
|
+
url: link.url ?? '',
|
|
57
|
+
...(link.title !== undefined ? { title: link.title } : {}),
|
|
58
|
+
...(link.label !== undefined ? { reference: display.slice(textEnd + 1, link.end) } : {})
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// ── The GFM serializer ──────────────────────────────────────────────────────
|
|
62
|
+
/** The built-in grammar's inverse. Reach it through the seam above, the only caller entitled to
|
|
63
|
+
* decide these bytes are GFM's to write. */
|
|
64
|
+
function buildLinkSourceBytes(fields) {
|
|
65
|
+
if (fields.reference !== undefined)
|
|
66
|
+
return `[${fields.text}]${fields.reference}`;
|
|
67
|
+
const title = fields.title !== undefined ? ` "${escapeTitle(fields.title)}"` : '';
|
|
68
|
+
return `[${fields.text}](${encodeDestination(fields.url)}${title})`;
|
|
69
|
+
}
|
|
70
|
+
// ── Verification ────────────────────────────────────────────────────────────
|
|
71
|
+
function declineClaimed(link, what) {
|
|
72
|
+
const claim = link.syntaxClaim;
|
|
73
|
+
if (!claim)
|
|
74
|
+
return false;
|
|
75
|
+
devWarn('link-edit', `${what} declined: the "${claim.prefix}" inline rung owns these bytes and registered no link rewriter`);
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
/** What a reader SEES for `raw`, asked of the thing that paints it. The content reading, not the
|
|
79
|
+
* block's own: the card edits a destination the chrome may be painting, and a diff against the
|
|
80
|
+
* screen would refuse every such edit as a visible change. The write splices bytes for bytes and
|
|
81
|
+
* drops none, so no reading of it licenses losing one the reader saw. */
|
|
82
|
+
function visibleText(raw, resolver) {
|
|
83
|
+
return renderedText(parseInline(raw, 0, raw.length, resolver), raw, CONTENT_VISIBILITY);
|
|
84
|
+
}
|
|
85
|
+
/** A candidate is bytes only if splicing it over `[start, end)` leaves the reader's text
|
|
86
|
+
* untouched — the write moves bytes nobody saw, so any visible change is the construct broken. */
|
|
87
|
+
function verified(candidate, start, end, display, resolver) {
|
|
88
|
+
if (candidate === null)
|
|
89
|
+
return null;
|
|
90
|
+
const before = visibleText(display, resolver);
|
|
91
|
+
const after = visibleText(spliced(candidate, start, end, display), resolver);
|
|
92
|
+
return before === after ? candidate : null;
|
|
93
|
+
}
|
|
94
|
+
function spliced(candidate, start, end, display) {
|
|
95
|
+
return display.slice(0, start) + candidate + display.slice(end);
|
|
96
|
+
}
|
|
97
|
+
// ── Text ranges and the re-link escape ──────────────────────────────────────
|
|
98
|
+
/** The bytes between a construct's opener and its hidden tail: `[…]` for a link, the angle
|
|
99
|
+
* brackets for an autolink, the whole node for the bare forms. */
|
|
100
|
+
function textRange(link, display) {
|
|
101
|
+
if (link.kind === 'autolink') {
|
|
102
|
+
const angle = display[link.start] === '<' && display[link.end - 1] === '>';
|
|
103
|
+
return angle ? [link.start + 1, link.end - 1] : [link.start, link.end];
|
|
104
|
+
}
|
|
105
|
+
const children = link.children ?? [];
|
|
106
|
+
if (children.length === 0) {
|
|
107
|
+
const close = display.indexOf(']', link.start);
|
|
108
|
+
return [link.start + 1, close === -1 ? link.end : close];
|
|
109
|
+
}
|
|
110
|
+
return [children[0].start, children[children.length - 1].end];
|
|
111
|
+
}
|
|
112
|
+
const TRIGGER_ESCAPE = [
|
|
113
|
+
[/^https?:/i, ':'],
|
|
114
|
+
[/^www\./i, '.'],
|
|
115
|
+
[/^[^@]*@/, '@']
|
|
116
|
+
];
|
|
117
|
+
/**
|
|
118
|
+
* Unwrapping `[www.x.com](u)` hands the bare-autolink pass a match it did not have before, and the
|
|
119
|
+
* link the user removed comes straight back. Escaping the byte that triggers the match kills it
|
|
120
|
+
* without changing one character the reader sees.
|
|
121
|
+
*/
|
|
122
|
+
function escapeRelinkingText(text, link, display, resolver) {
|
|
123
|
+
let candidate = text;
|
|
124
|
+
// One pass per surviving autolink; the text is finite and each pass kills one match.
|
|
125
|
+
for (let guard = 0; guard <= text.length; guard++) {
|
|
126
|
+
const offender = relinkedRange(candidate, link, display, resolver);
|
|
127
|
+
if (offender === null)
|
|
128
|
+
return candidate;
|
|
129
|
+
const escaped = escapeTrigger(candidate, offender);
|
|
130
|
+
if (escaped === null)
|
|
131
|
+
return null;
|
|
132
|
+
candidate = escaped;
|
|
133
|
+
}
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
/** The candidate-relative range of the first link the splice re-created, or null when clean. */
|
|
137
|
+
function relinkedRange(candidate, link, display, resolver) {
|
|
138
|
+
const raw = spliced(candidate, link.start, link.end, display);
|
|
139
|
+
const end = link.start + candidate.length;
|
|
140
|
+
const found = flattenInline(parseInline(raw, 0, raw.length, resolver)).find((n) => (n.kind === 'link' || n.kind === 'autolink') && n.start < end && n.end > link.start);
|
|
141
|
+
if (!found)
|
|
142
|
+
return null;
|
|
143
|
+
// An offender reaching outside the spliced range is the surrounding text linking with it,
|
|
144
|
+
// which no escape inside the candidate can decide.
|
|
145
|
+
if (found.start < link.start || found.end > end)
|
|
146
|
+
return null;
|
|
147
|
+
return [found.start - link.start, found.end - link.start];
|
|
148
|
+
}
|
|
149
|
+
function escapeTrigger(candidate, [start, end]) {
|
|
150
|
+
const match = candidate.slice(start, end);
|
|
151
|
+
for (const [form, byte] of TRIGGER_ESCAPE) {
|
|
152
|
+
if (!form.test(match))
|
|
153
|
+
continue;
|
|
154
|
+
const at = match.indexOf(byte);
|
|
155
|
+
if (at === -1)
|
|
156
|
+
return null;
|
|
157
|
+
return candidate.slice(0, start + at) + '\\' + candidate.slice(start + at);
|
|
158
|
+
}
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
const flattenInline = (nodes) => [...inlineDescendants(nodes)];
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The live-mode join rewrite (live-mode.md § 4.5): a literal concatenation surfaces the runs a
|
|
3
|
+
* truncation left unpaired and the closer/opener pair a split's inverse abuts around nothing. Both
|
|
4
|
+
* are dropped here and nowhere else, and only once the joined block re-parses to ONE prose block
|
|
5
|
+
* showing what the two sides showed.
|
|
6
|
+
*/
|
|
7
|
+
import type { InlineNode } from '../../../core/nodes';
|
|
8
|
+
import { type LiveJoinSeamCleaner } from '../../../schema/inline-construct-policy';
|
|
9
|
+
export declare const cleanLiveJoinSeam: LiveJoinSeamCleaner;
|
|
10
|
+
/**
|
|
11
|
+
* The `keep` side of `level`, rebuilt: a construct the cut crosses hands its place to its own
|
|
12
|
+
* clipped children. Exported for the depth pin, which has to reach the rebuild with a tree no
|
|
13
|
+
* side this deep could be rendered at.
|
|
14
|
+
*/
|
|
15
|
+
export declare function clipNodes(level: readonly InlineNode[], cut: number, keep: 'before' | 'after'): InlineNode[];
|