@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,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>;
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { tick } from 'svelte';
|
|
3
|
+
import { INLINE_MENU_LABEL } from '../../a11y-strings';
|
|
4
|
+
import type { EditorEvents } from '../../editor-events';
|
|
5
|
+
import type { InlineMenuState } from '../../inline-menu/inline-menu-state.svelte';
|
|
6
|
+
import MenuIcon from './MenuIcon.svelte';
|
|
7
|
+
import type { MenuPresence } from './menu-presence.svelte';
|
|
8
|
+
import { eventToChord } from '../../schema/keybindings';
|
|
9
|
+
|
|
10
|
+
// Mounted unconditionally by Editor: the key handling and the anchoring must observe the session
|
|
11
|
+
// opening, so the open/closed `{#if}` lives here rather than at the mount site.
|
|
12
|
+
let {
|
|
13
|
+
menu,
|
|
14
|
+
events,
|
|
15
|
+
getEditorEl,
|
|
16
|
+
measureRange,
|
|
17
|
+
menuPresence
|
|
18
|
+
}: {
|
|
19
|
+
menu: InlineMenuState;
|
|
20
|
+
events: EditorEvents;
|
|
21
|
+
menuPresence: MenuPresence;
|
|
22
|
+
getEditorEl: () => HTMLElement | null;
|
|
23
|
+
measureRange: (path: number[], start: number, end: number) => DOMRect[];
|
|
24
|
+
} = $props();
|
|
25
|
+
|
|
26
|
+
const GAP_PX = 4;
|
|
27
|
+
const EDGE_PX = 8;
|
|
28
|
+
|
|
29
|
+
let menuEl: HTMLDivElement | undefined = $state();
|
|
30
|
+
let position = $state<{ left: number; top: number } | null>(null);
|
|
31
|
+
|
|
32
|
+
const view = $derived(menu.getOpen());
|
|
33
|
+
// An empty list paints nothing and holds no key: Enter after `#zzz` is the author's own Enter.
|
|
34
|
+
const showing = $derived(view !== null && view.items.length > 0);
|
|
35
|
+
|
|
36
|
+
/** Under the trigger's first glyph, or above it where the viewport leaves no room below. */
|
|
37
|
+
function place(): void {
|
|
38
|
+
const open = menu.getOpen();
|
|
39
|
+
if (!open || !menuEl) return;
|
|
40
|
+
const rect = measureRange(open.path, open.start, open.end)[0];
|
|
41
|
+
if (!rect) return;
|
|
42
|
+
const { width, height } = menuEl.getBoundingClientRect();
|
|
43
|
+
const below = rect.bottom + GAP_PX;
|
|
44
|
+
const fitsBelow = below + height <= window.innerHeight - EDGE_PX;
|
|
45
|
+
const top = fitsBelow ? below : Math.max(EDGE_PX, rect.top - GAP_PX - height);
|
|
46
|
+
const left = Math.max(EDGE_PX, Math.min(rect.left, window.innerWidth - EDGE_PX - width));
|
|
47
|
+
position = { left, top };
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
$effect(() => {
|
|
51
|
+
if (!showing) {
|
|
52
|
+
position = null;
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
// Every read that moves the anchor or resizes the list re-places it.
|
|
56
|
+
void view?.end;
|
|
57
|
+
void view?.items;
|
|
58
|
+
place();
|
|
59
|
+
// The `edit` event fires before the leaf re-renders the bytes; the rects are current a
|
|
60
|
+
// tick later.
|
|
61
|
+
const unsubscribe = events.on('edit', () => void tick().then(place));
|
|
62
|
+
window.addEventListener('scroll', place, true);
|
|
63
|
+
window.addEventListener('resize', place);
|
|
64
|
+
return () => {
|
|
65
|
+
unsubscribe();
|
|
66
|
+
window.removeEventListener('scroll', place, true);
|
|
67
|
+
window.removeEventListener('resize', place);
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
// The keys a list needs, taken at the root's capture phase so the focused block never sees
|
|
72
|
+
// them: the caret stays in the document and the author keeps typing the query.
|
|
73
|
+
$effect(() => {
|
|
74
|
+
const root = getEditorEl();
|
|
75
|
+
if (!showing || !root) return;
|
|
76
|
+
const onKeyDown = (e: KeyboardEvent) => {
|
|
77
|
+
// A composing Enter or Escape belongs to the IME's candidate window.
|
|
78
|
+
if (e.isComposing) return;
|
|
79
|
+
// The bare key alone: a chorded arrow (Shift to extend, Mod to jump) stays the document's.
|
|
80
|
+
const chord = eventToChord(e);
|
|
81
|
+
if (chord === 'ArrowDown') menu.move(1);
|
|
82
|
+
else if (chord === 'ArrowUp') menu.move(-1);
|
|
83
|
+
else if (chord === 'Enter' || chord === 'Tab') menu.commit();
|
|
84
|
+
else if (chord === 'Escape') menu.close();
|
|
85
|
+
else return;
|
|
86
|
+
e.preventDefault();
|
|
87
|
+
e.stopPropagation();
|
|
88
|
+
};
|
|
89
|
+
root.addEventListener('keydown', onKeyDown, true);
|
|
90
|
+
return () => root.removeEventListener('keydown', onKeyDown, true);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
// The baseline a leaf's first bytes are read against, taken on beforeinput, which every input
|
|
94
|
+
// route fires, including the ones no caret move precedes.
|
|
95
|
+
$effect(() => {
|
|
96
|
+
const root = getEditorEl();
|
|
97
|
+
if (!root) return;
|
|
98
|
+
const onBeforeInput = () => menu.primeBaseline();
|
|
99
|
+
root.addEventListener('beforeinput', onBeforeInput, true);
|
|
100
|
+
return () => root.removeEventListener('beforeinput', onBeforeInput, true);
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
// Focus leaving the editor ends the session; the list itself never takes focus.
|
|
104
|
+
$effect(() => {
|
|
105
|
+
const root = getEditorEl();
|
|
106
|
+
if (view === null || !root) return;
|
|
107
|
+
const onFocusOut = (e: FocusEvent) => {
|
|
108
|
+
const next = e.relatedTarget instanceof Node ? e.relatedTarget : null;
|
|
109
|
+
if (!next || !root.contains(next)) menu.close();
|
|
110
|
+
};
|
|
111
|
+
root.addEventListener('focusout', onFocusOut);
|
|
112
|
+
return () => root.removeEventListener('focusout', onFocusOut);
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
$effect(() => {
|
|
116
|
+
void view?.activeIndex;
|
|
117
|
+
menuEl?.querySelector('[data-active="true"]')?.scrollIntoView({ block: 'nearest' });
|
|
118
|
+
});
|
|
119
|
+
</script>
|
|
120
|
+
|
|
121
|
+
{#if showing && view}
|
|
122
|
+
{@const Row = view.source.row}
|
|
123
|
+
<!-- A press on the list must not blur the document: the block under the caret commits on blur,
|
|
124
|
+
and the pick needs that caret. -->
|
|
125
|
+
<div
|
|
126
|
+
bind:this={menuEl}
|
|
127
|
+
id={menu.listboxId}
|
|
128
|
+
class="md-menu inline-menu"
|
|
129
|
+
role="listbox"
|
|
130
|
+
{@attach menuPresence.track}
|
|
131
|
+
tabindex="-1"
|
|
132
|
+
aria-label={INLINE_MENU_LABEL}
|
|
133
|
+
data-inline-menu={view.source.name}
|
|
134
|
+
style:left="{position?.left ?? 0}px"
|
|
135
|
+
style:top="{position?.top ?? 0}px"
|
|
136
|
+
style:visibility={position ? 'visible' : 'hidden'}
|
|
137
|
+
onpointerdown={(e) => e.preventDefault()}
|
|
138
|
+
>
|
|
139
|
+
{#each view.items as item, i (item.id)}
|
|
140
|
+
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
141
|
+
<div
|
|
142
|
+
id={menu.optionId(item.id)}
|
|
143
|
+
class="md-menu-item inline-menu-item"
|
|
144
|
+
role="option"
|
|
145
|
+
tabindex="-1"
|
|
146
|
+
aria-selected={i === view.activeIndex}
|
|
147
|
+
data-active={i === view.activeIndex}
|
|
148
|
+
onpointermove={() => menu.setActive(i)}
|
|
149
|
+
onclick={() => menu.commit(i)}
|
|
150
|
+
>
|
|
151
|
+
{#if Row}
|
|
152
|
+
<Row {item} active={i === view.activeIndex} query={view.query} />
|
|
153
|
+
{:else}
|
|
154
|
+
{#if item.icon}<span class="md-menu-icon"><MenuIcon name={item.icon} /></span>{/if}
|
|
155
|
+
<span class="inline-menu-label">{item.label}</span>
|
|
156
|
+
{#if item.detail}<span class="inline-menu-detail">{item.detail}</span>{/if}
|
|
157
|
+
{/if}
|
|
158
|
+
</div>
|
|
159
|
+
{/each}
|
|
160
|
+
</div>
|
|
161
|
+
{/if}
|
|
162
|
+
|
|
163
|
+
<style>
|
|
164
|
+
/* Surface and rows are the shared `.md-menu` family (editor.css). */
|
|
165
|
+
.inline-menu {
|
|
166
|
+
max-width: 360px;
|
|
167
|
+
max-height: 264px;
|
|
168
|
+
overflow-y: auto;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.inline-menu-label {
|
|
172
|
+
flex: 1 1 auto;
|
|
173
|
+
min-width: 4em;
|
|
174
|
+
overflow: hidden;
|
|
175
|
+
text-overflow: ellipsis;
|
|
176
|
+
white-space: nowrap;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/* No percentage width: the list sizes to its content, and a percentage there resolves
|
|
180
|
+
against a width the content is still deciding, which clips a detail that would fit. */
|
|
181
|
+
.inline-menu-detail {
|
|
182
|
+
flex: 0 1 auto;
|
|
183
|
+
min-width: 0;
|
|
184
|
+
margin-left: auto;
|
|
185
|
+
padding-left: 12px;
|
|
186
|
+
overflow: hidden;
|
|
187
|
+
text-overflow: ellipsis;
|
|
188
|
+
white-space: nowrap;
|
|
189
|
+
color: var(--color-ui-muted, #93938d);
|
|
190
|
+
}
|
|
191
|
+
</style>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { EditorEvents } from '../../editor-events';
|
|
2
|
+
import type { InlineMenuState } from '../../inline-menu/inline-menu-state.svelte';
|
|
3
|
+
import type { MenuPresence } from './menu-presence.svelte';
|
|
4
|
+
type $$ComponentProps = {
|
|
5
|
+
menu: InlineMenuState;
|
|
6
|
+
events: EditorEvents;
|
|
7
|
+
menuPresence: MenuPresence;
|
|
8
|
+
getEditorEl: () => HTMLElement | null;
|
|
9
|
+
measureRange: (path: number[], start: number, end: number) => DOMRect[];
|
|
10
|
+
};
|
|
11
|
+
declare const InlineMenuHost: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
12
|
+
type InlineMenuHost = ReturnType<typeof InlineMenuHost>;
|
|
13
|
+
export default InlineMenuHost;
|
|
@@ -1,107 +1,9 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
/**
|
|
3
|
-
|
|
4
|
-
* inlined as path data so the library carries no icon dependency. Every shape is a path so
|
|
5
|
-
* the stroke styling below covers all of them.
|
|
6
|
-
*/
|
|
7
|
-
const GLYPHS = {
|
|
8
|
-
plus: ['M5 12h14', 'M12 5v14'],
|
|
9
|
-
type: ['M4 7V4h16v3', 'M9 20h6', 'M12 4v16'],
|
|
10
|
-
trash: [
|
|
11
|
-
'M3 6h18',
|
|
12
|
-
'M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6',
|
|
13
|
-
'M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2',
|
|
14
|
-
'M10 11v6',
|
|
15
|
-
'M14 11v6'
|
|
16
|
-
],
|
|
17
|
-
'arrow-up': ['m5 12 7-7 7 7', 'M12 19V5'],
|
|
18
|
-
'arrow-down': ['M12 5v14', 'm19 12-7 7-7-7'],
|
|
19
|
-
'arrow-left': ['m12 19-7-7 7-7', 'M19 12H5'],
|
|
20
|
-
'arrow-right': ['M5 12h14', 'm12 5 7 7-7 7'],
|
|
21
|
-
scissors: [
|
|
22
|
-
'M9 6a3 3 0 1 1-6 0 3 3 0 0 1 6 0',
|
|
23
|
-
'M8.12 8.12 12 12',
|
|
24
|
-
'M20 4 8.12 15.88',
|
|
25
|
-
'M9 18a3 3 0 1 1-6 0 3 3 0 0 1 6 0',
|
|
26
|
-
'M14.8 14.8 20 20'
|
|
27
|
-
],
|
|
28
|
-
copy: [
|
|
29
|
-
'M10 8h10a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H10a2 2 0 0 1-2-2V10a2 2 0 0 1 2-2z',
|
|
30
|
-
'M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'
|
|
31
|
-
],
|
|
32
|
-
clipboard: [
|
|
33
|
-
'M9 2h6a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z',
|
|
34
|
-
'M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'
|
|
35
|
-
],
|
|
36
|
-
'align-left': ['M15 12H3', 'M17 18H3', 'M21 6H3'],
|
|
37
|
-
'align-center': ['M17 12H7', 'M19 18H5', 'M21 6H3'],
|
|
38
|
-
'align-right': ['M21 12H9', 'M21 18H7', 'M21 6H3'],
|
|
39
|
-
bold: ['M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8'],
|
|
40
|
-
italic: ['M19 4h-9', 'M14 20H5', 'M15 4 9 20'],
|
|
41
|
-
strikethrough: ['M16 4H9a3 3 0 0 0-2.83 4', 'M14 12a4 4 0 0 1 0 8H6', 'M4 12h16'],
|
|
42
|
-
code: ['m16 18 6-6-6-6', 'm8 6-6 6 6 6'],
|
|
43
|
-
link: [
|
|
44
|
-
'M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71',
|
|
45
|
-
'M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'
|
|
46
|
-
],
|
|
47
|
-
heading: ['M6 12h12', 'M6 20V4', 'M18 20V4'],
|
|
48
|
-
list: ['M3 12h.01', 'M3 18h.01', 'M3 6h.01', 'M8 12h13', 'M8 18h13', 'M8 6h13'],
|
|
49
|
-
'list-ordered': [
|
|
50
|
-
'M10 12h11',
|
|
51
|
-
'M10 18h11',
|
|
52
|
-
'M10 6h11',
|
|
53
|
-
'M4 10h2',
|
|
54
|
-
'M4 6h1v4',
|
|
55
|
-
'M6 18H4c0-1 2-2 2-3s-1-1.5-2-1'
|
|
56
|
-
],
|
|
57
|
-
'square-check': [
|
|
58
|
-
'M5 3h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z',
|
|
59
|
-
'm9 12 2 2 4-4'
|
|
60
|
-
],
|
|
61
|
-
'text-quote': ['M17 6H3', 'M21 12H8', 'M21 18H8', 'M3 12v6'],
|
|
62
|
-
minus: ['M5 12h14'],
|
|
63
|
-
table: [
|
|
64
|
-
'M5 3h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z',
|
|
65
|
-
'M12 3v18',
|
|
66
|
-
'M3 9h18',
|
|
67
|
-
'M3 15h18'
|
|
68
|
-
],
|
|
69
|
-
sigma: [
|
|
70
|
-
'M18 7V5a1 1 0 0 0-1-1H6.5a.5.5 0 0 0-.4.8l4.5 6a2 2 0 0 1 0 2.4l-4.5 6a.5.5 0 0 0 .4.8H17a1 1 0 0 0 1-1v-2'
|
|
71
|
-
],
|
|
72
|
-
info: ['M22 12a10 10 0 1 1-20 0 10 10 0 0 1 20 0', 'M12 16v-4', 'M12 8h.01'],
|
|
73
|
-
'chevron-right': ['m9 18 6-6-6-6'],
|
|
74
|
-
'chevron-down': ['m6 9 6 6 6-6'],
|
|
75
|
-
'rows-2': [
|
|
76
|
-
'M5 3h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z',
|
|
77
|
-
'M3 12h18'
|
|
78
|
-
],
|
|
79
|
-
'columns-2': [
|
|
80
|
-
'M5 3h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z',
|
|
81
|
-
'M12 3v18'
|
|
82
|
-
],
|
|
83
|
-
check: ['M20 6 9 17l-5-5'],
|
|
84
|
-
crop: ['M6 2v14a2 2 0 0 0 2 2h14', 'M18 22V8a2 2 0 0 0-2-2H2'],
|
|
85
|
-
captions: [
|
|
86
|
-
'M5 5h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2z',
|
|
87
|
-
'M7 15h4',
|
|
88
|
-
'M15 15h2',
|
|
89
|
-
'M7 11h2',
|
|
90
|
-
'M13 11h4'
|
|
91
|
-
],
|
|
92
|
-
x: ['M18 6 6 18', 'm6 6 12 12'],
|
|
93
|
-
'grip-vertical': [
|
|
94
|
-
'M10 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0',
|
|
95
|
-
'M10 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0',
|
|
96
|
-
'M10 19a1 1 0 1 1-2 0 1 1 0 0 1 2 0',
|
|
97
|
-
'M16 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0',
|
|
98
|
-
'M16 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0',
|
|
99
|
-
'M16 19a1 1 0 1 1-2 0 1 1 0 0 1 2 0'
|
|
100
|
-
]
|
|
101
|
-
} as const;
|
|
2
|
+
/** One menu glyph by name: its stroked paths, or a letter for the three text marks. */
|
|
3
|
+
import { MENU_GLYPHS as GLYPHS, type MenuIconName } from '../../menu-icons';
|
|
102
4
|
|
|
103
5
|
/**
|
|
104
|
-
* The marks as
|
|
6
|
+
* The marks as letters, the way a formatting bar draws them: a bold B, a slanted I, an S with
|
|
105
7
|
* its own line through it. Lucide's stroked outlines of these read as clip art at 16px.
|
|
106
8
|
*/
|
|
107
9
|
const LETTERS = {
|
|
@@ -109,8 +11,6 @@
|
|
|
109
11
|
italic: { text: 'I', weight: 500, italic: true, strike: false },
|
|
110
12
|
strikethrough: { text: 'S', weight: 600, italic: false, strike: true }
|
|
111
13
|
} as const;
|
|
112
|
-
|
|
113
|
-
export type MenuIconName = keyof typeof GLYPHS;
|
|
114
14
|
</script>
|
|
115
15
|
|
|
116
16
|
<script lang="ts">
|
|
@@ -1,47 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
* inlined as path data so the library carries no icon dependency. Every shape is a path so
|
|
4
|
-
* the stroke styling below covers all of them.
|
|
5
|
-
*/
|
|
6
|
-
declare const GLYPHS: {
|
|
7
|
-
readonly plus: readonly ["M5 12h14", "M12 5v14"];
|
|
8
|
-
readonly type: readonly ["M4 7V4h16v3", "M9 20h6", "M12 4v16"];
|
|
9
|
-
readonly trash: readonly ["M3 6h18", "M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6", "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2", "M10 11v6", "M14 11v6"];
|
|
10
|
-
readonly 'arrow-up': readonly ["m5 12 7-7 7 7", "M12 19V5"];
|
|
11
|
-
readonly 'arrow-down': readonly ["M12 5v14", "m19 12-7 7-7-7"];
|
|
12
|
-
readonly 'arrow-left': readonly ["m12 19-7-7 7-7", "M19 12H5"];
|
|
13
|
-
readonly 'arrow-right': readonly ["M5 12h14", "m12 5 7 7-7 7"];
|
|
14
|
-
readonly scissors: readonly ["M9 6a3 3 0 1 1-6 0 3 3 0 0 1 6 0", "M8.12 8.12 12 12", "M20 4 8.12 15.88", "M9 18a3 3 0 1 1-6 0 3 3 0 0 1 6 0", "M14.8 14.8 20 20"];
|
|
15
|
-
readonly copy: readonly ["M10 8h10a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H10a2 2 0 0 1-2-2V10a2 2 0 0 1 2-2z", "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"];
|
|
16
|
-
readonly clipboard: readonly ["M9 2h6a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z", "M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"];
|
|
17
|
-
readonly 'align-left': readonly ["M15 12H3", "M17 18H3", "M21 6H3"];
|
|
18
|
-
readonly 'align-center': readonly ["M17 12H7", "M19 18H5", "M21 6H3"];
|
|
19
|
-
readonly 'align-right': readonly ["M21 12H9", "M21 18H7", "M21 6H3"];
|
|
20
|
-
readonly bold: readonly ["M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8"];
|
|
21
|
-
readonly italic: readonly ["M19 4h-9", "M14 20H5", "M15 4 9 20"];
|
|
22
|
-
readonly strikethrough: readonly ["M16 4H9a3 3 0 0 0-2.83 4", "M14 12a4 4 0 0 1 0 8H6", "M4 12h16"];
|
|
23
|
-
readonly code: readonly ["m16 18 6-6-6-6", "m8 6-6 6 6 6"];
|
|
24
|
-
readonly link: readonly ["M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71", "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"];
|
|
25
|
-
readonly heading: readonly ["M6 12h12", "M6 20V4", "M18 20V4"];
|
|
26
|
-
readonly list: readonly ["M3 12h.01", "M3 18h.01", "M3 6h.01", "M8 12h13", "M8 18h13", "M8 6h13"];
|
|
27
|
-
readonly 'list-ordered': readonly ["M10 12h11", "M10 18h11", "M10 6h11", "M4 10h2", "M4 6h1v4", "M6 18H4c0-1 2-2 2-3s-1-1.5-2-1"];
|
|
28
|
-
readonly 'square-check': readonly ["M5 3h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z", "m9 12 2 2 4-4"];
|
|
29
|
-
readonly 'text-quote': readonly ["M17 6H3", "M21 12H8", "M21 18H8", "M3 12v6"];
|
|
30
|
-
readonly minus: readonly ["M5 12h14"];
|
|
31
|
-
readonly table: readonly ["M5 3h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z", "M12 3v18", "M3 9h18", "M3 15h18"];
|
|
32
|
-
readonly sigma: readonly ["M18 7V5a1 1 0 0 0-1-1H6.5a.5.5 0 0 0-.4.8l4.5 6a2 2 0 0 1 0 2.4l-4.5 6a.5.5 0 0 0 .4.8H17a1 1 0 0 0 1-1v-2"];
|
|
33
|
-
readonly info: readonly ["M22 12a10 10 0 1 1-20 0 10 10 0 0 1 20 0", "M12 16v-4", "M12 8h.01"];
|
|
34
|
-
readonly 'chevron-right': readonly ["m9 18 6-6-6-6"];
|
|
35
|
-
readonly 'chevron-down': readonly ["m6 9 6 6 6-6"];
|
|
36
|
-
readonly 'rows-2': readonly ["M5 3h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z", "M3 12h18"];
|
|
37
|
-
readonly 'columns-2': readonly ["M5 3h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z", "M12 3v18"];
|
|
38
|
-
readonly check: readonly ["M20 6 9 17l-5-5"];
|
|
39
|
-
readonly crop: readonly ["M6 2v14a2 2 0 0 0 2 2h14", "M18 22V8a2 2 0 0 0-2-2H2"];
|
|
40
|
-
readonly captions: readonly ["M5 5h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2z", "M7 15h4", "M15 15h2", "M7 11h2", "M13 11h4"];
|
|
41
|
-
readonly x: readonly ["M18 6 6 18", "m6 6 12 12"];
|
|
42
|
-
readonly 'grip-vertical': readonly ["M10 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0", "M10 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0", "M10 19a1 1 0 1 1-2 0 1 1 0 0 1 2 0", "M16 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0", "M16 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0", "M16 19a1 1 0 1 1-2 0 1 1 0 0 1 2 0"];
|
|
43
|
-
};
|
|
44
|
-
export type MenuIconName = keyof typeof GLYPHS;
|
|
1
|
+
/** One menu glyph by name: its stroked paths, or a letter for the three text marks. */
|
|
2
|
+
import { type MenuIconName } from '../../menu-icons';
|
|
45
3
|
type $$ComponentProps = {
|
|
46
4
|
name: MenuIconName;
|
|
47
5
|
size?: number;
|