@voithos-labs/aragonite 0.10.3 → 0.10.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/a11y-strings.d.ts +12 -5
- package/dist/a11y-strings.js +61 -5
- package/dist/action-contracts.d.ts +242 -155
- package/dist/action-contracts.js +2 -2
- package/dist/active-editor.d.ts +3 -3
- package/dist/active-editor.js +8 -9
- package/dist/ambient/ambient-dom.d.ts +2 -5
- package/dist/ambient/ambient-dom.js +16 -62
- package/dist/assert.js +6 -5
- package/dist/block-component.d.ts +135 -109
- package/dist/block-component.js +30 -22
- package/dist/block-id.d.ts +6 -10
- package/dist/block-id.js +25 -14
- package/dist/bounded-memo.d.ts +5 -5
- package/dist/bounded-memo.js +6 -6
- package/dist/components/BlockDragHandle.svelte +13 -20
- package/dist/components/BlockHost.svelte +56 -134
- package/dist/components/BlockList.svelte +22 -19
- package/dist/components/DecorationOverlay.svelte +9 -10
- package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
- package/dist/components/Editor.svelte +619 -1089
- package/dist/components/Editor.svelte.d.ts +9 -20
- package/dist/components/GapCaret.svelte +26 -59
- package/dist/components/SelectionOverlay.svelte +36 -67
- package/dist/components/SelectionOverlay.svelte.d.ts +6 -4
- package/dist/components/TailInsert.svelte +8 -55
- package/dist/components/TailInsert.svelte.d.ts +4 -6
- package/dist/components/block-content-selector.d.ts +11 -11
- package/dist/components/block-content-selector.js +11 -11
- package/dist/components/block-el-lookup.d.ts +6 -0
- package/dist/components/block-el-lookup.js +27 -0
- package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
- package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
- package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
- package/dist/components/blocks/code/CodeBlock.svelte +255 -276
- package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
- package/dist/components/blocks/code/CodeBlockRail.svelte +103 -100
- package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
- package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
- package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
- package/dist/components/blocks/code/code-bootstrap.js +35 -28
- package/dist/components/blocks/code/code-context-actions.js +5 -4
- package/dist/components/blocks/code/code-enter.js +2 -2
- package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
- package/dist/components/blocks/code/code-fence-boundary.js +40 -66
- package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
- package/dist/components/blocks/code/code-fence-exit.js +24 -25
- package/dist/components/blocks/code/code-indent.d.ts +2 -2
- package/dist/components/blocks/code/code-indent.js +4 -7
- package/dist/components/blocks/code/code-languages.d.ts +16 -12
- package/dist/components/blocks/code/code-languages.js +58 -32
- package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
- package/dist/components/blocks/code/code-paste-surface.js +9 -18
- package/dist/components/blocks/code/code-renderer.d.ts +21 -5
- package/dist/components/blocks/code/code-renderer.js +90 -125
- package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
- package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
- package/dist/components/blocks/directive/activate-directives.js +18 -13
- package/dist/components/blocks/editable-leaf.d.ts +50 -74
- package/dist/components/blocks/editable-leaf.js +144 -202
- package/dist/components/blocks/editable-surface.d.ts +96 -100
- package/dist/components/blocks/editable-surface.js +101 -109
- package/dist/components/blocks/list/ListBlock.svelte +46 -90
- package/dist/components/blocks/list/ListItemBlock.svelte +99 -144
- package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +3 -0
- package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
- package/dist/components/blocks/list/task-checkbox.js +12 -7
- package/dist/components/blocks/plain-text-backend.d.ts +4 -20
- package/dist/components/blocks/plain-text-backend.js +9 -43
- package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
- package/dist/components/blocks/surface-wiring.svelte.js +15 -34
- package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
- package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
- package/dist/components/blocks/table/TableBlock.svelte +100 -165
- package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
- package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
- package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
- package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
- package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
- package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
- package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
- package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
- package/dist/components/blocks/table/cell-pointer.js +49 -71
- package/dist/components/blocks/table/cell-render.d.ts +24 -29
- package/dist/components/blocks/table/cell-render.js +29 -31
- package/dist/components/blocks/table/selected-cells.d.ts +7 -7
- package/dist/components/blocks/table/selected-cells.js +9 -13
- package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
- package/dist/components/blocks/table/table-caret-at-point.js +5 -5
- package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
- package/dist/components/blocks/table/table-cell-paste.js +27 -43
- package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
- package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
- package/dist/components/blocks/table/table-menu-model.js +6 -10
- package/dist/components/blocks/table/table-navigation.js +2 -2
- package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
- package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
- package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
- package/dist/components/blocks/text/auto-pair-record.js +51 -0
- package/dist/components/blocks/text/click-snap-guard.d.ts +9 -4
- package/dist/components/blocks/text/click-snap-guard.js +16 -5
- package/dist/components/blocks/text/composition-seat.d.ts +17 -14
- package/dist/components/blocks/text/composition-seat.js +11 -11
- package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
- package/dist/components/blocks/text/construct-edge-delete.js +50 -65
- package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
- package/dist/components/blocks/text/construct-reveal.js +13 -14
- package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
- package/dist/components/blocks/text/delimiter-autopair.js +87 -103
- package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
- package/dist/components/blocks/text/edge-policy-dispatch.js +164 -180
- package/dist/components/blocks/text/edge-seat.d.ts +17 -26
- package/dist/components/blocks/text/edge-seat.js +43 -70
- package/dist/components/blocks/text/link-at-point.d.ts +9 -9
- package/dist/components/blocks/text/link-at-point.js +12 -15
- package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
- package/dist/components/blocks/text/live-join-seam.js +75 -112
- package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
- package/dist/components/blocks/text/live-selection-edit.js +32 -105
- package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
- package/dist/components/blocks/text/live-split-rebalance.js +50 -67
- package/dist/components/blocks/text/marker-completion.d.ts +7 -12
- package/dist/components/blocks/text/marker-completion.js +17 -10
- package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
- package/dist/components/blocks/text/pending-mark-insert.js +30 -49
- package/dist/components/blocks/text/screen-diff.d.ts +5 -15
- package/dist/components/blocks/text/screen-diff.js +5 -19
- package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
- package/dist/components/blocks/text/text-clipboard.js +27 -32
- package/dist/components/blocks/text/text-keydown.d.ts +20 -30
- package/dist/components/blocks/text/text-keydown.js +54 -51
- package/dist/components/blocks/text/text-render.d.ts +25 -35
- package/dist/components/blocks/text/text-render.js +82 -61
- package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
- package/dist/components/blocks/text/widget-adjacency.js +17 -17
- package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
- package/dist/components/blocks/text/widget-interaction.js +243 -208
- package/dist/components/blocks/widget-portal.d.ts +20 -29
- package/dist/components/blocks/widget-portal.js +16 -14
- package/dist/components/built-in-blocks.d.ts +3 -4
- package/dist/components/built-in-blocks.js +17 -18
- package/dist/components/drag-handle.d.ts +13 -30
- package/dist/components/drag-handle.js +25 -63
- package/dist/components/editor-built-ins.d.ts +1 -0
- package/dist/components/editor-built-ins.js +16 -0
- package/dist/components/editor-root-clipboard.d.ts +6 -6
- package/dist/components/editor-root-clipboard.js +16 -27
- package/dist/components/editor-root-document-swap.d.ts +49 -0
- package/dist/components/editor-root-document-swap.js +54 -0
- package/dist/components/editor-root-focus.d.ts +5 -4
- package/dist/components/editor-root-focus.js +51 -22
- package/dist/components/editor-root-focused-surface.d.ts +35 -0
- package/dist/components/editor-root-focused-surface.js +65 -0
- package/dist/components/editor-root-geometry.d.ts +15 -24
- package/dist/components/editor-root-geometry.js +27 -31
- package/dist/components/editor-root-gestures.d.ts +39 -0
- package/dist/components/editor-root-gestures.js +189 -0
- package/dist/components/editor-root-keydown.d.ts +10 -25
- package/dist/components/editor-root-keydown.js +19 -43
- package/dist/components/editor-root-listeners.d.ts +22 -31
- package/dist/components/editor-root-listeners.js +49 -46
- package/dist/components/editor-root-menus.d.ts +51 -0
- package/dist/components/editor-root-menus.js +147 -0
- package/dist/components/editor-root-mode-flip.d.ts +16 -11
- package/dist/components/editor-root-mode-flip.js +36 -34
- package/dist/components/editor-root-scroll-host.d.ts +22 -0
- package/dist/components/editor-root-scroll-host.js +34 -0
- package/dist/components/editor-root-test-surface.d.ts +48 -0
- package/dist/components/editor-root-test-surface.js +6 -0
- package/dist/components/image/ImageOverlayHost.svelte +44 -35
- package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
- package/dist/components/image/ImageProperties.svelte +37 -41
- package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
- package/dist/components/image/ImageResizeHandles.svelte +26 -30
- package/dist/components/image/image-crop.d.ts +5 -11
- package/dist/components/image/image-crop.js +5 -11
- package/dist/components/image/image-edit-commit.d.ts +19 -16
- package/dist/components/image/image-edit-commit.js +74 -38
- package/dist/components/image/image-resize.d.ts +2 -5
- package/dist/components/image/image-resize.js +3 -6
- package/dist/components/image/image-widget-editing.d.ts +3 -3
- package/dist/components/image/image-widget-editing.js +9 -9
- package/dist/components/image/widget-dom.d.ts +2 -3
- package/dist/components/image/widget-dom.js +19 -24
- package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
- package/dist/components/image/widget-selection-state.svelte.js +26 -19
- package/dist/components/kind-cue.svelte.d.ts +21 -0
- package/dist/components/kind-cue.svelte.js +35 -0
- package/dist/components/link-card/LinkCard.svelte +115 -64
- package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
- package/dist/components/link-card/LinkCardHost.svelte +42 -33
- package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
- package/dist/components/link-card/link-card-commit.d.ts +16 -19
- package/dist/components/link-card/link-card-commit.js +21 -30
- package/dist/components/link-card/link-card-entry.d.ts +13 -23
- package/dist/components/link-card/link-card-entry.js +16 -24
- package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
- package/dist/components/link-card/link-card-state.svelte.js +2 -2
- package/dist/components/lrd-map-gate.d.ts +4 -11
- package/dist/components/lrd-map-gate.js +5 -11
- package/dist/components/menu/BlockMenu.svelte +20 -81
- package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
- package/dist/components/menu/InlineMenuHost.svelte +191 -0
- package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
- package/dist/components/menu/MenuIcon.svelte +3 -103
- package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
- package/dist/components/menu/SelectionToolbar.svelte +380 -0
- package/dist/components/menu/SelectionToolbar.svelte.d.ts +14 -0
- package/dist/components/menu/clipboard-actions.d.ts +3 -4
- package/dist/components/menu/clipboard-actions.js +3 -4
- package/dist/components/menu/default-context-actions.d.ts +4 -13
- package/dist/components/menu/default-context-actions.js +49 -67
- package/dist/components/menu/flyout-placement.d.ts +2 -2
- package/dist/components/menu/flyout-placement.js +2 -2
- package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
- package/dist/components/menu/menu-presence.svelte.js +19 -0
- package/dist/components/paste-image-arm.d.ts +6 -11
- package/dist/components/paste-image-arm.js +11 -18
- package/dist/components/portal.d.ts +2 -5
- package/dist/components/portal.js +4 -7
- package/dist/core/directive/activate.d.ts +4 -5
- package/dist/core/directive/activate.js +8 -9
- package/dist/core/directive/container-opener.js +13 -12
- package/dist/core/directive/grammar.d.ts +2 -5
- package/dist/core/directive/grammar.js +10 -10
- package/dist/core/directive/kinds.d.ts +4 -7
- package/dist/core/directive/kinds.js +14 -16
- package/dist/core/directive/registry.d.ts +12 -9
- package/dist/core/directive/registry.js +19 -20
- package/dist/core/directive/text-recognizer.d.ts +3 -2
- package/dist/core/directive/text-recognizer.js +5 -9
- package/dist/core/escapable.d.ts +1 -5
- package/dist/core/escapable.js +1 -5
- package/dist/core/inline/backticks.d.ts +3 -4
- package/dist/core/inline/backticks.js +3 -4
- package/dist/core/inline/character-refs.js +2 -1
- package/dist/core/inline/destination-bytes.d.ts +6 -3
- package/dist/core/inline/destination-bytes.js +50 -8
- package/dist/core/inline/entity-widget.d.ts +4 -3
- package/dist/core/inline/entity-widget.js +6 -6
- package/dist/core/inline/format-toggle.d.ts +22 -28
- package/dist/core/inline/format-toggle.js +97 -129
- package/dist/core/inline/html-entities.d.ts +2 -3
- package/dist/core/inline/html-entities.js +2 -3
- package/dist/core/inline/html-tag-grammar.js +6 -2
- package/dist/core/inline/image-dimensions.d.ts +2 -0
- package/dist/core/inline/image-dimensions.js +19 -2
- package/dist/core/inline/image-source-bytes.d.ts +11 -0
- package/dist/core/inline/image-source-bytes.js +71 -0
- package/dist/core/inline/index.d.ts +28 -21
- package/dist/core/inline/index.js +56 -34
- package/dist/core/inline/inline-cache.d.ts +12 -15
- package/dist/core/inline/inline-cache.js +11 -14
- package/dist/core/inline/inline-widgets.d.ts +55 -68
- package/dist/core/inline/inline-widgets.js +55 -58
- package/dist/core/inline/link-destination.d.ts +31 -0
- package/dist/core/inline/link-destination.js +129 -0
- package/dist/core/inline/link-reference-resolver.d.ts +8 -6
- package/dist/core/inline/link-reference-resolver.js +10 -6
- package/dist/core/inline/link-source-bytes.d.ts +31 -0
- package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
- package/dist/core/inline/live-edit/read-back.d.ts +29 -0
- package/dist/core/inline/live-edit/read-back.js +50 -0
- package/dist/core/inline/picture.d.ts +10 -0
- package/dist/core/inline/picture.js +40 -0
- package/dist/core/inline/scan/autolinks.d.ts +7 -8
- package/dist/core/inline/scan/autolinks.js +80 -59
- package/dist/core/inline/scan/brackets.d.ts +2 -2
- package/dist/core/inline/scan/brackets.js +6 -103
- package/dist/core/inline/scan/code-spans.d.ts +4 -0
- package/dist/core/inline/scan/code-spans.js +8 -0
- package/dist/core/inline/scan/emphasis.js +10 -14
- package/dist/core/inline/scan/index.d.ts +3 -1
- package/dist/core/inline/scan/index.js +32 -33
- package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
- package/dist/core/inline/scan/plugin-syntax.js +75 -89
- package/dist/core/inline/scan/scan-state.d.ts +2 -0
- package/dist/core/inline/scan/scan-state.js +1 -0
- package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
- package/dist/core/inline/scan/simple-nodes.js +2 -5
- package/dist/core/inline/scan/triggers.d.ts +17 -0
- package/dist/core/inline/scan/triggers.js +26 -0
- package/dist/core/inline/scan/url.js +8 -10
- package/dist/core/inline/transparency.d.ts +2 -1
- package/dist/core/inline/transparency.js +33 -17
- package/dist/core/inline/visibility.d.ts +30 -49
- package/dist/core/inline/visibility.js +31 -49
- package/dist/core/inline/walk.d.ts +4 -10
- package/dist/core/inline/walk.js +4 -10
- package/dist/core/inline-render.d.ts +22 -27
- package/dist/core/inline-render.js +51 -60
- package/dist/core/lines.d.ts +67 -26
- package/dist/core/lines.js +164 -33
- package/dist/core/metadata-parity.d.ts +9 -0
- package/dist/core/metadata-parity.js +25 -0
- package/dist/core/node-views.d.ts +7 -6
- package/dist/core/node-views.js +5 -5
- package/dist/core/nodes.d.ts +34 -44
- package/dist/core/nodes.js +4 -12
- package/dist/core/parser.d.ts +27 -34
- package/dist/core/parser.js +53 -67
- package/dist/core/parsers/blockquote.d.ts +5 -8
- package/dist/core/parsers/blockquote.js +11 -10
- package/dist/core/parsers/built-in-openers.d.ts +2 -5
- package/dist/core/parsers/built-in-openers.js +5 -8
- package/dist/core/parsers/fence-syntax.d.ts +36 -7
- package/dist/core/parsers/fence-syntax.js +61 -11
- package/dist/core/parsers/fenced-code.d.ts +16 -0
- package/dist/core/parsers/fenced-code.js +16 -15
- package/dist/core/parsers/heading.d.ts +19 -2
- package/dist/core/parsers/heading.js +50 -2
- package/dist/core/parsers/html-block.d.ts +3 -6
- package/dist/core/parsers/html-block.js +10 -11
- package/dist/core/parsers/indented-code.d.ts +1 -1
- package/dist/core/parsers/indented-code.js +2 -8
- package/dist/core/parsers/link-reference.d.ts +5 -3
- package/dist/core/parsers/link-reference.js +116 -120
- package/dist/core/parsers/list.d.ts +12 -5
- package/dist/core/parsers/list.js +53 -36
- package/dist/core/parsers/paragraph.d.ts +3 -3
- package/dist/core/parsers/paragraph.js +14 -5
- package/dist/core/parsers/table-completion.d.ts +2 -5
- package/dist/core/parsers/table-completion.js +7 -10
- package/dist/core/parsers/table.d.ts +8 -8
- package/dist/core/parsers/table.js +23 -26
- package/dist/core/parsers/thematic-break.js +15 -14
- package/dist/core/paths.d.ts +13 -0
- package/dist/core/paths.js +31 -0
- package/dist/core/terminator-escalation.d.ts +0 -7
- package/dist/core/terminator-escalation.js +5 -8
- package/dist/core/url-policy.d.ts +2 -5
- package/dist/core/url-policy.js +8 -12
- package/dist/cursor/caret-memory.d.ts +34 -0
- package/dist/cursor/caret-memory.js +82 -0
- package/dist/cursor/coordinate-spaces.d.ts +26 -19
- package/dist/cursor/coordinate-spaces.js +32 -20
- package/dist/cursor/dom-walk.d.ts +7 -13
- package/dist/cursor/dom-walk.js +7 -13
- package/dist/cursor/edge-affinity.d.ts +7 -35
- package/dist/cursor/edge-affinity.js +13 -44
- package/dist/cursor/focused-caret.d.ts +6 -8
- package/dist/cursor/focused-caret.js +7 -16
- package/dist/cursor/height-model.d.ts +3 -3
- package/dist/cursor/height-model.js +5 -5
- package/dist/cursor/height-oracle.d.ts +10 -7
- package/dist/cursor/height-oracle.js +26 -75
- package/dist/cursor/observe-resize.d.ts +13 -0
- package/dist/cursor/observe-resize.js +43 -0
- package/dist/cursor/overlay-rects.d.ts +2 -5
- package/dist/cursor/overlay-rects.js +2 -5
- package/dist/cursor/overlay-remeasure.d.ts +6 -7
- package/dist/cursor/overlay-remeasure.js +10 -14
- package/dist/cursor/pending-marks.d.ts +7 -9
- package/dist/cursor/pending-marks.js +6 -27
- package/dist/cursor/point-offset.d.ts +16 -10
- package/dist/cursor/point-offset.js +60 -25
- package/dist/cursor/reveal-source.d.ts +7 -11
- package/dist/cursor/reveal-source.js +10 -18
- package/dist/cursor/scroll-ancestors.d.ts +9 -20
- package/dist/cursor/scroll-ancestors.js +14 -26
- package/dist/cursor/scroll-owner.d.ts +92 -0
- package/dist/cursor/scroll-owner.js +283 -0
- package/dist/cursor/scrollport.d.ts +16 -8
- package/dist/cursor/scrollport.js +28 -5
- package/dist/cursor/sticky-column.d.ts +6 -29
- package/dist/cursor/sticky-column.js +6 -49
- package/dist/cursor/sticky-measure.d.ts +14 -9
- package/dist/cursor/sticky-measure.js +99 -49
- package/dist/cursor/surface-backend.d.ts +41 -0
- package/dist/cursor/surface-backend.js +78 -0
- package/dist/cursor/typography-estimates.d.ts +3 -3
- package/dist/cursor/typography-estimates.js +3 -3
- package/dist/cursor/visual-lines.d.ts +25 -13
- package/dist/cursor/visual-lines.js +72 -28
- package/dist/cursor/widget-edge-snap.d.ts +23 -0
- package/dist/cursor/widget-edge-snap.js +39 -0
- package/dist/cursor/widget-offset.d.ts +111 -102
- package/dist/cursor/widget-offset.js +352 -177
- package/dist/debug/diagnostics-report.d.ts +6 -6
- package/dist/debug/diagnostics-report.js +5 -5
- package/dist/debug/dump-tree.js +2 -2
- package/dist/debug/editor-diagnostics.d.ts +15 -0
- package/dist/debug/editor-diagnostics.js +33 -0
- package/dist/debug/inspect.d.ts +2 -2
- package/dist/debug/inspect.js +4 -4
- package/dist/debug/interaction-trace.d.ts +14 -15
- package/dist/debug/interaction-trace.js +19 -20
- package/dist/debug/operations-log.d.ts +1 -1
- package/dist/debug/operations-log.js +1 -1
- package/dist/decorations/buckets.d.ts +6 -12
- package/dist/decorations/buckets.js +4 -11
- package/dist/decorations/decoration-state.svelte.d.ts +2 -3
- package/dist/decorations/decoration-state.svelte.js +24 -26
- package/dist/decorations/island-dom.d.ts +10 -18
- package/dist/decorations/island-dom.js +25 -50
- package/dist/decorations/reserved-attrs.d.ts +6 -8
- package/dist/decorations/reserved-attrs.js +31 -17
- package/dist/decorations/types.d.ts +6 -7
- package/dist/decorations/types.js +2 -1
- package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
- package/dist/decorations/use-block-decorations.svelte.js +71 -0
- package/dist/decorations/widget-dom.d.ts +3 -3
- package/dist/decorations/widget-dom.js +5 -5
- package/dist/dev-warn.d.ts +5 -2
- package/dist/dev-warn.js +16 -4
- package/dist/editor-actions/ancestry-folds.d.ts +9 -14
- package/dist/editor-actions/ancestry-folds.js +13 -18
- package/dist/editor-actions/block-edit-core.d.ts +49 -22
- package/dist/editor-actions/block-edit-core.js +279 -151
- package/dist/editor-actions/block-edit-scope.d.ts +63 -50
- package/dist/editor-actions/block-edit-scope.js +100 -48
- package/dist/editor-actions/block-edit.d.ts +2 -3
- package/dist/editor-actions/block-edit.js +14 -90
- package/dist/editor-actions/commit/history.d.ts +4 -4
- package/dist/editor-actions/commit/history.js +33 -34
- package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
- package/dist/editor-actions/commit/reading-write-gate.js +56 -0
- package/dist/editor-actions/commit/text-batch.d.ts +7 -11
- package/dist/editor-actions/commit/text-batch.js +6 -7
- package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
- package/dist/editor-actions/commit/undo-controller.js +346 -216
- package/dist/editor-actions/container-block-component.d.ts +32 -51
- package/dist/editor-actions/container-block-component.js +66 -92
- package/dist/editor-actions/container-edit.d.ts +4 -2
- package/dist/editor-actions/container-edit.js +14 -44
- package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
- package/dist/editor-actions/container-exit-overrides.js +19 -21
- package/dist/editor-actions/deps.d.ts +25 -32
- package/dist/editor-actions/enter-completion.d.ts +12 -15
- package/dist/editor-actions/enter-completion.js +49 -51
- package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
- package/dist/editor-actions/focus/focus-dispatch.js +33 -52
- package/dist/editor-actions/focus/focus-landing.d.ts +11 -5
- package/dist/editor-actions/focus/focus-landing.js +29 -14
- package/dist/editor-actions/focus/focus.d.ts +3 -2
- package/dist/editor-actions/focus/focus.js +42 -59
- package/dist/editor-actions/index.d.ts +4 -3
- package/dist/editor-actions/index.js +5 -4
- package/dist/editor-actions/inline-range-commit.d.ts +18 -16
- package/dist/editor-actions/inline-range-commit.js +45 -54
- package/dist/editor-actions/leaf-write.d.ts +11 -0
- package/dist/editor-actions/leaf-write.js +102 -0
- package/dist/editor-actions/list-context.d.ts +9 -10
- package/dist/editor-actions/list-context.js +115 -110
- package/dist/editor-actions/list-overrides.d.ts +13 -5
- package/dist/editor-actions/list-overrides.js +36 -12
- package/dist/editor-actions/merge-fallback.d.ts +10 -16
- package/dist/editor-actions/merge-fallback.js +11 -22
- package/dist/editor-actions/nested/container-actions.d.ts +37 -0
- package/dist/editor-actions/nested/container-actions.js +42 -0
- package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
- package/dist/editor-actions/nested/emptied-container.js +5 -0
- package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
- package/dist/editor-actions/nested/nested-actions.js +17 -15
- package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
- package/dist/editor-actions/nested/nested-block-edit.js +40 -134
- package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
- package/dist/editor-actions/nested/nested-focus.js +33 -21
- package/dist/editor-actions/paste-coordinator.d.ts +3 -2
- package/dist/editor-actions/paste-coordinator.js +17 -13
- package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
- package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
- package/dist/editor-actions/plugin/container.d.ts +55 -76
- package/dist/editor-actions/plugin/container.js +105 -186
- package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
- package/dist/editor-actions/plugin/directive-container.js +7 -8
- package/dist/editor-actions/reorder-action.d.ts +7 -12
- package/dist/editor-actions/reorder-action.js +32 -48
- package/dist/editor-actions/reorder-drag.d.ts +12 -8
- package/dist/editor-actions/reorder-drag.js +45 -41
- package/dist/editor-actions/replacement-focus.d.ts +13 -21
- package/dist/editor-actions/replacement-focus.js +32 -33
- package/dist/editor-actions/search-replace.js +71 -67
- package/dist/editor-actions/stored-caret.d.ts +7 -0
- package/dist/editor-actions/stored-caret.js +10 -0
- package/dist/editor-actions/table-context.d.ts +9 -11
- package/dist/editor-actions/table-context.js +70 -93
- package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
- package/dist/editor-actions/unwrap-strategies.js +52 -63
- package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
- package/dist/editor-actions/whole-block-focus-surface.js +43 -53
- package/dist/editor-events.d.ts +25 -29
- package/dist/editor-events.js +17 -28
- package/dist/editor-keys.d.ts +96 -104
- package/dist/editor-keys.js +11 -24
- package/dist/editor-props.d.ts +91 -71
- package/dist/editor-rects.d.ts +23 -34
- package/dist/editor-rects.js +9 -77
- package/dist/env.d.ts +6 -4
- package/dist/env.js +8 -4
- package/dist/index.d.ts +6 -2
- package/dist/index.js +5 -2
- package/dist/inline-menu/inline-menu-session.d.ts +37 -0
- package/dist/inline-menu/inline-menu-session.js +98 -0
- package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
- package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
- package/dist/inline-menu/types.d.ts +77 -0
- package/dist/inline-menu/types.js +7 -0
- package/dist/invariants/child-id-parity.d.ts +23 -0
- package/dist/invariants/child-id-parity.js +39 -0
- package/dist/invariants/commit-paths.d.ts +4 -4
- package/dist/invariants/commit-paths.js +4 -4
- package/dist/invariants/commit-scope.d.ts +4 -4
- package/dist/invariants/commit-scope.js +9 -8
- package/dist/invariants/context-keys.d.ts +2 -5
- package/dist/invariants/context-keys.js +3 -6
- package/dist/invariants/descriptor.d.ts +2 -6
- package/dist/invariants/descriptor.js +2 -6
- package/dist/invariants/inline-transitions.d.ts +9 -16
- package/dist/invariants/inline-transitions.js +10 -18
- package/dist/invariants/install.d.ts +18 -27
- package/dist/invariants/install.js +29 -30
- package/dist/invariants/keeps-a-block.d.ts +7 -0
- package/dist/invariants/keeps-a-block.js +14 -0
- package/dist/invariants/landable-caret.d.ts +5 -7
- package/dist/invariants/landable-caret.js +8 -11
- package/dist/invariants/landing-focus-scroll.d.ts +7 -0
- package/dist/invariants/landing-focus-scroll.js +13 -0
- package/dist/invariants/landing-value.d.ts +13 -0
- package/dist/invariants/landing-value.js +27 -0
- package/dist/invariants/marker-css-parity.d.ts +5 -6
- package/dist/invariants/marker-css-parity.js +11 -12
- package/dist/invariants/measures-in-own-list.d.ts +6 -0
- package/dist/invariants/measures-in-own-list.js +13 -0
- package/dist/invariants/node-shape.d.ts +18 -37
- package/dist/invariants/node-shape.js +123 -79
- package/dist/invariants/open-tail.d.ts +7 -0
- package/dist/invariants/open-tail.js +45 -0
- package/dist/invariants/placement-ends-widget.d.ts +8 -0
- package/dist/invariants/placement-ends-widget.js +13 -0
- package/dist/invariants/registry.d.ts +27 -66
- package/dist/invariants/registry.js +61 -137
- package/dist/invariants/render-fidelity.d.ts +4 -4
- package/dist/invariants/render-fidelity.js +5 -5
- package/dist/invariants/selection-endpoints.d.ts +6 -7
- package/dist/invariants/selection-endpoints.js +18 -16
- package/dist/invariants/single-node-sink.d.ts +4 -5
- package/dist/invariants/single-node-sink.js +4 -5
- package/dist/invariants/snapshot-integrity.d.ts +5 -6
- package/dist/invariants/snapshot-integrity.js +1 -1
- package/dist/invariants/structural-descriptor.d.ts +6 -15
- package/dist/invariants/structural-descriptor.js +6 -15
- package/dist/menu-icons.d.ts +47 -0
- package/dist/menu-icons.js +113 -0
- package/dist/perf/instruments.d.ts +20 -5
- package/dist/perf/instruments.js +35 -15
- package/dist/perf/use-mount-gauge.svelte.js +4 -4
- package/dist/plugin.d.ts +38 -8
- package/dist/plugin.js +102 -74
- package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
- package/dist/plugins/admonitions/admonition-kind.js +12 -10
- package/dist/plugins/admonitions/convert-document.d.ts +5 -5
- package/dist/plugins/admonitions/convert-document.js +8 -7
- package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
- package/dist/plugins/admonitions/gh-alert.js +21 -22
- package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
- package/dist/plugins/admonitions/github-alert-kind.js +28 -37
- package/dist/plugins/admonitions/index.js +2 -2
- package/dist/plugins/admonitions/kinds.d.ts +1 -1
- package/dist/plugins/admonitions/register.js +11 -2
- package/dist/plugins/details/DetailsBlock.svelte +20 -20
- package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
- package/dist/plugins/details/details-disclosure.svelte.js +6 -7
- package/dist/plugins/details/details-kind.d.ts +6 -7
- package/dist/plugins/details/details-kind.js +44 -59
- package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
- package/dist/plugins/emoji/emoji-recognizer.js +7 -14
- package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
- package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
- package/dist/plugins/footnotes/constants.d.ts +2 -0
- package/dist/plugins/footnotes/constants.js +3 -0
- package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
- package/dist/plugins/footnotes/footnote-definition.js +69 -45
- package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
- package/dist/plugins/footnotes/footnote-lookup.js +14 -26
- package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
- package/dist/plugins/footnotes/footnote-numbering.js +22 -31
- package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
- package/dist/plugins/footnotes/footnote-reference.js +8 -13
- package/dist/plugins/footnotes/index.js +2 -3
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
- package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
- package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
- package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
- package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
- package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
- package/dist/plugins/highlight-occurrences/word-char.js +4 -0
- package/dist/plugins/latex/BlockMath.svelte +58 -75
- package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
- package/dist/plugins/latex/MathInline.svelte +10 -9
- package/dist/plugins/latex/flanking.d.ts +1 -0
- package/dist/plugins/latex/flanking.js +3 -0
- package/dist/plugins/latex/index.d.ts +1 -1
- package/dist/plugins/latex/latex-kind.d.ts +4 -4
- package/dist/plugins/latex/latex-kind.js +113 -85
- package/dist/plugins/latex/math-completion.d.ts +1 -1
- package/dist/plugins/latex/math-completion.js +5 -8
- package/dist/plugins/latex/math-layout.d.ts +2 -8
- package/dist/plugins/latex/math-layout.js +0 -9
- package/dist/plugins/latex/math-renderer.d.ts +17 -20
- package/dist/plugins/latex/math-renderer.js +21 -38
- package/dist/plugins/latex/math-source.d.ts +4 -8
- package/dist/plugins/latex/math-source.js +36 -75
- package/dist/plugins/latex/register.d.ts +10 -11
- package/dist/plugins/latex/register.js +24 -10
- package/dist/plugins/latex/renderer.d.ts +9 -10
- package/dist/plugins/latex/renderer.js +9 -24
- package/dist/plugins/mermaid/MermaidBlock.svelte +63 -47
- package/dist/plugins/mermaid/index.js +1 -1
- package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
- package/dist/plugins/mermaid/mermaid-kind.js +30 -47
- package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
- package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
- package/dist/plugins/mermaid/register.d.ts +3 -3
- package/dist/plugins/mermaid/register.js +5 -5
- package/dist/plugins/mermaid/renderer.d.ts +5 -5
- package/dist/plugins/mermaid/renderer.js +8 -11
- package/dist/plugins/parrot/ParrotBlock.svelte +18 -7
- package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
- package/dist/plugins/parrot/parrot-plugin.js +3 -3
- package/dist/plugins/slash-commands/filter.d.ts +23 -0
- package/dist/plugins/slash-commands/filter.js +31 -0
- package/dist/plugins/slash-commands/index.d.ts +2 -0
- package/dist/plugins/slash-commands/index.js +2 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
- package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
- package/dist/plugins/slash-commands/slash-source.js +108 -0
- package/dist/plugins/toc/TocBlock.svelte +23 -22
- package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
- package/dist/plugins/toc/heading-outline.d.ts +7 -12
- package/dist/plugins/toc/heading-outline.js +22 -36
- package/dist/plugins/toc/navigation-queue.d.ts +2 -4
- package/dist/plugins/toc/toc-plugin.d.ts +5 -5
- package/dist/plugins/toc/toc-plugin.js +20 -13
- package/dist/presentation-mode.d.ts +15 -23
- package/dist/presentation-mode.js +19 -25
- package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
- package/dist/reactivity/block-list-state.svelte.js +8 -9
- package/dist/reactivity/block-window.svelte.d.ts +12 -6
- package/dist/reactivity/block-window.svelte.js +44 -17
- package/dist/reactivity/child-list.d.ts +34 -0
- package/dist/reactivity/child-list.js +48 -0
- package/dist/reactivity/content-version.svelte.d.ts +4 -7
- package/dist/reactivity/content-version.svelte.js +3 -5
- package/dist/reactivity/hold-across.d.ts +39 -0
- package/dist/reactivity/hold-across.js +57 -0
- package/dist/reactivity/layout-state.svelte.d.ts +27 -0
- package/dist/reactivity/layout-state.svelte.js +51 -0
- package/dist/reactivity/list-tree.d.ts +39 -0
- package/dist/reactivity/list-tree.js +132 -0
- package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
- package/dist/reactivity/list-windowing.svelte.js +143 -292
- package/dist/reactivity/measure-batch.d.ts +6 -8
- package/dist/reactivity/measure-batch.js +5 -6
- package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
- package/dist/reactivity/publish-ref.svelte.js +21 -85
- package/dist/reactivity/scope-geometry.d.ts +6 -13
- package/dist/reactivity/scope-geometry.js +7 -14
- package/dist/reactivity/state-registry.d.ts +5 -5
- package/dist/reactivity/state-registry.js +11 -15
- package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
- package/dist/reactivity/use-container-windowing.svelte.js +64 -74
- package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
- package/dist/reactivity/use-measured-child.svelte.js +41 -0
- package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
- package/dist/reactivity/use-window-floor.svelte.js +27 -0
- package/dist/reactivity/window-slice.d.ts +4 -4
- package/dist/reactivity/window-slice.js +0 -2
- package/dist/renderer-slot.d.ts +48 -0
- package/dist/renderer-slot.js +85 -0
- package/dist/scan-index.d.ts +4 -4
- package/dist/scan-index.js +4 -4
- package/dist/schema/block-commands.d.ts +69 -54
- package/dist/schema/block-commands.js +91 -104
- package/dist/schema/block-completions.d.ts +16 -19
- package/dist/schema/block-completions.js +25 -32
- package/dist/schema/block-component-registry.d.ts +13 -14
- package/dist/schema/block-component-registry.js +19 -17
- package/dist/schema/block-kind-descriptor.d.ts +234 -168
- package/dist/schema/block-kind-descriptor.js +151 -66
- package/dist/schema/block-openers.d.ts +48 -39
- package/dist/schema/block-openers.js +73 -83
- package/dist/schema/built-in-descriptors.d.ts +3 -5
- package/dist/schema/built-in-descriptors.js +96 -80
- package/dist/schema/child-spans.d.ts +12 -10
- package/dist/schema/child-spans.js +68 -34
- package/dist/schema/closure.d.ts +18 -16
- package/dist/schema/closure.js +24 -14
- package/dist/schema/command-id.d.ts +6 -8
- package/dist/schema/command-id.js +20 -25
- package/dist/schema/commands.d.ts +79 -81
- package/dist/schema/commands.js +156 -116
- package/dist/schema/container-raw.d.ts +51 -11
- package/dist/schema/container-raw.js +143 -14
- package/dist/schema/container-rebuilders.d.ts +17 -15
- package/dist/schema/container-rebuilders.js +30 -22
- package/dist/schema/context-actions.d.ts +25 -13
- package/dist/schema/context-actions.js +32 -17
- package/dist/schema/define-plugin-block.d.ts +8 -6
- package/dist/schema/define-plugin-block.js +6 -4
- package/dist/schema/fenced-code-raw.d.ts +30 -17
- package/dist/schema/fenced-code-raw.js +155 -107
- package/dist/schema/global-commands.d.ts +6 -6
- package/dist/schema/global-commands.js +14 -22
- package/dist/schema/height-estimates.d.ts +31 -0
- package/dist/schema/height-estimates.js +64 -0
- package/dist/schema/inline-construct-policy.d.ts +42 -55
- package/dist/schema/inline-construct-policy.js +36 -35
- package/dist/schema/insert-catalogue.d.ts +30 -0
- package/dist/schema/insert-catalogue.js +95 -0
- package/dist/schema/keybinding-overrides.d.ts +9 -11
- package/dist/schema/keybinding-overrides.js +1 -1
- package/dist/schema/keybindings.d.ts +15 -7
- package/dist/schema/keybindings.js +21 -9
- package/dist/schema/merge-rules.d.ts +5 -7
- package/dist/schema/merge-rules.js +7 -9
- package/dist/schema/opener-priorities.d.ts +4 -4
- package/dist/schema/opener-priorities.js +4 -4
- package/dist/schema/operations.d.ts +9 -11
- package/dist/schema/operations.js +3 -3
- package/dist/schema/page-role.d.ts +14 -0
- package/dist/schema/page-role.js +19 -0
- package/dist/schema/plugin-activation.d.ts +4 -6
- package/dist/schema/plugin-activation.js +12 -10
- package/dist/schema/plugin-editor-context.d.ts +25 -10
- package/dist/schema/plugin-editor-context.js +40 -9
- package/dist/schema/plugin-install.d.ts +49 -17
- package/dist/schema/plugin-install.js +51 -25
- package/dist/schema/plugin-kind.d.ts +12 -8
- package/dist/schema/plugin-kind.js +35 -42
- package/dist/schema/plugin-name.js +3 -3
- package/dist/schema/plugin-registry.d.ts +54 -0
- package/dist/schema/plugin-registry.js +70 -0
- package/dist/schema/reading.d.ts +23 -0
- package/dist/schema/reading.js +7 -0
- package/dist/schema/register-once.d.ts +3 -5
- package/dist/schema/register-once.js +7 -16
- package/dist/schema/registration-checks.d.ts +12 -16
- package/dist/schema/registration-checks.js +35 -51
- package/dist/schema/registration-pairs.d.ts +54 -0
- package/dist/schema/registration-pairs.js +48 -0
- package/dist/schema/registration-pending.d.ts +8 -12
- package/dist/schema/registration-pending.js +9 -9
- package/dist/schema/registry-reset.d.ts +8 -4
- package/dist/schema/registry-reset.js +13 -26
- package/dist/schema/registry-view.d.ts +25 -13
- package/dist/schema/registry-view.js +26 -20
- package/dist/schema/reserved-chords.d.ts +9 -10
- package/dist/schema/reserved-chords.js +73 -78
- package/dist/schema/reserved-chrome.d.ts +12 -11
- package/dist/schema/reserved-chrome.js +15 -11
- package/dist/schema/setext-raw.d.ts +13 -0
- package/dist/schema/setext-raw.js +33 -0
- package/dist/schema/stored-as.d.ts +20 -0
- package/dist/schema/stored-as.js +6 -0
- package/dist/schema/table-cell-raw.d.ts +18 -7
- package/dist/schema/table-cell-raw.js +28 -7
- package/dist/schema/whole-block-unit.d.ts +5 -4
- package/dist/schema/whole-block-unit.js +5 -4
- package/dist/search/document-scan.d.ts +3 -3
- package/dist/search/document-scan.js +2 -2
- package/dist/search/matcher.d.ts +1 -1
- package/dist/search/regex-executor.d.ts +5 -6
- package/dist/search/regex-executor.js +6 -8
- package/dist/search/replace.d.ts +2 -5
- package/dist/search/replace.js +2 -5
- package/dist/search/search-state.svelte.d.ts +5 -5
- package/dist/search/search-state.svelte.js +12 -16
- package/dist/selection/autoscroll.d.ts +6 -9
- package/dist/selection/block-hit-test.d.ts +16 -24
- package/dist/selection/block-hit-test.js +29 -22
- package/dist/selection/caret-doors.d.ts +15 -14
- package/dist/selection/caret-doors.js +37 -26
- package/dist/selection/caret-landing.d.ts +62 -0
- package/dist/selection/caret-landing.js +157 -0
- package/dist/selection/caret-restore.d.ts +17 -10
- package/dist/selection/caret-restore.js +10 -22
- package/dist/selection/caret-target.d.ts +30 -0
- package/dist/selection/caret-target.js +84 -0
- package/dist/selection/char-endpoint-snap.d.ts +6 -10
- package/dist/selection/char-endpoint-snap.js +8 -14
- package/dist/selection/clipboard-text.d.ts +5 -12
- package/dist/selection/clipboard-text.js +69 -172
- package/dist/selection/covered-block.d.ts +6 -8
- package/dist/selection/covered-block.js +8 -19
- package/dist/selection/cross-block/clipboard.d.ts +3 -2
- package/dist/selection/cross-block/clipboard.js +13 -4
- package/dist/selection/cross-block/dispatch.d.ts +47 -43
- package/dist/selection/cross-block/dispatch.js +12 -23
- package/dist/selection/cross-block/format-range.d.ts +18 -21
- package/dist/selection/cross-block/format-range.js +104 -103
- package/dist/selection/cross-block/format-toggle.d.ts +10 -15
- package/dist/selection/cross-block/format-toggle.js +28 -33
- package/dist/selection/cross-block/keydown.d.ts +4 -4
- package/dist/selection/cross-block/keydown.js +93 -152
- package/dist/selection/cross-block/ops.d.ts +19 -34
- package/dist/selection/cross-block/ops.js +110 -95
- package/dist/selection/cross-block/paste.d.ts +2 -3
- package/dist/selection/cross-block/paste.js +61 -104
- package/dist/selection/cross-block/pointer.d.ts +17 -15
- package/dist/selection/cross-block/pointer.js +74 -25
- package/dist/selection/cross-block/type-replace.d.ts +4 -6
- package/dist/selection/cross-block/type-replace.js +53 -146
- package/dist/selection/dead-space-caret.d.ts +20 -28
- package/dist/selection/dead-space-caret.js +79 -87
- package/dist/selection/drag-pointer.d.ts +22 -5
- package/dist/selection/drag-pointer.js +63 -31
- package/dist/selection/gap-caret.d.ts +17 -28
- package/dist/selection/gap-caret.js +14 -26
- package/dist/selection/grid-selection.d.ts +12 -0
- package/dist/selection/grid-selection.js +22 -0
- package/dist/selection/keyboard-extend.d.ts +27 -39
- package/dist/selection/keyboard-extend.js +94 -116
- package/dist/selection/multi-click.d.ts +37 -0
- package/dist/selection/multi-click.js +197 -0
- package/dist/selection/native-bridge.d.ts +30 -37
- package/dist/selection/native-bridge.js +80 -100
- package/dist/selection/nearest-block.d.ts +17 -12
- package/dist/selection/nearest-block.js +37 -18
- package/dist/selection/path-lookup.d.ts +31 -14
- package/dist/selection/path-lookup.js +110 -20
- package/dist/selection/path-math.d.ts +9 -11
- package/dist/selection/path-math.js +5 -7
- package/dist/selection/pointer-gesture.d.ts +9 -0
- package/dist/selection/pointer-gesture.js +11 -0
- package/dist/selection/pointer-session.d.ts +10 -16
- package/dist/selection/pointer-session.js +6 -7
- package/dist/selection/primitives.d.ts +64 -33
- package/dist/selection/primitives.js +61 -53
- package/dist/selection/range-coverage.d.ts +94 -0
- package/dist/selection/range-coverage.js +365 -0
- package/dist/selection/range-delete-ceremony.d.ts +28 -74
- package/dist/selection/range-delete-ceremony.js +100 -141
- package/dist/selection/range-delete-chrome.d.ts +20 -33
- package/dist/selection/range-delete-chrome.js +53 -78
- package/dist/selection/range-delete-table-coverage.d.ts +11 -25
- package/dist/selection/range-delete-table-coverage.js +42 -112
- package/dist/selection/range-delete-table.d.ts +14 -12
- package/dist/selection/range-delete-table.js +106 -310
- package/dist/selection/range-delete.d.ts +18 -19
- package/dist/selection/range-delete.js +83 -123
- package/dist/selection/round-trip-restore.d.ts +18 -0
- package/dist/selection/round-trip-restore.js +19 -0
- package/dist/selection/selection-announcer.d.ts +17 -0
- package/dist/selection/selection-announcer.js +25 -0
- package/dist/selection/selection-description.d.ts +4 -3
- package/dist/selection/selection-description.js +5 -4
- package/dist/selection/selection-drop.d.ts +52 -0
- package/dist/selection/selection-drop.js +317 -0
- package/dist/selection/selection-restore.d.ts +20 -33
- package/dist/selection/selection-restore.js +21 -44
- package/dist/selection/selection-state.svelte.d.ts +50 -42
- package/dist/selection/selection-state.svelte.js +144 -98
- package/dist/selection/shared-keydown.d.ts +22 -27
- package/dist/selection/shared-keydown.js +25 -45
- package/dist/selection/table-endpoint-snap.d.ts +17 -41
- package/dist/selection/table-endpoint-snap.js +54 -80
- package/dist/selection/table-rect-extend.d.ts +3 -6
- package/dist/selection/table-rect-extend.js +19 -14
- package/dist/styles/editor-theme.css +75 -53
- package/dist/styles/editor.css +248 -139
- package/dist/testing/conformance-core.d.ts +50 -18
- package/dist/testing/conformance-core.js +88 -50
- package/dist/testing/container-conformance.d.ts +48 -84
- package/dist/testing/container-conformance.js +159 -285
- package/dist/testing/headless-actions.d.ts +34 -19
- package/dist/testing/headless-actions.js +116 -65
- package/dist/testing/headless-block-list.svelte.d.ts +16 -0
- package/dist/testing/headless-block-list.svelte.js +22 -0
- package/dist/testing/inline-conformance.d.ts +15 -22
- package/dist/testing/inline-conformance.js +131 -148
- package/dist/testing/kind-conformance.d.ts +19 -24
- package/dist/testing/kind-conformance.js +204 -117
- package/dist/testing/kit-reading.d.ts +7 -0
- package/dist/testing/kit-reading.js +16 -0
- package/dist/testing/mount-dom-stubs.d.ts +4 -5
- package/dist/testing/mount-dom-stubs.js +8 -5
- package/dist/testing/parse-convergence.d.ts +10 -10
- package/dist/testing/parse-convergence.js +14 -49
- package/dist/testing.d.ts +13 -9
- package/dist/testing.js +28 -38
- package/dist/tree-operations/blockquote.d.ts +8 -14
- package/dist/tree-operations/blockquote.js +25 -45
- package/dist/tree-operations/chain-rebuild.d.ts +34 -25
- package/dist/tree-operations/chain-rebuild.js +115 -52
- package/dist/tree-operations/children.d.ts +5 -9
- package/dist/tree-operations/children.js +7 -11
- package/dist/tree-operations/cleanup.d.ts +6 -7
- package/dist/tree-operations/cleanup.js +14 -11
- package/dist/tree-operations/clone.js +5 -4
- package/dist/tree-operations/container-lift.d.ts +10 -5
- package/dist/tree-operations/container-lift.js +20 -14
- package/dist/tree-operations/container-offsets.d.ts +22 -0
- package/dist/tree-operations/container-offsets.js +89 -0
- package/dist/tree-operations/content-write.d.ts +52 -29
- package/dist/tree-operations/content-write.js +155 -110
- package/dist/tree-operations/index.d.ts +4 -4
- package/dist/tree-operations/index.js +4 -4
- package/dist/tree-operations/keep-one-block.d.ts +10 -0
- package/dist/tree-operations/keep-one-block.js +19 -0
- package/dist/tree-operations/leaf-range.d.ts +33 -0
- package/dist/tree-operations/leaf-range.js +67 -0
- package/dist/tree-operations/list/empty-check.d.ts +2 -3
- package/dist/tree-operations/list/empty-check.js +4 -4
- package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
- package/dist/tree-operations/list/exit-replacement.js +4 -9
- package/dist/tree-operations/list/item-partition.d.ts +2 -2
- package/dist/tree-operations/list/item-partition.js +2 -2
- package/dist/tree-operations/list/list-builders.d.ts +18 -16
- package/dist/tree-operations/list/list-builders.js +59 -30
- package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
- package/dist/tree-operations/list/ordered-markers.js +7 -16
- package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
- package/dist/tree-operations/list/reconcile-task.js +80 -23
- package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
- package/dist/tree-operations/list/sublist-separator.js +20 -27
- package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
- package/dist/tree-operations/list/task-paragraph.js +54 -0
- package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
- package/dist/tree-operations/list/unwrap-merge.js +44 -79
- package/dist/tree-operations/node-ops.d.ts +30 -52
- package/dist/tree-operations/node-ops.js +152 -218
- package/dist/tree-operations/node-primitives.d.ts +44 -31
- package/dist/tree-operations/node-primitives.js +84 -60
- package/dist/tree-operations/open-tail.d.ts +25 -0
- package/dist/tree-operations/open-tail.js +100 -0
- package/dist/tree-operations/parse-block.d.ts +15 -2
- package/dist/tree-operations/parse-block.js +19 -4
- package/dist/tree-operations/paste/apply.d.ts +7 -8
- package/dist/tree-operations/paste/apply.js +33 -63
- package/dist/tree-operations/paste/body-write.d.ts +8 -6
- package/dist/tree-operations/paste/body-write.js +13 -14
- package/dist/tree-operations/paste/container-match.d.ts +7 -10
- package/dist/tree-operations/paste/container-match.js +76 -58
- package/dist/tree-operations/paste/container-paste.d.ts +3 -3
- package/dist/tree-operations/paste/container-paste.js +3 -3
- package/dist/tree-operations/paste/dispatch.d.ts +26 -29
- package/dist/tree-operations/paste/dispatch.js +68 -53
- package/dist/tree-operations/paste/focus-target.d.ts +11 -14
- package/dist/tree-operations/paste/focus-target.js +13 -18
- package/dist/tree-operations/paste/hooks.d.ts +7 -12
- package/dist/tree-operations/paste/hooks.js +49 -46
- package/dist/tree-operations/paste/line-ending.d.ts +11 -0
- package/dist/tree-operations/paste/line-ending.js +32 -0
- package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
- package/dist/tree-operations/paste/list-absorb.js +17 -19
- package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
- package/dist/tree-operations/paste/list-break-out.js +24 -32
- package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
- package/dist/tree-operations/paste/parent-scope.js +9 -16
- package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
- package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
- package/dist/tree-operations/paste/paste-replacement.js +73 -42
- package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
- package/dist/tree-operations/paste/paste-transforms.js +18 -27
- package/dist/tree-operations/paste/replacement-parse.d.ts +19 -0
- package/dist/tree-operations/paste/replacement-parse.js +24 -0
- package/dist/tree-operations/paste/strategy.d.ts +1 -1
- package/dist/tree-operations/paste/strategy.js +1 -1
- package/dist/tree-operations/paste/table-slice.js +15 -10
- package/dist/tree-operations/paste-surfaces.d.ts +18 -29
- package/dist/tree-operations/paste-surfaces.js +14 -10
- package/dist/tree-operations/path-mutate.d.ts +7 -8
- package/dist/tree-operations/path-mutate.js +4 -4
- package/dist/tree-operations/reorder-unit.d.ts +4 -5
- package/dist/tree-operations/reorder-unit.js +5 -6
- package/dist/tree-operations/reorder.d.ts +7 -9
- package/dist/tree-operations/reorder.js +39 -40
- package/dist/tree-operations/settle.d.ts +42 -53
- package/dist/tree-operations/settle.js +241 -162
- package/dist/tree-operations/sharing.d.ts +5 -5
- package/dist/tree-operations/splice-many.d.ts +5 -5
- package/dist/tree-operations/splice-many.js +5 -5
- package/dist/tree-operations/stored-as.d.ts +13 -0
- package/dist/tree-operations/stored-as.js +48 -0
- package/dist/tree-operations/structural-change.d.ts +11 -15
- package/dist/tree-operations/structural-change.js +10 -14
- package/dist/tree-operations/structural-suffix.d.ts +22 -0
- package/dist/tree-operations/structural-suffix.js +61 -0
- package/dist/tree-operations/sub-table-copy.d.ts +7 -0
- package/dist/tree-operations/sub-table-copy.js +40 -36
- package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
- package/dist/tree-operations/table-grid-clipboard.js +11 -36
- package/dist/tree-operations/table-mutations.d.ts +7 -3
- package/dist/tree-operations/table-mutations.js +45 -9
- package/dist/tree-operations/unshare.d.ts +11 -15
- package/dist/tree-operations/unshare.js +15 -17
- package/dist/undo/manager.js +1 -1
- package/dist/undo/types.d.ts +2 -2
- package/docs/guide/consumer-guide.md +329 -205
- package/docs/guide/directives.md +7 -7
- package/docs/guide/plugin-api.md +267 -183
- package/docs/guide/plugin-guide.md +341 -235
- package/docs/guide/plugin-testing.md +96 -82
- package/package.json +17 -21
- package/dist/ambient/ambient-cursor.d.ts +0 -41
- package/dist/ambient/ambient-cursor.js +0 -120
- package/dist/components/blocks/code/code-paste.d.ts +0 -24
- package/dist/components/blocks/code/code-paste.js +0 -21
- package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
- package/dist/components/blocks/table/cell-clipboard.js +0 -67
- package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
- package/dist/components/blocks/text/hidden-suffix.js +0 -15
- package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
- package/dist/components/image/image-source-bytes.d.ts +0 -15
- package/dist/components/image/image-source-bytes.js +0 -80
- package/dist/cursor/content-offsets.d.ts +0 -29
- package/dist/cursor/content-offsets.js +0 -151
- package/dist/cursor/reveal-anchor.d.ts +0 -30
- package/dist/cursor/reveal-anchor.js +0 -31
- package/dist/invariants/split-landing.d.ts +0 -8
- package/dist/invariants/split-landing.js +0 -15
- package/dist/selection/double-click-trim.d.ts +0 -17
- package/dist/selection/double-click-trim.js +0 -57
- package/dist/tree-operations/list/terminator.d.ts +0 -17
- package/dist/tree-operations/list/terminator.js +0 -60
- package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -29
- package/dist/tree-operations/paste/replace-block-at-parent.js +0 -75
|
@@ -1,20 +1,19 @@
|
|
|
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 { tick } from 'svelte';
|
|
8
8
|
import { inlineDescendants } from '../../../core/inline';
|
|
9
9
|
import { resolvedInlineContent } from '../../../core/inline/inline-cache';
|
|
10
10
|
import { isRevealableInlineKind } from '../../../schema/inline-construct-policy';
|
|
11
|
-
import {
|
|
12
|
-
import { CONSTRUCT_REVEAL_CLASS, domTextOffsetAtNode } from '../../../cursor/widget-offset';
|
|
11
|
+
import { CONSTRUCT_REVEAL_CLASS, rawOffsetAt } from '../../../cursor/widget-offset';
|
|
13
12
|
import { isInteractionTraceEnabled, traceRevealOpen, traceRevealFold } from '../../../debug/interaction-trace';
|
|
14
13
|
// ── Chain math (pure) ────────────────────────────────────────────────────────
|
|
15
14
|
/**
|
|
16
|
-
* Every
|
|
17
|
-
* first; at a boundary
|
|
15
|
+
* Every construct that can show its markers whose `[start, end]` contains `offset`, bounds
|
|
16
|
+
* included, outermost first; at a boundary two siblings share, both are collected.
|
|
18
17
|
*/
|
|
19
18
|
export function constructChainAtOffset(nodes, offset) {
|
|
20
19
|
// A child lies inside its parent's range, so a node that misses the offset prunes its subtree.
|
|
@@ -39,15 +38,15 @@ export function createConstructReveal(deps) {
|
|
|
39
38
|
/** Caret raw offset while the mode is on and the caret sits in this block. */
|
|
40
39
|
function caretOffset() {
|
|
41
40
|
const el = deps.getEl();
|
|
42
|
-
if (!el || deps.
|
|
41
|
+
if (!el || deps.reading.mode() !== 'preview-inline')
|
|
43
42
|
return null;
|
|
44
43
|
const sel = window.getSelection();
|
|
45
44
|
if (!sel || sel.rangeCount === 0 || !sel.focusNode || !el.contains(sel.focusNode))
|
|
46
45
|
return null;
|
|
47
|
-
return
|
|
46
|
+
return rawOffsetAt(el, sel.focusNode, sel.focusOffset);
|
|
48
47
|
}
|
|
49
48
|
function inlines() {
|
|
50
|
-
return resolvedInlineContent(deps.node, deps.
|
|
49
|
+
return resolvedInlineContent(deps.node, deps.reading);
|
|
51
50
|
}
|
|
52
51
|
const toEntry = (n) => ({ kind: n.kind, start: n.start, end: n.end });
|
|
53
52
|
/** The chain the current selection asks for; [] when nothing contains the caret. */
|
|
@@ -91,8 +90,8 @@ export function createConstructReveal(deps) {
|
|
|
91
90
|
appliedSpans = next;
|
|
92
91
|
appliedKey = key;
|
|
93
92
|
}
|
|
94
|
-
//
|
|
95
|
-
// before the cross-block flag
|
|
93
|
+
// Hiding everything has to survive a tick: entering a cross-block selection clears the
|
|
94
|
+
// browser selection before the cross-block flag is set, which briefly looks like no chain.
|
|
96
95
|
function queueFoldRecheck() {
|
|
97
96
|
if (foldRecheckQueued)
|
|
98
97
|
return;
|
|
@@ -142,7 +141,7 @@ export function createConstructReveal(deps) {
|
|
|
142
141
|
chain.push(toEntry(n));
|
|
143
142
|
}
|
|
144
143
|
}
|
|
145
|
-
//
|
|
144
|
+
// `prepareStep` only shows markers; hiding them is the selection handler's job.
|
|
146
145
|
if (chain.length === 0)
|
|
147
146
|
return;
|
|
148
147
|
const key = chainKey(chain);
|
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* A typed inline delimiter
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `applyDelimiterAutoPair` is the one `beforeinput` arm every prose surface runs (G4.65).
|
|
2
|
+
* A typed inline delimiter (`$`, backtick, `*`, `_`, `~~`) writes its partner after the caret, so
|
|
3
|
+
* it cannot pair with a later run on the line. Typing the partner steps past it, and an empty pair
|
|
4
|
+
* the auto-pair wrote (`auto-pair-record.ts`) drops its partner when the first byte inside makes
|
|
5
|
+
* it no construct. Every prose block runs `applyDelimiterAutoPair` on `beforeinput` (G4.65).
|
|
7
6
|
*/
|
|
8
7
|
import { type ContentRange } from '../../../core/inline';
|
|
9
|
-
|
|
8
|
+
import type { GrammarView } from '../../../schema/block-openers';
|
|
9
|
+
import type { Reading } from '../../../schema/reading';
|
|
10
|
+
import type { BlockAutoPairs } from './auto-pair-record';
|
|
11
|
+
export type AutoPairEdit =
|
|
12
|
+
/** `pair` is the empty pair the write leaves around the caret, which the auto-pair owns. */
|
|
13
|
+
{
|
|
10
14
|
kind: 'write';
|
|
11
15
|
text: string;
|
|
12
16
|
caret: number;
|
|
17
|
+
pair?: ContentRange;
|
|
13
18
|
}
|
|
14
19
|
/** The typed byte completed a construct's closer; what follows belongs outside it. */
|
|
15
20
|
| {
|
|
@@ -17,32 +22,38 @@ export type AutoPairEdit = {
|
|
|
17
22
|
text: string;
|
|
18
23
|
caret: number;
|
|
19
24
|
}
|
|
20
|
-
/** Nothing written: the caret passes
|
|
21
|
-
*
|
|
25
|
+
/** Nothing written: the caret passes its partner. Over a hidden closer only the caret's arrival
|
|
26
|
+
* side changes. `pair` is the auto-pair's own empty pair the caret stepped past. */
|
|
22
27
|
| {
|
|
23
28
|
kind: 'step-over';
|
|
24
29
|
caret: number;
|
|
25
30
|
overConstruct: boolean;
|
|
31
|
+
pair?: ContentRange;
|
|
26
32
|
};
|
|
33
|
+
/** What the resolver reads about the line besides its bytes. */
|
|
34
|
+
export interface AutoPairContext {
|
|
35
|
+
/** The empty pair the auto-pair wrote at this caret, or null: the same bytes typed by hand
|
|
36
|
+
* are the user's, and a key between them touches one byte. */
|
|
37
|
+
ownPair: ContentRange | null;
|
|
38
|
+
/** Whether the written line still parses as this block: a grown `****` is a thematic break
|
|
39
|
+
* and `~~~~` a fence, so such a pair steps past its partner instead. */
|
|
40
|
+
keepsKind?: (text: string) => boolean;
|
|
41
|
+
}
|
|
42
|
+
/** What a single typed byte does at a collapsed caret, or null to leave it to the browser.
|
|
43
|
+
* `content` bounds the inline scan (a heading's `# ` is not prose); the caret must lie inside it. */
|
|
44
|
+
export declare function resolveDelimiterAutoPair(text: string, content: ContentRange, caret: number, typed: string, reading: Reading, { ownPair, keepsKind }: AutoPairContext): AutoPairEdit | null;
|
|
27
45
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* `keepsBlockKind` says whether a written line still reloads as this block: a grown `****` is a
|
|
31
|
-
* thematic break and `~~~~` a fence, so such a pair steps past a twin instead, or declines.
|
|
32
|
-
*/
|
|
33
|
-
export declare function resolveDelimiterAutoPair(text: string, content: ContentRange, caret: number, typed: string, keepsBlockKind?: (text: string) => boolean): AutoPairEdit | null;
|
|
34
|
-
/**
|
|
35
|
-
* Inside a revealed source (`$ab|$`) the twin is the live closer, and typing it means "done":
|
|
36
|
-
* the caret steps past it and the caller folds the reveal, so the formula renders at once.
|
|
46
|
+
* Inside a construct whose source is showing (`$ab|$`) the partner is the real closer, and typing
|
|
47
|
+
* it means "done": the caret steps past it and the caller hides the source, so it renders at once.
|
|
37
48
|
*/
|
|
38
|
-
export declare function stepsOverRevealedCloser(text: string, caret: number, typed: string): boolean;
|
|
39
|
-
/** Backspace at
|
|
40
|
-
* (`$$|`), as it does in any IDE.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
/** What a prose surface lends the arm. Reactive reads are thunks, so nothing here goes stale. */
|
|
49
|
+
export declare function stepsOverRevealedCloser(text: string, caret: number, typed: string, grammar: GrammarView): boolean;
|
|
50
|
+
/** Backspace at the auto-pair's own empty pair takes both runs, between them (`**|**`) or right
|
|
51
|
+
* after a stepped-over one (`$$|`), as it does in any IDE. */
|
|
52
|
+
export declare function resolveEmptyPairBackspace(text: string, caret: number, ownPair: ContentRange | null, grammar: GrammarView): AutoPairEdit | null;
|
|
53
|
+
/** What a prose block gives the handler. Reactive values arrive as functions, so none go stale. */
|
|
44
54
|
export interface AutoPairSurface {
|
|
45
|
-
/** The bytes the caret
|
|
55
|
+
/** The bytes the caret counts into: the displayed text, or the DOM text while a construct's
|
|
56
|
+
* source is showing. */
|
|
46
57
|
text(): string;
|
|
47
58
|
content(): ContentRange;
|
|
48
59
|
caret(): number | null;
|
|
@@ -51,21 +62,27 @@ export interface AutoPairSurface {
|
|
|
51
62
|
foldReveal(): {
|
|
52
63
|
settled: Promise<void>;
|
|
53
64
|
} | null;
|
|
54
|
-
/** Whether the closer a step-over passes is on screen; unpainted, only the side moves. */
|
|
55
|
-
markersPaint(): boolean;
|
|
56
65
|
setCaret(offset: number): void;
|
|
57
|
-
/**
|
|
66
|
+
/** Record the arrival side the next typed byte reads: past the construct's delimiters. */
|
|
58
67
|
seatOutside(): void;
|
|
59
|
-
/** One CST write plus the caret it
|
|
68
|
+
/** One CST write plus the caret it leaves behind. */
|
|
60
69
|
write(text: string, caretBefore: number, caretAfter: number): void;
|
|
61
|
-
/**
|
|
62
|
-
*
|
|
70
|
+
/** Whether a step-over leaves the line one an on-type completer takes (`$$`); only a content
|
|
71
|
+
* write asks. */
|
|
63
72
|
completesLine?(caret: number): boolean;
|
|
64
|
-
/**
|
|
65
|
-
|
|
73
|
+
/** Whether a line the pair would write still reads as this block's kind where it is stored. */
|
|
74
|
+
keepsKind(line: string): boolean;
|
|
75
|
+
/** How the block was drawn: a plugin's delimiter pairs only where the plugin is listed, and a
|
|
76
|
+
* step-over past a hidden closer moves only the arrival side. */
|
|
77
|
+
reading: Reading;
|
|
78
|
+
/** This block's view of the editor's record of the pair the auto-pair last wrote. */
|
|
79
|
+
ownPairs: BlockAutoPairs;
|
|
66
80
|
}
|
|
67
81
|
/**
|
|
68
|
-
* The `beforeinput`
|
|
69
|
-
*
|
|
82
|
+
* The `beforeinput` handler. True when the key belonged here: the event is cancelled and the
|
|
83
|
+
* block has written bytes, moved the caret, or changed its arrival side.
|
|
70
84
|
*/
|
|
71
85
|
export declare function applyDelimiterAutoPair(e: InputEvent, surface: AutoPairSurface): boolean;
|
|
86
|
+
/** Keep the record in step with an edit the auto-pair made to `text`: a pair it wrote or stepped
|
|
87
|
+
* past stays its own, and every other edit ends the pair. */
|
|
88
|
+
export declare function noteOwnPair(ownPairs: BlockAutoPairs, text: string, edit: AutoPairEdit): void;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* A typed inline delimiter
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `applyDelimiterAutoPair` is the one `beforeinput` arm every prose surface runs (G4.65).
|
|
2
|
+
* A typed inline delimiter (`$`, backtick, `*`, `_`, `~~`) writes its partner after the caret, so
|
|
3
|
+
* it cannot pair with a later run on the line. Typing the partner steps past it, and an empty pair
|
|
4
|
+
* the auto-pair wrote (`auto-pair-record.ts`) drops its partner when the first byte inside makes
|
|
5
|
+
* it no construct. Every prose block runs `applyDelimiterAutoPair` on `beforeinput` (G4.65).
|
|
7
6
|
*/
|
|
8
|
-
import { constructContentRange, inlineDescendants,
|
|
7
|
+
import { constructContentRange, inlineDescendants, readInline } from '../../../core/inline';
|
|
9
8
|
import { isAutoPairTrigger } from '../../../core/inline/scan/plugin-syntax';
|
|
10
9
|
const STEP = { single: true, inside: 'step-over' };
|
|
11
10
|
const BUILTIN = {
|
|
@@ -16,78 +15,89 @@ const BUILTIN = {
|
|
|
16
15
|
'~': { single: false, inside: 'grow' }
|
|
17
16
|
};
|
|
18
17
|
const isWordByte = (ch) => ch !== undefined && /[\p{L}\p{N}]/u.test(ch);
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
// A plugin's delimiter pairs only in an editor that lists the plugin.
|
|
19
|
+
function policyOf(ch, grammar) {
|
|
20
|
+
return BUILTIN[ch] ?? (isAutoPairTrigger(ch, grammar) ? STEP : null);
|
|
21
21
|
}
|
|
22
22
|
// ── The resolver ─────────────────────────────────────────────────────────────
|
|
23
|
-
/**
|
|
24
|
-
*
|
|
25
|
-
|
|
26
|
-
* `keepsBlockKind` says whether a written line still reloads as this block: a grown `****` is a
|
|
27
|
-
* thematic break and `~~~~` a fence, so such a pair steps past a twin instead, or declines.
|
|
28
|
-
*/
|
|
29
|
-
export function resolveDelimiterAutoPair(text, content, caret, typed, keepsBlockKind = () => true) {
|
|
23
|
+
/** What a single typed byte does at a collapsed caret, or null to leave it to the browser.
|
|
24
|
+
* `content` bounds the inline scan (a heading's `# ` is not prose); the caret must lie inside it. */
|
|
25
|
+
export function resolveDelimiterAutoPair(text, content, caret, typed, reading, { ownPair, keepsKind = () => true }) {
|
|
30
26
|
if (typed.length !== 1 || caret < content.start || caret > content.end)
|
|
31
27
|
return null;
|
|
32
28
|
const before = text[caret - 1];
|
|
33
29
|
const after = text[caret];
|
|
34
|
-
const policy = policyOf(typed);
|
|
30
|
+
const policy = policyOf(typed, reading.grammar);
|
|
31
|
+
const inside = ownPair && isBetweenRuns(ownPair, caret) ? ownPair : null;
|
|
35
32
|
if (!policy)
|
|
36
|
-
return collapseEmptyPair(text, content, caret, typed);
|
|
37
|
-
if (after === typed && closingRunAt(text, content, caret, typed)) {
|
|
33
|
+
return inside && collapseEmptyPair(text, content, caret, typed, inside, reading);
|
|
34
|
+
if (after === typed && closingRunAt(text, content, caret, typed, reading)) {
|
|
38
35
|
return { kind: 'step-over', caret: caret + 1, overConstruct: true };
|
|
39
36
|
}
|
|
40
37
|
const paired = text.slice(0, caret) + typed + text.slice(caret);
|
|
41
|
-
|
|
38
|
+
// The typed byte lengthens the content, so a scan of the paired line reads one byte further.
|
|
39
|
+
const pairedContent = { start: content.start, end: content.end + 1 };
|
|
40
|
+
if (closerEndsAt(paired, pairedContent, caret + 1, typed, reading)) {
|
|
42
41
|
return { kind: 'close', text: paired, caret: caret + 1 };
|
|
43
42
|
}
|
|
44
|
-
const pair = (next) => {
|
|
45
|
-
if (
|
|
46
|
-
return write(next, caret + 1);
|
|
47
|
-
|
|
43
|
+
const pair = (next, pairRange) => {
|
|
44
|
+
if (keepsKind(next))
|
|
45
|
+
return write(next, caret + 1, pairRange);
|
|
46
|
+
if (after !== typed || !inside)
|
|
47
|
+
return null;
|
|
48
|
+
return { kind: 'step-over', caret: caret + 1, overConstruct: false, pair: inside };
|
|
48
49
|
};
|
|
49
50
|
if (after === typed) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
// A pair the user typed, or a byte in front of another run's opener, is spelling something
|
|
52
|
+
// out: only the auto-pair's own empty pair is stepped over or grown.
|
|
53
|
+
if (!inside)
|
|
54
|
+
return null;
|
|
55
|
+
if (policy.inside === 'step-over') {
|
|
56
|
+
return { kind: 'step-over', caret: caret + 1, overConstruct: false, pair: inside };
|
|
55
57
|
}
|
|
56
|
-
|
|
57
|
-
return
|
|
58
|
+
const grown = text.slice(0, caret) + typed + typed + text.slice(caret);
|
|
59
|
+
return pair(grown, { start: inside.start, end: inside.end + 2 });
|
|
58
60
|
}
|
|
59
|
-
if (before === typed && !closerEndsAt(text, content, caret, typed)) {
|
|
60
|
-
// `~|` plus `~`: the double run this delimiter pairs on, as long as it
|
|
61
|
+
if (before === typed && !closerEndsAt(text, content, caret, typed, reading)) {
|
|
62
|
+
// `~|` plus `~`: the double run this delimiter pairs on, as long as it is a lone run.
|
|
61
63
|
const single = text[caret - 2] !== typed;
|
|
62
64
|
if (policy.inside === 'grow' && single) {
|
|
63
|
-
|
|
65
|
+
const grown = text.slice(0, caret) + typed.repeat(3) + text.slice(caret);
|
|
66
|
+
return pair(grown, { start: caret - 1, end: caret + 3 });
|
|
64
67
|
}
|
|
65
68
|
return null;
|
|
66
69
|
}
|
|
67
70
|
if (!policy.single || (policy.notAfterWord && isWordByte(before)))
|
|
68
71
|
return null;
|
|
69
|
-
|
|
72
|
+
const opened = text.slice(0, caret) + typed + typed + text.slice(caret);
|
|
73
|
+
return pair(opened, { start: caret, end: caret + 2 });
|
|
70
74
|
}
|
|
71
75
|
/**
|
|
72
|
-
* Inside a
|
|
73
|
-
* the caret steps past it and the caller
|
|
76
|
+
* Inside a construct whose source is showing (`$ab|$`) the partner is the real closer, and typing
|
|
77
|
+
* it means "done": the caret steps past it and the caller hides the source, so it renders at once.
|
|
74
78
|
*/
|
|
75
|
-
export function stepsOverRevealedCloser(text, caret, typed) {
|
|
76
|
-
return typed.length === 1 && policyOf(typed) !== null && text[caret] === typed;
|
|
79
|
+
export function stepsOverRevealedCloser(text, caret, typed, grammar) {
|
|
80
|
+
return typed.length === 1 && policyOf(typed, grammar) !== null && text[caret] === typed;
|
|
77
81
|
}
|
|
78
|
-
/** Backspace at
|
|
79
|
-
* (`$$|`), as it does in any IDE.
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
/** Backspace at the auto-pair's own empty pair takes both runs, between them (`**|**`) or right
|
|
83
|
+
* after a stepped-over one (`$$|`), as it does in any IDE. */
|
|
84
|
+
export function resolveEmptyPairBackspace(text, caret, ownPair, grammar) {
|
|
85
|
+
if (!ownPair)
|
|
86
|
+
return null;
|
|
87
|
+
// The emphasis family grows instead of stepping, so its `**|` is a double opener to type after.
|
|
88
|
+
const stepped = caret === ownPair.end && policyOf(text[caret - 1], grammar)?.inside === 'step-over';
|
|
89
|
+
if (!isBetweenRuns(ownPair, caret) && !stepped)
|
|
84
90
|
return null;
|
|
85
|
-
return write(text.slice(0,
|
|
91
|
+
return write(text.slice(0, ownPair.start) + text.slice(ownPair.end), ownPair.start);
|
|
92
|
+
}
|
|
93
|
+
const write = (text, caret, pair) => pair ? { kind: 'write', text, caret, pair } : { kind: 'write', text, caret };
|
|
94
|
+
// The caret splits the empty pair into its two equal runs.
|
|
95
|
+
function isBetweenRuns(pair, caret) {
|
|
96
|
+
return caret > pair.start && caret - pair.start === pair.end - caret;
|
|
86
97
|
}
|
|
87
|
-
const write = (text, caret) => ({ kind: 'write', text, caret });
|
|
88
98
|
/**
|
|
89
|
-
* The `beforeinput`
|
|
90
|
-
*
|
|
99
|
+
* The `beforeinput` handler. True when the key belonged here: the event is cancelled and the
|
|
100
|
+
* block has written bytes, moved the caret, or changed its arrival side.
|
|
91
101
|
*/
|
|
92
102
|
export function applyDelimiterAutoPair(e, surface) {
|
|
93
103
|
const typing = e.inputType === 'insertText';
|
|
@@ -99,23 +109,29 @@ export function applyDelimiterAutoPair(e, surface) {
|
|
|
99
109
|
if (caret === null)
|
|
100
110
|
return false;
|
|
101
111
|
const text = surface.text();
|
|
112
|
+
const ownPair = surface.ownPairs.consult(text, caret);
|
|
102
113
|
if (surface.isRevealing()) {
|
|
103
|
-
if (!typing || !stepsOverRevealedCloser(text, caret, e.data ?? ''))
|
|
114
|
+
if (!typing || !stepsOverRevealedCloser(text, caret, e.data ?? '', surface.reading.grammar)) {
|
|
104
115
|
return false;
|
|
116
|
+
}
|
|
105
117
|
e.preventDefault();
|
|
106
118
|
surface.setCaret(caret + 1);
|
|
107
119
|
void surface.foldReveal()?.settled;
|
|
108
120
|
return true;
|
|
109
121
|
}
|
|
110
122
|
const edit = typing
|
|
111
|
-
? resolveDelimiterAutoPair(text, surface.content(), caret, e.data ?? '', surface.
|
|
112
|
-
|
|
123
|
+
? resolveDelimiterAutoPair(text, surface.content(), caret, e.data ?? '', surface.reading, {
|
|
124
|
+
ownPair,
|
|
125
|
+
keepsKind: surface.keepsKind
|
|
126
|
+
})
|
|
127
|
+
: resolveEmptyPairBackspace(text, caret, ownPair, surface.reading.grammar);
|
|
113
128
|
if (!edit)
|
|
114
129
|
return false;
|
|
115
130
|
e.preventDefault();
|
|
131
|
+
noteOwnPair(surface.ownPairs, text, edit);
|
|
116
132
|
switch (edit.kind) {
|
|
117
133
|
case 'step-over':
|
|
118
|
-
if (edit.overConstruct &&
|
|
134
|
+
if (edit.overConstruct && surface.reading.hidesDelimitersAtCaret())
|
|
119
135
|
surface.seatOutside();
|
|
120
136
|
else if (surface.completesLine?.(edit.caret))
|
|
121
137
|
surface.write(text, caret, edit.caret);
|
|
@@ -131,59 +147,29 @@ export function applyDelimiterAutoPair(e, surface) {
|
|
|
131
147
|
return true;
|
|
132
148
|
}
|
|
133
149
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
function
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
function runAfter(text, at, ch) {
|
|
143
|
-
let n = 0;
|
|
144
|
-
while (text[at + n] === ch)
|
|
145
|
-
n++;
|
|
146
|
-
return n;
|
|
147
|
-
}
|
|
148
|
-
// `X..X|X..X`: equal runs of a pair delimiter, one or two bytes, with nothing of it either side.
|
|
149
|
-
function emptyPairAround(text, caret) {
|
|
150
|
-
const d = text[caret - 1];
|
|
151
|
-
if (d === undefined || !policyOf(d))
|
|
152
|
-
return null;
|
|
153
|
-
const k = runBefore(text, caret, d);
|
|
154
|
-
if (k > 2 || runAfter(text, caret, d) !== k)
|
|
155
|
-
return null;
|
|
156
|
-
return { start: caret - k, end: caret + k };
|
|
157
|
-
}
|
|
158
|
-
// `XX|`: a stepped-over empty pair with the caret after it. Only the delimiters that step (the
|
|
159
|
-
// emphasis family grows instead, and its `**|` is a double opener with content ahead).
|
|
160
|
-
function emptyPairEnding(text, caret) {
|
|
161
|
-
const d = text[caret - 1];
|
|
162
|
-
if (d === undefined || policyOf(d)?.inside !== 'step-over' || text[caret] === d)
|
|
163
|
-
return null;
|
|
164
|
-
if (runBefore(text, caret, d) !== 2)
|
|
165
|
-
return null;
|
|
166
|
-
return { start: caret - 2, end: caret };
|
|
150
|
+
/** Keep the record in step with an edit the auto-pair made to `text`: a pair it wrote or stepped
|
|
151
|
+
* past stays its own, and every other edit ends the pair. */
|
|
152
|
+
export function noteOwnPair(ownPairs, text, edit) {
|
|
153
|
+
const pair = edit.kind === 'close' ? undefined : edit.pair;
|
|
154
|
+
if (!pair)
|
|
155
|
+
ownPairs.forget();
|
|
156
|
+
else
|
|
157
|
+
ownPairs.remember(edit.kind === 'write' ? edit.text : text, pair);
|
|
167
158
|
}
|
|
168
159
|
// ── Constructs ───────────────────────────────────────────────────────────────
|
|
169
|
-
// `X|X` plus the typed byte: keep the
|
|
170
|
-
function collapseEmptyPair(text, content, caret, typed) {
|
|
171
|
-
const d = text[caret - 1];
|
|
172
|
-
if (d === undefined || !policyOf(d))
|
|
173
|
-
return null;
|
|
174
|
-
const k = runBefore(text, caret, d);
|
|
175
|
-
if (k > 2 || runAfter(text, caret, d) !== k)
|
|
176
|
-
return null;
|
|
160
|
+
// `X|X` plus the typed byte: keep the partner run only if the pair then parses as a construct.
|
|
161
|
+
function collapseEmptyPair(text, content, caret, typed, own, reading) {
|
|
177
162
|
const paired = text.slice(0, caret) + typed + text.slice(caret);
|
|
178
163
|
const shifted = { start: content.start, end: content.end + 1 };
|
|
179
|
-
if (constructAt(paired, shifted,
|
|
164
|
+
if (constructAt(paired, shifted, own.start, own.end + 1, reading))
|
|
180
165
|
return null;
|
|
166
|
+
const k = caret - own.start;
|
|
181
167
|
return write(text.slice(0, caret) + typed + text.slice(caret + k), caret + 1);
|
|
182
168
|
}
|
|
183
169
|
// The caret sits inside or at the start of the closing run of a construct this delimiter both
|
|
184
170
|
// opens and closes, so the byte under it is that construct's own closer.
|
|
185
|
-
function closingRunAt(text, content, caret, typed) {
|
|
186
|
-
for (const node of inlineDescendants(
|
|
171
|
+
function closingRunAt(text, content, caret, typed, reading) {
|
|
172
|
+
for (const node of inlineDescendants(readInline(text, content.start, content.end, reading.resolver, reading.grammar))) {
|
|
187
173
|
if (node.kind === 'text' || text[node.start] !== typed || node.end <= caret)
|
|
188
174
|
continue;
|
|
189
175
|
let closer = node.end;
|
|
@@ -194,11 +180,9 @@ function closingRunAt(text, content, caret, typed) {
|
|
|
194
180
|
}
|
|
195
181
|
return false;
|
|
196
182
|
}
|
|
197
|
-
// A construct of `typed`'s family ends exactly at `end`, its last byte in the closing run.
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
const bound = Math.max(content.end, end);
|
|
201
|
-
for (const node of inlineDescendants(parseInline(text, content.start, bound))) {
|
|
183
|
+
// A construct of `typed`'s family ends exactly at `end`, its last byte in the closing run.
|
|
184
|
+
function closerEndsAt(text, content, end, typed, reading) {
|
|
185
|
+
for (const node of inlineDescendants(readInline(text, content.start, content.end, reading.resolver, reading.grammar))) {
|
|
202
186
|
if (node.kind === 'text' || node.end !== end || text[end - 1] !== typed)
|
|
203
187
|
continue;
|
|
204
188
|
const inner = constructContentRange(node);
|
|
@@ -207,8 +191,8 @@ function closerEndsAt(text, content, end, typed) {
|
|
|
207
191
|
}
|
|
208
192
|
return false;
|
|
209
193
|
}
|
|
210
|
-
function constructAt(text, content, start, end) {
|
|
211
|
-
for (const node of inlineDescendants(
|
|
194
|
+
function constructAt(text, content, start, end, reading) {
|
|
195
|
+
for (const node of inlineDescendants(readInline(text, content.start, content.end, reading.resolver, reading.grammar))) {
|
|
212
196
|
if (node.kind !== 'text' && node.start === start && node.end === end)
|
|
213
197
|
return true;
|
|
214
198
|
}
|
|
@@ -1,40 +1,41 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* The one place a caret-edge key is decided in a prose block. A plain Backspace, Delete or
|
|
3
|
+
* printable key at a caret edge resolves against a declared policy (the inline construct's beside
|
|
4
|
+
* the caret, or the ancestor container's at the content start), never native editing, which would
|
|
5
|
+
* corrupt the bytes those constructs stand for (G4.12).
|
|
6
6
|
*/
|
|
7
7
|
import type { BlockEditActions } from '../../../action-contracts';
|
|
8
8
|
import type { NodeView } from '../../../core/node-views';
|
|
9
|
-
import type { LinkReferenceResolverRef } from '../../../editor-keys';
|
|
10
9
|
import type { InlineNode } from '../../../core/nodes';
|
|
11
10
|
import type { InlineWidgetEditingPolicy } from '../../../core/inline/inline-widgets';
|
|
11
|
+
import { type LineEnding } from '../../../core/lines';
|
|
12
12
|
import { type RawOffset } from '../../../cursor/coordinate-spaces';
|
|
13
13
|
import type { EdgeAffinity } from '../../../cursor/edge-affinity';
|
|
14
|
-
import type {
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
/** The
|
|
19
|
-
*
|
|
14
|
+
import type { PendingMarks } from '../../../cursor/pending-marks';
|
|
15
|
+
import type { BlockAutoPairs } from './auto-pair-record';
|
|
16
|
+
import type { Reading } from '../../../schema/reading';
|
|
17
|
+
import type { StoredAs } from '../../../schema/stored-as';
|
|
18
|
+
/** The part of the inline-widget editing policy the built-in widget rules reuse, in the same
|
|
19
|
+
* terms but without widening the public API. */
|
|
20
20
|
export type EdgePolicy = Pick<InlineWidgetEditingPolicy, 'onEdge' | 'deleteGranularity'>;
|
|
21
21
|
/** Reactive state arrives as getters, so a captured value can't go stale under
|
|
22
22
|
* re-render. */
|
|
23
23
|
export interface EdgePolicyDispatchDeps {
|
|
24
24
|
get node(): NodeView;
|
|
25
25
|
get index(): number;
|
|
26
|
-
/** The
|
|
27
|
-
|
|
26
|
+
/** The document's line ending, which a rewrite takes where the block has none of its own. */
|
|
27
|
+
getLineEnding: () => LineEnding;
|
|
28
|
+
/** The nearest ancestor container, or null at the document root. A key at the content start
|
|
29
|
+
* resolves against its declaration. */
|
|
28
30
|
get containerParent(): NodeView | null;
|
|
29
|
-
|
|
31
|
+
/** How the editor reads its bytes, the grammar the render path drew widgets with included. */
|
|
32
|
+
get reading(): Reading;
|
|
30
33
|
getEl: () => HTMLElement | null;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
/** Whether this block carries any decoration islands. Reads the same source the render
|
|
37
|
-
* painted from, so a false can't disagree with the DOM and safely skips the scan. */
|
|
34
|
+
/** Where this block's bytes are stored, read when a rewrite asks, so a cut reads its candidate
|
|
35
|
+
* back as it will be kept: a cell's text as text, a list item's behind its marker. */
|
|
36
|
+
storedAs: () => StoredAs;
|
|
37
|
+
/** Whether this block carries any decoration widgets. It reads the same source the render
|
|
38
|
+
* drew from, so a false cannot disagree with the DOM and safely skips the scan. */
|
|
38
39
|
hasIslands: () => boolean;
|
|
39
40
|
/** Anchor/focus raw-content offsets of the live selection, or null when collapsed. */
|
|
40
41
|
getRawSelection: () => {
|
|
@@ -42,51 +43,48 @@ export interface EdgePolicyDispatchDeps {
|
|
|
42
43
|
end: RawOffset;
|
|
43
44
|
} | null;
|
|
44
45
|
blockEdit: BlockEditActions;
|
|
45
|
-
/**
|
|
46
|
-
*
|
|
47
|
-
|
|
48
|
-
setPendingCursor: (offset: number | null, source: string, writtenText?: string) => void;
|
|
46
|
+
/** Remember a caret offset, counted in the stored bytes, for the restore after the next
|
|
47
|
+
* render, tagged with the gesture for the debug trace. */
|
|
48
|
+
setPendingCursor: (offset: number | null, source: string) => void;
|
|
49
49
|
setSnapTarget: (offset: number | null) => void;
|
|
50
|
-
/** A widget's source is
|
|
51
|
-
*
|
|
50
|
+
/** A widget's source is showing: the CST still calls it atomic, but the DOM holds editable
|
|
51
|
+
* text, so the widget branch does nothing and lets native editing run. */
|
|
52
52
|
isRevealing: () => boolean;
|
|
53
|
-
/**
|
|
54
|
-
*
|
|
53
|
+
/** Enter the widget, either by showing its source or by selecting it. This dispatch decides
|
|
54
|
+
* which widget a key is aimed at; the callback decides what entering it means. */
|
|
55
55
|
enterWidget: (widget: {
|
|
56
56
|
start: number;
|
|
57
57
|
end: number;
|
|
58
58
|
kind: InlineNode['kind'];
|
|
59
59
|
}, fromTrailingEdge: boolean) => void;
|
|
60
|
-
/**
|
|
61
|
-
*
|
|
62
|
-
* registration doesn't assume: a policy names an affordance, and a surface that paints
|
|
63
|
-
* none must answer differently rather than degrade. `undefined` keeps the registration.
|
|
64
|
-
*/
|
|
60
|
+
/** Replace the edge policy for a widget this block draws on its own terms, where the kind's
|
|
61
|
+
* registered policy names a gesture the block cannot show. `undefined` keeps the registered one. */
|
|
65
62
|
widgetEdgePolicy?: (widget: {
|
|
66
63
|
start: number;
|
|
67
64
|
end: number;
|
|
68
65
|
kind: InlineNode['kind'];
|
|
69
66
|
}) => EdgePolicy | undefined;
|
|
70
|
-
/** Reading mode:
|
|
71
|
-
* widget branch
|
|
67
|
+
/** Reading mode: the decoration-widget and marker-prefix branches do nothing at all, and the
|
|
68
|
+
* widget branch writes nothing, though it still selects. */
|
|
72
69
|
isReading: () => boolean;
|
|
73
|
-
/**
|
|
70
|
+
/** Which side the caret arrived from, which decides where a typed byte lands; null when
|
|
71
|
+
* nothing recorded one. */
|
|
74
72
|
getEdgeAffinity: () => EdgeAffinity | null;
|
|
75
|
-
/**
|
|
73
|
+
/** Typing a closing delimiter leaves the caret meaning outside the construct it finished. */
|
|
76
74
|
noteOutside?: () => void;
|
|
77
|
-
/** The constructs a collapsed
|
|
78
|
-
* here: the first byte after the chord is the
|
|
79
|
-
pendingMarks:
|
|
80
|
-
/**
|
|
81
|
-
*
|
|
82
|
-
|
|
75
|
+
/** The constructs a toggle at a collapsed caret promised the next insertion. Read and spent
|
|
76
|
+
* here: the first byte after the chord is the insertion they were waiting for. */
|
|
77
|
+
pendingMarks: PendingMarks;
|
|
78
|
+
/** The editor's record of the pair the auto-pair last wrote, as this block sees it; a pair
|
|
79
|
+
* written here renews it. */
|
|
80
|
+
ownPairs: BlockAutoPairs;
|
|
83
81
|
}
|
|
84
82
|
export interface EdgePolicyDispatch {
|
|
85
83
|
/** A plain edge key against a caret-adjacent construct. Returns whether the event
|
|
86
84
|
* was consumed; a false return leaves the key to the shared keymap below. */
|
|
87
85
|
handleKeydown(e: KeyboardEvent, caretOffset: RawOffset | null): boolean;
|
|
88
|
-
/** The
|
|
89
|
-
* (G4.12), so it is readable rather than something a test
|
|
86
|
+
/** The order `handleKeydown` walks, ids and reasons only. The order is what the rule fixes
|
|
87
|
+
* (G4.12), so it is readable here rather than something a test has to re-derive. */
|
|
90
88
|
readonly arms: readonly {
|
|
91
89
|
id: string;
|
|
92
90
|
reason: string;
|