@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,101 +1,94 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The generic per-kind conformance battery
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `exempt`, never stubbed green. Runner-agnostic — plain `Error`s, no runner import.
|
|
2
|
+
* The generic per-kind conformance battery: registering a block kind enrolls it, one cell per
|
|
3
|
+
* `ClosureColumn` plus the raw-write cell, read from its descriptor and `conformanceFixture`. A
|
|
4
|
+
* cell runs only where headless code can observe what it checks; the rest is reported `boundary`
|
|
5
|
+
* or `exempt`, never stubbed green.
|
|
7
6
|
*/
|
|
8
|
-
import { displayLength, trimTrailingLineEnding } from '../core/lines';
|
|
7
|
+
import { displayLength, documentLineEnding, ownTrailingLineEnding, trimTrailingLineEnding } from '../core/lines';
|
|
9
8
|
import { parse } from '../core/parser';
|
|
10
9
|
import { serialize } from '../core/serializer';
|
|
11
|
-
import {
|
|
10
|
+
import { CLOSURE_COLUMNS } from '../schema/closure';
|
|
11
|
+
import { getBlockKindDescriptor, isGridDescriptor } from '../schema/block-kind-descriptor';
|
|
12
12
|
import { isMergeEligible } from '../schema/merge-rules';
|
|
13
13
|
import { isWholeBlockUnit } from '../schema/whole-block-unit';
|
|
14
14
|
import { collectCrossBlockText } from '../selection/clipboard-text';
|
|
15
|
+
import { coverRange, rangeCoverage } from '../selection/range-coverage';
|
|
15
16
|
import { createSelectionState } from '../selection/selection-state.svelte';
|
|
16
17
|
import { pathsEqual } from '../selection/path-math';
|
|
17
18
|
import { scanDocument } from '../search/document-scan';
|
|
18
19
|
import { compileMatcher } from '../search/matcher';
|
|
19
20
|
import { createBlockEditActions } from '../editor-actions/block-edit';
|
|
20
21
|
import { createUndoController } from '../editor-actions/commit/undo-controller';
|
|
21
|
-
import { assert, assertIs,
|
|
22
|
+
import { assert, assertIs, assertRebuildIsParseCanonical, fail, nodeAtPath, runCells, show, subjectNode, subjectPath } from './conformance-core';
|
|
23
|
+
import { installOwnRaw } from '../tree-operations/node-primitives';
|
|
24
|
+
import { defaultGrammarView } from '../schema/block-openers';
|
|
22
25
|
import { createHeadlessActions } from './headless-actions';
|
|
23
|
-
|
|
24
|
-
const CLOSURE_ORDER = [
|
|
25
|
-
'roundTrip',
|
|
26
|
-
'focus',
|
|
27
|
-
'mergeBackspace',
|
|
28
|
-
'selectionPaint',
|
|
29
|
-
'searchPaint',
|
|
30
|
-
'reorder',
|
|
31
|
-
'undo',
|
|
32
|
-
'clipboard',
|
|
33
|
-
'simOracle'
|
|
34
|
-
];
|
|
26
|
+
import { assertParseConverged } from './parse-convergence';
|
|
35
27
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
28
|
+
* Runs every headless closure cell for `kind`, or throws an `Error` naming each failed cell. A
|
|
29
|
+
* `conformanceFixture` that parses to no node of the kind fails the run outright.
|
|
38
30
|
*/
|
|
39
31
|
export async function runKindConformance(kind, profile = {}) {
|
|
40
32
|
const descriptor = getBlockKindDescriptor(kind);
|
|
41
|
-
const
|
|
42
|
-
const
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
const cell = descriptor.closure[column];
|
|
46
|
-
try {
|
|
33
|
+
const run = { kind, descriptor, parsed: buildContext(kind, descriptor) };
|
|
34
|
+
const columns = Object.keys(CLOSURE_COLUMNS);
|
|
35
|
+
const cells = [
|
|
36
|
+
...columns.map((column) => {
|
|
47
37
|
const custom = profile.cells?.[column]?.check;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
:
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
38
|
+
return {
|
|
39
|
+
cell: column,
|
|
40
|
+
run: custom
|
|
41
|
+
? () => runCustomCheck(column, custom, run)
|
|
42
|
+
: () => executeCell(column, descriptor.closure[column], run)
|
|
43
|
+
};
|
|
44
|
+
}),
|
|
45
|
+
{ cell: 'rawWrite', run: execRawWrite }
|
|
46
|
+
];
|
|
47
|
+
const reports = await runCells(cells, run, {
|
|
48
|
+
subject: kind,
|
|
49
|
+
heading: `kind conformance failed for "${kind}"`
|
|
50
|
+
});
|
|
51
|
+
return {
|
|
52
|
+
kind,
|
|
53
|
+
cells: reports.map((report) => report.cell === 'rawWrite'
|
|
54
|
+
? report
|
|
55
|
+
: { ...report, mode: descriptor.closure[report.cell].mode })
|
|
56
|
+
};
|
|
64
57
|
}
|
|
65
58
|
function buildContext(kind, descriptor) {
|
|
66
59
|
const fixture = descriptor.conformanceFixture;
|
|
67
60
|
if (fixture === undefined)
|
|
68
61
|
return null;
|
|
69
62
|
const doc = parse(fixture);
|
|
70
|
-
const nodePath =
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
// The one place every executor receives the fixture, so the position contract they drive
|
|
75
|
-
// `doc.children[0]` on (undo deletes it, the byte-slice copy sweeps from it) is settled here.
|
|
63
|
+
const nodePath = subjectPath(doc, kind, 'first', `kind conformance failed for "${kind}": conformanceFixture`);
|
|
64
|
+
// Every check receives the fixture here, so the rule they rely on (the node at
|
|
65
|
+
// `doc.children[0]`) is enforced once: undo deletes it and the byte-slice copy starts from it.
|
|
76
66
|
if (nodePath[0] !== 0) {
|
|
77
67
|
fail(`kind conformance failed for "${kind}": conformanceFixture must open with the "${kind}" ` +
|
|
78
68
|
`block (found under top-level index ${nodePath[0]}) — the kit drives the fixture's first ` +
|
|
79
69
|
`block and rides its own sentinel beside it`);
|
|
80
70
|
}
|
|
81
|
-
return { kind,
|
|
71
|
+
return { kind, fixture, doc, node: nodeAtPath(doc, nodePath), nodePath };
|
|
82
72
|
}
|
|
83
|
-
async function runCustomCheck(
|
|
84
|
-
|
|
85
|
-
//
|
|
86
|
-
|
|
73
|
+
async function runCustomCheck(column, check, { kind, descriptor, parsed }) {
|
|
74
|
+
const mode = descriptor.closure[column].mode;
|
|
75
|
+
// In any mode but `implemented` a custom check contradicts the declaration and would silence
|
|
76
|
+
// the check that mode would run, so changing a profiled cell's mode back fails.
|
|
77
|
+
if (mode !== 'implemented') {
|
|
87
78
|
fail(`profile supplies a "${column}" check for "${kind}", but its declared mode is ` +
|
|
88
|
-
`"${
|
|
79
|
+
`"${mode}" — a custom check is only valid on an 'implemented' cell`);
|
|
89
80
|
}
|
|
90
|
-
if (!
|
|
81
|
+
if (!parsed) {
|
|
91
82
|
fail(`profile supplies a "${column}" check but "${kind}" has no conformanceFixture to run it over`);
|
|
92
83
|
}
|
|
93
|
-
await check(
|
|
94
|
-
return
|
|
84
|
+
await check(parsed);
|
|
85
|
+
return 'profile custom check';
|
|
95
86
|
}
|
|
96
87
|
// ── Cell executors ─────────────────────────────────────────────────────────
|
|
97
|
-
|
|
98
|
-
|
|
88
|
+
// aragonite's own e2e sweep runs these for the kinds its repository registers, never a plugin's.
|
|
89
|
+
const BROWSER_ONLY = 'browser-only cell, for a browser test of your own';
|
|
90
|
+
const NO_FIXTURE = 'no conformanceFixture, so unchecked: declare one for the kit to parse';
|
|
91
|
+
async function executeCell(column, cell, { kind, descriptor, parsed: ctx }) {
|
|
99
92
|
switch (column) {
|
|
100
93
|
case 'roundTrip':
|
|
101
94
|
return execRoundTrip(kind, descriptor, ctx);
|
|
@@ -108,16 +101,16 @@ async function executeCell(column, cell, kind, descriptor, ctx) {
|
|
|
108
101
|
case 'clipboard':
|
|
109
102
|
return execClipboard(cell, ctx);
|
|
110
103
|
case 'focus':
|
|
111
|
-
return { status: 'boundary', detail: `native caret / focus policy
|
|
104
|
+
return { status: 'boundary', detail: `native caret / focus policy: ${BROWSER_ONLY}` };
|
|
112
105
|
case 'selectionPaint':
|
|
113
|
-
return { status: 'boundary', detail: `selection cover paint
|
|
106
|
+
return { status: 'boundary', detail: `selection cover paint: ${BROWSER_ONLY}` };
|
|
114
107
|
case 'reorder':
|
|
115
108
|
return execReorder(cell);
|
|
116
109
|
case 'simOracle':
|
|
117
110
|
return {
|
|
118
111
|
status: 'boundary',
|
|
119
|
-
detail: 'note-taking simulation under the corruption
|
|
120
|
-
'
|
|
112
|
+
detail: 'note-taking simulation under the corruption checks: run by aragonite over the ' +
|
|
113
|
+
'kinds its own repository registers, never by this runner'
|
|
121
114
|
};
|
|
122
115
|
}
|
|
123
116
|
}
|
|
@@ -125,28 +118,23 @@ function execRoundTrip(kind, descriptor, ctx) {
|
|
|
125
118
|
if (!ctx) {
|
|
126
119
|
return {
|
|
127
120
|
status: 'boundary',
|
|
128
|
-
detail: `
|
|
121
|
+
detail: `round-trip: ${NO_FIXTURE}`
|
|
129
122
|
};
|
|
130
123
|
}
|
|
131
124
|
assertIs(serialize(parse(ctx.fixture)), ctx.fixture, `serialize(parse(fixture)) round-trips for "${kind}"`);
|
|
132
125
|
if (descriptor.rebuildRaw) {
|
|
133
|
-
const first = rebuildRawOf(
|
|
134
|
-
const second = rebuildRawOf(
|
|
126
|
+
const first = rebuildRawOf(ctx, descriptor);
|
|
127
|
+
const second = rebuildRawOf(ctx, descriptor);
|
|
135
128
|
assertIs(first, second, `"${kind}" rebuildRaw is deterministic`);
|
|
136
|
-
assertRebuildIsParseCanonical(descriptor,
|
|
137
|
-
return
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
? 'byte round-trip + rebuildRaw determinism'
|
|
141
|
-
: 'byte round-trip + rebuildRaw parse-identity + determinism'
|
|
142
|
-
};
|
|
129
|
+
assertRebuildIsParseCanonical(descriptor, freshSubject(ctx), `"${kind}"`);
|
|
130
|
+
return isGridDescriptor(descriptor)
|
|
131
|
+
? 'byte round-trip + rebuildRaw determinism'
|
|
132
|
+
: 'byte round-trip + rebuildRaw parse-identity + determinism';
|
|
143
133
|
}
|
|
144
|
-
return
|
|
134
|
+
return 'byte round-trip';
|
|
145
135
|
}
|
|
146
|
-
/**
|
|
147
|
-
*
|
|
148
|
-
* (docs/design/editor.md); re-deriving it from `isMergeEligible` would be vacuous.
|
|
149
|
-
*/
|
|
136
|
+
/** An independent restatement of the merge-role table (`docs/design/editor.md` § Merge
|
|
137
|
+
* eligibility: roles, not pairs); derived from `isMergeEligible` it would test nothing. */
|
|
150
138
|
const MERGE_ROLE_EXPECTATION = {
|
|
151
139
|
prose: { currentIntoProse: true, prevForProse: true, self: true },
|
|
152
140
|
'prose-absorber': { currentIntoProse: false, prevForProse: true, self: false },
|
|
@@ -159,11 +147,11 @@ function execMergeBackspace(kind, role) {
|
|
|
159
147
|
assertIs(isMergeEligible('paragraph', kind), expected.currentIntoProse, `"${kind}" (${role}) Backspace-merges as the current block into a prose predecessor`);
|
|
160
148
|
assertIs(isMergeEligible(kind, 'paragraph'), expected.prevForProse, `"${kind}" (${role}) absorbs a following prose block`);
|
|
161
149
|
assertIs(isMergeEligible(kind, kind), expected.self, `"${kind}" (${role}) self-merge eligibility`);
|
|
162
|
-
return
|
|
150
|
+
return `mergeRole=${role} eligibility`;
|
|
163
151
|
}
|
|
164
152
|
function execSearchPaint(cell, ctx) {
|
|
165
153
|
if (cell.mode !== 'not-supported') {
|
|
166
|
-
return { status: 'boundary', detail: `search-match mark overlay
|
|
154
|
+
return { status: 'boundary', detail: `search-match mark overlay: ${BROWSER_ONLY}` };
|
|
167
155
|
}
|
|
168
156
|
if (!ctx)
|
|
169
157
|
return { status: 'exempt', detail: cell.reason };
|
|
@@ -173,19 +161,19 @@ function execSearchPaint(cell, ctx) {
|
|
|
173
161
|
const compiled = compileMatcher(needle, { caseSensitive: true, wholeWord: false, regex: false });
|
|
174
162
|
if (!compiled.ok)
|
|
175
163
|
return { status: 'exempt', detail: cell.reason };
|
|
176
|
-
//
|
|
177
|
-
//
|
|
164
|
+
// The needle is present in the raw, so no match can only mean the search deliberately
|
|
165
|
+
// skips this non-searchable kind.
|
|
178
166
|
assert(compiled.matcher.findAll(ctx.node.raw).length > 0, `needle "${needle}" is present in the "${ctx.kind}" raw`);
|
|
179
167
|
const hits = scanDocument(ctx.doc, compiled.matcher).filter((m) => pathsEqual(m.path, ctx.nodePath));
|
|
180
168
|
assertIs(hits.length, 0, `the document scan finds no match in the non-searchable "${ctx.kind}"`);
|
|
181
|
-
return
|
|
169
|
+
return 'document scan finds no match (degradation)';
|
|
182
170
|
}
|
|
183
171
|
function execReorder(cell) {
|
|
184
172
|
if (cell.mode === 'not-supported')
|
|
185
173
|
return { status: 'exempt', detail: cell.reason };
|
|
186
174
|
return {
|
|
187
175
|
status: 'boundary',
|
|
188
|
-
detail: `block reorder is an Alt+Arrow / drag gesture
|
|
176
|
+
detail: `block reorder is an Alt+Arrow / drag gesture: ${BROWSER_ONLY}`
|
|
189
177
|
};
|
|
190
178
|
}
|
|
191
179
|
async function execUndo(cell, ctx) {
|
|
@@ -194,25 +182,27 @@ async function execUndo(cell, ctx) {
|
|
|
194
182
|
if (cell.mode === 'implemented') {
|
|
195
183
|
return {
|
|
196
184
|
status: 'boundary',
|
|
197
|
-
detail: `kind-specific undo mechanism
|
|
185
|
+
detail: `kind-specific undo mechanism: supply a profile check or cover it in a browser test`
|
|
198
186
|
};
|
|
199
187
|
}
|
|
200
188
|
if (!ctx)
|
|
201
189
|
return {
|
|
202
190
|
status: 'boundary',
|
|
203
|
-
detail: `
|
|
191
|
+
detail: `undo depth: ${NO_FIXTURE}`
|
|
204
192
|
};
|
|
205
193
|
const doc = parse(ctx.fixture + '\n\nundo sentinel\n');
|
|
206
194
|
assert(doc.children.length > 1, `the kit's trailing sentinel parses beside the "${ctx.kind}" fixture rather than being ` +
|
|
207
195
|
`swallowed by it, so there is a second block to delete`);
|
|
208
|
-
|
|
196
|
+
// Block 0 is the one deleted, so the kind has to still sit under it with the sentinel added.
|
|
197
|
+
subjectPath(doc, ctx.kind, ctx.nodePath, 'conformanceFixture with the undo sentinel');
|
|
198
|
+
const { deps } = createHeadlessActions(doc);
|
|
209
199
|
const controller = createUndoController(deps);
|
|
210
200
|
const blockEdit = createBlockEditActions(deps, controller);
|
|
211
201
|
const before = deps.undoManager.getStacks().undo.length;
|
|
212
|
-
await blockEdit.deleteBlock(0);
|
|
202
|
+
await blockEdit.deleteBlock(0, 'keyless');
|
|
213
203
|
const after = deps.undoManager.getStacks().undo.length;
|
|
214
204
|
assertIs(after - before, 1, `one structural op pushes exactly one undo entry over the "${ctx.kind}" fixture`);
|
|
215
|
-
return
|
|
205
|
+
return 'one structural op → one undo entry';
|
|
216
206
|
}
|
|
217
207
|
function execClipboard(cell, ctx) {
|
|
218
208
|
if (cell.mode === 'not-supported')
|
|
@@ -220,45 +210,61 @@ function execClipboard(cell, ctx) {
|
|
|
220
210
|
if (cell.mode === 'implemented') {
|
|
221
211
|
return {
|
|
222
212
|
status: 'boundary',
|
|
223
|
-
detail: `kind-specific clipboard mechanism
|
|
213
|
+
detail: `kind-specific clipboard mechanism: supply a profile check or cover it in a browser test`
|
|
224
214
|
};
|
|
225
215
|
}
|
|
226
216
|
if (!ctx)
|
|
227
217
|
return {
|
|
228
218
|
status: 'boundary',
|
|
229
|
-
detail: `
|
|
219
|
+
detail: `copy: ${NO_FIXTURE}`
|
|
230
220
|
};
|
|
231
221
|
if (ctx.nodePath.length !== 1) {
|
|
232
222
|
return {
|
|
233
223
|
status: 'boundary',
|
|
234
|
-
detail: 'nested kind
|
|
224
|
+
detail: 'nested kind: copied as part of its container; the enclosing container cell covers its bytes'
|
|
235
225
|
};
|
|
236
226
|
}
|
|
237
227
|
checkCopyIsRawByteSlice(ctx.kind, ctx.fixture);
|
|
238
|
-
return
|
|
228
|
+
return 'copy is a raw byte slice (no synthesis)';
|
|
229
|
+
}
|
|
230
|
+
function execRawWrite({ kind, descriptor, parsed: ctx }) {
|
|
231
|
+
const hasTopLevelFixture = ctx !== null && ctx.nodePath.length === 1;
|
|
232
|
+
if (!descriptor.rawWrite) {
|
|
233
|
+
if (!hasTopLevelFixture) {
|
|
234
|
+
return {
|
|
235
|
+
status: 'exempt',
|
|
236
|
+
detail: 'declares no rawWrite and has no top-level conformanceFixture to cut'
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
checkClosingCutNeedsNoRule(kind, ctx.fixture);
|
|
240
|
+
return 'declares no rawWrite, and the closing line cut leaves the next block its own';
|
|
241
|
+
}
|
|
242
|
+
if (!hasTopLevelFixture) {
|
|
243
|
+
return {
|
|
244
|
+
status: 'boundary',
|
|
245
|
+
detail: 'declares rawWrite but has no top-level conformanceFixture to write over'
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
checkLeafRawWrite(kind, ctx.fixture);
|
|
249
|
+
return 'five writes, each idempotent, leaving the next block its own, caret map agreeing';
|
|
239
250
|
}
|
|
240
251
|
// ── Exported executors (direct-drive for regression tests) ───────────────────
|
|
241
252
|
const TRAILING_SENTINEL = '\n\nclipboard sentinel\n';
|
|
242
253
|
const LEADING_SENTINEL = 'clipboard lead\n\n';
|
|
243
|
-
/**
|
|
244
|
-
*
|
|
245
|
-
* kind-specific synthesis, at BOTH endpoint roles — the honest meaning of
|
|
246
|
-
* `clipboard: inherit-default`. Endpoints ride the real selection funnel, so the expectation is
|
|
247
|
-
* the contract, never a re-derivation of the slice under test. Fixture contract: `fixture`
|
|
248
|
-
* parses to `kind` at `children[0]`; the kit adds its sentinel block on the sweeping side.
|
|
249
|
-
*/
|
|
254
|
+
/** Asserts the default cross-block copy over `kind`'s fixture is a raw byte slice at both endpoint
|
|
255
|
+
* roles, which is what `clipboard: inherit-default` means; the fixture opens with `kind`. */
|
|
250
256
|
export function checkCopyIsRawByteSlice(kind, fixture) {
|
|
251
|
-
|
|
252
|
-
`
|
|
257
|
+
subjectNode(parse(fixture), kind, [0], `the copy fixture (a conformanceFixture must parse to its kind at children[0], and the kit ` +
|
|
258
|
+
`adds its own sentinel block on the sweeping side)`);
|
|
253
259
|
checkCopyFromKind(kind, fixture);
|
|
254
260
|
checkCopyIntoKind(kind, fixture);
|
|
255
261
|
}
|
|
256
|
-
/** The kind as the range
|
|
262
|
+
/** The kind as the start of the range: its tail, then the sentinel's head. */
|
|
257
263
|
function checkCopyFromKind(kind, fixture) {
|
|
258
264
|
const doc = parse(fixture + TRAILING_SENTINEL);
|
|
259
265
|
const lastIndex = doc.children.length - 1;
|
|
260
266
|
assert(lastIndex >= 1, 'fixture + sentinel yields a second block to copy across');
|
|
261
|
-
const kindNode = doc
|
|
267
|
+
const kindNode = subjectNode(doc, kind, [0], 'the copy fixture');
|
|
262
268
|
const sentinel = doc.children[lastIndex];
|
|
263
269
|
const startOffset = interiorOffset(kindNode);
|
|
264
270
|
const endOffset = displayLength(sentinel.raw);
|
|
@@ -269,13 +275,14 @@ function checkCopyFromKind(kind, fixture) {
|
|
|
269
275
|
sentinel.leadingTrivia +
|
|
270
276
|
sentinel.raw.slice(0, endOffset), `"${kind}" copy is a raw byte slice — no kind-specific synthesis`);
|
|
271
277
|
}
|
|
272
|
-
/** The kind as the range
|
|
278
|
+
/** The kind as the end of the range, the role a start-only check never exercises. */
|
|
273
279
|
function checkCopyIntoKind(kind, fixture) {
|
|
274
280
|
const doc = parse(LEADING_SENTINEL + fixture);
|
|
275
|
-
|
|
281
|
+
// Counted from the end, since a fixture may carry blocks after its kind.
|
|
282
|
+
const kindIndex = doc.children.length - parse(fixture).children.length;
|
|
276
283
|
assert(kindIndex >= 1, 'sentinel + fixture yields a block to copy across from');
|
|
277
284
|
const sentinel = doc.children[0];
|
|
278
|
-
const kindNode = doc
|
|
285
|
+
const kindNode = subjectNode(doc, kind, [kindIndex], 'the copy fixture after the sentinel');
|
|
279
286
|
const startOffset = interiorOffset(sentinel);
|
|
280
287
|
const copied = copyThroughFunnel(doc, { path: [0], offset: startOffset }, { path: [kindIndex], offset: interiorOffset(kindNode) });
|
|
281
288
|
const head = isWholeBlockUnit(kindNode)
|
|
@@ -293,26 +300,27 @@ function bytesBetween(children, from, to) {
|
|
|
293
300
|
.map((node) => node.leadingTrivia + node.raw)
|
|
294
301
|
.join('');
|
|
295
302
|
}
|
|
296
|
-
/**
|
|
297
|
-
*
|
|
298
|
-
* gesture's would, so a kind whose offsets the funnel rewrites is copied as the editor copies it.
|
|
299
|
-
*/
|
|
303
|
+
/** Copies through the production selection code, so a kind whose endpoints `SelectionState`
|
|
304
|
+
* normalizes is copied the way the editor copies it. */
|
|
300
305
|
function copyThroughFunnel(doc, anchor, focus) {
|
|
301
306
|
const selection = createSelectionState({ getDoc: () => doc });
|
|
302
307
|
selection.enterCrossBlock(anchor, focus);
|
|
303
308
|
const { start, end } = selection;
|
|
304
309
|
if (!start || !end)
|
|
305
310
|
fail('the selection funnel refused the cross-block endpoint pair');
|
|
306
|
-
return collectCrossBlockText(doc, start, end);
|
|
311
|
+
return collectCrossBlockText(doc, rangeCoverage(doc, coverRange(doc, start, end)));
|
|
307
312
|
}
|
|
308
313
|
/** An offset strictly inside the block, so a kind that snaps its endpoints is seen doing it. */
|
|
309
314
|
function interiorOffset(node) {
|
|
310
315
|
return displayLength(node.raw) > 1 ? 1 : 0;
|
|
311
316
|
}
|
|
312
317
|
// ── Internal helpers ─────────────────────────────────────────────────────────
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
318
|
+
/** The kind's node in a fresh parse of the fixture, for a check that writes to it. */
|
|
319
|
+
function freshSubject(ctx) {
|
|
320
|
+
return subjectNode(parse(ctx.fixture), ctx.kind, ctx.nodePath, 'conformanceFixture');
|
|
321
|
+
}
|
|
322
|
+
function rebuildRawOf(ctx, descriptor) {
|
|
323
|
+
const node = freshSubject(ctx);
|
|
316
324
|
descriptor.rebuildRaw(node);
|
|
317
325
|
return node.raw;
|
|
318
326
|
}
|
|
@@ -323,3 +331,82 @@ function firstVisibleChar(raw) {
|
|
|
323
331
|
}
|
|
324
332
|
return null;
|
|
325
333
|
}
|
|
334
|
+
const RAW_WRITE_SENTINEL = 'raw write sentinel\n';
|
|
335
|
+
function fixtureLines(fixture) {
|
|
336
|
+
const ending = ownTrailingLineEnding(fixture) || '\n';
|
|
337
|
+
const lines = trimTrailingLineEnding(fixture).split(ending);
|
|
338
|
+
return { ending, lines, closingCut: lines.slice(0, -1).join(ending) + ending };
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* For a kind with no `rawWrite`: the fixture with its closing line cut must not absorb
|
|
342
|
+
* the block after it, or a range delete over the closer turns the document below into its body.
|
|
343
|
+
*/
|
|
344
|
+
function checkClosingCutNeedsNoRule(kind, fixture) {
|
|
345
|
+
const { ending, closingCut } = fixtureLines(fixture);
|
|
346
|
+
const following = parse(closingCut + ending + RAW_WRITE_SENTINEL).children.at(-1);
|
|
347
|
+
if (following?.raw === RAW_WRITE_SENTINEL)
|
|
348
|
+
return;
|
|
349
|
+
fail(`"${kind}" declares no rawWrite, and the closing line cut (${show(closingCut)}) ` +
|
|
350
|
+
`swallows the next block (${show(RAW_WRITE_SENTINEL)}): declare rawWrite to ` +
|
|
351
|
+
`put the closer back`);
|
|
352
|
+
}
|
|
353
|
+
/** Drives five writes over `kind`'s fixture through its `rawWrite` rule; each result must be a
|
|
354
|
+
* fixed point of the rule, leave the next block its own, and have an agreeing caret map. */
|
|
355
|
+
export function checkLeafRawWrite(kind, fixture, rule = getBlockKindDescriptor(kind).rawWrite) {
|
|
356
|
+
if (!rule)
|
|
357
|
+
fail(`"${kind}" declares no rawWrite to drive`);
|
|
358
|
+
const { ending, lines, closingCut } = fixtureLines(fixture);
|
|
359
|
+
const writes = [
|
|
360
|
+
['the closing line cut', closingCut, lines.length > 2],
|
|
361
|
+
['everything past the first line cut', lines[0] + ending, false],
|
|
362
|
+
['an empty write', '', false]
|
|
363
|
+
];
|
|
364
|
+
if (lines.length > 1) {
|
|
365
|
+
const closer = lines[lines.length - 1];
|
|
366
|
+
const closerInBody = [lines[0], closer, ...lines.slice(1)];
|
|
367
|
+
writes.push(['the first line cut', lines.slice(1).join(ending) + ending, false], ['the closing line copied into the body', closerInBody.join(ending) + ending, false]);
|
|
368
|
+
}
|
|
369
|
+
for (const [label, written, keepsKind] of writes) {
|
|
370
|
+
const doc = parse(fixture + ending + RAW_WRITE_SENTINEL);
|
|
371
|
+
const node = subjectNode(doc, kind, [0], 'the rawWrite fixture');
|
|
372
|
+
const ctx = { node, mode: 'literal', lineEnding: documentLineEnding(doc) };
|
|
373
|
+
const legal = rule.normalize(written, ctx);
|
|
374
|
+
assertIs(rule.normalize(legal, ctx), legal, `"${kind}" rule is idempotent on ${label}`);
|
|
375
|
+
checkCaretMap(`"${kind}" caret map on ${label}`, written, legal, (offset) => rule.mapOffset(written, offset, ctx));
|
|
376
|
+
const following = parse(legal + ending + RAW_WRITE_SENTINEL).children.at(-1);
|
|
377
|
+
assertIs(following?.raw, RAW_WRITE_SENTINEL, `"${kind}" after ${label} (${show(legal)}) leaves the next block its own`);
|
|
378
|
+
if (!keepsKind)
|
|
379
|
+
continue;
|
|
380
|
+
const reparsed = parse(legal).children;
|
|
381
|
+
assertIs(reparsed[0]?.kind, kind, `"${kind}" stays its kind after ${label}`);
|
|
382
|
+
installOwnRaw(node, legal, defaultGrammarView);
|
|
383
|
+
assertParseConverged(doc, `"${kind}" written in place after ${label}`);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
/** A caret map agrees with its rule when offsets stay ordered and in range, one before every
|
|
387
|
+
* change stays, and one after every change moves by the length the rule added or dropped. */
|
|
388
|
+
function checkCaretMap(label, written, legal, mapOffset) {
|
|
389
|
+
const shorter = Math.min(written.length, legal.length);
|
|
390
|
+
let prefix = 0;
|
|
391
|
+
while (prefix < shorter && written[prefix] === legal[prefix])
|
|
392
|
+
prefix++;
|
|
393
|
+
let suffix = 0;
|
|
394
|
+
while (suffix < shorter - prefix &&
|
|
395
|
+
written[written.length - 1 - suffix] === legal[legal.length - 1 - suffix]) {
|
|
396
|
+
suffix++;
|
|
397
|
+
}
|
|
398
|
+
const grown = legal.length - written.length;
|
|
399
|
+
let previous = 0;
|
|
400
|
+
for (let offset = 0; offset <= written.length; offset++) {
|
|
401
|
+
const mapped = mapOffset(offset);
|
|
402
|
+
const at = `${label} at ${offset} (${show(written)} to ${show(legal)})`;
|
|
403
|
+
assert(mapped >= previous && mapped <= legal.length, `${at}: ${mapped} is out of order`);
|
|
404
|
+
previous = mapped;
|
|
405
|
+
if (written === legal || offset < prefix) {
|
|
406
|
+
assertIs(mapped, offset, `${at} stays, since the rule changed nothing before it`);
|
|
407
|
+
}
|
|
408
|
+
else if (offset > written.length - suffix) {
|
|
409
|
+
assertIs(mapped, offset + grown, `${at} moves by what the rule changed before it`);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The reading a kit gives the editor parts it builds without mounting an editor: every installed
|
|
3
|
+
* plugin's syntax, no link-reference definitions, and a mode the caller may set.
|
|
4
|
+
*/
|
|
5
|
+
import { type PresentationMode } from '../presentation-mode';
|
|
6
|
+
import type { Reading } from '../schema/reading';
|
|
7
|
+
export declare function kitReading(mode?: () => PresentationMode): Reading;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The reading a kit gives the editor parts it builds without mounting an editor: every installed
|
|
3
|
+
* plugin's syntax, no link-reference definitions, and a mode the caller may set.
|
|
4
|
+
*/
|
|
5
|
+
import { hidesDelimitersAtCaret } from '../presentation-mode';
|
|
6
|
+
import { defaultGrammarView } from '../schema/block-openers';
|
|
7
|
+
export function kitReading(mode = () => 'source') {
|
|
8
|
+
return {
|
|
9
|
+
grammar: defaultGrammarView,
|
|
10
|
+
resolver: undefined,
|
|
11
|
+
resolverSignature: '',
|
|
12
|
+
resolverEpoch: 0,
|
|
13
|
+
mode,
|
|
14
|
+
hidesDelimitersAtCaret: () => hidesDelimitersAtCaret(mode())
|
|
15
|
+
};
|
|
16
|
+
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* on a block being mounted; jsdom reports a zero viewport and mounts only the first few.
|
|
2
|
+
* Fills the jsdom gaps a mounted editor hits (`ResizeObserver`, `scrollIntoView`, a range's
|
|
3
|
+
* rects) where they are missing; call once before the first mount. jsdom's viewport has no
|
|
4
|
+
* height, so only a few blocks mount: keep fixture documents small when a test asserts a block is
|
|
5
|
+
* mounted.
|
|
7
6
|
*/
|
|
8
7
|
export declare function installEditorDomStubsForTests(): void;
|
|
@@ -4,11 +4,10 @@ class NoopResizeObserver {
|
|
|
4
4
|
disconnect() { }
|
|
5
5
|
}
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* on a block being mounted; jsdom reports a zero viewport and mounts only the first few.
|
|
7
|
+
* Fills the jsdom gaps a mounted editor hits (`ResizeObserver`, `scrollIntoView`, a range's
|
|
8
|
+
* rects) where they are missing; call once before the first mount. jsdom's viewport has no
|
|
9
|
+
* height, so only a few blocks mount: keep fixture documents small when a test asserts a block is
|
|
10
|
+
* mounted.
|
|
12
11
|
*/
|
|
13
12
|
export function installEditorDomStubsForTests() {
|
|
14
13
|
const globals = globalThis;
|
|
@@ -16,4 +15,8 @@ export function installEditorDomStubsForTests() {
|
|
|
16
15
|
if (typeof Element !== 'undefined' && !Element.prototype.scrollIntoView) {
|
|
17
16
|
Element.prototype.scrollIntoView = () => { };
|
|
18
17
|
}
|
|
18
|
+
if (typeof Range !== 'undefined' && !Range.prototype.getClientRects) {
|
|
19
|
+
Range.prototype.getClientRects = () => [];
|
|
20
|
+
Range.prototype.getBoundingClientRect = () => new DOMRect();
|
|
21
|
+
}
|
|
19
22
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* The reparse uses the ambient grammar, so an unregistered kind reads as a false divergence.
|
|
2
|
+
* Compares the live tree's structure (kinds, children, every metadata key) with a fresh parse
|
|
3
|
+
* of its own bytes; a byte round-trip would pass trivially, since `serialize(parse(s)) === s` for
|
|
4
|
+
* every input. `parseConverges` and `describeConvergence` take the editor's `grammar` when it
|
|
5
|
+
* has one; `assertParseConverged` reads with the default grammar.
|
|
7
6
|
*/
|
|
8
7
|
import type { Document } from '../core/nodes';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
import type { GrammarView } from '../schema/block-openers';
|
|
9
|
+
/** True when the live tree matches a fresh parse of its own serialization, structurally. */
|
|
10
|
+
export declare function parseConverges(doc: Document, grammar?: GrammarView): boolean;
|
|
11
|
+
/** The first structural difference from `parse(serialize(doc))`, or null when they match. */
|
|
12
|
+
export declare function describeConvergence(doc: Document, grammar?: GrammarView): string | null;
|
|
13
|
+
/** Asserts the two match, throwing a plain `Error` on a difference so any runner can use it. */
|
|
14
14
|
export declare function assertParseConverged(doc: Document, label?: string): void;
|