@voithos-labs/aragonite 0.10.3 → 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 +12 -5
- package/dist/a11y-strings.js +61 -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 +13 -20
- 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 +619 -1089
- package/dist/components/Editor.svelte.d.ts +9 -20
- package/dist/components/GapCaret.svelte +26 -59
- package/dist/components/SelectionOverlay.svelte +36 -67
- package/dist/components/SelectionOverlay.svelte.d.ts +6 -4
- 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 +103 -100
- 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 +35 -28
- 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 +58 -32
- 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 +144 -202
- 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 +46 -90
- package/dist/components/blocks/list/ListItemBlock.svelte +99 -144
- package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +3 -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 +9 -4
- package/dist/components/blocks/text/click-snap-guard.js +16 -5
- 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 +164 -180
- 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 -105
- 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 +243 -208
- 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 +13 -30
- package/dist/components/drag-handle.js +25 -63
- 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 -31
- package/dist/components/editor-root-listeners.js +49 -46
- 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 +26 -30
- 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 +380 -0
- package/dist/components/menu/SelectionToolbar.svelte.d.ts +14 -0
- 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 +55 -68
- package/dist/core/inline/inline-widgets.js +55 -58
- 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 +33 -17
- 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 -7
- package/dist/cursor/height-oracle.js +26 -75
- 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 +16 -8
- package/dist/cursor/scrollport.js +28 -5
- 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 -13
- package/dist/cursor/visual-lines.js +72 -28
- package/dist/cursor/widget-edge-snap.d.ts +23 -0
- package/dist/cursor/widget-edge-snap.js +39 -0
- package/dist/cursor/widget-offset.d.ts +111 -102
- package/dist/cursor/widget-offset.js +352 -177
- 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 +31 -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 +33 -52
- package/dist/editor-actions/focus/focus-landing.d.ts +11 -5
- package/dist/editor-actions/focus/focus-landing.js +29 -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 +55 -76
- package/dist/editor-actions/plugin/container.js +105 -186
- 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 +91 -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 +38 -8
- package/dist/plugin.js +102 -74
- 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 +113 -85
- 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 -75
- 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 +63 -47
- 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 +18 -7
- 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 +143 -292
- 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 +79 -81
- package/dist/schema/commands.js +156 -116
- 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 +9 -11
- 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 +73 -78
- 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 +93 -152
- 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 +61 -104
- 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 +53 -146
- package/dist/selection/dead-space-caret.d.ts +20 -28
- package/dist/selection/dead-space-caret.js +79 -87
- package/dist/selection/drag-pointer.d.ts +22 -5
- package/dist/selection/drag-pointer.js +63 -31
- 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 -39
- package/dist/selection/keyboard-extend.js +94 -116
- package/dist/selection/multi-click.d.ts +37 -0
- package/dist/selection/multi-click.js +197 -0
- package/dist/selection/native-bridge.d.ts +30 -37
- package/dist/selection/native-bridge.js +80 -100
- package/dist/selection/nearest-block.d.ts +17 -12
- package/dist/selection/nearest-block.js +37 -18
- package/dist/selection/path-lookup.d.ts +31 -14
- package/dist/selection/path-lookup.js +110 -20
- package/dist/selection/path-math.d.ts +9 -11
- package/dist/selection/path-math.js +5 -7
- package/dist/selection/pointer-gesture.d.ts +9 -0
- package/dist/selection/pointer-gesture.js +11 -0
- package/dist/selection/pointer-session.d.ts +10 -16
- package/dist/selection/pointer-session.js +6 -7
- package/dist/selection/primitives.d.ts +64 -33
- package/dist/selection/primitives.js +61 -53
- 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 -19
- 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 +52 -0
- package/dist/selection/selection-drop.js +317 -0
- 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 +75 -53
- package/dist/styles/editor.css +248 -139
- 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 +19 -0
- package/dist/tree-operations/paste/replacement-parse.js +24 -0
- 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 +329 -205
- package/docs/guide/directives.md +7 -7
- package/docs/guide/plugin-api.md +267 -183
- package/docs/guide/plugin-guide.md +341 -235
- package/docs/guide/plugin-testing.md +96 -82
- package/package.json +17 -21
- 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/invariants/split-landing.d.ts +0 -8
- package/dist/invariants/split-landing.js +0 -15
- package/dist/selection/double-click-trim.d.ts +0 -17
- package/dist/selection/double-click-trim.js +0 -57
- 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 -29
- package/dist/tree-operations/paste/replace-block-at-parent.js +0 -75
|
@@ -1,60 +1,73 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The parent shapes,
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* caller-unshared spine (`unshare.ts`), a STRUCTURAL one via `commitMultiScope`.
|
|
2
|
+
* The parent shapes, node constructors and path walks under every tree op. An op mutating a
|
|
3
|
+
* container's children takes the array as a parameter, never `node.children`, which the caller
|
|
4
|
+
* owns and writes back; a descendant found by walking the live tree is mutated in place after its
|
|
5
|
+
* ancestors are copied (`unshare.ts`), or through `commitMultiScope` when the change is structural.
|
|
7
6
|
*/
|
|
8
|
-
import type {
|
|
7
|
+
import type { CstNode, Document } from '../core/nodes';
|
|
9
8
|
import type { DocumentView, NodeView } from '../core/node-views';
|
|
10
9
|
import type { GrammarView } from '../schema/block-openers';
|
|
10
|
+
import { type LineEnding } from '../core/lines';
|
|
11
11
|
/** A children array an op mutates structurally: splice, delete, reorder. */
|
|
12
12
|
export type NodeParent = {
|
|
13
13
|
children: CstNode[];
|
|
14
14
|
};
|
|
15
15
|
/**
|
|
16
|
-
* A {@link NodeParent} that
|
|
17
|
-
*
|
|
16
|
+
* A {@link NodeParent} that names the container owning it, for the owner's `bodyWrite` rule and
|
|
17
|
+
* `innerPrefix`/`innerSuffix`. Nullable, not optional: leaving the owner out is a compile error.
|
|
18
18
|
*/
|
|
19
19
|
export type BodyParent = NodeParent & {
|
|
20
|
-
|
|
20
|
+
/** The container these children belong to; undefined is the document root, which has no rule. */
|
|
21
21
|
owner: CstNode | undefined;
|
|
22
|
+
/** The document's line ending, which every line an op writes into these children takes. */
|
|
23
|
+
lineEnding: LineEnding;
|
|
22
24
|
suffix?: string;
|
|
23
25
|
};
|
|
24
|
-
/** What the
|
|
26
|
+
/** What the content writes accept: a whole `Document` counts as one (the root has no body rule). */
|
|
25
27
|
export type BodyParentArg = BodyParent | Document;
|
|
26
28
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
+
* The document as a body: its children (the commit's working copy, when given) and its trailing
|
|
30
|
+
* blank line, read and written through to the live document so a rollback restores it.
|
|
31
|
+
*/
|
|
32
|
+
export declare function documentBody(doc: Document, children?: CstNode[]): Document & BodyParent;
|
|
33
|
+
/**
|
|
34
|
+
* What the separator fix-ups accept: anything that can say where the body starts. Wider than
|
|
35
|
+
* the content writes, since a fix-up writes a line ending, not body text.
|
|
29
36
|
*/
|
|
30
37
|
export type SeparatorParent = {
|
|
31
38
|
kind?: string;
|
|
32
|
-
ownerKind?: AnyBlockKind;
|
|
33
39
|
suffix?: string;
|
|
34
40
|
children?: CstNode[];
|
|
35
41
|
owner?: CstNode;
|
|
36
42
|
};
|
|
37
|
-
/**
|
|
38
|
-
export declare
|
|
39
|
-
/**
|
|
43
|
+
/** The line ending an op writing into `parent`'s children gives a new line. */
|
|
44
|
+
export declare const parentLineEnding: (parent: BodyParentArg) => LineEnding;
|
|
45
|
+
/**
|
|
46
|
+
* Text made legal as a child's raw inside `owner`'s body. A child's bytes are never the
|
|
47
|
+
* container's own syntax, so the write is always `literal`.
|
|
48
|
+
*/
|
|
49
|
+
export declare function normalizeBodyWrite(owner: NodeView | undefined, raw: string, lineEnding: LineEnding): string;
|
|
50
|
+
/** {@link normalizeBodyWrite} for a caller holding the parent rather than the owner. */
|
|
40
51
|
export declare const forBody: (parent: BodyParentArg, raw: string) => string;
|
|
41
52
|
/**
|
|
42
|
-
* `raw` made legal as `node`'s
|
|
43
|
-
*
|
|
53
|
+
* `raw` made legal as `node`'s own bytes before a reparse replaces the node; the rule runs first
|
|
54
|
+
* because it reads the node's metadata as it stands, which the reparse re-derives.
|
|
44
55
|
*/
|
|
45
|
-
export declare function normalizeOwnRaw(node: NodeView, raw: string): string;
|
|
56
|
+
export declare function normalizeOwnRaw(node: NodeView, raw: string, lineEnding: LineEnding): string;
|
|
46
57
|
/**
|
|
47
|
-
* Write `raw` as `node`'s
|
|
48
|
-
*
|
|
58
|
+
* Write `raw` as `node`'s own bytes through its kind's rule, in place. Every write of a leaf's
|
|
59
|
+
* bytes that bypasses the kind's editable element must go through here or {@link normalizeOwnRaw}.
|
|
49
60
|
*/
|
|
50
|
-
export declare function writeOwnRaw(node: CstNode, raw: string, grammar: GrammarView
|
|
61
|
+
export declare function writeOwnRaw(node: CstNode, raw: string, lineEnding: LineEnding, grammar: GrammarView): void;
|
|
62
|
+
/** Bytes already made legal for `node`, written in place with its parse-owned metadata. */
|
|
63
|
+
export declare function installOwnRaw(node: CstNode, legal: string, grammar: GrammarView): void;
|
|
51
64
|
/**
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
* tree positions (G1.9).
|
|
65
|
+
* A fresh object every call, since one instance at two tree positions would share its bytes
|
|
66
|
+
* (G1.9). `lineEnding` is required because a paragraph's raw ends in the document's ending.
|
|
55
67
|
*/
|
|
56
68
|
export declare function paragraphNode(leadingTrivia: string, text: string, lineEnding: string): CstNode;
|
|
57
|
-
/**
|
|
69
|
+
/** An empty paragraph: the one block an emptied document keeps, and the backfill for a container a
|
|
70
|
+
* parse or a write builds with no children (one a delete empties is removed instead). */
|
|
58
71
|
export declare function emptyParagraph(leadingTrivia: string, lineEnding: string): CstNode;
|
|
59
72
|
export declare function nodeAt(doc: Document, path: number[]): CstNode | Document | null;
|
|
60
73
|
export declare function nodeAt(doc: DocumentView, path: number[]): NodeView | DocumentView | null;
|
|
@@ -64,12 +77,12 @@ export declare function blockNodeAt(doc: DocumentView, path: number[]): NodeView
|
|
|
64
77
|
export declare function isBlockNode(node: CstNode | Document): node is CstNode;
|
|
65
78
|
export declare function isBlockNode(node: NodeView | DocumentView): node is NodeView;
|
|
66
79
|
/**
|
|
67
|
-
* The stand-in for whatever the user types next
|
|
68
|
-
*
|
|
69
|
-
* runtime check that it still reads as prose.
|
|
80
|
+
* The stand-in for whatever the user types next, the line most likely to continue any block;
|
|
81
|
+
* `probeLineOpensAsProse` checks at runtime that no registered opener claims it.
|
|
70
82
|
*/
|
|
71
83
|
export declare const NEXT_PROSE_LINE = "x";
|
|
72
84
|
/** First node inherits the original block's leadingTrivia; subsequent nodes keep theirs. */
|
|
73
85
|
export declare function normalizeReplacementTrivia(original: CstNode, replacement: CstNode[]): CstNode[];
|
|
74
|
-
/**
|
|
75
|
-
|
|
86
|
+
/** Give every container that must hold a child an empty paragraph, so the caret always has a
|
|
87
|
+
* target. A container with no bytes yet backfills its lines in `ending`, the document's. */
|
|
88
|
+
export declare function ensureEditableContainers(node: CstNode, ending: LineEnding): void;
|
|
@@ -1,56 +1,83 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The parent shapes,
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* caller-unshared spine (`unshare.ts`), a STRUCTURAL one via `commitMultiScope`.
|
|
2
|
+
* The parent shapes, node constructors and path walks under every tree op. An op mutating a
|
|
3
|
+
* container's children takes the array as a parameter, never `node.children`, which the caller
|
|
4
|
+
* owns and writes back; a descendant found by walking the live tree is mutated in place after its
|
|
5
|
+
* ancestors are copied (`unshare.ts`), or through `commitMultiScope` when the change is structural.
|
|
7
6
|
*/
|
|
8
|
-
import {
|
|
9
|
-
import { trailingLineEnding } from '../core/lines';
|
|
10
|
-
import {
|
|
7
|
+
import { readBlocks } from '../core/parser';
|
|
8
|
+
import { documentLineEnding, ownTrailingLineEnding, trailingLineEnding } from '../core/lines';
|
|
9
|
+
import { mustHoldChild, tryGetBlockKindDescriptor } from '../schema/block-kind-descriptor';
|
|
11
10
|
import { reservedChromeKindOf } from '../schema/reserved-chrome';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
import { adoptParsedMetadata } from '../schema/container-raw';
|
|
12
|
+
/**
|
|
13
|
+
* The document as a body: its children (the commit's working copy, when given) and its trailing
|
|
14
|
+
* blank line, read and written through to the live document so a rollback restores it.
|
|
15
|
+
*/
|
|
16
|
+
export function documentBody(doc, children = doc.children) {
|
|
17
|
+
// No `childIds`: an op that tracks ids on its parent must not splice the live document's array.
|
|
18
|
+
return {
|
|
19
|
+
kind: 'document',
|
|
20
|
+
prefix: doc.prefix,
|
|
21
|
+
children,
|
|
22
|
+
owner: undefined,
|
|
23
|
+
lineEnding: documentLineEnding(doc),
|
|
24
|
+
get suffix() {
|
|
25
|
+
return doc.suffix;
|
|
26
|
+
},
|
|
27
|
+
set suffix(value) {
|
|
28
|
+
doc.suffix = value;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
17
31
|
}
|
|
18
|
-
/**
|
|
19
|
-
export const
|
|
32
|
+
/** The line ending an op writing into `parent`'s children gives a new line. */
|
|
33
|
+
export const parentLineEnding = (parent) => 'lineEnding' in parent ? parent.lineEnding : documentLineEnding(parent);
|
|
20
34
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
35
|
+
* Text made legal as a child's raw inside `owner`'s body. A child's bytes are never the
|
|
36
|
+
* container's own syntax, so the write is always `literal`.
|
|
23
37
|
*/
|
|
24
|
-
export function
|
|
25
|
-
|
|
38
|
+
export function normalizeBodyWrite(owner, raw, lineEnding) {
|
|
39
|
+
if (!owner)
|
|
40
|
+
return raw;
|
|
41
|
+
const rule = tryGetBlockKindDescriptor(owner.kind)?.bodyWrite;
|
|
42
|
+
return rule ? rule.normalize(raw, { node: owner, mode: 'literal', lineEnding }) : raw;
|
|
26
43
|
}
|
|
44
|
+
/** {@link normalizeBodyWrite} for a caller holding the parent rather than the owner. */
|
|
45
|
+
export const forBody = (parent, raw) => normalizeBodyWrite('owner' in parent ? parent.owner : undefined, raw, parentLineEnding(parent));
|
|
27
46
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
47
|
+
* `raw` made legal as `node`'s own bytes before a reparse replaces the node; the rule runs first
|
|
48
|
+
* because it reads the node's metadata as it stands, which the reparse re-derives.
|
|
30
49
|
*/
|
|
31
|
-
export function
|
|
32
|
-
const
|
|
33
|
-
|
|
50
|
+
export function normalizeOwnRaw(node, raw, lineEnding) {
|
|
51
|
+
const rule = tryGetBlockKindDescriptor(node.kind)?.rawWrite;
|
|
52
|
+
return rule ? rule.normalize(raw, { node, mode: 'literal', lineEnding }) : raw;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Write `raw` as `node`'s own bytes through its kind's rule, in place. Every write of a leaf's
|
|
56
|
+
* bytes that bypasses the kind's editable element must go through here or {@link normalizeOwnRaw}.
|
|
57
|
+
*/
|
|
58
|
+
export function writeOwnRaw(node, raw, lineEnding, grammar) {
|
|
59
|
+
installOwnRaw(node, normalizeOwnRaw(node, raw, lineEnding), grammar);
|
|
60
|
+
}
|
|
61
|
+
/** Bytes already made legal for `node`, written in place with its parse-owned metadata. */
|
|
62
|
+
export function installOwnRaw(node, legal, grammar) {
|
|
34
63
|
node.raw = legal;
|
|
35
64
|
// A context-dependent kind's raw does not reparse to itself, so a fragment parse would only
|
|
36
65
|
// mis-read metadata that was never parse-derived.
|
|
37
|
-
if (
|
|
66
|
+
if (tryGetBlockKindDescriptor(node.kind)?.contextDependentKind)
|
|
38
67
|
return;
|
|
39
68
|
// In place means no reparse replaces the node, so parse-owned metadata re-derives here.
|
|
40
|
-
|
|
41
|
-
if (reparsed.length === 1 && reparsed[0].kind === node.kind)
|
|
42
|
-
node.metadata = reparsed[0].metadata;
|
|
69
|
+
adoptParsedMetadata(node, readBlocks(legal, { grammar, scope: 'fragment' }).children);
|
|
43
70
|
}
|
|
44
|
-
// ── Node
|
|
71
|
+
// ── Node constructors ──
|
|
45
72
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
* tree positions (G1.9).
|
|
73
|
+
* A fresh object every call, since one instance at two tree positions would share its bytes
|
|
74
|
+
* (G1.9). `lineEnding` is required because a paragraph's raw ends in the document's ending.
|
|
49
75
|
*/
|
|
50
76
|
export function paragraphNode(leadingTrivia, text, lineEnding) {
|
|
51
77
|
return { kind: 'paragraph', leadingTrivia, raw: text + lineEnding };
|
|
52
78
|
}
|
|
53
|
-
/**
|
|
79
|
+
/** An empty paragraph: the one block an emptied document keeps, and the backfill for a container a
|
|
80
|
+
* parse or a write builds with no children (one a delete empties is removed instead). */
|
|
54
81
|
export function emptyParagraph(leadingTrivia, lineEnding) {
|
|
55
82
|
return paragraphNode(leadingTrivia, '', lineEnding);
|
|
56
83
|
}
|
|
@@ -72,9 +99,8 @@ export function isBlockNode(node) {
|
|
|
72
99
|
}
|
|
73
100
|
// ── Grammar stand-in and replacement shape ──
|
|
74
101
|
/**
|
|
75
|
-
* The stand-in for whatever the user types next
|
|
76
|
-
*
|
|
77
|
-
* runtime check that it still reads as prose.
|
|
102
|
+
* The stand-in for whatever the user types next, the line most likely to continue any block;
|
|
103
|
+
* `probeLineOpensAsProse` checks at runtime that no registered opener claims it.
|
|
78
104
|
*/
|
|
79
105
|
export const NEXT_PROSE_LINE = 'x';
|
|
80
106
|
/** First node inherits the original block's leadingTrivia; subsequent nodes keep theirs. */
|
|
@@ -87,31 +113,29 @@ export function normalizeReplacementTrivia(original, replacement) {
|
|
|
87
113
|
});
|
|
88
114
|
}
|
|
89
115
|
// ── Editable container backfill ──
|
|
90
|
-
/**
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
if (getBlockKindDescriptor(node.kind).blockFocus === 'whole-block')
|
|
116
|
+
/** Give every container that must hold a child an empty paragraph, so the caret always has a
|
|
117
|
+
* target. A container with no bytes yet backfills its lines in `ending`, the document's. */
|
|
118
|
+
export function ensureEditableContainers(node, ending) {
|
|
119
|
+
if (!node.children)
|
|
95
120
|
return;
|
|
96
|
-
if (node.children
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
//
|
|
104
|
-
|
|
105
|
-
// Runtime chrome kind, so the mint takes the generic cast.
|
|
106
|
-
node.children.push({ kind: chromeKind, leadingTrivia: '', raw: lineEnding });
|
|
107
|
-
}
|
|
108
|
-
node.children.push(emptyParagraph('', lineEnding));
|
|
109
|
-
// The synthesized paragraph's ending already represents the blank `parseBlocks`
|
|
110
|
-
// routed into innerPrefix; keeping both double-counts the line on rebuild.
|
|
111
|
-
node.innerPrefix = '';
|
|
112
|
-
}
|
|
113
|
-
for (const child of node.children) {
|
|
114
|
-
ensureEditableContainers(child);
|
|
121
|
+
if (node.children.length === 0 && mustHoldChild(node.kind)) {
|
|
122
|
+
// An in-place write on a descendant found by walking, see the file header.
|
|
123
|
+
const chromeKind = reservedChromeKindOf(node.kind);
|
|
124
|
+
const lineEnding = trailingLineEnding(node.raw, ending);
|
|
125
|
+
// A container with a reserved title child re-creates that child too, or the backfilled
|
|
126
|
+
// paragraph would occupy its position (G1.14).
|
|
127
|
+
if (chromeKind !== undefined) {
|
|
128
|
+
// The title child's kind is only known at runtime, so the literal takes the generic cast.
|
|
129
|
+
node.children.push({ kind: chromeKind, leadingTrivia: '', raw: lineEnding });
|
|
115
130
|
}
|
|
131
|
+
// The paragraph holds the container's last line, so an open last line stays open in it.
|
|
132
|
+
const lastLineEnding = node.raw === '' ? lineEnding : ownTrailingLineEnding(node.raw);
|
|
133
|
+
node.children.push(emptyParagraph('', lastLineEnding));
|
|
134
|
+
// The synthesized paragraph's ending already represents the blank `parseBlocks`
|
|
135
|
+
// routed into innerPrefix; keeping both double-counts the line on rebuild.
|
|
136
|
+
node.innerPrefix = '';
|
|
137
|
+
}
|
|
138
|
+
for (const child of node.children) {
|
|
139
|
+
ensureEditableContainers(child, ending);
|
|
116
140
|
}
|
|
117
141
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The document's open last line: only the last line may lack a line ending, and after a structural
|
|
3
|
+
* edit it lacks one exactly when it did before, unless that line is blank. The commit calls these
|
|
4
|
+
* steps around every structural edit, so no edit writes the tail's ending by hand
|
|
5
|
+
* (`docs/design/syntax-tree.md` § Blank lines).
|
|
6
|
+
*/
|
|
7
|
+
import type { Document } from '../core/nodes';
|
|
8
|
+
import type { DocumentView, NodeView } from '../core/node-views';
|
|
9
|
+
import type { BodyParent } from './node-primitives';
|
|
10
|
+
import type { StructuralChange } from './structural-change';
|
|
11
|
+
import type { SharingState } from './sharing';
|
|
12
|
+
import type { GrammarView } from '../schema/block-openers';
|
|
13
|
+
/** Whether the document's last line has no line ending; the commit reads it before the edit. */
|
|
14
|
+
export declare function endsOpen(doc: DocumentView): boolean;
|
|
15
|
+
/** Every block the change placed, and the block above them, ends its line. Run before the
|
|
16
|
+
* separator fix-up, which reads their bytes side by side. */
|
|
17
|
+
export declare function endWindowLines(body: BodyParent, change: StructuralChange, sharing: SharingState, grammar: GrammarView): void;
|
|
18
|
+
/** When the document ended open before the commit, the block now last gives its ending up, unless
|
|
19
|
+
* its last line is blank. Run after the containers rebuild, since it writes each level's raw. */
|
|
20
|
+
export declare function keepOpenTail(doc: Document, wasOpen: boolean, sharing: SharingState, grammar: GrammarView): void;
|
|
21
|
+
/**
|
|
22
|
+
* Whether the block that holds `node`'s last line, found down the path the release walks, ends
|
|
23
|
+
* in a blank line; a quote's own trailing `>` line is its own and has a marker, so it is not.
|
|
24
|
+
*/
|
|
25
|
+
export declare function holdsBlankLastLine(node: NodeView): boolean;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The document's open last line: only the last line may lack a line ending, and after a structural
|
|
3
|
+
* edit it lacks one exactly when it did before, unless that line is blank. The commit calls these
|
|
4
|
+
* steps around every structural edit, so no edit writes the tail's ending by hand
|
|
5
|
+
* (`docs/design/syntax-tree.md` § Blank lines).
|
|
6
|
+
*/
|
|
7
|
+
import { endsInBlankLine, ownTrailingLineEnding, terminateLine, trimTrailingLineEnding } from '../core/lines';
|
|
8
|
+
import { ensureUnsharedChild } from './unshare';
|
|
9
|
+
import { dropChildSpans } from '../schema/child-spans';
|
|
10
|
+
import { getBlockKindDescriptor, isGridDescriptor, isGridKind, tryGetBlockKindDescriptor } from '../schema/block-kind-descriptor';
|
|
11
|
+
import { reservedChromeKindOf } from '../schema/reserved-chrome';
|
|
12
|
+
import { followBytes } from '../schema/container-raw';
|
|
13
|
+
// ── The commit's steps ───────────────────────────────────────────────────────
|
|
14
|
+
/** Whether the document's last line has no line ending; the commit reads it before the edit. */
|
|
15
|
+
export function endsOpen(doc) {
|
|
16
|
+
const last = doc.children.at(-1);
|
|
17
|
+
return doc.suffix === '' && last !== undefined && ownTrailingLineEnding(last.raw) === '';
|
|
18
|
+
}
|
|
19
|
+
/** Every block the change placed, and the block above them, ends its line. Run before the
|
|
20
|
+
* separator fix-up, which reads their bytes side by side. */
|
|
21
|
+
export function endWindowLines(body, change, sharing, grammar) {
|
|
22
|
+
if (change.op === 'noop')
|
|
23
|
+
return;
|
|
24
|
+
const placed = change.op === 'insert' ? change.count : change.op === 'replace' ? change.newCount : 0;
|
|
25
|
+
const children = body.children;
|
|
26
|
+
// A title row sits on the container's own opener line, so it is no line of the body's.
|
|
27
|
+
const bodyStart = body.owner && reservedChromeKindOf(body.owner.kind) ? 1 : 0;
|
|
28
|
+
const lo = Math.max(change.at - 1, bodyStart);
|
|
29
|
+
const hi = Math.min(change.at + placed, children.length);
|
|
30
|
+
for (let i = lo; i < hi; i++) {
|
|
31
|
+
if (!isLine(body.owner, children[i]) || ownTrailingLineEnding(children[i].raw) !== '')
|
|
32
|
+
continue;
|
|
33
|
+
terminateLastLine(ensureUnsharedChild(body, i, sharing), body.lineEnding, sharing, grammar);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/** When the document ended open before the commit, the block now last gives its ending up, unless
|
|
37
|
+
* its last line is blank. Run after the containers rebuild, since it writes each level's raw. */
|
|
38
|
+
export function keepOpenTail(doc, wasOpen, sharing, grammar) {
|
|
39
|
+
if (!wasOpen || doc.suffix !== '')
|
|
40
|
+
return;
|
|
41
|
+
const lastIndex = doc.children.length - 1;
|
|
42
|
+
const last = doc.children[lastIndex];
|
|
43
|
+
if (!last || ownTrailingLineEnding(last.raw) === '' || holdsBlankLastLine(last))
|
|
44
|
+
return;
|
|
45
|
+
releaseLastLine(ensureUnsharedChild(doc, lastIndex, sharing), sharing, grammar);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Whether the block that holds `node`'s last line, found down the path the release walks, ends
|
|
49
|
+
* in a blank line; a quote's own trailing `>` line is its own and has a marker, so it is not.
|
|
50
|
+
*/
|
|
51
|
+
export function holdsBlankLastLine(node) {
|
|
52
|
+
const last = node.children?.at(-1);
|
|
53
|
+
const descriptor = tryGetBlockKindDescriptor(node.kind);
|
|
54
|
+
const descends = (descriptor?.containerContract === 'strip' && !node.innerSuffix) ||
|
|
55
|
+
(isGridDescriptor(descriptor) && last !== undefined && isGridKind(last.kind));
|
|
56
|
+
return last && descends ? holdsBlankLastLine(last) : endsInBlankLine(node.raw);
|
|
57
|
+
}
|
|
58
|
+
// ── The walk down the last line ──────────────────────────────────────────────
|
|
59
|
+
/** A row's cells sit inside one line, so only a grid's own rows count as lines of its body. */
|
|
60
|
+
function isLine(owner, child) {
|
|
61
|
+
return !owner || !isGridKind(owner.kind) || isGridKind(child.kind);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* End the node's last line in `ending`, in its own raw and in every node below holding that line,
|
|
65
|
+
* so a container's other lines (a quote's lazy continuation lines) keep their bytes.
|
|
66
|
+
*/
|
|
67
|
+
function terminateLastLine(node, ending, sharing, grammar) {
|
|
68
|
+
rewriteLastLine(node, (raw) => terminateLine(raw, ending), sharing, grammar);
|
|
69
|
+
}
|
|
70
|
+
function releaseLastLine(node, sharing, grammar) {
|
|
71
|
+
rewriteLastLine(node, trimTrailingLineEnding, sharing, grammar);
|
|
72
|
+
}
|
|
73
|
+
function rewriteLastLine(node, write, sharing, grammar) {
|
|
74
|
+
const wasEnded = node.raw.endsWith('\n');
|
|
75
|
+
const raw = write(node.raw);
|
|
76
|
+
if (raw === node.raw)
|
|
77
|
+
return;
|
|
78
|
+
const rawBefore = node.raw;
|
|
79
|
+
node.raw = raw;
|
|
80
|
+
// A container's metadata can hold its closing line's ending.
|
|
81
|
+
followBytes(node, rawBefore, grammar);
|
|
82
|
+
const last = (node.children?.length ?? 0) - 1;
|
|
83
|
+
if (last < 0)
|
|
84
|
+
return;
|
|
85
|
+
const descriptor = getBlockKindDescriptor(node.kind);
|
|
86
|
+
if (descriptor.containerContract === 'strip') {
|
|
87
|
+
dropChildSpans(node);
|
|
88
|
+
// A blank line closing the body is the last line; the parser keeps it out of the suffix
|
|
89
|
+
// while it is unended, so a last child already ended the other way marks it too.
|
|
90
|
+
if (node.innerSuffix || node.children[last].raw.endsWith('\n') !== wasEnded) {
|
|
91
|
+
node.innerSuffix = write(node.innerSuffix ?? '');
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
else if (!isGridDescriptor(descriptor) || !isGridKind(node.children[last].kind)) {
|
|
96
|
+
// A grid's rows are whole lines; a row's cells and an opaque body sit inside a line.
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
rewriteLastLine(ensureUnsharedChild(node, last, sharing), write, sharing, grammar);
|
|
100
|
+
}
|
|
@@ -1,3 +1,16 @@
|
|
|
1
1
|
import type { CstNode } from '../core/nodes';
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
import type { FragmentReader } from './list/task-paragraph';
|
|
3
|
+
/** Read one block's `raw` with the reader of the slot it lands in and return its first block,
|
|
4
|
+
* falling back to a paragraph node. */
|
|
5
|
+
export declare function parseFirstBlock(raw: string, read: FragmentReader): CstNode;
|
|
6
|
+
export interface CutResidue {
|
|
7
|
+
/** The rest of the cut line with its line ending when that rest is only whitespace, else ''. */
|
|
8
|
+
endedLine: string;
|
|
9
|
+
/** Every block the text after `endedLine` parses to. */
|
|
10
|
+
blocks: CstNode[];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* The text after a paste's cut, as blocks read with the reader of the slot they land in; a line
|
|
14
|
+
* break left at its head comes back as `endedLine`, so the caller decides where the break goes.
|
|
15
|
+
*/
|
|
16
|
+
export declare function parseCutResidue(text: string, lineEnding: '\n' | '\r\n', read: FragmentReader): CutResidue;
|
|
@@ -1,8 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
/**
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { isBlankLine } from '../core/lines';
|
|
2
|
+
/** Read one block's `raw` with the reader of the slot it lands in and return its first block,
|
|
3
|
+
* falling back to a paragraph node. */
|
|
4
|
+
export function parseFirstBlock(raw, read) {
|
|
5
|
+
const doc = read(raw);
|
|
5
6
|
if (doc.children.length > 0)
|
|
6
7
|
return doc.children[0];
|
|
7
8
|
return { kind: 'paragraph', leadingTrivia: '', raw };
|
|
8
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* The text after a paste's cut, as blocks read with the reader of the slot they land in; a line
|
|
12
|
+
* break left at its head comes back as `endedLine`, so the caller decides where the break goes.
|
|
13
|
+
*/
|
|
14
|
+
export function parseCutResidue(text, lineEnding, read) {
|
|
15
|
+
const lineBreak = /\r?\n/.exec(text);
|
|
16
|
+
const endedLine = lineBreak && isBlankLine(text.slice(0, lineBreak.index))
|
|
17
|
+
? text.slice(0, lineBreak.index + lineBreak[0].length)
|
|
18
|
+
: '';
|
|
19
|
+
const body = text.slice(endedLine.length);
|
|
20
|
+
if (body === '')
|
|
21
|
+
return { endedLine, blocks: [] };
|
|
22
|
+
return { endedLine, blocks: read(body + lineEnding).children };
|
|
23
|
+
}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
/** Applies the results a paste surface hook produced to the document.
|
|
1
|
+
/** Applies the results a paste surface hook produced to the document. `start` is where the paste
|
|
2
|
+
* began, which each commit records as undo's caret. */
|
|
3
|
+
import type { CommitSnapshotArg } from '../../action-contracts';
|
|
2
4
|
import type { InlinePasteResult, StructuralPasteResult } from '../paste-surfaces';
|
|
3
5
|
import type { PasteDispatchContext, InlineCaretLanding } from './dispatch';
|
|
4
6
|
/**
|
|
5
|
-
* Apply an inline paste
|
|
6
|
-
* commits the
|
|
7
|
-
* originating bundle may not match the target's level. The single-block route stays
|
|
8
|
-
* synchronous through its mutation so the caller can set cursor state before the first
|
|
9
|
-
* reactivity flush.
|
|
7
|
+
* Apply an inline paste, reporting where the caret lands in the stored bytes. A cross-block paste
|
|
8
|
+
* commits at the parent list, since the originating action bundle may not match the target's level.
|
|
10
9
|
*/
|
|
11
|
-
export declare function applyInlineResult(targetPath: number[], result: InlinePasteResult, ctx: PasteDispatchContext): Promise<InlineCaretLanding | undefined>;
|
|
12
|
-
export declare function applyStructuralResult(targetPath: number[], result: StructuralPasteResult, ctx: PasteDispatchContext, trailingSeparator?: string): Promise<void>;
|
|
10
|
+
export declare function applyInlineResult(targetPath: number[], result: InlinePasteResult, ctx: PasteDispatchContext, start: CommitSnapshotArg): Promise<InlineCaretLanding | undefined>;
|
|
11
|
+
export declare function applyStructuralResult(targetPath: number[], result: StructuralPasteResult, ctx: PasteDispatchContext, start: CommitSnapshotArg, trailingSeparator?: string): Promise<void>;
|
|
@@ -1,75 +1,45 @@
|
|
|
1
|
-
/** Applies the results a paste surface hook produced to the document.
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { stampStructuralChange } from '../structural-change';
|
|
6
|
-
import { resolveParentScope } from './parent-scope';
|
|
7
|
-
import { replaceBlockAtParent } from './replace-block-at-parent';
|
|
1
|
+
/** Applies the results a paste surface hook produced to the document. `start` is where the paste
|
|
2
|
+
* began, which each commit records as undo's caret. */
|
|
3
|
+
import { leafAtRawOffset } from '../container-offsets';
|
|
4
|
+
import { blockNodeAt } from '../node-primitives';
|
|
8
5
|
/**
|
|
9
|
-
* Apply an inline paste
|
|
10
|
-
* commits the
|
|
11
|
-
* originating bundle may not match the target's level. The single-block route stays
|
|
12
|
-
* synchronous through its mutation so the caller can set cursor state before the first
|
|
13
|
-
* reactivity flush.
|
|
6
|
+
* Apply an inline paste, reporting where the caret lands in the stored bytes. A cross-block paste
|
|
7
|
+
* commits at the parent list, since the originating action bundle may not match the target's level.
|
|
14
8
|
*/
|
|
15
|
-
export async function applyInlineResult(targetPath, result, ctx) {
|
|
16
|
-
if (ctx.
|
|
17
|
-
return
|
|
9
|
+
export async function applyInlineResult(targetPath, result, ctx, start) {
|
|
10
|
+
if (ctx.crossBlock) {
|
|
11
|
+
return commitInlineCrossBlock(targetPath, result, ctx, start);
|
|
18
12
|
}
|
|
19
|
-
// Unawaited
|
|
20
|
-
//
|
|
13
|
+
// Unawaited, so the caller places the caret before the first reactive flush and both land in
|
|
14
|
+
// that one flush.
|
|
21
15
|
const blockIndex = targetPath[targetPath.length - 1];
|
|
22
|
-
|
|
23
|
-
return undefined;
|
|
16
|
+
const write = ctx.blockEdit.updateBlockContent(blockIndex, result.newRaw, 'literal', start.offset, result.caretOffset);
|
|
17
|
+
return write.admitted ? { path: targetPath, offset: write.caret } : undefined;
|
|
24
18
|
}
|
|
25
19
|
/**
|
|
26
|
-
* Cross-block inline paste
|
|
27
|
-
*
|
|
28
|
-
* `childIds` aligned and puts the insertion on the `edit` stream. The mutation routes
|
|
29
|
-
* through the same-slot re-parse funnel, so a paste completing marker syntax re-mints the
|
|
30
|
-
* slot at the reparsed kind instead of leaving the old kind holding foreign bytes.
|
|
20
|
+
* Cross-block inline paste, committed at the parent list so its `childIds` stay aligned. The write
|
|
21
|
+
* goes through the reparse path, so a paste that completes marker syntax changes the block's kind.
|
|
31
22
|
*/
|
|
32
|
-
async function
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const leafIndex = targetPath[targetPath.length - 1];
|
|
37
|
-
let settled = { change: { op: 'noop' }, textStart: 0 };
|
|
38
|
-
let siblings = [];
|
|
39
|
-
await ctx.controller.commitMultiScope({
|
|
40
|
-
scopes: [scope],
|
|
41
|
-
snapshot: 'skip',
|
|
42
|
-
mutate: ([view]) => {
|
|
43
|
-
// The slot may still be snapshot-shared, and the funnel's same-kind branch writes
|
|
44
|
-
// its raw in place (G1.9).
|
|
45
|
-
ensureUnsharedChild(view, leafIndex, view.sharing);
|
|
46
|
-
settled = updateNodeContent({ children: view.children, ownerKind: view.node.kind, owner: view.node }, leafIndex, result.newRaw, ctx.grammar, view.sharing);
|
|
47
|
-
siblings = view.children;
|
|
48
|
-
stampStructuralChange(view.children, settled.change, view.sharing);
|
|
49
|
-
return [settled.change];
|
|
50
|
-
},
|
|
51
|
-
op: {
|
|
52
|
-
kind: 'updateContent',
|
|
53
|
-
detail: { length: result.newRaw.length },
|
|
54
|
-
eventPath: docPathFrom(targetPath)
|
|
55
|
-
}
|
|
23
|
+
async function commitInlineCrossBlock(targetPath, result, ctx, start) {
|
|
24
|
+
const landed = await ctx.controller.commitLeafText(targetPath, result.newRaw, {
|
|
25
|
+
caret: result.caretOffset,
|
|
26
|
+
snapshotOffset: start.offset
|
|
56
27
|
});
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
28
|
+
if (!landed.wrote)
|
|
29
|
+
return undefined;
|
|
30
|
+
// The paste can make the block a container, whose caret belongs in the leaf holding the offset.
|
|
31
|
+
const blockPath = [...landed.caret.path];
|
|
32
|
+
const block = blockNodeAt(ctx.doc, blockPath);
|
|
33
|
+
const leaf = block?.children?.length ? leafAtRawOffset(block, landed.caret.offset) : null;
|
|
34
|
+
return {
|
|
35
|
+
path: [...blockPath, ...(leaf?.path ?? [])],
|
|
36
|
+
offset: leaf?.offset ?? landed.caret.offset
|
|
37
|
+
};
|
|
61
38
|
}
|
|
62
|
-
export async function applyStructuralResult(targetPath, result, ctx, trailingSeparator = '') {
|
|
63
|
-
await
|
|
64
|
-
doc: ctx.doc,
|
|
65
|
-
blockPath: targetPath,
|
|
66
|
-
replacement: result.replacement,
|
|
67
|
-
controller: ctx.controller,
|
|
68
|
-
undoEntry: ctx.undoEntry ?? 'own',
|
|
69
|
-
focusReplacementIndex: result.focusReplacementIndex,
|
|
70
|
-
focusOffset: result.focusOffset,
|
|
39
|
+
export async function applyStructuralResult(targetPath, result, ctx, start, trailingSeparator = '') {
|
|
40
|
+
await ctx.controller.replaceBlock(targetPath, result.replacement, { replacementIndex: result.focusReplacementIndex, offset: result.focusOffset }, {
|
|
71
41
|
source: 'paste-dispatch',
|
|
72
|
-
trailingSeparator,
|
|
73
|
-
|
|
42
|
+
trailingBlank: trailingSeparator !== '',
|
|
43
|
+
snapshotOffset: start.offset
|
|
74
44
|
});
|
|
75
45
|
}
|