@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
package/dist/core/nodes.d.ts
CHANGED
|
@@ -35,8 +35,11 @@ export interface ThematicBreakMetadata {
|
|
|
35
35
|
marker: string;
|
|
36
36
|
}
|
|
37
37
|
export interface LinkReferenceDefinitionMetadata {
|
|
38
|
+
/** The label's text, unnormalized; a label spanning lines keeps its breaks as `\n`. */
|
|
38
39
|
label: string;
|
|
40
|
+
/** Escapes resolved and percent-encoded, the value an inline link's `url` holds. */
|
|
39
41
|
url?: string;
|
|
42
|
+
/** Escapes resolved, the value an inline link's `title` holds. */
|
|
40
43
|
title?: string;
|
|
41
44
|
}
|
|
42
45
|
export type TableAlignment = 'none' | 'left' | 'center' | 'right';
|
|
@@ -46,6 +49,9 @@ export interface TableMetadata {
|
|
|
46
49
|
}
|
|
47
50
|
export interface TableRowMetadata {
|
|
48
51
|
isHeader: boolean;
|
|
52
|
+
/** A body row's cells past the header's count, as written: GFM renders none of them, and the
|
|
53
|
+
* row's rebuild writes them back after its rendered cells. Absent when there are none. */
|
|
54
|
+
surplusCells?: readonly string[];
|
|
49
55
|
}
|
|
50
56
|
export interface BlockquoteMetadata {
|
|
51
57
|
quoteDepth: number;
|
|
@@ -73,18 +79,12 @@ export interface BlockMetadataByKind {
|
|
|
73
79
|
list: ListMetadata;
|
|
74
80
|
listItem: ListItemMetadata;
|
|
75
81
|
}
|
|
76
|
-
/**
|
|
77
|
-
*
|
|
78
|
-
* a generic `K`, or a full `CstNode` whose branded plugin arm blocks `kind` narrowing. Prefer
|
|
79
|
-
* reading `node.metadata` off a narrowed arm. Pass the kind you have already established.
|
|
80
|
-
*/
|
|
82
|
+
/** The one allowed metadata cast, for a generic `K` or a full `CstNode` that cannot narrow; prefer
|
|
83
|
+
* a narrowed node's `node.metadata`. Pass the kind you have already established. */
|
|
81
84
|
export declare function metadataOf<K extends keyof BlockMetadataByKind>(node: CstNode, kind: K): BlockMetadataByKind[K];
|
|
82
85
|
export declare function metadataOf<K extends keyof BlockMetadataByKind>(node: NodeView, kind: K): BytesView<BlockMetadataByKind[K]>;
|
|
83
|
-
/**
|
|
84
|
-
*
|
|
85
|
-
* this pair is the one place it lives. Keep the stored shape primitive-valued: the one-level
|
|
86
|
-
* undo clone (G1.6) shallow-copies metadata.
|
|
87
|
-
*/
|
|
86
|
+
/** The one cast bridging a plugin's shape into the built-in `BlockMetadata`. Keep the shape
|
|
87
|
+
* primitive-valued: undo's one-level clone shallow-copies metadata (G1.6). */
|
|
88
88
|
export declare function setPluginMetadata<T>(node: CstNode, data: T): void;
|
|
89
89
|
export declare function getPluginMetadata<T>(node: NodeView): T | undefined;
|
|
90
90
|
/**
|
|
@@ -99,8 +99,8 @@ interface BlockNodeBase {
|
|
|
99
99
|
ownerEpoch?: number;
|
|
100
100
|
}
|
|
101
101
|
/**
|
|
102
|
-
*
|
|
103
|
-
*
|
|
102
|
+
* A leaf never has `children` or the container fields (G1.5), so the leaf members type them
|
|
103
|
+
* `undefined` and the union rejects a leaf that grew a child at compile time.
|
|
104
104
|
*/
|
|
105
105
|
interface LeafBlockNodeBase extends BlockNodeBase {
|
|
106
106
|
children?: undefined;
|
|
@@ -109,11 +109,8 @@ interface LeafBlockNodeBase extends BlockNodeBase {
|
|
|
109
109
|
childIds?: undefined;
|
|
110
110
|
childSpans?: undefined;
|
|
111
111
|
}
|
|
112
|
-
/**
|
|
113
|
-
*
|
|
114
|
-
* structural field stays optional. `childIds` mirrors `children` for keyed rendering;
|
|
115
|
-
* `childSpans` records where each child's bytes sit in `raw` (`schema/child-spans.ts`).
|
|
116
|
-
*/
|
|
112
|
+
/** A container may be briefly childless mid-edit (G1.5), so every structural field stays optional;
|
|
113
|
+
* `childSpans` records where each child's bytes sit in `raw`. */
|
|
117
114
|
interface ContainerBlockNodeBase extends BlockNodeBase {
|
|
118
115
|
children?: CstNode[];
|
|
119
116
|
innerPrefix?: string;
|
|
@@ -182,9 +179,9 @@ export interface TableRowNode extends ContainerBlockNodeBase {
|
|
|
182
179
|
metadata: TableRowMetadata;
|
|
183
180
|
}
|
|
184
181
|
/**
|
|
185
|
-
* A branded-string kind, so
|
|
186
|
-
*
|
|
187
|
-
*
|
|
182
|
+
* A branded-string kind, so `switch (node.kind)` cannot narrow this member: narrow past it with
|
|
183
|
+
* `isBuiltinBlockNode` first. A plugin block may be a leaf or a container, so the structural
|
|
184
|
+
* fields stay optional.
|
|
188
185
|
*/
|
|
189
186
|
export interface PluginBlockNode extends BlockNodeBase {
|
|
190
187
|
kind: PluginBlockKind;
|
|
@@ -198,24 +195,19 @@ export interface PluginBlockNode extends BlockNodeBase {
|
|
|
198
195
|
/** A genuine discriminated union: `switch (node.kind)` narrows `node.metadata` with no cast. */
|
|
199
196
|
export type BuiltinCstNode = ParagraphNode | HeadingNode | SetextHeadingNode | FencedCodeNode | ThematicBreakNode | IndentedCodeNode | HtmlBlockNode | LinkReferenceDefinitionNode | TableCellNode | UnrecognizedNode | BlockquoteNode | ListNode | ListItemNode | TableNode | TableRowNode;
|
|
200
197
|
/**
|
|
201
|
-
* The open `PluginBlockNode`
|
|
202
|
-
* narrow:
|
|
203
|
-
* `
|
|
198
|
+
* The open `PluginBlockNode` member has no literal kind, so `kind` checks on the full union do
|
|
199
|
+
* not narrow: go through `isBuiltinBlockNode` first. Common fields (`raw`, `leadingTrivia`,
|
|
200
|
+
* `kind`) exist on every member and read without narrowing.
|
|
204
201
|
*/
|
|
205
202
|
export type CstNode = BuiltinCstNode | PluginBlockNode;
|
|
206
203
|
/**
|
|
207
|
-
* The
|
|
208
|
-
* views, so
|
|
204
|
+
* The one way into the `switch (node.kind)` narrowing the plugin member blocks. Overloaded for
|
|
205
|
+
* views, so code that narrows a `NodeView` reads each member's metadata with no `metadataOf`.
|
|
209
206
|
*/
|
|
210
207
|
export declare function isBuiltinBlockNode(node: CstNode): node is BuiltinCstNode;
|
|
211
208
|
export declare function isBuiltinBlockNode(node: NodeView): node is BytesView<BuiltinCstNode>;
|
|
212
|
-
/**
|
|
213
|
-
*
|
|
214
|
-
* view-to-mutable strip door: the spread returns a FRESH object, so passing a view mints a copy
|
|
215
|
-
* instead of stripping its readonly-ness, which is why G4.13 sanctions this file. Fields are not
|
|
216
|
-
* checked against the arm, so a metadata-less node of a metadata-carrying kind is mintable (a
|
|
217
|
-
* transient re-parse probe does this) and its `metadata` must not be read before re-parse.
|
|
218
|
-
*/
|
|
209
|
+
/** The one cast from a runtime kind string to `CstNode`; the spread copies, so a view stays read-only
|
|
210
|
+
* (G4.13). Metadata isn't checked: a node made without it must not be read before its re-parse. */
|
|
219
211
|
export declare function makeBlockNode(fields: {
|
|
220
212
|
kind: AnyBlockKind;
|
|
221
213
|
leadingTrivia: string;
|
|
@@ -232,8 +224,8 @@ export interface Document {
|
|
|
232
224
|
prefix: string;
|
|
233
225
|
children: CstNode[];
|
|
234
226
|
suffix: string;
|
|
235
|
-
/** The root's parallel id array
|
|
236
|
-
*
|
|
227
|
+
/** The root's parallel id array, when a caller keeps one here: the editor's own live ids are
|
|
228
|
+
* editor state, but the splice operations maintain whatever array the parent carries. */
|
|
237
229
|
childIds?: string[];
|
|
238
230
|
}
|
|
239
231
|
export type InlineNodeKind = 'text' | 'emphasis' | 'strong' | 'strikethrough' | 'inlineCode' | 'link' | 'image' | 'autolink' | 'hardLineBreak' | 'escape' | 'entityReference' | 'unresolvedReference' | 'rawHtml';
|
|
@@ -245,7 +237,8 @@ export type PluginInlineKind = string & {
|
|
|
245
237
|
export type AnyInlineKind = InlineNodeKind | PluginInlineKind;
|
|
246
238
|
export declare const INLINE_KIND_TABLE: Record<InlineNodeKind, true>;
|
|
247
239
|
export declare function isBuiltinInlineKind(kind: AnyInlineKind): kind is InlineNodeKind;
|
|
248
|
-
/** start/end are byte offsets into the parent block's raw, including markers.
|
|
240
|
+
/** start/end are byte offsets into the parent block's raw, including markers. Optional keys are
|
|
241
|
+
* omitted, never set to `undefined`, so a serializer can tell "no title" from "empty title". */
|
|
249
242
|
export interface InlineNode {
|
|
250
243
|
kind: AnyInlineKind;
|
|
251
244
|
start: number;
|
|
@@ -264,15 +257,11 @@ export interface InlineNode {
|
|
|
264
257
|
/** Discriminator for `unresolvedReference` nodes: which form they would have been. */
|
|
265
258
|
refKind?: 'link' | 'image';
|
|
266
259
|
/**
|
|
267
|
-
*
|
|
260
|
+
* Set by the scan when a plugin handler claimed these bytes, derived per scan and never
|
|
268
261
|
* persisted. Write paths read it to re-serialize in the claiming syntax, not built-in GFM.
|
|
269
262
|
*/
|
|
270
263
|
syntaxClaim?: InlineSyntaxClaim;
|
|
271
264
|
}
|
|
272
|
-
/**
|
|
273
|
-
* Optional keys are omitted rather than set to `undefined`, so a serializer can tell "no title"
|
|
274
|
-
* from "empty title" and reproduce a node that never carried one.
|
|
275
|
-
*/
|
|
276
265
|
/**
|
|
277
266
|
* How an image sits inside its `|WxH` frame: the image point (`x`%, `y`%) pinned to the same
|
|
278
267
|
* point of the frame, at `z` times the smallest scale that fills it. `{50, 50, 1}` is a plain
|
|
@@ -298,13 +287,14 @@ export interface ImageFields {
|
|
|
298
287
|
label?: string;
|
|
299
288
|
}
|
|
300
289
|
/**
|
|
301
|
-
* Re-serializes an image
|
|
302
|
-
* in the
|
|
290
|
+
* Re-serializes an image a plugin handler created over its own bytes: `source` in, its
|
|
291
|
+
* replacement in the plugin's syntax out, or `null` to decline the edit rather than rewrite the
|
|
292
|
+
* bytes as GFM.
|
|
303
293
|
*/
|
|
304
294
|
export type ImageSyntaxRewriter = (source: string, fields: ImageFields) => string | null;
|
|
305
|
-
/** What the scan records on a node
|
|
295
|
+
/** What the scan records on a node a plugin inline handler claimed. */
|
|
306
296
|
export interface InlineSyntaxClaim {
|
|
307
|
-
/** The claiming
|
|
297
|
+
/** The claiming handler's prefix: its bare trigger, or its multi-character prefix. */
|
|
308
298
|
prefix: string;
|
|
309
299
|
rewriteImage?: ImageSyntaxRewriter;
|
|
310
300
|
}
|
package/dist/core/nodes.js
CHANGED
|
@@ -28,11 +28,8 @@ export function metadataOf(node, kind) {
|
|
|
28
28
|
void kind;
|
|
29
29
|
return node.metadata;
|
|
30
30
|
}
|
|
31
|
-
/**
|
|
32
|
-
*
|
|
33
|
-
* this pair is the one place it lives. Keep the stored shape primitive-valued: the one-level
|
|
34
|
-
* undo clone (G1.6) shallow-copies metadata.
|
|
35
|
-
*/
|
|
31
|
+
/** The one cast bridging a plugin's shape into the built-in `BlockMetadata`. Keep the shape
|
|
32
|
+
* primitive-valued: undo's one-level clone shallow-copies metadata (G1.6). */
|
|
36
33
|
export function setPluginMetadata(node, data) {
|
|
37
34
|
node.metadata = data;
|
|
38
35
|
}
|
|
@@ -53,13 +50,8 @@ export function headingLevel(node) {
|
|
|
53
50
|
export function isBuiltinBlockNode(node) {
|
|
54
51
|
return isBuiltinBlockKind(node.kind);
|
|
55
52
|
}
|
|
56
|
-
/**
|
|
57
|
-
*
|
|
58
|
-
* view-to-mutable strip door: the spread returns a FRESH object, so passing a view mints a copy
|
|
59
|
-
* instead of stripping its readonly-ness, which is why G4.13 sanctions this file. Fields are not
|
|
60
|
-
* checked against the arm, so a metadata-less node of a metadata-carrying kind is mintable (a
|
|
61
|
-
* transient re-parse probe does this) and its `metadata` must not be read before re-parse.
|
|
62
|
-
*/
|
|
53
|
+
/** The one cast from a runtime kind string to `CstNode`; the spread copies, so a view stays read-only
|
|
54
|
+
* (G4.13). Metadata isn't checked: a node made without it must not be read before its re-parse. */
|
|
63
55
|
export function makeBlockNode(fields) {
|
|
64
56
|
return { ...fields };
|
|
65
57
|
}
|
package/dist/core/parser.d.ts
CHANGED
|
@@ -3,66 +3,59 @@
|
|
|
3
3
|
* Per-kind parsers live in parsers/; this file holds dispatch and shared utilities only.
|
|
4
4
|
*/
|
|
5
5
|
import type { CstNode, Document } from './nodes';
|
|
6
|
-
import { type ParsedLine } from './lines';
|
|
6
|
+
import { isBlankLine, type ParsedLine } from './lines';
|
|
7
7
|
import { type GrammarView } from '../schema/block-openers';
|
|
8
8
|
/**
|
|
9
|
-
* Container-nesting cap: past it the
|
|
10
|
-
*
|
|
11
|
-
* the empirical crash point, with headroom for the tree walks that recurse to the same depth.
|
|
12
|
-
* Byte-preserving, since only a top-level node's `raw` serializes and that is fixed first.
|
|
9
|
+
* Container-nesting cap: past it the rest parses as paragraph text instead of recursing, so deep
|
|
10
|
+
* input cannot overflow the stack. Bytes are unaffected: the top-level `raw` is fixed first.
|
|
13
11
|
*/
|
|
14
12
|
export declare const MAX_NESTING_DEPTH = 512;
|
|
15
13
|
/** Whether `source` is a whole document or one block's bytes read standalone. */
|
|
16
14
|
export type ParseScope = 'document' | 'fragment';
|
|
17
|
-
/**
|
|
18
|
-
*
|
|
19
|
-
* the global openers. It filters only the TOP-LEVEL opener dispatch: nested container reparses
|
|
20
|
-
* and the paragraph-interrupt scan read the global grammar, the documented enablement boundary,
|
|
21
|
-
* so a top-level disabled kind is skipped and a nested one is not. `opts.scope` reaches openers
|
|
22
|
-
* as `ctx.isDocumentParse`; it defaults to `'document'`, so whole-source callers need nothing.
|
|
23
|
-
*/
|
|
15
|
+
/** Parse GFM to a lossless CST, with every installed plugin's openers and `'document'` scope by
|
|
16
|
+
* default. Code inside the editor calls {@link readBlocks}, which takes both. */
|
|
24
17
|
export declare function parse(source: string, opts?: {
|
|
25
18
|
grammar?: GrammarView;
|
|
26
19
|
scope?: ParseScope;
|
|
27
20
|
}): Document;
|
|
21
|
+
/** `parse` for code inside the editor: the grammar is the editor's, so it is never left out. */
|
|
22
|
+
export declare function readBlocks(source: string, read: {
|
|
23
|
+
grammar: GrammarView;
|
|
24
|
+
scope: ParseScope;
|
|
25
|
+
}): Document;
|
|
28
26
|
interface ParseBlocksResult {
|
|
29
27
|
children: CstNode[];
|
|
30
28
|
suffix: string;
|
|
31
29
|
}
|
|
32
30
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* says otherwise, so `parse` alone defaults to document scope. Blank-line rule
|
|
36
|
-
* (`design/syntax-tree.md`): the first blank line of a run separates and folds into trivia;
|
|
37
|
-
* every later one is an empty paragraph carrying its own bytes.
|
|
31
|
+
* A task item's body read on its own, as a write into the item's first paragraph reads it: the
|
|
32
|
+
* line after the task marker is paragraph text (GFM task lists), and later lines parse as blocks.
|
|
38
33
|
*/
|
|
39
|
-
export declare function
|
|
34
|
+
export declare function parseTaskItemBody(source: string, grammar: GrammarView): Document;
|
|
35
|
+
/** Parse `lines[start, end)` into blocks; a block-aligned window parses as its text would whole
|
|
36
|
+
* (`docs/design/syntax-tree.md` § Blank lines). `firstLineIsParagraph` forces paragraph text. */
|
|
37
|
+
export declare function parseBlocks(lines: ParsedLine[], start: number, end: number, read: {
|
|
38
|
+
grammar: GrammarView;
|
|
39
|
+
scope: ParseScope;
|
|
40
|
+
depth?: number;
|
|
41
|
+
firstLineIsParagraph?: boolean;
|
|
42
|
+
}): ParseBlocksResult;
|
|
40
43
|
export interface ContainerBodyWrap {
|
|
41
|
-
/** A
|
|
44
|
+
/** A fence line of the container's own sits above the body (`:::note`, `<summary>`). */
|
|
42
45
|
afterOpenerLine?: boolean;
|
|
43
|
-
/** A
|
|
46
|
+
/** A fence line of the container's own sits below the body (`:::`, `</details>`). */
|
|
44
47
|
beforeCloserLine?: boolean;
|
|
45
48
|
}
|
|
46
|
-
/**
|
|
47
|
-
*
|
|
48
|
-
* container's own first line (blockquote, list item) has no wrap and uses `parse`. A blank line
|
|
49
|
-
* against a chrome line separates as it does between blocks, landing in `prefix`/`suffix` while
|
|
50
|
-
* the rest of its run materializes as body content; one with no body on its far side separated
|
|
51
|
-
* nothing and stays content. `opts.scope` is required: a new entry cannot recover it (G4.27).
|
|
52
|
-
*/
|
|
49
|
+
/** Parse a body between the container's own fence lines (`docs/design/syntax-tree.md` § Blank
|
|
50
|
+
* lines); a body on the container's first line uses `parse`. `opts.scope` is required (G4.27). */
|
|
53
51
|
export declare function parseContainerBody(bodyText: string, wrap: ContainerBodyWrap, opts: {
|
|
54
52
|
scope: ParseScope;
|
|
55
53
|
depth?: number;
|
|
54
|
+
grammar: GrammarView;
|
|
56
55
|
}): Document;
|
|
57
|
-
export
|
|
58
|
-
/**
|
|
59
|
-
* Nothing but blank lines — what the blank-line rule mints a block from. Blankness is the
|
|
60
|
-
* parser's (GFM §2.1), never `String.trim()`: a non-breaking space is content.
|
|
61
|
-
*/
|
|
62
|
-
export declare function isBlankSource(source: string): boolean;
|
|
56
|
+
export { isBlankLine };
|
|
63
57
|
export declare function isBlankParagraph(node: {
|
|
64
58
|
kind: string;
|
|
65
59
|
raw: string;
|
|
66
60
|
}): boolean;
|
|
67
61
|
export declare function joinRaw(lines: ParsedLine[], startIndex: number, endIndex: number): string;
|
|
68
|
-
export {};
|
package/dist/core/parser.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Single-pass GFM block parser, producing a CST where serialize(parse(source)) === source.
|
|
3
3
|
* Per-kind parsers live in parsers/; this file holds dispatch and shared utilities only.
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
6
|
-
import { splitLines } from './lines';
|
|
5
|
+
import { isDevChecks } from '../env';
|
|
6
|
+
import { isBlankLine, isBlankText, splitLines } from './lines';
|
|
7
7
|
import { perfEnabled, recordParse } from '../perf/instruments';
|
|
8
8
|
import { defaultGrammarView } from '../schema/block-openers';
|
|
9
9
|
import { assertInvariant } from '../assert';
|
|
@@ -11,43 +11,53 @@ import { parseParagraph } from './parsers/paragraph';
|
|
|
11
11
|
import { registerBuiltInOpeners } from './parsers/built-in-openers';
|
|
12
12
|
import { registerTableCompleter } from './parsers/table-completion';
|
|
13
13
|
registerBuiltInOpeners();
|
|
14
|
-
// The Enter completer is the
|
|
15
|
-
// than behind a side-effect import the production build tree-shakes away.
|
|
14
|
+
// The Enter completer is the typing-side counterpart of the table grammar, so it loads here
|
|
15
|
+
// rather than behind a side-effect import the production build tree-shakes away.
|
|
16
16
|
registerTableCompleter();
|
|
17
17
|
/**
|
|
18
|
-
* Container-nesting cap: past it the
|
|
19
|
-
*
|
|
20
|
-
* the empirical crash point, with headroom for the tree walks that recurse to the same depth.
|
|
21
|
-
* Byte-preserving, since only a top-level node's `raw` serializes and that is fixed first.
|
|
18
|
+
* Container-nesting cap: past it the rest parses as paragraph text instead of recursing, so deep
|
|
19
|
+
* input cannot overflow the stack. Bytes are unaffected: the top-level `raw` is fixed first.
|
|
22
20
|
*/
|
|
23
21
|
export const MAX_NESTING_DEPTH = 512;
|
|
24
|
-
/**
|
|
25
|
-
*
|
|
26
|
-
* the global openers. It filters only the TOP-LEVEL opener dispatch: nested container reparses
|
|
27
|
-
* and the paragraph-interrupt scan read the global grammar, the documented enablement boundary,
|
|
28
|
-
* so a top-level disabled kind is skipped and a nested one is not. `opts.scope` reaches openers
|
|
29
|
-
* as `ctx.isDocumentParse`; it defaults to `'document'`, so whole-source callers need nothing.
|
|
30
|
-
*/
|
|
22
|
+
/** Parse GFM to a lossless CST, with every installed plugin's openers and `'document'` scope by
|
|
23
|
+
* default. Code inside the editor calls {@link readBlocks}, which takes both. */
|
|
31
24
|
export function parse(source, opts) {
|
|
25
|
+
return readBlocks(source, {
|
|
26
|
+
grammar: opts?.grammar ?? defaultGrammarView,
|
|
27
|
+
scope: opts?.scope ?? 'document'
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
/** `parse` for code inside the editor: the grammar is the editor's, so it is never left out. */
|
|
31
|
+
export function readBlocks(source, read) {
|
|
32
32
|
const t0 = perfEnabled() ? performance.now() : 0;
|
|
33
33
|
const lines = splitLines(source);
|
|
34
|
-
const result = parseBlocks(lines, 0, lines.length,
|
|
34
|
+
const result = parseBlocks(lines, 0, lines.length, read);
|
|
35
35
|
if (perfEnabled())
|
|
36
36
|
recordParse(performance.now() - t0, result.children.length);
|
|
37
37
|
return { kind: 'document', prefix: '', children: result.children, suffix: result.suffix };
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* says otherwise, so `parse` alone defaults to document scope. Blank-line rule
|
|
43
|
-
* (`design/syntax-tree.md`): the first blank line of a run separates and folds into trivia;
|
|
44
|
-
* every later one is an empty paragraph carrying its own bytes.
|
|
40
|
+
* A task item's body read on its own, as a write into the item's first paragraph reads it: the
|
|
41
|
+
* line after the task marker is paragraph text (GFM task lists), and later lines parse as blocks.
|
|
45
42
|
*/
|
|
46
|
-
export function
|
|
43
|
+
export function parseTaskItemBody(source, grammar) {
|
|
44
|
+
const lines = splitLines(source);
|
|
45
|
+
const result = parseBlocks(lines, 0, lines.length, {
|
|
46
|
+
grammar,
|
|
47
|
+
scope: 'fragment',
|
|
48
|
+
firstLineIsParagraph: true
|
|
49
|
+
});
|
|
50
|
+
return { kind: 'document', prefix: '', children: result.children, suffix: result.suffix };
|
|
51
|
+
}
|
|
52
|
+
/** Parse `lines[start, end)` into blocks; a block-aligned window parses as its text would whole
|
|
53
|
+
* (`docs/design/syntax-tree.md` § Blank lines). `firstLineIsParagraph` forces paragraph text. */
|
|
54
|
+
export function parseBlocks(lines, start, end, read) {
|
|
55
|
+
const { grammar, depth = 0, firstLineIsParagraph = false } = read;
|
|
56
|
+
const isDocumentParse = read.scope === 'document';
|
|
47
57
|
const children = [];
|
|
48
58
|
let pendingTrivia = '';
|
|
49
|
-
// Nothing precedes the window's first block, so its separator
|
|
50
|
-
//
|
|
59
|
+
// Nothing precedes the window's first block, so its separator is already spent, which is
|
|
60
|
+
// what makes a leading run of blank lines materialize in full.
|
|
51
61
|
let separatorSpent = true;
|
|
52
62
|
let index = start;
|
|
53
63
|
while (index < end) {
|
|
@@ -68,7 +78,7 @@ export function parseBlocks(lines, start, end, grammar = defaultGrammarView, dep
|
|
|
68
78
|
index++;
|
|
69
79
|
continue;
|
|
70
80
|
}
|
|
71
|
-
//
|
|
81
|
+
// Created fresh per block, so an opener that keeps the context never sees it rewritten.
|
|
72
82
|
const ctx = {
|
|
73
83
|
lines,
|
|
74
84
|
index,
|
|
@@ -79,7 +89,9 @@ export function parseBlocks(lines, start, end, grammar = defaultGrammarView, dep
|
|
|
79
89
|
grammar,
|
|
80
90
|
depth
|
|
81
91
|
};
|
|
82
|
-
const { node, consumed } =
|
|
92
|
+
const { node, consumed } = firstLineIsParagraph && index === start
|
|
93
|
+
? parseParagraph(lines, index, end, pendingTrivia, grammar)
|
|
94
|
+
: parseNextBlock(ctx);
|
|
83
95
|
children.push(node);
|
|
84
96
|
pendingTrivia = '';
|
|
85
97
|
separatorSpent = false;
|
|
@@ -87,13 +99,8 @@ export function parseBlocks(lines, start, end, grammar = defaultGrammarView, dep
|
|
|
87
99
|
}
|
|
88
100
|
return { children, suffix: pendingTrivia };
|
|
89
101
|
}
|
|
90
|
-
/**
|
|
91
|
-
*
|
|
92
|
-
* container's own first line (blockquote, list item) has no wrap and uses `parse`. A blank line
|
|
93
|
-
* against a chrome line separates as it does between blocks, landing in `prefix`/`suffix` while
|
|
94
|
-
* the rest of its run materializes as body content; one with no body on its far side separated
|
|
95
|
-
* nothing and stays content. `opts.scope` is required: a new entry cannot recover it (G4.27).
|
|
96
|
-
*/
|
|
102
|
+
/** Parse a body between the container's own fence lines (`docs/design/syntax-tree.md` § Blank
|
|
103
|
+
* lines); a body on the container's first line uses `parse`. `opts.scope` is required (G4.27). */
|
|
97
104
|
export function parseContainerBody(bodyText, wrap, opts) {
|
|
98
105
|
const lines = splitLines(bodyText);
|
|
99
106
|
let first = 0;
|
|
@@ -108,14 +115,14 @@ export function parseContainerBody(bodyText, wrap, opts) {
|
|
|
108
115
|
last--;
|
|
109
116
|
suffix = lines[last].raw;
|
|
110
117
|
}
|
|
111
|
-
const inner = parseBlocks(lines, first, last,
|
|
118
|
+
const inner = parseBlocks(lines, first, last, opts);
|
|
112
119
|
return { kind: 'document', prefix, children: inner.children, suffix: inner.suffix + suffix };
|
|
113
120
|
}
|
|
114
121
|
// ── Dispatch ────────────────────────────────────────────────────────────
|
|
115
122
|
function parseNextBlock(ctx) {
|
|
116
|
-
// At the cap everything
|
|
123
|
+
// At the cap everything becomes a paragraph, covering the bytes without another stack frame.
|
|
117
124
|
if (ctx.depth >= MAX_NESTING_DEPTH) {
|
|
118
|
-
return parseParagraph(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia);
|
|
125
|
+
return parseParagraph(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia, ctx.grammar);
|
|
119
126
|
}
|
|
120
127
|
for (const opener of ctx.grammar.orderedOpeners()) {
|
|
121
128
|
const result = opener.tryOpen(ctx);
|
|
@@ -125,31 +132,25 @@ function parseNextBlock(ctx) {
|
|
|
125
132
|
reportNonAdvancingOpener(ctx, result);
|
|
126
133
|
continue;
|
|
127
134
|
}
|
|
128
|
-
if (
|
|
135
|
+
if (isDevChecks())
|
|
129
136
|
assertOpenerRawMatches(ctx, result);
|
|
130
137
|
return result;
|
|
131
138
|
}
|
|
132
139
|
// Paragraph is the total fallback; it also detects setext headings and tables.
|
|
133
|
-
return parseParagraph(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia);
|
|
140
|
+
return parseParagraph(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia, ctx.grammar);
|
|
134
141
|
}
|
|
135
|
-
/**
|
|
136
|
-
*
|
|
137
|
-
* declined in every build, not just DEV: returning it would leave `index` put and spin the parse
|
|
138
|
-
* loop forever, and declining is always safe because the paragraph fallback covers the line.
|
|
139
|
-
*/
|
|
142
|
+
/** The dev warning behind the call site's decline. An opener that consumed nothing is declined in
|
|
143
|
+
* every build, or it would spin the parse loop; the paragraph fallback covers the line. */
|
|
140
144
|
function reportNonAdvancingOpener(ctx, result) {
|
|
141
145
|
assertInvariant('opener-advance', () => ({
|
|
142
146
|
code: 'opener-did-not-advance',
|
|
143
|
-
message: `block opener for kind "${result.node.kind}" claimed no line at ${ctx.index} and was
|
|
144
|
-
`
|
|
147
|
+
message: `block opener for kind "${result.node.kind}" claimed no line at ${ctx.index} and was declined:` +
|
|
148
|
+
` an opener must consume at least one line (return consumed >= 1)`,
|
|
145
149
|
detail: result.node.kind
|
|
146
150
|
}));
|
|
147
151
|
}
|
|
148
|
-
/**
|
|
149
|
-
*
|
|
150
|
-
* bytes that do not match the consumed lines silently break the round-trip, since serialize
|
|
151
|
-
* reads `raw` alone. Tree-shaken in production.
|
|
152
|
-
*/
|
|
152
|
+
/** Dev-only check that a plugin opener's `raw` matches the lines it consumed: serialize reads `raw`
|
|
153
|
+
* alone, so a mismatch silently breaks the round-trip. */
|
|
153
154
|
function assertOpenerRawMatches(ctx, result) {
|
|
154
155
|
assertInvariant('opener-raw', () => result.node.raw === joinRaw(ctx.lines, ctx.index, ctx.index + result.consumed)
|
|
155
156
|
? null
|
|
@@ -161,24 +162,9 @@ function assertOpenerRawMatches(ctx, result) {
|
|
|
161
162
|
});
|
|
162
163
|
}
|
|
163
164
|
// ── Shared utilities ────────────────────────────────────────────────────
|
|
164
|
-
|
|
165
|
-
* GFM §2.1: a blank line holds nothing but spaces and tabs. Deliberately not `String.trim()`,
|
|
166
|
-
* which admits all Unicode whitespace: a non-breaking space is content, and a line holding one
|
|
167
|
-
* continues its block.
|
|
168
|
-
*/
|
|
169
|
-
const NON_BLANK_CHAR = /[^ \t]/;
|
|
170
|
-
export function isBlankLine(text) {
|
|
171
|
-
return !NON_BLANK_CHAR.test(text);
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Nothing but blank lines — what the blank-line rule mints a block from. Blankness is the
|
|
175
|
-
* parser's (GFM §2.1), never `String.trim()`: a non-breaking space is content.
|
|
176
|
-
*/
|
|
177
|
-
export function isBlankSource(source) {
|
|
178
|
-
return splitLines(source).every((line) => isBlankLine(line.text));
|
|
179
|
-
}
|
|
165
|
+
export { isBlankLine };
|
|
180
166
|
export function isBlankParagraph(node) {
|
|
181
|
-
return node.kind === 'paragraph' &&
|
|
167
|
+
return node.kind === 'paragraph' && isBlankText(node.raw);
|
|
182
168
|
}
|
|
183
169
|
export function joinRaw(lines, startIndex, endIndex) {
|
|
184
170
|
let result = '';
|
|
@@ -3,15 +3,12 @@
|
|
|
3
3
|
* approximated per line (non-blank, not a block opener), not tracked as parser state.
|
|
4
4
|
*/
|
|
5
5
|
import { type ParsedLine } from '../lines';
|
|
6
|
-
import { type BlockOpenerResult } from '../../schema/block-openers';
|
|
6
|
+
import { type BlockOpenerResult, type GrammarView } from '../../schema/block-openers';
|
|
7
7
|
export declare function matchBlockquote(text: string): boolean;
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
|
|
11
|
-
* decomposes its own body (`> [!NOTE]` alerts strip the marker line before parsing children).
|
|
12
|
-
*/
|
|
13
|
-
export declare function blockquoteExtent(lines: ParsedLine[], startIndex: number, endIndex: number): {
|
|
8
|
+
/** Byte-exact `raw` of a blockquote's extent plus the index past it, with no child decomposition,
|
|
9
|
+
* for an opener that decomposes its own body (`> [!NOTE]`). The grammar defaults to every plugin. */
|
|
10
|
+
export declare function blockquoteExtent(lines: ParsedLine[], startIndex: number, endIndex: number, grammar?: GrammarView): {
|
|
14
11
|
raw: string;
|
|
15
12
|
nextIndex: number;
|
|
16
13
|
};
|
|
17
|
-
export declare function parseBlockquote(lines: ParsedLine[], startIndex: number, endIndex: number, leadingTrivia: string, depth?: number, isDocumentParse?: boolean): BlockOpenerResult;
|
|
14
|
+
export declare function parseBlockquote(lines: ParsedLine[], startIndex: number, endIndex: number, leadingTrivia: string, grammar: GrammarView, depth?: number, isDocumentParse?: boolean): BlockOpenerResult;
|
|
@@ -21,12 +21,9 @@ function wouldKeepParagraphOpen(strippedText) {
|
|
|
21
21
|
return false;
|
|
22
22
|
return true;
|
|
23
23
|
}
|
|
24
|
-
/**
|
|
25
|
-
*
|
|
26
|
-
|
|
27
|
-
* decomposes its own body (`> [!NOTE]` alerts strip the marker line before parsing children).
|
|
28
|
-
*/
|
|
29
|
-
export function blockquoteExtent(lines, startIndex, endIndex) {
|
|
24
|
+
/** Byte-exact `raw` of a blockquote's extent plus the index past it, with no child decomposition,
|
|
25
|
+
* for an opener that decomposes its own body (`> [!NOTE]`). The grammar defaults to every plugin. */
|
|
26
|
+
export function blockquoteExtent(lines, startIndex, endIndex, grammar = defaultGrammarView) {
|
|
30
27
|
let i = startIndex;
|
|
31
28
|
let paragraphOpen = false;
|
|
32
29
|
while (i < endIndex) {
|
|
@@ -39,7 +36,7 @@ export function blockquoteExtent(lines, startIndex, endIndex) {
|
|
|
39
36
|
}
|
|
40
37
|
if (paragraphOpen &&
|
|
41
38
|
wouldKeepParagraphOpen(lineText) &&
|
|
42
|
-
!lineStartsOuterBlock(lines[i], { paragraphOpen: true })) {
|
|
39
|
+
!lineStartsOuterBlock(lines[i], { paragraphOpen: true, grammar })) {
|
|
43
40
|
i++;
|
|
44
41
|
continue;
|
|
45
42
|
}
|
|
@@ -47,11 +44,15 @@ export function blockquoteExtent(lines, startIndex, endIndex) {
|
|
|
47
44
|
}
|
|
48
45
|
return { raw: joinRaw(lines, startIndex, i), nextIndex: i };
|
|
49
46
|
}
|
|
50
|
-
export function parseBlockquote(lines, startIndex, endIndex, leadingTrivia, depth = 0, isDocumentParse = false) {
|
|
51
|
-
const { raw, nextIndex: i } = blockquoteExtent(lines, startIndex, endIndex);
|
|
47
|
+
export function parseBlockquote(lines, startIndex, endIndex, leadingTrivia, grammar, depth = 0, isDocumentParse = false) {
|
|
48
|
+
const { raw, nextIndex: i } = blockquoteExtent(lines, startIndex, endIndex, grammar);
|
|
52
49
|
// Lazy lines have no `> ` to strip; verbatim keeps the recursive parse seeing one paragraph.
|
|
53
50
|
const strippedLines = remapStrippedLines(lines.slice(startIndex, i), (line) => matchBlockquote(line.text) ? stripBlockquotePrefix(line.text) : line.text);
|
|
54
|
-
const inner = parseBlocks(strippedLines, 0, strippedLines.length,
|
|
51
|
+
const inner = parseBlocks(strippedLines, 0, strippedLines.length, {
|
|
52
|
+
grammar,
|
|
53
|
+
scope: isDocumentParse ? 'document' : 'fragment',
|
|
54
|
+
depth: depth + 1
|
|
55
|
+
});
|
|
55
56
|
const quotePrefix = lines[startIndex].text.match(/^ {0,3}(>[ \t]?)+/)[0];
|
|
56
57
|
const quoteDepth = quotePrefix.match(/>/g).length;
|
|
57
58
|
return {
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Registers the built-in block openers.
|
|
3
|
-
*
|
|
4
|
-
* parser.ts, which reads the opener registry). Called explicitly from core/parser.ts: the
|
|
5
|
-
* `sideEffects` allowlist names dist paths, never the src specifier used here, so a bare
|
|
6
|
-
* side-effect import would be droppable.
|
|
2
|
+
* Registers the built-in block openers. Called explicitly from `core/parser.ts`, since a bare
|
|
3
|
+
* side-effect import would be tree-shaken from the production build.
|
|
7
4
|
*/
|
|
8
5
|
export declare function registerBuiltInOpeners(): void;
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Registers the built-in block openers.
|
|
3
|
-
*
|
|
4
|
-
* parser.ts, which reads the opener registry). Called explicitly from core/parser.ts: the
|
|
5
|
-
* `sideEffects` allowlist names dist paths, never the src specifier used here, so a bare
|
|
6
|
-
* side-effect import would be droppable.
|
|
2
|
+
* Registers the built-in block openers. Called explicitly from `core/parser.ts`, since a bare
|
|
3
|
+
* side-effect import would be tree-shaken from the production build.
|
|
7
4
|
*/
|
|
8
5
|
import { registerBlockOpener } from '../../schema/block-openers';
|
|
9
6
|
import { OPENER_PRIORITIES } from '../../schema/opener-priorities';
|
|
@@ -17,7 +14,7 @@ import { matchIndentedCode, parseIndentedCode } from './indented-code';
|
|
|
17
14
|
import { matchHtmlBlock, parseHtmlBlock, canInterruptParagraph as htmlCanInterrupt } from './html-block';
|
|
18
15
|
import { parseLinkReferenceDefinition } from './link-reference';
|
|
19
16
|
// Idempotence guard, not a registry bypass: a dev-server re-eval resets it so
|
|
20
|
-
// the register-once dev
|
|
17
|
+
// the register-once dev path still replaces.
|
|
21
18
|
let registered = false;
|
|
22
19
|
export function registerBuiltInOpeners() {
|
|
23
20
|
if (registered)
|
|
@@ -80,7 +77,7 @@ export function registerBuiltInOpeners() {
|
|
|
80
77
|
tryOpen(ctx) {
|
|
81
78
|
if (!matchBlockquote(ctx.line.text))
|
|
82
79
|
return null;
|
|
83
|
-
return parseBlockquote(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia, ctx.depth, ctx.isDocumentParse);
|
|
80
|
+
return parseBlockquote(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia, ctx.grammar, ctx.depth, ctx.isDocumentParse);
|
|
84
81
|
},
|
|
85
82
|
interruptsParagraph: matchBlockquote
|
|
86
83
|
});
|
|
@@ -89,7 +86,7 @@ export function registerBuiltInOpeners() {
|
|
|
89
86
|
tryOpen(ctx) {
|
|
90
87
|
if (!matchListItem(ctx.line.text))
|
|
91
88
|
return null;
|
|
92
|
-
return parseList(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia, ctx.depth, ctx.isDocumentParse);
|
|
89
|
+
return parseList(ctx.lines, ctx.index, ctx.end, ctx.leadingTrivia, ctx.grammar, ctx.depth, ctx.isDocumentParse);
|
|
93
90
|
},
|
|
94
91
|
interruptsParagraph: listCanInterrupt
|
|
95
92
|
});
|