@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,15 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Rebuilds container `raw` up a node's ancestors, looking up `descriptor.rebuildRaw`, so a
|
|
3
|
+
* plugin container joins in by declaring one. A container's metadata follows its rebuilt bytes
|
|
4
|
+
* (`docs/design/editor.md` § The container `raw` contract).
|
|
4
5
|
*/
|
|
6
|
+
import { describeMetadataDivergence } from '../core/metadata-parity';
|
|
7
|
+
import { readBlocks } from '../core/parser';
|
|
8
|
+
import { ownTrailingLineEnding, trimTrailingLineEnding } from '../core/lines';
|
|
9
|
+
import { assignChildIdsDeep, idsAcrossReread } from '../block-id';
|
|
10
|
+
import { perfEnabled, recordContainerKindReparse, recordOpenerLineRead } from '../perf/instruments';
|
|
5
11
|
import { tryGetBlockKindDescriptor } from './block-kind-descriptor';
|
|
12
|
+
import { isBlockOpenerRegistered } from './block-openers';
|
|
6
13
|
/**
|
|
7
|
-
* Rebuild `raw` for every container along `path`, innermost first. The leaf at the
|
|
8
|
-
*
|
|
14
|
+
* Rebuild `raw` for every container along `path`, innermost first. The leaf at the end of `path`
|
|
15
|
+
* is not rebuilt: callers change its raw before calling. An empty path rebuilds `root`.
|
|
9
16
|
*/
|
|
10
|
-
export function rebuildAncestryRaw(root, path) {
|
|
17
|
+
export function rebuildAncestryRaw(root, path, grammar) {
|
|
11
18
|
if (path.length === 0) {
|
|
12
|
-
rebuildContainerRaw(root);
|
|
19
|
+
rebuildContainerRaw(root, grammar);
|
|
13
20
|
return;
|
|
14
21
|
}
|
|
15
22
|
const containers = [];
|
|
@@ -19,25 +26,147 @@ export function rebuildAncestryRaw(root, path) {
|
|
|
19
26
|
containers.push(current);
|
|
20
27
|
}
|
|
21
28
|
for (let i = containers.length - 1; i >= 0; i--) {
|
|
22
|
-
rebuildContainerRaw(containers[i]);
|
|
29
|
+
rebuildContainerRaw(containers[i], grammar);
|
|
23
30
|
}
|
|
24
|
-
rebuildContainerRaw(root);
|
|
31
|
+
rebuildContainerRaw(root, grammar);
|
|
25
32
|
}
|
|
26
33
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
34
|
+
* Calls the `rebuildRaw` on the kind's descriptor, then re-reads the metadata a moved outer line
|
|
35
|
+
* may carry; throws on a leaf.
|
|
29
36
|
*/
|
|
30
|
-
export function rebuildContainerRaw(node) {
|
|
37
|
+
export function rebuildContainerRaw(node, grammar) {
|
|
31
38
|
const rebuild = tryGetBlockKindDescriptor(node.kind)?.rebuildRaw;
|
|
32
39
|
if (!rebuild) {
|
|
33
|
-
throw new Error(`rebuildContainerRaw: kind "${node.kind}" has no rebuildRaw
|
|
40
|
+
throw new Error(`rebuildContainerRaw: kind "${node.kind}" has no rebuildRaw; only container kinds are valid`);
|
|
34
41
|
}
|
|
42
|
+
const rawBefore = node.raw;
|
|
35
43
|
rebuild(node);
|
|
44
|
+
const reading = followBytes(node, rawBefore, grammar);
|
|
45
|
+
// No position to put a new node at, so the node takes its reading in place.
|
|
46
|
+
if (reading.outcome === 'reread')
|
|
47
|
+
takeReread(node, reading.node);
|
|
36
48
|
}
|
|
37
49
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
50
|
+
* The chain rebuild's step, which re-derives kind and metadata itself once it knows whether an
|
|
51
|
+
* outer line moved; a rebuild outside the chain uses {@link rebuildContainerRaw}.
|
|
40
52
|
*/
|
|
41
53
|
export function rebuildContainerRawIfContainer(node, changed) {
|
|
42
54
|
tryGetBlockKindDescriptor(node.kind)?.rebuildRaw?.(node, changed);
|
|
43
55
|
}
|
|
56
|
+
const KEPT = { outcome: 'kept' };
|
|
57
|
+
/** Reads `node`'s bytes as a reload would after a rewrite from `rawBefore`, taking in place the
|
|
58
|
+
* metadata they give it: the one place that knows which lines a kind's metadata comes from. */
|
|
59
|
+
export function followBytes(node, rawBefore, grammar, options = {}) {
|
|
60
|
+
const contract = tryGetBlockKindDescriptor(node.kind)?.containerContract;
|
|
61
|
+
if (options.whole)
|
|
62
|
+
return rereadWhole(node, contract, grammar);
|
|
63
|
+
const openerMoved = firstLine(rawBefore) !== firstLine(node.raw);
|
|
64
|
+
// A closing line's ending counts: an opaque container can keep it in metadata.
|
|
65
|
+
const closerMoved = closingLine(rawBefore) !== closingLine(node.raw);
|
|
66
|
+
if (contract === 'opaque' && (closerMoved || (openerMoved && !options.titleRowOnly))) {
|
|
67
|
+
return rereadWhole(node, contract, grammar);
|
|
68
|
+
}
|
|
69
|
+
if (!openerMoved)
|
|
70
|
+
return KEPT;
|
|
71
|
+
const strip = contract === 'strip';
|
|
72
|
+
if (!strip && !isBlockOpenerRegistered(node.kind))
|
|
73
|
+
return KEPT;
|
|
74
|
+
const opened = soleNodeOfKind(readOpenerLine(node.raw, grammar), node.kind);
|
|
75
|
+
// A strip container's metadata is all on its first line, so that line alone re-reads it.
|
|
76
|
+
if (opened) {
|
|
77
|
+
const same = !strip || describeMetadataDivergence(node, opened) === null;
|
|
78
|
+
return same ? KEPT : rereadWhole(node, contract, grammar);
|
|
79
|
+
}
|
|
80
|
+
// A first line that opens another kind changes the reading, for a kind whose opener says so.
|
|
81
|
+
return isBlockOpenerRegistered(node.kind) ? rereadWhole(node, contract, grammar) : KEPT;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* What the grammar opens `line` as, read in isolation: asked of the opener registry and never
|
|
85
|
+
* a kind list, so a kind registered later is covered the day it registers.
|
|
86
|
+
*/
|
|
87
|
+
export function lineOpensAs(line, grammar) {
|
|
88
|
+
return readBlocks(`${line}\n`, { grammar, scope: 'fragment' }).children[0]?.kind ?? 'paragraph';
|
|
89
|
+
}
|
|
90
|
+
const closingLine = (raw) => lastLine(raw) + ownTrailingLineEnding(raw);
|
|
91
|
+
function readOpenerLine(raw, grammar) {
|
|
92
|
+
if (perfEnabled())
|
|
93
|
+
recordOpenerLineRead();
|
|
94
|
+
return readBlocks(`${firstLine(raw)}\n`, { grammar, scope: 'fragment' }).children;
|
|
95
|
+
}
|
|
96
|
+
/** The one node of `kind` that `blocks` are, or the sole child of the one block wrapping it (a
|
|
97
|
+
* list item reads back inside a list), or null. */
|
|
98
|
+
function soleNodeOfKind(blocks, kind) {
|
|
99
|
+
if (blocks.length !== 1)
|
|
100
|
+
return null;
|
|
101
|
+
if (blocks[0].kind === kind)
|
|
102
|
+
return blocks[0];
|
|
103
|
+
const wrapped = blocks[0].children;
|
|
104
|
+
return wrapped?.length === 1 && wrapped[0].kind === kind ? wrapped[0] : null;
|
|
105
|
+
}
|
|
106
|
+
function rereadWhole(node, contract, grammar) {
|
|
107
|
+
const blocks = parseContainerRaw(node.raw, grammar);
|
|
108
|
+
const reread = soleNodeOfKind(blocks, node.kind);
|
|
109
|
+
if (!reread)
|
|
110
|
+
return { outcome: 'diverged', blocks };
|
|
111
|
+
// A strip container's metadata is its line prefix, which decides how every child line reads.
|
|
112
|
+
if (contract === 'strip' && !sameChildren(node, reread))
|
|
113
|
+
return { outcome: 'reread', node: reread };
|
|
114
|
+
takeMetadata(node, reread);
|
|
115
|
+
return KEPT;
|
|
116
|
+
}
|
|
117
|
+
function sameChildren(live, reread) {
|
|
118
|
+
const children = live.children ?? [];
|
|
119
|
+
const rereadChildren = reread.children ?? [];
|
|
120
|
+
return ((live.innerSuffix ?? '') === (reread.innerSuffix ?? '') &&
|
|
121
|
+
children.length === rereadChildren.length &&
|
|
122
|
+
children.every((child, i) => {
|
|
123
|
+
const other = rereadChildren[i];
|
|
124
|
+
return (child.kind === other.kind &&
|
|
125
|
+
child.leadingTrivia === other.leadingTrivia &&
|
|
126
|
+
child.raw === other.raw);
|
|
127
|
+
}));
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Takes the metadata a parse of `node`'s own bytes derived, so the next rebuild reads what a
|
|
131
|
+
* reload would. False when the parse isn't one block of the node's kind, and nothing is taken.
|
|
132
|
+
*/
|
|
133
|
+
export function adoptParsedMetadata(node, parsed) {
|
|
134
|
+
if (parsed.length !== 1 || parsed[0].kind !== node.kind)
|
|
135
|
+
return false;
|
|
136
|
+
takeMetadata(node, parsed[0]);
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
function takeMetadata(node, reread) {
|
|
140
|
+
// Unchanged metadata keeps its object, since every reader of it re-runs when the object changes.
|
|
141
|
+
if (describeMetadataDivergence(node, reread) === null)
|
|
142
|
+
return;
|
|
143
|
+
// A fresh object from the parse, so no undo entry shares it.
|
|
144
|
+
node.metadata = reread.metadata;
|
|
145
|
+
}
|
|
146
|
+
/** A node's reading taken into the node itself: a child the re-read left alone keeps its id. */
|
|
147
|
+
function takeReread(node, reread) {
|
|
148
|
+
const children = reread.children ?? [];
|
|
149
|
+
node.childIds = idsAcrossReread(node.children ?? [], node.childIds, children);
|
|
150
|
+
node.metadata = reread.metadata;
|
|
151
|
+
node.children = children;
|
|
152
|
+
node.innerPrefix = reread.innerPrefix;
|
|
153
|
+
node.innerSuffix = reread.innerSuffix;
|
|
154
|
+
node.childSpans = undefined;
|
|
155
|
+
assignChildIdsDeep(node);
|
|
156
|
+
}
|
|
157
|
+
/** One parse of a container's own bytes, the cost the kind and metadata re-derive pay. */
|
|
158
|
+
export function parseContainerRaw(raw, grammar) {
|
|
159
|
+
if (perfEnabled())
|
|
160
|
+
recordContainerKindReparse(raw.length);
|
|
161
|
+
return readBlocks(raw, { grammar, scope: 'fragment' }).children;
|
|
162
|
+
}
|
|
163
|
+
export function firstLine(raw) {
|
|
164
|
+
const nl = raw.indexOf('\n');
|
|
165
|
+
return nl < 0 ? raw : raw.slice(0, nl);
|
|
166
|
+
}
|
|
167
|
+
/** The container's closing line: its last line carrying bytes, without the ending. */
|
|
168
|
+
export function lastLine(raw) {
|
|
169
|
+
const body = trimTrailingLineEnding(raw);
|
|
170
|
+
const nl = body.lastIndexOf('\n');
|
|
171
|
+
return nl < 0 ? body : body.slice(nl + 1);
|
|
172
|
+
}
|
|
@@ -1,32 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Per-container-kind raw rebuilders.
|
|
3
|
-
* the built-in registrations can declare rebuildRaw directly: this file
|
|
4
|
-
*
|
|
5
|
-
* live in child-spans.ts
|
|
2
|
+
* Per-container-kind raw rebuilders. Kept apart from `container-raw.ts`, which walks a node's
|
|
3
|
+
* ancestors, so the built-in registrations can declare `rebuildRaw` directly: this file imports
|
|
4
|
+
* no registry, that walk must, and one file holding both would cycle. The two shared rebuild
|
|
5
|
+
* shapes live in `child-spans.ts`; each kind here adds only its own per-line syntax.
|
|
6
6
|
*/
|
|
7
7
|
import type { CstNode } from '../core/nodes';
|
|
8
|
+
import type { NodeView } from '../core/node-views';
|
|
9
|
+
import { type LineEnding } from '../core/lines';
|
|
8
10
|
import { type ChildRawChange } from './child-spans';
|
|
9
11
|
/** Rebuild a blockquote's `raw`: `> ` on content lines, `>` on blank lines. */
|
|
10
12
|
export declare function rebuildBlockquoteRaw(node: CstNode, changed?: ChildRawChange): void;
|
|
11
13
|
/**
|
|
12
|
-
* Rebuild a list item's `raw`: marker on the first line, indentation on continuations.
|
|
13
|
-
* lines stay
|
|
14
|
+
* Rebuild a list item's `raw`: marker on the first line, indentation on continuations. Separator
|
|
15
|
+
* lines stay bare, but a blank line at the body's end is indented to stay in the item.
|
|
14
16
|
*/
|
|
15
17
|
export declare function rebuildListItemRaw(node: CstNode, changed?: ChildRawChange): void;
|
|
16
18
|
export declare function rebuildListRaw(node: CstNode, changed?: ChildRawChange): void;
|
|
17
|
-
/** `| c0 | c1 | ... |` plus the row's own ending (single-space padding).
|
|
19
|
+
/** `| c0 | c1 | ... |` plus the row's own ending (single-space padding). The table's rebuild,
|
|
20
|
+
* which writes the table's bytes, gives every row the table's ending. */
|
|
18
21
|
export declare function rebuildTableRowRaw(node: CstNode): void;
|
|
22
|
+
/** The ending a table's lines take: a table spans its header and delimiter lines at least, so its
|
|
23
|
+
* bytes hold the document's ending. */
|
|
24
|
+
export declare function tableLineEnding(table: NodeView): LineEnding;
|
|
19
25
|
/**
|
|
20
|
-
* The
|
|
21
|
-
*
|
|
22
|
-
* because `rebuildRaw`'s second parameter is the changed-child hint.
|
|
26
|
+
* The row's bytes with the table's line ending, since a row a structural edit created has none of
|
|
27
|
+
* its own. The surplus cells, which GFM does not render, follow the rendered ones.
|
|
23
28
|
*/
|
|
24
29
|
export declare function writeTableRow(node: CstNode, lineEnding: string): void;
|
|
25
30
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* landing half-padded. The table's own ending drives every emitted line (G4.20): a row minted by
|
|
29
|
-
* a structural op has no authored ending, so per-row detection would strand it on LF in a CRLF
|
|
30
|
-
* table.
|
|
31
|
+
* Every row is rebuilt, so the first structural edit normalizes the whole table's padding. The last
|
|
32
|
+
* line of a table that ends the document with no line ending stays open, whichever row holds it.
|
|
31
33
|
*/
|
|
32
34
|
export declare function rebuildTableRaw(node: CstNode): void;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Per-container-kind raw rebuilders.
|
|
3
|
-
* the built-in registrations can declare rebuildRaw directly: this file
|
|
4
|
-
*
|
|
5
|
-
* live in child-spans.ts
|
|
2
|
+
* Per-container-kind raw rebuilders. Kept apart from `container-raw.ts`, which walks a node's
|
|
3
|
+
* ancestors, so the built-in registrations can declare `rebuildRaw` directly: this file imports
|
|
4
|
+
* no registry, that walk must, and one file holding both would cycle. The two shared rebuild
|
|
5
|
+
* shapes live in `child-spans.ts`; each kind here adds only its own per-line syntax.
|
|
6
6
|
*/
|
|
7
7
|
import { metadataOf } from '../core/nodes';
|
|
8
|
-
import {
|
|
8
|
+
import { firstLineEnding, ownTrailingLineEnding } from '../core/lines';
|
|
9
9
|
import { rebuildConcatRaw, rebuildStripRaw } from './child-spans';
|
|
10
10
|
// ── Blockquote ───────────────────────────────────────────────────────────────
|
|
11
11
|
/** Rebuild a blockquote's `raw`: `> ` on content lines, `>` on blank lines. */
|
|
@@ -17,8 +17,8 @@ export function rebuildBlockquoteRaw(node, changed) {
|
|
|
17
17
|
const quoteLine = (text) => (text === '' ? '>' : '> ' + text);
|
|
18
18
|
// ── List ─────────────────────────────────────────────────────────────────────
|
|
19
19
|
/**
|
|
20
|
-
* Rebuild a list item's `raw`: marker on the first line, indentation on continuations.
|
|
21
|
-
* lines stay
|
|
20
|
+
* Rebuild a list item's `raw`: marker on the first line, indentation on continuations. Separator
|
|
21
|
+
* lines stay bare, but a blank line at the body's end is indented to stay in the item.
|
|
22
22
|
*/
|
|
23
23
|
export function rebuildListItemRaw(node, changed) {
|
|
24
24
|
if (!node.children || !node.metadata)
|
|
@@ -27,10 +27,10 @@ export function rebuildListItemRaw(node, changed) {
|
|
|
27
27
|
const marker = meta.marker ?? '- ';
|
|
28
28
|
const taskMarker = meta.taskMarker ?? '';
|
|
29
29
|
const indent = ' '.repeat(marker.length);
|
|
30
|
-
rebuildStripRaw(node, (text, first) => {
|
|
30
|
+
rebuildStripRaw(node, (text, first, trailingBlank) => {
|
|
31
31
|
if (first)
|
|
32
32
|
return marker + taskMarker + text;
|
|
33
|
-
return text === '' ? '' : indent + text;
|
|
33
|
+
return text === '' && !trailingBlank ? '' : indent + text;
|
|
34
34
|
}, changed);
|
|
35
35
|
}
|
|
36
36
|
export function rebuildListRaw(node, changed) {
|
|
@@ -39,39 +39,47 @@ export function rebuildListRaw(node, changed) {
|
|
|
39
39
|
rebuildConcatRaw(node, changed);
|
|
40
40
|
}
|
|
41
41
|
// ── Table ────────────────────────────────────────────────────────────────────
|
|
42
|
-
/** `| c0 | c1 | ... |` plus the row's own ending (single-space padding).
|
|
42
|
+
/** `| c0 | c1 | ... |` plus the row's own ending (single-space padding). The table's rebuild,
|
|
43
|
+
* which writes the table's bytes, gives every row the table's ending. */
|
|
43
44
|
export function rebuildTableRowRaw(node) {
|
|
44
|
-
writeTableRow(node,
|
|
45
|
+
writeTableRow(node, ownTrailingLineEnding(node.raw));
|
|
46
|
+
}
|
|
47
|
+
/** The ending a table's lines take: a table spans its header and delimiter lines at least, so its
|
|
48
|
+
* bytes hold the document's ending. */
|
|
49
|
+
export function tableLineEnding(table) {
|
|
50
|
+
return firstLineEnding(table.raw) ?? '\n';
|
|
45
51
|
}
|
|
46
52
|
/**
|
|
47
|
-
* The
|
|
48
|
-
*
|
|
49
|
-
* because `rebuildRaw`'s second parameter is the changed-child hint.
|
|
53
|
+
* The row's bytes with the table's line ending, since a row a structural edit created has none of
|
|
54
|
+
* its own. The surplus cells, which GFM does not render, follow the rendered ones.
|
|
50
55
|
*/
|
|
51
56
|
export function writeTableRow(node, lineEnding) {
|
|
52
57
|
if (!node.children)
|
|
53
58
|
return;
|
|
54
|
-
const
|
|
59
|
+
const surplus = node.metadata ? (metadataOf(node, 'tableRow').surplusCells ?? []) : [];
|
|
60
|
+
const cells = [...node.children.map((c) => c.raw), ...surplus];
|
|
55
61
|
node.raw = '| ' + cells.join(' | ') + ' |' + lineEnding;
|
|
56
62
|
}
|
|
57
63
|
/**
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
* landing half-padded. The table's own ending drives every emitted line (G4.20): a row minted by
|
|
61
|
-
* a structural op has no authored ending, so per-row detection would strand it on LF in a CRLF
|
|
62
|
-
* table.
|
|
64
|
+
* Every row is rebuilt, so the first structural edit normalizes the whole table's padding. The last
|
|
65
|
+
* line of a table that ends the document with no line ending stays open, whichever row holds it.
|
|
63
66
|
*/
|
|
64
67
|
export function rebuildTableRaw(node) {
|
|
65
68
|
if (!node.children)
|
|
66
69
|
return;
|
|
67
70
|
const meta = metadataOf(node, 'table');
|
|
68
|
-
const lineEnding =
|
|
71
|
+
const lineEnding = tableLineEnding(node);
|
|
72
|
+
const openTail = ownTrailingLineEnding(node.raw) === '';
|
|
69
73
|
for (const row of node.children)
|
|
70
74
|
writeTableRow(row, lineEnding);
|
|
71
75
|
const headerRow = node.children[0];
|
|
72
76
|
const bodyRows = node.children.slice(1);
|
|
77
|
+
const lastBodyRow = bodyRows.at(-1);
|
|
78
|
+
if (openTail && lastBodyRow)
|
|
79
|
+
writeTableRow(lastBodyRow, '');
|
|
73
80
|
const delimiterCells = meta.alignments.map(formatAlignmentCell).join(' | ');
|
|
74
|
-
const
|
|
81
|
+
const delimiterEnding = openTail && !lastBodyRow ? '' : lineEnding;
|
|
82
|
+
const delimiterLine = '| ' + delimiterCells + ' |' + delimiterEnding;
|
|
75
83
|
let raw = (headerRow?.raw ?? '') + delimiterLine;
|
|
76
84
|
for (const r of bodyRows)
|
|
77
85
|
raw += r.raw;
|
|
@@ -1,31 +1,43 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* What a right-click on a block of a given kind offers. A kind's own providers come first, then
|
|
3
|
+
* the ones registered for every kind (`'*'`: the editor's copy, replace and remove rows).
|
|
4
|
+
* Providers run on every open, so they see the block as it is. The defaults register at startup;
|
|
5
|
+
* a plugin registers through the public barrel.
|
|
6
6
|
*/
|
|
7
7
|
export declare const EVERY_KIND = "*";
|
|
8
8
|
import type { NodeView } from '../core/node-views';
|
|
9
|
+
import type { LineEnding } from '../core/lines';
|
|
10
|
+
import type { PluginActivation } from './plugin-activation';
|
|
9
11
|
export interface BlockActionContext {
|
|
10
12
|
node: NodeView;
|
|
11
13
|
/** The block's path from the document root. Top-level blocks only, for now. */
|
|
12
14
|
path: number[];
|
|
13
|
-
/** Remove the block. */
|
|
14
15
|
deleteBlock(): Promise<void>;
|
|
15
|
-
/** Replace the block's bytes wholesale
|
|
16
|
+
/** Replace the block's bytes wholesale as one undo entry of its own, every line break written
|
|
17
|
+
* in the document's ending; the result reparses to whatever those bytes are. */
|
|
16
18
|
replaceRaw(raw: string): Promise<void>;
|
|
19
|
+
/** The document's line ending, for a line rebuilt from the block's own bytes. */
|
|
20
|
+
lineEnding: LineEnding;
|
|
21
|
+
/** Pasted text through the paste transforms of the plugins this editor lists, as a paste
|
|
22
|
+
* into the editor would see it. */
|
|
23
|
+
transformPaste(text: string): string;
|
|
17
24
|
}
|
|
18
25
|
export interface BlockContextAction {
|
|
19
26
|
id: string;
|
|
20
27
|
label: string;
|
|
21
|
-
/**
|
|
28
|
+
/** An icon name the menu knows (`src/lib/menu-icons.ts`); absent draws none. */
|
|
22
29
|
icon?: string;
|
|
23
30
|
danger?: boolean;
|
|
24
31
|
run(ctx: BlockActionContext): void | Promise<void>;
|
|
25
32
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
/** `noun` is what the menu calls the block ("code block", "image"), for a row's label. */
|
|
34
|
+
export type BlockContextActionProvider = (node: NodeView, path: number[], noun: string) => BlockContextAction[];
|
|
35
|
+
/**
|
|
36
|
+
* Add a provider for `kind`, or every kind with `EVERY_KIND`, under a `name` unique to that kind
|
|
37
|
+
* (a taken name throws). A plugin's rows show only in the editors that list the plugin.
|
|
38
|
+
*/
|
|
39
|
+
export declare function registerBlockContextActions(kind: string, name: string, provider: BlockContextActionProvider): void;
|
|
40
|
+
/** The editor's own rows: a provider the test reset keeps, owned by no plugin even when a
|
|
41
|
+
* plugin's setup is what first reaches it. */
|
|
42
|
+
export declare function registerBuiltinBlockContextActions(kind: string, name: string, provider: BlockContextActionProvider): void;
|
|
43
|
+
export declare function blockContextActionsFor(node: NodeView, path: number[], activation: PluginActivation, noun: string): BlockContextAction[];
|
|
@@ -1,23 +1,38 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* What a right-click on a block of a given kind offers. A kind's own providers come first, then
|
|
3
|
+
* the ones registered for every kind (`'*'`: the editor's copy, replace and remove rows).
|
|
4
|
+
* Providers run on every open, so they see the block as it is. The defaults register at startup;
|
|
5
|
+
* a plugin registers through the public barrel.
|
|
6
6
|
*/
|
|
7
7
|
export const EVERY_KIND = '*';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
import { createPluginRegistry } from './plugin-registry';
|
|
9
|
+
const providers = createPluginRegistry({
|
|
10
|
+
label: 'registerBlockContextActions',
|
|
11
|
+
isBuiltin: () => false
|
|
12
|
+
});
|
|
13
|
+
/**
|
|
14
|
+
* Add a provider for `kind`, or every kind with `EVERY_KIND`, under a `name` unique to that kind
|
|
15
|
+
* (a taken name throws). A plugin's rows show only in the editors that list the plugin.
|
|
16
|
+
*/
|
|
17
|
+
export function registerBlockContextActions(kind, name, provider) {
|
|
18
|
+
providers.register(providerKey(kind, name), { kind, provider }, providerConflict(kind, name));
|
|
19
|
+
}
|
|
20
|
+
/** The editor's own rows: a provider the test reset keeps, owned by no plugin even when a
|
|
21
|
+
* plugin's setup is what first reaches it. */
|
|
22
|
+
export function registerBuiltinBlockContextActions(kind, name, provider) {
|
|
23
|
+
providers.registerCore(providerKey(kind, name), { kind, provider }, providerConflict(kind, name));
|
|
24
|
+
}
|
|
25
|
+
export function blockContextActionsFor(node, path, activation, noun) {
|
|
26
|
+
const active = providers.entries(activation).map(([, entry]) => entry);
|
|
27
|
+
return [
|
|
28
|
+
...active.filter((entry) => entry.kind === node.kind),
|
|
29
|
+
...active.filter((entry) => entry.kind === EVERY_KIND)
|
|
30
|
+
].flatMap(({ provider }) => provider(node, path, noun));
|
|
14
31
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
return [...own, ...every].flatMap((provider) => provider(node, path));
|
|
32
|
+
// ── Internal ─────────────────────────────────────────────────────────────────
|
|
33
|
+
function providerKey(kind, name) {
|
|
34
|
+
return `${kind} ${name}`;
|
|
19
35
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
providers.clear();
|
|
36
|
+
function providerConflict(kind, name) {
|
|
37
|
+
return `registerBlockContextActions: "${name}" is already registered for "${kind}". Providers are register-once.`;
|
|
23
38
|
}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* `register` runs
|
|
2
|
+
* The one-block plugin shortcut: declare and describe a kind, then attach its component, so a
|
|
3
|
+
* single-kind plugin does not have to wrap `definePlugin` itself and get the setup order right. A
|
|
4
|
+
* plugin with several kinds uses `definePlugin` directly. `kind` is the plain declared name,
|
|
5
|
+
* branded after `register` runs: `declaredPluginKind` throws for a name not yet declared.
|
|
6
6
|
*/
|
|
7
7
|
import type { Component } from 'svelte';
|
|
8
8
|
import { type EditorPlugin } from './plugin-install';
|
|
9
9
|
import type { BlockComponentExports, BlockComponentProps } from '../block-component';
|
|
10
|
-
export declare function definePluginBlock<P extends Partial<BlockComponentProps> & Record<string, unknown>>(config: {
|
|
10
|
+
export declare function definePluginBlock<P extends Partial<BlockComponentProps> & Record<string, unknown>, Options extends object = Record<never, never>>(config: {
|
|
11
11
|
name: string;
|
|
12
12
|
kind: string;
|
|
13
13
|
component: Component<P, BlockComponentExports>;
|
|
14
14
|
register: () => void;
|
|
15
|
-
|
|
15
|
+
defaults?: Options;
|
|
16
|
+
parseOptions?(raw: unknown): Partial<Options>;
|
|
17
|
+
}): EditorPlugin<Options>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* `register` runs
|
|
2
|
+
* The one-block plugin shortcut: declare and describe a kind, then attach its component, so a
|
|
3
|
+
* single-kind plugin does not have to wrap `definePlugin` itself and get the setup order right. A
|
|
4
|
+
* plugin with several kinds uses `definePlugin` directly. `kind` is the plain declared name,
|
|
5
|
+
* branded after `register` runs: `declaredPluginKind` throws for a name not yet declared.
|
|
6
6
|
*/
|
|
7
7
|
import { definePlugin } from './plugin-install';
|
|
8
8
|
import { declaredPluginKind } from './plugin-kind';
|
|
@@ -10,6 +10,8 @@ import { registerBlockComponent, defineBlockComponent } from './block-component-
|
|
|
10
10
|
export function definePluginBlock(config) {
|
|
11
11
|
return definePlugin({
|
|
12
12
|
name: config.name,
|
|
13
|
+
defaults: config.defaults,
|
|
14
|
+
parseOptions: config.parseOptions,
|
|
13
15
|
setup() {
|
|
14
16
|
config.register();
|
|
15
17
|
registerBlockComponent(declaredPluginKind(config.kind), defineBlockComponent(config.component));
|
|
@@ -1,43 +1,56 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
3
|
-
* write
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* fence shape, which is why the pass takes a node. An authored open fence is exempt.
|
|
2
|
+
* The rule for writing a fenced block's bytes, declared on the kind as `rawWrite`: it restores or
|
|
3
|
+
* drops fence lines a write broke, grows the marker runs past a body line that would close them,
|
|
4
|
+
* and keeps backticks out of a backtick fence's info string, moving the caret with every byte. A
|
|
5
|
+
* fence the user is still typing (open, `authored`) is left alone.
|
|
7
6
|
*/
|
|
8
7
|
import type { NodeView } from '../core/node-views';
|
|
8
|
+
import type { WriteContext, WriteRule } from './block-kind-descriptor';
|
|
9
|
+
import { type LineEnding } from '../core/lines';
|
|
9
10
|
export interface FenceShape {
|
|
10
11
|
marker: '`' | '~';
|
|
11
|
-
/** The block's own run length
|
|
12
|
+
/** The block's own marker-run length. A literal write re-reads it off the written opener. */
|
|
12
13
|
length: number;
|
|
13
14
|
closed: boolean;
|
|
14
15
|
}
|
|
15
16
|
/** Whether the written bytes are the user authoring the block's syntax, or content. */
|
|
16
|
-
export type FenceWriteMode = '
|
|
17
|
+
export type FenceWriteMode = WriteContext['mode'];
|
|
17
18
|
export interface FenceWriteInput {
|
|
18
|
-
/** Display text about to be committed
|
|
19
|
+
/** Display text about to be committed: raw without its trailing line ending. */
|
|
19
20
|
display: string;
|
|
20
21
|
/** Caret offset in `display`, mapped onto the reconciled bytes on the way out. */
|
|
21
22
|
caret: number;
|
|
22
23
|
fence: FenceShape;
|
|
23
24
|
mode: FenceWriteMode;
|
|
25
|
+
/** The line ending a restored closer line takes: the block's own. */
|
|
26
|
+
ending: LineEnding;
|
|
24
27
|
}
|
|
25
28
|
export interface FenceWriteResult {
|
|
26
29
|
display: string;
|
|
27
30
|
caret: number;
|
|
28
31
|
}
|
|
29
32
|
export declare function fenceShapeOf(node: NodeView): FenceShape;
|
|
30
|
-
|
|
33
|
+
/** The fence write rule for a kind whose fence shape `shapeOf` reads off the block. */
|
|
34
|
+
export declare function fenceRawWrite(shapeOf: (node: NodeView) => FenceShape): WriteRule;
|
|
35
|
+
/** The built-in code block's rule, sized by its parsed metadata. */
|
|
36
|
+
export declare const fencedCodeWrite: WriteRule;
|
|
37
|
+
/**
|
|
38
|
+
* The shape of a fenced block that keeps no fence metadata, read off its own opener line. A
|
|
39
|
+
* plugin kind declares its rule as `fenceRawWrite(fenceShapeOfRaw)`.
|
|
40
|
+
*/
|
|
41
|
+
export declare function fenceShapeOfRaw(node: NodeView): FenceShape;
|
|
31
42
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* typing the block's own syntax. The fence lines reconcile first, so ESCALATE measures a
|
|
35
|
-
* body that ends where the closer does.
|
|
43
|
+
* The display text of a fenced block made legal, the caret carried along. The fence lines are
|
|
44
|
+
* fixed before the runs grow, so growing measures a body that ends where the closer does.
|
|
36
45
|
*/
|
|
37
|
-
export declare function
|
|
46
|
+
export declare function reconcileFenceWrite(input: FenceWriteInput): FenceWriteResult;
|
|
38
47
|
/**
|
|
39
|
-
* The bytes with `info` written onto the
|
|
40
|
-
*
|
|
41
|
-
* line 0 does not read as this block's opener at all.
|
|
48
|
+
* The bytes with `info` written onto the opener line, everything else byte-identical. Null when
|
|
49
|
+
* line 0 does not read as this block's opener.
|
|
42
50
|
*/
|
|
43
51
|
export declare function writeFenceInfo(display: string, info: string, fence: FenceShape): string | null;
|
|
52
|
+
/**
|
|
53
|
+
* `info` less what an info string may not hold: a line break, a backtick under a backtick fence,
|
|
54
|
+
* and a leading run of the fence's own marker, which would lengthen the fence (`~~~` plus `~x`).
|
|
55
|
+
*/
|
|
56
|
+
export declare function legalFenceInfo(info: string, marker: FenceShape['marker']): string;
|