@voithos-labs/aragonite 0.10.3 → 0.10.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/a11y-strings.d.ts +12 -5
- package/dist/a11y-strings.js +61 -5
- package/dist/action-contracts.d.ts +242 -155
- package/dist/action-contracts.js +2 -2
- package/dist/active-editor.d.ts +3 -3
- package/dist/active-editor.js +8 -9
- package/dist/ambient/ambient-dom.d.ts +2 -5
- package/dist/ambient/ambient-dom.js +16 -62
- package/dist/assert.js +6 -5
- package/dist/block-component.d.ts +135 -109
- package/dist/block-component.js +30 -22
- package/dist/block-id.d.ts +6 -10
- package/dist/block-id.js +25 -14
- package/dist/bounded-memo.d.ts +5 -5
- package/dist/bounded-memo.js +6 -6
- package/dist/components/BlockDragHandle.svelte +13 -20
- package/dist/components/BlockHost.svelte +56 -134
- package/dist/components/BlockList.svelte +22 -19
- package/dist/components/DecorationOverlay.svelte +9 -10
- package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
- package/dist/components/Editor.svelte +619 -1089
- package/dist/components/Editor.svelte.d.ts +9 -20
- package/dist/components/GapCaret.svelte +26 -59
- package/dist/components/SelectionOverlay.svelte +36 -67
- package/dist/components/SelectionOverlay.svelte.d.ts +6 -4
- package/dist/components/TailInsert.svelte +8 -55
- package/dist/components/TailInsert.svelte.d.ts +4 -6
- package/dist/components/block-content-selector.d.ts +11 -11
- package/dist/components/block-content-selector.js +11 -11
- package/dist/components/block-el-lookup.d.ts +6 -0
- package/dist/components/block-el-lookup.js +27 -0
- package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
- package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
- package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
- package/dist/components/blocks/code/CodeBlock.svelte +255 -276
- package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
- package/dist/components/blocks/code/CodeBlockRail.svelte +103 -100
- package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
- package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
- package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
- package/dist/components/blocks/code/code-bootstrap.js +35 -28
- package/dist/components/blocks/code/code-context-actions.js +5 -4
- package/dist/components/blocks/code/code-enter.js +2 -2
- package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
- package/dist/components/blocks/code/code-fence-boundary.js +40 -66
- package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
- package/dist/components/blocks/code/code-fence-exit.js +24 -25
- package/dist/components/blocks/code/code-indent.d.ts +2 -2
- package/dist/components/blocks/code/code-indent.js +4 -7
- package/dist/components/blocks/code/code-languages.d.ts +16 -12
- package/dist/components/blocks/code/code-languages.js +58 -32
- package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
- package/dist/components/blocks/code/code-paste-surface.js +9 -18
- package/dist/components/blocks/code/code-renderer.d.ts +21 -5
- package/dist/components/blocks/code/code-renderer.js +90 -125
- package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
- package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
- package/dist/components/blocks/directive/activate-directives.js +18 -13
- package/dist/components/blocks/editable-leaf.d.ts +50 -74
- package/dist/components/blocks/editable-leaf.js +144 -202
- package/dist/components/blocks/editable-surface.d.ts +96 -100
- package/dist/components/blocks/editable-surface.js +101 -109
- package/dist/components/blocks/list/ListBlock.svelte +46 -90
- package/dist/components/blocks/list/ListItemBlock.svelte +99 -144
- package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +3 -0
- package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
- package/dist/components/blocks/list/task-checkbox.js +12 -7
- package/dist/components/blocks/plain-text-backend.d.ts +4 -20
- package/dist/components/blocks/plain-text-backend.js +9 -43
- package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
- package/dist/components/blocks/surface-wiring.svelte.js +15 -34
- package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
- package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
- package/dist/components/blocks/table/TableBlock.svelte +100 -165
- package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
- package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
- package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
- package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
- package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
- package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
- package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
- package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
- package/dist/components/blocks/table/cell-pointer.js +49 -71
- package/dist/components/blocks/table/cell-render.d.ts +24 -29
- package/dist/components/blocks/table/cell-render.js +29 -31
- package/dist/components/blocks/table/selected-cells.d.ts +7 -7
- package/dist/components/blocks/table/selected-cells.js +9 -13
- package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
- package/dist/components/blocks/table/table-caret-at-point.js +5 -5
- package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
- package/dist/components/blocks/table/table-cell-paste.js +27 -43
- package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
- package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
- package/dist/components/blocks/table/table-menu-model.js +6 -10
- package/dist/components/blocks/table/table-navigation.js +2 -2
- package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
- package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
- package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
- package/dist/components/blocks/text/auto-pair-record.js +51 -0
- package/dist/components/blocks/text/click-snap-guard.d.ts +9 -4
- package/dist/components/blocks/text/click-snap-guard.js +16 -5
- package/dist/components/blocks/text/composition-seat.d.ts +17 -14
- package/dist/components/blocks/text/composition-seat.js +11 -11
- package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
- package/dist/components/blocks/text/construct-edge-delete.js +50 -65
- package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
- package/dist/components/blocks/text/construct-reveal.js +13 -14
- package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
- package/dist/components/blocks/text/delimiter-autopair.js +87 -103
- package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
- package/dist/components/blocks/text/edge-policy-dispatch.js +164 -180
- package/dist/components/blocks/text/edge-seat.d.ts +17 -26
- package/dist/components/blocks/text/edge-seat.js +43 -70
- package/dist/components/blocks/text/link-at-point.d.ts +9 -9
- package/dist/components/blocks/text/link-at-point.js +12 -15
- package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
- package/dist/components/blocks/text/live-join-seam.js +75 -112
- package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
- package/dist/components/blocks/text/live-selection-edit.js +32 -105
- package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
- package/dist/components/blocks/text/live-split-rebalance.js +50 -67
- package/dist/components/blocks/text/marker-completion.d.ts +7 -12
- package/dist/components/blocks/text/marker-completion.js +17 -10
- package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
- package/dist/components/blocks/text/pending-mark-insert.js +30 -49
- package/dist/components/blocks/text/screen-diff.d.ts +5 -15
- package/dist/components/blocks/text/screen-diff.js +5 -19
- package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
- package/dist/components/blocks/text/text-clipboard.js +27 -32
- package/dist/components/blocks/text/text-keydown.d.ts +20 -30
- package/dist/components/blocks/text/text-keydown.js +54 -51
- package/dist/components/blocks/text/text-render.d.ts +25 -35
- package/dist/components/blocks/text/text-render.js +82 -61
- package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
- package/dist/components/blocks/text/widget-adjacency.js +17 -17
- package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
- package/dist/components/blocks/text/widget-interaction.js +243 -208
- package/dist/components/blocks/widget-portal.d.ts +20 -29
- package/dist/components/blocks/widget-portal.js +16 -14
- package/dist/components/built-in-blocks.d.ts +3 -4
- package/dist/components/built-in-blocks.js +17 -18
- package/dist/components/drag-handle.d.ts +13 -30
- package/dist/components/drag-handle.js +25 -63
- package/dist/components/editor-built-ins.d.ts +1 -0
- package/dist/components/editor-built-ins.js +16 -0
- package/dist/components/editor-root-clipboard.d.ts +6 -6
- package/dist/components/editor-root-clipboard.js +16 -27
- package/dist/components/editor-root-document-swap.d.ts +49 -0
- package/dist/components/editor-root-document-swap.js +54 -0
- package/dist/components/editor-root-focus.d.ts +5 -4
- package/dist/components/editor-root-focus.js +51 -22
- package/dist/components/editor-root-focused-surface.d.ts +35 -0
- package/dist/components/editor-root-focused-surface.js +65 -0
- package/dist/components/editor-root-geometry.d.ts +15 -24
- package/dist/components/editor-root-geometry.js +27 -31
- package/dist/components/editor-root-gestures.d.ts +39 -0
- package/dist/components/editor-root-gestures.js +189 -0
- package/dist/components/editor-root-keydown.d.ts +10 -25
- package/dist/components/editor-root-keydown.js +19 -43
- package/dist/components/editor-root-listeners.d.ts +22 -31
- package/dist/components/editor-root-listeners.js +49 -46
- package/dist/components/editor-root-menus.d.ts +51 -0
- package/dist/components/editor-root-menus.js +147 -0
- package/dist/components/editor-root-mode-flip.d.ts +16 -11
- package/dist/components/editor-root-mode-flip.js +36 -34
- package/dist/components/editor-root-scroll-host.d.ts +22 -0
- package/dist/components/editor-root-scroll-host.js +34 -0
- package/dist/components/editor-root-test-surface.d.ts +48 -0
- package/dist/components/editor-root-test-surface.js +6 -0
- package/dist/components/image/ImageOverlayHost.svelte +44 -35
- package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
- package/dist/components/image/ImageProperties.svelte +37 -41
- package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
- package/dist/components/image/ImageResizeHandles.svelte +26 -30
- package/dist/components/image/image-crop.d.ts +5 -11
- package/dist/components/image/image-crop.js +5 -11
- package/dist/components/image/image-edit-commit.d.ts +19 -16
- package/dist/components/image/image-edit-commit.js +74 -38
- package/dist/components/image/image-resize.d.ts +2 -5
- package/dist/components/image/image-resize.js +3 -6
- package/dist/components/image/image-widget-editing.d.ts +3 -3
- package/dist/components/image/image-widget-editing.js +9 -9
- package/dist/components/image/widget-dom.d.ts +2 -3
- package/dist/components/image/widget-dom.js +19 -24
- package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
- package/dist/components/image/widget-selection-state.svelte.js +26 -19
- package/dist/components/kind-cue.svelte.d.ts +21 -0
- package/dist/components/kind-cue.svelte.js +35 -0
- package/dist/components/link-card/LinkCard.svelte +115 -64
- package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
- package/dist/components/link-card/LinkCardHost.svelte +42 -33
- package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
- package/dist/components/link-card/link-card-commit.d.ts +16 -19
- package/dist/components/link-card/link-card-commit.js +21 -30
- package/dist/components/link-card/link-card-entry.d.ts +13 -23
- package/dist/components/link-card/link-card-entry.js +16 -24
- package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
- package/dist/components/link-card/link-card-state.svelte.js +2 -2
- package/dist/components/lrd-map-gate.d.ts +4 -11
- package/dist/components/lrd-map-gate.js +5 -11
- package/dist/components/menu/BlockMenu.svelte +20 -81
- package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
- package/dist/components/menu/InlineMenuHost.svelte +191 -0
- package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
- package/dist/components/menu/MenuIcon.svelte +3 -103
- package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
- package/dist/components/menu/SelectionToolbar.svelte +380 -0
- package/dist/components/menu/SelectionToolbar.svelte.d.ts +14 -0
- package/dist/components/menu/clipboard-actions.d.ts +3 -4
- package/dist/components/menu/clipboard-actions.js +3 -4
- package/dist/components/menu/default-context-actions.d.ts +4 -13
- package/dist/components/menu/default-context-actions.js +49 -67
- package/dist/components/menu/flyout-placement.d.ts +2 -2
- package/dist/components/menu/flyout-placement.js +2 -2
- package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
- package/dist/components/menu/menu-presence.svelte.js +19 -0
- package/dist/components/paste-image-arm.d.ts +6 -11
- package/dist/components/paste-image-arm.js +11 -18
- package/dist/components/portal.d.ts +2 -5
- package/dist/components/portal.js +4 -7
- package/dist/core/directive/activate.d.ts +4 -5
- package/dist/core/directive/activate.js +8 -9
- package/dist/core/directive/container-opener.js +13 -12
- package/dist/core/directive/grammar.d.ts +2 -5
- package/dist/core/directive/grammar.js +10 -10
- package/dist/core/directive/kinds.d.ts +4 -7
- package/dist/core/directive/kinds.js +14 -16
- package/dist/core/directive/registry.d.ts +12 -9
- package/dist/core/directive/registry.js +19 -20
- package/dist/core/directive/text-recognizer.d.ts +3 -2
- package/dist/core/directive/text-recognizer.js +5 -9
- package/dist/core/escapable.d.ts +1 -5
- package/dist/core/escapable.js +1 -5
- package/dist/core/inline/backticks.d.ts +3 -4
- package/dist/core/inline/backticks.js +3 -4
- package/dist/core/inline/character-refs.js +2 -1
- package/dist/core/inline/destination-bytes.d.ts +6 -3
- package/dist/core/inline/destination-bytes.js +50 -8
- package/dist/core/inline/entity-widget.d.ts +4 -3
- package/dist/core/inline/entity-widget.js +6 -6
- package/dist/core/inline/format-toggle.d.ts +22 -28
- package/dist/core/inline/format-toggle.js +97 -129
- package/dist/core/inline/html-entities.d.ts +2 -3
- package/dist/core/inline/html-entities.js +2 -3
- package/dist/core/inline/html-tag-grammar.js +6 -2
- package/dist/core/inline/image-dimensions.d.ts +2 -0
- package/dist/core/inline/image-dimensions.js +19 -2
- package/dist/core/inline/image-source-bytes.d.ts +11 -0
- package/dist/core/inline/image-source-bytes.js +71 -0
- package/dist/core/inline/index.d.ts +28 -21
- package/dist/core/inline/index.js +56 -34
- package/dist/core/inline/inline-cache.d.ts +12 -15
- package/dist/core/inline/inline-cache.js +11 -14
- package/dist/core/inline/inline-widgets.d.ts +55 -68
- package/dist/core/inline/inline-widgets.js +55 -58
- package/dist/core/inline/link-destination.d.ts +31 -0
- package/dist/core/inline/link-destination.js +129 -0
- package/dist/core/inline/link-reference-resolver.d.ts +8 -6
- package/dist/core/inline/link-reference-resolver.js +10 -6
- package/dist/core/inline/link-source-bytes.d.ts +31 -0
- package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
- package/dist/core/inline/live-edit/read-back.d.ts +29 -0
- package/dist/core/inline/live-edit/read-back.js +50 -0
- package/dist/core/inline/picture.d.ts +10 -0
- package/dist/core/inline/picture.js +40 -0
- package/dist/core/inline/scan/autolinks.d.ts +7 -8
- package/dist/core/inline/scan/autolinks.js +80 -59
- package/dist/core/inline/scan/brackets.d.ts +2 -2
- package/dist/core/inline/scan/brackets.js +6 -103
- package/dist/core/inline/scan/code-spans.d.ts +4 -0
- package/dist/core/inline/scan/code-spans.js +8 -0
- package/dist/core/inline/scan/emphasis.js +10 -14
- package/dist/core/inline/scan/index.d.ts +3 -1
- package/dist/core/inline/scan/index.js +32 -33
- package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
- package/dist/core/inline/scan/plugin-syntax.js +75 -89
- package/dist/core/inline/scan/scan-state.d.ts +2 -0
- package/dist/core/inline/scan/scan-state.js +1 -0
- package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
- package/dist/core/inline/scan/simple-nodes.js +2 -5
- package/dist/core/inline/scan/triggers.d.ts +17 -0
- package/dist/core/inline/scan/triggers.js +26 -0
- package/dist/core/inline/scan/url.js +8 -10
- package/dist/core/inline/transparency.d.ts +2 -1
- package/dist/core/inline/transparency.js +33 -17
- package/dist/core/inline/visibility.d.ts +30 -49
- package/dist/core/inline/visibility.js +31 -49
- package/dist/core/inline/walk.d.ts +4 -10
- package/dist/core/inline/walk.js +4 -10
- package/dist/core/inline-render.d.ts +22 -27
- package/dist/core/inline-render.js +51 -60
- package/dist/core/lines.d.ts +67 -26
- package/dist/core/lines.js +164 -33
- package/dist/core/metadata-parity.d.ts +9 -0
- package/dist/core/metadata-parity.js +25 -0
- package/dist/core/node-views.d.ts +7 -6
- package/dist/core/node-views.js +5 -5
- package/dist/core/nodes.d.ts +34 -44
- package/dist/core/nodes.js +4 -12
- package/dist/core/parser.d.ts +27 -34
- package/dist/core/parser.js +53 -67
- package/dist/core/parsers/blockquote.d.ts +5 -8
- package/dist/core/parsers/blockquote.js +11 -10
- package/dist/core/parsers/built-in-openers.d.ts +2 -5
- package/dist/core/parsers/built-in-openers.js +5 -8
- package/dist/core/parsers/fence-syntax.d.ts +36 -7
- package/dist/core/parsers/fence-syntax.js +61 -11
- package/dist/core/parsers/fenced-code.d.ts +16 -0
- package/dist/core/parsers/fenced-code.js +16 -15
- package/dist/core/parsers/heading.d.ts +19 -2
- package/dist/core/parsers/heading.js +50 -2
- package/dist/core/parsers/html-block.d.ts +3 -6
- package/dist/core/parsers/html-block.js +10 -11
- package/dist/core/parsers/indented-code.d.ts +1 -1
- package/dist/core/parsers/indented-code.js +2 -8
- package/dist/core/parsers/link-reference.d.ts +5 -3
- package/dist/core/parsers/link-reference.js +116 -120
- package/dist/core/parsers/list.d.ts +12 -5
- package/dist/core/parsers/list.js +53 -36
- package/dist/core/parsers/paragraph.d.ts +3 -3
- package/dist/core/parsers/paragraph.js +14 -5
- package/dist/core/parsers/table-completion.d.ts +2 -5
- package/dist/core/parsers/table-completion.js +7 -10
- package/dist/core/parsers/table.d.ts +8 -8
- package/dist/core/parsers/table.js +23 -26
- package/dist/core/parsers/thematic-break.js +15 -14
- package/dist/core/paths.d.ts +13 -0
- package/dist/core/paths.js +31 -0
- package/dist/core/terminator-escalation.d.ts +0 -7
- package/dist/core/terminator-escalation.js +5 -8
- package/dist/core/url-policy.d.ts +2 -5
- package/dist/core/url-policy.js +8 -12
- package/dist/cursor/caret-memory.d.ts +34 -0
- package/dist/cursor/caret-memory.js +82 -0
- package/dist/cursor/coordinate-spaces.d.ts +26 -19
- package/dist/cursor/coordinate-spaces.js +32 -20
- package/dist/cursor/dom-walk.d.ts +7 -13
- package/dist/cursor/dom-walk.js +7 -13
- package/dist/cursor/edge-affinity.d.ts +7 -35
- package/dist/cursor/edge-affinity.js +13 -44
- package/dist/cursor/focused-caret.d.ts +6 -8
- package/dist/cursor/focused-caret.js +7 -16
- package/dist/cursor/height-model.d.ts +3 -3
- package/dist/cursor/height-model.js +5 -5
- package/dist/cursor/height-oracle.d.ts +10 -7
- package/dist/cursor/height-oracle.js +26 -75
- package/dist/cursor/observe-resize.d.ts +13 -0
- package/dist/cursor/observe-resize.js +43 -0
- package/dist/cursor/overlay-rects.d.ts +2 -5
- package/dist/cursor/overlay-rects.js +2 -5
- package/dist/cursor/overlay-remeasure.d.ts +6 -7
- package/dist/cursor/overlay-remeasure.js +10 -14
- package/dist/cursor/pending-marks.d.ts +7 -9
- package/dist/cursor/pending-marks.js +6 -27
- package/dist/cursor/point-offset.d.ts +16 -10
- package/dist/cursor/point-offset.js +60 -25
- package/dist/cursor/reveal-source.d.ts +7 -11
- package/dist/cursor/reveal-source.js +10 -18
- package/dist/cursor/scroll-ancestors.d.ts +9 -20
- package/dist/cursor/scroll-ancestors.js +14 -26
- package/dist/cursor/scroll-owner.d.ts +92 -0
- package/dist/cursor/scroll-owner.js +283 -0
- package/dist/cursor/scrollport.d.ts +16 -8
- package/dist/cursor/scrollport.js +28 -5
- package/dist/cursor/sticky-column.d.ts +6 -29
- package/dist/cursor/sticky-column.js +6 -49
- package/dist/cursor/sticky-measure.d.ts +14 -9
- package/dist/cursor/sticky-measure.js +99 -49
- package/dist/cursor/surface-backend.d.ts +41 -0
- package/dist/cursor/surface-backend.js +78 -0
- package/dist/cursor/typography-estimates.d.ts +3 -3
- package/dist/cursor/typography-estimates.js +3 -3
- package/dist/cursor/visual-lines.d.ts +25 -13
- package/dist/cursor/visual-lines.js +72 -28
- package/dist/cursor/widget-edge-snap.d.ts +23 -0
- package/dist/cursor/widget-edge-snap.js +39 -0
- package/dist/cursor/widget-offset.d.ts +111 -102
- package/dist/cursor/widget-offset.js +352 -177
- package/dist/debug/diagnostics-report.d.ts +6 -6
- package/dist/debug/diagnostics-report.js +5 -5
- package/dist/debug/dump-tree.js +2 -2
- package/dist/debug/editor-diagnostics.d.ts +15 -0
- package/dist/debug/editor-diagnostics.js +33 -0
- package/dist/debug/inspect.d.ts +2 -2
- package/dist/debug/inspect.js +4 -4
- package/dist/debug/interaction-trace.d.ts +14 -15
- package/dist/debug/interaction-trace.js +19 -20
- package/dist/debug/operations-log.d.ts +1 -1
- package/dist/debug/operations-log.js +1 -1
- package/dist/decorations/buckets.d.ts +6 -12
- package/dist/decorations/buckets.js +4 -11
- package/dist/decorations/decoration-state.svelte.d.ts +2 -3
- package/dist/decorations/decoration-state.svelte.js +24 -26
- package/dist/decorations/island-dom.d.ts +10 -18
- package/dist/decorations/island-dom.js +25 -50
- package/dist/decorations/reserved-attrs.d.ts +6 -8
- package/dist/decorations/reserved-attrs.js +31 -17
- package/dist/decorations/types.d.ts +6 -7
- package/dist/decorations/types.js +2 -1
- package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
- package/dist/decorations/use-block-decorations.svelte.js +71 -0
- package/dist/decorations/widget-dom.d.ts +3 -3
- package/dist/decorations/widget-dom.js +5 -5
- package/dist/dev-warn.d.ts +5 -2
- package/dist/dev-warn.js +16 -4
- package/dist/editor-actions/ancestry-folds.d.ts +9 -14
- package/dist/editor-actions/ancestry-folds.js +13 -18
- package/dist/editor-actions/block-edit-core.d.ts +49 -22
- package/dist/editor-actions/block-edit-core.js +279 -151
- package/dist/editor-actions/block-edit-scope.d.ts +63 -50
- package/dist/editor-actions/block-edit-scope.js +100 -48
- package/dist/editor-actions/block-edit.d.ts +2 -3
- package/dist/editor-actions/block-edit.js +14 -90
- package/dist/editor-actions/commit/history.d.ts +4 -4
- package/dist/editor-actions/commit/history.js +33 -34
- package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
- package/dist/editor-actions/commit/reading-write-gate.js +56 -0
- package/dist/editor-actions/commit/text-batch.d.ts +7 -11
- package/dist/editor-actions/commit/text-batch.js +6 -7
- package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
- package/dist/editor-actions/commit/undo-controller.js +346 -216
- package/dist/editor-actions/container-block-component.d.ts +32 -51
- package/dist/editor-actions/container-block-component.js +66 -92
- package/dist/editor-actions/container-edit.d.ts +4 -2
- package/dist/editor-actions/container-edit.js +14 -44
- package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
- package/dist/editor-actions/container-exit-overrides.js +19 -21
- package/dist/editor-actions/deps.d.ts +25 -32
- package/dist/editor-actions/enter-completion.d.ts +12 -15
- package/dist/editor-actions/enter-completion.js +49 -51
- package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
- package/dist/editor-actions/focus/focus-dispatch.js +33 -52
- package/dist/editor-actions/focus/focus-landing.d.ts +11 -5
- package/dist/editor-actions/focus/focus-landing.js +29 -14
- package/dist/editor-actions/focus/focus.d.ts +3 -2
- package/dist/editor-actions/focus/focus.js +42 -59
- package/dist/editor-actions/index.d.ts +4 -3
- package/dist/editor-actions/index.js +5 -4
- package/dist/editor-actions/inline-range-commit.d.ts +18 -16
- package/dist/editor-actions/inline-range-commit.js +45 -54
- package/dist/editor-actions/leaf-write.d.ts +11 -0
- package/dist/editor-actions/leaf-write.js +102 -0
- package/dist/editor-actions/list-context.d.ts +9 -10
- package/dist/editor-actions/list-context.js +115 -110
- package/dist/editor-actions/list-overrides.d.ts +13 -5
- package/dist/editor-actions/list-overrides.js +36 -12
- package/dist/editor-actions/merge-fallback.d.ts +10 -16
- package/dist/editor-actions/merge-fallback.js +11 -22
- package/dist/editor-actions/nested/container-actions.d.ts +37 -0
- package/dist/editor-actions/nested/container-actions.js +42 -0
- package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
- package/dist/editor-actions/nested/emptied-container.js +5 -0
- package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
- package/dist/editor-actions/nested/nested-actions.js +17 -15
- package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
- package/dist/editor-actions/nested/nested-block-edit.js +40 -134
- package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
- package/dist/editor-actions/nested/nested-focus.js +33 -21
- package/dist/editor-actions/paste-coordinator.d.ts +3 -2
- package/dist/editor-actions/paste-coordinator.js +17 -13
- package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
- package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
- package/dist/editor-actions/plugin/container.d.ts +55 -76
- package/dist/editor-actions/plugin/container.js +105 -186
- package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
- package/dist/editor-actions/plugin/directive-container.js +7 -8
- package/dist/editor-actions/reorder-action.d.ts +7 -12
- package/dist/editor-actions/reorder-action.js +32 -48
- package/dist/editor-actions/reorder-drag.d.ts +12 -8
- package/dist/editor-actions/reorder-drag.js +45 -41
- package/dist/editor-actions/replacement-focus.d.ts +13 -21
- package/dist/editor-actions/replacement-focus.js +32 -33
- package/dist/editor-actions/search-replace.js +71 -67
- package/dist/editor-actions/stored-caret.d.ts +7 -0
- package/dist/editor-actions/stored-caret.js +10 -0
- package/dist/editor-actions/table-context.d.ts +9 -11
- package/dist/editor-actions/table-context.js +70 -93
- package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
- package/dist/editor-actions/unwrap-strategies.js +52 -63
- package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
- package/dist/editor-actions/whole-block-focus-surface.js +43 -53
- package/dist/editor-events.d.ts +25 -29
- package/dist/editor-events.js +17 -28
- package/dist/editor-keys.d.ts +96 -104
- package/dist/editor-keys.js +11 -24
- package/dist/editor-props.d.ts +91 -71
- package/dist/editor-rects.d.ts +23 -34
- package/dist/editor-rects.js +9 -77
- package/dist/env.d.ts +6 -4
- package/dist/env.js +8 -4
- package/dist/index.d.ts +6 -2
- package/dist/index.js +5 -2
- package/dist/inline-menu/inline-menu-session.d.ts +37 -0
- package/dist/inline-menu/inline-menu-session.js +98 -0
- package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
- package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
- package/dist/inline-menu/types.d.ts +77 -0
- package/dist/inline-menu/types.js +7 -0
- package/dist/invariants/child-id-parity.d.ts +23 -0
- package/dist/invariants/child-id-parity.js +39 -0
- package/dist/invariants/commit-paths.d.ts +4 -4
- package/dist/invariants/commit-paths.js +4 -4
- package/dist/invariants/commit-scope.d.ts +4 -4
- package/dist/invariants/commit-scope.js +9 -8
- package/dist/invariants/context-keys.d.ts +2 -5
- package/dist/invariants/context-keys.js +3 -6
- package/dist/invariants/descriptor.d.ts +2 -6
- package/dist/invariants/descriptor.js +2 -6
- package/dist/invariants/inline-transitions.d.ts +9 -16
- package/dist/invariants/inline-transitions.js +10 -18
- package/dist/invariants/install.d.ts +18 -27
- package/dist/invariants/install.js +29 -30
- package/dist/invariants/keeps-a-block.d.ts +7 -0
- package/dist/invariants/keeps-a-block.js +14 -0
- package/dist/invariants/landable-caret.d.ts +5 -7
- package/dist/invariants/landable-caret.js +8 -11
- package/dist/invariants/landing-focus-scroll.d.ts +7 -0
- package/dist/invariants/landing-focus-scroll.js +13 -0
- package/dist/invariants/landing-value.d.ts +13 -0
- package/dist/invariants/landing-value.js +27 -0
- package/dist/invariants/marker-css-parity.d.ts +5 -6
- package/dist/invariants/marker-css-parity.js +11 -12
- package/dist/invariants/measures-in-own-list.d.ts +6 -0
- package/dist/invariants/measures-in-own-list.js +13 -0
- package/dist/invariants/node-shape.d.ts +18 -37
- package/dist/invariants/node-shape.js +123 -79
- package/dist/invariants/open-tail.d.ts +7 -0
- package/dist/invariants/open-tail.js +45 -0
- package/dist/invariants/placement-ends-widget.d.ts +8 -0
- package/dist/invariants/placement-ends-widget.js +13 -0
- package/dist/invariants/registry.d.ts +27 -66
- package/dist/invariants/registry.js +61 -137
- package/dist/invariants/render-fidelity.d.ts +4 -4
- package/dist/invariants/render-fidelity.js +5 -5
- package/dist/invariants/selection-endpoints.d.ts +6 -7
- package/dist/invariants/selection-endpoints.js +18 -16
- package/dist/invariants/single-node-sink.d.ts +4 -5
- package/dist/invariants/single-node-sink.js +4 -5
- package/dist/invariants/snapshot-integrity.d.ts +5 -6
- package/dist/invariants/snapshot-integrity.js +1 -1
- package/dist/invariants/structural-descriptor.d.ts +6 -15
- package/dist/invariants/structural-descriptor.js +6 -15
- package/dist/menu-icons.d.ts +47 -0
- package/dist/menu-icons.js +113 -0
- package/dist/perf/instruments.d.ts +20 -5
- package/dist/perf/instruments.js +35 -15
- package/dist/perf/use-mount-gauge.svelte.js +4 -4
- package/dist/plugin.d.ts +38 -8
- package/dist/plugin.js +102 -74
- package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
- package/dist/plugins/admonitions/admonition-kind.js +12 -10
- package/dist/plugins/admonitions/convert-document.d.ts +5 -5
- package/dist/plugins/admonitions/convert-document.js +8 -7
- package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
- package/dist/plugins/admonitions/gh-alert.js +21 -22
- package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
- package/dist/plugins/admonitions/github-alert-kind.js +28 -37
- package/dist/plugins/admonitions/index.js +2 -2
- package/dist/plugins/admonitions/kinds.d.ts +1 -1
- package/dist/plugins/admonitions/register.js +11 -2
- package/dist/plugins/details/DetailsBlock.svelte +20 -20
- package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
- package/dist/plugins/details/details-disclosure.svelte.js +6 -7
- package/dist/plugins/details/details-kind.d.ts +6 -7
- package/dist/plugins/details/details-kind.js +44 -59
- package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
- package/dist/plugins/emoji/emoji-recognizer.js +7 -14
- package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
- package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
- package/dist/plugins/footnotes/constants.d.ts +2 -0
- package/dist/plugins/footnotes/constants.js +3 -0
- package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
- package/dist/plugins/footnotes/footnote-definition.js +69 -45
- package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
- package/dist/plugins/footnotes/footnote-lookup.js +14 -26
- package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
- package/dist/plugins/footnotes/footnote-numbering.js +22 -31
- package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
- package/dist/plugins/footnotes/footnote-reference.js +8 -13
- package/dist/plugins/footnotes/index.js +2 -3
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
- package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
- package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
- package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
- package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
- package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
- package/dist/plugins/highlight-occurrences/word-char.js +4 -0
- package/dist/plugins/latex/BlockMath.svelte +58 -75
- package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
- package/dist/plugins/latex/MathInline.svelte +10 -9
- package/dist/plugins/latex/flanking.d.ts +1 -0
- package/dist/plugins/latex/flanking.js +3 -0
- package/dist/plugins/latex/index.d.ts +1 -1
- package/dist/plugins/latex/latex-kind.d.ts +4 -4
- package/dist/plugins/latex/latex-kind.js +113 -85
- package/dist/plugins/latex/math-completion.d.ts +1 -1
- package/dist/plugins/latex/math-completion.js +5 -8
- package/dist/plugins/latex/math-layout.d.ts +2 -8
- package/dist/plugins/latex/math-layout.js +0 -9
- package/dist/plugins/latex/math-renderer.d.ts +17 -20
- package/dist/plugins/latex/math-renderer.js +21 -38
- package/dist/plugins/latex/math-source.d.ts +4 -8
- package/dist/plugins/latex/math-source.js +36 -75
- package/dist/plugins/latex/register.d.ts +10 -11
- package/dist/plugins/latex/register.js +24 -10
- package/dist/plugins/latex/renderer.d.ts +9 -10
- package/dist/plugins/latex/renderer.js +9 -24
- package/dist/plugins/mermaid/MermaidBlock.svelte +63 -47
- package/dist/plugins/mermaid/index.js +1 -1
- package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
- package/dist/plugins/mermaid/mermaid-kind.js +30 -47
- package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
- package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
- package/dist/plugins/mermaid/register.d.ts +3 -3
- package/dist/plugins/mermaid/register.js +5 -5
- package/dist/plugins/mermaid/renderer.d.ts +5 -5
- package/dist/plugins/mermaid/renderer.js +8 -11
- package/dist/plugins/parrot/ParrotBlock.svelte +18 -7
- package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
- package/dist/plugins/parrot/parrot-plugin.js +3 -3
- package/dist/plugins/slash-commands/filter.d.ts +23 -0
- package/dist/plugins/slash-commands/filter.js +31 -0
- package/dist/plugins/slash-commands/index.d.ts +2 -0
- package/dist/plugins/slash-commands/index.js +2 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
- package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
- package/dist/plugins/slash-commands/slash-source.js +108 -0
- package/dist/plugins/toc/TocBlock.svelte +23 -22
- package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
- package/dist/plugins/toc/heading-outline.d.ts +7 -12
- package/dist/plugins/toc/heading-outline.js +22 -36
- package/dist/plugins/toc/navigation-queue.d.ts +2 -4
- package/dist/plugins/toc/toc-plugin.d.ts +5 -5
- package/dist/plugins/toc/toc-plugin.js +20 -13
- package/dist/presentation-mode.d.ts +15 -23
- package/dist/presentation-mode.js +19 -25
- package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
- package/dist/reactivity/block-list-state.svelte.js +8 -9
- package/dist/reactivity/block-window.svelte.d.ts +12 -6
- package/dist/reactivity/block-window.svelte.js +44 -17
- package/dist/reactivity/child-list.d.ts +34 -0
- package/dist/reactivity/child-list.js +48 -0
- package/dist/reactivity/content-version.svelte.d.ts +4 -7
- package/dist/reactivity/content-version.svelte.js +3 -5
- package/dist/reactivity/hold-across.d.ts +39 -0
- package/dist/reactivity/hold-across.js +57 -0
- package/dist/reactivity/layout-state.svelte.d.ts +27 -0
- package/dist/reactivity/layout-state.svelte.js +51 -0
- package/dist/reactivity/list-tree.d.ts +39 -0
- package/dist/reactivity/list-tree.js +132 -0
- package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
- package/dist/reactivity/list-windowing.svelte.js +143 -292
- package/dist/reactivity/measure-batch.d.ts +6 -8
- package/dist/reactivity/measure-batch.js +5 -6
- package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
- package/dist/reactivity/publish-ref.svelte.js +21 -85
- package/dist/reactivity/scope-geometry.d.ts +6 -13
- package/dist/reactivity/scope-geometry.js +7 -14
- package/dist/reactivity/state-registry.d.ts +5 -5
- package/dist/reactivity/state-registry.js +11 -15
- package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
- package/dist/reactivity/use-container-windowing.svelte.js +64 -74
- package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
- package/dist/reactivity/use-measured-child.svelte.js +41 -0
- package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
- package/dist/reactivity/use-window-floor.svelte.js +27 -0
- package/dist/reactivity/window-slice.d.ts +4 -4
- package/dist/reactivity/window-slice.js +0 -2
- package/dist/renderer-slot.d.ts +48 -0
- package/dist/renderer-slot.js +85 -0
- package/dist/scan-index.d.ts +4 -4
- package/dist/scan-index.js +4 -4
- package/dist/schema/block-commands.d.ts +69 -54
- package/dist/schema/block-commands.js +91 -104
- package/dist/schema/block-completions.d.ts +16 -19
- package/dist/schema/block-completions.js +25 -32
- package/dist/schema/block-component-registry.d.ts +13 -14
- package/dist/schema/block-component-registry.js +19 -17
- package/dist/schema/block-kind-descriptor.d.ts +234 -168
- package/dist/schema/block-kind-descriptor.js +151 -66
- package/dist/schema/block-openers.d.ts +48 -39
- package/dist/schema/block-openers.js +73 -83
- package/dist/schema/built-in-descriptors.d.ts +3 -5
- package/dist/schema/built-in-descriptors.js +96 -80
- package/dist/schema/child-spans.d.ts +12 -10
- package/dist/schema/child-spans.js +68 -34
- package/dist/schema/closure.d.ts +18 -16
- package/dist/schema/closure.js +24 -14
- package/dist/schema/command-id.d.ts +6 -8
- package/dist/schema/command-id.js +20 -25
- package/dist/schema/commands.d.ts +79 -81
- package/dist/schema/commands.js +156 -116
- package/dist/schema/container-raw.d.ts +51 -11
- package/dist/schema/container-raw.js +143 -14
- package/dist/schema/container-rebuilders.d.ts +17 -15
- package/dist/schema/container-rebuilders.js +30 -22
- package/dist/schema/context-actions.d.ts +25 -13
- package/dist/schema/context-actions.js +32 -17
- package/dist/schema/define-plugin-block.d.ts +8 -6
- package/dist/schema/define-plugin-block.js +6 -4
- package/dist/schema/fenced-code-raw.d.ts +30 -17
- package/dist/schema/fenced-code-raw.js +155 -107
- package/dist/schema/global-commands.d.ts +6 -6
- package/dist/schema/global-commands.js +14 -22
- package/dist/schema/height-estimates.d.ts +31 -0
- package/dist/schema/height-estimates.js +64 -0
- package/dist/schema/inline-construct-policy.d.ts +42 -55
- package/dist/schema/inline-construct-policy.js +36 -35
- package/dist/schema/insert-catalogue.d.ts +30 -0
- package/dist/schema/insert-catalogue.js +95 -0
- package/dist/schema/keybinding-overrides.d.ts +9 -11
- package/dist/schema/keybinding-overrides.js +1 -1
- package/dist/schema/keybindings.d.ts +15 -7
- package/dist/schema/keybindings.js +21 -9
- package/dist/schema/merge-rules.d.ts +5 -7
- package/dist/schema/merge-rules.js +7 -9
- package/dist/schema/opener-priorities.d.ts +4 -4
- package/dist/schema/opener-priorities.js +4 -4
- package/dist/schema/operations.d.ts +9 -11
- package/dist/schema/operations.js +3 -3
- package/dist/schema/page-role.d.ts +14 -0
- package/dist/schema/page-role.js +19 -0
- package/dist/schema/plugin-activation.d.ts +4 -6
- package/dist/schema/plugin-activation.js +12 -10
- package/dist/schema/plugin-editor-context.d.ts +25 -10
- package/dist/schema/plugin-editor-context.js +40 -9
- package/dist/schema/plugin-install.d.ts +49 -17
- package/dist/schema/plugin-install.js +51 -25
- package/dist/schema/plugin-kind.d.ts +12 -8
- package/dist/schema/plugin-kind.js +35 -42
- package/dist/schema/plugin-name.js +3 -3
- package/dist/schema/plugin-registry.d.ts +54 -0
- package/dist/schema/plugin-registry.js +70 -0
- package/dist/schema/reading.d.ts +23 -0
- package/dist/schema/reading.js +7 -0
- package/dist/schema/register-once.d.ts +3 -5
- package/dist/schema/register-once.js +7 -16
- package/dist/schema/registration-checks.d.ts +12 -16
- package/dist/schema/registration-checks.js +35 -51
- package/dist/schema/registration-pairs.d.ts +54 -0
- package/dist/schema/registration-pairs.js +48 -0
- package/dist/schema/registration-pending.d.ts +8 -12
- package/dist/schema/registration-pending.js +9 -9
- package/dist/schema/registry-reset.d.ts +8 -4
- package/dist/schema/registry-reset.js +13 -26
- package/dist/schema/registry-view.d.ts +25 -13
- package/dist/schema/registry-view.js +26 -20
- package/dist/schema/reserved-chords.d.ts +9 -10
- package/dist/schema/reserved-chords.js +73 -78
- package/dist/schema/reserved-chrome.d.ts +12 -11
- package/dist/schema/reserved-chrome.js +15 -11
- package/dist/schema/setext-raw.d.ts +13 -0
- package/dist/schema/setext-raw.js +33 -0
- package/dist/schema/stored-as.d.ts +20 -0
- package/dist/schema/stored-as.js +6 -0
- package/dist/schema/table-cell-raw.d.ts +18 -7
- package/dist/schema/table-cell-raw.js +28 -7
- package/dist/schema/whole-block-unit.d.ts +5 -4
- package/dist/schema/whole-block-unit.js +5 -4
- package/dist/search/document-scan.d.ts +3 -3
- package/dist/search/document-scan.js +2 -2
- package/dist/search/matcher.d.ts +1 -1
- package/dist/search/regex-executor.d.ts +5 -6
- package/dist/search/regex-executor.js +6 -8
- package/dist/search/replace.d.ts +2 -5
- package/dist/search/replace.js +2 -5
- package/dist/search/search-state.svelte.d.ts +5 -5
- package/dist/search/search-state.svelte.js +12 -16
- package/dist/selection/autoscroll.d.ts +6 -9
- package/dist/selection/block-hit-test.d.ts +16 -24
- package/dist/selection/block-hit-test.js +29 -22
- package/dist/selection/caret-doors.d.ts +15 -14
- package/dist/selection/caret-doors.js +37 -26
- package/dist/selection/caret-landing.d.ts +62 -0
- package/dist/selection/caret-landing.js +157 -0
- package/dist/selection/caret-restore.d.ts +17 -10
- package/dist/selection/caret-restore.js +10 -22
- package/dist/selection/caret-target.d.ts +30 -0
- package/dist/selection/caret-target.js +84 -0
- package/dist/selection/char-endpoint-snap.d.ts +6 -10
- package/dist/selection/char-endpoint-snap.js +8 -14
- package/dist/selection/clipboard-text.d.ts +5 -12
- package/dist/selection/clipboard-text.js +69 -172
- package/dist/selection/covered-block.d.ts +6 -8
- package/dist/selection/covered-block.js +8 -19
- package/dist/selection/cross-block/clipboard.d.ts +3 -2
- package/dist/selection/cross-block/clipboard.js +13 -4
- package/dist/selection/cross-block/dispatch.d.ts +47 -43
- package/dist/selection/cross-block/dispatch.js +12 -23
- package/dist/selection/cross-block/format-range.d.ts +18 -21
- package/dist/selection/cross-block/format-range.js +104 -103
- package/dist/selection/cross-block/format-toggle.d.ts +10 -15
- package/dist/selection/cross-block/format-toggle.js +28 -33
- package/dist/selection/cross-block/keydown.d.ts +4 -4
- package/dist/selection/cross-block/keydown.js +93 -152
- package/dist/selection/cross-block/ops.d.ts +19 -34
- package/dist/selection/cross-block/ops.js +110 -95
- package/dist/selection/cross-block/paste.d.ts +2 -3
- package/dist/selection/cross-block/paste.js +61 -104
- package/dist/selection/cross-block/pointer.d.ts +17 -15
- package/dist/selection/cross-block/pointer.js +74 -25
- package/dist/selection/cross-block/type-replace.d.ts +4 -6
- package/dist/selection/cross-block/type-replace.js +53 -146
- package/dist/selection/dead-space-caret.d.ts +20 -28
- package/dist/selection/dead-space-caret.js +79 -87
- package/dist/selection/drag-pointer.d.ts +22 -5
- package/dist/selection/drag-pointer.js +63 -31
- package/dist/selection/gap-caret.d.ts +17 -28
- package/dist/selection/gap-caret.js +14 -26
- package/dist/selection/grid-selection.d.ts +12 -0
- package/dist/selection/grid-selection.js +22 -0
- package/dist/selection/keyboard-extend.d.ts +27 -39
- package/dist/selection/keyboard-extend.js +94 -116
- package/dist/selection/multi-click.d.ts +37 -0
- package/dist/selection/multi-click.js +197 -0
- package/dist/selection/native-bridge.d.ts +30 -37
- package/dist/selection/native-bridge.js +80 -100
- package/dist/selection/nearest-block.d.ts +17 -12
- package/dist/selection/nearest-block.js +37 -18
- package/dist/selection/path-lookup.d.ts +31 -14
- package/dist/selection/path-lookup.js +110 -20
- package/dist/selection/path-math.d.ts +9 -11
- package/dist/selection/path-math.js +5 -7
- package/dist/selection/pointer-gesture.d.ts +9 -0
- package/dist/selection/pointer-gesture.js +11 -0
- package/dist/selection/pointer-session.d.ts +10 -16
- package/dist/selection/pointer-session.js +6 -7
- package/dist/selection/primitives.d.ts +64 -33
- package/dist/selection/primitives.js +61 -53
- package/dist/selection/range-coverage.d.ts +94 -0
- package/dist/selection/range-coverage.js +365 -0
- package/dist/selection/range-delete-ceremony.d.ts +28 -74
- package/dist/selection/range-delete-ceremony.js +100 -141
- package/dist/selection/range-delete-chrome.d.ts +20 -33
- package/dist/selection/range-delete-chrome.js +53 -78
- package/dist/selection/range-delete-table-coverage.d.ts +11 -25
- package/dist/selection/range-delete-table-coverage.js +42 -112
- package/dist/selection/range-delete-table.d.ts +14 -12
- package/dist/selection/range-delete-table.js +106 -310
- package/dist/selection/range-delete.d.ts +18 -19
- package/dist/selection/range-delete.js +83 -123
- package/dist/selection/round-trip-restore.d.ts +18 -0
- package/dist/selection/round-trip-restore.js +19 -0
- package/dist/selection/selection-announcer.d.ts +17 -0
- package/dist/selection/selection-announcer.js +25 -0
- package/dist/selection/selection-description.d.ts +4 -3
- package/dist/selection/selection-description.js +5 -4
- package/dist/selection/selection-drop.d.ts +52 -0
- package/dist/selection/selection-drop.js +317 -0
- package/dist/selection/selection-restore.d.ts +20 -33
- package/dist/selection/selection-restore.js +21 -44
- package/dist/selection/selection-state.svelte.d.ts +50 -42
- package/dist/selection/selection-state.svelte.js +144 -98
- package/dist/selection/shared-keydown.d.ts +22 -27
- package/dist/selection/shared-keydown.js +25 -45
- package/dist/selection/table-endpoint-snap.d.ts +17 -41
- package/dist/selection/table-endpoint-snap.js +54 -80
- package/dist/selection/table-rect-extend.d.ts +3 -6
- package/dist/selection/table-rect-extend.js +19 -14
- package/dist/styles/editor-theme.css +75 -53
- package/dist/styles/editor.css +248 -139
- package/dist/testing/conformance-core.d.ts +50 -18
- package/dist/testing/conformance-core.js +88 -50
- package/dist/testing/container-conformance.d.ts +48 -84
- package/dist/testing/container-conformance.js +159 -285
- package/dist/testing/headless-actions.d.ts +34 -19
- package/dist/testing/headless-actions.js +116 -65
- package/dist/testing/headless-block-list.svelte.d.ts +16 -0
- package/dist/testing/headless-block-list.svelte.js +22 -0
- package/dist/testing/inline-conformance.d.ts +15 -22
- package/dist/testing/inline-conformance.js +131 -148
- package/dist/testing/kind-conformance.d.ts +19 -24
- package/dist/testing/kind-conformance.js +204 -117
- package/dist/testing/kit-reading.d.ts +7 -0
- package/dist/testing/kit-reading.js +16 -0
- package/dist/testing/mount-dom-stubs.d.ts +4 -5
- package/dist/testing/mount-dom-stubs.js +8 -5
- package/dist/testing/parse-convergence.d.ts +10 -10
- package/dist/testing/parse-convergence.js +14 -49
- package/dist/testing.d.ts +13 -9
- package/dist/testing.js +28 -38
- package/dist/tree-operations/blockquote.d.ts +8 -14
- package/dist/tree-operations/blockquote.js +25 -45
- package/dist/tree-operations/chain-rebuild.d.ts +34 -25
- package/dist/tree-operations/chain-rebuild.js +115 -52
- package/dist/tree-operations/children.d.ts +5 -9
- package/dist/tree-operations/children.js +7 -11
- package/dist/tree-operations/cleanup.d.ts +6 -7
- package/dist/tree-operations/cleanup.js +14 -11
- package/dist/tree-operations/clone.js +5 -4
- package/dist/tree-operations/container-lift.d.ts +10 -5
- package/dist/tree-operations/container-lift.js +20 -14
- package/dist/tree-operations/container-offsets.d.ts +22 -0
- package/dist/tree-operations/container-offsets.js +89 -0
- package/dist/tree-operations/content-write.d.ts +52 -29
- package/dist/tree-operations/content-write.js +155 -110
- package/dist/tree-operations/index.d.ts +4 -4
- package/dist/tree-operations/index.js +4 -4
- package/dist/tree-operations/keep-one-block.d.ts +10 -0
- package/dist/tree-operations/keep-one-block.js +19 -0
- package/dist/tree-operations/leaf-range.d.ts +33 -0
- package/dist/tree-operations/leaf-range.js +67 -0
- package/dist/tree-operations/list/empty-check.d.ts +2 -3
- package/dist/tree-operations/list/empty-check.js +4 -4
- package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
- package/dist/tree-operations/list/exit-replacement.js +4 -9
- package/dist/tree-operations/list/item-partition.d.ts +2 -2
- package/dist/tree-operations/list/item-partition.js +2 -2
- package/dist/tree-operations/list/list-builders.d.ts +18 -16
- package/dist/tree-operations/list/list-builders.js +59 -30
- package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
- package/dist/tree-operations/list/ordered-markers.js +7 -16
- package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
- package/dist/tree-operations/list/reconcile-task.js +80 -23
- package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
- package/dist/tree-operations/list/sublist-separator.js +20 -27
- package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
- package/dist/tree-operations/list/task-paragraph.js +54 -0
- package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
- package/dist/tree-operations/list/unwrap-merge.js +44 -79
- package/dist/tree-operations/node-ops.d.ts +30 -52
- package/dist/tree-operations/node-ops.js +152 -218
- package/dist/tree-operations/node-primitives.d.ts +44 -31
- package/dist/tree-operations/node-primitives.js +84 -60
- package/dist/tree-operations/open-tail.d.ts +25 -0
- package/dist/tree-operations/open-tail.js +100 -0
- package/dist/tree-operations/parse-block.d.ts +15 -2
- package/dist/tree-operations/parse-block.js +19 -4
- package/dist/tree-operations/paste/apply.d.ts +7 -8
- package/dist/tree-operations/paste/apply.js +33 -63
- package/dist/tree-operations/paste/body-write.d.ts +8 -6
- package/dist/tree-operations/paste/body-write.js +13 -14
- package/dist/tree-operations/paste/container-match.d.ts +7 -10
- package/dist/tree-operations/paste/container-match.js +76 -58
- package/dist/tree-operations/paste/container-paste.d.ts +3 -3
- package/dist/tree-operations/paste/container-paste.js +3 -3
- package/dist/tree-operations/paste/dispatch.d.ts +26 -29
- package/dist/tree-operations/paste/dispatch.js +68 -53
- package/dist/tree-operations/paste/focus-target.d.ts +11 -14
- package/dist/tree-operations/paste/focus-target.js +13 -18
- package/dist/tree-operations/paste/hooks.d.ts +7 -12
- package/dist/tree-operations/paste/hooks.js +49 -46
- package/dist/tree-operations/paste/line-ending.d.ts +11 -0
- package/dist/tree-operations/paste/line-ending.js +32 -0
- package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
- package/dist/tree-operations/paste/list-absorb.js +17 -19
- package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
- package/dist/tree-operations/paste/list-break-out.js +24 -32
- package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
- package/dist/tree-operations/paste/parent-scope.js +9 -16
- package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
- package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
- package/dist/tree-operations/paste/paste-replacement.js +73 -42
- package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
- package/dist/tree-operations/paste/paste-transforms.js +18 -27
- package/dist/tree-operations/paste/replacement-parse.d.ts +19 -0
- package/dist/tree-operations/paste/replacement-parse.js +24 -0
- package/dist/tree-operations/paste/strategy.d.ts +1 -1
- package/dist/tree-operations/paste/strategy.js +1 -1
- package/dist/tree-operations/paste/table-slice.js +15 -10
- package/dist/tree-operations/paste-surfaces.d.ts +18 -29
- package/dist/tree-operations/paste-surfaces.js +14 -10
- package/dist/tree-operations/path-mutate.d.ts +7 -8
- package/dist/tree-operations/path-mutate.js +4 -4
- package/dist/tree-operations/reorder-unit.d.ts +4 -5
- package/dist/tree-operations/reorder-unit.js +5 -6
- package/dist/tree-operations/reorder.d.ts +7 -9
- package/dist/tree-operations/reorder.js +39 -40
- package/dist/tree-operations/settle.d.ts +42 -53
- package/dist/tree-operations/settle.js +241 -162
- package/dist/tree-operations/sharing.d.ts +5 -5
- package/dist/tree-operations/splice-many.d.ts +5 -5
- package/dist/tree-operations/splice-many.js +5 -5
- package/dist/tree-operations/stored-as.d.ts +13 -0
- package/dist/tree-operations/stored-as.js +48 -0
- package/dist/tree-operations/structural-change.d.ts +11 -15
- package/dist/tree-operations/structural-change.js +10 -14
- package/dist/tree-operations/structural-suffix.d.ts +22 -0
- package/dist/tree-operations/structural-suffix.js +61 -0
- package/dist/tree-operations/sub-table-copy.d.ts +7 -0
- package/dist/tree-operations/sub-table-copy.js +40 -36
- package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
- package/dist/tree-operations/table-grid-clipboard.js +11 -36
- package/dist/tree-operations/table-mutations.d.ts +7 -3
- package/dist/tree-operations/table-mutations.js +45 -9
- package/dist/tree-operations/unshare.d.ts +11 -15
- package/dist/tree-operations/unshare.js +15 -17
- package/dist/undo/manager.js +1 -1
- package/dist/undo/types.d.ts +2 -2
- package/docs/guide/consumer-guide.md +329 -205
- package/docs/guide/directives.md +7 -7
- package/docs/guide/plugin-api.md +267 -183
- package/docs/guide/plugin-guide.md +341 -235
- package/docs/guide/plugin-testing.md +96 -82
- package/package.json +17 -21
- package/dist/ambient/ambient-cursor.d.ts +0 -41
- package/dist/ambient/ambient-cursor.js +0 -120
- package/dist/components/blocks/code/code-paste.d.ts +0 -24
- package/dist/components/blocks/code/code-paste.js +0 -21
- package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
- package/dist/components/blocks/table/cell-clipboard.js +0 -67
- package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
- package/dist/components/blocks/text/hidden-suffix.js +0 -15
- package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
- package/dist/components/image/image-source-bytes.d.ts +0 -15
- package/dist/components/image/image-source-bytes.js +0 -80
- package/dist/cursor/content-offsets.d.ts +0 -29
- package/dist/cursor/content-offsets.js +0 -151
- package/dist/cursor/reveal-anchor.d.ts +0 -30
- package/dist/cursor/reveal-anchor.js +0 -31
- package/dist/invariants/split-landing.d.ts +0 -8
- package/dist/invariants/split-landing.js +0 -15
- package/dist/selection/double-click-trim.d.ts +0 -17
- package/dist/selection/double-click-trim.js +0 -57
- package/dist/tree-operations/list/terminator.d.ts +0 -17
- package/dist/tree-operations/list/terminator.js +0 -60
- package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -29
- package/dist/tree-operations/paste/replace-block-at-parent.js +0 -75
|
@@ -1,24 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Whether a range is one the author could place at all is decided where the source and the
|
|
8
|
-
* document it read are provably the same version (`decoration-state.svelte.ts`); a range
|
|
9
|
-
* this pass cannot honour is one the document has since outgrown, so it drops silently.
|
|
2
|
+
* Decoration widgets placed in the text flow: a zero-width `widget`, and a `replace` covering
|
|
3
|
+
* real bytes. Each renders as an inline widget the caret cannot enter whose `data-source-*` span
|
|
4
|
+
* equals the bytes it stands for, so the offset walk reads the block back byte-exact. A range
|
|
5
|
+
* this pass cannot place drops silently; `decoration-state.svelte.ts` warns about it.
|
|
10
6
|
*/
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { asRawOffset, toDomTextOffset, toRawOffset } from '../cursor/coordinate-spaces';
|
|
14
|
-
import { createRangeAtDomTextOffsets, rawTextOfNode, widgetSpanContainingOffset } from '../cursor/widget-offset';
|
|
7
|
+
import { isDevChecks } from '../env';
|
|
8
|
+
import { rawOfWalkOffset, rawRangeToDomRange, rawTextOfNode, walkOffsetOfRaw, widgetSpanContainingOffset } from '../cursor/widget-offset';
|
|
15
9
|
import { devWarn } from '../dev-warn';
|
|
16
|
-
/** Mutates `root
|
|
17
|
-
* mounted
|
|
10
|
+
/** Mutates `root`, the freshly built inline fragment. Returns one destroy function per
|
|
11
|
+
* mounted widget; the caller runs them on the next rebuild. */
|
|
18
12
|
export function applyIslandDecorations(root, raw, islands, opts) {
|
|
19
13
|
if (islands.length === 0)
|
|
20
14
|
return [];
|
|
21
|
-
const ambientLength = opts.ambientLength ?? 0;
|
|
22
15
|
const contentLength = opts.contentLength;
|
|
23
16
|
const destroys = [];
|
|
24
17
|
for (const { dec } of orderForApplication(islands)) {
|
|
@@ -31,8 +24,7 @@ export function applyIslandDecorations(root, raw, islands, opts) {
|
|
|
31
24
|
function applyWidget(dec) {
|
|
32
25
|
if (dec.offset < 0 || dec.offset > contentLength)
|
|
33
26
|
return;
|
|
34
|
-
const
|
|
35
|
-
const range = createRangeAtDomTextOffsets(root, walkOffset, walkOffset);
|
|
27
|
+
const range = rawRangeToDomRange(root, dec.offset, dec.offset);
|
|
36
28
|
if (!range) {
|
|
37
29
|
opts.onSkipped?.(dec, 'no DOM position at offset');
|
|
38
30
|
return;
|
|
@@ -45,37 +37,34 @@ export function applyIslandDecorations(root, raw, islands, opts) {
|
|
|
45
37
|
destroys.push(mounted.destroy);
|
|
46
38
|
const island = buildIsland(dec.offset, dec.offset);
|
|
47
39
|
island.appendChild(mounted.el);
|
|
48
|
-
|
|
40
|
+
range.insertNode(island);
|
|
49
41
|
}
|
|
50
42
|
function applyReplace(dec) {
|
|
51
43
|
if (dec.start < 0 || dec.end > contentLength || dec.start >= dec.end)
|
|
52
44
|
return;
|
|
53
|
-
// A boundary strictly inside
|
|
54
|
-
//
|
|
45
|
+
// A boundary strictly inside a widget snaps outward to cover the whole element, so the
|
|
46
|
+
// span still equals the bytes it displaces.
|
|
55
47
|
let start = dec.start;
|
|
56
48
|
let end = dec.end;
|
|
57
|
-
const startSpan = widgetSpanContainingOffset(root,
|
|
49
|
+
const startSpan = widgetSpanContainingOffset(root, walkOffsetOfRaw(root, start));
|
|
58
50
|
if (startSpan)
|
|
59
|
-
start =
|
|
60
|
-
const endSpan = widgetSpanContainingOffset(root,
|
|
51
|
+
start = rawOfWalkOffset(root, startSpan.start);
|
|
52
|
+
const endSpan = widgetSpanContainingOffset(root, walkOffsetOfRaw(root, end));
|
|
61
53
|
if (endSpan)
|
|
62
|
-
end =
|
|
54
|
+
end = rawOfWalkOffset(root, endSpan.end);
|
|
63
55
|
if (startSpan || endSpan) {
|
|
64
56
|
devWarn('decorations', `replace boundary inside an atomic widget; snapped ${dec.start}..${dec.end} outward to ${start}..${end}`);
|
|
65
57
|
}
|
|
66
|
-
const range =
|
|
58
|
+
const range = rawRangeToDomRange(root, start, end);
|
|
67
59
|
if (!range) {
|
|
68
60
|
opts.onSkipped?.(dec, 'no DOM range for span');
|
|
69
61
|
return;
|
|
70
62
|
}
|
|
71
|
-
const ambient = ambientSpanOf(root);
|
|
72
|
-
if (ambient && ambient.contains(range.startContainer))
|
|
73
|
-
range.setStartAfter(ambient);
|
|
74
63
|
const extracted = range.extractContents();
|
|
75
|
-
if (
|
|
64
|
+
if (isDevChecks()) {
|
|
76
65
|
const displaced = rawTextOfNode(extracted, raw);
|
|
77
66
|
if (displaced !== raw.slice(start, end)) {
|
|
78
|
-
devWarn('decorations', 'replace
|
|
67
|
+
devWarn('decorations', 'replace decoration span disagrees with the displaced DOM bytes', {
|
|
79
68
|
span: [start, end],
|
|
80
69
|
displaced
|
|
81
70
|
});
|
|
@@ -93,20 +82,9 @@ export function applyIslandDecorations(root, raw, islands, opts) {
|
|
|
93
82
|
}
|
|
94
83
|
range.insertNode(island);
|
|
95
84
|
}
|
|
96
|
-
// The walk resolves a position at the ambient boundary to the END of the span's text,
|
|
97
|
-
// but an island must land after the span, never inside the read-only marker.
|
|
98
|
-
function insertHoistedOutOfAmbient(range, island) {
|
|
99
|
-
const ambient = ambientSpanOf(root);
|
|
100
|
-
if (ambient && ambient.contains(range.startContainer)) {
|
|
101
|
-
ambient.after(island);
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
range.insertNode(island);
|
|
105
|
-
}
|
|
106
85
|
}
|
|
107
|
-
/**
|
|
108
|
-
*
|
|
109
|
-
* untracked: same position + class ⇒ equal signature (see DecorationWidgetSpec). */
|
|
86
|
+
/** What these widgets add to a render key: `''` for none, so an undecorated block's key is
|
|
87
|
+
* unchanged. Widget identity is ignored (see `DecorationWidgetSpec`). */
|
|
110
88
|
export function islandRenderKeyPart(islands) {
|
|
111
89
|
if (islands.length === 0)
|
|
112
90
|
return '';
|
|
@@ -115,17 +93,14 @@ export function islandRenderKeyPart(islands) {
|
|
|
115
93
|
const islandSig = (d) => d.type === 'widget'
|
|
116
94
|
? `w:${d.offset}:${d.side ?? 'after'}`
|
|
117
95
|
: `r:${d.start}-${d.end}:${d.class ?? ''}:${d.widget ? 1 : 0}`;
|
|
118
|
-
/**
|
|
96
|
+
/** A decoration's position for ordering, shared by the pass that applies them and the
|
|
97
|
+
* render order. */
|
|
119
98
|
export function islandPosition(dec) {
|
|
120
99
|
return dec.type === 'widget' ? dec.offset : dec.start;
|
|
121
100
|
}
|
|
122
101
|
// ── Internal ────────────────────────────────────────────────────────────────
|
|
123
|
-
/**
|
|
124
|
-
*
|
|
125
|
-
* earlier in the pass. Ties put replaces first, since a same-start widget island would be
|
|
126
|
-
* swallowed by the extraction; `side: 'after'` widgets follow, leaving the final DOM order
|
|
127
|
-
* at one offset as [before, after].
|
|
128
|
-
*/
|
|
102
|
+
/** Descending position order, so a `replace` extraction never spans a widget inserted earlier.
|
|
103
|
+
* On a tie `replace` goes first, since a widget at the same start would be swallowed by it. */
|
|
129
104
|
function orderForApplication(islands) {
|
|
130
105
|
return [...islands].sort((a, b) => islandPosition(b.dec) - islandPosition(a.dec) ||
|
|
131
106
|
tieRank(a.dec) - tieRank(b.dec) ||
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The `data-` names a block decoration may not
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* combinator; a name read only on the element that writes it is not in scope.
|
|
2
|
+
* The `data-` names a block decoration may not set: the ones the editor sets on a decorated element
|
|
3
|
+
* (a block host, a list item's box, a table row or cell) or reads there through a lookup or a
|
|
4
|
+
* stylesheet rule. A decoration taking one would answer that lookup or paint a state the editor
|
|
5
|
+
* never set. `reserved-block-attrs.test.ts` derives this list from the source and holds it to it.
|
|
7
6
|
*/
|
|
8
7
|
export declare const RESERVED_BLOCK_ATTRS: ReadonlySet<string>;
|
|
9
|
-
/**
|
|
10
|
-
*
|
|
11
|
-
* different name, only a different spelling of the same one. */
|
|
8
|
+
/** Drops the names a block decoration may not use, with a dev warning. Compared lowercase,
|
|
9
|
+
* since `setAttribute` lowercases and a capital is only another spelling. */
|
|
12
10
|
export declare function acceptedBlockAttrs(attrs: Record<string, string> | undefined, path: number[]): Array<[string, string]>;
|
|
@@ -1,40 +1,54 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The `data-` names a block decoration may not
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* combinator; a name read only on the element that writes it is not in scope.
|
|
2
|
+
* The `data-` names a block decoration may not set: the ones the editor sets on a decorated element
|
|
3
|
+
* (a block host, a list item's box, a table row or cell) or reads there through a lookup or a
|
|
4
|
+
* stylesheet rule. A decoration taking one would answer that lookup or paint a state the editor
|
|
5
|
+
* never set. `reserved-block-attrs.test.ts` derives this list from the source and holds it to it.
|
|
7
6
|
*/
|
|
8
7
|
import { devWarn } from '../dev-warn';
|
|
9
8
|
export const RESERVED_BLOCK_ATTRS = new Set([
|
|
10
|
-
'data-block-path',
|
|
11
9
|
'data-block-kind',
|
|
10
|
+
'data-block-path',
|
|
12
11
|
'data-content-empty',
|
|
13
|
-
'data-cross-block',
|
|
14
12
|
'data-decoration-island',
|
|
15
13
|
'data-focused',
|
|
16
|
-
'data-gap-caret',
|
|
17
14
|
'data-image-overlay',
|
|
18
15
|
'data-image-widget',
|
|
19
16
|
'data-inline-widget',
|
|
17
|
+
'data-kind-cue',
|
|
20
18
|
'data-link-card',
|
|
19
|
+
'data-list-marker',
|
|
20
|
+
'data-pointer-gesture',
|
|
21
21
|
'data-presentation',
|
|
22
|
-
'data-
|
|
22
|
+
'data-source-start',
|
|
23
|
+
'data-table-row-idx',
|
|
24
|
+
'data-task-checked',
|
|
25
|
+
'data-whole-block-input'
|
|
26
|
+
]);
|
|
27
|
+
/** The attributes every decorated element renders itself. A decoration's cleanup removes what
|
|
28
|
+
* it set, so an overwrite would outlive the source: a row without `table-row`, a cell uneditable. */
|
|
29
|
+
const ELEMENT_OWNED_ATTRS = new Set([
|
|
30
|
+
'class',
|
|
31
|
+
'contenteditable',
|
|
32
|
+
'role',
|
|
33
|
+
'style',
|
|
34
|
+
'tabindex'
|
|
23
35
|
]);
|
|
24
|
-
/** The name
|
|
25
|
-
* effect, taking the whole mount rather than one attribute. */
|
|
36
|
+
/** The name grammar `setAttribute` enforces: a name it refuses throws inside the decoration
|
|
37
|
+
* effect, taking down the whole mount rather than one attribute. */
|
|
26
38
|
const ATTR_NAME = /^[A-Za-z_:][A-Za-z0-9_.:-]*$/;
|
|
27
|
-
/**
|
|
28
|
-
*
|
|
29
|
-
* different name, only a different spelling of the same one. */
|
|
39
|
+
/** Drops the names a block decoration may not use, with a dev warning. Compared lowercase,
|
|
40
|
+
* since `setAttribute` lowercases and a capital is only another spelling. */
|
|
30
41
|
export function acceptedBlockAttrs(attrs, path) {
|
|
31
42
|
const accepted = [];
|
|
32
43
|
for (const [name, value] of Object.entries(attrs ?? {})) {
|
|
44
|
+
const lowered = name.toLowerCase();
|
|
33
45
|
const refusal = !ATTR_NAME.test(name)
|
|
34
46
|
? 'is not a valid attribute name'
|
|
35
|
-
:
|
|
36
|
-
?
|
|
37
|
-
:
|
|
47
|
+
: lowered === 'class'
|
|
48
|
+
? "is reserved by the editor (use the decoration's class field)"
|
|
49
|
+
: RESERVED_BLOCK_ATTRS.has(lowered) || ELEMENT_OWNED_ATTRS.has(lowered)
|
|
50
|
+
? 'is reserved by the editor'
|
|
51
|
+
: null;
|
|
38
52
|
if (refusal !== null) {
|
|
39
53
|
devWarn('decorations', `block decoration attribute '${name}' ${refusal} and was dropped`, {
|
|
40
54
|
path
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* View-only annotations layered over the rendered document. Decorations never enter the
|
|
3
|
-
* CST: pure sources produce them per
|
|
3
|
+
* CST: pure sources produce them per editor instance, and the overlays and inline widgets
|
|
4
|
+
* consume them.
|
|
4
5
|
*/
|
|
5
6
|
import type { DocumentView } from '../core/node-views';
|
|
6
7
|
export interface MarkDecoration {
|
|
@@ -47,8 +48,8 @@ export type DecorationWidgetSpec = {
|
|
|
47
48
|
buildDom: (dec: Decoration) => HTMLElement;
|
|
48
49
|
};
|
|
49
50
|
export interface ProvideContext {
|
|
50
|
-
/** Bumped once per document change, never by invalidate()
|
|
51
|
-
*
|
|
51
|
+
/** Bumped once per document change, never by `invalidate()`. The memo key for a source that
|
|
52
|
+
* caches its scan; `doc.children` identity is not one, since typing mutates in place. */
|
|
52
53
|
editEpoch: number;
|
|
53
54
|
}
|
|
54
55
|
export interface DecorationSource {
|
|
@@ -56,10 +57,8 @@ export interface DecorationSource {
|
|
|
56
57
|
provide: (doc: DocumentView, ctx: ProvideContext) => Decoration[];
|
|
57
58
|
}
|
|
58
59
|
export interface DecorationSourceHandle {
|
|
59
|
-
/** Synchronous
|
|
60
|
-
*
|
|
61
|
-
* from inside a commit (an `edit` handler): those coalesce to one run once it publishes,
|
|
62
|
-
* since a source must never read a half-applied tree. */
|
|
60
|
+
/** Synchronous: the decorations show the new result before it returns, which search's
|
|
61
|
+
* `setQuery` relies on. A call from inside a commit runs once after the commit instead. */
|
|
63
62
|
invalidate(): void;
|
|
64
63
|
dispose(): void;
|
|
65
64
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* View-only annotations layered over the rendered document. Decorations never enter the
|
|
3
|
-
* CST: pure sources produce them per
|
|
3
|
+
* CST: pure sources produce them per editor instance, and the overlays and inline widgets
|
|
4
|
+
* consume them.
|
|
4
5
|
*/
|
|
5
6
|
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Applies the block decorations addressed to one path onto the element that renders that block:
|
|
3
|
+
* attributes and badges from effects, classes through the returned getter, which the caller
|
|
4
|
+
* spreads into its own `class` so Svelte keeps owning that attribute.
|
|
5
|
+
*/
|
|
6
|
+
import type { EditorError } from '../editor-events';
|
|
7
|
+
import type { DecorationEngine } from './decoration-state.svelte';
|
|
8
|
+
export interface BlockDecorationDeps {
|
|
9
|
+
getPath: () => number[];
|
|
10
|
+
getEl: () => HTMLElement | null;
|
|
11
|
+
/** Absent when a block mounts without the editor shell, as unit tests do. */
|
|
12
|
+
engine: DecorationEngine | undefined;
|
|
13
|
+
onRenderError: (error: EditorError) => void;
|
|
14
|
+
/** Why this element cannot hold a badge; when set, every badge is dropped with a dev warning. */
|
|
15
|
+
badgeRefusal?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function useBlockDecorations(deps: BlockDecorationDeps): {
|
|
18
|
+
readonly classes: string[];
|
|
19
|
+
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { devWarn } from '../dev-warn';
|
|
2
|
+
import { acceptedBlockAttrs } from './reserved-attrs';
|
|
3
|
+
import { mountDecorationWidget } from './widget-dom';
|
|
4
|
+
const NO_BLOCK_DECORATIONS = [];
|
|
5
|
+
export function useBlockDecorations(deps) {
|
|
6
|
+
const decorations = $derived(deps.engine ? deps.engine.blockDecorationsForPath(deps.getPath()) : NO_BLOCK_DECORATIONS);
|
|
7
|
+
const classes = $derived(decorations.flatMap((d) => d.class ?? []));
|
|
8
|
+
// Set imperatively, not spread, so a source change or dispose removes exactly the
|
|
9
|
+
// keys it applied and leaves the element's own attributes alone.
|
|
10
|
+
$effect(() => {
|
|
11
|
+
const decs = decorations;
|
|
12
|
+
const el = deps.getEl();
|
|
13
|
+
if (!el || decs.length === 0)
|
|
14
|
+
return;
|
|
15
|
+
const appliedKeys = [];
|
|
16
|
+
for (const dec of decs) {
|
|
17
|
+
for (const [key, value] of acceptedBlockAttrs(dec.attrs, deps.getPath())) {
|
|
18
|
+
el.setAttribute(key, value);
|
|
19
|
+
appliedKeys.push(key);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return () => {
|
|
23
|
+
for (const key of appliedKeys)
|
|
24
|
+
el.removeAttribute(key);
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
// Badges go in ahead of the block's content, so BLOCK_CONTENT_SELECTOR
|
|
28
|
+
// (block-content-selector.ts) excludes `.decoration-badge`; keep the two in step.
|
|
29
|
+
$effect(() => {
|
|
30
|
+
const decs = decorations;
|
|
31
|
+
const el = deps.getEl();
|
|
32
|
+
if (!el || decs.length === 0)
|
|
33
|
+
return;
|
|
34
|
+
const destroys = [];
|
|
35
|
+
const badges = document.createDocumentFragment();
|
|
36
|
+
for (const dec of decs) {
|
|
37
|
+
if (!dec.badge)
|
|
38
|
+
continue;
|
|
39
|
+
if (deps.badgeRefusal !== undefined) {
|
|
40
|
+
devWarn('decorations', `block decoration badge dropped: ${deps.badgeRefusal}`, {
|
|
41
|
+
path: deps.getPath()
|
|
42
|
+
});
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
const handle = mountDecorationWidget(dec.badge, dec, (error) => deps.onRenderError({ origin: 'render', error, context: { path: deps.getPath() } }));
|
|
46
|
+
if (!handle)
|
|
47
|
+
continue;
|
|
48
|
+
const wrapper = document.createElement('div');
|
|
49
|
+
wrapper.className = 'decoration-badge';
|
|
50
|
+
wrapper.setAttribute('contenteditable', 'false');
|
|
51
|
+
wrapper.appendChild(handle.el);
|
|
52
|
+
badges.appendChild(wrapper);
|
|
53
|
+
destroys.push(() => {
|
|
54
|
+
handle.destroy();
|
|
55
|
+
wrapper.remove();
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
if (destroys.length === 0)
|
|
59
|
+
return;
|
|
60
|
+
el.insertBefore(badges, el.firstChild);
|
|
61
|
+
return () => {
|
|
62
|
+
for (const destroy of destroys)
|
|
63
|
+
destroy();
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
return {
|
|
67
|
+
get classes() {
|
|
68
|
+
return classes;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The one
|
|
3
|
-
*
|
|
2
|
+
* The one place a decoration widget is mounted, so error handling and teardown cannot drift
|
|
3
|
+
* between block badges and inline widgets.
|
|
4
4
|
*/
|
|
5
5
|
import type { Decoration, DecorationWidgetSpec } from './types';
|
|
6
6
|
export interface DecorationWidgetHandle {
|
|
@@ -9,7 +9,7 @@ export interface DecorationWidgetHandle {
|
|
|
9
9
|
destroy(): void;
|
|
10
10
|
}
|
|
11
11
|
/**
|
|
12
|
-
* Build a widget spec's DOM. A synchronous throw is
|
|
12
|
+
* Build a widget spec's DOM. A synchronous throw is caught and reported as null, so the
|
|
13
13
|
* caller renders without the widget instead of tearing down the block.
|
|
14
14
|
*/
|
|
15
15
|
export declare function mountDecorationWidget(spec: DecorationWidgetSpec, dec: Decoration, reportError?: (error: unknown) => void): DecorationWidgetHandle | null;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The one
|
|
3
|
-
*
|
|
2
|
+
* The one place a decoration widget is mounted, so error handling and teardown cannot drift
|
|
3
|
+
* between block badges and inline widgets.
|
|
4
4
|
*/
|
|
5
5
|
import { mount, unmount } from 'svelte';
|
|
6
6
|
/**
|
|
7
|
-
* Build a widget spec's DOM. A synchronous throw is
|
|
7
|
+
* Build a widget spec's DOM. A synchronous throw is caught and reported as null, so the
|
|
8
8
|
* caller renders without the widget instead of tearing down the block.
|
|
9
9
|
*/
|
|
10
10
|
export function mountDecorationWidget(spec, dec, reportError) {
|
|
@@ -12,8 +12,8 @@ export function mountDecorationWidget(spec, dec, reportError) {
|
|
|
12
12
|
if ('component' in spec) {
|
|
13
13
|
const el = document.createElement('span');
|
|
14
14
|
const instance = mount(spec.component, { target: el, props: { decoration: dec } });
|
|
15
|
-
// The flag is what makes
|
|
16
|
-
// instance is not
|
|
15
|
+
// The flag is what makes `destroy` safe to call twice: a second `unmount` of the same
|
|
16
|
+
// instance is not harmless the way a second `remove()` is.
|
|
17
17
|
let unmounted = false;
|
|
18
18
|
return {
|
|
19
19
|
el,
|
package/dist/dev-warn.d.ts
CHANGED
|
@@ -5,9 +5,12 @@ export interface DevWarnEntry {
|
|
|
5
5
|
}
|
|
6
6
|
export type DevWarnSink = (entry: DevWarnEntry) => void;
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
9
|
-
* harness that
|
|
8
|
+
* Send warnings to `next` instead of the console, and return the callback it replaced. For
|
|
9
|
+
* a harness that needs to read them as data; it must work with any runner, so nothing here
|
|
10
10
|
* may know about a test runner. Nothing registers one in production or on a dev server.
|
|
11
11
|
*/
|
|
12
12
|
export declare function setDevWarnSink(next: DevWarnSink | null): DevWarnSink | null;
|
|
13
13
|
export declare function devWarn(tag: string, message: string, details?: unknown): void;
|
|
14
|
+
/** The tag a console line carries: the editor's own, or `svelte:<code>` for a Svelte runtime
|
|
15
|
+
* warning, so one waiver list covers both; null for any other line. */
|
|
16
|
+
export declare function warnTagOfLine(text: string): string | null;
|
package/dist/dev-warn.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { editorEnv } from './env';
|
|
2
2
|
let sink = null;
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
* harness that
|
|
4
|
+
* Send warnings to `next` instead of the console, and return the callback it replaced. For
|
|
5
|
+
* a harness that needs to read them as data; it must work with any runner, so nothing here
|
|
6
6
|
* may know about a test runner. Nothing registers one in production or on a dev server.
|
|
7
7
|
*/
|
|
8
8
|
export function setDevWarnSink(next) {
|
|
@@ -17,8 +17,8 @@ export function devWarn(tag, message, details) {
|
|
|
17
17
|
sink({ tag, message, details });
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
|
-
// The `aragonite:`
|
|
21
|
-
// script or dependency shares, so a browser-side
|
|
20
|
+
// The `aragonite:` prefix is what the e2e watchers key on: a console prefix no page
|
|
21
|
+
// script or dependency shares, so a browser-side check can fail on ours alone.
|
|
22
22
|
if (details !== undefined) {
|
|
23
23
|
console.warn(`[aragonite:${tag}] ${message}`, details);
|
|
24
24
|
}
|
|
@@ -26,3 +26,15 @@ export function devWarn(tag, message, details) {
|
|
|
26
26
|
console.warn(`[aragonite:${tag}] ${message}`);
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
+
const EDITOR_TAG = /\[aragonite:([^\]]+)\]/;
|
|
30
|
+
/** Svelte's runtime warnings lead with their code, after any `%c` styling. */
|
|
31
|
+
const SVELTE_CODE = /\[svelte\]\s+([a-z0-9_]+)/;
|
|
32
|
+
/** The tag a console line carries: the editor's own, or `svelte:<code>` for a Svelte runtime
|
|
33
|
+
* warning, so one waiver list covers both; null for any other line. */
|
|
34
|
+
export function warnTagOfLine(text) {
|
|
35
|
+
const tag = EDITOR_TAG.exec(text)?.[1];
|
|
36
|
+
if (tag)
|
|
37
|
+
return tag;
|
|
38
|
+
const code = SVELTE_CODE.exec(text)?.[1];
|
|
39
|
+
return code ? `svelte:${code}` : null;
|
|
40
|
+
}
|
|
@@ -1,32 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* covers, so that
|
|
2
|
+
* Writes the ancestor fix-up's results to state (`tree-operations/chain-rebuild.ts`): a
|
|
3
|
+
* container that collapsed after an edit (an `AncestrySeamFold`) splices its parent's children,
|
|
4
|
+
* a list the commit's own change never covers, so that list's ids and refs are resynced here.
|
|
5
5
|
*/
|
|
6
6
|
import type { CstNode } from '../core/nodes';
|
|
7
7
|
import type { AncestrySeamFold } from '../tree-operations/chain-rebuild';
|
|
8
8
|
import { type StructuralChange } from '../tree-operations/structural-change';
|
|
9
9
|
import type { EditorActionsDeps } from './deps';
|
|
10
|
-
/** Where the
|
|
10
|
+
/** Where the collapsed container's first byte ended up, as a document path. */
|
|
11
11
|
export interface FoldLanding {
|
|
12
12
|
path: number[];
|
|
13
13
|
offset: number;
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
|
-
* Resync
|
|
17
|
-
* back runs beside its own
|
|
16
|
+
* Resync ids and refs for every collapse and return the function that undoes them, which a
|
|
17
|
+
* commit rolling back runs beside its own restores.
|
|
18
18
|
*/
|
|
19
19
|
export declare function publishAncestryFolds(deps: EditorActionsDeps, folds: readonly AncestrySeamFold[]): () => void;
|
|
20
|
-
/**
|
|
21
|
-
*
|
|
22
|
-
* every block in the folded window), so a door whose focus addressed it has nothing to land on.
|
|
23
|
-
* `scopePath` is the committing scope's own path, from which the fold's depth names the parent.
|
|
24
|
-
* The chain rebuilds innermost-first, so the LAST fold is the outermost one — the one whose slot
|
|
25
|
-
* swallowed the others, and the only landing still addressable after them all.
|
|
26
|
-
*/
|
|
20
|
+
/** Where the caret goes after a collapse recreated the blocks in its range. The last collapse is
|
|
21
|
+
* the outermost (innermost rebuilds first), so its index is the only one still addressable. */
|
|
27
22
|
export declare function foldLandingFor(folds: readonly AncestrySeamFold[], scopePath: readonly number[]): FoldLanding | null;
|
|
28
23
|
/**
|
|
29
|
-
* A splice made outside
|
|
24
|
+
* A splice made outside a commit, written to state the way a commit writes the change its
|
|
30
25
|
* mutate returns. `owner` is the container whose children moved, or undefined for the document.
|
|
31
26
|
*/
|
|
32
27
|
export declare function publishScopeFold(deps: EditorActionsDeps, owner: CstNode | undefined, change: StructuralChange): void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* covers, so that
|
|
2
|
+
* Writes the ancestor fix-up's results to state (`tree-operations/chain-rebuild.ts`): a
|
|
3
|
+
* container that collapsed after an edit (an `AncestrySeamFold`) splices its parent's children,
|
|
4
|
+
* a list the commit's own change never covers, so that list's ids and refs are resynced here.
|
|
5
5
|
*/
|
|
6
6
|
import { applyStructuralChangeToIdsRefs } from '../tree-operations/structural-change';
|
|
7
7
|
import { spliceMany } from '../tree-operations/splice-many';
|
|
@@ -9,8 +9,8 @@ import { assignIds } from '../block-id';
|
|
|
9
9
|
import { getStateForNode } from '../reactivity/state-registry';
|
|
10
10
|
import { replaceRefs } from '../reactivity/publish-ref.svelte';
|
|
11
11
|
/**
|
|
12
|
-
* Resync
|
|
13
|
-
* back runs beside its own
|
|
12
|
+
* Resync ids and refs for every collapse and return the function that undoes them, which a
|
|
13
|
+
* commit rolling back runs beside its own restores.
|
|
14
14
|
*/
|
|
15
15
|
export function publishAncestryFolds(deps, folds) {
|
|
16
16
|
const restores = [];
|
|
@@ -22,13 +22,8 @@ export function publishAncestryFolds(deps, folds) {
|
|
|
22
22
|
restores[i]();
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
|
-
/**
|
|
26
|
-
*
|
|
27
|
-
* every block in the folded window), so a door whose focus addressed it has nothing to land on.
|
|
28
|
-
* `scopePath` is the committing scope's own path, from which the fold's depth names the parent.
|
|
29
|
-
* The chain rebuilds innermost-first, so the LAST fold is the outermost one — the one whose slot
|
|
30
|
-
* swallowed the others, and the only landing still addressable after them all.
|
|
31
|
-
*/
|
|
25
|
+
/** Where the caret goes after a collapse recreated the blocks in its range. The last collapse is
|
|
26
|
+
* the outermost (innermost rebuilds first), so its index is the only one still addressable. */
|
|
32
27
|
export function foldLandingFor(folds, scopePath) {
|
|
33
28
|
const fold = folds[folds.length - 1];
|
|
34
29
|
if (!fold)
|
|
@@ -39,7 +34,7 @@ export function foldLandingFor(folds, scopePath) {
|
|
|
39
34
|
};
|
|
40
35
|
}
|
|
41
36
|
/**
|
|
42
|
-
* A splice made outside
|
|
37
|
+
* A splice made outside a commit, written to state the way a commit writes the change its
|
|
43
38
|
* mutate returns. `owner` is the container whose children moved, or undefined for the document.
|
|
44
39
|
*/
|
|
45
40
|
export function publishScopeFold(deps, owner, change) {
|
|
@@ -59,13 +54,12 @@ function publishDocScope(deps, change) {
|
|
|
59
54
|
}
|
|
60
55
|
/**
|
|
61
56
|
* Ids live on the owner node, which is what an unmounted container's BlockListState reads back;
|
|
62
|
-
* refs live on the state and only exist while the
|
|
57
|
+
* refs live on the state and only exist while the container is mounted.
|
|
63
58
|
*/
|
|
64
59
|
function publishContainerScope(owner, change) {
|
|
65
60
|
const state = getStateForNode(owner);
|
|
66
|
-
// A
|
|
67
|
-
//
|
|
68
|
-
// the seeded array never held would mis-shape it (G1.36).
|
|
61
|
+
// A never-mounted container has no ids to keep, so fresh ids for the surviving children are
|
|
62
|
+
// the whole answer; the change applied to an array that never held them misshapes it (G1.36).
|
|
69
63
|
if (!owner.childIds) {
|
|
70
64
|
owner.childIds = assignIds(owner.children ?? []);
|
|
71
65
|
return;
|
|
@@ -100,7 +94,8 @@ function publishContainerFold(deps, fold) {
|
|
|
100
94
|
restoreChildren(fold);
|
|
101
95
|
};
|
|
102
96
|
}
|
|
103
|
-
/** The whole pre-splice array: a
|
|
97
|
+
/** The whole pre-splice array: a collapse recreates several nodes, so nothing narrower
|
|
98
|
+
* restores them. */
|
|
104
99
|
function restoreChildren(fold) {
|
|
105
100
|
spliceMany(fold.siblings, 0, fold.siblings.length, fold.before);
|
|
106
101
|
}
|