@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
|
@@ -13,11 +13,13 @@
|
|
|
13
13
|
COLUMN_ALIGNMENT,
|
|
14
14
|
TABLE_ACTIONS
|
|
15
15
|
} from '../../../a11y-strings';
|
|
16
|
-
import MenuIcon
|
|
16
|
+
import MenuIcon from '../../menu/MenuIcon.svelte';
|
|
17
|
+
import type { MenuIconName } from '../../../menu-icons';
|
|
17
18
|
import { tick, untrack } from 'svelte';
|
|
19
|
+
import type { MenuPresence } from '../../menu/menu-presence.svelte';
|
|
18
20
|
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
+
// Every entry carries an icon, and the destructive ones take the accent colour, as the host
|
|
22
|
+
// app's context menus do.
|
|
21
23
|
const ICONS: Record<TableAxisAction | ClipboardAction, MenuIconName> = {
|
|
22
24
|
insertRowAbove: 'plus',
|
|
23
25
|
insertRowBelow: 'plus',
|
|
@@ -44,28 +46,27 @@
|
|
|
44
46
|
onalign,
|
|
45
47
|
onclose,
|
|
46
48
|
onescape,
|
|
47
|
-
anchor
|
|
49
|
+
anchor,
|
|
50
|
+
menuPresence
|
|
48
51
|
}: {
|
|
49
52
|
items: TableMenuItem[];
|
|
50
53
|
x: number;
|
|
51
54
|
y: number;
|
|
52
|
-
/** Where the
|
|
55
|
+
/** Where the point the menu opened on is now, re-read on scroll and resize. */
|
|
53
56
|
anchor?: () => { x: number; y: number } | null;
|
|
54
57
|
onaction: (action: TableAxisAction, index: number) => void;
|
|
55
58
|
onclipboard: (action: ClipboardAction) => void;
|
|
56
59
|
onalign: (alignment: 'left' | 'center' | 'right') => void;
|
|
57
60
|
onclose: () => void;
|
|
58
61
|
onescape: () => void;
|
|
62
|
+
menuPresence: MenuPresence;
|
|
59
63
|
} = $props();
|
|
60
64
|
|
|
61
65
|
let menuEl: HTMLDivElement | undefined = $state();
|
|
62
66
|
/** The open flyout, if any: hover or ArrowRight on its row opens it, ArrowLeft closes it. */
|
|
63
67
|
let openGroup = $state<'row' | 'column' | null>(null);
|
|
64
68
|
|
|
65
|
-
//
|
|
66
|
-
// what it opened on and leaves the viewport with it — never re-clamped into view, which
|
|
67
|
-
// would float it over unrelated content. The clamp runs once, when the size is first known,
|
|
68
|
-
// and its shift rides along as a constant offset.
|
|
69
|
+
// Clamped into the viewport once, when its size is known: re-clamping would float it away.
|
|
69
70
|
// svelte-ignore state_referenced_locally
|
|
70
71
|
let at = $state({ x, y });
|
|
71
72
|
let shift = $state<{ x: number; y: number } | null>(null);
|
|
@@ -94,9 +95,8 @@
|
|
|
94
95
|
const left = $derived(at.x + (shift?.x ?? 0));
|
|
95
96
|
const top = $derived(at.y + (shift?.y ?? 0));
|
|
96
97
|
|
|
97
|
-
//
|
|
98
|
-
//
|
|
99
|
-
// mount-time landing every time a flyout opened, pulling focus straight back out of it.
|
|
98
|
+
// Focus starts on the first enabled item. Untracked, or opening a flyout would re-run this and
|
|
99
|
+
// pull focus back out of it.
|
|
100
100
|
$effect(() => {
|
|
101
101
|
if (menuEl) untrack(() => focusStop(0));
|
|
102
102
|
});
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
// ── Roving focus (ARIA menu pattern) ────────────────────────────────────
|
|
126
126
|
//
|
|
127
127
|
// Up/Down (and Tab, trapped) step every enabled item and alignment segment; Left/Right
|
|
128
|
-
// hop within the alignment trio. Enter
|
|
128
|
+
// hop within the alignment trio. Enter and Space fall through to the button's own activation.
|
|
129
129
|
|
|
130
130
|
function focusableStops(): HTMLElement[] {
|
|
131
131
|
if (!menuEl) return [];
|
|
@@ -256,6 +256,7 @@
|
|
|
256
256
|
class="md-menu table-action-menu"
|
|
257
257
|
role="menu"
|
|
258
258
|
aria-label={TABLE_ACTIONS}
|
|
259
|
+
{@attach menuPresence.track}
|
|
259
260
|
tabindex="-1"
|
|
260
261
|
style:left="{left}px"
|
|
261
262
|
style:top="{top}px"
|
|
@@ -289,6 +290,7 @@
|
|
|
289
290
|
role="menu"
|
|
290
291
|
aria-label={item.label}
|
|
291
292
|
{@attach keepFlyoutOnScreen}
|
|
293
|
+
{@attach menuPresence.track}
|
|
292
294
|
>
|
|
293
295
|
{#each item.items as sub, j (j)}
|
|
294
296
|
{#if sub.kind === 'action' || sub.kind === 'clipboard'}
|
|
@@ -344,9 +346,8 @@
|
|
|
344
346
|
{/snippet}
|
|
345
347
|
|
|
346
348
|
<style>
|
|
347
|
-
/* The
|
|
348
|
-
|
|
349
|
-
lifted like a hover. */
|
|
349
|
+
/* The panel and rows are the shared `.md-menu` family (editor.css); the alignment trio is
|
|
350
|
+
this menu's own. */
|
|
350
351
|
.table-action-menu-alignment {
|
|
351
352
|
display: flex;
|
|
352
353
|
gap: 2px;
|
|
@@ -358,7 +359,7 @@
|
|
|
358
359
|
.table-action-menu-group {
|
|
359
360
|
position: relative;
|
|
360
361
|
}
|
|
361
|
-
/*
|
|
362
|
+
/* A submenu: a second panel hung off the row's right edge. */
|
|
362
363
|
.table-action-menu-flyout {
|
|
363
364
|
position: absolute;
|
|
364
365
|
left: 100%;
|
|
@@ -376,7 +377,7 @@
|
|
|
376
377
|
border: 0;
|
|
377
378
|
border-radius: 5px;
|
|
378
379
|
background: transparent;
|
|
379
|
-
color: var(--color-ui-muted, #
|
|
380
|
+
color: var(--color-ui-muted, #93938d);
|
|
380
381
|
cursor: pointer;
|
|
381
382
|
}
|
|
382
383
|
.alignment-segment:hover,
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { type TableMenuItem, type ClipboardAction } from './table-menu-model';
|
|
2
2
|
import type { TableAxisAction } from '../../../action-contracts';
|
|
3
|
+
import type { MenuPresence } from '../../menu/menu-presence.svelte';
|
|
3
4
|
type $$ComponentProps = {
|
|
4
5
|
items: TableMenuItem[];
|
|
5
6
|
x: number;
|
|
6
7
|
y: number;
|
|
7
|
-
/** Where the
|
|
8
|
+
/** Where the point the menu opened on is now, re-read on scroll and resize. */
|
|
8
9
|
anchor?: () => {
|
|
9
10
|
x: number;
|
|
10
11
|
y: number;
|
|
@@ -14,6 +15,7 @@ type $$ComponentProps = {
|
|
|
14
15
|
onalign: (alignment: 'left' | 'center' | 'right') => void;
|
|
15
16
|
onclose: () => void;
|
|
16
17
|
onescape: () => void;
|
|
18
|
+
menuPresence: MenuPresence;
|
|
17
19
|
};
|
|
18
20
|
declare const TableActionMenu: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
19
21
|
type TableActionMenu = ReturnType<typeof TableActionMenu>;
|
|
@@ -1,50 +1,35 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { setContext, getContext, untrack, tick } from 'svelte';
|
|
3
|
-
import type {
|
|
4
|
-
BlockEditActions,
|
|
5
|
-
CellPosition,
|
|
6
|
-
ContainerEditActions,
|
|
7
|
-
FocusActions,
|
|
8
|
-
TableAxisAction,
|
|
9
|
-
TableContext
|
|
10
|
-
} from '../../../action-contracts';
|
|
3
|
+
import type { CellPosition, TableAxisAction, TableContext } from '../../../action-contracts';
|
|
11
4
|
import {
|
|
12
5
|
CURSOR_END,
|
|
13
6
|
CURSOR_START,
|
|
7
|
+
entryEdge,
|
|
14
8
|
type BlockComponent,
|
|
15
9
|
type StickyColumnDirection
|
|
16
10
|
} from '../../../block-component';
|
|
17
11
|
import type { NodeView } from '../../../core/node-views';
|
|
18
12
|
import {
|
|
19
|
-
BLOCK_EDIT_KEY,
|
|
20
|
-
CONTAINER_EDIT_KEY,
|
|
21
13
|
EDITOR_DOC_KEY,
|
|
22
|
-
EDITOR_POLICIES_KEY,
|
|
23
14
|
EDITOR_SERVICES_KEY,
|
|
24
|
-
FOCUS_KEY,
|
|
25
15
|
TABLE_CONTEXT_KEY,
|
|
26
16
|
type EditorDoc,
|
|
27
|
-
type EditorPolicies,
|
|
28
17
|
type EditorServices
|
|
29
18
|
} from '../../../editor-keys';
|
|
30
19
|
import { metadataOf } from '../../../core/nodes';
|
|
31
|
-
import { asEditorX } from '../../../cursor/coordinate-spaces';
|
|
20
|
+
import { asEditorX, docPathFrom } from '../../../cursor/coordinate-spaces';
|
|
21
|
+
import { observeResize } from '../../../cursor/observe-resize';
|
|
32
22
|
import { pathsEqual } from '../../../selection/path-math';
|
|
33
23
|
import { placeCaret } from '../../../selection/caret-doors';
|
|
34
24
|
import { columnNearestX } from './cell-x-mapping';
|
|
35
25
|
import { cellAtPoint, installCellDragListener, mountedRowEls, rowCellEls } from './cell-pointer';
|
|
36
26
|
import { tableCaretAtPoint } from './table-caret-at-point';
|
|
37
|
-
import { intraTableRect } from './cell-clipboard';
|
|
38
27
|
import { selectedCells } from './selected-cells';
|
|
39
|
-
import { createBlockListState } from '../../../reactivity/block-list-state.svelte';
|
|
40
28
|
import { useContainerWindowing } from '../../../reactivity/use-container-windowing.svelte';
|
|
41
29
|
import { sliceWindow } from '../../../reactivity/window-slice';
|
|
42
|
-
import {
|
|
43
|
-
import {
|
|
44
|
-
|
|
45
|
-
setNestedActionsContexts,
|
|
46
|
-
type NodeScope
|
|
47
|
-
} from '../../../editor-actions/nested/nested-actions';
|
|
30
|
+
import { useWindowFloor } from '../../../reactivity/use-window-floor.svelte';
|
|
31
|
+
import { componentAt, type ChildList } from '../../../reactivity/child-list';
|
|
32
|
+
import { createContainerActions } from '../../../editor-actions/nested/container-actions';
|
|
48
33
|
import { createTableMutationsContext } from '../../../editor-actions/table-context';
|
|
49
34
|
import TableRowBlock from './TableRowBlock.svelte';
|
|
50
35
|
import TableActionMenu from './TableActionMenu.svelte';
|
|
@@ -62,36 +47,41 @@
|
|
|
62
47
|
myPath: number[];
|
|
63
48
|
} = $props();
|
|
64
49
|
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
50
|
+
const {
|
|
51
|
+
state: rowsState,
|
|
52
|
+
parent: { focus: focusActions, containerEdit: parentContainerEdit }
|
|
53
|
+
} = createContainerActions({
|
|
54
|
+
getNode: () => node,
|
|
55
|
+
getIndex: () => index,
|
|
56
|
+
getPath: () => myPath,
|
|
57
|
+
childList: () => rowList
|
|
58
|
+
});
|
|
68
59
|
const {
|
|
69
60
|
controller,
|
|
70
|
-
|
|
61
|
+
// The table holds only the column write its exits need; every other caret memory call is
|
|
62
|
+
// the cell's, through the shared editable surface.
|
|
63
|
+
caretMemory: { captureColumn: captureExitColumn },
|
|
71
64
|
selection,
|
|
72
|
-
|
|
73
|
-
|
|
65
|
+
menuPresence,
|
|
66
|
+
caretLanding,
|
|
67
|
+
rangeCoverage
|
|
74
68
|
} = getContext<EditorServices>(EDITOR_SERVICES_KEY);
|
|
75
69
|
const {
|
|
76
70
|
editorRoot: getEditorRoot,
|
|
77
71
|
widthVersion: getWidthVersion,
|
|
78
72
|
lifetime: editorLifetime,
|
|
79
|
-
|
|
73
|
+
reading
|
|
80
74
|
} = getContext<EditorDoc>(EDITOR_DOC_KEY);
|
|
81
|
-
|
|
82
|
-
//
|
|
83
|
-
|
|
84
|
-
const readOnly = $derived(getPresentationMode() === 'reading');
|
|
75
|
+
// Every menu item changes the table, so reading mode refuses to open it and the
|
|
76
|
+
// browser's own context menu, with Copy, shows instead.
|
|
77
|
+
const readOnly = $derived(reading.mode() === 'reading');
|
|
85
78
|
|
|
86
79
|
const meta = $derived(metadataOf(node, 'table'));
|
|
87
80
|
const rowCount = $derived(node.children?.length ?? 0);
|
|
88
81
|
const columnCount = $derived(meta.columnCount);
|
|
89
82
|
|
|
90
|
-
// A column
|
|
91
|
-
//
|
|
92
|
-
// with it, so the measure epoch folds them in. The bytes, not the row's `childIds`: those are
|
|
93
|
-
// minted at the row's first mount, so a windowed-out header row would hold the epoch still
|
|
94
|
-
// across the very reorder it exists to catch.
|
|
83
|
+
// A column move changes neither the count nor the width, so the width floors below also key
|
|
84
|
+
// on the header row's cell bytes (not its ids, which an unmounted header row lacks).
|
|
95
85
|
const columnStructureToken = $derived(
|
|
96
86
|
// The grammar keeps a cell to one line, so a newline joiner cannot be confused for content.
|
|
97
87
|
(node.children?.[0]?.children ?? []).map((cell) => cell.raw).join('\n')
|
|
@@ -111,56 +101,31 @@
|
|
|
111
101
|
}
|
|
112
102
|
let tableEl: HTMLDivElement | undefined = $state();
|
|
113
103
|
|
|
114
|
-
const rowsState = createBlockListState(() => node);
|
|
115
|
-
|
|
116
|
-
const scope: NodeScope = {
|
|
117
|
-
get index() {
|
|
118
|
-
return index;
|
|
119
|
-
},
|
|
120
|
-
get node() {
|
|
121
|
-
return node;
|
|
122
|
-
},
|
|
123
|
-
get path() {
|
|
124
|
-
return myPath;
|
|
125
|
-
}
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
const bundle = createStandardNestedActions(rowsState, {
|
|
129
|
-
scope,
|
|
130
|
-
stickyColumn: editorStickyColumn,
|
|
131
|
-
grammar: registryView.grammar,
|
|
132
|
-
getPresentationMode,
|
|
133
|
-
linkRef,
|
|
134
|
-
parent: {
|
|
135
|
-
blockEdit: parentBlockEdit,
|
|
136
|
-
focus: focusActions,
|
|
137
|
-
containerEdit: parentContainerEdit
|
|
138
|
-
}
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
setNestedActionsContexts(bundle);
|
|
142
|
-
|
|
143
104
|
// ── Virtual rendering (row windowing) ───────────────────────────────
|
|
144
105
|
|
|
145
106
|
const windowing = useContainerWindowing({
|
|
146
|
-
getIndex: () => index,
|
|
147
107
|
getParentPath: () => myPath,
|
|
148
108
|
getChildren: () => node.children ?? [],
|
|
149
109
|
getChildIds: () => rowsState.innerBlockIds,
|
|
150
|
-
// The .table-block grid
|
|
151
|
-
getListEl: () => tableEl ?? null
|
|
152
|
-
// The table is itself a BlockHost block; match the leaf channel the parent measured
|
|
153
|
-
// for it, so the subtotal reported up doesn't fight that slot.
|
|
154
|
-
getOwnEl: () => tableEl?.closest('.block-host') ?? null,
|
|
155
|
-
provideLeafChannel: false
|
|
110
|
+
// The .table-block grid is the content origin: it holds the spacers and the rows.
|
|
111
|
+
getListEl: () => tableEl ?? null
|
|
156
112
|
});
|
|
157
113
|
|
|
158
114
|
let win = $derived(windowing.window);
|
|
115
|
+
useWindowFloor(
|
|
116
|
+
() => tableEl,
|
|
117
|
+
() => win
|
|
118
|
+
);
|
|
159
119
|
let bounds = $derived(sliceWindow((node.children ?? []).length, win));
|
|
160
120
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
121
|
+
const rowList: ChildList = {
|
|
122
|
+
count: () => rowCount,
|
|
123
|
+
refs: rowsState.refSlots,
|
|
124
|
+
windowing
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
// Each column holds the widest cell any mounted row has shown, so a column does not narrow
|
|
128
|
+
// as row windowing unmounts its widest cell. The floor only grows.
|
|
164
129
|
let columnMaxWidths = $state<number[]>([]);
|
|
165
130
|
|
|
166
131
|
const trackTemplate = $derived(
|
|
@@ -172,9 +137,8 @@
|
|
|
172
137
|
|
|
173
138
|
let measuredColumnEpoch = '';
|
|
174
139
|
|
|
175
|
-
//
|
|
176
|
-
//
|
|
177
|
-
// only bumps state on an increase, so the effect settles rather than spinning.
|
|
140
|
+
// A new measure token clears the stale maxima; otherwise the floors only grow and write state
|
|
141
|
+
// only on an increase, so the effect stops re-running.
|
|
178
142
|
$effect(() => {
|
|
179
143
|
void win;
|
|
180
144
|
const epoch = `${columnCount}:${getWidthVersion?.() ?? 0}:${columnStructureToken}`;
|
|
@@ -232,7 +196,7 @@
|
|
|
232
196
|
}
|
|
233
197
|
|
|
234
198
|
const mutations = createTableMutationsContext({
|
|
235
|
-
|
|
199
|
+
reading,
|
|
236
200
|
get node() {
|
|
237
201
|
return node;
|
|
238
202
|
},
|
|
@@ -246,13 +210,15 @@
|
|
|
246
210
|
return focusedCell;
|
|
247
211
|
},
|
|
248
212
|
parentContainerEdit,
|
|
249
|
-
controller
|
|
250
|
-
focusCell,
|
|
251
|
-
announceReorder
|
|
213
|
+
controller
|
|
252
214
|
});
|
|
253
215
|
|
|
254
216
|
const ctx: TableContext = {
|
|
255
|
-
focusCell,
|
|
217
|
+
focusCell(rowIdx, colIdx, position) {
|
|
218
|
+
focusCell(rowIdx, colIdx, position);
|
|
219
|
+
focusActions.followArrival([...myPath, rowIdx, colIdx]);
|
|
220
|
+
},
|
|
221
|
+
revealColumn,
|
|
256
222
|
getStickyColumn() {
|
|
257
223
|
return internalStickyColumn;
|
|
258
224
|
},
|
|
@@ -263,14 +229,14 @@
|
|
|
263
229
|
internalStickyColumn = null;
|
|
264
230
|
},
|
|
265
231
|
exitUpward(stickyX) {
|
|
266
|
-
|
|
232
|
+
captureExitColumn(asEditorX(stickyX));
|
|
267
233
|
internalStickyColumn = null;
|
|
268
234
|
focusActions.moveFocus(myPath[myPath.length - 1] - 1, {
|
|
269
235
|
stickyColumnFrom: 'below'
|
|
270
236
|
});
|
|
271
237
|
},
|
|
272
238
|
exitDownward(stickyX) {
|
|
273
|
-
|
|
239
|
+
captureExitColumn(asEditorX(stickyX));
|
|
274
240
|
internalStickyColumn = null;
|
|
275
241
|
focusActions.moveFocus(myPath[myPath.length - 1] + 1, {
|
|
276
242
|
stickyColumnFrom: 'above'
|
|
@@ -306,9 +272,8 @@
|
|
|
306
272
|
// A live rectangle suppresses the cell-local selection, so the menu reads it
|
|
307
273
|
// separately to keep Cut/Copy enabled.
|
|
308
274
|
const rectActive = $derived.by(() => {
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
return rect !== null && pathsEqual(rect.tablePath, myPath);
|
|
275
|
+
const grid = rangeCoverage()?.grid;
|
|
276
|
+
return !!grid && pathsEqual(grid.path, myPath);
|
|
312
277
|
});
|
|
313
278
|
|
|
314
279
|
const menuItems = $derived(
|
|
@@ -320,10 +285,8 @@
|
|
|
320
285
|
: []
|
|
321
286
|
);
|
|
322
287
|
|
|
323
|
-
//
|
|
324
|
-
//
|
|
325
|
-
// the last column / row. Geometry is the table's own box, measured after layout settles and
|
|
326
|
-
// again whenever the table resizes.
|
|
288
|
+
// The add-column and add-row strips show on hover, and stay shown while the caret is in the
|
|
289
|
+
// last column or row.
|
|
327
290
|
const addAffordance = $derived({
|
|
328
291
|
column: !readOnly && caretCell?.colIdx === columnCount - 1,
|
|
329
292
|
row: !readOnly && caretCell?.rowIdx === rowCount - 1
|
|
@@ -346,9 +309,7 @@
|
|
|
346
309
|
};
|
|
347
310
|
};
|
|
348
311
|
void tick().then(measure);
|
|
349
|
-
|
|
350
|
-
observer?.observe(el);
|
|
351
|
-
return () => observer?.disconnect();
|
|
312
|
+
return observeResize(el, measure);
|
|
352
313
|
});
|
|
353
314
|
|
|
354
315
|
// The open point as an offset into an element's box, so a scroll re-reads it where the
|
|
@@ -364,7 +325,7 @@
|
|
|
364
325
|
}
|
|
365
326
|
|
|
366
327
|
function cellRefAt(rowIdx: number, colIdx: number): BlockComponent | null {
|
|
367
|
-
return
|
|
328
|
+
return componentAt(rowList, [rowIdx, colIdx]);
|
|
368
329
|
}
|
|
369
330
|
|
|
370
331
|
// Capture the cell's selection now, before a menu-item click moves focus off it, so
|
|
@@ -376,8 +337,8 @@
|
|
|
376
337
|
menu = { target: { rowIdx, colIdx }, x, y, clipboardSel, anchor };
|
|
377
338
|
}
|
|
378
339
|
|
|
379
|
-
// preventDefault only over a cell, so a right-click in the table's padding gaps keeps
|
|
380
|
-
// the
|
|
340
|
+
// `preventDefault` only over a cell, so a right-click in the table's padding gaps keeps
|
|
341
|
+
// the browser's menu.
|
|
381
342
|
function openCellMenu(e: MouseEvent): void {
|
|
382
343
|
if (readOnly || !tableEl) return;
|
|
383
344
|
const cell = cellAtPoint(e.clientX, e.clientY, tableEl);
|
|
@@ -387,7 +348,7 @@
|
|
|
387
348
|
}
|
|
388
349
|
|
|
389
350
|
// Keyboard equivalent of the cell right-click, bubbling up from the cell;
|
|
390
|
-
// preventDefault suppresses the
|
|
351
|
+
// `preventDefault` suppresses the browser's context menu the key would trigger.
|
|
391
352
|
function onTableKeyDown(e: KeyboardEvent): void {
|
|
392
353
|
const opensMenu = e.key === 'ContextMenu' || (e.key === 'F10' && e.shiftKey);
|
|
393
354
|
if (readOnly || !opensMenu || !focusedCell) return;
|
|
@@ -397,19 +358,20 @@
|
|
|
397
358
|
openMenuAtCell(rowIdx, colIdx, rect ? rect.left : 0, rect ? rect.bottom : 0);
|
|
398
359
|
}
|
|
399
360
|
|
|
400
|
-
//
|
|
401
|
-
//
|
|
361
|
+
// Through the caret landing, which mounts the row: it can scroll out of the row window while
|
|
362
|
+
// the menu is open.
|
|
402
363
|
async function closeMenuRestoringFocus(): Promise<void> {
|
|
403
364
|
const target = menu?.target;
|
|
404
|
-
const offset = menu?.clipboardSel?.start ??
|
|
365
|
+
const offset = menu?.clipboardSel?.start ?? CURSOR_START;
|
|
405
366
|
menu = null;
|
|
406
367
|
if (!target) return;
|
|
407
368
|
await tick();
|
|
408
|
-
|
|
369
|
+
const path = docPathFrom([...myPath, target.rowIdx, target.colIdx]);
|
|
370
|
+
await caretLanding.land({ path, offset }, { reveal: 'mount' });
|
|
409
371
|
}
|
|
410
372
|
|
|
411
|
-
// A right-click
|
|
412
|
-
// cell and lands in column 0
|
|
373
|
+
// A right-click places no caret, so without this an action's follow-the-focus reads no
|
|
374
|
+
// focused cell and lands in column 0, or row 0, of what it moved.
|
|
413
375
|
function seatMenuCaret(): void {
|
|
414
376
|
if (!menu) return;
|
|
415
377
|
const { rowIdx, colIdx } = menu.target;
|
|
@@ -439,7 +401,7 @@
|
|
|
439
401
|
menu = null;
|
|
440
402
|
}
|
|
441
403
|
|
|
442
|
-
// ──
|
|
404
|
+
// ── Sticky column resets when focus leaves the table ───────────────────
|
|
443
405
|
|
|
444
406
|
$effect(() => {
|
|
445
407
|
if (!tableEl) return;
|
|
@@ -459,29 +421,25 @@
|
|
|
459
421
|
export const editable = true;
|
|
460
422
|
export const focusable = true;
|
|
461
423
|
|
|
462
|
-
//
|
|
463
|
-
//
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
} {
|
|
470
|
-
return offset === 0 || offset === CURSOR_START
|
|
471
|
-
? { rowIdx: 0, colIdx: 0, position: 'start' }
|
|
472
|
-
: { rowIdx: rowCount - 1, colIdx: columnCount - 1, position: 'end' };
|
|
424
|
+
// One integer cannot address a cell, so an entry offset lands in the first or the last cell; a
|
|
425
|
+
// caller that names a cell uses `focusByPath`.
|
|
426
|
+
function entryCell(offset: number): { rowIdx: number; colIdx: number; at: number } {
|
|
427
|
+
const edge = entryEdge(offset);
|
|
428
|
+
return edge.child === 'first'
|
|
429
|
+
? { rowIdx: 0, colIdx: 0, at: edge.offset }
|
|
430
|
+
: { rowIdx: rowCount - 1, colIdx: columnCount - 1, at: edge.offset };
|
|
473
431
|
}
|
|
474
432
|
|
|
475
433
|
export const focus = placeCaret(selection, (offset: number) => {
|
|
476
434
|
if (rowCount === 0) return;
|
|
477
|
-
const { rowIdx, colIdx,
|
|
478
|
-
focusCell(rowIdx, colIdx,
|
|
435
|
+
const { rowIdx, colIdx, at } = entryCell(offset);
|
|
436
|
+
focusCell(rowIdx, colIdx, at);
|
|
479
437
|
});
|
|
480
438
|
|
|
481
439
|
export function parkCaret(offset: number): void {
|
|
482
440
|
if (rowCount === 0) return;
|
|
483
|
-
const { rowIdx, colIdx,
|
|
484
|
-
cellRefAt(rowIdx, colIdx)?.parkCaret?.(
|
|
441
|
+
const { rowIdx, colIdx, at } = entryCell(offset);
|
|
442
|
+
cellRefAt(rowIdx, colIdx)?.parkCaret?.(at);
|
|
485
443
|
}
|
|
486
444
|
|
|
487
445
|
export function focusAtColumn(x: number, from: StickyColumnDirection): void {
|
|
@@ -497,33 +455,11 @@
|
|
|
497
455
|
rowRefAt(rowIdx)?.focusByPath?.([colIdx, ...rest], offset);
|
|
498
456
|
}
|
|
499
457
|
|
|
500
|
-
export function
|
|
501
|
-
|
|
502
|
-
const [rowIdx, ...rest] = path;
|
|
503
|
-
const rowRef = rowsState.innerBlockRefs[rowIdx];
|
|
504
|
-
if (!rowRef) return null;
|
|
505
|
-
if (rest.length === 0) return rowRef;
|
|
506
|
-
return rowRef.getBlockComponentByPath?.(rest) ?? null;
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
export async function revealByPath(path: number[]): Promise<BlockComponent | null> {
|
|
510
|
-
if (path.length === 0) return null;
|
|
511
|
-
const [rowIdx, ...rest] = path;
|
|
512
|
-
await revealChildOrWait(rowIdx, {
|
|
513
|
-
slots: rowsState.refSlots,
|
|
514
|
-
childCount: rowCount,
|
|
515
|
-
revealChild: windowing.revealChild,
|
|
516
|
-
isInWindow: windowing.isInWindow
|
|
517
|
-
});
|
|
518
|
-
const rowRef = rowsState.innerBlockRefs[rowIdx];
|
|
519
|
-
if (!rowRef) return null;
|
|
520
|
-
if (rest.length === 0) return rowRef;
|
|
521
|
-
return rowRef.revealByPath
|
|
522
|
-
? await rowRef.revealByPath(rest)
|
|
523
|
-
: (rowRef.getBlockComponentByPath?.(rest) ?? null);
|
|
458
|
+
export function childList(): ChildList {
|
|
459
|
+
return rowList;
|
|
524
460
|
}
|
|
525
461
|
|
|
526
|
-
// See `focus()
|
|
462
|
+
// See `focus()`: two-dimensional, so there is no single offset; `getCursorPosition` has it.
|
|
527
463
|
export function getCursorOffset(): number | null {
|
|
528
464
|
return null;
|
|
529
465
|
}
|
|
@@ -540,7 +476,7 @@
|
|
|
540
476
|
export function measurePartialRects(start: number, end: number): DOMRect[] {
|
|
541
477
|
if (!tableEl || rowCount === 0) return [];
|
|
542
478
|
const cells = selectedCells({
|
|
543
|
-
|
|
479
|
+
grid: rangeCoverage()?.grid ?? null,
|
|
544
480
|
myPath,
|
|
545
481
|
start,
|
|
546
482
|
end,
|
|
@@ -565,9 +501,8 @@
|
|
|
565
501
|
return { start: win.start, end: win.end };
|
|
566
502
|
}
|
|
567
503
|
|
|
568
|
-
// A press beside the table
|
|
569
|
-
//
|
|
570
|
-
// that cell, and leaves the table as a cross-block range the same way.
|
|
504
|
+
// A press beside the table starts the cell drag from the nearest cell, so a drag from the
|
|
505
|
+
// margin grows the same rectangle a drag from that cell would.
|
|
571
506
|
export function startDragAtPoint(clientX: number, clientY: number, e: PointerEvent): boolean {
|
|
572
507
|
if (!tableEl || readOnly) return false;
|
|
573
508
|
const host = tableEl.parentElement;
|
|
@@ -598,8 +533,7 @@
|
|
|
598
533
|
parkCaret,
|
|
599
534
|
focusAtColumn,
|
|
600
535
|
focusByPath,
|
|
601
|
-
|
|
602
|
-
revealByPath,
|
|
536
|
+
childList,
|
|
603
537
|
getCursorOffset,
|
|
604
538
|
getCursorPosition,
|
|
605
539
|
measurePartialRects,
|
|
@@ -621,8 +555,7 @@
|
|
|
621
555
|
}
|
|
622
556
|
</script>
|
|
623
557
|
|
|
624
|
-
<!-- Delegated listeners for the cell grid
|
|
625
|
-
table-vs-grid role question is the 1.1 shell a11y decision. -->
|
|
558
|
+
<!-- Delegated listeners for the cell grid, since the cells are what the user interacts with. -->
|
|
626
559
|
<!-- svelte-ignore a11y_no_noninteractive_element_interactions -->
|
|
627
560
|
<div
|
|
628
561
|
bind:this={tableEl}
|
|
@@ -632,12 +565,12 @@
|
|
|
632
565
|
oncontextmenu={openCellMenu}
|
|
633
566
|
onkeydown={onTableKeyDown}
|
|
634
567
|
>
|
|
635
|
-
<!--
|
|
636
|
-
|
|
568
|
+
<!-- No whitespace between the blocks: a stray text node joins the raw-offset traversal
|
|
569
|
+
and shifts a remembered caret (cursor/widget-offset.ts). -->
|
|
637
570
|
{#if win.active}
|
|
638
571
|
<div class="vr-spacer" style="height: {win.topSpacerPx}px"></div>
|
|
639
572
|
{/if}{#each (node.children ?? []).slice(bounds.start, bounds.end) as rowNode, localIndex (rowsState.innerBlockIds[bounds.start + localIndex])}
|
|
640
|
-
<!--
|
|
573
|
+
<!-- `index`, `myPath` and the key all carry the absolute row index
|
|
641
574
|
(bounds.start + localIndex), never the local loop index. -->
|
|
642
575
|
{@const rowIdx = bounds.start + localIndex}
|
|
643
576
|
<TableRowBlock
|
|
@@ -663,6 +596,7 @@
|
|
|
663
596
|
anchor={menu.anchor}
|
|
664
597
|
onclose={() => (menu = null)}
|
|
665
598
|
onescape={closeMenuRestoringFocus}
|
|
599
|
+
{menuPresence}
|
|
666
600
|
/>
|
|
667
601
|
{/if}
|
|
668
602
|
</div>
|
|
@@ -702,19 +636,20 @@
|
|
|
702
636
|
<style>
|
|
703
637
|
.table-block {
|
|
704
638
|
display: grid;
|
|
639
|
+
/* Rows keep their own heights while the box is held at its table height (`useWindowFloor`);
|
|
640
|
+
a row stretched into that hold would measure it back as its own height. */
|
|
641
|
+
align-content: start;
|
|
705
642
|
width: max-content;
|
|
706
643
|
max-width: 100%;
|
|
707
644
|
overflow-x: auto;
|
|
708
645
|
scrollbar-width: thin;
|
|
709
646
|
scrollbar-color: var(--color-border, #3e3e3b) transparent;
|
|
710
|
-
/* The two sides the cells do not draw
|
|
647
|
+
/* The two sides the cells do not draw; see `.table-cell`. */
|
|
711
648
|
border-top: 1px solid var(--color-border, #3e3e3b);
|
|
712
649
|
border-left: 1px solid var(--color-border, #3e3e3b);
|
|
713
650
|
}
|
|
714
|
-
/* The edge strips sit
|
|
715
|
-
|
|
716
|
-
reveal on hover; `.table-add-pinned` is the caret's claim. The mousedown is swallowed so
|
|
717
|
-
the cell keeps the caret that pinned them. */
|
|
651
|
+
/* The edge strips sit outside the grid's scroller, starting at the table's edge so they never
|
|
652
|
+
cover a cell; `.table-add-pinned` means the caret holds them open. */
|
|
718
653
|
.table-add-zone {
|
|
719
654
|
position: absolute;
|
|
720
655
|
z-index: 3;
|
|
@@ -739,7 +674,7 @@
|
|
|
739
674
|
border: 1px solid var(--color-border, #3e3e3b);
|
|
740
675
|
border-radius: 3px;
|
|
741
676
|
background: var(--color-bg-secondary, rgba(128, 128, 128, 0.12));
|
|
742
|
-
color: var(--color-ui-muted, #
|
|
677
|
+
color: var(--color-ui-muted, #93938d);
|
|
743
678
|
cursor: pointer;
|
|
744
679
|
opacity: 0;
|
|
745
680
|
transition: opacity 120ms ease-out;
|