@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,10 +1,8 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
/**
|
|
3
|
-
* The editor's own formatting popover over a selection
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* the consumer-guide recipe and this component cannot disagree about what a selection
|
|
7
|
-
* toolbar may read.
|
|
3
|
+
* The editor's own formatting popover over a selection: a row of marks, then labelled rows
|
|
4
|
+
* for what acts on the whole selection. Built only on the public API a host's toolbar would
|
|
5
|
+
* use (`selectionChange`, the rect API, `runCommand`), so the consumer-guide recipe matches it.
|
|
8
6
|
*/
|
|
9
7
|
import type { EditorInstance } from '../../editor-props';
|
|
10
8
|
import type { EditorSelection } from '../../selection/primitives';
|
|
@@ -14,7 +12,8 @@
|
|
|
14
12
|
import { SELECTION_TOOLBAR_LABEL } from '../../a11y-strings';
|
|
15
13
|
import { keepFlyoutOnScreen } from './flyout-placement';
|
|
16
14
|
import { runClipboardAction } from './clipboard-actions';
|
|
17
|
-
import MenuIcon
|
|
15
|
+
import MenuIcon from './MenuIcon.svelte';
|
|
16
|
+
import type { MenuIconName } from '../../menu-icons';
|
|
18
17
|
|
|
19
18
|
type ToolbarEditor = Pick<
|
|
20
19
|
EditorInstance,
|
|
@@ -68,20 +67,20 @@
|
|
|
68
67
|
let current: EditorSelection | null = null;
|
|
69
68
|
let barEl: HTMLDivElement | undefined = $state();
|
|
70
69
|
|
|
71
|
-
// A labelled row the
|
|
72
|
-
// bar's shape, a
|
|
70
|
+
// A labelled row the editor refuses is dropped, where a mark only dims: the icons keep the
|
|
71
|
+
// bar's shape, while a row that does nothing is noise over a selection it cannot act on.
|
|
73
72
|
const rows = $derived(ROWS.filter((row) => !declined.has(row.command)));
|
|
74
73
|
const offersHeading = $derived(!declined.has(TURN_INTO_COMMAND));
|
|
75
74
|
|
|
76
75
|
interface Placement {
|
|
77
76
|
x: number;
|
|
78
77
|
y: number;
|
|
79
|
-
/** The selection's first
|
|
78
|
+
/** The selection's first rectangle, used when the bar has to go above it instead. */
|
|
80
79
|
flipY: number;
|
|
81
80
|
}
|
|
82
81
|
|
|
83
|
-
// The editor root's top is the
|
|
84
|
-
//
|
|
82
|
+
// The editor root's top is the line the bar may not cross: whatever the host draws above
|
|
83
|
+
// the editor ends where the root begins.
|
|
85
84
|
function topInset(): number {
|
|
86
85
|
return Math.max(0, root?.getBoundingClientRect().top ?? 0);
|
|
87
86
|
}
|
|
@@ -93,7 +92,7 @@
|
|
|
93
92
|
}
|
|
94
93
|
|
|
95
94
|
// The bar's own size, measured once it is in the DOM, so the placement can keep it on screen:
|
|
96
|
-
// pushed left at the right edge,
|
|
95
|
+
// pushed left at the right edge, moved above the selection when there is no room below.
|
|
97
96
|
let size = $state<{ w: number; h: number } | null>(null);
|
|
98
97
|
$effect(() => {
|
|
99
98
|
if (!barEl || !placement) return;
|
|
@@ -114,13 +113,12 @@
|
|
|
114
113
|
|
|
115
114
|
$effect(() => editor.getEvents().on('selectionChange', update));
|
|
116
115
|
|
|
117
|
-
//
|
|
118
|
-
//
|
|
119
|
-
// can end anywhere; the release places the bar from the selection that stood at that moment.
|
|
116
|
+
// Shown only once the drag is over, since a bar moving under the pointer is in the way;
|
|
117
|
+
// watched at the document, where the drag can end anywhere.
|
|
120
118
|
let pointerHeld = false;
|
|
121
119
|
$effect(() => {
|
|
122
|
-
// A
|
|
123
|
-
// the bar
|
|
120
|
+
// A pointer-down on the bar itself is a button, not a drag: watching for its release
|
|
121
|
+
// would re-place the bar, and close its flyout, under the click that follows.
|
|
124
122
|
const down = (e: PointerEvent) => {
|
|
125
123
|
if (e.button === 0 && !barEl?.contains(e.target as Node)) pointerHeld = true;
|
|
126
124
|
};
|
|
@@ -141,7 +139,7 @@
|
|
|
141
139
|
};
|
|
142
140
|
});
|
|
143
141
|
|
|
144
|
-
// The editor's own right-click menu takes the selection's spot; two
|
|
142
|
+
// The editor's own right-click menu takes the selection's spot; two panels over one range read
|
|
145
143
|
// as a glitch, so the bar hides while it is open and comes back where the selection still is.
|
|
146
144
|
let menuOpen = false;
|
|
147
145
|
$effect(() =>
|
|
@@ -182,8 +180,8 @@
|
|
|
182
180
|
placement = selection ? shownOver(selection) : null;
|
|
183
181
|
}
|
|
184
182
|
|
|
185
|
-
// The
|
|
186
|
-
// every mark, and a bar of greyed buttons is worse than none.
|
|
183
|
+
// The editor decides where the bar belongs: over a code fence or an equation's source it
|
|
184
|
+
// refuses every mark, and a bar of greyed-out buttons is worse than none.
|
|
187
185
|
function shownOver(selection: EditorSelection): Placement | null {
|
|
188
186
|
if (menuOpen || pointerHeld) return null;
|
|
189
187
|
if (MARKS.every((mark) => declined.has(mark.command))) return null;
|
|
@@ -194,10 +192,8 @@
|
|
|
194
192
|
const { start, end } = normalizeSelection(selection);
|
|
195
193
|
const sameBlock = start.path.join('.') === end.path.join('.');
|
|
196
194
|
if (!sameBlock) {
|
|
197
|
-
// The bar hangs off where the selection
|
|
198
|
-
//
|
|
199
|
-
// upward, or began at the previous paragraph's end) leaves the start block's remaining
|
|
200
|
-
// range empty, so that read is a fallback, and the start block's whole box the last one.
|
|
195
|
+
// The bar hangs off where the selection ends; the start block's remaining range, then
|
|
196
|
+
// its whole box, are the fallbacks when the end block yields no rectangle.
|
|
201
197
|
const rects = editor.getRects();
|
|
202
198
|
const endRects =
|
|
203
199
|
editor.getBlockKindAt(end.path) !== 'table' && end.offset > 0
|
|
@@ -209,27 +205,26 @@
|
|
|
209
205
|
const measured = anchored.length ? anchored : rects.rangeRects(start.path, 0, SELECTION_END);
|
|
210
206
|
return measured.length ? belowRight(measured) : null;
|
|
211
207
|
}
|
|
212
|
-
//
|
|
213
|
-
// flag need not
|
|
208
|
+
// A rectangle inside one table shares the table's path and holds cell indices on endpoints
|
|
209
|
+
// the cross-block flag need not set, so the kind is what rules it out, not the flag.
|
|
214
210
|
if (editor.getBlockKindAt(start.path) === 'table') return null;
|
|
215
211
|
if (start.offset === end.offset) return null;
|
|
216
212
|
const rects = editor.getRects().rangeRects(start.path, start.offset, end.offset);
|
|
217
213
|
return rects.length ? belowRight(rects) : null;
|
|
218
214
|
}
|
|
219
215
|
|
|
220
|
-
/**
|
|
221
|
-
*
|
|
222
|
-
* above the first line when there is no room below. */
|
|
216
|
+
/** Below the selection's last line and right of where it ends, never over the text; the
|
|
217
|
+
* clamp above moves it left or above when there is no room. */
|
|
223
218
|
function belowRight(rects: DOMRect[]): Placement | null {
|
|
224
219
|
const first = rects[0];
|
|
225
220
|
const last = rects[rects.length - 1];
|
|
226
|
-
// Scrolled out from under the host
|
|
221
|
+
// Scrolled out from under whatever the host draws above, or off the bottom: nowhere to go.
|
|
227
222
|
if (last.bottom < topInset() || first.top > window.innerHeight) return null;
|
|
228
223
|
return { x: last.right + BAR_GAP, y: last.bottom + BAR_GAP, flipY: first.top };
|
|
229
224
|
}
|
|
230
225
|
|
|
231
|
-
// The id, not a
|
|
232
|
-
//
|
|
226
|
+
// The command id, not a made-up keystroke: a host rebind moves the shortcut and leaves the
|
|
227
|
+
// button. A refused run means what the bar assumed has changed, so the bar hides.
|
|
233
228
|
function fire(command: string, arg?: unknown): void {
|
|
234
229
|
turnIntoOpen = false;
|
|
235
230
|
if (!editor.runCommand(command, arg)) placement = null;
|
|
@@ -336,8 +331,8 @@
|
|
|
336
331
|
{/if}
|
|
337
332
|
|
|
338
333
|
<style>
|
|
339
|
-
/*
|
|
340
|
-
flyout
|
|
334
|
+
/* The panel and its rows are the shared `.md-menu` family (editor.css); only the marks row
|
|
335
|
+
and where the flyout hangs are this popover's own. */
|
|
341
336
|
.selection-toolbar {
|
|
342
337
|
z-index: 100;
|
|
343
338
|
min-width: 0;
|
|
@@ -356,7 +351,7 @@
|
|
|
356
351
|
width: 34px;
|
|
357
352
|
height: 30px;
|
|
358
353
|
padding: 0;
|
|
359
|
-
color: var(--color-ui-muted, #
|
|
354
|
+
color: var(--color-ui-muted, #93938d);
|
|
360
355
|
}
|
|
361
356
|
.selection-toolbar-mark:hover:not(:disabled),
|
|
362
357
|
.selection-toolbar-mark[aria-pressed='true'] {
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The editor's own formatting popover over a selection
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* the consumer-guide recipe and this component cannot disagree about what a selection
|
|
6
|
-
* toolbar may read.
|
|
2
|
+
* The editor's own formatting popover over a selection: a row of marks, then labelled rows
|
|
3
|
+
* for what acts on the whole selection. Built only on the public API a host's toolbar would
|
|
4
|
+
* use (`selectionChange`, the rect API, `runCommand`), so the consumer-guide recipe matches it.
|
|
7
5
|
*/
|
|
8
6
|
import type { EditorInstance } from '../../editor-props';
|
|
9
7
|
type ToolbarEditor = Pick<EditorInstance, 'getSelection' | 'getRects' | 'getBlockKindAt' | 'runCommand' | 'canRunCommand' | 'isCommandActive' | 'getEvents'>;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The clipboard rows a menu offers
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* Ctrl+V takes — either as it is, or escaped so Markdown syntax in it lands as literal text.
|
|
2
|
+
* The clipboard rows a menu offers: cut and copy through the document's own command, so the
|
|
3
|
+
* editor's copy handlers run as usual, and paste as a paste event on the focused editable,
|
|
4
|
+
* as is or escaped so Markdown syntax arrives as literal text.
|
|
6
5
|
*/
|
|
7
6
|
export type ClipboardAction = 'cut' | 'copy' | 'paste' | 'paste-plain';
|
|
8
7
|
/** Markdown-significant bytes, escaped so pasted text reads back exactly as pasted. */
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The clipboard rows a menu offers
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* Ctrl+V takes — either as it is, or escaped so Markdown syntax in it lands as literal text.
|
|
2
|
+
* The clipboard rows a menu offers: cut and copy through the document's own command, so the
|
|
3
|
+
* editor's copy handlers run as usual, and paste as a paste event on the focused editable,
|
|
4
|
+
* as is or escaped so Markdown syntax arrives as literal text.
|
|
6
5
|
*/
|
|
7
6
|
/** Markdown-significant bytes, escaped so pasted text reads back exactly as pasted. */
|
|
8
7
|
export function escapeMarkdownLiteral(text) {
|
|
@@ -1,15 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* What every non-prose block's context menu offers after the kind's own rows: copy it (its
|
|
3
|
-
* Markdown), replace it with the clipboard, remove it — each named for what the block is
|
|
4
|
-
* ("Remove code block", "Copy image"). Plain, not red: every one is a Ctrl+Z away. Prose blocks
|
|
5
|
-
* are the page's background and keep the browser's own menu (`Editor.svelte`).
|
|
6
|
-
*/
|
|
7
1
|
import type { NodeView } from '../../core/node-views';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
export declare function isProseBackground(node: NodeView): boolean;
|
|
13
|
-
/** Test-only. */
|
|
14
|
-
export declare function __resetDefaultContextActionsForTests(): void;
|
|
2
|
+
import type { InlineReading } from '../../core/inline/inline-cache';
|
|
3
|
+
/** The noun the menu uses for a block: its kind's name mid-sentence, and "image" or "images"
|
|
4
|
+
* for a paragraph holding nothing but images. */
|
|
5
|
+
export declare function blockNoun(node: NodeView, reading: InlineReading): string;
|
|
15
6
|
export declare function registerDefaultContextActions(): void;
|
|
@@ -1,76 +1,58 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const PROSE_KINDS = new Set(['paragraph', 'heading', 'setextHeading']);
|
|
20
|
-
/** The noun the menu uses for a block: a paragraph holding nothing but an image is "image". */
|
|
21
|
-
export function blockNoun(node) {
|
|
22
|
-
if (node.kind === 'paragraph' && IMAGE_ONLY.test(node.raw))
|
|
23
|
-
return 'image';
|
|
24
|
-
return KIND_NAMES[node.kind] ?? 'block';
|
|
25
|
-
}
|
|
26
|
-
/** Prose is the page's background: it takes no block menu of its own. An image alone in a
|
|
27
|
-
* paragraph is a block, not prose. */
|
|
28
|
-
export function isProseBackground(node) {
|
|
29
|
-
return PROSE_KINDS.has(node.kind) && blockNoun(node) !== 'image';
|
|
1
|
+
/**
|
|
2
|
+
* What every non-prose block's context menu offers after the kind's own rows: copy it (its
|
|
3
|
+
* Markdown), replace it with the clipboard, remove it, each named for what the block is
|
|
4
|
+
* ("Remove code block", "Copy image"). Plain, not red: every one is a Ctrl+Z away. Prose blocks
|
|
5
|
+
* are the page's background and take the clipboard rows instead (`editor-root-menus.ts`).
|
|
6
|
+
*/
|
|
7
|
+
import { blockKindLabel } from '../../a11y-strings';
|
|
8
|
+
import { pictureImageCount } from '../../core/inline/picture';
|
|
9
|
+
import { EVERY_KIND, registerBuiltinBlockContextActions } from '../../schema/context-actions';
|
|
10
|
+
/** The noun the menu uses for a block: its kind's name mid-sentence, and "image" or "images"
|
|
11
|
+
* for a paragraph holding nothing but images. */
|
|
12
|
+
export function blockNoun(node, reading) {
|
|
13
|
+
const images = pictureImageCount(node, reading);
|
|
14
|
+
if (images > 0)
|
|
15
|
+
return images === 1 ? 'image' : 'images';
|
|
16
|
+
const label = blockKindLabel(node.kind);
|
|
17
|
+
// An initialism keeps its capitals: "HTML block", not "hTML block".
|
|
18
|
+
return /^.[A-Z]/.test(label) ? label : label.charAt(0).toLowerCase() + label.slice(1);
|
|
30
19
|
}
|
|
31
20
|
let registered = false;
|
|
32
|
-
/** Test-only. */
|
|
33
|
-
export function __resetDefaultContextActionsForTests() {
|
|
34
|
-
registered = false;
|
|
35
|
-
}
|
|
36
21
|
export function registerDefaultContextActions() {
|
|
37
22
|
if (registered)
|
|
38
23
|
return;
|
|
39
24
|
registered = true;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
{
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
catch {
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
if (text.trim() === '')
|
|
62
|
-
return;
|
|
63
|
-
// The paste transforms first, as any paste gets, so a plugin's rewrite applies.
|
|
64
|
-
const md = applyPasteTransforms(text);
|
|
65
|
-
await ctx.replaceRaw(md.endsWith('\n') ? md : md + '\n');
|
|
25
|
+
registerBuiltinBlockContextActions(EVERY_KIND, 'block', (node, _path, noun) => [
|
|
26
|
+
{
|
|
27
|
+
id: 'block.copy',
|
|
28
|
+
label: `Copy ${noun}`,
|
|
29
|
+
icon: 'copy',
|
|
30
|
+
run: () => navigator.clipboard.writeText(node.raw)
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
id: 'block.replace',
|
|
34
|
+
label: 'Replace with clipboard',
|
|
35
|
+
icon: 'clipboard',
|
|
36
|
+
run: async (ctx) => {
|
|
37
|
+
let text;
|
|
38
|
+
try {
|
|
39
|
+
text = await navigator.clipboard.readText();
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return;
|
|
66
43
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
run: (ctx) => ctx.deleteBlock()
|
|
44
|
+
if (text.trim() === '')
|
|
45
|
+
return;
|
|
46
|
+
// The paste transforms first, as any paste gets, so a plugin's rewrite applies.
|
|
47
|
+
const md = ctx.transformPaste(text);
|
|
48
|
+
await ctx.replaceRaw(md.endsWith('\n') ? md : md + '\n');
|
|
73
49
|
}
|
|
74
|
-
|
|
75
|
-
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: 'block.remove',
|
|
53
|
+
label: `Remove ${noun}`,
|
|
54
|
+
icon: 'trash',
|
|
55
|
+
run: (ctx) => ctx.deleteBlock()
|
|
56
|
+
}
|
|
57
|
+
]);
|
|
76
58
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Svelte attachment for a menu flyout: measures the
|
|
3
|
-
*
|
|
2
|
+
* Svelte attachment for a menu flyout: measures the panel once it is in the DOM and moves it to
|
|
3
|
+
* stay inside the viewport (`flyoutPlacement`). The element's own CSS hangs it off the row's
|
|
4
4
|
* right edge; this writes the correction inline, so the rule lives in one place for every menu.
|
|
5
5
|
*/
|
|
6
6
|
export declare function keepFlyoutOnScreen(node: HTMLElement): void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Svelte attachment for a menu flyout: measures the
|
|
3
|
-
*
|
|
2
|
+
* Svelte attachment for a menu flyout: measures the panel once it is in the DOM and moves it to
|
|
3
|
+
* stay inside the viewport (`flyoutPlacement`). The element's own CSS hangs it off the row's
|
|
4
4
|
* right edge; this writes the correction inline, so the rule lives in one place for every menu.
|
|
5
5
|
*/
|
|
6
6
|
import { flyoutPlacement } from '../blocks/table/table-menu-model';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How many editor menus are showing, which is what `menuChange` reports. Every menu attaches
|
|
3
|
+
* `track` to its root element, so a menu reads open for exactly as long as it is mounted,
|
|
4
|
+
* whichever way it closes. A count, so two menus overlapping still read as one open.
|
|
5
|
+
*/
|
|
6
|
+
import type { Attachment } from 'svelte/attachments';
|
|
7
|
+
export interface MenuPresence {
|
|
8
|
+
/** A getter, so a reader re-runs when a menu opens or closes. */
|
|
9
|
+
readonly isOpen: boolean;
|
|
10
|
+
track: Attachment;
|
|
11
|
+
}
|
|
12
|
+
export declare function createMenuPresence(): MenuPresence;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How many editor menus are showing, which is what `menuChange` reports. Every menu attaches
|
|
3
|
+
* `track` to its root element, so a menu reads open for exactly as long as it is mounted,
|
|
4
|
+
* whichever way it closes. A count, so two menus overlapping still read as one open.
|
|
5
|
+
*/
|
|
6
|
+
import { untrack } from 'svelte';
|
|
7
|
+
export function createMenuPresence() {
|
|
8
|
+
let open = $state(0);
|
|
9
|
+
return {
|
|
10
|
+
get isOpen() {
|
|
11
|
+
return open > 0;
|
|
12
|
+
},
|
|
13
|
+
track() {
|
|
14
|
+
// Untracked, or the attachment would depend on the count it writes and rerun forever.
|
|
15
|
+
untrack(() => open++);
|
|
16
|
+
return () => untrack(() => open--);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* editor-root fallback.
|
|
4
|
-
*
|
|
5
|
-
* dependably live afterwards), and a multi-block selection reaches the delete only after the hook
|
|
6
|
-
* answers, so a failed import destroys nothing.
|
|
2
|
+
* Hands a paste's images to the host's import hook, for the blocks' clipboard code and the
|
|
3
|
+
* editor-root fallback alike. Files are read before the first await, since `clipboardData` may
|
|
4
|
+
* not stay live, and a multi-block selection is deleted only after the hook answers.
|
|
7
5
|
*/
|
|
8
6
|
import type { PasteImageHook } from '../editor-keys';
|
|
9
7
|
import { type EditorEvents } from '../editor-events';
|
|
10
8
|
import type { CrossBlockHandlers } from '../selection/cross-block/dispatch';
|
|
11
9
|
export interface ImagePasteArmDeps {
|
|
12
|
-
/** Undefined leaves
|
|
10
|
+
/** Undefined leaves a paste carrying images on the text/plain path: `filesOf`
|
|
13
11
|
* then reports none. */
|
|
14
12
|
onPasteImage: PasteImageHook | undefined;
|
|
15
13
|
/** A failed import reports here rather than vanishing. */
|
|
@@ -19,11 +17,8 @@ export interface ImagePasteArmDeps {
|
|
|
19
17
|
export interface ImagePasteArm {
|
|
20
18
|
/** Call before the handler's first await; empty when no hook is installed. */
|
|
21
19
|
filesOf(data: DataTransfer | null): File[];
|
|
22
|
-
/**
|
|
23
|
-
*
|
|
24
|
-
* seam. Null means the arm is finished (nothing imported, or a multi-block
|
|
25
|
-
* selection took the insertion); markdown means no selection claimed it.
|
|
26
|
-
*/
|
|
20
|
+
/** Imports `files` in clipboard order and offers the markdown to the cross-block paste; null
|
|
21
|
+
* when nothing is left to do, the markdown when no selection took it. */
|
|
27
22
|
run(e: ClipboardEvent, files: File[]): Promise<string | null>;
|
|
28
23
|
}
|
|
29
24
|
export declare function createImagePasteArm(deps: ImagePasteArmDeps): ImagePasteArm;
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* editor-root fallback.
|
|
4
|
-
*
|
|
5
|
-
* dependably live afterwards), and a multi-block selection reaches the delete only after the hook
|
|
6
|
-
* answers, so a failed import destroys nothing.
|
|
2
|
+
* Hands a paste's images to the host's import hook, for the blocks' clipboard code and the
|
|
3
|
+
* editor-root fallback alike. Files are read before the first await, since `clipboardData` may
|
|
4
|
+
* not stay live, and a multi-block selection is deleted only after the hook answers.
|
|
7
5
|
*/
|
|
8
6
|
import { emitClipboardError } from '../editor-events';
|
|
9
7
|
export function createImagePasteArm(deps) {
|
|
@@ -14,13 +12,12 @@ export function createImagePasteArm(deps) {
|
|
|
14
12
|
if (!importImage)
|
|
15
13
|
return null;
|
|
16
14
|
const markdown = await importAll(deps, importImage, files);
|
|
17
|
-
// Empty markdown ends the
|
|
18
|
-
//
|
|
15
|
+
// Empty markdown ends this the same way no markdown does, and keeps the
|
|
16
|
+
// cross-block paste from being handed an empty string.
|
|
19
17
|
if (!markdown)
|
|
20
18
|
return null;
|
|
21
|
-
//
|
|
22
|
-
//
|
|
23
|
-
// seam reads `isCrossBlock` LIVE, so a mid-import selection is the one replaced.
|
|
19
|
+
// The ordinary paste route, which reads `isCrossBlock` live, since the delete can
|
|
20
|
+
// collapse or merge away the receiving block.
|
|
24
21
|
if (await deps.crossBlock.handlePaste(e, markdown))
|
|
25
22
|
return null;
|
|
26
23
|
return markdown;
|
|
@@ -33,11 +30,8 @@ export function createImagePasteArm(deps) {
|
|
|
33
30
|
function imageFilesOf(data) {
|
|
34
31
|
return Array.from(data?.files ?? []).filter((file) => file.type.startsWith('image/'));
|
|
35
32
|
}
|
|
36
|
-
/**
|
|
37
|
-
*
|
|
38
|
-
* structural paste can split the block out from under a second insertion addressed at
|
|
39
|
-
* anchor + length — and one paste gesture owes the user one undo entry.
|
|
40
|
-
*/
|
|
33
|
+
/** One insertion for every image: multi-line markdown can split the block out from under a
|
|
34
|
+
* second insertion, and one paste is one undo entry. */
|
|
41
35
|
async function importAll(deps, importImage, files) {
|
|
42
36
|
const markdown = [];
|
|
43
37
|
for (const image of files) {
|
|
@@ -51,9 +45,8 @@ async function importAll(deps, importImage, files) {
|
|
|
51
45
|
markdown.push(inserted);
|
|
52
46
|
}
|
|
53
47
|
catch (error) {
|
|
54
|
-
//
|
|
55
|
-
//
|
|
56
|
-
// it started importing will not appear in the document.
|
|
48
|
+
// A failed import skips its image and reports a clipboard error, so the host knows
|
|
49
|
+
// that asset will not appear.
|
|
57
50
|
emitClipboardError(deps.events, { error });
|
|
58
51
|
}
|
|
59
52
|
}
|
|
@@ -3,9 +3,6 @@
|
|
|
3
3
|
* instance: the node keeps its identity, its Svelte scope classes and its place in the
|
|
4
4
|
* reactive tree, so only its position in the DOM moves.
|
|
5
5
|
*/
|
|
6
|
-
/**
|
|
7
|
-
*
|
|
8
|
-
* target changes or the attachment tears down. A null target leaves the node home, which is
|
|
9
|
-
* how the seam stays absent by default.
|
|
10
|
-
*/
|
|
6
|
+
/** Appends the node to `target` and puts it back when the target changes or the attachment
|
|
7
|
+
* tears down; a null target leaves the node where it is. */
|
|
11
8
|
export declare function portalInto(target: HTMLElement | null | undefined): (node: HTMLElement) => (() => void) | void;
|
|
@@ -3,17 +3,14 @@
|
|
|
3
3
|
* instance: the node keeps its identity, its Svelte scope classes and its place in the
|
|
4
4
|
* reactive tree, so only its position in the DOM moves.
|
|
5
5
|
*/
|
|
6
|
-
/**
|
|
7
|
-
*
|
|
8
|
-
* target changes or the attachment tears down. A null target leaves the node home, which is
|
|
9
|
-
* how the seam stays absent by default.
|
|
10
|
-
*/
|
|
6
|
+
/** Appends the node to `target` and puts it back when the target changes or the attachment
|
|
7
|
+
* tears down; a null target leaves the node where it is. */
|
|
11
8
|
export function portalInto(target) {
|
|
12
9
|
return (node) => {
|
|
13
10
|
if (!target)
|
|
14
11
|
return;
|
|
15
|
-
// A
|
|
16
|
-
// is away, so a captured `nextSibling` would
|
|
12
|
+
// A comment marks where the node came from: the siblings around it can change while
|
|
13
|
+
// the node is away, so a captured `nextSibling` would be a stale reference.
|
|
17
14
|
const marker = node.ownerDocument.createComment('');
|
|
18
15
|
node.parentNode?.insertBefore(marker, node);
|
|
19
16
|
target.appendChild(node);
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Grammar-side activation for the `:::name` directive
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* A second activation site is a no-op: every step guards on something the tier itself owns.
|
|
2
|
+
* Grammar-side activation for the `:::name` directive syntax. The public `activateDirectives`
|
|
3
|
+
* adds the components (core can't import them) and makes both belong to no plugin. A call, not an
|
|
4
|
+
* import side effect, so `:::` and `:` stay free until someone asks. Must run before the editor
|
|
5
|
+
* first parses (G1.17); calling it twice is a no-op, since every step checks its registration first.
|
|
7
6
|
*/
|
|
8
7
|
export declare function activateDirectiveGrammar(): void;
|
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Grammar-side activation for the `:::name` directive
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* A second activation site is a no-op: every step guards on something the tier itself owns.
|
|
2
|
+
* Grammar-side activation for the `:::name` directive syntax. The public `activateDirectives`
|
|
3
|
+
* adds the components (core can't import them) and makes both belong to no plugin. A call, not an
|
|
4
|
+
* import side effect, so `:::` and `:` stay free until someone asks. Must run before the editor
|
|
5
|
+
* first parses (G1.17); calling it twice is a no-op, since every step checks its registration first.
|
|
7
6
|
*/
|
|
8
7
|
import { registerDirectiveKinds, registerDirectiveTextKind, DIRECTIVE_TEXT } from './kinds';
|
|
9
8
|
import { registerDirectiveOpeners } from './container-opener';
|
|
10
9
|
import { declaredPluginInlineKind, isInlineKindDeclared } from '../../schema/plugin-kind';
|
|
11
10
|
import { registerInlineSyntax } from '../inline/scan/plugin-syntax';
|
|
12
11
|
import { recognizeTextDirective } from './text-recognizer';
|
|
12
|
+
import { defaultGrammarView } from '../../schema/block-openers';
|
|
13
13
|
export function activateDirectiveGrammar() {
|
|
14
|
-
// The inline
|
|
15
|
-
// read
|
|
16
|
-
// the trigger is SHARED (emoji rungs on it too), so that question answers for another plugin.
|
|
14
|
+
// The inline handler has no registration of its own to check, so it borrows the
|
|
15
|
+
// `directiveText` flag, read before it is set; the `:` trigger is shared with emoji.
|
|
17
16
|
const alreadyActive = isInlineKindDeclared(DIRECTIVE_TEXT);
|
|
18
17
|
registerDirectiveKinds();
|
|
19
18
|
registerDirectiveOpeners();
|
|
20
19
|
registerDirectiveTextKind();
|
|
21
20
|
if (!alreadyActive) {
|
|
22
21
|
const kind = declaredPluginInlineKind(DIRECTIVE_TEXT);
|
|
23
|
-
registerInlineSyntax(':', (raw, pos, end) => recognizeTextDirective(raw, pos, end, kind));
|
|
22
|
+
registerInlineSyntax(':', (raw, pos, end, grammar) => recognizeTextDirective(raw, pos, end, kind, grammar ?? defaultGrammarView));
|
|
24
23
|
}
|
|
25
24
|
}
|