@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,15 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* DOM-
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* DOM-building steps for TextEditableBlock's render effect. The component owns the effect
|
|
3
|
+
* and the `pendingCursorOffset` restore, since those writes touch `$state`; this factory
|
|
4
|
+
* builds the inline DOM and keeps a live caret across a rebuild a decoration caused, which
|
|
5
|
+
* the edit path's own restore does not cover.
|
|
6
6
|
*/
|
|
7
7
|
import { hidesMarkers } from '../../../presentation-mode';
|
|
8
8
|
import { buildAmbientSpan } from '../../../ambient/ambient-dom';
|
|
9
|
-
import { computeInlineContent, contentLengthOf, getContentRange, isProseKind } from '../../../core/inline';
|
|
10
|
-
import { renderInlineNodes } from '../../../core/inline-render';
|
|
11
|
-
import { CONTENT_EMPTY_ATTR, holdsOnlyMarkerChrome } from '../../../cursor/widget-offset';
|
|
12
|
-
import {
|
|
9
|
+
import { computeInlineContent, contentLengthOf, getContentRange, isProseKind, structuralSuffix, sameLineSuffix } from '../../../core/inline';
|
|
10
|
+
import { PENDING_BREAK_ANCHOR, renderInlineNodes } from '../../../core/inline-render';
|
|
11
|
+
import { BLOCK_PREFIX_ATTR, BLOCK_SUFFIX_ATTR, CONTENT_EMPTY_ATTR, createCaretAnchor, holdsOnlyMarkerChrome, placeCaretAtRaw } from '../../../cursor/widget-offset';
|
|
12
|
+
import { captureFocusedCaret } from '../../../cursor/focused-caret';
|
|
13
13
|
import { applyIslandDecorations, islandRenderKeyPart } from '../../../decorations/island-dom';
|
|
14
14
|
import { mountDecorationWidget } from '../../../decorations/widget-dom';
|
|
15
15
|
import { devWarn } from '../../../dev-warn';
|
|
@@ -28,8 +28,8 @@ const RENDER_KEY_SEGMENTS = [
|
|
|
28
28
|
'kind',
|
|
29
29
|
'islands'
|
|
30
30
|
];
|
|
31
|
-
/** Which
|
|
32
|
-
* the key format, so the recorder never learns the NUL layout. */
|
|
31
|
+
/** Which parts of the render key differ, which the interaction trace reports as the cause of
|
|
32
|
+
* a rebuild. Pure over the key format, so the recorder never learns the NUL layout. */
|
|
33
33
|
export function renderKeySegmentDiff(prev, next) {
|
|
34
34
|
const a = prev.split('\0');
|
|
35
35
|
const b = next.split('\0');
|
|
@@ -44,11 +44,11 @@ export function createTextRender(deps) {
|
|
|
44
44
|
let lastRenderedKey = '';
|
|
45
45
|
const widgetPool = createSvelteWidgetPool({
|
|
46
46
|
reportError: deps.reportRenderError,
|
|
47
|
-
getPresentationMode: () => deps.presentationMode,
|
|
48
47
|
getTheme: deps.getTheme,
|
|
49
48
|
getDocument: deps.getDocument,
|
|
50
49
|
getContentVersion: deps.getContentVersion,
|
|
51
|
-
navigateTo: deps.navigateTo
|
|
50
|
+
navigateTo: deps.navigateTo,
|
|
51
|
+
reading: deps.reading
|
|
52
52
|
});
|
|
53
53
|
let islandDestroys = [];
|
|
54
54
|
function destroyIslands() {
|
|
@@ -59,13 +59,18 @@ export function createTextRender(deps) {
|
|
|
59
59
|
function buildPortalWidget(node, raw) {
|
|
60
60
|
return widgetPool.acquire(node.kind, node, raw.slice(node.start, node.end));
|
|
61
61
|
}
|
|
62
|
-
// The dimmed marker
|
|
63
|
-
// from the content range. Kinds that declare none yield ''.
|
|
62
|
+
// The dimmed marker part of the raw ahead of the content range. Kinds that declare none give ''.
|
|
64
63
|
function getBlockMarkerPrefix() {
|
|
65
64
|
const node = deps.node;
|
|
66
65
|
const range = getContentRange(node);
|
|
67
66
|
return node.raw.slice(0, range.start);
|
|
68
67
|
}
|
|
68
|
+
function markerSpan(text) {
|
|
69
|
+
const span = document.createElement('span');
|
|
70
|
+
span.className = 'md-marker';
|
|
71
|
+
span.textContent = text;
|
|
72
|
+
return span;
|
|
73
|
+
}
|
|
69
74
|
// The render path computes inline content on the pure path, never the caching
|
|
70
75
|
// accessor: the cache is non-reactive and would skip render-relevant changes (G4.2).
|
|
71
76
|
function buildInlineDOM(content) {
|
|
@@ -76,9 +81,8 @@ export function createTextRender(deps) {
|
|
|
76
81
|
}
|
|
77
82
|
const blockOwnPrefix = getBlockMarkerPrefix();
|
|
78
83
|
if (blockOwnPrefix) {
|
|
79
|
-
const span =
|
|
80
|
-
span.
|
|
81
|
-
span.textContent = blockOwnPrefix;
|
|
84
|
+
const span = markerSpan(blockOwnPrefix);
|
|
85
|
+
span.setAttribute(BLOCK_PREFIX_ATTR, '');
|
|
82
86
|
frag.appendChild(span);
|
|
83
87
|
}
|
|
84
88
|
const descriptor = getBlockKindDescriptor(node.kind);
|
|
@@ -89,63 +93,82 @@ export function createTextRender(deps) {
|
|
|
89
93
|
imageLoadPolicy: deps.imageLoadPolicy,
|
|
90
94
|
buildImageWidget: (imgNode, imgRaw, imgOpts) => buildImageWidget(imgNode, imgRaw, { ...imgOpts, brokenUrlCache: deps.brokenUrlCache }),
|
|
91
95
|
buildPortalWidget,
|
|
92
|
-
|
|
93
|
-
//
|
|
94
|
-
|
|
95
|
-
|
|
96
|
+
grammar: deps.reading.grammar,
|
|
97
|
+
// Data attributes only, for the code that shows construct markers; set in this
|
|
98
|
+
// mode alone so the other modes' DOM stays byte-identical.
|
|
99
|
+
tagConstructMarkers: deps.reading.mode() === 'preview-inline',
|
|
100
|
+
pendingBreakAt: hidesMarkers(deps.reading.mode()) ? contentLengthOf(node) : undefined
|
|
96
101
|
}));
|
|
102
|
+
// The bytes past the content (a setext underline, a heading's closing run) are block markers
|
|
103
|
+
// too, so they are drawn and hidden along with the prefix.
|
|
104
|
+
const suffix = structuralSuffix(node);
|
|
105
|
+
if (suffix) {
|
|
106
|
+
const span = markerSpan(suffix);
|
|
107
|
+
span.setAttribute(BLOCK_SUFFIX_ATTR, blockOwnPrefix ? 'after-prefix' : '');
|
|
108
|
+
// A closing run on the text's own line stays there when a pending break draws a new one.
|
|
109
|
+
const onTextLine = sameLineSuffix(node) === suffix;
|
|
110
|
+
frag.insertBefore(span, onTextLine ? frag.querySelector(PENDING_BREAK_ANCHOR) : null);
|
|
111
|
+
}
|
|
97
112
|
return frag;
|
|
98
113
|
}
|
|
99
114
|
// No inline pass runs here, so the remainder is a verbatim text node.
|
|
100
115
|
function buildMarkerPrefixDOM(marker, rest) {
|
|
101
116
|
const frag = document.createDocumentFragment();
|
|
102
|
-
|
|
103
|
-
span.className = 'md-marker';
|
|
104
|
-
span.textContent = marker;
|
|
105
|
-
frag.appendChild(span);
|
|
117
|
+
frag.appendChild(markerSpan(marker));
|
|
106
118
|
frag.appendChild(document.createTextNode(rest));
|
|
107
119
|
return frag;
|
|
108
120
|
}
|
|
109
|
-
// A `<br>` inside
|
|
110
|
-
// block's caret anchor.
|
|
121
|
+
// A `<br>` inside a decoration widget belongs to that widget, so it cannot serve as the
|
|
122
|
+
// empty block's caret anchor.
|
|
111
123
|
function ensureBr(el) {
|
|
112
|
-
|
|
124
|
+
const display = deps.getDisplayText();
|
|
125
|
+
if (display.endsWith('\n'))
|
|
126
|
+
return anchorEmptyLastLine(el);
|
|
127
|
+
if (display !== '')
|
|
113
128
|
return;
|
|
114
129
|
const hasAnchorBr = [...el.querySelectorAll('br')].some((br) => !br.closest('[data-decoration-island]'));
|
|
115
130
|
if (!hasAnchorBr)
|
|
116
131
|
el.appendChild(document.createElement('br'));
|
|
117
132
|
}
|
|
133
|
+
// Chromium paints no caret on the empty line after a trailing line break, so the next key
|
|
134
|
+
// would land before the break; the anchor adds no text, so offsets are untouched.
|
|
135
|
+
function anchorEmptyLastLine(el) {
|
|
136
|
+
const last = el.lastChild;
|
|
137
|
+
if (last instanceof HTMLElement && last.tagName === 'BR' && 'caretAnchor' in last.dataset) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
el.appendChild(createCaretAnchor());
|
|
141
|
+
}
|
|
118
142
|
function captureCaretIfFocused(el) {
|
|
119
|
-
const
|
|
120
|
-
if (
|
|
121
|
-
traceCursorCapture(
|
|
122
|
-
return
|
|
143
|
+
const raw = captureFocusedCaret(el);
|
|
144
|
+
if (raw !== null)
|
|
145
|
+
traceCursorCapture(raw);
|
|
146
|
+
return raw;
|
|
123
147
|
}
|
|
124
|
-
function restoreCaret(el,
|
|
125
|
-
|
|
126
|
-
traceCursorRestore(
|
|
148
|
+
function restoreCaret(el, raw) {
|
|
149
|
+
placeCaretAtRaw(el, raw, { clamp: 'exact' });
|
|
150
|
+
traceCursorRestore(raw);
|
|
127
151
|
}
|
|
128
152
|
function render(opts) {
|
|
129
153
|
const el = deps.el;
|
|
130
154
|
if (!el)
|
|
131
155
|
return;
|
|
132
156
|
const node = deps.node;
|
|
133
|
-
//
|
|
134
|
-
//
|
|
157
|
+
// Checking for a bracket before reading the signature or the resolver keeps one edit
|
|
158
|
+
// to a link-reference definition from re-rendering the whole document.
|
|
135
159
|
const hasRef = node.raw.includes('[');
|
|
136
|
-
const refKeyPart = hasRef ? deps.
|
|
137
|
-
// The built widget bakes in imageLoadPolicy
|
|
138
|
-
// blocks with an image, which keeps image-free blocks off
|
|
160
|
+
const refKeyPart = hasRef ? String(deps.reading.resolverEpoch) : '';
|
|
161
|
+
// The built widget bakes in `imageLoadPolicy`, so the key tracks it, but only for
|
|
162
|
+
// blocks with an image, which keeps image-free blocks off that dependency.
|
|
139
163
|
const hasImg = node.raw.includes('![');
|
|
140
164
|
const imgKeyPart = hasImg ? deps.imageLoadPolicy : '';
|
|
141
|
-
//
|
|
142
|
-
// block. '' in source keeps the default key byte-identical
|
|
143
|
-
const mode = deps.
|
|
165
|
+
// Always included, unlike the reference and image parts: a mode change re-renders
|
|
166
|
+
// every mounted block. '' in source mode keeps the default key byte-identical.
|
|
167
|
+
const mode = deps.reading.mode();
|
|
144
168
|
const modeKeyPart = mode === 'source' ? '' : mode;
|
|
145
169
|
const islands = deps.islands;
|
|
146
|
-
// The kind is
|
|
147
|
-
//
|
|
148
|
-
// the memo would then early-return onto the previous kind's DOM.
|
|
170
|
+
// The kind is part of the key: two prose kinds can share a raw once the registry gains an
|
|
171
|
+
// opener for bytes already in the document.
|
|
149
172
|
const renderKey = `${deps.ambientPrefixText}\0${node.raw}\0${refKeyPart}\0${imgKeyPart}\0${modeKeyPart}\0${node.kind}${islandRenderKeyPart(islands)}`;
|
|
150
173
|
const forceRebuild = opts?.forceRebuild ?? false;
|
|
151
174
|
const carryCaret = opts?.carryCaret ?? true;
|
|
@@ -153,34 +176,33 @@ export function createTextRender(deps) {
|
|
|
153
176
|
if (isProseKind(node.kind)) {
|
|
154
177
|
if (renderKey === lastRenderedKey && !forceRebuild)
|
|
155
178
|
return;
|
|
156
|
-
//
|
|
179
|
+
// Working out which parts differ allocates, so it stays behind the trace check.
|
|
157
180
|
if (isInteractionTraceEnabled())
|
|
158
181
|
traceRebuild(renderKeySegmentDiff(lastRenderedKey, renderKey), forceRebuild);
|
|
159
|
-
const content = computeInlineContent(node, hasRef ? deps.
|
|
160
|
-
//
|
|
161
|
-
// overwrites the selection right after, so
|
|
162
|
-
const
|
|
182
|
+
const content = computeInlineContent(node, hasRef ? deps.reading.resolver : undefined, deps.reading.grammar);
|
|
183
|
+
// Rebuilds from the edit path skip the capture-and-restore pair: the component's
|
|
184
|
+
// pending restore overwrites the selection right after, so it would be wasted.
|
|
185
|
+
const carried = carryCaret ? captureCaretIfFocused(el) : null;
|
|
163
186
|
// Bracketing the rebuild pools portal widgets: the sweep destroys only those the
|
|
164
|
-
// previous DOM held and this build
|
|
187
|
+
// previous DOM held and this build did not reuse. Decoration widgets are not pooled.
|
|
165
188
|
widgetPool.beginPass();
|
|
166
189
|
destroyIslands();
|
|
167
190
|
el.replaceChildren(buildInlineDOM(content));
|
|
168
191
|
islandDestroys = applyIslandDecorations(el, node.raw, islands, {
|
|
169
192
|
contentLength: contentLengthOf(node),
|
|
170
|
-
ambientLength: deps.ambientPrefixText.length,
|
|
171
193
|
mountWidget: (spec, dec) => mountDecorationWidget(spec, dec, deps.reportRenderError),
|
|
172
|
-
onSkipped: (dec, reason) => devWarn('decorations', `
|
|
194
|
+
onSkipped: (dec, reason) => devWarn('decorations', `decoration skipped: ${reason}`, dec)
|
|
173
195
|
});
|
|
174
196
|
if (islands.length > 0) {
|
|
175
197
|
recordIslandRebuild();
|
|
176
198
|
traceIslandsApplied(islands.length);
|
|
177
199
|
}
|
|
178
200
|
widgetPool.sweep();
|
|
179
|
-
carriedCaret =
|
|
201
|
+
carriedCaret = carried;
|
|
180
202
|
}
|
|
181
203
|
else {
|
|
182
|
-
// An empty pass
|
|
183
|
-
//
|
|
204
|
+
// An empty pass clears any widget stranded by a prose-to-non-prose kind change in
|
|
205
|
+
// place, which reuses this same component instance.
|
|
184
206
|
widgetPool.beginPass();
|
|
185
207
|
destroyIslands();
|
|
186
208
|
widgetPool.sweep();
|
|
@@ -197,12 +219,11 @@ export function createTextRender(deps) {
|
|
|
197
219
|
el.textContent = display;
|
|
198
220
|
}
|
|
199
221
|
}
|
|
200
|
-
//
|
|
201
|
-
//
|
|
202
|
-
// early-return onto stale DOM.
|
|
222
|
+
// Always set, even where a branch skipped its write: a stale key would let a later render
|
|
223
|
+
// return early onto outdated DOM.
|
|
203
224
|
lastRenderedKey = renderKey;
|
|
204
225
|
ensureBr(el);
|
|
205
|
-
//
|
|
226
|
+
// This attribute decides which spans the caret can land in, so it is set first.
|
|
206
227
|
el.toggleAttribute(CONTENT_EMPTY_ATTR, holdsOnlyMarkerChrome(el));
|
|
207
228
|
if (carriedCaret !== null)
|
|
208
229
|
restoreCaret(el, carriedCaret);
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* an offset has only whitespace to one side.
|
|
5
5
|
*/
|
|
6
6
|
import type { AnyInlineKind, InlineNode } from '../../../core/nodes';
|
|
7
|
+
import type { GrammarView } from '../../../schema/block-openers';
|
|
7
8
|
export interface WidgetRange {
|
|
8
9
|
start: number;
|
|
9
10
|
end: number;
|
|
@@ -13,18 +14,17 @@ export interface WidgetAtCursor extends WidgetRange {
|
|
|
13
14
|
kind: AnyInlineKind;
|
|
14
15
|
}
|
|
15
16
|
export type CaretDirection = 'forward' | 'backward';
|
|
16
|
-
/** The live widget the caret sits against, or null. At a boundary two widgets share
|
|
17
|
-
*
|
|
18
|
-
|
|
19
|
-
export declare function
|
|
20
|
-
export declare function findWidgetNodeByStart(sourceStart: number, inlineContent: ReadonlyArray<InlineNode> | undefined, raw: string): WidgetRange | null;
|
|
17
|
+
/** The live widget the caret sits against, or null. At a boundary two widgets share,
|
|
18
|
+
* `direction` breaks the tie: forward takes the second widget, backward the first. */
|
|
19
|
+
export declare function widgetAtCursor(offset: number | null, inlineContent: ReadonlyArray<InlineNode> | undefined, raw: string, direction: CaretDirection | undefined, grammar: GrammarView): WidgetAtCursor | null;
|
|
20
|
+
export declare function findWidgetNodeByStart(sourceStart: number, inlineContent: ReadonlyArray<InlineNode> | undefined, raw: string, grammar: GrammarView): WidgetRange | null;
|
|
21
21
|
/** First widget reachable from the leading edge, skipping blank text; null once any
|
|
22
22
|
* non-blank, non-widget inline intervenes. */
|
|
23
|
-
export declare function findFirstEdgeWidget(inlines: ReadonlyArray<InlineNode>, raw: string): InlineNode | null;
|
|
23
|
+
export declare function findFirstEdgeWidget(inlines: ReadonlyArray<InlineNode>, raw: string, grammar: GrammarView): InlineNode | null;
|
|
24
24
|
/** Trailing-edge counterpart of `findFirstEdgeWidget`. */
|
|
25
|
-
export declare function findLastEdgeWidget(inlines: ReadonlyArray<InlineNode>, raw: string): InlineNode | null;
|
|
25
|
+
export declare function findLastEdgeWidget(inlines: ReadonlyArray<InlineNode>, raw: string, grammar: GrammarView): InlineNode | null;
|
|
26
26
|
export declare function rawHasNoTextBefore(raw: string, offset: number): boolean;
|
|
27
27
|
export declare function rawHasNoTextAfter(raw: string, offset: number): boolean;
|
|
28
|
-
/** The
|
|
29
|
-
*
|
|
28
|
+
/** The inline-widget element whose source starts at `start`, or null. The only place this
|
|
29
|
+
* selector is written: a mistyped copy would fail silently as a null `querySelector`. */
|
|
30
30
|
export declare function widgetElByStart(el: HTMLElement, start: number): HTMLElement | null;
|
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
* live widget a caret offset touches, the leading/trailing edge widgets, and whether
|
|
4
4
|
* an offset has only whitespace to one side.
|
|
5
5
|
*/
|
|
6
|
+
import { isBlankText } from '../../../core/lines';
|
|
6
7
|
import { isInlineWidget, flattenInlineWidgets } from '../../../core/inline/inline-widgets';
|
|
7
|
-
/** The live widget the caret sits against, or null. At a boundary two widgets share
|
|
8
|
-
*
|
|
9
|
-
|
|
10
|
-
export function widgetAtCursor(offset, inlineContent, raw, direction = 'backward') {
|
|
8
|
+
/** The live widget the caret sits against, or null. At a boundary two widgets share,
|
|
9
|
+
* `direction` breaks the tie: forward takes the second widget, backward the first. */
|
|
10
|
+
export function widgetAtCursor(offset, inlineContent, raw, direction = 'backward', grammar) {
|
|
11
11
|
if (offset === null)
|
|
12
12
|
return null;
|
|
13
13
|
let leadingMatch = null;
|
|
14
14
|
let trailingMatch = null;
|
|
15
15
|
// Recurse so a widget nested inside a link (`[![alt][ref]][repo]`) is seen.
|
|
16
|
-
for (const inline of flattenInlineWidgets(inlineContent ?? [], raw)) {
|
|
16
|
+
for (const inline of flattenInlineWidgets(inlineContent ?? [], raw, grammar)) {
|
|
17
17
|
if (offset === inline.start && !leadingMatch)
|
|
18
18
|
leadingMatch = { start: inline.start, end: inline.end, atRight: false, kind: inline.kind };
|
|
19
19
|
if (offset === inline.end && !trailingMatch)
|
|
@@ -23,8 +23,8 @@ export function widgetAtCursor(offset, inlineContent, raw, direction = 'backward
|
|
|
23
23
|
return leadingMatch ?? trailingMatch;
|
|
24
24
|
return trailingMatch ?? leadingMatch;
|
|
25
25
|
}
|
|
26
|
-
export function findWidgetNodeByStart(sourceStart, inlineContent, raw) {
|
|
27
|
-
for (const inline of flattenInlineWidgets(inlineContent ?? [], raw)) {
|
|
26
|
+
export function findWidgetNodeByStart(sourceStart, inlineContent, raw, grammar) {
|
|
27
|
+
for (const inline of flattenInlineWidgets(inlineContent ?? [], raw, grammar)) {
|
|
28
28
|
if (inline.start === sourceStart) {
|
|
29
29
|
return { start: inline.start, end: inline.end };
|
|
30
30
|
}
|
|
@@ -33,36 +33,36 @@ export function findWidgetNodeByStart(sourceStart, inlineContent, raw) {
|
|
|
33
33
|
}
|
|
34
34
|
/** First widget reachable from the leading edge, skipping blank text; null once any
|
|
35
35
|
* non-blank, non-widget inline intervenes. */
|
|
36
|
-
export function findFirstEdgeWidget(inlines, raw) {
|
|
36
|
+
export function findFirstEdgeWidget(inlines, raw, grammar) {
|
|
37
37
|
for (const inline of inlines) {
|
|
38
|
-
if (isInlineWidget(inline, raw))
|
|
38
|
+
if (isInlineWidget(inline, raw, grammar))
|
|
39
39
|
return inline;
|
|
40
|
-
if (inline.kind === 'text' && (inline.text ?? '')
|
|
40
|
+
if (inline.kind === 'text' && isBlankText(inline.text ?? ''))
|
|
41
41
|
continue;
|
|
42
42
|
return null;
|
|
43
43
|
}
|
|
44
44
|
return null;
|
|
45
45
|
}
|
|
46
46
|
/** Trailing-edge counterpart of `findFirstEdgeWidget`. */
|
|
47
|
-
export function findLastEdgeWidget(inlines, raw) {
|
|
47
|
+
export function findLastEdgeWidget(inlines, raw, grammar) {
|
|
48
48
|
for (let i = inlines.length - 1; i >= 0; i--) {
|
|
49
49
|
const inline = inlines[i];
|
|
50
|
-
if (isInlineWidget(inline, raw))
|
|
50
|
+
if (isInlineWidget(inline, raw, grammar))
|
|
51
51
|
return inline;
|
|
52
|
-
if (inline.kind === 'text' && (inline.text ?? '')
|
|
52
|
+
if (inline.kind === 'text' && isBlankText(inline.text ?? ''))
|
|
53
53
|
continue;
|
|
54
54
|
return null;
|
|
55
55
|
}
|
|
56
56
|
return null;
|
|
57
57
|
}
|
|
58
58
|
export function rawHasNoTextBefore(raw, offset) {
|
|
59
|
-
return raw.slice(0, offset)
|
|
59
|
+
return isBlankText(raw.slice(0, offset));
|
|
60
60
|
}
|
|
61
61
|
export function rawHasNoTextAfter(raw, offset) {
|
|
62
|
-
return raw.slice(offset)
|
|
62
|
+
return isBlankText(raw.slice(offset));
|
|
63
63
|
}
|
|
64
|
-
/** The
|
|
65
|
-
*
|
|
64
|
+
/** The inline-widget element whose source starts at `start`, or null. The only place this
|
|
65
|
+
* selector is written: a mistyped copy would fail silently as a null `querySelector`. */
|
|
66
66
|
export function widgetElByStart(el, start) {
|
|
67
67
|
return el.querySelector(`[data-inline-widget][data-source-start="${start}"]`);
|
|
68
68
|
}
|
|
@@ -1,51 +1,57 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Inline-widget interaction for
|
|
3
|
-
*
|
|
4
|
-
* consumed the event, so the component can interleave them
|
|
2
|
+
* Inline-widget interaction for the prose editable elements (the text block and the table cell):
|
|
3
|
+
* selecting a widget, showing its source, and the keydown and click handlers around both. Each
|
|
4
|
+
* keydown handler returns whether it consumed the event, so the component can interleave them
|
|
5
|
+
* with the shared pipeline.
|
|
5
6
|
*/
|
|
6
7
|
import type { BlockEditActions, FocusActions } from '../../../action-contracts';
|
|
7
8
|
import type { AnyInlineKind } from '../../../core/nodes';
|
|
8
9
|
import type { NodeView } from '../../../core/node-views';
|
|
9
|
-
import type { PresentationMode } from '../../../presentation-mode';
|
|
10
|
-
import type { LinkReferenceResolverRef } from '../../../editor-keys';
|
|
11
10
|
import type { WidgetSelectionState } from '../../image/widget-selection-state.svelte';
|
|
12
|
-
import type {
|
|
11
|
+
import type { SurfaceBackend } from '../../../cursor/surface-backend';
|
|
12
|
+
import { type LineEnding } from '../../../core/lines';
|
|
13
13
|
import type { RevealFold } from '../editable-surface';
|
|
14
|
+
import type { StoredAs } from '../../../schema/stored-as';
|
|
15
|
+
import type { Reading } from '../../../schema/reading';
|
|
16
|
+
import type { WriteMode } from '../../../schema/block-kind-descriptor';
|
|
14
17
|
export interface WidgetInteractionDeps {
|
|
15
18
|
get node(): NodeView;
|
|
16
19
|
get index(): number;
|
|
20
|
+
/** The document's line ending, which a commit takes where the block has none of its own. */
|
|
21
|
+
getLineEnding: () => LineEnding;
|
|
17
22
|
get myPath(): number[];
|
|
18
23
|
getEl: () => HTMLElement | null;
|
|
19
|
-
getAmbientLength: () => number;
|
|
20
24
|
getEditorContentWidth: () => number;
|
|
21
|
-
cursor:
|
|
25
|
+
cursor: SurfaceBackend;
|
|
22
26
|
widgetSelection: WidgetSelectionState;
|
|
23
27
|
blockEdit: BlockEditActions;
|
|
24
28
|
focusActions: FocusActions;
|
|
25
29
|
setSnapTarget: (offset: number | null) => void;
|
|
26
|
-
/**
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
/** The block's live DOM as raw text, read on reveal commit to pick up the ephemeral
|
|
31
|
-
* source edit that never went through the CST. */
|
|
30
|
+
/** Remember a caret offset, counted in the stored bytes, for the restore after the next render. */
|
|
31
|
+
setPendingCursor: (offset: number | null) => void;
|
|
32
|
+
/** The block's live DOM as raw text, read when a shown source is committed, to pick up
|
|
33
|
+
* the temporary edit that never went through the CST. */
|
|
32
34
|
readRawText: () => string;
|
|
33
|
-
/**
|
|
34
|
-
*
|
|
35
|
+
/** Tells the component a source is showing, so `onInput` and IME `compositionend`
|
|
36
|
+
* skip the per-keystroke CST commit while it is. */
|
|
35
37
|
setRevealing: (value: boolean) => void;
|
|
36
|
-
/**
|
|
38
|
+
/** Hiding a shown source mid-selection would strand a selection endpoint anchored in it. */
|
|
37
39
|
isCrossBlock: () => boolean;
|
|
38
|
-
/**
|
|
39
|
-
*
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
/** The grammar the widgets were rendered with, and the presentation mode: reading mode shows
|
|
41
|
+
* no source and edits no widget. */
|
|
42
|
+
get reading(): Reading;
|
|
43
|
+
/** Where the block's bytes are stored, read when a selected widget is replaced. */
|
|
44
|
+
storedAs: () => StoredAs;
|
|
42
45
|
}
|
|
43
46
|
/** The click a widget gesture reads off: the same event the widget's own handler sees. */
|
|
44
47
|
export interface WidgetPress {
|
|
45
|
-
/** Ctrl
|
|
48
|
+
/** Ctrl or Cmd held at the click: with it, a widget that takes the activation click keeps it. */
|
|
46
49
|
modified?: boolean;
|
|
47
|
-
/** `MouseEvent.detail`; two or more is a double-click, which
|
|
50
|
+
/** `MouseEvent.detail`; two or more is a double-click, which selects the token it just opened. */
|
|
48
51
|
clickCount?: number;
|
|
52
|
+
/** The pointer travelled between press and release, so the gesture was a drag. Showing a
|
|
53
|
+
* widget's source there would unmount the widget the drag just painted a range across. */
|
|
54
|
+
moved?: boolean;
|
|
49
55
|
}
|
|
50
56
|
export interface WidgetInteraction {
|
|
51
57
|
/** Block holds only image/blank inline content, so vertical arrow traversal skips
|
|
@@ -54,40 +60,58 @@ export interface WidgetInteraction {
|
|
|
54
60
|
/** Keydown while a widget is selected. Every key is consumed in that state, so a
|
|
55
61
|
* true return must not fall through to the shared pipeline. */
|
|
56
62
|
handleSelectedWidgetKeydown(e: KeyboardEvent): Promise<boolean>;
|
|
57
|
-
/** Shift+Arrow into a widget; extends the
|
|
63
|
+
/** Shift+Arrow into a widget; extends the browser selection to the far boundary. */
|
|
58
64
|
handleShiftArrowIntoWidget(e: KeyboardEvent): boolean;
|
|
59
|
-
/** Enter a widget at a caret edge
|
|
60
|
-
* dispatch
|
|
65
|
+
/** Enter a widget at a caret edge: show its source or select it, as the kind's policy
|
|
66
|
+
* says. The caret-edge dispatch decides which edge and calls this. */
|
|
61
67
|
enterWidget(widget: {
|
|
62
68
|
start: number;
|
|
63
69
|
end: number;
|
|
64
70
|
kind: AnyInlineKind;
|
|
65
71
|
}, fromTrailingEdge: boolean): void;
|
|
66
|
-
/**
|
|
67
|
-
*
|
|
72
|
+
/** Arriving from another block: a widget at the near edge that can show its source
|
|
73
|
+
* opens it, any other is selected. Returns whether an edge widget was entered. */
|
|
68
74
|
enterEdgeWidget(side: 'start' | 'end'): boolean;
|
|
69
|
-
/**
|
|
70
|
-
*
|
|
75
|
+
/** Move a click that landed outside any text node to the nearest widget edge, or open the
|
|
76
|
+
* source of a widget it hit. */
|
|
71
77
|
snapClickToWidgetEdge(clickX: number | null, clickY: number | null, press?: WidgetPress): void;
|
|
72
|
-
/** A caret restored strictly inside a
|
|
73
|
-
* around it
|
|
78
|
+
/** A caret restored strictly inside a widget that can show its source, such as a formula
|
|
79
|
+
* that just closed around it, opens that source there instead of being pushed past it. */
|
|
74
80
|
revealInterior(offset: number): boolean;
|
|
75
|
-
/** A
|
|
81
|
+
/** A widget is currently showing its editable `$…$` source. */
|
|
76
82
|
isRevealing(): boolean;
|
|
77
|
-
/** Escape
|
|
78
|
-
*
|
|
83
|
+
/** Escape, which cancels back to the rendered form, while a source is shown. Enter is
|
|
84
|
+
* deliberately left alone: it is the block's split command, which hides the source first. */
|
|
79
85
|
handleRevealingKeydown(e: KeyboardEvent): Promise<boolean>;
|
|
80
|
-
/** Commit the
|
|
86
|
+
/** Commit the shown source when focus leaves the block. */
|
|
81
87
|
commitRevealOnBlur(): void;
|
|
82
|
-
/**
|
|
83
|
-
*
|
|
84
|
-
* committed caret and a write completion the caller MUST await before mutating. */
|
|
88
|
+
/** Hide a shown source before any edit, so the edit runs against a CST that matches the DOM.
|
|
89
|
+
* Null if none was shown; otherwise a write the caller must await before editing. */
|
|
85
90
|
foldRevealBeforeMutation(caretAfter?: number): RevealFold | null;
|
|
86
|
-
/**
|
|
87
|
-
*
|
|
91
|
+
/** Hide the source when the caret leaves it but stays inside the block; blur handles
|
|
92
|
+
* the case where focus leaves the block. */
|
|
88
93
|
foldRevealIfSelectionEscaped(): void;
|
|
89
|
-
/** The point sits on a
|
|
90
|
-
* browser's caret
|
|
94
|
+
/** The point sits on a widget that can show its source. `pointerdown` then cancels the
|
|
95
|
+
* browser's own caret placement so nothing races this one. */
|
|
91
96
|
isPointOnRevealWidget(x: number, y: number): boolean;
|
|
97
|
+
/** Where a press on an inline widget anchors a drag: the widget's raw edge on the point's side.
|
|
98
|
+
* Null over no widget, or over one with a pointer gesture of its own. */
|
|
99
|
+
islandDragAnchor(x: number, y: number): number | null;
|
|
92
100
|
}
|
|
101
|
+
/** What {@link replaceSelectedWidget} writes through. */
|
|
102
|
+
export interface WidgetReplaceDeps {
|
|
103
|
+
get node(): NodeView;
|
|
104
|
+
get index(): number;
|
|
105
|
+
blockEdit: BlockEditActions;
|
|
106
|
+
widgetSelection: WidgetSelectionState;
|
|
107
|
+
setPendingCursor: (offset: number | null) => void;
|
|
108
|
+
/** Where the block's bytes are stored, read when the widget is replaced. */
|
|
109
|
+
storedAs: () => StoredAs;
|
|
110
|
+
}
|
|
111
|
+
/** Replace a selected widget's bytes with `text` in one undoable write and put the caret after
|
|
112
|
+
* `text`, since with the widget gone the browser has no caret to keep. */
|
|
113
|
+
export declare function replaceSelectedWidget(deps: WidgetReplaceDeps, widget: {
|
|
114
|
+
start: number;
|
|
115
|
+
end: number;
|
|
116
|
+
}, preSelectOffset: number, text: string, mode: WriteMode): Promise<void>;
|
|
93
117
|
export declare function createWidgetInteraction(deps: WidgetInteractionDeps): WidgetInteraction;
|