@voithos-labs/aragonite 0.10.3 → 0.10.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/a11y-strings.d.ts +12 -5
- package/dist/a11y-strings.js +61 -5
- package/dist/action-contracts.d.ts +242 -155
- package/dist/action-contracts.js +2 -2
- package/dist/active-editor.d.ts +3 -3
- package/dist/active-editor.js +8 -9
- package/dist/ambient/ambient-dom.d.ts +2 -5
- package/dist/ambient/ambient-dom.js +16 -62
- package/dist/assert.js +6 -5
- package/dist/block-component.d.ts +135 -109
- package/dist/block-component.js +30 -22
- package/dist/block-id.d.ts +6 -10
- package/dist/block-id.js +25 -14
- package/dist/bounded-memo.d.ts +5 -5
- package/dist/bounded-memo.js +6 -6
- package/dist/components/BlockDragHandle.svelte +13 -20
- package/dist/components/BlockHost.svelte +56 -134
- package/dist/components/BlockList.svelte +22 -19
- package/dist/components/DecorationOverlay.svelte +9 -10
- package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
- package/dist/components/Editor.svelte +619 -1089
- package/dist/components/Editor.svelte.d.ts +9 -20
- package/dist/components/GapCaret.svelte +26 -59
- package/dist/components/SelectionOverlay.svelte +36 -67
- package/dist/components/SelectionOverlay.svelte.d.ts +6 -4
- package/dist/components/TailInsert.svelte +8 -55
- package/dist/components/TailInsert.svelte.d.ts +4 -6
- package/dist/components/block-content-selector.d.ts +11 -11
- package/dist/components/block-content-selector.js +11 -11
- package/dist/components/block-el-lookup.d.ts +6 -0
- package/dist/components/block-el-lookup.js +27 -0
- package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
- package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
- package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
- package/dist/components/blocks/code/CodeBlock.svelte +255 -276
- package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
- package/dist/components/blocks/code/CodeBlockRail.svelte +103 -100
- package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
- package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
- package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
- package/dist/components/blocks/code/code-bootstrap.js +35 -28
- package/dist/components/blocks/code/code-context-actions.js +5 -4
- package/dist/components/blocks/code/code-enter.js +2 -2
- package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
- package/dist/components/blocks/code/code-fence-boundary.js +40 -66
- package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
- package/dist/components/blocks/code/code-fence-exit.js +24 -25
- package/dist/components/blocks/code/code-indent.d.ts +2 -2
- package/dist/components/blocks/code/code-indent.js +4 -7
- package/dist/components/blocks/code/code-languages.d.ts +16 -12
- package/dist/components/blocks/code/code-languages.js +58 -32
- package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
- package/dist/components/blocks/code/code-paste-surface.js +9 -18
- package/dist/components/blocks/code/code-renderer.d.ts +21 -5
- package/dist/components/blocks/code/code-renderer.js +90 -125
- package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
- package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
- package/dist/components/blocks/directive/activate-directives.js +18 -13
- package/dist/components/blocks/editable-leaf.d.ts +50 -74
- package/dist/components/blocks/editable-leaf.js +144 -202
- package/dist/components/blocks/editable-surface.d.ts +96 -100
- package/dist/components/blocks/editable-surface.js +101 -109
- package/dist/components/blocks/list/ListBlock.svelte +46 -90
- package/dist/components/blocks/list/ListItemBlock.svelte +99 -144
- package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +3 -0
- package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
- package/dist/components/blocks/list/task-checkbox.js +12 -7
- package/dist/components/blocks/plain-text-backend.d.ts +4 -20
- package/dist/components/blocks/plain-text-backend.js +9 -43
- package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
- package/dist/components/blocks/surface-wiring.svelte.js +15 -34
- package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
- package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
- package/dist/components/blocks/table/TableBlock.svelte +100 -165
- package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
- package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
- package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
- package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
- package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
- package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
- package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
- package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
- package/dist/components/blocks/table/cell-pointer.js +49 -71
- package/dist/components/blocks/table/cell-render.d.ts +24 -29
- package/dist/components/blocks/table/cell-render.js +29 -31
- package/dist/components/blocks/table/selected-cells.d.ts +7 -7
- package/dist/components/blocks/table/selected-cells.js +9 -13
- package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
- package/dist/components/blocks/table/table-caret-at-point.js +5 -5
- package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
- package/dist/components/blocks/table/table-cell-paste.js +27 -43
- package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
- package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
- package/dist/components/blocks/table/table-menu-model.js +6 -10
- package/dist/components/blocks/table/table-navigation.js +2 -2
- package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
- package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
- package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
- package/dist/components/blocks/text/auto-pair-record.js +51 -0
- package/dist/components/blocks/text/click-snap-guard.d.ts +9 -4
- package/dist/components/blocks/text/click-snap-guard.js +16 -5
- package/dist/components/blocks/text/composition-seat.d.ts +17 -14
- package/dist/components/blocks/text/composition-seat.js +11 -11
- package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
- package/dist/components/blocks/text/construct-edge-delete.js +50 -65
- package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
- package/dist/components/blocks/text/construct-reveal.js +13 -14
- package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
- package/dist/components/blocks/text/delimiter-autopair.js +87 -103
- package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
- package/dist/components/blocks/text/edge-policy-dispatch.js +164 -180
- package/dist/components/blocks/text/edge-seat.d.ts +17 -26
- package/dist/components/blocks/text/edge-seat.js +43 -70
- package/dist/components/blocks/text/link-at-point.d.ts +9 -9
- package/dist/components/blocks/text/link-at-point.js +12 -15
- package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
- package/dist/components/blocks/text/live-join-seam.js +75 -112
- package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
- package/dist/components/blocks/text/live-selection-edit.js +32 -105
- package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
- package/dist/components/blocks/text/live-split-rebalance.js +50 -67
- package/dist/components/blocks/text/marker-completion.d.ts +7 -12
- package/dist/components/blocks/text/marker-completion.js +17 -10
- package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
- package/dist/components/blocks/text/pending-mark-insert.js +30 -49
- package/dist/components/blocks/text/screen-diff.d.ts +5 -15
- package/dist/components/blocks/text/screen-diff.js +5 -19
- package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
- package/dist/components/blocks/text/text-clipboard.js +27 -32
- package/dist/components/blocks/text/text-keydown.d.ts +20 -30
- package/dist/components/blocks/text/text-keydown.js +54 -51
- package/dist/components/blocks/text/text-render.d.ts +25 -35
- package/dist/components/blocks/text/text-render.js +82 -61
- package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
- package/dist/components/blocks/text/widget-adjacency.js +17 -17
- package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
- package/dist/components/blocks/text/widget-interaction.js +243 -208
- package/dist/components/blocks/widget-portal.d.ts +20 -29
- package/dist/components/blocks/widget-portal.js +16 -14
- package/dist/components/built-in-blocks.d.ts +3 -4
- package/dist/components/built-in-blocks.js +17 -18
- package/dist/components/drag-handle.d.ts +13 -30
- package/dist/components/drag-handle.js +25 -63
- package/dist/components/editor-built-ins.d.ts +1 -0
- package/dist/components/editor-built-ins.js +16 -0
- package/dist/components/editor-root-clipboard.d.ts +6 -6
- package/dist/components/editor-root-clipboard.js +16 -27
- package/dist/components/editor-root-document-swap.d.ts +49 -0
- package/dist/components/editor-root-document-swap.js +54 -0
- package/dist/components/editor-root-focus.d.ts +5 -4
- package/dist/components/editor-root-focus.js +51 -22
- package/dist/components/editor-root-focused-surface.d.ts +35 -0
- package/dist/components/editor-root-focused-surface.js +65 -0
- package/dist/components/editor-root-geometry.d.ts +15 -24
- package/dist/components/editor-root-geometry.js +27 -31
- package/dist/components/editor-root-gestures.d.ts +39 -0
- package/dist/components/editor-root-gestures.js +189 -0
- package/dist/components/editor-root-keydown.d.ts +10 -25
- package/dist/components/editor-root-keydown.js +19 -43
- package/dist/components/editor-root-listeners.d.ts +22 -31
- package/dist/components/editor-root-listeners.js +49 -46
- package/dist/components/editor-root-menus.d.ts +51 -0
- package/dist/components/editor-root-menus.js +147 -0
- package/dist/components/editor-root-mode-flip.d.ts +16 -11
- package/dist/components/editor-root-mode-flip.js +36 -34
- package/dist/components/editor-root-scroll-host.d.ts +22 -0
- package/dist/components/editor-root-scroll-host.js +34 -0
- package/dist/components/editor-root-test-surface.d.ts +48 -0
- package/dist/components/editor-root-test-surface.js +6 -0
- package/dist/components/image/ImageOverlayHost.svelte +44 -35
- package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
- package/dist/components/image/ImageProperties.svelte +37 -41
- package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
- package/dist/components/image/ImageResizeHandles.svelte +26 -30
- package/dist/components/image/image-crop.d.ts +5 -11
- package/dist/components/image/image-crop.js +5 -11
- package/dist/components/image/image-edit-commit.d.ts +19 -16
- package/dist/components/image/image-edit-commit.js +74 -38
- package/dist/components/image/image-resize.d.ts +2 -5
- package/dist/components/image/image-resize.js +3 -6
- package/dist/components/image/image-widget-editing.d.ts +3 -3
- package/dist/components/image/image-widget-editing.js +9 -9
- package/dist/components/image/widget-dom.d.ts +2 -3
- package/dist/components/image/widget-dom.js +19 -24
- package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
- package/dist/components/image/widget-selection-state.svelte.js +26 -19
- package/dist/components/kind-cue.svelte.d.ts +21 -0
- package/dist/components/kind-cue.svelte.js +35 -0
- package/dist/components/link-card/LinkCard.svelte +115 -64
- package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
- package/dist/components/link-card/LinkCardHost.svelte +42 -33
- package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
- package/dist/components/link-card/link-card-commit.d.ts +16 -19
- package/dist/components/link-card/link-card-commit.js +21 -30
- package/dist/components/link-card/link-card-entry.d.ts +13 -23
- package/dist/components/link-card/link-card-entry.js +16 -24
- package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
- package/dist/components/link-card/link-card-state.svelte.js +2 -2
- package/dist/components/lrd-map-gate.d.ts +4 -11
- package/dist/components/lrd-map-gate.js +5 -11
- package/dist/components/menu/BlockMenu.svelte +20 -81
- package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
- package/dist/components/menu/InlineMenuHost.svelte +191 -0
- package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
- package/dist/components/menu/MenuIcon.svelte +3 -103
- package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
- package/dist/components/menu/SelectionToolbar.svelte +380 -0
- package/dist/components/menu/SelectionToolbar.svelte.d.ts +14 -0
- package/dist/components/menu/clipboard-actions.d.ts +3 -4
- package/dist/components/menu/clipboard-actions.js +3 -4
- package/dist/components/menu/default-context-actions.d.ts +4 -13
- package/dist/components/menu/default-context-actions.js +49 -67
- package/dist/components/menu/flyout-placement.d.ts +2 -2
- package/dist/components/menu/flyout-placement.js +2 -2
- package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
- package/dist/components/menu/menu-presence.svelte.js +19 -0
- package/dist/components/paste-image-arm.d.ts +6 -11
- package/dist/components/paste-image-arm.js +11 -18
- package/dist/components/portal.d.ts +2 -5
- package/dist/components/portal.js +4 -7
- package/dist/core/directive/activate.d.ts +4 -5
- package/dist/core/directive/activate.js +8 -9
- package/dist/core/directive/container-opener.js +13 -12
- package/dist/core/directive/grammar.d.ts +2 -5
- package/dist/core/directive/grammar.js +10 -10
- package/dist/core/directive/kinds.d.ts +4 -7
- package/dist/core/directive/kinds.js +14 -16
- package/dist/core/directive/registry.d.ts +12 -9
- package/dist/core/directive/registry.js +19 -20
- package/dist/core/directive/text-recognizer.d.ts +3 -2
- package/dist/core/directive/text-recognizer.js +5 -9
- package/dist/core/escapable.d.ts +1 -5
- package/dist/core/escapable.js +1 -5
- package/dist/core/inline/backticks.d.ts +3 -4
- package/dist/core/inline/backticks.js +3 -4
- package/dist/core/inline/character-refs.js +2 -1
- package/dist/core/inline/destination-bytes.d.ts +6 -3
- package/dist/core/inline/destination-bytes.js +50 -8
- package/dist/core/inline/entity-widget.d.ts +4 -3
- package/dist/core/inline/entity-widget.js +6 -6
- package/dist/core/inline/format-toggle.d.ts +22 -28
- package/dist/core/inline/format-toggle.js +97 -129
- package/dist/core/inline/html-entities.d.ts +2 -3
- package/dist/core/inline/html-entities.js +2 -3
- package/dist/core/inline/html-tag-grammar.js +6 -2
- package/dist/core/inline/image-dimensions.d.ts +2 -0
- package/dist/core/inline/image-dimensions.js +19 -2
- package/dist/core/inline/image-source-bytes.d.ts +11 -0
- package/dist/core/inline/image-source-bytes.js +71 -0
- package/dist/core/inline/index.d.ts +28 -21
- package/dist/core/inline/index.js +56 -34
- package/dist/core/inline/inline-cache.d.ts +12 -15
- package/dist/core/inline/inline-cache.js +11 -14
- package/dist/core/inline/inline-widgets.d.ts +55 -68
- package/dist/core/inline/inline-widgets.js +55 -58
- package/dist/core/inline/link-destination.d.ts +31 -0
- package/dist/core/inline/link-destination.js +129 -0
- package/dist/core/inline/link-reference-resolver.d.ts +8 -6
- package/dist/core/inline/link-reference-resolver.js +10 -6
- package/dist/core/inline/link-source-bytes.d.ts +31 -0
- package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
- package/dist/core/inline/live-edit/read-back.d.ts +29 -0
- package/dist/core/inline/live-edit/read-back.js +50 -0
- package/dist/core/inline/picture.d.ts +10 -0
- package/dist/core/inline/picture.js +40 -0
- package/dist/core/inline/scan/autolinks.d.ts +7 -8
- package/dist/core/inline/scan/autolinks.js +80 -59
- package/dist/core/inline/scan/brackets.d.ts +2 -2
- package/dist/core/inline/scan/brackets.js +6 -103
- package/dist/core/inline/scan/code-spans.d.ts +4 -0
- package/dist/core/inline/scan/code-spans.js +8 -0
- package/dist/core/inline/scan/emphasis.js +10 -14
- package/dist/core/inline/scan/index.d.ts +3 -1
- package/dist/core/inline/scan/index.js +32 -33
- package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
- package/dist/core/inline/scan/plugin-syntax.js +75 -89
- package/dist/core/inline/scan/scan-state.d.ts +2 -0
- package/dist/core/inline/scan/scan-state.js +1 -0
- package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
- package/dist/core/inline/scan/simple-nodes.js +2 -5
- package/dist/core/inline/scan/triggers.d.ts +17 -0
- package/dist/core/inline/scan/triggers.js +26 -0
- package/dist/core/inline/scan/url.js +8 -10
- package/dist/core/inline/transparency.d.ts +2 -1
- package/dist/core/inline/transparency.js +33 -17
- package/dist/core/inline/visibility.d.ts +30 -49
- package/dist/core/inline/visibility.js +31 -49
- package/dist/core/inline/walk.d.ts +4 -10
- package/dist/core/inline/walk.js +4 -10
- package/dist/core/inline-render.d.ts +22 -27
- package/dist/core/inline-render.js +51 -60
- package/dist/core/lines.d.ts +67 -26
- package/dist/core/lines.js +164 -33
- package/dist/core/metadata-parity.d.ts +9 -0
- package/dist/core/metadata-parity.js +25 -0
- package/dist/core/node-views.d.ts +7 -6
- package/dist/core/node-views.js +5 -5
- package/dist/core/nodes.d.ts +34 -44
- package/dist/core/nodes.js +4 -12
- package/dist/core/parser.d.ts +27 -34
- package/dist/core/parser.js +53 -67
- package/dist/core/parsers/blockquote.d.ts +5 -8
- package/dist/core/parsers/blockquote.js +11 -10
- package/dist/core/parsers/built-in-openers.d.ts +2 -5
- package/dist/core/parsers/built-in-openers.js +5 -8
- package/dist/core/parsers/fence-syntax.d.ts +36 -7
- package/dist/core/parsers/fence-syntax.js +61 -11
- package/dist/core/parsers/fenced-code.d.ts +16 -0
- package/dist/core/parsers/fenced-code.js +16 -15
- package/dist/core/parsers/heading.d.ts +19 -2
- package/dist/core/parsers/heading.js +50 -2
- package/dist/core/parsers/html-block.d.ts +3 -6
- package/dist/core/parsers/html-block.js +10 -11
- package/dist/core/parsers/indented-code.d.ts +1 -1
- package/dist/core/parsers/indented-code.js +2 -8
- package/dist/core/parsers/link-reference.d.ts +5 -3
- package/dist/core/parsers/link-reference.js +116 -120
- package/dist/core/parsers/list.d.ts +12 -5
- package/dist/core/parsers/list.js +53 -36
- package/dist/core/parsers/paragraph.d.ts +3 -3
- package/dist/core/parsers/paragraph.js +14 -5
- package/dist/core/parsers/table-completion.d.ts +2 -5
- package/dist/core/parsers/table-completion.js +7 -10
- package/dist/core/parsers/table.d.ts +8 -8
- package/dist/core/parsers/table.js +23 -26
- package/dist/core/parsers/thematic-break.js +15 -14
- package/dist/core/paths.d.ts +13 -0
- package/dist/core/paths.js +31 -0
- package/dist/core/terminator-escalation.d.ts +0 -7
- package/dist/core/terminator-escalation.js +5 -8
- package/dist/core/url-policy.d.ts +2 -5
- package/dist/core/url-policy.js +8 -12
- package/dist/cursor/caret-memory.d.ts +34 -0
- package/dist/cursor/caret-memory.js +82 -0
- package/dist/cursor/coordinate-spaces.d.ts +26 -19
- package/dist/cursor/coordinate-spaces.js +32 -20
- package/dist/cursor/dom-walk.d.ts +7 -13
- package/dist/cursor/dom-walk.js +7 -13
- package/dist/cursor/edge-affinity.d.ts +7 -35
- package/dist/cursor/edge-affinity.js +13 -44
- package/dist/cursor/focused-caret.d.ts +6 -8
- package/dist/cursor/focused-caret.js +7 -16
- package/dist/cursor/height-model.d.ts +3 -3
- package/dist/cursor/height-model.js +5 -5
- package/dist/cursor/height-oracle.d.ts +10 -7
- package/dist/cursor/height-oracle.js +26 -75
- package/dist/cursor/observe-resize.d.ts +13 -0
- package/dist/cursor/observe-resize.js +43 -0
- package/dist/cursor/overlay-rects.d.ts +2 -5
- package/dist/cursor/overlay-rects.js +2 -5
- package/dist/cursor/overlay-remeasure.d.ts +6 -7
- package/dist/cursor/overlay-remeasure.js +10 -14
- package/dist/cursor/pending-marks.d.ts +7 -9
- package/dist/cursor/pending-marks.js +6 -27
- package/dist/cursor/point-offset.d.ts +16 -10
- package/dist/cursor/point-offset.js +60 -25
- package/dist/cursor/reveal-source.d.ts +7 -11
- package/dist/cursor/reveal-source.js +10 -18
- package/dist/cursor/scroll-ancestors.d.ts +9 -20
- package/dist/cursor/scroll-ancestors.js +14 -26
- package/dist/cursor/scroll-owner.d.ts +92 -0
- package/dist/cursor/scroll-owner.js +283 -0
- package/dist/cursor/scrollport.d.ts +16 -8
- package/dist/cursor/scrollport.js +28 -5
- package/dist/cursor/sticky-column.d.ts +6 -29
- package/dist/cursor/sticky-column.js +6 -49
- package/dist/cursor/sticky-measure.d.ts +14 -9
- package/dist/cursor/sticky-measure.js +99 -49
- package/dist/cursor/surface-backend.d.ts +41 -0
- package/dist/cursor/surface-backend.js +78 -0
- package/dist/cursor/typography-estimates.d.ts +3 -3
- package/dist/cursor/typography-estimates.js +3 -3
- package/dist/cursor/visual-lines.d.ts +25 -13
- package/dist/cursor/visual-lines.js +72 -28
- package/dist/cursor/widget-edge-snap.d.ts +23 -0
- package/dist/cursor/widget-edge-snap.js +39 -0
- package/dist/cursor/widget-offset.d.ts +111 -102
- package/dist/cursor/widget-offset.js +352 -177
- package/dist/debug/diagnostics-report.d.ts +6 -6
- package/dist/debug/diagnostics-report.js +5 -5
- package/dist/debug/dump-tree.js +2 -2
- package/dist/debug/editor-diagnostics.d.ts +15 -0
- package/dist/debug/editor-diagnostics.js +33 -0
- package/dist/debug/inspect.d.ts +2 -2
- package/dist/debug/inspect.js +4 -4
- package/dist/debug/interaction-trace.d.ts +14 -15
- package/dist/debug/interaction-trace.js +19 -20
- package/dist/debug/operations-log.d.ts +1 -1
- package/dist/debug/operations-log.js +1 -1
- package/dist/decorations/buckets.d.ts +6 -12
- package/dist/decorations/buckets.js +4 -11
- package/dist/decorations/decoration-state.svelte.d.ts +2 -3
- package/dist/decorations/decoration-state.svelte.js +24 -26
- package/dist/decorations/island-dom.d.ts +10 -18
- package/dist/decorations/island-dom.js +25 -50
- package/dist/decorations/reserved-attrs.d.ts +6 -8
- package/dist/decorations/reserved-attrs.js +31 -17
- package/dist/decorations/types.d.ts +6 -7
- package/dist/decorations/types.js +2 -1
- package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
- package/dist/decorations/use-block-decorations.svelte.js +71 -0
- package/dist/decorations/widget-dom.d.ts +3 -3
- package/dist/decorations/widget-dom.js +5 -5
- package/dist/dev-warn.d.ts +5 -2
- package/dist/dev-warn.js +16 -4
- package/dist/editor-actions/ancestry-folds.d.ts +9 -14
- package/dist/editor-actions/ancestry-folds.js +13 -18
- package/dist/editor-actions/block-edit-core.d.ts +49 -22
- package/dist/editor-actions/block-edit-core.js +279 -151
- package/dist/editor-actions/block-edit-scope.d.ts +63 -50
- package/dist/editor-actions/block-edit-scope.js +100 -48
- package/dist/editor-actions/block-edit.d.ts +2 -3
- package/dist/editor-actions/block-edit.js +14 -90
- package/dist/editor-actions/commit/history.d.ts +4 -4
- package/dist/editor-actions/commit/history.js +33 -34
- package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
- package/dist/editor-actions/commit/reading-write-gate.js +56 -0
- package/dist/editor-actions/commit/text-batch.d.ts +7 -11
- package/dist/editor-actions/commit/text-batch.js +6 -7
- package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
- package/dist/editor-actions/commit/undo-controller.js +346 -216
- package/dist/editor-actions/container-block-component.d.ts +32 -51
- package/dist/editor-actions/container-block-component.js +66 -92
- package/dist/editor-actions/container-edit.d.ts +4 -2
- package/dist/editor-actions/container-edit.js +14 -44
- package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
- package/dist/editor-actions/container-exit-overrides.js +19 -21
- package/dist/editor-actions/deps.d.ts +25 -32
- package/dist/editor-actions/enter-completion.d.ts +12 -15
- package/dist/editor-actions/enter-completion.js +49 -51
- package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
- package/dist/editor-actions/focus/focus-dispatch.js +33 -52
- package/dist/editor-actions/focus/focus-landing.d.ts +11 -5
- package/dist/editor-actions/focus/focus-landing.js +29 -14
- package/dist/editor-actions/focus/focus.d.ts +3 -2
- package/dist/editor-actions/focus/focus.js +42 -59
- package/dist/editor-actions/index.d.ts +4 -3
- package/dist/editor-actions/index.js +5 -4
- package/dist/editor-actions/inline-range-commit.d.ts +18 -16
- package/dist/editor-actions/inline-range-commit.js +45 -54
- package/dist/editor-actions/leaf-write.d.ts +11 -0
- package/dist/editor-actions/leaf-write.js +102 -0
- package/dist/editor-actions/list-context.d.ts +9 -10
- package/dist/editor-actions/list-context.js +115 -110
- package/dist/editor-actions/list-overrides.d.ts +13 -5
- package/dist/editor-actions/list-overrides.js +36 -12
- package/dist/editor-actions/merge-fallback.d.ts +10 -16
- package/dist/editor-actions/merge-fallback.js +11 -22
- package/dist/editor-actions/nested/container-actions.d.ts +37 -0
- package/dist/editor-actions/nested/container-actions.js +42 -0
- package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
- package/dist/editor-actions/nested/emptied-container.js +5 -0
- package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
- package/dist/editor-actions/nested/nested-actions.js +17 -15
- package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
- package/dist/editor-actions/nested/nested-block-edit.js +40 -134
- package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
- package/dist/editor-actions/nested/nested-focus.js +33 -21
- package/dist/editor-actions/paste-coordinator.d.ts +3 -2
- package/dist/editor-actions/paste-coordinator.js +17 -13
- package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
- package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
- package/dist/editor-actions/plugin/container.d.ts +55 -76
- package/dist/editor-actions/plugin/container.js +105 -186
- package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
- package/dist/editor-actions/plugin/directive-container.js +7 -8
- package/dist/editor-actions/reorder-action.d.ts +7 -12
- package/dist/editor-actions/reorder-action.js +32 -48
- package/dist/editor-actions/reorder-drag.d.ts +12 -8
- package/dist/editor-actions/reorder-drag.js +45 -41
- package/dist/editor-actions/replacement-focus.d.ts +13 -21
- package/dist/editor-actions/replacement-focus.js +32 -33
- package/dist/editor-actions/search-replace.js +71 -67
- package/dist/editor-actions/stored-caret.d.ts +7 -0
- package/dist/editor-actions/stored-caret.js +10 -0
- package/dist/editor-actions/table-context.d.ts +9 -11
- package/dist/editor-actions/table-context.js +70 -93
- package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
- package/dist/editor-actions/unwrap-strategies.js +52 -63
- package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
- package/dist/editor-actions/whole-block-focus-surface.js +43 -53
- package/dist/editor-events.d.ts +25 -29
- package/dist/editor-events.js +17 -28
- package/dist/editor-keys.d.ts +96 -104
- package/dist/editor-keys.js +11 -24
- package/dist/editor-props.d.ts +91 -71
- package/dist/editor-rects.d.ts +23 -34
- package/dist/editor-rects.js +9 -77
- package/dist/env.d.ts +6 -4
- package/dist/env.js +8 -4
- package/dist/index.d.ts +6 -2
- package/dist/index.js +5 -2
- package/dist/inline-menu/inline-menu-session.d.ts +37 -0
- package/dist/inline-menu/inline-menu-session.js +98 -0
- package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
- package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
- package/dist/inline-menu/types.d.ts +77 -0
- package/dist/inline-menu/types.js +7 -0
- package/dist/invariants/child-id-parity.d.ts +23 -0
- package/dist/invariants/child-id-parity.js +39 -0
- package/dist/invariants/commit-paths.d.ts +4 -4
- package/dist/invariants/commit-paths.js +4 -4
- package/dist/invariants/commit-scope.d.ts +4 -4
- package/dist/invariants/commit-scope.js +9 -8
- package/dist/invariants/context-keys.d.ts +2 -5
- package/dist/invariants/context-keys.js +3 -6
- package/dist/invariants/descriptor.d.ts +2 -6
- package/dist/invariants/descriptor.js +2 -6
- package/dist/invariants/inline-transitions.d.ts +9 -16
- package/dist/invariants/inline-transitions.js +10 -18
- package/dist/invariants/install.d.ts +18 -27
- package/dist/invariants/install.js +29 -30
- package/dist/invariants/keeps-a-block.d.ts +7 -0
- package/dist/invariants/keeps-a-block.js +14 -0
- package/dist/invariants/landable-caret.d.ts +5 -7
- package/dist/invariants/landable-caret.js +8 -11
- package/dist/invariants/landing-focus-scroll.d.ts +7 -0
- package/dist/invariants/landing-focus-scroll.js +13 -0
- package/dist/invariants/landing-value.d.ts +13 -0
- package/dist/invariants/landing-value.js +27 -0
- package/dist/invariants/marker-css-parity.d.ts +5 -6
- package/dist/invariants/marker-css-parity.js +11 -12
- package/dist/invariants/measures-in-own-list.d.ts +6 -0
- package/dist/invariants/measures-in-own-list.js +13 -0
- package/dist/invariants/node-shape.d.ts +18 -37
- package/dist/invariants/node-shape.js +123 -79
- package/dist/invariants/open-tail.d.ts +7 -0
- package/dist/invariants/open-tail.js +45 -0
- package/dist/invariants/placement-ends-widget.d.ts +8 -0
- package/dist/invariants/placement-ends-widget.js +13 -0
- package/dist/invariants/registry.d.ts +27 -66
- package/dist/invariants/registry.js +61 -137
- package/dist/invariants/render-fidelity.d.ts +4 -4
- package/dist/invariants/render-fidelity.js +5 -5
- package/dist/invariants/selection-endpoints.d.ts +6 -7
- package/dist/invariants/selection-endpoints.js +18 -16
- package/dist/invariants/single-node-sink.d.ts +4 -5
- package/dist/invariants/single-node-sink.js +4 -5
- package/dist/invariants/snapshot-integrity.d.ts +5 -6
- package/dist/invariants/snapshot-integrity.js +1 -1
- package/dist/invariants/structural-descriptor.d.ts +6 -15
- package/dist/invariants/structural-descriptor.js +6 -15
- package/dist/menu-icons.d.ts +47 -0
- package/dist/menu-icons.js +113 -0
- package/dist/perf/instruments.d.ts +20 -5
- package/dist/perf/instruments.js +35 -15
- package/dist/perf/use-mount-gauge.svelte.js +4 -4
- package/dist/plugin.d.ts +38 -8
- package/dist/plugin.js +102 -74
- package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
- package/dist/plugins/admonitions/admonition-kind.js +12 -10
- package/dist/plugins/admonitions/convert-document.d.ts +5 -5
- package/dist/plugins/admonitions/convert-document.js +8 -7
- package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
- package/dist/plugins/admonitions/gh-alert.js +21 -22
- package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
- package/dist/plugins/admonitions/github-alert-kind.js +28 -37
- package/dist/plugins/admonitions/index.js +2 -2
- package/dist/plugins/admonitions/kinds.d.ts +1 -1
- package/dist/plugins/admonitions/register.js +11 -2
- package/dist/plugins/details/DetailsBlock.svelte +20 -20
- package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
- package/dist/plugins/details/details-disclosure.svelte.js +6 -7
- package/dist/plugins/details/details-kind.d.ts +6 -7
- package/dist/plugins/details/details-kind.js +44 -59
- package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
- package/dist/plugins/emoji/emoji-recognizer.js +7 -14
- package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
- package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
- package/dist/plugins/footnotes/constants.d.ts +2 -0
- package/dist/plugins/footnotes/constants.js +3 -0
- package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
- package/dist/plugins/footnotes/footnote-definition.js +69 -45
- package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
- package/dist/plugins/footnotes/footnote-lookup.js +14 -26
- package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
- package/dist/plugins/footnotes/footnote-numbering.js +22 -31
- package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
- package/dist/plugins/footnotes/footnote-reference.js +8 -13
- package/dist/plugins/footnotes/index.js +2 -3
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
- package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
- package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
- package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
- package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
- package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
- package/dist/plugins/highlight-occurrences/word-char.js +4 -0
- package/dist/plugins/latex/BlockMath.svelte +58 -75
- package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
- package/dist/plugins/latex/MathInline.svelte +10 -9
- package/dist/plugins/latex/flanking.d.ts +1 -0
- package/dist/plugins/latex/flanking.js +3 -0
- package/dist/plugins/latex/index.d.ts +1 -1
- package/dist/plugins/latex/latex-kind.d.ts +4 -4
- package/dist/plugins/latex/latex-kind.js +113 -85
- package/dist/plugins/latex/math-completion.d.ts +1 -1
- package/dist/plugins/latex/math-completion.js +5 -8
- package/dist/plugins/latex/math-layout.d.ts +2 -8
- package/dist/plugins/latex/math-layout.js +0 -9
- package/dist/plugins/latex/math-renderer.d.ts +17 -20
- package/dist/plugins/latex/math-renderer.js +21 -38
- package/dist/plugins/latex/math-source.d.ts +4 -8
- package/dist/plugins/latex/math-source.js +36 -75
- package/dist/plugins/latex/register.d.ts +10 -11
- package/dist/plugins/latex/register.js +24 -10
- package/dist/plugins/latex/renderer.d.ts +9 -10
- package/dist/plugins/latex/renderer.js +9 -24
- package/dist/plugins/mermaid/MermaidBlock.svelte +63 -47
- package/dist/plugins/mermaid/index.js +1 -1
- package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
- package/dist/plugins/mermaid/mermaid-kind.js +30 -47
- package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
- package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
- package/dist/plugins/mermaid/register.d.ts +3 -3
- package/dist/plugins/mermaid/register.js +5 -5
- package/dist/plugins/mermaid/renderer.d.ts +5 -5
- package/dist/plugins/mermaid/renderer.js +8 -11
- package/dist/plugins/parrot/ParrotBlock.svelte +18 -7
- package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
- package/dist/plugins/parrot/parrot-plugin.js +3 -3
- package/dist/plugins/slash-commands/filter.d.ts +23 -0
- package/dist/plugins/slash-commands/filter.js +31 -0
- package/dist/plugins/slash-commands/index.d.ts +2 -0
- package/dist/plugins/slash-commands/index.js +2 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
- package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
- package/dist/plugins/slash-commands/slash-source.js +108 -0
- package/dist/plugins/toc/TocBlock.svelte +23 -22
- package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
- package/dist/plugins/toc/heading-outline.d.ts +7 -12
- package/dist/plugins/toc/heading-outline.js +22 -36
- package/dist/plugins/toc/navigation-queue.d.ts +2 -4
- package/dist/plugins/toc/toc-plugin.d.ts +5 -5
- package/dist/plugins/toc/toc-plugin.js +20 -13
- package/dist/presentation-mode.d.ts +15 -23
- package/dist/presentation-mode.js +19 -25
- package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
- package/dist/reactivity/block-list-state.svelte.js +8 -9
- package/dist/reactivity/block-window.svelte.d.ts +12 -6
- package/dist/reactivity/block-window.svelte.js +44 -17
- package/dist/reactivity/child-list.d.ts +34 -0
- package/dist/reactivity/child-list.js +48 -0
- package/dist/reactivity/content-version.svelte.d.ts +4 -7
- package/dist/reactivity/content-version.svelte.js +3 -5
- package/dist/reactivity/hold-across.d.ts +39 -0
- package/dist/reactivity/hold-across.js +57 -0
- package/dist/reactivity/layout-state.svelte.d.ts +27 -0
- package/dist/reactivity/layout-state.svelte.js +51 -0
- package/dist/reactivity/list-tree.d.ts +39 -0
- package/dist/reactivity/list-tree.js +132 -0
- package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
- package/dist/reactivity/list-windowing.svelte.js +143 -292
- package/dist/reactivity/measure-batch.d.ts +6 -8
- package/dist/reactivity/measure-batch.js +5 -6
- package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
- package/dist/reactivity/publish-ref.svelte.js +21 -85
- package/dist/reactivity/scope-geometry.d.ts +6 -13
- package/dist/reactivity/scope-geometry.js +7 -14
- package/dist/reactivity/state-registry.d.ts +5 -5
- package/dist/reactivity/state-registry.js +11 -15
- package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
- package/dist/reactivity/use-container-windowing.svelte.js +64 -74
- package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
- package/dist/reactivity/use-measured-child.svelte.js +41 -0
- package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
- package/dist/reactivity/use-window-floor.svelte.js +27 -0
- package/dist/reactivity/window-slice.d.ts +4 -4
- package/dist/reactivity/window-slice.js +0 -2
- package/dist/renderer-slot.d.ts +48 -0
- package/dist/renderer-slot.js +85 -0
- package/dist/scan-index.d.ts +4 -4
- package/dist/scan-index.js +4 -4
- package/dist/schema/block-commands.d.ts +69 -54
- package/dist/schema/block-commands.js +91 -104
- package/dist/schema/block-completions.d.ts +16 -19
- package/dist/schema/block-completions.js +25 -32
- package/dist/schema/block-component-registry.d.ts +13 -14
- package/dist/schema/block-component-registry.js +19 -17
- package/dist/schema/block-kind-descriptor.d.ts +234 -168
- package/dist/schema/block-kind-descriptor.js +151 -66
- package/dist/schema/block-openers.d.ts +48 -39
- package/dist/schema/block-openers.js +73 -83
- package/dist/schema/built-in-descriptors.d.ts +3 -5
- package/dist/schema/built-in-descriptors.js +96 -80
- package/dist/schema/child-spans.d.ts +12 -10
- package/dist/schema/child-spans.js +68 -34
- package/dist/schema/closure.d.ts +18 -16
- package/dist/schema/closure.js +24 -14
- package/dist/schema/command-id.d.ts +6 -8
- package/dist/schema/command-id.js +20 -25
- package/dist/schema/commands.d.ts +79 -81
- package/dist/schema/commands.js +156 -116
- package/dist/schema/container-raw.d.ts +51 -11
- package/dist/schema/container-raw.js +143 -14
- package/dist/schema/container-rebuilders.d.ts +17 -15
- package/dist/schema/container-rebuilders.js +30 -22
- package/dist/schema/context-actions.d.ts +25 -13
- package/dist/schema/context-actions.js +32 -17
- package/dist/schema/define-plugin-block.d.ts +8 -6
- package/dist/schema/define-plugin-block.js +6 -4
- package/dist/schema/fenced-code-raw.d.ts +30 -17
- package/dist/schema/fenced-code-raw.js +155 -107
- package/dist/schema/global-commands.d.ts +6 -6
- package/dist/schema/global-commands.js +14 -22
- package/dist/schema/height-estimates.d.ts +31 -0
- package/dist/schema/height-estimates.js +64 -0
- package/dist/schema/inline-construct-policy.d.ts +42 -55
- package/dist/schema/inline-construct-policy.js +36 -35
- package/dist/schema/insert-catalogue.d.ts +30 -0
- package/dist/schema/insert-catalogue.js +95 -0
- package/dist/schema/keybinding-overrides.d.ts +9 -11
- package/dist/schema/keybinding-overrides.js +1 -1
- package/dist/schema/keybindings.d.ts +15 -7
- package/dist/schema/keybindings.js +21 -9
- package/dist/schema/merge-rules.d.ts +5 -7
- package/dist/schema/merge-rules.js +7 -9
- package/dist/schema/opener-priorities.d.ts +4 -4
- package/dist/schema/opener-priorities.js +4 -4
- package/dist/schema/operations.d.ts +9 -11
- package/dist/schema/operations.js +3 -3
- package/dist/schema/page-role.d.ts +14 -0
- package/dist/schema/page-role.js +19 -0
- package/dist/schema/plugin-activation.d.ts +4 -6
- package/dist/schema/plugin-activation.js +12 -10
- package/dist/schema/plugin-editor-context.d.ts +25 -10
- package/dist/schema/plugin-editor-context.js +40 -9
- package/dist/schema/plugin-install.d.ts +49 -17
- package/dist/schema/plugin-install.js +51 -25
- package/dist/schema/plugin-kind.d.ts +12 -8
- package/dist/schema/plugin-kind.js +35 -42
- package/dist/schema/plugin-name.js +3 -3
- package/dist/schema/plugin-registry.d.ts +54 -0
- package/dist/schema/plugin-registry.js +70 -0
- package/dist/schema/reading.d.ts +23 -0
- package/dist/schema/reading.js +7 -0
- package/dist/schema/register-once.d.ts +3 -5
- package/dist/schema/register-once.js +7 -16
- package/dist/schema/registration-checks.d.ts +12 -16
- package/dist/schema/registration-checks.js +35 -51
- package/dist/schema/registration-pairs.d.ts +54 -0
- package/dist/schema/registration-pairs.js +48 -0
- package/dist/schema/registration-pending.d.ts +8 -12
- package/dist/schema/registration-pending.js +9 -9
- package/dist/schema/registry-reset.d.ts +8 -4
- package/dist/schema/registry-reset.js +13 -26
- package/dist/schema/registry-view.d.ts +25 -13
- package/dist/schema/registry-view.js +26 -20
- package/dist/schema/reserved-chords.d.ts +9 -10
- package/dist/schema/reserved-chords.js +73 -78
- package/dist/schema/reserved-chrome.d.ts +12 -11
- package/dist/schema/reserved-chrome.js +15 -11
- package/dist/schema/setext-raw.d.ts +13 -0
- package/dist/schema/setext-raw.js +33 -0
- package/dist/schema/stored-as.d.ts +20 -0
- package/dist/schema/stored-as.js +6 -0
- package/dist/schema/table-cell-raw.d.ts +18 -7
- package/dist/schema/table-cell-raw.js +28 -7
- package/dist/schema/whole-block-unit.d.ts +5 -4
- package/dist/schema/whole-block-unit.js +5 -4
- package/dist/search/document-scan.d.ts +3 -3
- package/dist/search/document-scan.js +2 -2
- package/dist/search/matcher.d.ts +1 -1
- package/dist/search/regex-executor.d.ts +5 -6
- package/dist/search/regex-executor.js +6 -8
- package/dist/search/replace.d.ts +2 -5
- package/dist/search/replace.js +2 -5
- package/dist/search/search-state.svelte.d.ts +5 -5
- package/dist/search/search-state.svelte.js +12 -16
- package/dist/selection/autoscroll.d.ts +6 -9
- package/dist/selection/block-hit-test.d.ts +16 -24
- package/dist/selection/block-hit-test.js +29 -22
- package/dist/selection/caret-doors.d.ts +15 -14
- package/dist/selection/caret-doors.js +37 -26
- package/dist/selection/caret-landing.d.ts +62 -0
- package/dist/selection/caret-landing.js +157 -0
- package/dist/selection/caret-restore.d.ts +17 -10
- package/dist/selection/caret-restore.js +10 -22
- package/dist/selection/caret-target.d.ts +30 -0
- package/dist/selection/caret-target.js +84 -0
- package/dist/selection/char-endpoint-snap.d.ts +6 -10
- package/dist/selection/char-endpoint-snap.js +8 -14
- package/dist/selection/clipboard-text.d.ts +5 -12
- package/dist/selection/clipboard-text.js +69 -172
- package/dist/selection/covered-block.d.ts +6 -8
- package/dist/selection/covered-block.js +8 -19
- package/dist/selection/cross-block/clipboard.d.ts +3 -2
- package/dist/selection/cross-block/clipboard.js +13 -4
- package/dist/selection/cross-block/dispatch.d.ts +47 -43
- package/dist/selection/cross-block/dispatch.js +12 -23
- package/dist/selection/cross-block/format-range.d.ts +18 -21
- package/dist/selection/cross-block/format-range.js +104 -103
- package/dist/selection/cross-block/format-toggle.d.ts +10 -15
- package/dist/selection/cross-block/format-toggle.js +28 -33
- package/dist/selection/cross-block/keydown.d.ts +4 -4
- package/dist/selection/cross-block/keydown.js +93 -152
- package/dist/selection/cross-block/ops.d.ts +19 -34
- package/dist/selection/cross-block/ops.js +110 -95
- package/dist/selection/cross-block/paste.d.ts +2 -3
- package/dist/selection/cross-block/paste.js +61 -104
- package/dist/selection/cross-block/pointer.d.ts +17 -15
- package/dist/selection/cross-block/pointer.js +74 -25
- package/dist/selection/cross-block/type-replace.d.ts +4 -6
- package/dist/selection/cross-block/type-replace.js +53 -146
- package/dist/selection/dead-space-caret.d.ts +20 -28
- package/dist/selection/dead-space-caret.js +79 -87
- package/dist/selection/drag-pointer.d.ts +22 -5
- package/dist/selection/drag-pointer.js +63 -31
- package/dist/selection/gap-caret.d.ts +17 -28
- package/dist/selection/gap-caret.js +14 -26
- package/dist/selection/grid-selection.d.ts +12 -0
- package/dist/selection/grid-selection.js +22 -0
- package/dist/selection/keyboard-extend.d.ts +27 -39
- package/dist/selection/keyboard-extend.js +94 -116
- package/dist/selection/multi-click.d.ts +37 -0
- package/dist/selection/multi-click.js +197 -0
- package/dist/selection/native-bridge.d.ts +30 -37
- package/dist/selection/native-bridge.js +80 -100
- package/dist/selection/nearest-block.d.ts +17 -12
- package/dist/selection/nearest-block.js +37 -18
- package/dist/selection/path-lookup.d.ts +31 -14
- package/dist/selection/path-lookup.js +110 -20
- package/dist/selection/path-math.d.ts +9 -11
- package/dist/selection/path-math.js +5 -7
- package/dist/selection/pointer-gesture.d.ts +9 -0
- package/dist/selection/pointer-gesture.js +11 -0
- package/dist/selection/pointer-session.d.ts +10 -16
- package/dist/selection/pointer-session.js +6 -7
- package/dist/selection/primitives.d.ts +64 -33
- package/dist/selection/primitives.js +61 -53
- package/dist/selection/range-coverage.d.ts +94 -0
- package/dist/selection/range-coverage.js +365 -0
- package/dist/selection/range-delete-ceremony.d.ts +28 -74
- package/dist/selection/range-delete-ceremony.js +100 -141
- package/dist/selection/range-delete-chrome.d.ts +20 -33
- package/dist/selection/range-delete-chrome.js +53 -78
- package/dist/selection/range-delete-table-coverage.d.ts +11 -25
- package/dist/selection/range-delete-table-coverage.js +42 -112
- package/dist/selection/range-delete-table.d.ts +14 -12
- package/dist/selection/range-delete-table.js +106 -310
- package/dist/selection/range-delete.d.ts +18 -19
- package/dist/selection/range-delete.js +83 -123
- package/dist/selection/round-trip-restore.d.ts +18 -0
- package/dist/selection/round-trip-restore.js +19 -0
- package/dist/selection/selection-announcer.d.ts +17 -0
- package/dist/selection/selection-announcer.js +25 -0
- package/dist/selection/selection-description.d.ts +4 -3
- package/dist/selection/selection-description.js +5 -4
- package/dist/selection/selection-drop.d.ts +52 -0
- package/dist/selection/selection-drop.js +317 -0
- package/dist/selection/selection-restore.d.ts +20 -33
- package/dist/selection/selection-restore.js +21 -44
- package/dist/selection/selection-state.svelte.d.ts +50 -42
- package/dist/selection/selection-state.svelte.js +144 -98
- package/dist/selection/shared-keydown.d.ts +22 -27
- package/dist/selection/shared-keydown.js +25 -45
- package/dist/selection/table-endpoint-snap.d.ts +17 -41
- package/dist/selection/table-endpoint-snap.js +54 -80
- package/dist/selection/table-rect-extend.d.ts +3 -6
- package/dist/selection/table-rect-extend.js +19 -14
- package/dist/styles/editor-theme.css +75 -53
- package/dist/styles/editor.css +248 -139
- package/dist/testing/conformance-core.d.ts +50 -18
- package/dist/testing/conformance-core.js +88 -50
- package/dist/testing/container-conformance.d.ts +48 -84
- package/dist/testing/container-conformance.js +159 -285
- package/dist/testing/headless-actions.d.ts +34 -19
- package/dist/testing/headless-actions.js +116 -65
- package/dist/testing/headless-block-list.svelte.d.ts +16 -0
- package/dist/testing/headless-block-list.svelte.js +22 -0
- package/dist/testing/inline-conformance.d.ts +15 -22
- package/dist/testing/inline-conformance.js +131 -148
- package/dist/testing/kind-conformance.d.ts +19 -24
- package/dist/testing/kind-conformance.js +204 -117
- package/dist/testing/kit-reading.d.ts +7 -0
- package/dist/testing/kit-reading.js +16 -0
- package/dist/testing/mount-dom-stubs.d.ts +4 -5
- package/dist/testing/mount-dom-stubs.js +8 -5
- package/dist/testing/parse-convergence.d.ts +10 -10
- package/dist/testing/parse-convergence.js +14 -49
- package/dist/testing.d.ts +13 -9
- package/dist/testing.js +28 -38
- package/dist/tree-operations/blockquote.d.ts +8 -14
- package/dist/tree-operations/blockquote.js +25 -45
- package/dist/tree-operations/chain-rebuild.d.ts +34 -25
- package/dist/tree-operations/chain-rebuild.js +115 -52
- package/dist/tree-operations/children.d.ts +5 -9
- package/dist/tree-operations/children.js +7 -11
- package/dist/tree-operations/cleanup.d.ts +6 -7
- package/dist/tree-operations/cleanup.js +14 -11
- package/dist/tree-operations/clone.js +5 -4
- package/dist/tree-operations/container-lift.d.ts +10 -5
- package/dist/tree-operations/container-lift.js +20 -14
- package/dist/tree-operations/container-offsets.d.ts +22 -0
- package/dist/tree-operations/container-offsets.js +89 -0
- package/dist/tree-operations/content-write.d.ts +52 -29
- package/dist/tree-operations/content-write.js +155 -110
- package/dist/tree-operations/index.d.ts +4 -4
- package/dist/tree-operations/index.js +4 -4
- package/dist/tree-operations/keep-one-block.d.ts +10 -0
- package/dist/tree-operations/keep-one-block.js +19 -0
- package/dist/tree-operations/leaf-range.d.ts +33 -0
- package/dist/tree-operations/leaf-range.js +67 -0
- package/dist/tree-operations/list/empty-check.d.ts +2 -3
- package/dist/tree-operations/list/empty-check.js +4 -4
- package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
- package/dist/tree-operations/list/exit-replacement.js +4 -9
- package/dist/tree-operations/list/item-partition.d.ts +2 -2
- package/dist/tree-operations/list/item-partition.js +2 -2
- package/dist/tree-operations/list/list-builders.d.ts +18 -16
- package/dist/tree-operations/list/list-builders.js +59 -30
- package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
- package/dist/tree-operations/list/ordered-markers.js +7 -16
- package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
- package/dist/tree-operations/list/reconcile-task.js +80 -23
- package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
- package/dist/tree-operations/list/sublist-separator.js +20 -27
- package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
- package/dist/tree-operations/list/task-paragraph.js +54 -0
- package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
- package/dist/tree-operations/list/unwrap-merge.js +44 -79
- package/dist/tree-operations/node-ops.d.ts +30 -52
- package/dist/tree-operations/node-ops.js +152 -218
- package/dist/tree-operations/node-primitives.d.ts +44 -31
- package/dist/tree-operations/node-primitives.js +84 -60
- package/dist/tree-operations/open-tail.d.ts +25 -0
- package/dist/tree-operations/open-tail.js +100 -0
- package/dist/tree-operations/parse-block.d.ts +15 -2
- package/dist/tree-operations/parse-block.js +19 -4
- package/dist/tree-operations/paste/apply.d.ts +7 -8
- package/dist/tree-operations/paste/apply.js +33 -63
- package/dist/tree-operations/paste/body-write.d.ts +8 -6
- package/dist/tree-operations/paste/body-write.js +13 -14
- package/dist/tree-operations/paste/container-match.d.ts +7 -10
- package/dist/tree-operations/paste/container-match.js +76 -58
- package/dist/tree-operations/paste/container-paste.d.ts +3 -3
- package/dist/tree-operations/paste/container-paste.js +3 -3
- package/dist/tree-operations/paste/dispatch.d.ts +26 -29
- package/dist/tree-operations/paste/dispatch.js +68 -53
- package/dist/tree-operations/paste/focus-target.d.ts +11 -14
- package/dist/tree-operations/paste/focus-target.js +13 -18
- package/dist/tree-operations/paste/hooks.d.ts +7 -12
- package/dist/tree-operations/paste/hooks.js +49 -46
- package/dist/tree-operations/paste/line-ending.d.ts +11 -0
- package/dist/tree-operations/paste/line-ending.js +32 -0
- package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
- package/dist/tree-operations/paste/list-absorb.js +17 -19
- package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
- package/dist/tree-operations/paste/list-break-out.js +24 -32
- package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
- package/dist/tree-operations/paste/parent-scope.js +9 -16
- package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
- package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
- package/dist/tree-operations/paste/paste-replacement.js +73 -42
- package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
- package/dist/tree-operations/paste/paste-transforms.js +18 -27
- package/dist/tree-operations/paste/replacement-parse.d.ts +19 -0
- package/dist/tree-operations/paste/replacement-parse.js +24 -0
- package/dist/tree-operations/paste/strategy.d.ts +1 -1
- package/dist/tree-operations/paste/strategy.js +1 -1
- package/dist/tree-operations/paste/table-slice.js +15 -10
- package/dist/tree-operations/paste-surfaces.d.ts +18 -29
- package/dist/tree-operations/paste-surfaces.js +14 -10
- package/dist/tree-operations/path-mutate.d.ts +7 -8
- package/dist/tree-operations/path-mutate.js +4 -4
- package/dist/tree-operations/reorder-unit.d.ts +4 -5
- package/dist/tree-operations/reorder-unit.js +5 -6
- package/dist/tree-operations/reorder.d.ts +7 -9
- package/dist/tree-operations/reorder.js +39 -40
- package/dist/tree-operations/settle.d.ts +42 -53
- package/dist/tree-operations/settle.js +241 -162
- package/dist/tree-operations/sharing.d.ts +5 -5
- package/dist/tree-operations/splice-many.d.ts +5 -5
- package/dist/tree-operations/splice-many.js +5 -5
- package/dist/tree-operations/stored-as.d.ts +13 -0
- package/dist/tree-operations/stored-as.js +48 -0
- package/dist/tree-operations/structural-change.d.ts +11 -15
- package/dist/tree-operations/structural-change.js +10 -14
- package/dist/tree-operations/structural-suffix.d.ts +22 -0
- package/dist/tree-operations/structural-suffix.js +61 -0
- package/dist/tree-operations/sub-table-copy.d.ts +7 -0
- package/dist/tree-operations/sub-table-copy.js +40 -36
- package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
- package/dist/tree-operations/table-grid-clipboard.js +11 -36
- package/dist/tree-operations/table-mutations.d.ts +7 -3
- package/dist/tree-operations/table-mutations.js +45 -9
- package/dist/tree-operations/unshare.d.ts +11 -15
- package/dist/tree-operations/unshare.js +15 -17
- package/dist/undo/manager.js +1 -1
- package/dist/undo/types.d.ts +2 -2
- package/docs/guide/consumer-guide.md +329 -205
- package/docs/guide/directives.md +7 -7
- package/docs/guide/plugin-api.md +267 -183
- package/docs/guide/plugin-guide.md +341 -235
- package/docs/guide/plugin-testing.md +96 -82
- package/package.json +17 -21
- package/dist/ambient/ambient-cursor.d.ts +0 -41
- package/dist/ambient/ambient-cursor.js +0 -120
- package/dist/components/blocks/code/code-paste.d.ts +0 -24
- package/dist/components/blocks/code/code-paste.js +0 -21
- package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
- package/dist/components/blocks/table/cell-clipboard.js +0 -67
- package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
- package/dist/components/blocks/text/hidden-suffix.js +0 -15
- package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
- package/dist/components/image/image-source-bytes.d.ts +0 -15
- package/dist/components/image/image-source-bytes.js +0 -80
- package/dist/cursor/content-offsets.d.ts +0 -29
- package/dist/cursor/content-offsets.js +0 -151
- package/dist/cursor/reveal-anchor.d.ts +0 -30
- package/dist/cursor/reveal-anchor.js +0 -31
- package/dist/invariants/split-landing.d.ts +0 -8
- package/dist/invariants/split-landing.js +0 -15
- package/dist/selection/double-click-trim.d.ts +0 -17
- package/dist/selection/double-click-trim.js +0 -57
- package/dist/tree-operations/list/terminator.d.ts +0 -17
- package/dist/tree-operations/list/terminator.js +0 -60
- package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -29
- package/dist/tree-operations/paste/replace-block-at-parent.js +0 -75
|
@@ -1,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;
|
|
@@ -1,20 +1,14 @@
|
|
|
1
|
+
// When to rebuild the link reference definition map, and the counter that render caches key on.
|
|
1
2
|
import { nodeAt } from '../tree-operations/node-primitives';
|
|
2
|
-
/**
|
|
3
|
-
*
|
|
4
|
-
* hot path. Any op that is not a kind-stable `input`/`metadataUpdate` could add or remove a
|
|
5
|
-
* definition; a kind-stable one only can when its target is itself an LRD. `input` is kind-stable
|
|
6
|
-
* by construction, held by the input-op kind-stability lint under `test/invariants/lint/`.
|
|
7
|
-
*/
|
|
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. */
|
|
8
5
|
export function lrdMapCouldChange(doc, event) {
|
|
9
6
|
if (event.op !== 'input' && event.op !== 'metadataUpdate')
|
|
10
7
|
return true;
|
|
11
8
|
return nodeAt(doc, event.path)?.kind === 'linkReferenceDefinition';
|
|
12
9
|
}
|
|
13
|
-
/**
|
|
14
|
-
*
|
|
15
|
-
* Reference-bearing render memos key on the epoch instead of the whole (~MB)
|
|
16
|
-
* signature, so bumping on every rebuild would re-render every bracket-bearing block.
|
|
17
|
-
*/
|
|
10
|
+
/** Changes exactly when the signature does: render caches key on it rather than the (~MB)
|
|
11
|
+
* signature, and a bump per rebuild would re-render every block with a bracket in it. */
|
|
18
12
|
export function advanceSignatureEpoch(prevSignature, prevEpoch, nextSignature) {
|
|
19
13
|
if (nextSignature === prevSignature)
|
|
20
14
|
return { signature: prevSignature, epoch: prevEpoch };
|
|
@@ -1,19 +1,11 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
2
|
/**
|
|
3
|
-
* A
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* caret it acts on stays exactly where it is.
|
|
3
|
+
* A list menu the editor opens at a point: a block's context menu (rows run
|
|
4
|
+
* that kind's registered actions) and the prose menu's clipboard rows with its "Insert block"
|
|
5
|
+
* flyout (rows insert Markdown into a new paragraph). Pointer- and keyboard-driven without
|
|
6
|
+
* ever taking focus, so the caret it acts on stays exactly where it is.
|
|
7
7
|
*/
|
|
8
|
-
import {
|
|
9
|
-
import type { MenuIconName } from './MenuIcon.svelte';
|
|
10
|
-
|
|
11
|
-
interface BlockMenuItem {
|
|
12
|
-
id: string;
|
|
13
|
-
label: string;
|
|
14
|
-
icon: MenuIconName;
|
|
15
|
-
md: string;
|
|
16
|
-
}
|
|
8
|
+
import type { MenuIconName } from '../../menu-icons';
|
|
17
9
|
|
|
18
10
|
export interface MenuEntry {
|
|
19
11
|
id: string;
|
|
@@ -23,67 +15,9 @@
|
|
|
23
15
|
disabled?: boolean;
|
|
24
16
|
/** A separator row; nothing else on the entry is read. */
|
|
25
17
|
divider?: boolean;
|
|
26
|
-
/** A flyout: hover or ArrowRight opens these beside the row; a pick is one of
|
|
18
|
+
/** A flyout: hover or ArrowRight opens these beside the row; a pick is one of their ids. */
|
|
27
19
|
children?: MenuEntry[];
|
|
28
20
|
}
|
|
29
|
-
|
|
30
|
-
// Blocks that stand on their own when empty. A heading is not one — it is text turned into a
|
|
31
|
-
// heading, which the selection popover offers — so it is deliberately not here.
|
|
32
|
-
const BUILT_IN: readonly BlockMenuItem[] = [
|
|
33
|
-
{ id: 'bullet', label: 'Bulleted list', icon: 'list', md: '- ' },
|
|
34
|
-
{ id: 'numbered', label: 'Numbered list', icon: 'list-ordered', md: '1. ' },
|
|
35
|
-
{ id: 'todo', label: 'To-do list', icon: 'square-check', md: '- [ ] ' },
|
|
36
|
-
{ id: 'quote', label: 'Quote', icon: 'text-quote', md: '> ' },
|
|
37
|
-
{ id: 'divider', label: 'Divider', icon: 'minus', md: '---\n' },
|
|
38
|
-
{ id: 'code', label: 'Code block', icon: 'code', md: '```\n\n```\n' },
|
|
39
|
-
{
|
|
40
|
-
id: 'table',
|
|
41
|
-
label: 'Table',
|
|
42
|
-
icon: 'table',
|
|
43
|
-
md: '| Column | Column |\n| --- | --- |\n| | |\n'
|
|
44
|
-
}
|
|
45
|
-
];
|
|
46
|
-
// Listed only while the plugin that reads the syntax is installed.
|
|
47
|
-
const FROM_PLUGINS: readonly { plugin: string; item: BlockMenuItem }[] = [
|
|
48
|
-
{ plugin: 'latex', item: { id: 'math', label: 'Math block', icon: 'sigma', md: '$$\n\n$$\n' } },
|
|
49
|
-
{
|
|
50
|
-
plugin: 'admonitions',
|
|
51
|
-
item: { id: 'note', label: 'Note', icon: 'info', md: ':::note\n\n:::\n' }
|
|
52
|
-
}
|
|
53
|
-
];
|
|
54
|
-
|
|
55
|
-
/** Every insertable block, keyed by id, for resolving a pick from either level of the menu. */
|
|
56
|
-
export function insertSnippets(): Map<string, string> {
|
|
57
|
-
const all = [
|
|
58
|
-
...BUILT_IN,
|
|
59
|
-
...FROM_PLUGINS.filter((entry) => isPluginInstalled(entry.plugin)).map((entry) => entry.item)
|
|
60
|
-
];
|
|
61
|
-
return new Map(all.map((item) => [item.id, item.md]));
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/** Every insertable block as one flat list, for a flyout that is already a level down. */
|
|
65
|
-
export function insertFlyoutEntries(): MenuEntry[] {
|
|
66
|
-
return [
|
|
67
|
-
...BUILT_IN,
|
|
68
|
-
...FROM_PLUGINS.filter((entry) => isPluginInstalled(entry.plugin)).map((entry) => entry.item)
|
|
69
|
-
].map(({ id, label, icon }) => ({ id, label, icon }));
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
const COMMON = new Set(['bullet', 'numbered', 'todo', 'code', 'table', 'math']);
|
|
73
|
-
|
|
74
|
-
/** The insert menu: the common blocks, the rest behind "More blocks". */
|
|
75
|
-
export function insertMenuEntries(): MenuEntry[] {
|
|
76
|
-
const all = [
|
|
77
|
-
...BUILT_IN,
|
|
78
|
-
...FROM_PLUGINS.filter((entry) => isPluginInstalled(entry.plugin)).map((entry) => entry.item)
|
|
79
|
-
];
|
|
80
|
-
const row = ({ id, label, icon }: BlockMenuItem): MenuEntry => ({ id, label, icon });
|
|
81
|
-
const common = all.filter((item) => COMMON.has(item.id)).map(row);
|
|
82
|
-
const more = all.filter((item) => !COMMON.has(item.id)).map(row);
|
|
83
|
-
return more.length
|
|
84
|
-
? [...common, { id: 'more', label: 'More blocks', icon: 'plus', children: more }]
|
|
85
|
-
: common;
|
|
86
|
-
}
|
|
87
21
|
</script>
|
|
88
22
|
|
|
89
23
|
<script lang="ts">
|
|
@@ -91,6 +25,7 @@
|
|
|
91
25
|
import { BLOCK_MENU_LABEL } from '../../a11y-strings';
|
|
92
26
|
import { keepFlyoutOnScreen } from './flyout-placement';
|
|
93
27
|
import MenuIcon from './MenuIcon.svelte';
|
|
28
|
+
import type { MenuPresence } from './menu-presence.svelte';
|
|
94
29
|
|
|
95
30
|
let {
|
|
96
31
|
x,
|
|
@@ -99,16 +34,18 @@
|
|
|
99
34
|
items,
|
|
100
35
|
label = BLOCK_MENU_LABEL,
|
|
101
36
|
onPick,
|
|
102
|
-
onClose
|
|
37
|
+
onClose,
|
|
38
|
+
menuPresence
|
|
103
39
|
}: {
|
|
104
40
|
x: number;
|
|
105
41
|
y: number;
|
|
106
|
-
/** Where the open point is
|
|
42
|
+
/** Where the open point is now, re-read on scroll and resize so the menu stays on it. */
|
|
107
43
|
anchor?: () => { x: number; y: number } | null;
|
|
108
44
|
items: MenuEntry[];
|
|
109
45
|
label?: string;
|
|
110
46
|
onPick: (id: string) => void;
|
|
111
47
|
onClose: () => void;
|
|
48
|
+
menuPresence: MenuPresence;
|
|
112
49
|
} = $props();
|
|
113
50
|
|
|
114
51
|
let menuEl: HTMLDivElement | undefined = $state();
|
|
@@ -134,7 +71,7 @@
|
|
|
134
71
|
onPick(entry.id);
|
|
135
72
|
}
|
|
136
73
|
|
|
137
|
-
//
|
|
74
|
+
// Positioned like the table's menu: follows the content, clamped once when first sized.
|
|
138
75
|
// svelte-ignore state_referenced_locally
|
|
139
76
|
let at = $state({ x, y });
|
|
140
77
|
let shift = $state<{ x: number; y: number } | null>(null);
|
|
@@ -163,15 +100,15 @@
|
|
|
163
100
|
const left = $derived(at.x + (shift?.x ?? 0));
|
|
164
101
|
const top = $derived(at.y + (shift?.y ?? 0));
|
|
165
102
|
|
|
166
|
-
// Keys are read at the document
|
|
167
|
-
// menu answers first while it is open. Anything it
|
|
103
|
+
// Keys are read at the document in the capture phase: the block with the caret keeps focus,
|
|
104
|
+
// and the menu answers first while it is open. Anything it ignores reaches the editor.
|
|
168
105
|
$effect(() => {
|
|
169
106
|
const onPointerDown = (e: PointerEvent) => {
|
|
170
107
|
if (menuEl && e.target instanceof Node && menuEl.contains(e.target)) return;
|
|
171
108
|
onClose();
|
|
172
109
|
};
|
|
173
|
-
//
|
|
174
|
-
// Enter splitting the block the menu is about to insert into).
|
|
110
|
+
// Keys the menu takes stop here: the block with the caret would otherwise get the same
|
|
111
|
+
// keystroke (an Enter splitting the block the menu is about to insert into).
|
|
175
112
|
const claim = (e: KeyboardEvent) => {
|
|
176
113
|
e.preventDefault();
|
|
177
114
|
e.stopImmediatePropagation();
|
|
@@ -228,6 +165,7 @@
|
|
|
228
165
|
class="md-menu block-menu"
|
|
229
166
|
role="menu"
|
|
230
167
|
aria-label={label}
|
|
168
|
+
{@attach menuPresence.track}
|
|
231
169
|
style:left="{left}px"
|
|
232
170
|
style:top="{top}px"
|
|
233
171
|
>
|
|
@@ -265,6 +203,7 @@
|
|
|
265
203
|
class="md-menu block-menu block-menu-flyout"
|
|
266
204
|
role="menu"
|
|
267
205
|
{@attach keepFlyoutOnScreen}
|
|
206
|
+
{@attach menuPresence.track}
|
|
268
207
|
>
|
|
269
208
|
{#each item.children as child, j (child.id)}
|
|
270
209
|
<button
|
|
@@ -291,7 +230,7 @@
|
|
|
291
230
|
</div>
|
|
292
231
|
|
|
293
232
|
<style>
|
|
294
|
-
/*
|
|
233
|
+
/* The panel and its rows are the shared `.md-menu` family (editor.css). */
|
|
295
234
|
.block-menu {
|
|
296
235
|
min-width: 188px;
|
|
297
236
|
}
|
|
@@ -301,7 +240,7 @@
|
|
|
301
240
|
.block-menu-label {
|
|
302
241
|
flex: 1;
|
|
303
242
|
}
|
|
304
|
-
/*
|
|
243
|
+
/* The submenu: a second panel hung off the row's right edge. */
|
|
305
244
|
.block-menu-flyout {
|
|
306
245
|
position: absolute;
|
|
307
246
|
left: 100%;
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* A list menu the editor opens at a point: a block's context menu (rows run
|
|
3
|
+
* that kind's registered actions) and the prose menu's clipboard rows with its "Insert block"
|
|
4
|
+
* flyout (rows insert Markdown into a new paragraph). Pointer- and keyboard-driven without
|
|
5
|
+
* ever taking focus, so the caret it acts on stays exactly where it is.
|
|
6
|
+
*/
|
|
7
|
+
import type { MenuIconName } from '../../menu-icons';
|
|
2
8
|
export interface MenuEntry {
|
|
3
9
|
id: string;
|
|
4
10
|
label: string;
|
|
@@ -7,19 +13,14 @@ export interface MenuEntry {
|
|
|
7
13
|
disabled?: boolean;
|
|
8
14
|
/** A separator row; nothing else on the entry is read. */
|
|
9
15
|
divider?: boolean;
|
|
10
|
-
/** A flyout: hover or ArrowRight opens these beside the row; a pick is one of
|
|
16
|
+
/** A flyout: hover or ArrowRight opens these beside the row; a pick is one of their ids. */
|
|
11
17
|
children?: MenuEntry[];
|
|
12
18
|
}
|
|
13
|
-
|
|
14
|
-
export declare function insertSnippets(): Map<string, string>;
|
|
15
|
-
/** Every insertable block as one flat list, for a flyout that is already a level down. */
|
|
16
|
-
export declare function insertFlyoutEntries(): MenuEntry[];
|
|
17
|
-
/** The insert menu: the common blocks, the rest behind "More blocks". */
|
|
18
|
-
export declare function insertMenuEntries(): MenuEntry[];
|
|
19
|
+
import type { MenuPresence } from './menu-presence.svelte';
|
|
19
20
|
type $$ComponentProps = {
|
|
20
21
|
x: number;
|
|
21
22
|
y: number;
|
|
22
|
-
/** Where the open point is
|
|
23
|
+
/** Where the open point is now, re-read on scroll and resize so the menu stays on it. */
|
|
23
24
|
anchor?: () => {
|
|
24
25
|
x: number;
|
|
25
26
|
y: number;
|
|
@@ -28,6 +29,7 @@ type $$ComponentProps = {
|
|
|
28
29
|
label?: string;
|
|
29
30
|
onPick: (id: string) => void;
|
|
30
31
|
onClose: () => void;
|
|
32
|
+
menuPresence: MenuPresence;
|
|
31
33
|
};
|
|
32
34
|
declare const BlockMenu: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
33
35
|
type BlockMenu = ReturnType<typeof BlockMenu>;
|