@voithos-labs/aragonite 0.10.3 → 0.10.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/a11y-strings.d.ts +12 -5
- package/dist/a11y-strings.js +61 -5
- package/dist/action-contracts.d.ts +242 -155
- package/dist/action-contracts.js +2 -2
- package/dist/active-editor.d.ts +3 -3
- package/dist/active-editor.js +8 -9
- package/dist/ambient/ambient-dom.d.ts +2 -5
- package/dist/ambient/ambient-dom.js +16 -62
- package/dist/assert.js +6 -5
- package/dist/block-component.d.ts +135 -109
- package/dist/block-component.js +30 -22
- package/dist/block-id.d.ts +6 -10
- package/dist/block-id.js +25 -14
- package/dist/bounded-memo.d.ts +5 -5
- package/dist/bounded-memo.js +6 -6
- package/dist/components/BlockDragHandle.svelte +13 -20
- package/dist/components/BlockHost.svelte +56 -134
- package/dist/components/BlockList.svelte +22 -19
- package/dist/components/DecorationOverlay.svelte +9 -10
- package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
- package/dist/components/Editor.svelte +619 -1089
- package/dist/components/Editor.svelte.d.ts +9 -20
- package/dist/components/GapCaret.svelte +26 -59
- package/dist/components/SelectionOverlay.svelte +36 -67
- package/dist/components/SelectionOverlay.svelte.d.ts +6 -4
- package/dist/components/TailInsert.svelte +8 -55
- package/dist/components/TailInsert.svelte.d.ts +4 -6
- package/dist/components/block-content-selector.d.ts +11 -11
- package/dist/components/block-content-selector.js +11 -11
- package/dist/components/block-el-lookup.d.ts +6 -0
- package/dist/components/block-el-lookup.js +27 -0
- package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
- package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
- package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
- package/dist/components/blocks/code/CodeBlock.svelte +255 -276
- package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
- package/dist/components/blocks/code/CodeBlockRail.svelte +103 -100
- package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
- package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
- package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
- package/dist/components/blocks/code/code-bootstrap.js +35 -28
- package/dist/components/blocks/code/code-context-actions.js +5 -4
- package/dist/components/blocks/code/code-enter.js +2 -2
- package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
- package/dist/components/blocks/code/code-fence-boundary.js +40 -66
- package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
- package/dist/components/blocks/code/code-fence-exit.js +24 -25
- package/dist/components/blocks/code/code-indent.d.ts +2 -2
- package/dist/components/blocks/code/code-indent.js +4 -7
- package/dist/components/blocks/code/code-languages.d.ts +16 -12
- package/dist/components/blocks/code/code-languages.js +58 -32
- package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
- package/dist/components/blocks/code/code-paste-surface.js +9 -18
- package/dist/components/blocks/code/code-renderer.d.ts +21 -5
- package/dist/components/blocks/code/code-renderer.js +90 -125
- package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
- package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
- package/dist/components/blocks/directive/activate-directives.js +18 -13
- package/dist/components/blocks/editable-leaf.d.ts +50 -74
- package/dist/components/blocks/editable-leaf.js +144 -202
- package/dist/components/blocks/editable-surface.d.ts +96 -100
- package/dist/components/blocks/editable-surface.js +101 -109
- package/dist/components/blocks/list/ListBlock.svelte +46 -90
- package/dist/components/blocks/list/ListItemBlock.svelte +99 -144
- package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +3 -0
- package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
- package/dist/components/blocks/list/task-checkbox.js +12 -7
- package/dist/components/blocks/plain-text-backend.d.ts +4 -20
- package/dist/components/blocks/plain-text-backend.js +9 -43
- package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
- package/dist/components/blocks/surface-wiring.svelte.js +15 -34
- package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
- package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
- package/dist/components/blocks/table/TableBlock.svelte +100 -165
- package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
- package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
- package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
- package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
- package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
- package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
- package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
- package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
- package/dist/components/blocks/table/cell-pointer.js +49 -71
- package/dist/components/blocks/table/cell-render.d.ts +24 -29
- package/dist/components/blocks/table/cell-render.js +29 -31
- package/dist/components/blocks/table/selected-cells.d.ts +7 -7
- package/dist/components/blocks/table/selected-cells.js +9 -13
- package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
- package/dist/components/blocks/table/table-caret-at-point.js +5 -5
- package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
- package/dist/components/blocks/table/table-cell-paste.js +27 -43
- package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
- package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
- package/dist/components/blocks/table/table-menu-model.js +6 -10
- package/dist/components/blocks/table/table-navigation.js +2 -2
- package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
- package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
- package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
- package/dist/components/blocks/text/auto-pair-record.js +51 -0
- package/dist/components/blocks/text/click-snap-guard.d.ts +9 -4
- package/dist/components/blocks/text/click-snap-guard.js +16 -5
- package/dist/components/blocks/text/composition-seat.d.ts +17 -14
- package/dist/components/blocks/text/composition-seat.js +11 -11
- package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
- package/dist/components/blocks/text/construct-edge-delete.js +50 -65
- package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
- package/dist/components/blocks/text/construct-reveal.js +13 -14
- package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
- package/dist/components/blocks/text/delimiter-autopair.js +87 -103
- package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
- package/dist/components/blocks/text/edge-policy-dispatch.js +164 -180
- package/dist/components/blocks/text/edge-seat.d.ts +17 -26
- package/dist/components/blocks/text/edge-seat.js +43 -70
- package/dist/components/blocks/text/link-at-point.d.ts +9 -9
- package/dist/components/blocks/text/link-at-point.js +12 -15
- package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
- package/dist/components/blocks/text/live-join-seam.js +75 -112
- package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
- package/dist/components/blocks/text/live-selection-edit.js +32 -105
- package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
- package/dist/components/blocks/text/live-split-rebalance.js +50 -67
- package/dist/components/blocks/text/marker-completion.d.ts +7 -12
- package/dist/components/blocks/text/marker-completion.js +17 -10
- package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
- package/dist/components/blocks/text/pending-mark-insert.js +30 -49
- package/dist/components/blocks/text/screen-diff.d.ts +5 -15
- package/dist/components/blocks/text/screen-diff.js +5 -19
- package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
- package/dist/components/blocks/text/text-clipboard.js +27 -32
- package/dist/components/blocks/text/text-keydown.d.ts +20 -30
- package/dist/components/blocks/text/text-keydown.js +54 -51
- package/dist/components/blocks/text/text-render.d.ts +25 -35
- package/dist/components/blocks/text/text-render.js +82 -61
- package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
- package/dist/components/blocks/text/widget-adjacency.js +17 -17
- package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
- package/dist/components/blocks/text/widget-interaction.js +243 -208
- package/dist/components/blocks/widget-portal.d.ts +20 -29
- package/dist/components/blocks/widget-portal.js +16 -14
- package/dist/components/built-in-blocks.d.ts +3 -4
- package/dist/components/built-in-blocks.js +17 -18
- package/dist/components/drag-handle.d.ts +13 -30
- package/dist/components/drag-handle.js +25 -63
- package/dist/components/editor-built-ins.d.ts +1 -0
- package/dist/components/editor-built-ins.js +16 -0
- package/dist/components/editor-root-clipboard.d.ts +6 -6
- package/dist/components/editor-root-clipboard.js +16 -27
- package/dist/components/editor-root-document-swap.d.ts +49 -0
- package/dist/components/editor-root-document-swap.js +54 -0
- package/dist/components/editor-root-focus.d.ts +5 -4
- package/dist/components/editor-root-focus.js +51 -22
- package/dist/components/editor-root-focused-surface.d.ts +35 -0
- package/dist/components/editor-root-focused-surface.js +65 -0
- package/dist/components/editor-root-geometry.d.ts +15 -24
- package/dist/components/editor-root-geometry.js +27 -31
- package/dist/components/editor-root-gestures.d.ts +39 -0
- package/dist/components/editor-root-gestures.js +189 -0
- package/dist/components/editor-root-keydown.d.ts +10 -25
- package/dist/components/editor-root-keydown.js +19 -43
- package/dist/components/editor-root-listeners.d.ts +22 -31
- package/dist/components/editor-root-listeners.js +49 -46
- package/dist/components/editor-root-menus.d.ts +51 -0
- package/dist/components/editor-root-menus.js +147 -0
- package/dist/components/editor-root-mode-flip.d.ts +16 -11
- package/dist/components/editor-root-mode-flip.js +36 -34
- package/dist/components/editor-root-scroll-host.d.ts +22 -0
- package/dist/components/editor-root-scroll-host.js +34 -0
- package/dist/components/editor-root-test-surface.d.ts +48 -0
- package/dist/components/editor-root-test-surface.js +6 -0
- package/dist/components/image/ImageOverlayHost.svelte +44 -35
- package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
- package/dist/components/image/ImageProperties.svelte +37 -41
- package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
- package/dist/components/image/ImageResizeHandles.svelte +26 -30
- package/dist/components/image/image-crop.d.ts +5 -11
- package/dist/components/image/image-crop.js +5 -11
- package/dist/components/image/image-edit-commit.d.ts +19 -16
- package/dist/components/image/image-edit-commit.js +74 -38
- package/dist/components/image/image-resize.d.ts +2 -5
- package/dist/components/image/image-resize.js +3 -6
- package/dist/components/image/image-widget-editing.d.ts +3 -3
- package/dist/components/image/image-widget-editing.js +9 -9
- package/dist/components/image/widget-dom.d.ts +2 -3
- package/dist/components/image/widget-dom.js +19 -24
- package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
- package/dist/components/image/widget-selection-state.svelte.js +26 -19
- package/dist/components/kind-cue.svelte.d.ts +21 -0
- package/dist/components/kind-cue.svelte.js +35 -0
- package/dist/components/link-card/LinkCard.svelte +115 -64
- package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
- package/dist/components/link-card/LinkCardHost.svelte +42 -33
- package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
- package/dist/components/link-card/link-card-commit.d.ts +16 -19
- package/dist/components/link-card/link-card-commit.js +21 -30
- package/dist/components/link-card/link-card-entry.d.ts +13 -23
- package/dist/components/link-card/link-card-entry.js +16 -24
- package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
- package/dist/components/link-card/link-card-state.svelte.js +2 -2
- package/dist/components/lrd-map-gate.d.ts +4 -11
- package/dist/components/lrd-map-gate.js +5 -11
- package/dist/components/menu/BlockMenu.svelte +20 -81
- package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
- package/dist/components/menu/InlineMenuHost.svelte +191 -0
- package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
- package/dist/components/menu/MenuIcon.svelte +3 -103
- package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
- package/dist/components/menu/SelectionToolbar.svelte +380 -0
- package/dist/components/menu/SelectionToolbar.svelte.d.ts +14 -0
- package/dist/components/menu/clipboard-actions.d.ts +3 -4
- package/dist/components/menu/clipboard-actions.js +3 -4
- package/dist/components/menu/default-context-actions.d.ts +4 -13
- package/dist/components/menu/default-context-actions.js +49 -67
- package/dist/components/menu/flyout-placement.d.ts +2 -2
- package/dist/components/menu/flyout-placement.js +2 -2
- package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
- package/dist/components/menu/menu-presence.svelte.js +19 -0
- package/dist/components/paste-image-arm.d.ts +6 -11
- package/dist/components/paste-image-arm.js +11 -18
- package/dist/components/portal.d.ts +2 -5
- package/dist/components/portal.js +4 -7
- package/dist/core/directive/activate.d.ts +4 -5
- package/dist/core/directive/activate.js +8 -9
- package/dist/core/directive/container-opener.js +13 -12
- package/dist/core/directive/grammar.d.ts +2 -5
- package/dist/core/directive/grammar.js +10 -10
- package/dist/core/directive/kinds.d.ts +4 -7
- package/dist/core/directive/kinds.js +14 -16
- package/dist/core/directive/registry.d.ts +12 -9
- package/dist/core/directive/registry.js +19 -20
- package/dist/core/directive/text-recognizer.d.ts +3 -2
- package/dist/core/directive/text-recognizer.js +5 -9
- package/dist/core/escapable.d.ts +1 -5
- package/dist/core/escapable.js +1 -5
- package/dist/core/inline/backticks.d.ts +3 -4
- package/dist/core/inline/backticks.js +3 -4
- package/dist/core/inline/character-refs.js +2 -1
- package/dist/core/inline/destination-bytes.d.ts +6 -3
- package/dist/core/inline/destination-bytes.js +50 -8
- package/dist/core/inline/entity-widget.d.ts +4 -3
- package/dist/core/inline/entity-widget.js +6 -6
- package/dist/core/inline/format-toggle.d.ts +22 -28
- package/dist/core/inline/format-toggle.js +97 -129
- package/dist/core/inline/html-entities.d.ts +2 -3
- package/dist/core/inline/html-entities.js +2 -3
- package/dist/core/inline/html-tag-grammar.js +6 -2
- package/dist/core/inline/image-dimensions.d.ts +2 -0
- package/dist/core/inline/image-dimensions.js +19 -2
- package/dist/core/inline/image-source-bytes.d.ts +11 -0
- package/dist/core/inline/image-source-bytes.js +71 -0
- package/dist/core/inline/index.d.ts +28 -21
- package/dist/core/inline/index.js +56 -34
- package/dist/core/inline/inline-cache.d.ts +12 -15
- package/dist/core/inline/inline-cache.js +11 -14
- package/dist/core/inline/inline-widgets.d.ts +55 -68
- package/dist/core/inline/inline-widgets.js +55 -58
- package/dist/core/inline/link-destination.d.ts +31 -0
- package/dist/core/inline/link-destination.js +129 -0
- package/dist/core/inline/link-reference-resolver.d.ts +8 -6
- package/dist/core/inline/link-reference-resolver.js +10 -6
- package/dist/core/inline/link-source-bytes.d.ts +31 -0
- package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
- package/dist/core/inline/live-edit/read-back.d.ts +29 -0
- package/dist/core/inline/live-edit/read-back.js +50 -0
- package/dist/core/inline/picture.d.ts +10 -0
- package/dist/core/inline/picture.js +40 -0
- package/dist/core/inline/scan/autolinks.d.ts +7 -8
- package/dist/core/inline/scan/autolinks.js +80 -59
- package/dist/core/inline/scan/brackets.d.ts +2 -2
- package/dist/core/inline/scan/brackets.js +6 -103
- package/dist/core/inline/scan/code-spans.d.ts +4 -0
- package/dist/core/inline/scan/code-spans.js +8 -0
- package/dist/core/inline/scan/emphasis.js +10 -14
- package/dist/core/inline/scan/index.d.ts +3 -1
- package/dist/core/inline/scan/index.js +32 -33
- package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
- package/dist/core/inline/scan/plugin-syntax.js +75 -89
- package/dist/core/inline/scan/scan-state.d.ts +2 -0
- package/dist/core/inline/scan/scan-state.js +1 -0
- package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
- package/dist/core/inline/scan/simple-nodes.js +2 -5
- package/dist/core/inline/scan/triggers.d.ts +17 -0
- package/dist/core/inline/scan/triggers.js +26 -0
- package/dist/core/inline/scan/url.js +8 -10
- package/dist/core/inline/transparency.d.ts +2 -1
- package/dist/core/inline/transparency.js +33 -17
- package/dist/core/inline/visibility.d.ts +30 -49
- package/dist/core/inline/visibility.js +31 -49
- package/dist/core/inline/walk.d.ts +4 -10
- package/dist/core/inline/walk.js +4 -10
- package/dist/core/inline-render.d.ts +22 -27
- package/dist/core/inline-render.js +51 -60
- package/dist/core/lines.d.ts +67 -26
- package/dist/core/lines.js +164 -33
- package/dist/core/metadata-parity.d.ts +9 -0
- package/dist/core/metadata-parity.js +25 -0
- package/dist/core/node-views.d.ts +7 -6
- package/dist/core/node-views.js +5 -5
- package/dist/core/nodes.d.ts +34 -44
- package/dist/core/nodes.js +4 -12
- package/dist/core/parser.d.ts +27 -34
- package/dist/core/parser.js +53 -67
- package/dist/core/parsers/blockquote.d.ts +5 -8
- package/dist/core/parsers/blockquote.js +11 -10
- package/dist/core/parsers/built-in-openers.d.ts +2 -5
- package/dist/core/parsers/built-in-openers.js +5 -8
- package/dist/core/parsers/fence-syntax.d.ts +36 -7
- package/dist/core/parsers/fence-syntax.js +61 -11
- package/dist/core/parsers/fenced-code.d.ts +16 -0
- package/dist/core/parsers/fenced-code.js +16 -15
- package/dist/core/parsers/heading.d.ts +19 -2
- package/dist/core/parsers/heading.js +50 -2
- package/dist/core/parsers/html-block.d.ts +3 -6
- package/dist/core/parsers/html-block.js +10 -11
- package/dist/core/parsers/indented-code.d.ts +1 -1
- package/dist/core/parsers/indented-code.js +2 -8
- package/dist/core/parsers/link-reference.d.ts +5 -3
- package/dist/core/parsers/link-reference.js +116 -120
- package/dist/core/parsers/list.d.ts +12 -5
- package/dist/core/parsers/list.js +53 -36
- package/dist/core/parsers/paragraph.d.ts +3 -3
- package/dist/core/parsers/paragraph.js +14 -5
- package/dist/core/parsers/table-completion.d.ts +2 -5
- package/dist/core/parsers/table-completion.js +7 -10
- package/dist/core/parsers/table.d.ts +8 -8
- package/dist/core/parsers/table.js +23 -26
- package/dist/core/parsers/thematic-break.js +15 -14
- package/dist/core/paths.d.ts +13 -0
- package/dist/core/paths.js +31 -0
- package/dist/core/terminator-escalation.d.ts +0 -7
- package/dist/core/terminator-escalation.js +5 -8
- package/dist/core/url-policy.d.ts +2 -5
- package/dist/core/url-policy.js +8 -12
- package/dist/cursor/caret-memory.d.ts +34 -0
- package/dist/cursor/caret-memory.js +82 -0
- package/dist/cursor/coordinate-spaces.d.ts +26 -19
- package/dist/cursor/coordinate-spaces.js +32 -20
- package/dist/cursor/dom-walk.d.ts +7 -13
- package/dist/cursor/dom-walk.js +7 -13
- package/dist/cursor/edge-affinity.d.ts +7 -35
- package/dist/cursor/edge-affinity.js +13 -44
- package/dist/cursor/focused-caret.d.ts +6 -8
- package/dist/cursor/focused-caret.js +7 -16
- package/dist/cursor/height-model.d.ts +3 -3
- package/dist/cursor/height-model.js +5 -5
- package/dist/cursor/height-oracle.d.ts +10 -7
- package/dist/cursor/height-oracle.js +26 -75
- package/dist/cursor/observe-resize.d.ts +13 -0
- package/dist/cursor/observe-resize.js +43 -0
- package/dist/cursor/overlay-rects.d.ts +2 -5
- package/dist/cursor/overlay-rects.js +2 -5
- package/dist/cursor/overlay-remeasure.d.ts +6 -7
- package/dist/cursor/overlay-remeasure.js +10 -14
- package/dist/cursor/pending-marks.d.ts +7 -9
- package/dist/cursor/pending-marks.js +6 -27
- package/dist/cursor/point-offset.d.ts +16 -10
- package/dist/cursor/point-offset.js +60 -25
- package/dist/cursor/reveal-source.d.ts +7 -11
- package/dist/cursor/reveal-source.js +10 -18
- package/dist/cursor/scroll-ancestors.d.ts +9 -20
- package/dist/cursor/scroll-ancestors.js +14 -26
- package/dist/cursor/scroll-owner.d.ts +92 -0
- package/dist/cursor/scroll-owner.js +283 -0
- package/dist/cursor/scrollport.d.ts +16 -8
- package/dist/cursor/scrollport.js +28 -5
- package/dist/cursor/sticky-column.d.ts +6 -29
- package/dist/cursor/sticky-column.js +6 -49
- package/dist/cursor/sticky-measure.d.ts +14 -9
- package/dist/cursor/sticky-measure.js +99 -49
- package/dist/cursor/surface-backend.d.ts +41 -0
- package/dist/cursor/surface-backend.js +78 -0
- package/dist/cursor/typography-estimates.d.ts +3 -3
- package/dist/cursor/typography-estimates.js +3 -3
- package/dist/cursor/visual-lines.d.ts +25 -13
- package/dist/cursor/visual-lines.js +72 -28
- package/dist/cursor/widget-edge-snap.d.ts +23 -0
- package/dist/cursor/widget-edge-snap.js +39 -0
- package/dist/cursor/widget-offset.d.ts +111 -102
- package/dist/cursor/widget-offset.js +352 -177
- package/dist/debug/diagnostics-report.d.ts +6 -6
- package/dist/debug/diagnostics-report.js +5 -5
- package/dist/debug/dump-tree.js +2 -2
- package/dist/debug/editor-diagnostics.d.ts +15 -0
- package/dist/debug/editor-diagnostics.js +33 -0
- package/dist/debug/inspect.d.ts +2 -2
- package/dist/debug/inspect.js +4 -4
- package/dist/debug/interaction-trace.d.ts +14 -15
- package/dist/debug/interaction-trace.js +19 -20
- package/dist/debug/operations-log.d.ts +1 -1
- package/dist/debug/operations-log.js +1 -1
- package/dist/decorations/buckets.d.ts +6 -12
- package/dist/decorations/buckets.js +4 -11
- package/dist/decorations/decoration-state.svelte.d.ts +2 -3
- package/dist/decorations/decoration-state.svelte.js +24 -26
- package/dist/decorations/island-dom.d.ts +10 -18
- package/dist/decorations/island-dom.js +25 -50
- package/dist/decorations/reserved-attrs.d.ts +6 -8
- package/dist/decorations/reserved-attrs.js +31 -17
- package/dist/decorations/types.d.ts +6 -7
- package/dist/decorations/types.js +2 -1
- package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
- package/dist/decorations/use-block-decorations.svelte.js +71 -0
- package/dist/decorations/widget-dom.d.ts +3 -3
- package/dist/decorations/widget-dom.js +5 -5
- package/dist/dev-warn.d.ts +5 -2
- package/dist/dev-warn.js +16 -4
- package/dist/editor-actions/ancestry-folds.d.ts +9 -14
- package/dist/editor-actions/ancestry-folds.js +13 -18
- package/dist/editor-actions/block-edit-core.d.ts +49 -22
- package/dist/editor-actions/block-edit-core.js +279 -151
- package/dist/editor-actions/block-edit-scope.d.ts +63 -50
- package/dist/editor-actions/block-edit-scope.js +100 -48
- package/dist/editor-actions/block-edit.d.ts +2 -3
- package/dist/editor-actions/block-edit.js +14 -90
- package/dist/editor-actions/commit/history.d.ts +4 -4
- package/dist/editor-actions/commit/history.js +33 -34
- package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
- package/dist/editor-actions/commit/reading-write-gate.js +56 -0
- package/dist/editor-actions/commit/text-batch.d.ts +7 -11
- package/dist/editor-actions/commit/text-batch.js +6 -7
- package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
- package/dist/editor-actions/commit/undo-controller.js +346 -216
- package/dist/editor-actions/container-block-component.d.ts +32 -51
- package/dist/editor-actions/container-block-component.js +66 -92
- package/dist/editor-actions/container-edit.d.ts +4 -2
- package/dist/editor-actions/container-edit.js +14 -44
- package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
- package/dist/editor-actions/container-exit-overrides.js +19 -21
- package/dist/editor-actions/deps.d.ts +25 -32
- package/dist/editor-actions/enter-completion.d.ts +12 -15
- package/dist/editor-actions/enter-completion.js +49 -51
- package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
- package/dist/editor-actions/focus/focus-dispatch.js +33 -52
- package/dist/editor-actions/focus/focus-landing.d.ts +11 -5
- package/dist/editor-actions/focus/focus-landing.js +29 -14
- package/dist/editor-actions/focus/focus.d.ts +3 -2
- package/dist/editor-actions/focus/focus.js +42 -59
- package/dist/editor-actions/index.d.ts +4 -3
- package/dist/editor-actions/index.js +5 -4
- package/dist/editor-actions/inline-range-commit.d.ts +18 -16
- package/dist/editor-actions/inline-range-commit.js +45 -54
- package/dist/editor-actions/leaf-write.d.ts +11 -0
- package/dist/editor-actions/leaf-write.js +102 -0
- package/dist/editor-actions/list-context.d.ts +9 -10
- package/dist/editor-actions/list-context.js +115 -110
- package/dist/editor-actions/list-overrides.d.ts +13 -5
- package/dist/editor-actions/list-overrides.js +36 -12
- package/dist/editor-actions/merge-fallback.d.ts +10 -16
- package/dist/editor-actions/merge-fallback.js +11 -22
- package/dist/editor-actions/nested/container-actions.d.ts +37 -0
- package/dist/editor-actions/nested/container-actions.js +42 -0
- package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
- package/dist/editor-actions/nested/emptied-container.js +5 -0
- package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
- package/dist/editor-actions/nested/nested-actions.js +17 -15
- package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
- package/dist/editor-actions/nested/nested-block-edit.js +40 -134
- package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
- package/dist/editor-actions/nested/nested-focus.js +33 -21
- package/dist/editor-actions/paste-coordinator.d.ts +3 -2
- package/dist/editor-actions/paste-coordinator.js +17 -13
- package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
- package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
- package/dist/editor-actions/plugin/container.d.ts +55 -76
- package/dist/editor-actions/plugin/container.js +105 -186
- package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
- package/dist/editor-actions/plugin/directive-container.js +7 -8
- package/dist/editor-actions/reorder-action.d.ts +7 -12
- package/dist/editor-actions/reorder-action.js +32 -48
- package/dist/editor-actions/reorder-drag.d.ts +12 -8
- package/dist/editor-actions/reorder-drag.js +45 -41
- package/dist/editor-actions/replacement-focus.d.ts +13 -21
- package/dist/editor-actions/replacement-focus.js +32 -33
- package/dist/editor-actions/search-replace.js +71 -67
- package/dist/editor-actions/stored-caret.d.ts +7 -0
- package/dist/editor-actions/stored-caret.js +10 -0
- package/dist/editor-actions/table-context.d.ts +9 -11
- package/dist/editor-actions/table-context.js +70 -93
- package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
- package/dist/editor-actions/unwrap-strategies.js +52 -63
- package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
- package/dist/editor-actions/whole-block-focus-surface.js +43 -53
- package/dist/editor-events.d.ts +25 -29
- package/dist/editor-events.js +17 -28
- package/dist/editor-keys.d.ts +96 -104
- package/dist/editor-keys.js +11 -24
- package/dist/editor-props.d.ts +91 -71
- package/dist/editor-rects.d.ts +23 -34
- package/dist/editor-rects.js +9 -77
- package/dist/env.d.ts +6 -4
- package/dist/env.js +8 -4
- package/dist/index.d.ts +6 -2
- package/dist/index.js +5 -2
- package/dist/inline-menu/inline-menu-session.d.ts +37 -0
- package/dist/inline-menu/inline-menu-session.js +98 -0
- package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
- package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
- package/dist/inline-menu/types.d.ts +77 -0
- package/dist/inline-menu/types.js +7 -0
- package/dist/invariants/child-id-parity.d.ts +23 -0
- package/dist/invariants/child-id-parity.js +39 -0
- package/dist/invariants/commit-paths.d.ts +4 -4
- package/dist/invariants/commit-paths.js +4 -4
- package/dist/invariants/commit-scope.d.ts +4 -4
- package/dist/invariants/commit-scope.js +9 -8
- package/dist/invariants/context-keys.d.ts +2 -5
- package/dist/invariants/context-keys.js +3 -6
- package/dist/invariants/descriptor.d.ts +2 -6
- package/dist/invariants/descriptor.js +2 -6
- package/dist/invariants/inline-transitions.d.ts +9 -16
- package/dist/invariants/inline-transitions.js +10 -18
- package/dist/invariants/install.d.ts +18 -27
- package/dist/invariants/install.js +29 -30
- package/dist/invariants/keeps-a-block.d.ts +7 -0
- package/dist/invariants/keeps-a-block.js +14 -0
- package/dist/invariants/landable-caret.d.ts +5 -7
- package/dist/invariants/landable-caret.js +8 -11
- package/dist/invariants/landing-focus-scroll.d.ts +7 -0
- package/dist/invariants/landing-focus-scroll.js +13 -0
- package/dist/invariants/landing-value.d.ts +13 -0
- package/dist/invariants/landing-value.js +27 -0
- package/dist/invariants/marker-css-parity.d.ts +5 -6
- package/dist/invariants/marker-css-parity.js +11 -12
- package/dist/invariants/measures-in-own-list.d.ts +6 -0
- package/dist/invariants/measures-in-own-list.js +13 -0
- package/dist/invariants/node-shape.d.ts +18 -37
- package/dist/invariants/node-shape.js +123 -79
- package/dist/invariants/open-tail.d.ts +7 -0
- package/dist/invariants/open-tail.js +45 -0
- package/dist/invariants/placement-ends-widget.d.ts +8 -0
- package/dist/invariants/placement-ends-widget.js +13 -0
- package/dist/invariants/registry.d.ts +27 -66
- package/dist/invariants/registry.js +61 -137
- package/dist/invariants/render-fidelity.d.ts +4 -4
- package/dist/invariants/render-fidelity.js +5 -5
- package/dist/invariants/selection-endpoints.d.ts +6 -7
- package/dist/invariants/selection-endpoints.js +18 -16
- package/dist/invariants/single-node-sink.d.ts +4 -5
- package/dist/invariants/single-node-sink.js +4 -5
- package/dist/invariants/snapshot-integrity.d.ts +5 -6
- package/dist/invariants/snapshot-integrity.js +1 -1
- package/dist/invariants/structural-descriptor.d.ts +6 -15
- package/dist/invariants/structural-descriptor.js +6 -15
- package/dist/menu-icons.d.ts +47 -0
- package/dist/menu-icons.js +113 -0
- package/dist/perf/instruments.d.ts +20 -5
- package/dist/perf/instruments.js +35 -15
- package/dist/perf/use-mount-gauge.svelte.js +4 -4
- package/dist/plugin.d.ts +38 -8
- package/dist/plugin.js +102 -74
- package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
- package/dist/plugins/admonitions/admonition-kind.js +12 -10
- package/dist/plugins/admonitions/convert-document.d.ts +5 -5
- package/dist/plugins/admonitions/convert-document.js +8 -7
- package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
- package/dist/plugins/admonitions/gh-alert.js +21 -22
- package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
- package/dist/plugins/admonitions/github-alert-kind.js +28 -37
- package/dist/plugins/admonitions/index.js +2 -2
- package/dist/plugins/admonitions/kinds.d.ts +1 -1
- package/dist/plugins/admonitions/register.js +11 -2
- package/dist/plugins/details/DetailsBlock.svelte +20 -20
- package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
- package/dist/plugins/details/details-disclosure.svelte.js +6 -7
- package/dist/plugins/details/details-kind.d.ts +6 -7
- package/dist/plugins/details/details-kind.js +44 -59
- package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
- package/dist/plugins/emoji/emoji-recognizer.js +7 -14
- package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
- package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
- package/dist/plugins/footnotes/constants.d.ts +2 -0
- package/dist/plugins/footnotes/constants.js +3 -0
- package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
- package/dist/plugins/footnotes/footnote-definition.js +69 -45
- package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
- package/dist/plugins/footnotes/footnote-lookup.js +14 -26
- package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
- package/dist/plugins/footnotes/footnote-numbering.js +22 -31
- package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
- package/dist/plugins/footnotes/footnote-reference.js +8 -13
- package/dist/plugins/footnotes/index.js +2 -3
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
- package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
- package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
- package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
- package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
- package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
- package/dist/plugins/highlight-occurrences/word-char.js +4 -0
- package/dist/plugins/latex/BlockMath.svelte +58 -75
- package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
- package/dist/plugins/latex/MathInline.svelte +10 -9
- package/dist/plugins/latex/flanking.d.ts +1 -0
- package/dist/plugins/latex/flanking.js +3 -0
- package/dist/plugins/latex/index.d.ts +1 -1
- package/dist/plugins/latex/latex-kind.d.ts +4 -4
- package/dist/plugins/latex/latex-kind.js +113 -85
- package/dist/plugins/latex/math-completion.d.ts +1 -1
- package/dist/plugins/latex/math-completion.js +5 -8
- package/dist/plugins/latex/math-layout.d.ts +2 -8
- package/dist/plugins/latex/math-layout.js +0 -9
- package/dist/plugins/latex/math-renderer.d.ts +17 -20
- package/dist/plugins/latex/math-renderer.js +21 -38
- package/dist/plugins/latex/math-source.d.ts +4 -8
- package/dist/plugins/latex/math-source.js +36 -75
- package/dist/plugins/latex/register.d.ts +10 -11
- package/dist/plugins/latex/register.js +24 -10
- package/dist/plugins/latex/renderer.d.ts +9 -10
- package/dist/plugins/latex/renderer.js +9 -24
- package/dist/plugins/mermaid/MermaidBlock.svelte +63 -47
- package/dist/plugins/mermaid/index.js +1 -1
- package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
- package/dist/plugins/mermaid/mermaid-kind.js +30 -47
- package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
- package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
- package/dist/plugins/mermaid/register.d.ts +3 -3
- package/dist/plugins/mermaid/register.js +5 -5
- package/dist/plugins/mermaid/renderer.d.ts +5 -5
- package/dist/plugins/mermaid/renderer.js +8 -11
- package/dist/plugins/parrot/ParrotBlock.svelte +18 -7
- package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
- package/dist/plugins/parrot/parrot-plugin.js +3 -3
- package/dist/plugins/slash-commands/filter.d.ts +23 -0
- package/dist/plugins/slash-commands/filter.js +31 -0
- package/dist/plugins/slash-commands/index.d.ts +2 -0
- package/dist/plugins/slash-commands/index.js +2 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
- package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
- package/dist/plugins/slash-commands/slash-source.js +108 -0
- package/dist/plugins/toc/TocBlock.svelte +23 -22
- package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
- package/dist/plugins/toc/heading-outline.d.ts +7 -12
- package/dist/plugins/toc/heading-outline.js +22 -36
- package/dist/plugins/toc/navigation-queue.d.ts +2 -4
- package/dist/plugins/toc/toc-plugin.d.ts +5 -5
- package/dist/plugins/toc/toc-plugin.js +20 -13
- package/dist/presentation-mode.d.ts +15 -23
- package/dist/presentation-mode.js +19 -25
- package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
- package/dist/reactivity/block-list-state.svelte.js +8 -9
- package/dist/reactivity/block-window.svelte.d.ts +12 -6
- package/dist/reactivity/block-window.svelte.js +44 -17
- package/dist/reactivity/child-list.d.ts +34 -0
- package/dist/reactivity/child-list.js +48 -0
- package/dist/reactivity/content-version.svelte.d.ts +4 -7
- package/dist/reactivity/content-version.svelte.js +3 -5
- package/dist/reactivity/hold-across.d.ts +39 -0
- package/dist/reactivity/hold-across.js +57 -0
- package/dist/reactivity/layout-state.svelte.d.ts +27 -0
- package/dist/reactivity/layout-state.svelte.js +51 -0
- package/dist/reactivity/list-tree.d.ts +39 -0
- package/dist/reactivity/list-tree.js +132 -0
- package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
- package/dist/reactivity/list-windowing.svelte.js +143 -292
- package/dist/reactivity/measure-batch.d.ts +6 -8
- package/dist/reactivity/measure-batch.js +5 -6
- package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
- package/dist/reactivity/publish-ref.svelte.js +21 -85
- package/dist/reactivity/scope-geometry.d.ts +6 -13
- package/dist/reactivity/scope-geometry.js +7 -14
- package/dist/reactivity/state-registry.d.ts +5 -5
- package/dist/reactivity/state-registry.js +11 -15
- package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
- package/dist/reactivity/use-container-windowing.svelte.js +64 -74
- package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
- package/dist/reactivity/use-measured-child.svelte.js +41 -0
- package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
- package/dist/reactivity/use-window-floor.svelte.js +27 -0
- package/dist/reactivity/window-slice.d.ts +4 -4
- package/dist/reactivity/window-slice.js +0 -2
- package/dist/renderer-slot.d.ts +48 -0
- package/dist/renderer-slot.js +85 -0
- package/dist/scan-index.d.ts +4 -4
- package/dist/scan-index.js +4 -4
- package/dist/schema/block-commands.d.ts +69 -54
- package/dist/schema/block-commands.js +91 -104
- package/dist/schema/block-completions.d.ts +16 -19
- package/dist/schema/block-completions.js +25 -32
- package/dist/schema/block-component-registry.d.ts +13 -14
- package/dist/schema/block-component-registry.js +19 -17
- package/dist/schema/block-kind-descriptor.d.ts +234 -168
- package/dist/schema/block-kind-descriptor.js +151 -66
- package/dist/schema/block-openers.d.ts +48 -39
- package/dist/schema/block-openers.js +73 -83
- package/dist/schema/built-in-descriptors.d.ts +3 -5
- package/dist/schema/built-in-descriptors.js +96 -80
- package/dist/schema/child-spans.d.ts +12 -10
- package/dist/schema/child-spans.js +68 -34
- package/dist/schema/closure.d.ts +18 -16
- package/dist/schema/closure.js +24 -14
- package/dist/schema/command-id.d.ts +6 -8
- package/dist/schema/command-id.js +20 -25
- package/dist/schema/commands.d.ts +79 -81
- package/dist/schema/commands.js +156 -116
- package/dist/schema/container-raw.d.ts +51 -11
- package/dist/schema/container-raw.js +143 -14
- package/dist/schema/container-rebuilders.d.ts +17 -15
- package/dist/schema/container-rebuilders.js +30 -22
- package/dist/schema/context-actions.d.ts +25 -13
- package/dist/schema/context-actions.js +32 -17
- package/dist/schema/define-plugin-block.d.ts +8 -6
- package/dist/schema/define-plugin-block.js +6 -4
- package/dist/schema/fenced-code-raw.d.ts +30 -17
- package/dist/schema/fenced-code-raw.js +155 -107
- package/dist/schema/global-commands.d.ts +6 -6
- package/dist/schema/global-commands.js +14 -22
- package/dist/schema/height-estimates.d.ts +31 -0
- package/dist/schema/height-estimates.js +64 -0
- package/dist/schema/inline-construct-policy.d.ts +42 -55
- package/dist/schema/inline-construct-policy.js +36 -35
- package/dist/schema/insert-catalogue.d.ts +30 -0
- package/dist/schema/insert-catalogue.js +95 -0
- package/dist/schema/keybinding-overrides.d.ts +9 -11
- package/dist/schema/keybinding-overrides.js +1 -1
- package/dist/schema/keybindings.d.ts +15 -7
- package/dist/schema/keybindings.js +21 -9
- package/dist/schema/merge-rules.d.ts +5 -7
- package/dist/schema/merge-rules.js +7 -9
- package/dist/schema/opener-priorities.d.ts +4 -4
- package/dist/schema/opener-priorities.js +4 -4
- package/dist/schema/operations.d.ts +9 -11
- package/dist/schema/operations.js +3 -3
- package/dist/schema/page-role.d.ts +14 -0
- package/dist/schema/page-role.js +19 -0
- package/dist/schema/plugin-activation.d.ts +4 -6
- package/dist/schema/plugin-activation.js +12 -10
- package/dist/schema/plugin-editor-context.d.ts +25 -10
- package/dist/schema/plugin-editor-context.js +40 -9
- package/dist/schema/plugin-install.d.ts +49 -17
- package/dist/schema/plugin-install.js +51 -25
- package/dist/schema/plugin-kind.d.ts +12 -8
- package/dist/schema/plugin-kind.js +35 -42
- package/dist/schema/plugin-name.js +3 -3
- package/dist/schema/plugin-registry.d.ts +54 -0
- package/dist/schema/plugin-registry.js +70 -0
- package/dist/schema/reading.d.ts +23 -0
- package/dist/schema/reading.js +7 -0
- package/dist/schema/register-once.d.ts +3 -5
- package/dist/schema/register-once.js +7 -16
- package/dist/schema/registration-checks.d.ts +12 -16
- package/dist/schema/registration-checks.js +35 -51
- package/dist/schema/registration-pairs.d.ts +54 -0
- package/dist/schema/registration-pairs.js +48 -0
- package/dist/schema/registration-pending.d.ts +8 -12
- package/dist/schema/registration-pending.js +9 -9
- package/dist/schema/registry-reset.d.ts +8 -4
- package/dist/schema/registry-reset.js +13 -26
- package/dist/schema/registry-view.d.ts +25 -13
- package/dist/schema/registry-view.js +26 -20
- package/dist/schema/reserved-chords.d.ts +9 -10
- package/dist/schema/reserved-chords.js +73 -78
- package/dist/schema/reserved-chrome.d.ts +12 -11
- package/dist/schema/reserved-chrome.js +15 -11
- package/dist/schema/setext-raw.d.ts +13 -0
- package/dist/schema/setext-raw.js +33 -0
- package/dist/schema/stored-as.d.ts +20 -0
- package/dist/schema/stored-as.js +6 -0
- package/dist/schema/table-cell-raw.d.ts +18 -7
- package/dist/schema/table-cell-raw.js +28 -7
- package/dist/schema/whole-block-unit.d.ts +5 -4
- package/dist/schema/whole-block-unit.js +5 -4
- package/dist/search/document-scan.d.ts +3 -3
- package/dist/search/document-scan.js +2 -2
- package/dist/search/matcher.d.ts +1 -1
- package/dist/search/regex-executor.d.ts +5 -6
- package/dist/search/regex-executor.js +6 -8
- package/dist/search/replace.d.ts +2 -5
- package/dist/search/replace.js +2 -5
- package/dist/search/search-state.svelte.d.ts +5 -5
- package/dist/search/search-state.svelte.js +12 -16
- package/dist/selection/autoscroll.d.ts +6 -9
- package/dist/selection/block-hit-test.d.ts +16 -24
- package/dist/selection/block-hit-test.js +29 -22
- package/dist/selection/caret-doors.d.ts +15 -14
- package/dist/selection/caret-doors.js +37 -26
- package/dist/selection/caret-landing.d.ts +62 -0
- package/dist/selection/caret-landing.js +157 -0
- package/dist/selection/caret-restore.d.ts +17 -10
- package/dist/selection/caret-restore.js +10 -22
- package/dist/selection/caret-target.d.ts +30 -0
- package/dist/selection/caret-target.js +84 -0
- package/dist/selection/char-endpoint-snap.d.ts +6 -10
- package/dist/selection/char-endpoint-snap.js +8 -14
- package/dist/selection/clipboard-text.d.ts +5 -12
- package/dist/selection/clipboard-text.js +69 -172
- package/dist/selection/covered-block.d.ts +6 -8
- package/dist/selection/covered-block.js +8 -19
- package/dist/selection/cross-block/clipboard.d.ts +3 -2
- package/dist/selection/cross-block/clipboard.js +13 -4
- package/dist/selection/cross-block/dispatch.d.ts +47 -43
- package/dist/selection/cross-block/dispatch.js +12 -23
- package/dist/selection/cross-block/format-range.d.ts +18 -21
- package/dist/selection/cross-block/format-range.js +104 -103
- package/dist/selection/cross-block/format-toggle.d.ts +10 -15
- package/dist/selection/cross-block/format-toggle.js +28 -33
- package/dist/selection/cross-block/keydown.d.ts +4 -4
- package/dist/selection/cross-block/keydown.js +93 -152
- package/dist/selection/cross-block/ops.d.ts +19 -34
- package/dist/selection/cross-block/ops.js +110 -95
- package/dist/selection/cross-block/paste.d.ts +2 -3
- package/dist/selection/cross-block/paste.js +61 -104
- package/dist/selection/cross-block/pointer.d.ts +17 -15
- package/dist/selection/cross-block/pointer.js +74 -25
- package/dist/selection/cross-block/type-replace.d.ts +4 -6
- package/dist/selection/cross-block/type-replace.js +53 -146
- package/dist/selection/dead-space-caret.d.ts +20 -28
- package/dist/selection/dead-space-caret.js +79 -87
- package/dist/selection/drag-pointer.d.ts +22 -5
- package/dist/selection/drag-pointer.js +63 -31
- package/dist/selection/gap-caret.d.ts +17 -28
- package/dist/selection/gap-caret.js +14 -26
- package/dist/selection/grid-selection.d.ts +12 -0
- package/dist/selection/grid-selection.js +22 -0
- package/dist/selection/keyboard-extend.d.ts +27 -39
- package/dist/selection/keyboard-extend.js +94 -116
- package/dist/selection/multi-click.d.ts +37 -0
- package/dist/selection/multi-click.js +197 -0
- package/dist/selection/native-bridge.d.ts +30 -37
- package/dist/selection/native-bridge.js +80 -100
- package/dist/selection/nearest-block.d.ts +17 -12
- package/dist/selection/nearest-block.js +37 -18
- package/dist/selection/path-lookup.d.ts +31 -14
- package/dist/selection/path-lookup.js +110 -20
- package/dist/selection/path-math.d.ts +9 -11
- package/dist/selection/path-math.js +5 -7
- package/dist/selection/pointer-gesture.d.ts +9 -0
- package/dist/selection/pointer-gesture.js +11 -0
- package/dist/selection/pointer-session.d.ts +10 -16
- package/dist/selection/pointer-session.js +6 -7
- package/dist/selection/primitives.d.ts +64 -33
- package/dist/selection/primitives.js +61 -53
- package/dist/selection/range-coverage.d.ts +94 -0
- package/dist/selection/range-coverage.js +365 -0
- package/dist/selection/range-delete-ceremony.d.ts +28 -74
- package/dist/selection/range-delete-ceremony.js +100 -141
- package/dist/selection/range-delete-chrome.d.ts +20 -33
- package/dist/selection/range-delete-chrome.js +53 -78
- package/dist/selection/range-delete-table-coverage.d.ts +11 -25
- package/dist/selection/range-delete-table-coverage.js +42 -112
- package/dist/selection/range-delete-table.d.ts +14 -12
- package/dist/selection/range-delete-table.js +106 -310
- package/dist/selection/range-delete.d.ts +18 -19
- package/dist/selection/range-delete.js +83 -123
- package/dist/selection/round-trip-restore.d.ts +18 -0
- package/dist/selection/round-trip-restore.js +19 -0
- package/dist/selection/selection-announcer.d.ts +17 -0
- package/dist/selection/selection-announcer.js +25 -0
- package/dist/selection/selection-description.d.ts +4 -3
- package/dist/selection/selection-description.js +5 -4
- package/dist/selection/selection-drop.d.ts +52 -0
- package/dist/selection/selection-drop.js +317 -0
- package/dist/selection/selection-restore.d.ts +20 -33
- package/dist/selection/selection-restore.js +21 -44
- package/dist/selection/selection-state.svelte.d.ts +50 -42
- package/dist/selection/selection-state.svelte.js +144 -98
- package/dist/selection/shared-keydown.d.ts +22 -27
- package/dist/selection/shared-keydown.js +25 -45
- package/dist/selection/table-endpoint-snap.d.ts +17 -41
- package/dist/selection/table-endpoint-snap.js +54 -80
- package/dist/selection/table-rect-extend.d.ts +3 -6
- package/dist/selection/table-rect-extend.js +19 -14
- package/dist/styles/editor-theme.css +75 -53
- package/dist/styles/editor.css +248 -139
- package/dist/testing/conformance-core.d.ts +50 -18
- package/dist/testing/conformance-core.js +88 -50
- package/dist/testing/container-conformance.d.ts +48 -84
- package/dist/testing/container-conformance.js +159 -285
- package/dist/testing/headless-actions.d.ts +34 -19
- package/dist/testing/headless-actions.js +116 -65
- package/dist/testing/headless-block-list.svelte.d.ts +16 -0
- package/dist/testing/headless-block-list.svelte.js +22 -0
- package/dist/testing/inline-conformance.d.ts +15 -22
- package/dist/testing/inline-conformance.js +131 -148
- package/dist/testing/kind-conformance.d.ts +19 -24
- package/dist/testing/kind-conformance.js +204 -117
- package/dist/testing/kit-reading.d.ts +7 -0
- package/dist/testing/kit-reading.js +16 -0
- package/dist/testing/mount-dom-stubs.d.ts +4 -5
- package/dist/testing/mount-dom-stubs.js +8 -5
- package/dist/testing/parse-convergence.d.ts +10 -10
- package/dist/testing/parse-convergence.js +14 -49
- package/dist/testing.d.ts +13 -9
- package/dist/testing.js +28 -38
- package/dist/tree-operations/blockquote.d.ts +8 -14
- package/dist/tree-operations/blockquote.js +25 -45
- package/dist/tree-operations/chain-rebuild.d.ts +34 -25
- package/dist/tree-operations/chain-rebuild.js +115 -52
- package/dist/tree-operations/children.d.ts +5 -9
- package/dist/tree-operations/children.js +7 -11
- package/dist/tree-operations/cleanup.d.ts +6 -7
- package/dist/tree-operations/cleanup.js +14 -11
- package/dist/tree-operations/clone.js +5 -4
- package/dist/tree-operations/container-lift.d.ts +10 -5
- package/dist/tree-operations/container-lift.js +20 -14
- package/dist/tree-operations/container-offsets.d.ts +22 -0
- package/dist/tree-operations/container-offsets.js +89 -0
- package/dist/tree-operations/content-write.d.ts +52 -29
- package/dist/tree-operations/content-write.js +155 -110
- package/dist/tree-operations/index.d.ts +4 -4
- package/dist/tree-operations/index.js +4 -4
- package/dist/tree-operations/keep-one-block.d.ts +10 -0
- package/dist/tree-operations/keep-one-block.js +19 -0
- package/dist/tree-operations/leaf-range.d.ts +33 -0
- package/dist/tree-operations/leaf-range.js +67 -0
- package/dist/tree-operations/list/empty-check.d.ts +2 -3
- package/dist/tree-operations/list/empty-check.js +4 -4
- package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
- package/dist/tree-operations/list/exit-replacement.js +4 -9
- package/dist/tree-operations/list/item-partition.d.ts +2 -2
- package/dist/tree-operations/list/item-partition.js +2 -2
- package/dist/tree-operations/list/list-builders.d.ts +18 -16
- package/dist/tree-operations/list/list-builders.js +59 -30
- package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
- package/dist/tree-operations/list/ordered-markers.js +7 -16
- package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
- package/dist/tree-operations/list/reconcile-task.js +80 -23
- package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
- package/dist/tree-operations/list/sublist-separator.js +20 -27
- package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
- package/dist/tree-operations/list/task-paragraph.js +54 -0
- package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
- package/dist/tree-operations/list/unwrap-merge.js +44 -79
- package/dist/tree-operations/node-ops.d.ts +30 -52
- package/dist/tree-operations/node-ops.js +152 -218
- package/dist/tree-operations/node-primitives.d.ts +44 -31
- package/dist/tree-operations/node-primitives.js +84 -60
- package/dist/tree-operations/open-tail.d.ts +25 -0
- package/dist/tree-operations/open-tail.js +100 -0
- package/dist/tree-operations/parse-block.d.ts +15 -2
- package/dist/tree-operations/parse-block.js +19 -4
- package/dist/tree-operations/paste/apply.d.ts +7 -8
- package/dist/tree-operations/paste/apply.js +33 -63
- package/dist/tree-operations/paste/body-write.d.ts +8 -6
- package/dist/tree-operations/paste/body-write.js +13 -14
- package/dist/tree-operations/paste/container-match.d.ts +7 -10
- package/dist/tree-operations/paste/container-match.js +76 -58
- package/dist/tree-operations/paste/container-paste.d.ts +3 -3
- package/dist/tree-operations/paste/container-paste.js +3 -3
- package/dist/tree-operations/paste/dispatch.d.ts +26 -29
- package/dist/tree-operations/paste/dispatch.js +68 -53
- package/dist/tree-operations/paste/focus-target.d.ts +11 -14
- package/dist/tree-operations/paste/focus-target.js +13 -18
- package/dist/tree-operations/paste/hooks.d.ts +7 -12
- package/dist/tree-operations/paste/hooks.js +49 -46
- package/dist/tree-operations/paste/line-ending.d.ts +11 -0
- package/dist/tree-operations/paste/line-ending.js +32 -0
- package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
- package/dist/tree-operations/paste/list-absorb.js +17 -19
- package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
- package/dist/tree-operations/paste/list-break-out.js +24 -32
- package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
- package/dist/tree-operations/paste/parent-scope.js +9 -16
- package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
- package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
- package/dist/tree-operations/paste/paste-replacement.js +73 -42
- package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
- package/dist/tree-operations/paste/paste-transforms.js +18 -27
- package/dist/tree-operations/paste/replacement-parse.d.ts +19 -0
- package/dist/tree-operations/paste/replacement-parse.js +24 -0
- package/dist/tree-operations/paste/strategy.d.ts +1 -1
- package/dist/tree-operations/paste/strategy.js +1 -1
- package/dist/tree-operations/paste/table-slice.js +15 -10
- package/dist/tree-operations/paste-surfaces.d.ts +18 -29
- package/dist/tree-operations/paste-surfaces.js +14 -10
- package/dist/tree-operations/path-mutate.d.ts +7 -8
- package/dist/tree-operations/path-mutate.js +4 -4
- package/dist/tree-operations/reorder-unit.d.ts +4 -5
- package/dist/tree-operations/reorder-unit.js +5 -6
- package/dist/tree-operations/reorder.d.ts +7 -9
- package/dist/tree-operations/reorder.js +39 -40
- package/dist/tree-operations/settle.d.ts +42 -53
- package/dist/tree-operations/settle.js +241 -162
- package/dist/tree-operations/sharing.d.ts +5 -5
- package/dist/tree-operations/splice-many.d.ts +5 -5
- package/dist/tree-operations/splice-many.js +5 -5
- package/dist/tree-operations/stored-as.d.ts +13 -0
- package/dist/tree-operations/stored-as.js +48 -0
- package/dist/tree-operations/structural-change.d.ts +11 -15
- package/dist/tree-operations/structural-change.js +10 -14
- package/dist/tree-operations/structural-suffix.d.ts +22 -0
- package/dist/tree-operations/structural-suffix.js +61 -0
- package/dist/tree-operations/sub-table-copy.d.ts +7 -0
- package/dist/tree-operations/sub-table-copy.js +40 -36
- package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
- package/dist/tree-operations/table-grid-clipboard.js +11 -36
- package/dist/tree-operations/table-mutations.d.ts +7 -3
- package/dist/tree-operations/table-mutations.js +45 -9
- package/dist/tree-operations/unshare.d.ts +11 -15
- package/dist/tree-operations/unshare.js +15 -17
- package/dist/undo/manager.js +1 -1
- package/dist/undo/types.d.ts +2 -2
- package/docs/guide/consumer-guide.md +329 -205
- package/docs/guide/directives.md +7 -7
- package/docs/guide/plugin-api.md +267 -183
- package/docs/guide/plugin-guide.md +341 -235
- package/docs/guide/plugin-testing.md +96 -82
- package/package.json +17 -21
- package/dist/ambient/ambient-cursor.d.ts +0 -41
- package/dist/ambient/ambient-cursor.js +0 -120
- package/dist/components/blocks/code/code-paste.d.ts +0 -24
- package/dist/components/blocks/code/code-paste.js +0 -21
- package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
- package/dist/components/blocks/table/cell-clipboard.js +0 -67
- package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
- package/dist/components/blocks/text/hidden-suffix.js +0 -15
- package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
- package/dist/components/image/image-source-bytes.d.ts +0 -15
- package/dist/components/image/image-source-bytes.js +0 -80
- package/dist/cursor/content-offsets.d.ts +0 -29
- package/dist/cursor/content-offsets.js +0 -151
- package/dist/cursor/reveal-anchor.d.ts +0 -30
- package/dist/cursor/reveal-anchor.js +0 -31
- package/dist/invariants/split-landing.d.ts +0 -8
- package/dist/invariants/split-landing.js +0 -15
- package/dist/selection/double-click-trim.d.ts +0 -17
- package/dist/selection/double-click-trim.js +0 -57
- package/dist/tree-operations/list/terminator.d.ts +0 -17
- package/dist/tree-operations/list/terminator.js +0 -60
- package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -29
- package/dist/tree-operations/paste/replace-block-at-parent.js +0 -75
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Removes the container from its parent's list, for an edit that would take its last child: an
|
|
2
|
+
* emptied container goes rather than stay childless. */
|
|
3
|
+
export function removeEmptiedContainer(deps, gesture) {
|
|
4
|
+
return deps.parent.blockEdit.deleteBlock(deps.index, gesture);
|
|
5
|
+
}
|
|
@@ -1,47 +1,44 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Builds a container's action bundle. HistoryActions is left out on purpose: containers
|
|
3
|
+
* never override history, and Svelte context delivers the document-level HISTORY_KEY to
|
|
4
|
+
* every descendant.
|
|
5
5
|
*/
|
|
6
6
|
import type { BlockEditActions, ContainerEditActions, FocusActions, ListContext } from '../../action-contracts';
|
|
7
7
|
import type { NodeView } from '../../core/node-views';
|
|
8
|
-
import type {
|
|
9
|
-
import { type PresentationModeGetter } from '../../editor-keys';
|
|
10
|
-
import type { StickyColumnState } from '../../cursor/sticky-column';
|
|
8
|
+
import type { CaretMemory } from '../../cursor/caret-memory';
|
|
11
9
|
import type { BlockListState } from '../../reactivity/block-list-state.svelte';
|
|
12
|
-
import type {
|
|
10
|
+
import type { ChildList } from '../../reactivity/child-list';
|
|
11
|
+
import type { Reading } from '../../schema/reading';
|
|
13
12
|
export interface NestedActionsBundle {
|
|
14
13
|
blockEdit: BlockEditActions;
|
|
15
14
|
focus: FocusActions;
|
|
16
15
|
containerEdit: ContainerEditActions;
|
|
17
16
|
}
|
|
18
17
|
/**
|
|
19
|
-
* The three container coordinates every nested factory reads live. A component
|
|
20
|
-
*
|
|
21
|
-
*
|
|
18
|
+
* The three container coordinates every nested factory reads live. A component creates one
|
|
19
|
+
* of these and passes it by reference to each factory it wires, never spread: spreading
|
|
20
|
+
* calls the getters and captures stale values.
|
|
22
21
|
*/
|
|
23
22
|
export interface NodeScope {
|
|
24
23
|
get index(): number;
|
|
25
24
|
get node(): NodeView;
|
|
26
|
-
/**
|
|
25
|
+
/** Document-absolute path of `node`; the copy-before-write and the ancestor rebuild use it. */
|
|
27
26
|
get path(): number[];
|
|
28
27
|
}
|
|
29
28
|
export interface NestedActionsDeps {
|
|
30
29
|
index: number;
|
|
31
30
|
node: NodeView;
|
|
32
|
-
/**
|
|
31
|
+
/** Document-absolute path of `node`; the copy-before-write and the ancestor rebuild use it. */
|
|
33
32
|
path: number[];
|
|
34
|
-
|
|
35
|
-
/** The
|
|
36
|
-
*
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* (the split rebalance). Nullable rather than optional so each container answers. */
|
|
40
|
-
getPresentationMode: PresentationModeGetter | undefined;
|
|
41
|
-
/** The instance's link-reference resolver, required-nullable beside the mode. */
|
|
42
|
-
linkRef: InlineResolverRef | undefined;
|
|
43
|
-
/** Enclosing list's context, when this container is a list nested in one. */
|
|
33
|
+
caretMemory: Pick<CaretMemory, 'column' | 'forget' | 'noteExtreme'>;
|
|
34
|
+
/** The editor's reading, so a nested re-parse or completer reads only the syntax the editor
|
|
35
|
+
* switched on and a split's rebalance knows what its mode shows. */
|
|
36
|
+
reading: Reading;
|
|
37
|
+
/** The enclosing list's context, when this container is a list nested in one. */
|
|
44
38
|
parentListContext?: ListContext;
|
|
39
|
+
/** This container's children as a descent reads them, so a move onto a windowed-out child
|
|
40
|
+
* mounts it. A headless suite omits it: with no render window, every stored ref is mounted. */
|
|
41
|
+
childList?: () => ChildList;
|
|
45
42
|
parent: {
|
|
46
43
|
blockEdit: BlockEditActions;
|
|
47
44
|
focus: FocusActions;
|
|
@@ -49,13 +46,13 @@ export interface NestedActionsDeps {
|
|
|
49
46
|
};
|
|
50
47
|
}
|
|
51
48
|
/**
|
|
52
|
-
* `createStandardNestedActions`'s
|
|
53
|
-
*
|
|
49
|
+
* `createStandardNestedActions`'s input: the shared `NodeScope` by reference plus the static
|
|
50
|
+
* configuration `NestedActionsDeps` carries.
|
|
54
51
|
*/
|
|
55
52
|
export type NestedActionsInput = Omit<NestedActionsDeps, 'index' | 'node' | 'path'> & {
|
|
56
53
|
scope: NodeScope;
|
|
57
54
|
};
|
|
58
|
-
/** Receives stable default bundle
|
|
55
|
+
/** Receives the stable default bundle; chain through `defaults.blockEdit.foo(...)`. */
|
|
59
56
|
export type NestedActionsOverrideFactory = (defaults: NestedActionsBundle) => {
|
|
60
57
|
blockEdit?: Partial<BlockEditActions>;
|
|
61
58
|
focus?: Partial<FocusActions>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Builds a container's action bundle. HistoryActions is left out on purpose: containers
|
|
3
|
+
* never override history, and Svelte context delivers the document-level HISTORY_KEY to
|
|
4
|
+
* every descendant.
|
|
5
5
|
*/
|
|
6
6
|
import { setContext } from 'svelte';
|
|
7
7
|
import { BLOCK_EDIT_KEY, CONTAINER_EDIT_KEY, FOCUS_KEY, HISTORY_KEY } from '../../editor-keys';
|
|
@@ -11,8 +11,8 @@ import { createNestedBlockEdit } from './nested-block-edit';
|
|
|
11
11
|
import { createNestedFocus } from './nested-focus';
|
|
12
12
|
import { withEnterCompletion } from '../enter-completion';
|
|
13
13
|
export function createStandardNestedActions(state, input, overrideFactory) {
|
|
14
|
-
// Adapt `scope` to the
|
|
15
|
-
//
|
|
14
|
+
// Adapt `scope` to the shape the sub-factories read, once here rather than at every call
|
|
15
|
+
// site. Getters stay live; destructuring would snapshot.
|
|
16
16
|
const deps = {
|
|
17
17
|
get index() {
|
|
18
18
|
return input.scope.index;
|
|
@@ -23,29 +23,31 @@ export function createStandardNestedActions(state, input, overrideFactory) {
|
|
|
23
23
|
get path() {
|
|
24
24
|
return input.scope.path;
|
|
25
25
|
},
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
getPresentationMode: input.getPresentationMode,
|
|
29
|
-
linkRef: input.linkRef,
|
|
26
|
+
caretMemory: input.caretMemory,
|
|
27
|
+
reading: input.reading,
|
|
30
28
|
parentListContext: input.parentListContext,
|
|
29
|
+
childList: input.childList,
|
|
31
30
|
parent: input.parent
|
|
32
31
|
};
|
|
33
32
|
const blockEdit = createNestedBlockEdit(state, deps);
|
|
34
33
|
const focus = createNestedFocus(state, deps);
|
|
35
|
-
// Commit
|
|
34
|
+
// Commit paths are document-absolute where they are made (block-edit-scope), so
|
|
36
35
|
// intermediate containers have nothing to remap and this passes straight through.
|
|
37
36
|
const containerEdit = deps.parent.containerEdit;
|
|
38
37
|
const defaults = { blockEdit, focus, containerEdit };
|
|
39
|
-
// Above the override spread, so a container replacing `splitBlock` keeps
|
|
40
|
-
//
|
|
41
|
-
// already past the consult, and re-entering would spend one press on two.
|
|
38
|
+
// Above the override spread, so a container replacing `splitBlock` keeps its Enter completion;
|
|
39
|
+
// `defaults` stays unwrapped, or an override chaining into it would run the check twice.
|
|
42
40
|
const childAt = (index) => deps.node.children?.[index];
|
|
41
|
+
const getLineEnding = () => containerEdit.lineEnding();
|
|
43
42
|
if (!overrideFactory) {
|
|
44
|
-
return {
|
|
43
|
+
return {
|
|
44
|
+
...defaults,
|
|
45
|
+
blockEdit: withEnterCompletion(blockEdit, childAt, deps.reading.grammar, getLineEnding)
|
|
46
|
+
};
|
|
45
47
|
}
|
|
46
48
|
const overrides = overrideFactory(defaults);
|
|
47
49
|
return {
|
|
48
|
-
blockEdit: withEnterCompletion({ ...blockEdit, ...(overrides.blockEdit ?? {}) }, childAt),
|
|
50
|
+
blockEdit: withEnterCompletion({ ...blockEdit, ...(overrides.blockEdit ?? {}) }, childAt, deps.reading.grammar, getLineEnding),
|
|
49
51
|
focus: { ...focus, ...(overrides.focus ?? {}) },
|
|
50
52
|
containerEdit: { ...containerEdit, ...(overrides.containerEdit ?? {}) }
|
|
51
53
|
};
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* `
|
|
4
|
-
*
|
|
5
|
-
* unwrap dispatch, and `updateBlockContent`.
|
|
2
|
+
* A container's BlockEditActions: the shared `block-edit-core` against a container
|
|
3
|
+
* `CommitScope`, plus what the core cannot own: the children guards, handing edge cases up to
|
|
4
|
+
* `parent.blockEdit`, and the unwrap dispatch.
|
|
6
5
|
*/
|
|
7
6
|
import type { BlockEditActions } from '../../action-contracts';
|
|
8
7
|
import type { BlockListState } from '../../reactivity/block-list-state.svelte';
|
|
@@ -1,181 +1,87 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* `
|
|
4
|
-
*
|
|
5
|
-
* unwrap dispatch, and `updateBlockContent`.
|
|
2
|
+
* A container's BlockEditActions: the shared `block-edit-core` against a container
|
|
3
|
+
* `CommitScope`, plus what the core cannot own: the children guards, handing edge cases up to
|
|
4
|
+
* `parent.blockEdit`, and the unwrap dispatch.
|
|
6
5
|
*/
|
|
7
|
-
import { tick } from 'svelte';
|
|
8
|
-
import { updateNodeContent as performUpdate, ensureUnsharedChild, reconcileTaskMetadata } from '../../tree-operations';
|
|
9
|
-
import { stampStructuralChange } from '../../tree-operations/structural-change';
|
|
10
6
|
import { tryGetBlockKindDescriptor } from '../../schema/block-kind-descriptor';
|
|
11
7
|
import { isCollapsedContainer } from '../../schema/reserved-chrome';
|
|
12
|
-
import { assertInvariant } from '../../assert';
|
|
13
8
|
import { firstChildUnwrapStrategies, middleChildUnwrapStrategies } from '../unwrap-strategies';
|
|
14
|
-
import { createContainerScope
|
|
15
|
-
import { createBlockEditCore } from '../block-edit-core';
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
9
|
+
import { createContainerScope } from '../block-edit-scope';
|
|
10
|
+
import { contentUpdate, createBlockEditCore } from '../block-edit-core';
|
|
11
|
+
import { refusedWrite } from '../stored-caret';
|
|
12
|
+
import { removeEmptiedContainer } from './emptied-container';
|
|
18
13
|
export function createNestedBlockEdit(state, deps) {
|
|
19
14
|
const { parent } = deps;
|
|
20
15
|
const scope = createContainerScope(state, deps);
|
|
21
16
|
const core = createBlockEditCore(scope);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
* rewritten `text`. Both caret doors read it, since either can arrive from a
|
|
25
|
-
* component that measured the DOM before the rewrite.
|
|
26
|
-
*/
|
|
27
|
-
function mapCommittedOffset(text, offset) {
|
|
28
|
-
const bodyWrite = tryGetBlockKindDescriptor(deps.node.kind)?.bodyWrite;
|
|
29
|
-
return bodyWrite ? bodyWrite.mapOffset(text, offset) : offset;
|
|
30
|
-
}
|
|
17
|
+
const writeContent = contentUpdate(scope);
|
|
18
|
+
const takesLastChild = () => (deps.node.children?.length ?? 0) <= 1;
|
|
31
19
|
const blockEdit = {
|
|
32
20
|
// ── Structural mutations (interior → core, edges → parent) ─────────────
|
|
33
21
|
async splitBlock(innerIndex, offset) {
|
|
34
22
|
if (!deps.node.children)
|
|
35
|
-
return;
|
|
36
|
-
|
|
23
|
+
return false;
|
|
24
|
+
return core.split(innerIndex, offset);
|
|
37
25
|
},
|
|
38
26
|
async descendToBody(innerIndex) {
|
|
39
27
|
if (!deps.node.children)
|
|
40
|
-
return;
|
|
41
|
-
|
|
28
|
+
return false;
|
|
29
|
+
return core.descendToBody(innerIndex);
|
|
42
30
|
},
|
|
43
31
|
async insertParagraph(boundaryIndex, text) {
|
|
44
32
|
if (!deps.node.children)
|
|
45
|
-
return;
|
|
46
|
-
|
|
33
|
+
return false;
|
|
34
|
+
return core.insertParagraph(boundaryIndex, text);
|
|
47
35
|
},
|
|
48
36
|
async mergeWithPrevious(innerIndex) {
|
|
49
37
|
if (!deps.node.children)
|
|
50
|
-
return;
|
|
38
|
+
return false;
|
|
51
39
|
const unwrapRole = tryGetBlockKindDescriptor(deps.node.kind)?.unwrapRole;
|
|
52
40
|
if (innerIndex <= 0) {
|
|
53
41
|
if (unwrapRole) {
|
|
54
|
-
|
|
55
|
-
return;
|
|
42
|
+
return firstChildUnwrapStrategies[unwrapRole.firstChildBackspace]({ deps, state });
|
|
56
43
|
}
|
|
57
|
-
//
|
|
58
|
-
|
|
59
|
-
await parent.blockEdit.mergeWithPrevious(deps.index);
|
|
60
|
-
return;
|
|
44
|
+
// A container with no unwrap role hands the merge to its parent.
|
|
45
|
+
return parent.blockEdit.mergeWithPrevious(deps.index);
|
|
61
46
|
}
|
|
62
47
|
if (unwrapRole && unwrapRole.middleChildBackspace !== 'default-merge') {
|
|
63
|
-
|
|
64
|
-
return;
|
|
48
|
+
return middleChildUnwrapStrategies[unwrapRole.middleChildBackspace]({ deps, state }, innerIndex);
|
|
65
49
|
}
|
|
66
|
-
|
|
50
|
+
return core.mergeWithPreviousInterior(innerIndex);
|
|
67
51
|
},
|
|
68
52
|
async mergeWithNext(innerIndex) {
|
|
69
53
|
if (!deps.node.children)
|
|
70
|
-
return;
|
|
54
|
+
return false;
|
|
71
55
|
if (innerIndex >= deps.node.children.length - 1) {
|
|
72
56
|
return parent.blockEdit.mergeWithNext(deps.index);
|
|
73
57
|
}
|
|
74
|
-
// A collapsed container's body is unmounted, so forward
|
|
75
|
-
//
|
|
76
|
-
// `append: false` keeps the last-block case inert rather than minting a paragraph.
|
|
58
|
+
// A collapsed container's body is unmounted, so forward Delete moves focus past the
|
|
59
|
+
// container without editing; `append: false` keeps a last block from appending one.
|
|
77
60
|
if (isCollapsedContainer(deps.node)) {
|
|
78
61
|
await parent.focus.moveFocus(deps.index + 1, 'start', { append: false });
|
|
79
|
-
return;
|
|
62
|
+
return false;
|
|
80
63
|
}
|
|
81
|
-
|
|
64
|
+
return core.mergeWithNextInterior(innerIndex);
|
|
82
65
|
},
|
|
83
|
-
async deleteBlock(innerIndex) {
|
|
66
|
+
async deleteBlock(innerIndex, gesture) {
|
|
84
67
|
if (!deps.node.children)
|
|
85
|
-
return;
|
|
86
|
-
if (
|
|
87
|
-
return
|
|
88
|
-
|
|
89
|
-
await core.deleteInterior(innerIndex);
|
|
68
|
+
return false;
|
|
69
|
+
if (takesLastChild())
|
|
70
|
+
return removeEmptiedContainer(deps, gesture);
|
|
71
|
+
return core.deleteInterior(innerIndex, gesture);
|
|
90
72
|
},
|
|
91
73
|
updateBlockMetadata: (innerIndex, metadata, options) => core.updateBlockMetadata(innerIndex, metadata, options),
|
|
92
|
-
replaceBlock
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
async updateBlockContent(innerIndex, text, preEditOffset, postEditFocusOffset) {
|
|
96
|
-
// The batch's pause window opens once this keystroke's own work is done, throw
|
|
97
|
-
// included: an unarmed batch never ends by pause.
|
|
98
|
-
try {
|
|
99
|
-
await applyContentUpdate(innerIndex, text, preEditOffset, postEditFocusOffset);
|
|
100
|
-
}
|
|
101
|
-
finally {
|
|
102
|
-
parent.containerEdit.armDebouncedPause();
|
|
74
|
+
async replaceBlock(innerIndex, replacement, focus, options) {
|
|
75
|
+
if (replacement.length === 0 && takesLastChild()) {
|
|
76
|
+
return removeEmptiedContainer(deps, 'keyless');
|
|
103
77
|
}
|
|
78
|
+
return (await core.replaceBlock(innerIndex, replacement, focus, options)) !== null;
|
|
79
|
+
},
|
|
80
|
+
updateBlockContent(innerIndex, text, mode, preEditOffset, postEditFocusOffset) {
|
|
81
|
+
if (!deps.node.children)
|
|
82
|
+
return refusedWrite();
|
|
83
|
+
return writeContent(innerIndex, text, mode, preEditOffset, postEditFocusOffset);
|
|
104
84
|
}
|
|
105
85
|
};
|
|
106
|
-
async function applyContentUpdate(innerIndex, text, preEditOffset, postEditFocusOffset) {
|
|
107
|
-
if (!deps.node.children)
|
|
108
|
-
return;
|
|
109
|
-
// No tail suffix: the document-level fold has no container twin yet.
|
|
110
|
-
const preview = previewContentReparse(deps.node.children[innerIndex], text, deps.grammar, deps.node.kind, '');
|
|
111
|
-
const leafPath = extendDocPath(deps.path, innerIndex);
|
|
112
|
-
if (preview.op !== 'noop') {
|
|
113
|
-
// Mapped, because a caret measured before the rewrite names a position in
|
|
114
|
-
// bytes that never landed. Reachable here and not only on the routine path:
|
|
115
|
-
// completing `</details>` is a kind change, and a kind change commits.
|
|
116
|
-
const focusOffset = mapCommittedOffset(text, postEditFocusOffset ?? preEditOffset ?? 0);
|
|
117
|
-
let settled = { change: { op: 'noop' }, textStart: 0 };
|
|
118
|
-
await parent.containerEdit.commitContainer({
|
|
119
|
-
containerNode: deps.node,
|
|
120
|
-
path: deps.path,
|
|
121
|
-
state,
|
|
122
|
-
snapshot: { path: leafPath, offset: preEditOffset ?? 0 },
|
|
123
|
-
mutate: (scope) => {
|
|
124
|
-
ensureUnsharedChild(scope.node, innerIndex, scope.sharing);
|
|
125
|
-
settled = performUpdate(scopeParentOf(scope), innerIndex, text, deps.grammar, scope.sharing);
|
|
126
|
-
stampStructuralChange(scope.children, settled.change, scope.sharing);
|
|
127
|
-
return settled.change;
|
|
128
|
-
},
|
|
129
|
-
op: {
|
|
130
|
-
kind: 'updateContent',
|
|
131
|
-
detail: { length: text.length },
|
|
132
|
-
eventPath: leafPath
|
|
133
|
-
},
|
|
134
|
-
afterTick: () => focusAfterContentReplace(deps.path, innerIndex, settled, focusOffset, scope)
|
|
135
|
-
});
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
// Routine typing — debounced undo path, no structural commit. The inner leaf's
|
|
139
|
-
// id is the batch key, so a focus move between sibling leaves breaks the batch.
|
|
140
|
-
parent.containerEdit.pushDebouncedCheckpoint(leafPath, preEditOffset ?? 0, state.innerBlockIds[innerIndex]);
|
|
141
|
-
let settled = { change: { op: 'noop' }, textStart: 0 };
|
|
142
|
-
const reclassified = parent.containerEdit.withUnsharedSpine(leafPath, (chain, sharing) => {
|
|
143
|
-
assertInvariant('unshared-spine-depth', () => chain.length === leafPath.length
|
|
144
|
-
? null
|
|
145
|
-
: {
|
|
146
|
-
code: 'unshared-spine-depth',
|
|
147
|
-
message: `withUnsharedSpine: chain depth ${chain.length} != leaf path depth ${leafPath.length}`
|
|
148
|
-
});
|
|
149
|
-
const ownedContainer = chain[leafPath.length - 2];
|
|
150
|
-
if (!ownedContainer?.children)
|
|
151
|
-
return;
|
|
152
|
-
settled = performUpdate({
|
|
153
|
-
children: ownedContainer.children,
|
|
154
|
-
ownerKind: ownedContainer.kind,
|
|
155
|
-
owner: ownedContainer
|
|
156
|
-
}, innerIndex, text, deps.grammar, sharing);
|
|
157
|
-
// taskItem metadata is extracted at parse time from the first stripped
|
|
158
|
-
// line, so without this it freezes while the serialized source drifts.
|
|
159
|
-
if (ownedContainer.kind === 'listItem' && innerIndex === 0) {
|
|
160
|
-
reconcileTaskMetadata(ownedContainer);
|
|
161
|
-
}
|
|
162
|
-
return settled.change;
|
|
163
|
-
});
|
|
164
|
-
parent.containerEdit.nudgeReactivity();
|
|
165
|
-
// The rebuild re-kinded a container on this spine (a typed `> [!TIP]` marker
|
|
166
|
-
// moves into the container's own bytes), so the edited leaf no longer exists.
|
|
167
|
-
// Re-enter at the container's start; its focus walk lands in the body.
|
|
168
|
-
if (reclassified) {
|
|
169
|
-
await tick();
|
|
170
|
-
await parent.focus.moveFocus(deps.index, 'start');
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
// A blank-fill settle can fold here, which the single-node preview probe cannot see;
|
|
174
|
-
// the spine wrapper published the splice, and the caret follows the re-tiled bytes.
|
|
175
|
-
if (settled.change.op === 'noop')
|
|
176
|
-
return;
|
|
177
|
-
await tick();
|
|
178
|
-
focusAfterContentReplace(deps.path, innerIndex, settled, mapCommittedOffset(text, postEditFocusOffset ?? preEditOffset ?? 0), scope);
|
|
179
|
-
}
|
|
180
86
|
return blockEdit;
|
|
181
87
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* FocusActions
|
|
3
|
-
*
|
|
4
|
-
* count so out-of-range delegation routes through the parent correctly.
|
|
2
|
+
* A container's FocusActions: the one traversal in `focus-dispatch` over the container's own
|
|
3
|
+
* child list, handing a move off either end to the parent.
|
|
5
4
|
*/
|
|
6
5
|
import type { FocusActions } from '../../action-contracts';
|
|
7
6
|
import type { BlockListState } from '../../reactivity/block-list-state.svelte';
|
|
@@ -1,30 +1,42 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* FocusActions
|
|
3
|
-
*
|
|
4
|
-
* count so out-of-range delegation routes through the parent correctly.
|
|
2
|
+
* A container's FocusActions: the one traversal in `focus-dispatch` over the container's own
|
|
3
|
+
* child list, handing a move off either end to the parent.
|
|
5
4
|
*/
|
|
6
|
-
import {
|
|
5
|
+
import { descendTo } from '../../reactivity/child-list';
|
|
6
|
+
import { delegateMoveFocus, dispatchMoveFocus } from '../focus/focus-dispatch';
|
|
7
7
|
export function createNestedFocus(state, deps) {
|
|
8
|
-
const {
|
|
8
|
+
const { caretMemory, parent } = deps;
|
|
9
|
+
const children = () => deps.childList?.() ?? mountedOnly(state, deps);
|
|
10
|
+
const scope = {
|
|
11
|
+
// The tree's count, not the refs': those lag a structural edit by a render.
|
|
12
|
+
count: () => deps.node.children?.length ?? 0,
|
|
13
|
+
mount: (index) => descendTo(children(), [index]),
|
|
14
|
+
leave: async (step, position, options) => {
|
|
15
|
+
await delegateMoveFocus(parent.focus, deps.index + step, position, options);
|
|
16
|
+
},
|
|
17
|
+
// The boundaries this container owns are between its own children, so its
|
|
18
|
+
// document-absolute path is their parent. Read live: `path` moves under edits.
|
|
19
|
+
gapStop: (boundaryIndex) => parent.focus.tryGapStop(deps.path, boundaryIndex),
|
|
20
|
+
arrived: (index) => parent.focus.followArrival([...deps.path, index])
|
|
21
|
+
};
|
|
9
22
|
return {
|
|
10
|
-
//
|
|
11
|
-
// through this container, so this scope doesn't own it. The gap stop is forwarded
|
|
12
|
-
// for the same reason: the root holds the doc and selection reads.
|
|
13
|
-
revealPath: parent.focus.revealPath,
|
|
23
|
+
// The root holds the document, the selection reads and the scroll, so both are forwarded.
|
|
14
24
|
tryGapStop: parent.focus.tryGapStop,
|
|
15
|
-
|
|
16
|
-
// `moveFocus`. The adjacent-only precondition is the caller's — VR-12
|
|
17
|
-
// (docs/design/virtual-rendering.md).
|
|
25
|
+
followArrival: parent.focus.followArrival,
|
|
18
26
|
async moveFocus(innerIndex, position, options) {
|
|
19
|
-
await dispatchMoveFocus(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
await dispatchMoveFocus(scope, innerIndex, position, caretMemory, options);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/** A list with no render window, for a suite with no components: nothing mounts later, so an
|
|
32
|
+
* empty ref is out of range. */
|
|
33
|
+
function mountedOnly(state, deps) {
|
|
34
|
+
return {
|
|
35
|
+
count: () => deps.node.children?.length ?? 0,
|
|
36
|
+
refs: state.refSlots,
|
|
37
|
+
windowing: {
|
|
38
|
+
revealChild: async () => { },
|
|
39
|
+
isInWindow: (index) => state.refSlots.get(index) !== undefined
|
|
28
40
|
}
|
|
29
41
|
};
|
|
30
42
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** The narrow commit interface `tree-operations/paste/` depends on instead of importing
|
|
2
|
+
* editor-actions. */
|
|
2
3
|
import type { PasteCommitCoordinator } from '../tree-operations/paste/paste-deps';
|
|
3
4
|
import type { EditorActionsDeps, UndoController } from './deps';
|
|
4
|
-
export declare function createPasteCoordinator(
|
|
5
|
+
export declare function createPasteCoordinator(deps: EditorActionsDeps, controller: UndoController): PasteCommitCoordinator;
|
|
@@ -1,20 +1,24 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** The narrow commit interface `tree-operations/paste/` depends on instead of importing
|
|
2
|
+
* editor-actions. */
|
|
2
3
|
import { getStateForNode } from '../reactivity/state-registry';
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
import { commitLeafTextAt, createBlockEditCore } from './block-edit-core';
|
|
5
|
+
import { createPathScope } from './block-edit-scope';
|
|
6
|
+
import { docPathFrom } from '../cursor/coordinate-spaces';
|
|
7
|
+
export function createPasteCoordinator(deps, controller) {
|
|
8
|
+
const root = { deps, controller };
|
|
9
|
+
const coordinator = {
|
|
5
10
|
commitMultiScope: controller.commitMultiScope,
|
|
6
11
|
getDocScope: controller.getDocScope,
|
|
7
|
-
// editor-actions may
|
|
8
|
-
//
|
|
12
|
+
// editor-actions may import reactivity; handing it over here keeps `tree-operations/paste/`
|
|
13
|
+
// from importing it itself.
|
|
9
14
|
resolveState: getStateForNode,
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return;
|
|
17
|
-
block?.focus(offset);
|
|
15
|
+
commitLeafText: (leafPath, text, opts) => commitLeafTextAt(root, leafPath, text, opts),
|
|
16
|
+
async replaceBlock(blockPath, replacement, focus, opts) {
|
|
17
|
+
const scope = createPathScope(root, docPathFrom(blockPath.slice(0, -1)));
|
|
18
|
+
if (!scope)
|
|
19
|
+
return null;
|
|
20
|
+
return createBlockEditCore(scope).replaceBlock(blockPath[blockPath.length - 1], replacement, focus, opts);
|
|
18
21
|
}
|
|
19
22
|
};
|
|
23
|
+
return coordinator;
|
|
20
24
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Register a
|
|
3
|
-
* container (a callout title, a details summary). The container declares the
|
|
4
|
-
* `reservedChrome`; this
|
|
5
|
-
*
|
|
2
|
+
* Register a title-row leaf kind: editable text at a reserved child index of a plugin
|
|
3
|
+
* container (a callout title, a details summary). The container declares the index via
|
|
4
|
+
* `reservedChrome`; this registers the leaf. Only for such rows, never for a kind with its
|
|
5
|
+
* own parser: the child is one line of plain text (`docs/design/plugin-contract.md`).
|
|
6
6
|
*/
|
|
7
7
|
import type { Component } from 'svelte';
|
|
8
8
|
import { type MergeRole } from '../../schema/block-kind-descriptor';
|
|
@@ -10,16 +10,18 @@ import { type KeyBinding } from '../../schema/keybindings';
|
|
|
10
10
|
import { type AnyBlockKind, type CstNode } from '../../core/nodes';
|
|
11
11
|
import type { BlockComponent, BlockComponentProps } from '../../block-component';
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
13
|
+
* Create the reserved child-0 node for a title-row leaf. An empty title becomes a bare
|
|
14
|
+
* newline, so the empty leaf still holds a line.
|
|
15
15
|
*/
|
|
16
16
|
export declare function chromeChild(kind: AnyBlockKind, text: string): CstNode;
|
|
17
17
|
export interface ChromeLeafOptions {
|
|
18
|
-
/**
|
|
18
|
+
/** What a screen reader and the block menu call the row; defaults to the kind in words. */
|
|
19
|
+
label?: string;
|
|
20
|
+
/** CSS class on the leaf's editable element, for styling the title row. */
|
|
19
21
|
blockClass?: string;
|
|
20
|
-
/** A binding replaces the
|
|
22
|
+
/** A binding replaces the default for its chord; the defaults fill the rest. */
|
|
21
23
|
keymap?: KeyBinding[];
|
|
22
|
-
/** Defaults to 'not-mergeable'
|
|
24
|
+
/** Defaults to 'not-mergeable': body prose cannot merge into a title row. */
|
|
23
25
|
mergeRole?: MergeRole;
|
|
24
26
|
}
|
|
25
27
|
export declare function registerChromeLeaf<P extends Partial<BlockComponentProps> & Record<string, unknown>>(kind: AnyBlockKind, component: Component<P, BlockComponent>, opts?: ChromeLeafOptions): void;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Register a
|
|
3
|
-
* container (a callout title, a details summary). The container declares the
|
|
4
|
-
* `reservedChrome`; this
|
|
5
|
-
*
|
|
2
|
+
* Register a title-row leaf kind: editable text at a reserved child index of a plugin
|
|
3
|
+
* container (a callout title, a details summary). The container declares the index via
|
|
4
|
+
* `reservedChrome`; this registers the leaf. Only for such rows, never for a kind with its
|
|
5
|
+
* own parser: the child is one line of plain text (`docs/design/plugin-contract.md`).
|
|
6
6
|
*/
|
|
7
7
|
import { registerBlockKind } from '../../schema/block-kind-descriptor';
|
|
8
8
|
import { registerBlockComponent, defineBlockComponent } from '../../schema/block-component-registry';
|
|
@@ -11,14 +11,14 @@ import { registerPasteSurface } from '../../tree-operations/paste-surfaces';
|
|
|
11
11
|
import { defaultInlineHook } from '../../tree-operations/paste/hooks';
|
|
12
12
|
import { makeBlockNode } from '../../core/nodes';
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
14
|
+
* Create the reserved child-0 node for a title-row leaf. An empty title becomes a bare
|
|
15
|
+
* newline, so the empty leaf still holds a line.
|
|
16
16
|
*/
|
|
17
17
|
export function chromeChild(kind, text) {
|
|
18
18
|
return makeBlockNode({ kind, leadingTrivia: '', raw: text ? `${text}\n` : '\n' });
|
|
19
19
|
}
|
|
20
|
-
//
|
|
21
|
-
//
|
|
20
|
+
// A title row serializes as one line, so Enter moves into the body instead of splitting;
|
|
21
|
+
// Backspace and Delete take the ordinary merge path.
|
|
22
22
|
const CHROME_DEFAULT_KEYMAP = [
|
|
23
23
|
{ chord: 'Enter', command: 'chrome.descendToBody' },
|
|
24
24
|
{ chord: 'Backspace', command: 'block.mergePrev' },
|
|
@@ -35,14 +35,15 @@ function mergeChromeKeymap(overrides) {
|
|
|
35
35
|
}
|
|
36
36
|
export function registerChromeLeaf(kind, component, opts = {}) {
|
|
37
37
|
registerBlockKind(kind, {
|
|
38
|
+
...(opts.label !== undefined ? { label: opts.label } : {}),
|
|
38
39
|
gapEdges: 'none',
|
|
39
40
|
mergeRole: opts.mergeRole ?? 'not-mergeable',
|
|
40
41
|
editable: true,
|
|
41
42
|
supportsInline: false,
|
|
42
43
|
contextDependentKind: true,
|
|
43
44
|
keymap: mergeChromeKeymap(opts.keymap),
|
|
44
|
-
// No conformanceFixture: the container
|
|
45
|
-
// never
|
|
45
|
+
// No conformanceFixture: the container's parser creates child 0, so a title-row leaf
|
|
46
|
+
// never comes out of a document parse on its own.
|
|
46
47
|
closure: {
|
|
47
48
|
roundTrip: {
|
|
48
49
|
mode: 'implemented',
|
|
@@ -60,7 +61,7 @@ export function registerChromeLeaf(kind, component, opts = {}) {
|
|
|
60
61
|
searchPaint: { mode: 'implemented', via: 'chrome raw scanned; matches painted as marks' },
|
|
61
62
|
reorder: {
|
|
62
63
|
mode: 'not-supported',
|
|
63
|
-
reason: 'reserved child 0
|
|
64
|
+
reason: 'reserved child 0: no independent block identity to move'
|
|
64
65
|
},
|
|
65
66
|
undo: { mode: 'inherit-default' },
|
|
66
67
|
clipboard: {
|
|
@@ -74,7 +75,7 @@ export function registerChromeLeaf(kind, component, opts = {}) {
|
|
|
74
75
|
}
|
|
75
76
|
});
|
|
76
77
|
registerBlockComponent(kind, defineBlockComponent(component, () => ({ blockClass: opts.blockClass })));
|
|
77
|
-
// Inline-only
|
|
78
|
-
//
|
|
78
|
+
// Inline-only, so `surfaceForcesInline` holds if a paste ever reaches the paste-target lookup:
|
|
79
|
+
// a second line of defense behind the check that already flattens title-row pastes.
|
|
79
80
|
registerPasteSurface({ kind, onInlinePaste: defaultInlineHook });
|
|
80
81
|
}
|