@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
package/dist/block-id.js
CHANGED
|
@@ -1,30 +1,41 @@
|
|
|
1
1
|
// A per-module-instance prefix: a dev-server reload restarts the counter while the live tree
|
|
2
|
-
// still holds ids
|
|
2
|
+
// still holds ids created before it, and a repeat collides in Svelte's keyed each.
|
|
3
3
|
const RUN = Math.random().toString(36).slice(2, 8);
|
|
4
4
|
let sequence = 0;
|
|
5
|
-
/**
|
|
6
|
-
* These ids key Svelte's `{#each}`: process uniqueness, not unguessability. `crypto.randomUUID`
|
|
7
|
-
* answers a question nobody asked here, at a per-block cost a large load pays in full
|
|
8
|
-
* (`performance.md`), and is secure-context-only besides.
|
|
9
|
-
*/
|
|
5
|
+
/** Keys for Svelte's `{#each}`: unique within the process and cheap per block, not unguessable. */
|
|
10
6
|
export function generateBlockId() {
|
|
11
7
|
sequence += 1;
|
|
12
8
|
return `b${RUN}-${sequence}`;
|
|
13
9
|
}
|
|
14
|
-
//
|
|
15
|
-
//
|
|
16
|
-
// rather than mapped, so a `$state` children array costs one proxy read instead of one per slot.
|
|
10
|
+
// `childIds` is the one field safe to write even on a node an undo snapshot shares. Sized from
|
|
11
|
+
// `length`, so a `$state` array costs one proxy read, not one per child.
|
|
17
12
|
export function assignIds(children) {
|
|
18
13
|
const ids = new Array(children.length);
|
|
19
14
|
for (let i = 0; i < ids.length; i++)
|
|
20
15
|
ids[i] = generateBlockId();
|
|
21
16
|
return ids;
|
|
22
17
|
}
|
|
23
|
-
/**
|
|
24
|
-
*
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
18
|
+
/** Ids for `next`, a re-read of `previous`: an unchanged run at either end keeps its ids, the first
|
|
19
|
+
* changed block keeps its own (the edit was in it), and each block the re-read made is new. */
|
|
20
|
+
export function idsAcrossReread(previous, ids, next) {
|
|
21
|
+
if (!ids || ids.length !== previous.length)
|
|
22
|
+
return undefined;
|
|
23
|
+
const same = (a, b) => a.kind === b.kind && a.leadingTrivia === b.leadingTrivia && a.raw === b.raw;
|
|
24
|
+
const shorter = Math.min(previous.length, next.length);
|
|
25
|
+
let head = 0;
|
|
26
|
+
while (head < shorter && same(previous[head], next[head]))
|
|
27
|
+
head++;
|
|
28
|
+
let tail = 0;
|
|
29
|
+
while (tail < shorter - head &&
|
|
30
|
+
same(previous[previous.length - 1 - tail], next[next.length - 1 - tail])) {
|
|
31
|
+
tail++;
|
|
32
|
+
}
|
|
33
|
+
const changed = previous.length - head - tail;
|
|
34
|
+
const created = Array.from({ length: next.length - head - tail }, (_, i) => i === 0 && changed > 0 ? ids[head] : generateBlockId());
|
|
35
|
+
return [...ids.slice(0, head), ...created, ...ids.slice(previous.length - tail)];
|
|
36
|
+
}
|
|
37
|
+
/** Call before a freshly parsed subtree is spliced in: a reused container reads `childIds` in its
|
|
38
|
+
* keyed each synchronously, so a missing array shows up as `undefined` keys. */
|
|
28
39
|
export function assignChildIdsDeep(node) {
|
|
29
40
|
if (node.children && node.children.length > 0 && !node.childIds) {
|
|
30
41
|
node.childIds = assignIds(node.children);
|
package/dist/bounded-memo.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* A
|
|
3
|
-
* renderer builds on (see the plugin guide's renderer recipe). Async
|
|
4
|
-
* the caller stores the Promise, so
|
|
5
|
-
* cached
|
|
6
|
-
* holding a live DOM node, which cannot
|
|
2
|
+
* A size-limited cache that evicts the least recently used entry, for expensive render work;
|
|
3
|
+
* what a plugin renderer builds its cache on (see the plugin guide's renderer recipe). Async
|
|
4
|
+
* needs no separate version: the caller stores the Promise, so a render in progress is shared
|
|
5
|
+
* and a rejection is cached as is. `cloneOnRead` covers the one case a plain cache cannot: a
|
|
6
|
+
* value holding a live DOM node, which cannot be in two places at once.
|
|
7
7
|
*/
|
|
8
8
|
export interface BoundedMemoOptions<V> {
|
|
9
9
|
/** Maximum live entries; the least-recently-used is evicted past it. */
|
package/dist/bounded-memo.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* A
|
|
3
|
-
* renderer builds on (see the plugin guide's renderer recipe). Async
|
|
4
|
-
* the caller stores the Promise, so
|
|
5
|
-
* cached
|
|
6
|
-
* holding a live DOM node, which cannot
|
|
2
|
+
* A size-limited cache that evicts the least recently used entry, for expensive render work;
|
|
3
|
+
* what a plugin renderer builds its cache on (see the plugin guide's renderer recipe). Async
|
|
4
|
+
* needs no separate version: the caller stores the Promise, so a render in progress is shared
|
|
5
|
+
* and a rejection is cached as is. `cloneOnRead` covers the one case a plain cache cannot: a
|
|
6
|
+
* value holding a live DOM node, which cannot be in two places at once.
|
|
7
7
|
*/
|
|
8
8
|
import { devWarn } from './dev-warn';
|
|
9
9
|
export function createBoundedMemo(options) {
|
|
@@ -11,7 +11,7 @@ export function createBoundedMemo(options) {
|
|
|
11
11
|
// Reported at creation, not per read: a non-positive cap would otherwise behave as 1
|
|
12
12
|
// unnoticed, so the author who meant "no caching" gets caching with nothing to read.
|
|
13
13
|
if (options.cap < 1) {
|
|
14
|
-
devWarn('bounded-memo', `cap must be at least 1; got ${options.cap}
|
|
14
|
+
devWarn('bounded-memo', `cap must be at least 1; got ${options.cap}, using 1`);
|
|
15
15
|
}
|
|
16
16
|
const cap = Math.max(1, options.cap);
|
|
17
17
|
const cache = new Map();
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
import { alignDragHandle } from './drag-handle';
|
|
5
5
|
</script>
|
|
6
6
|
|
|
7
|
-
<!--
|
|
8
|
-
|
|
7
|
+
<!-- Hidden from assistive tech and the tab order: keyboard reorder (Alt+Arrow) is the
|
|
8
|
+
accessible path. -->
|
|
9
9
|
<span
|
|
10
10
|
class="block-drag-handle"
|
|
11
11
|
aria-hidden="true"
|
|
@@ -18,16 +18,12 @@
|
|
|
18
18
|
<style>
|
|
19
19
|
.block-drag-handle {
|
|
20
20
|
position: absolute;
|
|
21
|
-
/*
|
|
22
|
-
border instead of being clipped behind it (overflow-x:auto). */
|
|
21
|
+
/* In the editor's left padding, so the block's `overflow-x: auto` cannot clip it. */
|
|
23
22
|
left: -1.25rem;
|
|
24
|
-
/*
|
|
25
|
-
|
|
26
|
-
pointer-events:none once hidden — strand it. Stopping AT content-left keeps
|
|
27
|
-
line-start caret/marker clicks from being hijacked into a drag. */
|
|
23
|
+
/* Reaches the content's left edge, so a pointer moving out of the block never crosses a
|
|
24
|
+
gap that would hide the handle, and stops there so the first character stays clickable. */
|
|
28
25
|
width: 1.25rem;
|
|
29
|
-
/*
|
|
30
|
-
grip sits on the block's first line. */
|
|
26
|
+
/* A full-height strip; the visible handle sits on the block's first line. */
|
|
31
27
|
top: 0;
|
|
32
28
|
bottom: 0;
|
|
33
29
|
opacity: 0;
|
|
@@ -37,17 +33,15 @@
|
|
|
37
33
|
color: var(--color-ui-muted, #a4a4a4);
|
|
38
34
|
}
|
|
39
35
|
|
|
40
|
-
/*
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
ALWAYS hittable, unlike the strip around it: a grip reachable only by first hovering its
|
|
44
|
-
block is a flyout you traverse the block to get to. Its own box, not the full-height
|
|
45
|
-
strip, which would swallow every gutter click the block has. */
|
|
36
|
+
/* Centred on the line `alignDragHandle` measures. Always clickable, unlike the strip, so
|
|
37
|
+
the handle needs no hover first without the strip swallowing every gutter click. */
|
|
46
38
|
.grip {
|
|
47
39
|
position: absolute;
|
|
48
40
|
left: 0;
|
|
49
41
|
width: 100%;
|
|
50
42
|
height: 1.25rem;
|
|
43
|
+
/* The `em` fallback is for browsers without `lh` (Safari before 16.4). */
|
|
44
|
+
top: 0.75em;
|
|
51
45
|
top: 0.5lh;
|
|
52
46
|
transform: translateY(-50%);
|
|
53
47
|
display: flex;
|
|
@@ -56,16 +50,15 @@
|
|
|
56
50
|
pointer-events: auto;
|
|
57
51
|
}
|
|
58
52
|
|
|
59
|
-
/*
|
|
60
|
-
|
|
61
|
-
Never past the strip's right edge, which is the content's first character. */
|
|
53
|
+
/* A click target bigger than the 16px glyph, which a pointer misses between rows; it never
|
|
54
|
+
passes the strip's right edge, the content's first character. */
|
|
62
55
|
.grip::before {
|
|
63
56
|
content: '';
|
|
64
57
|
position: absolute;
|
|
65
58
|
inset: -8px 0 -8px -4px;
|
|
66
59
|
}
|
|
67
60
|
|
|
68
|
-
/* Touch never
|
|
61
|
+
/* Touch never triggers the hover rule, so the handle is shown from the start. */
|
|
69
62
|
@media (hover: none) {
|
|
70
63
|
.block-drag-handle {
|
|
71
64
|
opacity: 1;
|
|
@@ -7,27 +7,25 @@
|
|
|
7
7
|
type BlockComponentExports
|
|
8
8
|
} from '../block-component';
|
|
9
9
|
import type { NodeView } from '../core/node-views';
|
|
10
|
-
import
|
|
11
|
-
import { acceptedBlockAttrs } from '../decorations/reserved-attrs';
|
|
12
|
-
import { mountDecorationWidget } from '../decorations/widget-dom';
|
|
10
|
+
import { useBlockDecorations } from '../decorations/use-block-decorations.svelte';
|
|
13
11
|
import SelectionOverlay from './SelectionOverlay.svelte';
|
|
14
12
|
import DecorationOverlay from './DecorationOverlay.svelte';
|
|
15
13
|
import BlockDragHandle from './BlockDragHandle.svelte';
|
|
16
14
|
import { showsDragHandle } from './drag-handle';
|
|
17
15
|
import TextEditableBlock from './blocks/text/TextEditableBlock.svelte';
|
|
18
16
|
import { defaultRegistryView } from '../schema/registry-view';
|
|
17
|
+
import { isGridDescriptor } from '../schema/block-kind-descriptor';
|
|
19
18
|
import { FAILED_BLOCK_LABEL } from '../a11y-strings';
|
|
20
19
|
import {
|
|
21
20
|
EDITOR_DOC_KEY,
|
|
22
21
|
EDITOR_POLICIES_KEY,
|
|
23
22
|
EDITOR_SERVICES_KEY,
|
|
24
|
-
RECORD_BLOCK_HEIGHT_KEY,
|
|
25
|
-
type BlockMeasureChannel,
|
|
26
23
|
type EditorDoc,
|
|
27
24
|
type EditorPolicies,
|
|
28
25
|
type EditorServices
|
|
29
26
|
} from '../editor-keys';
|
|
30
27
|
import { useMountGauge } from '../perf/use-mount-gauge.svelte';
|
|
28
|
+
import { useMeasuredChild } from '../reactivity/use-measured-child.svelte';
|
|
31
29
|
import { publishRefSlot, type RefSlots } from '../reactivity/publish-ref.svelte';
|
|
32
30
|
import { devWarn } from '../dev-warn';
|
|
33
31
|
|
|
@@ -49,68 +47,64 @@
|
|
|
49
47
|
reorderable?: boolean;
|
|
50
48
|
} = $props();
|
|
51
49
|
|
|
52
|
-
//
|
|
53
|
-
//
|
|
50
|
+
// The services and document contexts are optional here and in both overlays, for a partial
|
|
51
|
+
// test mount; the policies carry the editor's own getters, so a mount always has them.
|
|
54
52
|
const services = getContext<EditorServices | undefined>(EDITOR_SERVICES_KEY);
|
|
55
53
|
const editorEvents = services?.events;
|
|
56
54
|
const engine = services?.decorations;
|
|
57
|
-
//
|
|
58
|
-
// read the global default.
|
|
55
|
+
// A bare mount reads the global registry view.
|
|
59
56
|
const registryView = services?.registryView ?? defaultRegistryView;
|
|
60
|
-
const
|
|
57
|
+
const editorDoc = getContext<EditorDoc | undefined>(EDITOR_DOC_KEY);
|
|
58
|
+
const getDoc = editorDoc?.doc;
|
|
61
59
|
// Stable object, so a plain read rather than a getter.
|
|
62
60
|
const rects = services?.rects;
|
|
63
|
-
const policies = getContext<EditorPolicies
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
//
|
|
67
|
-
const
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
61
|
+
const policies = getContext<EditorPolicies>(EDITOR_POLICIES_KEY);
|
|
62
|
+
// $derived, so a runtime toggle reaches blocks that mount after it.
|
|
63
|
+
const dragHandles = $derived(policies.blockDragHandles());
|
|
64
|
+
// Checked here too, because an image's handle does not go through the drag-handle prop.
|
|
65
|
+
const isReading = $derived(policies.presentationMode() === 'reading');
|
|
66
|
+
// A bare mount has no editor reading: every installed plugin's syntax, no link definitions.
|
|
67
|
+
const inlineReading = editorDoc?.reading ?? {
|
|
68
|
+
grammar: registryView.grammar,
|
|
69
|
+
resolver: undefined,
|
|
70
|
+
resolverSignature: ''
|
|
71
|
+
};
|
|
72
|
+
// A block with no drag handle (a paragraph) can still be dropped next to and moved by key.
|
|
73
|
+
const showsHandle = $derived(
|
|
74
|
+
reorderable && !isReading && showsDragHandle(node, dragHandles, inlineReading)
|
|
75
|
+
);
|
|
73
76
|
|
|
74
77
|
let myPath = $derived([...parentPath, index]);
|
|
75
78
|
|
|
76
|
-
const NO_BLOCK_DECORATIONS: BlockDecoration[] = [];
|
|
77
|
-
const blockDecs = $derived(
|
|
78
|
-
engine ? engine.blockDecorationsForPath(myPath) : NO_BLOCK_DECORATIONS
|
|
79
|
-
);
|
|
80
|
-
|
|
81
79
|
let descriptor = $derived(registryView.descriptor(node.kind));
|
|
82
80
|
let isContainer = $derived(descriptor.isContainer);
|
|
83
|
-
//
|
|
84
|
-
//
|
|
85
|
-
// needs children with hosts: a childless container and a grid have none.
|
|
81
|
+
// Decided once for both overlays: a container with children (not a grid) leaves painting its
|
|
82
|
+
// rectangles to the children's own hosts.
|
|
86
83
|
let delegatesPainting = $derived(
|
|
87
|
-
isContainer && (node.children?.length ?? 0) > 0 && descriptor
|
|
84
|
+
isContainer && (node.children?.length ?? 0) > 0 && !isGridDescriptor(descriptor)
|
|
88
85
|
);
|
|
89
86
|
|
|
90
87
|
let hostEl: HTMLElement | null = $state(null);
|
|
91
|
-
// The one
|
|
92
|
-
// containerApi); every consumer of this host's ref reads what it returns.
|
|
88
|
+
// The one place a block's published interface is resolved; every reader of the ref gets it.
|
|
93
89
|
let instance: BlockComponentExports | undefined = $state();
|
|
94
90
|
let ref: BlockComponent | undefined = $derived(resolveBlockSurface(instance));
|
|
95
91
|
|
|
96
|
-
//
|
|
97
|
-
//
|
|
98
|
-
// the delegation term guards a hand-rolled child-bearing non-grid container.
|
|
92
|
+
// Both halves count: a hand-written container can lack `measurePartialRects`, or have children
|
|
93
|
+
// and not be a grid.
|
|
99
94
|
let containerPaintsRects = $derived(
|
|
100
95
|
isContainer && !delegatesPainting && !!ref?.measurePartialRects
|
|
101
96
|
);
|
|
102
97
|
|
|
103
98
|
let entry = $derived(registryView.component(node.kind));
|
|
104
99
|
|
|
105
|
-
// A kind with no registered component falls back to the
|
|
100
|
+
// A kind with no registered component falls back to the plain editable block below
|
|
106
101
|
// rather than silently rendering nothing.
|
|
107
102
|
$effect(() => {
|
|
108
103
|
if (!entry) devWarn('block-host', 'no component for kind, rendering raw', node.kind);
|
|
109
104
|
});
|
|
110
105
|
|
|
111
|
-
// The error boundary
|
|
112
|
-
//
|
|
113
|
-
// Plain lets, not $state: the effect keys on node.raw alone and reads these live.
|
|
106
|
+
// The error boundary retries only when the bytes change, so a failing render cannot loop.
|
|
107
|
+
// Plain `let`s, so the effect keys on `node.raw` alone.
|
|
114
108
|
let failedRaw: string | null = null;
|
|
115
109
|
let retryFailedRender: (() => void) | null = null;
|
|
116
110
|
|
|
@@ -135,103 +129,33 @@
|
|
|
135
129
|
return publishRefSlot(slots, index, ref, hostEl);
|
|
136
130
|
});
|
|
137
131
|
|
|
138
|
-
//
|
|
139
|
-
// types this; the guard catches a registration that got in through a cast.
|
|
132
|
+
// `defineBlockComponent` types this; the check catches a registration cast past it.
|
|
140
133
|
$effect(() => {
|
|
141
134
|
if (ref && typeof ref.focus !== 'function')
|
|
142
135
|
devWarn('block-host', 'component published no BlockComponent surface', node.kind);
|
|
143
136
|
});
|
|
144
137
|
|
|
145
|
-
const measureChannel = getContext<BlockMeasureChannel | undefined>(RECORD_BLOCK_HEIGHT_KEY);
|
|
146
|
-
|
|
147
138
|
useMountGauge();
|
|
148
139
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
if (!measureChannel) return;
|
|
155
|
-
return measureChannel.register(myPath, index, id, () =>
|
|
156
|
-
hostEl ? hostEl.getBoundingClientRect().height : 0
|
|
157
|
-
);
|
|
158
|
-
});
|
|
159
|
-
|
|
160
|
-
// An edit resizes this one block; re-measure it directly. Skip the MOUNT run — the
|
|
161
|
-
// batched pass above owns mount measurement, and a per-block read on a fling is the
|
|
162
|
-
// thrash it exists to remove (VR-4).
|
|
163
|
-
let firstRun = true;
|
|
164
|
-
$effect(() => {
|
|
165
|
-
void node.raw;
|
|
166
|
-
if (firstRun) {
|
|
167
|
-
firstRun = false;
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
measureChannel?.measureNow(id);
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
// A block can grow after mount without its `raw` changing (async content decoding
|
|
174
|
-
// in), which the effect above never sees, and overflow-anchor is off so the growth
|
|
175
|
-
// would slide the viewport. The scope gates on the height it last applied.
|
|
176
|
-
$effect(() => {
|
|
177
|
-
if (!hostEl || !measureChannel) return;
|
|
178
|
-
const observer = new ResizeObserver((entries) => {
|
|
179
|
-
const box = entries[0]?.borderBoxSize?.[0];
|
|
180
|
-
const height = box ? box.blockSize : entries[0]?.contentRect.height;
|
|
181
|
-
if (height != null) measureChannel.measureOnResize(id, height);
|
|
182
|
-
});
|
|
183
|
-
observer.observe(hostEl);
|
|
184
|
-
return () => observer.disconnect();
|
|
140
|
+
useMeasuredChild({
|
|
141
|
+
getId: () => id,
|
|
142
|
+
getPath: () => myPath,
|
|
143
|
+
getEl: () => hostEl,
|
|
144
|
+
getRaw: () => node.raw
|
|
185
145
|
});
|
|
186
146
|
|
|
187
|
-
|
|
188
|
-
//
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
const appliedKeys: string[] = [];
|
|
194
|
-
for (const dec of decs) {
|
|
195
|
-
for (const [key, value] of acceptedBlockAttrs(dec.attrs, myPath)) {
|
|
196
|
-
el.setAttribute(key, value);
|
|
197
|
-
appliedKeys.push(key);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
return () => {
|
|
201
|
-
for (const key of appliedKeys) el.removeAttribute(key);
|
|
202
|
-
};
|
|
203
|
-
});
|
|
147
|
+
const kindCue = services?.kindCue;
|
|
148
|
+
// A nested host's fade bubbles here, so only this host's own animation ends the cue.
|
|
149
|
+
function endKindCue(event: AnimationEvent): void {
|
|
150
|
+
if (event.target === hostEl && event.animationName === 'kind-cue-fade')
|
|
151
|
+
kindCue?.dismiss(myPath);
|
|
152
|
+
}
|
|
204
153
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
const el = hostEl;
|
|
211
|
-
if (!el) return;
|
|
212
|
-
const destroys: Array<() => void> = [];
|
|
213
|
-
const badges = document.createDocumentFragment();
|
|
214
|
-
for (const dec of decs) {
|
|
215
|
-
if (!dec.badge) continue;
|
|
216
|
-
const handle = mountDecorationWidget(dec.badge, dec, (error) =>
|
|
217
|
-
editorEvents?.emit('error', { origin: 'render', error, context: { path: myPath } })
|
|
218
|
-
);
|
|
219
|
-
if (!handle) continue;
|
|
220
|
-
const wrapper = document.createElement('div');
|
|
221
|
-
wrapper.className = 'decoration-badge';
|
|
222
|
-
wrapper.setAttribute('contenteditable', 'false');
|
|
223
|
-
wrapper.appendChild(handle.el);
|
|
224
|
-
badges.appendChild(wrapper);
|
|
225
|
-
destroys.push(() => {
|
|
226
|
-
handle.destroy();
|
|
227
|
-
wrapper.remove();
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
if (destroys.length === 0) return;
|
|
231
|
-
el.insertBefore(badges, el.firstChild);
|
|
232
|
-
return () => {
|
|
233
|
-
for (const destroy of destroys) destroy();
|
|
234
|
-
};
|
|
154
|
+
const blockDecorations = useBlockDecorations({
|
|
155
|
+
getPath: () => myPath,
|
|
156
|
+
getEl: () => hostEl,
|
|
157
|
+
engine,
|
|
158
|
+
onRenderError: (error) => editorEvents?.emit('error', error)
|
|
235
159
|
});
|
|
236
160
|
</script>
|
|
237
161
|
|
|
@@ -239,10 +163,12 @@
|
|
|
239
163
|
class={[
|
|
240
164
|
'block-host',
|
|
241
165
|
{ 'reorder-host': reorderable && dragHandles, 'handle-host': showsHandle },
|
|
242
|
-
...
|
|
166
|
+
...blockDecorations.classes
|
|
243
167
|
]}
|
|
244
168
|
data-block-path={JSON.stringify(myPath)}
|
|
245
169
|
data-block-kind={node.kind}
|
|
170
|
+
data-kind-cue={kindCue?.labelAt(myPath)}
|
|
171
|
+
onanimationend={endKindCue}
|
|
246
172
|
bind:this={hostEl}
|
|
247
173
|
>
|
|
248
174
|
<svelte:boundary onerror={onRenderError}>
|
|
@@ -278,8 +204,7 @@
|
|
|
278
204
|
</div>
|
|
279
205
|
{/snippet}
|
|
280
206
|
</svelte:boundary>
|
|
281
|
-
<!-- hostEl is null until mount;
|
|
282
|
-
user gesture, and the overlay's $effect guards on !blockEl. -->
|
|
207
|
+
<!-- hostEl is null until mount; the overlay checks for a missing blockEl. -->
|
|
283
208
|
<SelectionOverlay
|
|
284
209
|
path={myPath}
|
|
285
210
|
blockRef={ref}
|
|
@@ -294,8 +219,7 @@
|
|
|
294
219
|
{isContainer}
|
|
295
220
|
{containerPaintsRects}
|
|
296
221
|
/>
|
|
297
|
-
<!--
|
|
298
|
-
first match. -->
|
|
222
|
+
<!-- Last, so the block-element lookup finds the block content first. -->
|
|
299
223
|
{#if showsHandle}
|
|
300
224
|
<BlockDragHandle />
|
|
301
225
|
{/if}
|
|
@@ -306,10 +230,8 @@
|
|
|
306
230
|
position: relative;
|
|
307
231
|
}
|
|
308
232
|
|
|
309
|
-
/*
|
|
310
|
-
|
|
311
|
-
...))` reveals the innermost hovered handle, not a staircase of ancestors. A gripless
|
|
312
|
-
unit (a paragraph in a quote) is no host, so hovering it reveals its container's. */
|
|
233
|
+
/* Hover by CSS alone, so no reactive state per block; the `:not(:has(...))` shows only the
|
|
234
|
+
innermost hovered host's handle. */
|
|
313
235
|
:global(.handle-host:hover:not(:has(.handle-host:hover)) > .block-drag-handle),
|
|
314
236
|
:global(.block-drag-handle:hover) {
|
|
315
237
|
opacity: 1;
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
import { gapEligibleAmong } from '../selection/gap-caret';
|
|
16
16
|
import { pathsEqual } from '../selection/path-math';
|
|
17
17
|
import { sliceWindow } from '../reactivity/window-slice';
|
|
18
|
+
import { useWindowFloor } from '../reactivity/use-window-floor.svelte';
|
|
18
19
|
import BlockHost from './BlockHost.svelte';
|
|
19
20
|
import GapCaret from './GapCaret.svelte';
|
|
20
21
|
|
|
21
|
-
// `slots`
|
|
22
|
-
//
|
|
23
|
-
// reorder units (document root, list, blockquote).
|
|
22
|
+
// `slots` comes from the owner, since a `bind:` array falls out of step when two effects
|
|
23
|
+
// write it. `reorderable` means these children are what a drag reorders.
|
|
24
24
|
let {
|
|
25
25
|
children,
|
|
26
26
|
blockIds,
|
|
@@ -45,25 +45,25 @@
|
|
|
45
45
|
let end = $derived(bounds.end);
|
|
46
46
|
let slice = $derived(children.slice(start, end));
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
let listEl: HTMLElement | undefined = $state();
|
|
49
|
+
useWindowFloor(
|
|
50
|
+
() => listEl,
|
|
51
|
+
() => win
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
// Optional, like BlockHost's reads: a list mounted alone in a test has no editor context.
|
|
51
55
|
const selection = getContext<EditorServices | undefined>(EDITOR_SERVICES_KEY)?.selection;
|
|
52
56
|
const focusActions = getContext<FocusActions | undefined>(FOCUS_KEY);
|
|
53
57
|
const blockEdit = getContext<BlockEditActions | undefined>(BLOCK_EDIT_KEY);
|
|
54
58
|
|
|
55
|
-
// Only a
|
|
56
|
-
//
|
|
57
|
-
// handed over and dropped: a prefix a child does not paint but does count is an offset the
|
|
58
|
-
// walk has no bytes for. Painting the marker for those shapes is open (GH #43).
|
|
59
|
+
// Only a prose first child gets the container's marker prefix: one that counted it without
|
|
60
|
+
// painting it would hold an offset with no bytes behind it.
|
|
59
61
|
function ambientFor(node: NodeView): AmbientPrefix {
|
|
60
62
|
return isProseKind(node.kind) ? ambientPrefixForFirst : '';
|
|
61
63
|
}
|
|
62
64
|
|
|
63
|
-
// The
|
|
64
|
-
//
|
|
65
|
-
// that changed the kinds facing this boundary, and a caret must never paint where no
|
|
66
|
-
// gesture could have parked one.
|
|
65
|
+
// The gap caret's index in this list, re-checked against the current children, since an
|
|
66
|
+
// edit can change the kinds either side of a stored gap.
|
|
67
67
|
let gapIndex = $derived.by(() => {
|
|
68
68
|
const gap = selection?.gapCaret;
|
|
69
69
|
if (!gap || !pathsEqual(gap.parentPath, parentPath)) return null;
|
|
@@ -72,14 +72,18 @@
|
|
|
72
72
|
});
|
|
73
73
|
</script>
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
<!-- A nested reorderable list marks itself, so a drag inside it can show its bounds. -->
|
|
76
|
+
<div
|
|
77
|
+
class="block-list"
|
|
78
|
+
data-reorder-scope={reorderable && parentPath.length > 0 ? '' : undefined}
|
|
79
|
+
bind:this={listEl}
|
|
80
|
+
>
|
|
76
81
|
{#if active}
|
|
77
82
|
<div class="vr-spacer" style="height: {win!.topSpacerPx}px"></div>
|
|
78
83
|
{/if}
|
|
79
84
|
{#each slice as node, localIndex (blockIds[start + localIndex])}
|
|
80
85
|
{@const absoluteIndex = start + localIndex}
|
|
81
|
-
<!--
|
|
82
|
-
local loop index — paths and structural ops key off it. -->
|
|
86
|
+
<!-- Paths and structural edits key off the absolute index, never the loop index. -->
|
|
83
87
|
{#if gapIndex === absoluteIndex}
|
|
84
88
|
<GapCaret index={absoluteIndex} {focusActions} {blockEdit} />
|
|
85
89
|
{/if}
|
|
@@ -93,8 +97,7 @@
|
|
|
93
97
|
{reorderable}
|
|
94
98
|
/>
|
|
95
99
|
{/each}
|
|
96
|
-
<!--
|
|
97
|
-
otherwise the seam with the next windowed-out block. -->
|
|
100
|
+
<!-- A gap caret at the end of the rendered range, which may be before an unmounted block. -->
|
|
98
101
|
{#if gapIndex === end}
|
|
99
102
|
<GapCaret index={end} {focusActions} {blockEdit} />
|
|
100
103
|
{/if}
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
path: number[];
|
|
22
22
|
blockRef: BlockComponent | undefined;
|
|
23
23
|
blockEl: HTMLElement | null | undefined;
|
|
24
|
-
/** Containers paint nothing
|
|
25
|
-
*
|
|
24
|
+
/** Containers paint nothing, since their children paint themselves, except grids:
|
|
25
|
+
* their cells have no BlockHost of their own, so whole-cell marks paint here. */
|
|
26
26
|
isContainer?: boolean;
|
|
27
27
|
/** Decided at BlockHost, which hands the same value to SelectionOverlay. */
|
|
28
28
|
containerPaintsRects?: boolean;
|
|
@@ -30,11 +30,11 @@
|
|
|
30
30
|
|
|
31
31
|
const services = getContext<EditorServices | undefined>(EDITOR_SERVICES_KEY);
|
|
32
32
|
const engine = services?.decorations;
|
|
33
|
-
// Optional for the same reason `services` is: a
|
|
33
|
+
// Optional for the same reason `services` is: a mount without the editor shell has none.
|
|
34
34
|
const getEditorRoot = getContext<EditorDoc | undefined>(EDITOR_DOC_KEY)?.editorRoot;
|
|
35
35
|
|
|
36
|
-
/** A mark's `interactive.onClick` is
|
|
37
|
-
*
|
|
36
|
+
/** A mark's `interactive.onClick` is plugin code, so its errors go to the `error` event like
|
|
37
|
+
* every other decoration entry point's. */
|
|
38
38
|
function runInteraction(run: () => void): void {
|
|
39
39
|
try {
|
|
40
40
|
run();
|
|
@@ -43,8 +43,8 @@
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
// A grid supplies cellRect, so
|
|
47
|
-
//
|
|
46
|
+
// A grid supplies cellRect, so marks on its cells, which have no BlockHost overlay
|
|
47
|
+
// of their own, paint as whole cells here.
|
|
48
48
|
const containerPaintsCells = $derived(isContainer && !!blockRef?.cellRect);
|
|
49
49
|
|
|
50
50
|
interface Painted {
|
|
@@ -62,9 +62,8 @@
|
|
|
62
62
|
const eng = engine,
|
|
63
63
|
ref = blockRef,
|
|
64
64
|
el = blockEl;
|
|
65
|
-
// Read
|
|
66
|
-
//
|
|
67
|
-
// mount would otherwise never re-run it.
|
|
65
|
+
// Read up front so the effect depends on the decoration set: `sourceCount` is a plain
|
|
66
|
+
// counter, and a source added after mount would never re-run it.
|
|
68
67
|
const marks = eng
|
|
69
68
|
? containerPaintsCells
|
|
70
69
|
? eng.marksForDescendants(path)
|
|
@@ -3,8 +3,8 @@ type $$ComponentProps = {
|
|
|
3
3
|
path: number[];
|
|
4
4
|
blockRef: BlockComponent | undefined;
|
|
5
5
|
blockEl: HTMLElement | null | undefined;
|
|
6
|
-
/** Containers paint nothing
|
|
7
|
-
*
|
|
6
|
+
/** Containers paint nothing, since their children paint themselves, except grids:
|
|
7
|
+
* their cells have no BlockHost of their own, so whole-cell marks paint here. */
|
|
8
8
|
isContainer?: boolean;
|
|
9
9
|
/** Decided at BlockHost, which hands the same value to SelectionOverlay. */
|
|
10
10
|
containerPaintsRects?: boolean;
|