@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,103 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
// The marker rides the first child as an ambient prefix (the listItem `- ` model), so the
|
|
3
|
+
// body edits like ordinary prose while the marker stays read-only chrome. Its `[^label]`
|
|
4
|
+
// range is the way back, on the same click the reference took to get here.
|
|
5
|
+
import {
|
|
6
|
+
BlockList,
|
|
7
|
+
createContainerBlock,
|
|
8
|
+
getPluginMetadata,
|
|
9
|
+
isWidgetActivationClick,
|
|
10
|
+
type DocumentView,
|
|
11
|
+
type EditorRects,
|
|
12
|
+
type NodeView
|
|
13
|
+
} from '../../plugin';
|
|
14
|
+
import type { FootnoteDefMetadata } from './footnote-definition';
|
|
15
|
+
import { collectFootnoteReferences } from './footnote-numbering';
|
|
16
|
+
|
|
17
|
+
let {
|
|
18
|
+
node,
|
|
19
|
+
index,
|
|
20
|
+
myPath = [],
|
|
21
|
+
document,
|
|
22
|
+
rects
|
|
23
|
+
}: {
|
|
24
|
+
node: NodeView;
|
|
25
|
+
index: number;
|
|
26
|
+
myPath?: number[];
|
|
27
|
+
document?: DocumentView;
|
|
28
|
+
rects?: EditorRects;
|
|
29
|
+
} = $props();
|
|
30
|
+
|
|
31
|
+
let boxEl: HTMLElement | undefined = $state();
|
|
32
|
+
|
|
33
|
+
const label = $derived(getPluginMetadata<FootnoteDefMetadata>(node)?.label ?? '');
|
|
34
|
+
// The clickable half: the colon and its space are syntax nobody aims at.
|
|
35
|
+
const marker = $derived(`[^${label}]`);
|
|
36
|
+
|
|
37
|
+
const { blockListProps, containerApi, getPresentationMode } = createContainerBlock({
|
|
38
|
+
getNode: () => node,
|
|
39
|
+
getIndex: () => index,
|
|
40
|
+
getPath: () => myPath,
|
|
41
|
+
getBoxEl: () => boxEl,
|
|
42
|
+
getAmbientPrefix: () => ({
|
|
43
|
+
text: `${marker}: `,
|
|
44
|
+
interactive: [
|
|
45
|
+
{
|
|
46
|
+
start: 0,
|
|
47
|
+
end: marker.length,
|
|
48
|
+
className: 'footnote-def-marker',
|
|
49
|
+
onClick: jumpToFirstReference
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
})
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
// Resolved on the gesture, never derived: the span's listener is bound once at build time,
|
|
56
|
+
// so a captured path would be the walk's answer from whenever that was.
|
|
57
|
+
function jumpToFirstReference(e: MouseEvent): void {
|
|
58
|
+
if (!isWidgetActivationClick(e.ctrlKey || e.metaKey, getPresentationMode())) return;
|
|
59
|
+
// Skips the leaf's caret clamp and the editor's root click handler on purpose: the
|
|
60
|
+
// jump is the only thing this click does.
|
|
61
|
+
e.preventDefault();
|
|
62
|
+
e.stopPropagation();
|
|
63
|
+
if (!document) return;
|
|
64
|
+
// GFM numbers by first-reference order, so the first reference is the one this
|
|
65
|
+
// definition's number was minted from.
|
|
66
|
+
const first = collectFootnoteReferences(document).find((ref) => ref.label === label);
|
|
67
|
+
if (first) void rects?.navigateTo(first.path, first.end);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Where a plain click already acts, so the pointer cue matches the gesture.
|
|
71
|
+
const plainClickJumps = $derived(isWidgetActivationClick(false, getPresentationMode()));
|
|
72
|
+
|
|
73
|
+
export { containerApi };
|
|
74
|
+
</script>
|
|
75
|
+
|
|
76
|
+
<div
|
|
77
|
+
class="footnote-def"
|
|
78
|
+
data-footnote-label={label}
|
|
79
|
+
data-plain-click-jumps={plainClickJumps ? '' : undefined}
|
|
80
|
+
bind:this={boxEl}
|
|
81
|
+
>
|
|
82
|
+
<BlockList {...blockListProps} />
|
|
83
|
+
</div>
|
|
84
|
+
|
|
85
|
+
<style>
|
|
86
|
+
/* A gutter rail, not card chrome: the marker itself is the child leaf's prefix span. */
|
|
87
|
+
.footnote-def {
|
|
88
|
+
position: relative;
|
|
89
|
+
margin: 0.4em 0;
|
|
90
|
+
padding-left: 0.9em;
|
|
91
|
+
border-left: 2px solid var(--color-border, #3d4047);
|
|
92
|
+
font-size: 0.95em;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/* The marker span is built into the child leaf's DOM, outside this component's scope. */
|
|
96
|
+
.footnote-def :global(.footnote-def-marker:hover) {
|
|
97
|
+
text-decoration: underline;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.footnote-def[data-plain-click-jumps] :global(.footnote-def-marker) {
|
|
101
|
+
cursor: pointer;
|
|
102
|
+
}
|
|
103
|
+
</style>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type DocumentView, type EditorRects, type NodeView } from '../../plugin';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
node: NodeView;
|
|
4
|
+
index: number;
|
|
5
|
+
myPath?: number[];
|
|
6
|
+
document?: DocumentView;
|
|
7
|
+
rects?: EditorRects;
|
|
8
|
+
};
|
|
9
|
+
declare const FootnoteDefinition: import("svelte").Component<$$ComponentProps, {
|
|
10
|
+
containerApi: import("../../plugin").ContainerBlockComponent;
|
|
11
|
+
}, "">;
|
|
12
|
+
type FootnoteDefinition = ReturnType<typeof FootnoteDefinition>;
|
|
13
|
+
export default FootnoteDefinition;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { isWidgetActivationClick, type InlineWidgetComponentProps } from '../../plugin';
|
|
3
|
+
import { assignFootnoteNumbers, footnoteNumbersFor } from './footnote-numbering';
|
|
4
|
+
import { findFootnoteDefinitionLanding } from './footnote-lookup';
|
|
5
|
+
|
|
6
|
+
let {
|
|
7
|
+
source,
|
|
8
|
+
getDocument,
|
|
9
|
+
getContentVersion,
|
|
10
|
+
getPresentationMode,
|
|
11
|
+
navigateTo
|
|
12
|
+
}: InlineWidgetComponentProps = $props();
|
|
13
|
+
|
|
14
|
+
// Frozen: the pool remounts on any source change, so this can never go stale.
|
|
15
|
+
// svelte-ignore state_referenced_locally
|
|
16
|
+
const label = source.slice(2, -1);
|
|
17
|
+
|
|
18
|
+
// Reactive, not baked: the pool keys on the source, so this instance survives a renumber
|
|
19
|
+
// driven by a reference added elsewhere. The version is read inside the derived, so the
|
|
20
|
+
// shared walk stays subscribed rather than snapshotted.
|
|
21
|
+
const display = $derived.by(() => {
|
|
22
|
+
const doc = getDocument?.();
|
|
23
|
+
if (!doc) return label;
|
|
24
|
+
const version = getContentVersion?.();
|
|
25
|
+
const numbers =
|
|
26
|
+
version === undefined ? assignFootnoteNumbers(doc) : footnoteNumbersFor(doc, version);
|
|
27
|
+
return String(numbers.get(label) ?? label);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
// Resolved on the gesture, never derived: a reference that is never clicked costs nothing
|
|
31
|
+
// beyond the numbering walk it already pays for.
|
|
32
|
+
function onClick(e: MouseEvent): void {
|
|
33
|
+
const mode = getPresentationMode?.() ?? 'source';
|
|
34
|
+
if (!isWidgetActivationClick(e.ctrlKey || e.metaKey, mode)) return;
|
|
35
|
+
const doc = getDocument?.();
|
|
36
|
+
if (!doc) return;
|
|
37
|
+
const path = findFootnoteDefinitionLanding(doc, label);
|
|
38
|
+
if (path) void navigateTo?.(path);
|
|
39
|
+
}
|
|
40
|
+
</script>
|
|
41
|
+
|
|
42
|
+
<!-- svelte-ignore a11y_click_events_have_key_events, a11y_no_noninteractive_element_interactions -->
|
|
43
|
+
<sup class="footnote-ref" onclick={onClick}>{display}</sup>
|
|
44
|
+
|
|
45
|
+
<style>
|
|
46
|
+
.footnote-ref {
|
|
47
|
+
color: var(--color-accent, #567b67);
|
|
48
|
+
cursor: pointer;
|
|
49
|
+
}
|
|
50
|
+
</style>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `[^label]: content` definition block as a strip container in the listItem mold.
|
|
3
|
+
* The marker is pure syntax living only in the container's own raw, so
|
|
4
|
+
* `strip(raw) === serialize(children)`. Load is byte-exact off the stored raw; a
|
|
5
|
+
* post-edit rebuild canonicalizes marker spacing and indent, exactly as listItem does.
|
|
6
|
+
*/
|
|
7
|
+
import { type CstNode } from '../../plugin';
|
|
8
|
+
export interface FootnoteDefMetadata {
|
|
9
|
+
label: string;
|
|
10
|
+
}
|
|
11
|
+
/** Splitting on `\n` keeps a `\r` at each segment's tail, so CRLF rides through; a blank
|
|
12
|
+
* continuation stays unindented. */
|
|
13
|
+
export declare function rebuildFootnoteDefRaw(node: CstNode): void;
|
|
14
|
+
export declare function registerFootnoteDefinition(): void;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `[^label]: content` definition block as a strip container in the listItem mold.
|
|
3
|
+
* The marker is pure syntax living only in the container's own raw, so
|
|
4
|
+
* `strip(raw) === serialize(children)`. Load is byte-exact off the stored raw; a
|
|
5
|
+
* post-edit rebuild canonicalizes marker spacing and indent, exactly as listItem does.
|
|
6
|
+
*/
|
|
7
|
+
import { OPENER_PRIORITIES, containerClosure, declarePluginKind, declaredPluginKind, defineBlockComponent, getPluginMetadata, isBlankLine, lineStartsOuterBlock, parse, registerBlockComponent, registerBlockKind, registerBlockOpener, serializeChildren, setPluginMetadata } from '../../plugin';
|
|
8
|
+
import FootnoteDefinition from './FootnoteDefinition.svelte';
|
|
9
|
+
import { FOOTNOTE_DEF_KIND } from './constants';
|
|
10
|
+
const OPENER = /^ {0,3}\[\^([^\]\s]+)\]:/;
|
|
11
|
+
const MARKER_STRIP = /^ {0,3}\[\^[^\]\s]+\]: ?/;
|
|
12
|
+
const CONTINUATION_INDENT = /^(\t| {4})/;
|
|
13
|
+
const CONTINUATION_MARKER = ' ';
|
|
14
|
+
/** Per-line approximation of the body's open-paragraph state, as in the core blockquote/list
|
|
15
|
+
* lazy models: laziness reaches only the body's own top-level paragraph. */
|
|
16
|
+
function keepsParagraphOpen(strippedText, grammar) {
|
|
17
|
+
if (isBlankLine(strippedText))
|
|
18
|
+
return false;
|
|
19
|
+
if (OPENER.test(strippedText))
|
|
20
|
+
return false;
|
|
21
|
+
for (const opener of grammar.orderedOpeners()) {
|
|
22
|
+
const interrupts = opener.interruptsParagraph;
|
|
23
|
+
if (interrupts !== false && interrupts(strippedText))
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Blank lines are absorbed only while a later indented line still follows — a trailing blank
|
|
30
|
+
* run belongs to the document. An unindented non-blank line continues the definition only as
|
|
31
|
+
* a lazy continuation of an open body paragraph (CommonMark §5.1, as cmark-gfm applies it).
|
|
32
|
+
*/
|
|
33
|
+
function scanDefinitionEnd(ctx) {
|
|
34
|
+
let lastContent = ctx.index;
|
|
35
|
+
let paragraphOpen = keepsParagraphOpen(ctx.line.text.replace(MARKER_STRIP, ''), ctx.grammar);
|
|
36
|
+
let i = ctx.index + 1;
|
|
37
|
+
while (i < ctx.end) {
|
|
38
|
+
const text = ctx.lines[i].text;
|
|
39
|
+
if (isBlankLine(text)) {
|
|
40
|
+
paragraphOpen = false;
|
|
41
|
+
i++;
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if (CONTINUATION_INDENT.test(text)) {
|
|
45
|
+
paragraphOpen = keepsParagraphOpen(text.replace(CONTINUATION_INDENT, ''), ctx.grammar);
|
|
46
|
+
lastContent = i;
|
|
47
|
+
i++;
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
if (paragraphOpen &&
|
|
51
|
+
!lineStartsOuterBlock(ctx.lines[i], { paragraphOpen: true, grammar: ctx.grammar })) {
|
|
52
|
+
lastContent = i;
|
|
53
|
+
i++;
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
return lastContent + 1;
|
|
59
|
+
}
|
|
60
|
+
function tryOpen(ctx) {
|
|
61
|
+
const match = OPENER.exec(ctx.line.text);
|
|
62
|
+
if (!match)
|
|
63
|
+
return null;
|
|
64
|
+
const next = scanDefinitionEnd(ctx);
|
|
65
|
+
const defLines = ctx.lines.slice(ctx.index, next);
|
|
66
|
+
const raw = defLines.map((line) => line.raw).join('');
|
|
67
|
+
const stripped = defLines
|
|
68
|
+
.map((line, i) => line.raw.replace(i === 0 ? MARKER_STRIP : CONTINUATION_INDENT, ''))
|
|
69
|
+
.join('');
|
|
70
|
+
// A fresh parse entry, so the body's own line 0 must not read as the document top.
|
|
71
|
+
const body = parse(stripped, { scope: 'fragment' });
|
|
72
|
+
const node = {
|
|
73
|
+
kind: declaredPluginKind(FOOTNOTE_DEF_KIND),
|
|
74
|
+
leadingTrivia: ctx.leadingTrivia,
|
|
75
|
+
raw,
|
|
76
|
+
innerPrefix: body.prefix,
|
|
77
|
+
children: body.children,
|
|
78
|
+
innerSuffix: body.suffix
|
|
79
|
+
};
|
|
80
|
+
setPluginMetadata(node, { label: match[1] });
|
|
81
|
+
return { node, consumed: next - ctx.index };
|
|
82
|
+
}
|
|
83
|
+
/** Splitting on `\n` keeps a `\r` at each segment's tail, so CRLF rides through; a blank
|
|
84
|
+
* continuation stays unindented. */
|
|
85
|
+
export function rebuildFootnoteDefRaw(node) {
|
|
86
|
+
const meta = getPluginMetadata(node);
|
|
87
|
+
const marker = `[^${meta?.label ?? ''}]: `;
|
|
88
|
+
const inner = (node.innerPrefix ?? '') + serializeChildren(node.children ?? []) + (node.innerSuffix ?? '');
|
|
89
|
+
const lines = inner.split('\n');
|
|
90
|
+
node.raw = lines
|
|
91
|
+
.map((line, i) => {
|
|
92
|
+
if (i === lines.length - 1 && line === '')
|
|
93
|
+
return '';
|
|
94
|
+
if (i === 0)
|
|
95
|
+
return marker + line;
|
|
96
|
+
if (line === '' || line === '\r')
|
|
97
|
+
return line;
|
|
98
|
+
return CONTINUATION_MARKER + line;
|
|
99
|
+
})
|
|
100
|
+
.join('\n');
|
|
101
|
+
}
|
|
102
|
+
export function registerFootnoteDefinition() {
|
|
103
|
+
const kind = declarePluginKind(FOOTNOTE_DEF_KIND);
|
|
104
|
+
registerBlockOpener(kind, {
|
|
105
|
+
// Below linkReferenceDefinition so the footnote form is claimed first, in its own
|
|
106
|
+
// sub-LRD slot so no two co-installed first-party plugins share it (G1.10).
|
|
107
|
+
priority: OPENER_PRIORITIES.linkReferenceDefinition - 4,
|
|
108
|
+
tryOpen,
|
|
109
|
+
interruptsParagraph: false
|
|
110
|
+
});
|
|
111
|
+
registerBlockKind(kind, {
|
|
112
|
+
gapEdges: 'none',
|
|
113
|
+
mergeRole: 'not-mergeable',
|
|
114
|
+
editable: true,
|
|
115
|
+
supportsInline: false,
|
|
116
|
+
// Kit fixtures must be rebuildRaw fixed points, so the continuation is indented: the
|
|
117
|
+
// lazy form canonicalizes.
|
|
118
|
+
conformanceFixture: '[^1]: A footnote definition.\n with an indented continuation.\n',
|
|
119
|
+
// Unlike a listItem, whose leaf resolves to the item under the list, the body
|
|
120
|
+
// blocks reorder within; the marker is position-independent, so rebuildRaw re-emits it.
|
|
121
|
+
container: {
|
|
122
|
+
contract: 'strip',
|
|
123
|
+
rebuildRaw: rebuildFootnoteDefRaw,
|
|
124
|
+
reorderChildren: {},
|
|
125
|
+
// The marker rides metadata rather than the first line, so the remainder of a lift is
|
|
126
|
+
// still a definition, not the plain quote a quote-shaped lift leaves.
|
|
127
|
+
unwrapRole: {
|
|
128
|
+
firstChildBackspace: 'lift-first-child-keep-container',
|
|
129
|
+
middleChildBackspace: 'default-merge'
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
closure: containerClosure({
|
|
133
|
+
roundTripVia: 'container contract=strip — rebuildFootnoteDefRaw re-emits the [^label]: marker + four-space continuation indent',
|
|
134
|
+
focus: {
|
|
135
|
+
mode: 'implemented',
|
|
136
|
+
via: 'focus walks into the first child block via createContainerBlock'
|
|
137
|
+
},
|
|
138
|
+
mergeBackspace: {
|
|
139
|
+
mode: 'implemented',
|
|
140
|
+
via: 'not-mergeable outward, so nothing below concatenates into the note; within the body, unwrapRole lifts the first block out (lift-first-child-keep-container) and later blocks default-merge'
|
|
141
|
+
},
|
|
142
|
+
undo: { mode: 'inherit-default' },
|
|
143
|
+
simOracle: { mode: 'inherit-default' }
|
|
144
|
+
})
|
|
145
|
+
});
|
|
146
|
+
registerBlockComponent(kind, defineBlockComponent(FootnoteDefinition));
|
|
147
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a `[^label]` reference jumps to: the caret landing inside that label's definition.
|
|
3
|
+
* Depth-first in document order, so two definitions under one label resolve to the first,
|
|
4
|
+
* which is the one GFM renders.
|
|
5
|
+
*/
|
|
6
|
+
import { type DocumentView } from '../../plugin';
|
|
7
|
+
/** The definition's first body block, since the container itself is no caret seat. The
|
|
8
|
+
* container path stands in when the body holds no block; null when no definition matches. */
|
|
9
|
+
export declare function findFootnoteDefinitionLanding(document: DocumentView, label: string): number[] | null;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a `[^label]` reference jumps to: the caret landing inside that label's definition.
|
|
3
|
+
* Depth-first in document order, so two definitions under one label resolve to the first,
|
|
4
|
+
* which is the one GFM renders.
|
|
5
|
+
*/
|
|
6
|
+
import { getPluginMetadata } from '../../plugin';
|
|
7
|
+
import { FOOTNOTE_DEF_KIND } from './constants';
|
|
8
|
+
function findInSubtree(node, path, label) {
|
|
9
|
+
if (node.kind === FOOTNOTE_DEF_KIND &&
|
|
10
|
+
getPluginMetadata(node)?.label === label) {
|
|
11
|
+
return { node, path };
|
|
12
|
+
}
|
|
13
|
+
const children = node.children;
|
|
14
|
+
if (!children)
|
|
15
|
+
return null;
|
|
16
|
+
for (let index = 0; index < children.length; index++) {
|
|
17
|
+
const hit = findInSubtree(children[index], [...path, index], label);
|
|
18
|
+
if (hit)
|
|
19
|
+
return hit;
|
|
20
|
+
}
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
/** The definition's first body block, since the container itself is no caret seat. The
|
|
24
|
+
* container path stands in when the body holds no block; null when no definition matches. */
|
|
25
|
+
export function findFootnoteDefinitionLanding(document, label) {
|
|
26
|
+
const children = document.children;
|
|
27
|
+
for (let index = 0; index < children.length; index++) {
|
|
28
|
+
const match = findInSubtree(children[index], [index], label);
|
|
29
|
+
if (match)
|
|
30
|
+
return match.node.children?.length ? [...match.path, 0] : match.path;
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Numbering derived as a pure function over the read-only document: GFM numbers by
|
|
3
|
+
* first-reference order, not definition order. Walking parsed inline nodes rather than
|
|
4
|
+
* raw bytes excludes two things by construction: a `[^x]` in a code span, and a
|
|
5
|
+
* definition's own marker, which lives in the container's raw rather than a child.
|
|
6
|
+
*/
|
|
7
|
+
import { type DocumentView } from '../../plugin';
|
|
8
|
+
export interface FootnoteReference {
|
|
9
|
+
label: string;
|
|
10
|
+
/** Doc-absolute block path of the prose leaf carrying the reference. */
|
|
11
|
+
path: number[];
|
|
12
|
+
/** Raw offset just past the `[^label]` bytes in that leaf — where the way back lands. */
|
|
13
|
+
end: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function collectFootnoteReferences(document: DocumentView): FootnoteReference[];
|
|
16
|
+
/** Labels only, so the numbering a keystroke rebuilds allocates no rebased paths. */
|
|
17
|
+
export declare function assignFootnoteNumbers(document: DocumentView): Map<string, number>;
|
|
18
|
+
/**
|
|
19
|
+
* One numbering per flush rather than one per widget. `contentVersion` must be in the key:
|
|
20
|
+
* the `$state` document is mutated in place, so an identity-keyed memo would hit forever and
|
|
21
|
+
* return a stale map.
|
|
22
|
+
*/
|
|
23
|
+
export declare function footnoteNumbersFor(document: DocumentView, contentVersion: number): Map<string, number>;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Numbering derived as a pure function over the read-only document: GFM numbers by
|
|
3
|
+
* first-reference order, not definition order. Walking parsed inline nodes rather than
|
|
4
|
+
* raw bytes excludes two things by construction: a `[^x]` in a code span, and a
|
|
5
|
+
* definition's own marker, which lives in the container's raw rather than a child.
|
|
6
|
+
*/
|
|
7
|
+
import { computeInlineContent, isProseKind } from '../../plugin';
|
|
8
|
+
import { FOOTNOTE_REF_KIND } from './constants';
|
|
9
|
+
function collectRefsInInline(nodes, path, out) {
|
|
10
|
+
for (const node of nodes) {
|
|
11
|
+
if (node.kind === FOOTNOTE_REF_KIND)
|
|
12
|
+
out.push({ label: node.label ?? '', path, end: node.end });
|
|
13
|
+
else if (node.children)
|
|
14
|
+
collectRefsInInline(node.children, path, out);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function collectRefsInSubtree(node, basePath, out) {
|
|
18
|
+
if (node.children && node.children.length > 0) {
|
|
19
|
+
node.children.forEach((child, index) => collectRefsInSubtree(child, [...basePath, index], out));
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (!isProseKind(node.kind))
|
|
23
|
+
return;
|
|
24
|
+
collectRefsInInline(computeInlineContent(node), basePath, out);
|
|
25
|
+
}
|
|
26
|
+
export function collectFootnoteReferences(document) {
|
|
27
|
+
const refs = [];
|
|
28
|
+
const children = document.children;
|
|
29
|
+
for (let index = 0; index < children.length; index++) {
|
|
30
|
+
for (const ref of subtreeRefs(children[index])) {
|
|
31
|
+
refs.push({ label: ref.label, path: [index, ...ref.path], end: ref.end });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return refs;
|
|
35
|
+
}
|
|
36
|
+
/** Labels only, so the numbering a keystroke rebuilds allocates no rebased paths. */
|
|
37
|
+
export function assignFootnoteNumbers(document) {
|
|
38
|
+
const numbers = new Map();
|
|
39
|
+
const children = document.children;
|
|
40
|
+
for (let index = 0; index < children.length; index++) {
|
|
41
|
+
for (const ref of subtreeRefs(children[index])) {
|
|
42
|
+
if (!numbers.has(ref.label))
|
|
43
|
+
numbers.set(ref.label, numbers.size + 1);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return numbers;
|
|
47
|
+
}
|
|
48
|
+
const refsBySubtree = new WeakMap();
|
|
49
|
+
/**
|
|
50
|
+
* One top-level subtree's references, memoized against the bytes they came from, so a
|
|
51
|
+
* keystroke re-parses that subtree and reuses every other. Sound because the serializer
|
|
52
|
+
* never recurses (`editor.md` § 12): a subtree's `raw` is its whole byte image, kept so by
|
|
53
|
+
* the container-`raw` rebuild up the ancestry.
|
|
54
|
+
*/
|
|
55
|
+
function subtreeRefs(node) {
|
|
56
|
+
const cached = refsBySubtree.get(node);
|
|
57
|
+
if (cached && cached.raw === node.raw && cached.kind === node.kind)
|
|
58
|
+
return cached.refs;
|
|
59
|
+
const refs = [];
|
|
60
|
+
collectRefsInSubtree(node, [], refs);
|
|
61
|
+
refsBySubtree.set(node, { raw: node.raw, kind: node.kind, refs });
|
|
62
|
+
return refs;
|
|
63
|
+
}
|
|
64
|
+
// ── Per-version sharing ──────────────────────────────────────────────────────
|
|
65
|
+
const numberingByDocument = new WeakMap();
|
|
66
|
+
/**
|
|
67
|
+
* One numbering per flush rather than one per widget. `contentVersion` must be in the key:
|
|
68
|
+
* the `$state` document is mutated in place, so an identity-keyed memo would hit forever and
|
|
69
|
+
* return a stale map.
|
|
70
|
+
*/
|
|
71
|
+
export function footnoteNumbersFor(document, contentVersion) {
|
|
72
|
+
const cached = numberingByDocument.get(document);
|
|
73
|
+
if (cached && cached.version === contentVersion)
|
|
74
|
+
return cached.numbers;
|
|
75
|
+
const numbers = assignFootnoteNumbers(document);
|
|
76
|
+
numberingByDocument.set(document, { version: contentVersion, numbers });
|
|
77
|
+
return numbers;
|
|
78
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The reference implementation of an inline rung: `[^label]` claims the ladder's
|
|
3
|
+
* `[^`-prefix rung, consulted before the built-in `[` handler. The literal bytes stay
|
|
4
|
+
* in the block's raw and the number is derived rather than stored. Recognition is gated
|
|
5
|
+
* on registration: absent the plugin, `[` runs its built-in bracket handling instead.
|
|
6
|
+
*/
|
|
7
|
+
export declare function registerFootnoteReference(): void;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The reference implementation of an inline rung: `[^label]` claims the ladder's
|
|
3
|
+
* `[^`-prefix rung, consulted before the built-in `[` handler. The literal bytes stay
|
|
4
|
+
* in the block's raw and the number is derived rather than stored. Recognition is gated
|
|
5
|
+
* on registration: absent the plugin, `[` runs its built-in bracket handling instead.
|
|
6
|
+
*/
|
|
7
|
+
import { INLINE_PRIORITIES, createScanIndex, declarePluginInlineKind, isInlineKindDeclared, registerInlineSyntax, registerInlineWidgetKind } from '../../plugin';
|
|
8
|
+
import FootnoteReference from './FootnoteReference.svelte';
|
|
9
|
+
import { FOOTNOTE_REF_KIND } from './constants';
|
|
10
|
+
const isWhitespace = (ch) => /\s/.test(ch);
|
|
11
|
+
function indexLabelTerminators(raw) {
|
|
12
|
+
const positions = [];
|
|
13
|
+
for (let i = 0; i < raw.length; i++) {
|
|
14
|
+
if (raw[i] === ']' || isWhitespace(raw[i]))
|
|
15
|
+
positions.push(i);
|
|
16
|
+
}
|
|
17
|
+
return Int32Array.from(positions);
|
|
18
|
+
}
|
|
19
|
+
// Indexed once per block, not searched per consultation: an unterminated `[^` declines
|
|
20
|
+
// only by reaching the end, so a paragraph full of them would cost a block scan each.
|
|
21
|
+
const firstTerminatorFrom = createScanIndex(indexLabelTerminators);
|
|
22
|
+
/**
|
|
23
|
+
* Every decline falls through to the built-in bracket handler byte-identically. The reference
|
|
24
|
+
* is atomic, so a trailing `(...)` rescans as ordinary inline content, never a destination.
|
|
25
|
+
*/
|
|
26
|
+
function recognizeFootnoteReference(raw, pos, end, kind) {
|
|
27
|
+
if (raw[pos] !== '[' || raw[pos + 1] !== '^')
|
|
28
|
+
return null;
|
|
29
|
+
const labelStart = pos + 2;
|
|
30
|
+
// The index spans the whole block, so `end` decides the claim: a `]` past the scan
|
|
31
|
+
// range leaves the reference unterminated.
|
|
32
|
+
const close = firstTerminatorFrom(raw, labelStart);
|
|
33
|
+
if (close === -1 || close >= end)
|
|
34
|
+
return null;
|
|
35
|
+
if (raw[close] !== ']' || close === labelStart)
|
|
36
|
+
return null;
|
|
37
|
+
return { kind, start: pos, end: close + 1, label: raw.slice(labelStart, close) };
|
|
38
|
+
}
|
|
39
|
+
export function registerFootnoteReference() {
|
|
40
|
+
// Keyed on the kind registry, not a module latch, so the platform reset that clears
|
|
41
|
+
// the inline registries also clears this guard.
|
|
42
|
+
if (isInlineKindDeclared(FOOTNOTE_REF_KIND))
|
|
43
|
+
return;
|
|
44
|
+
const kind = declarePluginInlineKind(FOOTNOTE_REF_KIND);
|
|
45
|
+
registerInlineSyntax('[', (raw, pos, end) => recognizeFootnoteReference(raw, pos, end, kind), {
|
|
46
|
+
prefix: '[^',
|
|
47
|
+
priority: INLINE_PRIORITIES.prefixOverride
|
|
48
|
+
});
|
|
49
|
+
registerInlineWidgetKind(kind, {
|
|
50
|
+
isWidget: () => true,
|
|
51
|
+
component: FootnoteReference,
|
|
52
|
+
editing: { revealSource: true, claimsActivationClick: true }
|
|
53
|
+
});
|
|
54
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GFM footnotes: a strip-container definition plus an inline-widget reference, which jump to
|
|
3
|
+
* each other off their own markers. Numbering is derived off the live document, so no counter
|
|
4
|
+
* is stored anywhere.
|
|
5
|
+
*/
|
|
6
|
+
import { type EditorPlugin } from '../../plugin';
|
|
7
|
+
export declare function footnotesPlugin(): EditorPlugin;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GFM footnotes: a strip-container definition plus an inline-widget reference, which jump to
|
|
3
|
+
* each other off their own markers. Numbering is derived off the live document, so no counter
|
|
4
|
+
* is stored anywhere.
|
|
5
|
+
*/
|
|
6
|
+
import { definePlugin } from '../../plugin';
|
|
7
|
+
import { registerFootnoteDefinition } from './footnote-definition';
|
|
8
|
+
import { registerFootnoteReference } from './footnote-reference';
|
|
9
|
+
export function footnotesPlugin() {
|
|
10
|
+
return definePlugin({
|
|
11
|
+
name: 'footnotes',
|
|
12
|
+
setup() {
|
|
13
|
+
registerFootnoteDefinition();
|
|
14
|
+
registerFootnoteReference();
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { footnotesPlugin } from './footnotes-plugin';
|
|
2
|
+
export { FOOTNOTE_DEF_KIND, FOOTNOTE_REF_KIND } from './constants';
|
|
3
|
+
export { assignFootnoteNumbers, collectFootnoteReferences } from './footnote-numbering';
|
|
4
|
+
export type { FootnoteReference } from './footnote-numbering';
|
|
5
|
+
export type { FootnoteDefMetadata } from './footnote-definition';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { footnotesPlugin } from './footnotes-plugin';
|
|
2
|
+
export { FOOTNOTE_DEF_KIND, FOOTNOTE_REF_KIND } from './constants';
|
|
3
|
+
// `footnoteNumbersFor` is deliberately absent: only a mounted widget can supply its
|
|
4
|
+
// content-version argument, and `InlineWidgetComponentProps.getContentVersion` is the
|
|
5
|
+
// reusable half of that recipe.
|
|
6
|
+
export { assignFootnoteNumbers, collectFootnoteReferences } from './footnote-numbering';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The decoration-source shape on public doors only: onEditor wires a mark source to the
|
|
3
|
+
* selection and edit channels, and the scan, its memo and the typing gate stay pure in
|
|
4
|
+
* the sibling modules.
|
|
5
|
+
*/
|
|
6
|
+
import { type EditorPlugin } from '../../plugin';
|
|
7
|
+
export interface HighlightOccurrencesOptions {
|
|
8
|
+
/**
|
|
9
|
+
* Called when the word index is rebuilt: on a document change, not on a caret move,
|
|
10
|
+
* carrying how many leaves that rebuild had to tokenize. Public so a harness asserts
|
|
11
|
+
* the memo against this wiring rather than a copy of it.
|
|
12
|
+
*/
|
|
13
|
+
onScan?: (stats: {
|
|
14
|
+
tokenizedLeaves: number;
|
|
15
|
+
}) => void;
|
|
16
|
+
}
|
|
17
|
+
export declare function highlightOccurrencesPlugin(options?: HighlightOccurrencesOptions): EditorPlugin;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The decoration-source shape on public doors only: onEditor wires a mark source to the
|
|
3
|
+
* selection and edit channels, and the scan, its memo and the typing gate stay pure in
|
|
4
|
+
* the sibling modules.
|
|
5
|
+
*/
|
|
6
|
+
import { definePlugin } from '../../plugin';
|
|
7
|
+
import { createOccurrenceSource } from './occurrence-source';
|
|
8
|
+
export function highlightOccurrencesPlugin(options = {}) {
|
|
9
|
+
return definePlugin({
|
|
10
|
+
name: 'highlight-occurrences',
|
|
11
|
+
setup(ctx) {
|
|
12
|
+
ctx.onEditor((editor) => {
|
|
13
|
+
const occurrences = createOccurrenceSource({ onScan: options.onScan });
|
|
14
|
+
const handle = editor.decorations.addSource(occurrences.source);
|
|
15
|
+
const offSelection = editor.events.on('selectionChange', (selection) => {
|
|
16
|
+
occurrences.setSelection(selection);
|
|
17
|
+
handle.invalidate();
|
|
18
|
+
});
|
|
19
|
+
const offEdit = editor.events.on('edit', ({ op }) => {
|
|
20
|
+
if (occurrences.noteEdit(op))
|
|
21
|
+
handle.invalidate();
|
|
22
|
+
});
|
|
23
|
+
return () => {
|
|
24
|
+
offSelection();
|
|
25
|
+
offEdit();
|
|
26
|
+
handle.dispose();
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|