@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,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a marker-hiding mode leaves on screen. `inline-render.ts` decides which bytes become which
|
|
3
|
+
* span; this decides which of those spans the reader sees, and it is the one home for that rule:
|
|
4
|
+
* the DOM walk (`cursor/widget-offset.ts`) is its other consumer, in the space that has a caret.
|
|
5
|
+
* The two answers are held together by `test/invariants/screen-truth.property.test.ts`, not by
|
|
6
|
+
* convention. Context vocabulary: `docs/design/live-mode.md` § 2.
|
|
7
|
+
*/
|
|
8
|
+
import { renderInlineNodes } from '../inline-render';
|
|
9
|
+
import { widgetSourceRange } from './inline-widgets';
|
|
10
|
+
import {} from '../../presentation-mode';
|
|
11
|
+
const FAMILY_CLASS = {
|
|
12
|
+
marker: 'md-marker',
|
|
13
|
+
'fence-line': 'md-fence-line',
|
|
14
|
+
'ref-label': 'md-ref-label'
|
|
15
|
+
};
|
|
16
|
+
/** Every family at once, for a caller reading spans back out of a rendered fragment. */
|
|
17
|
+
export const MARKER_FAMILY_SELECTOR = Object.values(FAMILY_CLASS)
|
|
18
|
+
.map((cls) => `.${cls}`)
|
|
19
|
+
.join(', ');
|
|
20
|
+
/**
|
|
21
|
+
* The family `el` belongs to, or null for anything else. A `contenteditable="false"` marker is
|
|
22
|
+
* the ambient prefix island, which keeps its box in every mode (`ambient/ambient-cursor.ts`), so
|
|
23
|
+
* it belongs to no family.
|
|
24
|
+
*/
|
|
25
|
+
export function markerFamilyOf(el) {
|
|
26
|
+
const classes = el.classList;
|
|
27
|
+
if (classes.contains(FAMILY_CLASS.marker)) {
|
|
28
|
+
return el.getAttribute('contenteditable') === 'false' ? null : 'marker';
|
|
29
|
+
}
|
|
30
|
+
if (classes.contains(FAMILY_CLASS['fence-line']))
|
|
31
|
+
return 'fence-line';
|
|
32
|
+
if (classes.contains(FAMILY_CLASS['ref-label']))
|
|
33
|
+
return 'ref-label';
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
/** Whether the content-empty override paints `family` (`styles/editor.css`, same scoping). A
|
|
37
|
+
* reference label is resolution metadata rather than chrome a caret types against, so it stays
|
|
38
|
+
* hidden, and a container holding only labels has no paint to promise. */
|
|
39
|
+
export function familyPaintsAlone(family) {
|
|
40
|
+
return family !== 'ref-label';
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* What the reader sees on a container painting under `mode`. `chromePaints` is that container's
|
|
44
|
+
* own stamp condition (live-mode.md § 4.1), which reading declines: it takes no keystrokes, so a
|
|
45
|
+
* construct with nothing behind its chrome may paint nothing there. The preview rungs' per-span
|
|
46
|
+
* reveal is DOM state and stays with the walk; this answers for an unrevealed container.
|
|
47
|
+
*/
|
|
48
|
+
export function screenVisibility(mode, container) {
|
|
49
|
+
switch (mode) {
|
|
50
|
+
case 'source':
|
|
51
|
+
return { hidesMarkers: false, chromePaints: false };
|
|
52
|
+
case 'reading':
|
|
53
|
+
return { hidesMarkers: true, chromePaints: false };
|
|
54
|
+
case 'live':
|
|
55
|
+
case 'preview-block':
|
|
56
|
+
case 'preview-inline':
|
|
57
|
+
return { hidesMarkers: true, chromePaints: container.chromePaints };
|
|
58
|
+
default: {
|
|
59
|
+
const unhandled = mode;
|
|
60
|
+
return unhandled;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The content behind every marker family, whatever the container paints: the reading a rewrite's
|
|
66
|
+
* before/after conservation diff needs, since chrome folds the moment content arrives and a diff
|
|
67
|
+
* against the screen would read that fold as bytes lost. Sound only past a
|
|
68
|
+
* {@link paintsOnlyChrome} gate — over chrome the reader IS looking at, this reading calls those
|
|
69
|
+
* bytes unseen and licenses dropping them.
|
|
70
|
+
*/
|
|
71
|
+
export const CONTENT_VISIBILITY = { hidesMarkers: true, chromePaints: false };
|
|
72
|
+
/** A container whose chrome stands over no content: every family the override paints does. */
|
|
73
|
+
const CHROME_STANDS_ALONE = { hidesMarkers: true, chromePaints: true };
|
|
74
|
+
/** Whether a `family` span paints NOTHING under `ctx` — the one hiding rule, before any preview
|
|
75
|
+
* reveal. */
|
|
76
|
+
export function familyHidesText(family, ctx) {
|
|
77
|
+
return ctx.hidesMarkers && !(ctx.chromePaints && familyPaintsAlone(family));
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* `nodes` as runs of raw bytes, each carrying what it paints under `ctx`. Read off the rendered
|
|
81
|
+
* DOM rather than derived per kind, because which bytes a construct shows only the painter
|
|
82
|
+
* answers (G4.33): a caller re-deriving that drifts from what paints, which is the only thing the
|
|
83
|
+
* answer is worth anything as. Top-level nodes render one at a time, so a CLIPPED list (a join
|
|
84
|
+
* seam's surviving side) keeps honest offsets instead of a running count that assumes contiguity.
|
|
85
|
+
*/
|
|
86
|
+
export function visibleRuns(nodes, raw, ctx, opts = {}) {
|
|
87
|
+
const runs = [];
|
|
88
|
+
for (const node of nodes) {
|
|
89
|
+
collectRuns(renderInlineNodes([node], raw, opts), node.start, ctx, runs);
|
|
90
|
+
}
|
|
91
|
+
return runs;
|
|
92
|
+
}
|
|
93
|
+
/** The text a reader SEES for `nodes` — every run `ctx` leaves on screen, in source order. */
|
|
94
|
+
export function renderedText(nodes, raw, ctx, opts = {}) {
|
|
95
|
+
let out = '';
|
|
96
|
+
for (const run of visibleRuns(nodes, raw, ctx, opts))
|
|
97
|
+
if (run.visible)
|
|
98
|
+
out += run.text;
|
|
99
|
+
return out;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Whether `nodes` are chrome standing over nothing, and therefore ALL on screen (live-mode.md
|
|
103
|
+
* § 4.1). The inline half of the content-empty stamp, for a seam with no DOM to read the stamp
|
|
104
|
+
* off: a license over bytes the reader never saw has nothing to claim here. A block's OWN chrome
|
|
105
|
+
* (a `## ` prefix, a fence line) sits outside the inline content range, so an empty one answers
|
|
106
|
+
* false and the surfaces that own it are unaffected.
|
|
107
|
+
*/
|
|
108
|
+
export function paintsOnlyChrome(nodes, raw, opts = {}) {
|
|
109
|
+
return (renderedText(nodes, raw, CONTENT_VISIBILITY, opts) === '' &&
|
|
110
|
+
renderedText(nodes, raw, CHROME_STANDS_ALONE, opts) !== '');
|
|
111
|
+
}
|
|
112
|
+
function collectRuns(fragment, start, ctx, out) {
|
|
113
|
+
let at = start;
|
|
114
|
+
const stack = [];
|
|
115
|
+
// Reversed push, so pop order is source order — which `at` advances along.
|
|
116
|
+
const pushChildren = (parent, hidden) => {
|
|
117
|
+
const children = parent.childNodes;
|
|
118
|
+
for (let i = children.length - 1; i >= 0; i--)
|
|
119
|
+
stack.push({ dom: children[i], hidden });
|
|
120
|
+
};
|
|
121
|
+
pushChildren(fragment, false);
|
|
122
|
+
while (stack.length > 0) {
|
|
123
|
+
const { dom, hidden } = stack.pop();
|
|
124
|
+
if (dom.nodeType === Node.TEXT_NODE) {
|
|
125
|
+
const text = dom.textContent ?? '';
|
|
126
|
+
out.push({ start: at, end: at + text.length, text, visible: !hidden });
|
|
127
|
+
at += text.length;
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
if (dom.nodeType !== Node.ELEMENT_NODE)
|
|
131
|
+
continue;
|
|
132
|
+
const el = dom;
|
|
133
|
+
// Only an atomic widget's shell carries a source range here, and it is the one element
|
|
134
|
+
// whose text is not its bytes — so the range is both the test and the re-sync.
|
|
135
|
+
const source = widgetSourceRange(el);
|
|
136
|
+
if (source !== null) {
|
|
137
|
+
out.push({ ...source, text: el.textContent ?? '', visible: !hidden });
|
|
138
|
+
at = source.end;
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
const family = markerFamilyOf(el);
|
|
142
|
+
pushChildren(el, hidden || (family !== null && familyHidesText(family, ctx)));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one iterative pre-order over an inline tree. Nesting depth is input-controlled (a `**` run
|
|
3
|
+
* nests one construct per pair), so a per-level call frame overflows the stack and strands the
|
|
4
|
+
* block in the unhealable failed-block fallback. Dependency-free, so the scan reaches it without
|
|
5
|
+
* closing a cycle through the inline entry point.
|
|
6
|
+
*/
|
|
7
|
+
import type { InlineNode } from '../nodes';
|
|
8
|
+
/**
|
|
9
|
+
* Each node, then its children, in source order. `descend` declines a node's children — the node
|
|
10
|
+
* itself is still yielded, and is asked only when it has any. Yields nodes only: what a reader
|
|
11
|
+
* SEES stays the render path's question (G4.33). Each child list is snapshotted onto the stack
|
|
12
|
+
* when its parent pops, so a consumer that rewrites `children` must finish the walk first.
|
|
13
|
+
*/
|
|
14
|
+
export declare function inlineDescendants(nodes: readonly InlineNode[], descend?: (node: InlineNode) => boolean): Generator<InlineNode>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one iterative pre-order over an inline tree. Nesting depth is input-controlled (a `**` run
|
|
3
|
+
* nests one construct per pair), so a per-level call frame overflows the stack and strands the
|
|
4
|
+
* block in the unhealable failed-block fallback. Dependency-free, so the scan reaches it without
|
|
5
|
+
* closing a cycle through the inline entry point.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Each node, then its children, in source order. `descend` declines a node's children — the node
|
|
9
|
+
* itself is still yielded, and is asked only when it has any. Yields nodes only: what a reader
|
|
10
|
+
* SEES stays the render path's question (G4.33). Each child list is snapshotted onto the stack
|
|
11
|
+
* when its parent pops, so a consumer that rewrites `children` must finish the walk first.
|
|
12
|
+
*/
|
|
13
|
+
export function* inlineDescendants(nodes, descend) {
|
|
14
|
+
// Reversed push, so pop order is source order.
|
|
15
|
+
const stack = [];
|
|
16
|
+
for (let i = nodes.length - 1; i >= 0; i--)
|
|
17
|
+
stack.push(nodes[i]);
|
|
18
|
+
while (stack.length > 0) {
|
|
19
|
+
const node = stack.pop();
|
|
20
|
+
yield node;
|
|
21
|
+
const children = node.children;
|
|
22
|
+
if (!children || children.length === 0)
|
|
23
|
+
continue;
|
|
24
|
+
if (descend && !descend(node))
|
|
25
|
+
continue;
|
|
26
|
+
for (let i = children.length - 1; i >= 0; i--)
|
|
27
|
+
stack.push(children[i]);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOM renderer for InlineNode trees. Over a widget-free range the fragment's textContent equals
|
|
3
|
+
* raw.slice. Atomic widgets break that by design, contributing their own text or none and
|
|
4
|
+
* carrying source bytes on `data-source-*`, so a raw offset is recovered only through the shared
|
|
5
|
+
* walk (cursor/widget-offset.ts), never by counting textContent. Stated both ways by G2.4.
|
|
6
|
+
*
|
|
7
|
+
* Which of the spans minted here a mode leaves on screen is `inline/visibility.ts`.
|
|
8
|
+
*/
|
|
9
|
+
import type { InlineNode } from './nodes';
|
|
10
|
+
export type ImageLoadPolicy = 'auto' | 'placeholder';
|
|
11
|
+
export interface RenderInlineOptions {
|
|
12
|
+
renderImagesAsWidgets?: boolean;
|
|
13
|
+
resolveImageUrl?: (rawUrl: string) => string;
|
|
14
|
+
/** Render-time href rewrite for links/autolinks (default identity). */
|
|
15
|
+
resolveLinkUrl?: (rawUrl: string) => string;
|
|
16
|
+
/** Whether remote images auto-load (default) or defer to a placeholder. */
|
|
17
|
+
imageLoadPolicy?: ImageLoadPolicy;
|
|
18
|
+
/** Injected by the component layer so `core/` owns no image specifics; absent renders alt-only. */
|
|
19
|
+
buildImageWidget?: (node: InlineNode, raw: string, opts: {
|
|
20
|
+
resolveImageUrl: (rawUrl: string) => string;
|
|
21
|
+
imageLoadPolicy: ImageLoadPolicy;
|
|
22
|
+
}) => Node;
|
|
23
|
+
/**
|
|
24
|
+
* Mounts a `component`-kind widget in the atomic-island wrapper. Injected for the same reason
|
|
25
|
+
* as `buildImageWidget`; absent or null falls the widget back to its raw source.
|
|
26
|
+
*/
|
|
27
|
+
buildPortalWidget?: (node: InlineNode, raw: string) => HTMLElement | null;
|
|
28
|
+
/**
|
|
29
|
+
* Stamp marker spans with the construct's raw range, so preview-inline's reveal trigger can
|
|
30
|
+
* address them. Attributes only, leaving textContent and the offset walk untouched. Off by
|
|
31
|
+
* default so the DOM stays byte-identical outside preview-inline.
|
|
32
|
+
*/
|
|
33
|
+
tagConstructMarkers?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/** The one href funnel for every sink — a consumer's rewrite, then the scheme allowlist; undefined
|
|
36
|
+
* reads as "render inert". Exported: the link card's Open button hands over a user-typed URL. */
|
|
37
|
+
export declare function resolveHref(opts: RenderInlineOptions, url: string | undefined): string | undefined;
|
|
38
|
+
export declare function renderInlineNodes(nodes: InlineNode[], raw: string, opts?: RenderInlineOptions): DocumentFragment;
|
|
39
|
+
export interface OffsetResult {
|
|
40
|
+
node: InlineNode;
|
|
41
|
+
localOffset: number;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The leaf containing `offset`, preferring the right node at a boundary; `offset === end` only
|
|
45
|
+
* matches the last node. Model-layer, touching no DOM: the DOM counterpart is
|
|
46
|
+
* `findDomTextOffsetTarget` in cursor/widget-offset.ts.
|
|
47
|
+
*/
|
|
48
|
+
export declare function findNodeAtOffset(nodes: InlineNode[], offset: number): OffsetResult | null;
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOM renderer for InlineNode trees. Over a widget-free range the fragment's textContent equals
|
|
3
|
+
* raw.slice. Atomic widgets break that by design, contributing their own text or none and
|
|
4
|
+
* carrying source bytes on `data-source-*`, so a raw offset is recovered only through the shared
|
|
5
|
+
* walk (cursor/widget-offset.ts), never by counting textContent. Stated both ways by G2.4.
|
|
6
|
+
*
|
|
7
|
+
* Which of the spans minted here a mode leaves on screen is `inline/visibility.ts`.
|
|
8
|
+
*/
|
|
9
|
+
import { buildCoreInlineWidget } from './inline/inline-widgets';
|
|
10
|
+
import { isAllowedHrefScheme } from './url-policy';
|
|
11
|
+
// ── Marker helpers ──────────────────────────────────────────────────────────
|
|
12
|
+
function markerSpan(text) {
|
|
13
|
+
const span = document.createElement('span');
|
|
14
|
+
span.className = 'md-marker';
|
|
15
|
+
span.textContent = text;
|
|
16
|
+
return span;
|
|
17
|
+
}
|
|
18
|
+
function tagConstruct(el, node, opts) {
|
|
19
|
+
if (opts.tagConstructMarkers) {
|
|
20
|
+
el.setAttribute('data-construct-start', String(node.start));
|
|
21
|
+
el.setAttribute('data-construct-end', String(node.end));
|
|
22
|
+
}
|
|
23
|
+
return el;
|
|
24
|
+
}
|
|
25
|
+
// The verbatim-source fallback for kinds that render no widget, so every character round-trips.
|
|
26
|
+
function sourceSpan(raw, node, className) {
|
|
27
|
+
const span = document.createElement('span');
|
|
28
|
+
span.className = className;
|
|
29
|
+
span.textContent = raw.slice(node.start, node.end);
|
|
30
|
+
return span;
|
|
31
|
+
}
|
|
32
|
+
/** The one href funnel for every sink — a consumer's rewrite, then the scheme allowlist; undefined
|
|
33
|
+
* reads as "render inert". Exported: the link card's Open button hands over a user-typed URL. */
|
|
34
|
+
export function resolveHref(opts, url) {
|
|
35
|
+
if (url === undefined)
|
|
36
|
+
return undefined;
|
|
37
|
+
const resolved = (opts.resolveLinkUrl ?? ((u) => u))(url);
|
|
38
|
+
// A type-violating resolver returning null/undefined degrades to an inert span, never a throw.
|
|
39
|
+
if (typeof resolved !== 'string')
|
|
40
|
+
return undefined;
|
|
41
|
+
return isAllowedHrefScheme(resolved) ? resolved : undefined;
|
|
42
|
+
}
|
|
43
|
+
// ── Inline code ─────────────────────────────────────────────────────────────
|
|
44
|
+
function renderInlineCode(node, raw, opts) {
|
|
45
|
+
const frag = document.createDocumentFragment();
|
|
46
|
+
// Every span is a slice of raw, never a parsed field that happens to agree — and each is its
|
|
47
|
+
// OWN slice: the opening fence is capped at half the node and the closing one read back off
|
|
48
|
+
// the tail, so a node nobody parsed (a plugin mint over unfenced bytes) still emits its bytes
|
|
49
|
+
// exactly once (G2.4).
|
|
50
|
+
const fenceLimit = node.start + Math.floor((node.end - node.start) / 2);
|
|
51
|
+
let contentStart = node.start;
|
|
52
|
+
while (contentStart < fenceLimit && raw[contentStart] === '`')
|
|
53
|
+
contentStart++;
|
|
54
|
+
const contentEnd = node.end - (contentStart - node.start);
|
|
55
|
+
frag.appendChild(tagConstruct(markerSpan(raw.slice(node.start, contentStart)), node, opts));
|
|
56
|
+
const code = document.createElement('code');
|
|
57
|
+
code.className = 'inline-code-content';
|
|
58
|
+
code.textContent = raw.slice(contentStart, contentEnd);
|
|
59
|
+
frag.appendChild(code);
|
|
60
|
+
frag.appendChild(tagConstruct(markerSpan(raw.slice(contentEnd, node.end)), node, opts));
|
|
61
|
+
return frag;
|
|
62
|
+
}
|
|
63
|
+
// ── Wrapped spans (emphasis / strong / strikethrough) ───────────────────────
|
|
64
|
+
function openWrapped(node, raw, tag, opts, container) {
|
|
65
|
+
const children = node.children ?? [];
|
|
66
|
+
let openEnd;
|
|
67
|
+
let closeStart;
|
|
68
|
+
if (children.length > 0) {
|
|
69
|
+
openEnd = children[0].start;
|
|
70
|
+
closeStart = children[children.length - 1].end;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
// No children, so the entire interior is markers; split it in half.
|
|
74
|
+
const mid = node.start + Math.floor((node.end - node.start) / 2);
|
|
75
|
+
openEnd = mid;
|
|
76
|
+
closeStart = mid;
|
|
77
|
+
}
|
|
78
|
+
container.appendChild(tagConstruct(markerSpan(raw.slice(node.start, openEnd)), node, opts));
|
|
79
|
+
const wrapper = document.createElement(tag);
|
|
80
|
+
const closeMarker = tagConstruct(markerSpan(raw.slice(closeStart, node.end)), node, opts);
|
|
81
|
+
return {
|
|
82
|
+
nodes: children,
|
|
83
|
+
index: 0,
|
|
84
|
+
content: document.createDocumentFragment(),
|
|
85
|
+
close(content) {
|
|
86
|
+
wrapper.appendChild(content);
|
|
87
|
+
container.appendChild(wrapper);
|
|
88
|
+
container.appendChild(closeMarker);
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
// ── Links ────────────────────────────────────────────────────────────────────
|
|
93
|
+
// Markers come from raw.slice: the parsed url/title can differ from the source bytes. Every
|
|
94
|
+
// split point is clamped to node.end — a plugin mint need not carry the bytes GFM's own link
|
|
95
|
+
// does, and a search running past the node would render the NEXT node's source (G2.4).
|
|
96
|
+
function openLink(node, raw, opts, container) {
|
|
97
|
+
const children = node.children ?? [];
|
|
98
|
+
if (children.length === 0) {
|
|
99
|
+
// Empty link text: [](url)
|
|
100
|
+
const bracket = raw.indexOf(']', node.start);
|
|
101
|
+
const mid = bracket !== -1 && bracket < node.end ? bracket : node.end;
|
|
102
|
+
container.appendChild(tagConstruct(markerSpan(raw.slice(node.start, mid)), node, opts));
|
|
103
|
+
if (mid < node.end) {
|
|
104
|
+
container.appendChild(tagConstruct(markerSpan(raw.slice(mid, node.end)), node, opts));
|
|
105
|
+
}
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
const lastChild = children[children.length - 1];
|
|
109
|
+
// The close marker splits into the text bracket's `]` and the trailing marker. Reference forms
|
|
110
|
+
// get their own `md-ref-label` class so CSS can dim them harder than inline markers.
|
|
111
|
+
const closingTextBracket = lastChild.end < node.end && raw[lastChild.end] === ']'
|
|
112
|
+
? raw.slice(lastChild.end, lastChild.end + 1)
|
|
113
|
+
: '';
|
|
114
|
+
const trailingMarker = raw.slice(lastChild.end + (closingTextBracket ? 1 : 0), node.end);
|
|
115
|
+
container.appendChild(tagConstruct(markerSpan(raw.slice(node.start, children[0].start)), node, opts));
|
|
116
|
+
const href = resolveHref(opts, node.url);
|
|
117
|
+
const linkEl = document.createElement(href !== undefined ? 'a' : 'span');
|
|
118
|
+
linkEl.className = href !== undefined ? 'md-link-content' : 'md-link-content md-link-blocked';
|
|
119
|
+
if (href !== undefined) {
|
|
120
|
+
linkEl.setAttribute('href', href);
|
|
121
|
+
// The author's title, else the resolved destination: live mode hides the URL, and hover
|
|
122
|
+
// is the one affordance disclosing where an untitled link actually goes.
|
|
123
|
+
linkEl.setAttribute('title', node.title ?? href);
|
|
124
|
+
}
|
|
125
|
+
const trailing = [];
|
|
126
|
+
if (closingTextBracket) {
|
|
127
|
+
trailing.push(tagConstruct(markerSpan(closingTextBracket), node, opts));
|
|
128
|
+
}
|
|
129
|
+
if (trailingMarker) {
|
|
130
|
+
if (node.label !== undefined) {
|
|
131
|
+
const span = document.createElement('span');
|
|
132
|
+
span.className = 'md-ref-label';
|
|
133
|
+
span.textContent = trailingMarker;
|
|
134
|
+
trailing.push(tagConstruct(span, node, opts));
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
trailing.push(tagConstruct(markerSpan(trailingMarker), node, opts));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
nodes: children,
|
|
142
|
+
index: 0,
|
|
143
|
+
content: document.createDocumentFragment(),
|
|
144
|
+
close(content) {
|
|
145
|
+
linkEl.appendChild(content);
|
|
146
|
+
container.appendChild(linkEl);
|
|
147
|
+
for (const marker of trailing)
|
|
148
|
+
container.appendChild(marker);
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
// ── Autolinks ────────────────────────────────────────────────────────────────
|
|
153
|
+
/**
|
|
154
|
+
* The angle form's `<`/`>` are construct syntax, so they render as markers the mode CSS can hide;
|
|
155
|
+
* the bare URL/www/email forms are url text throughout. Read off the raw bytes, never `node.url`:
|
|
156
|
+
* the bare forms synthesize a url (`http://`, `mailto:`) that is not a slice of the source.
|
|
157
|
+
*/
|
|
158
|
+
function appendAutolink(node, raw, opts, container) {
|
|
159
|
+
const href = resolveHref(opts, node.url);
|
|
160
|
+
const el = document.createElement(href !== undefined ? 'a' : 'span');
|
|
161
|
+
el.className = href !== undefined ? 'md-autolink' : 'md-autolink md-link-blocked';
|
|
162
|
+
if (href !== undefined)
|
|
163
|
+
el.setAttribute('href', href);
|
|
164
|
+
const isAngleForm = raw[node.start] === '<' && raw[node.end - 1] === '>';
|
|
165
|
+
const textStart = isAngleForm ? node.start + 1 : node.start;
|
|
166
|
+
const textEnd = isAngleForm ? node.end - 1 : node.end;
|
|
167
|
+
el.textContent = raw.slice(textStart, textEnd);
|
|
168
|
+
if (isAngleForm)
|
|
169
|
+
container.appendChild(markerSpan(raw.slice(node.start, textStart)));
|
|
170
|
+
container.appendChild(el);
|
|
171
|
+
if (isAngleForm)
|
|
172
|
+
container.appendChild(markerSpan(raw.slice(textEnd, node.end)));
|
|
173
|
+
}
|
|
174
|
+
// ── Images ───────────────────────────────────────────────────────────────────
|
|
175
|
+
/**
|
|
176
|
+
* The widget-free image path (a kind that declines image widgets, or no injected builder).
|
|
177
|
+
* The alt text stays undimmed, so a reading-mode marker collapse leaves it behind.
|
|
178
|
+
*/
|
|
179
|
+
function appendImageSource(node, raw, opts, container) {
|
|
180
|
+
const altText = node.alt ?? '';
|
|
181
|
+
const altStart = node.start + 2;
|
|
182
|
+
const altEnd = altStart + altText.length;
|
|
183
|
+
// `alt` locates the split and never supplies text (openLink's rule), and only where it is
|
|
184
|
+
// literally those bytes: a minted image's markers need not be a GFM image's. Unlocatable
|
|
185
|
+
// falls back to unmarked source, since a construct nobody can decompose would collapse whole.
|
|
186
|
+
if (altEnd > node.end || !raw.startsWith(altText, altStart)) {
|
|
187
|
+
container.appendChild(document.createTextNode(raw.slice(node.start, node.end)));
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
container.appendChild(tagConstruct(markerSpan(raw.slice(node.start, altStart)), node, opts));
|
|
191
|
+
container.appendChild(document.createTextNode(raw.slice(altStart, altEnd)));
|
|
192
|
+
container.appendChild(tagConstruct(markerSpan(raw.slice(altEnd, node.end)), node, opts));
|
|
193
|
+
}
|
|
194
|
+
// ── Main renderer ────────────────────────────────────────────────────────────
|
|
195
|
+
/** Returns a frame for the node's children; the driver owns the descent, off the call stack. */
|
|
196
|
+
function renderNode(node, raw, opts, container) {
|
|
197
|
+
switch (node.kind) {
|
|
198
|
+
case 'text':
|
|
199
|
+
container.appendChild(document.createTextNode(raw.slice(node.start, node.end)));
|
|
200
|
+
return null;
|
|
201
|
+
case 'inlineCode':
|
|
202
|
+
container.appendChild(renderInlineCode(node, raw, opts));
|
|
203
|
+
return null;
|
|
204
|
+
case 'emphasis':
|
|
205
|
+
return openWrapped(node, raw, 'em', opts, container);
|
|
206
|
+
case 'strong':
|
|
207
|
+
return openWrapped(node, raw, 'strong', opts, container);
|
|
208
|
+
case 'strikethrough':
|
|
209
|
+
return openWrapped(node, raw, 's', opts, container);
|
|
210
|
+
case 'hardLineBreak': {
|
|
211
|
+
// A text node carries the line ending so textContent equals raw byte-for-byte;
|
|
212
|
+
// a `<br>` would diverge across browsers.
|
|
213
|
+
const breakRaw = raw.slice(node.start, node.end);
|
|
214
|
+
const nlIdx = breakRaw.indexOf('\n');
|
|
215
|
+
// A node carrying no line ending (a plugin mint) is all marker: a -1 here would
|
|
216
|
+
// slice from the end and drop bytes.
|
|
217
|
+
const lineEndingStart = nlIdx === -1
|
|
218
|
+
? breakRaw.length
|
|
219
|
+
: nlIdx > 0 && breakRaw[nlIdx - 1] === '\r'
|
|
220
|
+
? nlIdx - 1
|
|
221
|
+
: nlIdx;
|
|
222
|
+
if (lineEndingStart > 0) {
|
|
223
|
+
container.appendChild(markerSpan(breakRaw.slice(0, lineEndingStart)));
|
|
224
|
+
}
|
|
225
|
+
container.appendChild(document.createTextNode(breakRaw.slice(lineEndingStart)));
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
case 'link':
|
|
229
|
+
return openLink(node, raw, opts, container);
|
|
230
|
+
case 'image': {
|
|
231
|
+
const renderWidgets = opts.renderImagesAsWidgets ?? true;
|
|
232
|
+
if (renderWidgets && opts.buildImageWidget) {
|
|
233
|
+
container.appendChild(opts.buildImageWidget(node, raw, {
|
|
234
|
+
resolveImageUrl: opts.resolveImageUrl ?? ((u) => u),
|
|
235
|
+
imageLoadPolicy: opts.imageLoadPolicy ?? 'auto'
|
|
236
|
+
}));
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
appendImageSource(node, raw, opts, container);
|
|
240
|
+
}
|
|
241
|
+
return null;
|
|
242
|
+
}
|
|
243
|
+
case 'autolink':
|
|
244
|
+
appendAutolink(node, raw, opts, container);
|
|
245
|
+
return null;
|
|
246
|
+
case 'escape':
|
|
247
|
+
container.appendChild(markerSpan(raw[node.start]));
|
|
248
|
+
container.appendChild(document.createTextNode(raw.slice(node.start + 1, node.end)));
|
|
249
|
+
return null;
|
|
250
|
+
case 'unresolvedReference':
|
|
251
|
+
container.appendChild(sourceSpan(raw, node, node.refKind === 'image'
|
|
252
|
+
? 'md-unresolved-ref md-unresolved-ref-image'
|
|
253
|
+
: 'md-unresolved-ref'));
|
|
254
|
+
return null;
|
|
255
|
+
case 'entityReference':
|
|
256
|
+
case 'rawHtml':
|
|
257
|
+
default:
|
|
258
|
+
// An invisible entity is not a widget, so the builder returns null and it keeps its
|
|
259
|
+
// literal-source span; anything the registry does not claim falls back the same way,
|
|
260
|
+
// mirroring the unknown-block fallback so every byte round-trips.
|
|
261
|
+
container.appendChild(buildCoreInlineWidget(node, raw, opts.buildPortalWidget) ??
|
|
262
|
+
sourceSpan(raw, node, node.kind === 'entityReference'
|
|
263
|
+
? 'md-entity'
|
|
264
|
+
: node.kind === 'rawHtml'
|
|
265
|
+
? 'md-raw-html'
|
|
266
|
+
: 'md-unknown-inline'));
|
|
267
|
+
return null;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
export function renderInlineNodes(nodes, raw, opts = {}) {
|
|
271
|
+
// Iterative: nesting depth is input-controlled, so per-level recursion overflows the stack and
|
|
272
|
+
// strands the block in the unhealable fallback. `scanChildren` is iterative for the same reason.
|
|
273
|
+
const root = {
|
|
274
|
+
nodes,
|
|
275
|
+
index: 0,
|
|
276
|
+
content: document.createDocumentFragment(),
|
|
277
|
+
close: null
|
|
278
|
+
};
|
|
279
|
+
const stack = [root];
|
|
280
|
+
while (stack.length > 0) {
|
|
281
|
+
const frame = stack[stack.length - 1];
|
|
282
|
+
if (frame.index === frame.nodes.length) {
|
|
283
|
+
stack.pop();
|
|
284
|
+
frame.close?.(frame.content);
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
287
|
+
const child = renderNode(frame.nodes[frame.index++], raw, opts, frame.content);
|
|
288
|
+
if (child !== null)
|
|
289
|
+
stack.push(child);
|
|
290
|
+
}
|
|
291
|
+
return root.content;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* The leaf containing `offset`, preferring the right node at a boundary; `offset === end` only
|
|
295
|
+
* matches the last node. Model-layer, touching no DOM: the DOM counterpart is
|
|
296
|
+
* `findDomTextOffsetTarget` in cursor/widget-offset.ts.
|
|
297
|
+
*/
|
|
298
|
+
export function findNodeAtOffset(nodes, offset) {
|
|
299
|
+
// Descent never backtracks, the first containing sibling winning its level, so the answer is
|
|
300
|
+
// the deepest containing node.
|
|
301
|
+
let level = nodes;
|
|
302
|
+
let found = null;
|
|
303
|
+
for (;;) {
|
|
304
|
+
const node = containingNode(level, offset);
|
|
305
|
+
if (node === null)
|
|
306
|
+
return found;
|
|
307
|
+
found = { node, localOffset: offset - node.start };
|
|
308
|
+
if (node.children === undefined || node.children.length === 0)
|
|
309
|
+
return found;
|
|
310
|
+
level = node.children;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
/** First node covering `offset`; only the last node claims its own `end`. */
|
|
314
|
+
function containingNode(nodes, offset) {
|
|
315
|
+
for (let i = 0; i < nodes.length; i++) {
|
|
316
|
+
const node = nodes[i];
|
|
317
|
+
const isLast = i === nodes.length - 1;
|
|
318
|
+
if (offset >= node.start && (offset < node.end || (isLast && offset === node.end)))
|
|
319
|
+
return node;
|
|
320
|
+
}
|
|
321
|
+
return null;
|
|
322
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/** Line splitting preserving endings and offsets, plus the trailing-line-ending helpers. */
|
|
2
|
+
/** Length of `raw` excluding any trailing line ending (LF or CRLF). */
|
|
3
|
+
export declare function displayLength(raw: string): number;
|
|
4
|
+
export declare function trimTrailingLineEnding(raw: string): string;
|
|
5
|
+
/**
|
|
6
|
+
* The ending `raw` actually carries — {@link trimTrailingLineEnding}'s complement, the two
|
|
7
|
+
* partitioning `raw`. What {@link trailingLineEnding} answers instead is which ending the
|
|
8
|
+
* DOCUMENT uses, so a site reattaching a block's own bytes reads this one (G4.20).
|
|
9
|
+
*/
|
|
10
|
+
export declare function ownTrailingLineEnding(raw: string): '' | '\n' | '\r\n';
|
|
11
|
+
/**
|
|
12
|
+
* `offset` moved off the interior of a surrogate pair, back to the pair's own start. Caret
|
|
13
|
+
* offsets are UTF-16 code units, so a cut at one can halve an astral scalar and leave a lone
|
|
14
|
+
* surrogate — bytes no UTF-8 encoder round-trips (`TextEncoder` yields U+FFFD) and no inverse
|
|
15
|
+
* gesture restores. Scalars only: a grapheme cluster is a rendering question, and answering it
|
|
16
|
+
* here would move a caret the author placed between two legitimately separate scalars.
|
|
17
|
+
*/
|
|
18
|
+
export declare function snapToScalarBoundary(raw: string, offset: number): number;
|
|
19
|
+
/**
|
|
20
|
+
* The block's authored trailing line ending. Every site that reattaches or mints one reads it
|
|
21
|
+
* here (G4.20), so a CRLF-authored block keeps its ending and an unterminated one gets `\n`.
|
|
22
|
+
*/
|
|
23
|
+
export declare function trailingLineEnding(raw: string): '\n' | '\r\n';
|
|
24
|
+
/**
|
|
25
|
+
* Keep a truncated slice line-terminated, borrowing `sourceRaw`'s own ending (G4.20). A slice
|
|
26
|
+
* whose last line stays open swallows whatever follows it once the bytes stand alone.
|
|
27
|
+
*/
|
|
28
|
+
export declare function terminateLine(text: string, sourceRaw: string): string;
|
|
29
|
+
/** Paste entry points funnel through here so Windows CRLF does not leak into a note. */
|
|
30
|
+
export declare function normalizeLineEndings(text: string): string;
|
|
31
|
+
export interface ParsedLine {
|
|
32
|
+
raw: string;
|
|
33
|
+
text: string;
|
|
34
|
+
lineEnding: string;
|
|
35
|
+
start: number;
|
|
36
|
+
end: number;
|
|
37
|
+
}
|
|
38
|
+
export declare function splitLines(source: string): ParsedLine[];
|
|
39
|
+
/**
|
|
40
|
+
* Re-mint a `ParsedLine[]` after a per-line strip, as the container parsers do when they reparse
|
|
41
|
+
* a prefix-stripped body. Recompute, not spread: reusing an input line's offsets after shortening
|
|
42
|
+
* its text desyncs the offsets from the bytes.
|
|
43
|
+
*/
|
|
44
|
+
export declare function remapStrippedLines(lines: ParsedLine[], stripLine: (line: ParsedLine, index: number) => string): ParsedLine[];
|