@voithos-labs/aragonite 0.10.4 → 0.10.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/a11y-strings.d.ts +11 -5
- package/dist/a11y-strings.js +60 -5
- package/dist/action-contracts.d.ts +242 -155
- package/dist/action-contracts.js +2 -2
- package/dist/active-editor.d.ts +3 -3
- package/dist/active-editor.js +8 -9
- package/dist/ambient/ambient-dom.d.ts +2 -5
- package/dist/ambient/ambient-dom.js +16 -62
- package/dist/assert.js +6 -5
- package/dist/block-component.d.ts +135 -109
- package/dist/block-component.js +30 -22
- package/dist/block-id.d.ts +6 -10
- package/dist/block-id.js +25 -14
- package/dist/bounded-memo.d.ts +5 -5
- package/dist/bounded-memo.js +6 -6
- package/dist/components/BlockDragHandle.svelte +12 -21
- package/dist/components/BlockHost.svelte +56 -134
- package/dist/components/BlockList.svelte +22 -19
- package/dist/components/DecorationOverlay.svelte +9 -10
- package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
- package/dist/components/Editor.svelte +603 -1126
- package/dist/components/Editor.svelte.d.ts +9 -20
- package/dist/components/GapCaret.svelte +26 -59
- package/dist/components/SelectionOverlay.svelte +26 -51
- package/dist/components/SelectionOverlay.svelte.d.ts +5 -3
- package/dist/components/TailInsert.svelte +8 -55
- package/dist/components/TailInsert.svelte.d.ts +4 -6
- package/dist/components/block-content-selector.d.ts +11 -11
- package/dist/components/block-content-selector.js +11 -11
- package/dist/components/block-el-lookup.d.ts +6 -0
- package/dist/components/block-el-lookup.js +27 -0
- package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
- package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
- package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
- package/dist/components/blocks/code/CodeBlock.svelte +255 -276
- package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
- package/dist/components/blocks/code/CodeBlockRail.svelte +72 -87
- package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
- package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
- package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
- package/dist/components/blocks/code/code-bootstrap.js +29 -34
- package/dist/components/blocks/code/code-context-actions.js +5 -4
- package/dist/components/blocks/code/code-enter.js +2 -2
- package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
- package/dist/components/blocks/code/code-fence-boundary.js +40 -66
- package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
- package/dist/components/blocks/code/code-fence-exit.js +24 -25
- package/dist/components/blocks/code/code-indent.d.ts +2 -2
- package/dist/components/blocks/code/code-indent.js +4 -7
- package/dist/components/blocks/code/code-languages.d.ts +16 -12
- package/dist/components/blocks/code/code-languages.js +57 -39
- package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
- package/dist/components/blocks/code/code-paste-surface.js +9 -18
- package/dist/components/blocks/code/code-renderer.d.ts +21 -5
- package/dist/components/blocks/code/code-renderer.js +90 -125
- package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
- package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
- package/dist/components/blocks/directive/activate-directives.js +18 -13
- package/dist/components/blocks/editable-leaf.d.ts +50 -74
- package/dist/components/blocks/editable-leaf.js +141 -203
- package/dist/components/blocks/editable-surface.d.ts +96 -100
- package/dist/components/blocks/editable-surface.js +101 -109
- package/dist/components/blocks/list/ListBlock.svelte +45 -90
- package/dist/components/blocks/list/ListItemBlock.svelte +93 -147
- package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +1 -0
- package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
- package/dist/components/blocks/list/task-checkbox.js +12 -7
- package/dist/components/blocks/plain-text-backend.d.ts +4 -20
- package/dist/components/blocks/plain-text-backend.js +9 -43
- package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
- package/dist/components/blocks/surface-wiring.svelte.js +15 -34
- package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
- package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
- package/dist/components/blocks/table/TableBlock.svelte +100 -165
- package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
- package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
- package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
- package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
- package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
- package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
- package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
- package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
- package/dist/components/blocks/table/cell-pointer.js +49 -71
- package/dist/components/blocks/table/cell-render.d.ts +24 -29
- package/dist/components/blocks/table/cell-render.js +29 -31
- package/dist/components/blocks/table/selected-cells.d.ts +7 -7
- package/dist/components/blocks/table/selected-cells.js +9 -13
- package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
- package/dist/components/blocks/table/table-caret-at-point.js +5 -5
- package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
- package/dist/components/blocks/table/table-cell-paste.js +27 -43
- package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
- package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
- package/dist/components/blocks/table/table-menu-model.js +6 -10
- package/dist/components/blocks/table/table-navigation.js +2 -2
- package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
- package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
- package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
- package/dist/components/blocks/text/auto-pair-record.js +51 -0
- package/dist/components/blocks/text/click-snap-guard.d.ts +8 -6
- package/dist/components/blocks/text/click-snap-guard.js +10 -7
- package/dist/components/blocks/text/composition-seat.d.ts +17 -14
- package/dist/components/blocks/text/composition-seat.js +11 -11
- package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
- package/dist/components/blocks/text/construct-edge-delete.js +50 -65
- package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
- package/dist/components/blocks/text/construct-reveal.js +13 -14
- package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
- package/dist/components/blocks/text/delimiter-autopair.js +87 -103
- package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
- package/dist/components/blocks/text/edge-policy-dispatch.js +150 -181
- package/dist/components/blocks/text/edge-seat.d.ts +17 -26
- package/dist/components/blocks/text/edge-seat.js +43 -70
- package/dist/components/blocks/text/link-at-point.d.ts +9 -9
- package/dist/components/blocks/text/link-at-point.js +12 -15
- package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
- package/dist/components/blocks/text/live-join-seam.js +75 -112
- package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
- package/dist/components/blocks/text/live-selection-edit.js +32 -108
- package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
- package/dist/components/blocks/text/live-split-rebalance.js +50 -67
- package/dist/components/blocks/text/marker-completion.d.ts +7 -12
- package/dist/components/blocks/text/marker-completion.js +17 -10
- package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
- package/dist/components/blocks/text/pending-mark-insert.js +30 -49
- package/dist/components/blocks/text/screen-diff.d.ts +5 -15
- package/dist/components/blocks/text/screen-diff.js +5 -19
- package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
- package/dist/components/blocks/text/text-clipboard.js +27 -32
- package/dist/components/blocks/text/text-keydown.d.ts +20 -30
- package/dist/components/blocks/text/text-keydown.js +54 -51
- package/dist/components/blocks/text/text-render.d.ts +25 -35
- package/dist/components/blocks/text/text-render.js +82 -61
- package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
- package/dist/components/blocks/text/widget-adjacency.js +17 -17
- package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
- package/dist/components/blocks/text/widget-interaction.js +212 -199
- package/dist/components/blocks/widget-portal.d.ts +20 -29
- package/dist/components/blocks/widget-portal.js +16 -14
- package/dist/components/built-in-blocks.d.ts +3 -4
- package/dist/components/built-in-blocks.js +17 -18
- package/dist/components/drag-handle.d.ts +12 -35
- package/dist/components/drag-handle.js +22 -68
- package/dist/components/editor-built-ins.d.ts +1 -0
- package/dist/components/editor-built-ins.js +16 -0
- package/dist/components/editor-root-clipboard.d.ts +6 -6
- package/dist/components/editor-root-clipboard.js +16 -27
- package/dist/components/editor-root-document-swap.d.ts +49 -0
- package/dist/components/editor-root-document-swap.js +54 -0
- package/dist/components/editor-root-focus.d.ts +5 -4
- package/dist/components/editor-root-focus.js +51 -22
- package/dist/components/editor-root-focused-surface.d.ts +35 -0
- package/dist/components/editor-root-focused-surface.js +65 -0
- package/dist/components/editor-root-geometry.d.ts +15 -24
- package/dist/components/editor-root-geometry.js +27 -31
- package/dist/components/editor-root-gestures.d.ts +39 -0
- package/dist/components/editor-root-gestures.js +189 -0
- package/dist/components/editor-root-keydown.d.ts +10 -25
- package/dist/components/editor-root-keydown.js +19 -43
- package/dist/components/editor-root-listeners.d.ts +22 -24
- package/dist/components/editor-root-listeners.js +49 -24
- package/dist/components/editor-root-menus.d.ts +51 -0
- package/dist/components/editor-root-menus.js +147 -0
- package/dist/components/editor-root-mode-flip.d.ts +16 -11
- package/dist/components/editor-root-mode-flip.js +36 -34
- package/dist/components/editor-root-scroll-host.d.ts +22 -0
- package/dist/components/editor-root-scroll-host.js +34 -0
- package/dist/components/editor-root-test-surface.d.ts +48 -0
- package/dist/components/editor-root-test-surface.js +6 -0
- package/dist/components/image/ImageOverlayHost.svelte +44 -35
- package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
- package/dist/components/image/ImageProperties.svelte +37 -41
- package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
- package/dist/components/image/ImageResizeHandles.svelte +14 -26
- package/dist/components/image/image-crop.d.ts +5 -11
- package/dist/components/image/image-crop.js +5 -11
- package/dist/components/image/image-edit-commit.d.ts +19 -16
- package/dist/components/image/image-edit-commit.js +74 -38
- package/dist/components/image/image-resize.d.ts +2 -5
- package/dist/components/image/image-resize.js +3 -6
- package/dist/components/image/image-widget-editing.d.ts +3 -3
- package/dist/components/image/image-widget-editing.js +9 -9
- package/dist/components/image/widget-dom.d.ts +2 -3
- package/dist/components/image/widget-dom.js +19 -24
- package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
- package/dist/components/image/widget-selection-state.svelte.js +26 -19
- package/dist/components/kind-cue.svelte.d.ts +21 -0
- package/dist/components/kind-cue.svelte.js +35 -0
- package/dist/components/link-card/LinkCard.svelte +115 -64
- package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
- package/dist/components/link-card/LinkCardHost.svelte +42 -33
- package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
- package/dist/components/link-card/link-card-commit.d.ts +16 -19
- package/dist/components/link-card/link-card-commit.js +21 -30
- package/dist/components/link-card/link-card-entry.d.ts +13 -23
- package/dist/components/link-card/link-card-entry.js +16 -24
- package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
- package/dist/components/link-card/link-card-state.svelte.js +2 -2
- package/dist/components/lrd-map-gate.d.ts +4 -11
- package/dist/components/lrd-map-gate.js +5 -11
- package/dist/components/menu/BlockMenu.svelte +20 -81
- package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
- package/dist/components/menu/InlineMenuHost.svelte +191 -0
- package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
- package/dist/components/menu/MenuIcon.svelte +3 -103
- package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
- package/dist/components/menu/SelectionToolbar.svelte +30 -35
- package/dist/components/menu/SelectionToolbar.svelte.d.ts +3 -5
- package/dist/components/menu/clipboard-actions.d.ts +3 -4
- package/dist/components/menu/clipboard-actions.js +3 -4
- package/dist/components/menu/default-context-actions.d.ts +4 -13
- package/dist/components/menu/default-context-actions.js +49 -67
- package/dist/components/menu/flyout-placement.d.ts +2 -2
- package/dist/components/menu/flyout-placement.js +2 -2
- package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
- package/dist/components/menu/menu-presence.svelte.js +19 -0
- package/dist/components/paste-image-arm.d.ts +6 -11
- package/dist/components/paste-image-arm.js +11 -18
- package/dist/components/portal.d.ts +2 -5
- package/dist/components/portal.js +4 -7
- package/dist/core/directive/activate.d.ts +4 -5
- package/dist/core/directive/activate.js +8 -9
- package/dist/core/directive/container-opener.js +13 -12
- package/dist/core/directive/grammar.d.ts +2 -5
- package/dist/core/directive/grammar.js +10 -10
- package/dist/core/directive/kinds.d.ts +4 -7
- package/dist/core/directive/kinds.js +14 -16
- package/dist/core/directive/registry.d.ts +12 -9
- package/dist/core/directive/registry.js +19 -20
- package/dist/core/directive/text-recognizer.d.ts +3 -2
- package/dist/core/directive/text-recognizer.js +5 -9
- package/dist/core/escapable.d.ts +1 -5
- package/dist/core/escapable.js +1 -5
- package/dist/core/inline/backticks.d.ts +3 -4
- package/dist/core/inline/backticks.js +3 -4
- package/dist/core/inline/character-refs.js +2 -1
- package/dist/core/inline/destination-bytes.d.ts +6 -3
- package/dist/core/inline/destination-bytes.js +50 -8
- package/dist/core/inline/entity-widget.d.ts +4 -3
- package/dist/core/inline/entity-widget.js +6 -6
- package/dist/core/inline/format-toggle.d.ts +22 -28
- package/dist/core/inline/format-toggle.js +97 -129
- package/dist/core/inline/html-entities.d.ts +2 -3
- package/dist/core/inline/html-entities.js +2 -3
- package/dist/core/inline/html-tag-grammar.js +6 -2
- package/dist/core/inline/image-dimensions.d.ts +2 -0
- package/dist/core/inline/image-dimensions.js +19 -2
- package/dist/core/inline/image-source-bytes.d.ts +11 -0
- package/dist/core/inline/image-source-bytes.js +71 -0
- package/dist/core/inline/index.d.ts +28 -21
- package/dist/core/inline/index.js +56 -34
- package/dist/core/inline/inline-cache.d.ts +12 -15
- package/dist/core/inline/inline-cache.js +11 -14
- package/dist/core/inline/inline-widgets.d.ts +54 -75
- package/dist/core/inline/inline-widgets.js +54 -62
- package/dist/core/inline/link-destination.d.ts +31 -0
- package/dist/core/inline/link-destination.js +129 -0
- package/dist/core/inline/link-reference-resolver.d.ts +8 -6
- package/dist/core/inline/link-reference-resolver.js +10 -6
- package/dist/core/inline/link-source-bytes.d.ts +31 -0
- package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
- package/dist/core/inline/live-edit/read-back.d.ts +29 -0
- package/dist/core/inline/live-edit/read-back.js +50 -0
- package/dist/core/inline/picture.d.ts +10 -0
- package/dist/core/inline/picture.js +40 -0
- package/dist/core/inline/scan/autolinks.d.ts +7 -8
- package/dist/core/inline/scan/autolinks.js +80 -59
- package/dist/core/inline/scan/brackets.d.ts +2 -2
- package/dist/core/inline/scan/brackets.js +6 -103
- package/dist/core/inline/scan/code-spans.d.ts +4 -0
- package/dist/core/inline/scan/code-spans.js +8 -0
- package/dist/core/inline/scan/emphasis.js +10 -14
- package/dist/core/inline/scan/index.d.ts +3 -1
- package/dist/core/inline/scan/index.js +32 -33
- package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
- package/dist/core/inline/scan/plugin-syntax.js +75 -89
- package/dist/core/inline/scan/scan-state.d.ts +2 -0
- package/dist/core/inline/scan/scan-state.js +1 -0
- package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
- package/dist/core/inline/scan/simple-nodes.js +2 -5
- package/dist/core/inline/scan/triggers.d.ts +17 -0
- package/dist/core/inline/scan/triggers.js +26 -0
- package/dist/core/inline/scan/url.js +8 -10
- package/dist/core/inline/transparency.d.ts +2 -1
- package/dist/core/inline/transparency.js +31 -15
- package/dist/core/inline/visibility.d.ts +30 -49
- package/dist/core/inline/visibility.js +31 -49
- package/dist/core/inline/walk.d.ts +4 -10
- package/dist/core/inline/walk.js +4 -10
- package/dist/core/inline-render.d.ts +22 -27
- package/dist/core/inline-render.js +51 -60
- package/dist/core/lines.d.ts +67 -26
- package/dist/core/lines.js +164 -33
- package/dist/core/metadata-parity.d.ts +9 -0
- package/dist/core/metadata-parity.js +25 -0
- package/dist/core/node-views.d.ts +7 -6
- package/dist/core/node-views.js +5 -5
- package/dist/core/nodes.d.ts +34 -44
- package/dist/core/nodes.js +4 -12
- package/dist/core/parser.d.ts +27 -34
- package/dist/core/parser.js +53 -67
- package/dist/core/parsers/blockquote.d.ts +5 -8
- package/dist/core/parsers/blockquote.js +11 -10
- package/dist/core/parsers/built-in-openers.d.ts +2 -5
- package/dist/core/parsers/built-in-openers.js +5 -8
- package/dist/core/parsers/fence-syntax.d.ts +36 -7
- package/dist/core/parsers/fence-syntax.js +61 -11
- package/dist/core/parsers/fenced-code.d.ts +16 -0
- package/dist/core/parsers/fenced-code.js +16 -15
- package/dist/core/parsers/heading.d.ts +19 -2
- package/dist/core/parsers/heading.js +50 -2
- package/dist/core/parsers/html-block.d.ts +3 -6
- package/dist/core/parsers/html-block.js +10 -11
- package/dist/core/parsers/indented-code.d.ts +1 -1
- package/dist/core/parsers/indented-code.js +2 -8
- package/dist/core/parsers/link-reference.d.ts +5 -3
- package/dist/core/parsers/link-reference.js +116 -120
- package/dist/core/parsers/list.d.ts +12 -5
- package/dist/core/parsers/list.js +53 -36
- package/dist/core/parsers/paragraph.d.ts +3 -3
- package/dist/core/parsers/paragraph.js +14 -5
- package/dist/core/parsers/table-completion.d.ts +2 -5
- package/dist/core/parsers/table-completion.js +7 -10
- package/dist/core/parsers/table.d.ts +8 -8
- package/dist/core/parsers/table.js +23 -26
- package/dist/core/parsers/thematic-break.js +15 -14
- package/dist/core/paths.d.ts +13 -0
- package/dist/core/paths.js +31 -0
- package/dist/core/terminator-escalation.d.ts +0 -7
- package/dist/core/terminator-escalation.js +5 -8
- package/dist/core/url-policy.d.ts +2 -5
- package/dist/core/url-policy.js +8 -12
- package/dist/cursor/caret-memory.d.ts +34 -0
- package/dist/cursor/caret-memory.js +82 -0
- package/dist/cursor/coordinate-spaces.d.ts +26 -19
- package/dist/cursor/coordinate-spaces.js +32 -20
- package/dist/cursor/dom-walk.d.ts +7 -13
- package/dist/cursor/dom-walk.js +7 -13
- package/dist/cursor/edge-affinity.d.ts +7 -35
- package/dist/cursor/edge-affinity.js +13 -44
- package/dist/cursor/focused-caret.d.ts +6 -8
- package/dist/cursor/focused-caret.js +7 -16
- package/dist/cursor/height-model.d.ts +3 -3
- package/dist/cursor/height-model.js +5 -5
- package/dist/cursor/height-oracle.d.ts +10 -6
- package/dist/cursor/height-oracle.js +26 -74
- package/dist/cursor/observe-resize.d.ts +13 -0
- package/dist/cursor/observe-resize.js +43 -0
- package/dist/cursor/overlay-rects.d.ts +2 -5
- package/dist/cursor/overlay-rects.js +2 -5
- package/dist/cursor/overlay-remeasure.d.ts +6 -7
- package/dist/cursor/overlay-remeasure.js +10 -14
- package/dist/cursor/pending-marks.d.ts +7 -9
- package/dist/cursor/pending-marks.js +6 -27
- package/dist/cursor/point-offset.d.ts +16 -10
- package/dist/cursor/point-offset.js +60 -25
- package/dist/cursor/reveal-source.d.ts +7 -11
- package/dist/cursor/reveal-source.js +10 -18
- package/dist/cursor/scroll-ancestors.d.ts +9 -20
- package/dist/cursor/scroll-ancestors.js +14 -26
- package/dist/cursor/scroll-owner.d.ts +92 -0
- package/dist/cursor/scroll-owner.js +283 -0
- package/dist/cursor/scrollport.d.ts +14 -15
- package/dist/cursor/scrollport.js +7 -13
- package/dist/cursor/sticky-column.d.ts +6 -29
- package/dist/cursor/sticky-column.js +6 -49
- package/dist/cursor/sticky-measure.d.ts +14 -9
- package/dist/cursor/sticky-measure.js +99 -49
- package/dist/cursor/surface-backend.d.ts +41 -0
- package/dist/cursor/surface-backend.js +78 -0
- package/dist/cursor/typography-estimates.d.ts +3 -3
- package/dist/cursor/typography-estimates.js +3 -3
- package/dist/cursor/visual-lines.d.ts +25 -14
- package/dist/cursor/visual-lines.js +45 -46
- package/dist/cursor/widget-edge-snap.d.ts +10 -15
- package/dist/cursor/widget-edge-snap.js +13 -12
- package/dist/cursor/widget-offset.d.ts +110 -104
- package/dist/cursor/widget-offset.js +344 -179
- package/dist/debug/diagnostics-report.d.ts +6 -6
- package/dist/debug/diagnostics-report.js +5 -5
- package/dist/debug/dump-tree.js +2 -2
- package/dist/debug/editor-diagnostics.d.ts +15 -0
- package/dist/debug/editor-diagnostics.js +33 -0
- package/dist/debug/inspect.d.ts +2 -2
- package/dist/debug/inspect.js +4 -4
- package/dist/debug/interaction-trace.d.ts +14 -15
- package/dist/debug/interaction-trace.js +19 -20
- package/dist/debug/operations-log.d.ts +1 -1
- package/dist/debug/operations-log.js +1 -1
- package/dist/decorations/buckets.d.ts +6 -12
- package/dist/decorations/buckets.js +4 -11
- package/dist/decorations/decoration-state.svelte.d.ts +2 -3
- package/dist/decorations/decoration-state.svelte.js +24 -26
- package/dist/decorations/island-dom.d.ts +10 -18
- package/dist/decorations/island-dom.js +25 -50
- package/dist/decorations/reserved-attrs.d.ts +6 -8
- package/dist/decorations/reserved-attrs.js +30 -17
- package/dist/decorations/types.d.ts +6 -7
- package/dist/decorations/types.js +2 -1
- package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
- package/dist/decorations/use-block-decorations.svelte.js +71 -0
- package/dist/decorations/widget-dom.d.ts +3 -3
- package/dist/decorations/widget-dom.js +5 -5
- package/dist/dev-warn.d.ts +5 -2
- package/dist/dev-warn.js +16 -4
- package/dist/editor-actions/ancestry-folds.d.ts +9 -14
- package/dist/editor-actions/ancestry-folds.js +13 -18
- package/dist/editor-actions/block-edit-core.d.ts +49 -22
- package/dist/editor-actions/block-edit-core.js +279 -151
- package/dist/editor-actions/block-edit-scope.d.ts +63 -50
- package/dist/editor-actions/block-edit-scope.js +100 -48
- package/dist/editor-actions/block-edit.d.ts +2 -3
- package/dist/editor-actions/block-edit.js +14 -90
- package/dist/editor-actions/commit/history.d.ts +4 -4
- package/dist/editor-actions/commit/history.js +33 -34
- package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
- package/dist/editor-actions/commit/reading-write-gate.js +56 -0
- package/dist/editor-actions/commit/text-batch.d.ts +7 -11
- package/dist/editor-actions/commit/text-batch.js +6 -7
- package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
- package/dist/editor-actions/commit/undo-controller.js +346 -216
- package/dist/editor-actions/container-block-component.d.ts +32 -51
- package/dist/editor-actions/container-block-component.js +66 -92
- package/dist/editor-actions/container-edit.d.ts +4 -2
- package/dist/editor-actions/container-edit.js +14 -44
- package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
- package/dist/editor-actions/container-exit-overrides.js +19 -21
- package/dist/editor-actions/deps.d.ts +25 -32
- package/dist/editor-actions/enter-completion.d.ts +12 -15
- package/dist/editor-actions/enter-completion.js +49 -51
- package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
- package/dist/editor-actions/focus/focus-dispatch.js +28 -50
- package/dist/editor-actions/focus/focus-landing.d.ts +8 -11
- package/dist/editor-actions/focus/focus-landing.js +15 -14
- package/dist/editor-actions/focus/focus.d.ts +3 -2
- package/dist/editor-actions/focus/focus.js +42 -59
- package/dist/editor-actions/index.d.ts +4 -3
- package/dist/editor-actions/index.js +5 -4
- package/dist/editor-actions/inline-range-commit.d.ts +18 -16
- package/dist/editor-actions/inline-range-commit.js +45 -54
- package/dist/editor-actions/leaf-write.d.ts +11 -0
- package/dist/editor-actions/leaf-write.js +102 -0
- package/dist/editor-actions/list-context.d.ts +9 -10
- package/dist/editor-actions/list-context.js +115 -110
- package/dist/editor-actions/list-overrides.d.ts +13 -5
- package/dist/editor-actions/list-overrides.js +36 -12
- package/dist/editor-actions/merge-fallback.d.ts +10 -16
- package/dist/editor-actions/merge-fallback.js +11 -22
- package/dist/editor-actions/nested/container-actions.d.ts +37 -0
- package/dist/editor-actions/nested/container-actions.js +42 -0
- package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
- package/dist/editor-actions/nested/emptied-container.js +5 -0
- package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
- package/dist/editor-actions/nested/nested-actions.js +17 -15
- package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
- package/dist/editor-actions/nested/nested-block-edit.js +40 -134
- package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
- package/dist/editor-actions/nested/nested-focus.js +33 -21
- package/dist/editor-actions/paste-coordinator.d.ts +3 -2
- package/dist/editor-actions/paste-coordinator.js +17 -13
- package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
- package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
- package/dist/editor-actions/plugin/container.d.ts +54 -82
- package/dist/editor-actions/plugin/container.js +105 -188
- package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
- package/dist/editor-actions/plugin/directive-container.js +7 -8
- package/dist/editor-actions/reorder-action.d.ts +7 -12
- package/dist/editor-actions/reorder-action.js +32 -48
- package/dist/editor-actions/reorder-drag.d.ts +12 -8
- package/dist/editor-actions/reorder-drag.js +45 -41
- package/dist/editor-actions/replacement-focus.d.ts +13 -21
- package/dist/editor-actions/replacement-focus.js +32 -33
- package/dist/editor-actions/search-replace.js +71 -67
- package/dist/editor-actions/stored-caret.d.ts +7 -0
- package/dist/editor-actions/stored-caret.js +10 -0
- package/dist/editor-actions/table-context.d.ts +9 -11
- package/dist/editor-actions/table-context.js +70 -93
- package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
- package/dist/editor-actions/unwrap-strategies.js +52 -63
- package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
- package/dist/editor-actions/whole-block-focus-surface.js +43 -53
- package/dist/editor-events.d.ts +25 -29
- package/dist/editor-events.js +17 -28
- package/dist/editor-keys.d.ts +96 -104
- package/dist/editor-keys.js +11 -24
- package/dist/editor-props.d.ts +88 -71
- package/dist/editor-rects.d.ts +23 -34
- package/dist/editor-rects.js +9 -77
- package/dist/env.d.ts +6 -4
- package/dist/env.js +8 -4
- package/dist/index.d.ts +6 -2
- package/dist/index.js +5 -2
- package/dist/inline-menu/inline-menu-session.d.ts +37 -0
- package/dist/inline-menu/inline-menu-session.js +98 -0
- package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
- package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
- package/dist/inline-menu/types.d.ts +77 -0
- package/dist/inline-menu/types.js +7 -0
- package/dist/invariants/child-id-parity.d.ts +23 -0
- package/dist/invariants/child-id-parity.js +39 -0
- package/dist/invariants/commit-paths.d.ts +4 -4
- package/dist/invariants/commit-paths.js +4 -4
- package/dist/invariants/commit-scope.d.ts +4 -4
- package/dist/invariants/commit-scope.js +9 -8
- package/dist/invariants/context-keys.d.ts +2 -5
- package/dist/invariants/context-keys.js +3 -6
- package/dist/invariants/descriptor.d.ts +2 -6
- package/dist/invariants/descriptor.js +2 -6
- package/dist/invariants/inline-transitions.d.ts +9 -16
- package/dist/invariants/inline-transitions.js +10 -18
- package/dist/invariants/install.d.ts +18 -27
- package/dist/invariants/install.js +29 -30
- package/dist/invariants/keeps-a-block.d.ts +7 -0
- package/dist/invariants/keeps-a-block.js +14 -0
- package/dist/invariants/landable-caret.d.ts +5 -7
- package/dist/invariants/landable-caret.js +8 -11
- package/dist/invariants/landing-focus-scroll.d.ts +7 -0
- package/dist/invariants/landing-focus-scroll.js +13 -0
- package/dist/invariants/landing-value.d.ts +13 -0
- package/dist/invariants/landing-value.js +27 -0
- package/dist/invariants/marker-css-parity.d.ts +5 -6
- package/dist/invariants/marker-css-parity.js +11 -12
- package/dist/invariants/measures-in-own-list.d.ts +6 -0
- package/dist/invariants/measures-in-own-list.js +13 -0
- package/dist/invariants/node-shape.d.ts +18 -37
- package/dist/invariants/node-shape.js +123 -79
- package/dist/invariants/open-tail.d.ts +7 -0
- package/dist/invariants/open-tail.js +45 -0
- package/dist/invariants/placement-ends-widget.d.ts +8 -0
- package/dist/invariants/placement-ends-widget.js +13 -0
- package/dist/invariants/registry.d.ts +27 -66
- package/dist/invariants/registry.js +61 -137
- package/dist/invariants/render-fidelity.d.ts +4 -4
- package/dist/invariants/render-fidelity.js +5 -5
- package/dist/invariants/selection-endpoints.d.ts +6 -7
- package/dist/invariants/selection-endpoints.js +18 -16
- package/dist/invariants/single-node-sink.d.ts +4 -5
- package/dist/invariants/single-node-sink.js +4 -5
- package/dist/invariants/snapshot-integrity.d.ts +5 -6
- package/dist/invariants/snapshot-integrity.js +1 -1
- package/dist/invariants/structural-descriptor.d.ts +6 -15
- package/dist/invariants/structural-descriptor.js +6 -15
- package/dist/menu-icons.d.ts +47 -0
- package/dist/menu-icons.js +113 -0
- package/dist/perf/instruments.d.ts +20 -5
- package/dist/perf/instruments.js +35 -15
- package/dist/perf/use-mount-gauge.svelte.js +4 -4
- package/dist/plugin.d.ts +37 -8
- package/dist/plugin.js +100 -77
- package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
- package/dist/plugins/admonitions/admonition-kind.js +12 -10
- package/dist/plugins/admonitions/convert-document.d.ts +5 -5
- package/dist/plugins/admonitions/convert-document.js +8 -7
- package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
- package/dist/plugins/admonitions/gh-alert.js +21 -22
- package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
- package/dist/plugins/admonitions/github-alert-kind.js +28 -37
- package/dist/plugins/admonitions/index.js +2 -2
- package/dist/plugins/admonitions/kinds.d.ts +1 -1
- package/dist/plugins/admonitions/register.js +11 -2
- package/dist/plugins/details/DetailsBlock.svelte +20 -20
- package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
- package/dist/plugins/details/details-disclosure.svelte.js +6 -7
- package/dist/plugins/details/details-kind.d.ts +6 -7
- package/dist/plugins/details/details-kind.js +44 -59
- package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
- package/dist/plugins/emoji/emoji-recognizer.js +7 -14
- package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
- package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
- package/dist/plugins/footnotes/constants.d.ts +2 -0
- package/dist/plugins/footnotes/constants.js +3 -0
- package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
- package/dist/plugins/footnotes/footnote-definition.js +69 -45
- package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
- package/dist/plugins/footnotes/footnote-lookup.js +14 -26
- package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
- package/dist/plugins/footnotes/footnote-numbering.js +22 -31
- package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
- package/dist/plugins/footnotes/footnote-reference.js +8 -13
- package/dist/plugins/footnotes/index.js +2 -3
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
- package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
- package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
- package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
- package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
- package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
- package/dist/plugins/highlight-occurrences/word-char.js +4 -0
- package/dist/plugins/latex/BlockMath.svelte +58 -75
- package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
- package/dist/plugins/latex/MathInline.svelte +10 -9
- package/dist/plugins/latex/flanking.d.ts +1 -0
- package/dist/plugins/latex/flanking.js +3 -0
- package/dist/plugins/latex/index.d.ts +1 -1
- package/dist/plugins/latex/latex-kind.d.ts +4 -4
- package/dist/plugins/latex/latex-kind.js +78 -67
- package/dist/plugins/latex/math-completion.d.ts +1 -1
- package/dist/plugins/latex/math-completion.js +5 -8
- package/dist/plugins/latex/math-layout.d.ts +2 -8
- package/dist/plugins/latex/math-layout.js +0 -9
- package/dist/plugins/latex/math-renderer.d.ts +17 -20
- package/dist/plugins/latex/math-renderer.js +21 -38
- package/dist/plugins/latex/math-source.d.ts +4 -8
- package/dist/plugins/latex/math-source.js +36 -81
- package/dist/plugins/latex/register.d.ts +10 -11
- package/dist/plugins/latex/register.js +24 -10
- package/dist/plugins/latex/renderer.d.ts +9 -10
- package/dist/plugins/latex/renderer.js +9 -24
- package/dist/plugins/mermaid/MermaidBlock.svelte +51 -45
- package/dist/plugins/mermaid/index.js +1 -1
- package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
- package/dist/plugins/mermaid/mermaid-kind.js +30 -47
- package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
- package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
- package/dist/plugins/mermaid/register.d.ts +3 -3
- package/dist/plugins/mermaid/register.js +5 -5
- package/dist/plugins/mermaid/renderer.d.ts +5 -5
- package/dist/plugins/mermaid/renderer.js +8 -11
- package/dist/plugins/parrot/ParrotBlock.svelte +15 -6
- package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
- package/dist/plugins/parrot/parrot-plugin.js +3 -3
- package/dist/plugins/slash-commands/filter.d.ts +23 -0
- package/dist/plugins/slash-commands/filter.js +31 -0
- package/dist/plugins/slash-commands/index.d.ts +2 -0
- package/dist/plugins/slash-commands/index.js +2 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
- package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
- package/dist/plugins/slash-commands/slash-source.js +108 -0
- package/dist/plugins/toc/TocBlock.svelte +23 -22
- package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
- package/dist/plugins/toc/heading-outline.d.ts +7 -12
- package/dist/plugins/toc/heading-outline.js +22 -36
- package/dist/plugins/toc/navigation-queue.d.ts +2 -4
- package/dist/plugins/toc/toc-plugin.d.ts +5 -5
- package/dist/plugins/toc/toc-plugin.js +20 -13
- package/dist/presentation-mode.d.ts +15 -23
- package/dist/presentation-mode.js +19 -25
- package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
- package/dist/reactivity/block-list-state.svelte.js +8 -9
- package/dist/reactivity/block-window.svelte.d.ts +12 -6
- package/dist/reactivity/block-window.svelte.js +44 -17
- package/dist/reactivity/child-list.d.ts +34 -0
- package/dist/reactivity/child-list.js +48 -0
- package/dist/reactivity/content-version.svelte.d.ts +4 -7
- package/dist/reactivity/content-version.svelte.js +3 -5
- package/dist/reactivity/hold-across.d.ts +39 -0
- package/dist/reactivity/hold-across.js +57 -0
- package/dist/reactivity/layout-state.svelte.d.ts +27 -0
- package/dist/reactivity/layout-state.svelte.js +51 -0
- package/dist/reactivity/list-tree.d.ts +39 -0
- package/dist/reactivity/list-tree.js +132 -0
- package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
- package/dist/reactivity/list-windowing.svelte.js +141 -310
- package/dist/reactivity/measure-batch.d.ts +6 -8
- package/dist/reactivity/measure-batch.js +5 -6
- package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
- package/dist/reactivity/publish-ref.svelte.js +21 -85
- package/dist/reactivity/scope-geometry.d.ts +6 -13
- package/dist/reactivity/scope-geometry.js +7 -14
- package/dist/reactivity/state-registry.d.ts +5 -5
- package/dist/reactivity/state-registry.js +11 -15
- package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
- package/dist/reactivity/use-container-windowing.svelte.js +64 -74
- package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
- package/dist/reactivity/use-measured-child.svelte.js +41 -0
- package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
- package/dist/reactivity/use-window-floor.svelte.js +27 -0
- package/dist/reactivity/window-slice.d.ts +4 -4
- package/dist/reactivity/window-slice.js +0 -2
- package/dist/renderer-slot.d.ts +48 -0
- package/dist/renderer-slot.js +85 -0
- package/dist/scan-index.d.ts +4 -4
- package/dist/scan-index.js +4 -4
- package/dist/schema/block-commands.d.ts +69 -54
- package/dist/schema/block-commands.js +91 -104
- package/dist/schema/block-completions.d.ts +16 -19
- package/dist/schema/block-completions.js +25 -32
- package/dist/schema/block-component-registry.d.ts +13 -14
- package/dist/schema/block-component-registry.js +19 -17
- package/dist/schema/block-kind-descriptor.d.ts +234 -168
- package/dist/schema/block-kind-descriptor.js +151 -66
- package/dist/schema/block-openers.d.ts +48 -39
- package/dist/schema/block-openers.js +73 -83
- package/dist/schema/built-in-descriptors.d.ts +3 -5
- package/dist/schema/built-in-descriptors.js +96 -80
- package/dist/schema/child-spans.d.ts +12 -10
- package/dist/schema/child-spans.js +68 -34
- package/dist/schema/closure.d.ts +18 -16
- package/dist/schema/closure.js +24 -14
- package/dist/schema/command-id.d.ts +6 -8
- package/dist/schema/command-id.js +20 -25
- package/dist/schema/commands.d.ts +78 -84
- package/dist/schema/commands.js +152 -117
- package/dist/schema/container-raw.d.ts +51 -11
- package/dist/schema/container-raw.js +143 -14
- package/dist/schema/container-rebuilders.d.ts +17 -15
- package/dist/schema/container-rebuilders.js +30 -22
- package/dist/schema/context-actions.d.ts +25 -13
- package/dist/schema/context-actions.js +32 -17
- package/dist/schema/define-plugin-block.d.ts +8 -6
- package/dist/schema/define-plugin-block.js +6 -4
- package/dist/schema/fenced-code-raw.d.ts +30 -17
- package/dist/schema/fenced-code-raw.js +155 -107
- package/dist/schema/global-commands.d.ts +6 -6
- package/dist/schema/global-commands.js +14 -22
- package/dist/schema/height-estimates.d.ts +31 -0
- package/dist/schema/height-estimates.js +64 -0
- package/dist/schema/inline-construct-policy.d.ts +42 -55
- package/dist/schema/inline-construct-policy.js +36 -35
- package/dist/schema/insert-catalogue.d.ts +30 -0
- package/dist/schema/insert-catalogue.js +95 -0
- package/dist/schema/keybinding-overrides.d.ts +9 -11
- package/dist/schema/keybinding-overrides.js +1 -1
- package/dist/schema/keybindings.d.ts +15 -7
- package/dist/schema/keybindings.js +21 -9
- package/dist/schema/merge-rules.d.ts +5 -7
- package/dist/schema/merge-rules.js +7 -9
- package/dist/schema/opener-priorities.d.ts +4 -4
- package/dist/schema/opener-priorities.js +4 -4
- package/dist/schema/operations.d.ts +8 -10
- package/dist/schema/operations.js +3 -3
- package/dist/schema/page-role.d.ts +14 -0
- package/dist/schema/page-role.js +19 -0
- package/dist/schema/plugin-activation.d.ts +4 -6
- package/dist/schema/plugin-activation.js +12 -10
- package/dist/schema/plugin-editor-context.d.ts +25 -10
- package/dist/schema/plugin-editor-context.js +40 -9
- package/dist/schema/plugin-install.d.ts +49 -17
- package/dist/schema/plugin-install.js +51 -25
- package/dist/schema/plugin-kind.d.ts +12 -8
- package/dist/schema/plugin-kind.js +35 -42
- package/dist/schema/plugin-name.js +3 -3
- package/dist/schema/plugin-registry.d.ts +54 -0
- package/dist/schema/plugin-registry.js +70 -0
- package/dist/schema/reading.d.ts +23 -0
- package/dist/schema/reading.js +7 -0
- package/dist/schema/register-once.d.ts +3 -5
- package/dist/schema/register-once.js +7 -16
- package/dist/schema/registration-checks.d.ts +12 -16
- package/dist/schema/registration-checks.js +35 -51
- package/dist/schema/registration-pairs.d.ts +54 -0
- package/dist/schema/registration-pairs.js +48 -0
- package/dist/schema/registration-pending.d.ts +8 -12
- package/dist/schema/registration-pending.js +9 -9
- package/dist/schema/registry-reset.d.ts +8 -4
- package/dist/schema/registry-reset.js +13 -26
- package/dist/schema/registry-view.d.ts +25 -13
- package/dist/schema/registry-view.js +26 -20
- package/dist/schema/reserved-chords.d.ts +9 -10
- package/dist/schema/reserved-chords.js +63 -80
- package/dist/schema/reserved-chrome.d.ts +12 -11
- package/dist/schema/reserved-chrome.js +15 -11
- package/dist/schema/setext-raw.d.ts +13 -0
- package/dist/schema/setext-raw.js +33 -0
- package/dist/schema/stored-as.d.ts +20 -0
- package/dist/schema/stored-as.js +6 -0
- package/dist/schema/table-cell-raw.d.ts +18 -7
- package/dist/schema/table-cell-raw.js +28 -7
- package/dist/schema/whole-block-unit.d.ts +5 -4
- package/dist/schema/whole-block-unit.js +5 -4
- package/dist/search/document-scan.d.ts +3 -3
- package/dist/search/document-scan.js +2 -2
- package/dist/search/matcher.d.ts +1 -1
- package/dist/search/regex-executor.d.ts +5 -6
- package/dist/search/regex-executor.js +6 -8
- package/dist/search/replace.d.ts +2 -5
- package/dist/search/replace.js +2 -5
- package/dist/search/search-state.svelte.d.ts +5 -5
- package/dist/search/search-state.svelte.js +12 -16
- package/dist/selection/autoscroll.d.ts +6 -9
- package/dist/selection/block-hit-test.d.ts +16 -24
- package/dist/selection/block-hit-test.js +29 -22
- package/dist/selection/caret-doors.d.ts +15 -14
- package/dist/selection/caret-doors.js +37 -26
- package/dist/selection/caret-landing.d.ts +62 -0
- package/dist/selection/caret-landing.js +157 -0
- package/dist/selection/caret-restore.d.ts +17 -10
- package/dist/selection/caret-restore.js +10 -22
- package/dist/selection/caret-target.d.ts +30 -0
- package/dist/selection/caret-target.js +84 -0
- package/dist/selection/char-endpoint-snap.d.ts +6 -10
- package/dist/selection/char-endpoint-snap.js +8 -14
- package/dist/selection/clipboard-text.d.ts +5 -12
- package/dist/selection/clipboard-text.js +69 -172
- package/dist/selection/covered-block.d.ts +6 -8
- package/dist/selection/covered-block.js +8 -19
- package/dist/selection/cross-block/clipboard.d.ts +3 -2
- package/dist/selection/cross-block/clipboard.js +13 -4
- package/dist/selection/cross-block/dispatch.d.ts +47 -43
- package/dist/selection/cross-block/dispatch.js +12 -23
- package/dist/selection/cross-block/format-range.d.ts +18 -21
- package/dist/selection/cross-block/format-range.js +104 -103
- package/dist/selection/cross-block/format-toggle.d.ts +10 -15
- package/dist/selection/cross-block/format-toggle.js +28 -33
- package/dist/selection/cross-block/keydown.d.ts +4 -4
- package/dist/selection/cross-block/keydown.js +92 -125
- package/dist/selection/cross-block/ops.d.ts +19 -34
- package/dist/selection/cross-block/ops.js +110 -95
- package/dist/selection/cross-block/paste.d.ts +2 -3
- package/dist/selection/cross-block/paste.js +59 -96
- package/dist/selection/cross-block/pointer.d.ts +17 -15
- package/dist/selection/cross-block/pointer.js +74 -25
- package/dist/selection/cross-block/type-replace.d.ts +4 -6
- package/dist/selection/cross-block/type-replace.js +51 -134
- package/dist/selection/dead-space-caret.d.ts +19 -30
- package/dist/selection/dead-space-caret.js +70 -88
- package/dist/selection/drag-pointer.d.ts +7 -9
- package/dist/selection/drag-pointer.js +23 -33
- package/dist/selection/gap-caret.d.ts +17 -28
- package/dist/selection/gap-caret.js +14 -26
- package/dist/selection/grid-selection.d.ts +12 -0
- package/dist/selection/grid-selection.js +22 -0
- package/dist/selection/keyboard-extend.d.ts +27 -40
- package/dist/selection/keyboard-extend.js +94 -117
- package/dist/selection/multi-click.d.ts +13 -18
- package/dist/selection/multi-click.js +32 -38
- package/dist/selection/native-bridge.d.ts +29 -39
- package/dist/selection/native-bridge.js +78 -127
- package/dist/selection/nearest-block.d.ts +17 -12
- package/dist/selection/nearest-block.js +37 -18
- package/dist/selection/path-lookup.d.ts +25 -16
- package/dist/selection/path-lookup.js +101 -18
- package/dist/selection/path-math.d.ts +9 -11
- package/dist/selection/path-math.js +5 -7
- package/dist/selection/pointer-gesture.d.ts +5 -5
- package/dist/selection/pointer-gesture.js +5 -5
- package/dist/selection/pointer-session.d.ts +10 -16
- package/dist/selection/pointer-session.js +6 -7
- package/dist/selection/primitives.d.ts +64 -40
- package/dist/selection/primitives.js +57 -67
- package/dist/selection/range-coverage.d.ts +94 -0
- package/dist/selection/range-coverage.js +365 -0
- package/dist/selection/range-delete-ceremony.d.ts +28 -74
- package/dist/selection/range-delete-ceremony.js +100 -141
- package/dist/selection/range-delete-chrome.d.ts +20 -33
- package/dist/selection/range-delete-chrome.js +53 -78
- package/dist/selection/range-delete-table-coverage.d.ts +11 -25
- package/dist/selection/range-delete-table-coverage.js +42 -112
- package/dist/selection/range-delete-table.d.ts +14 -12
- package/dist/selection/range-delete-table.js +106 -310
- package/dist/selection/range-delete.d.ts +18 -23
- package/dist/selection/range-delete.js +83 -123
- package/dist/selection/round-trip-restore.d.ts +18 -0
- package/dist/selection/round-trip-restore.js +19 -0
- package/dist/selection/selection-announcer.d.ts +17 -0
- package/dist/selection/selection-announcer.js +25 -0
- package/dist/selection/selection-description.d.ts +4 -3
- package/dist/selection/selection-description.js +5 -4
- package/dist/selection/selection-drop.d.ts +34 -16
- package/dist/selection/selection-drop.js +159 -95
- package/dist/selection/selection-restore.d.ts +20 -33
- package/dist/selection/selection-restore.js +21 -44
- package/dist/selection/selection-state.svelte.d.ts +50 -42
- package/dist/selection/selection-state.svelte.js +144 -98
- package/dist/selection/shared-keydown.d.ts +22 -27
- package/dist/selection/shared-keydown.js +25 -45
- package/dist/selection/table-endpoint-snap.d.ts +17 -41
- package/dist/selection/table-endpoint-snap.js +54 -80
- package/dist/selection/table-rect-extend.d.ts +3 -6
- package/dist/selection/table-rect-extend.js +19 -14
- package/dist/styles/editor-theme.css +60 -53
- package/dist/styles/editor.css +201 -143
- package/dist/testing/conformance-core.d.ts +50 -18
- package/dist/testing/conformance-core.js +88 -50
- package/dist/testing/container-conformance.d.ts +48 -84
- package/dist/testing/container-conformance.js +159 -285
- package/dist/testing/headless-actions.d.ts +34 -19
- package/dist/testing/headless-actions.js +116 -65
- package/dist/testing/headless-block-list.svelte.d.ts +16 -0
- package/dist/testing/headless-block-list.svelte.js +22 -0
- package/dist/testing/inline-conformance.d.ts +15 -22
- package/dist/testing/inline-conformance.js +131 -148
- package/dist/testing/kind-conformance.d.ts +19 -24
- package/dist/testing/kind-conformance.js +204 -117
- package/dist/testing/kit-reading.d.ts +7 -0
- package/dist/testing/kit-reading.js +16 -0
- package/dist/testing/mount-dom-stubs.d.ts +4 -5
- package/dist/testing/mount-dom-stubs.js +8 -5
- package/dist/testing/parse-convergence.d.ts +10 -10
- package/dist/testing/parse-convergence.js +14 -49
- package/dist/testing.d.ts +13 -9
- package/dist/testing.js +28 -38
- package/dist/tree-operations/blockquote.d.ts +8 -14
- package/dist/tree-operations/blockquote.js +25 -45
- package/dist/tree-operations/chain-rebuild.d.ts +34 -25
- package/dist/tree-operations/chain-rebuild.js +115 -52
- package/dist/tree-operations/children.d.ts +5 -9
- package/dist/tree-operations/children.js +7 -11
- package/dist/tree-operations/cleanup.d.ts +6 -7
- package/dist/tree-operations/cleanup.js +14 -11
- package/dist/tree-operations/clone.js +5 -4
- package/dist/tree-operations/container-lift.d.ts +10 -5
- package/dist/tree-operations/container-lift.js +20 -14
- package/dist/tree-operations/container-offsets.d.ts +22 -0
- package/dist/tree-operations/container-offsets.js +89 -0
- package/dist/tree-operations/content-write.d.ts +52 -29
- package/dist/tree-operations/content-write.js +155 -110
- package/dist/tree-operations/index.d.ts +4 -4
- package/dist/tree-operations/index.js +4 -4
- package/dist/tree-operations/keep-one-block.d.ts +10 -0
- package/dist/tree-operations/keep-one-block.js +19 -0
- package/dist/tree-operations/leaf-range.d.ts +33 -0
- package/dist/tree-operations/leaf-range.js +67 -0
- package/dist/tree-operations/list/empty-check.d.ts +2 -3
- package/dist/tree-operations/list/empty-check.js +4 -4
- package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
- package/dist/tree-operations/list/exit-replacement.js +4 -9
- package/dist/tree-operations/list/item-partition.d.ts +2 -2
- package/dist/tree-operations/list/item-partition.js +2 -2
- package/dist/tree-operations/list/list-builders.d.ts +18 -16
- package/dist/tree-operations/list/list-builders.js +59 -30
- package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
- package/dist/tree-operations/list/ordered-markers.js +7 -16
- package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
- package/dist/tree-operations/list/reconcile-task.js +80 -23
- package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
- package/dist/tree-operations/list/sublist-separator.js +20 -27
- package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
- package/dist/tree-operations/list/task-paragraph.js +54 -0
- package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
- package/dist/tree-operations/list/unwrap-merge.js +44 -79
- package/dist/tree-operations/node-ops.d.ts +30 -52
- package/dist/tree-operations/node-ops.js +152 -218
- package/dist/tree-operations/node-primitives.d.ts +44 -31
- package/dist/tree-operations/node-primitives.js +84 -60
- package/dist/tree-operations/open-tail.d.ts +25 -0
- package/dist/tree-operations/open-tail.js +100 -0
- package/dist/tree-operations/parse-block.d.ts +15 -2
- package/dist/tree-operations/parse-block.js +19 -4
- package/dist/tree-operations/paste/apply.d.ts +7 -8
- package/dist/tree-operations/paste/apply.js +33 -63
- package/dist/tree-operations/paste/body-write.d.ts +8 -6
- package/dist/tree-operations/paste/body-write.js +13 -14
- package/dist/tree-operations/paste/container-match.d.ts +7 -10
- package/dist/tree-operations/paste/container-match.js +76 -58
- package/dist/tree-operations/paste/container-paste.d.ts +3 -3
- package/dist/tree-operations/paste/container-paste.js +3 -3
- package/dist/tree-operations/paste/dispatch.d.ts +26 -29
- package/dist/tree-operations/paste/dispatch.js +68 -53
- package/dist/tree-operations/paste/focus-target.d.ts +11 -14
- package/dist/tree-operations/paste/focus-target.js +13 -18
- package/dist/tree-operations/paste/hooks.d.ts +7 -12
- package/dist/tree-operations/paste/hooks.js +49 -46
- package/dist/tree-operations/paste/line-ending.d.ts +11 -0
- package/dist/tree-operations/paste/line-ending.js +32 -0
- package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
- package/dist/tree-operations/paste/list-absorb.js +17 -19
- package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
- package/dist/tree-operations/paste/list-break-out.js +24 -32
- package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
- package/dist/tree-operations/paste/parent-scope.js +9 -16
- package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
- package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
- package/dist/tree-operations/paste/paste-replacement.js +73 -42
- package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
- package/dist/tree-operations/paste/paste-transforms.js +18 -27
- package/dist/tree-operations/paste/replacement-parse.d.ts +9 -7
- package/dist/tree-operations/paste/replacement-parse.js +12 -10
- package/dist/tree-operations/paste/strategy.d.ts +1 -1
- package/dist/tree-operations/paste/strategy.js +1 -1
- package/dist/tree-operations/paste/table-slice.js +15 -10
- package/dist/tree-operations/paste-surfaces.d.ts +18 -29
- package/dist/tree-operations/paste-surfaces.js +14 -10
- package/dist/tree-operations/path-mutate.d.ts +7 -8
- package/dist/tree-operations/path-mutate.js +4 -4
- package/dist/tree-operations/reorder-unit.d.ts +4 -5
- package/dist/tree-operations/reorder-unit.js +5 -6
- package/dist/tree-operations/reorder.d.ts +7 -9
- package/dist/tree-operations/reorder.js +39 -40
- package/dist/tree-operations/settle.d.ts +42 -53
- package/dist/tree-operations/settle.js +241 -162
- package/dist/tree-operations/sharing.d.ts +5 -5
- package/dist/tree-operations/splice-many.d.ts +5 -5
- package/dist/tree-operations/splice-many.js +5 -5
- package/dist/tree-operations/stored-as.d.ts +13 -0
- package/dist/tree-operations/stored-as.js +48 -0
- package/dist/tree-operations/structural-change.d.ts +11 -15
- package/dist/tree-operations/structural-change.js +10 -14
- package/dist/tree-operations/structural-suffix.d.ts +22 -0
- package/dist/tree-operations/structural-suffix.js +61 -0
- package/dist/tree-operations/sub-table-copy.d.ts +7 -0
- package/dist/tree-operations/sub-table-copy.js +40 -36
- package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
- package/dist/tree-operations/table-grid-clipboard.js +11 -36
- package/dist/tree-operations/table-mutations.d.ts +7 -3
- package/dist/tree-operations/table-mutations.js +45 -9
- package/dist/tree-operations/unshare.d.ts +11 -15
- package/dist/tree-operations/unshare.js +15 -17
- package/dist/undo/manager.js +1 -1
- package/dist/undo/types.d.ts +2 -2
- package/docs/guide/consumer-guide.md +327 -205
- package/docs/guide/directives.md +7 -7
- package/docs/guide/plugin-api.md +253 -185
- package/docs/guide/plugin-guide.md +332 -235
- package/docs/guide/plugin-testing.md +96 -82
- package/package.json +12 -16
- package/dist/ambient/ambient-cursor.d.ts +0 -41
- package/dist/ambient/ambient-cursor.js +0 -120
- package/dist/components/blocks/code/code-paste.d.ts +0 -24
- package/dist/components/blocks/code/code-paste.js +0 -21
- package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
- package/dist/components/blocks/table/cell-clipboard.js +0 -67
- package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
- package/dist/components/blocks/text/hidden-suffix.js +0 -15
- package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
- package/dist/components/image/image-source-bytes.d.ts +0 -15
- package/dist/components/image/image-source-bytes.js +0 -80
- package/dist/cursor/content-offsets.d.ts +0 -29
- package/dist/cursor/content-offsets.js +0 -151
- package/dist/cursor/reveal-anchor.d.ts +0 -30
- package/dist/cursor/reveal-anchor.js +0 -31
- package/dist/cursor/scroll-hold.d.ts +0 -10
- package/dist/cursor/scroll-hold.js +0 -22
- package/dist/invariants/split-landing.d.ts +0 -8
- package/dist/invariants/split-landing.js +0 -15
- package/dist/tree-operations/list/terminator.d.ts +0 -17
- package/dist/tree-operations/list/terminator.js +0 -60
- package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -31
- package/dist/tree-operations/paste/replace-block-at-parent.js +0 -78
|
@@ -1,44 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Edge affinity: which of the two raw offsets a caret means when it sits beside a hidden
|
|
3
|
-
* marker run, whose interior paints nothing so both offsets land on one pixel.
|
|
4
|
-
*
|
|
5
|
-
* typing seat, which reads `get()` and keeps its own default when it answers null.
|
|
3
|
+
* marker run, whose interior paints nothing so both offsets land on one pixel. The caret memory
|
|
4
|
+
* (`cursor/caret-memory.ts`) holds the answer; this module decides it from the key.
|
|
6
5
|
*/
|
|
7
6
|
/**
|
|
8
|
-
* Which raw offset a hidden run's one pixel names. Two answers are positional
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
7
|
+
* Which raw offset a hidden run's one pixel names. Two answers are positional, the run's `near`
|
|
8
|
+
* (earlier) or `far` (later) side in walk order, and one is relative to the construct: `outside`
|
|
9
|
+
* means past the construct's delimiters whichever side that is, so it reads as the run's start
|
|
10
|
+
* at an opener and its end at a closer.
|
|
12
11
|
*/
|
|
13
12
|
export type EdgeAffinity = 'near' | 'far' | 'outside';
|
|
14
|
-
export interface EdgeAffinityState {
|
|
15
|
-
get(): EdgeAffinity | null;
|
|
16
|
-
/**
|
|
17
|
-
* The only door a keydown handler may use; `reset()` stays public for the lifecycle,
|
|
18
|
-
* commit, undo and pointer callers, whose unconditional clear has no key to classify.
|
|
19
|
-
*/
|
|
20
|
-
note(e: Pick<KeyboardEvent, 'key' | 'altKey'> & Partial<Pick<KeyboardEvent, 'metaKey'>>): void;
|
|
21
|
-
/** A committed keystroke belongs to the content whatever arrival preceded it. */
|
|
22
|
-
noteTyping(): void;
|
|
23
|
-
/**
|
|
24
|
-
* A caret seated at an EXTREME rather than stepped there — a range collapsing onto its own
|
|
25
|
-
* edge. The key that triggered it is directional, but the caret took no step, so the side it
|
|
26
|
-
* means is construct-relative, the same answer a line extreme gives.
|
|
27
|
-
*/
|
|
28
|
-
noteExtreme(): void;
|
|
29
|
-
reset(): void;
|
|
30
|
-
}
|
|
31
|
-
export interface EdgeAffinityDeps {
|
|
32
|
-
/**
|
|
33
|
-
* Ephemeral caret state with this same lifetime rides the invalidation (pending marks,
|
|
34
|
-
* `cursor/pending-marks.ts`). Composed rather than copied at each seam: every seat below
|
|
35
|
-
* already reaches exactly one of these three doors.
|
|
36
|
-
*/
|
|
37
|
-
onInvalidate?: () => void;
|
|
38
|
-
}
|
|
39
|
-
export declare function createEdgeAffinityState(deps?: EdgeAffinityDeps): EdgeAffinityState;
|
|
40
13
|
/** What a keydown does to the affinity. */
|
|
41
14
|
export type EdgeAffinityAction = EdgeAffinity | 'preserve' | 'reset';
|
|
42
|
-
/**
|
|
43
|
-
* testable without a DOM or a state instance. */
|
|
15
|
+
/** Pure on the key, so the matrix is testable without a DOM or a memory instance. */
|
|
44
16
|
export declare function classifyArrivalKey(key: string, metaKey?: boolean): EdgeAffinityAction;
|
|
@@ -1,61 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Edge affinity: which of the two raw offsets a caret means when it sits beside a hidden
|
|
3
|
-
* marker run, whose interior paints nothing so both offsets land on one pixel.
|
|
4
|
-
*
|
|
5
|
-
* typing seat, which reads `get()` and keeps its own default when it answers null.
|
|
3
|
+
* marker run, whose interior paints nothing so both offsets land on one pixel. The caret memory
|
|
4
|
+
* (`cursor/caret-memory.ts`) holds the answer; this module decides it from the key.
|
|
6
5
|
*/
|
|
7
6
|
import { BARE_MODIFIER_KEYS, isCharacterKey } from '../schema/keybindings';
|
|
8
|
-
|
|
9
|
-
let affinity = null;
|
|
10
|
-
/** Sets the side AND settles everything riding on it — the two are one act, so no caller
|
|
11
|
-
* can do the first without the second. */
|
|
12
|
-
function settle(next) {
|
|
13
|
-
affinity = next;
|
|
14
|
-
deps.onInvalidate?.();
|
|
15
|
-
}
|
|
16
|
-
return {
|
|
17
|
-
get: () => affinity,
|
|
18
|
-
noteTyping: () => settle('near'),
|
|
19
|
-
noteExtreme: () => settle('outside'),
|
|
20
|
-
reset: () => settle(null),
|
|
21
|
-
note: (e) => {
|
|
22
|
-
// Alt+Arrow is the block-reorder chord, not caret nav.
|
|
23
|
-
if (e.altKey && (e.key === 'ArrowUp' || e.key === 'ArrowDown'))
|
|
24
|
-
return;
|
|
25
|
-
const action = classifyArrivalKey(e.key, e.metaKey);
|
|
26
|
-
// A preserved key left the caret where it was — the chord that pends a mark and the
|
|
27
|
-
// byte that spends it are both preserved, so neither may invalidate.
|
|
28
|
-
if (action === 'preserve')
|
|
29
|
-
return;
|
|
30
|
-
settle(action === 'reset' ? null : action);
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
/** The decision {@link EdgeAffinityState.note} enacts. Pure on the key, so the matrix is
|
|
35
|
-
* testable without a DOM or a state instance. */
|
|
7
|
+
/** Pure on the key, so the matrix is testable without a DOM or a memory instance. */
|
|
36
8
|
export function classifyArrivalKey(key, metaKey = false) {
|
|
37
|
-
// macOS Cmd+Arrow
|
|
38
|
-
//
|
|
9
|
+
// macOS Cmd+Arrow jumps to the line's end, a placement rather than a step, so it takes
|
|
10
|
+
// Home/End's answer. Windows and Linux never deliver meta+arrow to the page.
|
|
39
11
|
if (metaKey && (key === 'ArrowLeft' || key === 'ArrowRight'))
|
|
40
12
|
return 'outside';
|
|
41
|
-
// A step stops on the side of the run it
|
|
42
|
-
//
|
|
43
|
-
// (delimiter-autopair.ts) or a toggle's, not the arrow's.
|
|
13
|
+
// A step stops on the side of the run it came from, so one keypress never changes which construct
|
|
14
|
+
// the caret is in (`docs/design/live-mode.md` § 4.2 Typing at a hidden edge).
|
|
44
15
|
if (key === 'ArrowRight' || key === 'ArrowDown' || key === 'PageDown')
|
|
45
16
|
return 'near';
|
|
46
17
|
if (key === 'ArrowLeft' || key === 'ArrowUp' || key === 'PageUp')
|
|
47
18
|
return 'far';
|
|
48
|
-
//
|
|
49
|
-
//
|
|
50
|
-
// walk-order answer from `End` after a line-trailing one.
|
|
19
|
+
// Home and End are relative to the construct: `Home` before a construct starting the line means
|
|
20
|
+
// before its opener, the run's earlier side, the opposite of `End` after one ending the line.
|
|
51
21
|
if (key === 'Home' || key === 'End')
|
|
52
22
|
return 'outside';
|
|
53
|
-
// Bare modifiers
|
|
54
|
-
//
|
|
55
|
-
// preserves because its write seat reads the side later in this same keydown.
|
|
23
|
+
// Bare modifiers come from the key-combination parser, which knows AltGraph. A printable key
|
|
24
|
+
// preserves because the typing path reads the side later in this same keydown.
|
|
56
25
|
if (BARE_MODIFIER_KEYS.includes(key) || isCharacterKey(key))
|
|
57
26
|
return 'preserve';
|
|
58
|
-
// Anything left
|
|
59
|
-
//
|
|
27
|
+
// Anything left moves the caret by a mutation or a command, not by a key; the commit path
|
|
28
|
+
// sets the side again through `noteTyping`.
|
|
60
29
|
return 'reset';
|
|
61
30
|
}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* offset walk (`widget-offset.ts`), shared by the prose and table-cell render paths.
|
|
2
|
+
* Keep a focused caret across an imperative DOM rebuild: a decoration-driven rebuild creates
|
|
3
|
+
* fresh spans with no pending offset from an edit, so the render path reads the caret as a raw
|
|
4
|
+
* offset before the rebuild and writes it back after (`placeCaretAtRaw`, exact).
|
|
6
5
|
*/
|
|
7
|
-
import type {
|
|
8
|
-
/** The live caret as a
|
|
9
|
-
export declare function
|
|
10
|
-
export declare function restoreCaretAtWalkOffset(el: HTMLElement, walkOffset: DomTextOffset): void;
|
|
6
|
+
import type { RawOffset } from './coordinate-spaces';
|
|
7
|
+
/** The live caret as a raw offset, or null when `el` does not own focus. */
|
|
8
|
+
export declare function captureFocusedCaret(el: HTMLElement): RawOffset | null;
|
|
@@ -1,24 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* offset walk (`widget-offset.ts`), shared by the prose and table-cell render paths.
|
|
2
|
+
* Keep a focused caret across an imperative DOM rebuild: a decoration-driven rebuild creates
|
|
3
|
+
* fresh spans with no pending offset from an edit, so the render path reads the caret as a raw
|
|
4
|
+
* offset before the rebuild and writes it back after (`placeCaretAtRaw`, exact).
|
|
6
5
|
*/
|
|
7
|
-
import {
|
|
8
|
-
/** The live caret as a
|
|
9
|
-
export function
|
|
6
|
+
import { rawOffsetAt } from './widget-offset';
|
|
7
|
+
/** The live caret as a raw offset, or null when `el` does not own focus. */
|
|
8
|
+
export function captureFocusedCaret(el) {
|
|
10
9
|
if (!document.activeElement || !el.contains(document.activeElement))
|
|
11
10
|
return null;
|
|
12
11
|
const sel = window.getSelection();
|
|
13
12
|
if (!sel?.focusNode || !el.contains(sel.focusNode))
|
|
14
13
|
return null;
|
|
15
|
-
return
|
|
16
|
-
}
|
|
17
|
-
export function restoreCaretAtWalkOffset(el, walkOffset) {
|
|
18
|
-
const range = createRangeAtDomTextOffsets(el, walkOffset, walkOffset);
|
|
19
|
-
if (!range)
|
|
20
|
-
return;
|
|
21
|
-
const sel = window.getSelection();
|
|
22
|
-
sel?.removeAllRanges();
|
|
23
|
-
sel?.addRange(range);
|
|
14
|
+
return rawOffsetAt(el, sel.focusNode, sel.focusOffset);
|
|
24
15
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* The table of block heights for one BlockList: a Fenwick tree giving O(log n) prefix sums,
|
|
3
|
+
* offset-to-index lookup, and per-index update. Virtual rendering maps scrollTop to a mounted
|
|
4
|
+
* range through it without laying out off-screen blocks.
|
|
5
5
|
*/
|
|
6
6
|
export declare class HeightModel {
|
|
7
7
|
private tree;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* The table of block heights for one BlockList: a Fenwick tree giving O(log n) prefix sums,
|
|
3
|
+
* offset-to-index lookup, and per-index update. Virtual rendering maps scrollTop to a mounted
|
|
4
|
+
* range through it without laying out off-screen blocks.
|
|
5
5
|
*/
|
|
6
6
|
export class HeightModel {
|
|
7
7
|
tree; // 1-indexed Fenwick sums
|
|
@@ -23,7 +23,7 @@ export class HeightModel {
|
|
|
23
23
|
}
|
|
24
24
|
/** Pixel offset of the top of index `i` (sum of heights[0..i)); `offsetOf(count)` == total. */
|
|
25
25
|
offsetOf(i) {
|
|
26
|
-
// prefix(i) past `count` reads off the Fenwick array
|
|
26
|
+
// prefix(i) past `count` reads off the end of the Fenwick array and puts NaN into every spacer.
|
|
27
27
|
return this.prefix(Math.max(0, Math.min(i, this.count)));
|
|
28
28
|
}
|
|
29
29
|
/** Current height stored for index `i`. */
|
|
@@ -32,7 +32,7 @@ export class HeightModel {
|
|
|
32
32
|
}
|
|
33
33
|
/** Set index `i` to `height` in O(log n). No-op when unchanged or out of range. */
|
|
34
34
|
setHeight(i, height) {
|
|
35
|
-
// Out of range corrupts the
|
|
35
|
+
// Out of range corrupts the table: i >= count poisons heights[] with no tree update,
|
|
36
36
|
// and i < 0 makes bump's `p += p & -p` stall at p=0 forever.
|
|
37
37
|
if (i < 0 || i >= this.count)
|
|
38
38
|
return;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Per-
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Per-block height estimates plus a measured-height cache for virtual rendering. Each kind's
|
|
3
|
+
* descriptor makes the estimate (`schema/height-estimates.ts`), O(1) from `node.raw` even for
|
|
4
|
+
* containers, whose raw is materialized. Measured heights supersede estimates and are keyed by
|
|
5
5
|
* stable block id, so structural index shifts and undo don't invalidate them.
|
|
6
6
|
*/
|
|
7
7
|
import type { NodeView } from '../core/node-views';
|
|
@@ -16,8 +16,12 @@ export interface HeightOracle {
|
|
|
16
16
|
estimate(node: NodeView, width: number): number;
|
|
17
17
|
measured(id: string): number | undefined;
|
|
18
18
|
recordMeasured(id: string, height: number): void;
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
}
|
|
20
|
+
/** The editor's own estimator, which can also drop and list what it has measured. */
|
|
21
|
+
export interface MeasuredHeightOracle extends HeightOracle {
|
|
22
|
+
/** Drop every measured height; only layout state calls it (G4.98). A mounted list keeps its
|
|
23
|
+
* table's heights across a structural rebuild, so only a later list or a fresh id starts from estimates. */
|
|
21
24
|
dropMeasured(): void;
|
|
25
|
+
measuredIds(): string[];
|
|
22
26
|
}
|
|
23
|
-
export declare function createHeightOracle(opts: HeightOracleOptions):
|
|
27
|
+
export declare function createHeightOracle(opts: HeightOracleOptions): MeasuredHeightOracle;
|
|
@@ -1,86 +1,37 @@
|
|
|
1
1
|
import { isCollapsedByDescriptor } from '../schema/reserved-chrome';
|
|
2
2
|
import { tryGetBlockKindDescriptor } from '../schema/block-kind-descriptor';
|
|
3
|
-
|
|
4
|
-
// estimate badly undercounts a rendered image, so an image-bearing block sizes off this.
|
|
5
|
-
const IMAGE_ALT = /!\[([^\]]*)\]/g;
|
|
6
|
-
// Size hint inside the alt, e.g. `Square|200x200` or `photo|400` (width only).
|
|
7
|
-
const SIZE_HINT = /\|(\d+)(?:x(\d+))?/;
|
|
8
|
-
const NEWLINE = 10;
|
|
3
|
+
import { containerEstimate, proseEstimate } from '../schema/height-estimates';
|
|
9
4
|
export function createHeightOracle(opts) {
|
|
10
5
|
const measuredById = new Map();
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
IMAGE_ALT.lastIndex = 0;
|
|
30
|
-
let m;
|
|
31
|
-
while ((m = IMAGE_ALT.exec(raw)) !== null) {
|
|
32
|
-
const hint = SIZE_HINT.exec(m[1]);
|
|
33
|
-
total += hint && hint[2] ? Number(hint[2]) : opts.imageBlockMinHeight;
|
|
6
|
+
// One object for every call, since the height table estimates each block of the document: the
|
|
7
|
+
// metrics read through to `opts`, whose getters follow the editor's type scale.
|
|
8
|
+
const env = {
|
|
9
|
+
width: 0,
|
|
10
|
+
get lineHeight() {
|
|
11
|
+
return opts.lineHeight;
|
|
12
|
+
},
|
|
13
|
+
get codeLineHeight() {
|
|
14
|
+
return opts.codeLineHeight;
|
|
15
|
+
},
|
|
16
|
+
get avgCharWidth() {
|
|
17
|
+
return opts.avgCharWidth;
|
|
18
|
+
},
|
|
19
|
+
get blockChrome() {
|
|
20
|
+
return opts.blockChrome;
|
|
21
|
+
},
|
|
22
|
+
get imageBlockMinHeight() {
|
|
23
|
+
return opts.imageBlockMinHeight;
|
|
34
24
|
}
|
|
35
|
-
|
|
36
|
-
}
|
|
25
|
+
};
|
|
37
26
|
function estimate(node, width) {
|
|
38
|
-
// One registry lookup, read twice: the model seeds this once per block of the document.
|
|
39
27
|
const descriptor = tryGetBlockKindDescriptor(node.kind);
|
|
40
28
|
// A collapsed container's body lives in `raw` but never renders, so estimating from
|
|
41
|
-
// full `raw` over-counts it several-fold; only the
|
|
29
|
+
// full `raw` over-counts it several-fold; only the title row paints.
|
|
42
30
|
if (isCollapsedByDescriptor(descriptor, node))
|
|
43
31
|
return opts.lineHeight + opts.blockChrome;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
if (custom)
|
|
48
|
-
return custom(node, { width }) + opts.blockChrome;
|
|
49
|
-
const kind = node.kind;
|
|
50
|
-
const raw = node.raw;
|
|
51
|
-
switch (kind) {
|
|
52
|
-
case 'thematicBreak':
|
|
53
|
-
return opts.lineHeight + opts.blockChrome;
|
|
54
|
-
case 'fencedCode':
|
|
55
|
-
case 'indentedCode':
|
|
56
|
-
case 'htmlBlock':
|
|
57
|
-
return sourceLines(raw) * opts.codeLineHeight + opts.blockChrome;
|
|
58
|
-
case 'table':
|
|
59
|
-
case 'tableRow':
|
|
60
|
-
// Source lines model a normal table; a wide one wraps its cells far beyond its
|
|
61
|
-
// row count, which the blob-wrap of the whole raw catches.
|
|
62
|
-
return (Math.max(sourceLines(raw), wrappedLines(raw.length, width)) * opts.lineHeight +
|
|
63
|
-
opts.blockChrome);
|
|
64
|
-
case 'blockquote':
|
|
65
|
-
case 'list':
|
|
66
|
-
case 'listItem': {
|
|
67
|
-
// Max of two terms, each alone wrong: the blob term ignores newlines and
|
|
68
|
-
// per-child chrome, the child-count term ignores wrap. Still O(1), no walk.
|
|
69
|
-
const childCount = Math.max(1, node.children?.length ?? 1);
|
|
70
|
-
const byChildren = childCount * (opts.lineHeight + opts.blockChrome);
|
|
71
|
-
const byText = wrappedLines(raw.length, width) * opts.lineHeight + opts.blockChrome;
|
|
72
|
-
return Math.max(byChildren, byText);
|
|
73
|
-
}
|
|
74
|
-
default: {
|
|
75
|
-
const prose = wrappedLines(raw.length, width) * opts.lineHeight + opts.blockChrome;
|
|
76
|
-
// Substring test first: the alt-capturing scan otherwise runs over every prose
|
|
77
|
-
// block in the document, and all but a handful carry no image at all.
|
|
78
|
-
if (!raw.includes('!['))
|
|
79
|
-
return prose;
|
|
80
|
-
const images = imageHeights(raw);
|
|
81
|
-
return images > 0 ? Math.max(prose, images) : prose;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
32
|
+
const content = descriptor?.estimateHeight ?? (descriptor?.isContainer ? containerEstimate : proseEstimate);
|
|
33
|
+
env.width = width;
|
|
34
|
+
return content(node, env) + opts.blockChrome;
|
|
84
35
|
}
|
|
85
36
|
return {
|
|
86
37
|
estimate,
|
|
@@ -88,6 +39,7 @@ export function createHeightOracle(opts) {
|
|
|
88
39
|
recordMeasured: (id, height) => {
|
|
89
40
|
measuredById.set(id, height);
|
|
90
41
|
},
|
|
91
|
-
dropMeasured: () => measuredById.clear()
|
|
42
|
+
dropMeasured: () => measuredById.clear(),
|
|
43
|
+
measuredIds: () => [...measuredById.keys()]
|
|
92
44
|
};
|
|
93
45
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Watches one element's size for a component that can mount while the browser delivers resize
|
|
3
|
+
* notifications. An element first observed during that delivery is skipped at its depth and
|
|
4
|
+
* reported as a ResizeObserver loop error, so observation starts at the next frame; the first
|
|
5
|
+
* notification then still carries the element's size as of that frame. Returns the disposer.
|
|
6
|
+
*/
|
|
7
|
+
export declare function observeResize(el: Element, onResize: ResizeObserverCallback): () => void;
|
|
8
|
+
export interface SharedResizeWatch {
|
|
9
|
+
/** Watches `el` from the next frame on; returns the disposer. */
|
|
10
|
+
watch(el: Element, onResize: (entry: ResizeObserverEntry) => void): () => void;
|
|
11
|
+
}
|
|
12
|
+
/** One observer for many elements, each watched from the next frame, made after the width watcher. */
|
|
13
|
+
export declare function createSharedResizeWatch(): SharedResizeWatch;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Watches one element's size for a component that can mount while the browser delivers resize
|
|
3
|
+
* notifications. An element first observed during that delivery is skipped at its depth and
|
|
4
|
+
* reported as a ResizeObserver loop error, so observation starts at the next frame; the first
|
|
5
|
+
* notification then still carries the element's size as of that frame. Returns the disposer.
|
|
6
|
+
*/
|
|
7
|
+
export function observeResize(el, onResize) {
|
|
8
|
+
// jsdom has no ResizeObserver; callers keep their other measuring paths there.
|
|
9
|
+
if (typeof ResizeObserver !== 'function')
|
|
10
|
+
return () => { };
|
|
11
|
+
const observer = new ResizeObserver(onResize);
|
|
12
|
+
const frame = requestAnimationFrame(() => observer.observe(el));
|
|
13
|
+
return () => {
|
|
14
|
+
cancelAnimationFrame(frame);
|
|
15
|
+
observer.disconnect();
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/** One observer for many elements, each watched from the next frame, made after the width watcher. */
|
|
19
|
+
export function createSharedResizeWatch() {
|
|
20
|
+
const listeners = new Map();
|
|
21
|
+
let observer = null;
|
|
22
|
+
const deliver = (entries) => {
|
|
23
|
+
for (const entry of entries)
|
|
24
|
+
listeners.get(entry.target)?.(entry);
|
|
25
|
+
};
|
|
26
|
+
return {
|
|
27
|
+
watch(el, onResize) {
|
|
28
|
+
if (typeof ResizeObserver !== 'function')
|
|
29
|
+
return () => { };
|
|
30
|
+
listeners.set(el, onResize);
|
|
31
|
+
const frame = requestAnimationFrame(() => {
|
|
32
|
+
observer ??= new ResizeObserver(deliver);
|
|
33
|
+
observer.observe(el);
|
|
34
|
+
});
|
|
35
|
+
return () => {
|
|
36
|
+
cancelAnimationFrame(frame);
|
|
37
|
+
observer?.unobserve(el);
|
|
38
|
+
if (listeners.get(el) === onResize)
|
|
39
|
+
listeners.delete(el);
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
/** The client rects a block contributes when it is an endpoint of a cross-block selection. */
|
|
2
2
|
import type { DomTextOffset } from './coordinate-spaces';
|
|
3
|
-
/**
|
|
4
|
-
*
|
|
5
|
-
* `cursor/widget-offset.ts`). The `getClientRects` guard keeps jsdom unit tests from
|
|
6
|
-
* crashing; real pixel geometry is covered by e2e.
|
|
7
|
-
*/
|
|
3
|
+
/** Client rects covering the DOM-walk range [startOffset, endOffset) within `el`. The
|
|
4
|
+
* `getClientRects` check keeps jsdom unit tests from crashing. */
|
|
8
5
|
export declare function measurePartialRectsInContentEditable(el: HTMLElement, startOffset: DomTextOffset, endOffset: DomTextOffset): DOMRect[];
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
/** The client rects a block contributes when it is an endpoint of a cross-block selection. */
|
|
2
2
|
import { createRangeAtDomTextOffsets, widgetsIntersectingRange } from './widget-offset';
|
|
3
|
-
/**
|
|
4
|
-
*
|
|
5
|
-
* `cursor/widget-offset.ts`). The `getClientRects` guard keeps jsdom unit tests from
|
|
6
|
-
* crashing; real pixel geometry is covered by e2e.
|
|
7
|
-
*/
|
|
3
|
+
/** Client rects covering the DOM-walk range [startOffset, endOffset) within `el`. The
|
|
4
|
+
* `getClientRects` check keeps jsdom unit tests from crashing. */
|
|
8
5
|
export function measurePartialRectsInContentEditable(el, startOffset, endOffset) {
|
|
9
6
|
if (startOffset === endOffset)
|
|
10
7
|
return [];
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared scroll-listener wiring for DecorationOverlay and SelectionOverlay: measure on
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* Shared scroll-listener wiring for DecorationOverlay and SelectionOverlay: measure on mount, on
|
|
3
|
+
* scroll, and when the table's row-window `$derived` moves. Windowed tables need that third
|
|
4
|
+
* trigger: a raw 'scroll' fires before the windowed `{#each}` mounts the new rows, so only the
|
|
5
|
+
* dependency-driven re-run measures after the commit.
|
|
6
6
|
*/
|
|
7
7
|
import type { BlockComponent } from '../block-component';
|
|
8
8
|
export declare function wireOverlayRemeasure(opts: {
|
|
@@ -10,8 +10,7 @@ export declare function wireOverlayRemeasure(opts: {
|
|
|
10
10
|
editorRoot: HTMLElement | null;
|
|
11
11
|
blockRef: BlockComponent | undefined;
|
|
12
12
|
measure: () => void;
|
|
13
|
-
/** Run the
|
|
14
|
-
*
|
|
15
|
-
* never the whole wiring — the row-window read below must stay tracked either way. */
|
|
13
|
+
/** Run the setup measure untracked, so a `measure` that reads the document doesn't re-wire these
|
|
14
|
+
* listeners on every keystroke. Only that call: the row-window read below must stay tracked. */
|
|
16
15
|
untrackSetupMeasure?: boolean;
|
|
17
16
|
}): () => void;
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared scroll-listener wiring for DecorationOverlay and SelectionOverlay: measure on
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* Shared scroll-listener wiring for DecorationOverlay and SelectionOverlay: measure on mount, on
|
|
3
|
+
* scroll, and when the table's row-window `$derived` moves. Windowed tables need that third
|
|
4
|
+
* trigger: a raw 'scroll' fires before the windowed `{#each}` mounts the new rows, so only the
|
|
5
|
+
* dependency-driven re-run measures after the commit.
|
|
6
6
|
*/
|
|
7
7
|
import { untrack } from 'svelte';
|
|
8
8
|
import { firstScrollableDescendant, nearestScrollContainer } from './scroll-ancestors';
|
|
9
|
+
import { observeResize } from './observe-resize';
|
|
9
10
|
export function wireOverlayRemeasure(opts) {
|
|
10
11
|
const { el, editorRoot, blockRef, measure } = opts;
|
|
11
|
-
// Plain synchronous read so the enclosing $effect
|
|
12
|
-
// $derived
|
|
12
|
+
// Plain synchronous read so the enclosing $effect depends on the table's row-window
|
|
13
|
+
// $derived; it must not be inside untrack().
|
|
13
14
|
blockRef?.mountedRowWindow?.();
|
|
14
15
|
if (opts.untrackSetupMeasure)
|
|
15
16
|
untrack(measure);
|
|
@@ -27,13 +28,8 @@ export function wireOverlayRemeasure(opts) {
|
|
|
27
28
|
editorRoot.addEventListener('scroll', measure, { passive: true });
|
|
28
29
|
disposers.push(() => editorRoot.removeEventListener('scroll', measure));
|
|
29
30
|
}
|
|
30
|
-
// The block's own box changing under a live range
|
|
31
|
-
// load
|
|
32
|
-
|
|
33
|
-
if (typeof ResizeObserver === 'function') {
|
|
34
|
-
const observer = new ResizeObserver(() => measure());
|
|
35
|
-
observer.observe(el);
|
|
36
|
-
disposers.push(() => observer.disconnect());
|
|
37
|
-
}
|
|
31
|
+
// The block's own box changing under a live range (a paragraph set to a heading, a font
|
|
32
|
+
// load) moves the text the rects were measured against.
|
|
33
|
+
disposers.push(observeResize(el, () => measure()));
|
|
38
34
|
return () => disposers.forEach((dispose) => dispose());
|
|
39
35
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Pending marks: the inline
|
|
3
|
-
* relative to the
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* Pending marks: the inline formats a toggle at a collapsed caret promises the next insertion,
|
|
3
|
+
* relative to the constructs around the caret (a kind already active is a removal, one absent is
|
|
4
|
+
* an application). Live mode paints no delimiter, so writing an empty pair into the bytes would
|
|
5
|
+
* leave an invisible `****` behind on an abandoned toggle. The toggle command sets them, the typing
|
|
6
|
+
* and composition paths consume them, and the caret memory drops them (live-mode.md § 4.3).
|
|
7
7
|
*/
|
|
8
8
|
import type { InlineMarkKind } from '../schema/inline-construct-policy';
|
|
9
|
-
export interface
|
|
9
|
+
export interface PendingMarks {
|
|
10
10
|
/** Null when nothing is pending; never an empty set, so a read is the whole question. */
|
|
11
11
|
get(): ReadonlySet<InlineMarkKind> | null;
|
|
12
12
|
/** A toggle chord at a collapsed caret. The same chord twice pends nothing again. */
|
|
@@ -16,9 +16,7 @@ export interface PendingMarksState {
|
|
|
16
16
|
/** Hand back a set taken for an insertion that never happened (an IME cancel). Declines once
|
|
17
17
|
* anything else is pending: that is a newer instruction about the same caret. */
|
|
18
18
|
restore(marks: ReadonlySet<InlineMarkKind>): void;
|
|
19
|
-
reset(): void;
|
|
20
19
|
}
|
|
21
|
-
|
|
22
|
-
/** The set a chord press produces, or null once it empties. Pure, so the toggle matrix is
|
|
20
|
+
/** The set one toggle chord produces, or null once it empties. Pure, so the toggle matrix is
|
|
23
21
|
* testable without an instance. */
|
|
24
22
|
export declare function flipMark(marks: ReadonlySet<InlineMarkKind> | null, kind: InlineMarkKind): ReadonlySet<InlineMarkKind> | null;
|
|
@@ -1,32 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Pending marks: the inline
|
|
3
|
-
* relative to the
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* Pending marks: the inline formats a toggle at a collapsed caret promises the next insertion,
|
|
3
|
+
* relative to the constructs around the caret (a kind already active is a removal, one absent is
|
|
4
|
+
* an application). Live mode paints no delimiter, so writing an empty pair into the bytes would
|
|
5
|
+
* leave an invisible `****` behind on an abandoned toggle. The toggle command sets them, the typing
|
|
6
|
+
* and composition paths consume them, and the caret memory drops them (live-mode.md § 4.3).
|
|
7
7
|
*/
|
|
8
|
-
|
|
9
|
-
let marks = null;
|
|
10
|
-
return {
|
|
11
|
-
get: () => marks,
|
|
12
|
-
toggle: (kind) => {
|
|
13
|
-
marks = flipMark(marks, kind);
|
|
14
|
-
},
|
|
15
|
-
consume: () => {
|
|
16
|
-
const spent = marks;
|
|
17
|
-
marks = null;
|
|
18
|
-
return spent;
|
|
19
|
-
},
|
|
20
|
-
restore: (unspent) => {
|
|
21
|
-
if (marks === null)
|
|
22
|
-
marks = unspent;
|
|
23
|
-
},
|
|
24
|
-
reset: () => {
|
|
25
|
-
marks = null;
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
/** The set a chord press produces, or null once it empties. Pure, so the toggle matrix is
|
|
8
|
+
/** The set one toggle chord produces, or null once it empties. Pure, so the toggle matrix is
|
|
30
9
|
* testable without an instance. */
|
|
31
10
|
export function flipMark(marks, kind) {
|
|
32
11
|
const next = new Set(marks ?? []);
|