@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,14 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* A number
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* censused (G4.52): the commit ceremony announces every structural write at its publish, and the
|
|
6
|
-
* writers outside it announce their own.
|
|
2
|
+
* A number bumped whenever the document's bytes change, so a whole-document `$derived` can
|
|
3
|
+
* memoize over a `$state` document that is mutated in place and never changes identity.
|
|
4
|
+
* Every place that writes bytes must bump it; a commit does so for each structural write (G4.52).
|
|
7
5
|
*/
|
|
8
6
|
export interface ContentVersion {
|
|
9
|
-
/** The current key, stable until a door bumps it. */
|
|
10
7
|
read(): number;
|
|
11
|
-
/**
|
|
8
|
+
/** Call after changing the document's serialized bytes. */
|
|
12
9
|
bump(): void;
|
|
13
10
|
}
|
|
14
11
|
export declare function createContentVersion(): ContentVersion;
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* A number
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* censused (G4.52): the commit ceremony announces every structural write at its publish, and the
|
|
6
|
-
* writers outside it announce their own.
|
|
2
|
+
* A number bumped whenever the document's bytes change, so a whole-document `$derived` can
|
|
3
|
+
* memoize over a `$state` document that is mutated in place and never changes identity.
|
|
4
|
+
* Every place that writes bytes must bump it; a commit does so for each structural write (G4.52).
|
|
7
5
|
*/
|
|
8
6
|
export function createContentVersion() {
|
|
9
7
|
let version = $state(0);
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which block stays still across a measure round, picked level by level down the document's
|
|
3
|
+
* block lists before the round, and where it is once the round's changes have landed. See
|
|
4
|
+
* `docs/design/virtual-rendering.md` § Keeping the page still while heights change.
|
|
5
|
+
*/
|
|
6
|
+
import type { HeightModel } from '../cursor/height-model';
|
|
7
|
+
/** A list's block heights, with the ids they were built from lined up by index. */
|
|
8
|
+
export interface HeightTable {
|
|
9
|
+
readonly model: HeightModel;
|
|
10
|
+
/** A snapshot, so a round finds its held block by id in the order from before a change. */
|
|
11
|
+
readonly ids: readonly string[];
|
|
12
|
+
}
|
|
13
|
+
declare const picked: unique symbol;
|
|
14
|
+
declare const measured: unique symbol;
|
|
15
|
+
/** The block a list keeps still, with its index in the table it was picked from. Only
|
|
16
|
+
* `heldBlock` makes one. */
|
|
17
|
+
export type HeldBlock = {
|
|
18
|
+
readonly id: string;
|
|
19
|
+
readonly index: number;
|
|
20
|
+
/** Picked because the caret is in it, which a change that moves it cancels. */
|
|
21
|
+
readonly focused: boolean;
|
|
22
|
+
readonly [picked]: true;
|
|
23
|
+
};
|
|
24
|
+
/** How far the held block's top moved across a round. Only `heldDelta` makes one, so a
|
|
25
|
+
* correction can't use a distance worked out some other way. */
|
|
26
|
+
export type HeldDelta = number & {
|
|
27
|
+
readonly [measured]: true;
|
|
28
|
+
};
|
|
29
|
+
/** The focused block's index among the children of the list at `listPath`, or null when the
|
|
30
|
+
* focus path doesn't run through that list. */
|
|
31
|
+
export declare function focusedIndexIn(focusPath: readonly number[] | null, listPath: readonly number[]): number | null;
|
|
32
|
+
/** The focused block when it sits at or below `localTop`, else the block at the top, else none. */
|
|
33
|
+
export declare function heldBlock(table: HeightTable, localTop: number, focusedIndex: number | null): HeldBlock | null;
|
|
34
|
+
/** Where `held` sits in `after`, or -1 when the change removed it, or moved the caret's block
|
|
35
|
+
* (a reorder moves its block on a still page, so that block isn't held). */
|
|
36
|
+
export declare function heldIndexIn(held: HeldBlock, before: HeightTable, after: HeightTable): number;
|
|
37
|
+
/** The distance a round corrects by: the held block's offset after it minus before. */
|
|
38
|
+
export declare function heldDelta(before: number, after: number): HeldDelta;
|
|
39
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { recordNeighbourPass } from '../perf/instruments';
|
|
2
|
+
/** The focused block's index among the children of the list at `listPath`, or null when the
|
|
3
|
+
* focus path doesn't run through that list. */
|
|
4
|
+
export function focusedIndexIn(focusPath, listPath) {
|
|
5
|
+
if (!focusPath || focusPath.length <= listPath.length)
|
|
6
|
+
return null;
|
|
7
|
+
for (let i = 0; i < listPath.length; i++)
|
|
8
|
+
if (focusPath[i] !== listPath[i])
|
|
9
|
+
return null;
|
|
10
|
+
return focusPath[listPath.length];
|
|
11
|
+
}
|
|
12
|
+
/** The focused block when it sits at or below `localTop`, else the block at the top, else none. */
|
|
13
|
+
export function heldBlock(table, localTop, focusedIndex) {
|
|
14
|
+
// Past the end the viewport's top is below this list, so the pick stays with its container.
|
|
15
|
+
if (table.model.size === 0 || localTop >= table.model.total())
|
|
16
|
+
return null;
|
|
17
|
+
const topIndex = table.model.indexAtOffset(localTop);
|
|
18
|
+
const focused = focusedIndex ?? -1;
|
|
19
|
+
if (focused >= topIndex && focused < table.ids.length)
|
|
20
|
+
return pick(table, focused, true);
|
|
21
|
+
// At 0 the viewport's top is above this list, in its container's chrome or further up.
|
|
22
|
+
return localTop === 0 ? null : pick(table, topIndex, false);
|
|
23
|
+
}
|
|
24
|
+
/** Where `held` sits in `after`, or -1 when the change removed it, or moved the caret's block
|
|
25
|
+
* (a reorder moves its block on a still page, so that block isn't held). */
|
|
26
|
+
export function heldIndexIn(held, before, after) {
|
|
27
|
+
if (after === before)
|
|
28
|
+
return held.index;
|
|
29
|
+
const index = after.ids.indexOf(held.id);
|
|
30
|
+
if (index === -1 || !held.focused)
|
|
31
|
+
return index;
|
|
32
|
+
return movedAcross(before, after, held.index, index) ? -1 : index;
|
|
33
|
+
}
|
|
34
|
+
/** The distance a round corrects by: the held block's offset after it minus before. */
|
|
35
|
+
export function heldDelta(before, after) {
|
|
36
|
+
return (after - before);
|
|
37
|
+
}
|
|
38
|
+
function pick(table, index, focused) {
|
|
39
|
+
return { id: table.ids[index], index, focused };
|
|
40
|
+
}
|
|
41
|
+
// A block whose surviving neighbours changed was moved by the edit.
|
|
42
|
+
function movedAcross(before, after, index, afterIndex) {
|
|
43
|
+
recordNeighbourPass();
|
|
44
|
+
const inAfter = new Set(after.ids);
|
|
45
|
+
const inBefore = new Set(before.ids);
|
|
46
|
+
return (survivingNeighbour(before.ids, index, -1, inAfter) !==
|
|
47
|
+
survivingNeighbour(after.ids, afterIndex, -1, inBefore) ||
|
|
48
|
+
survivingNeighbour(before.ids, index, 1, inAfter) !==
|
|
49
|
+
survivingNeighbour(after.ids, afterIndex, 1, inBefore));
|
|
50
|
+
}
|
|
51
|
+
function survivingNeighbour(ids, index, step, survivors) {
|
|
52
|
+
for (let i = index + step; i >= 0 && i < ids.length; i += step) {
|
|
53
|
+
if (survivors.has(ids[i]))
|
|
54
|
+
return ids[i];
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the editor's heights were measured for: the type scale, the width version the block lists
|
|
3
|
+
* rebuild their tables off, and the viewport-height version, which only changes how many blocks
|
|
4
|
+
* fit. Layout state builds the height estimator and hands out its reads alone, so it's the one
|
|
5
|
+
* place measured heights can be thrown away (G4.98): a route reports what changed.
|
|
6
|
+
*/
|
|
7
|
+
import { type MeasuredHeightOracle } from '../cursor/height-oracle';
|
|
8
|
+
export interface LayoutState {
|
|
9
|
+
/** The editor's height estimator, without the drop. */
|
|
10
|
+
heightOracle: Omit<MeasuredHeightOracle, 'dropMeasured'>;
|
|
11
|
+
/** The host's font scale against `HEIGHT_ESTIMATES`. A plain read, since the height estimates
|
|
12
|
+
* read it on the keystroke path and the width version already signals the rebuild. */
|
|
13
|
+
typeScale(): number;
|
|
14
|
+
widthVersion(): number;
|
|
15
|
+
viewportHeightVersion(): number;
|
|
16
|
+
/** A document swap or a mode switch: the measured heights belong to a view that's gone. The
|
|
17
|
+
* width version stays, since a rebuild would lose the block held in place. */
|
|
18
|
+
forgetMeasuredHeights(): void;
|
|
19
|
+
/** A width change re-wraps every block: the measured heights go, and every list re-estimates
|
|
20
|
+
* its table. */
|
|
21
|
+
rebuildForNewGeometry(): void;
|
|
22
|
+
/** A new font scale is a geometry change too. */
|
|
23
|
+
setTypeScale(next: number): void;
|
|
24
|
+
/** The scroll container's height changed; that re-wraps nothing, so every height stays. */
|
|
25
|
+
noteViewportHeight(): void;
|
|
26
|
+
}
|
|
27
|
+
export declare function createLayoutState(): LayoutState;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the editor's heights were measured for: the type scale, the width version the block lists
|
|
3
|
+
* rebuild their tables off, and the viewport-height version, which only changes how many blocks
|
|
4
|
+
* fit. Layout state builds the height estimator and hands out its reads alone, so it's the one
|
|
5
|
+
* place measured heights can be thrown away (G4.98): a route reports what changed.
|
|
6
|
+
*/
|
|
7
|
+
import { createHeightOracle } from '../cursor/height-oracle';
|
|
8
|
+
import { HEIGHT_ESTIMATES } from '../cursor/typography-estimates';
|
|
9
|
+
export function createLayoutState() {
|
|
10
|
+
let typeScale = 1;
|
|
11
|
+
let widthVersion = $state(0);
|
|
12
|
+
let viewportHeightVersion = $state(0);
|
|
13
|
+
// Only font-relative terms scale; getters, so a scale change needs no new height estimator.
|
|
14
|
+
const oracle = createHeightOracle({
|
|
15
|
+
get lineHeight() {
|
|
16
|
+
return HEIGHT_ESTIMATES.proseLineHeight * typeScale;
|
|
17
|
+
},
|
|
18
|
+
get codeLineHeight() {
|
|
19
|
+
return HEIGHT_ESTIMATES.codeLineHeight * typeScale;
|
|
20
|
+
},
|
|
21
|
+
get avgCharWidth() {
|
|
22
|
+
return HEIGHT_ESTIMATES.avgCharWidth * typeScale;
|
|
23
|
+
},
|
|
24
|
+
blockChrome: HEIGHT_ESTIMATES.blockChrome,
|
|
25
|
+
imageBlockMinHeight: HEIGHT_ESTIMATES.imageBlockMinHeight
|
|
26
|
+
});
|
|
27
|
+
function rebuildForNewGeometry() {
|
|
28
|
+
oracle.dropMeasured();
|
|
29
|
+
widthVersion++;
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
heightOracle: {
|
|
33
|
+
estimate: oracle.estimate,
|
|
34
|
+
measured: oracle.measured,
|
|
35
|
+
recordMeasured: oracle.recordMeasured,
|
|
36
|
+
measuredIds: oracle.measuredIds
|
|
37
|
+
},
|
|
38
|
+
typeScale: () => typeScale,
|
|
39
|
+
widthVersion: () => widthVersion,
|
|
40
|
+
viewportHeightVersion: () => viewportHeightVersion,
|
|
41
|
+
forgetMeasuredHeights: () => oracle.dropMeasured(),
|
|
42
|
+
rebuildForNewGeometry,
|
|
43
|
+
setTypeScale(next) {
|
|
44
|
+
typeScale = next;
|
|
45
|
+
rebuildForNewGeometry();
|
|
46
|
+
},
|
|
47
|
+
noteViewportHeight: () => {
|
|
48
|
+
viewportHeightVersion++;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Every mounted block list of one editor, so the scroll owner can read the document through their
|
|
3
|
+
* height tables: where a block sits, and which one block to keep still across a measure round.
|
|
4
|
+
* See `docs/design/virtual-rendering.md` § Keeping the page still while heights change.
|
|
5
|
+
*/
|
|
6
|
+
import type { TargetTop } from '../cursor/scroll-owner';
|
|
7
|
+
import { type HeightTable, type HeldDelta } from './hold-across';
|
|
8
|
+
/** One block list as the tree reads it. */
|
|
9
|
+
export interface ListLevel {
|
|
10
|
+
path(): readonly number[];
|
|
11
|
+
/** The table as last built, read without building one: what a round opening in the middle of
|
|
12
|
+
* a change counts from. */
|
|
13
|
+
built(): HeightTable;
|
|
14
|
+
/** The table as it reads now, rebuilt first if the list's blocks changed. */
|
|
15
|
+
current(): HeightTable;
|
|
16
|
+
/** The root list's top in the scroll content, a nested list's top below the top of the box its
|
|
17
|
+
* parent measures; null before it mounts. */
|
|
18
|
+
top(): number | null;
|
|
19
|
+
/** This list's top in the scroll content, off its element; null before it mounts. */
|
|
20
|
+
contentTop(): number | null;
|
|
21
|
+
isInWindow(index: number): boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface ListTreeDeps {
|
|
24
|
+
getScrollTop: () => number | null;
|
|
25
|
+
getFocusPath: () => readonly number[] | null;
|
|
26
|
+
}
|
|
27
|
+
export interface ListTree {
|
|
28
|
+
add(level: ListLevel): () => void;
|
|
29
|
+
/** Where the block at `path` sits in the scroll content, from the tables along its path; null
|
|
30
|
+
* when a mounted container has windowed it out. */
|
|
31
|
+
resolve(path: readonly number[]): TargetTop | null;
|
|
32
|
+
/** Where to scroll so the list holding `path` mounts that block: the list's top plus its table's
|
|
33
|
+
* offset of the block. */
|
|
34
|
+
mountTop(path: readonly number[]): number | null;
|
|
35
|
+
/** Picks the block to keep still from the tables and the scroll as they stand; the returned
|
|
36
|
+
* read says how far that block has moved since. Null with nothing to hold. */
|
|
37
|
+
holdForRound(): (() => HeldDelta) | null;
|
|
38
|
+
}
|
|
39
|
+
export declare function createListTree(deps: ListTreeDeps): ListTree;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { focusedIndexIn, heldBlock, heldDelta, heldIndexIn } from './hold-across';
|
|
2
|
+
export function createListTree(deps) {
|
|
3
|
+
const levels = new Set();
|
|
4
|
+
function levelAt(path) {
|
|
5
|
+
for (const level of levels) {
|
|
6
|
+
const at = level.path();
|
|
7
|
+
if (at.length === path.length && at.every((index, i) => index === path[i]))
|
|
8
|
+
return level;
|
|
9
|
+
}
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
/** The one walk down a path: the offset below the root list's top at each level it reaches,
|
|
13
|
+
* mounted containers' chrome included; null past a table's end, or a windowed-out block. */
|
|
14
|
+
function walk(path, read, inWindowOnly) {
|
|
15
|
+
let level = levelAt([]);
|
|
16
|
+
if (!level)
|
|
17
|
+
return null;
|
|
18
|
+
const offsets = [];
|
|
19
|
+
let offset = 0;
|
|
20
|
+
let height = 0;
|
|
21
|
+
for (let depth = 0; depth < path.length; depth++) {
|
|
22
|
+
const { model } = read(level);
|
|
23
|
+
const index = path[depth];
|
|
24
|
+
if (index >= model.size)
|
|
25
|
+
return null;
|
|
26
|
+
offset += model.offsetOf(index);
|
|
27
|
+
height = model.heightOf(index);
|
|
28
|
+
offsets.push(offset);
|
|
29
|
+
if (depth === path.length - 1)
|
|
30
|
+
break;
|
|
31
|
+
const inner = levelAt(path.slice(0, depth + 1));
|
|
32
|
+
const chrome = inner?.top() ?? null;
|
|
33
|
+
// An unmounted container stands in with its own top.
|
|
34
|
+
if (!inner || chrome === null)
|
|
35
|
+
break;
|
|
36
|
+
// The user scrolled past the target inside a mounted container: decline, not jump.
|
|
37
|
+
if (inWindowOnly && !inner.isInWindow(path[depth + 1]))
|
|
38
|
+
return null;
|
|
39
|
+
offset += chrome;
|
|
40
|
+
level = inner;
|
|
41
|
+
}
|
|
42
|
+
return { offsets, height };
|
|
43
|
+
}
|
|
44
|
+
/** The held block at each level, from the viewport's top down, preferring the caret's block. */
|
|
45
|
+
function descend(localTop, focus) {
|
|
46
|
+
const steps = [];
|
|
47
|
+
let level = levelAt([]);
|
|
48
|
+
let top = localTop;
|
|
49
|
+
while (level) {
|
|
50
|
+
const table = level.built();
|
|
51
|
+
const held = heldBlock(table, top, focusedIndexIn(focus, level.path()));
|
|
52
|
+
if (!held)
|
|
53
|
+
break;
|
|
54
|
+
steps.push({ level, held, table });
|
|
55
|
+
const inner = levelAt([...level.path(), held.index]);
|
|
56
|
+
const chrome = inner?.top() ?? null;
|
|
57
|
+
if (!inner || chrome === null)
|
|
58
|
+
break;
|
|
59
|
+
top = Math.max(0, top - table.model.offsetOf(held.index) - chrome);
|
|
60
|
+
level = inner;
|
|
61
|
+
}
|
|
62
|
+
return steps;
|
|
63
|
+
}
|
|
64
|
+
/** The held path as indices now, cut at the first level whose block the change removed; empty
|
|
65
|
+
* when the caret's block was moved, so the round falls back to the block at the top. */
|
|
66
|
+
function pathNow(steps) {
|
|
67
|
+
const path = [];
|
|
68
|
+
for (const { level, held, table } of steps) {
|
|
69
|
+
// A list the round's change unmounted stands in with its container, as in `walk`.
|
|
70
|
+
if (!levels.has(level))
|
|
71
|
+
return path;
|
|
72
|
+
const index = heldIndexIn(held, table, level.current());
|
|
73
|
+
if (index === -1)
|
|
74
|
+
return held.focused ? [] : path;
|
|
75
|
+
path.push(index);
|
|
76
|
+
}
|
|
77
|
+
return path;
|
|
78
|
+
}
|
|
79
|
+
function holdForRound() {
|
|
80
|
+
const scrollTop = deps.getScrollTop();
|
|
81
|
+
const rootTop = levelAt([])?.top() ?? null;
|
|
82
|
+
if (scrollTop === null || rootTop === null)
|
|
83
|
+
return null;
|
|
84
|
+
const localTop = Math.max(0, scrollTop - rootTop);
|
|
85
|
+
const focus = deps.getFocusPath();
|
|
86
|
+
const candidates = [descend(localTop, focus)];
|
|
87
|
+
if (candidates[0].some((step) => step.held.focused))
|
|
88
|
+
candidates.push(descend(localTop, null));
|
|
89
|
+
const before = candidates.map((steps) => walk(steps.map((step) => step.held.index), (level) => level.built(), false)?.offsets ?? []);
|
|
90
|
+
if (before.every((offsets) => offsets.length === 0))
|
|
91
|
+
return null;
|
|
92
|
+
function movedSince() {
|
|
93
|
+
let from = 0;
|
|
94
|
+
let to = 0;
|
|
95
|
+
for (let i = 0; i < candidates.length; i++) {
|
|
96
|
+
const path = pathNow(candidates[i]);
|
|
97
|
+
const after = path.length > 0 ? walk(path, (level) => level.current(), false) : null;
|
|
98
|
+
if (!after)
|
|
99
|
+
continue;
|
|
100
|
+
from = before[i][path.length - 1];
|
|
101
|
+
to = after.offsets[path.length - 1];
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
return heldDelta(from, to);
|
|
105
|
+
}
|
|
106
|
+
return movedSince;
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
add(level) {
|
|
110
|
+
levels.add(level);
|
|
111
|
+
return () => levels.delete(level);
|
|
112
|
+
},
|
|
113
|
+
resolve(path) {
|
|
114
|
+
const rootTop = levelAt([])?.top() ?? null;
|
|
115
|
+
if (rootTop === null || path.length === 0)
|
|
116
|
+
return null;
|
|
117
|
+
const at = walk(path, (level) => level.current(), true);
|
|
118
|
+
if (!at)
|
|
119
|
+
return null;
|
|
120
|
+
return { top: rootTop + at.offsets[at.offsets.length - 1], height: at.height };
|
|
121
|
+
},
|
|
122
|
+
mountTop(path) {
|
|
123
|
+
const level = levelAt(path.slice(0, -1));
|
|
124
|
+
const top = level?.contentTop() ?? null;
|
|
125
|
+
const index = path[path.length - 1];
|
|
126
|
+
if (!level || top === null || index === undefined)
|
|
127
|
+
return null;
|
|
128
|
+
return top + level.current().model.offsetOf(index);
|
|
129
|
+
},
|
|
130
|
+
holdForRound
|
|
131
|
+
};
|
|
132
|
+
}
|
|
@@ -1,100 +1,79 @@
|
|
|
1
1
|
import type { HeightOracle } from '../cursor/height-oracle';
|
|
2
|
-
import type {
|
|
2
|
+
import type { ScrollportReader } from '../cursor/scrollport';
|
|
3
|
+
import type { TargetTop } from '../cursor/scroll-owner';
|
|
3
4
|
import { type WindowResult } from './block-window.svelte';
|
|
4
|
-
import {
|
|
5
|
+
import type { ListLevel } from './list-tree';
|
|
5
6
|
import type { NodeView } from '../core/node-views';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
/** Drop from the ancestor's top to the target's top; 0 when the target IS the ancestor. */
|
|
17
|
-
innerOffset: number;
|
|
18
|
-
/** The target's own height, for `'center'`; null when it can't be measured. */
|
|
19
|
-
height: number | null;
|
|
7
|
+
/** How a list reaches the editor's scroll owner. A list writes heights, never a scroll: the owner
|
|
8
|
+
* keeps one block still across each flush of them. */
|
|
9
|
+
export interface ListScrollWrites {
|
|
10
|
+
/** Called before this list's table changes, so the round counts from the table as it was. */
|
|
11
|
+
beginRound(): void;
|
|
12
|
+
/** True from a round's first height write until its scroll correction lands. */
|
|
13
|
+
roundOpen(): boolean;
|
|
14
|
+
measureSoon(run: () => void): void;
|
|
15
|
+
/** Scroll so the block at `path` mounts; the owner works out where. */
|
|
16
|
+
scrollToMount(path: readonly number[]): void;
|
|
20
17
|
}
|
|
21
18
|
export interface ListWindowingDeps {
|
|
22
19
|
oracle: HeightOracle;
|
|
23
20
|
getChildren: () => readonly NodeView[];
|
|
24
21
|
getChildIds: () => string[];
|
|
25
|
-
/** This
|
|
22
|
+
/** This list's own element; its top within the scroll content converts the scroll
|
|
23
|
+
* container's `scrollTop` into this list's coordinates. */
|
|
26
24
|
getListEl: () => HTMLElement | null;
|
|
27
|
-
/** The
|
|
28
|
-
* `scrollMode="self"`, the host's scroller or the page viewport under `"host"`. */
|
|
29
|
-
getPort: () =>
|
|
30
|
-
|
|
25
|
+
/** The one scroll container every list in this editor windows against: the editor root
|
|
26
|
+
* under `scrollMode="self"`, the host's scroller or the page viewport under `"host"`. */
|
|
27
|
+
getPort: () => ScrollportReader | null;
|
|
28
|
+
scroll: ListScrollWrites;
|
|
29
|
+
/** The focused block's full path, so each level knows which block to hold in place. */
|
|
31
30
|
getFocusPath: () => number[] | null;
|
|
32
|
-
/**
|
|
33
|
-
*
|
|
34
|
-
* the ROOT scope only — nested scopes would fight over one scrollTop. */
|
|
35
|
-
getRevealAnchorTarget?: () => RevealAnchorPlacement | null;
|
|
36
|
-
/** Monotonic counter bumped on an editor WIDTH change (after the oracle's measured
|
|
37
|
-
* cache is cleared). Rebuilds the model at the new width and re-measures mounted blocks. */
|
|
31
|
+
/** Counter bumped on an editor width change, after the height estimator's measured cache
|
|
32
|
+
* is cleared. Rebuilds the height table at the new width and re-measures mounted blocks. */
|
|
38
33
|
getWidthVersion: () => number;
|
|
39
|
-
/**
|
|
40
|
-
*
|
|
34
|
+
/** Bumped when the scroll container's height changes, since the viewport height comes from
|
|
35
|
+
* a plain DOM read that nothing reactive sees. */
|
|
41
36
|
getViewportHeightVersion: () => number;
|
|
42
|
-
/** This
|
|
37
|
+
/** This list's path (the `parentPath` its children render under). `[]` at top level. */
|
|
43
38
|
getParentPath: () => number[];
|
|
44
|
-
/**
|
|
45
|
-
|
|
46
|
-
/** Report this scope's own box height to the parent scope's setChildSubtotal (undefined at top level). */
|
|
47
|
-
reportSelfHeight?: (height: number) => void;
|
|
48
|
-
/** False while the HOST's native scroll anchoring holds the reader instead (host mode below
|
|
49
|
-
* the windowing budget): two writers on one scroll position double-correct. */
|
|
50
|
-
correctsScroll: () => boolean;
|
|
51
|
-
/** Collapse clamp: while true this scope mounts ONLY its chrome row, a fixed [0,1) with
|
|
52
|
-
* zero spacers. The window math is bypassed, not fed — collapse is height removal, and
|
|
53
|
-
* a clamped slice through `computeWindow` would emit the body as a giant spacer. */
|
|
39
|
+
/** While true the list mounts only its title row and skips the window math: collapsing
|
|
40
|
+
* removes height, and a clamped slice would emit the body as one giant spacer. */
|
|
54
41
|
isCollapsed?: () => boolean;
|
|
55
42
|
overscan: number;
|
|
56
43
|
pinExtensionCap: number;
|
|
57
44
|
activateAbovePx: number;
|
|
58
45
|
deactivateBelowPx: number;
|
|
59
46
|
}
|
|
47
|
+
/** A child of this list, measured under its own id at its index. */
|
|
48
|
+
export interface MeasuredChild {
|
|
49
|
+
index: number;
|
|
50
|
+
readHeight: () => number;
|
|
51
|
+
}
|
|
60
52
|
export interface ListWindowing {
|
|
61
53
|
readonly window: WindowResult;
|
|
62
|
-
/**
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
* children before applying ANY write, so a fling that mounts many costs one reflow. */
|
|
69
|
-
registerChild(id: string, child: MeasureEntry): () => void;
|
|
70
|
-
/** Re-measure ONE registered child immediately (its content height changed on edit). */
|
|
54
|
+
/** This list as the editor's list tree reads it. */
|
|
55
|
+
readonly level: ListLevel;
|
|
56
|
+
/** Queues a child for the batched measure pass after the flush that registered it, so a fast
|
|
57
|
+
* scroll that mounts many costs one reflow. Returns the unregister function. */
|
|
58
|
+
registerChild(id: string, child: MeasuredChild): () => void;
|
|
59
|
+
/** Re-measure one registered child immediately, after an edit changed its height. */
|
|
71
60
|
measureChildNow(id: string): void;
|
|
72
|
-
/**
|
|
73
|
-
*
|
|
74
|
-
* on a fling costs no DOM read. */
|
|
61
|
+
/** Compares `observedHeight` against the height last applied, with no DOM read, so the
|
|
62
|
+
* no-op resize every mount fires costs nothing during a fast scroll. */
|
|
75
63
|
measureChildOnResize(id: string, observedHeight: number): void;
|
|
76
|
-
/**
|
|
77
|
-
*
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
*/
|
|
83
|
-
revealHoldsScroll(): boolean;
|
|
84
|
-
/** Scroll this scope so child `index` enters its window; resolves after a tick. */
|
|
64
|
+
/** Where child `index`'s top sits in the scroll container's content, by the height table,
|
|
65
|
+
* and its height; null past the end or before the list mounts. */
|
|
66
|
+
targetTopOf(index: number): TargetTop | null;
|
|
67
|
+
/** A scripted `scrollTop` write fires no `scroll` event in time, so the window re-reads it. */
|
|
68
|
+
syncScrollTop(): void;
|
|
69
|
+
/** Scroll this list so child `index` is inside the mounted range; resolves after a tick. */
|
|
85
70
|
revealChild(index: number): Promise<void>;
|
|
86
|
-
/**
|
|
87
|
-
*
|
|
88
|
-
* waiting on a mount that can otherwise never come (VR-5 termination). */
|
|
71
|
+
/** Whether `index` is in the mounted range; read after `revealChild` so a wait for the mount
|
|
72
|
+
* gives up instead of hanging when the scroll didn't bring it in (VR-5). */
|
|
89
73
|
isInWindow(index: number): boolean;
|
|
90
74
|
dispose(): void;
|
|
91
75
|
}
|
|
92
|
-
/**
|
|
93
|
-
*
|
|
94
|
-
* recorded, never on which callback delivered it: a cached remount can report the grown
|
|
95
|
-
* size in the very first callback, so a callback-order heuristic would drop it.
|
|
96
|
-
* `recorded === undefined` means the scope has applied no height for this block yet —
|
|
97
|
-
* defer to the batched pass rather than racing a lone read in on a fling-dirtied layout.
|
|
98
|
-
*/
|
|
76
|
+
/** Whether a resize is worth re-measuring: only when the height differs from the one this list
|
|
77
|
+
* applied. With none applied yet, the batched pass owns the first measure. */
|
|
99
78
|
export declare function shouldRemeasureOnResize(recorded: number | undefined, observed: number): boolean;
|
|
100
79
|
export declare function createListWindowing(deps: ListWindowingDeps): ListWindowing;
|