@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
|
@@ -24,9 +24,10 @@ declare const TextEditableBlock: import("svelte").Component<$$ComponentProps, {
|
|
|
24
24
|
isVerticallyTransparent: () => boolean;
|
|
25
25
|
enterEdgeWidget: (side: "start" | "end") => boolean;
|
|
26
26
|
claimRootClipboard: (event: ClipboardEvent) => void;
|
|
27
|
-
insertMarkdown: (md: string) => boolean
|
|
27
|
+
insertMarkdown: (md: string) => Promise<boolean>;
|
|
28
28
|
snapCaretToPoint: (clientX: number, clientY: number) => void;
|
|
29
29
|
runCommand: (id: CommandId, arg?: unknown) => boolean;
|
|
30
|
+
afterSourceCommit: (run: () => void, offset?: number | import("../../../cursor/coordinate-spaces").RawOffset) => void;
|
|
30
31
|
isCommandActive: (id: CommandId) => boolean;
|
|
31
32
|
}, "">;
|
|
32
33
|
type TextEditableBlock = ReturnType<typeof TextEditableBlock>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The empty delimiter pair the auto-pair last wrote, one record per editor: only that pair is its
|
|
3
|
+
* to step over, collapse or delete, since the same bytes typed by hand are the user's. It holds
|
|
4
|
+
* while the pair and the text either side are the bytes the write left, so typing inside keeps
|
|
5
|
+
* it; an edit outside it, or a key with the caret elsewhere or in another block, ends it.
|
|
6
|
+
*/
|
|
7
|
+
import type { ContentRange } from '../../../core/inline';
|
|
8
|
+
export interface AutoPairRecord {
|
|
9
|
+
/** A view of the record for one block; each call is a new block identity. */
|
|
10
|
+
forBlock(): BlockAutoPairs;
|
|
11
|
+
}
|
|
12
|
+
export interface BlockAutoPairs {
|
|
13
|
+
/**
|
|
14
|
+
* The pair the auto-pair wrote, when it is still empty and `caret` sits between its runs or
|
|
15
|
+
* just past it (a stepped-over partner). A caret anywhere else ends the record.
|
|
16
|
+
*/
|
|
17
|
+
consult(text: string, caret: number): ContentRange | null;
|
|
18
|
+
/** Record the empty pair a write left at `pair` in `text`. */
|
|
19
|
+
remember(text: string, pair: ContentRange): void;
|
|
20
|
+
/** The key closed, deleted or dropped the pair. */
|
|
21
|
+
forget(): void;
|
|
22
|
+
}
|
|
23
|
+
export declare function createAutoPairRecord(): AutoPairRecord;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The empty delimiter pair the auto-pair last wrote, one record per editor: only that pair is its
|
|
3
|
+
* to step over, collapse or delete, since the same bytes typed by hand are the user's. It holds
|
|
4
|
+
* while the pair and the text either side are the bytes the write left, so typing inside keeps
|
|
5
|
+
* it; an edit outside it, or a key with the caret elsewhere or in another block, ends it.
|
|
6
|
+
*/
|
|
7
|
+
export function createAutoPairRecord() {
|
|
8
|
+
let written = null;
|
|
9
|
+
return {
|
|
10
|
+
forBlock() {
|
|
11
|
+
const block = {};
|
|
12
|
+
return {
|
|
13
|
+
consult(text, caret) {
|
|
14
|
+
const pair = written?.block === block ? pairIn(written, text) : null;
|
|
15
|
+
const k = written?.run.length ?? 0;
|
|
16
|
+
const inBody = pair !== null && caret >= pair.start + k && caret <= pair.end - k;
|
|
17
|
+
const empty = pair !== null && pair.end - pair.start === 2 * k;
|
|
18
|
+
if (!pair || !(inBody || (empty && caret === pair.end))) {
|
|
19
|
+
written = null;
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
return empty ? pair : null;
|
|
23
|
+
},
|
|
24
|
+
remember(text, pair) {
|
|
25
|
+
const k = (pair.end - pair.start) / 2;
|
|
26
|
+
written = {
|
|
27
|
+
block,
|
|
28
|
+
before: text.slice(0, pair.start),
|
|
29
|
+
run: text.slice(pair.start, pair.start + k),
|
|
30
|
+
after: text.slice(pair.end)
|
|
31
|
+
};
|
|
32
|
+
},
|
|
33
|
+
forget() {
|
|
34
|
+
written = null;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
// Where the written pair sits in `text` now, body included, or null once the bytes differ.
|
|
41
|
+
function pairIn({ before, run, after }, text) {
|
|
42
|
+
const start = before.length;
|
|
43
|
+
const end = text.length - after.length;
|
|
44
|
+
if (end - start < 2 * run.length)
|
|
45
|
+
return null;
|
|
46
|
+
if (!text.startsWith(before) || !text.endsWith(after))
|
|
47
|
+
return null;
|
|
48
|
+
if (!text.startsWith(run, start) || !text.startsWith(run, end - run.length))
|
|
49
|
+
return null;
|
|
50
|
+
return { start, end };
|
|
51
|
+
}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
/** Caret in a
|
|
3
|
-
*
|
|
1
|
+
/** Shared checks about the caret and the key, used across a text block's editable element. */
|
|
2
|
+
/** Caret in a text node the user can see: the browser draws a caret there, so the editor's own
|
|
3
|
+
* caret indicator is not needed. Hidden marker text renders nothing, so it does not count. */
|
|
4
4
|
export declare function caretIsInTextContent(el: HTMLElement, sel: Selection | null): boolean;
|
|
5
|
-
/**
|
|
6
|
-
|
|
5
|
+
/** The same read for a caret position given as a node: the one a press is about to make. */
|
|
6
|
+
export declare function seatIsInTextContent(el: HTMLElement, node: Node): boolean;
|
|
7
|
+
/** Whether this element holds a selected range: a double or triple click, a shift-click, a
|
|
8
|
+
* drag-select. The gesture drew that range, so click-time caret placement leaves it alone. */
|
|
7
9
|
export declare function surfaceHoldsRange(el: HTMLElement, sel: Selection | null): boolean;
|
|
8
|
-
/** Ctrl
|
|
10
|
+
/** Ctrl, meta or alt held: a platform command, never an edit of the byte beside the caret. */
|
|
9
11
|
export declare function hasModifier(e: KeyboardEvent): boolean;
|
|
10
12
|
/** A typed character: no modifier chord, one code point. A chord is a command instead. */
|
|
11
13
|
export declare function isPlainTypingKey(e: KeyboardEvent): boolean;
|
|
@@ -1,23 +1,26 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** Shared checks about the caret and the key, used across a text block's editable element. */
|
|
2
2
|
import { isCharacterKey } from '../../../schema/keybindings';
|
|
3
3
|
import { isHiddenMarkerText } from '../../../cursor/widget-offset';
|
|
4
|
-
/** Caret in a
|
|
5
|
-
*
|
|
4
|
+
/** Caret in a text node the user can see: the browser draws a caret there, so the editor's own
|
|
5
|
+
* caret indicator is not needed. Hidden marker text renders nothing, so it does not count. */
|
|
6
6
|
export function caretIsInTextContent(el, sel) {
|
|
7
7
|
if (!sel || sel.rangeCount === 0)
|
|
8
8
|
return false;
|
|
9
|
-
|
|
9
|
+
return seatIsInTextContent(el, sel.getRangeAt(0).startContainer);
|
|
10
|
+
}
|
|
11
|
+
/** The same read for a caret position given as a node: the one a press is about to make. */
|
|
12
|
+
export function seatIsInTextContent(el, node) {
|
|
10
13
|
return node.nodeType === Node.TEXT_NODE && el.contains(node) && !isHiddenMarkerText(node, el);
|
|
11
14
|
}
|
|
12
|
-
/**
|
|
13
|
-
* drag-select.
|
|
15
|
+
/** Whether this element holds a selected range: a double or triple click, a shift-click, a
|
|
16
|
+
* drag-select. The gesture drew that range, so click-time caret placement leaves it alone. */
|
|
14
17
|
export function surfaceHoldsRange(el, sel) {
|
|
15
18
|
if (!sel || sel.isCollapsed || sel.rangeCount === 0)
|
|
16
19
|
return false;
|
|
17
20
|
const range = sel.getRangeAt(0);
|
|
18
21
|
return el.contains(range.startContainer) || el.contains(range.endContainer);
|
|
19
22
|
}
|
|
20
|
-
/** Ctrl
|
|
23
|
+
/** Ctrl, meta or alt held: a platform command, never an edit of the byte beside the caret. */
|
|
21
24
|
export function hasModifier(e) {
|
|
22
25
|
return e.ctrlKey || e.metaKey || e.altKey;
|
|
23
26
|
}
|
|
@@ -1,32 +1,36 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* What an IME composition needs remembered, captured at `compositionstart`. The arrival side and
|
|
3
|
+
* the pending marks both belong to the caret the composition opened at, and by the time the
|
|
4
|
+
* composed run arrives the arrival side has been overwritten, so they are captured up front.
|
|
5
5
|
*/
|
|
6
6
|
import type { InlineNode } from '../../../core/nodes';
|
|
7
7
|
import type { VisibilityContext } from '../../../core/inline/visibility';
|
|
8
8
|
import type { EdgeAffinity } from '../../../cursor/edge-affinity';
|
|
9
|
+
import type { Reading } from '../../../schema/reading';
|
|
9
10
|
import type { InlineMarkKind } from '../../../schema/inline-construct-policy';
|
|
10
11
|
export interface CompositionSeatDeps {
|
|
11
|
-
/** The block's
|
|
12
|
+
/** The block's displayed text, which a commit's reading is compared against. */
|
|
12
13
|
getDisplayText: () => string;
|
|
13
14
|
getInlines: () => readonly InlineNode[];
|
|
15
|
+
/** The reading `getInlines` reads with, so a candidate keeps the reference links it shows and
|
|
16
|
+
* reads back as the syntax the editor draws. */
|
|
17
|
+
reading: Reading;
|
|
14
18
|
getAffinity: () => EdgeAffinity | null;
|
|
15
|
-
/** How the
|
|
19
|
+
/** How the block reads on screen, for deciding which ranges are actually drawn. */
|
|
16
20
|
getScreen: () => VisibilityContext;
|
|
17
21
|
/** Spend the pending marks: a composition is the one insertion they were promised to. */
|
|
18
22
|
consumePendingMarks: () => ReadonlySet<InlineMarkKind> | null;
|
|
19
|
-
/** Give them back when the composition
|
|
20
|
-
* the
|
|
23
|
+
/** Give them back when the composition wrote nothing: a cancelled IME run inserts nothing, so
|
|
24
|
+
* the marks are still pending. Required, so every block answers the same way. */
|
|
21
25
|
restorePendingMarks: (marks: ReadonlySet<InlineMarkKind>) => void;
|
|
22
|
-
/** The block's
|
|
23
|
-
*
|
|
26
|
+
/** The block's selection, read at `compositionstart`: composing over one goes to
|
|
27
|
+
* `resolveRangeEdit`. Omit to keep ranges as the browser wrote them. */
|
|
24
28
|
getRawSelection?: () => {
|
|
25
29
|
start: number;
|
|
26
30
|
end: number;
|
|
27
31
|
} | null;
|
|
28
|
-
/**
|
|
29
|
-
*
|
|
32
|
+
/** How this block resolves a range replace, in displayed bytes; null keeps the browser's own
|
|
33
|
+
* edit, the same refusal the keydown selection-edit path makes. */
|
|
30
34
|
resolveRangeEdit?: (range: {
|
|
31
35
|
start: number;
|
|
32
36
|
end: number;
|
|
@@ -36,9 +40,8 @@ export interface CompositionSeatDeps {
|
|
|
36
40
|
} | null;
|
|
37
41
|
}
|
|
38
42
|
export interface CompositionSeat {
|
|
39
|
-
/** Capture the
|
|
40
|
-
* `compositionstart
|
|
41
|
-
* mid-composition `input`, which re-arms it to the typed side. */
|
|
43
|
+
/** Capture the state the composition opened in. Call it before the block's own
|
|
44
|
+
* `compositionstart` and the first `input`, which both overwrite the arrival side. */
|
|
42
45
|
noteStart(): void;
|
|
43
46
|
/** The bytes the commit should write, or null to keep the DOM read verbatim. */
|
|
44
47
|
relocate(after: string, composedAt: number): {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* What an IME composition needs remembered, captured at `compositionstart`. The arrival side and
|
|
3
|
+
* the pending marks both belong to the caret the composition opened at, and by the time the
|
|
4
|
+
* composed run arrives the arrival side has been overwritten, so they are captured up front.
|
|
5
5
|
*/
|
|
6
6
|
import { plainInsertionAt, relocateComposedRun } from './edge-seat';
|
|
7
7
|
import { resolveMarkedInsertion } from './pending-mark-insert';
|
|
8
8
|
export function createCompositionSeat(deps) {
|
|
9
|
-
//
|
|
10
|
-
// commit compositionend drives.
|
|
9
|
+
// One nullable capture rather than a stack: a composition runs from `compositionstart` to the
|
|
10
|
+
// single commit `compositionend` drives.
|
|
11
11
|
let started = null;
|
|
12
12
|
return {
|
|
13
13
|
noteStart: () => {
|
|
@@ -23,8 +23,8 @@ export function createCompositionSeat(deps) {
|
|
|
23
23
|
if (started === null)
|
|
24
24
|
return null;
|
|
25
25
|
started.committed = true;
|
|
26
|
-
// A selection at the
|
|
27
|
-
//
|
|
26
|
+
// A selection open at the start makes this a range replace, which the browser would do
|
|
27
|
+
// literally, stranding the delimiter runs the range crossed.
|
|
28
28
|
if (started.range && started.range.start < started.range.end) {
|
|
29
29
|
const typed = replacedRangeInsertion(started.before, after, started.range);
|
|
30
30
|
if (typed === null)
|
|
@@ -37,11 +37,11 @@ export function createCompositionSeat(deps) {
|
|
|
37
37
|
const composed = plainInsertionAt(started.before, after, composedAt);
|
|
38
38
|
const marked = composed === null
|
|
39
39
|
? null
|
|
40
|
-
: resolveMarkedInsertion(started.before, composedAt, composed, started.marks, deps.getInlines());
|
|
40
|
+
: resolveMarkedInsertion(started.before, composedAt, composed, started.marks, deps.getInlines(), deps.reading);
|
|
41
41
|
if (marked)
|
|
42
42
|
return marked;
|
|
43
43
|
}
|
|
44
|
-
return relocateComposedRun(started.before, after, composedAt, deps.getInlines(), started.affinity, deps.getScreen());
|
|
44
|
+
return relocateComposedRun(started.before, after, composedAt, deps.getInlines(), started.affinity, deps.getScreen(), deps.reading);
|
|
45
45
|
},
|
|
46
46
|
noteEnd: () => {
|
|
47
47
|
if (started && !started.committed && started.marks) {
|
|
@@ -51,8 +51,8 @@ export function createCompositionSeat(deps) {
|
|
|
51
51
|
}
|
|
52
52
|
};
|
|
53
53
|
}
|
|
54
|
-
/** The run the commit's
|
|
55
|
-
* exactly that span
|
|
54
|
+
/** The run the commit's reading put over `range`, or null when that reading is not a replacement
|
|
55
|
+
* of exactly that span: nothing here can tell what the browser did, so verbatim is honest. */
|
|
56
56
|
function replacedRangeInsertion(before, after, range) {
|
|
57
57
|
const length = after.length - before.length + (range.end - range.start);
|
|
58
58
|
if (length < 0 || range.end > before.length)
|
|
@@ -1,47 +1,47 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* What a destructive key takes at an inline construct's
|
|
3
|
-
*
|
|
4
|
-
* `autoUnwrapOnEmpty`). Bytes that read right can parse wrong, so a candidate is written only
|
|
5
|
-
*
|
|
2
|
+
* What a destructive key takes at an inline construct's hidden delimiter run: the neighbouring
|
|
3
|
+
* content character, plus the delimiters the cut leaves enclosing nothing (live-mode.md § 4.4
|
|
4
|
+
* `autoUnwrapOnEmpty`). Bytes that read right can parse wrong, so a candidate is written only when,
|
|
5
|
+
* read back where it is stored, it shows the user lost exactly what the cut aimed at.
|
|
6
6
|
*/
|
|
7
7
|
import { type ContentRange } from '../../../core/inline';
|
|
8
8
|
import { type VisibilityContext } from '../../../core/inline/visibility';
|
|
9
|
-
import type { InlineNode } from '../../../core/nodes';
|
|
9
|
+
import type { AnyInlineKind, InlineNode } from '../../../core/nodes';
|
|
10
|
+
import type { StoredAs } from '../../../schema/stored-as';
|
|
10
11
|
export type DeleteDirection = 'backward' | 'forward';
|
|
11
12
|
/** Named fields rather than a positional row: `display`, the two ranges and the caret are all
|
|
12
13
|
* offsets into the same string, and a swapped pair would type-check. */
|
|
13
14
|
export interface EdgeDeletionQuery {
|
|
14
|
-
/** The block's
|
|
15
|
+
/** The block's displayed text: its raw without the trailing line ending. */
|
|
15
16
|
display: string;
|
|
16
17
|
/** The bytes the block's own kind calls content; a cut never reaches past them. */
|
|
17
18
|
content: ContentRange;
|
|
18
19
|
caret: number;
|
|
19
20
|
direction: DeleteDirection;
|
|
20
|
-
/** How the block reads on screen. Required, so a second caller cannot inherit
|
|
21
|
-
*
|
|
21
|
+
/** How the block reads on screen. Required, so a second caller cannot inherit an assumption
|
|
22
|
+
* about what is hidden by saying nothing. */
|
|
22
23
|
screen: VisibilityContext;
|
|
23
|
-
/** The inline tree the render
|
|
24
|
+
/** The inline tree the render drew from, so the runs skipped here are the runs really hidden. */
|
|
24
25
|
inlines: readonly InlineNode[];
|
|
25
|
-
/**
|
|
26
|
-
*
|
|
27
|
-
|
|
26
|
+
/** Where the block's bytes are stored, with the reading `inlines` was read in: a candidate is
|
|
27
|
+
* read back there, so a cell's text stays text and a list item's reads behind its marker. */
|
|
28
|
+
store: StoredAs;
|
|
28
29
|
}
|
|
29
|
-
/** A prose surface installs a block; a table cell installs cell text, whose bytes read as a list or
|
|
30
|
-
* a quote the moment they open with `- ` or `> ` though the cell paints neither. */
|
|
31
|
-
export type EdgeDeletionSurface = 'block' | 'cell';
|
|
32
30
|
export interface EdgeDeletionWrite {
|
|
33
|
-
/** The block's whole
|
|
31
|
+
/** The block's whole displayed text after the cut. */
|
|
34
32
|
raw: string;
|
|
35
33
|
caret: number;
|
|
34
|
+
/** The marks of the constructs the cut emptied and unwrapped, for the caller to hold pending. */
|
|
35
|
+
unwrappedMarks: readonly AnyInlineKind[];
|
|
36
36
|
}
|
|
37
|
-
/** The
|
|
38
|
-
*
|
|
37
|
+
/** The key belongs here but no rewrite parses back: taking nothing is the only answer that keeps
|
|
38
|
+
* the markers off screen, since the browser's version would show them. */
|
|
39
39
|
export interface EdgeDeletionSwallow {
|
|
40
40
|
swallow: true;
|
|
41
41
|
}
|
|
42
42
|
export type EdgeDeletion = EdgeDeletionWrite | EdgeDeletionSwallow;
|
|
43
43
|
/**
|
|
44
|
-
* What a destructive key at `caret` does, or null when
|
|
45
|
-
* content
|
|
44
|
+
* What a destructive key at `caret` does, or null when it does not belong here: nothing on the
|
|
45
|
+
* content side of the caret, or a cut with no hidden run beside it, which the browser gets right.
|
|
46
46
|
*/
|
|
47
47
|
export declare function resolveEdgeDeletion(query: EdgeDeletionQuery): EdgeDeletion | null;
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* What a destructive key takes at an inline construct's
|
|
3
|
-
*
|
|
4
|
-
* `autoUnwrapOnEmpty`). Bytes that read right can parse wrong, so a candidate is written only
|
|
5
|
-
*
|
|
2
|
+
* What a destructive key takes at an inline construct's hidden delimiter run: the neighbouring
|
|
3
|
+
* content character, plus the delimiters the cut leaves enclosing nothing (live-mode.md § 4.4
|
|
4
|
+
* `autoUnwrapOnEmpty`). Bytes that read right can parse wrong, so a candidate is written only when,
|
|
5
|
+
* read back where it is stored, it shows the user lost exactly what the cut aimed at.
|
|
6
6
|
*/
|
|
7
|
-
import { constructContentRange, inlineDescendants
|
|
7
|
+
import { constructContentRange, inlineDescendants } from '../../../core/inline';
|
|
8
8
|
import { CONTENT_VISIBILITY, renderedText } from '../../../core/inline/visibility';
|
|
9
|
+
import { readBack, shownOf } from '../../../core/inline/live-edit/read-back';
|
|
9
10
|
import { getInlineConstructPolicy } from '../../../schema/inline-construct-policy';
|
|
10
|
-
import { removesExactly
|
|
11
|
+
import { removesExactly } from './screen-diff';
|
|
12
|
+
import { isHighSurrogate, isLowSurrogate } from '../../../core/lines';
|
|
11
13
|
/**
|
|
12
|
-
* What a destructive key at `caret` does, or null when
|
|
13
|
-
* content
|
|
14
|
+
* What a destructive key at `caret` does, or null when it does not belong here: nothing on the
|
|
15
|
+
* content side of the caret, or a cut with no hidden run beside it, which the browser gets right.
|
|
14
16
|
*/
|
|
15
17
|
export function resolveEdgeDeletion(query) {
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
// oracle call below is past this gate, which is why they can all take the content reading.
|
|
18
|
+
// Visible delimiters are bytes the user saw, so the key stays with the browser; everything
|
|
19
|
+
// below can therefore use the content reading.
|
|
19
20
|
if (query.screen.chromePaints)
|
|
20
21
|
return null;
|
|
21
22
|
const { display, content, caret, direction } = query;
|
|
@@ -23,28 +24,33 @@ export function resolveEdgeDeletion(query) {
|
|
|
23
24
|
const target = deletionTarget(display, constructs, content, caret, direction);
|
|
24
25
|
if (!target)
|
|
25
26
|
return null;
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
// grapheme and IME behavior.
|
|
27
|
+
// Decided beside the deleted span, not the caret. With no hidden run beside the cut the key
|
|
28
|
+
// stays with the browser, which handles graphemes and IME.
|
|
29
29
|
const plain = expandThroughEmptied(constructs, target);
|
|
30
30
|
const native = nativeCut(caret, direction);
|
|
31
31
|
const touchesHiddenRun = isDelimiterByte(constructs, target.start - 1) || isDelimiterByte(constructs, target.end);
|
|
32
32
|
if (!touchesHiddenRun && plain.start === native.start && plain.end === native.end)
|
|
33
33
|
return null;
|
|
34
|
-
const before = visibleText(display, query
|
|
34
|
+
const before = visibleText(display, query);
|
|
35
35
|
if (before === null)
|
|
36
36
|
return null;
|
|
37
37
|
const removed = target.atomic
|
|
38
|
-
? renderedText([target.atomic], display, CONTENT_VISIBILITY
|
|
38
|
+
? renderedText([target.atomic], display, CONTENT_VISIBILITY, {
|
|
39
|
+
grammar: query.store.reading.grammar
|
|
40
|
+
})
|
|
39
41
|
: display.slice(target.start, target.end);
|
|
40
42
|
for (const cut of [plain, widenThroughRuns(constructs, plain)]) {
|
|
41
43
|
const raw = display.slice(0, cut.start) + display.slice(cut.end);
|
|
42
|
-
const after = visibleText(raw, query
|
|
44
|
+
const after = visibleText(raw, query);
|
|
43
45
|
if (after === null || !removesExactly(before, after, removed))
|
|
44
46
|
continue;
|
|
45
47
|
// Backward lands where the cut opened; forward keeps the caret where it was, which the cut
|
|
46
48
|
// only moves when it swallowed delimiters ahead of it.
|
|
47
|
-
return {
|
|
49
|
+
return {
|
|
50
|
+
raw,
|
|
51
|
+
caret: direction === 'backward' ? cut.start : Math.min(caret, cut.start),
|
|
52
|
+
unwrappedMarks: plain.unwrappedMarks
|
|
53
|
+
};
|
|
48
54
|
}
|
|
49
55
|
return { swallow: true };
|
|
50
56
|
}
|
|
@@ -53,11 +59,8 @@ function nativeCut(caret, direction) {
|
|
|
53
59
|
? { start: caret - 1, end: caret }
|
|
54
60
|
: { start: caret, end: caret + 1 };
|
|
55
61
|
}
|
|
56
|
-
/**
|
|
57
|
-
*
|
|
58
|
-
* stepped over, an atomic run is taken whole, and the walk stops at the content range because the
|
|
59
|
-
* block's own structural bytes are not this arm's to touch.
|
|
60
|
-
*/
|
|
62
|
+
/** The first thing the user can see on `direction`'s side of the caret. The scan stops at the
|
|
63
|
+
* content range, since the block's own structural bytes are never deleted here. */
|
|
61
64
|
function deletionTarget(display, constructs, content, caret, direction) {
|
|
62
65
|
const step = direction === 'backward' ? -1 : 1;
|
|
63
66
|
for (let at = direction === 'backward' ? caret - 1 : caret; at >= content.start && at < content.end; at += step) {
|
|
@@ -69,25 +72,16 @@ function deletionTarget(display, constructs, content, caret, direction) {
|
|
|
69
72
|
}
|
|
70
73
|
return null;
|
|
71
74
|
}
|
|
72
|
-
/** The whole code point `at` belongs to. Half a surrogate pair is not a character, and this
|
|
73
|
-
*
|
|
75
|
+
/** The whole code point `at` belongs to. Half a surrogate pair is not a character, and this module
|
|
76
|
+
* handles keys beside a hidden run wherever they land, emoji included. */
|
|
74
77
|
function codePointAt(display, at) {
|
|
75
|
-
const start = isLowSurrogate(display
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
const code = display.charCodeAt(at);
|
|
80
|
-
return code >= 0xd800 && code <= 0xdbff;
|
|
78
|
+
const start = isLowSurrogate(display.charCodeAt(at)) && isHighSurrogate(display.charCodeAt(at - 1))
|
|
79
|
+
? at - 1
|
|
80
|
+
: at;
|
|
81
|
+
return { start, end: isHighSurrogate(display.charCodeAt(start)) ? start + 2 : start + 1 };
|
|
81
82
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
return code >= 0xdc00 && code <= 0xdfff;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* The second reading of a press whose plain cut does not parse back: take the delimiter runs the
|
|
88
|
-
* cut now sits between with it, the "these two constructs become one" a reader sees when the
|
|
89
|
-
* character between them goes. Verified against the SCREEN, not the structure.
|
|
90
|
-
*/
|
|
83
|
+
/** The second try when the plain cut does not parse back: also take the delimiter runs the cut sits
|
|
84
|
+
* between, so the two constructs become one as the user sees it. */
|
|
91
85
|
function widenThroughRuns(constructs, cut) {
|
|
92
86
|
let { start, end } = cut;
|
|
93
87
|
while (isDelimiterByte(constructs, start - 1))
|
|
@@ -96,14 +90,14 @@ function widenThroughRuns(constructs, cut) {
|
|
|
96
90
|
end++;
|
|
97
91
|
return { start, end };
|
|
98
92
|
}
|
|
99
|
-
/** A pair left around nothing is invisible
|
|
100
|
-
* repeatedly, since dropping the inner pair can empty its parent. */
|
|
93
|
+
/** A delimiter pair left around nothing is invisible leftovers, so a construct the cut empties
|
|
94
|
+
* goes with it, repeatedly, since dropping the inner pair can empty its parent. */
|
|
101
95
|
function expandThroughEmptied(constructs, target) {
|
|
102
|
-
const cut = { start: target.start, end: target.end };
|
|
96
|
+
const cut = { start: target.start, end: target.end, unwrappedMarks: [] };
|
|
103
97
|
let grew = true;
|
|
104
98
|
while (grew) {
|
|
105
99
|
grew = false;
|
|
106
|
-
for (const { node, content, autoUnwrapOnEmpty } of constructs) {
|
|
100
|
+
for (const { node, content, autoUnwrapOnEmpty, markable } of constructs) {
|
|
107
101
|
if (!autoUnwrapOnEmpty || !content)
|
|
108
102
|
continue;
|
|
109
103
|
if (content.start < cut.start || content.end > cut.end)
|
|
@@ -112,13 +106,15 @@ function expandThroughEmptied(constructs, target) {
|
|
|
112
106
|
continue;
|
|
113
107
|
cut.start = Math.min(cut.start, node.start);
|
|
114
108
|
cut.end = Math.max(cut.end, node.end);
|
|
109
|
+
if (markable)
|
|
110
|
+
cut.unwrappedMarks.push(node.kind);
|
|
115
111
|
grew = true;
|
|
116
112
|
}
|
|
117
113
|
}
|
|
118
114
|
return cut;
|
|
119
115
|
}
|
|
120
|
-
/** Only kinds the policy table names take part:
|
|
121
|
-
* ordinary content, which is what
|
|
116
|
+
/** Only kinds the policy table names take part: a construct with no policy has its bytes read as
|
|
117
|
+
* ordinary content, which is what the browser already treats them as. */
|
|
122
118
|
function policyConstructs(inlines) {
|
|
123
119
|
const found = [];
|
|
124
120
|
for (const node of inlineDescendants(inlines)) {
|
|
@@ -128,7 +124,8 @@ function policyConstructs(inlines) {
|
|
|
128
124
|
found.push({
|
|
129
125
|
node,
|
|
130
126
|
content: constructContentRange(node),
|
|
131
|
-
autoUnwrapOnEmpty: policy.autoUnwrapOnEmpty
|
|
127
|
+
autoUnwrapOnEmpty: policy.autoUnwrapOnEmpty,
|
|
128
|
+
markable: policy.mark !== undefined
|
|
132
129
|
});
|
|
133
130
|
}
|
|
134
131
|
return found;
|
|
@@ -141,24 +138,12 @@ function isDelimiterByte(constructs, at) {
|
|
|
141
138
|
((at >= node.start && at < content.start) || (at >= content.end && at < node.end)));
|
|
142
139
|
}
|
|
143
140
|
// ── Verification ─────────────────────────────────────────────────────────────
|
|
144
|
-
/**
|
|
145
|
-
*
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
* arrival as bytes lost; sound because the painting-chrome case returned at the door.
|
|
149
|
-
*/
|
|
150
|
-
function visibleText(raw, surface) {
|
|
151
|
-
// Cell text is never a block, so it reads as its inline content and nothing else can refuse it.
|
|
152
|
-
if (surface === 'cell')
|
|
153
|
-
return renderedText(parseInline(raw, 0, raw.length), raw, CONTENT_VISIBILITY);
|
|
154
|
-
// A cut that empties the block is the one candidate with no block to read: emptied is a shape
|
|
155
|
-
// the reload keeps, so it answers for itself rather than through the parser.
|
|
141
|
+
/** What the user sees of the bytes read back where they are stored, or null where they do not
|
|
142
|
+
* read back as one prose block: a cut can push two runs together into a fence opener. */
|
|
143
|
+
function visibleText(raw, { store }) {
|
|
144
|
+
// A cut that empties the block leaves no block to read, and empty shows nothing wherever it is.
|
|
156
145
|
if (raw === '')
|
|
157
146
|
return '';
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
const sole = soleProseReparse(raw);
|
|
161
|
-
if (sole === null)
|
|
162
|
-
return null;
|
|
163
|
-
return renderedText(sole.nodes, sole.block.raw, CONTENT_VISIBILITY);
|
|
147
|
+
const read = readBack(raw, store);
|
|
148
|
+
return read && shownOf(read, store);
|
|
164
149
|
}
|
|
@@ -1,39 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* the caret enters
|
|
4
|
-
* class
|
|
5
|
-
* (
|
|
2
|
+
* What shows an inline construct's markers in preview-inline mode: they stay hidden by CSS until
|
|
3
|
+
* the caret enters the construct's `[start, end]`, bounds included, and then the whole enclosing
|
|
4
|
+
* chain shows. Showing them only toggles a class on `data-construct-*` spans, so the DOM text
|
|
5
|
+
* never changes and raw offsets survive it (the preview-inline-affinity e2e requirement).
|
|
6
6
|
*/
|
|
7
7
|
import type { InlineNode } from '../../../core/nodes';
|
|
8
8
|
import type { NodeView } from '../../../core/node-views';
|
|
9
|
-
import type {
|
|
10
|
-
import type { LinkReferenceResolverRef } from '../../../editor-keys';
|
|
9
|
+
import type { Reading } from '../../../schema/reading';
|
|
11
10
|
/**
|
|
12
|
-
* Every
|
|
13
|
-
* first; at a boundary
|
|
11
|
+
* Every construct that can show its markers whose `[start, end]` contains `offset`, bounds
|
|
12
|
+
* included, outermost first; at a boundary two siblings share, both are collected.
|
|
14
13
|
*/
|
|
15
14
|
export declare function constructChainAtOffset(nodes: InlineNode[], offset: number): InlineNode[];
|
|
16
15
|
export interface ConstructRevealDeps {
|
|
17
16
|
get node(): NodeView;
|
|
18
|
-
get
|
|
17
|
+
get reading(): Reading;
|
|
19
18
|
getEl: () => HTMLElement | null;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
/** Cross-block selections freeze the reveal state, so a sweep anchored in revealed
|
|
23
|
-
* marker text keeps its layout. */
|
|
19
|
+
/** A cross-block selection freezes what is shown, so a drag anchored in visible marker
|
|
20
|
+
* text keeps its layout. */
|
|
24
21
|
isCrossBlock: () => boolean;
|
|
25
22
|
}
|
|
26
23
|
export interface ConstructReveal {
|
|
27
|
-
/**
|
|
28
|
-
* rebuild:
|
|
24
|
+
/** Work out the caret's chain again and set the marker classes to match. Pass `force`
|
|
25
|
+
* after a rebuild: new spans carry no class even when the chain is unchanged. */
|
|
29
26
|
update(force?: boolean): void;
|
|
30
|
-
/**
|
|
31
|
-
*
|
|
32
|
-
* against still-folded markers. Reveals the caret's chain plus `delta`'s (0 = neither). */
|
|
27
|
+
/** Show (never hide) the caret's chain plus `delta`'s on keydown: fast arrow keys outrun the
|
|
28
|
+
* `selectionchange` update and would step against markers still hidden. */
|
|
33
29
|
prepareStep(delta: -1 | 0 | 1): void;
|
|
34
|
-
/** Keydown wiring for `prepareStep
|
|
35
|
-
*
|
|
36
|
-
* this module holds no preventDefault and consumes nothing. */
|
|
30
|
+
/** Keydown wiring for `prepareStep`, holding the key names so the component carries no
|
|
31
|
+
* destructive-key literals for the interceptor scan to flag (G4.12). Consumes no event. */
|
|
37
32
|
prepareForKeydown(e: KeyboardEvent): void;
|
|
38
33
|
}
|
|
39
34
|
export declare function createConstructReveal(deps: ConstructRevealDeps): ConstructReveal;
|