@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,22 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The ListContext
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* The ListContext a ListBlock provides to its child ListItemBlocks. Every edit goes through
|
|
3
|
+
* `commitMultiScope`, whose copied scope views are the only legal write targets, never the
|
|
4
|
+
* `deps.scope.node` read before the commit.
|
|
5
5
|
*/
|
|
6
|
-
import { CURSOR_EXACT_START, CURSOR_START
|
|
6
|
+
import { CURSOR_EXACT_START, CURSOR_START } from '../block-component';
|
|
7
7
|
import { metadataOf } from '../core/nodes';
|
|
8
|
-
import { trailingLineEnding } from '../core/lines';
|
|
9
8
|
import { extendDocPath, docPathFrom } from '../cursor/coordinate-spaces';
|
|
10
|
-
import { replacePreservingFirst, stampStructuralChange } from '../tree-operations/structural-change';
|
|
11
|
-
import {
|
|
9
|
+
import { replacePreservingFirst, stampStructuralChange, trackChildIds } from '../tree-operations/structural-change';
|
|
10
|
+
import { spliceChildren } from '../tree-operations/children';
|
|
11
|
+
import { cascadeCleanupEmptyAncestors } from '../tree-operations/cleanup';
|
|
12
|
+
import { splitNode as performSplit, emptyParagraph } from '../tree-operations';
|
|
13
|
+
import { lastCaretLeaf } from '../selection/path-lookup';
|
|
12
14
|
import { ensureUnsharedChild } from '../tree-operations/unshare';
|
|
13
|
-
import { rebuildListRaw } from '../schema/container-rebuilders';
|
|
14
15
|
import { renumberOrderedList, normalizeItemMarkerToList, bumpOrderedMarker } from '../tree-operations/list/ordered-markers';
|
|
15
16
|
import { buildListItem, buildListShell } from '../tree-operations/list/list-builders';
|
|
17
|
+
import { fragmentReaderAt } from '../tree-operations/list/task-paragraph';
|
|
16
18
|
import { buildExitReplacement } from '../tree-operations/list/exit-replacement';
|
|
17
19
|
import { settleSublistSeparator } from '../tree-operations/list/sublist-separator';
|
|
18
20
|
import { expectStateForNode } from '../reactivity/state-registry';
|
|
19
|
-
/** The Enter
|
|
21
|
+
/** The item Enter creates: the previous item's marker bumped, its task checkbox inherited
|
|
22
|
+
* unchecked. */
|
|
20
23
|
function mintFollowerItem(prevMeta, children) {
|
|
21
24
|
const inheritTask = prevMeta?.taskItem === true;
|
|
22
25
|
return buildListItem({
|
|
@@ -27,19 +30,24 @@ function mintFollowerItem(prevMeta, children) {
|
|
|
27
30
|
}, children);
|
|
28
31
|
}
|
|
29
32
|
export function createListContext(deps) {
|
|
33
|
+
/** Item `index` of this list, at `offset`; a container position the landing resolves to a leaf. */
|
|
34
|
+
const itemAt = (index, offset) => ({
|
|
35
|
+
path: extendDocPath(deps.scope.path, index),
|
|
36
|
+
offset
|
|
37
|
+
});
|
|
30
38
|
return {
|
|
31
39
|
async indentItem(itemIndex) {
|
|
32
40
|
const node = deps.scope.node;
|
|
33
41
|
if (!node.children || itemIndex === 0)
|
|
34
|
-
return;
|
|
42
|
+
return false;
|
|
35
43
|
const prevItem = node.children[itemIndex - 1];
|
|
36
44
|
if (!prevItem.children)
|
|
37
|
-
return;
|
|
45
|
+
return false;
|
|
38
46
|
const ordered = metadataOf(node, 'list').ordered;
|
|
39
47
|
const existingNestedIdx = prevItem.children.findIndex((c) => c.kind === 'list' && metadataOf(c, 'list').ordered === ordered);
|
|
40
48
|
const existingNestedList = existingNestedIdx === -1 ? undefined : prevItem.children[existingNestedIdx];
|
|
41
|
-
// One
|
|
42
|
-
//
|
|
49
|
+
// One test, one destination: a matching sublist adopts the item whether or not it holds
|
|
50
|
+
// any yet, so the scope list and the mutate branch cannot disagree about where it goes.
|
|
43
51
|
const destination = existingNestedList
|
|
44
52
|
? {
|
|
45
53
|
node: existingNestedList,
|
|
@@ -51,34 +59,41 @@ export function createListContext(deps) {
|
|
|
51
59
|
state: expectStateForNode(prevItem),
|
|
52
60
|
path: [...deps.scope.path, itemIndex - 1]
|
|
53
61
|
};
|
|
54
|
-
|
|
62
|
+
// The moved item's path below this list once it lands in the previous item.
|
|
63
|
+
let movedTo = [];
|
|
64
|
+
return deps.controller.commitMultiScope({
|
|
55
65
|
scopes: [{ node, state: deps.state, path: deps.scope.path }, destination],
|
|
56
66
|
snapshot: { path: extendDocPath(deps.scope.path, itemIndex), offset: 0 },
|
|
57
67
|
mutate: ([outerScope, destScope]) => {
|
|
58
68
|
const sharing = outerScope.sharing;
|
|
59
69
|
const [movedItem] = outerScope.children.splice(itemIndex, 1);
|
|
60
|
-
|
|
70
|
+
const at = destScope.children.length;
|
|
71
|
+
movedTo = existingNestedList
|
|
72
|
+
? [itemIndex - 1, existingNestedIdx, at]
|
|
73
|
+
: [itemIndex - 1, at, 0];
|
|
74
|
+
// Each branch renumbers the moved item's marker through `sharing`, which copies it first.
|
|
61
75
|
if (existingNestedList) {
|
|
62
|
-
destList = destScope.node;
|
|
76
|
+
const destList = destScope.node;
|
|
63
77
|
destScope.children.push(movedItem);
|
|
64
|
-
// Adopt the destination sublist's marker style,
|
|
65
|
-
//
|
|
78
|
+
// Adopt the destination sublist's marker style, as a paste does. A fresh list
|
|
79
|
+
// (the else branch) has no convention to adopt.
|
|
66
80
|
const moved = ensureUnsharedChild(destList, destScope.children.length - 1, sharing);
|
|
67
81
|
normalizeItemMarkerToList(moved, destList);
|
|
82
|
+
renumberOrderedList(destList, 0, sharing);
|
|
68
83
|
}
|
|
69
84
|
else {
|
|
70
85
|
const shell = buildListShell(ordered, [movedItem]);
|
|
71
86
|
sharing.stamp(shell);
|
|
72
87
|
destScope.children.push(shell);
|
|
73
|
-
// Write
|
|
74
|
-
// through the tree
|
|
75
|
-
destList = destScope.children[destScope.children.length - 1];
|
|
88
|
+
// Write, then read back (tree-operations/unshare.ts): the writes below go
|
|
89
|
+
// through the value in the tree, not the list the proxy has observed.
|
|
90
|
+
const destList = destScope.children[destScope.children.length - 1];
|
|
91
|
+
renumberOrderedList(destList, 0, sharing);
|
|
92
|
+
// A new sublist sits below the commit's chain, which never rebuilds it; the
|
|
93
|
+
// blank-line rule below reads its bytes too.
|
|
94
|
+
destScope.rebuild(destList);
|
|
95
|
+
settleSublistSeparator(destScope.children, destScope.children.length - 1);
|
|
76
96
|
}
|
|
77
|
-
// Renumber writes the moved item's marker — sharing unshares it.
|
|
78
|
-
renumberOrderedList(destList, 0, sharing);
|
|
79
|
-
rebuildListRaw(destList);
|
|
80
|
-
// After the rebuild: the separator question is asked of the sublist's own bytes.
|
|
81
|
-
settleSublistSeparator(destScope.children, destScope.children.length - 1);
|
|
82
97
|
renumberOrderedList(outerScope.node, itemIndex, sharing);
|
|
83
98
|
return [
|
|
84
99
|
{ op: 'delete', at: itemIndex, count: 1 },
|
|
@@ -90,28 +105,35 @@ export function createListContext(deps) {
|
|
|
90
105
|
detail: { action: 'indentItem', itemIndex },
|
|
91
106
|
eventPath: docPathFrom(deps.scope.path)
|
|
92
107
|
},
|
|
93
|
-
|
|
94
|
-
|
|
108
|
+
// The moved item's last leaf, at its start; the walk runs over this list's own items.
|
|
109
|
+
landing: () => {
|
|
110
|
+
const items = {
|
|
111
|
+
kind: 'document',
|
|
112
|
+
prefix: '',
|
|
113
|
+
children: deps.scope.node.children ?? [],
|
|
114
|
+
suffix: ''
|
|
115
|
+
};
|
|
116
|
+
const leaf = lastCaretLeaf(items, movedTo);
|
|
117
|
+
return leaf && { path: docPathFrom([...deps.scope.path, ...leaf]), offset: CURSOR_START };
|
|
95
118
|
}
|
|
96
119
|
});
|
|
97
120
|
},
|
|
98
121
|
async unindentItem(itemIndex) {
|
|
99
122
|
if (!deps.parentListContext || !deps.scope.node.children)
|
|
100
|
-
return;
|
|
101
|
-
|
|
123
|
+
return false;
|
|
124
|
+
return deps.parentListContext.promoteNestedItem(deps.parentListContext.getContainingItemIndex(), deps.scope.node, itemIndex);
|
|
102
125
|
},
|
|
103
126
|
async insertItemAfter(itemIndex, newItem) {
|
|
104
127
|
const node = deps.scope.node;
|
|
105
128
|
if (!node.children)
|
|
106
|
-
return;
|
|
129
|
+
return false;
|
|
107
130
|
if (!newItem) {
|
|
108
131
|
const prevItem = node.children[itemIndex];
|
|
109
132
|
newItem = mintFollowerItem(prevItem ? metadataOf(prevItem, 'listItem') : undefined,
|
|
110
|
-
//
|
|
111
|
-
|
|
112
|
-
[emptyParagraph('', trailingLineEnding(node.raw))]);
|
|
133
|
+
// rebuildListItemRaw derives the item's raw from its body's line ending.
|
|
134
|
+
[emptyParagraph('', deps.getLineEnding())]);
|
|
113
135
|
}
|
|
114
|
-
|
|
136
|
+
return deps.controller.commitMultiScope({
|
|
115
137
|
scopes: [{ node, state: deps.state, path: deps.scope.path }],
|
|
116
138
|
snapshot: { path: docPathFrom(deps.scope.path), offset: 0 },
|
|
117
139
|
mutate: ([scope]) => {
|
|
@@ -126,40 +148,40 @@ export function createListContext(deps) {
|
|
|
126
148
|
detail: { itemIndex },
|
|
127
149
|
eventPath: docPathFrom(deps.scope.path)
|
|
128
150
|
},
|
|
129
|
-
|
|
130
|
-
deps.state.innerBlockRefs[itemIndex + 1]?.focus(0);
|
|
131
|
-
}
|
|
151
|
+
landing: () => itemAt(itemIndex + 1, 0)
|
|
132
152
|
});
|
|
133
153
|
},
|
|
134
154
|
async splitItemAtOffset(itemIndex, innerIndex, offset) {
|
|
135
155
|
const outerList = deps.scope.node;
|
|
136
156
|
if (!outerList.children)
|
|
137
|
-
return;
|
|
157
|
+
return false;
|
|
138
158
|
const item = outerList.children[itemIndex];
|
|
139
159
|
if (!item.children)
|
|
140
|
-
return;
|
|
160
|
+
return false;
|
|
141
161
|
const itemState = expectStateForNode(item);
|
|
142
|
-
// Both
|
|
143
|
-
|
|
162
|
+
// Both lists in one commit, so mid-item Enter is a single undo entry.
|
|
163
|
+
return deps.controller.commitMultiScope({
|
|
144
164
|
scopes: [
|
|
145
165
|
{ node: outerList, state: deps.state, path: deps.scope.path },
|
|
146
166
|
{ node: item, state: itemState, path: [...deps.scope.path, itemIndex] }
|
|
147
167
|
],
|
|
148
|
-
// The
|
|
168
|
+
// The real pre-edit caret: `offset` is inside the split leaf.
|
|
149
169
|
snapshot: { path: docPathFrom([...deps.scope.path, itemIndex, innerIndex]), offset },
|
|
150
170
|
mutate: ([outerScope, itemScope]) => {
|
|
151
171
|
const sharing = outerScope.sharing;
|
|
152
172
|
const itemChildren = itemScope.children;
|
|
153
|
-
// The
|
|
154
|
-
//
|
|
173
|
+
// The change must report everything removed from innerIndex onward, not just
|
|
174
|
+
// the child that was split.
|
|
155
175
|
const preSpliceLen = itemChildren.length;
|
|
156
|
-
const split = performSplit(
|
|
176
|
+
const split = performSplit(itemScope.body, innerIndex, offset, sharing, deps.reading,
|
|
177
|
+
// The new item inherits this one's task marker, so its first block reads
|
|
178
|
+
// as this item's first block does.
|
|
179
|
+
fragmentReaderAt(itemScope.node, 0, deps.reading.grammar));
|
|
157
180
|
stampStructuralChange(itemChildren, split.change, sharing);
|
|
158
|
-
// The primitive's
|
|
159
|
-
// stays with this item
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
const secondHalf = itemChildren.splice(landing);
|
|
181
|
+
// The primitive's index, not `innerIndex + 1`: a first half that parses to several
|
|
182
|
+
// blocks stays with this item.
|
|
183
|
+
const cutAt = split.secondHalfIndex;
|
|
184
|
+
const secondHalf = itemChildren.splice(cutAt);
|
|
163
185
|
if (secondHalf.length > 0) {
|
|
164
186
|
secondHalf[0].leadingTrivia = '';
|
|
165
187
|
}
|
|
@@ -168,10 +190,10 @@ export function createListContext(deps) {
|
|
|
168
190
|
outerScope.children.splice(itemIndex + 1, 0, newItem);
|
|
169
191
|
renumberOrderedList(outerScope.node, itemIndex + 1, sharing);
|
|
170
192
|
// Net item change: [innerIndex .. preSpliceLen) replaced by the first half's
|
|
171
|
-
// blocks
|
|
193
|
+
// blocks, several when the cut bytes reparse to more than one.
|
|
172
194
|
return [
|
|
173
195
|
{ op: 'insert', at: itemIndex + 1, count: 1 },
|
|
174
|
-
replacePreservingFirst(innerIndex, preSpliceLen - innerIndex,
|
|
196
|
+
replacePreservingFirst(innerIndex, preSpliceLen - innerIndex, cutAt - innerIndex)
|
|
175
197
|
];
|
|
176
198
|
},
|
|
177
199
|
op: {
|
|
@@ -179,42 +201,35 @@ export function createListContext(deps) {
|
|
|
179
201
|
detail: { at: offset, itemIndex, innerIndex },
|
|
180
202
|
eventPath: docPathFrom(deps.scope.path)
|
|
181
203
|
},
|
|
182
|
-
|
|
183
|
-
deps.state.innerBlockRefs[itemIndex + 1]?.focus(CURSOR_EXACT_START);
|
|
184
|
-
}
|
|
204
|
+
landing: () => itemAt(itemIndex + 1, CURSOR_EXACT_START)
|
|
185
205
|
});
|
|
186
206
|
},
|
|
187
207
|
async promoteNestedItem(parentItemIdx, nestedListNode, nestedItemIdx) {
|
|
188
208
|
const node = deps.scope.node;
|
|
189
209
|
if (!node.children || !nestedListNode.children)
|
|
190
|
-
return;
|
|
210
|
+
return false;
|
|
191
211
|
const parentItem = node.children[parentItemIdx];
|
|
192
212
|
if (!parentItem?.children)
|
|
193
|
-
return;
|
|
213
|
+
return false;
|
|
194
214
|
const nestedIdxInParent = parentItem.children.indexOf(nestedListNode);
|
|
195
215
|
if (nestedIdxInParent === -1)
|
|
196
|
-
return;
|
|
197
|
-
//
|
|
198
|
-
// to splice the now-empty list out of parentItem's children.
|
|
199
|
-
const nestedListWillEmpty = nestedListNode.children.length === 1;
|
|
216
|
+
return false;
|
|
217
|
+
// The move can empty the nested list and then the parent item, so both are scopes.
|
|
200
218
|
const scopes = [
|
|
201
219
|
{ node, state: deps.state, path: deps.scope.path },
|
|
202
220
|
{
|
|
203
221
|
node: nestedListNode,
|
|
204
222
|
state: expectStateForNode(nestedListNode),
|
|
205
223
|
path: [...deps.scope.path, parentItemIdx, nestedIdxInParent]
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
let parentItemScopeIdx = -1;
|
|
209
|
-
if (nestedListWillEmpty) {
|
|
210
|
-
parentItemScopeIdx = scopes.length;
|
|
211
|
-
scopes.push({
|
|
224
|
+
},
|
|
225
|
+
{
|
|
212
226
|
node: parentItem,
|
|
213
227
|
state: expectStateForNode(parentItem),
|
|
214
228
|
path: [...deps.scope.path, parentItemIdx]
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
|
|
229
|
+
}
|
|
230
|
+
];
|
|
231
|
+
let promotedAt = parentItemIdx + 1;
|
|
232
|
+
return deps.controller.commitMultiScope({
|
|
218
233
|
scopes,
|
|
219
234
|
// The promoted item's pre-move path (its nested-list slot).
|
|
220
235
|
snapshot: {
|
|
@@ -222,64 +237,54 @@ export function createListContext(deps) {
|
|
|
222
237
|
offset: 0
|
|
223
238
|
},
|
|
224
239
|
mutate: (scopeViews) => {
|
|
225
|
-
const outerScope = scopeViews
|
|
226
|
-
const nestedScope = scopeViews[1];
|
|
240
|
+
const [outerScope, nestedScope] = scopeViews;
|
|
227
241
|
const sharing = outerScope.sharing;
|
|
228
|
-
//
|
|
229
|
-
|
|
242
|
+
// Opened before the move, since the cleanup below can splice any of the three lists.
|
|
243
|
+
const ledgers = scopeViews.map((v) => trackChildIds(v.node));
|
|
244
|
+
// The promoted item is moved and written (marker normalization, renumbering),
|
|
245
|
+
// so copy it before it leaves the nested list.
|
|
230
246
|
const item = ensureUnsharedChild(nestedScope.node, nestedItemIdx, sharing);
|
|
231
|
-
nestedScope.
|
|
232
|
-
const changes = new Array(scopes.length);
|
|
233
|
-
changes[1] = { op: 'delete', at: nestedItemIdx, count: 1 };
|
|
234
|
-
if (nestedListWillEmpty && parentItemScopeIdx !== -1) {
|
|
235
|
-
const parentItemChildren = scopeViews[parentItemScopeIdx].children;
|
|
236
|
-
const nestedIdx = parentItemChildren.indexOf(nestedScope.node);
|
|
237
|
-
if (nestedIdx !== -1) {
|
|
238
|
-
parentItemChildren.splice(nestedIdx, 1);
|
|
239
|
-
changes[parentItemScopeIdx] = { op: 'delete', at: nestedIdx, count: 1 };
|
|
240
|
-
}
|
|
241
|
-
else {
|
|
242
|
-
changes[parentItemScopeIdx] = { op: 'noop' };
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
if (!nestedListWillEmpty) {
|
|
246
|
-
renumberOrderedList(nestedScope.node, 0, sharing);
|
|
247
|
-
}
|
|
247
|
+
spliceChildren(nestedScope.node, nestedItemIdx, 1, []);
|
|
248
248
|
normalizeItemMarkerToList(item, outerScope.node);
|
|
249
|
-
outerScope.
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
249
|
+
spliceChildren(outerScope.node, promotedAt, 0, [item]);
|
|
250
|
+
// What the move emptied goes, up to this list, which now holds the promoted item.
|
|
251
|
+
const outerCount = outerScope.children.length;
|
|
252
|
+
cascadeCleanupEmptyAncestors(outerScope.node, [parentItemIdx, nestedIdxInParent, nestedItemIdx], sharing, deps.reading.grammar);
|
|
253
|
+
promotedAt -= outerCount - outerScope.children.length;
|
|
254
|
+
if (nestedScope.children.length > 0)
|
|
255
|
+
renumberOrderedList(nestedScope.node, 0, sharing);
|
|
256
|
+
renumberOrderedList(outerScope.node, promotedAt, sharing);
|
|
257
|
+
return ledgers.map((ledger) => {
|
|
258
|
+
const change = ledger.read();
|
|
259
|
+
ledger.release();
|
|
260
|
+
return change;
|
|
261
|
+
});
|
|
253
262
|
},
|
|
254
263
|
op: {
|
|
255
264
|
kind: 'replaceBlock',
|
|
256
265
|
detail: { action: 'promoteNestedItem', parentItemIdx, nestedItemIdx },
|
|
257
266
|
eventPath: docPathFrom(deps.scope.path)
|
|
258
267
|
},
|
|
259
|
-
|
|
260
|
-
deps.state.innerBlockRefs[parentItemIdx + 1]?.focus(CURSOR_START);
|
|
261
|
-
}
|
|
268
|
+
landing: () => itemAt(promotedAt, CURSOR_START)
|
|
262
269
|
});
|
|
263
270
|
},
|
|
264
271
|
getContainingItemIndex() {
|
|
265
|
-
//
|
|
272
|
+
// A top-level list; only nested lists return a meaningful value here.
|
|
266
273
|
return -1;
|
|
267
274
|
},
|
|
268
275
|
async exitListAtItem(itemIndex) {
|
|
269
276
|
const node = deps.scope.node;
|
|
270
277
|
if (!node.children)
|
|
271
|
-
return;
|
|
272
|
-
//
|
|
273
|
-
//
|
|
278
|
+
return false;
|
|
279
|
+
// In a nested list one Enter outdents one level, like Shift+Tab. Only the outermost
|
|
280
|
+
// list exits straight to a paragraph.
|
|
274
281
|
if (deps.parentListContext) {
|
|
275
|
-
|
|
276
|
-
return;
|
|
282
|
+
return deps.parentListContext.promoteNestedItem(deps.parentListContext.getContainingItemIndex(), node, itemIndex);
|
|
277
283
|
}
|
|
278
|
-
const replacement = buildExitReplacement(node, itemIndex);
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
});
|
|
284
|
+
const replacement = buildExitReplacement(node, itemIndex, deps.getLineEnding());
|
|
285
|
+
// The caret sat in an item, which an offset into the list can't name; the live read
|
|
286
|
+
// records it.
|
|
287
|
+
return deps.parentBlockEdit.replaceBlock(deps.scope.index, replacement.blocks, { replacementIndex: replacement.paragraphIndex, offset: 0 }, { snapshotOffset: 0 });
|
|
283
288
|
}
|
|
284
289
|
};
|
|
285
290
|
}
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Backspace unwrap
|
|
5
|
-
*
|
|
2
|
+
* The list's and the list item's overrides over the default child actions. The list's are
|
|
3
|
+
* item-level no-ops and the last item's forward merge, handed to the parent; the item's is its
|
|
4
|
+
* Enter. Backspace unwrap comes from the list's declared `unwrapRole`, which picks a strategy in
|
|
5
|
+
* `unwrap-strategies.ts`.
|
|
6
6
|
*/
|
|
7
|
-
import type { BlockEditActions } from '../action-contracts';
|
|
7
|
+
import type { BlockEditActions, ListContext } from '../action-contracts';
|
|
8
8
|
import type { NestedActionsOverrideFactory, NodeScope } from './nested/nested-actions';
|
|
9
9
|
export interface ListOverridesDeps {
|
|
10
10
|
scope: NodeScope;
|
|
11
11
|
parentBlockEdit: BlockEditActions;
|
|
12
12
|
}
|
|
13
13
|
export declare function createListOverrides(deps: ListOverridesDeps): NestedActionsOverrideFactory;
|
|
14
|
+
export interface ListItemOverridesDeps {
|
|
15
|
+
scope: NodeScope;
|
|
16
|
+
/** The enclosing list's context, read before the item provides its own. */
|
|
17
|
+
listContext: ListContext;
|
|
18
|
+
}
|
|
19
|
+
/** A list item's Enter: an empty item leaves the list, at the item's end it starts the next
|
|
20
|
+
* item, anywhere else it splits the item. Backspace keeps the default. */
|
|
21
|
+
export declare function createListItemOverrides(deps: ListItemOverridesDeps): NestedActionsOverrideFactory;
|
|
@@ -1,25 +1,49 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Backspace unwrap
|
|
5
|
-
*
|
|
2
|
+
* The list's and the list item's overrides over the default child actions. The list's are
|
|
3
|
+
* item-level no-ops and the last item's forward merge, handed to the parent; the item's is its
|
|
4
|
+
* Enter. Backspace unwrap comes from the list's declared `unwrapRole`, which picks a strategy in
|
|
5
|
+
* `unwrap-strategies.ts`.
|
|
6
6
|
*/
|
|
7
|
+
import { refusedWrite } from './stored-caret';
|
|
8
|
+
import { displayLength, isBlankText } from '../core/lines';
|
|
7
9
|
export function createListOverrides(deps) {
|
|
8
10
|
return () => ({
|
|
9
11
|
blockEdit: {
|
|
10
|
-
// Items split through the
|
|
12
|
+
// Items split through the item's own bundle; nothing calls the list's, and the shared
|
|
11
13
|
// core would run a prose split on a `listItem` if anything ever did.
|
|
12
|
-
splitBlock: async () =>
|
|
13
|
-
updateBlockContent: () =>
|
|
14
|
-
// Items are structural peers, not text
|
|
15
|
-
//
|
|
14
|
+
splitBlock: async () => false,
|
|
15
|
+
updateBlockContent: () => refusedWrite(),
|
|
16
|
+
// Items are structural peers, not text to merge. Only the last item hands the merge
|
|
17
|
+
// to the parent, so the block after the list merges into the list's deepest leaf.
|
|
16
18
|
mergeWithNext: async (itemIndex) => {
|
|
17
19
|
const node = deps.scope.node;
|
|
20
|
+
if (!node.children || itemIndex < node.children.length - 1)
|
|
21
|
+
return false;
|
|
22
|
+
return deps.parentBlockEdit.mergeWithNext(deps.scope.index);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
/** A list item's Enter: an empty item leaves the list, at the item's end it starts the next
|
|
28
|
+
* item, anywhere else it splits the item. Backspace keeps the default. */
|
|
29
|
+
export function createListItemOverrides(deps) {
|
|
30
|
+
return () => ({
|
|
31
|
+
blockEdit: {
|
|
32
|
+
splitBlock: async (innerIndex, offset) => {
|
|
33
|
+
const { node, index } = deps.scope;
|
|
18
34
|
if (!node.children)
|
|
19
|
-
return;
|
|
20
|
-
|
|
21
|
-
|
|
35
|
+
return false;
|
|
36
|
+
// Looser than `isItemUserEmpty`: trailing structural children stay until
|
|
37
|
+
// `exitListAtItem` moves them.
|
|
38
|
+
const firstChild = node.children[0];
|
|
39
|
+
if (firstChild?.kind === 'paragraph' && isBlankText(firstChild.raw)) {
|
|
40
|
+
return deps.listContext.exitListAtItem(index);
|
|
22
41
|
}
|
|
42
|
+
const lastChild = node.children[node.children.length - 1];
|
|
43
|
+
const atEnd = innerIndex === node.children.length - 1 && offset >= displayLength(lastChild.raw);
|
|
44
|
+
if (atEnd)
|
|
45
|
+
return deps.listContext.insertItemAfter(index);
|
|
46
|
+
return deps.listContext.splitItemAtOffset(index, innerIndex, offset);
|
|
23
47
|
}
|
|
24
48
|
}
|
|
25
49
|
});
|
|
@@ -1,19 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* (`block-edit-core`)
|
|
4
|
-
* A merge
|
|
2
|
+
* Where the caret goes after a merge that may not have happened, in both directions: the sibling
|
|
3
|
+
* merge (`block-edit-core`) and the list-item merge (`unwrap-strategies.listItemCascadeMiddle`).
|
|
4
|
+
* A refused merge still moves the caret across the boundary the user pressed at.
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import type { CaretPosition } from '../selection/primitives';
|
|
7
7
|
import type { StructuralChange } from '../tree-operations/structural-change';
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
*/
|
|
13
|
-
export declare function
|
|
14
|
-
/**
|
|
15
|
-
* The forward twin, over the door's own change: `noop` means the join was refused (its bytes
|
|
16
|
-
* read as several blocks, and one slot installs one node), so the caret crosses into the block
|
|
17
|
-
* that stayed. Returns whether the merge happened, so the caller's landing asks the same question.
|
|
18
|
-
*/
|
|
19
|
-
export declare function mergedElseFocusNext(change: StructuralChange, next: BlockComponent | undefined): boolean;
|
|
8
|
+
/** Null means nothing merged (no reachable text leaf, or a refused join), so the caret goes to
|
|
9
|
+
* the previous block's end. */
|
|
10
|
+
export declare function mergedElsePrevious(joined: CaretPosition | null, previous: CaretPosition['path']): CaretPosition;
|
|
11
|
+
/** A `noop` change means the join was refused (the joined bytes parse as several blocks), so the
|
|
12
|
+
* caret crosses into the next block's start. */
|
|
13
|
+
export declare function mergedElseNext(change: StructuralChange, joined: CaretPosition, next: CaretPosition['path']): CaretPosition;
|
|
@@ -1,27 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* (`block-edit-core`)
|
|
4
|
-
* A merge
|
|
2
|
+
* Where the caret goes after a merge that may not have happened, in both directions: the sibling
|
|
3
|
+
* merge (`block-edit-core`) and the list-item merge (`unwrap-strategies.listItemCascadeMiddle`).
|
|
4
|
+
* A refused merge still moves the caret across the boundary the user pressed at.
|
|
5
5
|
*/
|
|
6
6
|
import { CURSOR_END, CURSOR_START } from '../block-component';
|
|
7
|
-
/**
|
|
8
|
-
*
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
*/
|
|
12
|
-
export function mergedElseFocusPrevious(result, previous) {
|
|
13
|
-
if (result === null)
|
|
14
|
-
previous?.focus(CURSOR_END);
|
|
15
|
-
return result;
|
|
7
|
+
/** Null means nothing merged (no reachable text leaf, or a refused join), so the caret goes to
|
|
8
|
+
* the previous block's end. */
|
|
9
|
+
export function mergedElsePrevious(joined, previous) {
|
|
10
|
+
return joined ?? { path: previous, offset: CURSOR_END };
|
|
16
11
|
}
|
|
17
|
-
/**
|
|
18
|
-
*
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
*/
|
|
22
|
-
export function mergedElseFocusNext(change, next) {
|
|
23
|
-
if (change.op !== 'noop')
|
|
24
|
-
return true;
|
|
25
|
-
next?.focus(CURSOR_START);
|
|
26
|
-
return false;
|
|
12
|
+
/** A `noop` change means the join was refused (the joined bytes parse as several blocks), so the
|
|
13
|
+
* caret crosses into the next block's start. */
|
|
14
|
+
export function mergedElseNext(change, joined, next) {
|
|
15
|
+
return change.op !== 'noop' ? joined : { path: next, offset: CURSOR_START };
|
|
27
16
|
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The action bundle a container block hands its children, built the same way for every container
|
|
3
|
+
* kind: its parent's actions and the editor's reading in, the children's actions provided out.
|
|
4
|
+
* Call it once during component init. It reads the action contexts before it sets them, so a
|
|
5
|
+
* caller that needs a parent context (a list's own list context) reads it before the call.
|
|
6
|
+
*/
|
|
7
|
+
import type { ListContext } from '../../action-contracts';
|
|
8
|
+
import type { NodeView } from '../../core/node-views';
|
|
9
|
+
import { type BlockListState } from '../../reactivity/block-list-state.svelte';
|
|
10
|
+
import type { Reading } from '../../schema/reading';
|
|
11
|
+
import type { ChildList } from '../../reactivity/child-list';
|
|
12
|
+
import { type NestedActionsBundle, type NestedActionsDeps, type NestedActionsOverrideFactory, type NodeScope } from './nested-actions';
|
|
13
|
+
export interface ContainerActionsDeps {
|
|
14
|
+
getNode: () => NodeView;
|
|
15
|
+
getIndex: () => number;
|
|
16
|
+
getPath: () => number[];
|
|
17
|
+
/** The container's own rules over the default child actions, given its scope and its parent. */
|
|
18
|
+
overrides?: (parts: {
|
|
19
|
+
scope: NodeScope;
|
|
20
|
+
parent: NestedActionsDeps['parent'];
|
|
21
|
+
reading: Reading;
|
|
22
|
+
}) => NestedActionsOverrideFactory;
|
|
23
|
+
/** The enclosing list's context, for a list nested in one. */
|
|
24
|
+
parentListContext?: ListContext;
|
|
25
|
+
/** The container's own child list; read at use, so it may name a const declared after the
|
|
26
|
+
* call, which it has to since the list's window is built from `state`. */
|
|
27
|
+
childList: () => ChildList;
|
|
28
|
+
}
|
|
29
|
+
export interface ContainerActions {
|
|
30
|
+
/** The container's live index, node and path, shared by reference with every factory. */
|
|
31
|
+
scope: NodeScope;
|
|
32
|
+
state: BlockListState;
|
|
33
|
+
bundle: NestedActionsBundle;
|
|
34
|
+
parent: NestedActionsDeps['parent'];
|
|
35
|
+
reading: Reading;
|
|
36
|
+
}
|
|
37
|
+
export declare function createContainerActions(deps: ContainerActionsDeps): ContainerActions;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The action bundle a container block hands its children, built the same way for every container
|
|
3
|
+
* kind: its parent's actions and the editor's reading in, the children's actions provided out.
|
|
4
|
+
* Call it once during component init. It reads the action contexts before it sets them, so a
|
|
5
|
+
* caller that needs a parent context (a list's own list context) reads it before the call.
|
|
6
|
+
*/
|
|
7
|
+
import { getContext } from 'svelte';
|
|
8
|
+
import { BLOCK_EDIT_KEY, CONTAINER_EDIT_KEY, EDITOR_DOC_KEY, EDITOR_SERVICES_KEY, FOCUS_KEY } from '../../editor-keys';
|
|
9
|
+
import { createBlockListState } from '../../reactivity/block-list-state.svelte';
|
|
10
|
+
import { createStandardNestedActions, setNestedActionsContexts } from './nested-actions';
|
|
11
|
+
export function createContainerActions(deps) {
|
|
12
|
+
const parent = {
|
|
13
|
+
blockEdit: getContext(BLOCK_EDIT_KEY),
|
|
14
|
+
focus: getContext(FOCUS_KEY),
|
|
15
|
+
containerEdit: getContext(CONTAINER_EDIT_KEY)
|
|
16
|
+
};
|
|
17
|
+
const { caretMemory } = getContext(EDITOR_SERVICES_KEY);
|
|
18
|
+
const { reading } = getContext(EDITOR_DOC_KEY);
|
|
19
|
+
const state = createBlockListState(deps.getNode);
|
|
20
|
+
// Getters, never a spread: a spread would snapshot the container's position.
|
|
21
|
+
const scope = {
|
|
22
|
+
get index() {
|
|
23
|
+
return deps.getIndex();
|
|
24
|
+
},
|
|
25
|
+
get node() {
|
|
26
|
+
return deps.getNode();
|
|
27
|
+
},
|
|
28
|
+
get path() {
|
|
29
|
+
return deps.getPath();
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
const bundle = createStandardNestedActions(state, {
|
|
33
|
+
scope,
|
|
34
|
+
caretMemory,
|
|
35
|
+
reading,
|
|
36
|
+
parentListContext: deps.parentListContext,
|
|
37
|
+
childList: deps.childList,
|
|
38
|
+
parent
|
|
39
|
+
}, deps.overrides?.({ scope, parent, reading }));
|
|
40
|
+
setNestedActionsContexts(bundle);
|
|
41
|
+
return { scope, state, bundle, parent, reading };
|
|
42
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { RemovalGesture } from '../../selection/caret-target';
|
|
2
|
+
import type { NestedActionsDeps } from './nested-actions';
|
|
3
|
+
/** Removes the container from its parent's list, for an edit that would take its last child: an
|
|
4
|
+
* emptied container goes rather than stay childless. */
|
|
5
|
+
export declare function removeEmptiedContainer(deps: NestedActionsDeps, gesture: RemovalGesture): Promise<boolean>;
|