@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,9 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Where paste applies a container's `bodyWrite` escape: paste builds nodes before any content
|
|
3
|
+
* write sees them, so the escape is applied here instead, to the clipboard text before the
|
|
4
|
+
* strategy-picking parse and to the built replacement at the splice.
|
|
5
5
|
*/
|
|
6
|
-
import type {
|
|
6
|
+
import type { CstNode, Document } from '../../core/nodes';
|
|
7
|
+
import type { NodeView } from '../../core/node-views';
|
|
8
|
+
import { type LineEnding } from '../../core/lines';
|
|
7
9
|
import type { GrammarView } from '../../schema/block-openers';
|
|
8
10
|
/** Clipboard text made legal inside every `bodyWrite`-declaring ancestor of the paste target. */
|
|
9
11
|
export declare function normalizeClipboardForBody(doc: Document, targetPath: number[], text: string): string;
|
|
@@ -13,7 +15,7 @@ export interface BodyLegalReplacement {
|
|
|
13
15
|
mapIndex: (index: number) => number;
|
|
14
16
|
}
|
|
15
17
|
/**
|
|
16
|
-
* Replacement nodes made legal as `
|
|
18
|
+
* Replacement nodes made legal as `owner`'s children. A changed raw reparses whole, so
|
|
17
19
|
* the landed kind follows the escaped bytes and a container's children stay in step.
|
|
18
20
|
*/
|
|
19
|
-
export declare function normalizeReplacementForBody(
|
|
21
|
+
export declare function normalizeReplacementForBody(owner: NodeView | undefined, replacement: CstNode[], ending: LineEnding, grammar: GrammarView): BodyLegalReplacement;
|
|
@@ -1,49 +1,48 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Where paste applies a container's `bodyWrite` escape: paste builds nodes before any content
|
|
3
|
+
* write sees them, so the escape is applied here instead, to the clipboard text before the
|
|
4
|
+
* strategy-picking parse and to the built replacement at the splice.
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { documentLineEnding } from '../../core/lines';
|
|
7
|
+
import { readBlocks } from '../../core/parser';
|
|
7
8
|
import { tryGetBlockKindDescriptor } from '../../schema/block-kind-descriptor';
|
|
8
9
|
import { ensureEditableContainers, isBlockNode, nodeAt, normalizeBodyWrite, normalizeReplacementTrivia } from '../node-primitives';
|
|
9
10
|
/** Clipboard text made legal inside every `bodyWrite`-declaring ancestor of the paste target. */
|
|
10
11
|
export function normalizeClipboardForBody(doc, targetPath, text) {
|
|
11
12
|
let out = text;
|
|
13
|
+
const lineEnding = documentLineEnding(doc);
|
|
12
14
|
for (let depth = targetPath.length - 1; depth >= 1; depth--) {
|
|
13
15
|
const ancestor = nodeAt(doc, targetPath.slice(0, depth));
|
|
14
16
|
if (ancestor && isBlockNode(ancestor))
|
|
15
|
-
out = normalizeBodyWrite(ancestor
|
|
17
|
+
out = normalizeBodyWrite(ancestor, out, lineEnding);
|
|
16
18
|
}
|
|
17
19
|
return out;
|
|
18
20
|
}
|
|
19
21
|
/**
|
|
20
|
-
* Replacement nodes made legal as `
|
|
22
|
+
* Replacement nodes made legal as `owner`'s children. A changed raw reparses whole, so
|
|
21
23
|
* the landed kind follows the escaped bytes and a container's children stay in step.
|
|
22
24
|
*/
|
|
23
|
-
export function normalizeReplacementForBody(
|
|
24
|
-
if (
|
|
25
|
+
export function normalizeReplacementForBody(owner, replacement, ending, grammar) {
|
|
26
|
+
if (owner === undefined || !tryGetBlockKindDescriptor(owner.kind)?.bodyWrite) {
|
|
25
27
|
return { replacement, mapIndex: (i) => i };
|
|
26
28
|
}
|
|
27
29
|
const out = [];
|
|
28
30
|
const starts = [];
|
|
29
31
|
for (const node of replacement) {
|
|
30
32
|
starts.push(out.length);
|
|
31
|
-
const escaped = normalizeBodyWrite(
|
|
33
|
+
const escaped = normalizeBodyWrite(owner, node.raw, ending);
|
|
32
34
|
if (escaped === node.raw) {
|
|
33
35
|
out.push(node);
|
|
34
36
|
continue;
|
|
35
37
|
}
|
|
36
|
-
const reparsed =
|
|
37
|
-
scope: 'fragment',
|
|
38
|
-
...(grammar ? { grammar } : {})
|
|
39
|
-
}).children;
|
|
38
|
+
const reparsed = readBlocks(escaped, { grammar, scope: 'fragment' }).children;
|
|
40
39
|
if (reparsed.length === 0) {
|
|
41
40
|
out.push(node);
|
|
42
41
|
continue;
|
|
43
42
|
}
|
|
44
43
|
const carried = normalizeReplacementTrivia(node, reparsed);
|
|
45
44
|
for (const minted of carried)
|
|
46
|
-
ensureEditableContainers(minted);
|
|
45
|
+
ensureEditableContainers(minted, ending);
|
|
47
46
|
out.push(...carried);
|
|
48
47
|
}
|
|
49
48
|
return {
|
|
@@ -5,28 +5,25 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { CstNode, Document } from '../../core/nodes';
|
|
7
7
|
import type { PasteDispatchContext } from './dispatch';
|
|
8
|
+
import type { CommitSnapshotArg } from '../../action-contracts';
|
|
8
9
|
interface ContainerUnwrap {
|
|
9
10
|
outerPath: number[];
|
|
10
11
|
/** Index within outer.children of the target descendant. */
|
|
11
12
|
spliceIndex: number;
|
|
12
13
|
items: CstNode[];
|
|
13
|
-
/**
|
|
14
|
-
*
|
|
15
|
-
* the rest as siblings, reattach post-caret residue to the last. Absent means the
|
|
16
|
-
* descendant is empty and gets replaced wholesale.
|
|
17
|
-
*/
|
|
14
|
+
/** A non-empty target: the first item merges into the target leaf, the rest land as siblings
|
|
15
|
+
* with the residue on the last. Absent: the empty descendant is replaced whole. */
|
|
18
16
|
merge?: {
|
|
19
17
|
targetLeafPath: number[];
|
|
20
18
|
offset: number;
|
|
21
|
-
/** The target leaf's bytes
|
|
19
|
+
/** The target leaf's bytes after the paste's delete half. */
|
|
22
20
|
targetRaw: string;
|
|
23
21
|
};
|
|
24
22
|
}
|
|
25
23
|
/**
|
|
26
|
-
* Whether to flatten the paste into a matching ancestor container
|
|
27
|
-
*
|
|
28
|
-
* paste into a partially-filled item keeps the nested-sub-container behavior.
|
|
24
|
+
* Whether to flatten the paste into a matching ancestor container: an empty target always, a
|
|
25
|
+
* filled one only across blocks, so a single-block paste into a filled item nests a sub-container.
|
|
29
26
|
*/
|
|
30
27
|
export declare function findContainerMatchingUnwrap(doc: Document, targetPath: number[], offset: number, parsed: Document, crossBlockContext: boolean, targetRaw?: string): ContainerUnwrap | null;
|
|
31
|
-
export declare function applyContainerMatchingPaste(unwrap: ContainerUnwrap, ctx: PasteDispatchContext): Promise<void>;
|
|
28
|
+
export declare function applyContainerMatchingPaste(unwrap: ContainerUnwrap, ctx: PasteDispatchContext, start: CommitSnapshotArg): Promise<void>;
|
|
32
29
|
export {};
|
|
@@ -5,22 +5,22 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { CURSOR_END } from '../../block-component';
|
|
7
7
|
import { devWarn } from '../../dev-warn';
|
|
8
|
-
import { trailingLineEnding, trimTrailingLineEnding } from '../../core/lines';
|
|
9
|
-
import { nodeAt
|
|
10
|
-
import {
|
|
8
|
+
import { documentLineEnding, isBlankText, trailingLineEnding, trimTrailingLineEnding } from '../../core/lines';
|
|
9
|
+
import { nodeAt } from '../node-primitives';
|
|
10
|
+
import { legalizeWrite, settledCaretPosition, updateNodeContent } from '../content-write';
|
|
11
|
+
import { leafAtRawOffset } from '../container-offsets';
|
|
11
12
|
import { containerPasteFor } from './container-paste';
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
13
|
+
import { rebuildContainerRaw } from '../../schema/container-raw';
|
|
14
|
+
import { ensureUnsharedPath } from '../unshare';
|
|
14
15
|
import { rebuildUnsharedChain } from '../chain-rebuild';
|
|
15
16
|
import { containerScopeState } from './parent-scope';
|
|
16
17
|
import { applyStructuralChangeToIdsRefs, stampStructuralChange } from '../structural-change';
|
|
17
18
|
import { renumberOrderedList, templatePastedItemMarkers } from '../list/ordered-markers';
|
|
18
|
-
import {
|
|
19
|
+
import { spliceMany } from '../splice-many';
|
|
19
20
|
import { docPathFrom } from '../../cursor/coordinate-spaces';
|
|
20
21
|
/**
|
|
21
|
-
* Whether to flatten the paste into a matching ancestor container
|
|
22
|
-
*
|
|
23
|
-
* paste into a partially-filled item keeps the nested-sub-container behavior.
|
|
22
|
+
* Whether to flatten the paste into a matching ancestor container: an empty target always, a
|
|
23
|
+
* filled one only across blocks, so a single-block paste into a filled item nests a sub-container.
|
|
24
24
|
*/
|
|
25
25
|
export function findContainerMatchingUnwrap(doc, targetPath, offset, parsed, crossBlockContext, targetRaw) {
|
|
26
26
|
if (parsed.children.length !== 1)
|
|
@@ -71,18 +71,17 @@ export function findContainerMatchingUnwrap(doc, targetPath, offset, parsed, cro
|
|
|
71
71
|
function isEmptyContainerChild(node, postDelete) {
|
|
72
72
|
const rawOf = (n) => (n === postDelete.node ? postDelete.raw : n.raw);
|
|
73
73
|
if (!node.children || node.children.length === 0)
|
|
74
|
-
return rawOf(node)
|
|
74
|
+
return isBlankText(rawOf(node));
|
|
75
75
|
if (node.children.length !== 1)
|
|
76
76
|
return false;
|
|
77
77
|
const c = node.children[0];
|
|
78
78
|
if (c.kind !== 'paragraph')
|
|
79
79
|
return false;
|
|
80
|
-
return rawOf(c)
|
|
80
|
+
return isBlankText(rawOf(c));
|
|
81
81
|
}
|
|
82
82
|
/**
|
|
83
|
-
* The one paragraph an unwrapped item's text may be spliced as.
|
|
84
|
-
* offset
|
|
85
|
-
* so both writes re-read this rather than trusting the finder's gate from a distance.
|
|
83
|
+
* The one paragraph an unwrapped item's text may be spliced as. Only prose bytes can take the
|
|
84
|
+
* merge's display offset, so both writes re-check rather than trust the finder.
|
|
86
85
|
*/
|
|
87
86
|
function singleParagraphChildOf(node) {
|
|
88
87
|
if (!node.children || node.children.length !== 1)
|
|
@@ -90,24 +89,21 @@ function singleParagraphChildOf(node) {
|
|
|
90
89
|
const child = node.children[0];
|
|
91
90
|
return child.kind === 'paragraph' ? child : null;
|
|
92
91
|
}
|
|
93
|
-
export async function applyContainerMatchingPaste(unwrap, ctx) {
|
|
92
|
+
export async function applyContainerMatchingPaste(unwrap, ctx, start) {
|
|
94
93
|
const outer = nodeAt(ctx.doc, unwrap.outerPath);
|
|
95
94
|
if (!outer)
|
|
96
95
|
return;
|
|
97
96
|
const outerState = containerScopeState(ctx.controller, outer);
|
|
98
97
|
if (unwrap.merge) {
|
|
99
|
-
await applyContainerMatchingMerge(unwrap, unwrap.merge, outer, outerState, ctx);
|
|
98
|
+
await applyContainerMatchingMerge(unwrap, unwrap.merge, outer, outerState, ctx, start);
|
|
100
99
|
return;
|
|
101
100
|
}
|
|
102
101
|
templatePastedItemMarkers(unwrap.items, outer, unwrap.spliceIndex);
|
|
103
|
-
const snapshot = ctx.undoEntry === 'join'
|
|
104
|
-
? 'skip'
|
|
105
|
-
: { path: docPathFrom(unwrap.outerPath), offset: 0 };
|
|
106
102
|
await ctx.controller.commitMultiScope({
|
|
107
103
|
scopes: [{ node: outer, state: outerState, path: unwrap.outerPath }],
|
|
108
|
-
snapshot,
|
|
104
|
+
snapshot: start,
|
|
109
105
|
mutate: ([scopeView]) => {
|
|
110
|
-
|
|
106
|
+
spliceMany(scopeView.children, unwrap.spliceIndex, 1, unwrap.items);
|
|
111
107
|
const change = {
|
|
112
108
|
op: 'replace',
|
|
113
109
|
at: unwrap.spliceIndex,
|
|
@@ -124,30 +120,31 @@ export async function applyContainerMatchingPaste(unwrap, ctx) {
|
|
|
124
120
|
detail: { source: 'container-matching', outerPath: unwrap.outerPath },
|
|
125
121
|
eventPath: docPathFrom(unwrap.outerPath)
|
|
126
122
|
},
|
|
127
|
-
|
|
123
|
+
landing: () => {
|
|
128
124
|
const lastInsertedIdx = unwrap.spliceIndex + unwrap.items.length - 1;
|
|
129
|
-
return
|
|
125
|
+
return { path: docPathFrom([...unwrap.outerPath, lastInsertedIdx]), offset: CURSOR_END };
|
|
130
126
|
}
|
|
131
127
|
});
|
|
132
128
|
}
|
|
133
129
|
/** A single-item clipboard keeps everything in the target leaf. */
|
|
134
|
-
async function applyContainerMatchingMerge(unwrap, merge, outer, outerState, ctx) {
|
|
130
|
+
async function applyContainerMatchingMerge(unwrap, merge, outer, outerState, ctx, snapshot) {
|
|
135
131
|
const targetLeaf = nodeAt(ctx.doc, merge.targetLeafPath);
|
|
136
132
|
if (!targetLeaf)
|
|
137
133
|
return;
|
|
138
134
|
const firstLeaf = singleParagraphChildOf(unwrap.items[0]);
|
|
139
135
|
const lastLeaf = singleParagraphChildOf(unwrap.items[unwrap.items.length - 1]);
|
|
140
136
|
if (!firstLeaf || !lastLeaf) {
|
|
141
|
-
// Unreachable while the finder's
|
|
142
|
-
//
|
|
137
|
+
// Unreachable while the finder's check holds. Declining before the commit keeps a drifted
|
|
138
|
+
// check a clean no-op, and the warning is what stops that drift being silent.
|
|
143
139
|
devWarn('paste-container-match', 'merge items are no longer single-paragraph', {
|
|
144
140
|
first: unwrap.items[0].kind,
|
|
145
141
|
last: unwrap.items[unwrap.items.length - 1].kind
|
|
146
142
|
});
|
|
147
143
|
return;
|
|
148
144
|
}
|
|
149
|
-
// Post-delete bytes:
|
|
150
|
-
const
|
|
145
|
+
// Post-delete bytes: dispatch applied the paste's delete half before picking this strategy.
|
|
146
|
+
const lineEnding = documentLineEnding(ctx.doc);
|
|
147
|
+
const targetLineEnding = trailingLineEnding(merge.targetRaw, lineEnding);
|
|
151
148
|
const targetDisplay = trimTrailingLineEnding(merge.targetRaw);
|
|
152
149
|
const displayBefore = targetDisplay.slice(0, merge.offset);
|
|
153
150
|
const displayAfter = targetDisplay.slice(merge.offset);
|
|
@@ -156,23 +153,31 @@ async function applyContainerMatchingMerge(unwrap, merge, outer, outerState, ctx
|
|
|
156
153
|
// The first item merges into the target leaf, keeping its marker; only the trailing
|
|
157
154
|
// siblings splice in, landing after the target.
|
|
158
155
|
templatePastedItemMarkers(remainingItems, outer, unwrap.spliceIndex + 1);
|
|
159
|
-
const
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
156
|
+
const leafIndex = merge.targetLeafPath[merge.targetLeafPath.length - 1];
|
|
157
|
+
/**
|
|
158
|
+
* The merged leaf's new text through the content write against its holder, whose ids follow
|
|
159
|
+
* any kind change; the holder sits below the scope node, so its whole chain is copied first.
|
|
160
|
+
*/
|
|
161
|
+
const writeMergedLeaf = (text, sharing) => {
|
|
162
|
+
const chain = ensureUnsharedPath(ctx.doc, merge.targetLeafPath, sharing).slice(0, -1);
|
|
163
|
+
const holder = chain[chain.length - 1];
|
|
164
|
+
const body = { children: holder.children, owner: holder, lineEnding };
|
|
165
|
+
const write = legalizeWrite(body, leafIndex, text, 'literal');
|
|
166
|
+
const settled = updateNodeContent(body, leafIndex, write, ctx.reading.grammar, sharing);
|
|
167
|
+
if (holder.childIds) {
|
|
168
|
+
applyStructuralChangeToIdsRefs(settled.change, holder.childIds, new Array(holder.childIds.length));
|
|
169
|
+
}
|
|
170
|
+
return { chain, settled, storedOffset: write.storedOffset };
|
|
166
171
|
};
|
|
172
|
+
let merged = null;
|
|
167
173
|
if (remainingItems.length === 0) {
|
|
168
174
|
await ctx.controller.commitMultiScope({
|
|
169
175
|
scopes: [{ node: outer, state: outerState, path: unwrap.outerPath }],
|
|
170
176
|
snapshot,
|
|
171
177
|
mutate: ([scopeView]) => {
|
|
172
178
|
const sharing = scopeView.sharing;
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
rebuildUnsharedChain(ctx.doc, chain, sharing, null, ctx.grammar);
|
|
179
|
+
merged = writeMergedLeaf(displayBefore + firstItemText + displayAfter + targetLineEnding, sharing);
|
|
180
|
+
rebuildUnsharedChain(ctx.doc, merged.chain, sharing, null, ctx.reading.grammar);
|
|
176
181
|
return [{ op: 'noop' }];
|
|
177
182
|
},
|
|
178
183
|
op: {
|
|
@@ -180,15 +185,23 @@ async function applyContainerMatchingMerge(unwrap, merge, outer, outerState, ctx
|
|
|
180
185
|
detail: { source: 'container-matching-merge-singleton', outerPath: unwrap.outerPath },
|
|
181
186
|
eventPath: docPathFrom(unwrap.outerPath)
|
|
182
187
|
},
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
188
|
+
landing: () => {
|
|
189
|
+
// A char offset inside the merged leaf, not a block index, so land on the leaf
|
|
190
|
+
// itself: a container's entry offset would take its last child's end.
|
|
191
|
+
const joined = displayBefore.length + firstItemText.length;
|
|
192
|
+
if (!merged)
|
|
193
|
+
return { path: docPathFrom(merge.targetLeafPath), offset: joined };
|
|
194
|
+
const holderPath = merge.targetLeafPath.slice(0, -1);
|
|
195
|
+
const holder = nodeAt(ctx.doc, holderPath);
|
|
196
|
+
const children = holder?.children ?? [];
|
|
197
|
+
const at = settledCaretPosition(merged.settled, leafIndex, merged.storedOffset(joined), children);
|
|
198
|
+
return { path: docPathFrom([...holderPath, at.index]), offset: at.offset };
|
|
199
|
+
}
|
|
187
200
|
});
|
|
188
201
|
return;
|
|
189
202
|
}
|
|
190
203
|
const lastItem = remainingItems[remainingItems.length - 1];
|
|
191
|
-
const lastLineEnding = trailingLineEnding(lastLeaf.raw);
|
|
204
|
+
const lastLineEnding = trailingLineEnding(lastLeaf.raw, lineEnding);
|
|
192
205
|
const lastDisplay = trimTrailingLineEnding(lastLeaf.raw);
|
|
193
206
|
let residue = { change: { op: 'noop' }, textStart: 0 };
|
|
194
207
|
await ctx.controller.commitMultiScope({
|
|
@@ -196,20 +209,19 @@ async function applyContainerMatchingMerge(unwrap, merge, outer, outerState, ctx
|
|
|
196
209
|
snapshot,
|
|
197
210
|
mutate: ([scopeView]) => {
|
|
198
211
|
const sharing = scopeView.sharing;
|
|
199
|
-
const { chain
|
|
200
|
-
writeOwnRaw(ownedLeaf, displayBefore + firstItemText + targetLineEnding, ctx.grammar);
|
|
212
|
+
const { chain } = writeMergedLeaf(displayBefore + firstItemText + targetLineEnding, sharing);
|
|
201
213
|
// The residue can cross a kind boundary (a fence closer landing in a paragraph),
|
|
202
|
-
// so it reattaches through the reparse
|
|
203
|
-
residue = updateNodeContent({ children: lastItem.children,
|
|
204
|
-
// The write's
|
|
205
|
-
// does not cover: its ids stay in step here, and the caret
|
|
214
|
+
// so it reattaches through the reparse path, never a bare write.
|
|
215
|
+
residue = updateNodeContent({ children: lastItem.children, owner: lastItem, lineEnding }, 0, lastDisplay + displayAfter + lastLineEnding, ctx.reading.grammar, sharing);
|
|
216
|
+
// The write's fix-up can splice the item's own body, a list this commit's descriptor
|
|
217
|
+
// does not cover: its ids stay in step here, and the caret follows it below.
|
|
206
218
|
if (lastItem.childIds) {
|
|
207
219
|
applyStructuralChangeToIdsRefs(residue.change, lastItem.childIds, new Array(lastItem.childIds.length));
|
|
208
220
|
}
|
|
209
|
-
// Both rebuilds run before the splice, so the
|
|
221
|
+
// Both rebuilds run before the splice, so the children written to state carry correct
|
|
210
222
|
// raws in one reactive flush.
|
|
211
|
-
rebuildUnsharedChain(ctx.doc, chain, sharing, null, ctx.grammar);
|
|
212
|
-
|
|
223
|
+
rebuildUnsharedChain(ctx.doc, chain, sharing, null, ctx.reading.grammar);
|
|
224
|
+
rebuildContainerRaw(remainingItems[remainingItems.length - 1], ctx.reading.grammar);
|
|
213
225
|
// The siblings land after the merged target, which keeps its own slot.
|
|
214
226
|
const insertAt = unwrap.spliceIndex + 1;
|
|
215
227
|
const change = {
|
|
@@ -217,7 +229,7 @@ async function applyContainerMatchingMerge(unwrap, merge, outer, outerState, ctx
|
|
|
217
229
|
at: insertAt,
|
|
218
230
|
count: remainingItems.length
|
|
219
231
|
};
|
|
220
|
-
|
|
232
|
+
spliceMany(scopeView.children, insertAt, 0, remainingItems);
|
|
221
233
|
stampStructuralChange(scopeView.children, change, sharing);
|
|
222
234
|
// The already-proxied tail below the spliced siblings; the merged target keeps
|
|
223
235
|
// its number.
|
|
@@ -229,12 +241,18 @@ async function applyContainerMatchingMerge(unwrap, merge, outer, outerState, ctx
|
|
|
229
241
|
detail: { source: 'container-matching-merge', outerPath: unwrap.outerPath },
|
|
230
242
|
eventPath: docPathFrom(unwrap.outerPath)
|
|
231
243
|
},
|
|
232
|
-
|
|
233
|
-
// A char offset in the last spliced item's paragraph, so land on the paragraph
|
|
234
|
-
//
|
|
244
|
+
landing: () => {
|
|
245
|
+
// A char offset in the last spliced item's paragraph, so land on the paragraph rather
|
|
246
|
+
// than CURSOR_END on the item, at the position the residue's own fix-up left it in.
|
|
235
247
|
const lastInsertedIdx = unwrap.spliceIndex + remainingItems.length;
|
|
236
|
-
const
|
|
237
|
-
|
|
248
|
+
const children = lastItem.children ?? [];
|
|
249
|
+
const at = settledCaretPosition(residue, 0, lastDisplay.length, children);
|
|
250
|
+
const block = children[at.index];
|
|
251
|
+
const leaf = (block?.children?.length && leafAtRawOffset(block, at.offset)) || null;
|
|
252
|
+
return {
|
|
253
|
+
path: docPathFrom([...unwrap.outerPath, lastInsertedIdx, at.index, ...(leaf?.path ?? [])]),
|
|
254
|
+
offset: leaf?.offset ?? at.offset
|
|
255
|
+
};
|
|
238
256
|
}
|
|
239
257
|
});
|
|
240
258
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The one
|
|
2
|
+
* The one place the paste checks read a kind's `containerPaste` declaration through.
|
|
3
3
|
* `matchesAncestor` is plugin code, and on the cross-block route the covering range delete
|
|
4
|
-
* has already committed when a
|
|
5
|
-
* selection deleted and nothing pasted. The returned declaration
|
|
4
|
+
* has already committed when a check consults it, so an escaping throw would leave the
|
|
5
|
+
* selection deleted and nothing pasted. The returned declaration already catches it.
|
|
6
6
|
*/
|
|
7
7
|
import type { AnyBlockKind } from '../../core/nodes';
|
|
8
8
|
import type { BlockKindDescriptor } from '../../schema/block-kind-descriptor';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The one
|
|
2
|
+
* The one place the paste checks read a kind's `containerPaste` declaration through.
|
|
3
3
|
* `matchesAncestor` is plugin code, and on the cross-block route the covering range delete
|
|
4
|
-
* has already committed when a
|
|
5
|
-
* selection deleted and nothing pasted. The returned declaration
|
|
4
|
+
* has already committed when a check consults it, so an escaping throw would leave the
|
|
5
|
+
* selection deleted and nothing pasted. The returned declaration already catches it.
|
|
6
6
|
*/
|
|
7
7
|
import { tryGetBlockKindDescriptor } from '../../schema/block-kind-descriptor';
|
|
8
8
|
import { devWarn } from '../../dev-warn';
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Single entry point for paste: parse the clipboard, pick inline
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* block's `pendingCursorOffset` may address a block the range delete is about to unmount.
|
|
2
|
+
* Single entry point for paste: parse the clipboard, pick inline or structural, and route through
|
|
3
|
+
* the target kind's `PasteSurface` (its paste handlers), whose inline and structural results this
|
|
4
|
+
* module applies; a scoped-structural handler owns its whole mutation, focus included. A
|
|
5
|
+
* cross-block paste focuses through the DOM, since its range delete may unmount the origin block.
|
|
7
6
|
*/
|
|
8
|
-
import type { BlockEditActions
|
|
7
|
+
import type { BlockEditActions } from '../../action-contracts';
|
|
9
8
|
import type { Document } from '../../core/nodes';
|
|
10
|
-
import type {
|
|
9
|
+
import type { Reading } from '../../schema/reading';
|
|
11
10
|
import type { PluginActivation } from '../../schema/plugin-activation';
|
|
12
|
-
import { type PasteRange
|
|
11
|
+
import { type PasteRange } from '../paste-surfaces';
|
|
13
12
|
import type { PasteCommitCoordinator } from './paste-deps';
|
|
14
13
|
export type PasteStrategy = 'inline' | 'structural';
|
|
15
14
|
export interface PasteDispatchInput {
|
|
@@ -17,28 +16,28 @@ export interface PasteDispatchInput {
|
|
|
17
16
|
pastedText: string;
|
|
18
17
|
/** Path from Document root to the target node. Length ≥ 1. */
|
|
19
18
|
targetPath: number[];
|
|
20
|
-
/** Caret offset within the target node's raw. */
|
|
19
|
+
/** Caret offset within the target node's raw; with `preDelete`, its start. */
|
|
21
20
|
offset: number;
|
|
22
21
|
/** Selection range within the target's raw (not cross-block). */
|
|
23
22
|
preDelete?: PasteRange;
|
|
23
|
+
/** Where undo puts the caret back when the paste began elsewhere than the range's start: the
|
|
24
|
+
* side a selected widget was selected from. */
|
|
25
|
+
caretBefore?: number;
|
|
24
26
|
}
|
|
25
27
|
export interface PasteDispatchContext {
|
|
26
28
|
doc: Document;
|
|
27
|
-
/** Action bundle for the target's level. Not used
|
|
29
|
+
/** Action bundle for the target's level. Not used on the cross-block route. */
|
|
28
30
|
blockEdit: BlockEditActions;
|
|
29
|
-
/** Commit coordinator
|
|
31
|
+
/** Commit coordinator, required by the multi-scope commit sites inside this module. */
|
|
30
32
|
controller: PasteCommitCoordinator;
|
|
31
|
-
/**
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
*
|
|
36
|
-
|
|
37
|
-
/** The plugins this instance activated, so an unlisted plugin's paste
|
|
38
|
-
|
|
39
|
-
activePlugins?: PluginActivation;
|
|
40
|
-
/** What the paste's DELETE half needs to cross the join seam; absent leaves it byte-literal. */
|
|
41
|
-
seam?: PasteSeam;
|
|
33
|
+
/** The paste lands at the caret a cross-block range delete left: every write commits at the
|
|
34
|
+
* target's parent list, and a partly filled item may take a matching container's items. */
|
|
35
|
+
crossBlock?: boolean;
|
|
36
|
+
/** The clipboard parse and the join's reparse use its grammar, so an unlisted plugin's opener
|
|
37
|
+
* never takes pasted bytes; its mode decides the delete half's cleanup. */
|
|
38
|
+
reading: Reading;
|
|
39
|
+
/** The plugins this instance activated, so an unlisted plugin's paste hooks stay out. */
|
|
40
|
+
activePlugins: PluginActivation;
|
|
42
41
|
}
|
|
43
42
|
/** Where an inline paste's caret belongs once the commit settled, when that moved it. */
|
|
44
43
|
export interface InlineCaretLanding {
|
|
@@ -46,16 +45,14 @@ export interface InlineCaretLanding {
|
|
|
46
45
|
offset: number;
|
|
47
46
|
}
|
|
48
47
|
export interface PasteDispatchResult {
|
|
49
|
-
/**
|
|
50
|
-
*
|
|
51
|
-
* itself. Single-block callers apply it synchronously with the raw mutation so both
|
|
52
|
-
* land in one reactive flush.
|
|
53
|
-
*/
|
|
48
|
+
/** Undefined for a structural paste, which places its own caret. Single-block callers apply it
|
|
49
|
+
* with the raw write, so both land in one reactive flush. */
|
|
54
50
|
inlineCaretOffset?: number;
|
|
55
|
-
/**
|
|
51
|
+
/** Where the cross-block route's caret ended up, when a merge above the target moved the
|
|
52
|
+
* block itself. */
|
|
56
53
|
inlineCaretPath?: number[];
|
|
57
54
|
}
|
|
58
55
|
/** Execute a paste at the specified target position. */
|
|
59
56
|
export declare function pasteDispatch(input: PasteDispatchInput, ctx: PasteDispatchContext): Promise<PasteDispatchResult>;
|
|
60
57
|
export { pickPasteStrategy } from './strategy';
|
|
61
|
-
export { defaultInlineHook, defaultStructuralHook
|
|
58
|
+
export { defaultInlineHook, defaultStructuralHook } from './hooks';
|