@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,13 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* the settle around them is the ceremony's (`settle.ts`).
|
|
2
|
+
* Split and merge, the two operations that re-divide a body's blocks around a caret. They mutate
|
|
3
|
+
* and report; the commit recomputes the separators around them.
|
|
5
4
|
*/
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { displayLength, snapToScalarBoundary, terminateLine, trailingLineEnding, trimTrailingLineEnding } from '../core/lines';
|
|
5
|
+
import { isDevChecks } from '../env';
|
|
6
|
+
import { isBlankParagraph, readBlocks } from '../core/parser';
|
|
7
|
+
import { getLiveSplitRebalancer } from '../schema/inline-construct-policy';
|
|
8
|
+
import { displayLength, isBlankText, lineEndingAt, snapToScalarBoundary, terminateLine, trailingLineEnding } from '../core/lines';
|
|
11
9
|
import { devWarn } from '../dev-warn';
|
|
12
10
|
import { assignChildIdsDeep } from '../block-id';
|
|
13
11
|
import { findMergeTarget } from '../schema/merge-rules';
|
|
@@ -17,114 +15,102 @@ import { ensureUnsharedPath } from './unshare';
|
|
|
17
15
|
import { replacePreservingFirst } from './structural-change';
|
|
18
16
|
import { assertInvariant } from '../assert';
|
|
19
17
|
import { checkSingleNodeSink } from '../invariants/single-node-sink';
|
|
20
|
-
import {
|
|
21
|
-
import { NEXT_PROSE_LINE, ensureEditableContainers, forBody, normalizeOwnRaw } from './node-primitives';
|
|
18
|
+
import { NEXT_PROSE_LINE, ensureEditableContainers, forBody, parentLineEnding } from './node-primitives';
|
|
22
19
|
import { absorbSeamReading, deleteNode } from './settle';
|
|
23
|
-
import {
|
|
20
|
+
import { cutKeepingStructure } from './structural-suffix';
|
|
21
|
+
import { leafAtRawOffset, rawOffsetOfLeaf } from './container-offsets';
|
|
22
|
+
import { CURSOR_END } from '../block-component';
|
|
23
|
+
import { adoptReparsedFields, legalizeWrite, probeLineOpensAsProse } from './content-write';
|
|
24
|
+
import { writeKeepingTaskMarker } from './list/reconcile-task';
|
|
25
|
+
import { fragmentReaderAt } from './list/task-paragraph';
|
|
26
|
+
import { storedAsIn } from './stored-as';
|
|
27
|
+
import { joinLeaves } from './leaf-range';
|
|
24
28
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*/
|
|
28
|
-
export function assertSplitLanding(split, landing) {
|
|
29
|
-
assertInvariant('split-landing', () => checkSplitLanding(split.secondHalfIndex, landing));
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* What a one-slot sink is about to put in its slot, held to one node (G1.35). Asked at the WRITE
|
|
33
|
-
* with the nodes being written, so the guard answers for sink N+1.
|
|
29
|
+
* A write target that holds one block must receive exactly one; checking at the write means a
|
|
30
|
+
* new write target inherits the check (G1.35).
|
|
34
31
|
*/
|
|
35
32
|
export function assertSingleNodeSink(sink, installed) {
|
|
36
33
|
assertInvariant('single-node-sink', () => checkSingleNodeSink(sink, installed.length));
|
|
37
34
|
}
|
|
38
35
|
/**
|
|
39
|
-
* Split the node at `blockIndex` at
|
|
40
|
-
*
|
|
41
|
-
* blank separator wherever one does structural work ({@link separatorSplitsOffNextLine}).
|
|
36
|
+
* Split the node at `blockIndex` at `offset`; the first half keeps the ID and any setext underline.
|
|
37
|
+
* A caller moving the second half elsewhere passes `readSecondHalf` for that position.
|
|
42
38
|
*/
|
|
43
|
-
export function splitNode(parent, blockIndex, offset, sharing,
|
|
39
|
+
export function splitNode(parent, blockIndex, offset, sharing, reading, readSecondHalf = fragmentReaderAt(ownerAt(parent, [blockIndex]), blockIndex + 1, reading.grammar)) {
|
|
40
|
+
const { grammar } = reading;
|
|
44
41
|
const noop = { change: { op: 'noop' }, secondHalfIndex: blockIndex + 1 };
|
|
45
42
|
if (blockIndex < 0 || blockIndex >= parent.children.length)
|
|
46
43
|
return noop;
|
|
47
44
|
const node = parent.children[blockIndex];
|
|
48
45
|
const descriptor = getBlockKindDescriptor(node.kind);
|
|
49
|
-
// A context-dependent kind (
|
|
50
|
-
// so the reparse would destroy both halves.
|
|
46
|
+
// A context-dependent kind (a table cell, a container's title child) has no standalone
|
|
47
|
+
// recognizer, so the reparse would destroy both halves.
|
|
51
48
|
if (descriptor.contextDependentKind)
|
|
52
49
|
return noop;
|
|
53
|
-
const
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
// parse back, leaving the literal cut every other mode gets.
|
|
66
|
-
if (presentationMode === 'live') {
|
|
67
|
-
const rebalanced = getLiveSplitRebalancer()?.(node, offset, firstRaw, secondRaw, linkRef);
|
|
50
|
+
const lineEnding = trailingLineEnding(node.raw, parentLineEnding(parent));
|
|
51
|
+
const { head, rest } = cutKeepingStructure(node, cutPastLineEnding(descriptor, node, offset));
|
|
52
|
+
// Both halves are escaped: either can collide with the container's syntax alone (a stranded
|
|
53
|
+
// `</details>`, or a first half that is a bare closer once its trailing text is cut away).
|
|
54
|
+
let firstRaw = forBody(parent, head);
|
|
55
|
+
let secondRaw = forBody(parent, rest);
|
|
56
|
+
firstRaw = terminateLine(firstRaw, lineEnding);
|
|
57
|
+
secondRaw = terminateLine(secondRaw, lineEnding);
|
|
58
|
+
// Only a block that hides its delimiters rebalances, since a literal half would show runs the
|
|
59
|
+
// user never saw; the rebalancer declines when its bytes do not parse back.
|
|
60
|
+
if (reading.hidesDelimitersAtCaret()) {
|
|
61
|
+
const rebalanced = getLiveSplitRebalancer()?.(node, offset, firstRaw, secondRaw, reading);
|
|
68
62
|
if (rebalanced) {
|
|
69
63
|
firstRaw = rebalanced.firstRaw;
|
|
70
64
|
secondRaw = rebalanced.secondRaw;
|
|
71
|
-
// The rewrite verifies its
|
|
72
|
-
// legal;
|
|
73
|
-
firstRaw = terminateLine(firstRaw,
|
|
74
|
-
secondRaw = terminateLine(secondRaw,
|
|
65
|
+
// The rewrite verifies each half on its own, where a missing final line ending is
|
|
66
|
+
// legal; side by side the halves would share a line and rejoin on reload.
|
|
67
|
+
firstRaw = terminateLine(firstRaw, lineEnding);
|
|
68
|
+
secondRaw = terminateLine(secondRaw, lineEnding);
|
|
75
69
|
}
|
|
76
70
|
}
|
|
77
|
-
const separator = splitSeparator(firstRaw, secondRaw, lineEnding, parent.children[blockIndex + 1]);
|
|
78
|
-
const first = reparseAsNodes(firstRaw, node.leadingTrivia);
|
|
79
|
-
// The first half
|
|
80
|
-
// separator; `separator`
|
|
81
|
-
const second = reparseAsNodes(secondRaw, first.suffix + separator);
|
|
82
|
-
if (
|
|
83
|
-
// Legal, since the
|
|
71
|
+
const separator = splitSeparator(firstRaw, secondRaw, lineEnding, parent.children[blockIndex + 1], grammar);
|
|
72
|
+
const first = reparseAsNodes(firstRaw, node.leadingTrivia, fragmentReaderAt(ownerAt(parent, [blockIndex]), blockIndex, grammar), lineEnding);
|
|
73
|
+
// The blank line the parse split off the first half stands between the halves, so it is the
|
|
74
|
+
// second half's separator; `separator` is empty when the bytes already end in a blank line.
|
|
75
|
+
const second = reparseAsNodes(secondRaw, first.suffix + separator, readSecondHalf, lineEnding);
|
|
76
|
+
if (isDevChecks() && first.nodes.length > 1) {
|
|
77
|
+
// Legal, since the result carries the caret index, but rare enough to keep visible.
|
|
84
78
|
devWarn('tree-ops', `splitNode: the first half parsed to ${first.nodes.length} blocks`);
|
|
85
79
|
}
|
|
86
80
|
const nodes = [...first.nodes, ...second.nodes];
|
|
87
|
-
// The second half
|
|
81
|
+
// The blank line split off the second half has no follower inside the splice, so it stays
|
|
82
|
+
// in raw.
|
|
88
83
|
nodes[nodes.length - 1].raw += second.suffix;
|
|
89
84
|
const splitTail = blockIndex === parent.children.length - 1;
|
|
90
85
|
parent.children.splice(blockIndex, 1, ...nodes);
|
|
91
|
-
//
|
|
92
|
-
//
|
|
86
|
+
// The merge window starts at the join, since a wider one would reach back into the spliced
|
|
87
|
+
// set; at the tail the document's trailing blank line is left to the separator fix-up.
|
|
93
88
|
const seamLeft = blockIndex + nodes.length - 1;
|
|
94
|
-
const eaten = splitTail
|
|
89
|
+
const eaten = splitTail
|
|
90
|
+
? 0
|
|
91
|
+
: absorbSeamReading(parent, seamLeft, seamLeft, grammar, sharing).eaten;
|
|
95
92
|
return {
|
|
96
93
|
change: replacePreservingFirst(blockIndex, 1 + eaten, nodes.length),
|
|
97
94
|
secondHalfIndex: blockIndex + first.nodes.length
|
|
98
95
|
};
|
|
99
96
|
}
|
|
100
97
|
/**
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
* the cut clamps to a content range's end.
|
|
98
|
+
* A line ending at the cut ends the first half rather than opening the second, which would
|
|
99
|
+
* create a blank line nobody typed; a CRLF counts as one boundary.
|
|
104
100
|
*/
|
|
105
101
|
function cutPastLineEnding(descriptor, node, offset) {
|
|
106
102
|
const raw = node.raw;
|
|
107
103
|
// A surrogate pair is one boundary too: a cut through it leaves each half in a block of its
|
|
108
104
|
// own, where nothing can put them back.
|
|
109
105
|
const at = snapToScalarBoundary(raw, offset);
|
|
110
|
-
const ending = raw
|
|
106
|
+
const ending = lineEndingAt(raw, at);
|
|
111
107
|
if (ending === '')
|
|
112
108
|
return at;
|
|
113
109
|
const contentEnd = descriptor.getContentRange?.(node).end;
|
|
114
110
|
return contentEnd === undefined ? at + ending.length : Math.min(at + ending.length, contentEnd);
|
|
115
111
|
}
|
|
116
112
|
/**
|
|
117
|
-
*
|
|
118
|
-
* line: the marker belongs with its text, and an empty heading is nothing anyone asked for.
|
|
119
|
-
*/
|
|
120
|
-
function headingHeadCut(descriptor, node, cut) {
|
|
121
|
-
const content = headingLevel(node) === null ? undefined : descriptor.getContentRange?.(node);
|
|
122
|
-
if (!content || content.start === 0 || content.end === content.start)
|
|
123
|
-
return cut;
|
|
124
|
-
return cut <= content.start ? 0 : cut;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Leading trivia for a freshly minted BLANK block: a blank line is a block only past its run's
|
|
113
|
+
* The separator for a newly created blank block: a blank line is a block only past its run's
|
|
128
114
|
* first line, so it separates from a non-blank predecessor unless a run is already open below.
|
|
129
115
|
*/
|
|
130
116
|
function blankBlockTrivia(predecessorIsBlank, successor, lineEnding) {
|
|
@@ -134,175 +120,139 @@ function blankBlockTrivia(predecessorIsBlank, successor, lineEnding) {
|
|
|
134
120
|
return runOpenBelow ? '' : lineEnding;
|
|
135
121
|
}
|
|
136
122
|
/**
|
|
137
|
-
* The second half's
|
|
138
|
-
*
|
|
123
|
+
* The second half's separator: a blank half follows {@link blankBlockTrivia}; a prose half takes
|
|
124
|
+
* a separator exactly when lazy continuation would join the halves back together.
|
|
139
125
|
*/
|
|
140
|
-
function splitSeparator(firstRaw, secondRaw, lineEnding, successor) {
|
|
141
|
-
if (
|
|
142
|
-
const trivia = blankBlockTrivia(
|
|
126
|
+
function splitSeparator(firstRaw, secondRaw, lineEnding, successor, grammar) {
|
|
127
|
+
if (isBlankText(secondRaw)) {
|
|
128
|
+
const trivia = blankBlockTrivia(isBlankText(firstRaw), successor, lineEnding);
|
|
143
129
|
// A body that swallows blank lines (an unclosed fence) takes the separator inside
|
|
144
130
|
// itself and gains nothing, so ask the bytes rather than assume.
|
|
145
|
-
|
|
131
|
+
const becomesBlock = blankHalfBecomesBlock(firstRaw, secondRaw, lineEnding, grammar);
|
|
132
|
+
return trivia !== '' && becomesBlock ? trivia : '';
|
|
146
133
|
}
|
|
147
|
-
return separatorSplitsOffNextLine(firstRaw, secondRaw, lineEnding) ? lineEnding : '';
|
|
134
|
+
return separatorSplitsOffNextLine(firstRaw, secondRaw, lineEnding, grammar) ? lineEnding : '';
|
|
148
135
|
}
|
|
149
|
-
function blankHalfBecomesBlock(firstRaw, secondRaw, lineEnding) {
|
|
150
|
-
return (
|
|
151
|
-
|
|
136
|
+
function blankHalfBecomesBlock(firstRaw, secondRaw, lineEnding, grammar) {
|
|
137
|
+
return (readBlocks(firstRaw + lineEnding + secondRaw, { grammar, scope: 'fragment' }).children.length >
|
|
138
|
+
readBlocks(firstRaw + secondRaw, { grammar, scope: 'fragment' }).children.length);
|
|
152
139
|
}
|
|
153
140
|
/**
|
|
154
|
-
*
|
|
155
|
-
*
|
|
156
|
-
* Blank blocks are discounted on both sides, or the separator would answer yes for every raw.
|
|
141
|
+
* Whether a blank line after `raw` would split off a second block, asked of the bytes rather than
|
|
142
|
+
* a kind list so the separator never lands inside a body that swallows blank lines.
|
|
157
143
|
*/
|
|
158
|
-
function separatorSplitsOffNextLine(raw, secondRaw, lineEnding) {
|
|
159
|
-
if (
|
|
144
|
+
function separatorSplitsOffNextLine(raw, secondRaw, lineEnding, grammar) {
|
|
145
|
+
if (isDevChecks() && !probeLineOpensAsProse(grammar)) {
|
|
160
146
|
devWarn('tree-ops', `a registered opener claims ${JSON.stringify(NEXT_PROSE_LINE)}, so the split-separator probe no longer stands in for prose`);
|
|
161
147
|
}
|
|
162
148
|
// Both lines that will ever sit under `raw`: the second half's actual head (a promoted table
|
|
163
149
|
// absorbs a pipe-bearing one), and the prose stand-in for whatever a later edit puts there.
|
|
164
150
|
const probes = [secondRaw.slice(0, secondRaw.indexOf('\n') + 1), NEXT_PROSE_LINE + lineEnding];
|
|
165
|
-
return probes.some((probe) => contentBlockCount(raw + lineEnding + probe) > contentBlockCount(raw + probe));
|
|
151
|
+
return probes.some((probe) => contentBlockCount(raw + lineEnding + probe, grammar) > contentBlockCount(raw + probe, grammar));
|
|
166
152
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
153
|
+
/** Blank blocks don't count, or a blank line would split a block off every raw. */
|
|
154
|
+
function contentBlockCount(source, grammar) {
|
|
155
|
+
return readBlocks(source, { grammar, scope: 'fragment' }).children.filter((node) => !isBlankParagraph(node)).length;
|
|
170
156
|
}
|
|
171
|
-
/**
|
|
172
|
-
*
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
const contentEnd = getRange(node).end;
|
|
182
|
-
if (contentEnd >= displayLength(raw) || offset <= 0 || offset > contentEnd)
|
|
183
|
-
return null;
|
|
184
|
-
// A remainder opening with a whitespace-only line reloads as blank: the cut
|
|
185
|
-
// consumes that whitespace into the first half, as it does a bare line ending.
|
|
186
|
-
const wsLine = /^[ \t]+\r?\n/.exec(raw.slice(offset, contentEnd))?.[0] ?? '';
|
|
187
|
-
return {
|
|
188
|
-
// The retained suffix opens with the ending of the line it follows, so a cut sitting
|
|
189
|
-
// just past one would double it into a blank line and strand the suffix below.
|
|
190
|
-
firstRaw: trimTrailingLineEnding(raw.slice(0, offset) + trimTrailingLineEnding(wsLine)) +
|
|
191
|
-
raw.slice(contentEnd),
|
|
192
|
-
secondRaw: raw.slice(offset + wsLine.length, contentEnd)
|
|
157
|
+
/** Join `absorbed`'s text onto the end of the leaf at `path`, leaving `absorbed` for the caller to
|
|
158
|
+
* remove; null, writing nothing, when the joined bytes read as several blocks. */
|
|
159
|
+
export function joinIntoLeaf(parent, path, absorbed, reading, sharing) {
|
|
160
|
+
const slot = path[path.length - 1];
|
|
161
|
+
// The decision is read off the live tree before any copy-on-write: copying the ancestors is
|
|
162
|
+
// a write, and a refused join must leave the pair exactly as it stands.
|
|
163
|
+
const holder = {
|
|
164
|
+
children: holderChildrenAt(parent.children, path),
|
|
165
|
+
owner: ownerAt(parent, path),
|
|
166
|
+
lineEnding: parentLineEnding(parent)
|
|
193
167
|
};
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
* where the two sides now meet.
|
|
211
|
-
*/
|
|
212
|
-
export function cutRangeFromDisplay(node, display, range, presentationMode, linkRef) {
|
|
213
|
-
// Both ends off any scalar interior before the slice: a half-pair here is unrecoverable
|
|
214
|
-
// bytes, not a recoverable edit. Snapping the same direction cannot invert the range.
|
|
215
|
-
const start = snapToScalarBoundary(display, range.start);
|
|
216
|
-
const end = snapToScalarBoundary(display, range.end);
|
|
217
|
-
if (start >= end)
|
|
218
|
-
return { display, offset: start };
|
|
219
|
-
const cleaned = cleanJoinedRaw({
|
|
220
|
-
mergedRaw: display.slice(0, start) + display.slice(end),
|
|
221
|
-
seam: start,
|
|
222
|
-
start: { node, offset: start },
|
|
223
|
-
end: { node, offset: end },
|
|
224
|
-
linkRef
|
|
225
|
-
}, presentationMode);
|
|
226
|
-
return { display: cleaned.raw, offset: cleaned.seam };
|
|
227
|
-
}
|
|
228
|
-
/** The bytes two adjacent blocks make when one absorbs the other, seam cleanup included. */
|
|
229
|
-
function joinRaw(prev, curr, presentationMode, linkRef) {
|
|
230
|
-
const seam = displayLength(prev.raw);
|
|
231
|
-
return cleanJoinedRaw({
|
|
232
|
-
mergedRaw: prev.raw.slice(0, seam) + curr.raw,
|
|
233
|
-
seam,
|
|
234
|
-
start: { node: prev, offset: seam },
|
|
235
|
-
end: { node: curr, offset: 0 },
|
|
236
|
-
linkRef
|
|
237
|
-
}, presentationMode);
|
|
168
|
+
const target = holder.children[slot];
|
|
169
|
+
const { raw, seam } = joinLeaves({ node: target, offset: displayLength(target.raw) }, { node: absorbed, offset: 0 }, '', storedAsIn(holder, slot, reading), holder.lineEnding);
|
|
170
|
+
const legal = legalizeWrite(holder, slot, raw, 'literal');
|
|
171
|
+
const merged = mergedLeafFor(target, legal.text, fragmentReaderAt(holder.owner, slot, reading.grammar));
|
|
172
|
+
if (!merged)
|
|
173
|
+
return null;
|
|
174
|
+
// The join writes the leaf's raw plus every ancestor's rebuilt raw, so copy the whole
|
|
175
|
+
// ancestor chain first and resolve through the owned copies (`unshare.ts` header).
|
|
176
|
+
if (sharing)
|
|
177
|
+
ensureUnsharedPath(parent, [...path], sharing);
|
|
178
|
+
const children = holderChildrenAt(parent.children, path);
|
|
179
|
+
// The task state is reconciled before the ancestors' rebuild writes the list item's marker.
|
|
180
|
+
writeKeepingTaskMarker(ownerAt(parent, path), children, slot, sharing, () => installMergedLeaf(children, slot, merged, sharing, holder.lineEnding));
|
|
181
|
+
if (path.length > 1)
|
|
182
|
+
rebuildAncestryRaw(parent.children[path[0]], path.slice(1), reading.grammar);
|
|
183
|
+
return { joinOffset: legal.storedOffset(seam) };
|
|
238
184
|
}
|
|
239
185
|
/**
|
|
240
|
-
* Merge `curr` into
|
|
241
|
-
*
|
|
242
|
-
* no mergeable leaf exists, so the caller can fall back to move-focus.
|
|
186
|
+
* Merge `curr` into `prev`'s deepest prose leaf, writing into the leaf so it keeps its component
|
|
187
|
+
* and IME state. Null when no leaf can take it, so the caller moves focus instead.
|
|
243
188
|
*/
|
|
244
|
-
export function mergeIntoPrevDeepLeaf(parent, blockIndex, sharing,
|
|
189
|
+
export function mergeIntoPrevDeepLeaf(parent, blockIndex, sharing, reading) {
|
|
245
190
|
if (blockIndex <= 0 || blockIndex >= parent.children.length)
|
|
246
191
|
return null;
|
|
247
192
|
const mergeTarget = findMergeTarget(parent.children[blockIndex - 1]);
|
|
248
193
|
if (!mergeTarget)
|
|
249
194
|
return null;
|
|
250
195
|
const leafPath = [blockIndex - 1, ...mergeTarget.path];
|
|
251
|
-
const slot = leafPath[leafPath.length - 1];
|
|
252
|
-
// The verdict comes off the LIVE tree, ahead of the unshare: an unshared spine is a write,
|
|
253
|
-
// and a refused join must leave the pair exactly as it stands.
|
|
254
|
-
const target = holderChildrenAt(parent.children, leafPath)[slot];
|
|
255
196
|
const curr = parent.children[blockIndex];
|
|
256
|
-
const
|
|
257
|
-
const { raw: mergedRaw, seam: joinOffset } = joinRaw(target, curr, presentationMode, linkRef);
|
|
258
|
-
const merged = mergedLeafFor(target, trimTrailingLineEnding(mergedRaw) + lineEnding, grammar);
|
|
197
|
+
const merged = joinIntoLeaf(parent, leafPath, curr, reading, sharing);
|
|
259
198
|
if (!merged)
|
|
260
199
|
return null;
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
200
|
+
const { joinOffset } = merged;
|
|
201
|
+
const joined = { index: blockIndex - 1, targetPath: mergeTarget.path, joinOffset };
|
|
202
|
+
const at = rawOffsetOfLeaf(parent.children[blockIndex - 1], mergeTarget.path, joinOffset);
|
|
203
|
+
const tracked = at === null ? undefined : { index: blockIndex - 1, offset: at };
|
|
204
|
+
const change = deleteNode(parent, blockIndex, reading.grammar, sharing, tracked);
|
|
205
|
+
return { ...landingAfterFixUp(parent, joined, at, tracked), change };
|
|
206
|
+
}
|
|
207
|
+
/** Where the join sits once the delete's fix-up has run: where it was, unless a merge of
|
|
208
|
+
* neighbours moved its bytes, and then the leaf now holding them. */
|
|
209
|
+
function landingAfterFixUp(parent, joined, at, tracked) {
|
|
210
|
+
if (!tracked || (tracked.index === joined.index && tracked.offset === at))
|
|
211
|
+
return joined;
|
|
212
|
+
const leaf = leafAtRawOffset(parent.children[tracked.index], tracked.offset);
|
|
213
|
+
return leaf
|
|
214
|
+
? { index: tracked.index, targetPath: leaf.path, joinOffset: leaf.offset }
|
|
215
|
+
: { index: tracked.index, targetPath: [], joinOffset: CURSOR_END };
|
|
216
|
+
}
|
|
217
|
+
/** The container holding `path`'s last index: the parent's own owner for a one-step path. */
|
|
218
|
+
function ownerAt(parent, path) {
|
|
219
|
+
if (path.length === 1)
|
|
220
|
+
return 'owner' in parent ? parent.owner : undefined;
|
|
221
|
+
let owner = parent.children[path[0]];
|
|
222
|
+
for (const index of path.slice(1, -1))
|
|
223
|
+
owner = owner.children[index];
|
|
224
|
+
return owner;
|
|
273
225
|
}
|
|
274
|
-
/** The children array holding `path`'s last
|
|
226
|
+
/** The children array holding `path`'s last index, walked from `children`. */
|
|
275
227
|
function holderChildrenAt(children, path) {
|
|
276
228
|
let holder = children;
|
|
277
229
|
for (const index of path.slice(0, -1))
|
|
278
230
|
holder = holder[index].children;
|
|
279
231
|
return holder;
|
|
280
232
|
}
|
|
281
|
-
/**
|
|
282
|
-
*
|
|
283
|
-
|
|
284
|
-
*/
|
|
285
|
-
function mergedLeafFor(target, raw, grammar) {
|
|
286
|
-
const written = normalizeOwnRaw(target, raw);
|
|
233
|
+
/** The join's decision: the legal bytes' fragment reparse, or null when they read as several
|
|
234
|
+
* blocks, since the leaf holds one. */
|
|
235
|
+
function mergedLeafFor(target, written, read) {
|
|
287
236
|
// A context-dependent kind has no standalone recognizer, so its bytes are never read back
|
|
288
237
|
// as blocks and the write keeps the kind.
|
|
289
238
|
if (tryGetBlockKindDescriptor(target.kind)?.contextDependentKind) {
|
|
290
239
|
return { written, blocks: [] };
|
|
291
240
|
}
|
|
292
|
-
const blocks =
|
|
241
|
+
const blocks = read(written).children;
|
|
293
242
|
return blocks.length > 1 ? null : { written, blocks };
|
|
294
243
|
}
|
|
295
|
-
/** {@link mergedLeafFor}'s write, over the
|
|
296
|
-
function installMergedLeaf(holderChildren, slot, merged, sharing) {
|
|
244
|
+
/** {@link mergedLeafFor}'s write, over the copied ancestor chain the decision was taken before. */
|
|
245
|
+
function installMergedLeaf(holderChildren, slot, merged, sharing, ending) {
|
|
297
246
|
const target = holderChildren[slot];
|
|
298
247
|
const { written, blocks } = merged;
|
|
299
248
|
assertSingleNodeSink('mergedLeafFor', blocks);
|
|
300
249
|
const parsed = blocks[0];
|
|
301
250
|
if (parsed && parsed.kind !== target.kind) {
|
|
302
|
-
//
|
|
251
|
+
// The written bytes win over the reparse's split-off blank line: a one-block write target
|
|
252
|
+
// keeps every byte.
|
|
303
253
|
parsed.raw = written;
|
|
304
254
|
parsed.leadingTrivia = target.leadingTrivia;
|
|
305
|
-
ensureEditableContainers(parsed);
|
|
255
|
+
ensureEditableContainers(parsed, ending);
|
|
306
256
|
if (sharing)
|
|
307
257
|
sharing.stamp(parsed);
|
|
308
258
|
assignChildIdsDeep(parsed);
|
|
@@ -315,48 +265,32 @@ function installMergedLeaf(holderChildren, slot, merged, sharing) {
|
|
|
315
265
|
adoptReparsedFields(target, parsed);
|
|
316
266
|
}
|
|
317
267
|
/**
|
|
318
|
-
* Merge the node at `blockIndex` with its successor
|
|
319
|
-
* merged block
|
|
268
|
+
* Merge the node at `blockIndex` with its successor through {@link joinIntoLeaf}, then remove the
|
|
269
|
+
* successor. The merged block keeps the current block's ID. Noop at the tail or on a refused join.
|
|
320
270
|
*/
|
|
321
|
-
export function mergeWithNext(parent, blockIndex,
|
|
271
|
+
export function mergeWithNext(parent, blockIndex, reading, sharing) {
|
|
322
272
|
if (blockIndex < 0 || blockIndex >= parent.children.length - 1) {
|
|
323
273
|
return { change: { op: 'noop' }, joinOffset: 0 };
|
|
324
274
|
}
|
|
325
|
-
const curr = parent.children[blockIndex];
|
|
326
275
|
const next = parent.children[blockIndex + 1];
|
|
327
|
-
const
|
|
328
|
-
|
|
329
|
-
if (!mergedNode)
|
|
276
|
+
const merged = joinIntoLeaf(parent, [blockIndex], next, reading, sharing);
|
|
277
|
+
if (!merged)
|
|
330
278
|
return { change: { op: 'noop' }, joinOffset: 0 };
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
parent.children.splice(blockIndex, 2, ...installed);
|
|
334
|
-
return { change: replacePreservingFirst(blockIndex, 2, 1), joinOffset: seam };
|
|
279
|
+
parent.children.splice(blockIndex + 1, 1);
|
|
280
|
+
return { change: replacePreservingFirst(blockIndex, 2, 1), joinOffset: merged.joinOffset };
|
|
335
281
|
}
|
|
336
282
|
// ── Reparse helper (private) ──
|
|
337
283
|
/**
|
|
338
284
|
* Reparse a half's bytes as the blocks they hold, plus the trailing blank line the fragment
|
|
339
|
-
* parse
|
|
285
|
+
* parse splits off into `doc.suffix`: every caller must put it somewhere, or the bytes are lost.
|
|
340
286
|
*/
|
|
341
|
-
function reparseAsNodes(raw, leadingTrivia) {
|
|
342
|
-
const doc =
|
|
287
|
+
function reparseAsNodes(raw, leadingTrivia, read, ending) {
|
|
288
|
+
const doc = read(raw);
|
|
343
289
|
if (doc.children.length === 0) {
|
|
344
290
|
return { nodes: [{ kind: 'paragraph', leadingTrivia, raw }], suffix: doc.suffix };
|
|
345
291
|
}
|
|
346
292
|
doc.children[0].leadingTrivia = leadingTrivia;
|
|
347
293
|
for (const node of doc.children)
|
|
348
|
-
ensureEditableContainers(node);
|
|
294
|
+
ensureEditableContainers(node, ending);
|
|
349
295
|
return { nodes: doc.children, suffix: doc.suffix };
|
|
350
296
|
}
|
|
351
|
-
/**
|
|
352
|
-
* The merge sinks' single-block twin, and their decline: a join whose bytes read as several
|
|
353
|
-
* blocks has no home in one slot, so null refuses it rather than truncating (G1.35).
|
|
354
|
-
*/
|
|
355
|
-
function reparseAsNode(raw, leadingTrivia) {
|
|
356
|
-
const { nodes, suffix } = reparseAsNodes(raw, leadingTrivia);
|
|
357
|
-
if (nodes.length > 1)
|
|
358
|
-
return null;
|
|
359
|
-
// A single-block sink has no follower slot, so the peeled line stays in the block's bytes.
|
|
360
|
-
nodes[0].raw += suffix;
|
|
361
|
-
return nodes[0];
|
|
362
|
-
}
|