@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
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { AnyInlineKind, InlineNode } from '../../core/nodes';
|
|
8
8
|
import type { DocumentView } from '../../core/node-views';
|
|
9
|
-
import type {
|
|
9
|
+
import type { Reading } from '../../schema/reading';
|
|
10
10
|
export interface WidgetPoolAdapter<H> {
|
|
11
11
|
/** Build one instance, or null when it cannot be built (a caught mount throw). */
|
|
12
12
|
create(kind: AnyInlineKind, inline: InlineNode, source: string): H | null;
|
|
@@ -14,41 +14,32 @@ export interface WidgetPoolAdapter<H> {
|
|
|
14
14
|
element(handle: H): HTMLElement;
|
|
15
15
|
}
|
|
16
16
|
export interface WidgetPool {
|
|
17
|
-
/**
|
|
18
|
-
*
|
|
19
|
-
* pass; else build a new one. Render-pass only — every acquire sits inside a
|
|
20
|
-
* beginPass/sweep bracket. Key-only lookup cannot distinguish byte-identical
|
|
21
|
-
* duplicates, so an out-of-pass caller holding a specific element must restore it.
|
|
22
|
-
*/
|
|
17
|
+
/** Adopts the oldest unadopted instance for the key, else builds one; call only inside a
|
|
18
|
+
* beginPass/sweep bracket. Identical sources share a key, so a caller holding one restores it. */
|
|
23
19
|
acquire(kind: AnyInlineKind, inline: InlineNode, source: string): HTMLElement | null;
|
|
24
20
|
/** Open a rebuild pass: un-adopt every instance so this pass re-earns them. */
|
|
25
21
|
beginPass(): void;
|
|
26
22
|
/** Close a rebuild pass: destroy every instance not adopted in it. */
|
|
27
23
|
sweep(): void;
|
|
28
|
-
/** Destroy everything
|
|
24
|
+
/** Destroy everything, because the block is unmounting. */
|
|
29
25
|
dispose(): void;
|
|
30
26
|
}
|
|
31
27
|
export declare function createWidgetPool<H>(adapter: WidgetPoolAdapter<H>): WidgetPool;
|
|
32
|
-
/** The live channels a mounted widget reads beside its frozen `{ inline, source }`
|
|
33
|
-
*
|
|
28
|
+
/** The live channels a mounted widget reads beside its frozen `{ inline, source }` snapshot. All
|
|
29
|
+
* required, so no widget falls back to a value the editor does not hold. */
|
|
34
30
|
export interface SvelteWidgetPoolDeps {
|
|
35
|
-
/** A widget component's synchronous mount throw goes here (the editor's `error`
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
navigateTo?: (path: number[], offset?: number) => Promise<boolean>;
|
|
31
|
+
/** A widget component's synchronous mount throw goes here (the editor's `error` channel). */
|
|
32
|
+
reportError: (error: unknown) => void;
|
|
33
|
+
/** The editor's theme name, for a widget that draws its own colors where CSS cannot reach. */
|
|
34
|
+
getTheme: () => string;
|
|
35
|
+
getDocument: () => DocumentView | undefined;
|
|
36
|
+
getContentVersion: () => number;
|
|
37
|
+
/** The editor's navigation call, for a widget whose gesture jumps elsewhere in the document. */
|
|
38
|
+
navigateTo: (path: number[], offset?: number) => Promise<boolean>;
|
|
39
|
+
/** How the editor reads its bytes: a widget kind whose plugin it left out mounts nothing, and a
|
|
40
|
+
* mounted widget reads the mode and parses inline content through it. */
|
|
41
|
+
reading: Reading;
|
|
47
42
|
}
|
|
48
|
-
/**
|
|
49
|
-
*
|
|
50
|
-
|
|
51
|
-
* `{ inline, source }` snapshot as live props: reuse keys on `${kind} ${source}`, so an instance
|
|
52
|
-
* outlives a mode flip or an edit elsewhere that a frozen value would not.
|
|
53
|
-
*/
|
|
54
|
-
export declare function createSvelteWidgetPool(deps?: SvelteWidgetPoolDeps): WidgetPool;
|
|
43
|
+
/** A mount throw is reported and returns null, so the caller falls back to the raw span. The
|
|
44
|
+
* getters are live props beside the frozen snapshot, since a pooled instance outlives a mode switch. */
|
|
45
|
+
export declare function createSvelteWidgetPool(deps: SvelteWidgetPoolDeps): WidgetPool;
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* `${kind} ${source}`, and `mount`/`unmount` from 'svelte' stay contained here.
|
|
6
6
|
*/
|
|
7
7
|
import { mount, unmount } from 'svelte';
|
|
8
|
+
import { inlineReaderFor } from '../../core/inline';
|
|
8
9
|
import { getInlineWidgetComponent } from '../../core/inline/inline-widgets';
|
|
9
10
|
import { tracePoolPass } from '../../debug/interaction-trace';
|
|
10
11
|
import { assertInvariant } from '../../assert';
|
|
@@ -14,7 +15,7 @@ export function createWidgetPool(adapter) {
|
|
|
14
15
|
// two entries in one bucket, each adopted at most once per pass.
|
|
15
16
|
const buckets = new Map();
|
|
16
17
|
// The acquire bracket (see WidgetPool.acquire) held as explicit state so a
|
|
17
|
-
//
|
|
18
|
+
// mistake fails here instead of showing up later as a leaked widget (G1.25).
|
|
18
19
|
let passOpen = false;
|
|
19
20
|
// Per-pass adopt/build tallies for the interaction trace, recorded at sweep.
|
|
20
21
|
let passAdopt = 0;
|
|
@@ -38,7 +39,7 @@ export function createWidgetPool(adapter) {
|
|
|
38
39
|
reused.adopted = true;
|
|
39
40
|
passAdopt++;
|
|
40
41
|
// Source and rendered body are identical by key; only the widget's position
|
|
41
|
-
// may have shifted, so
|
|
42
|
+
// may have shifted, so write the offsets the cursor and selection read again.
|
|
42
43
|
const el = adapter.element(reused.handle);
|
|
43
44
|
el.dataset.sourceStart = String(inline.start);
|
|
44
45
|
el.dataset.sourceEnd = String(inline.end);
|
|
@@ -88,17 +89,14 @@ export function createWidgetPool(adapter) {
|
|
|
88
89
|
}
|
|
89
90
|
return { acquire, beginPass, sweep, dispose };
|
|
90
91
|
}
|
|
91
|
-
/**
|
|
92
|
-
*
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
*/
|
|
97
|
-
export function createSvelteWidgetPool(deps = {}) {
|
|
98
|
-
const { reportError, getPresentationMode, getTheme, getDocument, getContentVersion, navigateTo } = deps;
|
|
92
|
+
/** A mount throw is reported and returns null, so the caller falls back to the raw span. The
|
|
93
|
+
* getters are live props beside the frozen snapshot, since a pooled instance outlives a mode switch. */
|
|
94
|
+
export function createSvelteWidgetPool(deps) {
|
|
95
|
+
const { reportError, getTheme, getDocument, getContentVersion, navigateTo, reading } = deps;
|
|
96
|
+
const { grammar } = reading;
|
|
99
97
|
return createWidgetPool({
|
|
100
98
|
create(kind, inline, source) {
|
|
101
|
-
const component = getInlineWidgetComponent(kind);
|
|
99
|
+
const component = getInlineWidgetComponent(kind, grammar);
|
|
102
100
|
if (!component)
|
|
103
101
|
return null;
|
|
104
102
|
const wrapper = document.createElement('span');
|
|
@@ -112,17 +110,21 @@ export function createSvelteWidgetPool(deps = {}) {
|
|
|
112
110
|
props: {
|
|
113
111
|
inline,
|
|
114
112
|
source,
|
|
115
|
-
getPresentationMode,
|
|
113
|
+
getPresentationMode: reading.mode,
|
|
116
114
|
getTheme,
|
|
117
115
|
getDocument,
|
|
118
116
|
getContentVersion,
|
|
119
|
-
navigateTo
|
|
117
|
+
navigateTo,
|
|
118
|
+
// A getter, so a pooled widget's reader changes with the document's definitions.
|
|
119
|
+
get computeInlineContent() {
|
|
120
|
+
return inlineReaderFor(reading);
|
|
121
|
+
}
|
|
120
122
|
}
|
|
121
123
|
});
|
|
122
124
|
return { wrapper, instance };
|
|
123
125
|
}
|
|
124
126
|
catch (error) {
|
|
125
|
-
reportError
|
|
127
|
+
reportError(error);
|
|
126
128
|
return null;
|
|
127
129
|
}
|
|
128
130
|
},
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Built-in block component registrations,
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* `components/` rather than `schema/` so the schema layer keeps no downstream imports.
|
|
2
|
+
* Built-in block component registrations, run by an explicit `registerBuiltInBlocks()` call: a
|
|
3
|
+
* side-effect import could be dropped by a bundler, since `sideEffects` names only dist paths.
|
|
4
|
+
* Lives in `components/` so `schema/` imports nothing downstream.
|
|
6
5
|
*/
|
|
7
6
|
export declare function registerBuiltInBlocks(): void;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Built-in block component registrations,
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* `components/` rather than `schema/` so the schema layer keeps no downstream imports.
|
|
2
|
+
* Built-in block component registrations, run by an explicit `registerBuiltInBlocks()` call: a
|
|
3
|
+
* side-effect import could be dropped by a bundler, since `sideEffects` names only dist paths.
|
|
4
|
+
* Lives in `components/` so `schema/` imports nothing downstream.
|
|
6
5
|
*/
|
|
7
6
|
import { metadataOf } from '../core/nodes';
|
|
7
|
+
import { shownKind } from '../core/parsers/heading';
|
|
8
8
|
import { defineBlockComponent, registerBlockComponent } from '../schema/block-component-registry';
|
|
9
9
|
import { augmentBuiltin } from '../schema/block-kind-descriptor';
|
|
10
10
|
import { registerBuiltInDescriptors } from '../schema/built-in-descriptors';
|
|
@@ -24,20 +24,22 @@ import { tableCellPasteSurface } from './blocks/table/table-cell-paste';
|
|
|
24
24
|
import { tableCaretAtPoint } from './blocks/table/table-caret-at-point';
|
|
25
25
|
import { tableDragHitTest } from './blocks/table/table-drag-hit-test';
|
|
26
26
|
function headingExtraProps(node) {
|
|
27
|
+
if (shownKind(node) === 'paragraph')
|
|
28
|
+
return { blockClass: 'paragraph-block' };
|
|
27
29
|
const level = metadataOf(node, 'heading')?.level ?? 1;
|
|
28
30
|
return { blockClass: `heading-${level}` };
|
|
29
31
|
}
|
|
30
32
|
const textAsRawBlock = defineBlockComponent(TextEditableBlock, () => ({
|
|
31
33
|
blockClass: 'raw-block'
|
|
32
34
|
}));
|
|
33
|
-
//
|
|
34
|
-
//
|
|
35
|
+
// Stops a second call doing the work twice, without bypassing the registry: a
|
|
36
|
+
// dev-server re-evaluation resets it, so re-registering in dev still replaces.
|
|
35
37
|
let registered = false;
|
|
36
38
|
export function registerBuiltInBlocks() {
|
|
37
39
|
if (registered)
|
|
38
40
|
return;
|
|
39
41
|
registered = true;
|
|
40
|
-
// Descriptors first
|
|
42
|
+
// Descriptors first: augmentBuiltin('table') below needs `table` registered.
|
|
41
43
|
registerBuiltInDescriptors();
|
|
42
44
|
registerBlockComponent('paragraph', defineBlockComponent(TextEditableBlock, () => ({ blockClass: 'paragraph-block' })));
|
|
43
45
|
registerBlockComponent('heading', defineBlockComponent(TextEditableBlock, headingExtraProps));
|
|
@@ -47,21 +49,19 @@ export function registerBuiltInBlocks() {
|
|
|
47
49
|
registerBlockComponent('blockquote', defineBlockComponent(BlockquoteBlock));
|
|
48
50
|
registerBlockComponent('list', defineBlockComponent(ListBlock));
|
|
49
51
|
registerBlockComponent('table', defineBlockComponent(TableBlock));
|
|
50
|
-
//
|
|
51
|
-
// render inside TableBlock; these catch only
|
|
52
|
+
// Plain editable fallback for kinds with no rendered component. tableRow and tableCell
|
|
53
|
+
// render inside TableBlock; these catch only strays that reach BlockHost directly.
|
|
52
54
|
registerBlockComponent('indentedCode', textAsRawBlock);
|
|
53
55
|
registerBlockComponent('htmlBlock', textAsRawBlock);
|
|
54
56
|
registerBlockComponent('linkReferenceDefinition', textAsRawBlock);
|
|
55
57
|
registerBlockComponent('tableRow', textAsRawBlock);
|
|
56
58
|
registerBlockComponent('tableCell', textAsRawBlock);
|
|
57
59
|
registerBlockComponent('unrecognized', textAsRawBlock);
|
|
58
|
-
//
|
|
59
|
-
//
|
|
60
|
-
// would let ordering silently revert cell paste to the plain inline default.
|
|
60
|
+
// The default loop in `paste/hooks.ts` skips `tableCell`, so registration order cannot
|
|
61
|
+
// revert cell paste to the plain inline default.
|
|
61
62
|
registerPasteSurface(tableCellPasteSurface);
|
|
62
|
-
// Table owns cell addressing
|
|
63
|
-
//
|
|
64
|
-
// Two hooks: a drag needs the exact hit and its decline, a caret the nearest cell.
|
|
63
|
+
// Table owns cell addressing: a drag needs the exact hit or a refusal, a caret the nearest
|
|
64
|
+
// cell, and the selection code reaches both through the descriptor.
|
|
65
65
|
augmentBuiltin('table', {
|
|
66
66
|
foreignDragHitTest: tableDragHitTest,
|
|
67
67
|
caretTargetAtPoint: tableCaretAtPoint
|
|
@@ -69,9 +69,8 @@ export function registerBuiltInBlocks() {
|
|
|
69
69
|
// Image resize is editor-layer behavior, so the core image kind stays data-only
|
|
70
70
|
// and gains its selected-key handler here, where the render layer is reachable.
|
|
71
71
|
augmentInlineWidgetKind('image', { onSelectedKey: imageWidgetOnSelectedKey });
|
|
72
|
-
//
|
|
73
|
-
//
|
|
74
|
-
// layer fills them.
|
|
72
|
+
// These need the inline parser and render path, which `tree-operations` may not import, so
|
|
73
|
+
// they are filled in here.
|
|
75
74
|
registerLiveSplitRebalancer(rebalanceLiveSplit);
|
|
76
75
|
registerLiveJoinSeamCleaner(cleanLiveJoinSeam);
|
|
77
76
|
}
|
|
@@ -1,35 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The block drag handle's two
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* Presence: prose carries none. A paragraph, a heading, a quote and the note cards read as
|
|
6
|
-
* text on the page, and a grip beside every one of them is noise; the blocks that get one are
|
|
7
|
-
* the objects a reader picks up whole — pictures, code, tables, equations, diagrams, list
|
|
8
|
-
* items, dividers. A gripless block is still a reorder unit: keyboard reorder moves it and a
|
|
9
|
-
* dragged block still drops beside it.
|
|
2
|
+
* The block drag handle's two rules: which blocks get one (the objects a user picks up whole,
|
|
3
|
+
* never prose, as `schema/page-role.ts` tells them apart), and where it sits. A block without
|
|
4
|
+
* one still reorders by keyboard.
|
|
10
5
|
*/
|
|
11
6
|
import type { NodeView } from '../core/node-views';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
*
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
* Vertical centre of the grip. A one-line block centres on its row. A taller one takes the
|
|
21
|
-
* first line-height of its OWN box — not its first line of text, since a card pads above that
|
|
22
|
-
* and a grip level with the first code line hangs below the card's shoulder. A declared anchor
|
|
23
|
-
* SHORTER than a line is a marker to centre on instead (a wrapped task item's checkbox); a
|
|
24
|
-
* taller one is a card, and the band already covers it.
|
|
25
|
-
*/
|
|
7
|
+
import type { InlineReading } from '../core/inline/inline-cache';
|
|
8
|
+
/** A picture's handle ignores `blockDragHandles`, since dragging is the only pointer way to
|
|
9
|
+
* move one. The caller still checks reading mode. */
|
|
10
|
+
export declare function showsDragHandle(node: NodeView, handlesEnabled: boolean, reading: InlineReading): boolean;
|
|
11
|
+
/** A lone list item has no handle: its drag stays inside the list, with nothing to swap with. */
|
|
12
|
+
export declare function showsListItemDragHandle(itemCount: number, handlesEnabled: boolean): boolean;
|
|
13
|
+
/** Centres on a one-line block's row, else a marker-sized drag anchor, else the box's first
|
|
14
|
+
* line-height, since a card pads above its first line of text. */
|
|
26
15
|
export declare function dragHandleAnchorY(host: HTMLElement): number | null;
|
|
27
|
-
/**
|
|
28
|
-
*
|
|
29
|
-
* again on every pointerover inside its host, so it follows edits made while hovered.
|
|
30
|
-
*
|
|
31
|
-
* The mount placement is what makes the grip HITTABLE where it appears: it is its own hit
|
|
32
|
-
* target before any hover, so a target parked at the stylesheet's default while the grip would
|
|
33
|
-
* settle elsewhere is a target the pointer misses. One rAF-batched read per handle.
|
|
34
|
-
*/
|
|
16
|
+
/** Places the handle once the block has laid out, so it is clickable before any hover, and on
|
|
17
|
+
* each pointerover inside its host, so it follows edits made while hovered. */
|
|
35
18
|
export declare function alignDragHandle(handle: HTMLElement): (() => void) | void;
|
|
@@ -1,55 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The block drag handle's two
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* Presence: prose carries none. A paragraph, a heading, a quote and the note cards read as
|
|
6
|
-
* text on the page, and a grip beside every one of them is noise; the blocks that get one are
|
|
7
|
-
* the objects a reader picks up whole — pictures, code, tables, equations, diagrams, list
|
|
8
|
-
* items, dividers. A gripless block is still a reorder unit: keyboard reorder moves it and a
|
|
9
|
-
* dragged block still drops beside it.
|
|
2
|
+
* The block drag handle's two rules: which blocks get one (the objects a user picks up whole,
|
|
3
|
+
* never prose, as `schema/page-role.ts` tells them apart), and where it sits. A block without
|
|
4
|
+
* one still reorders by keyboard.
|
|
10
5
|
*/
|
|
6
|
+
import { isImageOnlyParagraph } from '../core/inline/picture';
|
|
7
|
+
import { blockPageRole } from '../schema/page-role';
|
|
11
8
|
import { BLOCK_CONTENT_SELECTOR, DRAG_ANCHOR_ATTR } from './block-content-selector';
|
|
12
|
-
/**
|
|
13
|
-
*
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
*/
|
|
17
|
-
const GRIPLESS_KINDS = new Set([
|
|
18
|
-
'paragraph',
|
|
19
|
-
'heading',
|
|
20
|
-
'blockquote',
|
|
21
|
-
'admonition',
|
|
22
|
-
'githubAlert',
|
|
23
|
-
'list'
|
|
24
|
-
]);
|
|
25
|
-
/**
|
|
26
|
-
* A paragraph holding nothing but images is a picture in the page, not prose: it reads as a
|
|
27
|
-
* block of its own and is exactly the thing a reader reaches to move. A false negative here
|
|
28
|
-
* (an alt with an escaped bracket, an image beside a word) is the plain no-grip paragraph.
|
|
29
|
-
*/
|
|
30
|
-
const IMAGE_ONLY_PARAGRAPH = /^\s*(?:!\[[^\]]*\](?:\([^)]*\)|\[[^\]]*\])\s*)+$/;
|
|
31
|
-
export function isImageOnlyParagraph(node) {
|
|
32
|
-
return node.kind === 'paragraph' && IMAGE_ONLY_PARAGRAPH.test(node.raw);
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* A picture's grip does NOT wait for `blockDragHandles`: dragging it is the only pointer road
|
|
36
|
-
* to move a picture, and unlike prose it is a discrete object a reader expects to pick up. The
|
|
37
|
-
* caller still gates reading mode, which shows no affordances at all.
|
|
38
|
-
*/
|
|
39
|
-
export function showsDragHandle(node, handlesEnabled) {
|
|
40
|
-
if (isImageOnlyParagraph(node))
|
|
9
|
+
/** A picture's handle ignores `blockDragHandles`, since dragging is the only pointer way to
|
|
10
|
+
* move one. The caller still checks reading mode. */
|
|
11
|
+
export function showsDragHandle(node, handlesEnabled, reading) {
|
|
12
|
+
if (isImageOnlyParagraph(node, reading))
|
|
41
13
|
return true;
|
|
42
|
-
return handlesEnabled &&
|
|
14
|
+
return handlesEnabled && blockPageRole(node, reading) === 'object';
|
|
15
|
+
}
|
|
16
|
+
/** A lone list item has no handle: its drag stays inside the list, with nothing to swap with. */
|
|
17
|
+
export function showsListItemDragHandle(itemCount, handlesEnabled) {
|
|
18
|
+
return handlesEnabled && itemCount > 1;
|
|
43
19
|
}
|
|
44
20
|
/** A box within this many line-heights holds one row of content, margins included. */
|
|
45
21
|
const SINGLE_LINE = 1.5;
|
|
46
|
-
/**
|
|
47
|
-
*
|
|
48
|
-
* first line-height of its OWN box — not its first line of text, since a card pads above that
|
|
49
|
-
* and a grip level with the first code line hangs below the card's shoulder. A declared anchor
|
|
50
|
-
* SHORTER than a line is a marker to centre on instead (a wrapped task item's checkbox); a
|
|
51
|
-
* taller one is a card, and the band already covers it.
|
|
52
|
-
*/
|
|
22
|
+
/** Centres on a one-line block's row, else a marker-sized drag anchor, else the box's first
|
|
23
|
+
* line-height, since a card pads above its first line of text. */
|
|
53
24
|
export function dragHandleAnchorY(host) {
|
|
54
25
|
const content = host.querySelector(BLOCK_CONTENT_SELECTOR);
|
|
55
26
|
if (!content)
|
|
@@ -57,13 +28,13 @@ export function dragHandleAnchorY(host) {
|
|
|
57
28
|
const hostRect = host.getBoundingClientRect();
|
|
58
29
|
const line = lineHeightOf(content);
|
|
59
30
|
const rect = paintedRect(content);
|
|
60
|
-
// A one-line block
|
|
61
|
-
//
|
|
31
|
+
// A one-line block is its own row, and the eye puts the handle level with it rather than
|
|
32
|
+
// a hair above the middle: a list item, a task row, a rule.
|
|
62
33
|
const box = rect.height <= line * SINGLE_LINE ? rect : (markerRect(content, line) ?? bandRect(rect, line));
|
|
63
34
|
if (!box || box.height === 0)
|
|
64
35
|
return null;
|
|
65
36
|
const y = box.top + box.height / 2 - hostRect.top;
|
|
66
|
-
// A box
|
|
37
|
+
// A box painted outside the host (a scrolled or offscreen region) places nothing.
|
|
67
38
|
return y >= 0 && y <= hostRect.height ? y : null;
|
|
68
39
|
}
|
|
69
40
|
function lineHeightOf(content) {
|
|
@@ -80,29 +51,20 @@ function markerRect(content, line) {
|
|
|
80
51
|
return null;
|
|
81
52
|
return rect.top - content.getBoundingClientRect().top > line ? null : rect;
|
|
82
53
|
}
|
|
83
|
-
/**
|
|
84
|
-
*
|
|
85
|
-
* (a picture in a paragraph), whose margin would otherwise seat the grip above the picture and
|
|
86
|
-
* flush with its corner.
|
|
87
|
-
*/
|
|
54
|
+
/** The content's box, unless it starts with a non-editable inline widget whose margin would
|
|
55
|
+
* put the handle above the picture. */
|
|
88
56
|
function paintedRect(content) {
|
|
89
57
|
const rect = content.getBoundingClientRect();
|
|
90
58
|
const widget = content.firstElementChild?.closest('[data-inline-widget]');
|
|
91
59
|
const widgetRect = widget?.getBoundingClientRect();
|
|
92
60
|
return widgetRect && widgetRect.height > 0 && widgetRect.top > rect.top ? widgetRect : rect;
|
|
93
61
|
}
|
|
94
|
-
/** The top line-height of a box; a box shorter than a line is
|
|
62
|
+
/** The top line-height of a box; a box shorter than a line is all of it. */
|
|
95
63
|
function bandRect(rect, line) {
|
|
96
64
|
return new DOMRect(rect.x, rect.y, rect.width, Math.min(line, rect.height));
|
|
97
65
|
}
|
|
98
|
-
/**
|
|
99
|
-
*
|
|
100
|
-
* again on every pointerover inside its host, so it follows edits made while hovered.
|
|
101
|
-
*
|
|
102
|
-
* The mount placement is what makes the grip HITTABLE where it appears: it is its own hit
|
|
103
|
-
* target before any hover, so a target parked at the stylesheet's default while the grip would
|
|
104
|
-
* settle elsewhere is a target the pointer misses. One rAF-batched read per handle.
|
|
105
|
-
*/
|
|
66
|
+
/** Places the handle once the block has laid out, so it is clickable before any hover, and on
|
|
67
|
+
* each pointerover inside its host, so it follows edits made while hovered. */
|
|
106
68
|
export function alignDragHandle(handle) {
|
|
107
69
|
const host = handle.parentElement;
|
|
108
70
|
if (!host)
|
|
@@ -110,7 +72,7 @@ export function alignDragHandle(handle) {
|
|
|
110
72
|
const grip = handle.firstElementChild;
|
|
111
73
|
if (!grip)
|
|
112
74
|
return;
|
|
113
|
-
// Inline `top` on the
|
|
75
|
+
// Inline `top` on the handle (pixels from the host's top to its centre; the stylesheet's
|
|
114
76
|
// translateY(-50%) does the centring) overrides the stylesheet's half-line default.
|
|
115
77
|
const place = () => {
|
|
116
78
|
const y = dragHandleAnchorY(host);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function registerEditorBuiltIns(): void;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The editor's own registrations (built-in blocks, code languages, context-menu rows), run before
|
|
3
|
+
* an editor mounts. They run as no plugin, so each belongs to the editor and survives the test
|
|
4
|
+
* reset even when a plugin's setup is the first thing to reach them.
|
|
5
|
+
*/
|
|
6
|
+
import { registerAsCore } from '../schema/plugin-install';
|
|
7
|
+
import { registerBuiltInBlocks } from './built-in-blocks';
|
|
8
|
+
import { bootstrapCodeLanguages } from './blocks/code/code-bootstrap';
|
|
9
|
+
import { registerDefaultContextActions } from './menu/default-context-actions';
|
|
10
|
+
export function registerEditorBuiltIns() {
|
|
11
|
+
registerAsCore(() => {
|
|
12
|
+
registerBuiltInBlocks();
|
|
13
|
+
bootstrapCodeLanguages();
|
|
14
|
+
registerDefaultContextActions();
|
|
15
|
+
});
|
|
16
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Editor-root clipboard routing: copy
|
|
3
|
-
* selection whose block
|
|
4
|
-
* dispatches at `document.body`, where no per-block
|
|
5
|
-
* the
|
|
2
|
+
* Editor-root clipboard routing: copy, cut and paste for an event that reached no block. A
|
|
3
|
+
* selection whose block holds no text position leaves the native selection empty, so Chromium
|
|
4
|
+
* dispatches at `document.body`, where no per-block listener sees it. The reading-mode checks
|
|
5
|
+
* live in the handlers each route calls into, not here.
|
|
6
6
|
*/
|
|
7
7
|
import type { BlockComponent } from '../block-component';
|
|
8
8
|
import type { DocumentGetter, PasteImageHook } from '../editor-keys';
|
|
@@ -13,8 +13,8 @@ export interface EditorRootClipboardDeps {
|
|
|
13
13
|
selection: SelectionState;
|
|
14
14
|
getDoc: DocumentGetter;
|
|
15
15
|
crossBlock: CrossBlockHandlers;
|
|
16
|
-
/** Required
|
|
17
|
-
*
|
|
16
|
+
/** Required but nullable, so this route cannot silently skip the image handling the
|
|
17
|
+
* blocks do; `undefined` means no hook. */
|
|
18
18
|
onPasteImage: PasteImageHook | undefined;
|
|
19
19
|
events: EditorEvents;
|
|
20
20
|
/** The block owning the selected inline widget, or null when none is selected. */
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Editor-root clipboard routing: copy
|
|
3
|
-
* selection whose block
|
|
4
|
-
* dispatches at `document.body`, where no per-block
|
|
5
|
-
* the
|
|
2
|
+
* Editor-root clipboard routing: copy, cut and paste for an event that reached no block. A
|
|
3
|
+
* selection whose block holds no text position leaves the native selection empty, so Chromium
|
|
4
|
+
* dispatches at `document.body`, where no per-block listener sees it. The reading-mode checks
|
|
5
|
+
* live in the handlers each route calls into, not here.
|
|
6
6
|
*/
|
|
7
7
|
import { claimsBodyChord } from '../active-editor';
|
|
8
8
|
import { emitClipboardError } from '../editor-events';
|
|
@@ -19,23 +19,15 @@ export function createEditorRootClipboard(deps) {
|
|
|
19
19
|
events: deps.events,
|
|
20
20
|
crossBlock: deps.crossBlock
|
|
21
21
|
});
|
|
22
|
-
/**
|
|
23
|
-
*
|
|
24
|
-
* Deliberately NOT "inside the root but not a block" — the search input and a
|
|
25
|
-
* host's header field are both inside and own their own clipboard. The body arm is
|
|
26
|
-
* claimant-scoped because the listener sees every editor on the page.
|
|
27
|
-
*/
|
|
22
|
+
/** On this root, or on the body with this instance holding the chord; the search input and a
|
|
23
|
+
* header field sit inside the root and keep their own clipboard. */
|
|
28
24
|
function landedNowhere(root, target) {
|
|
29
25
|
if (target === root)
|
|
30
26
|
return true;
|
|
31
27
|
return (target === null || target === root.ownerDocument.body) && claimsBodyChord(root);
|
|
32
28
|
}
|
|
33
|
-
/**
|
|
34
|
-
*
|
|
35
|
-
* receipt: every arm of their shared clipboard skeleton prevents before it writes, and the one
|
|
36
|
-
* arm that declines to native is a collapsed cell caret, which is neither state below. Order
|
|
37
|
-
* decides nothing — widget selection and cross-block selection clear each other.
|
|
38
|
-
*/
|
|
29
|
+
/** A block marks an event it handled with `defaultPrevented`. The two states cannot coexist,
|
|
30
|
+
* so their order does not matter. */
|
|
39
31
|
function targetOf(event, root) {
|
|
40
32
|
if (event.defaultPrevented)
|
|
41
33
|
return null;
|
|
@@ -75,28 +67,25 @@ export function createEditorRootClipboard(deps) {
|
|
|
75
67
|
void paste(event);
|
|
76
68
|
}
|
|
77
69
|
};
|
|
78
|
-
/**
|
|
79
|
-
*
|
|
80
|
-
* seam for a pure-image paste whenever the focus endpoint hosts no caret, and going
|
|
81
|
-
* straight to the cross-block arm discarded it for want of any `text/plain`.
|
|
82
|
-
*/
|
|
70
|
+
/** Images first, as a block does: an image-only paste has no `text/plain` for the
|
|
71
|
+
* cross-block branch to use. */
|
|
83
72
|
async function paste(event) {
|
|
84
|
-
// Read the range synchronously with the event, while the cross-block
|
|
85
|
-
// guarantees a selection
|
|
73
|
+
// Read the range synchronously with the event, while the cross-block handling still
|
|
74
|
+
// guarantees a selection: below the await, a read could only report nothing.
|
|
86
75
|
const rangeStartPath = deps.selection.start?.path.slice();
|
|
87
76
|
const images = imageArm.filesOf(event.clipboardData);
|
|
88
77
|
if (images.length === 0) {
|
|
89
78
|
await deps.crossBlock.handlePaste(event);
|
|
90
79
|
return;
|
|
91
80
|
}
|
|
92
|
-
// Prevent before awaiting the hook, as
|
|
93
|
-
//
|
|
81
|
+
// Prevent before awaiting the hook, as a block does: the browser's own paste would
|
|
82
|
+
// otherwise fire during the import and inject DOM the CST never sees.
|
|
94
83
|
event.preventDefault();
|
|
95
84
|
const markdown = await imageArm.run(event, images);
|
|
96
85
|
if (markdown === null)
|
|
97
86
|
return;
|
|
98
|
-
// The selection collapsed mid-import, leaving an imported asset and no caret
|
|
99
|
-
//
|
|
87
|
+
// The selection collapsed mid-import, leaving an imported asset and no caret: the one
|
|
88
|
+
// thing this route cannot supply, having no block to fall back on.
|
|
100
89
|
emitClipboardError(deps.events, {
|
|
101
90
|
error: new Error('imported image had no insertion point at the editor root; nothing inserted'),
|
|
102
91
|
...(rangeStartPath ? { path: rangeStartPath } : {})
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `source` prop's whole-document replacement. Every piece of per-document state resets here
|
|
3
|
+
* in one fixed order, so a swap cannot skip a step.
|
|
4
|
+
*/
|
|
5
|
+
import type { Document } from '../core/nodes';
|
|
6
|
+
import type { GrammarView } from '../schema/block-openers';
|
|
7
|
+
import { type LinkReferenceResolver } from '../core/inline/link-reference-resolver';
|
|
8
|
+
import type { CaretMemory } from '../cursor/caret-memory';
|
|
9
|
+
import type { LayoutState } from '../reactivity/layout-state.svelte';
|
|
10
|
+
import type { SelectionState } from '../selection/selection-state.svelte';
|
|
11
|
+
import type { UndoManager } from '../undo/types';
|
|
12
|
+
import type { EditorEvents } from '../editor-events';
|
|
13
|
+
import type { WidgetSelectionState } from './image/widget-selection-state.svelte';
|
|
14
|
+
export interface ParsedDocument {
|
|
15
|
+
doc: Document;
|
|
16
|
+
resolver: LinkReferenceResolver;
|
|
17
|
+
signature: string;
|
|
18
|
+
}
|
|
19
|
+
/** The parse every document goes through, at mount and at each swap, in the editor's grammar. */
|
|
20
|
+
export declare function initDocument(source: string, grammar: GrammarView): ParsedDocument;
|
|
21
|
+
export interface DocumentSwapDeps {
|
|
22
|
+
grammar: GrammarView;
|
|
23
|
+
/** A pending typing batch belongs to the outgoing document, so it flushes while its path
|
|
24
|
+
* still resolves; left running, the timer would apply note A's path to note B. */
|
|
25
|
+
flushDebouncedCheckpoint(): void;
|
|
26
|
+
/** Called before the tree changes, so a caret landing still waiting gives up. */
|
|
27
|
+
noteTreeSwap(): void;
|
|
28
|
+
/** Writes the tree into the `$state` root and re-keys its blocks. */
|
|
29
|
+
adoptDocument(doc: Document): void;
|
|
30
|
+
bumpContentVersion(): void;
|
|
31
|
+
clearBlockRefs(): void;
|
|
32
|
+
layout: Pick<LayoutState, 'forgetMeasuredHeights'>;
|
|
33
|
+
undoManager: Pick<UndoManager, 'clear'>;
|
|
34
|
+
caretMemory: Pick<CaretMemory, 'forget'>;
|
|
35
|
+
/** Every menu Editor owns acts on a block or bytes of the outgoing document; a block's own
|
|
36
|
+
* menus unmount with it. Closed before the blocks unmount, which a menu may react to. */
|
|
37
|
+
closeMenus(): void;
|
|
38
|
+
widgetSelection: Pick<WidgetSelectionState, 'clear'>;
|
|
39
|
+
selection: Pick<SelectionState, 'batch' | 'clear' | 'announceSelection'>;
|
|
40
|
+
/** Unconditional: the outgoing resolver closes over the swapped-out document. */
|
|
41
|
+
adoptLinkReferences(resolver: LinkReferenceResolver, signature: string): void;
|
|
42
|
+
events: Pick<EditorEvents, 'emit'>;
|
|
43
|
+
}
|
|
44
|
+
export interface DocumentSwap {
|
|
45
|
+
swapTo(source: string): void;
|
|
46
|
+
/** Counts whole-document replacements, which `editEpoch` cannot tell from a keystroke. */
|
|
47
|
+
generation(): number;
|
|
48
|
+
}
|
|
49
|
+
export declare function createDocumentSwap(deps: DocumentSwapDeps): DocumentSwap;
|