@voithos-labs/aragonite 0.10.4 → 0.10.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/a11y-strings.d.ts +11 -5
- package/dist/a11y-strings.js +60 -5
- package/dist/action-contracts.d.ts +242 -155
- package/dist/action-contracts.js +2 -2
- package/dist/active-editor.d.ts +3 -3
- package/dist/active-editor.js +8 -9
- package/dist/ambient/ambient-dom.d.ts +2 -5
- package/dist/ambient/ambient-dom.js +16 -62
- package/dist/assert.js +6 -5
- package/dist/block-component.d.ts +135 -109
- package/dist/block-component.js +30 -22
- package/dist/block-id.d.ts +6 -10
- package/dist/block-id.js +25 -14
- package/dist/bounded-memo.d.ts +5 -5
- package/dist/bounded-memo.js +6 -6
- package/dist/components/BlockDragHandle.svelte +12 -21
- package/dist/components/BlockHost.svelte +56 -134
- package/dist/components/BlockList.svelte +22 -19
- package/dist/components/DecorationOverlay.svelte +9 -10
- package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
- package/dist/components/Editor.svelte +603 -1126
- package/dist/components/Editor.svelte.d.ts +9 -20
- package/dist/components/GapCaret.svelte +26 -59
- package/dist/components/SelectionOverlay.svelte +26 -51
- package/dist/components/SelectionOverlay.svelte.d.ts +5 -3
- package/dist/components/TailInsert.svelte +8 -55
- package/dist/components/TailInsert.svelte.d.ts +4 -6
- package/dist/components/block-content-selector.d.ts +11 -11
- package/dist/components/block-content-selector.js +11 -11
- package/dist/components/block-el-lookup.d.ts +6 -0
- package/dist/components/block-el-lookup.js +27 -0
- package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
- package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
- package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
- package/dist/components/blocks/code/CodeBlock.svelte +255 -276
- package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
- package/dist/components/blocks/code/CodeBlockRail.svelte +72 -87
- package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
- package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
- package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
- package/dist/components/blocks/code/code-bootstrap.js +29 -34
- package/dist/components/blocks/code/code-context-actions.js +5 -4
- package/dist/components/blocks/code/code-enter.js +2 -2
- package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
- package/dist/components/blocks/code/code-fence-boundary.js +40 -66
- package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
- package/dist/components/blocks/code/code-fence-exit.js +24 -25
- package/dist/components/blocks/code/code-indent.d.ts +2 -2
- package/dist/components/blocks/code/code-indent.js +4 -7
- package/dist/components/blocks/code/code-languages.d.ts +16 -12
- package/dist/components/blocks/code/code-languages.js +57 -39
- package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
- package/dist/components/blocks/code/code-paste-surface.js +9 -18
- package/dist/components/blocks/code/code-renderer.d.ts +21 -5
- package/dist/components/blocks/code/code-renderer.js +90 -125
- package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
- package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
- package/dist/components/blocks/directive/activate-directives.js +18 -13
- package/dist/components/blocks/editable-leaf.d.ts +50 -74
- package/dist/components/blocks/editable-leaf.js +141 -203
- package/dist/components/blocks/editable-surface.d.ts +96 -100
- package/dist/components/blocks/editable-surface.js +101 -109
- package/dist/components/blocks/list/ListBlock.svelte +45 -90
- package/dist/components/blocks/list/ListItemBlock.svelte +93 -147
- package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +1 -0
- package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
- package/dist/components/blocks/list/task-checkbox.js +12 -7
- package/dist/components/blocks/plain-text-backend.d.ts +4 -20
- package/dist/components/blocks/plain-text-backend.js +9 -43
- package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
- package/dist/components/blocks/surface-wiring.svelte.js +15 -34
- package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
- package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
- package/dist/components/blocks/table/TableBlock.svelte +100 -165
- package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
- package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
- package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
- package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
- package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
- package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
- package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
- package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
- package/dist/components/blocks/table/cell-pointer.js +49 -71
- package/dist/components/blocks/table/cell-render.d.ts +24 -29
- package/dist/components/blocks/table/cell-render.js +29 -31
- package/dist/components/blocks/table/selected-cells.d.ts +7 -7
- package/dist/components/blocks/table/selected-cells.js +9 -13
- package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
- package/dist/components/blocks/table/table-caret-at-point.js +5 -5
- package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
- package/dist/components/blocks/table/table-cell-paste.js +27 -43
- package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
- package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
- package/dist/components/blocks/table/table-menu-model.js +6 -10
- package/dist/components/blocks/table/table-navigation.js +2 -2
- package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
- package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
- package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
- package/dist/components/blocks/text/auto-pair-record.js +51 -0
- package/dist/components/blocks/text/click-snap-guard.d.ts +8 -6
- package/dist/components/blocks/text/click-snap-guard.js +10 -7
- package/dist/components/blocks/text/composition-seat.d.ts +17 -14
- package/dist/components/blocks/text/composition-seat.js +11 -11
- package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
- package/dist/components/blocks/text/construct-edge-delete.js +50 -65
- package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
- package/dist/components/blocks/text/construct-reveal.js +13 -14
- package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
- package/dist/components/blocks/text/delimiter-autopair.js +87 -103
- package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
- package/dist/components/blocks/text/edge-policy-dispatch.js +150 -181
- package/dist/components/blocks/text/edge-seat.d.ts +17 -26
- package/dist/components/blocks/text/edge-seat.js +43 -70
- package/dist/components/blocks/text/link-at-point.d.ts +9 -9
- package/dist/components/blocks/text/link-at-point.js +12 -15
- package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
- package/dist/components/blocks/text/live-join-seam.js +75 -112
- package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
- package/dist/components/blocks/text/live-selection-edit.js +32 -108
- package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
- package/dist/components/blocks/text/live-split-rebalance.js +50 -67
- package/dist/components/blocks/text/marker-completion.d.ts +7 -12
- package/dist/components/blocks/text/marker-completion.js +17 -10
- package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
- package/dist/components/blocks/text/pending-mark-insert.js +30 -49
- package/dist/components/blocks/text/screen-diff.d.ts +5 -15
- package/dist/components/blocks/text/screen-diff.js +5 -19
- package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
- package/dist/components/blocks/text/text-clipboard.js +27 -32
- package/dist/components/blocks/text/text-keydown.d.ts +20 -30
- package/dist/components/blocks/text/text-keydown.js +54 -51
- package/dist/components/blocks/text/text-render.d.ts +25 -35
- package/dist/components/blocks/text/text-render.js +82 -61
- package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
- package/dist/components/blocks/text/widget-adjacency.js +17 -17
- package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
- package/dist/components/blocks/text/widget-interaction.js +212 -199
- package/dist/components/blocks/widget-portal.d.ts +20 -29
- package/dist/components/blocks/widget-portal.js +16 -14
- package/dist/components/built-in-blocks.d.ts +3 -4
- package/dist/components/built-in-blocks.js +17 -18
- package/dist/components/drag-handle.d.ts +12 -35
- package/dist/components/drag-handle.js +22 -68
- package/dist/components/editor-built-ins.d.ts +1 -0
- package/dist/components/editor-built-ins.js +16 -0
- package/dist/components/editor-root-clipboard.d.ts +6 -6
- package/dist/components/editor-root-clipboard.js +16 -27
- package/dist/components/editor-root-document-swap.d.ts +49 -0
- package/dist/components/editor-root-document-swap.js +54 -0
- package/dist/components/editor-root-focus.d.ts +5 -4
- package/dist/components/editor-root-focus.js +51 -22
- package/dist/components/editor-root-focused-surface.d.ts +35 -0
- package/dist/components/editor-root-focused-surface.js +65 -0
- package/dist/components/editor-root-geometry.d.ts +15 -24
- package/dist/components/editor-root-geometry.js +27 -31
- package/dist/components/editor-root-gestures.d.ts +39 -0
- package/dist/components/editor-root-gestures.js +189 -0
- package/dist/components/editor-root-keydown.d.ts +10 -25
- package/dist/components/editor-root-keydown.js +19 -43
- package/dist/components/editor-root-listeners.d.ts +22 -24
- package/dist/components/editor-root-listeners.js +49 -24
- package/dist/components/editor-root-menus.d.ts +51 -0
- package/dist/components/editor-root-menus.js +147 -0
- package/dist/components/editor-root-mode-flip.d.ts +16 -11
- package/dist/components/editor-root-mode-flip.js +36 -34
- package/dist/components/editor-root-scroll-host.d.ts +22 -0
- package/dist/components/editor-root-scroll-host.js +34 -0
- package/dist/components/editor-root-test-surface.d.ts +48 -0
- package/dist/components/editor-root-test-surface.js +6 -0
- package/dist/components/image/ImageOverlayHost.svelte +44 -35
- package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
- package/dist/components/image/ImageProperties.svelte +37 -41
- package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
- package/dist/components/image/ImageResizeHandles.svelte +14 -26
- package/dist/components/image/image-crop.d.ts +5 -11
- package/dist/components/image/image-crop.js +5 -11
- package/dist/components/image/image-edit-commit.d.ts +19 -16
- package/dist/components/image/image-edit-commit.js +74 -38
- package/dist/components/image/image-resize.d.ts +2 -5
- package/dist/components/image/image-resize.js +3 -6
- package/dist/components/image/image-widget-editing.d.ts +3 -3
- package/dist/components/image/image-widget-editing.js +9 -9
- package/dist/components/image/widget-dom.d.ts +2 -3
- package/dist/components/image/widget-dom.js +19 -24
- package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
- package/dist/components/image/widget-selection-state.svelte.js +26 -19
- package/dist/components/kind-cue.svelte.d.ts +21 -0
- package/dist/components/kind-cue.svelte.js +35 -0
- package/dist/components/link-card/LinkCard.svelte +115 -64
- package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
- package/dist/components/link-card/LinkCardHost.svelte +42 -33
- package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
- package/dist/components/link-card/link-card-commit.d.ts +16 -19
- package/dist/components/link-card/link-card-commit.js +21 -30
- package/dist/components/link-card/link-card-entry.d.ts +13 -23
- package/dist/components/link-card/link-card-entry.js +16 -24
- package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
- package/dist/components/link-card/link-card-state.svelte.js +2 -2
- package/dist/components/lrd-map-gate.d.ts +4 -11
- package/dist/components/lrd-map-gate.js +5 -11
- package/dist/components/menu/BlockMenu.svelte +20 -81
- package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
- package/dist/components/menu/InlineMenuHost.svelte +191 -0
- package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
- package/dist/components/menu/MenuIcon.svelte +3 -103
- package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
- package/dist/components/menu/SelectionToolbar.svelte +30 -35
- package/dist/components/menu/SelectionToolbar.svelte.d.ts +3 -5
- package/dist/components/menu/clipboard-actions.d.ts +3 -4
- package/dist/components/menu/clipboard-actions.js +3 -4
- package/dist/components/menu/default-context-actions.d.ts +4 -13
- package/dist/components/menu/default-context-actions.js +49 -67
- package/dist/components/menu/flyout-placement.d.ts +2 -2
- package/dist/components/menu/flyout-placement.js +2 -2
- package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
- package/dist/components/menu/menu-presence.svelte.js +19 -0
- package/dist/components/paste-image-arm.d.ts +6 -11
- package/dist/components/paste-image-arm.js +11 -18
- package/dist/components/portal.d.ts +2 -5
- package/dist/components/portal.js +4 -7
- package/dist/core/directive/activate.d.ts +4 -5
- package/dist/core/directive/activate.js +8 -9
- package/dist/core/directive/container-opener.js +13 -12
- package/dist/core/directive/grammar.d.ts +2 -5
- package/dist/core/directive/grammar.js +10 -10
- package/dist/core/directive/kinds.d.ts +4 -7
- package/dist/core/directive/kinds.js +14 -16
- package/dist/core/directive/registry.d.ts +12 -9
- package/dist/core/directive/registry.js +19 -20
- package/dist/core/directive/text-recognizer.d.ts +3 -2
- package/dist/core/directive/text-recognizer.js +5 -9
- package/dist/core/escapable.d.ts +1 -5
- package/dist/core/escapable.js +1 -5
- package/dist/core/inline/backticks.d.ts +3 -4
- package/dist/core/inline/backticks.js +3 -4
- package/dist/core/inline/character-refs.js +2 -1
- package/dist/core/inline/destination-bytes.d.ts +6 -3
- package/dist/core/inline/destination-bytes.js +50 -8
- package/dist/core/inline/entity-widget.d.ts +4 -3
- package/dist/core/inline/entity-widget.js +6 -6
- package/dist/core/inline/format-toggle.d.ts +22 -28
- package/dist/core/inline/format-toggle.js +97 -129
- package/dist/core/inline/html-entities.d.ts +2 -3
- package/dist/core/inline/html-entities.js +2 -3
- package/dist/core/inline/html-tag-grammar.js +6 -2
- package/dist/core/inline/image-dimensions.d.ts +2 -0
- package/dist/core/inline/image-dimensions.js +19 -2
- package/dist/core/inline/image-source-bytes.d.ts +11 -0
- package/dist/core/inline/image-source-bytes.js +71 -0
- package/dist/core/inline/index.d.ts +28 -21
- package/dist/core/inline/index.js +56 -34
- package/dist/core/inline/inline-cache.d.ts +12 -15
- package/dist/core/inline/inline-cache.js +11 -14
- package/dist/core/inline/inline-widgets.d.ts +54 -75
- package/dist/core/inline/inline-widgets.js +54 -62
- package/dist/core/inline/link-destination.d.ts +31 -0
- package/dist/core/inline/link-destination.js +129 -0
- package/dist/core/inline/link-reference-resolver.d.ts +8 -6
- package/dist/core/inline/link-reference-resolver.js +10 -6
- package/dist/core/inline/link-source-bytes.d.ts +31 -0
- package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
- package/dist/core/inline/live-edit/read-back.d.ts +29 -0
- package/dist/core/inline/live-edit/read-back.js +50 -0
- package/dist/core/inline/picture.d.ts +10 -0
- package/dist/core/inline/picture.js +40 -0
- package/dist/core/inline/scan/autolinks.d.ts +7 -8
- package/dist/core/inline/scan/autolinks.js +80 -59
- package/dist/core/inline/scan/brackets.d.ts +2 -2
- package/dist/core/inline/scan/brackets.js +6 -103
- package/dist/core/inline/scan/code-spans.d.ts +4 -0
- package/dist/core/inline/scan/code-spans.js +8 -0
- package/dist/core/inline/scan/emphasis.js +10 -14
- package/dist/core/inline/scan/index.d.ts +3 -1
- package/dist/core/inline/scan/index.js +32 -33
- package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
- package/dist/core/inline/scan/plugin-syntax.js +75 -89
- package/dist/core/inline/scan/scan-state.d.ts +2 -0
- package/dist/core/inline/scan/scan-state.js +1 -0
- package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
- package/dist/core/inline/scan/simple-nodes.js +2 -5
- package/dist/core/inline/scan/triggers.d.ts +17 -0
- package/dist/core/inline/scan/triggers.js +26 -0
- package/dist/core/inline/scan/url.js +8 -10
- package/dist/core/inline/transparency.d.ts +2 -1
- package/dist/core/inline/transparency.js +31 -15
- package/dist/core/inline/visibility.d.ts +30 -49
- package/dist/core/inline/visibility.js +31 -49
- package/dist/core/inline/walk.d.ts +4 -10
- package/dist/core/inline/walk.js +4 -10
- package/dist/core/inline-render.d.ts +22 -27
- package/dist/core/inline-render.js +51 -60
- package/dist/core/lines.d.ts +67 -26
- package/dist/core/lines.js +164 -33
- package/dist/core/metadata-parity.d.ts +9 -0
- package/dist/core/metadata-parity.js +25 -0
- package/dist/core/node-views.d.ts +7 -6
- package/dist/core/node-views.js +5 -5
- package/dist/core/nodes.d.ts +34 -44
- package/dist/core/nodes.js +4 -12
- package/dist/core/parser.d.ts +27 -34
- package/dist/core/parser.js +53 -67
- package/dist/core/parsers/blockquote.d.ts +5 -8
- package/dist/core/parsers/blockquote.js +11 -10
- package/dist/core/parsers/built-in-openers.d.ts +2 -5
- package/dist/core/parsers/built-in-openers.js +5 -8
- package/dist/core/parsers/fence-syntax.d.ts +36 -7
- package/dist/core/parsers/fence-syntax.js +61 -11
- package/dist/core/parsers/fenced-code.d.ts +16 -0
- package/dist/core/parsers/fenced-code.js +16 -15
- package/dist/core/parsers/heading.d.ts +19 -2
- package/dist/core/parsers/heading.js +50 -2
- package/dist/core/parsers/html-block.d.ts +3 -6
- package/dist/core/parsers/html-block.js +10 -11
- package/dist/core/parsers/indented-code.d.ts +1 -1
- package/dist/core/parsers/indented-code.js +2 -8
- package/dist/core/parsers/link-reference.d.ts +5 -3
- package/dist/core/parsers/link-reference.js +116 -120
- package/dist/core/parsers/list.d.ts +12 -5
- package/dist/core/parsers/list.js +53 -36
- package/dist/core/parsers/paragraph.d.ts +3 -3
- package/dist/core/parsers/paragraph.js +14 -5
- package/dist/core/parsers/table-completion.d.ts +2 -5
- package/dist/core/parsers/table-completion.js +7 -10
- package/dist/core/parsers/table.d.ts +8 -8
- package/dist/core/parsers/table.js +23 -26
- package/dist/core/parsers/thematic-break.js +15 -14
- package/dist/core/paths.d.ts +13 -0
- package/dist/core/paths.js +31 -0
- package/dist/core/terminator-escalation.d.ts +0 -7
- package/dist/core/terminator-escalation.js +5 -8
- package/dist/core/url-policy.d.ts +2 -5
- package/dist/core/url-policy.js +8 -12
- package/dist/cursor/caret-memory.d.ts +34 -0
- package/dist/cursor/caret-memory.js +82 -0
- package/dist/cursor/coordinate-spaces.d.ts +26 -19
- package/dist/cursor/coordinate-spaces.js +32 -20
- package/dist/cursor/dom-walk.d.ts +7 -13
- package/dist/cursor/dom-walk.js +7 -13
- package/dist/cursor/edge-affinity.d.ts +7 -35
- package/dist/cursor/edge-affinity.js +13 -44
- package/dist/cursor/focused-caret.d.ts +6 -8
- package/dist/cursor/focused-caret.js +7 -16
- package/dist/cursor/height-model.d.ts +3 -3
- package/dist/cursor/height-model.js +5 -5
- package/dist/cursor/height-oracle.d.ts +10 -6
- package/dist/cursor/height-oracle.js +26 -74
- package/dist/cursor/observe-resize.d.ts +13 -0
- package/dist/cursor/observe-resize.js +43 -0
- package/dist/cursor/overlay-rects.d.ts +2 -5
- package/dist/cursor/overlay-rects.js +2 -5
- package/dist/cursor/overlay-remeasure.d.ts +6 -7
- package/dist/cursor/overlay-remeasure.js +10 -14
- package/dist/cursor/pending-marks.d.ts +7 -9
- package/dist/cursor/pending-marks.js +6 -27
- package/dist/cursor/point-offset.d.ts +16 -10
- package/dist/cursor/point-offset.js +60 -25
- package/dist/cursor/reveal-source.d.ts +7 -11
- package/dist/cursor/reveal-source.js +10 -18
- package/dist/cursor/scroll-ancestors.d.ts +9 -20
- package/dist/cursor/scroll-ancestors.js +14 -26
- package/dist/cursor/scroll-owner.d.ts +92 -0
- package/dist/cursor/scroll-owner.js +283 -0
- package/dist/cursor/scrollport.d.ts +14 -15
- package/dist/cursor/scrollport.js +7 -13
- package/dist/cursor/sticky-column.d.ts +6 -29
- package/dist/cursor/sticky-column.js +6 -49
- package/dist/cursor/sticky-measure.d.ts +14 -9
- package/dist/cursor/sticky-measure.js +99 -49
- package/dist/cursor/surface-backend.d.ts +41 -0
- package/dist/cursor/surface-backend.js +78 -0
- package/dist/cursor/typography-estimates.d.ts +3 -3
- package/dist/cursor/typography-estimates.js +3 -3
- package/dist/cursor/visual-lines.d.ts +25 -14
- package/dist/cursor/visual-lines.js +45 -46
- package/dist/cursor/widget-edge-snap.d.ts +10 -15
- package/dist/cursor/widget-edge-snap.js +13 -12
- package/dist/cursor/widget-offset.d.ts +110 -104
- package/dist/cursor/widget-offset.js +344 -179
- package/dist/debug/diagnostics-report.d.ts +6 -6
- package/dist/debug/diagnostics-report.js +5 -5
- package/dist/debug/dump-tree.js +2 -2
- package/dist/debug/editor-diagnostics.d.ts +15 -0
- package/dist/debug/editor-diagnostics.js +33 -0
- package/dist/debug/inspect.d.ts +2 -2
- package/dist/debug/inspect.js +4 -4
- package/dist/debug/interaction-trace.d.ts +14 -15
- package/dist/debug/interaction-trace.js +19 -20
- package/dist/debug/operations-log.d.ts +1 -1
- package/dist/debug/operations-log.js +1 -1
- package/dist/decorations/buckets.d.ts +6 -12
- package/dist/decorations/buckets.js +4 -11
- package/dist/decorations/decoration-state.svelte.d.ts +2 -3
- package/dist/decorations/decoration-state.svelte.js +24 -26
- package/dist/decorations/island-dom.d.ts +10 -18
- package/dist/decorations/island-dom.js +25 -50
- package/dist/decorations/reserved-attrs.d.ts +6 -8
- package/dist/decorations/reserved-attrs.js +30 -17
- package/dist/decorations/types.d.ts +6 -7
- package/dist/decorations/types.js +2 -1
- package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
- package/dist/decorations/use-block-decorations.svelte.js +71 -0
- package/dist/decorations/widget-dom.d.ts +3 -3
- package/dist/decorations/widget-dom.js +5 -5
- package/dist/dev-warn.d.ts +5 -2
- package/dist/dev-warn.js +16 -4
- package/dist/editor-actions/ancestry-folds.d.ts +9 -14
- package/dist/editor-actions/ancestry-folds.js +13 -18
- package/dist/editor-actions/block-edit-core.d.ts +49 -22
- package/dist/editor-actions/block-edit-core.js +279 -151
- package/dist/editor-actions/block-edit-scope.d.ts +63 -50
- package/dist/editor-actions/block-edit-scope.js +100 -48
- package/dist/editor-actions/block-edit.d.ts +2 -3
- package/dist/editor-actions/block-edit.js +14 -90
- package/dist/editor-actions/commit/history.d.ts +4 -4
- package/dist/editor-actions/commit/history.js +33 -34
- package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
- package/dist/editor-actions/commit/reading-write-gate.js +56 -0
- package/dist/editor-actions/commit/text-batch.d.ts +7 -11
- package/dist/editor-actions/commit/text-batch.js +6 -7
- package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
- package/dist/editor-actions/commit/undo-controller.js +346 -216
- package/dist/editor-actions/container-block-component.d.ts +32 -51
- package/dist/editor-actions/container-block-component.js +66 -92
- package/dist/editor-actions/container-edit.d.ts +4 -2
- package/dist/editor-actions/container-edit.js +14 -44
- package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
- package/dist/editor-actions/container-exit-overrides.js +19 -21
- package/dist/editor-actions/deps.d.ts +25 -32
- package/dist/editor-actions/enter-completion.d.ts +12 -15
- package/dist/editor-actions/enter-completion.js +49 -51
- package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
- package/dist/editor-actions/focus/focus-dispatch.js +28 -50
- package/dist/editor-actions/focus/focus-landing.d.ts +8 -11
- package/dist/editor-actions/focus/focus-landing.js +15 -14
- package/dist/editor-actions/focus/focus.d.ts +3 -2
- package/dist/editor-actions/focus/focus.js +42 -59
- package/dist/editor-actions/index.d.ts +4 -3
- package/dist/editor-actions/index.js +5 -4
- package/dist/editor-actions/inline-range-commit.d.ts +18 -16
- package/dist/editor-actions/inline-range-commit.js +45 -54
- package/dist/editor-actions/leaf-write.d.ts +11 -0
- package/dist/editor-actions/leaf-write.js +102 -0
- package/dist/editor-actions/list-context.d.ts +9 -10
- package/dist/editor-actions/list-context.js +115 -110
- package/dist/editor-actions/list-overrides.d.ts +13 -5
- package/dist/editor-actions/list-overrides.js +36 -12
- package/dist/editor-actions/merge-fallback.d.ts +10 -16
- package/dist/editor-actions/merge-fallback.js +11 -22
- package/dist/editor-actions/nested/container-actions.d.ts +37 -0
- package/dist/editor-actions/nested/container-actions.js +42 -0
- package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
- package/dist/editor-actions/nested/emptied-container.js +5 -0
- package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
- package/dist/editor-actions/nested/nested-actions.js +17 -15
- package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
- package/dist/editor-actions/nested/nested-block-edit.js +40 -134
- package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
- package/dist/editor-actions/nested/nested-focus.js +33 -21
- package/dist/editor-actions/paste-coordinator.d.ts +3 -2
- package/dist/editor-actions/paste-coordinator.js +17 -13
- package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
- package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
- package/dist/editor-actions/plugin/container.d.ts +54 -82
- package/dist/editor-actions/plugin/container.js +105 -188
- package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
- package/dist/editor-actions/plugin/directive-container.js +7 -8
- package/dist/editor-actions/reorder-action.d.ts +7 -12
- package/dist/editor-actions/reorder-action.js +32 -48
- package/dist/editor-actions/reorder-drag.d.ts +12 -8
- package/dist/editor-actions/reorder-drag.js +45 -41
- package/dist/editor-actions/replacement-focus.d.ts +13 -21
- package/dist/editor-actions/replacement-focus.js +32 -33
- package/dist/editor-actions/search-replace.js +71 -67
- package/dist/editor-actions/stored-caret.d.ts +7 -0
- package/dist/editor-actions/stored-caret.js +10 -0
- package/dist/editor-actions/table-context.d.ts +9 -11
- package/dist/editor-actions/table-context.js +70 -93
- package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
- package/dist/editor-actions/unwrap-strategies.js +52 -63
- package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
- package/dist/editor-actions/whole-block-focus-surface.js +43 -53
- package/dist/editor-events.d.ts +25 -29
- package/dist/editor-events.js +17 -28
- package/dist/editor-keys.d.ts +96 -104
- package/dist/editor-keys.js +11 -24
- package/dist/editor-props.d.ts +88 -71
- package/dist/editor-rects.d.ts +23 -34
- package/dist/editor-rects.js +9 -77
- package/dist/env.d.ts +6 -4
- package/dist/env.js +8 -4
- package/dist/index.d.ts +6 -2
- package/dist/index.js +5 -2
- package/dist/inline-menu/inline-menu-session.d.ts +37 -0
- package/dist/inline-menu/inline-menu-session.js +98 -0
- package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
- package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
- package/dist/inline-menu/types.d.ts +77 -0
- package/dist/inline-menu/types.js +7 -0
- package/dist/invariants/child-id-parity.d.ts +23 -0
- package/dist/invariants/child-id-parity.js +39 -0
- package/dist/invariants/commit-paths.d.ts +4 -4
- package/dist/invariants/commit-paths.js +4 -4
- package/dist/invariants/commit-scope.d.ts +4 -4
- package/dist/invariants/commit-scope.js +9 -8
- package/dist/invariants/context-keys.d.ts +2 -5
- package/dist/invariants/context-keys.js +3 -6
- package/dist/invariants/descriptor.d.ts +2 -6
- package/dist/invariants/descriptor.js +2 -6
- package/dist/invariants/inline-transitions.d.ts +9 -16
- package/dist/invariants/inline-transitions.js +10 -18
- package/dist/invariants/install.d.ts +18 -27
- package/dist/invariants/install.js +29 -30
- package/dist/invariants/keeps-a-block.d.ts +7 -0
- package/dist/invariants/keeps-a-block.js +14 -0
- package/dist/invariants/landable-caret.d.ts +5 -7
- package/dist/invariants/landable-caret.js +8 -11
- package/dist/invariants/landing-focus-scroll.d.ts +7 -0
- package/dist/invariants/landing-focus-scroll.js +13 -0
- package/dist/invariants/landing-value.d.ts +13 -0
- package/dist/invariants/landing-value.js +27 -0
- package/dist/invariants/marker-css-parity.d.ts +5 -6
- package/dist/invariants/marker-css-parity.js +11 -12
- package/dist/invariants/measures-in-own-list.d.ts +6 -0
- package/dist/invariants/measures-in-own-list.js +13 -0
- package/dist/invariants/node-shape.d.ts +18 -37
- package/dist/invariants/node-shape.js +123 -79
- package/dist/invariants/open-tail.d.ts +7 -0
- package/dist/invariants/open-tail.js +45 -0
- package/dist/invariants/placement-ends-widget.d.ts +8 -0
- package/dist/invariants/placement-ends-widget.js +13 -0
- package/dist/invariants/registry.d.ts +27 -66
- package/dist/invariants/registry.js +61 -137
- package/dist/invariants/render-fidelity.d.ts +4 -4
- package/dist/invariants/render-fidelity.js +5 -5
- package/dist/invariants/selection-endpoints.d.ts +6 -7
- package/dist/invariants/selection-endpoints.js +18 -16
- package/dist/invariants/single-node-sink.d.ts +4 -5
- package/dist/invariants/single-node-sink.js +4 -5
- package/dist/invariants/snapshot-integrity.d.ts +5 -6
- package/dist/invariants/snapshot-integrity.js +1 -1
- package/dist/invariants/structural-descriptor.d.ts +6 -15
- package/dist/invariants/structural-descriptor.js +6 -15
- package/dist/menu-icons.d.ts +47 -0
- package/dist/menu-icons.js +113 -0
- package/dist/perf/instruments.d.ts +20 -5
- package/dist/perf/instruments.js +35 -15
- package/dist/perf/use-mount-gauge.svelte.js +4 -4
- package/dist/plugin.d.ts +37 -8
- package/dist/plugin.js +100 -77
- package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
- package/dist/plugins/admonitions/admonition-kind.js +12 -10
- package/dist/plugins/admonitions/convert-document.d.ts +5 -5
- package/dist/plugins/admonitions/convert-document.js +8 -7
- package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
- package/dist/plugins/admonitions/gh-alert.js +21 -22
- package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
- package/dist/plugins/admonitions/github-alert-kind.js +28 -37
- package/dist/plugins/admonitions/index.js +2 -2
- package/dist/plugins/admonitions/kinds.d.ts +1 -1
- package/dist/plugins/admonitions/register.js +11 -2
- package/dist/plugins/details/DetailsBlock.svelte +20 -20
- package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
- package/dist/plugins/details/details-disclosure.svelte.js +6 -7
- package/dist/plugins/details/details-kind.d.ts +6 -7
- package/dist/plugins/details/details-kind.js +44 -59
- package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
- package/dist/plugins/emoji/emoji-recognizer.js +7 -14
- package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
- package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
- package/dist/plugins/footnotes/constants.d.ts +2 -0
- package/dist/plugins/footnotes/constants.js +3 -0
- package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
- package/dist/plugins/footnotes/footnote-definition.js +69 -45
- package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
- package/dist/plugins/footnotes/footnote-lookup.js +14 -26
- package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
- package/dist/plugins/footnotes/footnote-numbering.js +22 -31
- package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
- package/dist/plugins/footnotes/footnote-reference.js +8 -13
- package/dist/plugins/footnotes/index.js +2 -3
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
- package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
- package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
- package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
- package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
- package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
- package/dist/plugins/highlight-occurrences/word-char.js +4 -0
- package/dist/plugins/latex/BlockMath.svelte +58 -75
- package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
- package/dist/plugins/latex/MathInline.svelte +10 -9
- package/dist/plugins/latex/flanking.d.ts +1 -0
- package/dist/plugins/latex/flanking.js +3 -0
- package/dist/plugins/latex/index.d.ts +1 -1
- package/dist/plugins/latex/latex-kind.d.ts +4 -4
- package/dist/plugins/latex/latex-kind.js +78 -67
- package/dist/plugins/latex/math-completion.d.ts +1 -1
- package/dist/plugins/latex/math-completion.js +5 -8
- package/dist/plugins/latex/math-layout.d.ts +2 -8
- package/dist/plugins/latex/math-layout.js +0 -9
- package/dist/plugins/latex/math-renderer.d.ts +17 -20
- package/dist/plugins/latex/math-renderer.js +21 -38
- package/dist/plugins/latex/math-source.d.ts +4 -8
- package/dist/plugins/latex/math-source.js +36 -81
- package/dist/plugins/latex/register.d.ts +10 -11
- package/dist/plugins/latex/register.js +24 -10
- package/dist/plugins/latex/renderer.d.ts +9 -10
- package/dist/plugins/latex/renderer.js +9 -24
- package/dist/plugins/mermaid/MermaidBlock.svelte +51 -45
- package/dist/plugins/mermaid/index.js +1 -1
- package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
- package/dist/plugins/mermaid/mermaid-kind.js +30 -47
- package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
- package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
- package/dist/plugins/mermaid/register.d.ts +3 -3
- package/dist/plugins/mermaid/register.js +5 -5
- package/dist/plugins/mermaid/renderer.d.ts +5 -5
- package/dist/plugins/mermaid/renderer.js +8 -11
- package/dist/plugins/parrot/ParrotBlock.svelte +15 -6
- package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
- package/dist/plugins/parrot/parrot-plugin.js +3 -3
- package/dist/plugins/slash-commands/filter.d.ts +23 -0
- package/dist/plugins/slash-commands/filter.js +31 -0
- package/dist/plugins/slash-commands/index.d.ts +2 -0
- package/dist/plugins/slash-commands/index.js +2 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
- package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
- package/dist/plugins/slash-commands/slash-source.js +108 -0
- package/dist/plugins/toc/TocBlock.svelte +23 -22
- package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
- package/dist/plugins/toc/heading-outline.d.ts +7 -12
- package/dist/plugins/toc/heading-outline.js +22 -36
- package/dist/plugins/toc/navigation-queue.d.ts +2 -4
- package/dist/plugins/toc/toc-plugin.d.ts +5 -5
- package/dist/plugins/toc/toc-plugin.js +20 -13
- package/dist/presentation-mode.d.ts +15 -23
- package/dist/presentation-mode.js +19 -25
- package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
- package/dist/reactivity/block-list-state.svelte.js +8 -9
- package/dist/reactivity/block-window.svelte.d.ts +12 -6
- package/dist/reactivity/block-window.svelte.js +44 -17
- package/dist/reactivity/child-list.d.ts +34 -0
- package/dist/reactivity/child-list.js +48 -0
- package/dist/reactivity/content-version.svelte.d.ts +4 -7
- package/dist/reactivity/content-version.svelte.js +3 -5
- package/dist/reactivity/hold-across.d.ts +39 -0
- package/dist/reactivity/hold-across.js +57 -0
- package/dist/reactivity/layout-state.svelte.d.ts +27 -0
- package/dist/reactivity/layout-state.svelte.js +51 -0
- package/dist/reactivity/list-tree.d.ts +39 -0
- package/dist/reactivity/list-tree.js +132 -0
- package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
- package/dist/reactivity/list-windowing.svelte.js +141 -310
- package/dist/reactivity/measure-batch.d.ts +6 -8
- package/dist/reactivity/measure-batch.js +5 -6
- package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
- package/dist/reactivity/publish-ref.svelte.js +21 -85
- package/dist/reactivity/scope-geometry.d.ts +6 -13
- package/dist/reactivity/scope-geometry.js +7 -14
- package/dist/reactivity/state-registry.d.ts +5 -5
- package/dist/reactivity/state-registry.js +11 -15
- package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
- package/dist/reactivity/use-container-windowing.svelte.js +64 -74
- package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
- package/dist/reactivity/use-measured-child.svelte.js +41 -0
- package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
- package/dist/reactivity/use-window-floor.svelte.js +27 -0
- package/dist/reactivity/window-slice.d.ts +4 -4
- package/dist/reactivity/window-slice.js +0 -2
- package/dist/renderer-slot.d.ts +48 -0
- package/dist/renderer-slot.js +85 -0
- package/dist/scan-index.d.ts +4 -4
- package/dist/scan-index.js +4 -4
- package/dist/schema/block-commands.d.ts +69 -54
- package/dist/schema/block-commands.js +91 -104
- package/dist/schema/block-completions.d.ts +16 -19
- package/dist/schema/block-completions.js +25 -32
- package/dist/schema/block-component-registry.d.ts +13 -14
- package/dist/schema/block-component-registry.js +19 -17
- package/dist/schema/block-kind-descriptor.d.ts +234 -168
- package/dist/schema/block-kind-descriptor.js +151 -66
- package/dist/schema/block-openers.d.ts +48 -39
- package/dist/schema/block-openers.js +73 -83
- package/dist/schema/built-in-descriptors.d.ts +3 -5
- package/dist/schema/built-in-descriptors.js +96 -80
- package/dist/schema/child-spans.d.ts +12 -10
- package/dist/schema/child-spans.js +68 -34
- package/dist/schema/closure.d.ts +18 -16
- package/dist/schema/closure.js +24 -14
- package/dist/schema/command-id.d.ts +6 -8
- package/dist/schema/command-id.js +20 -25
- package/dist/schema/commands.d.ts +78 -84
- package/dist/schema/commands.js +152 -117
- package/dist/schema/container-raw.d.ts +51 -11
- package/dist/schema/container-raw.js +143 -14
- package/dist/schema/container-rebuilders.d.ts +17 -15
- package/dist/schema/container-rebuilders.js +30 -22
- package/dist/schema/context-actions.d.ts +25 -13
- package/dist/schema/context-actions.js +32 -17
- package/dist/schema/define-plugin-block.d.ts +8 -6
- package/dist/schema/define-plugin-block.js +6 -4
- package/dist/schema/fenced-code-raw.d.ts +30 -17
- package/dist/schema/fenced-code-raw.js +155 -107
- package/dist/schema/global-commands.d.ts +6 -6
- package/dist/schema/global-commands.js +14 -22
- package/dist/schema/height-estimates.d.ts +31 -0
- package/dist/schema/height-estimates.js +64 -0
- package/dist/schema/inline-construct-policy.d.ts +42 -55
- package/dist/schema/inline-construct-policy.js +36 -35
- package/dist/schema/insert-catalogue.d.ts +30 -0
- package/dist/schema/insert-catalogue.js +95 -0
- package/dist/schema/keybinding-overrides.d.ts +9 -11
- package/dist/schema/keybinding-overrides.js +1 -1
- package/dist/schema/keybindings.d.ts +15 -7
- package/dist/schema/keybindings.js +21 -9
- package/dist/schema/merge-rules.d.ts +5 -7
- package/dist/schema/merge-rules.js +7 -9
- package/dist/schema/opener-priorities.d.ts +4 -4
- package/dist/schema/opener-priorities.js +4 -4
- package/dist/schema/operations.d.ts +8 -10
- package/dist/schema/operations.js +3 -3
- package/dist/schema/page-role.d.ts +14 -0
- package/dist/schema/page-role.js +19 -0
- package/dist/schema/plugin-activation.d.ts +4 -6
- package/dist/schema/plugin-activation.js +12 -10
- package/dist/schema/plugin-editor-context.d.ts +25 -10
- package/dist/schema/plugin-editor-context.js +40 -9
- package/dist/schema/plugin-install.d.ts +49 -17
- package/dist/schema/plugin-install.js +51 -25
- package/dist/schema/plugin-kind.d.ts +12 -8
- package/dist/schema/plugin-kind.js +35 -42
- package/dist/schema/plugin-name.js +3 -3
- package/dist/schema/plugin-registry.d.ts +54 -0
- package/dist/schema/plugin-registry.js +70 -0
- package/dist/schema/reading.d.ts +23 -0
- package/dist/schema/reading.js +7 -0
- package/dist/schema/register-once.d.ts +3 -5
- package/dist/schema/register-once.js +7 -16
- package/dist/schema/registration-checks.d.ts +12 -16
- package/dist/schema/registration-checks.js +35 -51
- package/dist/schema/registration-pairs.d.ts +54 -0
- package/dist/schema/registration-pairs.js +48 -0
- package/dist/schema/registration-pending.d.ts +8 -12
- package/dist/schema/registration-pending.js +9 -9
- package/dist/schema/registry-reset.d.ts +8 -4
- package/dist/schema/registry-reset.js +13 -26
- package/dist/schema/registry-view.d.ts +25 -13
- package/dist/schema/registry-view.js +26 -20
- package/dist/schema/reserved-chords.d.ts +9 -10
- package/dist/schema/reserved-chords.js +63 -80
- package/dist/schema/reserved-chrome.d.ts +12 -11
- package/dist/schema/reserved-chrome.js +15 -11
- package/dist/schema/setext-raw.d.ts +13 -0
- package/dist/schema/setext-raw.js +33 -0
- package/dist/schema/stored-as.d.ts +20 -0
- package/dist/schema/stored-as.js +6 -0
- package/dist/schema/table-cell-raw.d.ts +18 -7
- package/dist/schema/table-cell-raw.js +28 -7
- package/dist/schema/whole-block-unit.d.ts +5 -4
- package/dist/schema/whole-block-unit.js +5 -4
- package/dist/search/document-scan.d.ts +3 -3
- package/dist/search/document-scan.js +2 -2
- package/dist/search/matcher.d.ts +1 -1
- package/dist/search/regex-executor.d.ts +5 -6
- package/dist/search/regex-executor.js +6 -8
- package/dist/search/replace.d.ts +2 -5
- package/dist/search/replace.js +2 -5
- package/dist/search/search-state.svelte.d.ts +5 -5
- package/dist/search/search-state.svelte.js +12 -16
- package/dist/selection/autoscroll.d.ts +6 -9
- package/dist/selection/block-hit-test.d.ts +16 -24
- package/dist/selection/block-hit-test.js +29 -22
- package/dist/selection/caret-doors.d.ts +15 -14
- package/dist/selection/caret-doors.js +37 -26
- package/dist/selection/caret-landing.d.ts +62 -0
- package/dist/selection/caret-landing.js +157 -0
- package/dist/selection/caret-restore.d.ts +17 -10
- package/dist/selection/caret-restore.js +10 -22
- package/dist/selection/caret-target.d.ts +30 -0
- package/dist/selection/caret-target.js +84 -0
- package/dist/selection/char-endpoint-snap.d.ts +6 -10
- package/dist/selection/char-endpoint-snap.js +8 -14
- package/dist/selection/clipboard-text.d.ts +5 -12
- package/dist/selection/clipboard-text.js +69 -172
- package/dist/selection/covered-block.d.ts +6 -8
- package/dist/selection/covered-block.js +8 -19
- package/dist/selection/cross-block/clipboard.d.ts +3 -2
- package/dist/selection/cross-block/clipboard.js +13 -4
- package/dist/selection/cross-block/dispatch.d.ts +47 -43
- package/dist/selection/cross-block/dispatch.js +12 -23
- package/dist/selection/cross-block/format-range.d.ts +18 -21
- package/dist/selection/cross-block/format-range.js +104 -103
- package/dist/selection/cross-block/format-toggle.d.ts +10 -15
- package/dist/selection/cross-block/format-toggle.js +28 -33
- package/dist/selection/cross-block/keydown.d.ts +4 -4
- package/dist/selection/cross-block/keydown.js +92 -125
- package/dist/selection/cross-block/ops.d.ts +19 -34
- package/dist/selection/cross-block/ops.js +110 -95
- package/dist/selection/cross-block/paste.d.ts +2 -3
- package/dist/selection/cross-block/paste.js +59 -96
- package/dist/selection/cross-block/pointer.d.ts +17 -15
- package/dist/selection/cross-block/pointer.js +74 -25
- package/dist/selection/cross-block/type-replace.d.ts +4 -6
- package/dist/selection/cross-block/type-replace.js +51 -134
- package/dist/selection/dead-space-caret.d.ts +19 -30
- package/dist/selection/dead-space-caret.js +70 -88
- package/dist/selection/drag-pointer.d.ts +7 -9
- package/dist/selection/drag-pointer.js +23 -33
- package/dist/selection/gap-caret.d.ts +17 -28
- package/dist/selection/gap-caret.js +14 -26
- package/dist/selection/grid-selection.d.ts +12 -0
- package/dist/selection/grid-selection.js +22 -0
- package/dist/selection/keyboard-extend.d.ts +27 -40
- package/dist/selection/keyboard-extend.js +94 -117
- package/dist/selection/multi-click.d.ts +13 -18
- package/dist/selection/multi-click.js +32 -38
- package/dist/selection/native-bridge.d.ts +29 -39
- package/dist/selection/native-bridge.js +78 -127
- package/dist/selection/nearest-block.d.ts +17 -12
- package/dist/selection/nearest-block.js +37 -18
- package/dist/selection/path-lookup.d.ts +25 -16
- package/dist/selection/path-lookup.js +101 -18
- package/dist/selection/path-math.d.ts +9 -11
- package/dist/selection/path-math.js +5 -7
- package/dist/selection/pointer-gesture.d.ts +5 -5
- package/dist/selection/pointer-gesture.js +5 -5
- package/dist/selection/pointer-session.d.ts +10 -16
- package/dist/selection/pointer-session.js +6 -7
- package/dist/selection/primitives.d.ts +64 -40
- package/dist/selection/primitives.js +57 -67
- package/dist/selection/range-coverage.d.ts +94 -0
- package/dist/selection/range-coverage.js +365 -0
- package/dist/selection/range-delete-ceremony.d.ts +28 -74
- package/dist/selection/range-delete-ceremony.js +100 -141
- package/dist/selection/range-delete-chrome.d.ts +20 -33
- package/dist/selection/range-delete-chrome.js +53 -78
- package/dist/selection/range-delete-table-coverage.d.ts +11 -25
- package/dist/selection/range-delete-table-coverage.js +42 -112
- package/dist/selection/range-delete-table.d.ts +14 -12
- package/dist/selection/range-delete-table.js +106 -310
- package/dist/selection/range-delete.d.ts +18 -23
- package/dist/selection/range-delete.js +83 -123
- package/dist/selection/round-trip-restore.d.ts +18 -0
- package/dist/selection/round-trip-restore.js +19 -0
- package/dist/selection/selection-announcer.d.ts +17 -0
- package/dist/selection/selection-announcer.js +25 -0
- package/dist/selection/selection-description.d.ts +4 -3
- package/dist/selection/selection-description.js +5 -4
- package/dist/selection/selection-drop.d.ts +34 -16
- package/dist/selection/selection-drop.js +159 -95
- package/dist/selection/selection-restore.d.ts +20 -33
- package/dist/selection/selection-restore.js +21 -44
- package/dist/selection/selection-state.svelte.d.ts +50 -42
- package/dist/selection/selection-state.svelte.js +144 -98
- package/dist/selection/shared-keydown.d.ts +22 -27
- package/dist/selection/shared-keydown.js +25 -45
- package/dist/selection/table-endpoint-snap.d.ts +17 -41
- package/dist/selection/table-endpoint-snap.js +54 -80
- package/dist/selection/table-rect-extend.d.ts +3 -6
- package/dist/selection/table-rect-extend.js +19 -14
- package/dist/styles/editor-theme.css +60 -53
- package/dist/styles/editor.css +201 -143
- package/dist/testing/conformance-core.d.ts +50 -18
- package/dist/testing/conformance-core.js +88 -50
- package/dist/testing/container-conformance.d.ts +48 -84
- package/dist/testing/container-conformance.js +159 -285
- package/dist/testing/headless-actions.d.ts +34 -19
- package/dist/testing/headless-actions.js +116 -65
- package/dist/testing/headless-block-list.svelte.d.ts +16 -0
- package/dist/testing/headless-block-list.svelte.js +22 -0
- package/dist/testing/inline-conformance.d.ts +15 -22
- package/dist/testing/inline-conformance.js +131 -148
- package/dist/testing/kind-conformance.d.ts +19 -24
- package/dist/testing/kind-conformance.js +204 -117
- package/dist/testing/kit-reading.d.ts +7 -0
- package/dist/testing/kit-reading.js +16 -0
- package/dist/testing/mount-dom-stubs.d.ts +4 -5
- package/dist/testing/mount-dom-stubs.js +8 -5
- package/dist/testing/parse-convergence.d.ts +10 -10
- package/dist/testing/parse-convergence.js +14 -49
- package/dist/testing.d.ts +13 -9
- package/dist/testing.js +28 -38
- package/dist/tree-operations/blockquote.d.ts +8 -14
- package/dist/tree-operations/blockquote.js +25 -45
- package/dist/tree-operations/chain-rebuild.d.ts +34 -25
- package/dist/tree-operations/chain-rebuild.js +115 -52
- package/dist/tree-operations/children.d.ts +5 -9
- package/dist/tree-operations/children.js +7 -11
- package/dist/tree-operations/cleanup.d.ts +6 -7
- package/dist/tree-operations/cleanup.js +14 -11
- package/dist/tree-operations/clone.js +5 -4
- package/dist/tree-operations/container-lift.d.ts +10 -5
- package/dist/tree-operations/container-lift.js +20 -14
- package/dist/tree-operations/container-offsets.d.ts +22 -0
- package/dist/tree-operations/container-offsets.js +89 -0
- package/dist/tree-operations/content-write.d.ts +52 -29
- package/dist/tree-operations/content-write.js +155 -110
- package/dist/tree-operations/index.d.ts +4 -4
- package/dist/tree-operations/index.js +4 -4
- package/dist/tree-operations/keep-one-block.d.ts +10 -0
- package/dist/tree-operations/keep-one-block.js +19 -0
- package/dist/tree-operations/leaf-range.d.ts +33 -0
- package/dist/tree-operations/leaf-range.js +67 -0
- package/dist/tree-operations/list/empty-check.d.ts +2 -3
- package/dist/tree-operations/list/empty-check.js +4 -4
- package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
- package/dist/tree-operations/list/exit-replacement.js +4 -9
- package/dist/tree-operations/list/item-partition.d.ts +2 -2
- package/dist/tree-operations/list/item-partition.js +2 -2
- package/dist/tree-operations/list/list-builders.d.ts +18 -16
- package/dist/tree-operations/list/list-builders.js +59 -30
- package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
- package/dist/tree-operations/list/ordered-markers.js +7 -16
- package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
- package/dist/tree-operations/list/reconcile-task.js +80 -23
- package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
- package/dist/tree-operations/list/sublist-separator.js +20 -27
- package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
- package/dist/tree-operations/list/task-paragraph.js +54 -0
- package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
- package/dist/tree-operations/list/unwrap-merge.js +44 -79
- package/dist/tree-operations/node-ops.d.ts +30 -52
- package/dist/tree-operations/node-ops.js +152 -218
- package/dist/tree-operations/node-primitives.d.ts +44 -31
- package/dist/tree-operations/node-primitives.js +84 -60
- package/dist/tree-operations/open-tail.d.ts +25 -0
- package/dist/tree-operations/open-tail.js +100 -0
- package/dist/tree-operations/parse-block.d.ts +15 -2
- package/dist/tree-operations/parse-block.js +19 -4
- package/dist/tree-operations/paste/apply.d.ts +7 -8
- package/dist/tree-operations/paste/apply.js +33 -63
- package/dist/tree-operations/paste/body-write.d.ts +8 -6
- package/dist/tree-operations/paste/body-write.js +13 -14
- package/dist/tree-operations/paste/container-match.d.ts +7 -10
- package/dist/tree-operations/paste/container-match.js +76 -58
- package/dist/tree-operations/paste/container-paste.d.ts +3 -3
- package/dist/tree-operations/paste/container-paste.js +3 -3
- package/dist/tree-operations/paste/dispatch.d.ts +26 -29
- package/dist/tree-operations/paste/dispatch.js +68 -53
- package/dist/tree-operations/paste/focus-target.d.ts +11 -14
- package/dist/tree-operations/paste/focus-target.js +13 -18
- package/dist/tree-operations/paste/hooks.d.ts +7 -12
- package/dist/tree-operations/paste/hooks.js +49 -46
- package/dist/tree-operations/paste/line-ending.d.ts +11 -0
- package/dist/tree-operations/paste/line-ending.js +32 -0
- package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
- package/dist/tree-operations/paste/list-absorb.js +17 -19
- package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
- package/dist/tree-operations/paste/list-break-out.js +24 -32
- package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
- package/dist/tree-operations/paste/parent-scope.js +9 -16
- package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
- package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
- package/dist/tree-operations/paste/paste-replacement.js +73 -42
- package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
- package/dist/tree-operations/paste/paste-transforms.js +18 -27
- package/dist/tree-operations/paste/replacement-parse.d.ts +9 -7
- package/dist/tree-operations/paste/replacement-parse.js +12 -10
- package/dist/tree-operations/paste/strategy.d.ts +1 -1
- package/dist/tree-operations/paste/strategy.js +1 -1
- package/dist/tree-operations/paste/table-slice.js +15 -10
- package/dist/tree-operations/paste-surfaces.d.ts +18 -29
- package/dist/tree-operations/paste-surfaces.js +14 -10
- package/dist/tree-operations/path-mutate.d.ts +7 -8
- package/dist/tree-operations/path-mutate.js +4 -4
- package/dist/tree-operations/reorder-unit.d.ts +4 -5
- package/dist/tree-operations/reorder-unit.js +5 -6
- package/dist/tree-operations/reorder.d.ts +7 -9
- package/dist/tree-operations/reorder.js +39 -40
- package/dist/tree-operations/settle.d.ts +42 -53
- package/dist/tree-operations/settle.js +241 -162
- package/dist/tree-operations/sharing.d.ts +5 -5
- package/dist/tree-operations/splice-many.d.ts +5 -5
- package/dist/tree-operations/splice-many.js +5 -5
- package/dist/tree-operations/stored-as.d.ts +13 -0
- package/dist/tree-operations/stored-as.js +48 -0
- package/dist/tree-operations/structural-change.d.ts +11 -15
- package/dist/tree-operations/structural-change.js +10 -14
- package/dist/tree-operations/structural-suffix.d.ts +22 -0
- package/dist/tree-operations/structural-suffix.js +61 -0
- package/dist/tree-operations/sub-table-copy.d.ts +7 -0
- package/dist/tree-operations/sub-table-copy.js +40 -36
- package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
- package/dist/tree-operations/table-grid-clipboard.js +11 -36
- package/dist/tree-operations/table-mutations.d.ts +7 -3
- package/dist/tree-operations/table-mutations.js +45 -9
- package/dist/tree-operations/unshare.d.ts +11 -15
- package/dist/tree-operations/unshare.js +15 -17
- package/dist/undo/manager.js +1 -1
- package/dist/undo/types.d.ts +2 -2
- package/docs/guide/consumer-guide.md +327 -205
- package/docs/guide/directives.md +7 -7
- package/docs/guide/plugin-api.md +253 -185
- package/docs/guide/plugin-guide.md +332 -235
- package/docs/guide/plugin-testing.md +96 -82
- package/package.json +12 -16
- package/dist/ambient/ambient-cursor.d.ts +0 -41
- package/dist/ambient/ambient-cursor.js +0 -120
- package/dist/components/blocks/code/code-paste.d.ts +0 -24
- package/dist/components/blocks/code/code-paste.js +0 -21
- package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
- package/dist/components/blocks/table/cell-clipboard.js +0 -67
- package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
- package/dist/components/blocks/text/hidden-suffix.js +0 -15
- package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
- package/dist/components/image/image-source-bytes.d.ts +0 -15
- package/dist/components/image/image-source-bytes.js +0 -80
- package/dist/cursor/content-offsets.d.ts +0 -29
- package/dist/cursor/content-offsets.js +0 -151
- package/dist/cursor/reveal-anchor.d.ts +0 -30
- package/dist/cursor/reveal-anchor.js +0 -31
- package/dist/cursor/scroll-hold.d.ts +0 -10
- package/dist/cursor/scroll-hold.js +0 -22
- package/dist/invariants/split-landing.d.ts +0 -8
- package/dist/invariants/split-landing.js +0 -15
- package/dist/tree-operations/list/terminator.d.ts +0 -17
- package/dist/tree-operations/list/terminator.js +0 -60
- package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -31
- package/dist/tree-operations/paste/replace-block-at-parent.js +0 -78
|
@@ -1,54 +1,29 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
* identity IS the scope: the mount registry keys on it, so a mount in one scope cannot wake
|
|
4
|
-
* a waiter in another (a nested level, a sibling container, a second editor instance).
|
|
5
|
-
* Neither accessor is reactive: every owner mints the slots over a plain array, so a `get`
|
|
6
|
-
* registers no dependency and a `set` wakes no effect; `whenRefMounted` is how a caller waits.
|
|
7
|
-
*/
|
|
1
|
+
/** One block list's child-component refs, reached only through these accessors. Neither is
|
|
2
|
+
* reactive; `revealChildOrWait` is how a caller waits for a child to mount. */
|
|
8
3
|
export interface RefSlots<T> {
|
|
9
4
|
set(index: number, ref: T | undefined): void;
|
|
10
5
|
get(index: number): T | undefined;
|
|
11
6
|
}
|
|
12
|
-
/**
|
|
13
|
-
*
|
|
14
|
-
* so a swapped array takes each cleanup's clear with it and strands the dead ref in the
|
|
15
|
-
* live one. Publish a new set of contents with `replaceRefs`. */
|
|
7
|
+
/** Takes the array itself, never a getter: a cleanup run against a replaced array would leave a
|
|
8
|
+
* dead ref in the live one. Replace contents with `replaceRefs`. */
|
|
16
9
|
export declare function refSlotsOver<T>(refs: (T | undefined)[]): RefSlots<T>;
|
|
17
|
-
/**
|
|
18
|
-
* contents
|
|
10
|
+
/** Writes a whole array of refs in place, the only supported way to replace a list's
|
|
11
|
+
* contents at once (see `refSlotsOver` for why the array's identity matters). */
|
|
19
12
|
export declare function replaceRefs<T>(target: (T | undefined)[], values: readonly (T | undefined)[]): void;
|
|
20
|
-
/**
|
|
21
|
-
*
|
|
22
|
-
* when the iteration index shifts. Cleanup is conditional because effect-cleanup order
|
|
23
|
-
* across siblings isn't guaranteed, and an unconditional clear stomps a neighbor's slot.
|
|
24
|
-
* `el` is the ref's own box, which is what makes `isSlotDetached` answerable.
|
|
25
|
-
*/
|
|
13
|
+
/** Replaces `bind:this={refs[i]}` in a keyed each, which doesn't re-target when the index
|
|
14
|
+
* shifts. `el` is the ref's own box, which `isSlotDetached` reads. */
|
|
26
15
|
export declare function publishRefSlot<T>(slots: RefSlots<T>, index: number, ref: T | undefined, el?: Element | null): () => void;
|
|
27
16
|
export interface RevealChildOptions<T> {
|
|
28
|
-
/** This
|
|
17
|
+
/** This list's ref entries: what the wait reads, and clears when a ref left the DOM. */
|
|
29
18
|
readonly slots: RefSlots<T>;
|
|
30
|
-
/** This
|
|
19
|
+
/** This list's child count; an index at or past it can never mount. */
|
|
31
20
|
readonly childCount: number;
|
|
32
|
-
/** Scroll this
|
|
21
|
+
/** Scroll this list so child `index` is in the mounted range; resolves after a tick. */
|
|
33
22
|
readonly revealChild: (index: number) => Promise<void>;
|
|
34
|
-
/** True
|
|
35
|
-
*
|
|
36
|
-
|
|
37
|
-
* fallback, not a live path. */
|
|
38
|
-
readonly isInWindow?: (index: number) => boolean;
|
|
23
|
+
/** True when `index` is in the list's mounted range after `revealChild`, which lets the wait
|
|
24
|
+
* give up instead of hanging (VR-5). */
|
|
25
|
+
readonly isInWindow: (index: number) => boolean;
|
|
39
26
|
}
|
|
40
|
-
/**
|
|
41
|
-
*
|
|
42
|
-
* scroll it in, and await its mount. Shared by the canonical container reveal and TableBlock's
|
|
43
|
-
* hand-rolled one, so the "is this slot a live mount" gate has one home. Termination (VR-5): only
|
|
44
|
-
* a mount at this index in THIS scope wakes the wait, so a windowing caller proves membership
|
|
45
|
-
* first and a non-windowing one races each wait against a tick, rather than parking forever.
|
|
46
|
-
*/
|
|
27
|
+
/** Brings child `index` into the mounted range before a caller reads its ref: drops a ref that
|
|
28
|
+
* left the DOM, scrolls the child in, and waits for its mount, giving up when it cannot come. */
|
|
47
29
|
export declare function revealChildOrWait<T>(index: number, opts: RevealChildOptions<T>): Promise<void>;
|
|
48
|
-
/**
|
|
49
|
-
* Resolve when slot `index` of `slots` is (or becomes) populated. Event-driven, woken by
|
|
50
|
-
* `publishRefSlot` on a real mount, never a timer (Design Rule #2 / G4.4). A wake can still
|
|
51
|
-
* be spurious within one scope: a mount that unpublishes in the same flush leaves the slot
|
|
52
|
-
* empty, so the caller re-checks.
|
|
53
|
-
*/
|
|
54
|
-
export declare function whenRefMounted<T>(slots: RefSlots<T>, index: number): Promise<void>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
/** A block list's child-component refs, and scrolling a child into the mounted range before
|
|
2
|
+
* reading its ref. */
|
|
1
3
|
import { tick, untrack } from 'svelte';
|
|
2
|
-
/**
|
|
3
|
-
*
|
|
4
|
-
* so a swapped array takes each cleanup's clear with it and strands the dead ref in the
|
|
5
|
-
* live one. Publish a new set of contents with `replaceRefs`. */
|
|
4
|
+
/** Takes the array itself, never a getter: a cleanup run against a replaced array would leave a
|
|
5
|
+
* dead ref in the live one. Replace contents with `replaceRefs`. */
|
|
6
6
|
export function refSlotsOver(refs) {
|
|
7
7
|
return {
|
|
8
8
|
set: (index, ref) => {
|
|
@@ -11,28 +11,22 @@ export function refSlotsOver(refs) {
|
|
|
11
11
|
get: (index) => refs[index]
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
|
-
/**
|
|
15
|
-
* contents
|
|
14
|
+
/** Writes a whole array of refs in place, the only supported way to replace a list's
|
|
15
|
+
* contents at once (see `refSlotsOver` for why the array's identity matters). */
|
|
16
16
|
export function replaceRefs(target, values) {
|
|
17
17
|
target.length = values.length;
|
|
18
18
|
for (let i = 0; i < values.length; i++)
|
|
19
19
|
target[i] = values[i];
|
|
20
20
|
}
|
|
21
|
-
/**
|
|
22
|
-
*
|
|
23
|
-
* when the iteration index shifts. Cleanup is conditional because effect-cleanup order
|
|
24
|
-
* across siblings isn't guaranteed, and an unconditional clear stomps a neighbor's slot.
|
|
25
|
-
* `el` is the ref's own box, which is what makes `isSlotDetached` answerable.
|
|
26
|
-
*/
|
|
21
|
+
/** Replaces `bind:this={refs[i]}` in a keyed each, which doesn't re-target when the index
|
|
22
|
+
* shifts. `el` is the ref's own box, which `isSlotDetached` reads. */
|
|
27
23
|
export function publishRefSlot(slots, index, ref, el) {
|
|
28
24
|
slots.set(index, ref);
|
|
29
25
|
if (el && typeof ref === 'object' && ref !== null)
|
|
30
26
|
publishedElements.set(ref, el);
|
|
31
|
-
//
|
|
32
|
-
// ref; untracked, since
|
|
27
|
+
// Sibling cleanups run in no set order, so a cleanup clears the entry only if it still holds
|
|
28
|
+
// this mount's ref; read untracked, since writers run inside effects.
|
|
33
29
|
const publishedRef = untrack(() => slots.get(index));
|
|
34
|
-
if (publishedRef !== undefined)
|
|
35
|
-
resolveMountWaiters(slots, index);
|
|
36
30
|
return () => {
|
|
37
31
|
if (slots.get(index) === publishedRef) {
|
|
38
32
|
slots.set(index, undefined);
|
|
@@ -40,17 +34,11 @@ export function publishRefSlot(slots, index, ref, el) {
|
|
|
40
34
|
};
|
|
41
35
|
}
|
|
42
36
|
// ── Mount attachment ─────────────────────────────────────────────────────────
|
|
43
|
-
// Keyed on ref
|
|
44
|
-
//
|
|
45
|
-
// so the entry dies with the ref rather than outliving the scope.
|
|
37
|
+
// Keyed on the ref, not (slots, index): a wholesale `replaceRefs` moves a saved ref that no
|
|
38
|
+
// writer will run for again, and only the ref itself still knows its box.
|
|
46
39
|
const publishedElements = new WeakMap();
|
|
47
|
-
/**
|
|
48
|
-
*
|
|
49
|
-
* question every reveal asks before trusting a filled slot — and it is an ATTACHMENT
|
|
50
|
-
* question, never a window-membership one: a programmatic scroll moves the slice a flush
|
|
51
|
-
* before the DOM follows, so "off-window" clears refs whose components are still mounted
|
|
52
|
-
* and which nothing re-publishes. A ref with no recorded box degrades to live.
|
|
53
|
-
*/
|
|
40
|
+
/** True when the entry's ref is a mount whose element already left the DOM. Asks the DOM, never
|
|
41
|
+
* the mounted range, which moves a flush before the DOM follows. A ref with no box is live. */
|
|
54
42
|
function isSlotDetached(slots, index) {
|
|
55
43
|
const ref = slots.get(index);
|
|
56
44
|
if (typeof ref !== 'object' || ref === null)
|
|
@@ -58,16 +46,8 @@ function isSlotDetached(slots, index) {
|
|
|
58
46
|
const el = publishedElements.get(ref);
|
|
59
47
|
return el !== undefined && !el.isConnected;
|
|
60
48
|
}
|
|
61
|
-
/**
|
|
62
|
-
* child
|
|
63
|
-
const MAX_MOUNT_REWAITS = 64;
|
|
64
|
-
/**
|
|
65
|
-
* Bring child `index` into its window before a caller reads its ref: drop a detached ref,
|
|
66
|
-
* scroll it in, and await its mount. Shared by the canonical container reveal and TableBlock's
|
|
67
|
-
* hand-rolled one, so the "is this slot a live mount" gate has one home. Termination (VR-5): only
|
|
68
|
-
* a mount at this index in THIS scope wakes the wait, so a windowing caller proves membership
|
|
69
|
-
* first and a non-windowing one races each wait against a tick, rather than parking forever.
|
|
70
|
-
*/
|
|
49
|
+
/** Brings child `index` into the mounted range before a caller reads its ref: drops a ref that
|
|
50
|
+
* left the DOM, scrolls the child in, and waits for its mount, giving up when it cannot come. */
|
|
71
51
|
export async function revealChildOrWait(index, opts) {
|
|
72
52
|
const detached = isSlotDetached(opts.slots, index);
|
|
73
53
|
if (index >= opts.childCount || (!detached && opts.slots.get(index)))
|
|
@@ -75,54 +55,10 @@ export async function revealChildOrWait(index, opts) {
|
|
|
75
55
|
if (detached)
|
|
76
56
|
opts.slots.set(index, undefined);
|
|
77
57
|
await opts.revealChild(index);
|
|
78
|
-
|
|
58
|
+
// Outside the recomputed range the mount cannot fire, so give up now.
|
|
59
|
+
if (opts.slots.get(index) || !opts.isInWindow(index))
|
|
79
60
|
return;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
return;
|
|
84
|
-
// In-window, the mount flush is at most one tick away; still unpublished after it
|
|
85
|
-
// means a failed-render boundary left bind:this unset, waking no waiter.
|
|
86
|
-
await tick();
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
// Membership unknowable: bounded mount-wait, each raced against a tick so a child that
|
|
90
|
-
// never publishes degrades within the cap instead of parking forever.
|
|
91
|
-
let rewaits = 0;
|
|
92
|
-
while (!opts.slots.get(index) && rewaits++ < MAX_MOUNT_REWAITS) {
|
|
93
|
-
await Promise.race([whenRefMounted(opts.slots, index), tick()]);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
// ── Mount-await registry ─────────────────────────────────────────────────────
|
|
97
|
-
const mountWaiters = new WeakMap();
|
|
98
|
-
/**
|
|
99
|
-
* Resolve when slot `index` of `slots` is (or becomes) populated. Event-driven, woken by
|
|
100
|
-
* `publishRefSlot` on a real mount, never a timer (Design Rule #2 / G4.4). A wake can still
|
|
101
|
-
* be spurious within one scope: a mount that unpublishes in the same flush leaves the slot
|
|
102
|
-
* empty, so the caller re-checks.
|
|
103
|
-
*/
|
|
104
|
-
export function whenRefMounted(slots, index) {
|
|
105
|
-
if (slots.get(index) !== undefined)
|
|
106
|
-
return Promise.resolve();
|
|
107
|
-
return new Promise((resolve) => {
|
|
108
|
-
let byIndex = mountWaiters.get(slots);
|
|
109
|
-
if (!byIndex) {
|
|
110
|
-
byIndex = new Map();
|
|
111
|
-
mountWaiters.set(slots, byIndex);
|
|
112
|
-
}
|
|
113
|
-
const list = byIndex.get(index);
|
|
114
|
-
if (list)
|
|
115
|
-
list.push(resolve);
|
|
116
|
-
else
|
|
117
|
-
byIndex.set(index, [resolve]);
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
function resolveMountWaiters(slots, index) {
|
|
121
|
-
const byIndex = mountWaiters.get(slots);
|
|
122
|
-
const list = byIndex?.get(index);
|
|
123
|
-
if (!byIndex || !list)
|
|
124
|
-
return;
|
|
125
|
-
byIndex.delete(index);
|
|
126
|
-
for (const resolve of list)
|
|
127
|
-
resolve();
|
|
61
|
+
// Inside it the mount flush is at most one tick away; an entry still empty after it means a
|
|
62
|
+
// failed render left `bind:this` unset.
|
|
63
|
+
await tick();
|
|
128
64
|
}
|
|
@@ -1,18 +1,11 @@
|
|
|
1
|
-
/** This
|
|
2
|
-
* the
|
|
3
|
-
* back to the port, then a constant, when neither is measurable. */
|
|
1
|
+
/** This list's own content element, not the scroll container: nested content lays out narrower,
|
|
2
|
+
* and the height estimator wraps more lines the narrower it gets. */
|
|
4
3
|
export declare function estimateWidth(listEl: {
|
|
5
4
|
clientWidth: number;
|
|
6
5
|
} | null, portWidth: number): number;
|
|
7
|
-
/**
|
|
8
|
-
*
|
|
9
|
-
* into the scope's local range. The two port terms are distinct and both load-bearing: an editor
|
|
10
|
-
* embedded partway down a page-scrolled shell has a nonzero scroll AND page chrome above it, and
|
|
11
|
-
* conflating them slices the window a band off.
|
|
12
|
-
*/
|
|
6
|
+
/** The offset that converts the scroll container's `scrollTop` into this list's range. Viewport
|
|
7
|
+
* top and scroll offset are separate terms: an editor partway down a scrolling page has both. */
|
|
13
8
|
export declare function listTopWithinContent(listTop: number, viewportTop: number, scrollTop: number): number;
|
|
14
|
-
/**
|
|
15
|
-
*
|
|
16
|
-
* mount O(viewport × active-scope-count) blocks. The viewport arrives as top + client
|
|
17
|
-
* height so the intersection excludes the scrollbar/border. */
|
|
9
|
+
/** Each nested list covers only part of the viewport; windowing each against the full height
|
|
10
|
+
* would mount O(viewport × lists) blocks. Pass client height, which leaves out the scrollbar. */
|
|
18
11
|
export declare function effectiveViewportHeight(viewportTop: number, viewportHeight: number, scopeTop: number, scopeHeight: number): number;
|
|
@@ -1,27 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Pure per-
|
|
2
|
+
* Pure per-list geometry for windowing, kept apart from the reactive wiring in
|
|
3
3
|
* `list-windowing.svelte.ts` so it can be unit-tested without mounting a component.
|
|
4
4
|
*/
|
|
5
5
|
import { FALLBACK_CONTENT_WIDTH } from '../cursor/typography-estimates';
|
|
6
|
-
/** This
|
|
7
|
-
* the
|
|
8
|
-
* back to the port, then a constant, when neither is measurable. */
|
|
6
|
+
/** This list's own content element, not the scroll container: nested content lays out narrower,
|
|
7
|
+
* and the height estimator wraps more lines the narrower it gets. */
|
|
9
8
|
export function estimateWidth(listEl, portWidth) {
|
|
10
9
|
return listEl?.clientWidth || portWidth || FALLBACK_CONTENT_WIDTH;
|
|
11
10
|
}
|
|
12
|
-
/**
|
|
13
|
-
*
|
|
14
|
-
* into the scope's local range. The two port terms are distinct and both load-bearing: an editor
|
|
15
|
-
* embedded partway down a page-scrolled shell has a nonzero scroll AND page chrome above it, and
|
|
16
|
-
* conflating them slices the window a band off.
|
|
17
|
-
*/
|
|
11
|
+
/** The offset that converts the scroll container's `scrollTop` into this list's range. Viewport
|
|
12
|
+
* top and scroll offset are separate terms: an editor partway down a scrolling page has both. */
|
|
18
13
|
export function listTopWithinContent(listTop, viewportTop, scrollTop) {
|
|
19
14
|
return listTop - viewportTop + scrollTop;
|
|
20
15
|
}
|
|
21
|
-
/**
|
|
22
|
-
*
|
|
23
|
-
* mount O(viewport × active-scope-count) blocks. The viewport arrives as top + client
|
|
24
|
-
* height so the intersection excludes the scrollbar/border. */
|
|
16
|
+
/** Each nested list covers only part of the viewport; windowing each against the full height
|
|
17
|
+
* would mount O(viewport × lists) blocks. Pass client height, which leaves out the scrollbar. */
|
|
25
18
|
export function effectiveViewportHeight(viewportTop, viewportHeight, scopeTop, scopeHeight) {
|
|
26
19
|
const top = Math.max(viewportTop, scopeTop);
|
|
27
20
|
const bottom = Math.min(viewportTop + viewportHeight, scopeTop + scopeHeight);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/** Find a container node's `BlockListState` by identity (a view works too). A `WeakMap`,
|
|
2
|
+
* so entries are collected once the node is unreachable. */
|
|
3
3
|
import type { NodeView } from '../core/node-views';
|
|
4
4
|
import type { BlockListState } from './block-list-state.svelte';
|
|
5
|
-
/** Overwrites any existing entry
|
|
5
|
+
/** Overwrites any existing entry: on a remount the new state is the one that counts. */
|
|
6
6
|
export declare function registerBlockListState(node: NodeView, state: BlockListState): void;
|
|
7
7
|
export declare function getStateForNode(node: NodeView): BlockListState | undefined;
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
8
|
+
/** The strict lookup, for a live-tree node whose container must be mounted. Ancestor
|
|
9
|
+
* traversals, where a missing entry is a valid answer, use `getStateForNode`. */
|
|
10
10
|
export declare function expectStateForNode(node: NodeView): BlockListState;
|
|
@@ -1,42 +1,38 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
import {
|
|
1
|
+
/** Find a container node's `BlockListState` by identity (a view works too). A `WeakMap`,
|
|
2
|
+
* so entries are collected once the node is unreachable. */
|
|
3
|
+
import { isDevChecks } from '../env';
|
|
4
4
|
import { tick } from 'svelte';
|
|
5
5
|
import { devWarn } from '../dev-warn';
|
|
6
6
|
const stateRegistry = new WeakMap();
|
|
7
|
-
/** Overwrites any existing entry
|
|
7
|
+
/** Overwrites any existing entry: on a remount the new state is the one that counts. */
|
|
8
8
|
export function registerBlockListState(node, state) {
|
|
9
9
|
const existing = stateRegistry.get(node);
|
|
10
10
|
stateRegistry.set(node, state);
|
|
11
|
-
if (
|
|
11
|
+
if (isDevChecks() && existing && existing !== state) {
|
|
12
12
|
void reportContestedClaim(node, existing, state);
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
-
/**
|
|
16
|
-
*
|
|
17
|
-
* tearing the old one down, so a claim contested INSIDE a flush says nothing about
|
|
18
|
-
* ownership; re-ask once it settles, when a loser still holding child refs means either a
|
|
19
|
-
* second live owner or a teardown whose clear never reached the live slots.
|
|
20
|
-
*/
|
|
15
|
+
/** Checked a tick later because Svelte mounts a remount's new component before tearing down the
|
|
16
|
+
* one it replaces; a replaced state still holding child refs after that has a live rival. */
|
|
21
17
|
async function reportContestedClaim(node, loser, winner) {
|
|
22
18
|
await tick();
|
|
23
19
|
if (stateRegistry.get(node) !== winner)
|
|
24
20
|
return;
|
|
25
21
|
if (loser.innerBlockRefs.every((ref) => ref === undefined))
|
|
26
22
|
return;
|
|
27
|
-
devWarn('state-registry', `two live components claim the same ${node.kind}
|
|
23
|
+
devWarn('state-registry', `two live components claim the same ${node.kind}: the loser's child refs are orphaned. ` +
|
|
28
24
|
`Either both mounts render this node, or the loser's teardown emptied slots the ` +
|
|
29
25
|
`scope no longer reads.`);
|
|
30
26
|
}
|
|
31
27
|
export function getStateForNode(node) {
|
|
32
28
|
return stateRegistry.get(node);
|
|
33
29
|
}
|
|
34
|
-
/**
|
|
35
|
-
*
|
|
30
|
+
/** The strict lookup, for a live-tree node whose container must be mounted. Ancestor
|
|
31
|
+
* traversals, where a missing entry is a valid answer, use `getStateForNode`. */
|
|
36
32
|
export function expectStateForNode(node) {
|
|
37
33
|
const state = stateRegistry.get(node);
|
|
38
34
|
if (!state) {
|
|
39
|
-
throw new Error(`[state-registry] no BlockListState registered for ${node.kind}
|
|
35
|
+
throw new Error(`[state-registry] no BlockListState registered for ${node.kind}: ` +
|
|
40
36
|
`caller assumed a mounted container. If this path can visit non-container ` +
|
|
41
37
|
`nodes, use getStateForNode and guard on undefined.`);
|
|
42
38
|
}
|
|
@@ -1,35 +1,22 @@
|
|
|
1
|
-
import { type BlockElLookup } from '../editor-keys';
|
|
2
1
|
import type { NodeView } from '../core/node-views';
|
|
3
|
-
import type {
|
|
4
|
-
import { type ListWindowing
|
|
2
|
+
import type { RootListScroll } from '../cursor/scroll-owner';
|
|
3
|
+
import { type ListWindowing } from './list-windowing.svelte';
|
|
5
4
|
export interface ContainerWindowingOpts {
|
|
6
|
-
/** This
|
|
7
|
-
* reorders report under the current slot. Ignored at the root (no parent sink). */
|
|
8
|
-
getIndex: () => number;
|
|
9
|
-
/** This scope's path; the leaf-channel depth is its length. `[]` at the root. */
|
|
5
|
+
/** This list's path. */
|
|
10
6
|
getParentPath: () => number[];
|
|
11
7
|
getChildren: () => readonly NodeView[];
|
|
12
8
|
getChildIds: () => string[];
|
|
13
|
-
/** The
|
|
9
|
+
/** The element that scrolls with this list's children. Never the viewport. */
|
|
14
10
|
getListEl: () => HTMLElement | null;
|
|
15
|
-
/**
|
|
16
|
-
getOwnEl?: () => HTMLElement | null;
|
|
17
|
-
/** True when this scope's DIRECT children are `BlockHost`s → shadow the leaf channel.
|
|
18
|
-
* False for direct-`{#each}` scopes (list / table). */
|
|
19
|
-
provideLeafChannel: boolean;
|
|
20
|
-
/** Collapse clamp; see `ListWindowingDeps.isCollapsed`. */
|
|
11
|
+
/** True while collapsed; see `ListWindowingDeps.isCollapsed`. */
|
|
21
12
|
isCollapsed?: () => boolean;
|
|
22
13
|
}
|
|
23
|
-
/**
|
|
24
|
-
*
|
|
25
|
-
* top-level children only, so a nested target contributes its ancestor's index plus the
|
|
26
|
-
* measured drop down to itself — without which the pin re-asserts the CONTAINER's top and
|
|
27
|
-
* pushes an already-resolved nested target back out of view.
|
|
28
|
-
*/
|
|
29
|
-
export declare function placementOf(target: RevealTarget | null, blockEl: BlockElLookup): RevealAnchorPlacement | null;
|
|
30
|
-
/**
|
|
31
|
-
* One windowing wiring unit per BlockList-bearing or direct-each container scope: reads
|
|
32
|
-
* the windowing contexts, builds `createListWindowing` with the shared constants, and
|
|
33
|
-
* provides the subtotal sink plus the leaf channel. Call synchronously during component init.
|
|
34
|
-
*/
|
|
14
|
+
/** One windowing unit per nested container, whether it renders a `BlockList` or its own
|
|
15
|
+
* `{#each}`. Call synchronously during component init, since it reads and sets context. */
|
|
35
16
|
export declare function useContainerWindowing(opts: ContainerWindowingOpts): ListWindowing;
|
|
17
|
+
/** The editor root's windowing, and the one height correction the header slot shares, which
|
|
18
|
+
* re-places a held target. Null without the editor's services, as in a harness. */
|
|
19
|
+
export declare function useRootWindowing(opts: Pick<ContainerWindowingOpts, 'getChildren' | 'getChildIds' | 'getListEl'>): {
|
|
20
|
+
windowing: ListWindowing;
|
|
21
|
+
scroll: RootListScroll | null;
|
|
22
|
+
};
|
|
@@ -1,95 +1,85 @@
|
|
|
1
|
-
import { getContext, setContext } from 'svelte';
|
|
2
|
-
import { EDITOR_DOC_KEY, EDITOR_SERVICES_KEY
|
|
1
|
+
import { getContext, onDestroy, setContext, tick } from 'svelte';
|
|
2
|
+
import { CHILD_MEASURE_KEY, EDITOR_DOC_KEY, EDITOR_SERVICES_KEY } from '../editor-keys';
|
|
3
|
+
import { observeResize } from '../cursor/observe-resize';
|
|
4
|
+
import { assertInvariant } from '../assert';
|
|
5
|
+
import { checkMeasuresInOwnList } from '../invariants/measures-in-own-list';
|
|
3
6
|
import { createListWindowing } from './list-windowing.svelte';
|
|
4
|
-
/**
|
|
5
|
-
*
|
|
6
|
-
* top-level children only, so a nested target contributes its ancestor's index plus the
|
|
7
|
-
* measured drop down to itself — without which the pin re-asserts the CONTAINER's top and
|
|
8
|
-
* pushes an already-resolved nested target back out of view.
|
|
9
|
-
*/
|
|
10
|
-
export function placementOf(target, blockEl) {
|
|
11
|
-
if (!target || target.path.length === 0)
|
|
12
|
-
return null;
|
|
13
|
-
const shallow = { index: target.path[0], block: target.block, innerOffset: 0, height: null };
|
|
14
|
-
if (target.path.length === 1)
|
|
15
|
-
return shallow;
|
|
16
|
-
const ancestorEl = blockEl([shallow.index]);
|
|
17
|
-
const targetEl = blockEl(target.path);
|
|
18
|
-
// The ancestor's top is a DIFFERENT block, honest only while the ancestor itself is
|
|
19
|
-
// windowed out and the model's offset is all that is known. A MOUNTED ancestor missing its
|
|
20
|
-
// target means the reader scrolled past it inside the container: decline, never teleport.
|
|
21
|
-
if (!ancestorEl)
|
|
22
|
-
return shallow;
|
|
23
|
-
if (!targetEl)
|
|
24
|
-
return null;
|
|
25
|
-
const targetRect = targetEl.getBoundingClientRect();
|
|
26
|
-
return {
|
|
27
|
-
index: shallow.index,
|
|
28
|
-
block: target.block,
|
|
29
|
-
innerOffset: targetRect.top - ancestorEl.getBoundingClientRect().top,
|
|
30
|
-
height: targetRect.height
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* One windowing wiring unit per BlockList-bearing or direct-each container scope: reads
|
|
35
|
-
* the windowing contexts, builds `createListWindowing` with the shared constants, and
|
|
36
|
-
* provides the subtotal sink plus the leaf channel. Call synchronously during component init.
|
|
37
|
-
*/
|
|
7
|
+
/** One windowing unit per nested container, whether it renders a `BlockList` or its own
|
|
8
|
+
* `{#each}`. Call synchronously during component init, since it reads and sets context. */
|
|
38
9
|
export function useContainerWindowing(opts) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const
|
|
10
|
+
return windowingUnit(opts);
|
|
11
|
+
}
|
|
12
|
+
/** The editor root's windowing, and the one height correction the header slot shares, which
|
|
13
|
+
* re-places a held target. Null without the editor's services, as in a harness. */
|
|
14
|
+
export function useRootWindowing(opts) {
|
|
15
|
+
const scrollOwner = getContext(EDITOR_SERVICES_KEY)?.scrollOwner;
|
|
16
|
+
const { listTree } = getContext(EDITOR_DOC_KEY);
|
|
17
|
+
const windowing = windowingUnit({ ...opts, getParentPath: () => [] });
|
|
18
|
+
let scroll = null;
|
|
19
|
+
if (scrollOwner && listTree) {
|
|
20
|
+
scroll = scrollOwner.resolveTargetsWith({
|
|
21
|
+
resolve: listTree.resolve,
|
|
22
|
+
holdForRound: listTree.holdForRound,
|
|
23
|
+
mountTop: listTree.mountTop,
|
|
24
|
+
syncScrollTop: () => windowing.syncScrollTop()
|
|
25
|
+
});
|
|
26
|
+
onDestroy(scroll.uninstall);
|
|
27
|
+
}
|
|
28
|
+
return { windowing, scroll };
|
|
29
|
+
}
|
|
30
|
+
function windowingUnit(opts) {
|
|
31
|
+
const { heightOracle: oracle, scrollport: getPort, focusedPath: getFocusPath, widthVersion: getWidthVersion, viewportHeightVersion: getViewportHeightVersion, listTree } = getContext(EDITOR_DOC_KEY);
|
|
32
|
+
const scrollOwner = getContext(EDITOR_SERVICES_KEY)?.scrollOwner;
|
|
33
|
+
// A bare mount has no owner: its heights land, and nothing holds the page still.
|
|
34
|
+
const scroll = scrollOwner
|
|
35
|
+
? {
|
|
36
|
+
beginRound: scrollOwner.beginRound,
|
|
37
|
+
roundOpen: scrollOwner.roundOpen,
|
|
38
|
+
measureSoon: scrollOwner.measureSoon,
|
|
39
|
+
scrollToMount: scrollOwner.scrollToMount
|
|
40
|
+
}
|
|
41
|
+
: {
|
|
42
|
+
beginRound: () => { },
|
|
43
|
+
roundOpen: () => false,
|
|
44
|
+
measureSoon: (run) => void tick().then(run),
|
|
45
|
+
scrollToMount: () => { }
|
|
46
|
+
};
|
|
45
47
|
const windowing = createListWindowing({
|
|
46
48
|
oracle,
|
|
47
49
|
getChildren: opts.getChildren,
|
|
48
50
|
getChildIds: opts.getChildIds,
|
|
49
51
|
getListEl: opts.getListEl,
|
|
50
|
-
getOwnEl: opts.getOwnEl,
|
|
51
52
|
getPort: () => getPort?.() ?? null,
|
|
52
|
-
|
|
53
|
+
scroll,
|
|
53
54
|
getFocusPath: () => getFocusPath?.() ?? null,
|
|
54
|
-
getRevealAnchorTarget: claimsRevealAnchor
|
|
55
|
-
? () => placementOf(revealAnchor?.get() ?? null, blockElLookup)
|
|
56
|
-
: undefined,
|
|
57
55
|
getWidthVersion: () => getWidthVersion?.() ?? 0,
|
|
58
56
|
getViewportHeightVersion: () => getViewportHeightVersion?.() ?? 0,
|
|
59
57
|
getParentPath: opts.getParentPath,
|
|
60
|
-
reportSelfHeight: parentSink
|
|
61
|
-
? (h) => parentSink.setChildSubtotal(opts.getIndex(), h)
|
|
62
|
-
: undefined,
|
|
63
58
|
isCollapsed: opts.isCollapsed,
|
|
64
|
-
//
|
|
65
|
-
// (VR-8)
|
|
66
|
-
// e2e bound guards that); a skeleton background covers the residual one-frame gap.
|
|
59
|
+
// Wide enough that a fast scroll rarely outruns the window recompute and paints an empty
|
|
60
|
+
// spacer (VR-8), narrow enough to keep the count of mounted blocks low.
|
|
67
61
|
overscan: 6,
|
|
68
62
|
pinExtensionCap: 100,
|
|
69
63
|
activateAbovePx: 4000,
|
|
70
64
|
deactivateBelowPx: 3000
|
|
71
65
|
});
|
|
72
|
-
if (
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
return
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
setContext(PARENT_SCOPE_SINK_KEY, {
|
|
90
|
-
setChildSubtotal: windowing.setChildSubtotal,
|
|
91
|
-
registerRow: (id, readHeight, applyHeight) => windowing.registerChild(id, { readHeight, applyHeight }),
|
|
92
|
-
measureRowNow: windowing.measureChildNow
|
|
66
|
+
if (listTree)
|
|
67
|
+
onDestroy(listTree.add(windowing.level));
|
|
68
|
+
// A child that isn't this list's own would write a slot that indexes something else.
|
|
69
|
+
setContext(CHILD_MEASURE_KEY, {
|
|
70
|
+
register(path, id, readHeight) {
|
|
71
|
+
const foreign = checkMeasuresInOwnList(path, opts.getParentPath());
|
|
72
|
+
if (foreign) {
|
|
73
|
+
assertInvariant('measures-in-own-list', () => foreign);
|
|
74
|
+
return () => { };
|
|
75
|
+
}
|
|
76
|
+
return windowing.registerChild(id, { index: path[path.length - 1], readHeight });
|
|
77
|
+
},
|
|
78
|
+
measureNow: windowing.measureChildNow,
|
|
79
|
+
measureOnResize: windowing.measureChildOnResize,
|
|
80
|
+
watchSize: scrollOwner
|
|
81
|
+
? scrollOwner.watchSize
|
|
82
|
+
: (el, onResize) => observeResize(el, (entries) => entries[0] && onResize(entries[0]))
|
|
93
83
|
});
|
|
94
84
|
return windowing;
|
|
95
85
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface MeasuredChildOpts {
|
|
2
|
+
getId: () => string;
|
|
3
|
+
/** The child's own path; its last index is its position in the list. */
|
|
4
|
+
getPath: () => readonly number[];
|
|
5
|
+
/** The element whose border box is the child's height. */
|
|
6
|
+
getEl: () => HTMLElement | null;
|
|
7
|
+
/** Read reactively: a change re-measures, except at mount, which the batched pass owns. */
|
|
8
|
+
getRaw: () => string;
|
|
9
|
+
}
|
|
10
|
+
export declare function useMeasuredChild(opts: MeasuredChildOpts): void;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A windowed child's height reaches its own block list's height table: in the list's batched
|
|
3
|
+
* pass at mount, again after an edit, and again on a resize. Call during component init, and
|
|
4
|
+
* before the component provides a block list of its own, since it reads its list's channel.
|
|
5
|
+
*/
|
|
6
|
+
import { getContext, untrack } from 'svelte';
|
|
7
|
+
import { CHILD_MEASURE_KEY } from '../editor-keys';
|
|
8
|
+
export function useMeasuredChild(opts) {
|
|
9
|
+
const channel = getContext(CHILD_MEASURE_KEY);
|
|
10
|
+
// Absent only in a bare test mount with no list above.
|
|
11
|
+
if (!channel)
|
|
12
|
+
return;
|
|
13
|
+
const readHeight = () => opts.getEl()?.getBoundingClientRect().height ?? 0;
|
|
14
|
+
// A primitive, so a fresh path array for the same position doesn't register the child again.
|
|
15
|
+
const registration = $derived(`${opts.getPath().join()}|${opts.getId()}`);
|
|
16
|
+
$effect(() => {
|
|
17
|
+
void registration;
|
|
18
|
+
return untrack(() => channel.register(opts.getPath(), opts.getId(), readHeight));
|
|
19
|
+
});
|
|
20
|
+
let firstRun = true;
|
|
21
|
+
$effect(() => {
|
|
22
|
+
void opts.getRaw();
|
|
23
|
+
if (firstRun) {
|
|
24
|
+
firstRun = false;
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
untrack(() => channel.measureNow(opts.getId()));
|
|
28
|
+
});
|
|
29
|
+
// Growth with no edit (an image decoding, a formula showing its source) would slide the page.
|
|
30
|
+
$effect(() => {
|
|
31
|
+
const el = opts.getEl();
|
|
32
|
+
if (!el)
|
|
33
|
+
return;
|
|
34
|
+
return channel.watchSize(el, (entry) => {
|
|
35
|
+
const box = entry.borderBoxSize?.[0];
|
|
36
|
+
const height = box ? box.blockSize : entry.contentRect?.height;
|
|
37
|
+
if (height != null)
|
|
38
|
+
channel.measureOnResize(opts.getId(), height);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
}
|