@voithos-labs/aragonite 0.10.4 → 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 +11 -5
- package/dist/a11y-strings.js +60 -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 +12 -21
- 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 +603 -1126
- package/dist/components/Editor.svelte.d.ts +9 -20
- package/dist/components/GapCaret.svelte +26 -59
- package/dist/components/SelectionOverlay.svelte +26 -51
- package/dist/components/SelectionOverlay.svelte.d.ts +5 -3
- 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 +72 -87
- 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 +29 -34
- 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 +57 -39
- 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 +141 -203
- 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 +45 -90
- package/dist/components/blocks/list/ListItemBlock.svelte +93 -147
- package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +1 -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 +8 -6
- package/dist/components/blocks/text/click-snap-guard.js +10 -7
- 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 +150 -181
- 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 -108
- 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 +212 -199
- 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 +12 -35
- package/dist/components/drag-handle.js +22 -68
- 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 -24
- package/dist/components/editor-root-listeners.js +49 -24
- 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 +14 -26
- 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 +30 -35
- package/dist/components/menu/SelectionToolbar.svelte.d.ts +3 -5
- 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 +54 -75
- package/dist/core/inline/inline-widgets.js +54 -62
- 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 +31 -15
- 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 -6
- package/dist/cursor/height-oracle.js +26 -74
- 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 +14 -15
- package/dist/cursor/scrollport.js +7 -13
- 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 -14
- package/dist/cursor/visual-lines.js +45 -46
- package/dist/cursor/widget-edge-snap.d.ts +10 -15
- package/dist/cursor/widget-edge-snap.js +13 -12
- package/dist/cursor/widget-offset.d.ts +110 -104
- package/dist/cursor/widget-offset.js +344 -179
- 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 +30 -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 +28 -50
- package/dist/editor-actions/focus/focus-landing.d.ts +8 -11
- package/dist/editor-actions/focus/focus-landing.js +15 -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 +54 -82
- package/dist/editor-actions/plugin/container.js +105 -188
- 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 +88 -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 +37 -8
- package/dist/plugin.js +100 -77
- 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 +78 -67
- 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 -81
- 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 +51 -45
- 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 +15 -6
- 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 +141 -310
- 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 +78 -84
- package/dist/schema/commands.js +152 -117
- 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 +8 -10
- 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 +63 -80
- 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 +92 -125
- 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 +59 -96
- 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 +51 -134
- package/dist/selection/dead-space-caret.d.ts +19 -30
- package/dist/selection/dead-space-caret.js +70 -88
- package/dist/selection/drag-pointer.d.ts +7 -9
- package/dist/selection/drag-pointer.js +23 -33
- 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 -40
- package/dist/selection/keyboard-extend.js +94 -117
- package/dist/selection/multi-click.d.ts +13 -18
- package/dist/selection/multi-click.js +32 -38
- package/dist/selection/native-bridge.d.ts +29 -39
- package/dist/selection/native-bridge.js +78 -127
- package/dist/selection/nearest-block.d.ts +17 -12
- package/dist/selection/nearest-block.js +37 -18
- package/dist/selection/path-lookup.d.ts +25 -16
- package/dist/selection/path-lookup.js +101 -18
- package/dist/selection/path-math.d.ts +9 -11
- package/dist/selection/path-math.js +5 -7
- package/dist/selection/pointer-gesture.d.ts +5 -5
- package/dist/selection/pointer-gesture.js +5 -5
- package/dist/selection/pointer-session.d.ts +10 -16
- package/dist/selection/pointer-session.js +6 -7
- package/dist/selection/primitives.d.ts +64 -40
- package/dist/selection/primitives.js +57 -67
- 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 -23
- 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 +34 -16
- package/dist/selection/selection-drop.js +159 -95
- 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 +60 -53
- package/dist/styles/editor.css +201 -143
- 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 +9 -7
- package/dist/tree-operations/paste/replacement-parse.js +12 -10
- 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 +327 -205
- package/docs/guide/directives.md +7 -7
- package/docs/guide/plugin-api.md +253 -185
- package/docs/guide/plugin-guide.md +332 -235
- package/docs/guide/plugin-testing.md +96 -82
- package/package.json +12 -16
- 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/cursor/scroll-hold.d.ts +0 -10
- package/dist/cursor/scroll-hold.js +0 -22
- package/dist/invariants/split-landing.d.ts +0 -8
- package/dist/invariants/split-landing.js +0 -15
- 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 -31
- package/dist/tree-operations/paste/replace-block-at-parent.js +0 -78
|
@@ -3,9 +3,6 @@ export declare function clampWidth(width: number, maxWidth: number): number;
|
|
|
3
3
|
export declare const KEYBOARD_MIN_WIDTH = 32;
|
|
4
4
|
export declare function keyboardResizeWidth(currentWidth: number, delta: number, maxWidth: number): number;
|
|
5
5
|
export declare function snapWidth(width: number, maxWidth: number, snapThresholdPx: number): number;
|
|
6
|
-
/**
|
|
7
|
-
*
|
|
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
|
-
*/
|
|
6
|
+
/** The height the drag showed: none for an aspect-locked drag (`|N`, the renderer derives it),
|
|
7
|
+
* the existing height for an unlocked one, which needs the `|NxM` form. */
|
|
11
8
|
export declare function resolveDraggedHeight(aspectLocked: boolean, previewHeight: number): number | undefined;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Pure math for image drag-to-resize: clamp, snap-to-percentage, aspect lock.
|
|
2
|
-
// No DOM
|
|
2
|
+
// No DOM: the handles component owns pointer events and calls these.
|
|
3
3
|
export const MIN_WIDTH = 16;
|
|
4
4
|
const SNAP_PERCENTAGES = [25, 50, 75, 100];
|
|
5
5
|
export function clampWidth(width, maxWidth) {
|
|
@@ -25,11 +25,8 @@ export function snapWidth(width, maxWidth, snapThresholdPx) {
|
|
|
25
25
|
}
|
|
26
26
|
return rounded;
|
|
27
27
|
}
|
|
28
|
-
/**
|
|
29
|
-
*
|
|
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
|
-
*/
|
|
28
|
+
/** The height the drag showed: none for an aspect-locked drag (`|N`, the renderer derives it),
|
|
29
|
+
* the existing height for an unlocked one, which needs the `|NxM` form. */
|
|
33
30
|
export function resolveDraggedHeight(aspectLocked, previewHeight) {
|
|
34
31
|
// A widget that never laid out reports 0; `|Nx0` is worse than no hint at all.
|
|
35
32
|
if (aspectLocked || previewHeight < 1)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* the image kind's `onSelectedKey` at mount (built-in-blocks.ts), so the
|
|
4
|
-
* selected-widget keydown path stays kind
|
|
2
|
+
* What a key does while an image widget is selected: Shift+Arrow resizes it. Registered as
|
|
3
|
+
* the image kind's `onSelectedKey` at mount (built-in-blocks.ts), so the shared
|
|
4
|
+
* selected-widget keydown path stays the same for every kind.
|
|
5
5
|
*/
|
|
6
6
|
import type { InlineWidgetEditingContext } from '../../core/inline/inline-widgets';
|
|
7
7
|
export declare function imageWidgetOnSelectedKey(e: KeyboardEvent, ctx: InlineWidgetEditingContext): boolean;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* the image kind's `onSelectedKey` at mount (built-in-blocks.ts), so the
|
|
4
|
-
* selected-widget keydown path stays kind
|
|
2
|
+
* What a key does while an image widget is selected: Shift+Arrow resizes it. Registered as
|
|
3
|
+
* the image kind's `onSelectedKey` at mount (built-in-blocks.ts), so the shared
|
|
4
|
+
* selected-widget keydown path stays the same for every kind.
|
|
5
5
|
*/
|
|
6
|
-
import { buildImageEditBytes } from '
|
|
6
|
+
import { buildImageEditBytes } from '../../core/inline/image-source-bytes';
|
|
7
7
|
import { keyboardResizeWidth } from './image-resize';
|
|
8
8
|
const KEYBOARD_STEP = 20;
|
|
9
9
|
const FALLBACK_DEFAULT_WIDTH = 400;
|
|
10
10
|
export function imageWidgetOnSelectedKey(e, ctx) {
|
|
11
|
-
// A resize is an edit;
|
|
11
|
+
// A resize is an edit; refusing here lets the caller swallow the key and do nothing.
|
|
12
12
|
if (ctx.presentationMode === 'reading')
|
|
13
13
|
return false;
|
|
14
14
|
if (!(e.shiftKey && (e.key === 'ArrowLeft' || e.key === 'ArrowRight')))
|
|
@@ -18,8 +18,8 @@ export function imageWidgetOnSelectedKey(e, ctx) {
|
|
|
18
18
|
const delta = e.key === 'ArrowRight' ? KEYBOARD_STEP : -KEYBOARD_STEP;
|
|
19
19
|
const currentWidth = inline.width ?? FALLBACK_DEFAULT_WIDTH;
|
|
20
20
|
const newWidth = keyboardResizeWidth(currentWidth, delta, ctx.editorContentWidth);
|
|
21
|
-
// url and title are untouched, so
|
|
22
|
-
//
|
|
21
|
+
// The url and title are untouched, so keep the label and the `![alt][label]` form
|
|
22
|
+
// rather than writing the resolved url inline.
|
|
23
23
|
const newFields = {
|
|
24
24
|
alt: inline.alt ?? '',
|
|
25
25
|
url: inline.url ?? '',
|
|
@@ -32,8 +32,8 @@ export function imageWidgetOnSelectedKey(e, ctx) {
|
|
|
32
32
|
...(inline.label !== undefined ? { label: inline.label } : {})
|
|
33
33
|
};
|
|
34
34
|
const newBytes = buildImageEditBytes(inline, node.raw, newFields);
|
|
35
|
-
// The
|
|
36
|
-
// anyway:
|
|
35
|
+
// The inline syntax handler that owns these bytes cannot express the resize, but take
|
|
36
|
+
// the key anyway: passing a Shift+Arrow on would extend the selection out of the image.
|
|
37
37
|
if (newBytes === null)
|
|
38
38
|
return true;
|
|
39
39
|
const newRaw = node.raw.slice(0, ctx.widgetStart) + newBytes + node.raw.slice(ctx.widgetEnd);
|
|
@@ -3,9 +3,8 @@ import type { ImageLoadPolicy } from '../../core/inline-render';
|
|
|
3
3
|
export interface BuildImageWidgetOpts {
|
|
4
4
|
resolveImageUrl: (rawUrl: string) => string;
|
|
5
5
|
imageLoadPolicy?: ImageLoadPolicy;
|
|
6
|
-
/**
|
|
7
|
-
*
|
|
8
|
-
* unbroken until the async `error` re-fires — a flicker on every keystroke. */
|
|
6
|
+
/** URLs that failed to load this session, so a rebuilt <img> renders broken at once instead
|
|
7
|
+
* of flickering until its `error` fires again. */
|
|
9
8
|
brokenUrlCache: Set<string>;
|
|
10
9
|
}
|
|
11
10
|
export declare function buildImageWidget(node: InlineNode, _raw: string, opts: BuildImageWidgetOpts): HTMLSpanElement;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
// The widget
|
|
2
|
-
// `cursor/widget-offset.ts` reads; textContent stays empty so prose
|
|
3
|
-
// `textContent ===
|
|
1
|
+
// The widget reports its raw bytes through data-source-start and data-source-end, which
|
|
2
|
+
// `cursor/widget-offset.ts` reads; its textContent stays empty so a prose block's
|
|
3
|
+
// `textContent === marker prefix + raw` still holds.
|
|
4
4
|
import { isAllowedImageSrcScheme } from '../../core/url-policy';
|
|
5
5
|
import { findSurfacePathForElement } from '../../selection/path-lookup';
|
|
6
6
|
import { devWarn } from '../../dev-warn';
|
|
@@ -8,28 +8,25 @@ import { applyCropToWidget } from './image-crop';
|
|
|
8
8
|
export function buildImageWidget(node, _raw, opts) {
|
|
9
9
|
const widget = document.createElement('span');
|
|
10
10
|
widget.className = 'md-image-widget';
|
|
11
|
-
// `data-inline-widget`
|
|
12
|
-
//
|
|
11
|
+
// `data-inline-widget` marks any widget the caret cannot enter, and is read by the
|
|
12
|
+
// caret code, the selection painter and the raw reader; `data-image-widget` is this one.
|
|
13
13
|
widget.dataset.inlineWidget = '';
|
|
14
14
|
widget.dataset.imageWidget = '';
|
|
15
15
|
widget.dataset.sourceStart = String(node.start);
|
|
16
16
|
widget.dataset.sourceEnd = String(node.end);
|
|
17
17
|
widget.setAttribute('contenteditable', 'false');
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
// is a cross-block extension the block owns, so decline it.
|
|
18
|
+
// On `click`, not `pointerdown`, so a drag can still start on the image; a Shift-click
|
|
19
|
+
// extends the block's own selection.
|
|
21
20
|
widget.addEventListener('click', (e) => {
|
|
22
21
|
if (e.shiftKey)
|
|
23
22
|
return;
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
// skips a rebuild and a baked path resolves the wrong CST node. The SURFACE door:
|
|
27
|
-
// inside a cell the block path stops at the table, whose offsets are cell indices.
|
|
23
|
+
// Resolved at the click: content inserted above moves the block's path without a
|
|
24
|
+
// rebuild of this widget, so a path stored at build time would go stale.
|
|
28
25
|
const paragraphPath = findSurfacePathForElement(widget);
|
|
29
26
|
if (!paragraphPath)
|
|
30
27
|
return;
|
|
31
|
-
// Match TextEditableBlock.snapClickToWidgetEdge, which
|
|
32
|
-
// widget's right edge, so Ctrl+Z restores the click
|
|
28
|
+
// Match TextEditableBlock.snapClickToWidgetEdge, which puts the caret at the
|
|
29
|
+
// widget's right edge, so Ctrl+Z restores the caret where the click left it.
|
|
33
30
|
const event = new CustomEvent('image-widget-select', {
|
|
34
31
|
bubbles: true,
|
|
35
32
|
detail: {
|
|
@@ -62,9 +59,8 @@ export function buildImageWidget(node, _raw, opts) {
|
|
|
62
59
|
img.setAttribute('width', String(node.width));
|
|
63
60
|
if (node.height !== undefined)
|
|
64
61
|
img.setAttribute('height', String(node.height));
|
|
65
|
-
// A
|
|
66
|
-
//
|
|
67
|
-
// moment `height: auto` has one to read. With a crop the box is a frame the image pans in.
|
|
62
|
+
// A `|WxH` box reserves space before the bytes arrive and survives the decode, where the
|
|
63
|
+
// attributes alone lose to the natural ratio; with a crop it is the frame.
|
|
68
64
|
if (node.width !== undefined && node.height !== undefined) {
|
|
69
65
|
img.style.aspectRatio = `${node.width} / ${node.height}`;
|
|
70
66
|
if (node.crop) {
|
|
@@ -75,18 +71,17 @@ export function buildImageWidget(node, _raw, opts) {
|
|
|
75
71
|
opts.brokenUrlCache.add(resolvedUrl);
|
|
76
72
|
widget.classList.add('md-image-broken');
|
|
77
73
|
};
|
|
78
|
-
// Broken means the request finished and produced nothing to lay out, so each
|
|
79
|
-
//
|
|
74
|
+
// Broken means the request finished and produced nothing to lay out, so each place
|
|
75
|
+
// below checks that it finished: `complete` here, and the load event itself below.
|
|
80
76
|
const hasNoIntrinsicSize = () => img.naturalWidth === 0;
|
|
81
|
-
// Only a loaded image can be broken: a blocked
|
|
82
|
-
// and an unset <img> reports complete
|
|
77
|
+
// Only a loaded image can be broken: a blocked or placeholder widget leaves src unset,
|
|
78
|
+
// and an unset <img> reports complete with naturalWidth 0 in a real browser.
|
|
83
79
|
if (img.src && (opts.brokenUrlCache.has(resolvedUrl) || (img.complete && hasNoIntrinsicSize()))) {
|
|
84
80
|
markBroken();
|
|
85
81
|
}
|
|
86
82
|
img.addEventListener('error', markBroken);
|
|
87
|
-
//
|
|
88
|
-
//
|
|
89
|
-
// deferring that to the next rebuild leaves the placeholder a render behind.
|
|
83
|
+
// `load` can fire with no size (a truncated body, an SVG without dimensions), so it is
|
|
84
|
+
// checked here rather than a render later.
|
|
90
85
|
img.addEventListener('load', () => {
|
|
91
86
|
if (hasNoIntrinsicSize()) {
|
|
92
87
|
markBroken();
|
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import type { WidgetTarget } from '../../selection/primitives';
|
|
2
|
+
import type { SelectionState } from '../../selection/selection-state.svelte';
|
|
3
|
+
/** What a click-outside handler must not count as outside: the widget itself and the overlay
|
|
4
|
+
* controls attached to it. */
|
|
3
5
|
export declare const IMAGE_CHROME_SELECTOR = "[data-image-widget], [data-image-overlay]";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
preSelectOffset: number;
|
|
8
|
-
}
|
|
6
|
+
/** Whether a press should end the image selection, for both click-outside handlers. A Shift-press
|
|
7
|
+
* on this editor's text is left to that block, which grows a range from the image and ends it. */
|
|
8
|
+
export declare function pressLeavesImage(press: PointerEvent, editorRoot: Element | null): boolean;
|
|
9
9
|
export interface WidgetSelectionState {
|
|
10
10
|
getSelected(): WidgetTarget | null;
|
|
11
11
|
select(target: WidgetTarget): void;
|
|
12
|
+
/** Ends a selected widget; with none selected, touches nothing else the store holds. */
|
|
12
13
|
clear(): void;
|
|
14
|
+
followEdit(paragraphPath: number[], editEnd: number, delta: number): void;
|
|
13
15
|
isSelected(paragraphPath: number[], sourceStart: number): boolean;
|
|
14
16
|
}
|
|
15
|
-
export
|
|
16
|
-
onSelect: () => void;
|
|
17
|
-
}
|
|
18
|
-
export declare function createWidgetSelectionState(opts: CreateWidgetSelectionOpts): WidgetSelectionState;
|
|
17
|
+
export declare function createWidgetSelectionState(selection: SelectionState): WidgetSelectionState;
|
|
@@ -1,26 +1,33 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
1
|
+
// The image and text-block readers' view of the widget the selection state holds. It keeps no state
|
|
2
|
+
// of its own, so it can't disagree with the store. Interim: it goes once those readers read the
|
|
3
|
+
// selection state themselves.
|
|
4
|
+
import { selectWidgetWhole } from '../../selection/caret-doors';
|
|
3
5
|
import { pathsEqual } from '../../selection/path-math';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
+
import { findSurfacePathForElement } from '../../selection/path-lookup';
|
|
7
|
+
/** What a click-outside handler must not count as outside: the widget itself and the overlay
|
|
8
|
+
* controls attached to it. */
|
|
6
9
|
export const IMAGE_CHROME_SELECTOR = '[data-image-widget], [data-image-overlay]';
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
/** Whether a press should end the image selection, for both click-outside handlers. A Shift-press
|
|
11
|
+
* on this editor's text is left to that block, which grows a range from the image and ends it. */
|
|
12
|
+
export function pressLeavesImage(press, editorRoot) {
|
|
13
|
+
const target = press.target instanceof Element ? press.target : null;
|
|
14
|
+
if (target?.closest(IMAGE_CHROME_SELECTOR))
|
|
15
|
+
return false;
|
|
16
|
+
const ownedByBlock = press.shiftKey && !!editorRoot?.contains(target) && findSurfacePathForElement(target) !== null;
|
|
17
|
+
return !ownedByBlock;
|
|
18
|
+
}
|
|
19
|
+
export function createWidgetSelectionState(selection) {
|
|
9
20
|
return {
|
|
10
|
-
getSelected: () =>
|
|
11
|
-
select: (target) =>
|
|
12
|
-
selected = {
|
|
13
|
-
paragraphPath: [...target.paragraphPath],
|
|
14
|
-
sourceStart: target.sourceStart,
|
|
15
|
-
preSelectOffset: target.preSelectOffset
|
|
16
|
-
};
|
|
17
|
-
opts.onSelect();
|
|
18
|
-
},
|
|
21
|
+
getSelected: () => selection.widget,
|
|
22
|
+
select: (target) => selectWidgetWhole(selection, target),
|
|
19
23
|
clear: () => {
|
|
20
|
-
|
|
24
|
+
if (selection.widget !== null)
|
|
25
|
+
selection.clear();
|
|
21
26
|
},
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
27
|
+
followEdit: (path, editEnd, delta) => selection.followWidgetEdit(path, editEnd, delta),
|
|
28
|
+
isSelected: (path, start) => {
|
|
29
|
+
const widget = selection.widget;
|
|
30
|
+
return (widget !== null && widget.sourceStart === start && pathsEqual(widget.paragraphPath, path));
|
|
31
|
+
}
|
|
25
32
|
};
|
|
26
33
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The kind cue: in a mode that hides markers, a keystroke that turns its block into another kind
|
|
3
|
+
* leaves the new kind's name at the block's corner for a moment and says it once to a screen
|
|
4
|
+
* reader, so the change has a visible cause. Only typed text reports here, never a command.
|
|
5
|
+
*/
|
|
6
|
+
import type { AnyBlockKind } from '../core/nodes';
|
|
7
|
+
import type { DocumentView } from '../core/node-views';
|
|
8
|
+
import { type PresentationMode } from '../presentation-mode';
|
|
9
|
+
export interface KindCue {
|
|
10
|
+
/** Once `write` settles, cue the block at `path` if its shown kind differs from `before`. */
|
|
11
|
+
afterTypedWrite(write: Promise<unknown>, path: readonly number[], before: AnyBlockKind): Promise<void>;
|
|
12
|
+
/** The label the block at `path` shows, until its fade ends or the block there loses that name. */
|
|
13
|
+
labelAt(path: readonly number[]): string | undefined;
|
|
14
|
+
dismiss(path: readonly number[]): void;
|
|
15
|
+
}
|
|
16
|
+
export interface KindCueDeps {
|
|
17
|
+
getDoc: () => DocumentView;
|
|
18
|
+
getPresentationMode: () => PresentationMode;
|
|
19
|
+
announce: (label: string) => void;
|
|
20
|
+
}
|
|
21
|
+
export declare function createKindCue(deps: KindCueDeps): KindCue;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The kind cue: in a mode that hides markers, a keystroke that turns its block into another kind
|
|
3
|
+
* leaves the new kind's name at the block's corner for a moment and says it once to a screen
|
|
4
|
+
* reader, so the change has a visible cause. Only typed text reports here, never a command.
|
|
5
|
+
*/
|
|
6
|
+
import { SvelteMap } from 'svelte/reactivity';
|
|
7
|
+
import { shownKind } from '../core/parsers/heading';
|
|
8
|
+
import { blockAccessibleName } from '../a11y-strings';
|
|
9
|
+
import { hidesMarkers } from '../presentation-mode';
|
|
10
|
+
import { blockNodeAt } from '../tree-operations/node-primitives';
|
|
11
|
+
export function createKindCue(deps) {
|
|
12
|
+
const labels = new SvelteMap();
|
|
13
|
+
const keyOf = (path) => path.join(',');
|
|
14
|
+
return {
|
|
15
|
+
async afterTypedWrite(write, path, before) {
|
|
16
|
+
await write;
|
|
17
|
+
// Source mode draws the markers that explain the change; reading mode cannot type.
|
|
18
|
+
if (!hidesMarkers(deps.getPresentationMode()))
|
|
19
|
+
return;
|
|
20
|
+
const after = blockNodeAt(deps.getDoc(), [...path]);
|
|
21
|
+
if (!after || shownKind(after) === before)
|
|
22
|
+
return;
|
|
23
|
+
const label = blockAccessibleName(after);
|
|
24
|
+
labels.set(keyOf(path), label);
|
|
25
|
+
deps.announce(label);
|
|
26
|
+
},
|
|
27
|
+
// Keyed by path, so the label shows only while the block there still carries that name.
|
|
28
|
+
labelAt(path) {
|
|
29
|
+
const label = labels.get(keyOf(path));
|
|
30
|
+
const node = label === undefined ? undefined : blockNodeAt(deps.getDoc(), [...path]);
|
|
31
|
+
return node && blockAccessibleName(node) === label ? label : undefined;
|
|
32
|
+
},
|
|
33
|
+
dismiss: (path) => void labels.delete(keyOf(path))
|
|
34
|
+
};
|
|
35
|
+
}
|
|
@@ -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, {}, "">;
|