@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,50 +1,73 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The content write: every byte that enters a node
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* The content write: every byte that enters a node goes through `updateNodeContent` after
|
|
3
|
+
* `legalizeWrite` makes it legal for its position. Also re-derives a container's kind from its
|
|
4
|
+
* rebuilt raw (`docs/design/editor.md` § Structural operations).
|
|
5
5
|
*/
|
|
6
|
-
import type {
|
|
7
|
-
import type { NodeView } from '../core/node-views';
|
|
6
|
+
import type { CstNode } from '../core/nodes';
|
|
7
|
+
import type { DocumentView, NodeView } from '../core/node-views';
|
|
8
8
|
import { type GrammarView } from '../schema/block-openers';
|
|
9
|
+
import { type BytesReading } from '../schema/container-raw';
|
|
10
|
+
import { type LineEnding } from '../core/lines';
|
|
11
|
+
import { type WriteMode } from '../schema/block-kind-descriptor';
|
|
9
12
|
import type { SharingState } from './sharing';
|
|
10
13
|
import { type StructuralChange } from './structural-change';
|
|
11
|
-
import { type BodyParentArg, type NodeParent } from './node-primitives';
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
import { type BodyParent, type BodyParentArg, type NodeParent } from './node-primitives';
|
|
15
|
+
declare const legalWrite: unique symbol;
|
|
16
|
+
/**
|
|
17
|
+
* Text made legal as a block's bytes by {@link legalizeWrite}, the one place that builds it, so
|
|
18
|
+
* a write that carries one has passed the kind's rule and its container's exactly once.
|
|
19
|
+
*/
|
|
20
|
+
export interface LegalWrite {
|
|
21
|
+
readonly text: string;
|
|
22
|
+
/** Where an offset into the text as the writer wrote it lands in the stored `text`. */
|
|
23
|
+
storedOffset(offset: number): number;
|
|
24
|
+
readonly [legalWrite]: true;
|
|
25
|
+
}
|
|
26
|
+
/** What {@link legalizeWrite} reads of a block's parent: its container and line ending. */
|
|
27
|
+
export type WriteTarget = {
|
|
28
|
+
readonly children: readonly NodeView[];
|
|
29
|
+
readonly owner: NodeView | undefined;
|
|
30
|
+
readonly lineEnding: LineEnding;
|
|
31
|
+
} | DocumentView;
|
|
32
|
+
/**
|
|
33
|
+
* `text` made legal as the bytes of the block at `index`: its kind's `rawWrite`, then the
|
|
34
|
+
* container's `bodyWrite`, both reading the tree as it stands before the write.
|
|
35
|
+
*/
|
|
36
|
+
export declare function legalizeWrite(parent: WriteTarget, index: number, text: string, mode: WriteMode): LegalWrite;
|
|
37
|
+
/** Writes `text` over the leaf at `index` in place, made legal for its position, for a write that
|
|
38
|
+
* moves no block (a format toggle's marks); the caller copies the chain first and rebuilds it. */
|
|
39
|
+
export declare function rewriteLeafInPlace(parent: BodyParent, index: number, text: string, grammar: GrammarView, sharing: SharingState): void;
|
|
40
|
+
/** What a content write produced once its neighbours were fixed up: its change widened by every
|
|
41
|
+
* merge, and the offset the written text starts at inside that change's window (nonzero once a
|
|
42
|
+
* merge above absorbed it). */
|
|
14
43
|
export interface SettledContent {
|
|
15
44
|
change: StructuralChange;
|
|
16
45
|
textStart: number;
|
|
17
46
|
}
|
|
18
47
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* single-block edit writes in place, so routine typing keeps the node's object identity.
|
|
48
|
+
* Write and reparse the block; only a same-kind single-block edit writes in place, so typing keeps
|
|
49
|
+
* the node's identity. A plain string is made legal here; a {@link LegalWrite} already is.
|
|
22
50
|
*/
|
|
23
|
-
export declare function updateNodeContent(parent: BodyParentArg, blockIndex: number, text: string, grammar
|
|
51
|
+
export declare function updateNodeContent(parent: BodyParentArg, blockIndex: number, text: string | LegalWrite, grammar: GrammarView, sharing?: SharingState): SettledContent;
|
|
24
52
|
/**
|
|
25
53
|
* Refresh a node in place from its own reparse, keeping its object identity. The id resync is
|
|
26
54
|
* unconditional: the reparse can change the child count while the caller reports `noop`.
|
|
27
55
|
*/
|
|
28
56
|
export declare function adoptReparsedFields(target: CstNode, parsed: CstNode | undefined): void;
|
|
57
|
+
/** Whether the grammar in effect still leaves `NEXT_PROSE_LINE` an ordinary paragraph. */
|
|
58
|
+
export declare function probeLineOpensAsProse(grammar: GrammarView): boolean;
|
|
29
59
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*/
|
|
33
|
-
export declare function lineOpensAs(line: string, grammar?: GrammarView): AnyBlockKind;
|
|
34
|
-
/** Whether the ambient grammar still leaves `NEXT_PROSE_LINE` an ordinary paragraph. */
|
|
35
|
-
export declare function probeLineOpensAsProse(grammar?: GrammarView): boolean;
|
|
36
|
-
/**
|
|
37
|
-
* Re-derive the container at `index` from its own (already rebuilt) raw, replacing it in the
|
|
38
|
-
* slot when that raw now opens as a different kind (editor.md § 8). Eligibility is the opener
|
|
39
|
-
* registry: registering an opener is exactly the claim that `parse(raw)` reproduces the kind.
|
|
40
|
-
*/
|
|
41
|
-
export declare function reclassifyContainer(parent: NodeParent, index: number, grammar?: GrammarView): CstNode | null;
|
|
42
|
-
/**
|
|
43
|
-
* Where a caret at `offset` in the written text lands once {@link updateNodeContent}'s folds
|
|
44
|
-
* settled: an absorb ABOVE leaves the predecessor holding the bytes, so the slot the gesture
|
|
45
|
-
* named is gone and the offset carries what that predecessor put in front of it.
|
|
60
|
+
* Replace the container at `index` when its rebuilt raw parses as a different kind; only a kind
|
|
61
|
+
* with an opener qualifies, since registering one claims `readBlocks(raw)` reproduces the kind.
|
|
46
62
|
*/
|
|
47
|
-
export declare function
|
|
63
|
+
export declare function reclassifyContainer(parent: NodeParent, index: number, grammar: GrammarView): CstNode | null;
|
|
64
|
+
/** The container at `index` replaced by what its bytes read as, when its position holds that: the
|
|
65
|
+
* same kind over other children, or one block of another kind that has an opener. */
|
|
66
|
+
export declare function installReading(parent: NodeParent, index: number, reading: BytesReading, grammar: GrammarView): CstNode | null;
|
|
67
|
+
/** Where a caret at `offset` in the written text ends up after {@link updateNodeContent}'s merges:
|
|
68
|
+
* the block holding it and its offset there, counting what a merge above put in front. */
|
|
69
|
+
export declare function settledCaretPosition(settled: SettledContent, at: number, offset: number, children: readonly NodeView[]): {
|
|
48
70
|
index: number;
|
|
49
71
|
offset: number;
|
|
50
72
|
};
|
|
73
|
+
export {};
|
|
@@ -1,65 +1,115 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The content write: every byte that enters a node
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* The content write: every byte that enters a node goes through `updateNodeContent` after
|
|
3
|
+
* `legalizeWrite` makes it legal for its position. Also re-derives a container's kind from its
|
|
4
|
+
* rebuilt raw (`docs/design/editor.md` § Structural operations).
|
|
5
5
|
*/
|
|
6
|
-
import { isBlankParagraph
|
|
6
|
+
import { isBlankParagraph } from '../core/parser';
|
|
7
7
|
import { escalatedFenceLength, matchFenceOpen } from '../core/parsers/fence-syntax';
|
|
8
8
|
import { isBlockOpenerRegistered } from '../schema/block-openers';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { getBlockKindDescriptor, tryGetBlockKindDescriptor } from '../schema/block-kind-descriptor';
|
|
9
|
+
import { lineOpensAs, parseContainerRaw, rebuildContainerRaw } from '../schema/container-raw';
|
|
10
|
+
import { displayLines, documentLineEnding, firstLineEnding, joinDisplayLines, ownTrailingLineEnding } from '../core/lines';
|
|
11
|
+
import { assignChildIdsDeep, idsAcrossReread } from '../block-id';
|
|
12
|
+
import { getBlockKindDescriptor, mustHoldChild, tryGetBlockKindDescriptor } from '../schema/block-kind-descriptor';
|
|
13
13
|
import { resyncChildIds } from './children';
|
|
14
14
|
import { spliceMany } from './splice-many';
|
|
15
15
|
import { replacePreservingFirst } from './structural-change';
|
|
16
|
-
import {
|
|
16
|
+
import { taskMarkerCaretShift, writeKeepingTaskMarker } from './list/reconcile-task';
|
|
17
|
+
import { fragmentReaderAt } from './list/task-paragraph';
|
|
18
|
+
import { NEXT_PROSE_LINE, ensureEditableContainers, installOwnRaw, parentLineEnding } from './node-primitives';
|
|
17
19
|
import { absorbWindowSeams, focusTargetInReplacement, releaseWrapPeel, restoreSeparatorAfterBlank, restoreSeparatorOnFill, settleSeparatorOnBlank, widenForTailMint } from './settle';
|
|
18
20
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
|
|
21
|
+
* `text` made legal as the bytes of the block at `index`: its kind's `rawWrite`, then the
|
|
22
|
+
* container's `bodyWrite`, both reading the tree as it stands before the write.
|
|
23
|
+
*/
|
|
24
|
+
export function legalizeWrite(parent, index, text, mode) {
|
|
25
|
+
const node = parent.children[index];
|
|
26
|
+
const owner = 'owner' in parent ? parent.owner : undefined;
|
|
27
|
+
const lineEnding = 'lineEnding' in parent ? parent.lineEnding : documentLineEnding(parent);
|
|
28
|
+
const ownRule = tryGetBlockKindDescriptor(node.kind)?.rawWrite;
|
|
29
|
+
const ownCtx = { node, mode, lineEnding };
|
|
30
|
+
const own = ownRule ? ownRule.normalize(text, ownCtx) : text;
|
|
31
|
+
const bodyRule = owner ? tryGetBlockKindDescriptor(owner.kind)?.bodyWrite : undefined;
|
|
32
|
+
// A child's bytes are never the container's own syntax, so the body rule reads them as content.
|
|
33
|
+
const bodyCtx = owner && { node: owner, mode: 'literal', lineEnding };
|
|
34
|
+
const stored = bodyRule && bodyCtx ? bodyRule.normalize(own, bodyCtx) : own;
|
|
35
|
+
// A list item takes a typed task marker out of its first paragraph, or gives one back.
|
|
36
|
+
const markerShift = index === 0 && owner ? taskMarkerCaretShift(owner, stored) : 0;
|
|
37
|
+
const storedOffset = (offset) => {
|
|
38
|
+
const inOwn = ownRule ? ownRule.mapOffset(text, offset, ownCtx) : offset;
|
|
39
|
+
const inBody = bodyRule && bodyCtx ? bodyRule.mapOffset(own, inOwn, bodyCtx) : inOwn;
|
|
40
|
+
return Math.max(inBody + markerShift, 0);
|
|
41
|
+
};
|
|
42
|
+
return { text: stored, storedOffset };
|
|
43
|
+
}
|
|
44
|
+
/** Writes `text` over the leaf at `index` in place, made legal for its position, for a write that
|
|
45
|
+
* moves no block (a format toggle's marks); the caller copies the chain first and rebuilds it. */
|
|
46
|
+
export function rewriteLeafInPlace(parent, index, text, grammar, sharing) {
|
|
47
|
+
const legal = legalizeWrite(parent, index, text, 'literal');
|
|
48
|
+
writeKeepingTaskMarker(parent.owner, parent.children, index, sharing, () => installOwnRaw(parent.children[index], legal.text, grammar));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Write and reparse the block; only a same-kind single-block edit writes in place, so typing keeps
|
|
52
|
+
* the node's identity. A plain string is made legal here; a {@link LegalWrite} already is.
|
|
22
53
|
*/
|
|
23
54
|
export function updateNodeContent(parent, blockIndex, text, grammar, sharing) {
|
|
55
|
+
const legal = typeof text === 'string' ? legalizeWrite(parent, blockIndex, text, 'literal').text : text.text;
|
|
56
|
+
// Reconciled before the container's raw rebuild writes the list item's marker.
|
|
57
|
+
const owner = 'owner' in parent ? parent.owner : undefined;
|
|
58
|
+
return writeKeepingTaskMarker(owner, parent.children, blockIndex, sharing, () => writeAndSettleContent(parent, blockIndex, legal, grammar, sharing));
|
|
59
|
+
}
|
|
60
|
+
function writeAndSettleContent(parent, blockIndex, text, grammar, sharing) {
|
|
24
61
|
const wasBlank = isBlankParagraph(parent.children[blockIndex]);
|
|
62
|
+
const indentMoved = leadingIndent(parent.children[blockIndex].raw) !== leadingIndent(text);
|
|
25
63
|
const change = writeParsedContent(parent, blockIndex, text, grammar);
|
|
26
64
|
const lastWritten = lastMintedIndex(change, blockIndex);
|
|
27
|
-
// One blank line served
|
|
28
|
-
// as the separator of the block beneath it.
|
|
65
|
+
// One blank line served both sides: it separated this block from the one above and stood in
|
|
66
|
+
// as the separator of the block beneath it. Filling it gives each side its own.
|
|
29
67
|
if (wasBlank && !isBlankParagraph(parent.children[blockIndex])) {
|
|
30
68
|
restoreSeparatorOnFill(parent, blockIndex, sharing);
|
|
31
69
|
restoreSeparatorAfterBlank(parent, followerIndexAfter(change, blockIndex), sharing);
|
|
32
70
|
releaseWrapPeel(parent, lastWritten);
|
|
33
|
-
return settleWriteSeams(parent, blockIndex, lastWritten, change, sharing);
|
|
71
|
+
return settleWriteSeams(parent, blockIndex, lastWritten, change, sharing, grammar);
|
|
34
72
|
}
|
|
35
|
-
// The reverse transition: the block
|
|
36
|
-
// back the second one. The last block
|
|
73
|
+
// The reverse transition: the block is the separating line now, so the run it joins gives
|
|
74
|
+
// back the second one. The last block created is the one that meets the follower.
|
|
37
75
|
if (!wasBlank && isBlankParagraph(parent.children[lastWritten])) {
|
|
38
76
|
const settled = parent.children.length;
|
|
39
77
|
settleSeparatorOnBlank(parent, lastWritten, sharing);
|
|
40
78
|
const widened = widenForTailMint(change, settled, parent.children.length);
|
|
41
|
-
return settleWriteSeams(parent, blockIndex, lastWritten, widened, sharing);
|
|
79
|
+
return settleWriteSeams(parent, blockIndex, lastWritten, widened, sharing, grammar);
|
|
42
80
|
}
|
|
43
|
-
// Same-kind typing
|
|
44
|
-
|
|
81
|
+
// Same-kind typing skips the neighbour reparse unless the first line's indent moved, a blank line
|
|
82
|
+
// stays blank, or this block or the one above reads the lines below it (editor.md § 8).
|
|
83
|
+
if (change.op === 'noop' && !wasBlank && !indentMoved && !readerBeside(parent, blockIndex)) {
|
|
45
84
|
return { change, textStart: 0 };
|
|
46
|
-
|
|
85
|
+
}
|
|
86
|
+
return settleWriteSeams(parent, blockIndex, lastWritten, change, sharing, grammar);
|
|
87
|
+
}
|
|
88
|
+
const leadingIndent = (text) => /^[ \t]*/.exec(text)[0];
|
|
89
|
+
const readsFollowingLines = (node) => node !== undefined && tryGetBlockKindDescriptor(node.kind)?.readsFollowingLines === true;
|
|
90
|
+
/** Whether the written block or the one right above it reads the lines below it with no blank
|
|
91
|
+
* line between, where a write that kept its kind can still move the join. */
|
|
92
|
+
function readerBeside(parent, blockIndex) {
|
|
93
|
+
const { children } = parent;
|
|
94
|
+
const below = children[blockIndex + 1];
|
|
95
|
+
return ((children[blockIndex].leadingTrivia === '' && readsFollowingLines(children[blockIndex - 1])) ||
|
|
96
|
+
(below?.leadingTrivia === '' && readsFollowingLines(children[blockIndex])));
|
|
47
97
|
}
|
|
48
98
|
/**
|
|
49
|
-
*
|
|
50
|
-
*
|
|
99
|
+
* Merge across every join the write disturbed, and report where the written text ended up, since
|
|
100
|
+
* a merge into the block above puts that block's bytes in front of it.
|
|
51
101
|
*/
|
|
52
|
-
function settleWriteSeams(parent, blockIndex, lastWritten, change, sharing) {
|
|
102
|
+
function settleWriteSeams(parent, blockIndex, lastWritten, change, sharing, grammar) {
|
|
53
103
|
const tracked = { index: blockIndex, offset: 0 };
|
|
54
|
-
const settled = absorbWindowSeams(parent, blockIndex, lastWritten - blockIndex + 1, blockIndex, change, sharing, tracked);
|
|
104
|
+
const settled = absorbWindowSeams(parent, blockIndex, lastWritten - blockIndex + 1, blockIndex, change, grammar, sharing, tracked);
|
|
55
105
|
return {
|
|
56
106
|
change: settled.change,
|
|
57
107
|
textStart: textOffsetInWindow(parent.children, settled.change, tracked)
|
|
58
108
|
};
|
|
59
109
|
}
|
|
60
110
|
/**
|
|
61
|
-
* The tracked position as an offset in the
|
|
62
|
-
*
|
|
111
|
+
* The tracked position as an offset in the window's committed text, the space every caret
|
|
112
|
+
* placement measures in, where the head block's own leading blank lines are outside the window.
|
|
63
113
|
*/
|
|
64
114
|
function textOffsetInWindow(children, change, tracked) {
|
|
65
115
|
const at = change.op === 'noop' ? tracked.index : change.at;
|
|
@@ -74,49 +124,45 @@ function textOffsetInWindow(children, change, tracked) {
|
|
|
74
124
|
function followerIndexAfter(change, blockIndex) {
|
|
75
125
|
return change.op === 'replace' ? change.at + change.newCount : blockIndex + 1;
|
|
76
126
|
}
|
|
77
|
-
/** The last block the write left in the
|
|
127
|
+
/** The last block the write left in the position: a multi-block reparse creates blocks past
|
|
128
|
+
* the first. */
|
|
78
129
|
function lastMintedIndex(change, blockIndex) {
|
|
79
130
|
return change.op === 'replace' ? change.at + change.newCount - 1 : blockIndex;
|
|
80
131
|
}
|
|
81
132
|
/**
|
|
82
|
-
* The written bytes parsed, with
|
|
83
|
-
*
|
|
84
|
-
* converge the live tree to exactly that reading.
|
|
133
|
+
* The written bytes parsed, with a construct they leave open closed first, or the next parse and
|
|
134
|
+
* the neighbour merge would read every block below it as its body.
|
|
85
135
|
*/
|
|
86
|
-
function closeWrittenConstruct(parent, blockIndex, text, oldKind,
|
|
87
|
-
|
|
88
|
-
// kind must not mint here.
|
|
89
|
-
const parsed = parse(text, { grammar, scope: 'fragment' });
|
|
136
|
+
function closeWrittenConstruct(parent, blockIndex, text, oldKind, read) {
|
|
137
|
+
const parsed = read(text);
|
|
90
138
|
if (blockIndex + 1 >= parent.children.length)
|
|
91
139
|
return { text, parsed };
|
|
92
140
|
if (parsed.children.length === 1 && parsed.children[0].kind === oldKind)
|
|
93
141
|
return { text, parsed };
|
|
94
|
-
const terminator = openConstructTerminator(text, parsed.children,
|
|
142
|
+
const terminator = openConstructTerminator(text, parsed.children, read);
|
|
95
143
|
if (!terminator)
|
|
96
144
|
return { text, parsed };
|
|
97
145
|
const closed = text + terminator;
|
|
98
|
-
return { text: closed, parsed:
|
|
146
|
+
return { text: closed, parsed: read(closed) };
|
|
99
147
|
}
|
|
100
148
|
/**
|
|
101
|
-
* The
|
|
102
|
-
*
|
|
103
|
-
* explains the absorb (the one family whose closer its opener determines).
|
|
149
|
+
* The closing line the bytes need when their last construct runs to end of file; null when they
|
|
150
|
+
* close themselves, or no fence opener explains the run.
|
|
104
151
|
*/
|
|
105
|
-
function openConstructTerminator(text, blocks,
|
|
106
|
-
// The
|
|
107
|
-
//
|
|
108
|
-
|
|
152
|
+
function openConstructTerminator(text, blocks, read) {
|
|
153
|
+
// The closer is a line of its own, so bytes whose last line is unterminated have nowhere to
|
|
154
|
+
// put one: an unterminated tail slice absorbs nothing while it stands alone.
|
|
155
|
+
const ending = ownTrailingLineEnding(text);
|
|
156
|
+
if (ending === '' || blocks.length === 0)
|
|
109
157
|
return null;
|
|
110
|
-
const
|
|
111
|
-
const probe = parse(text + ending + NEXT_PROSE_LINE + ending, { grammar, scope: 'fragment' });
|
|
158
|
+
const probe = read(text + ending + NEXT_PROSE_LINE + ending);
|
|
112
159
|
if (probe.children.length !== blocks.length)
|
|
113
160
|
return null;
|
|
114
|
-
const
|
|
115
|
-
const
|
|
116
|
-
const opener = matchFenceOpen(nl < 0 ? raw : raw.slice(0, nl));
|
|
161
|
+
const [openerLine, ...bodyLines] = displayLines(blocks[blocks.length - 1].raw);
|
|
162
|
+
const opener = matchFenceOpen(openerLine.text);
|
|
117
163
|
if (!opener)
|
|
118
164
|
return null;
|
|
119
|
-
const body =
|
|
165
|
+
const body = joinDisplayLines(bodyLines);
|
|
120
166
|
const run = escalatedFenceLength(body, opener.marker, opener.length);
|
|
121
167
|
return opener.indent + opener.marker.repeat(run) + ending;
|
|
122
168
|
}
|
|
@@ -124,34 +170,32 @@ function writeParsedContent(parent, blockIndex, text, grammar) {
|
|
|
124
170
|
const node = parent.children[blockIndex];
|
|
125
171
|
const oldKind = node.kind;
|
|
126
172
|
const oldDescriptor = getBlockKindDescriptor(oldKind);
|
|
127
|
-
|
|
128
|
-
//
|
|
129
|
-
const bodyText = forBody(parent, text);
|
|
130
|
-
// A context-dependent kind has no standalone recognizer, so reparsing would downgrade it:
|
|
131
|
-
// keep the kind and write raw through its own legality pass.
|
|
173
|
+
const lineEnding = parentLineEnding(parent);
|
|
174
|
+
// A context-dependent kind has no standalone recognizer, so reparsing would downgrade it.
|
|
132
175
|
if (oldDescriptor.contextDependentKind) {
|
|
133
|
-
|
|
176
|
+
installOwnRaw(node, text, grammar);
|
|
134
177
|
return { op: 'noop' };
|
|
135
178
|
}
|
|
136
|
-
const { text: newText, parsed: reparsed } = closeWrittenConstruct(parent, blockIndex,
|
|
179
|
+
const { text: newText, parsed: reparsed } = closeWrittenConstruct(parent, blockIndex, text, oldKind, fragmentReaderAt('owner' in parent ? parent.owner : undefined, blockIndex, grammar));
|
|
137
180
|
const parsed = reparsed.children;
|
|
138
181
|
const first = parsed[0];
|
|
139
182
|
// A marker-consuming container (a GitHub alert) needs its raw rebuilt from the backfilled
|
|
140
|
-
// body, or G1.1
|
|
183
|
+
// body, or raw and children disagree (G1.1).
|
|
141
184
|
const firstBackfilled = !!first && isEmptyEditableContainer(first);
|
|
142
185
|
if (first)
|
|
143
|
-
ensureEditableContainers(first);
|
|
144
|
-
//
|
|
145
|
-
// rest keep their own
|
|
186
|
+
ensureEditableContainers(first, lineEnding);
|
|
187
|
+
// Blank lines at the start of the text go into the first block's raw (as in the single-block
|
|
188
|
+
// case); the rest keep their own separators.
|
|
146
189
|
if (parsed.length > 1) {
|
|
147
190
|
const rest = parsed.slice(1);
|
|
148
191
|
for (const sibling of rest)
|
|
149
|
-
ensureEditableContainers(sibling);
|
|
192
|
+
ensureEditableContainers(sibling, lineEnding);
|
|
150
193
|
first.raw = first.leadingTrivia + first.raw;
|
|
151
194
|
first.leadingTrivia = node.leadingTrivia;
|
|
152
195
|
if (firstBackfilled)
|
|
153
|
-
|
|
154
|
-
// The
|
|
196
|
+
rebuildContainerRaw(first, grammar);
|
|
197
|
+
// The trailing blank line the parse split off has no follower inside the splice, so it
|
|
198
|
+
// stays in raw.
|
|
155
199
|
rest[rest.length - 1].raw += reparsed.suffix;
|
|
156
200
|
spliceMany(parent.children, blockIndex, 1, parsed);
|
|
157
201
|
return replacePreservingFirst(blockIndex, 1, parsed.length);
|
|
@@ -163,14 +207,14 @@ function writeParsedContent(parent, blockIndex, text, grammar) {
|
|
|
163
207
|
node.raw = newText;
|
|
164
208
|
adoptReparsedFields(node, first);
|
|
165
209
|
if (firstBackfilled)
|
|
166
|
-
|
|
210
|
+
rebuildContainerRaw(node, grammar);
|
|
167
211
|
return { op: 'noop' };
|
|
168
212
|
}
|
|
169
213
|
const replacement = first ?? { kind: 'paragraph', leadingTrivia: '', raw: newText };
|
|
170
214
|
replacement.raw = newText;
|
|
171
215
|
replacement.leadingTrivia = node.leadingTrivia;
|
|
172
216
|
if (firstBackfilled)
|
|
173
|
-
|
|
217
|
+
rebuildContainerRaw(replacement, grammar);
|
|
174
218
|
parent.children.splice(blockIndex, 1, replacement);
|
|
175
219
|
return replacePreservingFirst(blockIndex, 1, 1);
|
|
176
220
|
}
|
|
@@ -186,71 +230,72 @@ export function adoptReparsedFields(target, parsed) {
|
|
|
186
230
|
target.innerPrefix = parsed?.innerPrefix;
|
|
187
231
|
target.innerSuffix = parsed?.innerSuffix;
|
|
188
232
|
}
|
|
189
|
-
/** A container `ensureEditableContainers` will backfill; read
|
|
233
|
+
/** A container `ensureEditableContainers` will backfill; read before the backfill runs. */
|
|
190
234
|
function isEmptyEditableContainer(node) {
|
|
191
|
-
|
|
192
|
-
return d.isContainer && d.blockFocus !== 'whole-block' && (node.children?.length ?? 0) === 0;
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Sync a just-backfilled container's `raw` to its synthesized body. Needed only for a
|
|
196
|
-
* marker-consuming container whose typed raw lacks a blank body line (`> [!TYPE]`).
|
|
197
|
-
*/
|
|
198
|
-
function reconcileBackfilledRaw(node) {
|
|
199
|
-
getBlockKindDescriptor(node.kind).rebuildRaw?.(node);
|
|
235
|
+
return mustHoldChild(node.kind) && (node.children?.length ?? 0) === 0;
|
|
200
236
|
}
|
|
201
237
|
// ── Container kind re-derivation ──
|
|
202
|
-
/**
|
|
203
|
-
* What the grammar opens `line` as, read in isolation: asked of the opener registry and never
|
|
204
|
-
* a kind list, so a kind registered later is covered the day it registers.
|
|
205
|
-
*/
|
|
206
|
-
export function lineOpensAs(line, grammar) {
|
|
207
|
-
return parse(`${line}\n`, { grammar, scope: 'fragment' }).children[0]?.kind ?? 'paragraph';
|
|
208
|
-
}
|
|
209
|
-
/** Whether the ambient grammar still leaves `NEXT_PROSE_LINE` an ordinary paragraph. */
|
|
238
|
+
/** Whether the grammar in effect still leaves `NEXT_PROSE_LINE` an ordinary paragraph. */
|
|
210
239
|
export function probeLineOpensAsProse(grammar) {
|
|
211
240
|
return lineOpensAs(NEXT_PROSE_LINE, grammar) === 'paragraph';
|
|
212
241
|
}
|
|
213
242
|
/**
|
|
214
|
-
*
|
|
215
|
-
*
|
|
216
|
-
* registry: registering an opener is exactly the claim that `parse(raw)` reproduces the kind.
|
|
243
|
+
* Replace the container at `index` when its rebuilt raw parses as a different kind; only a kind
|
|
244
|
+
* with an opener qualifies, since registering one claims `readBlocks(raw)` reproduces the kind.
|
|
217
245
|
*/
|
|
218
246
|
export function reclassifyContainer(parent, index, grammar) {
|
|
219
247
|
const node = parent.children[index];
|
|
220
|
-
if (!node)
|
|
248
|
+
if (!node || !tryGetBlockKindDescriptor(node.kind)?.isContainer)
|
|
249
|
+
return null;
|
|
250
|
+
if (!isBlockOpenerRegistered(node.kind))
|
|
251
|
+
return null;
|
|
252
|
+
return replaceWithParse(parent, index, parseContainerRaw(node.raw, grammar), grammar);
|
|
253
|
+
}
|
|
254
|
+
/** The container at `index` replaced by what its bytes read as, when its position holds that: the
|
|
255
|
+
* same kind over other children, or one block of another kind that has an opener. */
|
|
256
|
+
export function installReading(parent, index, reading, grammar) {
|
|
257
|
+
const node = parent.children[index];
|
|
258
|
+
if (!node || reading.outcome === 'kept')
|
|
221
259
|
return null;
|
|
222
|
-
|
|
223
|
-
|
|
260
|
+
if (reading.outcome === 'reread') {
|
|
261
|
+
// A child the re-read left alone keeps its id, so the block there stays mounted.
|
|
262
|
+
const children = reading.node.children ?? [];
|
|
263
|
+
reading.node.childIds = idsAcrossReread(node.children ?? [], node.childIds, children);
|
|
264
|
+
return installReplacement(parent, index, reading.node, grammar);
|
|
265
|
+
}
|
|
266
|
+
if (!isBlockOpenerRegistered(node.kind))
|
|
224
267
|
return null;
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
// A container's raw is one block by construction; a multi-block reparse means bytes
|
|
229
|
-
//
|
|
230
|
-
if (parsed.length !== 1 || parsed[0].kind ===
|
|
268
|
+
return replaceWithParse(parent, index, reading.blocks, grammar);
|
|
269
|
+
}
|
|
270
|
+
function replaceWithParse(parent, index, parsed, grammar) {
|
|
271
|
+
// A container's raw is one block by construction; a multi-block reparse means bytes this
|
|
272
|
+
// function has no position for, left to the edit that owns the mutation.
|
|
273
|
+
if (parsed.length !== 1 || parsed[0].kind === parent.children[index].kind)
|
|
231
274
|
return null;
|
|
232
|
-
|
|
275
|
+
return installReplacement(parent, index, parsed[0], grammar);
|
|
276
|
+
}
|
|
277
|
+
function installReplacement(parent, index, replacement, grammar) {
|
|
278
|
+
const node = parent.children[index];
|
|
233
279
|
const backfilled = isEmptyEditableContainer(replacement);
|
|
234
|
-
|
|
235
|
-
//
|
|
236
|
-
|
|
280
|
+
// A container spanning lines holds the document's ending in its bytes; only a one-line
|
|
281
|
+
// container, the last line of a document, falls back to LF.
|
|
282
|
+
ensureEditableContainers(replacement, firstLineEnding(node.raw) ?? '\n');
|
|
283
|
+
// The position's own `leadingTrivia` is authoritative, so restore the bytes before
|
|
284
|
+
// overwriting it or anything the parse split off the front vanishes with it.
|
|
237
285
|
replacement.raw = node.raw;
|
|
238
286
|
replacement.leadingTrivia = node.leadingTrivia;
|
|
239
287
|
if (backfilled)
|
|
240
|
-
|
|
241
|
-
// A freshly
|
|
242
|
-
//
|
|
288
|
+
rebuildContainerRaw(replacement, grammar);
|
|
289
|
+
// A freshly parsed node carries no `childIds`, and the swap reuses the position's component,
|
|
290
|
+
// so undefined keys would reach its nested keyed `{#each}`.
|
|
243
291
|
assignChildIdsDeep(replacement);
|
|
244
292
|
parent.children[index] = replacement;
|
|
245
|
-
// Write
|
|
293
|
+
// Write, then re-read through the tree (`unshare.ts` header).
|
|
246
294
|
return parent.children[index];
|
|
247
295
|
}
|
|
248
|
-
/**
|
|
249
|
-
*
|
|
250
|
-
|
|
251
|
-
* named is gone and the offset carries what that predecessor put in front of it.
|
|
252
|
-
*/
|
|
253
|
-
export function settledCaretTarget(settled, at, offset, children) {
|
|
296
|
+
/** Where a caret at `offset` in the written text ends up after {@link updateNodeContent}'s merges:
|
|
297
|
+
* the block holding it and its offset there, counting what a merge above put in front. */
|
|
298
|
+
export function settledCaretPosition(settled, at, offset, children) {
|
|
254
299
|
const { change, textStart } = settled;
|
|
255
300
|
if (change.op !== 'replace')
|
|
256
301
|
return { index: at, offset };
|
|
@@ -3,14 +3,14 @@ export { nodeAt, emptyParagraph, paragraphNode, ensureEditableContainers, normal
|
|
|
3
3
|
export { deleteNode, focusTargetInReplacement, restoreSeparatorOnFill, dropDoubledSeparator } from './settle';
|
|
4
4
|
export { updateNodeContent, reclassifyContainer } from './content-write';
|
|
5
5
|
export type { MergeIntoPrevResult, MergeResult, SplitResult } from './node-ops';
|
|
6
|
-
export { splitNode,
|
|
6
|
+
export { splitNode, assertSingleNodeSink, mergeWithNext, mergeIntoPrevDeepLeaf } from './node-ops';
|
|
7
7
|
export { unwrapFirstItemFromList, mergeListItemIntoPrevious } from './list/unwrap-merge';
|
|
8
8
|
export { renumberOrderedList, normalizeItemMarkerToList } from './list/ordered-markers';
|
|
9
9
|
export { isItemUserEmpty } from './list/empty-check';
|
|
10
10
|
export { buildExitReplacement } from './list/exit-replacement';
|
|
11
|
-
export {
|
|
12
|
-
export {
|
|
13
|
-
export {
|
|
11
|
+
export { writeKeepingTaskMarker } from './list/reconcile-task';
|
|
12
|
+
export { plainQuote } from './blockquote';
|
|
13
|
+
export { liftFirstChild, sameContainer } from './container-lift';
|
|
14
14
|
export { insertEmptyRow, insertEmptyColumn, deleteRow, deleteColumn, cycleAlignment } from './table-mutations';
|
|
15
15
|
export { copyRectangleAsSubTable } from './sub-table-copy';
|
|
16
16
|
export type { CellPos } from './sub-table-copy';
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
export { nodeAt, emptyParagraph, paragraphNode, ensureEditableContainers, normalizeReplacementTrivia } from './node-primitives';
|
|
2
2
|
export { deleteNode, focusTargetInReplacement, restoreSeparatorOnFill, dropDoubledSeparator } from './settle';
|
|
3
3
|
export { updateNodeContent, reclassifyContainer } from './content-write';
|
|
4
|
-
export { splitNode,
|
|
4
|
+
export { splitNode, assertSingleNodeSink, mergeWithNext, mergeIntoPrevDeepLeaf } from './node-ops';
|
|
5
5
|
export { unwrapFirstItemFromList, mergeListItemIntoPrevious } from './list/unwrap-merge';
|
|
6
6
|
export { renumberOrderedList, normalizeItemMarkerToList } from './list/ordered-markers';
|
|
7
7
|
export { isItemUserEmpty } from './list/empty-check';
|
|
8
8
|
export { buildExitReplacement } from './list/exit-replacement';
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
9
|
+
export { writeKeepingTaskMarker } from './list/reconcile-task';
|
|
10
|
+
export { plainQuote } from './blockquote';
|
|
11
|
+
export { liftFirstChild, sameContainer } from './container-lift';
|
|
12
12
|
export { insertEmptyRow, insertEmptyColumn, deleteRow, deleteColumn, cycleAlignment } from './table-mutations';
|
|
13
13
|
export { copyRectangleAsSubTable } from './sub-table-copy';
|
|
14
14
|
export { cascadeCleanupEmptyAncestors } from './cleanup';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The document always holds a block: a structural commit that leaves it none gives it one empty
|
|
3
|
+
* paragraph. The commit runs this step in both its branches, so no edit writes that paragraph.
|
|
4
|
+
*/
|
|
5
|
+
import type { StructuralChange } from './structural-change';
|
|
6
|
+
import type { SharingState } from './sharing';
|
|
7
|
+
import { type BodyParent } from './node-primitives';
|
|
8
|
+
/** When `body` (the document's) has no children, gives it the empty paragraph and returns `change`
|
|
9
|
+
* widened to cover it; `body.lineEnding` was read before the edit, so the paragraph keeps it. */
|
|
10
|
+
export declare function keepOneBlock(body: BodyParent, change: StructuralChange, sharing: SharingState): StructuralChange;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The document always holds a block: a structural commit that leaves it none gives it one empty
|
|
3
|
+
* paragraph. The commit runs this step in both its branches, so no edit writes that paragraph.
|
|
4
|
+
*/
|
|
5
|
+
import { emptyParagraph } from './node-primitives';
|
|
6
|
+
/** When `body` (the document's) has no children, gives it the empty paragraph and returns `change`
|
|
7
|
+
* widened to cover it; `body.lineEnding` was read before the edit, so the paragraph keeps it. */
|
|
8
|
+
export function keepOneBlock(body, change, sharing) {
|
|
9
|
+
if (body.children.length > 0)
|
|
10
|
+
return change;
|
|
11
|
+
const filler = emptyParagraph('', body.lineEnding);
|
|
12
|
+
sharing.stamp(filler);
|
|
13
|
+
body.children.push(filler);
|
|
14
|
+
// With nothing left, the change's window started at 0 and held every block there was.
|
|
15
|
+
const removed = change.op === 'delete' || change.op === 'replace' ? change.count : 0;
|
|
16
|
+
return removed === 0
|
|
17
|
+
? { op: 'insert', at: 0, count: 1 }
|
|
18
|
+
: { op: 'replace', at: 0, count: removed, newCount: 1 };
|
|
19
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replacing a range of one leaf, and joining two leaves, the way in-leaf edits and merges
|
|
3
|
+
* write them: cut back to the painted text, off any surrogate pair, and in live mode with the
|
|
4
|
+
* delimiter runs the join strands dropped, typed text included (`docs/design/live-mode.md` § 4.5).
|
|
5
|
+
*/
|
|
6
|
+
import type { NodeView } from '../core/node-views';
|
|
7
|
+
import { type LineEnding } from '../core/lines';
|
|
8
|
+
import { type CleanedJoin, type JoinEndpoint, type JoinSeam } from '../schema/inline-construct-policy';
|
|
9
|
+
import type { StoredAs } from '../schema/stored-as';
|
|
10
|
+
export interface LeafRangeEdit {
|
|
11
|
+
/** The leaf's bytes after the edit, trailing line ending included. */
|
|
12
|
+
raw: string;
|
|
13
|
+
caret: number;
|
|
14
|
+
/** The range replaced: a drawn one cut back to the painted text, and off any surrogate pair. */
|
|
15
|
+
range: {
|
|
16
|
+
start: number;
|
|
17
|
+
end: number;
|
|
18
|
+
};
|
|
19
|
+
/** Whether `raw` is the range asked for spliced with nothing moved or cleaned, the edit the
|
|
20
|
+
* browser makes itself, grapheme and IME handling included. */
|
|
21
|
+
matchesBrowserEdit: boolean;
|
|
22
|
+
}
|
|
23
|
+
/** `[start, end)` of `node` replaced by `typed`, the join cleaned against where `store` keeps it. */
|
|
24
|
+
export declare function replaceRangeInLeaf(node: NodeView, range: {
|
|
25
|
+
start: number;
|
|
26
|
+
end: number;
|
|
27
|
+
}, typed: string, store: StoredAs): LeafRangeEdit;
|
|
28
|
+
/** The bytes `head` up to its offset and `tail` from its offset make with `typed` between them,
|
|
29
|
+
* `seam` where `typed` starts. `tail`'s bytes take its kind's write rule, in `lineEnding`. */
|
|
30
|
+
export declare function joinLeaves(head: JoinEndpoint, tail: JoinEndpoint, typed: string, store: StoredAs, lineEnding: LineEnding): CleanedJoin;
|
|
31
|
+
/** `join.mergedRaw` minus the delimiter runs the join left unpaired, where the reading hides
|
|
32
|
+
* delimiters. */
|
|
33
|
+
export declare function cleanJoinedRaw(join: JoinSeam): CleanedJoin;
|