@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,79 +1,92 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* the
|
|
5
|
-
* G1.16 stays the runtime belt for the JS callers types don't bind.
|
|
2
|
+
* What the shared block-edit core needs of one block list, the document root or a container.
|
|
3
|
+
* The factories here are the only place the commit's document-absolute paths (`DocPath`) are
|
|
4
|
+
* made; the core hands over local indices only, and a dev-mode check covers JS callers.
|
|
6
5
|
*/
|
|
7
6
|
import type { OpDescriptor } from '../schema/operations';
|
|
8
|
-
import type { CommitAfterTick,
|
|
9
|
-
import
|
|
7
|
+
import type { CommitAfterTick, CommitLanding, InPlaceResult } from '../action-contracts';
|
|
8
|
+
import { type BodyParent } from '../tree-operations/node-primitives';
|
|
9
|
+
import type { CstNode } from '../core/nodes';
|
|
10
10
|
import type { NodeView } from '../core/node-views';
|
|
11
11
|
import type { StructuralChange } from '../tree-operations/structural-change';
|
|
12
12
|
import type { SharingState } from '../tree-operations/sharing';
|
|
13
|
-
import type {
|
|
14
|
-
import type {
|
|
15
|
-
import type {
|
|
16
|
-
import type {
|
|
17
|
-
import
|
|
13
|
+
import type { TrackedPosition } from '../tree-operations/settle';
|
|
14
|
+
import type { LegalWrite, WriteTarget } from '../tree-operations/content-write';
|
|
15
|
+
import type { Reading } from '../schema/reading';
|
|
16
|
+
import type { CaretMemory } from '../cursor/caret-memory';
|
|
17
|
+
import { type DocPath } from '../selection/path-math';
|
|
18
|
+
import type { CaretPosition } from '../selection/primitives';
|
|
19
|
+
import type { LandingOutcome, RevealPolicy } from '../selection/caret-landing';
|
|
20
|
+
import { type RemovalGesture } from '../selection/caret-target';
|
|
21
|
+
import type { EditorActionsDeps, EditorRoot, UndoController } from './deps';
|
|
18
22
|
import type { NestedActionsDeps } from './nested/nested-actions';
|
|
19
23
|
import type { BlockListState } from '../reactivity/block-list-state.svelte';
|
|
20
|
-
/**
|
|
24
|
+
/** The copied children the core's `mutate` writes through, the same shape at both levels. */
|
|
21
25
|
export interface MutationView {
|
|
22
|
-
children
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* rather than optional so each adapter answers; `undefined` is the document root. */
|
|
29
|
-
owner: CstNode | undefined;
|
|
30
|
-
/** The instance's block grammar, for mutations that re-parse. Absent = the global grammar. */
|
|
31
|
-
grammar?: GrammarView;
|
|
32
|
-
/** Live EFFECTIVE mode, for mutations whose bytes depend on what the mode paints. Nullable
|
|
33
|
-
* rather than optional so each adapter answers; `undefined` reads as not-live. */
|
|
34
|
-
getPresentationMode: PresentationModeGetter | undefined;
|
|
35
|
-
/** The instance's link-reference resolver, so a rewrite parses the reference forms the render
|
|
36
|
-
* path drew. Nullable for the same reason as the mode; `undefined` reads them as brackets. */
|
|
37
|
-
linkRef: InlineResolverRef | undefined;
|
|
38
|
-
/** Copy-out-of-sharing the child at `i` before an in-place write; returns the owned node. */
|
|
26
|
+
/** The children this mutation writes and the container they belong to. */
|
|
27
|
+
readonly body: BodyParent;
|
|
28
|
+
readonly sharing: SharingState;
|
|
29
|
+
/** The editor's reading, for mutations that re-parse and joins that clean up after themselves. */
|
|
30
|
+
readonly reading: Reading;
|
|
31
|
+
/** Copy the child at `i` out of the undo snapshot before an in-place write; returns the copy. */
|
|
39
32
|
unshareChild(i: number): CstNode;
|
|
40
33
|
}
|
|
41
34
|
export interface ScopeCommitArgs {
|
|
42
|
-
/**
|
|
35
|
+
/** Where undo puts the caret back, as a local index in this list, when nothing is focused. */
|
|
43
36
|
snapshot: {
|
|
44
37
|
index: number;
|
|
45
38
|
offset: number;
|
|
46
|
-
}
|
|
39
|
+
};
|
|
47
40
|
/** Local index the edit event targets; the factory prefixes the scope's absolute path. */
|
|
48
41
|
eventTarget: number;
|
|
49
42
|
op: OpDescriptor;
|
|
50
43
|
mutate: (view: MutationView) => StructuralChange;
|
|
51
44
|
afterTick?: CommitAfterTick;
|
|
52
|
-
/**
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
45
|
+
/** Where the caret goes, read after the commit; built with the scope's `at`. */
|
|
46
|
+
landing?: CommitLanding;
|
|
47
|
+
/** How far the landing moves the viewport; `'into-view'` when absent. */
|
|
48
|
+
reveal?: RevealPolicy;
|
|
49
|
+
/** Filled by `mutate` for the dev-mode stale-raw check when it returns `noop`; only the root
|
|
50
|
+
* reads them, since a container's commit checks its whole copied container. */
|
|
56
51
|
touchedNodes?: CstNode[];
|
|
57
|
-
/**
|
|
58
|
-
*
|
|
59
|
-
* rather than mint a dead entry. Never on content/metadata commits — their `noop`
|
|
60
|
-
* still carries a byte change (action-contracts `DiscardIfNoop`).
|
|
61
|
-
*/
|
|
52
|
+
/** A structural edit that can change nothing, so the commit discards its snapshot. Never on
|
|
53
|
+
* content or metadata commits, whose `noop` still carries a byte change (`DiscardIfNoop`). */
|
|
62
54
|
discardIfNoop?: boolean;
|
|
55
|
+
/** A local position the list's fix-up updates in place, read back by the landing. */
|
|
56
|
+
trackCaret?: TrackedPosition;
|
|
63
57
|
}
|
|
64
58
|
export interface CommitScope {
|
|
65
|
-
/**
|
|
59
|
+
/** This list's document path: empty at the root. */
|
|
60
|
+
readonly path: DocPath;
|
|
61
|
+
/** How the editor reads its bytes: the reading-mode check and the reparse grammar. */
|
|
62
|
+
readonly reading: Reading;
|
|
63
|
+
/** How the caret arrived; a keystroke's write forgets it. */
|
|
64
|
+
readonly caretMemory: Pick<CaretMemory, 'forget'>;
|
|
65
|
+
/** Read only; mutation goes through the commit's copied view, never this. */
|
|
66
66
|
children(): readonly NodeView[];
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
/** The list as a write target before any write: its container and line ending, and at the
|
|
68
|
+
* root the document with its trailing blank line. What the write rule and the trial read. */
|
|
69
|
+
target(): WriteTarget;
|
|
70
|
+
/** The id the typing batch keys on for child `i`. */
|
|
71
|
+
idAt(i: number): string;
|
|
72
|
+
/** Where the caret goes once child `i` is gone, read after the commit that removed it. */
|
|
73
|
+
survivor(i: number, gesture: RemovalGesture): CaretPosition | null;
|
|
74
|
+
/** An empty replaceBlock emits `delete` (container) or `replaceBlock{count:0}` (top-level). */
|
|
69
75
|
collapseEmptyReplaceToDelete: boolean;
|
|
70
|
-
|
|
76
|
+
/** Resolves to whether bytes landed. */
|
|
77
|
+
commit(args: ScopeCommitArgs): Promise<boolean>;
|
|
78
|
+
/** One keystroke into child `i`, grouped with its typing burst: the burst's undo entry is on
|
|
79
|
+
* the stack before `work` starts, and whatever `work` commits before it first yields joins it. */
|
|
80
|
+
typeIn<T>(i: number, preEditOffset: number, work: () => Promise<T>): Promise<T>;
|
|
81
|
+
/** The keystroke's in-place write, for a write the trial reparse keeps in its block. */
|
|
82
|
+
writeInPlace(i: number, write: LegalWrite, caret: number): InPlaceResult;
|
|
83
|
+
/** A position below child `i`. */
|
|
84
|
+
at(i: number, subPath: readonly number[], offset: number): CaretPosition;
|
|
85
|
+
/** Put the caret at `pos` through the editor's caret landing, for an edit with no commit. */
|
|
86
|
+
land(pos: CaretPosition): Promise<LandingOutcome>;
|
|
71
87
|
}
|
|
72
|
-
/** The byte/settle sinks' owner answer for a container commit's own scope — {@link MutationView}'s twin. */
|
|
73
|
-
export declare const scopeParentOf: (scope: ContainerScope) => {
|
|
74
|
-
children: CstNode[];
|
|
75
|
-
ownerKind: "heading" | "setextHeading" | "paragraph" | "fencedCode" | "thematicBreak" | "indentedCode" | "htmlBlock" | "linkReferenceDefinition" | "tableCell" | "unrecognized" | "blockquote" | "list" | "listItem" | "table" | "tableRow" | import("../plugin").PluginBlockKind;
|
|
76
|
-
owner: CstNode;
|
|
77
|
-
};
|
|
78
88
|
export declare function createTopLevelScope(deps: EditorActionsDeps, controller: UndoController): CommitScope;
|
|
79
89
|
export declare function createContainerScope(state: BlockListState, deps: NestedActionsDeps): CommitScope;
|
|
90
|
+
/** The list at `parentPath` (the root's at `[]`), null where no container stands; build it after a
|
|
91
|
+
* gesture's earlier commit. */
|
|
92
|
+
export declare function createPathScope(root: EditorRoot, parentPath: DocPath): CommitScope | null;
|
|
@@ -1,76 +1,128 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* the
|
|
5
|
-
* G1.16 stays the runtime belt for the JS callers types don't bind.
|
|
2
|
+
* What the shared block-edit core needs of one block list, the document root or a container.
|
|
3
|
+
* The factories here are the only place the commit's document-absolute paths (`DocPath`) are
|
|
4
|
+
* made; the core hands over local indices only, and a dev-mode check covers JS callers.
|
|
6
5
|
*/
|
|
6
|
+
import { blockNodeAt, documentBody } from '../tree-operations/node-primitives';
|
|
7
7
|
import { ensureUnsharedPath, ensureUnsharedChild } from '../tree-operations';
|
|
8
|
+
import { containerScopeState } from '../tree-operations/paste/parent-scope';
|
|
8
9
|
import { asDocPath } from '../selection/path-math';
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
owner: scope.node
|
|
15
|
-
});
|
|
10
|
+
import { survivorAfterRemoval } from '../selection/caret-target';
|
|
11
|
+
import { docPathFrom, extendDocPath } from '../cursor/coordinate-spaces';
|
|
12
|
+
import { getStateForNode } from '../reactivity/state-registry';
|
|
13
|
+
import { createLeafTyping } from './leaf-write';
|
|
14
|
+
import { createContainerEditActions } from './container-edit';
|
|
16
15
|
// ── Top-level adapter ────────────────────────────────────────────────────────
|
|
17
16
|
export function createTopLevelScope(deps, controller) {
|
|
17
|
+
const typing = createLeafTyping(deps, controller);
|
|
18
18
|
return {
|
|
19
|
+
path: asDocPath([]),
|
|
20
|
+
get reading() {
|
|
21
|
+
return deps.reading;
|
|
22
|
+
},
|
|
23
|
+
caretMemory: deps.caretMemory,
|
|
19
24
|
children: () => deps.doc.children,
|
|
20
|
-
|
|
25
|
+
target: () => deps.doc,
|
|
26
|
+
idAt: (i) => deps.blockIds[i],
|
|
27
|
+
survivor: (i, gesture) => survivorAfterRemoval(deps.doc, [i], gesture),
|
|
21
28
|
collapseEmptyReplaceToDelete: false,
|
|
22
|
-
commit({ snapshot, eventTarget, op, mutate, afterTick, touchedNodes, discardIfNoop }) {
|
|
29
|
+
commit({ snapshot, eventTarget, op, mutate, afterTick, landing, reveal, touchedNodes, discardIfNoop, trackCaret }) {
|
|
23
30
|
return controller.commitStructural({
|
|
24
|
-
snapshot: snapshot
|
|
25
|
-
? 'skip'
|
|
26
|
-
: { path: asDocPath([snapshot.index]), offset: snapshot.offset },
|
|
31
|
+
snapshot: { path: asDocPath([snapshot.index]), offset: snapshot.offset },
|
|
27
32
|
mutate: (children) => mutate({
|
|
28
|
-
children,
|
|
33
|
+
body: documentBody(deps.doc, children),
|
|
29
34
|
sharing: deps.sharing,
|
|
30
|
-
|
|
31
|
-
grammar: deps.grammar,
|
|
32
|
-
getPresentationMode: deps.getPresentationMode,
|
|
33
|
-
linkRef: deps.linkRef,
|
|
35
|
+
reading: deps.reading,
|
|
34
36
|
unshareChild: (i) => ensureUnsharedPath({ children }, [i], deps.sharing)[0]
|
|
35
37
|
}),
|
|
36
38
|
op: { ...op, eventPath: asDocPath([eventTarget]) },
|
|
37
39
|
afterTick,
|
|
40
|
+
landing,
|
|
41
|
+
reveal,
|
|
38
42
|
touchedNodes,
|
|
39
|
-
discardIfNoop
|
|
43
|
+
discardIfNoop,
|
|
44
|
+
trackCaret
|
|
40
45
|
});
|
|
41
|
-
}
|
|
46
|
+
},
|
|
47
|
+
typeIn: (i, preEditOffset, work) => typing.typeInLeaf(docPathFrom([i]), preEditOffset, deps.blockIds[i], work),
|
|
48
|
+
writeInPlace: (i, write, caret) => typing.writeLeafInPlace(docPathFrom([i]), write, caret),
|
|
49
|
+
at: (i, subPath, offset) => ({ path: docPathFrom([i, ...subPath]), offset }),
|
|
50
|
+
land: (pos) => deps.caretLanding.land(pos)
|
|
42
51
|
};
|
|
43
52
|
}
|
|
44
|
-
// ── Container adapter ────────────────────────────────────────────────────────
|
|
45
53
|
export function createContainerScope(state, deps) {
|
|
54
|
+
return containerScope({
|
|
55
|
+
node: () => deps.node,
|
|
56
|
+
path: () => deps.path,
|
|
57
|
+
state,
|
|
58
|
+
reading: () => deps.reading,
|
|
59
|
+
caretMemory: deps.caretMemory,
|
|
60
|
+
containerEdit: deps.parent.containerEdit
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
/** The list at `parentPath` (the root's at `[]`), null where no container stands; build it after a
|
|
64
|
+
* gesture's earlier commit. */
|
|
65
|
+
export function createPathScope(root, parentPath) {
|
|
66
|
+
const { deps, controller } = root;
|
|
67
|
+
if (parentPath.length === 0)
|
|
68
|
+
return createTopLevelScope(deps, controller);
|
|
69
|
+
const node = blockNodeAt(deps.doc, parentPath);
|
|
70
|
+
if (!node?.children)
|
|
71
|
+
return null;
|
|
72
|
+
return containerScope({
|
|
73
|
+
node: () => blockNodeAt(deps.doc, parentPath) ?? node,
|
|
74
|
+
path: () => parentPath,
|
|
75
|
+
state: containerScopeState({ resolveState: getStateForNode }, node),
|
|
76
|
+
reading: () => deps.reading,
|
|
77
|
+
caretMemory: deps.caretMemory,
|
|
78
|
+
containerEdit: createContainerEditActions(deps, controller)
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
function containerScope(parts) {
|
|
46
82
|
return {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
83
|
+
get path() {
|
|
84
|
+
return docPathFrom(parts.path());
|
|
85
|
+
},
|
|
86
|
+
get reading() {
|
|
87
|
+
return parts.reading();
|
|
88
|
+
},
|
|
89
|
+
caretMemory: parts.caretMemory,
|
|
90
|
+
// A collapse at this container's own index detaches it (`tree-operations/chain-rebuild.ts`),
|
|
91
|
+
// so a post-commit read can find the container gone rather than merely empty.
|
|
92
|
+
children: () => parts.node()?.children ?? [],
|
|
93
|
+
target: () => ({
|
|
94
|
+
children: parts.node()?.children ?? [],
|
|
95
|
+
owner: parts.node(),
|
|
96
|
+
lineEnding: parts.containerEdit.lineEnding()
|
|
97
|
+
}),
|
|
98
|
+
idAt: (i) => parts.state.innerBlockIds[i],
|
|
99
|
+
survivor: (i, gesture) => parts.containerEdit.survivorAfterRemoval(extendDocPath(parts.path(), i), gesture),
|
|
51
100
|
collapseEmptyReplaceToDelete: true,
|
|
52
|
-
commit({ snapshot, eventTarget, op, mutate, afterTick, discardIfNoop }) {
|
|
53
|
-
return
|
|
54
|
-
containerNode:
|
|
55
|
-
path:
|
|
56
|
-
state,
|
|
57
|
-
snapshot: snapshot
|
|
58
|
-
|
|
59
|
-
:
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
ownerKind: scope.node.kind,
|
|
64
|
-
owner: scope.node,
|
|
65
|
-
grammar: deps.grammar,
|
|
66
|
-
getPresentationMode: deps.getPresentationMode,
|
|
67
|
-
linkRef: deps.linkRef,
|
|
68
|
-
unshareChild: (i) => ensureUnsharedChild(scope.node, i, scope.sharing)
|
|
101
|
+
commit({ snapshot, eventTarget, op, mutate, afterTick, landing, reveal, discardIfNoop, trackCaret }) {
|
|
102
|
+
return parts.containerEdit.commitContainer({
|
|
103
|
+
containerNode: parts.node(),
|
|
104
|
+
path: parts.path(),
|
|
105
|
+
state: parts.state,
|
|
106
|
+
snapshot: { path: extendDocPath(parts.path(), snapshot.index), offset: snapshot.offset },
|
|
107
|
+
mutate: (view) => mutate({
|
|
108
|
+
body: view.body,
|
|
109
|
+
sharing: view.sharing,
|
|
110
|
+
reading: parts.reading(),
|
|
111
|
+
unshareChild: (i) => ensureUnsharedChild(view.node, i, view.sharing)
|
|
69
112
|
}),
|
|
70
|
-
op: { ...op, eventPath: extendDocPath(
|
|
113
|
+
op: { ...op, eventPath: extendDocPath(parts.path(), eventTarget) },
|
|
71
114
|
afterTick,
|
|
72
|
-
|
|
115
|
+
landing,
|
|
116
|
+
reveal,
|
|
117
|
+
discardIfNoop,
|
|
118
|
+
trackCaret
|
|
73
119
|
});
|
|
74
|
-
}
|
|
120
|
+
},
|
|
121
|
+
typeIn: (i, preEditOffset, work) => parts.containerEdit.typeInLeaf(extendDocPath(parts.path(), i), preEditOffset, parts.state.innerBlockIds[i], work),
|
|
122
|
+
writeInPlace: (i, write, caret) => parts.containerEdit.writeLeafInPlace(extendDocPath(parts.path(), i), write, caret),
|
|
123
|
+
at: (i, subPath, offset) => ({ path: docPathFrom([...parts.path(), i, ...subPath]), offset }),
|
|
124
|
+
// Through the editor root rather than this list's refs: a write that changed this
|
|
125
|
+
// container's kind replaced its component, and its refs with it.
|
|
126
|
+
land: (pos) => parts.containerEdit.land(pos)
|
|
75
127
|
};
|
|
76
128
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* `
|
|
4
|
-
* guards and the one per-level body the core can't share, `updateBlockContent`.
|
|
2
|
+
* The top-level BlockEditActions: the shared `block-edit-core` against a top-level
|
|
3
|
+
* `CommitScope`, with the edge guards the root adds.
|
|
5
4
|
*/
|
|
6
5
|
import type { BlockEditActions } from '../action-contracts';
|
|
7
6
|
import type { EditorActionsDeps, UndoController } from './deps';
|
|
@@ -1,111 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* `
|
|
4
|
-
* guards and the one per-level body the core can't share, `updateBlockContent`.
|
|
2
|
+
* The top-level BlockEditActions: the shared `block-edit-core` against a top-level
|
|
3
|
+
* `CommitScope`, with the edge guards the root adds.
|
|
5
4
|
*/
|
|
6
|
-
import {
|
|
7
|
-
import { updateNodeContent as performUpdate, ensureUnsharedPath } from '../tree-operations';
|
|
8
|
-
import { publishScopeFold } from './ancestry-folds';
|
|
9
|
-
import { stampStructuralChange } from '../tree-operations/structural-change';
|
|
5
|
+
import { documentLineEnding } from '../core/lines';
|
|
10
6
|
import { createTopLevelScope } from './block-edit-scope';
|
|
11
|
-
import { createBlockEditCore } from './block-edit-core';
|
|
7
|
+
import { contentUpdate, createBlockEditCore } from './block-edit-core';
|
|
12
8
|
import { withEnterCompletion } from './enter-completion';
|
|
13
|
-
import { previewContentReparse, focusAfterContentReplace } from './replacement-focus';
|
|
14
9
|
export function createBlockEditActions(deps, controller) {
|
|
15
10
|
const scope = createTopLevelScope(deps, controller);
|
|
16
11
|
const core = createBlockEditCore(scope);
|
|
17
|
-
// The keystroke's own work, split out so `updateBlockContent` owns the batch ceremony
|
|
18
|
-
// around it and nothing inside can return past the pause arm.
|
|
19
|
-
async function applyContentUpdate(blockIndex, text, preEditOffset, postEditFocusOffset) {
|
|
20
|
-
// The structural path's live mutation runs inside the ceremony, so a
|
|
21
|
-
// multi-block splice never touches the live children array out-of-commit.
|
|
22
|
-
const preview = previewContentReparse(deps.doc.children[blockIndex], text, deps.grammar, undefined, blockIndex === deps.doc.children.length - 1 ? deps.doc.suffix : '');
|
|
23
|
-
if (preview.op !== 'noop') {
|
|
24
|
-
const focusOffset = postEditFocusOffset ?? preEditOffset ?? 0;
|
|
25
|
-
let settled = { change: { op: 'noop' }, textStart: 0 };
|
|
26
|
-
await scope.commit({
|
|
27
|
-
snapshot: 'skip',
|
|
28
|
-
eventTarget: blockIndex,
|
|
29
|
-
op: { kind: 'updateContent', detail: { length: text.length } },
|
|
30
|
-
// ownerKind undefined is the ANSWER, not an omission: the document root
|
|
31
|
-
// imposes no body grammar. The suffix rides as accessors so the tail
|
|
32
|
-
// settle folds against the live document.
|
|
33
|
-
mutate: (view) => {
|
|
34
|
-
view.unshareChild(blockIndex);
|
|
35
|
-
settled = performUpdate({
|
|
36
|
-
children: view.children,
|
|
37
|
-
ownerKind: undefined,
|
|
38
|
-
owner: undefined,
|
|
39
|
-
get suffix() {
|
|
40
|
-
return deps.doc.suffix;
|
|
41
|
-
},
|
|
42
|
-
set suffix(value) {
|
|
43
|
-
deps.doc.suffix = value;
|
|
44
|
-
}
|
|
45
|
-
}, blockIndex, text, deps.grammar, view.sharing);
|
|
46
|
-
stampStructuralChange(view.children, settled.change, view.sharing);
|
|
47
|
-
return settled.change;
|
|
48
|
-
},
|
|
49
|
-
afterTick: () => focusAfterContentReplace([], blockIndex, settled, focusOffset, scope)
|
|
50
|
-
});
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
// Routine typing: an out-of-ceremony in-place write, so copy the node first when a
|
|
54
|
-
// snapshot shares it. Slotless parent on purpose — the preview already routed every
|
|
55
|
-
// suffix materialization into the ceremony, so none can happen here.
|
|
56
|
-
ensureUnsharedPath(deps.doc, [blockIndex], deps.sharing);
|
|
57
|
-
const settled = performUpdate({ children: deps.doc.children, ownerKind: undefined, owner: undefined }, blockIndex, text, deps.grammar, deps.sharing);
|
|
58
|
-
// A blank-fill settle can still FOLD here — the single-node preview probe has no
|
|
59
|
-
// neighbour to absorb it — so this path publishes its own descriptor and re-lands the
|
|
60
|
-
// caret, which the ceremony would otherwise have done.
|
|
61
|
-
if (settled.change.op !== 'noop')
|
|
62
|
-
publishScopeFold(deps, undefined, settled.change);
|
|
63
|
-
// After that publish, as the ceremony announces after its own, and ahead of the no-fold
|
|
64
|
-
// return: the leaf's raw is already written, and the ordinary keystroke settles to `noop`.
|
|
65
|
-
deps.bumpContentVersion();
|
|
66
|
-
if (settled.change.op === 'noop')
|
|
67
|
-
return;
|
|
68
|
-
await tick();
|
|
69
|
-
focusAfterContentReplace([], blockIndex, settled, postEditFocusOffset ?? preEditOffset ?? 0, scope);
|
|
70
|
-
}
|
|
71
12
|
const actions = {
|
|
72
13
|
// ── Structural split / merge / delete (shared core) ───────────────────
|
|
73
14
|
splitBlock: (blockIndex, offset) => core.split(blockIndex, offset),
|
|
74
15
|
descendToBody: (blockIndex) => core.descendToBody(blockIndex),
|
|
75
16
|
insertParagraph: (boundaryIndex, text) => core.insertParagraph(boundaryIndex, text),
|
|
76
17
|
async mergeWithPrevious(blockIndex) {
|
|
77
|
-
deps.
|
|
78
|
-
deps.edgeAffinity.reset();
|
|
18
|
+
deps.caretMemory.forget();
|
|
79
19
|
if (blockIndex <= 0)
|
|
80
|
-
return;
|
|
81
|
-
|
|
20
|
+
return false;
|
|
21
|
+
return core.mergeWithPreviousInterior(blockIndex);
|
|
82
22
|
},
|
|
83
23
|
async mergeWithNext(blockIndex) {
|
|
84
|
-
deps.
|
|
85
|
-
deps.edgeAffinity.reset();
|
|
24
|
+
deps.caretMemory.forget();
|
|
86
25
|
if (blockIndex >= deps.doc.children.length - 1)
|
|
87
|
-
return;
|
|
88
|
-
|
|
26
|
+
return false;
|
|
27
|
+
return core.mergeWithNextInterior(blockIndex);
|
|
89
28
|
},
|
|
90
|
-
deleteBlock: (blockIndex) => core.deleteInterior(blockIndex),
|
|
29
|
+
deleteBlock: (blockIndex, gesture) => core.deleteInterior(blockIndex, gesture),
|
|
91
30
|
updateBlockMetadata: (blockIndex, metadata, options) => core.updateBlockMetadata(blockIndex, metadata, options),
|
|
92
|
-
replaceBlock: (blockIndex, replacement, focus, options) => core.replaceBlock(blockIndex, replacement, focus, options),
|
|
93
|
-
|
|
94
|
-
async updateBlockContent(blockIndex, text, preEditOffset, postEditFocusOffset) {
|
|
95
|
-
deps.stickyColumn.reset();
|
|
96
|
-
deps.edgeAffinity.reset();
|
|
97
|
-
// Keyed by block, not by slot: a bare index identifies the position, so a
|
|
98
|
-
// different block arriving at the same slot would continue its batch.
|
|
99
|
-
controller.pushUndoSnapshotDebounced([blockIndex], preEditOffset ?? 0, deps.blockIds[blockIndex]);
|
|
100
|
-
// The pause window opens once this keystroke's own work is done, throw included: an
|
|
101
|
-
// unarmed batch never ends by pause and would swallow every later keystroke.
|
|
102
|
-
try {
|
|
103
|
-
await applyContentUpdate(blockIndex, text, preEditOffset, postEditFocusOffset);
|
|
104
|
-
}
|
|
105
|
-
finally {
|
|
106
|
-
controller.armUndoPause();
|
|
107
|
-
}
|
|
108
|
-
}
|
|
31
|
+
replaceBlock: async (blockIndex, replacement, focus, options) => (await core.replaceBlock(blockIndex, replacement, focus, options)) !== null,
|
|
32
|
+
updateBlockContent: contentUpdate(scope)
|
|
109
33
|
};
|
|
110
|
-
return withEnterCompletion(actions, (blockIndex) => scope.children()[blockIndex]);
|
|
34
|
+
return withEnterCompletion(actions, (blockIndex) => scope.children()[blockIndex], deps.reading.grammar, () => documentLineEnding(deps.doc));
|
|
111
35
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* Undo and redo: capture the current state for the opposite stack, install the entry's
|
|
3
|
+
* snapshot, restore its selection. Snapshots share the live tree's nodes, so a restore marks
|
|
4
|
+
* the tree shared again and copies the children array; otherwise a later commit would write
|
|
5
|
+
* into the stack's own entry.
|
|
6
6
|
*/
|
|
7
7
|
import type { HistoryActions } from '../../action-contracts';
|
|
8
8
|
import type { EditorActionsDeps, UndoController } from '../deps';
|
|
@@ -1,62 +1,59 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* Undo and redo: capture the current state for the opposite stack, install the entry's
|
|
3
|
+
* snapshot, restore its selection. Snapshots share the live tree's nodes, so a restore marks
|
|
4
|
+
* the tree shared again and copies the children array; otherwise a later commit would write
|
|
5
|
+
* into the stack's own entry.
|
|
6
6
|
*/
|
|
7
7
|
import { tick } from 'svelte';
|
|
8
|
-
import { isGapSelection } from '../../undo/types';
|
|
9
8
|
import { assertInvariant } from '../../assert';
|
|
10
9
|
import { checkSnapshotIntegrity } from '../../invariants/snapshot-integrity';
|
|
11
|
-
import {
|
|
10
|
+
import { admitsWrite } from './reading-write-gate';
|
|
12
11
|
export function createHistoryActions(deps, controller) {
|
|
13
12
|
async function restore(entry, op) {
|
|
14
13
|
assertInvariant('snapshot-integrity', () => {
|
|
15
14
|
const violation = checkSnapshotIntegrity(entry);
|
|
16
15
|
return violation && { ...violation, message: `${op}: ${violation.message}` };
|
|
17
16
|
});
|
|
18
|
-
//
|
|
19
|
-
// whichever side of the
|
|
20
|
-
|
|
17
|
+
// Before the swap itself, so a caret placement waiting across it sees the new counter
|
|
18
|
+
// whichever side of the document write its scroll-into-view finishes on.
|
|
19
|
+
deps.caretLanding.noteTreeSwap();
|
|
21
20
|
deps.sharing.markSnapshotTaken();
|
|
21
|
+
// The standing range addresses the outgoing tree; read during the render below, its path
|
|
22
|
+
// could name another block in the incoming one.
|
|
23
|
+
deps.selectionState.dropForDocumentSwap();
|
|
22
24
|
deps.setDoc({ ...entry.snapshot, children: [...entry.snapshot.children] });
|
|
23
25
|
deps.bumpContentVersion();
|
|
24
26
|
// A copy: live state splices this array in place, and the entry stays on the stack.
|
|
25
27
|
deps.setBlockIds([...entry.blockIds]);
|
|
26
|
-
// The tick belongs to the
|
|
27
|
-
//
|
|
28
|
+
// The tick belongs to the document swap above, not to the restore: the new tree must
|
|
29
|
+
// render before the selection restore can scroll to or address anything in it.
|
|
28
30
|
await tick();
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
// An entry can name a slot that never existed in its own snapshot (append-past-end declares
|
|
41
|
-
// the one-past-the-end coordinate as its restore fallback). The seam declines without side
|
|
42
|
-
// effects, so clearing is this caller's policy: the one place that knows the doc changed.
|
|
43
|
-
if (outcome === 'unresolvable')
|
|
44
|
-
deps.selectionState.clear();
|
|
31
|
+
// Into view, not held: a caret the undo put off screen comes to the nearest edge, and one
|
|
32
|
+
// already on screen stays where it is.
|
|
33
|
+
const outcome = await deps.caretLanding.restore(entry.selection, { reveal: 'into-view' });
|
|
34
|
+
// An entry can name an index its own snapshot never had, and the restore then declines. Clear
|
|
35
|
+
// here and announce it, since the swap already dropped the range without a notification.
|
|
36
|
+
if (outcome === 'unresolvable') {
|
|
37
|
+
deps.selectionState.batch(() => {
|
|
38
|
+
deps.selectionState.clear();
|
|
39
|
+
deps.selectionState.announceSelection();
|
|
40
|
+
});
|
|
41
|
+
}
|
|
45
42
|
deps.events.emit('edit', { op, path: [], timestamp: Date.now() });
|
|
46
43
|
}
|
|
47
|
-
// Flush, not discard:
|
|
48
|
-
//
|
|
49
|
-
// its bytes aren't dropped from the edit channel.
|
|
44
|
+
// Flush, not discard: the pending batch's `input` event must still be emitted, and its timer
|
|
45
|
+
// must not push a stale snapshot after the stack moves.
|
|
50
46
|
function beginHistorySwap() {
|
|
51
|
-
deps.
|
|
52
|
-
deps.edgeAffinity.reset();
|
|
47
|
+
deps.caretMemory.forget();
|
|
53
48
|
controller.flushDebouncedCheckpoint();
|
|
54
49
|
}
|
|
55
50
|
return {
|
|
56
51
|
async requestUndo() {
|
|
52
|
+
if (!admitsWrite(deps.reading, 'undo'))
|
|
53
|
+
return;
|
|
57
54
|
beginHistorySwap();
|
|
58
|
-
// Check the stack before capturing: captureCurrentState marks the whole tree
|
|
59
|
-
//
|
|
55
|
+
// Check the stack before capturing: captureCurrentState marks the whole tree as
|
|
56
|
+
// shared with a snapshot, forcing the next edit to copy its path first.
|
|
60
57
|
if (!deps.undoManager.canUndo)
|
|
61
58
|
return;
|
|
62
59
|
const entry = deps.undoManager.undo(controller.captureCurrentState());
|
|
@@ -65,6 +62,8 @@ export function createHistoryActions(deps, controller) {
|
|
|
65
62
|
await restore(entry, 'undo');
|
|
66
63
|
},
|
|
67
64
|
async requestRedo() {
|
|
65
|
+
if (!admitsWrite(deps.reading, 'redo'))
|
|
66
|
+
return;
|
|
68
67
|
beginHistorySwap();
|
|
69
68
|
if (!deps.undoManager.canRedo)
|
|
70
69
|
return;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reading mode writes no bytes, and every entry point that writes the document asks here first.
|
|
3
|
+
* A write in reading mode is declined, and a dev build names the operation and its caller, since
|
|
4
|
+
* the gesture that reached it offered a write the mode should not have. Ask synchronously, before
|
|
5
|
+
* the first await, or the report loses the caller.
|
|
6
|
+
*/
|
|
7
|
+
import type { Reading } from '../../schema/reading';
|
|
8
|
+
export declare const READING_WRITE_TAG = "reading-write";
|
|
9
|
+
/**
|
|
10
|
+
* Whether a write naming `op` may land: false in reading mode, with a dev warning that names the
|
|
11
|
+
* block kind `kindOf` answers, so a plugin author can tell which of their blocks asked.
|
|
12
|
+
*/
|
|
13
|
+
export declare function admitsWrite(reading: Reading, op: string, kindOf?: () => string | undefined): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* For an undo snapshot pushed ahead of a write: declined in reading mode so no empty entry is
|
|
16
|
+
* left on the stack, and silent, because the write that follows reports itself.
|
|
17
|
+
*/
|
|
18
|
+
export declare function admitsSnapshot(reading: Reading): boolean;
|