@voithos-labs/aragonite 0.10.3 → 0.10.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/a11y-strings.d.ts +12 -5
- package/dist/a11y-strings.js +61 -5
- package/dist/action-contracts.d.ts +242 -155
- package/dist/action-contracts.js +2 -2
- package/dist/active-editor.d.ts +3 -3
- package/dist/active-editor.js +8 -9
- package/dist/ambient/ambient-dom.d.ts +2 -5
- package/dist/ambient/ambient-dom.js +16 -62
- package/dist/assert.js +6 -5
- package/dist/block-component.d.ts +135 -109
- package/dist/block-component.js +30 -22
- package/dist/block-id.d.ts +6 -10
- package/dist/block-id.js +25 -14
- package/dist/bounded-memo.d.ts +5 -5
- package/dist/bounded-memo.js +6 -6
- package/dist/components/BlockDragHandle.svelte +13 -20
- package/dist/components/BlockHost.svelte +56 -134
- package/dist/components/BlockList.svelte +22 -19
- package/dist/components/DecorationOverlay.svelte +9 -10
- package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
- package/dist/components/Editor.svelte +619 -1089
- package/dist/components/Editor.svelte.d.ts +9 -20
- package/dist/components/GapCaret.svelte +26 -59
- package/dist/components/SelectionOverlay.svelte +36 -67
- package/dist/components/SelectionOverlay.svelte.d.ts +6 -4
- package/dist/components/TailInsert.svelte +8 -55
- package/dist/components/TailInsert.svelte.d.ts +4 -6
- package/dist/components/block-content-selector.d.ts +11 -11
- package/dist/components/block-content-selector.js +11 -11
- package/dist/components/block-el-lookup.d.ts +6 -0
- package/dist/components/block-el-lookup.js +27 -0
- package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
- package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
- package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
- package/dist/components/blocks/code/CodeBlock.svelte +255 -276
- package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
- package/dist/components/blocks/code/CodeBlockRail.svelte +103 -100
- package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
- package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
- package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
- package/dist/components/blocks/code/code-bootstrap.js +35 -28
- package/dist/components/blocks/code/code-context-actions.js +5 -4
- package/dist/components/blocks/code/code-enter.js +2 -2
- package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
- package/dist/components/blocks/code/code-fence-boundary.js +40 -66
- package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
- package/dist/components/blocks/code/code-fence-exit.js +24 -25
- package/dist/components/blocks/code/code-indent.d.ts +2 -2
- package/dist/components/blocks/code/code-indent.js +4 -7
- package/dist/components/blocks/code/code-languages.d.ts +16 -12
- package/dist/components/blocks/code/code-languages.js +58 -32
- package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
- package/dist/components/blocks/code/code-paste-surface.js +9 -18
- package/dist/components/blocks/code/code-renderer.d.ts +21 -5
- package/dist/components/blocks/code/code-renderer.js +90 -125
- package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
- package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
- package/dist/components/blocks/directive/activate-directives.js +18 -13
- package/dist/components/blocks/editable-leaf.d.ts +50 -74
- package/dist/components/blocks/editable-leaf.js +144 -202
- package/dist/components/blocks/editable-surface.d.ts +96 -100
- package/dist/components/blocks/editable-surface.js +101 -109
- package/dist/components/blocks/list/ListBlock.svelte +46 -90
- package/dist/components/blocks/list/ListItemBlock.svelte +99 -144
- package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +3 -0
- package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
- package/dist/components/blocks/list/task-checkbox.js +12 -7
- package/dist/components/blocks/plain-text-backend.d.ts +4 -20
- package/dist/components/blocks/plain-text-backend.js +9 -43
- package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
- package/dist/components/blocks/surface-wiring.svelte.js +15 -34
- package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
- package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
- package/dist/components/blocks/table/TableBlock.svelte +100 -165
- package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
- package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
- package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
- package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
- package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
- package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
- package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
- package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
- package/dist/components/blocks/table/cell-pointer.js +49 -71
- package/dist/components/blocks/table/cell-render.d.ts +24 -29
- package/dist/components/blocks/table/cell-render.js +29 -31
- package/dist/components/blocks/table/selected-cells.d.ts +7 -7
- package/dist/components/blocks/table/selected-cells.js +9 -13
- package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
- package/dist/components/blocks/table/table-caret-at-point.js +5 -5
- package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
- package/dist/components/blocks/table/table-cell-paste.js +27 -43
- package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
- package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
- package/dist/components/blocks/table/table-menu-model.js +6 -10
- package/dist/components/blocks/table/table-navigation.js +2 -2
- package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
- package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
- package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
- package/dist/components/blocks/text/auto-pair-record.js +51 -0
- package/dist/components/blocks/text/click-snap-guard.d.ts +9 -4
- package/dist/components/blocks/text/click-snap-guard.js +16 -5
- package/dist/components/blocks/text/composition-seat.d.ts +17 -14
- package/dist/components/blocks/text/composition-seat.js +11 -11
- package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
- package/dist/components/blocks/text/construct-edge-delete.js +50 -65
- package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
- package/dist/components/blocks/text/construct-reveal.js +13 -14
- package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
- package/dist/components/blocks/text/delimiter-autopair.js +87 -103
- package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
- package/dist/components/blocks/text/edge-policy-dispatch.js +164 -180
- package/dist/components/blocks/text/edge-seat.d.ts +17 -26
- package/dist/components/blocks/text/edge-seat.js +43 -70
- package/dist/components/blocks/text/link-at-point.d.ts +9 -9
- package/dist/components/blocks/text/link-at-point.js +12 -15
- package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
- package/dist/components/blocks/text/live-join-seam.js +75 -112
- package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
- package/dist/components/blocks/text/live-selection-edit.js +32 -105
- package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
- package/dist/components/blocks/text/live-split-rebalance.js +50 -67
- package/dist/components/blocks/text/marker-completion.d.ts +7 -12
- package/dist/components/blocks/text/marker-completion.js +17 -10
- package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
- package/dist/components/blocks/text/pending-mark-insert.js +30 -49
- package/dist/components/blocks/text/screen-diff.d.ts +5 -15
- package/dist/components/blocks/text/screen-diff.js +5 -19
- package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
- package/dist/components/blocks/text/text-clipboard.js +27 -32
- package/dist/components/blocks/text/text-keydown.d.ts +20 -30
- package/dist/components/blocks/text/text-keydown.js +54 -51
- package/dist/components/blocks/text/text-render.d.ts +25 -35
- package/dist/components/blocks/text/text-render.js +82 -61
- package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
- package/dist/components/blocks/text/widget-adjacency.js +17 -17
- package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
- package/dist/components/blocks/text/widget-interaction.js +243 -208
- package/dist/components/blocks/widget-portal.d.ts +20 -29
- package/dist/components/blocks/widget-portal.js +16 -14
- package/dist/components/built-in-blocks.d.ts +3 -4
- package/dist/components/built-in-blocks.js +17 -18
- package/dist/components/drag-handle.d.ts +13 -30
- package/dist/components/drag-handle.js +25 -63
- package/dist/components/editor-built-ins.d.ts +1 -0
- package/dist/components/editor-built-ins.js +16 -0
- package/dist/components/editor-root-clipboard.d.ts +6 -6
- package/dist/components/editor-root-clipboard.js +16 -27
- package/dist/components/editor-root-document-swap.d.ts +49 -0
- package/dist/components/editor-root-document-swap.js +54 -0
- package/dist/components/editor-root-focus.d.ts +5 -4
- package/dist/components/editor-root-focus.js +51 -22
- package/dist/components/editor-root-focused-surface.d.ts +35 -0
- package/dist/components/editor-root-focused-surface.js +65 -0
- package/dist/components/editor-root-geometry.d.ts +15 -24
- package/dist/components/editor-root-geometry.js +27 -31
- package/dist/components/editor-root-gestures.d.ts +39 -0
- package/dist/components/editor-root-gestures.js +189 -0
- package/dist/components/editor-root-keydown.d.ts +10 -25
- package/dist/components/editor-root-keydown.js +19 -43
- package/dist/components/editor-root-listeners.d.ts +22 -31
- package/dist/components/editor-root-listeners.js +49 -46
- package/dist/components/editor-root-menus.d.ts +51 -0
- package/dist/components/editor-root-menus.js +147 -0
- package/dist/components/editor-root-mode-flip.d.ts +16 -11
- package/dist/components/editor-root-mode-flip.js +36 -34
- package/dist/components/editor-root-scroll-host.d.ts +22 -0
- package/dist/components/editor-root-scroll-host.js +34 -0
- package/dist/components/editor-root-test-surface.d.ts +48 -0
- package/dist/components/editor-root-test-surface.js +6 -0
- package/dist/components/image/ImageOverlayHost.svelte +44 -35
- package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
- package/dist/components/image/ImageProperties.svelte +37 -41
- package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
- package/dist/components/image/ImageResizeHandles.svelte +26 -30
- package/dist/components/image/image-crop.d.ts +5 -11
- package/dist/components/image/image-crop.js +5 -11
- package/dist/components/image/image-edit-commit.d.ts +19 -16
- package/dist/components/image/image-edit-commit.js +74 -38
- package/dist/components/image/image-resize.d.ts +2 -5
- package/dist/components/image/image-resize.js +3 -6
- package/dist/components/image/image-widget-editing.d.ts +3 -3
- package/dist/components/image/image-widget-editing.js +9 -9
- package/dist/components/image/widget-dom.d.ts +2 -3
- package/dist/components/image/widget-dom.js +19 -24
- package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
- package/dist/components/image/widget-selection-state.svelte.js +26 -19
- package/dist/components/kind-cue.svelte.d.ts +21 -0
- package/dist/components/kind-cue.svelte.js +35 -0
- package/dist/components/link-card/LinkCard.svelte +115 -64
- package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
- package/dist/components/link-card/LinkCardHost.svelte +42 -33
- package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
- package/dist/components/link-card/link-card-commit.d.ts +16 -19
- package/dist/components/link-card/link-card-commit.js +21 -30
- package/dist/components/link-card/link-card-entry.d.ts +13 -23
- package/dist/components/link-card/link-card-entry.js +16 -24
- package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
- package/dist/components/link-card/link-card-state.svelte.js +2 -2
- package/dist/components/lrd-map-gate.d.ts +4 -11
- package/dist/components/lrd-map-gate.js +5 -11
- package/dist/components/menu/BlockMenu.svelte +20 -81
- package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
- package/dist/components/menu/InlineMenuHost.svelte +191 -0
- package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
- package/dist/components/menu/MenuIcon.svelte +3 -103
- package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
- package/dist/components/menu/SelectionToolbar.svelte +380 -0
- package/dist/components/menu/SelectionToolbar.svelte.d.ts +14 -0
- package/dist/components/menu/clipboard-actions.d.ts +3 -4
- package/dist/components/menu/clipboard-actions.js +3 -4
- package/dist/components/menu/default-context-actions.d.ts +4 -13
- package/dist/components/menu/default-context-actions.js +49 -67
- package/dist/components/menu/flyout-placement.d.ts +2 -2
- package/dist/components/menu/flyout-placement.js +2 -2
- package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
- package/dist/components/menu/menu-presence.svelte.js +19 -0
- package/dist/components/paste-image-arm.d.ts +6 -11
- package/dist/components/paste-image-arm.js +11 -18
- package/dist/components/portal.d.ts +2 -5
- package/dist/components/portal.js +4 -7
- package/dist/core/directive/activate.d.ts +4 -5
- package/dist/core/directive/activate.js +8 -9
- package/dist/core/directive/container-opener.js +13 -12
- package/dist/core/directive/grammar.d.ts +2 -5
- package/dist/core/directive/grammar.js +10 -10
- package/dist/core/directive/kinds.d.ts +4 -7
- package/dist/core/directive/kinds.js +14 -16
- package/dist/core/directive/registry.d.ts +12 -9
- package/dist/core/directive/registry.js +19 -20
- package/dist/core/directive/text-recognizer.d.ts +3 -2
- package/dist/core/directive/text-recognizer.js +5 -9
- package/dist/core/escapable.d.ts +1 -5
- package/dist/core/escapable.js +1 -5
- package/dist/core/inline/backticks.d.ts +3 -4
- package/dist/core/inline/backticks.js +3 -4
- package/dist/core/inline/character-refs.js +2 -1
- package/dist/core/inline/destination-bytes.d.ts +6 -3
- package/dist/core/inline/destination-bytes.js +50 -8
- package/dist/core/inline/entity-widget.d.ts +4 -3
- package/dist/core/inline/entity-widget.js +6 -6
- package/dist/core/inline/format-toggle.d.ts +22 -28
- package/dist/core/inline/format-toggle.js +97 -129
- package/dist/core/inline/html-entities.d.ts +2 -3
- package/dist/core/inline/html-entities.js +2 -3
- package/dist/core/inline/html-tag-grammar.js +6 -2
- package/dist/core/inline/image-dimensions.d.ts +2 -0
- package/dist/core/inline/image-dimensions.js +19 -2
- package/dist/core/inline/image-source-bytes.d.ts +11 -0
- package/dist/core/inline/image-source-bytes.js +71 -0
- package/dist/core/inline/index.d.ts +28 -21
- package/dist/core/inline/index.js +56 -34
- package/dist/core/inline/inline-cache.d.ts +12 -15
- package/dist/core/inline/inline-cache.js +11 -14
- package/dist/core/inline/inline-widgets.d.ts +55 -68
- package/dist/core/inline/inline-widgets.js +55 -58
- package/dist/core/inline/link-destination.d.ts +31 -0
- package/dist/core/inline/link-destination.js +129 -0
- package/dist/core/inline/link-reference-resolver.d.ts +8 -6
- package/dist/core/inline/link-reference-resolver.js +10 -6
- package/dist/core/inline/link-source-bytes.d.ts +31 -0
- package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
- package/dist/core/inline/live-edit/read-back.d.ts +29 -0
- package/dist/core/inline/live-edit/read-back.js +50 -0
- package/dist/core/inline/picture.d.ts +10 -0
- package/dist/core/inline/picture.js +40 -0
- package/dist/core/inline/scan/autolinks.d.ts +7 -8
- package/dist/core/inline/scan/autolinks.js +80 -59
- package/dist/core/inline/scan/brackets.d.ts +2 -2
- package/dist/core/inline/scan/brackets.js +6 -103
- package/dist/core/inline/scan/code-spans.d.ts +4 -0
- package/dist/core/inline/scan/code-spans.js +8 -0
- package/dist/core/inline/scan/emphasis.js +10 -14
- package/dist/core/inline/scan/index.d.ts +3 -1
- package/dist/core/inline/scan/index.js +32 -33
- package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
- package/dist/core/inline/scan/plugin-syntax.js +75 -89
- package/dist/core/inline/scan/scan-state.d.ts +2 -0
- package/dist/core/inline/scan/scan-state.js +1 -0
- package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
- package/dist/core/inline/scan/simple-nodes.js +2 -5
- package/dist/core/inline/scan/triggers.d.ts +17 -0
- package/dist/core/inline/scan/triggers.js +26 -0
- package/dist/core/inline/scan/url.js +8 -10
- package/dist/core/inline/transparency.d.ts +2 -1
- package/dist/core/inline/transparency.js +33 -17
- package/dist/core/inline/visibility.d.ts +30 -49
- package/dist/core/inline/visibility.js +31 -49
- package/dist/core/inline/walk.d.ts +4 -10
- package/dist/core/inline/walk.js +4 -10
- package/dist/core/inline-render.d.ts +22 -27
- package/dist/core/inline-render.js +51 -60
- package/dist/core/lines.d.ts +67 -26
- package/dist/core/lines.js +164 -33
- package/dist/core/metadata-parity.d.ts +9 -0
- package/dist/core/metadata-parity.js +25 -0
- package/dist/core/node-views.d.ts +7 -6
- package/dist/core/node-views.js +5 -5
- package/dist/core/nodes.d.ts +34 -44
- package/dist/core/nodes.js +4 -12
- package/dist/core/parser.d.ts +27 -34
- package/dist/core/parser.js +53 -67
- package/dist/core/parsers/blockquote.d.ts +5 -8
- package/dist/core/parsers/blockquote.js +11 -10
- package/dist/core/parsers/built-in-openers.d.ts +2 -5
- package/dist/core/parsers/built-in-openers.js +5 -8
- package/dist/core/parsers/fence-syntax.d.ts +36 -7
- package/dist/core/parsers/fence-syntax.js +61 -11
- package/dist/core/parsers/fenced-code.d.ts +16 -0
- package/dist/core/parsers/fenced-code.js +16 -15
- package/dist/core/parsers/heading.d.ts +19 -2
- package/dist/core/parsers/heading.js +50 -2
- package/dist/core/parsers/html-block.d.ts +3 -6
- package/dist/core/parsers/html-block.js +10 -11
- package/dist/core/parsers/indented-code.d.ts +1 -1
- package/dist/core/parsers/indented-code.js +2 -8
- package/dist/core/parsers/link-reference.d.ts +5 -3
- package/dist/core/parsers/link-reference.js +116 -120
- package/dist/core/parsers/list.d.ts +12 -5
- package/dist/core/parsers/list.js +53 -36
- package/dist/core/parsers/paragraph.d.ts +3 -3
- package/dist/core/parsers/paragraph.js +14 -5
- package/dist/core/parsers/table-completion.d.ts +2 -5
- package/dist/core/parsers/table-completion.js +7 -10
- package/dist/core/parsers/table.d.ts +8 -8
- package/dist/core/parsers/table.js +23 -26
- package/dist/core/parsers/thematic-break.js +15 -14
- package/dist/core/paths.d.ts +13 -0
- package/dist/core/paths.js +31 -0
- package/dist/core/terminator-escalation.d.ts +0 -7
- package/dist/core/terminator-escalation.js +5 -8
- package/dist/core/url-policy.d.ts +2 -5
- package/dist/core/url-policy.js +8 -12
- package/dist/cursor/caret-memory.d.ts +34 -0
- package/dist/cursor/caret-memory.js +82 -0
- package/dist/cursor/coordinate-spaces.d.ts +26 -19
- package/dist/cursor/coordinate-spaces.js +32 -20
- package/dist/cursor/dom-walk.d.ts +7 -13
- package/dist/cursor/dom-walk.js +7 -13
- package/dist/cursor/edge-affinity.d.ts +7 -35
- package/dist/cursor/edge-affinity.js +13 -44
- package/dist/cursor/focused-caret.d.ts +6 -8
- package/dist/cursor/focused-caret.js +7 -16
- package/dist/cursor/height-model.d.ts +3 -3
- package/dist/cursor/height-model.js +5 -5
- package/dist/cursor/height-oracle.d.ts +10 -7
- package/dist/cursor/height-oracle.js +26 -75
- package/dist/cursor/observe-resize.d.ts +13 -0
- package/dist/cursor/observe-resize.js +43 -0
- package/dist/cursor/overlay-rects.d.ts +2 -5
- package/dist/cursor/overlay-rects.js +2 -5
- package/dist/cursor/overlay-remeasure.d.ts +6 -7
- package/dist/cursor/overlay-remeasure.js +10 -14
- package/dist/cursor/pending-marks.d.ts +7 -9
- package/dist/cursor/pending-marks.js +6 -27
- package/dist/cursor/point-offset.d.ts +16 -10
- package/dist/cursor/point-offset.js +60 -25
- package/dist/cursor/reveal-source.d.ts +7 -11
- package/dist/cursor/reveal-source.js +10 -18
- package/dist/cursor/scroll-ancestors.d.ts +9 -20
- package/dist/cursor/scroll-ancestors.js +14 -26
- package/dist/cursor/scroll-owner.d.ts +92 -0
- package/dist/cursor/scroll-owner.js +283 -0
- package/dist/cursor/scrollport.d.ts +16 -8
- package/dist/cursor/scrollport.js +28 -5
- package/dist/cursor/sticky-column.d.ts +6 -29
- package/dist/cursor/sticky-column.js +6 -49
- package/dist/cursor/sticky-measure.d.ts +14 -9
- package/dist/cursor/sticky-measure.js +99 -49
- package/dist/cursor/surface-backend.d.ts +41 -0
- package/dist/cursor/surface-backend.js +78 -0
- package/dist/cursor/typography-estimates.d.ts +3 -3
- package/dist/cursor/typography-estimates.js +3 -3
- package/dist/cursor/visual-lines.d.ts +25 -13
- package/dist/cursor/visual-lines.js +72 -28
- package/dist/cursor/widget-edge-snap.d.ts +23 -0
- package/dist/cursor/widget-edge-snap.js +39 -0
- package/dist/cursor/widget-offset.d.ts +111 -102
- package/dist/cursor/widget-offset.js +352 -177
- package/dist/debug/diagnostics-report.d.ts +6 -6
- package/dist/debug/diagnostics-report.js +5 -5
- package/dist/debug/dump-tree.js +2 -2
- package/dist/debug/editor-diagnostics.d.ts +15 -0
- package/dist/debug/editor-diagnostics.js +33 -0
- package/dist/debug/inspect.d.ts +2 -2
- package/dist/debug/inspect.js +4 -4
- package/dist/debug/interaction-trace.d.ts +14 -15
- package/dist/debug/interaction-trace.js +19 -20
- package/dist/debug/operations-log.d.ts +1 -1
- package/dist/debug/operations-log.js +1 -1
- package/dist/decorations/buckets.d.ts +6 -12
- package/dist/decorations/buckets.js +4 -11
- package/dist/decorations/decoration-state.svelte.d.ts +2 -3
- package/dist/decorations/decoration-state.svelte.js +24 -26
- package/dist/decorations/island-dom.d.ts +10 -18
- package/dist/decorations/island-dom.js +25 -50
- package/dist/decorations/reserved-attrs.d.ts +6 -8
- package/dist/decorations/reserved-attrs.js +31 -17
- package/dist/decorations/types.d.ts +6 -7
- package/dist/decorations/types.js +2 -1
- package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
- package/dist/decorations/use-block-decorations.svelte.js +71 -0
- package/dist/decorations/widget-dom.d.ts +3 -3
- package/dist/decorations/widget-dom.js +5 -5
- package/dist/dev-warn.d.ts +5 -2
- package/dist/dev-warn.js +16 -4
- package/dist/editor-actions/ancestry-folds.d.ts +9 -14
- package/dist/editor-actions/ancestry-folds.js +13 -18
- package/dist/editor-actions/block-edit-core.d.ts +49 -22
- package/dist/editor-actions/block-edit-core.js +279 -151
- package/dist/editor-actions/block-edit-scope.d.ts +63 -50
- package/dist/editor-actions/block-edit-scope.js +100 -48
- package/dist/editor-actions/block-edit.d.ts +2 -3
- package/dist/editor-actions/block-edit.js +14 -90
- package/dist/editor-actions/commit/history.d.ts +4 -4
- package/dist/editor-actions/commit/history.js +33 -34
- package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
- package/dist/editor-actions/commit/reading-write-gate.js +56 -0
- package/dist/editor-actions/commit/text-batch.d.ts +7 -11
- package/dist/editor-actions/commit/text-batch.js +6 -7
- package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
- package/dist/editor-actions/commit/undo-controller.js +346 -216
- package/dist/editor-actions/container-block-component.d.ts +32 -51
- package/dist/editor-actions/container-block-component.js +66 -92
- package/dist/editor-actions/container-edit.d.ts +4 -2
- package/dist/editor-actions/container-edit.js +14 -44
- package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
- package/dist/editor-actions/container-exit-overrides.js +19 -21
- package/dist/editor-actions/deps.d.ts +25 -32
- package/dist/editor-actions/enter-completion.d.ts +12 -15
- package/dist/editor-actions/enter-completion.js +49 -51
- package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
- package/dist/editor-actions/focus/focus-dispatch.js +33 -52
- package/dist/editor-actions/focus/focus-landing.d.ts +11 -5
- package/dist/editor-actions/focus/focus-landing.js +29 -14
- package/dist/editor-actions/focus/focus.d.ts +3 -2
- package/dist/editor-actions/focus/focus.js +42 -59
- package/dist/editor-actions/index.d.ts +4 -3
- package/dist/editor-actions/index.js +5 -4
- package/dist/editor-actions/inline-range-commit.d.ts +18 -16
- package/dist/editor-actions/inline-range-commit.js +45 -54
- package/dist/editor-actions/leaf-write.d.ts +11 -0
- package/dist/editor-actions/leaf-write.js +102 -0
- package/dist/editor-actions/list-context.d.ts +9 -10
- package/dist/editor-actions/list-context.js +115 -110
- package/dist/editor-actions/list-overrides.d.ts +13 -5
- package/dist/editor-actions/list-overrides.js +36 -12
- package/dist/editor-actions/merge-fallback.d.ts +10 -16
- package/dist/editor-actions/merge-fallback.js +11 -22
- package/dist/editor-actions/nested/container-actions.d.ts +37 -0
- package/dist/editor-actions/nested/container-actions.js +42 -0
- package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
- package/dist/editor-actions/nested/emptied-container.js +5 -0
- package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
- package/dist/editor-actions/nested/nested-actions.js +17 -15
- package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
- package/dist/editor-actions/nested/nested-block-edit.js +40 -134
- package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
- package/dist/editor-actions/nested/nested-focus.js +33 -21
- package/dist/editor-actions/paste-coordinator.d.ts +3 -2
- package/dist/editor-actions/paste-coordinator.js +17 -13
- package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
- package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
- package/dist/editor-actions/plugin/container.d.ts +55 -76
- package/dist/editor-actions/plugin/container.js +105 -186
- package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
- package/dist/editor-actions/plugin/directive-container.js +7 -8
- package/dist/editor-actions/reorder-action.d.ts +7 -12
- package/dist/editor-actions/reorder-action.js +32 -48
- package/dist/editor-actions/reorder-drag.d.ts +12 -8
- package/dist/editor-actions/reorder-drag.js +45 -41
- package/dist/editor-actions/replacement-focus.d.ts +13 -21
- package/dist/editor-actions/replacement-focus.js +32 -33
- package/dist/editor-actions/search-replace.js +71 -67
- package/dist/editor-actions/stored-caret.d.ts +7 -0
- package/dist/editor-actions/stored-caret.js +10 -0
- package/dist/editor-actions/table-context.d.ts +9 -11
- package/dist/editor-actions/table-context.js +70 -93
- package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
- package/dist/editor-actions/unwrap-strategies.js +52 -63
- package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
- package/dist/editor-actions/whole-block-focus-surface.js +43 -53
- package/dist/editor-events.d.ts +25 -29
- package/dist/editor-events.js +17 -28
- package/dist/editor-keys.d.ts +96 -104
- package/dist/editor-keys.js +11 -24
- package/dist/editor-props.d.ts +91 -71
- package/dist/editor-rects.d.ts +23 -34
- package/dist/editor-rects.js +9 -77
- package/dist/env.d.ts +6 -4
- package/dist/env.js +8 -4
- package/dist/index.d.ts +6 -2
- package/dist/index.js +5 -2
- package/dist/inline-menu/inline-menu-session.d.ts +37 -0
- package/dist/inline-menu/inline-menu-session.js +98 -0
- package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
- package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
- package/dist/inline-menu/types.d.ts +77 -0
- package/dist/inline-menu/types.js +7 -0
- package/dist/invariants/child-id-parity.d.ts +23 -0
- package/dist/invariants/child-id-parity.js +39 -0
- package/dist/invariants/commit-paths.d.ts +4 -4
- package/dist/invariants/commit-paths.js +4 -4
- package/dist/invariants/commit-scope.d.ts +4 -4
- package/dist/invariants/commit-scope.js +9 -8
- package/dist/invariants/context-keys.d.ts +2 -5
- package/dist/invariants/context-keys.js +3 -6
- package/dist/invariants/descriptor.d.ts +2 -6
- package/dist/invariants/descriptor.js +2 -6
- package/dist/invariants/inline-transitions.d.ts +9 -16
- package/dist/invariants/inline-transitions.js +10 -18
- package/dist/invariants/install.d.ts +18 -27
- package/dist/invariants/install.js +29 -30
- package/dist/invariants/keeps-a-block.d.ts +7 -0
- package/dist/invariants/keeps-a-block.js +14 -0
- package/dist/invariants/landable-caret.d.ts +5 -7
- package/dist/invariants/landable-caret.js +8 -11
- package/dist/invariants/landing-focus-scroll.d.ts +7 -0
- package/dist/invariants/landing-focus-scroll.js +13 -0
- package/dist/invariants/landing-value.d.ts +13 -0
- package/dist/invariants/landing-value.js +27 -0
- package/dist/invariants/marker-css-parity.d.ts +5 -6
- package/dist/invariants/marker-css-parity.js +11 -12
- package/dist/invariants/measures-in-own-list.d.ts +6 -0
- package/dist/invariants/measures-in-own-list.js +13 -0
- package/dist/invariants/node-shape.d.ts +18 -37
- package/dist/invariants/node-shape.js +123 -79
- package/dist/invariants/open-tail.d.ts +7 -0
- package/dist/invariants/open-tail.js +45 -0
- package/dist/invariants/placement-ends-widget.d.ts +8 -0
- package/dist/invariants/placement-ends-widget.js +13 -0
- package/dist/invariants/registry.d.ts +27 -66
- package/dist/invariants/registry.js +61 -137
- package/dist/invariants/render-fidelity.d.ts +4 -4
- package/dist/invariants/render-fidelity.js +5 -5
- package/dist/invariants/selection-endpoints.d.ts +6 -7
- package/dist/invariants/selection-endpoints.js +18 -16
- package/dist/invariants/single-node-sink.d.ts +4 -5
- package/dist/invariants/single-node-sink.js +4 -5
- package/dist/invariants/snapshot-integrity.d.ts +5 -6
- package/dist/invariants/snapshot-integrity.js +1 -1
- package/dist/invariants/structural-descriptor.d.ts +6 -15
- package/dist/invariants/structural-descriptor.js +6 -15
- package/dist/menu-icons.d.ts +47 -0
- package/dist/menu-icons.js +113 -0
- package/dist/perf/instruments.d.ts +20 -5
- package/dist/perf/instruments.js +35 -15
- package/dist/perf/use-mount-gauge.svelte.js +4 -4
- package/dist/plugin.d.ts +38 -8
- package/dist/plugin.js +102 -74
- package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
- package/dist/plugins/admonitions/admonition-kind.js +12 -10
- package/dist/plugins/admonitions/convert-document.d.ts +5 -5
- package/dist/plugins/admonitions/convert-document.js +8 -7
- package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
- package/dist/plugins/admonitions/gh-alert.js +21 -22
- package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
- package/dist/plugins/admonitions/github-alert-kind.js +28 -37
- package/dist/plugins/admonitions/index.js +2 -2
- package/dist/plugins/admonitions/kinds.d.ts +1 -1
- package/dist/plugins/admonitions/register.js +11 -2
- package/dist/plugins/details/DetailsBlock.svelte +20 -20
- package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
- package/dist/plugins/details/details-disclosure.svelte.js +6 -7
- package/dist/plugins/details/details-kind.d.ts +6 -7
- package/dist/plugins/details/details-kind.js +44 -59
- package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
- package/dist/plugins/emoji/emoji-recognizer.js +7 -14
- package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
- package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
- package/dist/plugins/footnotes/constants.d.ts +2 -0
- package/dist/plugins/footnotes/constants.js +3 -0
- package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
- package/dist/plugins/footnotes/footnote-definition.js +69 -45
- package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
- package/dist/plugins/footnotes/footnote-lookup.js +14 -26
- package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
- package/dist/plugins/footnotes/footnote-numbering.js +22 -31
- package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
- package/dist/plugins/footnotes/footnote-reference.js +8 -13
- package/dist/plugins/footnotes/index.js +2 -3
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
- package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
- package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
- package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
- package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
- package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
- package/dist/plugins/highlight-occurrences/word-char.js +4 -0
- package/dist/plugins/latex/BlockMath.svelte +58 -75
- package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
- package/dist/plugins/latex/MathInline.svelte +10 -9
- package/dist/plugins/latex/flanking.d.ts +1 -0
- package/dist/plugins/latex/flanking.js +3 -0
- package/dist/plugins/latex/index.d.ts +1 -1
- package/dist/plugins/latex/latex-kind.d.ts +4 -4
- package/dist/plugins/latex/latex-kind.js +113 -85
- package/dist/plugins/latex/math-completion.d.ts +1 -1
- package/dist/plugins/latex/math-completion.js +5 -8
- package/dist/plugins/latex/math-layout.d.ts +2 -8
- package/dist/plugins/latex/math-layout.js +0 -9
- package/dist/plugins/latex/math-renderer.d.ts +17 -20
- package/dist/plugins/latex/math-renderer.js +21 -38
- package/dist/plugins/latex/math-source.d.ts +4 -8
- package/dist/plugins/latex/math-source.js +36 -75
- package/dist/plugins/latex/register.d.ts +10 -11
- package/dist/plugins/latex/register.js +24 -10
- package/dist/plugins/latex/renderer.d.ts +9 -10
- package/dist/plugins/latex/renderer.js +9 -24
- package/dist/plugins/mermaid/MermaidBlock.svelte +63 -47
- package/dist/plugins/mermaid/index.js +1 -1
- package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
- package/dist/plugins/mermaid/mermaid-kind.js +30 -47
- package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
- package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
- package/dist/plugins/mermaid/register.d.ts +3 -3
- package/dist/plugins/mermaid/register.js +5 -5
- package/dist/plugins/mermaid/renderer.d.ts +5 -5
- package/dist/plugins/mermaid/renderer.js +8 -11
- package/dist/plugins/parrot/ParrotBlock.svelte +18 -7
- package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
- package/dist/plugins/parrot/parrot-plugin.js +3 -3
- package/dist/plugins/slash-commands/filter.d.ts +23 -0
- package/dist/plugins/slash-commands/filter.js +31 -0
- package/dist/plugins/slash-commands/index.d.ts +2 -0
- package/dist/plugins/slash-commands/index.js +2 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
- package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
- package/dist/plugins/slash-commands/slash-source.js +108 -0
- package/dist/plugins/toc/TocBlock.svelte +23 -22
- package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
- package/dist/plugins/toc/heading-outline.d.ts +7 -12
- package/dist/plugins/toc/heading-outline.js +22 -36
- package/dist/plugins/toc/navigation-queue.d.ts +2 -4
- package/dist/plugins/toc/toc-plugin.d.ts +5 -5
- package/dist/plugins/toc/toc-plugin.js +20 -13
- package/dist/presentation-mode.d.ts +15 -23
- package/dist/presentation-mode.js +19 -25
- package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
- package/dist/reactivity/block-list-state.svelte.js +8 -9
- package/dist/reactivity/block-window.svelte.d.ts +12 -6
- package/dist/reactivity/block-window.svelte.js +44 -17
- package/dist/reactivity/child-list.d.ts +34 -0
- package/dist/reactivity/child-list.js +48 -0
- package/dist/reactivity/content-version.svelte.d.ts +4 -7
- package/dist/reactivity/content-version.svelte.js +3 -5
- package/dist/reactivity/hold-across.d.ts +39 -0
- package/dist/reactivity/hold-across.js +57 -0
- package/dist/reactivity/layout-state.svelte.d.ts +27 -0
- package/dist/reactivity/layout-state.svelte.js +51 -0
- package/dist/reactivity/list-tree.d.ts +39 -0
- package/dist/reactivity/list-tree.js +132 -0
- package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
- package/dist/reactivity/list-windowing.svelte.js +143 -292
- package/dist/reactivity/measure-batch.d.ts +6 -8
- package/dist/reactivity/measure-batch.js +5 -6
- package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
- package/dist/reactivity/publish-ref.svelte.js +21 -85
- package/dist/reactivity/scope-geometry.d.ts +6 -13
- package/dist/reactivity/scope-geometry.js +7 -14
- package/dist/reactivity/state-registry.d.ts +5 -5
- package/dist/reactivity/state-registry.js +11 -15
- package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
- package/dist/reactivity/use-container-windowing.svelte.js +64 -74
- package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
- package/dist/reactivity/use-measured-child.svelte.js +41 -0
- package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
- package/dist/reactivity/use-window-floor.svelte.js +27 -0
- package/dist/reactivity/window-slice.d.ts +4 -4
- package/dist/reactivity/window-slice.js +0 -2
- package/dist/renderer-slot.d.ts +48 -0
- package/dist/renderer-slot.js +85 -0
- package/dist/scan-index.d.ts +4 -4
- package/dist/scan-index.js +4 -4
- package/dist/schema/block-commands.d.ts +69 -54
- package/dist/schema/block-commands.js +91 -104
- package/dist/schema/block-completions.d.ts +16 -19
- package/dist/schema/block-completions.js +25 -32
- package/dist/schema/block-component-registry.d.ts +13 -14
- package/dist/schema/block-component-registry.js +19 -17
- package/dist/schema/block-kind-descriptor.d.ts +234 -168
- package/dist/schema/block-kind-descriptor.js +151 -66
- package/dist/schema/block-openers.d.ts +48 -39
- package/dist/schema/block-openers.js +73 -83
- package/dist/schema/built-in-descriptors.d.ts +3 -5
- package/dist/schema/built-in-descriptors.js +96 -80
- package/dist/schema/child-spans.d.ts +12 -10
- package/dist/schema/child-spans.js +68 -34
- package/dist/schema/closure.d.ts +18 -16
- package/dist/schema/closure.js +24 -14
- package/dist/schema/command-id.d.ts +6 -8
- package/dist/schema/command-id.js +20 -25
- package/dist/schema/commands.d.ts +79 -81
- package/dist/schema/commands.js +156 -116
- package/dist/schema/container-raw.d.ts +51 -11
- package/dist/schema/container-raw.js +143 -14
- package/dist/schema/container-rebuilders.d.ts +17 -15
- package/dist/schema/container-rebuilders.js +30 -22
- package/dist/schema/context-actions.d.ts +25 -13
- package/dist/schema/context-actions.js +32 -17
- package/dist/schema/define-plugin-block.d.ts +8 -6
- package/dist/schema/define-plugin-block.js +6 -4
- package/dist/schema/fenced-code-raw.d.ts +30 -17
- package/dist/schema/fenced-code-raw.js +155 -107
- package/dist/schema/global-commands.d.ts +6 -6
- package/dist/schema/global-commands.js +14 -22
- package/dist/schema/height-estimates.d.ts +31 -0
- package/dist/schema/height-estimates.js +64 -0
- package/dist/schema/inline-construct-policy.d.ts +42 -55
- package/dist/schema/inline-construct-policy.js +36 -35
- package/dist/schema/insert-catalogue.d.ts +30 -0
- package/dist/schema/insert-catalogue.js +95 -0
- package/dist/schema/keybinding-overrides.d.ts +9 -11
- package/dist/schema/keybinding-overrides.js +1 -1
- package/dist/schema/keybindings.d.ts +15 -7
- package/dist/schema/keybindings.js +21 -9
- package/dist/schema/merge-rules.d.ts +5 -7
- package/dist/schema/merge-rules.js +7 -9
- package/dist/schema/opener-priorities.d.ts +4 -4
- package/dist/schema/opener-priorities.js +4 -4
- package/dist/schema/operations.d.ts +9 -11
- package/dist/schema/operations.js +3 -3
- package/dist/schema/page-role.d.ts +14 -0
- package/dist/schema/page-role.js +19 -0
- package/dist/schema/plugin-activation.d.ts +4 -6
- package/dist/schema/plugin-activation.js +12 -10
- package/dist/schema/plugin-editor-context.d.ts +25 -10
- package/dist/schema/plugin-editor-context.js +40 -9
- package/dist/schema/plugin-install.d.ts +49 -17
- package/dist/schema/plugin-install.js +51 -25
- package/dist/schema/plugin-kind.d.ts +12 -8
- package/dist/schema/plugin-kind.js +35 -42
- package/dist/schema/plugin-name.js +3 -3
- package/dist/schema/plugin-registry.d.ts +54 -0
- package/dist/schema/plugin-registry.js +70 -0
- package/dist/schema/reading.d.ts +23 -0
- package/dist/schema/reading.js +7 -0
- package/dist/schema/register-once.d.ts +3 -5
- package/dist/schema/register-once.js +7 -16
- package/dist/schema/registration-checks.d.ts +12 -16
- package/dist/schema/registration-checks.js +35 -51
- package/dist/schema/registration-pairs.d.ts +54 -0
- package/dist/schema/registration-pairs.js +48 -0
- package/dist/schema/registration-pending.d.ts +8 -12
- package/dist/schema/registration-pending.js +9 -9
- package/dist/schema/registry-reset.d.ts +8 -4
- package/dist/schema/registry-reset.js +13 -26
- package/dist/schema/registry-view.d.ts +25 -13
- package/dist/schema/registry-view.js +26 -20
- package/dist/schema/reserved-chords.d.ts +9 -10
- package/dist/schema/reserved-chords.js +73 -78
- package/dist/schema/reserved-chrome.d.ts +12 -11
- package/dist/schema/reserved-chrome.js +15 -11
- package/dist/schema/setext-raw.d.ts +13 -0
- package/dist/schema/setext-raw.js +33 -0
- package/dist/schema/stored-as.d.ts +20 -0
- package/dist/schema/stored-as.js +6 -0
- package/dist/schema/table-cell-raw.d.ts +18 -7
- package/dist/schema/table-cell-raw.js +28 -7
- package/dist/schema/whole-block-unit.d.ts +5 -4
- package/dist/schema/whole-block-unit.js +5 -4
- package/dist/search/document-scan.d.ts +3 -3
- package/dist/search/document-scan.js +2 -2
- package/dist/search/matcher.d.ts +1 -1
- package/dist/search/regex-executor.d.ts +5 -6
- package/dist/search/regex-executor.js +6 -8
- package/dist/search/replace.d.ts +2 -5
- package/dist/search/replace.js +2 -5
- package/dist/search/search-state.svelte.d.ts +5 -5
- package/dist/search/search-state.svelte.js +12 -16
- package/dist/selection/autoscroll.d.ts +6 -9
- package/dist/selection/block-hit-test.d.ts +16 -24
- package/dist/selection/block-hit-test.js +29 -22
- package/dist/selection/caret-doors.d.ts +15 -14
- package/dist/selection/caret-doors.js +37 -26
- package/dist/selection/caret-landing.d.ts +62 -0
- package/dist/selection/caret-landing.js +157 -0
- package/dist/selection/caret-restore.d.ts +17 -10
- package/dist/selection/caret-restore.js +10 -22
- package/dist/selection/caret-target.d.ts +30 -0
- package/dist/selection/caret-target.js +84 -0
- package/dist/selection/char-endpoint-snap.d.ts +6 -10
- package/dist/selection/char-endpoint-snap.js +8 -14
- package/dist/selection/clipboard-text.d.ts +5 -12
- package/dist/selection/clipboard-text.js +69 -172
- package/dist/selection/covered-block.d.ts +6 -8
- package/dist/selection/covered-block.js +8 -19
- package/dist/selection/cross-block/clipboard.d.ts +3 -2
- package/dist/selection/cross-block/clipboard.js +13 -4
- package/dist/selection/cross-block/dispatch.d.ts +47 -43
- package/dist/selection/cross-block/dispatch.js +12 -23
- package/dist/selection/cross-block/format-range.d.ts +18 -21
- package/dist/selection/cross-block/format-range.js +104 -103
- package/dist/selection/cross-block/format-toggle.d.ts +10 -15
- package/dist/selection/cross-block/format-toggle.js +28 -33
- package/dist/selection/cross-block/keydown.d.ts +4 -4
- package/dist/selection/cross-block/keydown.js +93 -152
- package/dist/selection/cross-block/ops.d.ts +19 -34
- package/dist/selection/cross-block/ops.js +110 -95
- package/dist/selection/cross-block/paste.d.ts +2 -3
- package/dist/selection/cross-block/paste.js +61 -104
- package/dist/selection/cross-block/pointer.d.ts +17 -15
- package/dist/selection/cross-block/pointer.js +74 -25
- package/dist/selection/cross-block/type-replace.d.ts +4 -6
- package/dist/selection/cross-block/type-replace.js +53 -146
- package/dist/selection/dead-space-caret.d.ts +20 -28
- package/dist/selection/dead-space-caret.js +79 -87
- package/dist/selection/drag-pointer.d.ts +22 -5
- package/dist/selection/drag-pointer.js +63 -31
- package/dist/selection/gap-caret.d.ts +17 -28
- package/dist/selection/gap-caret.js +14 -26
- package/dist/selection/grid-selection.d.ts +12 -0
- package/dist/selection/grid-selection.js +22 -0
- package/dist/selection/keyboard-extend.d.ts +27 -39
- package/dist/selection/keyboard-extend.js +94 -116
- package/dist/selection/multi-click.d.ts +37 -0
- package/dist/selection/multi-click.js +197 -0
- package/dist/selection/native-bridge.d.ts +30 -37
- package/dist/selection/native-bridge.js +80 -100
- package/dist/selection/nearest-block.d.ts +17 -12
- package/dist/selection/nearest-block.js +37 -18
- package/dist/selection/path-lookup.d.ts +31 -14
- package/dist/selection/path-lookup.js +110 -20
- package/dist/selection/path-math.d.ts +9 -11
- package/dist/selection/path-math.js +5 -7
- package/dist/selection/pointer-gesture.d.ts +9 -0
- package/dist/selection/pointer-gesture.js +11 -0
- package/dist/selection/pointer-session.d.ts +10 -16
- package/dist/selection/pointer-session.js +6 -7
- package/dist/selection/primitives.d.ts +64 -33
- package/dist/selection/primitives.js +61 -53
- package/dist/selection/range-coverage.d.ts +94 -0
- package/dist/selection/range-coverage.js +365 -0
- package/dist/selection/range-delete-ceremony.d.ts +28 -74
- package/dist/selection/range-delete-ceremony.js +100 -141
- package/dist/selection/range-delete-chrome.d.ts +20 -33
- package/dist/selection/range-delete-chrome.js +53 -78
- package/dist/selection/range-delete-table-coverage.d.ts +11 -25
- package/dist/selection/range-delete-table-coverage.js +42 -112
- package/dist/selection/range-delete-table.d.ts +14 -12
- package/dist/selection/range-delete-table.js +106 -310
- package/dist/selection/range-delete.d.ts +18 -19
- package/dist/selection/range-delete.js +83 -123
- package/dist/selection/round-trip-restore.d.ts +18 -0
- package/dist/selection/round-trip-restore.js +19 -0
- package/dist/selection/selection-announcer.d.ts +17 -0
- package/dist/selection/selection-announcer.js +25 -0
- package/dist/selection/selection-description.d.ts +4 -3
- package/dist/selection/selection-description.js +5 -4
- package/dist/selection/selection-drop.d.ts +52 -0
- package/dist/selection/selection-drop.js +317 -0
- package/dist/selection/selection-restore.d.ts +20 -33
- package/dist/selection/selection-restore.js +21 -44
- package/dist/selection/selection-state.svelte.d.ts +50 -42
- package/dist/selection/selection-state.svelte.js +144 -98
- package/dist/selection/shared-keydown.d.ts +22 -27
- package/dist/selection/shared-keydown.js +25 -45
- package/dist/selection/table-endpoint-snap.d.ts +17 -41
- package/dist/selection/table-endpoint-snap.js +54 -80
- package/dist/selection/table-rect-extend.d.ts +3 -6
- package/dist/selection/table-rect-extend.js +19 -14
- package/dist/styles/editor-theme.css +75 -53
- package/dist/styles/editor.css +248 -139
- package/dist/testing/conformance-core.d.ts +50 -18
- package/dist/testing/conformance-core.js +88 -50
- package/dist/testing/container-conformance.d.ts +48 -84
- package/dist/testing/container-conformance.js +159 -285
- package/dist/testing/headless-actions.d.ts +34 -19
- package/dist/testing/headless-actions.js +116 -65
- package/dist/testing/headless-block-list.svelte.d.ts +16 -0
- package/dist/testing/headless-block-list.svelte.js +22 -0
- package/dist/testing/inline-conformance.d.ts +15 -22
- package/dist/testing/inline-conformance.js +131 -148
- package/dist/testing/kind-conformance.d.ts +19 -24
- package/dist/testing/kind-conformance.js +204 -117
- package/dist/testing/kit-reading.d.ts +7 -0
- package/dist/testing/kit-reading.js +16 -0
- package/dist/testing/mount-dom-stubs.d.ts +4 -5
- package/dist/testing/mount-dom-stubs.js +8 -5
- package/dist/testing/parse-convergence.d.ts +10 -10
- package/dist/testing/parse-convergence.js +14 -49
- package/dist/testing.d.ts +13 -9
- package/dist/testing.js +28 -38
- package/dist/tree-operations/blockquote.d.ts +8 -14
- package/dist/tree-operations/blockquote.js +25 -45
- package/dist/tree-operations/chain-rebuild.d.ts +34 -25
- package/dist/tree-operations/chain-rebuild.js +115 -52
- package/dist/tree-operations/children.d.ts +5 -9
- package/dist/tree-operations/children.js +7 -11
- package/dist/tree-operations/cleanup.d.ts +6 -7
- package/dist/tree-operations/cleanup.js +14 -11
- package/dist/tree-operations/clone.js +5 -4
- package/dist/tree-operations/container-lift.d.ts +10 -5
- package/dist/tree-operations/container-lift.js +20 -14
- package/dist/tree-operations/container-offsets.d.ts +22 -0
- package/dist/tree-operations/container-offsets.js +89 -0
- package/dist/tree-operations/content-write.d.ts +52 -29
- package/dist/tree-operations/content-write.js +155 -110
- package/dist/tree-operations/index.d.ts +4 -4
- package/dist/tree-operations/index.js +4 -4
- package/dist/tree-operations/keep-one-block.d.ts +10 -0
- package/dist/tree-operations/keep-one-block.js +19 -0
- package/dist/tree-operations/leaf-range.d.ts +33 -0
- package/dist/tree-operations/leaf-range.js +67 -0
- package/dist/tree-operations/list/empty-check.d.ts +2 -3
- package/dist/tree-operations/list/empty-check.js +4 -4
- package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
- package/dist/tree-operations/list/exit-replacement.js +4 -9
- package/dist/tree-operations/list/item-partition.d.ts +2 -2
- package/dist/tree-operations/list/item-partition.js +2 -2
- package/dist/tree-operations/list/list-builders.d.ts +18 -16
- package/dist/tree-operations/list/list-builders.js +59 -30
- package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
- package/dist/tree-operations/list/ordered-markers.js +7 -16
- package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
- package/dist/tree-operations/list/reconcile-task.js +80 -23
- package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
- package/dist/tree-operations/list/sublist-separator.js +20 -27
- package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
- package/dist/tree-operations/list/task-paragraph.js +54 -0
- package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
- package/dist/tree-operations/list/unwrap-merge.js +44 -79
- package/dist/tree-operations/node-ops.d.ts +30 -52
- package/dist/tree-operations/node-ops.js +152 -218
- package/dist/tree-operations/node-primitives.d.ts +44 -31
- package/dist/tree-operations/node-primitives.js +84 -60
- package/dist/tree-operations/open-tail.d.ts +25 -0
- package/dist/tree-operations/open-tail.js +100 -0
- package/dist/tree-operations/parse-block.d.ts +15 -2
- package/dist/tree-operations/parse-block.js +19 -4
- package/dist/tree-operations/paste/apply.d.ts +7 -8
- package/dist/tree-operations/paste/apply.js +33 -63
- package/dist/tree-operations/paste/body-write.d.ts +8 -6
- package/dist/tree-operations/paste/body-write.js +13 -14
- package/dist/tree-operations/paste/container-match.d.ts +7 -10
- package/dist/tree-operations/paste/container-match.js +76 -58
- package/dist/tree-operations/paste/container-paste.d.ts +3 -3
- package/dist/tree-operations/paste/container-paste.js +3 -3
- package/dist/tree-operations/paste/dispatch.d.ts +26 -29
- package/dist/tree-operations/paste/dispatch.js +68 -53
- package/dist/tree-operations/paste/focus-target.d.ts +11 -14
- package/dist/tree-operations/paste/focus-target.js +13 -18
- package/dist/tree-operations/paste/hooks.d.ts +7 -12
- package/dist/tree-operations/paste/hooks.js +49 -46
- package/dist/tree-operations/paste/line-ending.d.ts +11 -0
- package/dist/tree-operations/paste/line-ending.js +32 -0
- package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
- package/dist/tree-operations/paste/list-absorb.js +17 -19
- package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
- package/dist/tree-operations/paste/list-break-out.js +24 -32
- package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
- package/dist/tree-operations/paste/parent-scope.js +9 -16
- package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
- package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
- package/dist/tree-operations/paste/paste-replacement.js +73 -42
- package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
- package/dist/tree-operations/paste/paste-transforms.js +18 -27
- package/dist/tree-operations/paste/replacement-parse.d.ts +19 -0
- package/dist/tree-operations/paste/replacement-parse.js +24 -0
- package/dist/tree-operations/paste/strategy.d.ts +1 -1
- package/dist/tree-operations/paste/strategy.js +1 -1
- package/dist/tree-operations/paste/table-slice.js +15 -10
- package/dist/tree-operations/paste-surfaces.d.ts +18 -29
- package/dist/tree-operations/paste-surfaces.js +14 -10
- package/dist/tree-operations/path-mutate.d.ts +7 -8
- package/dist/tree-operations/path-mutate.js +4 -4
- package/dist/tree-operations/reorder-unit.d.ts +4 -5
- package/dist/tree-operations/reorder-unit.js +5 -6
- package/dist/tree-operations/reorder.d.ts +7 -9
- package/dist/tree-operations/reorder.js +39 -40
- package/dist/tree-operations/settle.d.ts +42 -53
- package/dist/tree-operations/settle.js +241 -162
- package/dist/tree-operations/sharing.d.ts +5 -5
- package/dist/tree-operations/splice-many.d.ts +5 -5
- package/dist/tree-operations/splice-many.js +5 -5
- package/dist/tree-operations/stored-as.d.ts +13 -0
- package/dist/tree-operations/stored-as.js +48 -0
- package/dist/tree-operations/structural-change.d.ts +11 -15
- package/dist/tree-operations/structural-change.js +10 -14
- package/dist/tree-operations/structural-suffix.d.ts +22 -0
- package/dist/tree-operations/structural-suffix.js +61 -0
- package/dist/tree-operations/sub-table-copy.d.ts +7 -0
- package/dist/tree-operations/sub-table-copy.js +40 -36
- package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
- package/dist/tree-operations/table-grid-clipboard.js +11 -36
- package/dist/tree-operations/table-mutations.d.ts +7 -3
- package/dist/tree-operations/table-mutations.js +45 -9
- package/dist/tree-operations/unshare.d.ts +11 -15
- package/dist/tree-operations/unshare.js +15 -17
- package/dist/undo/manager.js +1 -1
- package/dist/undo/types.d.ts +2 -2
- package/docs/guide/consumer-guide.md +329 -205
- package/docs/guide/directives.md +7 -7
- package/docs/guide/plugin-api.md +267 -183
- package/docs/guide/plugin-guide.md +341 -235
- package/docs/guide/plugin-testing.md +96 -82
- package/package.json +17 -21
- package/dist/ambient/ambient-cursor.d.ts +0 -41
- package/dist/ambient/ambient-cursor.js +0 -120
- package/dist/components/blocks/code/code-paste.d.ts +0 -24
- package/dist/components/blocks/code/code-paste.js +0 -21
- package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
- package/dist/components/blocks/table/cell-clipboard.js +0 -67
- package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
- package/dist/components/blocks/text/hidden-suffix.js +0 -15
- package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
- package/dist/components/image/image-source-bytes.d.ts +0 -15
- package/dist/components/image/image-source-bytes.js +0 -80
- package/dist/cursor/content-offsets.d.ts +0 -29
- package/dist/cursor/content-offsets.js +0 -151
- package/dist/cursor/reveal-anchor.d.ts +0 -30
- package/dist/cursor/reveal-anchor.js +0 -31
- package/dist/invariants/split-landing.d.ts +0 -8
- package/dist/invariants/split-landing.js +0 -15
- package/dist/selection/double-click-trim.d.ts +0 -17
- package/dist/selection/double-click-trim.js +0 -57
- package/dist/tree-operations/list/terminator.d.ts +0 -17
- package/dist/tree-operations/list/terminator.js +0 -60
- package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -29
- package/dist/tree-operations/paste/replace-block-at-parent.js +0 -75
|
@@ -1,42 +1,36 @@
|
|
|
1
|
+
import { tick } from 'svelte';
|
|
1
2
|
import { resolvedInlineContent } from '../../core/inline/inline-cache';
|
|
2
3
|
import { flattenInlineWidgets } from '../../core/inline/inline-widgets';
|
|
3
|
-
import { createInlineRangeCommit } from '../../editor-actions/inline-range-commit';
|
|
4
4
|
import { FALLBACK_CONTENT_WIDTH } from '../../cursor/typography-estimates';
|
|
5
5
|
import { blockNodeAt } from '../../tree-operations/node-primitives';
|
|
6
|
-
import { buildImageEditBytes } from '
|
|
6
|
+
import { buildImageEditBytes, imageFieldsFromInline, sameImageFields } from '../../core/inline/image-source-bytes';
|
|
7
|
+
// ── Public API ──────────────────────────────────────────────────────────
|
|
8
|
+
/** The image `target` names in `doc`, or null once no image starts at its bytes. */
|
|
9
|
+
export function imageAtTarget(doc, target, reading) {
|
|
10
|
+
const paragraph = blockNodeAt(doc, target.paragraphPath);
|
|
11
|
+
return paragraph ? findImageInParagraph(paragraph, target.sourceStart, reading) : null;
|
|
12
|
+
}
|
|
7
13
|
export function createImageEditCommitter(deps) {
|
|
8
|
-
const { getDoc, getEditorEl, widgetSelection,
|
|
9
|
-
const inlineRange = createInlineRangeCommit({ getDoc, controller, grammar: deps.grammar });
|
|
10
|
-
function findImageInParagraph(para, sourceStart) {
|
|
11
|
-
// Resolver-aware so a reference-style image resolves as the render path saw it,
|
|
12
|
-
// and flattened so an image nested in a link (`[![alt][ref]][repo]`) is found.
|
|
13
|
-
const inlines = resolvedInlineContent(para, deps.linkRef);
|
|
14
|
-
for (const widget of flattenInlineWidgets(inlines, para.raw)) {
|
|
15
|
-
if (widget.kind === 'image' && widget.start === sourceStart)
|
|
16
|
-
return widget;
|
|
17
|
-
}
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
14
|
+
const { getDoc, getEditorEl, widgetSelection, inlineRange, events } = deps;
|
|
20
15
|
function queryWidgetEl(paragraphPath, sourceStart) {
|
|
21
16
|
const root = getEditorEl();
|
|
22
17
|
if (!root)
|
|
23
18
|
return null;
|
|
24
|
-
// Locate by the live block-host path, never
|
|
19
|
+
// Locate by the live block-host path, never an attribute baked into the widget:
|
|
25
20
|
// see widget-dom.ts's click handler.
|
|
26
21
|
const host = root.querySelector(`[data-block-path='${JSON.stringify(paragraphPath)}']`);
|
|
27
22
|
if (!host)
|
|
28
23
|
return null;
|
|
29
24
|
return host.querySelector(`[data-image-widget][data-source-start="${sourceStart}"]`);
|
|
30
25
|
}
|
|
26
|
+
const imageAt = (target) => imageAtTarget(getDoc(), target, deps.reading);
|
|
27
|
+
// The bytes the last popover write moved, applied by the next stale check: the write runs as
|
|
28
|
+
// the popover unmounts, where a read of the selection still returns the one before the click.
|
|
29
|
+
let lastShift = null;
|
|
31
30
|
function getSelectedImageFields() {
|
|
32
31
|
const sel = widgetSelection.getSelected();
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const paragraph = blockNodeAt(getDoc(), sel.paragraphPath);
|
|
36
|
-
if (!paragraph)
|
|
37
|
-
return null;
|
|
38
|
-
const image = findImageInParagraph(paragraph, sel.sourceStart);
|
|
39
|
-
if (!image)
|
|
32
|
+
const image = sel && imageAt(sel);
|
|
33
|
+
if (!sel || !image)
|
|
40
34
|
return null;
|
|
41
35
|
return { image, widgetEl: queryWidgetEl(sel.paragraphPath, sel.sourceStart) };
|
|
42
36
|
}
|
|
@@ -44,11 +38,11 @@ export function createImageEditCommitter(deps) {
|
|
|
44
38
|
const paragraph = blockNodeAt(getDoc(), target.paragraphPath);
|
|
45
39
|
if (!paragraph)
|
|
46
40
|
return null;
|
|
47
|
-
const image = findImageInParagraph(paragraph, target.sourceStart);
|
|
41
|
+
const image = findImageInParagraph(paragraph, target.sourceStart, deps.reading);
|
|
48
42
|
if (!image)
|
|
49
43
|
return null;
|
|
50
|
-
//
|
|
51
|
-
//
|
|
44
|
+
// Keep the reference form when the url and title are untouched: writing the resolved
|
|
45
|
+
// url inline would leave the definition unused. Changing either is the user asking.
|
|
52
46
|
const fields = image.label !== undefined && newFields.url === image.url && newFields.title === image.title
|
|
53
47
|
? { ...newFields, label: image.label }
|
|
54
48
|
: newFields;
|
|
@@ -58,11 +52,24 @@ export function createImageEditCommitter(deps) {
|
|
|
58
52
|
function buildEditBytes(target, newFields) {
|
|
59
53
|
return resolveEdit(target, newFields)?.bytes ?? null;
|
|
60
54
|
}
|
|
61
|
-
function commitImageEdit(target, newFields) {
|
|
55
|
+
function commitImageEdit(target, seenFields, newFields) {
|
|
56
|
+
const image = imageAt(target);
|
|
57
|
+
if (!image || !sameImageFields(imageFieldsFromInline(image), seenFields))
|
|
58
|
+
return;
|
|
59
|
+
writeImageEdit(target, newFields);
|
|
60
|
+
}
|
|
61
|
+
// The caret from before the image was selected anchors the undo entry when no other caret
|
|
62
|
+
// answers: the popover can commit after the selection has moved on.
|
|
63
|
+
function writeImageEdit(target, newFields) {
|
|
62
64
|
const edit = resolveEdit(target, newFields);
|
|
63
65
|
if (!edit)
|
|
64
66
|
return;
|
|
65
|
-
|
|
67
|
+
// Read from the bytes the block's kind will store, which a kind's own write rule can change.
|
|
68
|
+
const delta = inlineRange.writtenDelta(target.paragraphPath, edit.image.start, edit.image.end, edit.bytes);
|
|
69
|
+
if (delta !== 0) {
|
|
70
|
+
lastShift = { paragraphPath: target.paragraphPath, editEnd: edit.image.end, delta };
|
|
71
|
+
}
|
|
72
|
+
void inlineRange.commitInlineRange(target.paragraphPath, edit.image.start, edit.image.end, edit.bytes, target.preSelectOffset);
|
|
66
73
|
}
|
|
67
74
|
function commitImageResize(newWidth, newHeight) {
|
|
68
75
|
const sel = widgetSelection.getSelected();
|
|
@@ -84,16 +91,16 @@ export function createImageEditCommitter(deps) {
|
|
|
84
91
|
...(framedHeight !== undefined ? { height: framedHeight } : {}),
|
|
85
92
|
...(image.crop !== undefined && framedHeight !== undefined ? { crop: image.crop } : {})
|
|
86
93
|
};
|
|
87
|
-
|
|
94
|
+
writeImageEdit(sel, newFields);
|
|
88
95
|
}
|
|
89
|
-
/** The whole `` span goes
|
|
96
|
+
/** The whole `` span goes. The selection clears first, so the undo entry is told
|
|
97
|
+
* the caret the user had before selecting the image rather than reading it. */
|
|
90
98
|
function removeImage(target) {
|
|
91
|
-
const
|
|
92
|
-
const image = paragraph && findImageInParagraph(paragraph, target.sourceStart);
|
|
99
|
+
const image = imageAt(target);
|
|
93
100
|
if (!image)
|
|
94
101
|
return;
|
|
95
102
|
widgetSelection.clear();
|
|
96
|
-
void inlineRange.commitInlineRange(target.paragraphPath, image.start, image.end, '',
|
|
103
|
+
void inlineRange.commitInlineRange(target.paragraphPath, image.start, image.end, '', target.preSelectOffset);
|
|
97
104
|
}
|
|
98
105
|
function dismissImagePopover() {
|
|
99
106
|
widgetSelection.clear();
|
|
@@ -109,15 +116,33 @@ export function createImageEditCommitter(deps) {
|
|
|
109
116
|
root.addEventListener('image-widget-select', handler);
|
|
110
117
|
return () => root.removeEventListener('image-widget-select', handler);
|
|
111
118
|
}
|
|
119
|
+
function clearStaleSelection() {
|
|
120
|
+
const shift = lastShift;
|
|
121
|
+
lastShift = null;
|
|
122
|
+
if (!shift) {
|
|
123
|
+
dropSelectionIfStale();
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
// The overlay finds the widget by the bytes its element names, so the move waits for the
|
|
127
|
+
// block to render the write.
|
|
128
|
+
void tick().then(() => {
|
|
129
|
+
widgetSelection.followEdit(shift.paragraphPath, shift.editEnd, shift.delta);
|
|
130
|
+
dropSelectionIfStale();
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
function dropSelectionIfStale() {
|
|
134
|
+
const sel = widgetSelection.getSelected();
|
|
135
|
+
if (sel && !imageAt(sel))
|
|
136
|
+
widgetSelection.clear();
|
|
137
|
+
}
|
|
112
138
|
function syncOverlayToWidget(getOverlay) {
|
|
113
139
|
const noop = () => { };
|
|
114
140
|
const overlayEl = getOverlay();
|
|
115
141
|
const editorEl = getEditorEl();
|
|
116
142
|
if (!overlayEl || !editorEl)
|
|
117
143
|
return noop;
|
|
118
|
-
// Each commit rebuilds the inline DOM, so
|
|
119
|
-
//
|
|
120
|
-
// when widget identity changes.
|
|
144
|
+
// Each commit rebuilds the inline DOM, so the widget is re-resolved on every update and
|
|
145
|
+
// the observer re-attached when it changes.
|
|
121
146
|
let observer = null;
|
|
122
147
|
let observed = null;
|
|
123
148
|
const update = () => {
|
|
@@ -144,9 +169,8 @@ export function createImageEditCommitter(deps) {
|
|
|
144
169
|
// Edits above the widget shift its y without resizing it.
|
|
145
170
|
const unsubscribeEdit = events.on('edit', update);
|
|
146
171
|
window.addEventListener('resize', update);
|
|
147
|
-
// Sibling images settling
|
|
148
|
-
//
|
|
149
|
-
// event bubbles.
|
|
172
|
+
// Sibling images settling shift the widget's y without resizing it; capture phase,
|
|
173
|
+
// since neither event bubbles.
|
|
150
174
|
const onImgSettle = (e) => {
|
|
151
175
|
if (e.target instanceof HTMLImageElement)
|
|
152
176
|
update();
|
|
@@ -170,6 +194,18 @@ export function createImageEditCommitter(deps) {
|
|
|
170
194
|
dismissImagePopover,
|
|
171
195
|
getEditorContentWidth,
|
|
172
196
|
attachWidgetSelectListener,
|
|
197
|
+
clearStaleSelection,
|
|
173
198
|
syncOverlayToWidget
|
|
174
199
|
};
|
|
175
200
|
}
|
|
201
|
+
// ── Internal ────────────────────────────────────────────────────────────
|
|
202
|
+
function findImageInParagraph(para, sourceStart, reading) {
|
|
203
|
+
// Resolver-aware so a reference-style image resolves as the render path saw it,
|
|
204
|
+
// and flattened so an image nested in a link (`[![alt][ref]][repo]`) is found.
|
|
205
|
+
const inlines = resolvedInlineContent(para, reading);
|
|
206
|
+
for (const widget of flattenInlineWidgets(inlines, para.raw, reading.grammar)) {
|
|
207
|
+
if (widget.kind === 'image' && widget.start === sourceStart)
|
|
208
|
+
return widget;
|
|
209
|
+
}
|
|
210
|
+
return null;
|
|
211
|
+
}
|
|
@@ -3,9 +3,6 @@ export declare function clampWidth(width: number, maxWidth: number): number;
|
|
|
3
3
|
export declare const KEYBOARD_MIN_WIDTH = 32;
|
|
4
4
|
export declare function keyboardResizeWidth(currentWidth: number, delta: number, maxWidth: number): number;
|
|
5
5
|
export declare function snapWidth(width: number, maxWidth: number, snapThresholdPx: number): number;
|
|
6
|
-
/**
|
|
7
|
-
*
|
|
8
|
-
* follow the width, so it persists `|N` and leaves the derivation to the renderer; an unlocked
|
|
9
|
-
* drag holds the height the image already had, which only the explicit `|NxM` form can carry.
|
|
10
|
-
*/
|
|
6
|
+
/** The height the drag showed: none for an aspect-locked drag (`|N`, the renderer derives it),
|
|
7
|
+
* the existing height for an unlocked one, which needs the `|NxM` form. */
|
|
11
8
|
export declare function resolveDraggedHeight(aspectLocked: boolean, previewHeight: number): number | undefined;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Pure math for image drag-to-resize: clamp, snap-to-percentage, aspect lock.
|
|
2
|
-
// No DOM
|
|
2
|
+
// No DOM: the handles component owns pointer events and calls these.
|
|
3
3
|
export const MIN_WIDTH = 16;
|
|
4
4
|
const SNAP_PERCENTAGES = [25, 50, 75, 100];
|
|
5
5
|
export function clampWidth(width, maxWidth) {
|
|
@@ -25,11 +25,8 @@ export function snapWidth(width, maxWidth, snapThresholdPx) {
|
|
|
25
25
|
}
|
|
26
26
|
return rounded;
|
|
27
27
|
}
|
|
28
|
-
/**
|
|
29
|
-
*
|
|
30
|
-
* follow the width, so it persists `|N` and leaves the derivation to the renderer; an unlocked
|
|
31
|
-
* drag holds the height the image already had, which only the explicit `|NxM` form can carry.
|
|
32
|
-
*/
|
|
28
|
+
/** The height the drag showed: none for an aspect-locked drag (`|N`, the renderer derives it),
|
|
29
|
+
* the existing height for an unlocked one, which needs the `|NxM` form. */
|
|
33
30
|
export function resolveDraggedHeight(aspectLocked, previewHeight) {
|
|
34
31
|
// A widget that never laid out reports 0; `|Nx0` is worse than no hint at all.
|
|
35
32
|
if (aspectLocked || previewHeight < 1)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* the image kind's `onSelectedKey` at mount (built-in-blocks.ts), so the
|
|
4
|
-
* selected-widget keydown path stays kind
|
|
2
|
+
* What a key does while an image widget is selected: Shift+Arrow resizes it. Registered as
|
|
3
|
+
* the image kind's `onSelectedKey` at mount (built-in-blocks.ts), so the shared
|
|
4
|
+
* selected-widget keydown path stays the same for every kind.
|
|
5
5
|
*/
|
|
6
6
|
import type { InlineWidgetEditingContext } from '../../core/inline/inline-widgets';
|
|
7
7
|
export declare function imageWidgetOnSelectedKey(e: KeyboardEvent, ctx: InlineWidgetEditingContext): boolean;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* the image kind's `onSelectedKey` at mount (built-in-blocks.ts), so the
|
|
4
|
-
* selected-widget keydown path stays kind
|
|
2
|
+
* What a key does while an image widget is selected: Shift+Arrow resizes it. Registered as
|
|
3
|
+
* the image kind's `onSelectedKey` at mount (built-in-blocks.ts), so the shared
|
|
4
|
+
* selected-widget keydown path stays the same for every kind.
|
|
5
5
|
*/
|
|
6
|
-
import { buildImageEditBytes } from '
|
|
6
|
+
import { buildImageEditBytes } from '../../core/inline/image-source-bytes';
|
|
7
7
|
import { keyboardResizeWidth } from './image-resize';
|
|
8
8
|
const KEYBOARD_STEP = 20;
|
|
9
9
|
const FALLBACK_DEFAULT_WIDTH = 400;
|
|
10
10
|
export function imageWidgetOnSelectedKey(e, ctx) {
|
|
11
|
-
// A resize is an edit;
|
|
11
|
+
// A resize is an edit; refusing here lets the caller swallow the key and do nothing.
|
|
12
12
|
if (ctx.presentationMode === 'reading')
|
|
13
13
|
return false;
|
|
14
14
|
if (!(e.shiftKey && (e.key === 'ArrowLeft' || e.key === 'ArrowRight')))
|
|
@@ -18,8 +18,8 @@ export function imageWidgetOnSelectedKey(e, ctx) {
|
|
|
18
18
|
const delta = e.key === 'ArrowRight' ? KEYBOARD_STEP : -KEYBOARD_STEP;
|
|
19
19
|
const currentWidth = inline.width ?? FALLBACK_DEFAULT_WIDTH;
|
|
20
20
|
const newWidth = keyboardResizeWidth(currentWidth, delta, ctx.editorContentWidth);
|
|
21
|
-
// url and title are untouched, so
|
|
22
|
-
//
|
|
21
|
+
// The url and title are untouched, so keep the label and the `![alt][label]` form
|
|
22
|
+
// rather than writing the resolved url inline.
|
|
23
23
|
const newFields = {
|
|
24
24
|
alt: inline.alt ?? '',
|
|
25
25
|
url: inline.url ?? '',
|
|
@@ -32,8 +32,8 @@ export function imageWidgetOnSelectedKey(e, ctx) {
|
|
|
32
32
|
...(inline.label !== undefined ? { label: inline.label } : {})
|
|
33
33
|
};
|
|
34
34
|
const newBytes = buildImageEditBytes(inline, node.raw, newFields);
|
|
35
|
-
// The
|
|
36
|
-
// anyway:
|
|
35
|
+
// The inline syntax handler that owns these bytes cannot express the resize, but take
|
|
36
|
+
// the key anyway: passing a Shift+Arrow on would extend the selection out of the image.
|
|
37
37
|
if (newBytes === null)
|
|
38
38
|
return true;
|
|
39
39
|
const newRaw = node.raw.slice(0, ctx.widgetStart) + newBytes + node.raw.slice(ctx.widgetEnd);
|
|
@@ -3,9 +3,8 @@ import type { ImageLoadPolicy } from '../../core/inline-render';
|
|
|
3
3
|
export interface BuildImageWidgetOpts {
|
|
4
4
|
resolveImageUrl: (rawUrl: string) => string;
|
|
5
5
|
imageLoadPolicy?: ImageLoadPolicy;
|
|
6
|
-
/**
|
|
7
|
-
*
|
|
8
|
-
* unbroken until the async `error` re-fires — a flicker on every keystroke. */
|
|
6
|
+
/** URLs that failed to load this session, so a rebuilt <img> renders broken at once instead
|
|
7
|
+
* of flickering until its `error` fires again. */
|
|
9
8
|
brokenUrlCache: Set<string>;
|
|
10
9
|
}
|
|
11
10
|
export declare function buildImageWidget(node: InlineNode, _raw: string, opts: BuildImageWidgetOpts): HTMLSpanElement;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
// The widget
|
|
2
|
-
// `cursor/widget-offset.ts` reads; textContent stays empty so prose
|
|
3
|
-
// `textContent ===
|
|
1
|
+
// The widget reports its raw bytes through data-source-start and data-source-end, which
|
|
2
|
+
// `cursor/widget-offset.ts` reads; its textContent stays empty so a prose block's
|
|
3
|
+
// `textContent === marker prefix + raw` still holds.
|
|
4
4
|
import { isAllowedImageSrcScheme } from '../../core/url-policy';
|
|
5
5
|
import { findSurfacePathForElement } from '../../selection/path-lookup';
|
|
6
6
|
import { devWarn } from '../../dev-warn';
|
|
@@ -8,28 +8,25 @@ import { applyCropToWidget } from './image-crop';
|
|
|
8
8
|
export function buildImageWidget(node, _raw, opts) {
|
|
9
9
|
const widget = document.createElement('span');
|
|
10
10
|
widget.className = 'md-image-widget';
|
|
11
|
-
// `data-inline-widget`
|
|
12
|
-
//
|
|
11
|
+
// `data-inline-widget` marks any widget the caret cannot enter, and is read by the
|
|
12
|
+
// caret code, the selection painter and the raw reader; `data-image-widget` is this one.
|
|
13
13
|
widget.dataset.inlineWidget = '';
|
|
14
14
|
widget.dataset.imageWidget = '';
|
|
15
15
|
widget.dataset.sourceStart = String(node.start);
|
|
16
16
|
widget.dataset.sourceEnd = String(node.end);
|
|
17
17
|
widget.setAttribute('contenteditable', 'false');
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
// is a cross-block extension the block owns, so decline it.
|
|
18
|
+
// On `click`, not `pointerdown`, so a drag can still start on the image; a Shift-click
|
|
19
|
+
// extends the block's own selection.
|
|
21
20
|
widget.addEventListener('click', (e) => {
|
|
22
21
|
if (e.shiftKey)
|
|
23
22
|
return;
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
// skips a rebuild and a baked path resolves the wrong CST node. The SURFACE door:
|
|
27
|
-
// inside a cell the block path stops at the table, whose offsets are cell indices.
|
|
23
|
+
// Resolved at the click: content inserted above moves the block's path without a
|
|
24
|
+
// rebuild of this widget, so a path stored at build time would go stale.
|
|
28
25
|
const paragraphPath = findSurfacePathForElement(widget);
|
|
29
26
|
if (!paragraphPath)
|
|
30
27
|
return;
|
|
31
|
-
// Match TextEditableBlock.snapClickToWidgetEdge, which
|
|
32
|
-
// widget's right edge, so Ctrl+Z restores the click
|
|
28
|
+
// Match TextEditableBlock.snapClickToWidgetEdge, which puts the caret at the
|
|
29
|
+
// widget's right edge, so Ctrl+Z restores the caret where the click left it.
|
|
33
30
|
const event = new CustomEvent('image-widget-select', {
|
|
34
31
|
bubbles: true,
|
|
35
32
|
detail: {
|
|
@@ -62,9 +59,8 @@ export function buildImageWidget(node, _raw, opts) {
|
|
|
62
59
|
img.setAttribute('width', String(node.width));
|
|
63
60
|
if (node.height !== undefined)
|
|
64
61
|
img.setAttribute('height', String(node.height));
|
|
65
|
-
// A
|
|
66
|
-
//
|
|
67
|
-
// moment `height: auto` has one to read. With a crop the box is a frame the image pans in.
|
|
62
|
+
// A `|WxH` box reserves space before the bytes arrive and survives the decode, where the
|
|
63
|
+
// attributes alone lose to the natural ratio; with a crop it is the frame.
|
|
68
64
|
if (node.width !== undefined && node.height !== undefined) {
|
|
69
65
|
img.style.aspectRatio = `${node.width} / ${node.height}`;
|
|
70
66
|
if (node.crop) {
|
|
@@ -75,18 +71,17 @@ export function buildImageWidget(node, _raw, opts) {
|
|
|
75
71
|
opts.brokenUrlCache.add(resolvedUrl);
|
|
76
72
|
widget.classList.add('md-image-broken');
|
|
77
73
|
};
|
|
78
|
-
// Broken means the request finished and produced nothing to lay out, so each
|
|
79
|
-
//
|
|
74
|
+
// Broken means the request finished and produced nothing to lay out, so each place
|
|
75
|
+
// below checks that it finished: `complete` here, and the load event itself below.
|
|
80
76
|
const hasNoIntrinsicSize = () => img.naturalWidth === 0;
|
|
81
|
-
// Only a loaded image can be broken: a blocked
|
|
82
|
-
// and an unset <img> reports complete
|
|
77
|
+
// Only a loaded image can be broken: a blocked or placeholder widget leaves src unset,
|
|
78
|
+
// and an unset <img> reports complete with naturalWidth 0 in a real browser.
|
|
83
79
|
if (img.src && (opts.brokenUrlCache.has(resolvedUrl) || (img.complete && hasNoIntrinsicSize()))) {
|
|
84
80
|
markBroken();
|
|
85
81
|
}
|
|
86
82
|
img.addEventListener('error', markBroken);
|
|
87
|
-
//
|
|
88
|
-
//
|
|
89
|
-
// deferring that to the next rebuild leaves the placeholder a render behind.
|
|
83
|
+
// `load` can fire with no size (a truncated body, an SVG without dimensions), so it is
|
|
84
|
+
// checked here rather than a render later.
|
|
90
85
|
img.addEventListener('load', () => {
|
|
91
86
|
if (hasNoIntrinsicSize()) {
|
|
92
87
|
markBroken();
|
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import type { WidgetTarget } from '../../selection/primitives';
|
|
2
|
+
import type { SelectionState } from '../../selection/selection-state.svelte';
|
|
3
|
+
/** What a click-outside handler must not count as outside: the widget itself and the overlay
|
|
4
|
+
* controls attached to it. */
|
|
3
5
|
export declare const IMAGE_CHROME_SELECTOR = "[data-image-widget], [data-image-overlay]";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
preSelectOffset: number;
|
|
8
|
-
}
|
|
6
|
+
/** Whether a press should end the image selection, for both click-outside handlers. A Shift-press
|
|
7
|
+
* on this editor's text is left to that block, which grows a range from the image and ends it. */
|
|
8
|
+
export declare function pressLeavesImage(press: PointerEvent, editorRoot: Element | null): boolean;
|
|
9
9
|
export interface WidgetSelectionState {
|
|
10
10
|
getSelected(): WidgetTarget | null;
|
|
11
11
|
select(target: WidgetTarget): void;
|
|
12
|
+
/** Ends a selected widget; with none selected, touches nothing else the store holds. */
|
|
12
13
|
clear(): void;
|
|
14
|
+
followEdit(paragraphPath: number[], editEnd: number, delta: number): void;
|
|
13
15
|
isSelected(paragraphPath: number[], sourceStart: number): boolean;
|
|
14
16
|
}
|
|
15
|
-
export
|
|
16
|
-
onSelect: () => void;
|
|
17
|
-
}
|
|
18
|
-
export declare function createWidgetSelectionState(opts: CreateWidgetSelectionOpts): WidgetSelectionState;
|
|
17
|
+
export declare function createWidgetSelectionState(selection: SelectionState): WidgetSelectionState;
|
|
@@ -1,26 +1,33 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
1
|
+
// The image and text-block readers' view of the widget the selection state holds. It keeps no state
|
|
2
|
+
// of its own, so it can't disagree with the store. Interim: it goes once those readers read the
|
|
3
|
+
// selection state themselves.
|
|
4
|
+
import { selectWidgetWhole } from '../../selection/caret-doors';
|
|
3
5
|
import { pathsEqual } from '../../selection/path-math';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
+
import { findSurfacePathForElement } from '../../selection/path-lookup';
|
|
7
|
+
/** What a click-outside handler must not count as outside: the widget itself and the overlay
|
|
8
|
+
* controls attached to it. */
|
|
6
9
|
export const IMAGE_CHROME_SELECTOR = '[data-image-widget], [data-image-overlay]';
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
/** Whether a press should end the image selection, for both click-outside handlers. A Shift-press
|
|
11
|
+
* on this editor's text is left to that block, which grows a range from the image and ends it. */
|
|
12
|
+
export function pressLeavesImage(press, editorRoot) {
|
|
13
|
+
const target = press.target instanceof Element ? press.target : null;
|
|
14
|
+
if (target?.closest(IMAGE_CHROME_SELECTOR))
|
|
15
|
+
return false;
|
|
16
|
+
const ownedByBlock = press.shiftKey && !!editorRoot?.contains(target) && findSurfacePathForElement(target) !== null;
|
|
17
|
+
return !ownedByBlock;
|
|
18
|
+
}
|
|
19
|
+
export function createWidgetSelectionState(selection) {
|
|
9
20
|
return {
|
|
10
|
-
getSelected: () =>
|
|
11
|
-
select: (target) =>
|
|
12
|
-
selected = {
|
|
13
|
-
paragraphPath: [...target.paragraphPath],
|
|
14
|
-
sourceStart: target.sourceStart,
|
|
15
|
-
preSelectOffset: target.preSelectOffset
|
|
16
|
-
};
|
|
17
|
-
opts.onSelect();
|
|
18
|
-
},
|
|
21
|
+
getSelected: () => selection.widget,
|
|
22
|
+
select: (target) => selectWidgetWhole(selection, target),
|
|
19
23
|
clear: () => {
|
|
20
|
-
|
|
24
|
+
if (selection.widget !== null)
|
|
25
|
+
selection.clear();
|
|
21
26
|
},
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
27
|
+
followEdit: (path, editEnd, delta) => selection.followWidgetEdit(path, editEnd, delta),
|
|
28
|
+
isSelected: (path, start) => {
|
|
29
|
+
const widget = selection.widget;
|
|
30
|
+
return (widget !== null && widget.sourceStart === start && pathsEqual(widget.paragraphPath, path));
|
|
31
|
+
}
|
|
25
32
|
};
|
|
26
33
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The kind cue: in a mode that hides markers, a keystroke that turns its block into another kind
|
|
3
|
+
* leaves the new kind's name at the block's corner for a moment and says it once to a screen
|
|
4
|
+
* reader, so the change has a visible cause. Only typed text reports here, never a command.
|
|
5
|
+
*/
|
|
6
|
+
import type { AnyBlockKind } from '../core/nodes';
|
|
7
|
+
import type { DocumentView } from '../core/node-views';
|
|
8
|
+
import { type PresentationMode } from '../presentation-mode';
|
|
9
|
+
export interface KindCue {
|
|
10
|
+
/** Once `write` settles, cue the block at `path` if its shown kind differs from `before`. */
|
|
11
|
+
afterTypedWrite(write: Promise<unknown>, path: readonly number[], before: AnyBlockKind): Promise<void>;
|
|
12
|
+
/** The label the block at `path` shows, until its fade ends or the block there loses that name. */
|
|
13
|
+
labelAt(path: readonly number[]): string | undefined;
|
|
14
|
+
dismiss(path: readonly number[]): void;
|
|
15
|
+
}
|
|
16
|
+
export interface KindCueDeps {
|
|
17
|
+
getDoc: () => DocumentView;
|
|
18
|
+
getPresentationMode: () => PresentationMode;
|
|
19
|
+
announce: (label: string) => void;
|
|
20
|
+
}
|
|
21
|
+
export declare function createKindCue(deps: KindCueDeps): KindCue;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The kind cue: in a mode that hides markers, a keystroke that turns its block into another kind
|
|
3
|
+
* leaves the new kind's name at the block's corner for a moment and says it once to a screen
|
|
4
|
+
* reader, so the change has a visible cause. Only typed text reports here, never a command.
|
|
5
|
+
*/
|
|
6
|
+
import { SvelteMap } from 'svelte/reactivity';
|
|
7
|
+
import { shownKind } from '../core/parsers/heading';
|
|
8
|
+
import { blockAccessibleName } from '../a11y-strings';
|
|
9
|
+
import { hidesMarkers } from '../presentation-mode';
|
|
10
|
+
import { blockNodeAt } from '../tree-operations/node-primitives';
|
|
11
|
+
export function createKindCue(deps) {
|
|
12
|
+
const labels = new SvelteMap();
|
|
13
|
+
const keyOf = (path) => path.join(',');
|
|
14
|
+
return {
|
|
15
|
+
async afterTypedWrite(write, path, before) {
|
|
16
|
+
await write;
|
|
17
|
+
// Source mode draws the markers that explain the change; reading mode cannot type.
|
|
18
|
+
if (!hidesMarkers(deps.getPresentationMode()))
|
|
19
|
+
return;
|
|
20
|
+
const after = blockNodeAt(deps.getDoc(), [...path]);
|
|
21
|
+
if (!after || shownKind(after) === before)
|
|
22
|
+
return;
|
|
23
|
+
const label = blockAccessibleName(after);
|
|
24
|
+
labels.set(keyOf(path), label);
|
|
25
|
+
deps.announce(label);
|
|
26
|
+
},
|
|
27
|
+
// Keyed by path, so the label shows only while the block there still carries that name.
|
|
28
|
+
labelAt(path) {
|
|
29
|
+
const label = labels.get(keyOf(path));
|
|
30
|
+
const node = label === undefined ? undefined : blockNodeAt(deps.getDoc(), [...path]);
|
|
31
|
+
return node && blockAccessibleName(node) === label ? label : undefined;
|
|
32
|
+
},
|
|
33
|
+
dismiss: (path) => void labels.delete(keyOf(path))
|
|
34
|
+
};
|
|
35
|
+
}
|