@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,159 @@
|
|
|
1
|
+
import { resolvedInlineContent } from '../../core/inline/inline-cache';
|
|
2
|
+
import { flattenInlineWidgets } from '../../core/inline/inline-widgets';
|
|
3
|
+
import { createInlineRangeCommit } from '../../editor-actions/inline-range-commit';
|
|
4
|
+
import { FALLBACK_CONTENT_WIDTH } from '../../cursor/typography-estimates';
|
|
5
|
+
import { blockNodeAt } from '../../tree-operations/node-ops';
|
|
6
|
+
import { buildImageEditBytes } from './image-source-bytes';
|
|
7
|
+
export function createImageEditCommitter(deps) {
|
|
8
|
+
const { getDoc, getEditorEl, widgetSelection, controller, events } = deps;
|
|
9
|
+
const inlineRange = createInlineRangeCommit({ getDoc, controller, grammar: deps.grammar });
|
|
10
|
+
function findImageInParagraph(para, sourceStart) {
|
|
11
|
+
// Resolver-aware so a reference-style image resolves as the render path saw it,
|
|
12
|
+
// and flattened so an image nested in a link (`[![alt][ref]][repo]`) is found.
|
|
13
|
+
const inlines = resolvedInlineContent(para, deps.linkRef);
|
|
14
|
+
for (const widget of flattenInlineWidgets(inlines, para.raw)) {
|
|
15
|
+
if (widget.kind === 'image' && widget.start === sourceStart)
|
|
16
|
+
return widget;
|
|
17
|
+
}
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
function queryWidgetEl(paragraphPath, sourceStart) {
|
|
21
|
+
const root = getEditorEl();
|
|
22
|
+
if (!root)
|
|
23
|
+
return null;
|
|
24
|
+
// Locate by the live block-host path, never a baked attribute on the widget —
|
|
25
|
+
// see widget-dom.ts's click handler.
|
|
26
|
+
const host = root.querySelector(`[data-block-path='${JSON.stringify(paragraphPath)}']`);
|
|
27
|
+
if (!host)
|
|
28
|
+
return null;
|
|
29
|
+
return host.querySelector(`[data-image-widget][data-source-start="${sourceStart}"]`);
|
|
30
|
+
}
|
|
31
|
+
function getSelectedImageFields() {
|
|
32
|
+
const sel = widgetSelection.getSelected();
|
|
33
|
+
if (!sel)
|
|
34
|
+
return null;
|
|
35
|
+
const paragraph = blockNodeAt(getDoc(), sel.paragraphPath);
|
|
36
|
+
if (!paragraph)
|
|
37
|
+
return null;
|
|
38
|
+
const image = findImageInParagraph(paragraph, sel.sourceStart);
|
|
39
|
+
if (!image)
|
|
40
|
+
return null;
|
|
41
|
+
return { image, widgetEl: queryWidgetEl(sel.paragraphPath, sel.sourceStart) };
|
|
42
|
+
}
|
|
43
|
+
function resolveEdit(target, newFields) {
|
|
44
|
+
const paragraph = blockNodeAt(getDoc(), target.paragraphPath);
|
|
45
|
+
if (!paragraph)
|
|
46
|
+
return null;
|
|
47
|
+
const image = findImageInParagraph(paragraph, target.sourceStart);
|
|
48
|
+
if (!image)
|
|
49
|
+
return null;
|
|
50
|
+
// Preserve the reference form when url/title are untouched: inlining the
|
|
51
|
+
// resolved url would orphan the LRD. Changing either is the user opting in.
|
|
52
|
+
const fields = image.label !== undefined && newFields.url === image.url && newFields.title === image.title
|
|
53
|
+
? { ...newFields, label: image.label }
|
|
54
|
+
: newFields;
|
|
55
|
+
const bytes = buildImageEditBytes(image, paragraph.raw, fields);
|
|
56
|
+
return bytes === null ? null : { image, bytes };
|
|
57
|
+
}
|
|
58
|
+
function buildEditBytes(target, newFields) {
|
|
59
|
+
return resolveEdit(target, newFields)?.bytes ?? null;
|
|
60
|
+
}
|
|
61
|
+
function commitImageEdit(target, newFields) {
|
|
62
|
+
const edit = resolveEdit(target, newFields);
|
|
63
|
+
if (!edit)
|
|
64
|
+
return;
|
|
65
|
+
void inlineRange.commitInlineRange(target.paragraphPath, edit.image.start, edit.image.end, edit.bytes, 0);
|
|
66
|
+
}
|
|
67
|
+
function commitImageResize(newWidth, newHeight) {
|
|
68
|
+
const sel = widgetSelection.getSelected();
|
|
69
|
+
if (!sel)
|
|
70
|
+
return;
|
|
71
|
+
const ctx = getSelectedImageFields();
|
|
72
|
+
if (!ctx)
|
|
73
|
+
return;
|
|
74
|
+
const newFields = {
|
|
75
|
+
alt: ctx.image.alt ?? '',
|
|
76
|
+
url: ctx.image.url ?? '',
|
|
77
|
+
...(ctx.image.title !== undefined ? { title: ctx.image.title } : {}),
|
|
78
|
+
width: newWidth,
|
|
79
|
+
...(newHeight !== undefined ? { height: newHeight } : {})
|
|
80
|
+
};
|
|
81
|
+
commitImageEdit(sel, newFields);
|
|
82
|
+
}
|
|
83
|
+
function dismissImagePopover() {
|
|
84
|
+
widgetSelection.clear();
|
|
85
|
+
}
|
|
86
|
+
function getEditorContentWidth() {
|
|
87
|
+
return getEditorEl()?.clientWidth ?? FALLBACK_CONTENT_WIDTH;
|
|
88
|
+
}
|
|
89
|
+
function attachWidgetSelectListener() {
|
|
90
|
+
const root = getEditorEl();
|
|
91
|
+
if (!root)
|
|
92
|
+
return () => { };
|
|
93
|
+
const handler = (e) => widgetSelection.select(e.detail);
|
|
94
|
+
root.addEventListener('image-widget-select', handler);
|
|
95
|
+
return () => root.removeEventListener('image-widget-select', handler);
|
|
96
|
+
}
|
|
97
|
+
function syncOverlayToWidget(getOverlay) {
|
|
98
|
+
const noop = () => { };
|
|
99
|
+
const overlayEl = getOverlay();
|
|
100
|
+
const editorEl = getEditorEl();
|
|
101
|
+
if (!overlayEl || !editorEl)
|
|
102
|
+
return noop;
|
|
103
|
+
// Each commit rebuilds the inline DOM, so a captured widget ref would observe a
|
|
104
|
+
// detached node forever: re-resolve on every update and re-attach the observer
|
|
105
|
+
// when widget identity changes.
|
|
106
|
+
let observer = null;
|
|
107
|
+
let observed = null;
|
|
108
|
+
const update = () => {
|
|
109
|
+
const widgetEl = getSelectedImageFields()?.widgetEl;
|
|
110
|
+
if (!widgetEl)
|
|
111
|
+
return;
|
|
112
|
+
if (widgetEl !== observed) {
|
|
113
|
+
observer?.disconnect();
|
|
114
|
+
observer = new ResizeObserver(update);
|
|
115
|
+
observer.observe(widgetEl);
|
|
116
|
+
observed = widgetEl;
|
|
117
|
+
}
|
|
118
|
+
const wRect = widgetEl.getBoundingClientRect();
|
|
119
|
+
const eRect = editorEl.getBoundingClientRect();
|
|
120
|
+
const cs = getComputedStyle(editorEl);
|
|
121
|
+
const borderTop = parseFloat(cs.borderTopWidth) || 0;
|
|
122
|
+
const borderLeft = parseFloat(cs.borderLeftWidth) || 0;
|
|
123
|
+
overlayEl.style.top = `${wRect.top - eRect.top - borderTop + editorEl.scrollTop}px`;
|
|
124
|
+
overlayEl.style.left = `${wRect.left - eRect.left - borderLeft + editorEl.scrollLeft}px`;
|
|
125
|
+
overlayEl.style.width = `${wRect.width}px`;
|
|
126
|
+
overlayEl.style.height = `${wRect.height}px`;
|
|
127
|
+
};
|
|
128
|
+
update();
|
|
129
|
+
// Edits above the widget shift its y without resizing it.
|
|
130
|
+
const unsubscribeEdit = events.on('edit', update);
|
|
131
|
+
window.addEventListener('resize', update);
|
|
132
|
+
// Sibling images settling their dimensions shift the selected widget's y without
|
|
133
|
+
// resizing it, which the ResizeObserver never sees. Capture phase: neither
|
|
134
|
+
// event bubbles.
|
|
135
|
+
const onImgSettle = (e) => {
|
|
136
|
+
if (e.target instanceof HTMLImageElement)
|
|
137
|
+
update();
|
|
138
|
+
};
|
|
139
|
+
editorEl.addEventListener('load', onImgSettle, true);
|
|
140
|
+
editorEl.addEventListener('error', onImgSettle, true);
|
|
141
|
+
return () => {
|
|
142
|
+
observer?.disconnect();
|
|
143
|
+
unsubscribeEdit();
|
|
144
|
+
window.removeEventListener('resize', update);
|
|
145
|
+
editorEl.removeEventListener('load', onImgSettle, true);
|
|
146
|
+
editorEl.removeEventListener('error', onImgSettle, true);
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
return {
|
|
150
|
+
getSelectedImageFields,
|
|
151
|
+
commitImageEdit,
|
|
152
|
+
buildEditBytes,
|
|
153
|
+
commitImageResize,
|
|
154
|
+
dismissImagePopover,
|
|
155
|
+
getEditorContentWidth,
|
|
156
|
+
attachWidgetSelectListener,
|
|
157
|
+
syncOverlayToWidget
|
|
158
|
+
};
|
|
159
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const MIN_WIDTH = 16;
|
|
2
|
+
export declare function clampWidth(width: number, maxWidth: number): number;
|
|
3
|
+
export declare const KEYBOARD_MIN_WIDTH = 32;
|
|
4
|
+
export declare function keyboardResizeWidth(currentWidth: number, delta: number, maxWidth: number): number;
|
|
5
|
+
export declare function snapWidth(width: number, maxWidth: number, snapThresholdPx: number): number;
|
|
6
|
+
/**
|
|
7
|
+
* The height a release persists — the one the drag showed. An aspect-locked drag lets the height
|
|
8
|
+
* follow the width, so it persists `|N` and leaves the derivation to the renderer; an unlocked
|
|
9
|
+
* drag holds the height the image already had, which only the explicit `|NxM` form can carry.
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveDraggedHeight(aspectLocked: boolean, previewHeight: number): number | undefined;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// Pure math for image drag-to-resize: clamp, snap-to-percentage, aspect lock.
|
|
2
|
+
// No DOM — the handles component owns pointer events and calls these.
|
|
3
|
+
export const MIN_WIDTH = 16;
|
|
4
|
+
const SNAP_PERCENTAGES = [25, 50, 75, 100];
|
|
5
|
+
export function clampWidth(width, maxWidth) {
|
|
6
|
+
const rounded = Math.round(width);
|
|
7
|
+
if (rounded < MIN_WIDTH)
|
|
8
|
+
return MIN_WIDTH;
|
|
9
|
+
if (rounded > maxWidth)
|
|
10
|
+
return maxWidth;
|
|
11
|
+
return rounded;
|
|
12
|
+
}
|
|
13
|
+
// Above MIN_WIDTH so a held Shift+Arrow can't shrink an image to a sub-clickable
|
|
14
|
+
// sliver; the ceiling matches the drag path.
|
|
15
|
+
export const KEYBOARD_MIN_WIDTH = 32;
|
|
16
|
+
export function keyboardResizeWidth(currentWidth, delta, maxWidth) {
|
|
17
|
+
return clampWidth(Math.max(KEYBOARD_MIN_WIDTH, currentWidth + delta), maxWidth);
|
|
18
|
+
}
|
|
19
|
+
export function snapWidth(width, maxWidth, snapThresholdPx) {
|
|
20
|
+
const rounded = Math.round(width);
|
|
21
|
+
for (const pct of SNAP_PERCENTAGES) {
|
|
22
|
+
const target = Math.round((maxWidth * pct) / 100);
|
|
23
|
+
if (Math.abs(rounded - target) <= snapThresholdPx)
|
|
24
|
+
return target;
|
|
25
|
+
}
|
|
26
|
+
return rounded;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The height a release persists — the one the drag showed. An aspect-locked drag lets the height
|
|
30
|
+
* follow the width, so it persists `|N` and leaves the derivation to the renderer; an unlocked
|
|
31
|
+
* drag holds the height the image already had, which only the explicit `|NxM` form can carry.
|
|
32
|
+
*/
|
|
33
|
+
export function resolveDraggedHeight(aspectLocked, previewHeight) {
|
|
34
|
+
// A widget that never laid out reports 0; `|Nx0` is worse than no hint at all.
|
|
35
|
+
if (aspectLocked || previewHeight < 1)
|
|
36
|
+
return undefined;
|
|
37
|
+
return Math.round(previewHeight);
|
|
38
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ImageFields, InlineNode } from '../../core/nodes';
|
|
2
|
+
/**
|
|
3
|
+
* Bytes to splice over `image`'s range, or `null` when the edit must be declined. **Every image
|
|
4
|
+
* write path goes through here** (G4.21): a node an inline rung claimed re-serializes through that
|
|
5
|
+
* rung's `rewriteImage` hook, since built-in grammar over another syntax's bytes destroys them.
|
|
6
|
+
* Plugin-side contract: docs/design/plugin-contract.md § Inline authoring.
|
|
7
|
+
*/
|
|
8
|
+
export declare function buildImageEditBytes(image: InlineNode, blockRaw: string, fields: ImageFields): string | null;
|
|
9
|
+
/** Omits optional keys the node doesn't carry, so a rebuild writes back only what the
|
|
10
|
+
* source held. Byte-exactness is not the claim (the GFM serializer canonicalizes);
|
|
11
|
+
* idempotence on the alt is, so repeated resizes never grow the escapes. */
|
|
12
|
+
export declare function imageFieldsFromInline(image: InlineNode): ImageFields;
|
|
13
|
+
/** The built-in grammar's inverse. Reach it through `buildImageEditBytes`, the only
|
|
14
|
+
* caller entitled to decide these bytes are GFM's to write. */
|
|
15
|
+
export declare function buildImageSourceBytes(fields: ImageFields): string;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// Where an image edit becomes bytes: the claim dispatcher every write path calls, and
|
|
2
|
+
// under it the GFM branch. The two live together because G4.21 requires the image
|
|
3
|
+
// serializer to be named in exactly one module.
|
|
4
|
+
import { encodeDestination, escapeTitle } from '../../core/inline/destination-bytes';
|
|
5
|
+
import { devWarn } from '../../dev-warn';
|
|
6
|
+
// ── The write seam ──────────────────────────────────────────────────────────
|
|
7
|
+
/**
|
|
8
|
+
* Bytes to splice over `image`'s range, or `null` when the edit must be declined. **Every image
|
|
9
|
+
* write path goes through here** (G4.21): a node an inline rung claimed re-serializes through that
|
|
10
|
+
* rung's `rewriteImage` hook, since built-in grammar over another syntax's bytes destroys them.
|
|
11
|
+
* Plugin-side contract: docs/design/plugin-contract.md § Inline authoring.
|
|
12
|
+
*/
|
|
13
|
+
export function buildImageEditBytes(image, blockRaw, fields) {
|
|
14
|
+
const claim = image.syntaxClaim;
|
|
15
|
+
if (!claim)
|
|
16
|
+
return buildImageSourceBytes(fields);
|
|
17
|
+
const bytes = claim.rewriteImage?.(blockRaw.slice(image.start, image.end), fields) ?? null;
|
|
18
|
+
if (bytes === null) {
|
|
19
|
+
devWarn('image-edit', `declined: the "${claim.prefix}" inline rung owns these bytes and ` +
|
|
20
|
+
`${claim.rewriteImage ? 'its rewriteImage hook cannot represent this edit' : 'registered no rewriteImage hook'}`, fields);
|
|
21
|
+
}
|
|
22
|
+
return bytes;
|
|
23
|
+
}
|
|
24
|
+
/** Omits optional keys the node doesn't carry, so a rebuild writes back only what the
|
|
25
|
+
* source held. Byte-exactness is not the claim (the GFM serializer canonicalizes);
|
|
26
|
+
* idempotence on the alt is, so repeated resizes never grow the escapes. */
|
|
27
|
+
export function imageFieldsFromInline(image) {
|
|
28
|
+
return {
|
|
29
|
+
alt: image.alt ?? '',
|
|
30
|
+
url: image.url ?? '',
|
|
31
|
+
...(image.title !== undefined ? { title: image.title } : {}),
|
|
32
|
+
...(image.width !== undefined ? { width: image.width } : {}),
|
|
33
|
+
...(image.height !== undefined ? { height: image.height } : {}),
|
|
34
|
+
...(image.label !== undefined ? { label: image.label } : {})
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
// ── The GFM serializer ──────────────────────────────────────────────────────
|
|
38
|
+
/** The built-in grammar's inverse. Reach it through `buildImageEditBytes`, the only
|
|
39
|
+
* caller entitled to decide these bytes are GFM's to write. */
|
|
40
|
+
export function buildImageSourceBytes(fields) {
|
|
41
|
+
const dimSuffix = buildDimSuffix(fields.width, fields.height);
|
|
42
|
+
const altSegment = escapeAlt(fields.alt) + dimSuffix;
|
|
43
|
+
// Reference form: the dimension hint rides in the alt, and url/title are not
|
|
44
|
+
// written — they belong to the LRD.
|
|
45
|
+
if (fields.label !== undefined) {
|
|
46
|
+
return `![${altSegment}][${fields.label}]`;
|
|
47
|
+
}
|
|
48
|
+
const titleSegment = fields.title !== undefined ? ` "${escapeTitle(fields.title)}"` : '';
|
|
49
|
+
return `}${titleSegment})`;
|
|
50
|
+
}
|
|
51
|
+
function buildDimSuffix(width, height) {
|
|
52
|
+
if (width === undefined)
|
|
53
|
+
return '';
|
|
54
|
+
if (height === undefined)
|
|
55
|
+
return `|${width}`;
|
|
56
|
+
return `|${width}x${height}`;
|
|
57
|
+
}
|
|
58
|
+
// Alt sits inside `[...]`, where an unescaped bracket closes the scan early. Unlike
|
|
59
|
+
// `title` and `url` it carries RAW label bytes, so a blanket escape doubles every
|
|
60
|
+
// backslash per commit; passing any backslash PAIR through untouched keeps it idempotent.
|
|
61
|
+
function escapeAlt(alt) {
|
|
62
|
+
let out = '';
|
|
63
|
+
for (let i = 0; i < alt.length; i++) {
|
|
64
|
+
const ch = alt[i];
|
|
65
|
+
if (ch === '\\' && i + 1 < alt.length) {
|
|
66
|
+
out += ch + alt[i + 1];
|
|
67
|
+
i++;
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
out += ch === '[' || ch === ']' || ch === '\\' ? '\\' + ch : ch;
|
|
71
|
+
}
|
|
72
|
+
return out;
|
|
73
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The image widget's selected-key behavior: Shift+Arrow keyboard resize. Attached as
|
|
3
|
+
* the image kind's `onSelectedKey` at mount (built-in-blocks.ts), so the generic
|
|
4
|
+
* selected-widget keydown path stays kind-agnostic.
|
|
5
|
+
*/
|
|
6
|
+
import type { InlineWidgetEditingContext } from '../../core/inline/inline-widgets';
|
|
7
|
+
export declare function imageWidgetOnSelectedKey(e: KeyboardEvent, ctx: InlineWidgetEditingContext): boolean;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The image widget's selected-key behavior: Shift+Arrow keyboard resize. Attached as
|
|
3
|
+
* the image kind's `onSelectedKey` at mount (built-in-blocks.ts), so the generic
|
|
4
|
+
* selected-widget keydown path stays kind-agnostic.
|
|
5
|
+
*/
|
|
6
|
+
import { buildImageEditBytes } from './image-source-bytes';
|
|
7
|
+
import { keyboardResizeWidth } from './image-resize';
|
|
8
|
+
const KEYBOARD_STEP = 20;
|
|
9
|
+
const FALLBACK_DEFAULT_WIDTH = 400;
|
|
10
|
+
export function imageWidgetOnSelectedKey(e, ctx) {
|
|
11
|
+
// A resize is an edit; declining lets the caller's generic swallow keep the key inert.
|
|
12
|
+
if (ctx.presentationMode === 'reading')
|
|
13
|
+
return false;
|
|
14
|
+
if (!(e.shiftKey && (e.key === 'ArrowLeft' || e.key === 'ArrowRight')))
|
|
15
|
+
return false;
|
|
16
|
+
e.preventDefault();
|
|
17
|
+
const { inline, node } = ctx;
|
|
18
|
+
const delta = e.key === 'ArrowRight' ? KEYBOARD_STEP : -KEYBOARD_STEP;
|
|
19
|
+
const currentWidth = inline.width ?? FALLBACK_DEFAULT_WIDTH;
|
|
20
|
+
const newWidth = keyboardResizeWidth(currentWidth, delta, ctx.editorContentWidth);
|
|
21
|
+
// url and title are untouched, so carry the label through and preserve the
|
|
22
|
+
// `![alt][label]` form rather than inlining the LRD-resolved url.
|
|
23
|
+
const newFields = {
|
|
24
|
+
alt: inline.alt ?? '',
|
|
25
|
+
url: inline.url ?? '',
|
|
26
|
+
...(inline.title !== undefined ? { title: inline.title } : {}),
|
|
27
|
+
width: newWidth,
|
|
28
|
+
...(inline.height !== undefined
|
|
29
|
+
? { height: Math.round((newWidth / currentWidth) * inline.height) }
|
|
30
|
+
: {}),
|
|
31
|
+
...(inline.label !== undefined ? { label: inline.label } : {})
|
|
32
|
+
};
|
|
33
|
+
const newBytes = buildImageEditBytes(inline, node.raw, newFields);
|
|
34
|
+
// The rung owning these bytes cannot express the resize, but consume the key
|
|
35
|
+
// anyway: handing a Shift+Arrow on would extend the selection out of the image.
|
|
36
|
+
if (newBytes === null)
|
|
37
|
+
return true;
|
|
38
|
+
const newRaw = node.raw.slice(0, ctx.widgetStart) + newBytes + node.raw.slice(ctx.widgetEnd);
|
|
39
|
+
ctx.updateContent(newRaw, ctx.preSelectOffset, ctx.widgetStart + newBytes.length);
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { InlineNode } from '../../core/nodes';
|
|
2
|
+
import type { ImageLoadPolicy } from '../../core/inline-render';
|
|
3
|
+
export interface BuildImageWidgetOpts {
|
|
4
|
+
resolveImageUrl: (rawUrl: string) => string;
|
|
5
|
+
imageLoadPolicy?: ImageLoadPolicy;
|
|
6
|
+
/** Resolved URLs that failed to load this session, per editor instance. Inline
|
|
7
|
+
* rebuild creates a fresh <img> per keystroke, which without this renders
|
|
8
|
+
* unbroken until the async `error` re-fires — a flicker on every keystroke. */
|
|
9
|
+
brokenUrlCache: Set<string>;
|
|
10
|
+
}
|
|
11
|
+
export declare function buildImageWidget(node: InlineNode, _raw: string, opts: BuildImageWidgetOpts): HTMLSpanElement;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// The widget contributes its raw bytes via data-source-start/end, which
|
|
2
|
+
// `cursor/widget-offset.ts` reads; textContent stays empty so prose
|
|
3
|
+
// `textContent === ambientPrefix + raw` still holds.
|
|
4
|
+
import { isAllowedImageSrcScheme } from '../../core/url-policy';
|
|
5
|
+
import { findSurfacePathForElement } from '../../selection/path-lookup';
|
|
6
|
+
import { devWarn } from '../../dev-warn';
|
|
7
|
+
export function buildImageWidget(node, _raw, opts) {
|
|
8
|
+
const widget = document.createElement('span');
|
|
9
|
+
widget.className = 'md-image-widget';
|
|
10
|
+
// `data-inline-widget` is the shared atomic-widget marker read by the cursor
|
|
11
|
+
// walker, selection painter and raw reader; `data-image-widget` is image-specific.
|
|
12
|
+
widget.dataset.inlineWidget = '';
|
|
13
|
+
widget.dataset.imageWidget = '';
|
|
14
|
+
widget.dataset.sourceStart = String(node.start);
|
|
15
|
+
widget.dataset.sourceEnd = String(node.end);
|
|
16
|
+
widget.setAttribute('contenteditable', 'false');
|
|
17
|
+
// Select on `click`, never `pointerdown`: a pointerdown listener hijacks a gesture
|
|
18
|
+
// STARTING on the image, so no cross-block drag could originate here. Shift-click
|
|
19
|
+
// is a cross-block extension the block owns, so decline it.
|
|
20
|
+
widget.addEventListener('click', (e) => {
|
|
21
|
+
if (e.shiftKey)
|
|
22
|
+
return;
|
|
23
|
+
// Resolve the path live rather than baking it at build time: content inserted
|
|
24
|
+
// above shifts the block's path without touching its `raw`, so the render memo
|
|
25
|
+
// skips a rebuild and a baked path resolves the wrong CST node. The SURFACE door:
|
|
26
|
+
// inside a cell the block path stops at the table, whose offsets are cell indices.
|
|
27
|
+
const paragraphPath = findSurfacePathForElement(widget);
|
|
28
|
+
if (!paragraphPath)
|
|
29
|
+
return;
|
|
30
|
+
// Match TextEditableBlock.snapClickToWidgetEdge, which lands the caret at the
|
|
31
|
+
// widget's right edge, so Ctrl+Z restores the click's visual landing.
|
|
32
|
+
const event = new CustomEvent('image-widget-select', {
|
|
33
|
+
bubbles: true,
|
|
34
|
+
detail: {
|
|
35
|
+
paragraphPath,
|
|
36
|
+
sourceStart: node.start,
|
|
37
|
+
preSelectOffset: node.end
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
widget.dispatchEvent(event);
|
|
41
|
+
});
|
|
42
|
+
const img = document.createElement('img');
|
|
43
|
+
// A default-draggable <img> starts a native HTML5 drag that swallows the
|
|
44
|
+
// pointermove stream a cross-block drag needs.
|
|
45
|
+
img.draggable = false;
|
|
46
|
+
img.alt = node.alt ?? '';
|
|
47
|
+
const resolvedUrl = safeResolve(opts.resolveImageUrl, node.url ?? '');
|
|
48
|
+
const policy = opts.imageLoadPolicy ?? 'auto';
|
|
49
|
+
if (!isAllowedImageSrcScheme(resolvedUrl)) {
|
|
50
|
+
widget.classList.add('md-image-blocked');
|
|
51
|
+
}
|
|
52
|
+
else if (policy === 'placeholder') {
|
|
53
|
+
widget.classList.add('md-image-placeholder');
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
img.src = resolvedUrl;
|
|
57
|
+
}
|
|
58
|
+
if (node.title)
|
|
59
|
+
img.title = node.title;
|
|
60
|
+
if (node.width !== undefined)
|
|
61
|
+
img.setAttribute('width', String(node.width));
|
|
62
|
+
if (node.height !== undefined)
|
|
63
|
+
img.setAttribute('height', String(node.height));
|
|
64
|
+
// A declared `|WxH` box belongs to the author, so it both reserves space before the bytes
|
|
65
|
+
// arrive and survives the decode: the attribute pair alone loses to the natural ratio the
|
|
66
|
+
// moment `height: auto` has one to read.
|
|
67
|
+
if (node.width !== undefined && node.height !== undefined) {
|
|
68
|
+
img.style.aspectRatio = `${node.width} / ${node.height}`;
|
|
69
|
+
}
|
|
70
|
+
const markBroken = () => {
|
|
71
|
+
opts.brokenUrlCache.add(resolvedUrl);
|
|
72
|
+
widget.classList.add('md-image-broken');
|
|
73
|
+
};
|
|
74
|
+
// Broken means the request finished and produced nothing to lay out, so each site
|
|
75
|
+
// establishes completion itself: `complete` here, by definition in the load listener.
|
|
76
|
+
const hasNoIntrinsicSize = () => img.naturalWidth === 0;
|
|
77
|
+
// Only a loaded image can be broken: a blocked/placeholder widget leaves src unset,
|
|
78
|
+
// and an unset <img> reports complete && naturalWidth === 0 in a real browser.
|
|
79
|
+
if (img.src && (opts.brokenUrlCache.has(resolvedUrl) || (img.complete && hasNoIntrinsicSize()))) {
|
|
80
|
+
markBroken();
|
|
81
|
+
}
|
|
82
|
+
img.addEventListener('error', markBroken);
|
|
83
|
+
// A load event is not proof of success: a 200 the decoder cannot size (truncated
|
|
84
|
+
// body, an SVG with no intrinsic dimensions) fires `load` with naturalWidth 0, and
|
|
85
|
+
// deferring that to the next rebuild leaves the placeholder a render behind.
|
|
86
|
+
img.addEventListener('load', () => {
|
|
87
|
+
if (hasNoIntrinsicSize()) {
|
|
88
|
+
markBroken();
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
opts.brokenUrlCache.delete(resolvedUrl);
|
|
92
|
+
widget.classList.remove('md-image-broken');
|
|
93
|
+
});
|
|
94
|
+
widget.appendChild(img);
|
|
95
|
+
return widget;
|
|
96
|
+
}
|
|
97
|
+
function safeResolve(resolver, url) {
|
|
98
|
+
try {
|
|
99
|
+
const out = resolver(url);
|
|
100
|
+
if (typeof out !== 'string') {
|
|
101
|
+
devWarn('image-widget', 'resolveImageUrl returned non-string; falling back to raw URL');
|
|
102
|
+
return url;
|
|
103
|
+
}
|
|
104
|
+
return out;
|
|
105
|
+
}
|
|
106
|
+
catch (e) {
|
|
107
|
+
devWarn('image-widget', 'resolveImageUrl threw', e);
|
|
108
|
+
return url;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** What an outside-press dismiss handler must NOT treat as outside: the widget itself and
|
|
2
|
+
* the overlay chrome anchored to it. One string, because both handlers must move together. */
|
|
3
|
+
export declare const IMAGE_CHROME_SELECTOR = "[data-image-widget], [data-image-overlay]";
|
|
4
|
+
export interface WidgetTarget {
|
|
5
|
+
paragraphPath: number[];
|
|
6
|
+
sourceStart: number;
|
|
7
|
+
preSelectOffset: number;
|
|
8
|
+
}
|
|
9
|
+
export interface WidgetSelectionState {
|
|
10
|
+
getSelected(): WidgetTarget | null;
|
|
11
|
+
select(target: WidgetTarget): void;
|
|
12
|
+
clear(): void;
|
|
13
|
+
isSelected(paragraphPath: number[], sourceStart: number): boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface CreateWidgetSelectionOpts {
|
|
16
|
+
onSelect: () => void;
|
|
17
|
+
}
|
|
18
|
+
export declare function createWidgetSelectionState(opts: CreateWidgetSelectionOpts): WidgetSelectionState;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// Image-widget selection is mutually exclusive with caret and cross-block
|
|
2
|
+
// selection; `select` fires `onSelect` so the editor shell can clear the others.
|
|
3
|
+
import { pathsEqual } from '../../selection/path-math';
|
|
4
|
+
/** What an outside-press dismiss handler must NOT treat as outside: the widget itself and
|
|
5
|
+
* the overlay chrome anchored to it. One string, because both handlers must move together. */
|
|
6
|
+
export const IMAGE_CHROME_SELECTOR = '[data-image-widget], [data-image-overlay]';
|
|
7
|
+
export function createWidgetSelectionState(opts) {
|
|
8
|
+
let selected = $state(null);
|
|
9
|
+
return {
|
|
10
|
+
getSelected: () => selected,
|
|
11
|
+
select: (target) => {
|
|
12
|
+
selected = {
|
|
13
|
+
paragraphPath: [...target.paragraphPath],
|
|
14
|
+
sourceStart: target.sourceStart,
|
|
15
|
+
preSelectOffset: target.preSelectOffset
|
|
16
|
+
};
|
|
17
|
+
opts.onSelect();
|
|
18
|
+
},
|
|
19
|
+
clear: () => {
|
|
20
|
+
selected = null;
|
|
21
|
+
},
|
|
22
|
+
isSelected: (path, start) => selected !== null &&
|
|
23
|
+
selected.sourceStart === start &&
|
|
24
|
+
pathsEqual(selected.paragraphPath, path)
|
|
25
|
+
};
|
|
26
|
+
}
|