@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,14 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* stylesheet
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* anything (jsdom, source mode); the presentation e2e battery is the real assertion there.
|
|
2
|
+
* Checks that the stylesheet and `cursor/widget-offset.ts` agree on which marker runs are hidden:
|
|
3
|
+
* the TypeScript side mirrors the stylesheet by hand, since `getComputedStyle` per keystroke is
|
|
4
|
+
* too slow. Once per mode change it compares, per marker family, the stylesheet, the DOM-to-offset
|
|
5
|
+
* traversal and the node-space rule both are stated over. Where no stylesheet hides anything
|
|
6
|
+
* (jsdom, source mode) it does nothing, and the presentation e2e battery asserts instead.
|
|
8
7
|
*/
|
|
9
8
|
import { familyHidesText, markerFamilyOf } from '../core/inline/visibility';
|
|
10
9
|
import { CONTENT_EMPTY_ATTR, isHiddenMarkerRoot, screenVisibilityOf } from '../cursor/widget-offset';
|
|
11
|
-
/** One case per stylesheet
|
|
10
|
+
/** One case per stylesheet branch the check mirrors, in both host-focus states. */
|
|
12
11
|
const CASES = ['md-marker', 'md-fence-line', 'md-ref-label'].flatMap((family) => [
|
|
13
12
|
{ name: family, family, focusedHost: false },
|
|
14
13
|
{ name: `${family} (focused host)`, family, focusedHost: true },
|
|
@@ -37,13 +36,13 @@ export function checkMarkerCssParity(editorRoot) {
|
|
|
37
36
|
const read = probes.map(({ probe, span, block }) => ({
|
|
38
37
|
name: probe.name,
|
|
39
38
|
predicate: isHiddenMarkerRoot(span, block),
|
|
40
|
-
// The
|
|
41
|
-
//
|
|
39
|
+
// The node-space rule covers the families and the markers-only case; the reveal
|
|
40
|
+
// branches belong to the traversal alone, so the two may differ on a focused host.
|
|
42
41
|
model: probe.focusedHost ? null : modelHides(span, screenVisibilityOf(block)),
|
|
43
42
|
css: getComputedStyle(span).display === 'none'
|
|
44
43
|
}));
|
|
45
|
-
//
|
|
46
|
-
// that applies no stylesheet
|
|
44
|
+
// Nothing came out hidden: either source mode, where nothing hides by design, or an
|
|
45
|
+
// environment that applies no stylesheet. There is nothing to compare against, so skip.
|
|
47
46
|
if (!read.some((entry) => entry.css))
|
|
48
47
|
return null;
|
|
49
48
|
const diverged = read.find((entry) => entry.predicate !== entry.css || (entry.model !== null && entry.model !== entry.css));
|
|
@@ -51,7 +50,7 @@ export function checkMarkerCssParity(editorRoot) {
|
|
|
51
50
|
return null;
|
|
52
51
|
return {
|
|
53
52
|
code: 'marker-css-parity',
|
|
54
|
-
message: `the hidden-run answers disagree about "${diverged.name}"
|
|
53
|
+
message: `the hidden-run answers disagree about "${diverged.name}": the families in core/inline/visibility.ts, the walk in cursor/widget-offset.ts and styles/editor.css moved apart`,
|
|
55
54
|
detail: read
|
|
56
55
|
};
|
|
57
56
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* G1.47: a windowed child measures into its own block list, the one whose direct child it is. A
|
|
3
|
+
* child that reached a list further up would write a height table that doesn't index it.
|
|
4
|
+
*/
|
|
5
|
+
import type { InvariantViolation } from '../assert';
|
|
6
|
+
export declare function checkMeasuresInOwnList(childPath: readonly number[], listPath: readonly number[]): InvariantViolation | null;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* G1.47: a windowed child measures into its own block list, the one whose direct child it is. A
|
|
3
|
+
* child that reached a list further up would write a height table that doesn't index it.
|
|
4
|
+
*/
|
|
5
|
+
export function checkMeasuresInOwnList(childPath, listPath) {
|
|
6
|
+
const own = childPath.length === listPath.length + 1 && listPath.every((at, i) => childPath[i] === at);
|
|
7
|
+
if (own)
|
|
8
|
+
return null;
|
|
9
|
+
return {
|
|
10
|
+
code: 'measures-in-own-list',
|
|
11
|
+
message: `the child at ${JSON.stringify(childPath)} registered with the list at ${JSON.stringify(listPath)}, which isn't its own: call \`useMeasuredChild\` before the component provides a list of its own`
|
|
12
|
+
};
|
|
13
|
+
}
|
|
@@ -1,44 +1,25 @@
|
|
|
1
1
|
import { type CstNode } from '../core/nodes';
|
|
2
2
|
import type { NodeView } from '../core/node-views';
|
|
3
|
+
import { type GrammarView } from '../schema/block-openers';
|
|
3
4
|
import type { InvariantViolation } from '../assert';
|
|
4
|
-
/**
|
|
5
|
-
*
|
|
6
|
-
* transiently childless mid-edit, so illegal fields are forbidden but none are required.
|
|
7
|
-
* Editor-level fields (`childIds`, `ownerEpoch`) are legal on every kind and unchecked;
|
|
8
|
-
* `mergeRole` is per-KIND, checked once at registration (G1.30).
|
|
9
|
-
*/
|
|
5
|
+
/** G1.5: a node's fields match its kind's category. It only forbids, never requires, since a
|
|
6
|
+
* container can be briefly childless mid-edit. */
|
|
10
7
|
export declare function checkCategoryFields(node: CstNode): InvariantViolation | null;
|
|
11
|
-
/**
|
|
12
|
-
*
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
*
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* G1.12 — the same staleness class as G1.1 for opaque containers, compared through the
|
|
21
|
-
* parse channel because a faithful parse may be non-canonical. When `raw` does not reparse
|
|
22
|
-
* to exactly one block of this kind, the outcome splits on recognizer existence: with one,
|
|
23
|
-
* the raw has genuinely drifted and fires; without one it cannot be validated at all, so
|
|
24
|
-
* it bails.
|
|
25
|
-
*/
|
|
26
|
-
export declare function checkOpaqueStaleRaw(node: CstNode): InvariantViolation | null;
|
|
27
|
-
/**
|
|
28
|
-
* G1.13 — a plugin-authored `rebuildRaw` is deterministic over the committed state, which
|
|
29
|
-
* is what G1.12's single reparse trusts. The two probes are compared to each other, never
|
|
30
|
-
* to `node.raw`, which a faithful non-canonical parse legally differs from.
|
|
31
|
-
*/
|
|
8
|
+
/** G1.1: a strip container's raw agrees with its children, `strip(raw) === serialize(children)`,
|
|
9
|
+
* reparsed in the editor's grammar and checked recursively. */
|
|
10
|
+
export declare function checkStaleRaw(node: CstNode, grammar: GrammarView): InvariantViolation | null;
|
|
11
|
+
/** G1.12: G1.1's staleness check for opaque containers, over children and every metadata key. Raw
|
|
12
|
+
* that stops reparsing to one block of this kind fires only when the parser can recognize it. */
|
|
13
|
+
export declare function checkOpaqueStaleRaw(node: CstNode, grammar: GrammarView): InvariantViolation | null;
|
|
14
|
+
/** G1.13: a plugin's `rebuildRaw` gives the same bytes every time for the same state, which G1.12's
|
|
15
|
+
* single reparse relies on. The two trial runs compare to each other, never to `node.raw`. */
|
|
32
16
|
export declare function checkOpaqueRebuildDeterminism(node: CstNode): InvariantViolation | null;
|
|
33
|
-
/**
|
|
34
|
-
*
|
|
35
|
-
* declared kind at child 0. Firing here means an op deleted or downgraded the chrome
|
|
36
|
-
* instead of clearing it.
|
|
37
|
-
*/
|
|
17
|
+
/** G1.14: a container declaring `reservedChrome` holds a leaf of that kind at child 0; a failure
|
|
18
|
+
* means an operation deleted or replaced that child instead of emptying it. */
|
|
38
19
|
export declare function checkReservedChromeSlot(node: CstNode): InvariantViolation | null;
|
|
39
|
-
/**
|
|
40
|
-
*
|
|
41
|
-
* array of primitives. Anything deeper would stay shared by reference with the snapshot
|
|
42
|
-
* and corrupt undo.
|
|
43
|
-
*/
|
|
20
|
+
/** G1.6: metadata survives undo's one-level copy, so every value is a primitive or an array of
|
|
21
|
+
* primitives; anything deeper would stay shared with the snapshot and corrupt undo. */
|
|
44
22
|
export declare function checkCloneSafeMetadata(node: NodeView): InvariantViolation | null;
|
|
23
|
+
/** G1.42: every list item under `node` holds the checkbox a reload of `node`'s own bytes gives it,
|
|
24
|
+
* and a to-do the reload's block kinds too. Dev only: it reparses the touched node. */
|
|
25
|
+
export declare function checkTaskMarkerSlot(node: NodeView, grammar: GrammarView): InvariantViolation | null;
|
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
import { makeBlockNode } from '../core/nodes';
|
|
2
|
-
import {
|
|
1
|
+
import { makeBlockNode, metadataOf } from '../core/nodes';
|
|
2
|
+
import { readBlocks } from '../core/parser';
|
|
3
3
|
import { concatChildren } from '../core/serializer';
|
|
4
|
-
import { getBlockKindDescriptor } from '../schema/block-kind-descriptor';
|
|
4
|
+
import { countsCells, getBlockKindDescriptor } from '../schema/block-kind-descriptor';
|
|
5
5
|
import { reservedChromeKindOf } from '../schema/reserved-chrome';
|
|
6
6
|
import { listRegisteredOpeners } from '../schema/block-openers';
|
|
7
7
|
import { isDirectiveKind } from '../core/directive/registry';
|
|
8
|
+
import { describeMetadataDivergence } from '../core/metadata-parity';
|
|
8
9
|
// ── G1.5: category ↔ field legality ──────────────────────────────────────────
|
|
9
|
-
/**
|
|
10
|
-
*
|
|
11
|
-
* transiently childless mid-edit, so illegal fields are forbidden but none are required.
|
|
12
|
-
* Editor-level fields (`childIds`, `ownerEpoch`) are legal on every kind and unchecked;
|
|
13
|
-
* `mergeRole` is per-KIND, checked once at registration (G1.30).
|
|
14
|
-
*/
|
|
10
|
+
/** G1.5: a node's fields match its kind's category. It only forbids, never requires, since a
|
|
11
|
+
* container can be briefly childless mid-edit. */
|
|
15
12
|
export function checkCategoryFields(node) {
|
|
16
13
|
const d = getBlockKindDescriptor(node.kind);
|
|
17
14
|
if (!d.isContainer && node.children !== undefined) {
|
|
@@ -23,9 +20,8 @@ export function checkCategoryFields(node) {
|
|
|
23
20
|
if (!d.isContainer && node.innerSuffix !== undefined) {
|
|
24
21
|
return illegalField(node.kind, 'innerSuffix', 'leaf carries container structural field');
|
|
25
22
|
}
|
|
26
|
-
// Only a body
|
|
27
|
-
//
|
|
28
|
-
// container's first line and a filled slot emits a line no parse can produce.
|
|
23
|
+
// Only a body under the container's own title line can strip a blank into `innerPrefix`
|
|
24
|
+
// (`core/parser.parseContainerBody`); elsewhere a filled field emits a line no parse produces.
|
|
29
25
|
if (d.bodyWrap?.afterOpenerLine !== true && node.innerPrefix) {
|
|
30
26
|
return illegalField(node.kind, 'innerPrefix', 'container declares no opener-line body wrap');
|
|
31
27
|
}
|
|
@@ -39,36 +35,49 @@ function illegalField(kind, field, why) {
|
|
|
39
35
|
};
|
|
40
36
|
}
|
|
41
37
|
// ── G1.1: container raw not stale ─────────────────────────────────────────────
|
|
42
|
-
/**
|
|
43
|
-
*
|
|
44
|
-
|
|
45
|
-
* stripped-inner: canonicalization-proof (a `rebuildRaw` comparison false-fires on any
|
|
46
|
-
* faithful-but-non-canonical parse) and tolerant of the editor's empty-paragraph
|
|
47
|
-
* placeholder, whose bytes match the parser's `innerSuffix`. Strip containers only, recursively.
|
|
48
|
-
*/
|
|
49
|
-
export function checkStaleRaw(node) {
|
|
38
|
+
/** G1.1: a strip container's raw agrees with its children, `strip(raw) === serialize(children)`,
|
|
39
|
+
* reparsed in the editor's grammar and checked recursively. */
|
|
40
|
+
export function checkStaleRaw(node, grammar) {
|
|
50
41
|
if (getBlockKindDescriptor(node.kind).containerContract !== 'strip')
|
|
51
42
|
return null;
|
|
52
|
-
// Document scope because the
|
|
53
|
-
// every legitimate position-scoped node at the top.
|
|
54
|
-
const correspondent = soleCorrespondent(
|
|
43
|
+
// Document scope because the check is handed no document position: fragment scope would
|
|
44
|
+
// fire on every legitimate position-scoped node at the top.
|
|
45
|
+
const correspondent = soleCorrespondent(readBlocks(node.raw, { grammar, scope: 'document' }).children, node);
|
|
55
46
|
if (!rawFaithful(correspondent, node)) {
|
|
56
47
|
return {
|
|
57
48
|
code: 'stale-container-raw',
|
|
58
|
-
// `raw`
|
|
59
|
-
//
|
|
49
|
+
// `raw` travels with the violation so a CI failure explains itself without a second
|
|
50
|
+
// run, clamped so a large container cannot flood the console.
|
|
60
51
|
message: `${node.kind} raw is stale relative to its children`,
|
|
61
52
|
detail: { kind: node.kind, raw: clampForDetail(node.raw) }
|
|
62
53
|
};
|
|
63
54
|
}
|
|
55
|
+
const metadata = stripMetadataDrift(correspondent, node);
|
|
56
|
+
if (metadata) {
|
|
57
|
+
return {
|
|
58
|
+
code: 'stale-container-raw',
|
|
59
|
+
message: `strip metadata is stale relative to its raw: ${metadata}`,
|
|
60
|
+
detail: { kind: node.kind, reason: 'metadata-diverges', raw: clampForDetail(node.raw) }
|
|
61
|
+
};
|
|
62
|
+
}
|
|
64
63
|
return null;
|
|
65
64
|
}
|
|
66
|
-
/**
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
65
|
+
/** The first strip container, this one or one below, whose metadata its reparse doesn't give. */
|
|
66
|
+
function stripMetadataDrift(reparsed, node) {
|
|
67
|
+
const found = describeMetadataDivergence(node, reparsed);
|
|
68
|
+
if (found)
|
|
69
|
+
return found;
|
|
70
|
+
const reparsedContainers = stripContainerChildren(reparsed);
|
|
71
|
+
const actualContainers = stripContainerChildren(node);
|
|
72
|
+
for (let i = 0; i < actualContainers.length; i++) {
|
|
73
|
+
const below = stripMetadataDrift(reparsedContainers[i], actualContainers[i]);
|
|
74
|
+
if (below)
|
|
75
|
+
return below;
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
/** The one block `node.raw` must reparse to, or undefined: bytes that parse as a following sibling
|
|
80
|
+
* leave the first block intact. A `listItem`'s raw reparses to a `list` wrapping it alone. */
|
|
72
81
|
function soleCorrespondent(blocks, node) {
|
|
73
82
|
if (blocks.length !== 1)
|
|
74
83
|
return undefined;
|
|
@@ -82,11 +91,8 @@ const MAX_RAW_IN_DETAIL = 200;
|
|
|
82
91
|
function clampForDetail(raw) {
|
|
83
92
|
return raw.length > MAX_RAW_IN_DETAIL ? raw.slice(0, MAX_RAW_IN_DETAIL) + '…' : raw;
|
|
84
93
|
}
|
|
85
|
-
/**
|
|
86
|
-
*
|
|
87
|
-
* parent-level byte concat can't see a child whose own raw↔children diverge while its raw
|
|
88
|
-
* still matches.
|
|
89
|
-
*/
|
|
94
|
+
/** Checks this level, then recurses: a child whose own raw and children disagree can still leave
|
|
95
|
+
* its parent's joined bytes matching. */
|
|
90
96
|
function rawFaithful(reparsed, node) {
|
|
91
97
|
if (!reparsed)
|
|
92
98
|
return false;
|
|
@@ -110,19 +116,14 @@ function stripContainerChildren(node) {
|
|
|
110
116
|
return (node.children ?? []).filter((c) => getBlockKindDescriptor(c.kind).containerContract === 'strip');
|
|
111
117
|
}
|
|
112
118
|
// ── G1.12: opaque container raw not stale ─────────────────────────────────────
|
|
113
|
-
/**
|
|
114
|
-
*
|
|
115
|
-
|
|
116
|
-
* to exactly one block of this kind, the outcome splits on recognizer existence: with one,
|
|
117
|
-
* the raw has genuinely drifted and fires; without one it cannot be validated at all, so
|
|
118
|
-
* it bails.
|
|
119
|
-
*/
|
|
120
|
-
export function checkOpaqueStaleRaw(node) {
|
|
119
|
+
/** G1.12: G1.1's staleness check for opaque containers, over children and every metadata key. Raw
|
|
120
|
+
* that stops reparsing to one block of this kind fires only when the parser can recognize it. */
|
|
121
|
+
export function checkOpaqueStaleRaw(node, grammar) {
|
|
121
122
|
if (getBlockKindDescriptor(node.kind).containerContract !== 'opaque')
|
|
122
123
|
return null;
|
|
123
|
-
// Document scope for the same reason as G1.1
|
|
124
|
-
//
|
|
125
|
-
const blocks =
|
|
124
|
+
// Document scope for the same reason as G1.1: the node arrives without its document
|
|
125
|
+
// position, and fragment scope would fire on a legitimate position-scoped node.
|
|
126
|
+
const blocks = readBlocks(node.raw, { grammar, scope: 'document' }).children;
|
|
126
127
|
if (blocks.length !== 1 || blocks[0].kind !== node.kind) {
|
|
127
128
|
if (!hasStandaloneRecognizer(node.kind))
|
|
128
129
|
return null;
|
|
@@ -139,22 +140,23 @@ export function checkOpaqueStaleRaw(node) {
|
|
|
139
140
|
detail: { kind: node.kind, raw: clampForDetail(node.raw) }
|
|
140
141
|
};
|
|
141
142
|
}
|
|
143
|
+
const metadata = describeMetadataDivergence(node, blocks[0]);
|
|
144
|
+
if (metadata) {
|
|
145
|
+
return {
|
|
146
|
+
code: 'opaque-stale-raw',
|
|
147
|
+
message: `opaque metadata is stale relative to its raw: ${metadata}`,
|
|
148
|
+
detail: { kind: node.kind, reason: 'metadata-diverges', raw: clampForDetail(node.raw) }
|
|
149
|
+
};
|
|
150
|
+
}
|
|
142
151
|
return null;
|
|
143
152
|
}
|
|
144
|
-
/**
|
|
145
|
-
*
|
|
146
|
-
* opener, or is a directive whose shared `:::` opener recognizes it. Probing openers alone
|
|
147
|
-
* would exempt the whole directive tier as unrecognizable.
|
|
148
|
-
*/
|
|
153
|
+
/** Whether `readBlocks(raw)` can produce this kind: it owns a block opener, or it is a directive
|
|
154
|
+
* the shared `:::` opener recognizes. */
|
|
149
155
|
function hasStandaloneRecognizer(kind) {
|
|
150
156
|
return listRegisteredOpeners().some((o) => o.kind === kind) || isDirectiveKind(kind);
|
|
151
157
|
}
|
|
152
|
-
/**
|
|
153
|
-
*
|
|
154
|
-
* line, so a reparse mints the chrome before any body trivia while the live tree may
|
|
155
|
-
* legally hold a transient blank after it. Compare the chrome raw positionally and the
|
|
156
|
-
* body bytes as a unit; a missing or displaced slot is G1.14's finding, not staleness.
|
|
157
|
-
*/
|
|
158
|
+
/** The same check with a reserved title child, whose bytes sit in the opener line: the live tree
|
|
159
|
+
* may hold a blank after it, so the title compares by position and the body as one unit. */
|
|
158
160
|
function opaqueRawFaithful(reparsed, node) {
|
|
159
161
|
const chromeKind = reservedChromeKindOf(node.kind);
|
|
160
162
|
const liveChrome = node.children?.[0];
|
|
@@ -166,15 +168,12 @@ function opaqueRawFaithful(reparsed, node) {
|
|
|
166
168
|
}
|
|
167
169
|
if (liveChrome.raw !== reparsedChrome.raw)
|
|
168
170
|
return false;
|
|
169
|
-
// Spreading the union widens `kind`, so
|
|
171
|
+
// Spreading the union widens `kind`, so rebuild through the node constructor.
|
|
170
172
|
return rawFaithful(makeBlockNode({ ...reparsed, children: reparsed.children.slice(1) }), makeBlockNode({ ...node, children: node.children.slice(1) }));
|
|
171
173
|
}
|
|
172
174
|
// ── G1.13: opaque rebuild determinism ─────────────────────────────────────────
|
|
173
|
-
/**
|
|
174
|
-
*
|
|
175
|
-
* is what G1.12's single reparse trusts. The two probes are compared to each other, never
|
|
176
|
-
* to `node.raw`, which a faithful non-canonical parse legally differs from.
|
|
177
|
-
*/
|
|
175
|
+
/** G1.13: a plugin's `rebuildRaw` gives the same bytes every time for the same state, which G1.12's
|
|
176
|
+
* single reparse relies on. The two trial runs compare to each other, never to `node.raw`. */
|
|
178
177
|
export function checkOpaqueRebuildDeterminism(node) {
|
|
179
178
|
const descriptor = getBlockKindDescriptor(node.kind);
|
|
180
179
|
if (descriptor.containerContract !== 'opaque' || !descriptor.rebuildRaw)
|
|
@@ -189,11 +188,8 @@ export function checkOpaqueRebuildDeterminism(node) {
|
|
|
189
188
|
detail: { kind: node.kind, first: clampForDetail(first), second: clampForDetail(second) }
|
|
190
189
|
};
|
|
191
190
|
}
|
|
192
|
-
/**
|
|
193
|
-
*
|
|
194
|
-
* array and metadata record, shielding the live node from a misbehaving rebuilder. Child
|
|
195
|
-
* NODES stay shared — defending those would cost a per-commit deep clone.
|
|
196
|
-
*/
|
|
191
|
+
/** `rebuildRaw` writes only `raw` (the editor re-reads metadata from it), so the trial copies the
|
|
192
|
+
* children array and metadata and shares the child nodes, since copying those is a deep clone. */
|
|
197
193
|
function probeRebuild(node, rebuildRaw) {
|
|
198
194
|
const probe = { ...node };
|
|
199
195
|
if (probe.children)
|
|
@@ -204,11 +200,8 @@ function probeRebuild(node, rebuildRaw) {
|
|
|
204
200
|
return probe.raw;
|
|
205
201
|
}
|
|
206
202
|
// ── G1.14: reserved-chrome slot ───────────────────────────────────────────────
|
|
207
|
-
/**
|
|
208
|
-
*
|
|
209
|
-
* declared kind at child 0. Firing here means an op deleted or downgraded the chrome
|
|
210
|
-
* instead of clearing it.
|
|
211
|
-
*/
|
|
203
|
+
/** G1.14: a container declaring `reservedChrome` holds a leaf of that kind at child 0; a failure
|
|
204
|
+
* means an operation deleted or replaced that child instead of emptying it. */
|
|
212
205
|
export function checkReservedChromeSlot(node) {
|
|
213
206
|
const chromeKind = reservedChromeKindOf(node.kind);
|
|
214
207
|
if (chromeKind === undefined)
|
|
@@ -223,11 +216,8 @@ export function checkReservedChromeSlot(node) {
|
|
|
223
216
|
};
|
|
224
217
|
}
|
|
225
218
|
// ── G1.6: clone-safe metadata ─────────────────────────────────────────────────
|
|
226
|
-
/**
|
|
227
|
-
*
|
|
228
|
-
* array of primitives. Anything deeper would stay shared by reference with the snapshot
|
|
229
|
-
* and corrupt undo.
|
|
230
|
-
*/
|
|
219
|
+
/** G1.6: metadata survives undo's one-level copy, so every value is a primitive or an array of
|
|
220
|
+
* primitives; anything deeper would stay shared with the snapshot and corrupt undo. */
|
|
231
221
|
export function checkCloneSafeMetadata(node) {
|
|
232
222
|
if (!node.metadata)
|
|
233
223
|
return null;
|
|
@@ -256,3 +246,57 @@ function isPrimitive(value) {
|
|
|
256
246
|
const t = typeof value;
|
|
257
247
|
return t !== 'object' && t !== 'function';
|
|
258
248
|
}
|
|
249
|
+
// ── G1.42: a list item says what its reload reads ─────────────────────────────
|
|
250
|
+
/** G1.42: every list item under `node` holds the checkbox a reload of `node`'s own bytes gives it,
|
|
251
|
+
* and a to-do the reload's block kinds too. Dev only: it reparses the touched node. */
|
|
252
|
+
export function checkTaskMarkerSlot(node, grammar) {
|
|
253
|
+
if (!holdsListItem(node))
|
|
254
|
+
return null;
|
|
255
|
+
const reread = readBlocks(node.raw, { grammar, scope: 'fragment' }).children;
|
|
256
|
+
const reloaded = node.kind === 'listItem' ? soleItem(reread) : reread.length === 1 ? reread[0] : null;
|
|
257
|
+
return reloaded ? itemDrift(node, reloaded) : null;
|
|
258
|
+
}
|
|
259
|
+
/** The first list item whose checkbox or first block kind differs between the two trees, walked
|
|
260
|
+
* together only where they have the same shape (other drift is another check's). */
|
|
261
|
+
function itemDrift(tree, reload) {
|
|
262
|
+
if (tree.kind === 'listItem' && reload.kind === 'listItem') {
|
|
263
|
+
const task = metadataOf(tree, 'listItem')?.taskItem === true;
|
|
264
|
+
const reloadTask = metadataOf(reload, 'listItem')?.taskItem === true;
|
|
265
|
+
const blocks = kindsOf(tree);
|
|
266
|
+
const reloadBlocks = kindsOf(reload);
|
|
267
|
+
// A to-do's blocks are compared whole; a plain item's block drift is no checkbox question.
|
|
268
|
+
if (task !== reloadTask || (task && blocks !== reloadBlocks)) {
|
|
269
|
+
return {
|
|
270
|
+
code: 'task-marker-slot',
|
|
271
|
+
message: `a list item holds ${task ? 'a' : 'no'} checkbox before [${blocks}], where its reload reads ${reloadTask ? 'a' : 'no'} checkbox before [${reloadBlocks}]`,
|
|
272
|
+
detail: { taskItem: task, blocks, reloadTaskItem: reloadTask, reloadBlocks, raw: tree.raw }
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
const children = tree.children ?? [];
|
|
277
|
+
const reloadChildren = reload.children ?? [];
|
|
278
|
+
if (countsCells(tree) || children.length !== reloadChildren.length)
|
|
279
|
+
return null;
|
|
280
|
+
for (let i = 0; i < children.length; i++) {
|
|
281
|
+
if (children[i].kind !== reloadChildren[i].kind)
|
|
282
|
+
continue;
|
|
283
|
+
const found = itemDrift(children[i], reloadChildren[i]);
|
|
284
|
+
if (found)
|
|
285
|
+
return found;
|
|
286
|
+
}
|
|
287
|
+
return null;
|
|
288
|
+
}
|
|
289
|
+
function kindsOf(node) {
|
|
290
|
+
return (node.children ?? []).map((child) => child.kind).join(', ');
|
|
291
|
+
}
|
|
292
|
+
function holdsListItem(node) {
|
|
293
|
+
if (node.kind === 'listItem')
|
|
294
|
+
return true;
|
|
295
|
+
if (countsCells(node))
|
|
296
|
+
return false;
|
|
297
|
+
return (node.children ?? []).some(holdsListItem);
|
|
298
|
+
}
|
|
299
|
+
function soleItem(blocks) {
|
|
300
|
+
const list = blocks.length === 1 && blocks[0].kind === 'list' ? blocks[0] : null;
|
|
301
|
+
return list?.children?.length === 1 ? list.children[0] : null;
|
|
302
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* G1.41: after a structural commit only the document's last line may lack a line ending, and it
|
|
3
|
+
* lacks one exactly when it did before the commit, unless it is blank.
|
|
4
|
+
*/
|
|
5
|
+
import type { DocumentView } from '../core/node-views';
|
|
6
|
+
import type { InvariantViolation } from '../assert';
|
|
7
|
+
export declare function checkLastLineKept(doc: DocumentView, wasOpen: boolean): InvariantViolation | null;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* G1.41: after a structural commit only the document's last line may lack a line ending, and it
|
|
3
|
+
* lacks one exactly when it did before the commit, unless it is blank.
|
|
4
|
+
*/
|
|
5
|
+
import { ownTrailingLineEnding } from '../core/lines';
|
|
6
|
+
import { holdsBlankLastLine } from '../tree-operations/open-tail';
|
|
7
|
+
import { getBlockKindDescriptor, isGridDescriptor, isGridKind } from '../schema/block-kind-descriptor';
|
|
8
|
+
export function checkLastLineKept(doc, wasOpen) {
|
|
9
|
+
const last = doc.children.at(-1);
|
|
10
|
+
if (!last)
|
|
11
|
+
return null;
|
|
12
|
+
const open = doc.suffix === '' && ownTrailingLineEnding(last.raw) === '';
|
|
13
|
+
const blank = doc.suffix !== '' || holdsBlankLastLine(last);
|
|
14
|
+
if (wasOpen && !open && !blank) {
|
|
15
|
+
return violation('the document had no final line break and gained one on a written line');
|
|
16
|
+
}
|
|
17
|
+
if (!wasOpen && open)
|
|
18
|
+
return violation('the document ended in a line break and lost it');
|
|
19
|
+
const glued = unendedAboveLastLine(doc.children, 'document');
|
|
20
|
+
return glued ? violation(`${glued} ends with no line break above the last line`) : null;
|
|
21
|
+
}
|
|
22
|
+
function violation(message) {
|
|
23
|
+
return { code: 'last-line-kept', message };
|
|
24
|
+
}
|
|
25
|
+
/** The first node on the last line's path, from the top down, whose sibling above it lacks an
|
|
26
|
+
* ending: those two lines read as one. */
|
|
27
|
+
function unendedAboveLastLine(children, trail) {
|
|
28
|
+
const last = children.at(-1);
|
|
29
|
+
if (!last)
|
|
30
|
+
return null;
|
|
31
|
+
const above = children.at(-2);
|
|
32
|
+
if (above && ownTrailingLineEnding(above.raw) === '')
|
|
33
|
+
return `${trail} > ${above.kind}`;
|
|
34
|
+
const next = holdsLastLineInChildren(last) ? last.children : undefined;
|
|
35
|
+
return next ? unendedAboveLastLine(next, `${trail} > ${last.kind}`) : null;
|
|
36
|
+
}
|
|
37
|
+
/** The last line runs through a strip container's last child and a grid's last row; an opaque
|
|
38
|
+
* body and a row's cells sit inside the container's own lines. */
|
|
39
|
+
function holdsLastLineInChildren(node) {
|
|
40
|
+
if (!node.children?.length)
|
|
41
|
+
return false;
|
|
42
|
+
const descriptor = getBlockKindDescriptor(node.kind);
|
|
43
|
+
return (descriptor.containerContract === 'strip' ||
|
|
44
|
+
(isGridDescriptor(descriptor) && isGridKind(node.children.at(-1).kind)));
|
|
45
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* G1.46: a caret or range the editor puts down leaves no widget selected whole. Taking the caret
|
|
3
|
+
* ends the widget through the selection state's clears; a clear that skipped it would leave the
|
|
4
|
+
* image looking selected while the keys go to the caret.
|
|
5
|
+
*/
|
|
6
|
+
import type { InvariantViolation } from '../assert';
|
|
7
|
+
import type { WidgetTarget } from '../selection/primitives';
|
|
8
|
+
export declare function checkPlacementEndsWidget(widget: WidgetTarget | null): InvariantViolation | null;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* G1.46: a caret or range the editor puts down leaves no widget selected whole. Taking the caret
|
|
3
|
+
* ends the widget through the selection state's clears; a clear that skipped it would leave the
|
|
4
|
+
* image looking selected while the keys go to the caret.
|
|
5
|
+
*/
|
|
6
|
+
export function checkPlacementEndsWidget(widget) {
|
|
7
|
+
if (widget === null)
|
|
8
|
+
return null;
|
|
9
|
+
return {
|
|
10
|
+
code: 'placement-ends-widget',
|
|
11
|
+
message: `a caret or range was put down while the widget at ${JSON.stringify(widget.paragraphPath)}:${widget.sourceStart} stayed selected: end it through the selection state's clear`
|
|
12
|
+
};
|
|
13
|
+
}
|