@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,85 +1,82 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { getContext, setContext } from 'svelte';
|
|
3
|
-
import type {
|
|
4
|
-
BlockEditActions,
|
|
5
|
-
ContainerEditActions,
|
|
6
|
-
FocusActions,
|
|
7
|
-
ListContext
|
|
8
|
-
} from '../../../action-contracts';
|
|
3
|
+
import type { ListContext } from '../../../action-contracts';
|
|
9
4
|
import type { BlockComponent } from '../../../block-component';
|
|
10
5
|
import type { NodeView } from '../../../core/node-views';
|
|
11
6
|
import {
|
|
12
|
-
BLOCK_EDIT_KEY,
|
|
13
|
-
CONTAINER_EDIT_KEY,
|
|
14
|
-
EDITOR_DOC_KEY,
|
|
15
7
|
EDITOR_POLICIES_KEY,
|
|
16
8
|
EDITOR_SERVICES_KEY,
|
|
17
|
-
FOCUS_KEY,
|
|
18
9
|
LIST_CONTEXT_KEY,
|
|
19
|
-
type EditorDoc,
|
|
20
10
|
type EditorPolicies,
|
|
21
11
|
type EditorServices
|
|
22
12
|
} from '../../../editor-keys';
|
|
23
13
|
import { metadataOf } from '../../../core/nodes';
|
|
24
14
|
import { hidesMarkers } from '../../../presentation-mode';
|
|
25
|
-
import { displayLength } from '../../../core/lines';
|
|
26
|
-
import { createBlockListState } from '../../../reactivity/block-list-state.svelte';
|
|
27
15
|
import { useContainerWindowing } from '../../../reactivity/use-container-windowing.svelte';
|
|
16
|
+
import { useMeasuredChild } from '../../../reactivity/use-measured-child.svelte';
|
|
28
17
|
import { useMountGauge } from '../../../perf/use-mount-gauge.svelte';
|
|
18
|
+
import { createContainerActions } from '../../../editor-actions/nested/container-actions';
|
|
19
|
+
import { createListItemOverrides } from '../../../editor-actions/list-overrides';
|
|
29
20
|
import {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
} from '../../../editor-actions/nested/nested-actions';
|
|
34
|
-
import { createContainerBlockComponent } from '../../../editor-actions/container-block-component';
|
|
21
|
+
createContainerBlockComponent,
|
|
22
|
+
dispatchContainerChord
|
|
23
|
+
} from '../../../editor-actions/container-block-component';
|
|
35
24
|
import { buildTaskItemAmbient } from './task-checkbox';
|
|
36
25
|
import BlockList from '../../BlockList.svelte';
|
|
37
26
|
import { publishRefSlot, type RefSlots } from '../../../reactivity/publish-ref.svelte';
|
|
38
|
-
import {
|
|
39
|
-
import { dispatchKindCommand } from '../../../schema/block-commands';
|
|
27
|
+
import type { ChildList } from '../../../reactivity/child-list';
|
|
40
28
|
import type { AnyCommandId } from '../../../schema/command-id';
|
|
41
29
|
import BlockDragHandle from '../../BlockDragHandle.svelte';
|
|
30
|
+
import SelectionOverlay from '../../SelectionOverlay.svelte';
|
|
42
31
|
import { showsListItemDragHandle } from '../../drag-handle';
|
|
32
|
+
import { useBlockDecorations } from '../../../decorations/use-block-decorations.svelte';
|
|
43
33
|
|
|
44
34
|
let {
|
|
45
35
|
node,
|
|
46
36
|
index,
|
|
37
|
+
id,
|
|
47
38
|
myPath = [],
|
|
48
39
|
itemCount,
|
|
49
40
|
slots
|
|
50
41
|
}: {
|
|
51
42
|
node: NodeView;
|
|
52
43
|
index: number;
|
|
44
|
+
id: string;
|
|
53
45
|
myPath?: number[];
|
|
54
46
|
/** How many items the enclosing list holds; a lone item has no sibling to reorder past. */
|
|
55
47
|
itemCount: number;
|
|
56
48
|
slots?: RefSlots<BlockComponent>;
|
|
57
49
|
} = $props();
|
|
58
50
|
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
const
|
|
62
|
-
const { stickyColumn, selection, registryView } = getContext<EditorServices>(EDITOR_SERVICES_KEY);
|
|
63
|
-
const {
|
|
64
|
-
keybindingOverrides,
|
|
65
|
-
blockDragHandles: getDragHandles,
|
|
66
|
-
presentationMode: getPresentationMode
|
|
67
|
-
} = getContext<EditorPolicies>(EDITOR_POLICIES_KEY);
|
|
68
|
-
const linkRef = getContext<EditorDoc | undefined>(EDITOR_DOC_KEY)?.linkRef;
|
|
51
|
+
const { selection, decorations, events, commands } =
|
|
52
|
+
getContext<EditorServices>(EDITOR_SERVICES_KEY);
|
|
53
|
+
const { blockDragHandles: getDragHandles } = getContext<EditorPolicies>(EDITOR_POLICIES_KEY);
|
|
69
54
|
|
|
70
55
|
const listContext = getContext<ListContext>(LIST_CONTEXT_KEY);
|
|
56
|
+
const {
|
|
57
|
+
state: listState,
|
|
58
|
+
parent: { blockEdit: parentBlockEdit },
|
|
59
|
+
reading
|
|
60
|
+
} = createContainerActions({
|
|
61
|
+
getNode: () => node,
|
|
62
|
+
getIndex: () => index,
|
|
63
|
+
getPath: () => myPath,
|
|
64
|
+
// The enclosing list's context, not the wrapped one this item provides.
|
|
65
|
+
overrides: ({ scope }) => createListItemOverrides({ scope, listContext }),
|
|
66
|
+
childList: () => childList
|
|
67
|
+
});
|
|
68
|
+
|
|
71
69
|
// $derived, not a mount-time snapshot: a runtime prop toggle must reach blocks
|
|
72
70
|
// that window in and out after the change, not just those mounted at mount.
|
|
73
|
-
const dragHandles = $derived(getDragHandles
|
|
74
|
-
//
|
|
75
|
-
//
|
|
76
|
-
// and simply shows nothing to grab.
|
|
71
|
+
const dragHandles = $derived(getDragHandles());
|
|
72
|
+
// A reorder needs a sibling, so a lone item shows no handle; it stays a reorder host, which
|
|
73
|
+
// costs nothing, since a dragged sibling never arrives.
|
|
77
74
|
const showsHandle = $derived(showsListItemDragHandle(itemCount, dragHandles));
|
|
78
|
-
const presentationMode = $derived(
|
|
75
|
+
const presentationMode = $derived(reading.mode());
|
|
79
76
|
const readOnly = $derived(presentationMode === 'reading');
|
|
80
77
|
|
|
81
|
-
// The marker-hiding CSS tells bullet
|
|
82
|
-
// span carries no such class. Absent in source, so that DOM
|
|
78
|
+
// The marker-hiding CSS tells a bullet from a number from a checkbox through this attribute,
|
|
79
|
+
// since the marker span carries no such class. Absent in source, so that DOM is unchanged.
|
|
83
80
|
const presentationMarkerKind = $derived.by(() => {
|
|
84
81
|
if (!hidesMarkers(presentationMode)) return undefined;
|
|
85
82
|
const meta = metadataOf(node, 'listItem');
|
|
@@ -87,27 +84,34 @@
|
|
|
87
84
|
return /^\d/.test(meta?.marker ?? '-') ? 'ordered' : 'bullet';
|
|
88
85
|
});
|
|
89
86
|
|
|
90
|
-
// Wrap getContainingItemIndex so a nested ListBlock inside this item sees
|
|
91
|
-
//
|
|
87
|
+
// Wrap `getContainingItemIndex` so a nested ListBlock inside this item sees this
|
|
88
|
+
// item's index in the outer list, which is what `promoteNestedItem` needs.
|
|
92
89
|
const wrappedListContext: ListContext = {
|
|
93
90
|
...listContext,
|
|
94
91
|
getContainingItemIndex: () => index
|
|
95
92
|
};
|
|
96
93
|
setContext(LIST_CONTEXT_KEY, wrappedListContext);
|
|
97
94
|
|
|
98
|
-
const listState = createBlockListState(() => node);
|
|
99
|
-
|
|
100
95
|
let boxEl: HTMLElement | undefined = $state();
|
|
101
96
|
let contentEl: HTMLElement | undefined = $state();
|
|
102
97
|
|
|
103
98
|
useMountGauge();
|
|
104
99
|
|
|
105
|
-
|
|
100
|
+
// The item renders no block host, so its own box carries the decorations addressed to it.
|
|
101
|
+
const blockDecorations = useBlockDecorations({
|
|
102
|
+
getPath: () => myPath,
|
|
103
|
+
getEl: () => boxEl ?? null,
|
|
104
|
+
engine: decorations,
|
|
105
|
+
onRenderError: (error) => events.emit('error', error)
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
// False on a plain item, so the chord that asked falls through.
|
|
109
|
+
function toggleTask(): boolean {
|
|
106
110
|
// Reading mode keeps checkboxes visible but inert: a toggle rewrites the
|
|
107
111
|
// document, and reading mode writes no bytes.
|
|
108
|
-
if (readOnly) return;
|
|
112
|
+
if (readOnly) return false;
|
|
109
113
|
const meta = metadataOf(node, 'listItem');
|
|
110
|
-
if (!meta?.taskItem) return;
|
|
114
|
+
if (!meta?.taskItem) return false;
|
|
111
115
|
|
|
112
116
|
if (selection?.isCrossBlock) {
|
|
113
117
|
selection.clear();
|
|
@@ -119,6 +123,7 @@
|
|
|
119
123
|
taskChecked: nextChecked,
|
|
120
124
|
taskMarker: nextMarker
|
|
121
125
|
});
|
|
126
|
+
return true;
|
|
122
127
|
}
|
|
123
128
|
|
|
124
129
|
const taskCheckedAttr = $derived.by(() => {
|
|
@@ -127,95 +132,43 @@
|
|
|
127
132
|
return meta.taskChecked ? 'true' : 'false';
|
|
128
133
|
});
|
|
129
134
|
|
|
130
|
-
const scope: NodeScope = {
|
|
131
|
-
get index() {
|
|
132
|
-
return index;
|
|
133
|
-
},
|
|
134
|
-
get node() {
|
|
135
|
-
return node;
|
|
136
|
-
},
|
|
137
|
-
get path() {
|
|
138
|
-
return myPath;
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
|
|
142
|
-
const bundle = createStandardNestedActions(
|
|
143
|
-
listState,
|
|
144
|
-
{
|
|
145
|
-
scope,
|
|
146
|
-
stickyColumn,
|
|
147
|
-
grammar: registryView.grammar,
|
|
148
|
-
getPresentationMode,
|
|
149
|
-
linkRef,
|
|
150
|
-
parent: {
|
|
151
|
-
blockEdit: parentBlockEdit,
|
|
152
|
-
focus: parentFocus,
|
|
153
|
-
containerEdit: parentContainerEdit
|
|
154
|
-
}
|
|
155
|
-
},
|
|
156
|
-
() => ({
|
|
157
|
-
blockEdit: {
|
|
158
|
-
splitBlock: async (innerIndex: number, offset: number): Promise<void> => {
|
|
159
|
-
if (!node.children) return;
|
|
160
|
-
|
|
161
|
-
// Enter-empty. Deliberately shallower than isItemUserEmpty — trailing
|
|
162
|
-
// structural children stay until exitListAtItem relocates them.
|
|
163
|
-
const firstChild = node.children[0];
|
|
164
|
-
const isEmptyItem = firstChild?.kind === 'paragraph' && firstChild.raw.trim() === '';
|
|
165
|
-
if (isEmptyItem) {
|
|
166
|
-
await listContext.exitListAtItem(index);
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
const lastChild = node.children[node.children.length - 1];
|
|
171
|
-
const isAtEnd =
|
|
172
|
-
innerIndex === node.children.length - 1 && offset >= displayLength(lastChild.raw);
|
|
173
|
-
|
|
174
|
-
if (isAtEnd) {
|
|
175
|
-
await listContext.insertItemAfter(index);
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
await listContext.splitItemAtOffset(index, innerIndex, offset);
|
|
180
|
-
}
|
|
181
|
-
// mergeWithPrevious at innerIndex <= 0 is the factory default — no override needed.
|
|
182
|
-
}
|
|
183
|
-
})
|
|
184
|
-
);
|
|
185
|
-
|
|
186
|
-
setNestedActionsContexts(bundle);
|
|
187
|
-
|
|
188
135
|
// ── Virtual rendering (nested windowing) ────────────────────────────
|
|
189
136
|
|
|
137
|
+
// An item renders no block host, so its own box is what the list measures. Before this item
|
|
138
|
+
// provides its own list below, whose channel would otherwise answer.
|
|
139
|
+
useMeasuredChild({
|
|
140
|
+
getId: () => id,
|
|
141
|
+
getPath: () => myPath,
|
|
142
|
+
getEl: () => boxEl ?? null,
|
|
143
|
+
getRaw: () => node.raw
|
|
144
|
+
});
|
|
145
|
+
|
|
190
146
|
const windowing = useContainerWindowing({
|
|
191
|
-
getIndex: () => index,
|
|
192
147
|
getParentPath: () => myPath,
|
|
193
148
|
getChildren: () => node.children ?? [],
|
|
194
149
|
getChildIds: () => listState.innerBlockIds,
|
|
195
|
-
// .block-list is a direct child of .list-item-content, reached through contentEl
|
|
196
|
-
getListEl: () => contentEl?.querySelector(':scope > .block-list') ?? null
|
|
197
|
-
// An item is NOT wrapped in a BlockHost; its own .list-item-block box is what the
|
|
198
|
-
// parent ListBlock's item-indexed sink expects (no competing leaf channel).
|
|
199
|
-
getOwnEl: () => boxEl ?? null,
|
|
200
|
-
provideLeafChannel: true
|
|
150
|
+
// .block-list is a direct child of .list-item-content, reached through `contentEl`.
|
|
151
|
+
getListEl: () => contentEl?.querySelector(':scope > .block-list') ?? null
|
|
201
152
|
});
|
|
202
153
|
|
|
154
|
+
const childList: ChildList = {
|
|
155
|
+
count: () => node.children?.length ?? 0,
|
|
156
|
+
refs: listState.refSlots,
|
|
157
|
+
windowing
|
|
158
|
+
};
|
|
159
|
+
|
|
203
160
|
// ── BlockComponent interface ────────────────────────────────────────
|
|
204
161
|
|
|
205
162
|
export const containerApi = createContainerBlockComponent({
|
|
206
163
|
selection,
|
|
164
|
+
reading,
|
|
207
165
|
get innerBlockRefs() {
|
|
208
166
|
return listState.innerBlockRefs;
|
|
209
167
|
},
|
|
210
|
-
|
|
211
|
-
get nodeChildrenLength() {
|
|
212
|
-
return node.children?.length ?? 0;
|
|
213
|
-
},
|
|
168
|
+
childList,
|
|
214
169
|
get node() {
|
|
215
170
|
return node;
|
|
216
|
-
}
|
|
217
|
-
revealChild: windowing.revealChild,
|
|
218
|
-
isInWindow: windowing.isInWindow
|
|
171
|
+
}
|
|
219
172
|
});
|
|
220
173
|
|
|
221
174
|
$effect(() => {
|
|
@@ -225,8 +178,8 @@
|
|
|
225
178
|
|
|
226
179
|
// ── Commands ────────────────────────────────────────────────────────
|
|
227
180
|
|
|
228
|
-
// Not
|
|
229
|
-
// this instance
|
|
181
|
+
// Not part of the BlockComponent interface, since the registered reference is
|
|
182
|
+
// `containerApi` rather than this instance; the handler below closes over it.
|
|
230
183
|
function runCommand(id: AnyCommandId): boolean {
|
|
231
184
|
switch (id) {
|
|
232
185
|
case 'list.indent':
|
|
@@ -235,40 +188,31 @@
|
|
|
235
188
|
case 'list.unindent':
|
|
236
189
|
listContext.unindentItem(index);
|
|
237
190
|
return true;
|
|
191
|
+
case 'list.toggleTask':
|
|
192
|
+
return toggleTask();
|
|
238
193
|
default:
|
|
239
194
|
return false;
|
|
240
195
|
}
|
|
241
196
|
}
|
|
242
197
|
|
|
243
|
-
// Tab
|
|
244
|
-
//
|
|
245
|
-
// preventDefaults only after an await, so a global tier here would re-fire undo/redo.
|
|
198
|
+
// Tab, Shift+Tab and Mod+Enter bubble up from the inner paragraph. Only kind commands run here:
|
|
199
|
+
// the paragraph has already dispatched the global ones, so undo would otherwise fire twice.
|
|
246
200
|
function handleKeydown(e: KeyboardEvent): void {
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
if (!
|
|
250
|
-
|
|
251
|
-
dispatchKindCommand(
|
|
252
|
-
chord,
|
|
253
|
-
{ kind: node.kind, runCommand },
|
|
254
|
-
{
|
|
255
|
-
getPresentationMode,
|
|
256
|
-
isCrossBlockRange: () => selection?.isCrossBlock ?? false,
|
|
257
|
-
// A container bubble carries no range command: the leaf below it owns the format ids.
|
|
258
|
-
crossBlockCommands: undefined
|
|
259
|
-
},
|
|
260
|
-
keybindingOverrides()
|
|
261
|
-
)
|
|
262
|
-
) {
|
|
263
|
-
e.preventDefault();
|
|
264
|
-
}
|
|
201
|
+
// A key a nested item declined is still that item's: the task toggle must not reach the
|
|
202
|
+
// task it sits in.
|
|
203
|
+
if (!(e.target instanceof Element) || e.target.closest('.list-item-block') !== boxEl) return;
|
|
204
|
+
dispatchContainerChord(e, { kind: node.kind, runCommand }, commands);
|
|
265
205
|
}
|
|
266
206
|
</script>
|
|
267
207
|
|
|
208
|
+
<!-- No `data-block-path` on the item box: a lookup by that attribute treats the match as a
|
|
209
|
+
block host, and the item renders none. -->
|
|
268
210
|
<div
|
|
269
|
-
class=
|
|
270
|
-
|
|
271
|
-
|
|
211
|
+
class={[
|
|
212
|
+
'list-item-block',
|
|
213
|
+
{ 'reorder-host': dragHandles, 'handle-host': showsHandle },
|
|
214
|
+
...blockDecorations.classes
|
|
215
|
+
]}
|
|
272
216
|
data-task-checked={taskCheckedAttr}
|
|
273
217
|
data-list-marker={presentationMarkerKind}
|
|
274
218
|
bind:this={boxEl}
|
|
@@ -284,9 +228,11 @@
|
|
|
284
228
|
ambientPrefixForFirst={buildTaskItemAmbient(metadataOf(node, 'listItem'), toggleTask)}
|
|
285
229
|
/>
|
|
286
230
|
</div>
|
|
287
|
-
<!--
|
|
288
|
-
|
|
289
|
-
|
|
231
|
+
<!-- The item paints its own selection box: it renders no BlockHost, so a range that
|
|
232
|
+
holds it whole has nothing else to draw one over its marker and its content. -->
|
|
233
|
+
<SelectionOverlay path={myPath} delegatesPainting />
|
|
234
|
+
<!-- A list item is the reorder unit, so its inner BlockList keeps `reorderable={false}` and
|
|
235
|
+
the paragraph inside gets no handle; a lone item shows none either. -->
|
|
290
236
|
{#if showsHandle}
|
|
291
237
|
<BlockDragHandle />
|
|
292
238
|
{/if}
|
|
@@ -299,7 +245,7 @@
|
|
|
299
245
|
align-items: flex-start;
|
|
300
246
|
}
|
|
301
247
|
|
|
302
|
-
/*
|
|
248
|
+
/* Showing it on hover is the shared `.handle-host` rule in BlockHost; it shows
|
|
303
249
|
only the innermost hovered unit, so a sub-item's hover never lights the parent. */
|
|
304
250
|
|
|
305
251
|
.list-item-content {
|
|
@@ -328,6 +274,6 @@
|
|
|
328
274
|
> :global(.block-list)
|
|
329
275
|
> :global(.block-host:first-child)
|
|
330
276
|
> :global(:not(.list-block)) {
|
|
331
|
-
color: var(--syntax-task-done,
|
|
277
|
+
color: var(--syntax-task-done, #8f8f89);
|
|
332
278
|
}
|
|
333
279
|
</style>
|
|
@@ -4,6 +4,7 @@ import { type RefSlots } from '../../../reactivity/publish-ref.svelte';
|
|
|
4
4
|
type $$ComponentProps = {
|
|
5
5
|
node: NodeView;
|
|
6
6
|
index: number;
|
|
7
|
+
id: string;
|
|
7
8
|
myPath?: number[];
|
|
8
9
|
/** How many items the enclosing list holds; a lone item has no sibling to reorder past. */
|
|
9
10
|
itemCount: number;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { AmbientPrefix } from '../../../block-component';
|
|
2
2
|
import type { ListItemMetadata } from '../../../core/nodes';
|
|
3
|
-
/** Matches the `.task-checkbox`
|
|
4
|
-
|
|
3
|
+
/** Matches the `.task-checkbox` width and gap in editor.css, which sets `--md-task-indent` to
|
|
4
|
+
* follow the drawn marker in each mode; the fallback is the width source mode draws. */
|
|
5
|
+
export declare const TASK_HANGING_INDENT = "var(--md-task-indent, 2.1em)";
|
|
6
|
+
/** Whether a block's container marker prefix draws a task box, making the block the to-do's text. */
|
|
7
|
+
export declare function ambientHoldsTaskBox(prefix: AmbientPrefix): boolean;
|
|
5
8
|
export declare function buildTaskItemAmbient(metadata: ListItemMetadata | undefined, onToggle: () => void): AmbientPrefix;
|
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
import { devWarn } from '../../../dev-warn';
|
|
2
|
-
/** Matches the `.task-checkbox`
|
|
3
|
-
|
|
2
|
+
/** Matches the `.task-checkbox` width and gap in editor.css, which sets `--md-task-indent` to
|
|
3
|
+
* follow the drawn marker in each mode; the fallback is the width source mode draws. */
|
|
4
|
+
export const TASK_HANGING_INDENT = 'var(--md-task-indent, 2.1em)';
|
|
4
5
|
function isTaskMarkerChecked(taskMarker) {
|
|
5
6
|
const c = taskMarker[1];
|
|
6
7
|
return c === 'x' || c === 'X';
|
|
7
8
|
}
|
|
9
|
+
/** Whether a block's container marker prefix draws a task box, making the block the to-do's text. */
|
|
10
|
+
export function ambientHoldsTaskBox(prefix) {
|
|
11
|
+
return typeof prefix !== 'string' && !!prefix.interactive?.some((r) => r.role === 'checkbox');
|
|
12
|
+
}
|
|
8
13
|
export function buildTaskItemAmbient(metadata, onToggle) {
|
|
9
14
|
const listMarker = metadata?.marker ?? '- ';
|
|
10
15
|
const taskMarkerPresent = metadata?.taskMarker != null;
|
|
11
16
|
if (metadata && metadata.taskItem !== taskMarkerPresent) {
|
|
12
|
-
devWarn('ListItemBlock', 'taskItem / taskMarker inconsistent
|
|
17
|
+
devWarn('ListItemBlock', 'taskItem / taskMarker inconsistent, rendering as plain list item', {
|
|
13
18
|
taskItem: metadata.taskItem,
|
|
14
19
|
taskMarker: metadata.taskMarker
|
|
15
20
|
});
|
|
@@ -26,17 +31,17 @@ export function buildTaskItemAmbient(metadata, onToggle) {
|
|
|
26
31
|
end: boxStart + 3,
|
|
27
32
|
className: 'task-checkbox',
|
|
28
33
|
role: 'checkbox',
|
|
29
|
-
//
|
|
34
|
+
// Read from the marker already in the render key, not a second checked field.
|
|
30
35
|
ariaChecked: isTaskMarkerChecked(metadata.taskMarker),
|
|
31
|
-
// The
|
|
36
|
+
// The drawn box is taller than the text beside it, so it centres on the box.
|
|
32
37
|
dragAnchor: true,
|
|
33
38
|
onClick: onToggle
|
|
34
39
|
},
|
|
35
|
-
// The list marker gets a span of its own so the rendered modes can collapse
|
|
40
|
+
// The list marker gets a span of its own so the rendered modes can collapse it:
|
|
36
41
|
// GitHub draws the box at the margin, not indented under a bullet that is not there.
|
|
37
42
|
{ start: 0, end: boxStart, className: 'task-list-marker', onClick: () => { } }
|
|
38
43
|
],
|
|
39
|
-
// The
|
|
44
|
+
// The drawn box (editor.css): its width, the gap, and the marker's trailing space.
|
|
40
45
|
indent: TASK_HANGING_INDENT
|
|
41
46
|
};
|
|
42
47
|
}
|
|
@@ -1,21 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
* `editable-leaf` seam: with no ambient marker and no inline widgets, DOM-text space
|
|
4
|
-
* IS raw space, so the brand mint happens once here rather than at each surface.
|
|
5
|
-
* Surfaces with an ambient marker (TextEditableBlock) use the ambient IO instead.
|
|
6
|
-
*/
|
|
7
|
-
import type { CursorBackend } from './editable-surface';
|
|
8
|
-
import { type RawOffset } from '../../cursor/coordinate-spaces';
|
|
9
|
-
export interface ContentOffsetBackend {
|
|
10
|
-
backend: CursorBackend;
|
|
11
|
-
getFocusOffset: () => RawOffset | null;
|
|
12
|
-
getTextLen: () => number;
|
|
13
|
-
readText: () => string;
|
|
14
|
-
}
|
|
15
|
-
export declare function createContentOffsetBackend(getEl: () => HTMLElement | null): ContentOffsetBackend;
|
|
16
|
-
/**
|
|
17
|
-
* Chromium with `white-space: pre` won't paint a caret on the line after a trailing
|
|
18
|
-
* `\n` unless something follows it. A `<br>` anchors it without touching `textContent`
|
|
19
|
-
* (BR has empty textContent, so `textContent === trimTrailingLineEnding(raw)` holds).
|
|
20
|
-
*/
|
|
1
|
+
/** Chromium with `white-space: pre` paints no caret on the line after a trailing `\n` unless
|
|
2
|
+
* something follows; a `<br>` anchors it without touching `textContent`. */
|
|
21
3
|
export declare function anchorTrailingNewline(el: HTMLElement): void;
|
|
4
|
+
/** The DOM text of a block whose text is its raw. */
|
|
5
|
+
export declare function plainTextOf(el: HTMLElement | null | undefined): string;
|
|
@@ -1,47 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
*
|
|
5
|
-
* Surfaces with an ambient marker (TextEditableBlock) use the ambient IO instead.
|
|
6
|
-
*/
|
|
7
|
-
import { asDomTextOffset, asRawOffset } from '../../cursor/coordinate-spaces';
|
|
8
|
-
import { createRangeFromOffsets, setCursorOffset, getCursorOffset, getSelectionFocusOffset } from '../../cursor/content-offsets';
|
|
9
|
-
export function createContentOffsetBackend(getEl) {
|
|
10
|
-
return {
|
|
11
|
-
backend: {
|
|
12
|
-
getRaw: () => {
|
|
13
|
-
const el = getEl();
|
|
14
|
-
const offset = el ? getCursorOffset(el) : null;
|
|
15
|
-
return offset === null ? null : asRawOffset(offset);
|
|
16
|
-
},
|
|
17
|
-
setRaw: (offset) => {
|
|
18
|
-
const el = getEl();
|
|
19
|
-
if (el)
|
|
20
|
-
setCursorOffset(el, asDomTextOffset(offset));
|
|
21
|
-
},
|
|
22
|
-
buildRange: (start, end) => {
|
|
23
|
-
const el = getEl();
|
|
24
|
-
return el ? createRangeFromOffsets(el, asDomTextOffset(start), asDomTextOffset(end)) : null;
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
getFocusOffset: () => {
|
|
28
|
-
const el = getEl();
|
|
29
|
-
const offset = el ? getSelectionFocusOffset(el) : null;
|
|
30
|
-
return offset === null ? null : asRawOffset(offset);
|
|
31
|
-
},
|
|
32
|
-
getTextLen: () => (getEl()?.textContent ?? '').length,
|
|
33
|
-
readText: () => getEl()?.textContent ?? ''
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Chromium with `white-space: pre` won't paint a caret on the line after a trailing
|
|
38
|
-
* `\n` unless something follows it. A `<br>` anchors it without touching `textContent`
|
|
39
|
-
* (BR has empty textContent, so `textContent === trimTrailingLineEnding(raw)` holds).
|
|
40
|
-
*/
|
|
1
|
+
// Helpers for the blocks whose DOM text is their raw: a code block and a plugin leaf.
|
|
2
|
+
import { createCaretAnchor } from '../../cursor/widget-offset';
|
|
3
|
+
/** Chromium with `white-space: pre` paints no caret on the line after a trailing `\n` unless
|
|
4
|
+
* something follows; a `<br>` anchors it without touching `textContent`. */
|
|
41
5
|
export function anchorTrailingNewline(el) {
|
|
42
6
|
if (!el.textContent?.endsWith('\n'))
|
|
43
7
|
return;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
8
|
+
el.appendChild(createCaretAnchor());
|
|
9
|
+
}
|
|
10
|
+
/** The DOM text of a block whose text is its raw. */
|
|
11
|
+
export function plainTextOf(el) {
|
|
12
|
+
return el?.textContent ?? '';
|
|
47
13
|
}
|
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The context wiring every editable-block component
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* `createEditableSurface` itself stays context-free (the jsdom harness constructs it bare).
|
|
2
|
+
* The context wiring every editable-block component shares: the common `EditableSurfaceDeps`
|
|
3
|
+
* fields, chord dispatch through the editor's command context, and the focus-away teardown.
|
|
4
|
+
* Call it during component init, since it reads `getContext`.
|
|
6
5
|
*/
|
|
7
6
|
import { type KindCommandTarget } from '../../schema/block-commands';
|
|
8
7
|
import type { AnyBlockKind } from '../../core/nodes';
|
|
9
8
|
import type { AnyCommandId } from '../../schema/command-id';
|
|
10
9
|
import type { EditableSurfaceDeps } from './editable-surface';
|
|
11
|
-
/** The context
|
|
12
|
-
export type SharedSurfaceDeps = Pick<EditableSurfaceDeps, 'selection' | 'getDoc' | 'getBlockElByPath' | 'focusActions' | 'getEditorRoot' | 'getScrollHost' | '
|
|
10
|
+
/** The context half of `EditableSurfaceDeps`: the fields every block passes through unchanged. */
|
|
11
|
+
export type SharedSurfaceDeps = Pick<EditableSurfaceDeps, 'selection' | 'getDoc' | 'getBlockElByPath' | 'focusActions' | 'caretLanding' | 'getEditorRoot' | 'getScrollHost' | 'scrollOwner' | 'getEditorLifetime' | 'caretMemory' | 'blockEdit' | 'controller' | 'history' | 'pasteCoordinator' | 'activePlugins' | 'events' | 'selectedWidget' | 'reading' | 'commands'>;
|
|
13
12
|
export interface SurfaceWiring {
|
|
14
|
-
/** Spread first into `createEditableSurface`; per-
|
|
13
|
+
/** Spread first into `createEditableSurface`; per-block fields follow and may override. */
|
|
15
14
|
deps: SharedSurfaceDeps;
|
|
16
|
-
/** Resolve a chord at `target` through the
|
|
15
|
+
/** Resolve a chord at `target` through the editor's command context; consumes a handled event. */
|
|
17
16
|
dispatchChord(e: KeyboardEvent, target: KindCommandTarget): boolean;
|
|
18
|
-
/** The command a
|
|
17
|
+
/** The command a keypress names at `kind`, overrides included, without running it. */
|
|
19
18
|
resolveChord(e: KeyboardEvent, kind: AnyBlockKind): AnyCommandId | null;
|
|
20
19
|
}
|
|
21
20
|
export declare function wireSurfaceContexts(): SurfaceWiring;
|
|
@@ -1,68 +1,49 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The context wiring every editable-block component
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* `createEditableSurface` itself stays context-free (the jsdom harness constructs it bare).
|
|
2
|
+
* The context wiring every editable-block component shares: the common `EditableSurfaceDeps`
|
|
3
|
+
* fields, chord dispatch through the editor's command context, and the focus-away teardown.
|
|
4
|
+
* Call it during component init, since it reads `getContext`.
|
|
6
5
|
*/
|
|
7
6
|
import { getContext } from 'svelte';
|
|
8
|
-
import { BLOCK_EDIT_KEY, EDITOR_DOC_KEY,
|
|
9
|
-
import { emitCommandError } from '../../editor-events';
|
|
7
|
+
import { BLOCK_EDIT_KEY, EDITOR_DOC_KEY, EDITOR_SERVICES_KEY, FOCUS_KEY, HISTORY_KEY } from '../../editor-keys';
|
|
10
8
|
import { eventToChord } from '../../schema/keybindings';
|
|
11
9
|
import { dispatchKeyCommand } from '../../schema/block-commands';
|
|
12
|
-
import {
|
|
10
|
+
import { commandForKey } from '../../schema/commands';
|
|
13
11
|
import { parkFocusOnEditorRoot } from '../../selection/native-bridge';
|
|
14
12
|
export function wireSurfaceContexts() {
|
|
15
13
|
const blockEdit = getContext(BLOCK_EDIT_KEY);
|
|
16
14
|
const focusActions = getContext(FOCUS_KEY);
|
|
17
15
|
const history = getContext(HISTORY_KEY);
|
|
18
|
-
const { controller,
|
|
19
|
-
const {
|
|
20
|
-
const { blockElLookup: getBlockElByPath, doc: getDoc, editorRoot: getEditorRoot, scrollHost: getScrollHost, lifetime: editorLifetime, pluginEditor, linkRef } = getContext(EDITOR_DOC_KEY);
|
|
16
|
+
const { controller, caretLanding, pasteCoordinator, caretMemory, selection, activePlugins, events, commands, selectedWidget, scrollOwner } = getContext(EDITOR_SERVICES_KEY);
|
|
17
|
+
const { blockElLookup: getBlockElByPath, doc: getDoc, editorRoot: getEditorRoot, scrollHost: getScrollHost, lifetime: editorLifetime, reading } = getContext(EDITOR_DOC_KEY);
|
|
21
18
|
const deps = {
|
|
22
19
|
selection,
|
|
23
20
|
getDoc,
|
|
24
21
|
getBlockElByPath,
|
|
25
22
|
focusActions,
|
|
23
|
+
caretLanding,
|
|
26
24
|
getEditorRoot,
|
|
27
25
|
getScrollHost,
|
|
26
|
+
scrollOwner,
|
|
28
27
|
getEditorLifetime: () => editorLifetime ?? null,
|
|
29
|
-
|
|
30
|
-
edgeAffinity,
|
|
28
|
+
caretMemory,
|
|
31
29
|
blockEdit,
|
|
32
30
|
controller,
|
|
33
31
|
history,
|
|
34
|
-
pluginEditor,
|
|
35
|
-
getKeybindingOverrides: keybindingOverrides,
|
|
36
32
|
pasteCoordinator,
|
|
37
|
-
grammar: registryView.grammar,
|
|
38
33
|
activePlugins,
|
|
39
34
|
events,
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
35
|
+
selectedWidget,
|
|
36
|
+
reading,
|
|
37
|
+
commands
|
|
43
38
|
};
|
|
44
39
|
const dispatchChord = (e, target) => {
|
|
45
40
|
const chord = eventToChord(e);
|
|
46
|
-
if (!chord ||
|
|
47
|
-
!dispatchKeyCommand(chord, target, {
|
|
48
|
-
history,
|
|
49
|
-
pluginEditor,
|
|
50
|
-
activation: activePlugins,
|
|
51
|
-
getPresentationMode,
|
|
52
|
-
isCrossBlockRange: () => selection.isCrossBlock,
|
|
53
|
-
crossBlockCommands: crossBlockCommands
|
|
54
|
-
}, keybindingOverrides(), deps.onCommandError)) {
|
|
41
|
+
if (!chord || !dispatchKeyCommand(chord, target, commands))
|
|
55
42
|
return false;
|
|
56
|
-
}
|
|
57
43
|
e.preventDefault();
|
|
58
44
|
return true;
|
|
59
45
|
};
|
|
60
|
-
const resolveChord = (e, kind) =>
|
|
61
|
-
const chord = eventToChord(e);
|
|
62
|
-
if (!chord)
|
|
63
|
-
return null;
|
|
64
|
-
return resolveBinding(chord, kind, keybindingOverrides(), activePlugins)?.command ?? null;
|
|
65
|
-
};
|
|
46
|
+
const resolveChord = (e, kind) => commandForKey(e, kind, commands);
|
|
66
47
|
return { deps, dispatchChord, resolveChord };
|
|
67
48
|
}
|
|
68
49
|
// Windowed out while focused: hand focus to the editor root so the next keystroke
|