@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,11 +1,13 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
1
|
+
// The size hint at the end of an image's alt text, read and written here. `|N` / `|NxM` is an
|
|
2
|
+
// Obsidian extension, not part of GFM; the `@X,Y[,Z]` tail on the `NxM` form is this editor's
|
|
3
|
+
// own: the pan and zoom of the image inside that frame.
|
|
3
4
|
const MAX_DIMENSION = 10000;
|
|
4
5
|
export const MAX_CROP_ZOOM = 4;
|
|
5
6
|
// The longest decodable suffix, `|10000x10000@100,100,4.00`. Bounding the pipe search to that
|
|
6
7
|
// tail keeps nested-label floods linear.
|
|
7
8
|
const MAX_SUFFIX_SEARCH = 26;
|
|
8
9
|
const NO_HINT = { width: undefined, height: undefined, crop: undefined };
|
|
10
|
+
// ── Reading ─────────────────────────────────────────────────────────────────
|
|
9
11
|
export function parseImageDimensions(alt) {
|
|
10
12
|
const lastPipe = boundedLastPipe(alt);
|
|
11
13
|
const dims = lastPipe === -1 ? null : parseDimensionSuffix(alt.slice(lastPipe + 1));
|
|
@@ -76,3 +78,18 @@ function parseStrictInt(s) {
|
|
|
76
78
|
return null;
|
|
77
79
|
return n;
|
|
78
80
|
}
|
|
81
|
+
// ── Writing ─────────────────────────────────────────────────────────────────
|
|
82
|
+
/** The suffix `parseImageDimensions` reads back as these values; empty for no width. */
|
|
83
|
+
export function buildDimSuffix(width, height, crop) {
|
|
84
|
+
if (width === undefined)
|
|
85
|
+
return '';
|
|
86
|
+
if (height === undefined)
|
|
87
|
+
return `|${width}`;
|
|
88
|
+
return `|${width}x${height}${crop ? buildCropTail(crop) : ''}`;
|
|
89
|
+
}
|
|
90
|
+
/** The pan in whole percents, then the zoom to two decimals, left out at 1. */
|
|
91
|
+
function buildCropTail(crop) {
|
|
92
|
+
const z = Math.round(crop.z * 100) / 100;
|
|
93
|
+
const zoom = z === 1 ? '' : `,${String(z)}`;
|
|
94
|
+
return `@${Math.round(crop.x)},${Math.round(crop.y)}${zoom}`;
|
|
95
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ImageFields, InlineNode } from '../nodes';
|
|
2
|
+
/** Bytes to splice over `image`'s range, or null when the edit is refused. A node a plugin's
|
|
3
|
+
* syntax owns is written by its `rewriteImage` hook (`docs/design/plugin-contract.md`). */
|
|
4
|
+
export declare function buildImageEditBytes(image: InlineNode, blockRaw: string, fields: ImageFields): string | null;
|
|
5
|
+
/** Only the optional keys the node holds, so a rebuild adds no field the source lacked and
|
|
6
|
+
* repeated resizes leave the alt text unchanged. */
|
|
7
|
+
export declare function imageFieldsFromInline(image: InlineNode): ImageFields;
|
|
8
|
+
export declare function sameImageFields(a: ImageFields, b: ImageFields): boolean;
|
|
9
|
+
/** The inverse of the built-in grammar; call `buildImageEditBytes`, which decides whether the
|
|
10
|
+
* bytes are GFM's to write. */
|
|
11
|
+
export declare function buildImageSourceBytes(fields: ImageFields): string;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// Where an image edit becomes bytes: the one function every image write goes through, and
|
|
2
|
+
// below it the GFM serializer, which nothing else may call.
|
|
3
|
+
import { encodeDestination, escapeTitle } from './destination-bytes';
|
|
4
|
+
import { buildDimSuffix } from './image-dimensions';
|
|
5
|
+
import { devWarn } from '../../dev-warn';
|
|
6
|
+
// ── Where the bytes are written ─────────────────────────────────────────────
|
|
7
|
+
/** Bytes to splice over `image`'s range, or null when the edit is refused. A node a plugin's
|
|
8
|
+
* syntax owns is written by its `rewriteImage` hook (`docs/design/plugin-contract.md`). */
|
|
9
|
+
export function buildImageEditBytes(image, blockRaw, fields) {
|
|
10
|
+
const claim = image.syntaxClaim;
|
|
11
|
+
if (!claim)
|
|
12
|
+
return buildImageSourceBytes(fields);
|
|
13
|
+
const bytes = claim.rewriteImage?.(blockRaw.slice(image.start, image.end), fields) ?? null;
|
|
14
|
+
if (bytes === null) {
|
|
15
|
+
devWarn('image-edit', `declined: the "${claim.prefix}" inline syntax handler owns these bytes and ` +
|
|
16
|
+
`${claim.rewriteImage ? 'its rewriteImage hook cannot represent this edit' : 'registered no rewriteImage hook'}`, fields);
|
|
17
|
+
}
|
|
18
|
+
return bytes;
|
|
19
|
+
}
|
|
20
|
+
/** Only the optional keys the node holds, so a rebuild adds no field the source lacked and
|
|
21
|
+
* repeated resizes leave the alt text unchanged. */
|
|
22
|
+
export function imageFieldsFromInline(image) {
|
|
23
|
+
return {
|
|
24
|
+
alt: image.alt ?? '',
|
|
25
|
+
url: image.url ?? '',
|
|
26
|
+
...(image.title !== undefined ? { title: image.title } : {}),
|
|
27
|
+
...(image.width !== undefined ? { width: image.width } : {}),
|
|
28
|
+
...(image.height !== undefined ? { height: image.height } : {}),
|
|
29
|
+
...(image.crop !== undefined ? { crop: image.crop } : {}),
|
|
30
|
+
...(image.label !== undefined ? { label: image.label } : {})
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export function sameImageFields(a, b) {
|
|
34
|
+
return (a.alt === b.alt &&
|
|
35
|
+
a.url === b.url &&
|
|
36
|
+
a.title === b.title &&
|
|
37
|
+
a.width === b.width &&
|
|
38
|
+
a.height === b.height &&
|
|
39
|
+
a.label === b.label &&
|
|
40
|
+
a.crop?.x === b.crop?.x &&
|
|
41
|
+
a.crop?.y === b.crop?.y &&
|
|
42
|
+
a.crop?.z === b.crop?.z);
|
|
43
|
+
}
|
|
44
|
+
// ── The GFM serializer ──────────────────────────────────────────────────────
|
|
45
|
+
/** The inverse of the built-in grammar; call `buildImageEditBytes`, which decides whether the
|
|
46
|
+
* bytes are GFM's to write. */
|
|
47
|
+
export function buildImageSourceBytes(fields) {
|
|
48
|
+
const dimSuffix = buildDimSuffix(fields.width, fields.height, fields.crop);
|
|
49
|
+
const altSegment = escapeAlt(fields.alt) + dimSuffix;
|
|
50
|
+
// A reference image's url and title belong to its link reference definition.
|
|
51
|
+
if (fields.label !== undefined) {
|
|
52
|
+
return `![${altSegment}][${fields.label}]`;
|
|
53
|
+
}
|
|
54
|
+
const titleSegment = fields.title !== undefined ? ` "${escapeTitle(fields.title)}"` : '';
|
|
55
|
+
return `}${titleSegment})`;
|
|
56
|
+
}
|
|
57
|
+
// Alt text keeps the label's bytes as written: a bare bracket is escaped so it can't end the
|
|
58
|
+
// label, and an existing backslash pair passes through so repeated commits never double it.
|
|
59
|
+
function escapeAlt(alt) {
|
|
60
|
+
let out = '';
|
|
61
|
+
for (let i = 0; i < alt.length; i++) {
|
|
62
|
+
const ch = alt[i];
|
|
63
|
+
if (ch === '\\' && i + 1 < alt.length) {
|
|
64
|
+
out += ch + alt[i + 1];
|
|
65
|
+
i++;
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
out += ch === '[' || ch === ']' || ch === '\\' ? '\\' + ch : ch;
|
|
69
|
+
}
|
|
70
|
+
return out;
|
|
71
|
+
}
|
|
@@ -2,41 +2,48 @@
|
|
|
2
2
|
import type { AnyInlineKind, CstNode, InlineNode } from '../nodes';
|
|
3
3
|
import type { NodeView } from '../node-views';
|
|
4
4
|
import type { LinkReferenceResolver } from './link-reference-resolver';
|
|
5
|
+
import type { Reading } from '../../schema/reading';
|
|
6
|
+
import { type GrammarView } from '../../schema/block-openers';
|
|
5
7
|
import { inlineDescendants } from './walk';
|
|
6
8
|
export interface ContentRange {
|
|
7
9
|
start: number;
|
|
8
10
|
end: number;
|
|
9
11
|
}
|
|
10
12
|
declare const contentLengthBrand: unique symbol;
|
|
11
|
-
/** Raw-
|
|
12
|
-
* DOM-measured length
|
|
13
|
+
/** Raw-offset length of a block's rendered content, built only from its content range: a
|
|
14
|
+
* DOM-measured length counts as the DOM traversal does and lags the pass rewriting the DOM. */
|
|
13
15
|
export type ContentLength = number & {
|
|
14
16
|
readonly [contentLengthBrand]: true;
|
|
15
17
|
};
|
|
16
18
|
/** Content range within a prose block's raw; marker-bearing kinds override via descriptor. */
|
|
17
19
|
export declare function getContentRange(node: NodeView): ContentRange;
|
|
18
|
-
/** The
|
|
20
|
+
/** The structure between a block's content and its line ending, like a setext underline: drawn
|
|
21
|
+
* as a marker after the text, and kept by every edit that keeps the block's head. */
|
|
22
|
+
export declare function structuralSuffix(node: NodeView): string;
|
|
23
|
+
/** The structural suffix's part on the text's own line, an ATX closing run: a line break made
|
|
24
|
+
* at the text's end goes after it. A setext underline starts on a line of its own. */
|
|
25
|
+
export declare function sameLineSuffix(node: NodeView): string;
|
|
26
|
+
/** {@link sameLineSuffix} over a prose block's raw and its content end. */
|
|
27
|
+
export declare function sameLineSuffixOf(raw: string, contentEnd: number): string;
|
|
28
|
+
/** The one place a {@link ContentLength} is created. */
|
|
19
29
|
export declare function contentLengthOf(node: NodeView): ContentLength;
|
|
20
30
|
export declare function isProseKind(kind: CstNode['kind']): boolean;
|
|
21
|
-
/**
|
|
22
|
-
*
|
|
23
|
-
* bare text run, an escape, a pair emptied of content. The inline twin of {@link getContentRange},
|
|
24
|
-
* here rather than beside one of its callers because the caret bounds, the typing seat, the
|
|
25
|
-
* destructive arm and the toggles all need the same answer.
|
|
26
|
-
*/
|
|
31
|
+
/** The inline counterpart of {@link getContentRange}: the bytes a construct's delimiters do not
|
|
32
|
+
* cover, or null for one with no content (a text run, an escape, an emptied pair). */
|
|
27
33
|
export declare function constructContentRange(node: InlineNode): ContentRange | null;
|
|
28
|
-
/**
|
|
29
|
-
*
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
*
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
/** Uncached and free of reactive reads, so the render path can call it directly. An editor
|
|
35
|
+
* passes its own grammar, so a plugin it left out takes no bytes. */
|
|
36
|
+
export declare function computeInlineContent(node: NodeView, resolver: LinkReferenceResolver | undefined, grammar: GrammarView): InlineNode[];
|
|
37
|
+
type InlineReader = (node: NodeView) => InlineNode[];
|
|
38
|
+
/** The inline parse a plugin gets: this editor's grammar and the document's definitions as they
|
|
39
|
+
* stand at each call. A new function per definitions change, so a cache keyed on it refreshes. */
|
|
40
|
+
export declare function inlineReaderFor(reading: Reading): InlineReader;
|
|
41
|
+
/** Node offsets are absolute into raw, and each byte of raw[start, end) lands in exactly one node.
|
|
42
|
+
* With no grammar it reads every installed plugin's syntax; the editor uses {@link readInline}. */
|
|
43
|
+
export declare function parseInline(raw: string, start: number, end: number, resolver?: LinkReferenceResolver, grammar?: GrammarView): InlineNode[];
|
|
44
|
+
/** Both bounds are checked at runtime: a caller outside the type checker that passes only the
|
|
45
|
+
* source would get one whole-string text node, wrong output that looks like a result. */
|
|
46
|
+
export declare function readInline(raw: string, start: number, end: number, resolver: LinkReferenceResolver | undefined, grammar: GrammarView): InlineNode[];
|
|
40
47
|
export { inlineDescendants };
|
|
41
48
|
/** Every construct kind anywhere in a parse, at any depth. */
|
|
42
49
|
export declare function constructKinds(nodes: readonly InlineNode[]): Set<AnyInlineKind>;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/** Inline parser entry. See docs/design/inline-parsing.md. */
|
|
2
|
-
import { displayLength } from '../lines';
|
|
2
|
+
import { displayLength, firstDisplayLine } from '../lines';
|
|
3
3
|
import { getBlockKindDescriptor } from '../../schema/block-kind-descriptor';
|
|
4
|
-
//
|
|
5
|
-
// side-effect import is tree-shaken from the production build.
|
|
4
|
+
// The built-in descriptors register before any read, with or without a mounted editor; the call
|
|
5
|
+
// is explicit because a bare side-effect import is tree-shaken from the production build.
|
|
6
6
|
import { registerBuiltInDescriptors } from '../../schema/built-in-descriptors';
|
|
7
|
+
import { defaultGrammarView } from '../../schema/block-openers';
|
|
7
8
|
import { scanInline } from './scan';
|
|
9
|
+
import { codeSpanFence } from './scan/code-spans';
|
|
8
10
|
import { inlineDescendants } from './walk';
|
|
9
11
|
import { recordInlineCompute } from '../../perf/instruments';
|
|
10
12
|
registerBuiltInDescriptors();
|
|
@@ -15,55 +17,75 @@ export function getContentRange(node) {
|
|
|
15
17
|
return d.getContentRange(node);
|
|
16
18
|
return { start: 0, end: displayLength(node.raw) };
|
|
17
19
|
}
|
|
18
|
-
/** The
|
|
20
|
+
/** The structure between a block's content and its line ending, like a setext underline: drawn
|
|
21
|
+
* as a marker after the text, and kept by every edit that keeps the block's head. */
|
|
22
|
+
export function structuralSuffix(node) {
|
|
23
|
+
// A kind that is not prose shows its whole display as content.
|
|
24
|
+
if (!isProseKind(node.kind))
|
|
25
|
+
return '';
|
|
26
|
+
return node.raw.slice(getContentRange(node).end, displayLength(node.raw));
|
|
27
|
+
}
|
|
28
|
+
/** The structural suffix's part on the text's own line, an ATX closing run: a line break made
|
|
29
|
+
* at the text's end goes after it. A setext underline starts on a line of its own. */
|
|
30
|
+
export function sameLineSuffix(node) {
|
|
31
|
+
if (!isProseKind(node.kind))
|
|
32
|
+
return '';
|
|
33
|
+
return sameLineSuffixOf(node.raw, getContentRange(node).end);
|
|
34
|
+
}
|
|
35
|
+
/** {@link sameLineSuffix} over a prose block's raw and its content end. */
|
|
36
|
+
export function sameLineSuffixOf(raw, contentEnd) {
|
|
37
|
+
return firstDisplayLine(raw.slice(contentEnd, displayLength(raw))).text;
|
|
38
|
+
}
|
|
39
|
+
/** The one place a {@link ContentLength} is created. */
|
|
19
40
|
export function contentLengthOf(node) {
|
|
20
41
|
return getContentRange(node).end;
|
|
21
42
|
}
|
|
22
43
|
export function isProseKind(kind) {
|
|
23
44
|
return getBlockKindDescriptor(kind).supportsInline;
|
|
24
45
|
}
|
|
25
|
-
/**
|
|
26
|
-
*
|
|
27
|
-
* bare text run, an escape, a pair emptied of content. The inline twin of {@link getContentRange},
|
|
28
|
-
* here rather than beside one of its callers because the caret bounds, the typing seat, the
|
|
29
|
-
* destructive arm and the toggles all need the same answer.
|
|
30
|
-
*/
|
|
46
|
+
/** The inline counterpart of {@link getContentRange}: the bytes a construct's delimiters do not
|
|
47
|
+
* cover, or null for one with no content (a text run, an escape, an emptied pair). */
|
|
31
48
|
export function constructContentRange(node) {
|
|
32
49
|
const children = node.children;
|
|
33
50
|
if (children && children.length > 0) {
|
|
34
51
|
return { start: children[0].start, end: children[children.length - 1].end };
|
|
35
52
|
}
|
|
36
|
-
// A code span carries its content as `text` rather than children
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const fence = (node.end - node.start - node.text.length) / 2;
|
|
40
|
-
if (Number.isInteger(fence) && fence > 0) {
|
|
41
|
-
return { start: node.start + fence, end: node.end - fence };
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return null;
|
|
53
|
+
// A code span carries its content as `text` rather than children.
|
|
54
|
+
const fence = node.kind === 'inlineCode' ? codeSpanFence(node) : 0;
|
|
55
|
+
return fence > 0 ? { start: node.start + fence, end: node.end - fence } : null;
|
|
45
56
|
}
|
|
46
|
-
/**
|
|
47
|
-
*
|
|
48
|
-
|
|
49
|
-
*/
|
|
50
|
-
export function computeInlineContent(node, resolver) {
|
|
57
|
+
/** Uncached and free of reactive reads, so the render path can call it directly. An editor
|
|
58
|
+
* passes its own grammar, so a plugin it left out takes no bytes. */
|
|
59
|
+
export function computeInlineContent(node, resolver, grammar) {
|
|
51
60
|
recordInlineCompute();
|
|
52
61
|
const range = getContentRange(node);
|
|
53
|
-
return
|
|
62
|
+
return readInline(node.raw, range.start, range.end, resolver, grammar);
|
|
63
|
+
}
|
|
64
|
+
const readersByReading = new WeakMap();
|
|
65
|
+
/** The inline parse a plugin gets: this editor's grammar and the document's definitions as they
|
|
66
|
+
* stand at each call. A new function per definitions change, so a cache keyed on it refreshes. */
|
|
67
|
+
export function inlineReaderFor(reading) {
|
|
68
|
+
const epoch = reading.resolverEpoch;
|
|
69
|
+
const held = readersByReading.get(reading);
|
|
70
|
+
if (held?.epoch === epoch)
|
|
71
|
+
return held.read;
|
|
72
|
+
const read = (node) => computeInlineContent(node, reading.resolver, reading.grammar);
|
|
73
|
+
readersByReading.set(reading, { epoch, read });
|
|
74
|
+
return read;
|
|
54
75
|
}
|
|
55
76
|
// ── Inline Parser ──────────────────────────────────────────────────────────
|
|
56
|
-
/**
|
|
57
|
-
*
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
77
|
+
/** Node offsets are absolute into raw, and each byte of raw[start, end) lands in exactly one node.
|
|
78
|
+
* With no grammar it reads every installed plugin's syntax; the editor uses {@link readInline}. */
|
|
79
|
+
export function parseInline(raw, start, end, resolver, grammar) {
|
|
80
|
+
return readInline(raw, start, end, resolver, grammar ?? defaultGrammarView);
|
|
81
|
+
}
|
|
82
|
+
/** Both bounds are checked at runtime: a caller outside the type checker that passes only the
|
|
83
|
+
* source would get one whole-string text node, wrong output that looks like a result. */
|
|
84
|
+
export function readInline(raw, start, end, resolver, grammar) {
|
|
63
85
|
if (!Number.isFinite(start) || !Number.isFinite(end)) {
|
|
64
|
-
throw new TypeError('parseInline requires both scan bounds
|
|
86
|
+
throw new TypeError('parseInline requires both scan bounds: to scan a whole string, call parseInline(src, 0, src.length)');
|
|
65
87
|
}
|
|
66
|
-
return scanInline(raw, start, end, resolver);
|
|
88
|
+
return scanInline(raw, start, end, resolver, grammar);
|
|
67
89
|
}
|
|
68
90
|
// ── Inline Tree Walks ──────────────────────────────────────────────────────
|
|
69
91
|
export { inlineDescendants };
|
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Lazy `inlineContent` accessor for
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* evict each other on a bracket-bearing block.
|
|
2
|
+
* Lazy `inlineContent` accessor for code outside the render path, over a node-keyed WeakMap.
|
|
3
|
+
* Never call it from the render path, which computes from `node.raw` with `computeInlineContent` so a
|
|
4
|
+
* render effect reads nothing else (G4.2). Resolver-less and resolving callers get
|
|
5
|
+
* separate slots so they never evict each other, and a slot answers only its own grammar.
|
|
7
6
|
*/
|
|
8
7
|
import type { InlineNode } from '../nodes';
|
|
9
8
|
import type { NodeView } from '../node-views';
|
|
10
9
|
import type { LinkReferenceResolver } from './link-reference-resolver';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
signature?: string;
|
|
20
|
-
}): InlineNode[];
|
|
10
|
+
import type { GrammarView } from '../../schema/block-openers';
|
|
11
|
+
import type { Reading } from '../../schema/reading';
|
|
12
|
+
export declare function getInlineContent(node: NodeView, resolver: LinkReferenceResolver | undefined, signature: string | undefined, grammar: GrammarView): InlineNode[];
|
|
13
|
+
/** The parts of an editor's reading its inline parse needs. */
|
|
14
|
+
export type InlineReading = Pick<Reading, 'grammar' | 'resolver' | 'resolverSignature'>;
|
|
15
|
+
/** Takes the whole reading, so a call site outside the render path cannot drop the signature or
|
|
16
|
+
* the grammar and disagree with what the render path drew. */
|
|
17
|
+
export declare function resolvedInlineContent(node: NodeView, reading: InlineReading): InlineNode[];
|
|
@@ -1,28 +1,25 @@
|
|
|
1
1
|
import { computeInlineContent, isProseKind } from './index';
|
|
2
2
|
const cache = new WeakMap();
|
|
3
|
-
export function getInlineContent(node, resolver, signature = '') {
|
|
3
|
+
export function getInlineContent(node, resolver, signature = '', grammar) {
|
|
4
4
|
if (!isProseKind(node.kind))
|
|
5
5
|
return [];
|
|
6
|
-
// A block resolves
|
|
7
|
-
// a bracketless block
|
|
6
|
+
// A block resolves a link reference definition only if it holds a bracket; the render path
|
|
7
|
+
// checks the same, so a bracketless block skips both the resolver and the signature.
|
|
8
8
|
const hasRef = node.raw.includes('[');
|
|
9
9
|
const sig = hasRef ? signature : '';
|
|
10
10
|
const effectiveResolver = hasRef ? resolver : undefined;
|
|
11
11
|
const entry = cache.get(node);
|
|
12
12
|
const slot = sig === '' ? 'plain' : 'resolved';
|
|
13
13
|
const hit = entry?.[slot];
|
|
14
|
-
if (hit && hit.raw === node.raw && hit.signature === sig)
|
|
14
|
+
if (hit && hit.raw === node.raw && hit.signature === sig && hit.grammar === grammar) {
|
|
15
15
|
return hit.content;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
cache.set(node, { ...entry, [slot]: { raw: node.raw, signature: sig, content } });
|
|
16
|
+
}
|
|
17
|
+
const content = computeInlineContent(node, effectiveResolver, grammar);
|
|
18
|
+
cache.set(node, { ...entry, [slot]: { raw: node.raw, signature: sig, grammar, content } });
|
|
19
19
|
return content;
|
|
20
20
|
}
|
|
21
|
-
/**
|
|
22
|
-
*
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
*/
|
|
26
|
-
export function resolvedInlineContent(node, linkRef) {
|
|
27
|
-
return getInlineContent(node, linkRef?.current, linkRef?.signature ?? '');
|
|
21
|
+
/** Takes the whole reading, so a call site outside the render path cannot drop the signature or
|
|
22
|
+
* the grammar and disagree with what the render path drew. */
|
|
23
|
+
export function resolvedInlineContent(node, reading) {
|
|
24
|
+
return getInlineContent(node, reading.resolver, reading.resolverSignature, reading.grammar);
|
|
28
25
|
}
|
|
@@ -1,59 +1,54 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* for the image, whose per-instance builder is injected per render.
|
|
2
|
+
* The one registry of which inline kinds render as live widgets (non-editable spans marked
|
|
3
|
+
* `[data-inline-widget]`) and how each is recognized. DOM building has three routes: a
|
|
4
|
+
* `buildWidget` for core-built widgets, a `component` mounted through the injected portal
|
|
5
|
+
* builder, or neither for the image, whose builder is injected per render.
|
|
7
6
|
*/
|
|
8
7
|
import type { Component } from 'svelte';
|
|
9
|
-
import type
|
|
8
|
+
import { type AnyInlineKind, type InlineNode } from '../nodes';
|
|
10
9
|
import type { DocumentView, NodeView } from '../node-views';
|
|
11
10
|
import type { PresentationMode } from '../../presentation-mode';
|
|
11
|
+
import type { GrammarView } from '../../schema/block-openers';
|
|
12
12
|
/**
|
|
13
|
-
* The
|
|
14
|
-
*
|
|
13
|
+
* The widget shell every core builder shares. Its `data-*` attributes are the only handle the
|
|
14
|
+
* DOM-to-offset traversal has, so the shell is created here once and builders add only the body.
|
|
15
15
|
*/
|
|
16
16
|
export declare function mintWidgetShell(className: string, node: InlineNode): HTMLSpanElement;
|
|
17
|
-
/** The raw byte range a shell carries, or null when the attributes are absent or malformed
|
|
18
|
-
* {@link mintWidgetShell}'s inverse,
|
|
17
|
+
/** The raw byte range a shell carries, or null when the attributes are absent or malformed:
|
|
18
|
+
* {@link mintWidgetShell}'s inverse, kept beside it so the two move together. */
|
|
19
19
|
export declare function widgetSourceRange(el: Element): {
|
|
20
20
|
start: number;
|
|
21
21
|
end: number;
|
|
22
22
|
} | null;
|
|
23
23
|
/**
|
|
24
24
|
* Props a `component` widget kind is mounted with. Frozen at mount: the pool remounts on a
|
|
25
|
-
* source change, so `source` never shifts under a live instance, but `inline.start`/`end`
|
|
26
|
-
* lag once
|
|
27
|
-
* `data-source-*`, never these fields. The getters below are live for the
|
|
28
|
-
*
|
|
25
|
+
* source change, so `source` never shifts under a live instance, but `inline.start`/`end` can
|
|
26
|
+
* lag once typing beside the widget moves it. The live position is the wrapper's rewritten
|
|
27
|
+
* `data-source-*`, never these fields. The getters below are live for the inverse reason: a
|
|
28
|
+
* reused instance would go stale on a frozen value.
|
|
29
29
|
*/
|
|
30
30
|
export interface InlineWidgetComponentProps {
|
|
31
31
|
inline: InlineNode;
|
|
32
32
|
source: string;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
getTheme?: () => string;
|
|
33
|
+
getPresentationMode: () => PresentationMode;
|
|
34
|
+
/** A widget whose body a renderer such as KaTeX draws emits colors no stylesheet reaches, so
|
|
35
|
+
* it keys its render on this. One styled with CSS tokens needs nothing. */
|
|
36
|
+
getTheme: () => string;
|
|
38
37
|
/** The pool keys on `${kind} ${source}`, so a widget whose value derives from the document
|
|
39
38
|
* (footnote numbering) needs this to survive edits elsewhere that change no source. */
|
|
40
|
-
getDocument
|
|
41
|
-
/**
|
|
42
|
-
*
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
*/
|
|
46
|
-
|
|
47
|
-
/** `
|
|
48
|
-
*
|
|
49
|
-
|
|
39
|
+
getDocument: () => DocumentView | undefined;
|
|
40
|
+
/** Memo key for a whole-document derivation, since the `$state` document mutates in place and
|
|
41
|
+
* keeps its identity. Read it inside the widget's `$derived` to re-run on edits anywhere. */
|
|
42
|
+
getContentVersion: () => number;
|
|
43
|
+
/** `EditorRects.navigateTo`: mount, scroll to and put the caret at a raw offset in a block
|
|
44
|
+
* path. Resolves false where it can't land, so a widget never needs a fallback. */
|
|
45
|
+
navigateTo: (path: number[], offset?: number) => Promise<boolean>;
|
|
46
|
+
/** `EditorContext.computeInlineContent` for the widget's editor: it parses as that editor draws,
|
|
47
|
+
* and it's a new function whenever the document's definitions change. */
|
|
48
|
+
computeInlineContent: (node: NodeView) => InlineNode[];
|
|
50
49
|
}
|
|
51
|
-
/**
|
|
52
|
-
*
|
|
53
|
-
* widget deciding whether to act: a Ctrl/Cmd chord while editing, a plain click in reading
|
|
54
|
-
* mode, where there is no caret for a plain click to place. The link click's rule
|
|
55
|
-
* (`Editor.svelte`), applied to widgets.
|
|
56
|
-
*/
|
|
50
|
+
/** Shared by the editable element deciding whether to show the source and the widget deciding
|
|
51
|
+
* whether to act. Reading mode has no caret to place, so a plain click activates, as for links. */
|
|
57
52
|
export declare function isWidgetActivationClick(modified: boolean, mode: PresentationMode): boolean;
|
|
58
53
|
/** The closed vocabularies as values, so the published conformance kit checks a registration
|
|
59
54
|
* against the type's own members rather than a copy that ages out of step with it. */
|
|
@@ -61,37 +56,30 @@ export declare const DELETE_GRANULARITIES: readonly ["atomic", "select-then-dele
|
|
|
61
56
|
export declare const ON_EDGE_POLICIES: readonly ["select", "step-over"];
|
|
62
57
|
/**
|
|
63
58
|
* Per-kind editing behavior, read by the caret-edge dispatch
|
|
64
|
-
* (`components/blocks/text/edge-policy-dispatch.ts`). `atomic` deletes in one
|
|
59
|
+
* (`components/blocks/text/edge-policy-dispatch.ts`). `atomic` deletes in one keypress where
|
|
65
60
|
* `select-then-delete` takes two; `onEdge` chooses between selecting the construct whole and
|
|
66
61
|
* stepping over it like a character.
|
|
67
62
|
*/
|
|
68
63
|
export interface InlineWidgetEditingPolicy {
|
|
69
64
|
revealSource?: boolean;
|
|
70
|
-
/**
|
|
71
|
-
*
|
|
72
|
-
* that span — `$x$` answers `{ start: 1, end: 2 }`. It bounds a caret entering the source,
|
|
73
|
-
* and `end` is where a revealing click lands when the kind maps no point of its own. Only
|
|
74
|
-
* the kind knows its own delimiters; absent, the caret keeps the leading edge.
|
|
75
|
-
*/
|
|
65
|
+
/** The editable content's offsets in the source span (`$x$` gives `{ start: 1, end: 2 }`),
|
|
66
|
+
* bounding the caret; a click with no mapped point lands at `end`. Absent: the start edge. */
|
|
76
67
|
revealContentSpan?: (source: string) => {
|
|
77
68
|
start: number;
|
|
78
69
|
end: number;
|
|
79
70
|
} | null;
|
|
80
|
-
/**
|
|
81
|
-
*
|
|
82
|
-
* where it landed rather than at one edge. Only the kind can map its render back to bytes (a
|
|
83
|
-
* KaTeX island paints glyphs, not source); null declines this point and keeps the fallback.
|
|
84
|
-
*/
|
|
71
|
+
/** The `source` offset under a click, so the caret goes where the user clicked; only the kind
|
|
72
|
+
* can map its render (KaTeX glyphs) back to bytes. Null keeps the fallback. */
|
|
85
73
|
revealOffsetAtPoint?: (widgetEl: HTMLElement, source: string, clientX: number, clientY: number) => number | null;
|
|
86
74
|
deleteGranularity?: (typeof DELETE_GRANULARITIES)[number];
|
|
87
75
|
onEdge?: (typeof ON_EDGE_POLICIES)[number];
|
|
88
76
|
onSelectedKey?: (e: KeyboardEvent, ctx: InlineWidgetEditingContext) => boolean;
|
|
89
77
|
/** The widget's own component handles an activation click ({@link isWidgetActivationClick}),
|
|
90
|
-
* so the
|
|
78
|
+
* so the editable element does not show the source, which would unmount the widget. */
|
|
91
79
|
claimsActivationClick?: boolean;
|
|
92
80
|
}
|
|
93
81
|
export interface InlineWidgetEditingContext {
|
|
94
|
-
/**
|
|
82
|
+
/** Read-only, since an undo entry may share the node (G1.9); edit through `updateContent`. */
|
|
95
83
|
node: NodeView;
|
|
96
84
|
inline: InlineNode;
|
|
97
85
|
widgetStart: number;
|
|
@@ -109,35 +97,26 @@ export interface InlineWidgetDescriptor {
|
|
|
109
97
|
/** Omitted for a kind whose builder is injected per render (image) or that uses `component`. */
|
|
110
98
|
buildWidget?(node: InlineNode, raw: string): HTMLElement;
|
|
111
99
|
/** The recommended path, mutually exclusive with `buildWidget`: the render layer wraps it in
|
|
112
|
-
* the
|
|
100
|
+
* the widget shell span and mounts it through the injected portal builder. */
|
|
113
101
|
component?: Component<InlineWidgetComponentProps>;
|
|
114
102
|
editing?: InlineWidgetEditingPolicy;
|
|
115
103
|
}
|
|
116
104
|
export declare function registerInlineWidgetKind(kind: AnyInlineKind, descriptor: InlineWidgetDescriptor): void;
|
|
117
|
-
/**
|
|
118
|
-
*
|
|
119
|
-
* (components/built-in-blocks.ts) attaches behavior here that would otherwise make a core
|
|
120
|
-
* registration import a downstream layer. Throws for an unregistered kind.
|
|
121
|
-
*/
|
|
105
|
+
/** Lets the editor layer (`components/built-in-blocks.ts`) attach editing behavior without a core
|
|
106
|
+
* registration importing it. Throws for an unregistered kind. */
|
|
122
107
|
export declare function augmentInlineWidgetKind(kind: AnyInlineKind, editing: Partial<InlineWidgetEditingPolicy>): void;
|
|
108
|
+
/** Whether the kind renders as a widget under the editor's grammar, whatever one node's bytes. */
|
|
109
|
+
export declare function isInlineWidgetKind(kind: AnyInlineKind, grammar: GrammarView): boolean;
|
|
123
110
|
/** Kind-level recognition, independent of per-block render policy (renderImagesAsWidgets). */
|
|
124
|
-
export declare function isInlineWidget(node: InlineNode, raw: string): boolean;
|
|
125
|
-
export declare function getInlineWidgetEditing(kind: AnyInlineKind): InlineWidgetEditingPolicy | undefined;
|
|
126
|
-
/** A kind the caret
|
|
127
|
-
* own, and a
|
|
128
|
-
export declare function isCharacterLikeWidget(kind: AnyInlineKind): boolean;
|
|
129
|
-
export declare function getInlineWidgetComponent(kind: AnyInlineKind): Component<InlineWidgetComponentProps> | undefined;
|
|
130
|
-
/**
|
|
131
|
-
*
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
*/
|
|
135
|
-
export declare function
|
|
136
|
-
/**
|
|
137
|
-
* A `component` kind routes through the injected `buildPortalWidget` because the component layer
|
|
138
|
-
* owns Svelte mounting and `core/` stays framework-free. Null when the node is not a widget, its
|
|
139
|
-
* builder is injected per render (image), or the portal builder is absent or failed.
|
|
140
|
-
*/
|
|
141
|
-
export declare function buildCoreInlineWidget(node: InlineNode, raw: string, buildPortalWidget?: (node: InlineNode, raw: string) => HTMLElement | null): HTMLElement | null;
|
|
142
|
-
/** Test-only. Removes every plugin-registered inline-widget kind; built-ins survive. */
|
|
143
|
-
export declare function __resetInlineWidgetsForTests(): void;
|
|
111
|
+
export declare function isInlineWidget(node: InlineNode, raw: string, grammar: GrammarView): boolean;
|
|
112
|
+
export declare function getInlineWidgetEditing(kind: AnyInlineKind, grammar: GrammarView): InlineWidgetEditingPolicy | undefined;
|
|
113
|
+
/** A kind the caret treats as one character: it steps over in one keypress, has a column of its
|
|
114
|
+
* own, and a click on its glyph names an edge rather than selecting the widget whole. */
|
|
115
|
+
export declare function isCharacterLikeWidget(kind: AnyInlineKind, grammar: GrammarView): boolean;
|
|
116
|
+
export declare function getInlineWidgetComponent(kind: AnyInlineKind, grammar: GrammarView): Component<InlineWidgetComponentProps> | undefined;
|
|
117
|
+
/** Descends into non-widget parents (the `image` inside `[![alt][ref]][repo]`) but never into a
|
|
118
|
+
* widget, whose children are atomic. `raw` is the enclosing block's source. */
|
|
119
|
+
export declare function flattenInlineWidgets(nodes: ReadonlyArray<InlineNode>, raw: string, grammar: GrammarView): InlineNode[];
|
|
120
|
+
/** A `component` kind mounts through the injected `buildPortalWidget`, keeping `core/` free of
|
|
121
|
+
* Svelte. Null for a non-widget, an image (built per render), or a missing or failed portal. */
|
|
122
|
+
export declare function buildCoreInlineWidget(node: InlineNode, raw: string, buildPortalWidget: ((node: InlineNode, raw: string) => HTMLElement | null) | undefined, grammar: GrammarView): HTMLElement | null;
|