@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,157 +1,283 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* The structural edits shared by the top-level and container BlockEditActions, over a
|
|
3
|
+
* `CommitScope`. Each method is the interior case only: no edge guards, no handing up to
|
|
4
|
+
* the parent, no unwrap dispatch; the factories add those.
|
|
5
5
|
*/
|
|
6
|
+
import { tick } from 'svelte';
|
|
6
7
|
import { CURSOR_END, CURSOR_EXACT_START, CURSOR_START } from '../block-component';
|
|
7
|
-
import { displayLength,
|
|
8
|
-
import {
|
|
8
|
+
import { displayLength, documentLineEnding, ownTrailingLineEnding, withLineEnding } from '../core/lines';
|
|
9
|
+
import { normalizeReplacementForBody } from '../tree-operations/paste/body-write';
|
|
10
|
+
import { landedPastePosition, trackedPasteCaret } from '../tree-operations/paste/focus-target';
|
|
11
|
+
import { splitNode as performSplit, mergeWithNext as performMergeNext, mergeIntoPrevDeepLeaf, deleteNode as performDelete, ensureEditableContainers, normalizeReplacementTrivia, rebuildUnsharedChain, restoreSeparatorOnFill, dropDoubledSeparator, emptyParagraph, paragraphNode, writeKeepingTaskMarker } from '../tree-operations';
|
|
9
12
|
import { replacePreservingFirst, stampStructuralChange } from '../tree-operations/structural-change';
|
|
10
13
|
import { spliceMany } from '../tree-operations/splice-many';
|
|
11
14
|
import { isMergeEligible, isBlockEditable } from '../schema/merge-rules';
|
|
12
15
|
import { getBlockKindDescriptor } from '../schema/block-kind-descriptor';
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
16
|
+
import { legalizeWrite, settledCaretPosition, updateNodeContent } from '../tree-operations/content-write';
|
|
17
|
+
import { createPathScope } from './block-edit-scope';
|
|
18
|
+
import { docPathFrom, extendDocPath } from '../cursor/coordinate-spaces';
|
|
19
|
+
import { mergedElseNext, mergedElsePrevious } from './merge-fallback';
|
|
20
|
+
import { previewContentReparse, unlessFocusMoved } from './replacement-focus';
|
|
21
|
+
import { admitsWrite } from './commit/reading-write-gate';
|
|
22
|
+
import { refusedWrite, withStoredCaret } from './stored-caret';
|
|
23
|
+
/** What both merge directions do when the neighbour cannot merge; `dir` names its side. */
|
|
21
24
|
async function handleIneligibleNeighbor(scope, i, dir) {
|
|
22
25
|
const neighbor = i + dir;
|
|
23
26
|
const neighborKind = scope.children()[neighbor].kind;
|
|
24
|
-
// A whole
|
|
25
|
-
//
|
|
27
|
+
// A neighbour focused as a whole is focused, not deleted: the first keypress highlights
|
|
28
|
+
// it, a second deletes it. First so an editable but not mergeable kind never stops here.
|
|
26
29
|
if (getBlockKindDescriptor(neighborKind).blockFocus === 'whole-block') {
|
|
27
|
-
scope.
|
|
28
|
-
return;
|
|
30
|
+
await scope.land(scope.at(neighbor, [], 0));
|
|
31
|
+
return false;
|
|
29
32
|
}
|
|
30
33
|
if (isBlockEditable(neighborKind)) {
|
|
31
|
-
scope.
|
|
32
|
-
return;
|
|
34
|
+
await scope.land(scope.at(neighbor, [], dir < 0 ? CURSOR_END : CURSOR_START));
|
|
35
|
+
return false;
|
|
33
36
|
}
|
|
34
|
-
|
|
37
|
+
return scope.commit({
|
|
35
38
|
snapshot: { index: i, offset: dir < 0 ? 0 : CURSOR_END },
|
|
36
39
|
eventTarget: neighbor,
|
|
37
40
|
op: { kind: 'delete' },
|
|
38
|
-
mutate: (view) => performDelete(
|
|
39
|
-
|
|
41
|
+
mutate: (view) => performDelete(view.body, neighbor, view.reading.grammar, view.sharing),
|
|
42
|
+
// The block the key was pressed in, which a delete above has moved up to `neighbor`.
|
|
43
|
+
landing: () => scope.at(dir < 0 ? neighbor : i, [], dir < 0 ? CURSOR_START : CURSOR_END),
|
|
40
44
|
discardIfNoop: true
|
|
41
45
|
});
|
|
42
46
|
}
|
|
47
|
+
// ── The keystroke ────────────────────────────────────────────────────────────
|
|
48
|
+
/**
|
|
49
|
+
* Every level's `updateBlockContent`: a commit when the trial reparse sees the block change, an
|
|
50
|
+
* in-place write otherwise. Awaiting between the typing burst's undo entry and the commit splits it.
|
|
51
|
+
*/
|
|
52
|
+
export function contentUpdate(scope) {
|
|
53
|
+
return (index, text, mode, preEditOffset, postEditFocusOffset) => {
|
|
54
|
+
scope.caretMemory.forget();
|
|
55
|
+
const kind = () => scope.children()[index]?.kind;
|
|
56
|
+
if (!admitsWrite(scope.reading, 'updateContent', kind))
|
|
57
|
+
return refusedWrite();
|
|
58
|
+
const write = legalizeWrite(scope.target(), index, text, mode);
|
|
59
|
+
const caret = write.storedOffset(postEditFocusOffset ?? preEditOffset);
|
|
60
|
+
// Decided before `work` first yields, which `typeIn` runs up to before it returns.
|
|
61
|
+
let keepsCaret = false;
|
|
62
|
+
const done = scope.typeIn(index, preEditOffset, async () => {
|
|
63
|
+
const trial = previewContentReparse(scope.target(), index, write, scope.reading.grammar);
|
|
64
|
+
if (trial.op !== 'noop') {
|
|
65
|
+
const landed = await commitLeafText(scope, index, write, {
|
|
66
|
+
snapshotOffset: preEditOffset,
|
|
67
|
+
caret,
|
|
68
|
+
landing: unlessFocusMoved
|
|
69
|
+
});
|
|
70
|
+
return landed.wrote;
|
|
71
|
+
}
|
|
72
|
+
const written = scope.writeInPlace(index, write, caret);
|
|
73
|
+
if (!written.wrote)
|
|
74
|
+
return false;
|
|
75
|
+
keepsCaret = !written.relanding;
|
|
76
|
+
if (!written.relanding)
|
|
77
|
+
return true;
|
|
78
|
+
await tick();
|
|
79
|
+
const relanding = unlessFocusMoved(written.relanding);
|
|
80
|
+
if (relanding)
|
|
81
|
+
await scope.land(relanding);
|
|
82
|
+
return true;
|
|
83
|
+
});
|
|
84
|
+
return withStoredCaret(done, caret, write.storedOffset, keepsCaret);
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
// ── One leaf's new text through a commit ─────────────────────────────────────
|
|
88
|
+
/**
|
|
89
|
+
* Commit new text into child `index`. Offsets are in stored bytes: `snapshotOffset` is where undo
|
|
90
|
+
* puts the caret back when nothing is focused, `caret` where it goes after the write.
|
|
91
|
+
*/
|
|
92
|
+
export async function commitLeafText(scope, index, write, opts) {
|
|
93
|
+
let settled = { change: { op: 'noop' }, textStart: 0 };
|
|
94
|
+
let landed = null;
|
|
95
|
+
// Read after the commit: the list's fix-up can move the written block.
|
|
96
|
+
const readLanded = () => {
|
|
97
|
+
const { change } = settled;
|
|
98
|
+
const at = settledCaretPosition(settled, index, opts.caret, scope.children());
|
|
99
|
+
const replaced = change.op === 'replace';
|
|
100
|
+
return {
|
|
101
|
+
wrote: true,
|
|
102
|
+
caret: scope.at(at.index, [], at.offset),
|
|
103
|
+
window: {
|
|
104
|
+
list: scope.path,
|
|
105
|
+
at: replaced ? change.at : index,
|
|
106
|
+
count: replaced ? change.newCount : 1
|
|
107
|
+
},
|
|
108
|
+
replaced: change.op !== 'noop'
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
// A same-kind write reports `noop`, so the stale-raw check needs the leaf named.
|
|
112
|
+
const touchedNodes = [];
|
|
113
|
+
const wrote = await scope.commit({
|
|
114
|
+
snapshot: { index, offset: opts.snapshotOffset },
|
|
115
|
+
eventTarget: index,
|
|
116
|
+
op: { kind: 'updateContent', detail: { length: write.text.length } },
|
|
117
|
+
touchedNodes,
|
|
118
|
+
mutate: (view) => {
|
|
119
|
+
view.unshareChild(index);
|
|
120
|
+
settled = updateNodeContent(view.body, index, write, view.reading.grammar, view.sharing);
|
|
121
|
+
touchedNodes.push(view.body.children[index]);
|
|
122
|
+
stampStructuralChange(view.body.children, settled.change, view.sharing);
|
|
123
|
+
return settled.change;
|
|
124
|
+
},
|
|
125
|
+
afterTick: opts.afterTick &&
|
|
126
|
+
(async () => {
|
|
127
|
+
landed = readLanded();
|
|
128
|
+
await opts.afterTick?.(landed);
|
|
129
|
+
}),
|
|
130
|
+
landing: () => {
|
|
131
|
+
landed ??= readLanded();
|
|
132
|
+
return opts.landing?.(landed) ?? null;
|
|
133
|
+
},
|
|
134
|
+
reveal: opts.reveal
|
|
135
|
+
});
|
|
136
|
+
// The result comes from the commit, not the landing: a collapsed ancestor's landing replaces
|
|
137
|
+
// this one without calling it.
|
|
138
|
+
if (!wrote)
|
|
139
|
+
return { wrote: false };
|
|
140
|
+
return landed ?? readLanded();
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* {@link commitLeafText} for a caller holding the leaf's document path: `text` as written, made
|
|
144
|
+
* legal against the leaf's parent, with `caret` an offset into it.
|
|
145
|
+
*/
|
|
146
|
+
export async function commitLeafTextAt(root, leafPath, text, opts) {
|
|
147
|
+
const scope = createPathScope(root, docPathFrom(leafPath.slice(0, -1)));
|
|
148
|
+
const index = leafPath[leafPath.length - 1];
|
|
149
|
+
if (!scope || !scope.children()[index])
|
|
150
|
+
return { wrote: false };
|
|
151
|
+
const write = legalizeWrite(scope.target(), index, text, 'literal');
|
|
152
|
+
return commitLeafText(scope, index, write, {
|
|
153
|
+
snapshotOffset: opts.snapshotOffset,
|
|
154
|
+
caret: write.storedOffset(opts.caret),
|
|
155
|
+
afterTick: opts.afterTick
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* A command's rewrite of the block at `path` in the document's line ending, its own undo entry
|
|
160
|
+
* whatever typing came before; the caret moves to the block's start only when new blocks land.
|
|
161
|
+
*/
|
|
162
|
+
export async function replaceBlockRaw(root, path, raw) {
|
|
163
|
+
const scope = createPathScope(root, docPathFrom(path.slice(0, -1)));
|
|
164
|
+
const index = path[path.length - 1];
|
|
165
|
+
if (!scope || !scope.children()[index])
|
|
166
|
+
return;
|
|
167
|
+
const target = scope.target();
|
|
168
|
+
const lineEnding = 'lineEnding' in target ? target.lineEnding : documentLineEnding(target);
|
|
169
|
+
const write = legalizeWrite(target, index, withLineEnding(raw, lineEnding), 'literal');
|
|
170
|
+
await commitLeafText(scope, index, write, {
|
|
171
|
+
snapshotOffset: 0,
|
|
172
|
+
caret: 0,
|
|
173
|
+
landing: (landed) => (landed.replaced ? unlessFocusMoved(landed) : null)
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
/** The edit event a replace names: a paste route's source, else how many blocks landed. A
|
|
177
|
+
* container reports an empty replace as the delete it is. */
|
|
178
|
+
function replaceOp(scope, count, source) {
|
|
179
|
+
if (source)
|
|
180
|
+
return { kind: 'replaceBlock', detail: { source } };
|
|
181
|
+
if (count === 0 && scope.collapseEmptyReplaceToDelete)
|
|
182
|
+
return { kind: 'delete' };
|
|
183
|
+
return { kind: 'replaceBlock', detail: { count } };
|
|
184
|
+
}
|
|
185
|
+
/** The clipboard's trailing blank line as the document's own, at its end when none is there yet
|
|
186
|
+
* and the document already ended in a line break. A container's body has no `suffix`. */
|
|
187
|
+
function landTrailingBlank(body, afterIndex, endedBefore) {
|
|
188
|
+
if (!endedBefore || body.suffix !== '' || afterIndex !== body.children.length)
|
|
189
|
+
return;
|
|
190
|
+
body.suffix = body.lineEnding;
|
|
191
|
+
}
|
|
43
192
|
export function createBlockEditCore(scope) {
|
|
44
193
|
const core = {
|
|
45
194
|
async split(i, offset) {
|
|
46
|
-
// Offset 0 is not special: empty block above, content below, caret on the content. The
|
|
47
|
-
// landing is the primitive's answer, not `i + 1` — a plural first half pushes the
|
|
48
|
-
// second half further down, and G1.34 holds the seat to it.
|
|
49
|
-
let secondHalfIndex = i + 1;
|
|
50
195
|
let split;
|
|
51
|
-
|
|
196
|
+
return scope.commit({
|
|
52
197
|
snapshot: { index: i, offset },
|
|
53
198
|
eventTarget: i,
|
|
54
199
|
op: { kind: 'split', detail: { at: offset } },
|
|
55
200
|
mutate: (view) => {
|
|
56
|
-
split = performSplit(
|
|
57
|
-
|
|
58
|
-
stampStructuralChange(view.children, split.change, view.sharing);
|
|
201
|
+
split = performSplit(view.body, i, offset, view.sharing, view.reading);
|
|
202
|
+
stampStructuralChange(view.body.children, split.change, view.sharing);
|
|
59
203
|
return split.change;
|
|
60
204
|
},
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
// A single-line/chrome block splits to nothing, so discard rather than
|
|
67
|
-
// mint a dead entry on a rebound Enter.
|
|
205
|
+
// The primitive's index, not `i + 1`: a first half that parses to several blocks
|
|
206
|
+
// pushes the second half further down.
|
|
207
|
+
landing: () => (split ? scope.at(split.secondHalfIndex, [], CURSOR_EXACT_START) : null),
|
|
208
|
+
// A single-line block (a title row) splits to nothing, so discard rather than
|
|
209
|
+
// push a dead undo entry on a rebound Enter.
|
|
68
210
|
discardIfNoop: true
|
|
69
211
|
});
|
|
70
212
|
},
|
|
71
213
|
async descendToBody(i) {
|
|
72
214
|
const children = scope.children();
|
|
73
|
-
// A body child already exists:
|
|
74
|
-
// (windowed-out, or a collapsed body) leaves the caret put — load-bearing.
|
|
215
|
+
// A body child already exists: a focus move, no undo entry.
|
|
75
216
|
if (i + 1 < children.length) {
|
|
76
|
-
scope.
|
|
77
|
-
return;
|
|
217
|
+
await scope.land(scope.at(i + 1, [], CURSOR_START));
|
|
218
|
+
return false;
|
|
78
219
|
}
|
|
79
|
-
|
|
220
|
+
return scope.commit({
|
|
80
221
|
snapshot: { index: i, offset: 0 },
|
|
81
222
|
eventTarget: i + 1,
|
|
82
223
|
op: { kind: 'appendBlock' },
|
|
83
224
|
mutate: (view) => {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
const body = emptyParagraph('', trailingLineEnding(view.children[i]?.raw ?? '\n'));
|
|
87
|
-
view.children.splice(i + 1, 0, body);
|
|
225
|
+
const body = emptyParagraph('', view.body.lineEnding);
|
|
226
|
+
view.body.children.splice(i + 1, 0, body);
|
|
88
227
|
const change = { op: 'insert', at: i + 1, count: 1 };
|
|
89
|
-
stampStructuralChange(view.children, change, view.sharing);
|
|
228
|
+
stampStructuralChange(view.body.children, change, view.sharing);
|
|
90
229
|
return change;
|
|
91
230
|
},
|
|
92
|
-
|
|
231
|
+
landing: () => scope.at(i + 1, [], 0)
|
|
93
232
|
});
|
|
94
233
|
},
|
|
95
234
|
/**
|
|
96
|
-
* The between-blocks caret
|
|
97
|
-
* so `children.length` appends; the caret lands after the text
|
|
235
|
+
* The paragraph the between-blocks caret creates (`selection/gap-caret.ts`). `i` is a
|
|
236
|
+
* boundary index, so `children.length` appends; the caret lands after the given text.
|
|
98
237
|
*/
|
|
99
238
|
async insertParagraph(i, text) {
|
|
100
|
-
|
|
101
|
-
// Both the separator and the paragraph's own bytes ARE line endings, so both take a
|
|
102
|
-
// real neighbour's (G4.20); a boundary always has one on at least one side.
|
|
103
|
-
const lineEnding = trailingLineEnding((children[i - 1] ?? children[i])?.raw ?? '\n');
|
|
104
|
-
await scope.commit({
|
|
239
|
+
return scope.commit({
|
|
105
240
|
snapshot: { index: i, offset: 0 },
|
|
106
241
|
eventTarget: i,
|
|
107
242
|
op: { kind: 'insertBlock' },
|
|
108
243
|
mutate: (view) => {
|
|
109
|
-
|
|
110
|
-
//
|
|
111
|
-
|
|
112
|
-
|
|
244
|
+
const lineEnding = view.body.lineEnding;
|
|
245
|
+
// Only a list's first block has no separator; anywhere else the new paragraph needs
|
|
246
|
+
// a blank line after its predecessor, whatever the displaced sibling carried.
|
|
247
|
+
const trivia = i > 0 ? lineEnding : (view.body.children[0]?.leadingTrivia ?? '');
|
|
248
|
+
view.body.children.splice(i, 0, paragraphNode(trivia, text, lineEnding));
|
|
113
249
|
const change = { op: 'insert', at: i, count: 1 };
|
|
114
|
-
stampStructuralChange(view.children, change, view.sharing);
|
|
115
|
-
//
|
|
116
|
-
//
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
restoreSeparatorOnFill(parent, i + 1, view.sharing);
|
|
120
|
-
dropDoubledSeparator(parent, i, view.sharing);
|
|
250
|
+
stampStructuralChange(view.body.children, change, view.sharing);
|
|
251
|
+
// The commit's blank-line fix-up cannot infer that the displaced sibling, pushed off
|
|
252
|
+
// the first position, needs a separator, or that an empty paragraph is a blank line.
|
|
253
|
+
restoreSeparatorOnFill(view.body, i + 1, view.sharing);
|
|
254
|
+
dropDoubledSeparator(view.body, i, view.sharing);
|
|
121
255
|
return change;
|
|
122
256
|
},
|
|
123
|
-
|
|
257
|
+
landing: () => scope.at(i, [], displayLength(text))
|
|
124
258
|
});
|
|
125
259
|
},
|
|
126
260
|
async mergeWithPreviousInterior(i) {
|
|
127
261
|
const children = scope.children();
|
|
128
262
|
const prevKind = children[i - 1].kind;
|
|
129
263
|
const currKind = children[i].kind;
|
|
130
|
-
if (!isMergeEligible(prevKind, currKind))
|
|
131
|
-
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
264
|
+
if (!isMergeEligible(prevKind, currKind))
|
|
265
|
+
return handleIneligibleNeighbor(scope, i, -1);
|
|
134
266
|
let mergeResult = null;
|
|
135
|
-
|
|
267
|
+
return scope.commit({
|
|
136
268
|
snapshot: { index: i, offset: 0 },
|
|
137
269
|
eventTarget: i,
|
|
138
270
|
op: { kind: 'merge', detail: { direction: 'prev' } },
|
|
139
271
|
mutate: (view) => {
|
|
140
|
-
mergeResult = mergeIntoPrevDeepLeaf(
|
|
272
|
+
mergeResult = mergeIntoPrevDeepLeaf(view.body, i, view.sharing, view.reading);
|
|
141
273
|
return mergeResult?.change ?? { op: 'noop' };
|
|
142
274
|
},
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
ref?.focus(merged.joinOffset);
|
|
150
|
-
else
|
|
151
|
-
ref?.focusByPath?.(merged.targetPath, merged.joinOffset);
|
|
152
|
-
},
|
|
153
|
-
// A no-target merge changes nothing; discard the entry but keep afterTick,
|
|
154
|
-
// which still lands the caret.
|
|
275
|
+
// The primitive's answer, since the fix-up after the delete can merge the joined
|
|
276
|
+
// block into the one above it.
|
|
277
|
+
landing: () => mergedElsePrevious(mergeResult &&
|
|
278
|
+
scope.at(mergeResult.index, mergeResult.targetPath, mergeResult.joinOffset), extendDocPath(scope.path, i - 1)),
|
|
279
|
+
// A merge with no target changes nothing; discard the undo entry, and the landing
|
|
280
|
+
// still moves the caret.
|
|
155
281
|
discardIfNoop: true
|
|
156
282
|
});
|
|
157
283
|
},
|
|
@@ -159,118 +285,120 @@ export function createBlockEditCore(scope) {
|
|
|
159
285
|
const children = scope.children();
|
|
160
286
|
const currKind = children[i].kind;
|
|
161
287
|
const nextKind = children[i + 1].kind;
|
|
162
|
-
if (!isMergeEligible(currKind, nextKind))
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
// The landing is the primitive's answer, not `displayLength` read ahead of it: a live
|
|
167
|
-
// seam cleanup drops runs on the first block's side and moves where the two met.
|
|
288
|
+
if (!isMergeEligible(currKind, nextKind))
|
|
289
|
+
return handleIneligibleNeighbor(scope, i, 1);
|
|
290
|
+
// The caret offset is the primitive's answer, not `displayLength` read beforehand: live
|
|
291
|
+
// mode's clean-up at the join can drop marker runs and move where the two blocks met.
|
|
168
292
|
let merged = { change: { op: 'noop' }, joinOffset: 0 };
|
|
169
|
-
|
|
293
|
+
return scope.commit({
|
|
170
294
|
snapshot: { index: i, offset: CURSOR_END },
|
|
171
295
|
eventTarget: i,
|
|
172
296
|
op: { kind: 'merge', detail: { direction: 'next' } },
|
|
173
297
|
mutate: (view) => {
|
|
174
|
-
merged = performMergeNext(
|
|
175
|
-
stampStructuralChange(view.children, merged.change, view.sharing);
|
|
298
|
+
merged = performMergeNext(view.body, i, view.reading, view.sharing);
|
|
299
|
+
stampStructuralChange(view.body.children, merged.change, view.sharing);
|
|
176
300
|
return merged.change;
|
|
177
301
|
},
|
|
178
|
-
|
|
179
|
-
if (mergedElseFocusNext(merged.change, scope.refAt(i + 1))) {
|
|
180
|
-
scope.refAt(i)?.focus(merged.joinOffset);
|
|
181
|
-
}
|
|
182
|
-
},
|
|
302
|
+
landing: () => mergedElseNext(merged.change, scope.at(i, [], merged.joinOffset), extendDocPath(scope.path, i + 1)),
|
|
183
303
|
discardIfNoop: true
|
|
184
304
|
});
|
|
185
305
|
},
|
|
186
|
-
async deleteInterior(i) {
|
|
187
|
-
|
|
306
|
+
async deleteInterior(i, gesture) {
|
|
307
|
+
return scope.commit({
|
|
188
308
|
snapshot: { index: i, offset: 0 },
|
|
189
309
|
eventTarget: i,
|
|
190
310
|
op: { kind: 'delete' },
|
|
191
|
-
mutate: (view) => performDelete(
|
|
192
|
-
|
|
193
|
-
const focusIdx = Math.min(i, scope.children().length - 1);
|
|
194
|
-
if (focusIdx >= 0)
|
|
195
|
-
scope.refAt(focusIdx)?.focus(CURSOR_START);
|
|
196
|
-
},
|
|
311
|
+
mutate: (view) => performDelete(view.body, i, view.reading.grammar, view.sharing),
|
|
312
|
+
landing: () => scope.survivor(i, gesture),
|
|
197
313
|
discardIfNoop: true
|
|
198
314
|
});
|
|
199
315
|
},
|
|
200
316
|
async updateBlockMetadata(i, metadata, options) {
|
|
201
317
|
const children = scope.children();
|
|
202
318
|
if (i < 0 || i >= children.length)
|
|
203
|
-
return;
|
|
319
|
+
return false;
|
|
204
320
|
const fields = Object.keys(metadata);
|
|
205
321
|
if (fields.length === 0)
|
|
206
|
-
return;
|
|
207
|
-
// `mutate` returns noop, so the
|
|
208
|
-
//
|
|
209
|
-
// the ceremony reads post-mutate.
|
|
322
|
+
return false;
|
|
323
|
+
// `mutate` returns noop, so the stale-raw check needs the changed node named; the copy
|
|
324
|
+
// exists only after unshareChild, so the commit reads this array after mutate.
|
|
210
325
|
const touchedNodes = [];
|
|
211
|
-
|
|
212
|
-
snapshot:
|
|
326
|
+
return scope.commit({
|
|
327
|
+
snapshot: { index: i, offset: 0 },
|
|
213
328
|
eventTarget: i,
|
|
214
329
|
op: { kind: 'metadataUpdate', detail: { fields } },
|
|
215
330
|
touchedNodes,
|
|
216
331
|
mutate: (view) => {
|
|
217
332
|
const node = view.unshareChild(i);
|
|
218
333
|
node.metadata = { ...(node.metadata ?? {}), ...metadata };
|
|
219
|
-
//
|
|
220
|
-
//
|
|
221
|
-
|
|
222
|
-
// own, so this is the only seam a top-level metadata write crosses.
|
|
223
|
-
// `folds: null` — the rebuild root is the commit's own scope array, whose
|
|
224
|
-
// descriptor this mutate has already fixed as `noop`.
|
|
225
|
-
const [reclassified] = rebuildUnsharedChain({ children: view.children }, [node], view.sharing, null, view.grammar);
|
|
334
|
+
// The chain rebuild re-derives the kind, since metadata can rewrite the opener
|
|
335
|
+
// line (an alert's type). No collapses: this mutate reports `noop` for the list.
|
|
336
|
+
const [reclassified] = rebuildUnsharedChain({ children: view.body.children }, [node], view.sharing, null, view.reading.grammar);
|
|
226
337
|
touchedNodes.push(reclassified?.replacement ?? node);
|
|
227
338
|
return { op: 'noop' };
|
|
228
339
|
},
|
|
229
|
-
|
|
340
|
+
landing: () => {
|
|
341
|
+
const caret = options?.caret;
|
|
342
|
+
return caret ? scope.at(i, caret.path, caret.offset) : null;
|
|
343
|
+
}
|
|
230
344
|
});
|
|
231
345
|
},
|
|
232
|
-
async replaceBlock(i,
|
|
346
|
+
async replaceBlock(i, given, focus, options) {
|
|
233
347
|
const children = scope.children();
|
|
234
348
|
if (i < 0 || i >= children.length)
|
|
235
|
-
return;
|
|
236
|
-
//
|
|
237
|
-
//
|
|
238
|
-
const
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
349
|
+
return null;
|
|
350
|
+
// A replacement is built before any content write sees it, so the container's body rule
|
|
351
|
+
// is applied here, to every block in it.
|
|
352
|
+
const target = scope.target();
|
|
353
|
+
const owner = 'owner' in target ? target.owner : undefined;
|
|
354
|
+
const lineEnding = 'lineEnding' in target ? target.lineEnding : documentLineEnding(target);
|
|
355
|
+
const { replacement, mapIndex } = normalizeReplacementForBody(owner, given, lineEnding, scope.reading.grammar);
|
|
356
|
+
const focusIndex = focus ? mapIndex(focus.replacementIndex) : 0;
|
|
357
|
+
// The fix-up's merges can move where the caret belongs, so the commit keeps it updated.
|
|
358
|
+
const tracked = focus
|
|
359
|
+
? trackedPasteCaret(replacement, i, focusIndex, focus.offset)
|
|
360
|
+
: undefined;
|
|
361
|
+
const snapshot = { index: i, offset: options.snapshotOffset };
|
|
362
|
+
const wrote = await scope.commit({
|
|
242
363
|
snapshot,
|
|
243
364
|
eventTarget: i,
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
op: replacement.length === 0
|
|
247
|
-
? scope.collapseEmptyReplaceToDelete
|
|
248
|
-
? { kind: 'delete' }
|
|
249
|
-
: { kind: 'replaceBlock', detail: { count: 0 } }
|
|
250
|
-
: { kind: 'replaceBlock', detail: { count: replacement.length } },
|
|
365
|
+
op: replaceOp(scope, replacement.length, options?.source),
|
|
366
|
+
trackCaret: tracked,
|
|
251
367
|
mutate: (view) => {
|
|
252
368
|
if (replacement.length === 0) {
|
|
253
|
-
view.children.splice(i, 1);
|
|
369
|
+
view.body.children.splice(i, 1);
|
|
254
370
|
return { op: 'delete', at: i, count: 1 };
|
|
255
371
|
}
|
|
256
|
-
const
|
|
372
|
+
const old = view.body.children[i];
|
|
373
|
+
const normalized = normalizeReplacementTrivia(old, replacement);
|
|
257
374
|
for (const node of normalized)
|
|
258
|
-
ensureEditableContainers(node);
|
|
259
|
-
|
|
260
|
-
const change =
|
|
261
|
-
|
|
375
|
+
ensureEditableContainers(node, view.body.lineEnding);
|
|
376
|
+
const { children, owner } = view.body;
|
|
377
|
+
const change = writeKeepingTaskMarker(owner, children, i, view.sharing, () => {
|
|
378
|
+
spliceMany(children, i, 1, normalized);
|
|
379
|
+
// The first id carries over only to a block of the same kind, whose component
|
|
380
|
+
// the position keeps; another kind mounts a component of its own anyway.
|
|
381
|
+
const replaced = normalized[0].kind === old.kind
|
|
382
|
+
? replacePreservingFirst(i, 1, normalized.length)
|
|
383
|
+
: { op: 'replace', at: i, count: 1, newCount: normalized.length };
|
|
384
|
+
stampStructuralChange(children, replaced, view.sharing);
|
|
385
|
+
return replaced;
|
|
386
|
+
});
|
|
387
|
+
if (options?.trailingBlank) {
|
|
388
|
+
landTrailingBlank(view.body, i + normalized.length, ownTrailingLineEnding(old.raw) !== '');
|
|
389
|
+
}
|
|
262
390
|
return change;
|
|
263
391
|
},
|
|
264
|
-
|
|
265
|
-
if (!focus || replacement.length === 0)
|
|
266
|
-
return;
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
ref?.focus(focus.offset);
|
|
392
|
+
landing: () => {
|
|
393
|
+
if (!focus || !tracked || replacement.length === 0)
|
|
394
|
+
return null;
|
|
395
|
+
if (focus.path)
|
|
396
|
+
return scope.at(i + focusIndex, focus.path, focus.offset);
|
|
397
|
+
const at = landedPastePosition(scope.children()[tracked.index], tracked, focus.offset);
|
|
398
|
+
return scope.at(tracked.index, at.path, at.offset);
|
|
272
399
|
}
|
|
273
400
|
});
|
|
401
|
+
return wrote ? replacement.length : null;
|
|
274
402
|
}
|
|
275
403
|
};
|
|
276
404
|
return core;
|