@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
|
@@ -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. */
|
|
@@ -1,24 +1,19 @@
|
|
|
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 { wireOverlayRemeasure } from '../../cursor/overlay-remeasure';
|
|
7
|
-
import { createInlineRangeCommit } from '../../editor-actions/inline-range-commit';
|
|
8
7
|
import { isBlockNode, nodeAt } from '../../tree-operations/node-primitives';
|
|
9
8
|
import { linkConstructAt } from '../blocks/text/link-at-point';
|
|
10
|
-
import { buildLinkEditBytes, buildLinkUnwrapBytes, buildLinkWrapBytes, linkFieldsFromInline } from '
|
|
9
|
+
import { buildLinkEditBytes, buildLinkUnwrapBytes, buildLinkWrapBytes, linkFieldsFromInline } from '../../core/inline/link-source-bytes';
|
|
11
10
|
export function createLinkCardCommitter(deps) {
|
|
12
|
-
const inlineRange =
|
|
13
|
-
getDoc: deps.getDoc,
|
|
14
|
-
controller: deps.controller,
|
|
15
|
-
grammar: deps.grammar
|
|
16
|
-
});
|
|
11
|
+
const { inlineRange } = deps;
|
|
17
12
|
function resolve(target) {
|
|
18
13
|
const block = nodeAt(deps.getDoc(), target.path);
|
|
19
14
|
if (block === null || !isBlockNode(block))
|
|
20
15
|
return null;
|
|
21
|
-
const link = linkConstructAt(block, target.sourceStart, deps.
|
|
16
|
+
const link = linkConstructAt(block, target.sourceStart, deps.reading);
|
|
22
17
|
return link === null ? null : { block, link, url: link.url ?? '' };
|
|
23
18
|
}
|
|
24
19
|
function editBytes(target, url) {
|
|
@@ -27,9 +22,8 @@ export function createLinkCardCommitter(deps) {
|
|
|
27
22
|
return null;
|
|
28
23
|
const { block, link } = resolved;
|
|
29
24
|
const current = linkFieldsFromInline(link, block.raw);
|
|
30
|
-
// A reference form cannot
|
|
31
|
-
//
|
|
32
|
-
// title rides along either way — the card never shows it, so it is not the card's to drop.
|
|
25
|
+
// A reference form cannot take a new url without editing its definition elsewhere, so a
|
|
26
|
+
// changed url writes the inline form; the title comes along either way.
|
|
33
27
|
const fields = url === current.url
|
|
34
28
|
? current
|
|
35
29
|
: {
|
|
@@ -37,15 +31,15 @@ export function createLinkCardCommitter(deps) {
|
|
|
37
31
|
url,
|
|
38
32
|
...(current.title !== undefined ? { title: current.title } : {})
|
|
39
33
|
};
|
|
40
|
-
const bytes = buildLinkEditBytes(link, block.raw, fields, deps.
|
|
34
|
+
const bytes = buildLinkEditBytes(link, block.raw, fields, deps.reading);
|
|
41
35
|
return bytes === null ? null : { bytes, link };
|
|
42
36
|
}
|
|
43
37
|
function buildBytes(target, url) {
|
|
44
38
|
return editBytes(target, url)?.bytes ?? null;
|
|
45
39
|
}
|
|
46
40
|
function commitUrl(target, url) {
|
|
47
|
-
// An unchanged url
|
|
48
|
-
// serializer normalizes (`(<a b>)`
|
|
41
|
+
// An unchanged url just closes the card: a rebuild would respell author bytes the
|
|
42
|
+
// serializer normalizes (`(<a b>)` to `(a%20b)`) and add an undo entry for nothing.
|
|
49
43
|
const resolved = resolve(target);
|
|
50
44
|
if (!resolved || url === resolved.url)
|
|
51
45
|
return;
|
|
@@ -58,7 +52,7 @@ export function createLinkCardCommitter(deps) {
|
|
|
58
52
|
const block = nodeAt(deps.getDoc(), target.path);
|
|
59
53
|
if (block === null || !isBlockNode(block))
|
|
60
54
|
return;
|
|
61
|
-
const bytes = buildLinkWrapBytes(block.raw, target.start, target.end, url, deps.
|
|
55
|
+
const bytes = buildLinkWrapBytes(block.raw, target.start, target.end, url, deps.reading);
|
|
62
56
|
if (bytes === null)
|
|
63
57
|
return;
|
|
64
58
|
void write(target.path, target.start, target.end, bytes);
|
|
@@ -67,19 +61,17 @@ export function createLinkCardCommitter(deps) {
|
|
|
67
61
|
const resolved = resolve(target);
|
|
68
62
|
if (!resolved)
|
|
69
63
|
return;
|
|
70
|
-
const bytes = buildLinkUnwrapBytes(resolved.link, resolved.block.raw, deps.
|
|
64
|
+
const bytes = buildLinkUnwrapBytes(resolved.link, resolved.block.raw, deps.reading);
|
|
71
65
|
if (bytes === null)
|
|
72
66
|
return;
|
|
73
67
|
void write(target.path, resolved.link.start, resolved.link.end, bytes);
|
|
74
68
|
}
|
|
69
|
+
// The caret goes to the construct's outer start, which the undo entry records too, so the caret
|
|
70
|
+
// before and after an undo agree.
|
|
75
71
|
async function write(path, start, end, bytes) {
|
|
76
|
-
await inlineRange.commitInlineRange(path, start, end, bytes, start);
|
|
77
|
-
// The construct's outer start, which is also the offset the undo entry records: the caret
|
|
78
|
-
// before an undo and the caret after it then agree, and a remove-link lands where the
|
|
79
|
-
// unwrapped text now begins.
|
|
80
|
-
await deps.landCaret(path, start);
|
|
72
|
+
await inlineRange.commitInlineRange(path, start, end, bytes, start, { landCaret: true });
|
|
81
73
|
}
|
|
82
|
-
/** The raw range the card
|
|
74
|
+
/** The raw range the card sits under: the resolved construct, or the create range as it is. */
|
|
83
75
|
function anchoredRange() {
|
|
84
76
|
const target = deps.getTarget();
|
|
85
77
|
if (target) {
|
|
@@ -95,8 +87,8 @@ export function createLinkCardCommitter(deps) {
|
|
|
95
87
|
const editorEl = deps.getEditorEl();
|
|
96
88
|
if (!cardEl || !editorEl)
|
|
97
89
|
return () => { };
|
|
98
|
-
// Measured through the rects API
|
|
99
|
-
// every commit does
|
|
90
|
+
// Measured through the rects API from raw offsets, so the position survives the DOM
|
|
91
|
+
// rebuild every commit does: there is no element reference here to go stale.
|
|
100
92
|
const measure = () => {
|
|
101
93
|
const range = anchoredRange();
|
|
102
94
|
if (!range)
|
|
@@ -111,9 +103,8 @@ export function createLinkCardCommitter(deps) {
|
|
|
111
103
|
cardEl.style.top = `${rect.bottom - editorRect.top - borderTop + editorEl.scrollTop}px`;
|
|
112
104
|
cardEl.style.left = `${rect.left - editorRect.left - borderLeft + editorEl.scrollLeft}px`;
|
|
113
105
|
};
|
|
114
|
-
//
|
|
115
|
-
//
|
|
116
|
-
// below is the one document trigger.
|
|
106
|
+
// Untracked setup measure, or the caller's $effect would re-wire these listeners on every
|
|
107
|
+
// keystroke; the `edit` subscription below is the document trigger.
|
|
117
108
|
const unwireScroll = wireOverlayRemeasure({
|
|
118
109
|
el: cardEl,
|
|
119
110
|
editorRoot: editorEl,
|
|
@@ -1,39 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `link.openCard
|
|
3
|
-
* it,
|
|
4
|
-
* the card
|
|
5
|
-
* document
|
|
2
|
+
* `link.openCard`: the keyboard way into the link card, and the pressed state a toolbar paints
|
|
3
|
+
* for it, both from one lookup of the construct holding the caret or a range inside it. The chord
|
|
4
|
+
* enters the card, with focus in the URL field, unlike a click, which opens it beside a caret that
|
|
5
|
+
* stays in the document. Live mode only: every other mode paints the destination.
|
|
6
6
|
*/
|
|
7
|
-
import type { PresentationMode } from '../../presentation-mode';
|
|
8
7
|
import { type LinkPointQuery, type LinkTarget } from '../blocks/text/link-at-point';
|
|
9
8
|
import type { LinkCardState } from './link-card-state.svelte';
|
|
10
|
-
/** What locating the card's construct takes, whether a
|
|
9
|
+
/** What locating the card's construct takes, whether a click or a pressed-state read asks. */
|
|
11
10
|
export interface LinkCardTargetQuery extends LinkPointQuery {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
* a surface that must mint no link says so by passing null wherever it could create. */
|
|
11
|
+
/** The raw selection within this block, or null at a collapsed caret. Required, never given a
|
|
12
|
+
* default: a caller that must create no link says so by passing null wherever it could. */
|
|
15
13
|
selection: {
|
|
16
14
|
start: number;
|
|
17
15
|
end: number;
|
|
18
16
|
} | null;
|
|
19
|
-
/** True while a range crosses
|
|
20
|
-
*
|
|
21
|
-
* block comes back as end-of-walk — a range running to the block's end that nobody made. */
|
|
17
|
+
/** True while a range crosses blocks: `selection`, measured against this block's DOM, reports
|
|
18
|
+
* an endpoint in another block as this block's end. */
|
|
22
19
|
crossBlockRange: boolean;
|
|
23
20
|
}
|
|
24
21
|
export interface LinkCardEntryQuery extends LinkCardTargetQuery {
|
|
25
22
|
card: LinkCardState;
|
|
26
23
|
}
|
|
27
|
-
/**
|
|
28
|
-
*
|
|
29
|
-
* lie wholly inside since the card edits ONE link. Null where the chord creates instead or opens
|
|
30
|
-
* nothing, so a pressed paint and the press it promises resolve the same construct.
|
|
31
|
-
*/
|
|
24
|
+
/** The construct the chord would edit, under the caret or wholly containing the range; null
|
|
25
|
+
* where the chord creates or opens nothing, so the pressed state matches the click. */
|
|
32
26
|
export declare function linkCardTargetAt(query: LinkCardTargetQuery): LinkTarget | null;
|
|
33
|
-
/**
|
|
34
|
-
*
|
|
35
|
-
* sits in, EDIT mode; failing that, CREATE mode over the range, declined when it crosses another
|
|
36
|
-
* construct's bytes, since wrapping inside or across one is a policy question. The chord is
|
|
37
|
-
* consumed either way, by the keymap arm that calls this.
|
|
38
|
-
*/
|
|
27
|
+
/** Edits the construct holding the caret or range, else creates one over the range unless it
|
|
28
|
+
* crosses another construct's bytes. The keymap takes the chord either way. */
|
|
39
29
|
export declare function enterLinkCardAtCaret(query: LinkCardEntryQuery): void;
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `link.openCard
|
|
3
|
-
* it,
|
|
4
|
-
* the card
|
|
5
|
-
* document
|
|
2
|
+
* `link.openCard`: the keyboard way into the link card, and the pressed state a toolbar paints
|
|
3
|
+
* for it, both from one lookup of the construct holding the caret or a range inside it. The chord
|
|
4
|
+
* enters the card, with focus in the URL field, unlike a click, which opens it beside a caret that
|
|
5
|
+
* stays in the document. Live mode only: every other mode paints the destination.
|
|
6
6
|
*/
|
|
7
|
-
import { canWrapRangeAsLink } from '
|
|
7
|
+
import { canWrapRangeAsLink } from '../../core/inline/link-source-bytes';
|
|
8
8
|
import { resolveLinkAtPoint } from '../blocks/text/link-at-point';
|
|
9
|
-
/**
|
|
10
|
-
*
|
|
11
|
-
* lie wholly inside since the card edits ONE link. Null where the chord creates instead or opens
|
|
12
|
-
* nothing, so a pressed paint and the press it promises resolve the same construct.
|
|
13
|
-
*/
|
|
9
|
+
/** The construct the chord would edit, under the caret or wholly containing the range; null
|
|
10
|
+
* where the chord creates or opens nothing, so the pressed state matches the click. */
|
|
14
11
|
export function linkCardTargetAt(query) {
|
|
15
|
-
if (query.mode !== 'live' || query.crossBlockRange)
|
|
12
|
+
if (query.reading.mode() !== 'live' || query.crossBlockRange)
|
|
16
13
|
return null;
|
|
17
14
|
const hit = resolveLinkAtPoint(query);
|
|
18
15
|
if (hit === null)
|
|
@@ -22,22 +19,17 @@ export function linkCardTargetAt(query) {
|
|
|
22
19
|
return null;
|
|
23
20
|
return hit.target;
|
|
24
21
|
}
|
|
25
|
-
/**
|
|
26
|
-
*
|
|
27
|
-
* sits in, EDIT mode; failing that, CREATE mode over the range, declined when it crosses another
|
|
28
|
-
* construct's bytes, since wrapping inside or across one is a policy question. The chord is
|
|
29
|
-
* consumed either way, by the keymap arm that calls this.
|
|
30
|
-
*/
|
|
22
|
+
/** Edits the construct holding the caret or range, else creates one over the range unless it
|
|
23
|
+
* crosses another construct's bytes. The keymap takes the chord either way. */
|
|
31
24
|
export function enterLinkCardAtCaret(query) {
|
|
32
|
-
if (query.mode !== 'live')
|
|
25
|
+
if (query.reading.mode() !== 'live')
|
|
33
26
|
return;
|
|
34
|
-
//
|
|
35
|
-
//
|
|
36
|
-
// otherwise trust are fabricated in exactly that state rather than absent.
|
|
27
|
+
// Command dispatch already refuses a cross-block range; checked again because the offsets
|
|
28
|
+
// here would be made up in that state.
|
|
37
29
|
if (query.crossBlockRange)
|
|
38
30
|
return;
|
|
39
|
-
// Edit before create, since create
|
|
40
|
-
// create
|
|
31
|
+
// Edit before create, since create refuses a range already inside a construct: going the
|
|
32
|
+
// create way there leaves the click doing nothing under a button painted as pressed.
|
|
41
33
|
const target = linkCardTargetAt(query);
|
|
42
34
|
if (target) {
|
|
43
35
|
query.card.enter(target);
|
|
@@ -46,6 +38,6 @@ export function enterLinkCardAtCaret(query) {
|
|
|
46
38
|
const range = query.selection;
|
|
47
39
|
if (range === null || range.start >= range.end)
|
|
48
40
|
return;
|
|
49
|
-
if (canWrapRangeAsLink(query.block.raw, range.start, range.end, query.
|
|
41
|
+
if (canWrapRangeAsLink(query.block.raw, range.start, range.end, query.reading))
|
|
50
42
|
query.card.enterCreate({ path: query.path, start: range.start, end: range.end });
|
|
51
43
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { LinkTarget } from '../blocks/text/link-at-point';
|
|
2
|
-
/** The create gesture's target: the raw range a commit would wrap. A range, not a construct
|
|
3
|
-
* the document holds nothing until Enter
|
|
2
|
+
/** The create gesture's target: the raw range a commit would wrap. A range, not a construct,
|
|
3
|
+
* since the document holds nothing until Enter writes it, so Escape has nothing to clean up. */
|
|
4
4
|
export interface CreateLinkTarget {
|
|
5
5
|
path: number[];
|
|
6
6
|
start: number;
|
|
@@ -10,35 +10,31 @@ export interface LinkCardState {
|
|
|
10
10
|
getTarget(): LinkTarget | null;
|
|
11
11
|
/** Set and `getTarget()` are mutually exclusive: one card, one target. */
|
|
12
12
|
getCreateTarget(): CreateLinkTarget | null;
|
|
13
|
-
/**
|
|
14
|
-
*
|
|
15
|
-
* when this differs from the zero it starts at, which separates the two gestures without a mode
|
|
16
|
-
* flag AND survives the case with no remount to key on: `Mod+K` on an already-open card.
|
|
17
|
-
*/
|
|
13
|
+
/** Zero for a click, a fresh number for each keyboard entry; the card focuses its field when
|
|
14
|
+
* it changes, which also covers `Mod+K` on a card already open. */
|
|
18
15
|
getFocusEpoch(): number;
|
|
19
|
-
/**
|
|
20
|
-
* False when `canOpen`
|
|
16
|
+
/** Positioned beside a live caret; the document keeps focus. The click gesture.
|
|
17
|
+
* False when `canOpen` refused and no card opened. */
|
|
21
18
|
open(target: LinkTarget): boolean;
|
|
22
|
-
/** Opened
|
|
23
|
-
* False when `canEnter`
|
|
19
|
+
/** Opened and focused, so the focus trap and Escape's caret restore both apply. The chord
|
|
20
|
+
* gesture. False when `canEnter` refused. */
|
|
24
21
|
enter(target: LinkTarget): boolean;
|
|
25
|
-
/** Entered over the range a commit would wrap. False when `canOpenCreate`
|
|
22
|
+
/** Entered over the range a commit would wrap. False when `canOpenCreate` refused. */
|
|
26
23
|
enterCreate(target: CreateLinkTarget): boolean;
|
|
27
24
|
close(): void;
|
|
28
25
|
}
|
|
29
26
|
export interface LinkCardOptions {
|
|
30
|
-
/** Runs on every entry path before the card takes the screen
|
|
31
|
-
* rather than at each caller, so entry path
|
|
27
|
+
/** Runs on every entry path before the card takes the screen: the caret snapshot lives here
|
|
28
|
+
* rather than at each caller, so the next entry path cannot forget it. */
|
|
32
29
|
onOpen: () => void;
|
|
33
|
-
/**
|
|
34
|
-
*
|
|
30
|
+
/** For a click: a live selection, native or the editor's cross-block range, is a gesture an
|
|
31
|
+
* unasked-for card must not interrupt or write over. */
|
|
35
32
|
canOpen: () => boolean;
|
|
36
|
-
/**
|
|
37
|
-
* construct from the selection itself, so a range it
|
|
33
|
+
/** For the chord, looser than the click's by exactly one case: the entry resolves the
|
|
34
|
+
* construct from the selection itself, so a range it allows is the card's own bytes. */
|
|
38
35
|
canEnter: () => boolean;
|
|
39
|
-
/**
|
|
40
|
-
*
|
|
41
|
-
* a cross-block range declines at all three. */
|
|
36
|
+
/** For create: requires the selection `canOpen` forbids, since the range is the target. All
|
|
37
|
+
* three checks refuse a cross-block range. */
|
|
42
38
|
canOpenCreate: () => boolean;
|
|
43
39
|
}
|
|
44
40
|
export declare function createLinkCardState(options: LinkCardOptions): LinkCardState;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// The open link card's target
|
|
2
|
-
// rebuilds the inline tree
|
|
1
|
+
// The open link card's target: only what identifies it, a path plus where the construct starts,
|
|
2
|
+
// because every commit rebuilds the inline tree and a captured node would point at moved bytes.
|
|
3
3
|
export function createLinkCardState(options) {
|
|
4
4
|
let target = $state(null);
|
|
5
5
|
let createTarget = $state(null);
|
|
@@ -1,17 +1,10 @@
|
|
|
1
1
|
import type { DocumentView } from '../core/node-views';
|
|
2
2
|
import type { EditEvent } from '../editor-events';
|
|
3
|
-
/**
|
|
4
|
-
*
|
|
5
|
-
* hot path. Any op that is not a kind-stable `input`/`metadataUpdate` could add or remove a
|
|
6
|
-
* definition; a kind-stable one only can when its target is itself an LRD. `input` is kind-stable
|
|
7
|
-
* by construction, held by the input-op kind-stability lint under `test/invariants/lint/`.
|
|
8
|
-
*/
|
|
3
|
+
/** Keeps the whole-document map rebuild off the keystroke path: `input` and `metadataUpdate`
|
|
4
|
+
* never change a block's kind, so they matter only when the block is itself a definition. */
|
|
9
5
|
export declare function lrdMapCouldChange(doc: DocumentView, event: EditEvent): boolean;
|
|
10
|
-
/**
|
|
11
|
-
*
|
|
12
|
-
* Reference-bearing render memos key on the epoch instead of the whole (~MB)
|
|
13
|
-
* signature, so bumping on every rebuild would re-render every bracket-bearing block.
|
|
14
|
-
*/
|
|
6
|
+
/** Changes exactly when the signature does: render caches key on it rather than the (~MB)
|
|
7
|
+
* signature, and a bump per rebuild would re-render every block with a bracket in it. */
|
|
15
8
|
export declare function advanceSignatureEpoch(prevSignature: string, prevEpoch: number, nextSignature: string): {
|
|
16
9
|
signature: string;
|
|
17
10
|
epoch: number;
|