@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,11 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Enter completion: a lone typed line a registered completer recognises becomes the structure
|
|
3
|
+
* it opens instead of splitting. `planEnterCompletion` is pure; `withEnterCompletion` is the
|
|
4
|
+
* one place the plan is applied, wrapped around a composed `splitBlock`.
|
|
5
5
|
*/
|
|
6
|
+
import { type LineEnding } from '../core/lines';
|
|
6
7
|
import type { BlockEditActions } from '../action-contracts';
|
|
7
8
|
import type { CstNode } from '../core/nodes';
|
|
8
9
|
import type { NodeView } from '../core/node-views';
|
|
10
|
+
import type { GrammarView } from '../schema/block-openers';
|
|
9
11
|
export interface EnterCompletion {
|
|
10
12
|
replacement: CstNode[];
|
|
11
13
|
caret: {
|
|
@@ -13,15 +15,10 @@ export interface EnterCompletion {
|
|
|
13
15
|
offset: number;
|
|
14
16
|
};
|
|
15
17
|
}
|
|
16
|
-
/**
|
|
17
|
-
*
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
export declare function withEnterCompletion(blockEdit: BlockEditActions, childAt: (index: number) => NodeView | undefined): BlockEditActions;
|
|
24
|
-
/** The completion a press at `offset` earns, or null when the block or the caret disqualifies it. */
|
|
25
|
-
export declare function planEnterCompletion(node: NodeView | undefined, offset: number): EnterCompletion | null;
|
|
26
|
-
/** The completion a keystroke earns, consulting only the completers that answer on type. */
|
|
27
|
-
export declare function planTypedCompletion(node: NodeView | undefined, offset: number): EnterCompletion | null;
|
|
18
|
+
/** Wraps a composed `splitBlock` with the completer check, above the container overrides so a
|
|
19
|
+
* container replacing `splitBlock` keeps the completion for its subtree. */
|
|
20
|
+
export declare function withEnterCompletion(blockEdit: BlockEditActions, childAt: (index: number) => NodeView | undefined, grammar: GrammarView, getLineEnding: () => LineEnding): BlockEditActions;
|
|
21
|
+
/** The completion Enter at `offset` produces, or null when the block or the caret rules it out. */
|
|
22
|
+
export declare function planEnterCompletion(node: NodeView | undefined, offset: number, grammar: GrammarView, lineEnding: LineEnding): EnterCompletion | null;
|
|
23
|
+
/** The completion a keystroke produces, asking only the completers that answer on type. */
|
|
24
|
+
export declare function planTypedCompletion(node: NodeView | undefined, offset: number, grammar: GrammarView, lineEnding: LineEnding): EnterCompletion | null;
|
|
@@ -1,57 +1,56 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Enter completion: a lone typed line a registered completer recognises becomes the structure
|
|
3
|
+
* it opens instead of splitting. `planEnterCompletion` is pure; `withEnterCompletion` is the
|
|
4
|
+
* one place the plan is applied, wrapped around a composed `splitBlock`.
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
7
|
-
import { displayLength, splitLines, trailingLineEnding } from '../core/lines';
|
|
6
|
+
import { readBlocks } from '../core/parser';
|
|
7
|
+
import { displayLength, isBlankText, splitLines, trailingLineEnding } from '../core/lines';
|
|
8
|
+
import { withStoredCaret } from './stored-caret';
|
|
8
9
|
import { getBlockKindDescriptor } from '../schema/block-kind-descriptor';
|
|
9
10
|
import { completeLineOnType, completeTypedLine } from '../schema/block-completions';
|
|
10
|
-
/**
|
|
11
|
-
*
|
|
12
|
-
|
|
13
|
-
* `splitBlock` cannot take the completion arm out of its subtree. One press consults once per
|
|
14
|
-
* NODE: the blockquote exit's hop to the parent scope is a second consult, on a different node,
|
|
15
|
-
* and an always-declining one — a container is never a prose line.
|
|
16
|
-
*/
|
|
17
|
-
export function withEnterCompletion(blockEdit, childAt) {
|
|
11
|
+
/** Wraps a composed `splitBlock` with the completer check, above the container overrides so a
|
|
12
|
+
* container replacing `splitBlock` keeps the completion for its subtree. */
|
|
13
|
+
export function withEnterCompletion(blockEdit, childAt, grammar, getLineEnding) {
|
|
18
14
|
return {
|
|
19
15
|
...blockEdit,
|
|
20
16
|
async splitBlock(index, offset) {
|
|
21
|
-
const completion = planEnterCompletion(childAt(index), offset);
|
|
22
|
-
if (!completion)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
// `snapshotOffset` is where the caret WAS, so one undo restores the typed line with the
|
|
17
|
+
const completion = planEnterCompletion(childAt(index), offset, grammar, getLineEnding());
|
|
18
|
+
if (!completion)
|
|
19
|
+
return blockEdit.splitBlock(index, offset);
|
|
20
|
+
// `snapshotOffset` is where the caret was, so one undo restores the typed line with the
|
|
27
21
|
// caret at its end rather than in front of it.
|
|
28
|
-
|
|
22
|
+
return blockEdit.replaceBlock(index, completion.replacement, { replacementIndex: 0, ...completion.caret }, { snapshotOffset: offset });
|
|
29
23
|
},
|
|
30
|
-
//
|
|
31
|
-
//
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
24
|
+
// A line an on-type completer recognises forms its structure at once. The write lands
|
|
25
|
+
// first, so the typed line is its own undo step and the replacement covers the stored bytes.
|
|
26
|
+
updateBlockContent(index, text, mode, preEditOffset, postEditFocusOffset) {
|
|
27
|
+
const write = blockEdit.updateBlockContent(index, text, mode, preEditOffset, postEditFocusOffset);
|
|
28
|
+
if (!write.admitted)
|
|
29
|
+
return write;
|
|
30
|
+
const plan = () => planTypedCompletion(childAt(index), write.caret, grammar, getLineEnding());
|
|
31
|
+
// A write that keeps the caret landed in place already, so its completion is known now.
|
|
32
|
+
const keepsCaret = write.keepsCaret && plan() === null;
|
|
33
|
+
const completed = write.then(async (wrote) => {
|
|
34
|
+
const completion = plan();
|
|
35
|
+
if (!completion)
|
|
36
|
+
return wrote;
|
|
37
|
+
const replaced = await blockEdit.replaceBlock(index, completion.replacement, { replacementIndex: 0, ...completion.caret }, { snapshotOffset: write.caret });
|
|
38
|
+
return wrote || replaced;
|
|
39
|
+
});
|
|
40
|
+
return withStoredCaret(completed, write.caret, write.storedOffset, keepsCaret);
|
|
43
41
|
}
|
|
44
42
|
};
|
|
45
43
|
}
|
|
46
|
-
/** The completion
|
|
47
|
-
export function planEnterCompletion(node, offset) {
|
|
48
|
-
return planCompletion(node, offset, completeTypedLine);
|
|
44
|
+
/** The completion Enter at `offset` produces, or null when the block or the caret rules it out. */
|
|
45
|
+
export function planEnterCompletion(node, offset, grammar, lineEnding) {
|
|
46
|
+
return planCompletion(node, offset, grammar, lineEnding, (line) => completeTypedLine(line, grammar));
|
|
49
47
|
}
|
|
50
|
-
/** The completion a keystroke
|
|
51
|
-
export function planTypedCompletion(node, offset) {
|
|
52
|
-
return planCompletion(node, offset, completeLineOnType);
|
|
48
|
+
/** The completion a keystroke produces, asking only the completers that answer on type. */
|
|
49
|
+
export function planTypedCompletion(node, offset, grammar, lineEnding) {
|
|
50
|
+
return planCompletion(node, offset, grammar, lineEnding, (line) => completeLineOnType(line, grammar));
|
|
53
51
|
}
|
|
54
|
-
|
|
52
|
+
/** `ending` is the document's, for a typed line that has none of its own. */
|
|
53
|
+
function planCompletion(node, offset, grammar, ending, consult) {
|
|
55
54
|
if (!node)
|
|
56
55
|
return null;
|
|
57
56
|
const line = wholeTypedLine(node);
|
|
@@ -60,20 +59,19 @@ function planCompletion(node, offset, consult) {
|
|
|
60
59
|
const claim = consult(line);
|
|
61
60
|
if (!claim)
|
|
62
61
|
return null;
|
|
63
|
-
// Through the parser rather than a hand-built node, so the
|
|
64
|
-
//
|
|
65
|
-
const lineEnding = trailingLineEnding(node.raw);
|
|
62
|
+
// Through the parser in the editor's grammar rather than a hand-built node, so the new blocks
|
|
63
|
+
// are exactly what a reload of those bytes produces.
|
|
64
|
+
const lineEnding = trailingLineEnding(node.raw, ending);
|
|
66
65
|
const raw = claim.lines.map((text) => text + lineEnding).join('');
|
|
67
|
-
const replacement =
|
|
68
|
-
// A
|
|
69
|
-
//
|
|
70
|
-
|
|
71
|
-
if (replacement.every((node) => node.raw.trim() === ''))
|
|
66
|
+
const replacement = readBlocks(raw, { grammar, scope: 'fragment' }).children;
|
|
67
|
+
// A completion of only blank lines would replace the typed line with a delete; the check is per
|
|
68
|
+
// node because blank lines parse back as empty paragraphs.
|
|
69
|
+
if (replacement.every((node) => isBlankText(node.raw)))
|
|
72
70
|
return null;
|
|
73
71
|
return { replacement, caret: resolveCaret(replacement[0], claim.caret) };
|
|
74
72
|
}
|
|
75
|
-
/** The
|
|
76
|
-
* because the line ending the count depends on is
|
|
73
|
+
/** The completer's line and column as a byte offset inside the node its path addresses. Resolved
|
|
74
|
+
* here because the line ending the count depends on is chosen here, not by the completer. */
|
|
77
75
|
function resolveCaret(minted, caret) {
|
|
78
76
|
let target = minted;
|
|
79
77
|
for (const index of caret.path)
|
|
@@ -82,7 +80,7 @@ function resolveCaret(minted, caret) {
|
|
|
82
80
|
return { path: caret.path, offset: (lines[caret.line]?.start ?? 0) + caret.column };
|
|
83
81
|
}
|
|
84
82
|
/** The one line this block's raw is, or null when it is not a single line of prose whose every
|
|
85
|
-
* byte is content
|
|
83
|
+
* byte is content: a completer must never read a kind's own markers as typed text. */
|
|
86
84
|
function wholeTypedLine(node) {
|
|
87
85
|
const descriptor = getBlockKindDescriptor(node.kind);
|
|
88
86
|
if (descriptor.mergeRole !== 'prose')
|
|
@@ -1,36 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Pure dispatchers for
|
|
3
|
-
*
|
|
2
|
+
* Pure dispatchers for focus across a block list: moveFocus for the root and every container,
|
|
3
|
+
* and focusByPath and focusAtColumn inside a container. Everything comes in as parameters.
|
|
4
4
|
*/
|
|
5
5
|
import type { FocusActions, MoveFocusOptions } from '../../action-contracts';
|
|
6
6
|
import { type BlockComponent, type FocusPosition, type StickyColumnDirection } from '../../block-component';
|
|
7
|
-
import type {
|
|
8
|
-
/**
|
|
7
|
+
import type { CaretMemory } from '../../cursor/caret-memory';
|
|
8
|
+
/** One block list's side of a focus move, the root's or a container's. */
|
|
9
9
|
export interface MoveFocusScope {
|
|
10
|
-
/**
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
/** The child count from the tree: the mounted refs lag a structural edit by a render. */
|
|
11
|
+
count(): number;
|
|
12
|
+
/** Child `index`'s component, scrolled into the mounted range first if it's windowed out. */
|
|
13
|
+
mount(index: number): Promise<BlockComponent | null>;
|
|
14
|
+
/** A move before the first child (-1) or past the last (1): a container hands it to its
|
|
15
|
+
* parent, the root stops or appends a paragraph. */
|
|
16
|
+
leave(step: -1 | 1, position: FocusPosition, options?: MoveFocusOptions): Promise<void>;
|
|
17
|
+
/** Bound to this list's own boundaries (`selection/gap-caret.ts`). */
|
|
18
|
+
gapStop(boundaryIndex: number): boolean;
|
|
19
|
+
/** The move ended on child `index`: its focus call scrolled nothing, so this may. */
|
|
20
|
+
arrived(index: number): void;
|
|
17
21
|
}
|
|
18
|
-
/**
|
|
19
|
-
export declare function dispatchMoveFocus(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
/** The one focus traversal, run by the root and by every container over its own list. */
|
|
23
|
+
export declare function dispatchMoveFocus(scope: MoveFocusScope, index: number, position: FocusPosition, caretMemory: Pick<CaretMemory, 'column' | 'noteExtreme'>, options?: MoveFocusOptions): Promise<void>;
|
|
24
|
+
/** A move handed to `focus`, with the options argument left off when there are none, so the
|
|
25
|
+
* common call keeps two arguments. */
|
|
26
|
+
export declare function delegateMoveFocus(focus: Pick<FocusActions, 'moveFocus'>, index: number, position: FocusPosition, options?: MoveFocusOptions): void | Promise<void>;
|
|
23
27
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
28
|
+
* The direction a FocusPosition implies for traversal. A bare numeric offset is a targeted
|
|
29
|
+
* position with no direction, so 0 tells the caller not to skip.
|
|
26
30
|
*/
|
|
27
31
|
export declare function traversalStep(position: FocusPosition): -1 | 0 | 1;
|
|
28
|
-
/**
|
|
29
|
-
*
|
|
30
|
-
* nothing, so an unmounted `refs[first]` silently no-ops. The caller keeps the target
|
|
31
|
-
* within overscan; anything wider routes through the async `revealByPath`/`revealPath`.
|
|
32
|
-
*/
|
|
32
|
+
/** Scrolls nothing into view, so an unmounted target does nothing; a caller that cannot keep
|
|
33
|
+
* the target mounted goes through `reactivity/child-list.ts :: descendTo`. */
|
|
33
34
|
export declare function dispatchFocusByPath(refs: (BlockComponent | undefined)[], path: number[], offset: number): void;
|
|
34
|
-
/** Null when the path doesn't resolve to a mounted ref. */
|
|
35
|
-
export declare function dispatchGetBlockComponentByPath(refs: (BlockComponent | undefined)[], path: number[]): BlockComponent | null;
|
|
36
35
|
export declare function dispatchFocusAtColumn(refs: (BlockComponent | undefined)[], x: number, from: StickyColumnDirection): void;
|
|
@@ -1,47 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Pure dispatchers for
|
|
3
|
-
*
|
|
2
|
+
* Pure dispatchers for focus across a block list: moveFocus for the root and every container,
|
|
3
|
+
* and focusByPath and focusAtColumn inside a container. Everything comes in as parameters.
|
|
4
4
|
*/
|
|
5
5
|
import { CURSOR_END, CURSOR_START } from '../../block-component';
|
|
6
6
|
import { consumeStickyLanding, verticalArrival } from './focus-landing';
|
|
7
|
-
/**
|
|
8
|
-
export async function dispatchMoveFocus(
|
|
9
|
-
const { childCount, options, gapStop } = scope;
|
|
10
|
-
// Omit the options arg when unset so the common path stays a two-arg call.
|
|
11
|
-
const delegate = (targetIndex) => options
|
|
12
|
-
? parent.focus.moveFocus(targetIndex, position, options)
|
|
13
|
-
: parent.focus.moveFocus(targetIndex, position);
|
|
7
|
+
/** The one focus traversal, run by the root and by every container over its own list. */
|
|
8
|
+
export async function dispatchMoveFocus(scope, index, position, caretMemory, options) {
|
|
14
9
|
const step = traversalStep(position);
|
|
15
|
-
//
|
|
16
|
-
//
|
|
17
|
-
|
|
18
|
-
if (gapStop && step !== 0 && !options?.skipGapStop) {
|
|
19
|
-
if (gapStop(step > 0 ? innerIndex : innerIndex + 1))
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
if (innerIndex < 0) {
|
|
23
|
-
await delegate(parent.index - 1);
|
|
10
|
+
// Before any ref is read, so the tree alone decides the boundary; the list's own edges are
|
|
11
|
+
// boundaries too, which keeps the move from leaving it.
|
|
12
|
+
if (step !== 0 && !options?.skipGapStop && scope.gapStop(step > 0 ? index : index + 1))
|
|
24
13
|
return;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (innerIndex >= upperBound) {
|
|
28
|
-
await delegate(parent.index + 1);
|
|
14
|
+
if (index < 0 || index >= scope.count()) {
|
|
15
|
+
await scope.leave(index < 0 ? -1 : 1, position, options);
|
|
29
16
|
return;
|
|
30
17
|
}
|
|
31
|
-
const block =
|
|
18
|
+
const block = await scope.mount(index);
|
|
19
|
+
const retry = (i) => dispatchMoveFocus(scope, i, position, caretMemory, options);
|
|
32
20
|
if (!block?.focusable) {
|
|
33
|
-
// A
|
|
34
|
-
//
|
|
35
|
-
if (step !== 0)
|
|
36
|
-
await
|
|
37
|
-
}
|
|
21
|
+
// A child that can't take focus must not stop the move: continue in its direction
|
|
22
|
+
// (`docs/design/editor.md` § Focus traversal).
|
|
23
|
+
if (step !== 0)
|
|
24
|
+
await retry(index + step);
|
|
38
25
|
return;
|
|
39
26
|
}
|
|
40
|
-
await consumeStickyLanding(block,
|
|
27
|
+
await consumeStickyLanding(block, index, position, caretMemory, retry);
|
|
28
|
+
scope.arrived(index);
|
|
29
|
+
}
|
|
30
|
+
/** A move handed to `focus`, with the options argument left off when there are none, so the
|
|
31
|
+
* common call keeps two arguments. */
|
|
32
|
+
export function delegateMoveFocus(focus, index, position, options) {
|
|
33
|
+
return options ? focus.moveFocus(index, position, options) : focus.moveFocus(index, position);
|
|
41
34
|
}
|
|
42
35
|
/**
|
|
43
|
-
*
|
|
44
|
-
*
|
|
36
|
+
* The direction a FocusPosition implies for traversal. A bare numeric offset is a targeted
|
|
37
|
+
* position with no direction, so 0 tells the caller not to skip.
|
|
45
38
|
*/
|
|
46
39
|
export function traversalStep(position) {
|
|
47
40
|
if (typeof position === 'object')
|
|
@@ -52,11 +45,8 @@ export function traversalStep(position) {
|
|
|
52
45
|
return -1;
|
|
53
46
|
return 0;
|
|
54
47
|
}
|
|
55
|
-
/**
|
|
56
|
-
*
|
|
57
|
-
* nothing, so an unmounted `refs[first]` silently no-ops. The caller keeps the target
|
|
58
|
-
* within overscan; anything wider routes through the async `revealByPath`/`revealPath`.
|
|
59
|
-
*/
|
|
48
|
+
/** Scrolls nothing into view, so an unmounted target does nothing; a caller that cannot keep
|
|
49
|
+
* the target mounted goes through `reactivity/child-list.ts :: descendTo`. */
|
|
60
50
|
export function dispatchFocusByPath(refs, path, offset) {
|
|
61
51
|
if (path.length === 0) {
|
|
62
52
|
refs[0]?.focus(offset);
|
|
@@ -73,24 +63,12 @@ export function dispatchFocusByPath(refs, path, offset) {
|
|
|
73
63
|
child.focusByPath?.(rest, offset);
|
|
74
64
|
}
|
|
75
65
|
}
|
|
76
|
-
/** Null when the path doesn't resolve to a mounted ref. */
|
|
77
|
-
export function dispatchGetBlockComponentByPath(refs, path) {
|
|
78
|
-
if (path.length === 0)
|
|
79
|
-
return null;
|
|
80
|
-
const [first, ...rest] = path;
|
|
81
|
-
const child = refs[first];
|
|
82
|
-
if (!child)
|
|
83
|
-
return null;
|
|
84
|
-
if (rest.length === 0)
|
|
85
|
-
return child;
|
|
86
|
-
return child.getBlockComponentByPath?.(rest) ?? null;
|
|
87
|
-
}
|
|
88
66
|
export function dispatchFocusAtColumn(refs, x, from) {
|
|
89
67
|
if (refs.length === 0)
|
|
90
68
|
return;
|
|
91
69
|
const indices = from === 'above' ? refs.map((_, i) => i) : refs.map((_, i) => refs.length - 1 - i);
|
|
92
|
-
// Pass over
|
|
93
|
-
//
|
|
70
|
+
// Pass over widget-only children so an entry from above or below lands on the first or
|
|
71
|
+
// last child that has text.
|
|
94
72
|
for (const i of indices) {
|
|
95
73
|
const ref = refs[i];
|
|
96
74
|
if (!ref?.focusable)
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* The last step of a cross-block focus move, once the target block is mounted: the side of a
|
|
3
|
+
* hidden closer, an edge widget, then the caret. A null sticky column is handled here, so
|
|
4
|
+
* `focusAtColumn` always receives a finite x.
|
|
4
5
|
*/
|
|
5
6
|
import { type BlockComponent, type FocusPosition, type StickyColumnDirection } from '../../block-component';
|
|
6
|
-
import type {
|
|
7
|
-
export declare function consumeStickyLanding(block: BlockComponent, index: number, position: FocusPosition,
|
|
8
|
-
/** What a vertical arrival does at a block: enter its widget, pass over it, or
|
|
7
|
+
import type { CaretMemory } from '../../cursor/caret-memory';
|
|
8
|
+
export declare function consumeStickyLanding(block: BlockComponent, index: number, position: FocusPosition, caretMemory: Pick<CaretMemory, 'column' | 'noteExtreme'>, retryAt: (index: number) => Promise<void> | void): Promise<void>;
|
|
9
|
+
/** What a vertical arrival does at a block: enter its widget, pass over it, or place a caret. */
|
|
9
10
|
export type VerticalArrival = 'entered' | 'transparent' | 'seat';
|
|
10
|
-
/**
|
|
11
|
-
*
|
|
12
|
-
* column entry. A widget-only block carries no column, so it is passed over unless its edge widget
|
|
13
|
-
* takes the arrival, which is a stop of its own and reads alike from either side. `'entered'` means
|
|
14
|
-
* the widget ALREADY took it, so the caller stops rather than repeating the entry.
|
|
15
|
-
*/
|
|
11
|
+
/** Whether a vertical move stops at a block: a widget-only block is passed over unless its edge
|
|
12
|
+
* widget takes the arrival (`'entered'`, so the caller must not enter it again). */
|
|
16
13
|
export declare function verticalArrival(block: BlockComponent, from: StickyColumnDirection): VerticalArrival;
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* The last step of a cross-block focus move, once the target block is mounted: the side of a
|
|
3
|
+
* hidden closer, an edge widget, then the caret. A null sticky column is handled here, so
|
|
4
|
+
* `focusAtColumn` always receives a finite x.
|
|
4
5
|
*/
|
|
5
6
|
import { CURSOR_END, CURSOR_START } from '../../block-component';
|
|
6
|
-
export async function consumeStickyLanding(block, index, position,
|
|
7
|
+
export async function consumeStickyLanding(block, index, position, caretMemory, retryAt) {
|
|
8
|
+
// Moving to a block's end is a jump, so each construct decides which side of a hidden
|
|
9
|
+
// closer it means, or the next byte typed joins it (`docs/design/live-mode.md` § 4.2).
|
|
10
|
+
if (position === 'end')
|
|
11
|
+
caretMemory.noteExtreme();
|
|
7
12
|
const isStickyMove = typeof position === 'object' && 'stickyColumnFrom' in position;
|
|
8
13
|
if (isStickyMove) {
|
|
9
14
|
const from = position.stickyColumnFrom;
|
|
@@ -15,14 +20,14 @@ export async function consumeStickyLanding(block, index, position, stickyColumn,
|
|
|
15
20
|
return;
|
|
16
21
|
}
|
|
17
22
|
}
|
|
18
|
-
// Enter an edge widget rather than
|
|
19
|
-
// arrow key produces one visible step.
|
|
23
|
+
// Enter an edge widget rather than putting a caret that does nothing at its boundary, so
|
|
24
|
+
// the arrow key produces one visible step.
|
|
20
25
|
if (position === 'start' && block.enterEdgeWidget?.('start'))
|
|
21
26
|
return;
|
|
22
27
|
if (position === 'end' && block.enterEdgeWidget?.('end'))
|
|
23
28
|
return;
|
|
24
29
|
if (isStickyMove) {
|
|
25
|
-
const x =
|
|
30
|
+
const x = caretMemory.column();
|
|
26
31
|
const from = position.stickyColumnFrom;
|
|
27
32
|
if (x !== null && block.focusAtColumn) {
|
|
28
33
|
block.focusAtColumn(x, from);
|
|
@@ -31,8 +36,8 @@ export async function consumeStickyLanding(block, index, position, stickyColumn,
|
|
|
31
36
|
block.focus(from === 'above' ? CURSOR_START : CURSOR_END);
|
|
32
37
|
return;
|
|
33
38
|
}
|
|
34
|
-
//
|
|
35
|
-
//
|
|
39
|
+
// 'start' and 'end' are arrivals, and the block's focus clamps them to an offset the caret
|
|
40
|
+
// can sit at; a number is a caller that knows its byte (a split's second half), passed through.
|
|
36
41
|
if (typeof position === 'number')
|
|
37
42
|
block.focus(position);
|
|
38
43
|
else if (position === 'start')
|
|
@@ -40,12 +45,8 @@ export async function consumeStickyLanding(block, index, position, stickyColumn,
|
|
|
40
45
|
else
|
|
41
46
|
block.focus(CURSOR_END);
|
|
42
47
|
}
|
|
43
|
-
/**
|
|
44
|
-
*
|
|
45
|
-
* column entry. A widget-only block carries no column, so it is passed over unless its edge widget
|
|
46
|
-
* takes the arrival, which is a stop of its own and reads alike from either side. `'entered'` means
|
|
47
|
-
* the widget ALREADY took it, so the caller stops rather than repeating the entry.
|
|
48
|
-
*/
|
|
48
|
+
/** Whether a vertical move stops at a block: a widget-only block is passed over unless its edge
|
|
49
|
+
* widget takes the arrival (`'entered'`, so the caller must not enter it again). */
|
|
49
50
|
export function verticalArrival(block, from) {
|
|
50
51
|
if (!block.isVerticallyTransparent?.())
|
|
51
52
|
return 'seat';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* FocusActions
|
|
3
|
-
*
|
|
2
|
+
* The root FocusActions: caret movement across top-level blocks, vertical moves that keep
|
|
3
|
+
* the sticky column, and the paragraph appended when a move goes past the document's end
|
|
4
|
+
* (outside reading mode).
|
|
4
5
|
*/
|
|
5
6
|
import type { FocusActions } from '../../action-contracts';
|
|
6
7
|
import type { EditorActionsDeps, UndoController } from '../deps';
|
|
@@ -1,74 +1,57 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* FocusActions
|
|
3
|
-
*
|
|
2
|
+
* The root FocusActions: caret movement across top-level blocks, vertical moves that keep
|
|
3
|
+
* the sticky column, and the paragraph appended when a move goes past the document's end
|
|
4
|
+
* (outside reading mode).
|
|
4
5
|
*/
|
|
5
6
|
import { emptyParagraph } from '../../tree-operations';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { consumeStickyLanding } from './focus-landing';
|
|
7
|
+
import { documentLineEnding } from '../../core/lines';
|
|
8
|
+
import { dispatchMoveFocus } from './focus-dispatch';
|
|
9
9
|
import { docPathFrom } from '../../cursor/coordinate-spaces';
|
|
10
10
|
import { tryGapStop } from '../../selection/gap-caret';
|
|
11
|
+
import { isReadingMode } from '../../presentation-mode';
|
|
11
12
|
export function createFocusActions(deps, controller) {
|
|
12
13
|
const gapScope = {
|
|
13
14
|
getDoc: () => deps.doc,
|
|
14
15
|
selection: deps.selectionState,
|
|
15
|
-
getPresentationMode: deps.
|
|
16
|
+
getPresentationMode: deps.reading.mode
|
|
16
17
|
};
|
|
17
18
|
const gapStopAt = (parentPath, boundaryIndex) => tryGapStop(gapScope, parentPath, boundaryIndex);
|
|
19
|
+
/** Past the last block a move appends a paragraph (outside reading mode); before the first
|
|
20
|
+
* it stops. */
|
|
21
|
+
async function leave(step, _position, options) {
|
|
22
|
+
// Reading mode writes nothing, so a move past the last block just stops there.
|
|
23
|
+
if (step < 0 || options?.append === false || isReadingMode(deps.reading.mode))
|
|
24
|
+
return;
|
|
25
|
+
// Appended through a commit so it is in undo history and edit events; the blank line
|
|
26
|
+
// and the paragraph's own line both take the document's line ending.
|
|
27
|
+
const lineEnding = documentLineEnding(deps.doc);
|
|
28
|
+
const newBlock = emptyParagraph(lineEnding, lineEnding);
|
|
29
|
+
// The appended index (one past the end) is the path for both the event and the
|
|
30
|
+
// undo restore fallback: it names the block this creates.
|
|
31
|
+
const appendPath = docPathFrom([deps.doc.children.length]);
|
|
32
|
+
await controller.commitStructural({
|
|
33
|
+
snapshot: { path: appendPath, offset: 0 },
|
|
34
|
+
mutate: (children) => {
|
|
35
|
+
const at = children.length;
|
|
36
|
+
children.push(newBlock);
|
|
37
|
+
return { op: 'insert', at, count: 1 };
|
|
38
|
+
},
|
|
39
|
+
op: { kind: 'appendBlock', eventPath: appendPath },
|
|
40
|
+
landing: () => ({ path: docPathFrom([deps.doc.children.length - 1]), offset: 0 })
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
const scope = {
|
|
44
|
+
count: () => deps.doc.children.length,
|
|
45
|
+
mount: (index) => deps.caretLanding.mount([index]),
|
|
46
|
+
leave,
|
|
47
|
+
// A directional move crosses the boundary at the greater adjacent index. `gapEligibleAt`
|
|
48
|
+
// declines out-of-range boundaries and the root's trailing one.
|
|
49
|
+
gapStop: (boundaryIndex) => gapStopAt([], boundaryIndex),
|
|
50
|
+
arrived: (index) => deps.caretLanding.followArrival([index])
|
|
51
|
+
};
|
|
18
52
|
return {
|
|
19
|
-
revealPath: deps.revealPath,
|
|
20
53
|
tryGapStop: gapStopAt,
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const stopsAtGaps = step !== 0 && !options?.skipGapStop;
|
|
24
|
-
// The boundary a directional move crosses is the greater of the two adjacent
|
|
25
|
-
// indices. Out-of-range boundaries and the root's trailing one decline in
|
|
26
|
-
// `gapEligibleAt`, so the arms below keep their behavior unguarded.
|
|
27
|
-
if (stopsAtGaps && gapStopAt([], step > 0 ? blockIndex : blockIndex + 1))
|
|
28
|
-
return;
|
|
29
|
-
if (blockIndex < 0)
|
|
30
|
-
return;
|
|
31
|
-
if (blockIndex >= deps.doc.children.length) {
|
|
32
|
-
if (options?.append === false)
|
|
33
|
-
return;
|
|
34
|
-
// Past the last block — appended through the commit primitive so it participates in
|
|
35
|
-
// undo history and edit events. The separating blank line and the paragraph's own
|
|
36
|
-
// are both line endings, so both take the document's (G4.20).
|
|
37
|
-
const lastBlock = deps.doc.children[deps.doc.children.length - 1];
|
|
38
|
-
const lineEnding = trailingLineEnding(lastBlock?.raw ?? '\n');
|
|
39
|
-
const newBlock = emptyParagraph(lineEnding, lineEnding);
|
|
40
|
-
// The appended slot (one past the end) is the coordinate for both the
|
|
41
|
-
// event and the restore fallback — it names the block this op creates.
|
|
42
|
-
const appendPath = docPathFrom([deps.doc.children.length]);
|
|
43
|
-
await controller.commitStructural({
|
|
44
|
-
snapshot: { path: appendPath, offset: 0 },
|
|
45
|
-
mutate: (children) => {
|
|
46
|
-
const at = children.length;
|
|
47
|
-
children.push(newBlock);
|
|
48
|
-
return { op: 'insert', at, count: 1 };
|
|
49
|
-
},
|
|
50
|
-
op: { kind: 'appendBlock', eventPath: appendPath },
|
|
51
|
-
afterTick: () => {
|
|
52
|
-
const lastIdx = deps.doc.children.length - 1;
|
|
53
|
-
deps.blockRefs[lastIdx]?.focus(0);
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
const block = await deps.revealPath([blockIndex]);
|
|
59
|
-
if (!block?.focusable) {
|
|
60
|
-
// A refless or non-focusable block must not dead-end the move — skip it in
|
|
61
|
-
// the move's direction (editor.md § Focus traversal).
|
|
62
|
-
if (step !== 0)
|
|
63
|
-
await this.moveFocus(blockIndex + step, position, options);
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
// A landing AT a block's end is a seat at an extreme, not a step onto it, so the side
|
|
67
|
-
// it means is construct-relative (docs/design/live-mode.md § 4.2). Without this the
|
|
68
|
-
// first byte typed after a structural landing joins the closer it landed inside.
|
|
69
|
-
if (position === 'end')
|
|
70
|
-
deps.edgeAffinity.noteExtreme();
|
|
71
|
-
await consumeStickyLanding(block, blockIndex, position, deps.stickyColumn, (i) => this.moveFocus(i, position, options));
|
|
72
|
-
}
|
|
54
|
+
followArrival: deps.caretLanding.followArrival,
|
|
55
|
+
moveFocus: (blockIndex, position, options) => dispatchMoveFocus(scope, blockIndex, position, deps.caretMemory, options)
|
|
73
56
|
};
|
|
74
57
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* The editor root's action bundle: the undo controller plus the four action groups
|
|
3
|
+
* Editor.svelte puts into Svelte context.
|
|
4
4
|
*/
|
|
5
5
|
import type { BlockEditActions, ContainerEditActions, FocusActions, HistoryActions } from '../action-contracts';
|
|
6
6
|
import type { EditorActionsDeps, UndoController } from './deps';
|
|
@@ -11,5 +11,6 @@ export interface EditorActionsBundle {
|
|
|
11
11
|
containerEdit: ContainerEditActions;
|
|
12
12
|
controller: UndoController;
|
|
13
13
|
}
|
|
14
|
-
|
|
14
|
+
/** `announceEdit` goes to the undo controller alone (`createUndoController`). */
|
|
15
|
+
export declare function createEditorActions(deps: EditorActionsDeps, announceEdit: (message: string) => void): EditorActionsBundle;
|
|
15
16
|
export type { EditorActionsDeps } from './deps';
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* The editor root's action bundle: the undo controller plus the four action groups
|
|
3
|
+
* Editor.svelte puts into Svelte context.
|
|
4
4
|
*/
|
|
5
5
|
import { createUndoController } from './commit/undo-controller';
|
|
6
6
|
import { createBlockEditActions } from './block-edit';
|
|
7
7
|
import { createFocusActions } from './focus/focus';
|
|
8
8
|
import { createHistoryActions } from './commit/history';
|
|
9
9
|
import { createContainerEditActions } from './container-edit';
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
/** `announceEdit` goes to the undo controller alone (`createUndoController`). */
|
|
11
|
+
export function createEditorActions(deps, announceEdit) {
|
|
12
|
+
const controller = createUndoController(deps, announceEdit);
|
|
12
13
|
return {
|
|
13
14
|
blockEdit: createBlockEditActions(deps, controller),
|
|
14
15
|
focus: createFocusActions(deps, controller),
|