@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,19 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Viewport point
|
|
3
|
-
*
|
|
4
|
-
* a leading
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* The caret offset in `el` NEAREST a viewport point: the point clamps into `el`'s box first, so a
|
|
8
|
-
* press on chrome above or beside the text still names one. What `caretTargetAtPoint` owes, since
|
|
9
|
-
* a caret-placing gesture must land. Null where the element holds no text position at all.
|
|
2
|
+
* Viewport point to caret offset inside one element. The browser finds the DOM position, and
|
|
3
|
+
* `widget-offset.ts`'s walk does the arithmetic: this module computes no offset of its own, so
|
|
4
|
+
* an atomic widget and a leading marker prefix count here exactly as they do for a live caret read.
|
|
10
5
|
*/
|
|
6
|
+
/** The caret offset in `el` nearest a viewport point, clamped into `el`'s box first so a click on
|
|
7
|
+
* the frame still names one. Null where `el` holds no text. */
|
|
11
8
|
export declare function caretOffsetAtPoint(el: HTMLElement, clientX: number, clientY: number): number | null;
|
|
12
9
|
/**
|
|
13
|
-
* The
|
|
14
|
-
* round into the nearest offset.
|
|
10
|
+
* The exact counterpart: null for a point outside `el`, which a hit test must decline rather
|
|
11
|
+
* than round into the nearest offset. A point inside `el` is first moved level with its lines.
|
|
15
12
|
*/
|
|
16
13
|
export declare function offsetFromViewportPoint(blockEl: HTMLElement, clientX: number, clientY: number): number | null;
|
|
14
|
+
/** The DOM position a press at this point lands on, asked level with `el`'s lines when the point
|
|
15
|
+
* is inside it; the position may lie outside `el`. */
|
|
16
|
+
export declare function caretSeatInElement(el: HTMLElement, clientX: number, clientY: number): {
|
|
17
|
+
node: Node;
|
|
18
|
+
offset: number;
|
|
19
|
+
} | null;
|
|
20
|
+
/** Whether a point inside `el`'s box lies above its first line or below its last, in the padding
|
|
21
|
+
* where Mac and Linux would place a press at that line's start or end. */
|
|
22
|
+
export declare function isInPaddingRow(el: HTMLElement, clientX: number, clientY: number): boolean;
|
|
17
23
|
/** A point one pixel inside `rect`, so the topmost element there is the box's own content. */
|
|
18
24
|
export declare function clampPointIntoBox(rect: DOMRect, x: number, y: number): {
|
|
19
25
|
x: number;
|
|
@@ -1,40 +1,51 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Viewport point
|
|
3
|
-
*
|
|
4
|
-
* a leading
|
|
5
|
-
*/
|
|
6
|
-
import { ambientLengthOf } from '../ambient/ambient-dom';
|
|
7
|
-
import { toClampedRawOffset } from './coordinate-spaces';
|
|
8
|
-
import { domTextOffsetAtNode } from './widget-offset';
|
|
9
|
-
/**
|
|
10
|
-
* The caret offset in `el` NEAREST a viewport point: the point clamps into `el`'s box first, so a
|
|
11
|
-
* press on chrome above or beside the text still names one. What `caretTargetAtPoint` owes, since
|
|
12
|
-
* a caret-placing gesture must land. Null where the element holds no text position at all.
|
|
2
|
+
* Viewport point to caret offset inside one element. The browser finds the DOM position, and
|
|
3
|
+
* `widget-offset.ts`'s walk does the arithmetic: this module computes no offset of its own, so
|
|
4
|
+
* an atomic widget and a leading marker prefix count here exactly as they do for a live caret read.
|
|
13
5
|
*/
|
|
6
|
+
import { rawOffsetAt } from './widget-offset';
|
|
7
|
+
/** The caret offset in `el` nearest a viewport point, clamped into `el`'s box first so a click on
|
|
8
|
+
* the frame still names one. Null where `el` holds no text. */
|
|
14
9
|
export function caretOffsetAtPoint(el, clientX, clientY) {
|
|
15
10
|
const probe = clampPointIntoBox(el.getBoundingClientRect(), clientX, clientY);
|
|
16
11
|
return offsetFromViewportPoint(el, probe.x, probe.y);
|
|
17
12
|
}
|
|
18
13
|
/**
|
|
19
|
-
* The
|
|
20
|
-
* round into the nearest offset.
|
|
14
|
+
* The exact counterpart: null for a point outside `el`, which a hit test must decline rather
|
|
15
|
+
* than round into the nearest offset. A point inside `el` is first moved level with its lines.
|
|
21
16
|
*/
|
|
22
17
|
export function offsetFromViewportPoint(blockEl, clientX, clientY) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const
|
|
18
|
+
// The browser answers a point beside an element with an offset inside it, so ask only inside.
|
|
19
|
+
if (!isInside(blockEl.getBoundingClientRect(), clientX, clientY))
|
|
20
|
+
return null;
|
|
21
|
+
const seat = caretSeatInElement(blockEl, clientX, clientY);
|
|
22
|
+
if (!seat || !blockEl.contains(seat.node))
|
|
23
|
+
return null;
|
|
24
|
+
return rawOffsetAt(blockEl, seat.node, seat.offset);
|
|
25
|
+
}
|
|
26
|
+
/** The DOM position a press at this point lands on, asked level with `el`'s lines when the point
|
|
27
|
+
* is inside it; the position may lie outside `el`. */
|
|
28
|
+
export function caretSeatInElement(el, clientX, clientY) {
|
|
29
|
+
return caretSeatFromPoint(el.ownerDocument, clientX, levelWithLines(el, clientX, clientY));
|
|
30
|
+
}
|
|
31
|
+
/** Whether a point inside `el`'s box lies above its first line or below its last, in the padding
|
|
32
|
+
* where Mac and Linux would place a press at that line's start or end. */
|
|
33
|
+
export function isInPaddingRow(el, clientX, clientY) {
|
|
34
|
+
const box = el.getBoundingClientRect();
|
|
35
|
+
if (!isInside(box, clientX, clientY))
|
|
36
|
+
return false;
|
|
37
|
+
const band = linesBandOf(el, box);
|
|
38
|
+
return band !== null && (clientY < band.top || clientY > band.bottom);
|
|
39
|
+
}
|
|
40
|
+
/** The browser's own hit test: `caretRangeFromPoint` on Chromium and WebKit,
|
|
41
|
+
* `caretPositionFromPoint` as the Firefox fallback. */
|
|
42
|
+
function caretSeatFromPoint(doc, clientX, clientY) {
|
|
27
43
|
const rangeFromPoint = doc.caretRangeFromPoint?.(clientX, clientY);
|
|
28
|
-
if (rangeFromPoint
|
|
29
|
-
|
|
30
|
-
return toClampedRawOffset(content, ambient);
|
|
44
|
+
if (rangeFromPoint) {
|
|
45
|
+
return { node: rangeFromPoint.startContainer, offset: rangeFromPoint.startOffset };
|
|
31
46
|
}
|
|
32
47
|
const posFromPoint = doc.caretPositionFromPoint?.(clientX, clientY);
|
|
33
|
-
|
|
34
|
-
const content = domTextOffsetAtNode(blockEl, posFromPoint.offsetNode, posFromPoint.offset);
|
|
35
|
-
return toClampedRawOffset(content, ambient);
|
|
36
|
-
}
|
|
37
|
-
return null;
|
|
48
|
+
return posFromPoint ? { node: posFromPoint.offsetNode, offset: posFromPoint.offset } : null;
|
|
38
49
|
}
|
|
39
50
|
/** A point one pixel inside `rect`, so the topmost element there is the box's own content. */
|
|
40
51
|
export function clampPointIntoBox(rect, x, y) {
|
|
@@ -43,6 +54,30 @@ export function clampPointIntoBox(rect, x, y) {
|
|
|
43
54
|
y: clamp(y, rect.top + 1, rect.bottom - 1)
|
|
44
55
|
};
|
|
45
56
|
}
|
|
57
|
+
// Mac and Linux Chromium answer a point above the first line or below the last with that line's
|
|
58
|
+
// start or end, and Windows with the column; a point level with a line gets the column everywhere.
|
|
59
|
+
function levelWithLines(el, x, y) {
|
|
60
|
+
const box = el.getBoundingClientRect();
|
|
61
|
+
if (!isInside(box, x, y))
|
|
62
|
+
return y;
|
|
63
|
+
const band = linesBandOf(el, box);
|
|
64
|
+
return band ? clamp(y, band.top + 1, band.bottom - 1) : y;
|
|
65
|
+
}
|
|
66
|
+
function isInside(box, x, y) {
|
|
67
|
+
return x >= box.left && x <= box.right && y >= box.top && y <= box.bottom;
|
|
68
|
+
}
|
|
69
|
+
/** The rows between `el`'s top and bottom padding; null when they leave no row one pixel inside.
|
|
70
|
+
* Only rows: a hanging list marker sits in the left padding, and the browser keeps a column there. */
|
|
71
|
+
function linesBandOf(el, box) {
|
|
72
|
+
const style = getComputedStyle(el);
|
|
73
|
+
const px = (value) => parseFloat(value) || 0;
|
|
74
|
+
// The client box leaves out the border and a classic scrollbar; an inline element has none.
|
|
75
|
+
const inline = el.clientWidth === 0 && el.clientHeight === 0;
|
|
76
|
+
const top = box.top + (inline ? px(style.borderTopWidth) : el.clientTop);
|
|
77
|
+
const bottom = inline ? box.bottom - px(style.borderBottomWidth) : top + el.clientHeight;
|
|
78
|
+
const band = { top: top + px(style.paddingTop), bottom: bottom - px(style.paddingBottom) };
|
|
79
|
+
return band.bottom - band.top < 2 ? null : band;
|
|
80
|
+
}
|
|
46
81
|
function clamp(value, low, high) {
|
|
47
82
|
return Math.min(Math.max(value, low), high);
|
|
48
83
|
}
|
|
@@ -1,26 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* render
|
|
4
|
-
*
|
|
5
|
-
* block-source offsets to walk space by `+ getAmbientLength()` at the single `placeCaret`
|
|
6
|
-
* seam. Precondition `source.length === sourceEnd - sourceStart`, asserted at entry (G1.26).
|
|
2
|
+
* Swapping between a rendered view and its editable source: the caret logic shared by inline
|
|
3
|
+
* widgets and blocks that render by default (both inject the swap and the revealed flag).
|
|
4
|
+
* Precondition: `source.length === sourceEnd - sourceStart`, asserted at entry (G1.26).
|
|
7
5
|
*/
|
|
8
6
|
export interface SourceRevealDeps {
|
|
9
|
-
/** The block's contenteditable
|
|
10
|
-
*
|
|
7
|
+
/** The block's contenteditable element, where the offset walk runs. Null while the source
|
|
8
|
+
* is unmounted (a block that is showing its rendered view). */
|
|
11
9
|
get container(): HTMLElement | null;
|
|
12
10
|
/** Source's raw byte range [start, end) in the block source. */
|
|
13
11
|
get sourceStart(): number;
|
|
14
12
|
get sourceEnd(): number;
|
|
15
|
-
/** The source's raw bytes; `length`
|
|
13
|
+
/** The source's raw bytes; `length` must equal `sourceEnd - sourceStart`. */
|
|
16
14
|
get source(): string;
|
|
17
|
-
/** Rendered marker prefix length the DOM walk counts but block source excludes. */
|
|
18
|
-
getAmbientLength(): number;
|
|
19
15
|
/** Whether the editable source is currently shown. Owned by the consumer
|
|
20
16
|
* (inline: a captured text node; block: a reactive flag). */
|
|
21
17
|
isRevealed(): boolean;
|
|
22
18
|
/** Swap the rendered view for editable source. May decline (leave `isRevealed`
|
|
23
|
-
* false)
|
|
19
|
+
* false), for example when the inline widget is not in the DOM. */
|
|
24
20
|
showSource(): void;
|
|
25
21
|
/** Swap the editable source back for the rendered view (inverse of showSource). */
|
|
26
22
|
showRendered(): void;
|
|
@@ -1,38 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* render
|
|
4
|
-
*
|
|
5
|
-
* block-source offsets to walk space by `+ getAmbientLength()` at the single `placeCaret`
|
|
6
|
-
* seam. Precondition `source.length === sourceEnd - sourceStart`, asserted at entry (G1.26).
|
|
2
|
+
* Swapping between a rendered view and its editable source: the caret logic shared by inline
|
|
3
|
+
* widgets and blocks that render by default (both inject the swap and the revealed flag).
|
|
4
|
+
* Precondition: `source.length === sourceEnd - sourceStart`, asserted at entry (G1.26).
|
|
7
5
|
*/
|
|
8
6
|
import { tick } from 'svelte';
|
|
9
|
-
import {
|
|
10
|
-
import { restoreCaretAtWalkOffset } from './focused-caret';
|
|
11
|
-
import { clampToLandableRaw } from './widget-offset';
|
|
7
|
+
import { placeCaretAtRaw } from './widget-offset';
|
|
12
8
|
import { assertInvariant } from '../assert';
|
|
13
9
|
import { checkRevealSourceLength } from '../invariants/inline-transitions';
|
|
14
10
|
export function createSourceReveal(deps) {
|
|
15
|
-
|
|
11
|
+
// Offset 0 of a source that opens with hidden markers (a block hiding its `$$` fence lines) is
|
|
12
|
+
// before those markers, where typing would land outside the fence, so the write clamps.
|
|
16
13
|
function placeCaret(container, blockSourceOffset) {
|
|
17
|
-
|
|
18
|
-
// BEFORE that chrome: typing there would land outside the fence. The seat is the nearest
|
|
19
|
-
// landable position, which is a no-op wherever nothing hides.
|
|
20
|
-
const ambient = deps.getAmbientLength();
|
|
21
|
-
const seat = clampToLandableRaw(container, blockSourceOffset, ambient);
|
|
22
|
-
restoreCaretAtWalkOffset(container, toDomTextOffset(asRawOffset(seat), ambient));
|
|
14
|
+
placeCaretAtRaw(container, blockSourceOffset, { clamp: 'reachable' });
|
|
23
15
|
}
|
|
24
16
|
async function reveal(atSourceOffset = 0) {
|
|
25
17
|
assertInvariant('reveal-transition', () => checkRevealSourceLength(deps.source.length, deps.sourceStart, deps.sourceEnd));
|
|
26
18
|
if (!deps.isRevealed())
|
|
27
19
|
deps.showSource();
|
|
28
20
|
if (!deps.isRevealed())
|
|
29
|
-
return; // swap declined (
|
|
21
|
+
return; // swap declined (the widget is not in the DOM)
|
|
30
22
|
await tick();
|
|
31
23
|
const settled = deps.container;
|
|
32
24
|
if (!settled)
|
|
33
25
|
return;
|
|
34
|
-
// Focus
|
|
35
|
-
// typing, and focusing
|
|
26
|
+
// Focus before the caret write: a caret placed in an unfocused editable receives no
|
|
27
|
+
// typing, and focusing afterwards would reset the selection to the element start.
|
|
36
28
|
if (document.activeElement !== settled)
|
|
37
29
|
settled.focus();
|
|
38
30
|
const clamped = Math.max(0, Math.min(atSourceOffset, deps.source.length));
|
|
@@ -1,28 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* An `overflow: hidden` auto-height card matches a clipping predicate while doing neither.
|
|
6
|
-
* `selection/drag-pointer.ts` keeps its own inner walk, so a change here is not one to it.
|
|
2
|
+
* Ancestor walks for "what scrolls" (the first `auto`/`scroll` ancestor) and "what clips" (the
|
|
3
|
+
* whole chain of ancestors bounding the visible region, since visibility is their intersection).
|
|
4
|
+
* `selection/drag-pointer.ts` keeps its own inner walk, so a change here does not change it.
|
|
7
5
|
*/
|
|
8
6
|
export declare function nearestScrollContainer(el: HTMLElement, stopAt: HTMLElement): HTMLElement | null;
|
|
9
7
|
/** What a drag can autoscroll: an element, or the page's own viewport. */
|
|
10
8
|
export type UserScrollport = HTMLElement | Window;
|
|
11
|
-
/**
|
|
12
|
-
*
|
|
13
|
-
* ancestor, or the window when the page's own viewport is the scrollport. Total on
|
|
14
|
-
* purpose — a null for the page-scrolled case reads as "no autoscroll targets", and
|
|
15
|
-
* `document.scrollingElement` is no substitute (its rect is the document box).
|
|
16
|
-
*/
|
|
9
|
+
/** What a drag autoscrolls to bring more of `el` into reach: the nearest user-scrollable ancestor,
|
|
10
|
+
* or the window. Never null, which would read as "no autoscroll target". */
|
|
17
11
|
export declare function userScrollportFor(el: HTMLElement): UserScrollport;
|
|
18
|
-
/**
|
|
19
|
-
*
|
|
20
|
-
* not the nearest: only the intersection answers "is this visible", and the innermost
|
|
21
|
-
* match alone can be a rounded card that bounds nothing. Callers intersect the window
|
|
22
|
-
* viewport with these; an empty result means the window alone bounds it.
|
|
23
|
-
*/
|
|
12
|
+
/** Every ancestor that bounds what can be seen of `el`, outermost last: only their intersection
|
|
13
|
+
* with the window viewport answers visibility. Empty means the window alone bounds it. */
|
|
24
14
|
export declare function clippingAncestors(el: HTMLElement): HTMLElement[];
|
|
25
|
-
/** First scrollable descendant of `el` in document order
|
|
26
|
-
*
|
|
27
|
-
* means looking inward, not up. */
|
|
15
|
+
/** First scrollable descendant of `el` in document order: a block host wraps the block's own
|
|
16
|
+
* scroll container, so what scrolls beneath it is found by looking inward. */
|
|
28
17
|
export declare function firstScrollableDescendant(el: HTMLElement): HTMLElement | null;
|
|
@@ -1,24 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* An `overflow: hidden` auto-height card matches a clipping predicate while doing neither.
|
|
6
|
-
* `selection/drag-pointer.ts` keeps its own inner walk, so a change here is not one to it.
|
|
2
|
+
* Ancestor walks for "what scrolls" (the first `auto`/`scroll` ancestor) and "what clips" (the
|
|
3
|
+
* whole chain of ancestors bounding the visible region, since visibility is their intersection).
|
|
4
|
+
* `selection/drag-pointer.ts` keeps its own inner walk, so a change here does not change it.
|
|
7
5
|
*/
|
|
8
|
-
// Scrollable through script
|
|
6
|
+
// Scrollable through script: `element.scrollTop = n` moves it. `hidden` qualifies.
|
|
9
7
|
const SCRIPT_SCROLLABLE_VALUES = new Set(['auto', 'scroll', 'hidden']);
|
|
10
|
-
// Scrollable by the
|
|
11
|
-
//
|
|
12
|
-
// strand content out of reach.
|
|
8
|
+
// Scrollable by the user, which is what a drag may autoscroll. `hidden` is left out: a user cannot
|
|
9
|
+
// wheel it back, so autoscrolling it would strand content out of reach.
|
|
13
10
|
const USER_SCROLLABLE_VALUES = new Set(['auto', 'scroll']);
|
|
14
|
-
// What can bound the visible region. `clip` joins here and only here
|
|
11
|
+
// What can bound the visible region. `clip` joins here and only here: it never scrolls,
|
|
15
12
|
// so it is no autoscroll answer, but a block past its edge is unreachable.
|
|
16
13
|
const VIEW_BOUNDING_VALUES = new Set([...SCRIPT_SCROLLABLE_VALUES, 'clip']);
|
|
17
14
|
function isScriptScrollable(el) {
|
|
18
15
|
const cs = getComputedStyle(el);
|
|
19
16
|
return SCRIPT_SCROLLABLE_VALUES.has(cs.overflowX) || SCRIPT_SCROLLABLE_VALUES.has(cs.overflowY);
|
|
20
17
|
}
|
|
21
|
-
// Never a candidate in either walk: when the page box
|
|
18
|
+
// Never a candidate in either walk: when the page box is the scroll container, the window
|
|
22
19
|
// viewport is the rect to measure and the thing to scroll, and neither box is that rect.
|
|
23
20
|
function isPageBox(el) {
|
|
24
21
|
return el === document.body || el === document.documentElement;
|
|
@@ -32,12 +29,8 @@ export function nearestScrollContainer(el, stopAt) {
|
|
|
32
29
|
}
|
|
33
30
|
return null;
|
|
34
31
|
}
|
|
35
|
-
/**
|
|
36
|
-
*
|
|
37
|
-
* ancestor, or the window when the page's own viewport is the scrollport. Total on
|
|
38
|
-
* purpose — a null for the page-scrolled case reads as "no autoscroll targets", and
|
|
39
|
-
* `document.scrollingElement` is no substitute (its rect is the document box).
|
|
40
|
-
*/
|
|
32
|
+
/** What a drag autoscrolls to bring more of `el` into reach: the nearest user-scrollable ancestor,
|
|
33
|
+
* or the window. Never null, which would read as "no autoscroll target". */
|
|
41
34
|
export function userScrollportFor(el) {
|
|
42
35
|
let cur = el.parentElement;
|
|
43
36
|
while (cur && !isPageBox(cur)) {
|
|
@@ -49,12 +42,8 @@ export function userScrollportFor(el) {
|
|
|
49
42
|
}
|
|
50
43
|
return window;
|
|
51
44
|
}
|
|
52
|
-
/**
|
|
53
|
-
*
|
|
54
|
-
* not the nearest: only the intersection answers "is this visible", and the innermost
|
|
55
|
-
* match alone can be a rounded card that bounds nothing. Callers intersect the window
|
|
56
|
-
* viewport with these; an empty result means the window alone bounds it.
|
|
57
|
-
*/
|
|
45
|
+
/** Every ancestor that bounds what can be seen of `el`, outermost last: only their intersection
|
|
46
|
+
* with the window viewport answers visibility. Empty means the window alone bounds it. */
|
|
58
47
|
export function clippingAncestors(el) {
|
|
59
48
|
const bounds = [];
|
|
60
49
|
let cur = el.parentElement;
|
|
@@ -67,9 +56,8 @@ export function clippingAncestors(el) {
|
|
|
67
56
|
}
|
|
68
57
|
return bounds;
|
|
69
58
|
}
|
|
70
|
-
/** First scrollable descendant of `el` in document order
|
|
71
|
-
*
|
|
72
|
-
* means looking inward, not up. */
|
|
59
|
+
/** First scrollable descendant of `el` in document order: a block host wraps the block's own
|
|
60
|
+
* scroll container, so what scrolls beneath it is found by looking inward. */
|
|
73
61
|
export function firstScrollableDescendant(el) {
|
|
74
62
|
const queue = [];
|
|
75
63
|
for (const child of el.children) {
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { BlockElLookup } from '../editor-keys';
|
|
2
|
+
import type { UserScrollport } from './scroll-ancestors';
|
|
3
|
+
import { type Scrollport, type ScrollportReader } from './scrollport';
|
|
4
|
+
export type PlaceBlock = 'nearest' | 'center';
|
|
5
|
+
export interface PlaceOptions {
|
|
6
|
+
block: PlaceBlock;
|
|
7
|
+
/** Keep the block where it landed against later layout shifts, until a user gesture or a newer
|
|
8
|
+
* placement. */
|
|
9
|
+
hold: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface ScrollPlacement {
|
|
12
|
+
/** Scroll the mounted block into view once, then wait out the height changes that follow; true
|
|
13
|
+
* when it ends in view. A newer placement stops it at once. */
|
|
14
|
+
scroll(): Promise<boolean>;
|
|
15
|
+
}
|
|
16
|
+
/** Where a block's top sits in the scroll container's content, and its height. */
|
|
17
|
+
export interface TargetTop {
|
|
18
|
+
top: number;
|
|
19
|
+
height: number;
|
|
20
|
+
}
|
|
21
|
+
/** The root list's reads of the document's height tables, installed by the root list alone. */
|
|
22
|
+
export interface TargetResolver {
|
|
23
|
+
/** Null when the list can't place the path: out of its range, or windowed out inside a
|
|
24
|
+
* mounted container. */
|
|
25
|
+
resolve(path: readonly number[]): TargetTop | null;
|
|
26
|
+
/** The block a measure round keeps still, picked from the scroll before it, and a read of how far
|
|
27
|
+
* it moved; the same walk `resolve` makes, so a held target and the round agree. */
|
|
28
|
+
holdForRound(): (() => number) | null;
|
|
29
|
+
/** Where to scroll so the block at `path` mounts in its list. */
|
|
30
|
+
mountTop(path: readonly number[]): number | null;
|
|
31
|
+
/** A scripted `scrollTop` write fires no `scroll` event in time, so the root window re-reads it. */
|
|
32
|
+
syncScrollTop(): void;
|
|
33
|
+
}
|
|
34
|
+
/** `held` runs the change and returns how far the block the caller keeps still moved across it. */
|
|
35
|
+
export type Compensate = (mutate: () => void, held: (mutate: () => void) => number) => void;
|
|
36
|
+
/** What the root list gets for installing its resolver: the header slot's correction. A round
|
|
37
|
+
* measures below the root list's top, so the header's own growth joins it as a distance. */
|
|
38
|
+
export interface RootListScroll {
|
|
39
|
+
compensate: Compensate;
|
|
40
|
+
uninstall(): void;
|
|
41
|
+
}
|
|
42
|
+
export interface ScrollOwner {
|
|
43
|
+
/** The scroll container, read-only; null until the editor root mounts. */
|
|
44
|
+
port(): ScrollportReader | null;
|
|
45
|
+
/** Whether any of the mounted block at `path` shows in the editor's viewport: the published
|
|
46
|
+
* "placed and in view" answer, which a block partly on screen satisfies. */
|
|
47
|
+
isInView(path: readonly number[]): boolean;
|
|
48
|
+
/** Whether a viewport rect sits wholly inside what the editor shows, so a caret there needs no
|
|
49
|
+
* scroll. */
|
|
50
|
+
shows(rect: DOMRectReadOnly): boolean;
|
|
51
|
+
/** Scroll the least distance that shows the rect `read` returns (a caret's line, a cell), read
|
|
52
|
+
* after an open round's correction; null shows nothing. Holds nothing, and ends an older hold. */
|
|
53
|
+
showRect(read: () => DOMRectReadOnly | null): void;
|
|
54
|
+
/** Called before any list's height table changes: opens the round every height write of this
|
|
55
|
+
* flush joins, picking the block to keep still now. The round writes once, at the next tick. */
|
|
56
|
+
beginRound(): void;
|
|
57
|
+
/** True from a round's first height write until it closes. */
|
|
58
|
+
roundOpen(): boolean;
|
|
59
|
+
/** Runs `run` after the current flush, with every other list's. */
|
|
60
|
+
measureSoon(run: () => void): void;
|
|
61
|
+
/** Watches a child's size with the editor's one observer; the callback only records heights. */
|
|
62
|
+
watchSize(el: Element, onResize: (entry: ResizeObserverEntry) => void): () => void;
|
|
63
|
+
/** Take the position for a scroll into view now, before the mount's awaits; `scroll()` once
|
|
64
|
+
* the block is mounted. */
|
|
65
|
+
place(path: readonly number[], opts: PlaceOptions): ScrollPlacement;
|
|
66
|
+
/** Scroll so the block at `path` leads the viewport, to mount it there. */
|
|
67
|
+
scrollToMount(path: readonly number[]): void;
|
|
68
|
+
/** Read the position now; the returned call puts it back after a view swap renders. */
|
|
69
|
+
keep(): () => Promise<void>;
|
|
70
|
+
/** A keydown, pointerdown or wheel on the scroll container: drop any held placement. */
|
|
71
|
+
release(): void;
|
|
72
|
+
/** Called by the root list alone. */
|
|
73
|
+
resolveTargetsWith(resolver: TargetResolver): RootListScroll;
|
|
74
|
+
}
|
|
75
|
+
export interface ScrollOwnerDeps {
|
|
76
|
+
/** The element the editor scrolls, or null before the root mounts. */
|
|
77
|
+
getScrollHost(): UserScrollport | null;
|
|
78
|
+
/** Opens the scroll host as a scroll container the owner can write; a unit test hands in a
|
|
79
|
+
* stub. */
|
|
80
|
+
openPort?: (host: UserScrollport) => Scrollport;
|
|
81
|
+
/** False while the browser's own scroll anchoring holds the user's place (host mode, root not
|
|
82
|
+
* windowing): two writers on one position correct it twice. */
|
|
83
|
+
editorCorrects(): boolean;
|
|
84
|
+
getBlockElByPath: BlockElLookup;
|
|
85
|
+
getEditorRoot(): HTMLElement | null;
|
|
86
|
+
/** True when an ancestor owns the scroll: the root then spans the whole document, so
|
|
87
|
+
* intersecting a block with it says nothing about visibility. */
|
|
88
|
+
isHostScroll(): boolean;
|
|
89
|
+
/** In host mode, the ancestors that bound what can be seen, intersected with the window. */
|
|
90
|
+
getClipBounds(): HTMLElement[];
|
|
91
|
+
}
|
|
92
|
+
export declare function createScrollOwner(deps: ScrollOwnerDeps): ScrollOwner;
|