@voithos-labs/aragonite 0.10.3 → 0.10.7
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/README.md +2 -2
- package/dist/a11y-strings.d.ts +12 -5
- package/dist/a11y-strings.js +61 -5
- package/dist/action-contracts.d.ts +242 -155
- package/dist/action-contracts.js +2 -2
- package/dist/active-editor.d.ts +3 -3
- package/dist/active-editor.js +8 -9
- package/dist/ambient/ambient-dom.d.ts +2 -5
- package/dist/ambient/ambient-dom.js +16 -62
- package/dist/assert.js +6 -5
- package/dist/block-component.d.ts +135 -109
- package/dist/block-component.js +30 -22
- package/dist/block-id.d.ts +6 -10
- package/dist/block-id.js +25 -14
- package/dist/bounded-memo.d.ts +5 -5
- package/dist/bounded-memo.js +6 -6
- package/dist/components/BlockDragHandle.svelte +13 -20
- package/dist/components/BlockHost.svelte +56 -134
- package/dist/components/BlockList.svelte +22 -19
- package/dist/components/DecorationOverlay.svelte +9 -10
- package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
- package/dist/components/Editor.svelte +619 -1089
- package/dist/components/Editor.svelte.d.ts +9 -20
- package/dist/components/GapCaret.svelte +26 -59
- package/dist/components/SelectionOverlay.svelte +36 -67
- package/dist/components/SelectionOverlay.svelte.d.ts +6 -4
- package/dist/components/TailInsert.svelte +8 -55
- package/dist/components/TailInsert.svelte.d.ts +4 -6
- package/dist/components/block-content-selector.d.ts +11 -11
- package/dist/components/block-content-selector.js +11 -11
- package/dist/components/block-el-lookup.d.ts +6 -0
- package/dist/components/block-el-lookup.js +27 -0
- package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
- package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
- package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
- package/dist/components/blocks/code/CodeBlock.svelte +255 -276
- package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
- package/dist/components/blocks/code/CodeBlockRail.svelte +103 -100
- package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
- package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
- package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
- package/dist/components/blocks/code/code-bootstrap.js +35 -28
- package/dist/components/blocks/code/code-context-actions.js +5 -4
- package/dist/components/blocks/code/code-enter.js +2 -2
- package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
- package/dist/components/blocks/code/code-fence-boundary.js +40 -66
- package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
- package/dist/components/blocks/code/code-fence-exit.js +24 -25
- package/dist/components/blocks/code/code-indent.d.ts +2 -2
- package/dist/components/blocks/code/code-indent.js +4 -7
- package/dist/components/blocks/code/code-languages.d.ts +16 -12
- package/dist/components/blocks/code/code-languages.js +58 -32
- package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
- package/dist/components/blocks/code/code-paste-surface.js +9 -18
- package/dist/components/blocks/code/code-renderer.d.ts +21 -5
- package/dist/components/blocks/code/code-renderer.js +90 -125
- package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
- package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
- package/dist/components/blocks/directive/activate-directives.js +18 -13
- package/dist/components/blocks/editable-leaf.d.ts +50 -74
- package/dist/components/blocks/editable-leaf.js +144 -202
- package/dist/components/blocks/editable-surface.d.ts +96 -100
- package/dist/components/blocks/editable-surface.js +101 -109
- package/dist/components/blocks/list/ListBlock.svelte +46 -90
- package/dist/components/blocks/list/ListItemBlock.svelte +99 -144
- package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +3 -0
- package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
- package/dist/components/blocks/list/task-checkbox.js +12 -7
- package/dist/components/blocks/plain-text-backend.d.ts +4 -20
- package/dist/components/blocks/plain-text-backend.js +9 -43
- package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
- package/dist/components/blocks/surface-wiring.svelte.js +15 -34
- package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
- package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
- package/dist/components/blocks/table/TableBlock.svelte +100 -165
- package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
- package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
- package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
- package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
- package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
- package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
- package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
- package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
- package/dist/components/blocks/table/cell-pointer.js +49 -71
- package/dist/components/blocks/table/cell-render.d.ts +24 -29
- package/dist/components/blocks/table/cell-render.js +29 -31
- package/dist/components/blocks/table/selected-cells.d.ts +7 -7
- package/dist/components/blocks/table/selected-cells.js +9 -13
- package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
- package/dist/components/blocks/table/table-caret-at-point.js +5 -5
- package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
- package/dist/components/blocks/table/table-cell-paste.js +27 -43
- package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
- package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
- package/dist/components/blocks/table/table-menu-model.js +6 -10
- package/dist/components/blocks/table/table-navigation.js +2 -2
- package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
- package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
- package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
- package/dist/components/blocks/text/auto-pair-record.js +51 -0
- package/dist/components/blocks/text/click-snap-guard.d.ts +9 -4
- package/dist/components/blocks/text/click-snap-guard.js +16 -5
- package/dist/components/blocks/text/composition-seat.d.ts +17 -14
- package/dist/components/blocks/text/composition-seat.js +11 -11
- package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
- package/dist/components/blocks/text/construct-edge-delete.js +50 -65
- package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
- package/dist/components/blocks/text/construct-reveal.js +13 -14
- package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
- package/dist/components/blocks/text/delimiter-autopair.js +87 -103
- package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
- package/dist/components/blocks/text/edge-policy-dispatch.js +164 -180
- package/dist/components/blocks/text/edge-seat.d.ts +17 -26
- package/dist/components/blocks/text/edge-seat.js +43 -70
- package/dist/components/blocks/text/link-at-point.d.ts +9 -9
- package/dist/components/blocks/text/link-at-point.js +12 -15
- package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
- package/dist/components/blocks/text/live-join-seam.js +75 -112
- package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
- package/dist/components/blocks/text/live-selection-edit.js +32 -105
- package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
- package/dist/components/blocks/text/live-split-rebalance.js +50 -67
- package/dist/components/blocks/text/marker-completion.d.ts +7 -12
- package/dist/components/blocks/text/marker-completion.js +17 -10
- package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
- package/dist/components/blocks/text/pending-mark-insert.js +30 -49
- package/dist/components/blocks/text/screen-diff.d.ts +5 -15
- package/dist/components/blocks/text/screen-diff.js +5 -19
- package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
- package/dist/components/blocks/text/text-clipboard.js +27 -32
- package/dist/components/blocks/text/text-keydown.d.ts +20 -30
- package/dist/components/blocks/text/text-keydown.js +54 -51
- package/dist/components/blocks/text/text-render.d.ts +25 -35
- package/dist/components/blocks/text/text-render.js +82 -61
- package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
- package/dist/components/blocks/text/widget-adjacency.js +17 -17
- package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
- package/dist/components/blocks/text/widget-interaction.js +243 -208
- package/dist/components/blocks/widget-portal.d.ts +20 -29
- package/dist/components/blocks/widget-portal.js +16 -14
- package/dist/components/built-in-blocks.d.ts +3 -4
- package/dist/components/built-in-blocks.js +17 -18
- package/dist/components/drag-handle.d.ts +13 -30
- package/dist/components/drag-handle.js +25 -63
- package/dist/components/editor-built-ins.d.ts +1 -0
- package/dist/components/editor-built-ins.js +16 -0
- package/dist/components/editor-root-clipboard.d.ts +6 -6
- package/dist/components/editor-root-clipboard.js +16 -27
- package/dist/components/editor-root-document-swap.d.ts +49 -0
- package/dist/components/editor-root-document-swap.js +54 -0
- package/dist/components/editor-root-focus.d.ts +5 -4
- package/dist/components/editor-root-focus.js +51 -22
- package/dist/components/editor-root-focused-surface.d.ts +35 -0
- package/dist/components/editor-root-focused-surface.js +65 -0
- package/dist/components/editor-root-geometry.d.ts +15 -24
- package/dist/components/editor-root-geometry.js +27 -31
- package/dist/components/editor-root-gestures.d.ts +39 -0
- package/dist/components/editor-root-gestures.js +189 -0
- package/dist/components/editor-root-keydown.d.ts +10 -25
- package/dist/components/editor-root-keydown.js +19 -43
- package/dist/components/editor-root-listeners.d.ts +22 -31
- package/dist/components/editor-root-listeners.js +49 -46
- package/dist/components/editor-root-menus.d.ts +51 -0
- package/dist/components/editor-root-menus.js +147 -0
- package/dist/components/editor-root-mode-flip.d.ts +16 -11
- package/dist/components/editor-root-mode-flip.js +36 -34
- package/dist/components/editor-root-scroll-host.d.ts +22 -0
- package/dist/components/editor-root-scroll-host.js +34 -0
- package/dist/components/editor-root-test-surface.d.ts +48 -0
- package/dist/components/editor-root-test-surface.js +6 -0
- package/dist/components/image/ImageOverlayHost.svelte +44 -35
- package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
- package/dist/components/image/ImageProperties.svelte +37 -41
- package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
- package/dist/components/image/ImageResizeHandles.svelte +26 -30
- package/dist/components/image/image-crop.d.ts +5 -11
- package/dist/components/image/image-crop.js +5 -11
- package/dist/components/image/image-edit-commit.d.ts +19 -16
- package/dist/components/image/image-edit-commit.js +74 -38
- package/dist/components/image/image-resize.d.ts +2 -5
- package/dist/components/image/image-resize.js +3 -6
- package/dist/components/image/image-widget-editing.d.ts +3 -3
- package/dist/components/image/image-widget-editing.js +9 -9
- package/dist/components/image/widget-dom.d.ts +2 -3
- package/dist/components/image/widget-dom.js +19 -24
- package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
- package/dist/components/image/widget-selection-state.svelte.js +26 -19
- package/dist/components/kind-cue.svelte.d.ts +21 -0
- package/dist/components/kind-cue.svelte.js +35 -0
- package/dist/components/link-card/LinkCard.svelte +115 -64
- package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
- package/dist/components/link-card/LinkCardHost.svelte +42 -33
- package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
- package/dist/components/link-card/link-card-commit.d.ts +16 -19
- package/dist/components/link-card/link-card-commit.js +21 -30
- package/dist/components/link-card/link-card-entry.d.ts +13 -23
- package/dist/components/link-card/link-card-entry.js +16 -24
- package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
- package/dist/components/link-card/link-card-state.svelte.js +2 -2
- package/dist/components/lrd-map-gate.d.ts +4 -11
- package/dist/components/lrd-map-gate.js +5 -11
- package/dist/components/menu/BlockMenu.svelte +20 -81
- package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
- package/dist/components/menu/InlineMenuHost.svelte +191 -0
- package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
- package/dist/components/menu/MenuIcon.svelte +3 -103
- package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
- package/dist/components/menu/SelectionToolbar.svelte +380 -0
- package/dist/components/menu/SelectionToolbar.svelte.d.ts +14 -0
- package/dist/components/menu/clipboard-actions.d.ts +3 -4
- package/dist/components/menu/clipboard-actions.js +3 -4
- package/dist/components/menu/default-context-actions.d.ts +4 -13
- package/dist/components/menu/default-context-actions.js +49 -67
- package/dist/components/menu/flyout-placement.d.ts +2 -2
- package/dist/components/menu/flyout-placement.js +2 -2
- package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
- package/dist/components/menu/menu-presence.svelte.js +19 -0
- package/dist/components/paste-image-arm.d.ts +6 -11
- package/dist/components/paste-image-arm.js +11 -18
- package/dist/components/portal.d.ts +2 -5
- package/dist/components/portal.js +4 -7
- package/dist/core/directive/activate.d.ts +4 -5
- package/dist/core/directive/activate.js +8 -9
- package/dist/core/directive/container-opener.js +13 -12
- package/dist/core/directive/grammar.d.ts +2 -5
- package/dist/core/directive/grammar.js +10 -10
- package/dist/core/directive/kinds.d.ts +4 -7
- package/dist/core/directive/kinds.js +14 -16
- package/dist/core/directive/registry.d.ts +12 -9
- package/dist/core/directive/registry.js +19 -20
- package/dist/core/directive/text-recognizer.d.ts +3 -2
- package/dist/core/directive/text-recognizer.js +5 -9
- package/dist/core/escapable.d.ts +1 -5
- package/dist/core/escapable.js +1 -5
- package/dist/core/inline/backticks.d.ts +3 -4
- package/dist/core/inline/backticks.js +3 -4
- package/dist/core/inline/character-refs.js +2 -1
- package/dist/core/inline/destination-bytes.d.ts +6 -3
- package/dist/core/inline/destination-bytes.js +50 -8
- package/dist/core/inline/entity-widget.d.ts +4 -3
- package/dist/core/inline/entity-widget.js +6 -6
- package/dist/core/inline/format-toggle.d.ts +22 -28
- package/dist/core/inline/format-toggle.js +97 -129
- package/dist/core/inline/html-entities.d.ts +2 -3
- package/dist/core/inline/html-entities.js +2 -3
- package/dist/core/inline/html-tag-grammar.js +6 -2
- package/dist/core/inline/image-dimensions.d.ts +2 -0
- package/dist/core/inline/image-dimensions.js +19 -2
- package/dist/core/inline/image-source-bytes.d.ts +11 -0
- package/dist/core/inline/image-source-bytes.js +71 -0
- package/dist/core/inline/index.d.ts +28 -21
- package/dist/core/inline/index.js +56 -34
- package/dist/core/inline/inline-cache.d.ts +12 -15
- package/dist/core/inline/inline-cache.js +11 -14
- package/dist/core/inline/inline-widgets.d.ts +55 -68
- package/dist/core/inline/inline-widgets.js +55 -58
- package/dist/core/inline/link-destination.d.ts +31 -0
- package/dist/core/inline/link-destination.js +129 -0
- package/dist/core/inline/link-reference-resolver.d.ts +8 -6
- package/dist/core/inline/link-reference-resolver.js +10 -6
- package/dist/core/inline/link-source-bytes.d.ts +31 -0
- package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
- package/dist/core/inline/live-edit/read-back.d.ts +29 -0
- package/dist/core/inline/live-edit/read-back.js +50 -0
- package/dist/core/inline/picture.d.ts +10 -0
- package/dist/core/inline/picture.js +40 -0
- package/dist/core/inline/scan/autolinks.d.ts +7 -8
- package/dist/core/inline/scan/autolinks.js +80 -59
- package/dist/core/inline/scan/brackets.d.ts +2 -2
- package/dist/core/inline/scan/brackets.js +6 -103
- package/dist/core/inline/scan/code-spans.d.ts +4 -0
- package/dist/core/inline/scan/code-spans.js +8 -0
- package/dist/core/inline/scan/emphasis.js +10 -14
- package/dist/core/inline/scan/index.d.ts +3 -1
- package/dist/core/inline/scan/index.js +32 -33
- package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
- package/dist/core/inline/scan/plugin-syntax.js +75 -89
- package/dist/core/inline/scan/scan-state.d.ts +2 -0
- package/dist/core/inline/scan/scan-state.js +1 -0
- package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
- package/dist/core/inline/scan/simple-nodes.js +2 -5
- package/dist/core/inline/scan/triggers.d.ts +17 -0
- package/dist/core/inline/scan/triggers.js +26 -0
- package/dist/core/inline/scan/url.js +8 -10
- package/dist/core/inline/transparency.d.ts +2 -1
- package/dist/core/inline/transparency.js +33 -17
- package/dist/core/inline/visibility.d.ts +30 -49
- package/dist/core/inline/visibility.js +31 -49
- package/dist/core/inline/walk.d.ts +4 -10
- package/dist/core/inline/walk.js +4 -10
- package/dist/core/inline-render.d.ts +22 -27
- package/dist/core/inline-render.js +51 -60
- package/dist/core/lines.d.ts +67 -26
- package/dist/core/lines.js +164 -33
- package/dist/core/metadata-parity.d.ts +9 -0
- package/dist/core/metadata-parity.js +25 -0
- package/dist/core/node-views.d.ts +7 -6
- package/dist/core/node-views.js +5 -5
- package/dist/core/nodes.d.ts +34 -44
- package/dist/core/nodes.js +4 -12
- package/dist/core/parser.d.ts +27 -34
- package/dist/core/parser.js +53 -67
- package/dist/core/parsers/blockquote.d.ts +5 -8
- package/dist/core/parsers/blockquote.js +11 -10
- package/dist/core/parsers/built-in-openers.d.ts +2 -5
- package/dist/core/parsers/built-in-openers.js +5 -8
- package/dist/core/parsers/fence-syntax.d.ts +36 -7
- package/dist/core/parsers/fence-syntax.js +61 -11
- package/dist/core/parsers/fenced-code.d.ts +16 -0
- package/dist/core/parsers/fenced-code.js +16 -15
- package/dist/core/parsers/heading.d.ts +19 -2
- package/dist/core/parsers/heading.js +50 -2
- package/dist/core/parsers/html-block.d.ts +3 -6
- package/dist/core/parsers/html-block.js +10 -11
- package/dist/core/parsers/indented-code.d.ts +1 -1
- package/dist/core/parsers/indented-code.js +2 -8
- package/dist/core/parsers/link-reference.d.ts +5 -3
- package/dist/core/parsers/link-reference.js +116 -120
- package/dist/core/parsers/list.d.ts +12 -5
- package/dist/core/parsers/list.js +53 -36
- package/dist/core/parsers/paragraph.d.ts +3 -3
- package/dist/core/parsers/paragraph.js +14 -5
- package/dist/core/parsers/table-completion.d.ts +2 -5
- package/dist/core/parsers/table-completion.js +7 -10
- package/dist/core/parsers/table.d.ts +8 -8
- package/dist/core/parsers/table.js +23 -26
- package/dist/core/parsers/thematic-break.js +15 -14
- package/dist/core/paths.d.ts +13 -0
- package/dist/core/paths.js +31 -0
- package/dist/core/terminator-escalation.d.ts +0 -7
- package/dist/core/terminator-escalation.js +5 -8
- package/dist/core/url-policy.d.ts +2 -5
- package/dist/core/url-policy.js +8 -12
- package/dist/cursor/caret-memory.d.ts +34 -0
- package/dist/cursor/caret-memory.js +82 -0
- package/dist/cursor/coordinate-spaces.d.ts +26 -19
- package/dist/cursor/coordinate-spaces.js +32 -20
- package/dist/cursor/dom-walk.d.ts +7 -13
- package/dist/cursor/dom-walk.js +7 -13
- package/dist/cursor/edge-affinity.d.ts +7 -35
- package/dist/cursor/edge-affinity.js +13 -44
- package/dist/cursor/focused-caret.d.ts +6 -8
- package/dist/cursor/focused-caret.js +7 -16
- package/dist/cursor/height-model.d.ts +3 -3
- package/dist/cursor/height-model.js +5 -5
- package/dist/cursor/height-oracle.d.ts +10 -7
- package/dist/cursor/height-oracle.js +26 -75
- package/dist/cursor/observe-resize.d.ts +13 -0
- package/dist/cursor/observe-resize.js +43 -0
- package/dist/cursor/overlay-rects.d.ts +2 -5
- package/dist/cursor/overlay-rects.js +2 -5
- package/dist/cursor/overlay-remeasure.d.ts +6 -7
- package/dist/cursor/overlay-remeasure.js +10 -14
- package/dist/cursor/pending-marks.d.ts +7 -9
- package/dist/cursor/pending-marks.js +6 -27
- package/dist/cursor/point-offset.d.ts +16 -10
- package/dist/cursor/point-offset.js +60 -25
- package/dist/cursor/reveal-source.d.ts +7 -11
- package/dist/cursor/reveal-source.js +10 -18
- package/dist/cursor/scroll-ancestors.d.ts +9 -20
- package/dist/cursor/scroll-ancestors.js +14 -26
- package/dist/cursor/scroll-owner.d.ts +92 -0
- package/dist/cursor/scroll-owner.js +283 -0
- package/dist/cursor/scrollport.d.ts +16 -8
- package/dist/cursor/scrollport.js +28 -5
- package/dist/cursor/sticky-column.d.ts +6 -29
- package/dist/cursor/sticky-column.js +6 -49
- package/dist/cursor/sticky-measure.d.ts +14 -9
- package/dist/cursor/sticky-measure.js +99 -49
- package/dist/cursor/surface-backend.d.ts +41 -0
- package/dist/cursor/surface-backend.js +78 -0
- package/dist/cursor/typography-estimates.d.ts +3 -3
- package/dist/cursor/typography-estimates.js +3 -3
- package/dist/cursor/visual-lines.d.ts +25 -13
- package/dist/cursor/visual-lines.js +72 -28
- package/dist/cursor/widget-edge-snap.d.ts +23 -0
- package/dist/cursor/widget-edge-snap.js +39 -0
- package/dist/cursor/widget-offset.d.ts +111 -102
- package/dist/cursor/widget-offset.js +352 -177
- package/dist/debug/diagnostics-report.d.ts +6 -6
- package/dist/debug/diagnostics-report.js +5 -5
- package/dist/debug/dump-tree.js +2 -2
- package/dist/debug/editor-diagnostics.d.ts +15 -0
- package/dist/debug/editor-diagnostics.js +33 -0
- package/dist/debug/inspect.d.ts +2 -2
- package/dist/debug/inspect.js +4 -4
- package/dist/debug/interaction-trace.d.ts +14 -15
- package/dist/debug/interaction-trace.js +19 -20
- package/dist/debug/operations-log.d.ts +1 -1
- package/dist/debug/operations-log.js +1 -1
- package/dist/decorations/buckets.d.ts +6 -12
- package/dist/decorations/buckets.js +4 -11
- package/dist/decorations/decoration-state.svelte.d.ts +2 -3
- package/dist/decorations/decoration-state.svelte.js +24 -26
- package/dist/decorations/island-dom.d.ts +10 -18
- package/dist/decorations/island-dom.js +25 -50
- package/dist/decorations/reserved-attrs.d.ts +6 -8
- package/dist/decorations/reserved-attrs.js +31 -17
- package/dist/decorations/types.d.ts +6 -7
- package/dist/decorations/types.js +2 -1
- package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
- package/dist/decorations/use-block-decorations.svelte.js +71 -0
- package/dist/decorations/widget-dom.d.ts +3 -3
- package/dist/decorations/widget-dom.js +5 -5
- package/dist/dev-warn.d.ts +5 -2
- package/dist/dev-warn.js +16 -4
- package/dist/editor-actions/ancestry-folds.d.ts +9 -14
- package/dist/editor-actions/ancestry-folds.js +13 -18
- package/dist/editor-actions/block-edit-core.d.ts +49 -22
- package/dist/editor-actions/block-edit-core.js +279 -151
- package/dist/editor-actions/block-edit-scope.d.ts +63 -50
- package/dist/editor-actions/block-edit-scope.js +100 -48
- package/dist/editor-actions/block-edit.d.ts +2 -3
- package/dist/editor-actions/block-edit.js +14 -90
- package/dist/editor-actions/commit/history.d.ts +4 -4
- package/dist/editor-actions/commit/history.js +33 -34
- package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
- package/dist/editor-actions/commit/reading-write-gate.js +56 -0
- package/dist/editor-actions/commit/text-batch.d.ts +7 -11
- package/dist/editor-actions/commit/text-batch.js +6 -7
- package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
- package/dist/editor-actions/commit/undo-controller.js +346 -216
- package/dist/editor-actions/container-block-component.d.ts +32 -51
- package/dist/editor-actions/container-block-component.js +66 -92
- package/dist/editor-actions/container-edit.d.ts +4 -2
- package/dist/editor-actions/container-edit.js +14 -44
- package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
- package/dist/editor-actions/container-exit-overrides.js +19 -21
- package/dist/editor-actions/deps.d.ts +25 -32
- package/dist/editor-actions/enter-completion.d.ts +12 -15
- package/dist/editor-actions/enter-completion.js +49 -51
- package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
- package/dist/editor-actions/focus/focus-dispatch.js +33 -52
- package/dist/editor-actions/focus/focus-landing.d.ts +11 -5
- package/dist/editor-actions/focus/focus-landing.js +29 -14
- package/dist/editor-actions/focus/focus.d.ts +3 -2
- package/dist/editor-actions/focus/focus.js +42 -59
- package/dist/editor-actions/index.d.ts +4 -3
- package/dist/editor-actions/index.js +5 -4
- package/dist/editor-actions/inline-range-commit.d.ts +18 -16
- package/dist/editor-actions/inline-range-commit.js +45 -54
- package/dist/editor-actions/leaf-write.d.ts +11 -0
- package/dist/editor-actions/leaf-write.js +102 -0
- package/dist/editor-actions/list-context.d.ts +9 -10
- package/dist/editor-actions/list-context.js +115 -110
- package/dist/editor-actions/list-overrides.d.ts +13 -5
- package/dist/editor-actions/list-overrides.js +36 -12
- package/dist/editor-actions/merge-fallback.d.ts +10 -16
- package/dist/editor-actions/merge-fallback.js +11 -22
- package/dist/editor-actions/nested/container-actions.d.ts +37 -0
- package/dist/editor-actions/nested/container-actions.js +42 -0
- package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
- package/dist/editor-actions/nested/emptied-container.js +5 -0
- package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
- package/dist/editor-actions/nested/nested-actions.js +17 -15
- package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
- package/dist/editor-actions/nested/nested-block-edit.js +40 -134
- package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
- package/dist/editor-actions/nested/nested-focus.js +33 -21
- package/dist/editor-actions/paste-coordinator.d.ts +3 -2
- package/dist/editor-actions/paste-coordinator.js +17 -13
- package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
- package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
- package/dist/editor-actions/plugin/container.d.ts +55 -76
- package/dist/editor-actions/plugin/container.js +105 -186
- package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
- package/dist/editor-actions/plugin/directive-container.js +7 -8
- package/dist/editor-actions/reorder-action.d.ts +7 -12
- package/dist/editor-actions/reorder-action.js +32 -48
- package/dist/editor-actions/reorder-drag.d.ts +12 -8
- package/dist/editor-actions/reorder-drag.js +45 -41
- package/dist/editor-actions/replacement-focus.d.ts +13 -21
- package/dist/editor-actions/replacement-focus.js +32 -33
- package/dist/editor-actions/search-replace.js +71 -67
- package/dist/editor-actions/stored-caret.d.ts +7 -0
- package/dist/editor-actions/stored-caret.js +10 -0
- package/dist/editor-actions/table-context.d.ts +9 -11
- package/dist/editor-actions/table-context.js +70 -93
- package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
- package/dist/editor-actions/unwrap-strategies.js +52 -63
- package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
- package/dist/editor-actions/whole-block-focus-surface.js +43 -53
- package/dist/editor-events.d.ts +25 -29
- package/dist/editor-events.js +17 -28
- package/dist/editor-keys.d.ts +96 -104
- package/dist/editor-keys.js +11 -24
- package/dist/editor-props.d.ts +91 -71
- package/dist/editor-rects.d.ts +23 -34
- package/dist/editor-rects.js +9 -77
- package/dist/env.d.ts +6 -4
- package/dist/env.js +8 -4
- package/dist/index.d.ts +6 -2
- package/dist/index.js +5 -2
- package/dist/inline-menu/inline-menu-session.d.ts +37 -0
- package/dist/inline-menu/inline-menu-session.js +98 -0
- package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
- package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
- package/dist/inline-menu/types.d.ts +77 -0
- package/dist/inline-menu/types.js +7 -0
- package/dist/invariants/child-id-parity.d.ts +23 -0
- package/dist/invariants/child-id-parity.js +39 -0
- package/dist/invariants/commit-paths.d.ts +4 -4
- package/dist/invariants/commit-paths.js +4 -4
- package/dist/invariants/commit-scope.d.ts +4 -4
- package/dist/invariants/commit-scope.js +9 -8
- package/dist/invariants/context-keys.d.ts +2 -5
- package/dist/invariants/context-keys.js +3 -6
- package/dist/invariants/descriptor.d.ts +2 -6
- package/dist/invariants/descriptor.js +2 -6
- package/dist/invariants/inline-transitions.d.ts +9 -16
- package/dist/invariants/inline-transitions.js +10 -18
- package/dist/invariants/install.d.ts +18 -27
- package/dist/invariants/install.js +29 -30
- package/dist/invariants/keeps-a-block.d.ts +7 -0
- package/dist/invariants/keeps-a-block.js +14 -0
- package/dist/invariants/landable-caret.d.ts +5 -7
- package/dist/invariants/landable-caret.js +8 -11
- package/dist/invariants/landing-focus-scroll.d.ts +7 -0
- package/dist/invariants/landing-focus-scroll.js +13 -0
- package/dist/invariants/landing-value.d.ts +13 -0
- package/dist/invariants/landing-value.js +27 -0
- package/dist/invariants/marker-css-parity.d.ts +5 -6
- package/dist/invariants/marker-css-parity.js +11 -12
- package/dist/invariants/measures-in-own-list.d.ts +6 -0
- package/dist/invariants/measures-in-own-list.js +13 -0
- package/dist/invariants/node-shape.d.ts +18 -37
- package/dist/invariants/node-shape.js +123 -79
- package/dist/invariants/open-tail.d.ts +7 -0
- package/dist/invariants/open-tail.js +45 -0
- package/dist/invariants/placement-ends-widget.d.ts +8 -0
- package/dist/invariants/placement-ends-widget.js +13 -0
- package/dist/invariants/registry.d.ts +27 -66
- package/dist/invariants/registry.js +61 -137
- package/dist/invariants/render-fidelity.d.ts +4 -4
- package/dist/invariants/render-fidelity.js +5 -5
- package/dist/invariants/selection-endpoints.d.ts +6 -7
- package/dist/invariants/selection-endpoints.js +18 -16
- package/dist/invariants/single-node-sink.d.ts +4 -5
- package/dist/invariants/single-node-sink.js +4 -5
- package/dist/invariants/snapshot-integrity.d.ts +5 -6
- package/dist/invariants/snapshot-integrity.js +1 -1
- package/dist/invariants/structural-descriptor.d.ts +6 -15
- package/dist/invariants/structural-descriptor.js +6 -15
- package/dist/menu-icons.d.ts +47 -0
- package/dist/menu-icons.js +113 -0
- package/dist/perf/instruments.d.ts +20 -5
- package/dist/perf/instruments.js +35 -15
- package/dist/perf/use-mount-gauge.svelte.js +4 -4
- package/dist/plugin.d.ts +38 -8
- package/dist/plugin.js +102 -74
- package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
- package/dist/plugins/admonitions/admonition-kind.js +12 -10
- package/dist/plugins/admonitions/convert-document.d.ts +5 -5
- package/dist/plugins/admonitions/convert-document.js +8 -7
- package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
- package/dist/plugins/admonitions/gh-alert.js +21 -22
- package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
- package/dist/plugins/admonitions/github-alert-kind.js +28 -37
- package/dist/plugins/admonitions/index.js +2 -2
- package/dist/plugins/admonitions/kinds.d.ts +1 -1
- package/dist/plugins/admonitions/register.js +11 -2
- package/dist/plugins/details/DetailsBlock.svelte +20 -20
- package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
- package/dist/plugins/details/details-disclosure.svelte.js +6 -7
- package/dist/plugins/details/details-kind.d.ts +6 -7
- package/dist/plugins/details/details-kind.js +44 -59
- package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
- package/dist/plugins/emoji/emoji-recognizer.js +7 -14
- package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
- package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
- package/dist/plugins/footnotes/constants.d.ts +2 -0
- package/dist/plugins/footnotes/constants.js +3 -0
- package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
- package/dist/plugins/footnotes/footnote-definition.js +69 -45
- package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
- package/dist/plugins/footnotes/footnote-lookup.js +14 -26
- package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
- package/dist/plugins/footnotes/footnote-numbering.js +22 -31
- package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
- package/dist/plugins/footnotes/footnote-reference.js +8 -13
- package/dist/plugins/footnotes/index.js +2 -3
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
- package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
- package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
- package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
- package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
- package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
- package/dist/plugins/highlight-occurrences/word-char.js +4 -0
- package/dist/plugins/latex/BlockMath.svelte +58 -75
- package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
- package/dist/plugins/latex/MathInline.svelte +10 -9
- package/dist/plugins/latex/flanking.d.ts +1 -0
- package/dist/plugins/latex/flanking.js +3 -0
- package/dist/plugins/latex/index.d.ts +1 -1
- package/dist/plugins/latex/latex-kind.d.ts +4 -4
- package/dist/plugins/latex/latex-kind.js +113 -85
- package/dist/plugins/latex/math-completion.d.ts +1 -1
- package/dist/plugins/latex/math-completion.js +5 -8
- package/dist/plugins/latex/math-layout.d.ts +2 -8
- package/dist/plugins/latex/math-layout.js +0 -9
- package/dist/plugins/latex/math-renderer.d.ts +17 -20
- package/dist/plugins/latex/math-renderer.js +21 -38
- package/dist/plugins/latex/math-source.d.ts +4 -8
- package/dist/plugins/latex/math-source.js +36 -75
- package/dist/plugins/latex/register.d.ts +10 -11
- package/dist/plugins/latex/register.js +24 -10
- package/dist/plugins/latex/renderer.d.ts +9 -10
- package/dist/plugins/latex/renderer.js +9 -24
- package/dist/plugins/mermaid/MermaidBlock.svelte +63 -47
- package/dist/plugins/mermaid/index.js +1 -1
- package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
- package/dist/plugins/mermaid/mermaid-kind.js +30 -47
- package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
- package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
- package/dist/plugins/mermaid/register.d.ts +3 -3
- package/dist/plugins/mermaid/register.js +5 -5
- package/dist/plugins/mermaid/renderer.d.ts +5 -5
- package/dist/plugins/mermaid/renderer.js +8 -11
- package/dist/plugins/parrot/ParrotBlock.svelte +18 -7
- package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
- package/dist/plugins/parrot/parrot-plugin.js +3 -3
- package/dist/plugins/slash-commands/filter.d.ts +23 -0
- package/dist/plugins/slash-commands/filter.js +31 -0
- package/dist/plugins/slash-commands/index.d.ts +2 -0
- package/dist/plugins/slash-commands/index.js +2 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
- package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
- package/dist/plugins/slash-commands/slash-source.js +108 -0
- package/dist/plugins/toc/TocBlock.svelte +23 -22
- package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
- package/dist/plugins/toc/heading-outline.d.ts +7 -12
- package/dist/plugins/toc/heading-outline.js +22 -36
- package/dist/plugins/toc/navigation-queue.d.ts +2 -4
- package/dist/plugins/toc/toc-plugin.d.ts +5 -5
- package/dist/plugins/toc/toc-plugin.js +20 -13
- package/dist/presentation-mode.d.ts +15 -23
- package/dist/presentation-mode.js +19 -25
- package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
- package/dist/reactivity/block-list-state.svelte.js +8 -9
- package/dist/reactivity/block-window.svelte.d.ts +12 -6
- package/dist/reactivity/block-window.svelte.js +44 -17
- package/dist/reactivity/child-list.d.ts +34 -0
- package/dist/reactivity/child-list.js +48 -0
- package/dist/reactivity/content-version.svelte.d.ts +4 -7
- package/dist/reactivity/content-version.svelte.js +3 -5
- package/dist/reactivity/hold-across.d.ts +39 -0
- package/dist/reactivity/hold-across.js +57 -0
- package/dist/reactivity/layout-state.svelte.d.ts +27 -0
- package/dist/reactivity/layout-state.svelte.js +51 -0
- package/dist/reactivity/list-tree.d.ts +39 -0
- package/dist/reactivity/list-tree.js +132 -0
- package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
- package/dist/reactivity/list-windowing.svelte.js +143 -292
- package/dist/reactivity/measure-batch.d.ts +6 -8
- package/dist/reactivity/measure-batch.js +5 -6
- package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
- package/dist/reactivity/publish-ref.svelte.js +21 -85
- package/dist/reactivity/scope-geometry.d.ts +6 -13
- package/dist/reactivity/scope-geometry.js +7 -14
- package/dist/reactivity/state-registry.d.ts +5 -5
- package/dist/reactivity/state-registry.js +11 -15
- package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
- package/dist/reactivity/use-container-windowing.svelte.js +64 -74
- package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
- package/dist/reactivity/use-measured-child.svelte.js +41 -0
- package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
- package/dist/reactivity/use-window-floor.svelte.js +27 -0
- package/dist/reactivity/window-slice.d.ts +4 -4
- package/dist/reactivity/window-slice.js +0 -2
- package/dist/renderer-slot.d.ts +48 -0
- package/dist/renderer-slot.js +85 -0
- package/dist/scan-index.d.ts +4 -4
- package/dist/scan-index.js +4 -4
- package/dist/schema/block-commands.d.ts +69 -54
- package/dist/schema/block-commands.js +91 -104
- package/dist/schema/block-completions.d.ts +16 -19
- package/dist/schema/block-completions.js +25 -32
- package/dist/schema/block-component-registry.d.ts +13 -14
- package/dist/schema/block-component-registry.js +19 -17
- package/dist/schema/block-kind-descriptor.d.ts +234 -168
- package/dist/schema/block-kind-descriptor.js +151 -66
- package/dist/schema/block-openers.d.ts +48 -39
- package/dist/schema/block-openers.js +73 -83
- package/dist/schema/built-in-descriptors.d.ts +3 -5
- package/dist/schema/built-in-descriptors.js +96 -80
- package/dist/schema/child-spans.d.ts +12 -10
- package/dist/schema/child-spans.js +68 -34
- package/dist/schema/closure.d.ts +18 -16
- package/dist/schema/closure.js +24 -14
- package/dist/schema/command-id.d.ts +6 -8
- package/dist/schema/command-id.js +20 -25
- package/dist/schema/commands.d.ts +79 -81
- package/dist/schema/commands.js +156 -116
- package/dist/schema/container-raw.d.ts +51 -11
- package/dist/schema/container-raw.js +143 -14
- package/dist/schema/container-rebuilders.d.ts +17 -15
- package/dist/schema/container-rebuilders.js +30 -22
- package/dist/schema/context-actions.d.ts +25 -13
- package/dist/schema/context-actions.js +32 -17
- package/dist/schema/define-plugin-block.d.ts +8 -6
- package/dist/schema/define-plugin-block.js +6 -4
- package/dist/schema/fenced-code-raw.d.ts +30 -17
- package/dist/schema/fenced-code-raw.js +155 -107
- package/dist/schema/global-commands.d.ts +6 -6
- package/dist/schema/global-commands.js +14 -22
- package/dist/schema/height-estimates.d.ts +31 -0
- package/dist/schema/height-estimates.js +64 -0
- package/dist/schema/inline-construct-policy.d.ts +42 -55
- package/dist/schema/inline-construct-policy.js +36 -35
- package/dist/schema/insert-catalogue.d.ts +30 -0
- package/dist/schema/insert-catalogue.js +95 -0
- package/dist/schema/keybinding-overrides.d.ts +9 -11
- package/dist/schema/keybinding-overrides.js +1 -1
- package/dist/schema/keybindings.d.ts +15 -7
- package/dist/schema/keybindings.js +21 -9
- package/dist/schema/merge-rules.d.ts +5 -7
- package/dist/schema/merge-rules.js +7 -9
- package/dist/schema/opener-priorities.d.ts +4 -4
- package/dist/schema/opener-priorities.js +4 -4
- package/dist/schema/operations.d.ts +9 -11
- package/dist/schema/operations.js +3 -3
- package/dist/schema/page-role.d.ts +14 -0
- package/dist/schema/page-role.js +19 -0
- package/dist/schema/plugin-activation.d.ts +4 -6
- package/dist/schema/plugin-activation.js +12 -10
- package/dist/schema/plugin-editor-context.d.ts +25 -10
- package/dist/schema/plugin-editor-context.js +40 -9
- package/dist/schema/plugin-install.d.ts +49 -17
- package/dist/schema/plugin-install.js +51 -25
- package/dist/schema/plugin-kind.d.ts +12 -8
- package/dist/schema/plugin-kind.js +35 -42
- package/dist/schema/plugin-name.js +3 -3
- package/dist/schema/plugin-registry.d.ts +54 -0
- package/dist/schema/plugin-registry.js +70 -0
- package/dist/schema/reading.d.ts +23 -0
- package/dist/schema/reading.js +7 -0
- package/dist/schema/register-once.d.ts +3 -5
- package/dist/schema/register-once.js +7 -16
- package/dist/schema/registration-checks.d.ts +12 -16
- package/dist/schema/registration-checks.js +35 -51
- package/dist/schema/registration-pairs.d.ts +54 -0
- package/dist/schema/registration-pairs.js +48 -0
- package/dist/schema/registration-pending.d.ts +8 -12
- package/dist/schema/registration-pending.js +9 -9
- package/dist/schema/registry-reset.d.ts +8 -4
- package/dist/schema/registry-reset.js +13 -26
- package/dist/schema/registry-view.d.ts +25 -13
- package/dist/schema/registry-view.js +26 -20
- package/dist/schema/reserved-chords.d.ts +9 -10
- package/dist/schema/reserved-chords.js +73 -78
- package/dist/schema/reserved-chrome.d.ts +12 -11
- package/dist/schema/reserved-chrome.js +15 -11
- package/dist/schema/setext-raw.d.ts +13 -0
- package/dist/schema/setext-raw.js +33 -0
- package/dist/schema/stored-as.d.ts +20 -0
- package/dist/schema/stored-as.js +6 -0
- package/dist/schema/table-cell-raw.d.ts +18 -7
- package/dist/schema/table-cell-raw.js +28 -7
- package/dist/schema/whole-block-unit.d.ts +5 -4
- package/dist/schema/whole-block-unit.js +5 -4
- package/dist/search/document-scan.d.ts +3 -3
- package/dist/search/document-scan.js +2 -2
- package/dist/search/matcher.d.ts +1 -1
- package/dist/search/regex-executor.d.ts +5 -6
- package/dist/search/regex-executor.js +6 -8
- package/dist/search/replace.d.ts +2 -5
- package/dist/search/replace.js +2 -5
- package/dist/search/search-state.svelte.d.ts +5 -5
- package/dist/search/search-state.svelte.js +12 -16
- package/dist/selection/autoscroll.d.ts +6 -9
- package/dist/selection/block-hit-test.d.ts +16 -24
- package/dist/selection/block-hit-test.js +29 -22
- package/dist/selection/caret-doors.d.ts +15 -14
- package/dist/selection/caret-doors.js +37 -26
- package/dist/selection/caret-landing.d.ts +62 -0
- package/dist/selection/caret-landing.js +157 -0
- package/dist/selection/caret-restore.d.ts +17 -10
- package/dist/selection/caret-restore.js +10 -22
- package/dist/selection/caret-target.d.ts +30 -0
- package/dist/selection/caret-target.js +84 -0
- package/dist/selection/char-endpoint-snap.d.ts +6 -10
- package/dist/selection/char-endpoint-snap.js +8 -14
- package/dist/selection/clipboard-text.d.ts +5 -12
- package/dist/selection/clipboard-text.js +69 -172
- package/dist/selection/covered-block.d.ts +6 -8
- package/dist/selection/covered-block.js +8 -19
- package/dist/selection/cross-block/clipboard.d.ts +3 -2
- package/dist/selection/cross-block/clipboard.js +13 -4
- package/dist/selection/cross-block/dispatch.d.ts +47 -43
- package/dist/selection/cross-block/dispatch.js +12 -23
- package/dist/selection/cross-block/format-range.d.ts +18 -21
- package/dist/selection/cross-block/format-range.js +104 -103
- package/dist/selection/cross-block/format-toggle.d.ts +10 -15
- package/dist/selection/cross-block/format-toggle.js +28 -33
- package/dist/selection/cross-block/keydown.d.ts +4 -4
- package/dist/selection/cross-block/keydown.js +93 -152
- package/dist/selection/cross-block/ops.d.ts +19 -34
- package/dist/selection/cross-block/ops.js +110 -95
- package/dist/selection/cross-block/paste.d.ts +2 -3
- package/dist/selection/cross-block/paste.js +61 -104
- package/dist/selection/cross-block/pointer.d.ts +17 -15
- package/dist/selection/cross-block/pointer.js +74 -25
- package/dist/selection/cross-block/type-replace.d.ts +4 -6
- package/dist/selection/cross-block/type-replace.js +53 -146
- package/dist/selection/dead-space-caret.d.ts +20 -28
- package/dist/selection/dead-space-caret.js +79 -87
- package/dist/selection/drag-pointer.d.ts +22 -5
- package/dist/selection/drag-pointer.js +63 -31
- package/dist/selection/gap-caret.d.ts +17 -28
- package/dist/selection/gap-caret.js +14 -26
- package/dist/selection/grid-selection.d.ts +12 -0
- package/dist/selection/grid-selection.js +22 -0
- package/dist/selection/keyboard-extend.d.ts +27 -39
- package/dist/selection/keyboard-extend.js +94 -116
- package/dist/selection/multi-click.d.ts +37 -0
- package/dist/selection/multi-click.js +197 -0
- package/dist/selection/native-bridge.d.ts +30 -37
- package/dist/selection/native-bridge.js +80 -100
- package/dist/selection/nearest-block.d.ts +17 -12
- package/dist/selection/nearest-block.js +37 -18
- package/dist/selection/path-lookup.d.ts +31 -14
- package/dist/selection/path-lookup.js +110 -20
- package/dist/selection/path-math.d.ts +9 -11
- package/dist/selection/path-math.js +5 -7
- package/dist/selection/pointer-gesture.d.ts +9 -0
- package/dist/selection/pointer-gesture.js +11 -0
- package/dist/selection/pointer-session.d.ts +10 -16
- package/dist/selection/pointer-session.js +6 -7
- package/dist/selection/primitives.d.ts +64 -33
- package/dist/selection/primitives.js +61 -53
- package/dist/selection/range-coverage.d.ts +94 -0
- package/dist/selection/range-coverage.js +365 -0
- package/dist/selection/range-delete-ceremony.d.ts +28 -74
- package/dist/selection/range-delete-ceremony.js +100 -141
- package/dist/selection/range-delete-chrome.d.ts +20 -33
- package/dist/selection/range-delete-chrome.js +53 -78
- package/dist/selection/range-delete-table-coverage.d.ts +11 -25
- package/dist/selection/range-delete-table-coverage.js +42 -112
- package/dist/selection/range-delete-table.d.ts +14 -12
- package/dist/selection/range-delete-table.js +106 -310
- package/dist/selection/range-delete.d.ts +18 -19
- package/dist/selection/range-delete.js +83 -123
- package/dist/selection/round-trip-restore.d.ts +18 -0
- package/dist/selection/round-trip-restore.js +19 -0
- package/dist/selection/selection-announcer.d.ts +17 -0
- package/dist/selection/selection-announcer.js +25 -0
- package/dist/selection/selection-description.d.ts +4 -3
- package/dist/selection/selection-description.js +5 -4
- package/dist/selection/selection-drop.d.ts +52 -0
- package/dist/selection/selection-drop.js +317 -0
- package/dist/selection/selection-restore.d.ts +20 -33
- package/dist/selection/selection-restore.js +21 -44
- package/dist/selection/selection-state.svelte.d.ts +50 -42
- package/dist/selection/selection-state.svelte.js +144 -98
- package/dist/selection/shared-keydown.d.ts +22 -27
- package/dist/selection/shared-keydown.js +25 -45
- package/dist/selection/table-endpoint-snap.d.ts +17 -41
- package/dist/selection/table-endpoint-snap.js +54 -80
- package/dist/selection/table-rect-extend.d.ts +3 -6
- package/dist/selection/table-rect-extend.js +19 -14
- package/dist/styles/editor-theme.css +75 -53
- package/dist/styles/editor.css +248 -139
- package/dist/testing/conformance-core.d.ts +50 -18
- package/dist/testing/conformance-core.js +88 -50
- package/dist/testing/container-conformance.d.ts +48 -84
- package/dist/testing/container-conformance.js +159 -285
- package/dist/testing/headless-actions.d.ts +34 -19
- package/dist/testing/headless-actions.js +116 -65
- package/dist/testing/headless-block-list.svelte.d.ts +16 -0
- package/dist/testing/headless-block-list.svelte.js +22 -0
- package/dist/testing/inline-conformance.d.ts +15 -22
- package/dist/testing/inline-conformance.js +131 -148
- package/dist/testing/kind-conformance.d.ts +19 -24
- package/dist/testing/kind-conformance.js +204 -117
- package/dist/testing/kit-reading.d.ts +7 -0
- package/dist/testing/kit-reading.js +16 -0
- package/dist/testing/mount-dom-stubs.d.ts +4 -5
- package/dist/testing/mount-dom-stubs.js +8 -5
- package/dist/testing/parse-convergence.d.ts +10 -10
- package/dist/testing/parse-convergence.js +14 -49
- package/dist/testing.d.ts +13 -9
- package/dist/testing.js +28 -38
- package/dist/tree-operations/blockquote.d.ts +8 -14
- package/dist/tree-operations/blockquote.js +25 -45
- package/dist/tree-operations/chain-rebuild.d.ts +34 -25
- package/dist/tree-operations/chain-rebuild.js +115 -52
- package/dist/tree-operations/children.d.ts +5 -9
- package/dist/tree-operations/children.js +7 -11
- package/dist/tree-operations/cleanup.d.ts +6 -7
- package/dist/tree-operations/cleanup.js +14 -11
- package/dist/tree-operations/clone.js +5 -4
- package/dist/tree-operations/container-lift.d.ts +10 -5
- package/dist/tree-operations/container-lift.js +20 -14
- package/dist/tree-operations/container-offsets.d.ts +22 -0
- package/dist/tree-operations/container-offsets.js +89 -0
- package/dist/tree-operations/content-write.d.ts +52 -29
- package/dist/tree-operations/content-write.js +155 -110
- package/dist/tree-operations/index.d.ts +4 -4
- package/dist/tree-operations/index.js +4 -4
- package/dist/tree-operations/keep-one-block.d.ts +10 -0
- package/dist/tree-operations/keep-one-block.js +19 -0
- package/dist/tree-operations/leaf-range.d.ts +33 -0
- package/dist/tree-operations/leaf-range.js +67 -0
- package/dist/tree-operations/list/empty-check.d.ts +2 -3
- package/dist/tree-operations/list/empty-check.js +4 -4
- package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
- package/dist/tree-operations/list/exit-replacement.js +4 -9
- package/dist/tree-operations/list/item-partition.d.ts +2 -2
- package/dist/tree-operations/list/item-partition.js +2 -2
- package/dist/tree-operations/list/list-builders.d.ts +18 -16
- package/dist/tree-operations/list/list-builders.js +59 -30
- package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
- package/dist/tree-operations/list/ordered-markers.js +7 -16
- package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
- package/dist/tree-operations/list/reconcile-task.js +80 -23
- package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
- package/dist/tree-operations/list/sublist-separator.js +20 -27
- package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
- package/dist/tree-operations/list/task-paragraph.js +54 -0
- package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
- package/dist/tree-operations/list/unwrap-merge.js +44 -79
- package/dist/tree-operations/node-ops.d.ts +30 -52
- package/dist/tree-operations/node-ops.js +152 -218
- package/dist/tree-operations/node-primitives.d.ts +44 -31
- package/dist/tree-operations/node-primitives.js +84 -60
- package/dist/tree-operations/open-tail.d.ts +25 -0
- package/dist/tree-operations/open-tail.js +100 -0
- package/dist/tree-operations/parse-block.d.ts +15 -2
- package/dist/tree-operations/parse-block.js +19 -4
- package/dist/tree-operations/paste/apply.d.ts +7 -8
- package/dist/tree-operations/paste/apply.js +33 -63
- package/dist/tree-operations/paste/body-write.d.ts +8 -6
- package/dist/tree-operations/paste/body-write.js +13 -14
- package/dist/tree-operations/paste/container-match.d.ts +7 -10
- package/dist/tree-operations/paste/container-match.js +76 -58
- package/dist/tree-operations/paste/container-paste.d.ts +3 -3
- package/dist/tree-operations/paste/container-paste.js +3 -3
- package/dist/tree-operations/paste/dispatch.d.ts +26 -29
- package/dist/tree-operations/paste/dispatch.js +68 -53
- package/dist/tree-operations/paste/focus-target.d.ts +11 -14
- package/dist/tree-operations/paste/focus-target.js +13 -18
- package/dist/tree-operations/paste/hooks.d.ts +7 -12
- package/dist/tree-operations/paste/hooks.js +49 -46
- package/dist/tree-operations/paste/line-ending.d.ts +11 -0
- package/dist/tree-operations/paste/line-ending.js +32 -0
- package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
- package/dist/tree-operations/paste/list-absorb.js +17 -19
- package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
- package/dist/tree-operations/paste/list-break-out.js +24 -32
- package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
- package/dist/tree-operations/paste/parent-scope.js +9 -16
- package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
- package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
- package/dist/tree-operations/paste/paste-replacement.js +73 -42
- package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
- package/dist/tree-operations/paste/paste-transforms.js +18 -27
- package/dist/tree-operations/paste/replacement-parse.d.ts +19 -0
- package/dist/tree-operations/paste/replacement-parse.js +24 -0
- package/dist/tree-operations/paste/strategy.d.ts +1 -1
- package/dist/tree-operations/paste/strategy.js +1 -1
- package/dist/tree-operations/paste/table-slice.js +15 -10
- package/dist/tree-operations/paste-surfaces.d.ts +18 -29
- package/dist/tree-operations/paste-surfaces.js +14 -10
- package/dist/tree-operations/path-mutate.d.ts +7 -8
- package/dist/tree-operations/path-mutate.js +4 -4
- package/dist/tree-operations/reorder-unit.d.ts +4 -5
- package/dist/tree-operations/reorder-unit.js +5 -6
- package/dist/tree-operations/reorder.d.ts +7 -9
- package/dist/tree-operations/reorder.js +39 -40
- package/dist/tree-operations/settle.d.ts +42 -53
- package/dist/tree-operations/settle.js +241 -162
- package/dist/tree-operations/sharing.d.ts +5 -5
- package/dist/tree-operations/splice-many.d.ts +5 -5
- package/dist/tree-operations/splice-many.js +5 -5
- package/dist/tree-operations/stored-as.d.ts +13 -0
- package/dist/tree-operations/stored-as.js +48 -0
- package/dist/tree-operations/structural-change.d.ts +11 -15
- package/dist/tree-operations/structural-change.js +10 -14
- package/dist/tree-operations/structural-suffix.d.ts +22 -0
- package/dist/tree-operations/structural-suffix.js +61 -0
- package/dist/tree-operations/sub-table-copy.d.ts +7 -0
- package/dist/tree-operations/sub-table-copy.js +40 -36
- package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
- package/dist/tree-operations/table-grid-clipboard.js +11 -36
- package/dist/tree-operations/table-mutations.d.ts +7 -3
- package/dist/tree-operations/table-mutations.js +45 -9
- package/dist/tree-operations/unshare.d.ts +11 -15
- package/dist/tree-operations/unshare.js +15 -17
- package/dist/undo/manager.js +1 -1
- package/dist/undo/types.d.ts +2 -2
- package/docs/guide/consumer-guide.md +329 -205
- package/docs/guide/directives.md +7 -7
- package/docs/guide/plugin-api.md +267 -183
- package/docs/guide/plugin-guide.md +341 -235
- package/docs/guide/plugin-testing.md +96 -82
- package/package.json +17 -21
- package/dist/ambient/ambient-cursor.d.ts +0 -41
- package/dist/ambient/ambient-cursor.js +0 -120
- package/dist/components/blocks/code/code-paste.d.ts +0 -24
- package/dist/components/blocks/code/code-paste.js +0 -21
- package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
- package/dist/components/blocks/table/cell-clipboard.js +0 -67
- package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
- package/dist/components/blocks/text/hidden-suffix.js +0 -15
- package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
- package/dist/components/image/image-source-bytes.d.ts +0 -15
- package/dist/components/image/image-source-bytes.js +0 -80
- package/dist/cursor/content-offsets.d.ts +0 -29
- package/dist/cursor/content-offsets.js +0 -151
- package/dist/cursor/reveal-anchor.d.ts +0 -30
- package/dist/cursor/reveal-anchor.js +0 -31
- package/dist/invariants/split-landing.d.ts +0 -8
- package/dist/invariants/split-landing.js +0 -15
- package/dist/selection/double-click-trim.d.ts +0 -17
- package/dist/selection/double-click-trim.js +0 -57
- package/dist/tree-operations/list/terminator.d.ts +0 -17
- package/dist/tree-operations/list/terminator.js +0 -60
- package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -29
- package/dist/tree-operations/paste/replace-block-at-parent.js +0 -75
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import { untrack } from 'svelte';
|
|
2
|
+
import { tick, untrack } from 'svelte';
|
|
3
3
|
import {
|
|
4
4
|
LINK_CARD_LABEL,
|
|
5
5
|
LINK_CARD_OPEN,
|
|
6
6
|
LINK_CARD_REMOVE,
|
|
7
7
|
LINK_CARD_URL
|
|
8
8
|
} from '../../a11y-strings';
|
|
9
|
+
import MenuIcon from '../menu/MenuIcon.svelte';
|
|
9
10
|
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
// `role="dialog"` WITHOUT `aria-modal`: a click leaves the card beside a live caret and the
|
|
14
|
-
// document behind stays the user's to type in, which is what aria-modal would tell a screen
|
|
15
|
-
// reader is false. The trap engages on ENTRY (Mod+K, or focus reaching the field), where the
|
|
16
|
-
// claim is true, and Escape returns the caret it borrowed.
|
|
11
|
+
// The URL panel over one link. Enter commits; Escape is the host's. Not `aria-modal`: a
|
|
12
|
+
// clicked card sits beside a live caret, and its focus trap starts only once focus enters.
|
|
17
13
|
let {
|
|
18
14
|
url,
|
|
19
15
|
canWrite,
|
|
@@ -21,46 +17,50 @@
|
|
|
21
17
|
onCommit,
|
|
22
18
|
onOpenLink,
|
|
23
19
|
onRemove,
|
|
20
|
+
opensCard,
|
|
24
21
|
resolveHref
|
|
25
22
|
}: {
|
|
26
23
|
url: string;
|
|
27
24
|
/** Bumped by each keyboard entry; the field takes focus when it changes. */
|
|
28
25
|
focusEpoch: number;
|
|
29
|
-
/** False when the write
|
|
30
|
-
*
|
|
26
|
+
/** False when the write path refuses this construct outright: a link owned by an inline
|
|
27
|
+
* syntax handler. Enter then does nothing rather than silently dropping the edit. */
|
|
31
28
|
canWrite: boolean;
|
|
32
29
|
onCommit: (url: string) => void;
|
|
33
30
|
onOpenLink: (url: string, event: MouseEvent) => void;
|
|
34
|
-
/** Absent in create mode: there is no construct to remove until Enter
|
|
31
|
+
/** Absent in create mode: there is no construct to remove until Enter writes one. */
|
|
35
32
|
onRemove?: () => void;
|
|
36
|
-
/**
|
|
37
|
-
|
|
33
|
+
/** Whether a keypress is a chord the keymap binds to opening this card. */
|
|
34
|
+
opensCard: (e: KeyboardEvent) => boolean;
|
|
35
|
+
/** The href as the render path resolves it: a consumer rewrite, then the scheme
|
|
36
|
+
* allowlist. Undefined means a blocked scheme, which Open must never be handed. */
|
|
38
37
|
resolveHref: (url: string) => string | undefined;
|
|
39
38
|
} = $props();
|
|
40
39
|
|
|
41
40
|
let draft = $state(untrack(() => url));
|
|
42
|
-
//
|
|
43
|
-
//
|
|
44
|
-
// carrying a URL the user typed rather than the document's. An empty draft resolves as a
|
|
45
|
-
// relative URL, so it declines too.
|
|
41
|
+
// Open hands a typed URL to the host's opener, so it gets the render path's scheme check;
|
|
42
|
+
// an empty draft would resolve as a relative URL, so it is refused too.
|
|
46
43
|
const openable = $derived(draft.trim() === '' ? undefined : resolveHref(draft));
|
|
47
44
|
let seed = $state(untrack(() => url));
|
|
48
45
|
let cardEl: HTMLDivElement | undefined = $state();
|
|
49
46
|
let urlInput: HTMLInputElement | undefined = $state();
|
|
50
|
-
// Starts at the click's zero rather than at the prop: a card
|
|
51
|
-
// non-zero
|
|
47
|
+
// Starts at the click's zero rather than at the prop: a card mounted by the chord already
|
|
48
|
+
// has a non-zero counter, and starting from the prop would read that as "nothing to do".
|
|
52
49
|
let focusedEpoch = 0;
|
|
53
50
|
|
|
54
51
|
$effect(() => {
|
|
55
52
|
if (focusEpoch === focusedEpoch) return;
|
|
56
53
|
focusedEpoch = focusEpoch;
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
// After the tick, not now: focusing the field before the host has placed the card, while it
|
|
55
|
+
// still sits at the editor's origin, scrolls the viewport to the top of the document.
|
|
56
|
+
void tick().then(() => {
|
|
57
|
+
urlInput?.focus();
|
|
58
|
+
urlInput?.select();
|
|
59
|
+
});
|
|
59
60
|
});
|
|
60
61
|
|
|
61
|
-
//
|
|
62
|
-
//
|
|
63
|
-
// The in-flight draft is discarded rather than a committed change reverted.
|
|
62
|
+
// A write from outside the card (an undo) discards the draft, or Enter would put the earlier
|
|
63
|
+
// bytes back.
|
|
64
64
|
$effect(() => {
|
|
65
65
|
if (url === seed) return;
|
|
66
66
|
seed = url;
|
|
@@ -91,12 +91,9 @@
|
|
|
91
91
|
stepTrap(e.shiftKey);
|
|
92
92
|
return;
|
|
93
93
|
}
|
|
94
|
-
// The
|
|
95
|
-
//
|
|
96
|
-
|
|
97
|
-
if ((e.ctrlKey || e.metaKey) && !e.altKey && !e.shiftKey && (e.key === 'k' || e.key === 'K')) {
|
|
98
|
-
e.preventDefault();
|
|
99
|
-
}
|
|
94
|
+
// The chord that opens the card does nothing inside it, but is still consumed so the
|
|
95
|
+
// browser never runs its own action for that chord.
|
|
96
|
+
if (opensCard(e)) e.preventDefault();
|
|
100
97
|
}
|
|
101
98
|
|
|
102
99
|
function handleUrlKeyDown(e: KeyboardEvent): void {
|
|
@@ -117,74 +114,128 @@
|
|
|
117
114
|
tabindex="-1"
|
|
118
115
|
onkeydown={handleKeyDown}
|
|
119
116
|
>
|
|
120
|
-
<label>
|
|
121
|
-
<span>URL</span>
|
|
117
|
+
<label class="md-link-card-field">
|
|
118
|
+
<span class="md-link-card-caption">URL</span>
|
|
122
119
|
<input
|
|
123
120
|
bind:this={urlInput}
|
|
124
121
|
bind:value={draft}
|
|
125
122
|
type="text"
|
|
126
123
|
aria-label={LINK_CARD_URL}
|
|
124
|
+
placeholder="https://"
|
|
127
125
|
onkeydown={handleUrlKeyDown}
|
|
128
126
|
/>
|
|
129
127
|
</label>
|
|
130
128
|
<div class="md-link-card-actions">
|
|
131
129
|
<button
|
|
132
130
|
type="button"
|
|
131
|
+
class="md-link-card-btn"
|
|
132
|
+
aria-label={LINK_CARD_OPEN}
|
|
133
|
+
title={LINK_CARD_OPEN}
|
|
133
134
|
disabled={openable === undefined}
|
|
134
|
-
onclick={(e) => openable !== undefined && onOpenLink(openable, e)}
|
|
135
|
+
onclick={(e) => openable !== undefined && onOpenLink(openable, e)}
|
|
135
136
|
>
|
|
137
|
+
<MenuIcon name="external-link" />
|
|
138
|
+
</button>
|
|
136
139
|
{#if onRemove}
|
|
137
|
-
<button
|
|
140
|
+
<button
|
|
141
|
+
type="button"
|
|
142
|
+
class="md-link-card-btn"
|
|
143
|
+
aria-label={LINK_CARD_REMOVE}
|
|
144
|
+
title={LINK_CARD_REMOVE}
|
|
145
|
+
onclick={onRemove}
|
|
146
|
+
>
|
|
147
|
+
<MenuIcon name="unlink" />
|
|
148
|
+
</button>
|
|
138
149
|
{/if}
|
|
139
150
|
</div>
|
|
140
151
|
</div>
|
|
141
152
|
|
|
142
153
|
<style>
|
|
154
|
+
/* Styled like the editor's menus (`.md-menu`, editor.css) and the image alt field, so the card
|
|
155
|
+
reads as one of the editor's popovers rather than a form. */
|
|
143
156
|
.md-link-card {
|
|
144
157
|
position: absolute;
|
|
145
158
|
top: 0;
|
|
146
159
|
left: 0;
|
|
147
160
|
z-index: 100;
|
|
148
|
-
display:
|
|
161
|
+
display: flex;
|
|
162
|
+
align-items: flex-end;
|
|
149
163
|
gap: 6px;
|
|
150
|
-
|
|
151
|
-
padding: 8px;
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
164
|
+
width: 300px;
|
|
165
|
+
padding: 8px 8px 8px 10px;
|
|
166
|
+
box-sizing: border-box;
|
|
167
|
+
background: var(--color-bg, #2c2c2a);
|
|
168
|
+
border: 1px solid var(--color-border, #3e3e3b);
|
|
169
|
+
border-radius: 8px;
|
|
170
|
+
box-shadow: var(--menu-shadow, 0 12px 32px rgba(0, 0, 0, 0.5), 0 2px 8px rgba(0, 0, 0, 0.35));
|
|
171
|
+
font-family: var(--font-ui, system-ui, sans-serif);
|
|
172
|
+
font-size: 13px;
|
|
173
|
+
line-height: 1.4;
|
|
174
|
+
color: var(--color-text-primary, #e8e8e5);
|
|
156
175
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
176
|
+
.md-link-card-field {
|
|
177
|
+
flex: 1;
|
|
178
|
+
min-width: 0;
|
|
179
|
+
display: flex;
|
|
180
|
+
flex-direction: column;
|
|
181
|
+
gap: 5px;
|
|
182
|
+
}
|
|
183
|
+
.md-link-card-caption {
|
|
184
|
+
font-size: 10.5px;
|
|
185
|
+
font-weight: 600;
|
|
186
|
+
letter-spacing: 0.06em;
|
|
187
|
+
text-transform: uppercase;
|
|
188
|
+
color: var(--color-text-muted, #aaaaaa);
|
|
162
189
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
background:
|
|
168
|
-
color: var(--color-text-
|
|
190
|
+
/* Underlined, not boxed: a box inside the rounded card would read as a frame in a frame. */
|
|
191
|
+
.md-link-card-field input {
|
|
192
|
+
width: 100%;
|
|
193
|
+
box-sizing: border-box;
|
|
194
|
+
background: transparent;
|
|
195
|
+
color: var(--color-text-primary, #e8e8e5);
|
|
196
|
+
border: none;
|
|
197
|
+
border-bottom: 1px solid var(--color-border, #3e3e3b);
|
|
198
|
+
border-radius: 0;
|
|
199
|
+
padding: 3px 1px 5px;
|
|
169
200
|
font-family: inherit;
|
|
170
|
-
font-size:
|
|
201
|
+
font-size: 13px;
|
|
202
|
+
line-height: 1.4;
|
|
203
|
+
outline: none;
|
|
204
|
+
transition: border-color 120ms ease-out;
|
|
205
|
+
}
|
|
206
|
+
.md-link-card-field input:focus {
|
|
207
|
+
border-bottom-color: var(--color-accent, #567b67);
|
|
208
|
+
}
|
|
209
|
+
.md-link-card-field input::placeholder {
|
|
210
|
+
color: var(--color-text-muted, #aaaaaa);
|
|
171
211
|
}
|
|
172
212
|
.md-link-card-actions {
|
|
173
213
|
display: flex;
|
|
174
|
-
gap:
|
|
175
|
-
|
|
214
|
+
gap: 2px;
|
|
215
|
+
/* The buttons sit level with the input's rule, not with the caption. */
|
|
216
|
+
padding-bottom: 1px;
|
|
176
217
|
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
218
|
+
.md-link-card-btn {
|
|
219
|
+
display: inline-flex;
|
|
220
|
+
align-items: center;
|
|
221
|
+
justify-content: center;
|
|
222
|
+
width: 26px;
|
|
223
|
+
height: 26px;
|
|
224
|
+
padding: 0;
|
|
225
|
+
border: none;
|
|
226
|
+
border-radius: 6px;
|
|
181
227
|
background: transparent;
|
|
182
|
-
color: var(--color-
|
|
183
|
-
font: inherit;
|
|
184
|
-
font-size: 12px;
|
|
228
|
+
color: var(--color-ui-muted, #93938d);
|
|
185
229
|
cursor: pointer;
|
|
186
230
|
}
|
|
187
|
-
|
|
188
|
-
|
|
231
|
+
.md-link-card-btn:hover:not(:disabled),
|
|
232
|
+
.md-link-card-btn:focus-visible {
|
|
233
|
+
background: var(--menu-item-hover, rgba(255, 255, 255, 0.07));
|
|
234
|
+
color: var(--color-text-primary, #e8e8e5);
|
|
235
|
+
outline: none;
|
|
236
|
+
}
|
|
237
|
+
.md-link-card-btn:disabled {
|
|
238
|
+
opacity: 0.4;
|
|
239
|
+
cursor: default;
|
|
189
240
|
}
|
|
190
241
|
</style>
|
|
@@ -2,15 +2,17 @@ type $$ComponentProps = {
|
|
|
2
2
|
url: string;
|
|
3
3
|
/** Bumped by each keyboard entry; the field takes focus when it changes. */
|
|
4
4
|
focusEpoch: number;
|
|
5
|
-
/** False when the write
|
|
6
|
-
*
|
|
5
|
+
/** False when the write path refuses this construct outright: a link owned by an inline
|
|
6
|
+
* syntax handler. Enter then does nothing rather than silently dropping the edit. */
|
|
7
7
|
canWrite: boolean;
|
|
8
8
|
onCommit: (url: string) => void;
|
|
9
9
|
onOpenLink: (url: string, event: MouseEvent) => void;
|
|
10
|
-
/** Absent in create mode: there is no construct to remove until Enter
|
|
10
|
+
/** Absent in create mode: there is no construct to remove until Enter writes one. */
|
|
11
11
|
onRemove?: () => void;
|
|
12
|
-
/**
|
|
13
|
-
|
|
12
|
+
/** Whether a keypress is a chord the keymap binds to opening this card. */
|
|
13
|
+
opensCard: (e: KeyboardEvent) => boolean;
|
|
14
|
+
/** The href as the render path resolves it: a consumer rewrite, then the scheme
|
|
15
|
+
* allowlist. Undefined means a blocked scheme, which Open must never be handed. */
|
|
14
16
|
resolveHref: (url: string) => string | undefined;
|
|
15
17
|
};
|
|
16
18
|
declare const LinkCard: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
@@ -1,61 +1,63 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import type { Document } from '../../core/nodes';
|
|
3
|
-
import type {
|
|
3
|
+
import type { InlineRangeCommit } from '../../editor-actions/inline-range-commit';
|
|
4
4
|
import type { EditorEvents } from '../../editor-events';
|
|
5
|
-
import type { LinkReferenceResolverRef } from '../../editor-keys';
|
|
6
|
-
import type { GrammarView } from '../../schema/block-openers';
|
|
7
5
|
import type { CaretRestore } from '../../selection/caret-restore';
|
|
8
6
|
import { resolveHref } from '../../core/inline-render';
|
|
9
7
|
import LinkCard from './LinkCard.svelte';
|
|
10
8
|
import { createLinkCardCommitter } from './link-card-commit';
|
|
11
9
|
import type { LinkCardState } from './link-card-state.svelte';
|
|
10
|
+
import type { MenuPresence } from '../menu/menu-presence.svelte';
|
|
11
|
+
import type { Reading } from '../../schema/reading';
|
|
12
|
+
import type { CommandDispatchContext } from '../../schema/block-commands';
|
|
13
|
+
import { commandForKey } from '../../schema/commands';
|
|
14
|
+
import { blockNodeAt } from '../../tree-operations/node-primitives';
|
|
12
15
|
|
|
13
16
|
// Mounted unconditionally by Editor: the anchoring and dismiss effects must observe the card's
|
|
14
17
|
// target changing, so the open/closed `{#if}` lives here rather than at the mount site.
|
|
15
18
|
let {
|
|
16
19
|
card,
|
|
17
|
-
|
|
20
|
+
inlineRange,
|
|
18
21
|
events,
|
|
19
22
|
getDoc,
|
|
20
23
|
getEditorEl,
|
|
21
24
|
measureRange,
|
|
22
|
-
landCaret,
|
|
23
25
|
activateLink,
|
|
24
26
|
resolveLinkUrl,
|
|
25
27
|
caretRestore,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
reading,
|
|
29
|
+
menuPresence,
|
|
30
|
+
commands
|
|
28
31
|
}: {
|
|
29
32
|
card: LinkCardState;
|
|
30
|
-
|
|
33
|
+
inlineRange: InlineRangeCommit;
|
|
31
34
|
events: EditorEvents;
|
|
32
35
|
getDoc: () => Document;
|
|
33
36
|
getEditorEl: () => HTMLElement | null;
|
|
34
37
|
measureRange: (path: number[], start: number, end: number) => DOMRect[];
|
|
35
|
-
landCaret: (path: number[], offset: number) => Promise<boolean>;
|
|
36
38
|
activateLink: (url: string, event: MouseEvent) => void;
|
|
37
|
-
/** The consumer's href rewrite, the render path
|
|
39
|
+
/** The consumer's href rewrite, the first thing the render path applies. */
|
|
38
40
|
resolveLinkUrl: (rawUrl: string) => string;
|
|
39
41
|
caretRestore: CaretRestore;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
+
reading: Reading;
|
|
43
|
+
menuPresence: MenuPresence;
|
|
44
|
+
/** The editor's command dispatch, which says what a keypress means at the card's block. */
|
|
45
|
+
commands: CommandDispatchContext;
|
|
42
46
|
} = $props();
|
|
43
47
|
|
|
44
48
|
let cardEl: HTMLDivElement | undefined = $state();
|
|
45
49
|
|
|
46
|
-
// Props are stable for the editor's lifetime; reactive values already
|
|
50
|
+
// Props are stable for the editor's lifetime; reactive values already come in as getters.
|
|
47
51
|
// svelte-ignore state_referenced_locally
|
|
48
52
|
const linkCard = createLinkCardCommitter({
|
|
49
53
|
getDoc,
|
|
50
54
|
getEditorEl,
|
|
51
55
|
getTarget: card.getTarget,
|
|
52
56
|
getCreateTarget: card.getCreateTarget,
|
|
53
|
-
|
|
57
|
+
inlineRange,
|
|
54
58
|
events,
|
|
55
59
|
measureRange,
|
|
56
|
-
|
|
57
|
-
linkRef,
|
|
58
|
-
grammar
|
|
60
|
+
reading
|
|
59
61
|
});
|
|
60
62
|
|
|
61
63
|
$effect(() => {
|
|
@@ -64,17 +66,15 @@
|
|
|
64
66
|
return linkCard.syncCardToLink(() => cardEl ?? null);
|
|
65
67
|
});
|
|
66
68
|
|
|
67
|
-
// A target that stops resolving
|
|
68
|
-
//
|
|
69
|
-
// resurrects it holding a draft from before. Closing is the only honest answer.
|
|
69
|
+
// A target that stops resolving closes the card, or a later write that makes it resolve
|
|
70
|
+
// again would bring it back holding an old draft.
|
|
70
71
|
$effect(() => {
|
|
71
72
|
const target = card.getTarget();
|
|
72
73
|
if (target && !linkCard.resolve(target)) card.close();
|
|
73
74
|
});
|
|
74
75
|
|
|
75
|
-
// A create target
|
|
76
|
-
//
|
|
77
|
-
// target, so only an outside edit closes the card here.
|
|
76
|
+
// A create target is a bare range, which any other write would shift under it; the card's own
|
|
77
|
+
// commit closes it before writing, so only an outside edit closes it here.
|
|
78
78
|
$effect(() => {
|
|
79
79
|
if (!card.getCreateTarget()) return;
|
|
80
80
|
return events.on('edit', () => {
|
|
@@ -82,9 +82,8 @@
|
|
|
82
82
|
});
|
|
83
83
|
});
|
|
84
84
|
|
|
85
|
-
//
|
|
86
|
-
//
|
|
87
|
-
// card is chrome beside a live caret until the user steps into it, and both states close.
|
|
85
|
+
// A click outside closes the card and leaves the caret where it landed. Escape is read at the
|
|
86
|
+
// document because a clicked card sits beside a caret that stays there.
|
|
88
87
|
$effect(() => {
|
|
89
88
|
if (!card.getTarget() && !card.getCreateTarget()) return;
|
|
90
89
|
const onPointerDown = (e: PointerEvent) => {
|
|
@@ -96,14 +95,14 @@
|
|
|
96
95
|
// A composing Escape cancels the IME's conversion, not the card.
|
|
97
96
|
if (e.key !== 'Escape' || e.isComposing) return;
|
|
98
97
|
const inCard = cardEl?.contains(document.activeElement) ?? false;
|
|
99
|
-
// Only a card that
|
|
100
|
-
// live caret it just closes, leaving Escape to whatever else was listening.
|
|
98
|
+
// Only a card that holds the focus takes the key and has to give the caret back;
|
|
99
|
+
// beside a live caret it just closes, leaving Escape to whatever else was listening.
|
|
101
100
|
if (inCard) {
|
|
102
101
|
e.preventDefault();
|
|
103
102
|
e.stopPropagation();
|
|
104
103
|
}
|
|
105
104
|
card.close();
|
|
106
|
-
if (inCard) caretRestore.restore();
|
|
105
|
+
if (inCard) void caretRestore.restore();
|
|
107
106
|
};
|
|
108
107
|
document.addEventListener('pointerdown', onPointerDown, true);
|
|
109
108
|
document.addEventListener('keydown', onKeyDown, true);
|
|
@@ -122,13 +121,21 @@
|
|
|
122
121
|
|
|
123
122
|
function commitCreate(url: string): void {
|
|
124
123
|
const target = card.getCreateTarget();
|
|
125
|
-
// An empty draft has nothing to
|
|
126
|
-
// nothing, which would drop the focus the card holds.
|
|
124
|
+
// An empty draft has nothing to write; Enter does nothing rather than closing the card
|
|
125
|
+
// having achieved nothing, which would drop the focus the card holds.
|
|
127
126
|
if (!target || url.trim() === '') return;
|
|
128
127
|
card.close();
|
|
129
128
|
linkCard.commitCreate(target, url);
|
|
130
129
|
}
|
|
131
130
|
|
|
131
|
+
// Resolved at the block the card edits, so a consumer's rebinding of the chord is the one
|
|
132
|
+
// the card takes.
|
|
133
|
+
function opensCard(e: KeyboardEvent): boolean {
|
|
134
|
+
const path = card.getTarget()?.path ?? card.getCreateTarget()?.path;
|
|
135
|
+
const kind = path ? (blockNodeAt(getDoc(), path)?.kind ?? null) : null;
|
|
136
|
+
return commandForKey(e, kind, commands) === 'link.openCard';
|
|
137
|
+
}
|
|
138
|
+
|
|
132
139
|
function remove(): void {
|
|
133
140
|
const target = card.getTarget();
|
|
134
141
|
if (!target) return;
|
|
@@ -141,7 +148,7 @@
|
|
|
141
148
|
{@const target = card.getTarget()!}
|
|
142
149
|
{@const resolved = linkCard.resolve(target)}
|
|
143
150
|
{#if resolved}
|
|
144
|
-
<div bind:this={cardEl} class="md-link-card-anchor">
|
|
151
|
+
<div bind:this={cardEl} class="md-link-card-anchor" {@attach menuPresence.track}>
|
|
145
152
|
{#key `${target.path.join(',')}@${target.sourceStart}`}
|
|
146
153
|
<LinkCard
|
|
147
154
|
url={resolved.url}
|
|
@@ -150,6 +157,7 @@
|
|
|
150
157
|
onCommit={commit}
|
|
151
158
|
onOpenLink={activateLink}
|
|
152
159
|
onRemove={remove}
|
|
160
|
+
{opensCard}
|
|
153
161
|
resolveHref={(url) => resolveHref({ resolveLinkUrl }, url)}
|
|
154
162
|
/>
|
|
155
163
|
{/key}
|
|
@@ -157,7 +165,7 @@
|
|
|
157
165
|
{/if}
|
|
158
166
|
{:else if card.getCreateTarget()}
|
|
159
167
|
{@const create = card.getCreateTarget()!}
|
|
160
|
-
<div bind:this={cardEl} class="md-link-card-anchor">
|
|
168
|
+
<div bind:this={cardEl} class="md-link-card-anchor" {@attach menuPresence.track}>
|
|
161
169
|
{#key `${create.path.join(',')}@${create.start}-${create.end}`}
|
|
162
170
|
<LinkCard
|
|
163
171
|
url=""
|
|
@@ -165,6 +173,7 @@
|
|
|
165
173
|
canWrite={true}
|
|
166
174
|
onCommit={commitCreate}
|
|
167
175
|
onOpenLink={activateLink}
|
|
176
|
+
{opensCard}
|
|
168
177
|
resolveHref={(url) => resolveHref({ resolveLinkUrl }, url)}
|
|
169
178
|
/>
|
|
170
179
|
{/key}
|
|
@@ -1,24 +1,26 @@
|
|
|
1
1
|
import type { Document } from '../../core/nodes';
|
|
2
|
-
import type {
|
|
2
|
+
import type { InlineRangeCommit } from '../../editor-actions/inline-range-commit';
|
|
3
3
|
import type { EditorEvents } from '../../editor-events';
|
|
4
|
-
import type { LinkReferenceResolverRef } from '../../editor-keys';
|
|
5
|
-
import type { GrammarView } from '../../schema/block-openers';
|
|
6
4
|
import type { CaretRestore } from '../../selection/caret-restore';
|
|
7
5
|
import type { LinkCardState } from './link-card-state.svelte';
|
|
6
|
+
import type { MenuPresence } from '../menu/menu-presence.svelte';
|
|
7
|
+
import type { Reading } from '../../schema/reading';
|
|
8
|
+
import type { CommandDispatchContext } from '../../schema/block-commands';
|
|
8
9
|
type $$ComponentProps = {
|
|
9
10
|
card: LinkCardState;
|
|
10
|
-
|
|
11
|
+
inlineRange: InlineRangeCommit;
|
|
11
12
|
events: EditorEvents;
|
|
12
13
|
getDoc: () => Document;
|
|
13
14
|
getEditorEl: () => HTMLElement | null;
|
|
14
15
|
measureRange: (path: number[], start: number, end: number) => DOMRect[];
|
|
15
|
-
landCaret: (path: number[], offset: number) => Promise<boolean>;
|
|
16
16
|
activateLink: (url: string, event: MouseEvent) => void;
|
|
17
|
-
/** The consumer's href rewrite, the render path
|
|
17
|
+
/** The consumer's href rewrite, the first thing the render path applies. */
|
|
18
18
|
resolveLinkUrl: (rawUrl: string) => string;
|
|
19
19
|
caretRestore: CaretRestore;
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
reading: Reading;
|
|
21
|
+
menuPresence: MenuPresence;
|
|
22
|
+
/** The editor's command dispatch, which says what a keypress means at the card's block. */
|
|
23
|
+
commands: CommandDispatchContext;
|
|
22
24
|
};
|
|
23
25
|
declare const LinkCardHost: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
24
26
|
type LinkCardHost = ReturnType<typeof LinkCardHost>;
|
|
@@ -1,47 +1,44 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* What an open link card can read and write: the construct
|
|
3
|
-
*
|
|
4
|
-
* the component so the card stays a rendering shell.
|
|
2
|
+
* What an open link card can read and write: the construct looked up again from its target after
|
|
3
|
+
* every edit, the bytes the write path would produce, and the measurement that positions it. Kept
|
|
4
|
+
* out of the component so the card stays a rendering shell.
|
|
5
5
|
*/
|
|
6
6
|
import type { Document } from '../../core/nodes';
|
|
7
7
|
import type { InlineNode } from '../../core/nodes';
|
|
8
8
|
import type { NodeView } from '../../core/node-views';
|
|
9
|
-
import type {
|
|
9
|
+
import type { InlineRangeCommit } from '../../editor-actions/inline-range-commit';
|
|
10
10
|
import type { EditorEvents } from '../../editor-events';
|
|
11
|
-
import type { LinkReferenceResolverRef } from '../../editor-keys';
|
|
12
|
-
import type { GrammarView } from '../../schema/block-openers';
|
|
13
11
|
import { type LinkTarget } from '../blocks/text/link-at-point';
|
|
14
12
|
import type { CreateLinkTarget } from './link-card-state.svelte';
|
|
13
|
+
import type { Reading } from '../../schema/reading';
|
|
15
14
|
export interface LinkCardCommitterDeps {
|
|
16
15
|
getDoc: () => Document;
|
|
17
16
|
getEditorEl: () => HTMLElement | null;
|
|
18
|
-
/** The open card's target, read live: the
|
|
17
|
+
/** The open card's target, read live: the position re-measures against whatever it names. */
|
|
19
18
|
getTarget: () => LinkTarget | null;
|
|
20
|
-
/** The create gesture's range, the
|
|
19
|
+
/** The create gesture's range, what the card sits under when no construct exists yet. */
|
|
21
20
|
getCreateTarget: () => CreateLinkTarget | null;
|
|
22
|
-
|
|
21
|
+
/** The editor's inline range write, which every card edit goes through. */
|
|
22
|
+
inlineRange: InlineRangeCommit;
|
|
23
23
|
events: EditorEvents;
|
|
24
|
-
/**
|
|
24
|
+
/** Measures the rectangles of a raw range in a mounted block, which is what positions it. */
|
|
25
25
|
measureRange: (path: number[], start: number, end: number) => DOMRect[];
|
|
26
|
-
|
|
27
|
-
landCaret: (path: number[], offset: number) => Promise<boolean>;
|
|
28
|
-
linkRef?: LinkReferenceResolverRef;
|
|
29
|
-
grammar?: GrammarView;
|
|
26
|
+
reading: Reading;
|
|
30
27
|
}
|
|
31
28
|
export interface ResolvedLinkTarget {
|
|
32
29
|
block: NodeView;
|
|
33
30
|
link: InlineNode;
|
|
34
|
-
/** The destination as the author wrote it, decoded
|
|
31
|
+
/** The destination as the author wrote it, decoded: what the card's field shows. */
|
|
35
32
|
url: string;
|
|
36
33
|
}
|
|
37
34
|
export interface LinkCardCommitter {
|
|
38
|
-
/** The construct the target names, re-read from the live tree; null once an edit
|
|
35
|
+
/** The construct the target names, re-read from the live tree; null once an edit removes it. */
|
|
39
36
|
resolve(target: LinkTarget): ResolvedLinkTarget | null;
|
|
40
|
-
/** The bytes a url commit would write, or null if the
|
|
41
|
-
*
|
|
37
|
+
/** The bytes a url commit would write, or null if the write path would refuse; the card
|
|
38
|
+
* compares against these rather than deciding the bytes itself. */
|
|
42
39
|
buildBytes(target: LinkTarget, url: string): string | null;
|
|
43
40
|
commitUrl(target: LinkTarget, url: string): void;
|
|
44
|
-
/**
|
|
41
|
+
/** Write `[selected text](url)` over the create range: the create gesture's one write. */
|
|
45
42
|
commitCreate(target: CreateLinkTarget, url: string): void;
|
|
46
43
|
removeLink(target: LinkTarget): void;
|
|
47
44
|
/** Position `getCard()` under the link and keep it there across edits and scrolls. */
|