@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,13 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { readBlocks } from '../core/parser';
|
|
2
2
|
import { cloneNode } from '../tree-operations/clone';
|
|
3
3
|
import { spliceMany } from '../tree-operations/splice-many';
|
|
4
4
|
import { getBlockKindDescriptor } from '../schema/block-kind-descriptor';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { installOwnRaw, normalizeReplacementTrivia } from '../tree-operations/node-primitives';
|
|
6
|
+
import { legalizeWrite } from '../tree-operations/content-write';
|
|
7
|
+
import { rebuildContainerRaw } from '../schema/container-raw';
|
|
8
|
+
import { rebuildUnsharedChain } from '../tree-operations/chain-rebuild';
|
|
9
|
+
import { createSharingState } from '../tree-operations/sharing';
|
|
7
10
|
import { replacePreservingFirst, stampStructuralChange } from '../tree-operations/structural-change';
|
|
8
11
|
import { applyRangesToText } from '../search/replace';
|
|
9
12
|
import { toEditEvent } from '../editor-events';
|
|
10
13
|
import { docPathFrom } from '../cursor/coordinate-spaces';
|
|
14
|
+
import { documentLineEnding } from '../core/lines';
|
|
11
15
|
function descend(root, rel) {
|
|
12
16
|
let node = root;
|
|
13
17
|
for (const i of rel)
|
|
@@ -37,29 +41,38 @@ export function createSearchReplace(deps, controller) {
|
|
|
37
41
|
const leaf = descend(child, rel);
|
|
38
42
|
if (!leaf)
|
|
39
43
|
continue;
|
|
40
|
-
// Reparsing a private clone bypasses `updateNodeContent`, so
|
|
41
|
-
//
|
|
44
|
+
// Reparsing a private clone bypasses `updateNodeContent`, so the write rule it runs (the
|
|
45
|
+
// kind's own, then the container's) is applied here.
|
|
42
46
|
const owner = rel.length > 0 ? descend(child, rel.slice(0, -1)) : null;
|
|
43
|
-
const
|
|
44
|
-
|
|
47
|
+
const target = owner?.children
|
|
48
|
+
? { children: owner.children, owner, lineEnding: documentLineEnding(deps.doc) }
|
|
49
|
+
: deps.doc;
|
|
50
|
+
const index = owner ? rel[rel.length - 1] : topIndex;
|
|
51
|
+
const substituted = applyRangesToText(leaf.raw, ranges, template);
|
|
52
|
+
installOwnRaw(leaf, legalizeWrite(target, index, substituted, 'literal').text, deps.reading.grammar);
|
|
45
53
|
}
|
|
46
|
-
//
|
|
47
|
-
//
|
|
54
|
+
// Before the reparse from `child.raw`, a nested leaf's edit is written up into the clone's
|
|
55
|
+
// container raws by the same rebuild typing uses; a top-level leaf needs none.
|
|
56
|
+
const cloneSharing = createSharingState();
|
|
48
57
|
for (const ranges of byLeaf.values()) {
|
|
49
58
|
const rel = ranges[0].path.slice(1);
|
|
50
|
-
if (rel.length
|
|
51
|
-
|
|
59
|
+
if (rel.length === 0)
|
|
60
|
+
continue;
|
|
61
|
+
const chain = [];
|
|
62
|
+
for (let depth = 1; depth < rel.length; depth++)
|
|
63
|
+
chain.push(descend(child, rel.slice(0, depth)));
|
|
64
|
+
rebuildUnsharedChain(child, chain, cloneSharing, null, deps.reading.grammar);
|
|
65
|
+
rebuildContainerRaw(child, deps.reading.grammar);
|
|
52
66
|
}
|
|
53
|
-
const newNodes =
|
|
67
|
+
const newNodes = readBlocks(child.raw, {
|
|
68
|
+
grammar: deps.reading.grammar,
|
|
69
|
+
scope: 'fragment'
|
|
70
|
+
}).children;
|
|
54
71
|
// leadingTrivia is positional and lives off `raw`, so parsing `child.raw` alone drops it.
|
|
55
72
|
return normalizeReplacementTrivia(child, newNodes);
|
|
56
73
|
}
|
|
57
|
-
/**
|
|
58
|
-
*
|
|
59
|
-
* path reparses rather than writing in place — so the kind re-derives its own metadata from
|
|
60
|
-
* the substituted bytes and nothing goes stale. One with children is excluded: its raw is a
|
|
61
|
-
* rebuild of theirs, and substituting into it would drift (G1.12/G1.13).
|
|
62
|
-
*/
|
|
74
|
+
/** A childless container matched as a leaf is reparsed, so its metadata follows the new bytes;
|
|
75
|
+
* one with children is excluded, as its raw is rebuilt from theirs. */
|
|
63
76
|
function isReplaceable(match) {
|
|
64
77
|
const top = deps.doc.children[match.path[0]];
|
|
65
78
|
const node = top ? descend(top, match.path.slice(1)) : null;
|
|
@@ -67,15 +80,11 @@ export function createSearchReplace(deps, controller) {
|
|
|
67
80
|
return false;
|
|
68
81
|
return !getBlockKindDescriptor(node.kind).isContainer || (node.children?.length ?? 0) === 0;
|
|
69
82
|
}
|
|
70
|
-
/**
|
|
71
|
-
*
|
|
72
|
-
* line comes back as a different kind entirely — a diagram silently becoming a plain code
|
|
73
|
-
* block. Accepted for leaves, declined here.
|
|
74
|
-
*/
|
|
83
|
+
/** A substitution that breaks a container's opener line reparses as another kind (a diagram
|
|
84
|
+
* becoming a code block). Leaves accept that; a container's replace is declined. */
|
|
75
85
|
function keepsItsKind(before, after) {
|
|
76
|
-
// Only
|
|
77
|
-
//
|
|
78
|
-
// structural replace every leaf already gets.
|
|
86
|
+
// Only a childless container had its own raw substituted; in one with children a child
|
|
87
|
+
// was edited, and a kind change there is the ordinary structural replace.
|
|
79
88
|
const childless = (before.children?.length ?? 0) === 0;
|
|
80
89
|
if (!childless || !getBlockKindDescriptor(before.kind).isContainer)
|
|
81
90
|
return true;
|
|
@@ -88,52 +97,47 @@ export function createSearchReplace(deps, controller) {
|
|
|
88
97
|
if (indices.length === 0)
|
|
89
98
|
return 0;
|
|
90
99
|
const seed = groups.get(indices[indices.length - 1])[0];
|
|
91
|
-
// One pushed snapshot + per-subtree skip-commits = one undo entry, so a throw
|
|
92
|
-
// mid-batch still recovers in one Ctrl+Z. Intentional.
|
|
93
|
-
// The push happens outside the commit ceremony, so its rollback register is ours too: a
|
|
94
|
-
// batch whose FIRST subtree throws applies nothing and must leave no entry behind, or the
|
|
95
|
-
// next Ctrl+Z spends itself restoring the document to where it already is.
|
|
96
|
-
const stacksBeforePush = deps.undoManager.getStacks();
|
|
97
|
-
controller.pushUndoSnapshotPath(seed.path, seed.start);
|
|
98
100
|
let newBlockCount = 0;
|
|
99
101
|
let applied = 0;
|
|
100
|
-
for
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
newNodes
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
error,
|
|
112
|
-
|
|
102
|
+
// One entry for the whole batch, and none when it applies nothing.
|
|
103
|
+
await controller.undoStep({ path: docPathFrom(seed.path), offset: seed.start }, async () => {
|
|
104
|
+
for (const topIndex of indices) {
|
|
105
|
+
const group = groups.get(topIndex);
|
|
106
|
+
let newNodes;
|
|
107
|
+
try {
|
|
108
|
+
newNodes = buildSubtree(topIndex, group, template);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
// buildSubtree calls the kind's `rebuildRaw`, plugin code running outside any
|
|
112
|
+
// commit, so nothing else would report this error.
|
|
113
|
+
deps.events.emit('error', {
|
|
114
|
+
origin: 'commit',
|
|
115
|
+
error,
|
|
116
|
+
context: { op: 'replaceBlock', path: docPathFrom([topIndex]) }
|
|
117
|
+
});
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
if (!keepsItsKind(deps.doc.children[topIndex], newNodes))
|
|
121
|
+
continue;
|
|
122
|
+
const wrote = await controller.commitStructural({
|
|
123
|
+
snapshot: { path: docPathFrom([topIndex]), offset: 0 },
|
|
124
|
+
mutate: (children) => {
|
|
125
|
+
spliceMany(children, topIndex, 1, newNodes);
|
|
126
|
+
const change = replacePreservingFirst(topIndex, 1, newNodes.length);
|
|
127
|
+
stampStructuralChange(children, change, deps.sharing);
|
|
128
|
+
return change;
|
|
129
|
+
}
|
|
130
|
+
// op omitted: no per-commit edit event; one is emitted after the batch
|
|
113
131
|
});
|
|
114
|
-
|
|
132
|
+
if (!wrote)
|
|
133
|
+
continue;
|
|
134
|
+
newBlockCount += newNodes.length;
|
|
135
|
+
applied += group.length;
|
|
115
136
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
newBlockCount += newNodes.length;
|
|
119
|
-
applied += group.length;
|
|
120
|
-
await controller.commitStructural({
|
|
121
|
-
snapshot: 'skip', // batch shares the single snapshot pushed above
|
|
122
|
-
mutate: (children) => {
|
|
123
|
-
spliceMany(children, topIndex, 1, newNodes);
|
|
124
|
-
const change = replacePreservingFirst(topIndex, 1, newNodes.length);
|
|
125
|
-
stampStructuralChange(children, change, deps.sharing);
|
|
126
|
-
return change;
|
|
127
|
-
}
|
|
128
|
-
// op omitted → no per-commit edit event; one is emitted after the batch
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
if (applied === 0) {
|
|
132
|
-
deps.undoManager.restoreStacks(stacksBeforePush);
|
|
137
|
+
});
|
|
138
|
+
if (applied === 0)
|
|
133
139
|
return 0;
|
|
134
|
-
|
|
135
|
-
// A single-subtree replace has one operated node, so the aggregate event carries
|
|
136
|
-
// its doc-absolute path (editor.md §12); a multi-subtree batch genuinely has none.
|
|
140
|
+
// A single-subtree replace names its block's path in the event; a multi-subtree batch has none.
|
|
137
141
|
const eventPath = indices.length === 1 ? docPathFrom([indices[0]]) : [];
|
|
138
142
|
deps.events.emit('edit', toEditEvent({ kind: 'replaceBlock', detail: { count: newBlockCount } }, eventPath, Date.now()));
|
|
139
143
|
return applied;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Builds the value every `updateBlockContent` returns: the write's promise, carrying its caret. */
|
|
2
|
+
import type { AdmittedContentWrite, ContentWrite } from '../action-contracts';
|
|
3
|
+
/** An admitted write. `storedOffset` defaults to the identity, right for a write no rule rewrites;
|
|
4
|
+
* `keepsCaret` is false when the write places the caret itself. */
|
|
5
|
+
export declare function withStoredCaret(done: Promise<boolean>, caret: number, storedOffset?: (offset: number) => number, keepsCaret?: boolean): Promise<boolean> & AdmittedContentWrite;
|
|
6
|
+
/** A write the reading-mode check refused, or one with no block to write: no bytes, no caret. */
|
|
7
|
+
export declare function refusedWrite(): ContentWrite;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Builds the value every `updateBlockContent` returns: the write's promise, carrying its caret. */
|
|
2
|
+
/** An admitted write. `storedOffset` defaults to the identity, right for a write no rule rewrites;
|
|
3
|
+
* `keepsCaret` is false when the write places the caret itself. */
|
|
4
|
+
export function withStoredCaret(done, caret, storedOffset = (offset) => offset, keepsCaret = true) {
|
|
5
|
+
return Object.assign(done, { admitted: true, caret, storedOffset, keepsCaret });
|
|
6
|
+
}
|
|
7
|
+
/** A write the reading-mode check refused, or one with no block to write: no bytes, no caret. */
|
|
8
|
+
export function refusedWrite() {
|
|
9
|
+
return Object.assign(Promise.resolve(false), { admitted: false });
|
|
10
|
+
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The TableContext
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* The TableContext edits. The component keeps the sticky column, the focused cell, DOM
|
|
3
|
+
* helpers and BlockComponent; only structural edits live here, each handing its commit the cell
|
|
4
|
+
* the caret goes to.
|
|
5
5
|
*/
|
|
6
|
-
import type {
|
|
7
|
-
import type {
|
|
6
|
+
import type { ContainerEditActions, TableContext } from '../action-contracts';
|
|
7
|
+
import type { Reading } from '../schema/reading';
|
|
8
8
|
import type { NodeView } from '../core/node-views';
|
|
9
9
|
import type { UndoController } from './deps';
|
|
10
10
|
import type { BlockListState } from '../reactivity/block-list-state.svelte';
|
|
11
11
|
/**
|
|
12
|
-
* The header (row 0)
|
|
13
|
-
*
|
|
12
|
+
* The header (row 0) stays where it is. Null skips the commit, so a keypress at the edge
|
|
13
|
+
* pushes no undo entry.
|
|
14
14
|
*/
|
|
15
15
|
export declare function tableRowReorderTarget(rowIdx: number, dir: -1 | 1, rowCount: number): number | null;
|
|
16
16
|
/**
|
|
@@ -28,10 +28,8 @@ export interface TableMutationsContextDeps {
|
|
|
28
28
|
} | null;
|
|
29
29
|
parentContainerEdit: ContainerEditActions;
|
|
30
30
|
controller: UndoController;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
/** The instance grammar the cell byte-write door threads (absent: the global one). */
|
|
34
|
-
grammar?: GrammarView;
|
|
31
|
+
/** The editor's reading, whose grammar the cell writes use. */
|
|
32
|
+
reading: Reading;
|
|
35
33
|
}
|
|
36
34
|
export type TableMutationsContext = Pick<TableContext, 'insertRowAbove' | 'insertRowBelow' | 'insertColumnLeft' | 'insertColumnRight' | 'deleteRow' | 'deleteColumn' | 'reorderRowTo' | 'moveRowUp' | 'moveRowDown' | 'reorderColumnTo' | 'moveColumnLeft' | 'moveColumnRight' | 'cycleAlignment' | 'setColumnAlignment' | 'pasteGrid'>;
|
|
37
35
|
export declare function createTableMutationsContext(deps: TableMutationsContextDeps): TableMutationsContext;
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The TableContext
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* The TableContext edits. The component keeps the sticky column, the focused cell, DOM
|
|
3
|
+
* helpers and BlockComponent; only structural edits live here, each handing its commit the cell
|
|
4
|
+
* the caret goes to.
|
|
5
5
|
*/
|
|
6
|
+
import { CURSOR_END, CURSOR_START } from '../block-component';
|
|
6
7
|
import { metadataOf } from '../core/nodes';
|
|
7
8
|
import { extendDocPath, docPathFrom } from '../cursor/coordinate-spaces';
|
|
8
9
|
import { getStateForNode } from '../reactivity/state-registry';
|
|
9
10
|
import { assertInvariant } from '../assert';
|
|
10
11
|
import { columnAligned, COLUMN_ALIGNMENT_CLEARED, DELETED_COLUMN, DELETED_ROW, INSERTED_COLUMN, INSERTED_ROW, movedColumnToPosition, movedRowToPosition } from '../a11y-strings';
|
|
11
12
|
import { ensureUnsharedChildren, ensureUnsharedSubtree } from '../tree-operations/unshare';
|
|
12
|
-
import { rebuildTableRowRaw, rebuildTableRaw } from '../schema/container-rebuilders';
|
|
13
13
|
import { writeOwnRaw } from '../tree-operations/node-primitives';
|
|
14
14
|
import { reorderChildren } from '../tree-operations/reorder';
|
|
15
15
|
import { insertEmptyRow, insertEmptyColumn, deleteRow as mutDeleteRow, deleteColumn as mutDeleteColumn, moveColumn as mutMoveColumn, cycleAlignment as mutCycleAlignment, setAlignment as mutSetAlignment, canDeleteRow, canDeleteColumn } from '../tree-operations/table-mutations';
|
|
16
16
|
/**
|
|
17
|
-
* The header (row 0)
|
|
18
|
-
*
|
|
17
|
+
* The header (row 0) stays where it is. Null skips the commit, so a keypress at the edge
|
|
18
|
+
* pushes no undo entry.
|
|
19
19
|
*/
|
|
20
20
|
export function tableRowReorderTarget(rowIdx, dir, rowCount) {
|
|
21
21
|
if (rowIdx === 0)
|
|
@@ -36,8 +36,13 @@ export function tableColumnReorderTarget(colIdx, dir, colCount) {
|
|
|
36
36
|
return to;
|
|
37
37
|
}
|
|
38
38
|
export function createTableMutationsContext(deps) {
|
|
39
|
+
/** The cell at `rowIdx`, `colIdx`, addressed by path so the landing can mount a windowed row. */
|
|
40
|
+
const cellAt = (rowIdx, colIdx, offset = CURSOR_START) => ({
|
|
41
|
+
path: docPathFrom([...deps.myPath, rowIdx, colIdx]),
|
|
42
|
+
offset
|
|
43
|
+
});
|
|
39
44
|
async function insertRow(rowIdx, side) {
|
|
40
|
-
const { node, myPath, rowsState, parentContainerEdit
|
|
45
|
+
const { node, myPath, rowsState, parentContainerEdit } = deps;
|
|
41
46
|
const insertAt = side === 'above' ? rowIdx : rowIdx + 1;
|
|
42
47
|
await parentContainerEdit.commitContainer({
|
|
43
48
|
containerNode: node,
|
|
@@ -47,7 +52,6 @@ export function createTableMutationsContext(deps) {
|
|
|
47
52
|
mutate: (scope) => {
|
|
48
53
|
insertEmptyRow(scope.node, rowIdx, side);
|
|
49
54
|
scope.sharing.stamp(scope.children[insertAt]);
|
|
50
|
-
rebuildTableRowRaw(scope.children[insertAt]);
|
|
51
55
|
return { op: 'insert', at: insertAt, count: 1 };
|
|
52
56
|
},
|
|
53
57
|
op: {
|
|
@@ -55,17 +59,12 @@ export function createTableMutationsContext(deps) {
|
|
|
55
59
|
detail: { rowIdx, side },
|
|
56
60
|
eventPath: extendDocPath(myPath, insertAt)
|
|
57
61
|
},
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
deps.announceReorder(INSERTED_ROW);
|
|
61
|
-
}
|
|
62
|
+
landing: () => cellAt(insertAt, 0),
|
|
63
|
+
announce: () => INSERTED_ROW
|
|
62
64
|
});
|
|
63
65
|
}
|
|
64
|
-
/**
|
|
65
|
-
*
|
|
66
|
-
* mount, so scoping a windowed-out row throws and takes the gesture with it. The
|
|
67
|
-
* bytes still reach every row, through the table scope.
|
|
68
|
-
*/
|
|
66
|
+
/** The table scope plus one per mounted row: an unmounted row has no registered state and
|
|
67
|
+
* would throw, and the table scope carries the bytes to every row anyway. */
|
|
69
68
|
function mountedColumnScopes() {
|
|
70
69
|
const { node, myPath, rowsState } = deps;
|
|
71
70
|
const scopes = [{ node, state: rowsState, path: [...myPath] }];
|
|
@@ -84,33 +83,33 @@ export function createTableMutationsContext(deps) {
|
|
|
84
83
|
const { scopes, rowIndices } = mountedColumnScopes();
|
|
85
84
|
await controller.commitMultiScope({
|
|
86
85
|
scopes,
|
|
87
|
-
// Columns
|
|
86
|
+
// Columns are not nodes: undo restores to the table itself.
|
|
88
87
|
snapshot: { path: docPathFrom(myPath), offset: 0 },
|
|
89
88
|
mutate: ([tableScope, ...rowScopes]) => {
|
|
90
|
-
// Reaches the
|
|
91
|
-
//
|
|
89
|
+
// Reaches the unmounted rows the scopes skip, so the per-row cell splice below
|
|
90
|
+
// never writes through a row an undo snapshot shares (G1.9).
|
|
92
91
|
ensureUnsharedChildren(tableScope.node, tableScope.sharing);
|
|
93
|
-
// The splice walks the
|
|
94
|
-
// sync correctly while each row view
|
|
92
|
+
// The splice walks the copied table's rows, so the row scopes' ids and refs only
|
|
93
|
+
// sync correctly while each row view is the child at the index it covers.
|
|
95
94
|
assertInvariant('column-scope-alignment', () => rowScopes.every((s, i) => s.node === tableScope.node.children?.[rowIndices[i]])
|
|
96
95
|
? null
|
|
97
96
|
: {
|
|
98
97
|
code: 'column-scope-alignment',
|
|
99
98
|
message: 'commitColumnEdit: row scopes misaligned with owned table children'
|
|
100
99
|
});
|
|
101
|
-
// One change per row, in row order
|
|
100
|
+
// One change per row, in row order; pair the mounted rows with theirs.
|
|
102
101
|
const perRow = opts.mutateColumns(tableScope.node);
|
|
103
102
|
return [{ op: 'noop' }, ...rowIndices.map((i) => perRow[i])];
|
|
104
103
|
},
|
|
105
104
|
op: { ...opts.op, eventPath: docPathFrom(myPath) },
|
|
106
|
-
|
|
105
|
+
landing: opts.landing,
|
|
106
|
+
announce: opts.announce
|
|
107
107
|
});
|
|
108
108
|
}
|
|
109
|
-
//
|
|
110
|
-
//
|
|
111
|
-
// raw rule in place, and the table raw is rebuilt once, delimiter line included.
|
|
109
|
+
// The table grows only at the bottom and right, so each scope's change is one contiguous
|
|
110
|
+
// insert; cell texts take the cell kind's raw rule in place, and the commit rebuilds the table.
|
|
112
111
|
async function pasteGrid(origin, grid) {
|
|
113
|
-
const { myPath, controller
|
|
112
|
+
const { myPath, controller } = deps;
|
|
114
113
|
const rows = grid.length;
|
|
115
114
|
let cols = 0;
|
|
116
115
|
for (const line of grid)
|
|
@@ -122,9 +121,8 @@ export function createTableMutationsContext(deps) {
|
|
|
122
121
|
scopes,
|
|
123
122
|
snapshot: { path: docPathFrom(myPath), offset: 0 },
|
|
124
123
|
mutate: ([tableScope, ...rowScopes]) => {
|
|
125
|
-
//
|
|
126
|
-
//
|
|
127
|
-
// the write would go through it and undo would restore the pasted bytes.
|
|
124
|
+
// The subtree, not just the children: cell writes land at depth two, and cells still
|
|
125
|
+
// shared with the undo snapshot would carry the paste into it.
|
|
128
126
|
ensureUnsharedSubtree(tableScope.node, tableScope.sharing);
|
|
129
127
|
assertInvariant('column-scope-alignment', () => rowScopes.every((s, i) => s.node === tableScope.node.children?.[rowIndices[i]])
|
|
130
128
|
? null
|
|
@@ -143,9 +141,8 @@ export function createTableMutationsContext(deps) {
|
|
|
143
141
|
insertEmptyColumn(table, c - 1, 'right');
|
|
144
142
|
grid.forEach((line, r) => {
|
|
145
143
|
const cells = table.children[origin.rowIdx + r].children;
|
|
146
|
-
line.forEach((text, c) => writeOwnRaw(cells[origin.colIdx + c], text, deps.grammar));
|
|
144
|
+
line.forEach((text, c) => writeOwnRaw(cells[origin.colIdx + c], text, tableScope.lineEnding, deps.reading.grammar));
|
|
147
145
|
});
|
|
148
|
-
rebuildTableRaw(table);
|
|
149
146
|
const addedRows = needRows - oldRows;
|
|
150
147
|
const addedCols = needCols - oldCols;
|
|
151
148
|
const tableChange = addedRows > 0 ? { op: 'insert', at: oldRows, count: addedRows } : { op: 'noop' };
|
|
@@ -157,52 +154,40 @@ export function createTableMutationsContext(deps) {
|
|
|
157
154
|
detail: { rowIdx: origin.rowIdx, colIdx: origin.colIdx, rows, cols },
|
|
158
155
|
eventPath: docPathFrom(myPath)
|
|
159
156
|
},
|
|
160
|
-
|
|
157
|
+
landing: () => cellAt(origin.rowIdx + rows - 1, origin.colIdx + cols - 1, CURSOR_END)
|
|
161
158
|
});
|
|
162
159
|
}
|
|
163
160
|
async function insertColumn(colIdx, side) {
|
|
164
|
-
const {
|
|
161
|
+
const { focusedCell } = deps;
|
|
165
162
|
const insertAt = side === 'left' ? colIdx : colIdx + 1;
|
|
166
163
|
await commitColumnEdit({
|
|
167
164
|
mutateColumns: (table) => insertEmptyColumn(table, colIdx, side),
|
|
168
165
|
op: { kind: 'tableInsertColumn', detail: { colIdx, side } },
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
focusCell(targetRow, insertAt, 'start');
|
|
172
|
-
deps.announceReorder(INSERTED_COLUMN);
|
|
173
|
-
}
|
|
166
|
+
landing: () => cellAt(focusedCell?.rowIdx ?? 0, insertAt),
|
|
167
|
+
announce: () => INSERTED_COLUMN
|
|
174
168
|
});
|
|
175
169
|
}
|
|
176
170
|
async function reorderRowTo(from, to) {
|
|
177
171
|
if (from === to)
|
|
178
172
|
return;
|
|
179
|
-
const { node, myPath, rowsState, parentContainerEdit,
|
|
173
|
+
const { node, myPath, rowsState, parentContainerEdit, focusedCell } = deps;
|
|
180
174
|
const rowCount = node.children?.length ?? 0;
|
|
181
|
-
//
|
|
182
|
-
//
|
|
175
|
+
// Check the source against the live count: a keyboard, menu or drag commit can carry a
|
|
176
|
+
// `from` made stale by a concurrent structural edit. `to` is already clamped.
|
|
183
177
|
if (from < 0 || from >= rowCount)
|
|
184
178
|
return;
|
|
185
|
-
// focusout nulls focusedCell on the
|
|
186
|
-
// now; the
|
|
179
|
+
// focusout nulls focusedCell on the re-render after the commit, so read the column
|
|
180
|
+
// now; the landing would otherwise go to column 0.
|
|
187
181
|
const col = focusedCell?.colIdx ?? 0;
|
|
188
182
|
await parentContainerEdit.commitContainer({
|
|
189
183
|
containerNode: node,
|
|
190
184
|
path: [...myPath],
|
|
191
185
|
state: rowsState,
|
|
192
186
|
snapshot: { path: extendDocPath(myPath, from), offset: 0 },
|
|
193
|
-
mutate: (scope) =>
|
|
194
|
-
// rebuildTableRaw rewrites EVERY row's raw, so the rows must be unshared
|
|
195
|
-
// first — reorderChildren only permutes references.
|
|
196
|
-
ensureUnsharedChildren(scope.node, scope.sharing);
|
|
197
|
-
const change = reorderChildren(scope.node.children, from, to);
|
|
198
|
-
rebuildTableRaw(scope.node);
|
|
199
|
-
return change;
|
|
200
|
-
},
|
|
187
|
+
mutate: (scope) => reorderChildren(scope.node.children, from, to),
|
|
201
188
|
op: { kind: 'tableReorderRow', detail: { from, to }, eventPath: extendDocPath(myPath, to) },
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
deps.announceReorder(movedRowToPosition(to, rowCount - 1));
|
|
205
|
-
}
|
|
189
|
+
landing: () => cellAt(to, col),
|
|
190
|
+
announce: () => movedRowToPosition(to, rowCount - 1)
|
|
206
191
|
});
|
|
207
192
|
}
|
|
208
193
|
async function moveRow(rowIdx, dir) {
|
|
@@ -215,21 +200,19 @@ export function createTableMutationsContext(deps) {
|
|
|
215
200
|
async function reorderColumnTo(from, to) {
|
|
216
201
|
if (from === to)
|
|
217
202
|
return;
|
|
218
|
-
const { node,
|
|
203
|
+
const { node, focusedCell } = deps;
|
|
219
204
|
const columnCount = metadataOf(node, 'table').columnCount;
|
|
220
|
-
//
|
|
205
|
+
// Check the source against the live count, as reorderRowTo does.
|
|
221
206
|
if (from < 0 || from >= columnCount)
|
|
222
207
|
return;
|
|
223
|
-
// focusout nulls focusedCell on the
|
|
224
|
-
//
|
|
208
|
+
// focusout nulls focusedCell on the re-render after the commit, so read the row now;
|
|
209
|
+
// the landing would otherwise go to row 0.
|
|
225
210
|
const row = focusedCell?.rowIdx ?? 0;
|
|
226
211
|
await commitColumnEdit({
|
|
227
212
|
mutateColumns: (table) => mutMoveColumn(table, from, to),
|
|
228
213
|
op: { kind: 'tableReorderColumn', detail: { from, to } },
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
deps.announceReorder(movedColumnToPosition(to + 1, columnCount));
|
|
232
|
-
}
|
|
214
|
+
landing: () => cellAt(row, to),
|
|
215
|
+
announce: () => movedColumnToPosition(to + 1, columnCount)
|
|
233
216
|
});
|
|
234
217
|
}
|
|
235
218
|
async function moveColumn(colIdx, dir) {
|
|
@@ -252,7 +235,7 @@ export function createTableMutationsContext(deps) {
|
|
|
252
235
|
moveColumnLeft: (colIdx) => moveColumn(colIdx, -1),
|
|
253
236
|
moveColumnRight: (colIdx) => moveColumn(colIdx, 1),
|
|
254
237
|
async deleteRow(rowIdx) {
|
|
255
|
-
const { node, myPath, rowsState, parentContainerEdit,
|
|
238
|
+
const { node, myPath, rowsState, parentContainerEdit, focusedCell } = deps;
|
|
256
239
|
if (!canDeleteRow(rowIdx, node.children?.length ?? 0))
|
|
257
240
|
return;
|
|
258
241
|
await parentContainerEdit.commitContainer({
|
|
@@ -261,8 +244,6 @@ export function createTableMutationsContext(deps) {
|
|
|
261
244
|
state: rowsState,
|
|
262
245
|
snapshot: { path: extendDocPath(myPath, rowIdx), offset: 0 },
|
|
263
246
|
mutate: (scope) => {
|
|
264
|
-
// deleteRow promotes the next row to header (a metadata write).
|
|
265
|
-
ensureUnsharedChildren(scope.node, scope.sharing);
|
|
266
247
|
mutDeleteRow(scope.node, rowIdx);
|
|
267
248
|
return { op: 'delete', at: rowIdx, count: 1 };
|
|
268
249
|
},
|
|
@@ -271,44 +252,42 @@ export function createTableMutationsContext(deps) {
|
|
|
271
252
|
detail: { rowIdx },
|
|
272
253
|
eventPath: extendDocPath(myPath, rowIdx)
|
|
273
254
|
},
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
// Read through `deps.node`: the
|
|
277
|
-
//
|
|
255
|
+
announce: () => DELETED_ROW,
|
|
256
|
+
landing: () => {
|
|
257
|
+
// Read through `deps.node`: the `node` read above is the pre-commit object the
|
|
258
|
+
// undo snapshot still shares, so its child count is stale after the delete.
|
|
278
259
|
const newRowCount = deps.node.children?.length ?? 0;
|
|
279
260
|
if (newRowCount === 0)
|
|
280
|
-
return;
|
|
261
|
+
return null;
|
|
281
262
|
const columnCount = metadataOf(deps.node, 'table').columnCount;
|
|
282
263
|
const targetRow = Math.min(rowIdx, newRowCount - 1);
|
|
283
264
|
const targetCol = focusedCell ? Math.min(focusedCell.colIdx, columnCount - 1) : 0;
|
|
284
|
-
|
|
265
|
+
return cellAt(targetRow, targetCol);
|
|
285
266
|
}
|
|
286
267
|
});
|
|
287
268
|
},
|
|
288
269
|
async deleteColumn(colIdx) {
|
|
289
|
-
const { node,
|
|
270
|
+
const { node, focusedCell } = deps;
|
|
290
271
|
const meta = metadataOf(node, 'table');
|
|
291
272
|
if (!canDeleteColumn(meta.columnCount))
|
|
292
273
|
return;
|
|
293
274
|
await commitColumnEdit({
|
|
294
275
|
mutateColumns: (table) => mutDeleteColumn(table, colIdx),
|
|
295
276
|
op: { kind: 'tableDeleteColumn', detail: { colIdx } },
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
// deps.node, not the stale pre-commit
|
|
277
|
+
announce: () => DELETED_COLUMN,
|
|
278
|
+
landing: () => {
|
|
279
|
+
// deps.node, not the stale pre-commit object, as in deleteRow.
|
|
299
280
|
const newColumnCount = metadataOf(deps.node, 'table').columnCount;
|
|
300
281
|
if (newColumnCount === 0)
|
|
301
|
-
return;
|
|
302
|
-
|
|
303
|
-
const targetRow = focusedCell?.rowIdx ?? 0;
|
|
304
|
-
focusCell(targetRow, targetCol, 'start');
|
|
282
|
+
return null;
|
|
283
|
+
return cellAt(focusedCell?.rowIdx ?? 0, Math.min(colIdx, newColumnCount - 1));
|
|
305
284
|
}
|
|
306
285
|
});
|
|
307
286
|
},
|
|
308
287
|
async cycleAlignment(colIdx) {
|
|
309
288
|
const { node, myPath, rowsState, parentContainerEdit } = deps;
|
|
310
|
-
//
|
|
311
|
-
// metadata edits. The event targets the
|
|
289
|
+
// A distinct OperationKind so consumers can count alignment cycles apart from
|
|
290
|
+
// metadata edits. The event targets the table: a column index is not a path.
|
|
312
291
|
await parentContainerEdit.commitContainer({
|
|
313
292
|
containerNode: node,
|
|
314
293
|
path: [...myPath],
|
|
@@ -322,12 +301,12 @@ export function createTableMutationsContext(deps) {
|
|
|
322
301
|
});
|
|
323
302
|
},
|
|
324
303
|
async setColumnAlignment(colIdx, alignment) {
|
|
325
|
-
const { node, myPath, rowsState, parentContainerEdit,
|
|
326
|
-
//
|
|
327
|
-
//
|
|
304
|
+
const { node, myPath, rowsState, parentContainerEdit, focusedCell } = deps;
|
|
305
|
+
// Read before the menu's focusout nulls it: the alignment button unmounts on
|
|
306
|
+
// commit, so without a landing the caret falls to <body>.
|
|
328
307
|
const cell = focusedCell;
|
|
329
|
-
// Commits unconditionally: the first table
|
|
330
|
-
//
|
|
308
|
+
// Commits unconditionally: the first table edit also normalizes cell padding, so
|
|
309
|
+
// setting the same value is not a byte no-op.
|
|
331
310
|
await parentContainerEdit.commitContainer({
|
|
332
311
|
containerNode: node,
|
|
333
312
|
path: [...myPath],
|
|
@@ -338,10 +317,8 @@ export function createTableMutationsContext(deps) {
|
|
|
338
317
|
return { op: 'noop' };
|
|
339
318
|
},
|
|
340
319
|
op: { kind: 'tableSetAlignment', detail: { colIdx }, eventPath: docPathFrom(myPath) },
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
deps.announceReorder(alignment === 'none' ? COLUMN_ALIGNMENT_CLEARED : columnAligned(alignment));
|
|
344
|
-
}
|
|
320
|
+
landing: () => cellAt(cell?.rowIdx ?? 0, colIdx),
|
|
321
|
+
announce: () => (alignment === 'none' ? COLUMN_ALIGNMENT_CLEARED : columnAligned(alignment))
|
|
345
322
|
});
|
|
346
323
|
}
|
|
347
324
|
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* dispatcher.
|
|
2
|
+
* The Backspace unwrap strategies a container's declared `unwrapRole` selects, run from the
|
|
3
|
+
* container's blockEdit (`docs/design/editor.md` § Container unwrap).
|
|
5
4
|
*/
|
|
6
5
|
import type { UnwrapRole } from '../schema/block-kind-descriptor';
|
|
7
6
|
import type { BlockListState } from '../reactivity/block-list-state.svelte';
|
|
@@ -10,5 +9,5 @@ export interface UnwrapStrategyDeps {
|
|
|
10
9
|
deps: NestedActionsDeps;
|
|
11
10
|
state: BlockListState;
|
|
12
11
|
}
|
|
13
|
-
export declare const firstChildUnwrapStrategies: Record<UnwrapRole['firstChildBackspace'], (deps: UnwrapStrategyDeps) => Promise<
|
|
14
|
-
export declare const middleChildUnwrapStrategies: Record<'list-item-cascade', (deps: UnwrapStrategyDeps, innerIndex: number) => Promise<
|
|
12
|
+
export declare const firstChildUnwrapStrategies: Record<UnwrapRole['firstChildBackspace'], (deps: UnwrapStrategyDeps) => Promise<boolean>>;
|
|
13
|
+
export declare const middleChildUnwrapStrategies: Record<'list-item-cascade', (deps: UnwrapStrategyDeps, innerIndex: number) => Promise<boolean>>;
|