@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,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Priority
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* `fencedCode`); one that
|
|
2
|
+
* Priority order for the built-in block openers, kept only here so the published table and the
|
|
3
|
+
* registry cannot drift. Lower runs first, ties broken by kind name. A plugin opener that matches
|
|
4
|
+
* everything a built-in matches and more needs a lower number than it (```mermaid below
|
|
5
|
+
* `fencedCode`); one that belongs between two built-ins takes a number in the gap.
|
|
6
6
|
*/
|
|
7
7
|
export declare const OPENER_PRIORITIES: {
|
|
8
8
|
readonly fencedCode: 10;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Priority
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* `fencedCode`); one that
|
|
2
|
+
* Priority order for the built-in block openers, kept only here so the published table and the
|
|
3
|
+
* registry cannot drift. Lower runs first, ties broken by kind name. A plugin opener that matches
|
|
4
|
+
* everything a built-in matches and more needs a lower number than it (```mermaid below
|
|
5
|
+
* `fencedCode`); one that belongs between two built-ins takes a number in the gap.
|
|
6
6
|
*/
|
|
7
7
|
export const OPENER_PRIORITIES = {
|
|
8
8
|
fencedCode: 10,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* The one list of structural operations: `OperationKind`, `OpDescriptor` and `EditEvent` all come
|
|
3
|
+
* from `OperationDetailMap`, so a mismatch is a compile error rather than an edit someone missed
|
|
4
|
+
* in one place.
|
|
5
5
|
*/
|
|
6
6
|
export interface OperationDetailMap {
|
|
7
7
|
split: {
|
|
@@ -23,10 +23,8 @@ export interface OperationDetailMap {
|
|
|
23
23
|
input: {
|
|
24
24
|
byteLength: number;
|
|
25
25
|
};
|
|
26
|
-
/** `crossBlock` marks a write that
|
|
27
|
-
* block,
|
|
28
|
-
* A toggle endpoint carrying a CELL INDEX names its grid, whose own bytes no write holds, so
|
|
29
|
-
* `length` is the grid's PRE-write length; a deep cell path names that cell like any block. */
|
|
26
|
+
/** `crossBlock` marks a write that also covered the range's other blocks. `length` is the named
|
|
27
|
+
* block's, or for an endpoint carrying a cell index, its table's length before the write. */
|
|
30
28
|
updateContent: {
|
|
31
29
|
length: number;
|
|
32
30
|
crossBlock?: true;
|
|
@@ -39,7 +37,7 @@ export interface OperationDetailMap {
|
|
|
39
37
|
parentItemIdx?: number;
|
|
40
38
|
nestedItemIdx?: number;
|
|
41
39
|
} | {
|
|
42
|
-
source: 'paste-dispatch' | 'paste-dispatch-table-cell' | 'cross-block-covered-block';
|
|
40
|
+
source: 'paste-dispatch' | 'paste-dispatch-table-cell' | 'cross-block-covered-block' | 'selection-drop';
|
|
43
41
|
};
|
|
44
42
|
paste: {
|
|
45
43
|
count: number;
|
|
@@ -51,7 +49,7 @@ export interface OperationDetailMap {
|
|
|
51
49
|
appendBlock: {
|
|
52
50
|
itemIndex?: number;
|
|
53
51
|
} | undefined;
|
|
54
|
-
/** Insert at an
|
|
52
|
+
/** Insert at an index inside the list; `appendBlock`'s sibling for a block created between two. */
|
|
55
53
|
insertBlock: undefined;
|
|
56
54
|
metadataUpdate: {
|
|
57
55
|
fields: string[];
|
|
@@ -109,8 +107,8 @@ export type OpDescriptor = {
|
|
|
109
107
|
};
|
|
110
108
|
}[OperationKind];
|
|
111
109
|
/**
|
|
112
|
-
* OpDescriptor plus the
|
|
113
|
-
* is `DocPath` so the
|
|
110
|
+
* `OpDescriptor` plus the document-absolute path that container and multi-list commits carry.
|
|
111
|
+
* `eventPath` is a `DocPath` so the code that builds it cannot fall back to a plain `number[]`.
|
|
114
112
|
*/
|
|
115
113
|
export type ScopedOpDescriptor = OpDescriptor & {
|
|
116
114
|
eventPath: DocPath;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* The one list of structural operations: `OperationKind`, `OpDescriptor` and `EditEvent` all come
|
|
3
|
+
* from `OperationDetailMap`, so a mismatch is a compile error rather than an edit someone missed
|
|
4
|
+
* in one place.
|
|
5
5
|
*/
|
|
6
6
|
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a block reads on the page, the one answer the drag handle, the context menu and the drag
|
|
3
|
+
* ghost ask: the kind's declared `pageRole`, except that a paragraph holding only pictures is an
|
|
4
|
+
* object whatever its kind declares.
|
|
5
|
+
*/
|
|
6
|
+
import type { NodeView } from '../core/node-views';
|
|
7
|
+
import type { InlineReading } from '../core/inline/inline-cache';
|
|
8
|
+
export type PageRole = 'prose' | 'object';
|
|
9
|
+
export declare function blockPageRole(node: NodeView, reading: InlineReading): PageRole;
|
|
10
|
+
/**
|
|
11
|
+
* Prose the caret writes in: a prose block holding no children. A right-click there acts on the
|
|
12
|
+
* text; a prose container's own frame (a quote's bar) is aimed at the container instead.
|
|
13
|
+
*/
|
|
14
|
+
export declare function isProseLeaf(node: NodeView, reading: InlineReading): boolean;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a block reads on the page, the one answer the drag handle, the context menu and the drag
|
|
3
|
+
* ghost ask: the kind's declared `pageRole`, except that a paragraph holding only pictures is an
|
|
4
|
+
* object whatever its kind declares.
|
|
5
|
+
*/
|
|
6
|
+
import { isImageOnlyParagraph } from '../core/inline/picture';
|
|
7
|
+
import { tryGetBlockKindDescriptor } from './block-kind-descriptor';
|
|
8
|
+
export function blockPageRole(node, reading) {
|
|
9
|
+
if (isImageOnlyParagraph(node, reading))
|
|
10
|
+
return 'object';
|
|
11
|
+
return tryGetBlockKindDescriptor(node.kind)?.pageRole ?? 'object';
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Prose the caret writes in: a prose block holding no children. A right-click there acts on the
|
|
15
|
+
* text; a prose container's own frame (a quote's bar) is aimed at the container instead.
|
|
16
|
+
*/
|
|
17
|
+
export function isProseLeaf(node, reading) {
|
|
18
|
+
return (blockPageRole(node, reading) === 'prose' && !tryGetBlockKindDescriptor(node.kind)?.isContainer);
|
|
19
|
+
}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import type { KindEnablement } from './registry-view';
|
|
2
1
|
export interface PluginActivation {
|
|
3
2
|
isActive(pluginName: string): boolean;
|
|
4
3
|
}
|
|
5
|
-
/** The prop
|
|
4
|
+
/** The default when no `plugins` prop is given; `resolvesIn` still drops a plugin whose setup threw. */
|
|
6
5
|
export declare const everyInstalledPlugin: PluginActivation;
|
|
7
6
|
export declare function activationFor(pluginNames: readonly string[]): PluginActivation;
|
|
8
7
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* registered outside an install.
|
|
8
|
+
* An entry no plugin owns always resolves; a plugin's only once its setup finished without
|
|
9
|
+
* throwing and the editor activated it, so a half-installed plugin resolves nowhere.
|
|
12
10
|
*/
|
|
13
|
-
export declare function
|
|
11
|
+
export declare function resolvesIn(activation: PluginActivation, owner: string | null): boolean;
|
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Which plugins one editor activates, and the one check every plugin registration is read
|
|
3
|
+
* through. Definitions are process-wide; an editor activates exactly the plugins its `plugins`
|
|
4
|
+
* prop lists, and one mounted without that prop activates everything installed in the process
|
|
5
|
+
* (`docs/design/plugin-contract.md` § Per-instance enablement).
|
|
6
|
+
*/
|
|
7
|
+
import { isPluginInstalled } from './plugin-install';
|
|
8
|
+
/** The default when no `plugins` prop is given; `resolvesIn` still drops a plugin whose setup threw. */
|
|
3
9
|
export const everyInstalledPlugin = { isActive: () => true };
|
|
4
10
|
export function activationFor(pluginNames) {
|
|
5
11
|
const active = new Set(pluginNames);
|
|
6
12
|
return { isActive: (name) => active.has(name) };
|
|
7
13
|
}
|
|
8
14
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* registered outside an install.
|
|
15
|
+
* An entry no plugin owns always resolves; a plugin's only once its setup finished without
|
|
16
|
+
* throwing and the editor activated it, so a half-installed plugin resolves nowhere.
|
|
12
17
|
*/
|
|
13
|
-
export function
|
|
14
|
-
return (
|
|
15
|
-
const owner = pluginKindOwner(kind);
|
|
16
|
-
return owner === null || activation.isActive(owner);
|
|
17
|
-
};
|
|
18
|
+
export function resolvesIn(activation, owner) {
|
|
19
|
+
return owner === null || (isPluginInstalled(owner) && activation.isActive(owner));
|
|
18
20
|
}
|
|
@@ -1,22 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* handlers
|
|
4
|
-
* live (rules.md
|
|
2
|
+
* One `EditorContext` per editor and plugin: the object `onEditor` callbacks, global-command
|
|
3
|
+
* handlers and `BlockCommandContext.editor` all receive. `document` is a getter so every read is
|
|
4
|
+
* live (`docs/contributing/rules.md` § The five rules), and `options` is the plugin's defaults
|
|
5
|
+
* merged with this editor's entry.
|
|
5
6
|
*/
|
|
6
7
|
import type { DocumentView } from '../core/node-views';
|
|
7
8
|
import type { DecorationRegistry } from '../decorations/types';
|
|
8
9
|
import type { EditorRects } from '../editor-rects';
|
|
10
|
+
import type { InsertMarkdownOptions } from '../editor-props';
|
|
11
|
+
import type { InlineMenuRegistry } from '../inline-menu/types';
|
|
9
12
|
import type { PresentationMode } from '../presentation-mode';
|
|
10
|
-
import type {
|
|
13
|
+
import type { Reading } from './reading';
|
|
14
|
+
import { type PluginActivation } from './plugin-activation';
|
|
11
15
|
import { type EditorContext, type EditorEventSubscriptions } from './plugin-install';
|
|
16
|
+
type ErrorReport = {
|
|
17
|
+
plugin: string;
|
|
18
|
+
error: unknown;
|
|
19
|
+
};
|
|
12
20
|
export interface EditorPluginContexts {
|
|
13
|
-
/**
|
|
14
|
-
*
|
|
21
|
+
/** This editor's context for a plugin it activated; `undefined` for one it did not. The empty
|
|
22
|
+
* name returns the editor's base context, the one kinds no plugin owns use, never filtered. */
|
|
15
23
|
get(pluginName: string): EditorContext | undefined;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
error: unknown;
|
|
19
|
-
}) => void): void;
|
|
24
|
+
/** Also receives any options error reported before it was called. */
|
|
25
|
+
attachAll(onError: (report: ErrorReport) => void): void;
|
|
20
26
|
dispose(): void;
|
|
21
27
|
}
|
|
22
28
|
export declare const mintEditorId: () => string;
|
|
@@ -24,10 +30,19 @@ export declare function createEditorPluginContexts(deps: {
|
|
|
24
30
|
editorId: string;
|
|
25
31
|
getDoc: () => DocumentView;
|
|
26
32
|
events: EditorEventSubscriptions;
|
|
33
|
+
/** The entry's options as the host wrote them, before the merge. */
|
|
27
34
|
optionsFor: (pluginName: string) => unknown;
|
|
28
35
|
decorations: DecorationRegistry;
|
|
29
36
|
rects: EditorRects;
|
|
37
|
+
inlineMenus: InlineMenuRegistry;
|
|
38
|
+
getDocumentGeneration: () => number;
|
|
30
39
|
getPresentationMode: () => PresentationMode;
|
|
31
40
|
getTheme: () => string;
|
|
32
41
|
activation: PluginActivation;
|
|
42
|
+
/** The instance's own entry points; the context only delegates. */
|
|
43
|
+
insertMarkdown: (md: string, options?: InsertMarkdownOptions) => Promise<boolean>;
|
|
44
|
+
runCommand: (commandId: string, arg?: unknown) => boolean;
|
|
45
|
+
/** How the editor reads its bytes, which every plugin inline read follows. */
|
|
46
|
+
reading: Reading;
|
|
33
47
|
}): EditorPluginContexts;
|
|
48
|
+
export {};
|
|
@@ -1,14 +1,31 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { inlineReaderFor } from '../core/inline';
|
|
2
|
+
import { insertCatalogue } from './insert-catalogue';
|
|
3
|
+
import { resolvesIn } from './plugin-activation';
|
|
4
|
+
import { installedPlugin, installedPluginNames, onEditorCallbacks, resolvePluginOptions } from './plugin-install';
|
|
5
|
+
// Editor ids counted up across the process: `editor-1`, `editor-2`, … Stable for the life of a
|
|
6
|
+
// mount, so a plugin can key its per-editor state on `editor.editorId`.
|
|
4
7
|
let n = 0;
|
|
5
8
|
export const mintEditorId = () => `editor-${++n}`;
|
|
6
9
|
export function createEditorPluginContexts(deps) {
|
|
7
10
|
const contexts = new Map();
|
|
8
11
|
const disposers = [];
|
|
9
|
-
|
|
12
|
+
// A block reads its options while it renders, which is before `attachAll` sets a handler.
|
|
13
|
+
const early = [];
|
|
14
|
+
let report = (r) => void early.push(r);
|
|
15
|
+
function optionsFor(pluginName) {
|
|
16
|
+
const plugin = installedPlugin(pluginName) ?? {};
|
|
17
|
+
try {
|
|
18
|
+
return resolvePluginOptions(plugin, deps.optionsFor(pluginName));
|
|
19
|
+
}
|
|
20
|
+
catch (cause) {
|
|
21
|
+
const message = cause instanceof Error ? cause.message : String(cause);
|
|
22
|
+
const error = new Error(`plugin '${pluginName}': options rejected, running on its defaults: ${message}`, { cause });
|
|
23
|
+
report({ plugin: pluginName, error });
|
|
24
|
+
return resolvePluginOptions(plugin, undefined);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
10
27
|
function get(pluginName) {
|
|
11
|
-
if (pluginName !== '' && !deps.activation
|
|
28
|
+
if (pluginName !== '' && !resolvesIn(deps.activation, pluginName))
|
|
12
29
|
return undefined;
|
|
13
30
|
let ctx = contexts.get(pluginName);
|
|
14
31
|
if (!ctx) {
|
|
@@ -17,10 +34,22 @@ export function createEditorPluginContexts(deps) {
|
|
|
17
34
|
get document() {
|
|
18
35
|
return deps.getDoc();
|
|
19
36
|
},
|
|
37
|
+
get documentGeneration() {
|
|
38
|
+
return deps.getDocumentGeneration();
|
|
39
|
+
},
|
|
20
40
|
events: deps.events,
|
|
21
|
-
options:
|
|
41
|
+
options: optionsFor(pluginName),
|
|
22
42
|
decorations: deps.decorations,
|
|
23
43
|
rects: deps.rects,
|
|
44
|
+
inlineMenus: deps.inlineMenus,
|
|
45
|
+
get insertCatalogue() {
|
|
46
|
+
return insertCatalogue(deps.activation);
|
|
47
|
+
},
|
|
48
|
+
insertMarkdown: (md, options) => deps.insertMarkdown(md, options),
|
|
49
|
+
runCommand: (commandId, arg) => deps.runCommand(commandId, arg),
|
|
50
|
+
get computeInlineContent() {
|
|
51
|
+
return inlineReaderFor(deps.reading);
|
|
52
|
+
},
|
|
24
53
|
get presentationMode() {
|
|
25
54
|
return deps.getPresentationMode();
|
|
26
55
|
},
|
|
@@ -35,9 +64,11 @@ export function createEditorPluginContexts(deps) {
|
|
|
35
64
|
return {
|
|
36
65
|
get,
|
|
37
66
|
attachAll(onError) {
|
|
38
|
-
|
|
67
|
+
report = onError;
|
|
68
|
+
for (const r of early.splice(0))
|
|
69
|
+
onError(r);
|
|
39
70
|
for (const plugin of installedPluginNames()) {
|
|
40
|
-
if (!deps.activation
|
|
71
|
+
if (!resolvesIn(deps.activation, plugin))
|
|
41
72
|
continue;
|
|
42
73
|
for (const cb of onEditorCallbacks(plugin)) {
|
|
43
74
|
try {
|
|
@@ -57,7 +88,7 @@ export function createEditorPluginContexts(deps) {
|
|
|
57
88
|
d.dispose();
|
|
58
89
|
}
|
|
59
90
|
catch (error) {
|
|
60
|
-
|
|
91
|
+
report({ plugin: d.plugin, error });
|
|
61
92
|
}
|
|
62
93
|
}
|
|
63
94
|
}
|
|
@@ -1,58 +1,90 @@
|
|
|
1
|
-
import type { DocumentView } from '../core/node-views';
|
|
1
|
+
import type { DocumentView, NodeView } from '../core/node-views';
|
|
2
|
+
import type { InlineNode } from '../core/nodes';
|
|
2
3
|
import type { EditorEvents } from '../editor-events';
|
|
4
|
+
import type { InsertMarkdownOptions } from '../editor-props';
|
|
3
5
|
import type { DecorationRegistry } from '../decorations/types';
|
|
4
6
|
import type { EditorRects } from '../editor-rects';
|
|
7
|
+
import type { InlineMenuRegistry } from '../inline-menu/types';
|
|
5
8
|
import type { PresentationMode } from '../presentation-mode';
|
|
9
|
+
import type { InsertEntry } from './insert-catalogue';
|
|
6
10
|
export interface EditorPlugin<Options = unknown> {
|
|
7
11
|
readonly name: string;
|
|
8
12
|
readonly version?: string;
|
|
13
|
+
/** Where every editor's `options` start; an editor's `{ plugin, options }` entry replaces them
|
|
14
|
+
* field by field, an array included. */
|
|
15
|
+
readonly defaults?: Options;
|
|
16
|
+
/** Checks one editor's raw options and returns the fields to apply (leave a bad one out to keep
|
|
17
|
+
* its default); a throw is reported on the `error` event and the editor runs on the defaults. */
|
|
18
|
+
parseOptions?(raw: unknown): Partial<Options>;
|
|
9
19
|
setup(ctx: PluginSetupContext<Options>): void;
|
|
10
20
|
}
|
|
11
21
|
export interface PluginSetupContext<Options = unknown> {
|
|
12
22
|
onEditor(cb: OnEditorCallback<Options>): void;
|
|
13
23
|
}
|
|
14
24
|
export type OnEditorCallback<Options = unknown> = (editor: EditorContext<Options>) => void | (() => void);
|
|
15
|
-
/** Subscribe-only view of the events
|
|
16
|
-
*
|
|
25
|
+
/** Subscribe-only view of the editor's events. `EditorContext` must not expose the full
|
|
26
|
+
* `EditorEvents`: that would freeze a plugin-visible `emit` into the 1.0 API. */
|
|
17
27
|
export type EditorEventSubscriptions = Pick<EditorEvents, 'on'>;
|
|
18
28
|
export interface EditorContext<Options = unknown> {
|
|
19
29
|
readonly editorId: string;
|
|
20
30
|
readonly document: DocumentView;
|
|
31
|
+
/** A getter, so always live, but not reactive: how many times a `source` write has replaced
|
|
32
|
+
* the document, 0 at mount. Subscribe to the `sourceSwap` event to hear a change. */
|
|
33
|
+
readonly documentGeneration: number;
|
|
21
34
|
readonly events: EditorEventSubscriptions;
|
|
35
|
+
/** The plugin's `defaults` with this editor's `{ plugin, options }` entry merged over them. */
|
|
22
36
|
readonly options: Options;
|
|
23
37
|
readonly decorations: DecorationRegistry;
|
|
24
38
|
readonly rects: EditorRects;
|
|
25
|
-
/**
|
|
39
|
+
/** Menus opened under the caret by a typed trigger: tag autocomplete, a document picker. */
|
|
40
|
+
readonly inlineMenus: InlineMenuRegistry;
|
|
41
|
+
/** A getter, so always live: the blocks the insert menus offer in this editor, plugin blocks
|
|
42
|
+
* included; the same list as `EditorInstance.getInsertCatalogue()`. */
|
|
43
|
+
readonly insertCatalogue: readonly InsertEntry[];
|
|
44
|
+
/** `EditorInstance.insertMarkdown` for this editor: false, nothing written, with no caret, in
|
|
45
|
+
* reading mode or at a gap caret. Await it in `onCommit` to keep one undo entry for the pick. */
|
|
46
|
+
readonly insertMarkdown: (md: string, options?: InsertMarkdownOptions) => Promise<boolean>;
|
|
47
|
+
/** `EditorInstance.runCommand` for this editor: false, and nothing written, on an unknown id,
|
|
48
|
+
* in reading mode, or with nothing focused for a block command. */
|
|
49
|
+
readonly runCommand: (commandId: string, arg?: unknown) => boolean;
|
|
50
|
+
/** Inline-parse a prose leaf as this editor draws it, reference links included. Uncached, and a
|
|
51
|
+
* new function whenever the document's definitions change, so a cache keyed on it refreshes. */
|
|
52
|
+
readonly computeInlineContent: (node: NodeView) => InlineNode[];
|
|
53
|
+
/** A getter, so always live: the mode in effect. The `presentationModeChange` event signals a change. */
|
|
26
54
|
readonly presentationMode: PresentationMode;
|
|
27
|
-
/**
|
|
28
|
-
*
|
|
55
|
+
/** A getter, so always live: the theme name written to `data-editor-theme`. The `themeChange`
|
|
56
|
+
* event signals a change. Only a plugin that draws its own colors needs it. */
|
|
29
57
|
readonly theme: string;
|
|
30
58
|
}
|
|
31
|
-
export declare function definePlugin<Options =
|
|
59
|
+
export declare function definePlugin<Options extends object = Record<never, never>>(plugin: EditorPlugin<Options>): EditorPlugin<Options>;
|
|
32
60
|
export declare function installPlugins(plugins: readonly EditorPlugin[]): void;
|
|
33
|
-
/** A `plugins` prop entry: a
|
|
61
|
+
/** A `plugins` prop entry: a plugin on its own, or a plugin with options for this editor. */
|
|
34
62
|
export type EditorPluginEntry = EditorPlugin | {
|
|
35
63
|
plugin: EditorPlugin;
|
|
36
64
|
options?: unknown;
|
|
37
65
|
};
|
|
38
66
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* the same first-wins rule installPlugins applies, so the options map can't disagree with it.
|
|
67
|
+
* The options belong to one editor even though a plugin installs once per process. A plugin listed
|
|
68
|
+
* twice keeps its first entry, the rule `installPlugins` uses, so the two cannot disagree.
|
|
42
69
|
*/
|
|
43
70
|
export declare function normalizePluginEntries(entries: readonly EditorPluginEntry[]): {
|
|
44
71
|
plugins: EditorPlugin[];
|
|
45
72
|
optionsByName: Map<string, unknown>;
|
|
46
73
|
};
|
|
74
|
+
/** One editor's options for a plugin: its defaults, then each defined field of the entry that
|
|
75
|
+
* `parseOptions` kept. A `parseOptions` throw propagates, so the caller decides who hears it. */
|
|
76
|
+
export declare function resolvePluginOptions<Options extends object>(plugin: Pick<EditorPlugin<Options>, 'defaults' | 'parseOptions'>, raw: unknown): Options;
|
|
77
|
+
export declare function installedPlugin(name: string): EditorPlugin | undefined;
|
|
47
78
|
export declare function isPluginInstalled(name: string): boolean;
|
|
48
79
|
export declare function currentInstallingPlugin(): string | null;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
80
|
+
/** An editor's `EditorContext` for the plugin an entry answers to; an entry no plugin owns gets
|
|
81
|
+
* the editor's base context (`''`). Undefined when no editor is wired. */
|
|
82
|
+
export declare function pluginEditorFor(lookup: ((pluginName: string) => EditorContext | undefined) | undefined, owner: string | null): EditorContext | undefined;
|
|
83
|
+
/** Runs shared registrations a plugin's setup triggers as core ones, owned by no plugin, so every
|
|
84
|
+
* editor resolves them whichever plugin reached them first. */
|
|
85
|
+
export declare function registerAsCore(register: () => void): void;
|
|
86
|
+
export declare function pluginInstallGeneration(): number;
|
|
54
87
|
/** onEditor callbacks a plugin registered during setup, in registration order. */
|
|
55
88
|
export declare function onEditorCallbacks(pluginName: string): readonly OnEditorCallback[];
|
|
56
89
|
/** Installed plugin names, in install order. */
|
|
57
90
|
export declare function installedPluginNames(): string[];
|
|
58
|
-
export declare function __resetInstalledPluginsForTests(): void;
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import { devWarn } from '../dev-warn';
|
|
2
2
|
import { isValidPluginName } from './plugin-name';
|
|
3
|
+
import { enrollTestReset } from './registry-reset';
|
|
3
4
|
// ── Process-global install state ─────────────────────────────────────────────
|
|
4
|
-
// A plugin
|
|
5
|
-
//
|
|
6
|
-
// partial setup can't be re-run and a later attempt must advise a reload without losing the cause.
|
|
5
|
+
// A plugin's setup writes into register-once registries, so it runs at most once per process.
|
|
6
|
+
// `failed` keeps a thrown setup's error, so a later attempt can say to reload and keep the cause.
|
|
7
7
|
const installed = new Map();
|
|
8
8
|
const failed = new Map();
|
|
9
|
-
const kindOwners = new Map();
|
|
10
9
|
const onEditorSubs = new Map();
|
|
11
10
|
let installing = null;
|
|
11
|
+
// Bumped whenever the installed set changes, so a cache filtered by installation can tell it is stale.
|
|
12
|
+
let generation = 0;
|
|
12
13
|
// ── Public API ───────────────────────────────────────────────────────────────
|
|
13
14
|
export function definePlugin(plugin) {
|
|
14
15
|
if (typeof plugin.setup !== 'function') {
|
|
15
16
|
throw new Error(`definePlugin: '${plugin.name}' setup must be a function`);
|
|
16
17
|
}
|
|
17
18
|
if (!isValidPluginName(plugin.name)) {
|
|
18
|
-
throw new Error(`definePlugin: invalid plugin name "${plugin.name}"
|
|
19
|
+
throw new Error(`definePlugin: invalid plugin name "${plugin.name}"; lowercase first letter, then letters/digits/hyphens`);
|
|
19
20
|
}
|
|
20
21
|
return plugin;
|
|
21
22
|
}
|
|
@@ -24,20 +25,19 @@ export function installPlugins(plugins) {
|
|
|
24
25
|
const alreadyInstalled = installed.get(plugin.name);
|
|
25
26
|
if (alreadyInstalled) {
|
|
26
27
|
if (alreadyInstalled !== plugin) {
|
|
27
|
-
devWarn('plugin-install', `plugin '${pluginLabel(plugin)}' already installed; this definition (including any options) is ignored
|
|
28
|
+
devWarn('plugin-install', `plugin '${pluginLabel(plugin)}' already installed; this definition (including any options) is ignored; definitions are process-global`);
|
|
28
29
|
}
|
|
29
30
|
continue;
|
|
30
31
|
}
|
|
31
32
|
if (failed.has(plugin.name)) {
|
|
32
|
-
throw new Error(`plugin '${pluginLabel(plugin)}' failed during a previous install; reload the page (or restart the dev server)
|
|
33
|
+
throw new Error(`plugin '${pluginLabel(plugin)}' failed during a previous install; reload the page (or restart the dev server); register-once registries cannot re-run a partial setup`, { cause: failed.get(plugin.name) });
|
|
33
34
|
}
|
|
34
35
|
installOne(plugin);
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
38
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* the same first-wins rule installPlugins applies, so the options map can't disagree with it.
|
|
39
|
+
* The options belong to one editor even though a plugin installs once per process. A plugin listed
|
|
40
|
+
* twice keeps its first entry, the rule `installPlugins` uses, so the two cannot disagree.
|
|
41
41
|
*/
|
|
42
42
|
export function normalizePluginEntries(entries) {
|
|
43
43
|
const plugins = [];
|
|
@@ -56,22 +56,40 @@ export function normalizePluginEntries(entries) {
|
|
|
56
56
|
}
|
|
57
57
|
return { plugins, optionsByName };
|
|
58
58
|
}
|
|
59
|
+
/** One editor's options for a plugin: its defaults, then each defined field of the entry that
|
|
60
|
+
* `parseOptions` kept. A `parseOptions` throw propagates, so the caller decides who hears it. */
|
|
61
|
+
export function resolvePluginOptions(plugin, raw) {
|
|
62
|
+
const entry = raw === undefined ? {} : plugin.parseOptions ? plugin.parseOptions(raw) : raw;
|
|
63
|
+
return { ...plugin.defaults, ...definedFields(entry) };
|
|
64
|
+
}
|
|
65
|
+
export function installedPlugin(name) {
|
|
66
|
+
return installed.get(name);
|
|
67
|
+
}
|
|
59
68
|
export function isPluginInstalled(name) {
|
|
60
69
|
return installed.has(name);
|
|
61
70
|
}
|
|
62
71
|
export function currentInstallingPlugin() {
|
|
63
72
|
return installing;
|
|
64
73
|
}
|
|
65
|
-
|
|
66
|
-
|
|
74
|
+
/** An editor's `EditorContext` for the plugin an entry answers to; an entry no plugin owns gets
|
|
75
|
+
* the editor's base context (`''`). Undefined when no editor is wired. */
|
|
76
|
+
export function pluginEditorFor(lookup, owner) {
|
|
77
|
+
return lookup?.(owner ?? '');
|
|
67
78
|
}
|
|
68
|
-
|
|
69
|
-
|
|
79
|
+
/** Runs shared registrations a plugin's setup triggers as core ones, owned by no plugin, so every
|
|
80
|
+
* editor resolves them whichever plugin reached them first. */
|
|
81
|
+
export function registerAsCore(register) {
|
|
82
|
+
const outer = installing;
|
|
83
|
+
installing = null;
|
|
84
|
+
try {
|
|
85
|
+
register();
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
installing = outer;
|
|
89
|
+
}
|
|
70
90
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
export function owningPluginEditor(pluginEditor, kind) {
|
|
74
|
-
return pluginEditor?.(pluginKindOwner(kind) ?? '');
|
|
91
|
+
export function pluginInstallGeneration() {
|
|
92
|
+
return generation;
|
|
75
93
|
}
|
|
76
94
|
/** onEditor callbacks a plugin registered during setup, in registration order. */
|
|
77
95
|
export function onEditorCallbacks(pluginName) {
|
|
@@ -81,12 +99,13 @@ export function onEditorCallbacks(pluginName) {
|
|
|
81
99
|
export function installedPluginNames() {
|
|
82
100
|
return [...installed.keys()];
|
|
83
101
|
}
|
|
84
|
-
|
|
102
|
+
function __resetInstalledPluginsForTests() {
|
|
85
103
|
installed.clear();
|
|
86
104
|
failed.clear();
|
|
87
|
-
kindOwners.clear();
|
|
88
105
|
onEditorSubs.clear();
|
|
106
|
+
generation++;
|
|
89
107
|
}
|
|
108
|
+
enrollTestReset(__resetInstalledPluginsForTests);
|
|
90
109
|
// ── Internal ─────────────────────────────────────────────────────────────────
|
|
91
110
|
function installOne(plugin) {
|
|
92
111
|
installing = plugin.name;
|
|
@@ -105,17 +124,18 @@ function installOne(plugin) {
|
|
|
105
124
|
finally {
|
|
106
125
|
close();
|
|
107
126
|
installing = null;
|
|
127
|
+
generation++;
|
|
108
128
|
}
|
|
109
129
|
installed.set(plugin.name, plugin);
|
|
110
130
|
}
|
|
111
|
-
// onEditor
|
|
112
|
-
// past
|
|
131
|
+
// `onEditor` works during setup only: the context closes the moment setup returns, so a context
|
|
132
|
+
// kept past that throws instead of quietly registering into an install that is already over.
|
|
113
133
|
function makeSetupContext(pluginName) {
|
|
114
134
|
let open = true;
|
|
115
135
|
const ctx = {
|
|
116
136
|
onEditor(cb) {
|
|
117
137
|
if (!open) {
|
|
118
|
-
throw new Error(`onEditor: '${pluginName}' called onEditor after setup returned
|
|
138
|
+
throw new Error(`onEditor: '${pluginName}' called onEditor after setup returned; subscriptions are synchronous-only (the same boundary as kind attribution)`);
|
|
119
139
|
}
|
|
120
140
|
let list = onEditorSubs.get(pluginName);
|
|
121
141
|
if (!list)
|
|
@@ -125,8 +145,14 @@ function makeSetupContext(pluginName) {
|
|
|
125
145
|
};
|
|
126
146
|
return { ctx, close: () => (open = false) };
|
|
127
147
|
}
|
|
128
|
-
//
|
|
129
|
-
|
|
148
|
+
// An entry's field set to `undefined` keeps its default, the same as leaving it out.
|
|
149
|
+
function definedFields(value) {
|
|
150
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
151
|
+
return {};
|
|
152
|
+
return Object.fromEntries(Object.entries(value).filter(([, field]) => field !== undefined));
|
|
153
|
+
}
|
|
154
|
+
// `name@version` when the plugin carries a version, so a clash between two versions is
|
|
155
|
+
// unambiguous in the warning and in the two failure messages.
|
|
130
156
|
function pluginLabel(plugin) {
|
|
131
157
|
return plugin.version ? `${plugin.name}@${plugin.version}` : plugin.name;
|
|
132
158
|
}
|
|
@@ -1,21 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Declaring the names plugin kinds take, block and inline, and which plugin declared each: a
|
|
3
|
+
* kind's owner is the plugin whose setup declared it, and it decides where the kind resolves.
|
|
4
|
+
*/
|
|
1
5
|
import { type PluginBlockKind, type PluginInlineKind } from '../core/nodes';
|
|
2
6
|
export declare function declarePluginKind(name: string): PluginBlockKind;
|
|
7
|
+
/** The plugin whose setup declared `kind`; null for a built-in or a kind declared outside one. */
|
|
8
|
+
export declare function pluginKindOwner(kind: string): string | null;
|
|
3
9
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* register against a kind that doesn't exist.
|
|
10
|
+
* The branded kind for a declared name, without an unchecked cast. Throws for an undeclared name,
|
|
11
|
+
* so a typo cannot quietly register against a kind that does not exist.
|
|
7
12
|
*/
|
|
8
13
|
export declare function declaredPluginKind(name: string): PluginBlockKind;
|
|
9
14
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* throw.
|
|
15
|
+
* A module that may run twice (hot reload, a re-imported registration) asks this first instead of
|
|
16
|
+
* catching {@link declarePluginKind}'s or {@link declaredPluginKind}'s throw.
|
|
13
17
|
*/
|
|
14
18
|
export declare function isBlockKindDeclared(name: string): boolean;
|
|
15
|
-
export declare function __clearDeclaredPluginKindsForTests(): void;
|
|
16
19
|
export declare function declarePluginInlineKind(name: string): PluginInlineKind;
|
|
17
20
|
/** The inline mirror of {@link declaredPluginKind}; throws for an undeclared name. */
|
|
18
21
|
export declare function declaredPluginInlineKind(name: string): PluginInlineKind;
|
|
22
|
+
/** The inline mirror of {@link pluginKindOwner}. */
|
|
23
|
+
export declare function pluginInlineKindOwner(kind: string): string | null;
|
|
19
24
|
/** The inline mirror of {@link isBlockKindDeclared}. */
|
|
20
25
|
export declare function isInlineKindDeclared(name: string): boolean;
|
|
21
|
-
export declare function __clearDeclaredPluginInlineKindsForTests(): void;
|