@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/plugin.js
CHANGED
|
@@ -1,26 +1,30 @@
|
|
|
1
|
-
// The plugin-authoring
|
|
2
|
-
// authoring API belongs here
|
|
3
|
-
// helpers, no internal dispatch.
|
|
4
|
-
//
|
|
1
|
+
// The plugin-authoring API, published at the `@voithos-labs/aragonite/plugin` subpath. Only the
|
|
2
|
+
// authoring API belongs here: not the `<Editor>` embedding barrel (index.ts), no test
|
|
3
|
+
// helpers, no internal dispatch. Nothing is frozen before 1.0: a (pre-freeze) section may change
|
|
4
|
+
// shape, and an untagged one keeps its model while its call shapes can still change.
|
|
5
5
|
import TextEditableBlock from './components/blocks/text/TextEditableBlock.svelte';
|
|
6
6
|
import { registerChromeLeaf as bindChromeLeaf } from './editor-actions/plugin/chrome-leaf';
|
|
7
7
|
import { computeInlineContent as parseLeafInline } from './core/inline';
|
|
8
|
+
import { defaultGrammarView } from './schema/block-openers';
|
|
9
|
+
import { everyInstalledPlugin } from './schema/plugin-activation';
|
|
10
|
+
import { getLanguageAliases as aliasesIn, listLanguages as languagesIn } from './components/blocks/code/code-languages';
|
|
11
|
+
import { tokenizeBody } from './components/blocks/code/code-renderer';
|
|
8
12
|
// ── Plugin unit (pre-freeze) ─────────────────────────────────────────────────
|
|
9
|
-
// Installation
|
|
10
|
-
// consumer rarely calls installPlugins directly.
|
|
13
|
+
// Installation happens once per process; the editor's `plugins` prop does it, so a
|
|
14
|
+
// consumer rarely calls `installPlugins` directly.
|
|
11
15
|
export { definePlugin, isPluginInstalled } from './schema/plugin-install';
|
|
12
16
|
// The single-block shortcut: one kind, one component, one register step.
|
|
13
17
|
export { definePluginBlock } from './schema/define-plugin-block';
|
|
14
18
|
// ── Kind declaration ─────────────────────────────────────────────────────────
|
|
15
19
|
export { declarePluginKind, declaredPluginKind } from './schema/plugin-kind';
|
|
16
|
-
// ── Inline authoring
|
|
17
|
-
//
|
|
20
|
+
// ── Inline authoring API (pre-freeze) ────────────────────────────────────────
|
|
21
|
+
// Declare an inline kind, hook the scanner on a trigger character, register a live widget.
|
|
18
22
|
export { declarePluginInlineKind, declaredPluginInlineKind, isInlineKindDeclared } from './schema/plugin-kind';
|
|
19
23
|
export { registerInlineSyntax, INLINE_PRIORITIES } from './core/inline/scan/plugin-syntax';
|
|
20
24
|
export { registerInlineWidgetKind, mintWidgetShell, isWidgetActivationClick } from './core/inline/inline-widgets';
|
|
21
25
|
// ── Block-kind descriptor registry ───────────────────────────────────────────
|
|
22
|
-
// BlockKindRegistration is the
|
|
23
|
-
//
|
|
26
|
+
// `BlockKindRegistration` is the shape you register; fields that only mean something together
|
|
27
|
+
// are declared together, so an incoherent pair fails to compile.
|
|
24
28
|
export { registerBlockKind, augmentBlockKind } from './schema/block-kind-descriptor';
|
|
25
29
|
export { simpleLeafClosure, containerClosure } from './schema/closure';
|
|
26
30
|
// ── Component registry ───────────────────────────────────────────────────────
|
|
@@ -30,30 +34,40 @@ export { registerBlockOpener } from './schema/block-openers';
|
|
|
30
34
|
// The shared "does this line start a block at the outer level" gate, so a container opener
|
|
31
35
|
// scanning its own extent ends it where cmark-gfm does instead of forking the rule.
|
|
32
36
|
export { lineStartsOuterBlock } from './schema/block-openers';
|
|
33
|
-
// The built-in priority
|
|
37
|
+
// The built-in priority order a plugin opener places itself in (pre-freeze); see the
|
|
34
38
|
// plugin guide's opener-priority section for the two placement rules.
|
|
35
39
|
export { OPENER_PRIORITIES } from './schema/opener-priorities';
|
|
36
40
|
// ── Enter-completion registry (pre-freeze) ───────────────────────────────────
|
|
37
|
-
//
|
|
38
|
-
//
|
|
39
|
-
// complete it, plus where the caret seats inside the mint.
|
|
41
|
+
// A completer reads one typed line and answers the lines that complete it, plus the caret: for a
|
|
42
|
+
// grammar whose lines must be adjacent, which Enter alone never types.
|
|
40
43
|
export { registerBlockCompleter } from './schema/block-completions';
|
|
41
44
|
// ── Code-block languages (pre-freeze) ────────────────────────────────────────
|
|
42
|
-
// The registry behind fenced-code highlighting
|
|
43
|
-
//
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
export
|
|
51
|
-
|
|
52
|
-
|
|
45
|
+
// The registry behind fenced-code highlighting: register extra languages before mounting (an
|
|
46
|
+
// unregistered one round-trips untokenized). The reads below see every installed plugin's.
|
|
47
|
+
export { registerLanguage } from './components/blocks/code/code-languages';
|
|
48
|
+
/** Every language once, under its canonical name, sorted. */
|
|
49
|
+
export function listLanguages() {
|
|
50
|
+
return languagesIn(everyInstalledPlugin);
|
|
51
|
+
}
|
|
52
|
+
/** The other spellings a language answers to, asked by any of them. */
|
|
53
|
+
export function getLanguageAliases(name) {
|
|
54
|
+
return aliasesIn(name, everyInstalledPlugin);
|
|
55
|
+
}
|
|
56
|
+
/** The code block's own tokenizer, for a plugin's own source view (block math paints its LaTeX
|
|
57
|
+
* with it). Text-preserving: the fragment's `textContent` is `body`. */
|
|
58
|
+
export function highlightCode(body, language) {
|
|
59
|
+
return tokenizeBody(body, language, everyInstalledPlugin);
|
|
60
|
+
}
|
|
61
|
+
// The code block's own drawing of a fenced source, for a kind that holds its own fence: split
|
|
62
|
+
// with `sliceFencedSource`, draw with `renderFencedSource` and your body painter.
|
|
63
|
+
export { sliceFencedSource, renderFencedSource, fenceBodyAsDrawn } from './components/blocks/code/code-renderer';
|
|
64
|
+
// ── Registering commands (pre-freeze) ────────────────────────────────────────
|
|
65
|
+
// A (kind, name) block command creates a `PluginCommandId`; `AnyCommandId` covers both.
|
|
53
66
|
export { registerBlockCommand } from './schema/block-commands';
|
|
54
67
|
// The block context menu: a kind's right-click actions, empty unless something registers them.
|
|
55
68
|
export { registerBlockContextActions } from './schema/context-actions';
|
|
56
|
-
// A global command is process-wide but runs against the dispatching instance's EditorContext
|
|
69
|
+
// A global command is process-wide but runs against the dispatching instance's `EditorContext`,
|
|
70
|
+
// with the argument `runCommand(id, arg)` or the chord's binding carried.
|
|
57
71
|
export { registerGlobalCommand } from './schema/global-commands';
|
|
58
72
|
// ── Parse / serialize helpers (pre-freeze) ───────────────────────────────────
|
|
59
73
|
// Re-exported so an opener needn't reach into core/ deep paths the packaged artifact
|
|
@@ -61,50 +75,57 @@ export { registerGlobalCommand } from './schema/global-commands';
|
|
|
61
75
|
export { parse } from './core/parser';
|
|
62
76
|
export { serialize, concatChildren as serializeChildren } from './core/serializer';
|
|
63
77
|
export { trimTrailingLineEnding, normalizeLineEndings } from './core/lines';
|
|
64
|
-
// The `ParsedLine[]` every line-
|
|
78
|
+
// The `ParsedLine[]` every line-based helper here takes; without it a `source →
|
|
65
79
|
// source` transform holding nothing but a string could not reach `blockquoteExtent`.
|
|
66
80
|
export { splitLines } from './core/lines';
|
|
67
|
-
//
|
|
68
|
-
//
|
|
81
|
+
// A line a plugin writes takes the document's ending, and per-line work reads a line's text
|
|
82
|
+
// without its ending, so a CRLF document stays CRLF through a plugin's write rule.
|
|
83
|
+
export { documentLineEnding, firstLineEnding, ownTrailingLineEnding, trailingLineEnding, displayLines, joinDisplayLines } from './core/lines';
|
|
84
|
+
// GFM §2.1's blank line (spaces and tabs only) and its whitespace, for a plugin's grammar.
|
|
85
|
+
// `String.trim()` and JS `\s` would also take a non-breaking space, which is content.
|
|
69
86
|
export { isBlankLine } from './core/parser';
|
|
70
|
-
|
|
71
|
-
//
|
|
72
|
-
// against a
|
|
73
|
-
// children. See `design/syntax-tree.md` § blank lines.
|
|
87
|
+
export { isBlankText, isWhitespaceChar, trimWhitespace } from './core/lines';
|
|
88
|
+
// A body between marker lines of its own (`:::note` … `:::`) parses here, not with `parse`: the
|
|
89
|
+
// blank line against a marker line is a separator (`docs/design/syntax-tree.md` § Blank lines).
|
|
74
90
|
export { parseContainerBody } from './core/parser';
|
|
75
91
|
// ── Fence grammar (pre-freeze) ───────────────────────────────────────────────
|
|
76
|
-
// The
|
|
77
|
-
//
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
export {
|
|
92
|
+
// The CommonMark fence grammar, so a plugin taking over a fence (```mermaid) never reimplements
|
|
93
|
+
// it: `fenceRawWrite` serves as its `rawWrite`, and `escalatedFenceLength` sizes a rebuilt fence.
|
|
94
|
+
export { matchFenceOpen, matchFenceClose, escalatedFenceLength, findFenceCloser, fenceAnatomy, matchFenceInfo } from './core/parsers/fence-syntax';
|
|
95
|
+
export { scanFence } from './core/parsers/fenced-code';
|
|
96
|
+
export { fenceRawWrite, fenceShapeOfRaw } from './schema/fenced-code-raw';
|
|
81
97
|
// ── HTML tag-line grammar (pre-freeze) ───────────────────────────────────────
|
|
82
|
-
// CommonMark's type-6 tag-line shape for one tag name. What
|
|
83
|
-
//
|
|
84
|
-
// space) — looser than any canonical form a rebuild emits.
|
|
98
|
+
// CommonMark's type-6 tag-line shape for one tag name. What closes such a container is anything
|
|
99
|
+
// the spec passes through raw, looser than the canonical form a rebuild emits.
|
|
85
100
|
export { htmlBlockTagLineMatcher } from './core/parsers/html-block';
|
|
86
101
|
// ── Blockquote grammar (pre-freeze) ──────────────────────────────────────────
|
|
87
|
-
// The built-in blockquote extent scanner, so a plugin
|
|
88
|
-
// construct (`> [!NOTE]`) reuses CommonMark §5.1 lazy continuation instead of
|
|
102
|
+
// The built-in blockquote extent scanner, so a plugin that takes over a blockquote-shaped
|
|
103
|
+
// construct (`> [!NOTE]`) reuses CommonMark §5.1 lazy continuation instead of writing its own.
|
|
89
104
|
export { blockquoteExtent } from './core/parsers/blockquote';
|
|
90
105
|
// Store/read a plugin kind's own metadata shape without casting through `BlockMetadata`.
|
|
91
106
|
export { setPluginMetadata, getPluginMetadata } from './core/nodes';
|
|
92
107
|
// The content span within a block's raw, syntax markers excluded (a heading's `#` prefix).
|
|
93
108
|
export { getContentRange } from './core/inline';
|
|
94
|
-
// A heading's level (ATX or setext), null otherwise: the typed
|
|
95
|
-
// built-in
|
|
109
|
+
// A heading's level (ATX or setext), null otherwise: the typed way to ask, since the
|
|
110
|
+
// built-in node narrowing stays internal to this barrel.
|
|
96
111
|
export { headingLevel } from './core/nodes';
|
|
97
|
-
// Pure and uncached
|
|
98
|
-
//
|
|
112
|
+
// Pure and uncached, so a widget's `$derived` can read it safely. `isProseKind` guards the
|
|
113
|
+
// traversal so a code block's bytes are never inline-scanned.
|
|
99
114
|
export { isProseKind } from './core/inline';
|
|
115
|
+
// Pre-order over a document or subtree, with 'skip' and 'stop', so a plugin writes no recursion.
|
|
116
|
+
export { walkBlocks } from './core/paths';
|
|
117
|
+
// The block at a path, or null for the root or a path that leads nowhere.
|
|
118
|
+
export { blockNodeAt } from './tree-operations/node-primitives';
|
|
100
119
|
/**
|
|
101
|
-
* Inline-parse a prose leaf
|
|
102
|
-
*
|
|
120
|
+
* Inline-parse a prose leaf with every installed plugin's syntax, for a pipeline with no editor
|
|
121
|
+
* mounted. Inside an editor use `EditorContext.computeInlineContent`, which reads only the plugins
|
|
122
|
+
* that editor lists and resolves the document's reference links. With no document here, a
|
|
123
|
+
* reference link reads as its bracketed text.
|
|
103
124
|
*/
|
|
104
125
|
export function computeInlineContent(node) {
|
|
105
|
-
return parseLeafInline(node);
|
|
126
|
+
return parseLeafInline(node, undefined, defaultGrammarView);
|
|
106
127
|
}
|
|
107
|
-
// ──
|
|
128
|
+
// ── Re-registration checks ─────────────────────────────────────────────────────
|
|
108
129
|
// The register-once registries throw on duplicate; a plugin re-registers safely
|
|
109
130
|
// (HMR / re-import) by guarding on these.
|
|
110
131
|
export { isBlockKindDeclared } from './schema/plugin-kind';
|
|
@@ -113,60 +134,62 @@ export { isBlockComponentRegistered } from './schema/block-component-registry';
|
|
|
113
134
|
export { isBlockOpenerRegistered } from './schema/block-openers';
|
|
114
135
|
export { isBlockCompleterRegistered } from './schema/block-completions';
|
|
115
136
|
export { isPasteTransformRegistered } from './tree-operations/paste/paste-transforms';
|
|
116
|
-
|
|
137
|
+
export { isLanguageRegistered } from './components/blocks/code/code-languages';
|
|
138
|
+
// ── Container-authoring API (pre-freeze) ─────────────────────────────────────
|
|
117
139
|
// Lets a plugin build an editable nested container as thinly as the built-in
|
|
118
140
|
// blockquote, without touching any editor context key.
|
|
119
141
|
export { default as BlockList } from './components/BlockList.svelte';
|
|
120
142
|
export { createContainerBlock } from './editor-actions/plugin/container';
|
|
121
|
-
// The one
|
|
122
|
-
// value
|
|
143
|
+
// The one place allowed to import from `components/`, so `editor-actions` keeps no upward
|
|
144
|
+
// value dependency on the component tree.
|
|
123
145
|
export function registerChromeLeaf(kind, opts) {
|
|
124
146
|
bindChromeLeaf(kind, TextEditableBlock, opts);
|
|
125
147
|
}
|
|
126
|
-
//
|
|
148
|
+
// Create the reserved child-0 node for a container's title leaf: the text plus its newline.
|
|
127
149
|
export { chromeChild } from './editor-actions/plugin/chrome-leaf';
|
|
128
|
-
// One definition of collapsed, shared by a component's getter and the
|
|
150
|
+
// One definition of collapsed, shared by a component's getter and the traversals over the CST.
|
|
129
151
|
export { isCollapsedContainer } from './schema/reserved-chrome';
|
|
130
|
-
// ── Editable-leaf authoring
|
|
131
|
-
// A text-editing leaf with
|
|
132
|
-
//
|
|
133
|
-
// createContainerBlock sibling for leaves.
|
|
152
|
+
// ── Editable-leaf authoring API (pre-freeze) ─────────────────────────────────
|
|
153
|
+
// A text-editing leaf with the browser's own caret, IME, undo and selection: plain (a commit per
|
|
154
|
+
// keystroke) or render-first (source while the caret is inside, one commit on blur).
|
|
134
155
|
export { createEditableLeaf } from './components/blocks/editable-leaf';
|
|
135
156
|
// ── Directive authoring (pre-freeze) ─────────────────────────────────────────
|
|
136
|
-
// `activateDirectives()`
|
|
137
|
-
// parses. The other symbols
|
|
157
|
+
// `activateDirectives()` takes over `:::`; call it once at startup, before the editor
|
|
158
|
+
// parses. The other symbols do nothing on their own: importing them takes over no grammar.
|
|
138
159
|
export { activateDirectives } from './components/blocks/directive/activate-directives';
|
|
139
160
|
export { registerDirective, isDirectiveRegistered } from './core/directive/registry';
|
|
140
|
-
// `escalatedColonCount` is the rule `serializeDirective`
|
|
141
|
-
//
|
|
142
|
-
// a body line reproducing the fence would otherwise close the container early.
|
|
161
|
+
// `escalatedColonCount` is the rule `serializeDirective` applies, for emitters building `:::name`
|
|
162
|
+
// text by concatenation, where a body line reproducing the fence would close it early.
|
|
143
163
|
export { escalatedColonCount, parseDirectiveAttributes, serializeDirective } from './core/directive/grammar';
|
|
144
164
|
// The `rebuildRaw` for a directive container whose child 0 is an editable title.
|
|
145
165
|
export { createDirectiveRebuild } from './editor-actions/plugin/directive-container';
|
|
146
166
|
// The wrap every `:::` body parses with; a directive kind declares it as its `container.bodyWrap`
|
|
147
|
-
// so the editor's
|
|
167
|
+
// so the editor's blank-line fix-up knows the blank line against the fence belongs to the fence.
|
|
148
168
|
export { DIRECTIVE_BODY_WRAP } from './core/directive/kinds';
|
|
149
169
|
// ── Renderer utilities (pre-freeze) ──────────────────────────────────────────
|
|
150
|
-
//
|
|
151
|
-
//
|
|
170
|
+
// Where an injected renderer is set and cached per theme, with the plugin's own fallback when it's
|
|
171
|
+
// missing or throws; and the bounded LRU memo under it. See the plugin guide's renderer recipe.
|
|
152
172
|
export { createBoundedMemo } from './bounded-memo';
|
|
173
|
+
export { createRendererSlot, createAsyncRendererSlot, renderSourceFallback } from './renderer-slot';
|
|
153
174
|
// ── Recognizer scan index (pre-freeze) ───────────────────────────────────────
|
|
154
|
-
//
|
|
155
|
-
//
|
|
156
|
-
// candidate at or after `from` (-1 when none), one scan per block behind a cap-2 memo.
|
|
175
|
+
// For a grammar with no early-stop byte: collect candidate positions once per block, then answer
|
|
176
|
+
// the first at or after `from` (-1 when none) behind a two-entry memo.
|
|
157
177
|
export { createScanIndex } from './scan-index';
|
|
158
178
|
// ── Paste transforms (pre-freeze) ────────────────────────────────────────────
|
|
159
179
|
// A pre-parse clipboard rewrite: inspect the raw pasted text, replace it or decline
|
|
160
|
-
// (null). Transforms run in install order at every paste
|
|
180
|
+
// (null). Transforms run in install order at every paste, never on load or while typing.
|
|
161
181
|
export { registerPasteTransform } from './tree-operations/paste/paste-transforms';
|
|
182
|
+
// ── Insert catalogue (pre-freeze) ────────────────────────────────────────────
|
|
183
|
+
// The blocks the insert menus offer, read through `editor.insertCatalogue`. A plugin adds its own
|
|
184
|
+
// block from `setup`, listed only in the editors that activate it; the icon is a menu glyph name.
|
|
185
|
+
export { registerInsertEntry } from './schema/insert-catalogue';
|
|
162
186
|
// ── Caret geometry (pre-freeze) ──────────────────────────────────────────────
|
|
163
|
-
//
|
|
164
|
-
//
|
|
165
|
-
// names one), and the sentinel for "wherever this leaf ends".
|
|
187
|
+
// What a kind answers `caretTargetAtPoint` with, the helper that turns a point in your element
|
|
188
|
+
// into the nearest offset, and the value for wherever the leaf ends.
|
|
166
189
|
export { caretOffsetAtPoint } from './cursor/point-offset';
|
|
167
190
|
export { CURSOR_END } from './block-component';
|
|
168
191
|
// ── Pointer gestures (pre-freeze) ────────────────────────────────────────────
|
|
169
|
-
// Put this attribute on an element whose drags
|
|
170
|
-
// editor's pointer
|
|
192
|
+
// Put this attribute on an element whose drags belong to your widget (a pan, a brush) and the
|
|
193
|
+
// editor's pointer handlers leave a click inside it alone: no block range, no click handling.
|
|
171
194
|
export { POINTER_GESTURE_ATTR } from './selection/pointer-gesture';
|
|
172
195
|
export { SELECTION_END } from './block-component';
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
<!--
|
|
2
|
-
One alert box for both
|
|
3
|
-
|
|
4
|
-
createContainerBlock hides all child-list state, so this owns only its chrome;
|
|
5
|
-
node/index/path go in as thunks so each is re-read live, never snapshotted.
|
|
2
|
+
One alert box for both kinds: the directive admonition (an editable title at child 0)
|
|
3
|
+
and the GitHub alert (no title, a static badge instead).
|
|
6
4
|
-->
|
|
7
5
|
<script lang="ts">
|
|
8
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
BlockList,
|
|
8
|
+
createContainerBlock,
|
|
9
|
+
getPluginMetadata,
|
|
10
|
+
isBlankText,
|
|
11
|
+
type NodeView
|
|
12
|
+
} from '../../plugin';
|
|
9
13
|
import {
|
|
10
14
|
capitalize,
|
|
11
15
|
coerceAdmonitionName,
|
|
@@ -30,7 +34,7 @@
|
|
|
30
34
|
? coerceAdmonitionName(getPluginMetadata<GithubAlertMetadata>(node)?.alertType?.toLowerCase())
|
|
31
35
|
: coerceAdmonitionName(getPluginMetadata<AdmonitionMetadata>(node)?.name)
|
|
32
36
|
);
|
|
33
|
-
const titleEmpty = $derived(isAlert || (node.children?.[0]?.raw ?? '')
|
|
37
|
+
const titleEmpty = $derived(isAlert || isBlankText(node.children?.[0]?.raw ?? ''));
|
|
34
38
|
|
|
35
39
|
export { containerApi };
|
|
36
40
|
</script>
|
|
@@ -54,7 +58,7 @@
|
|
|
54
58
|
</div>
|
|
55
59
|
|
|
56
60
|
<style>
|
|
57
|
-
/* A
|
|
61
|
+
/* A line down the left margin, not a card: this reads as a document, not a boxed callout. */
|
|
58
62
|
.admonition {
|
|
59
63
|
position: relative;
|
|
60
64
|
margin: 0.8em 0;
|
|
@@ -62,9 +66,8 @@
|
|
|
62
66
|
border-left: 3px solid var(--adm-accent);
|
|
63
67
|
}
|
|
64
68
|
|
|
65
|
-
/* One block per kind
|
|
66
|
-
|
|
67
|
-
read identically across host themes. */
|
|
69
|
+
/* One block per kind sets what varies, in fixed hex after GitHub's one-color-per-kind alert
|
|
70
|
+
palette, so an admonition looks the same whatever theme the host uses. */
|
|
68
71
|
.admonition[data-kind='note'] {
|
|
69
72
|
--adm-accent: #1f6feb;
|
|
70
73
|
--adm-label: 'Note';
|
|
@@ -101,7 +104,7 @@
|
|
|
101
104
|
line-height: 1.4em;
|
|
102
105
|
}
|
|
103
106
|
|
|
104
|
-
/* The alert badge is
|
|
107
|
+
/* The alert badge is decoration, never a caret target. */
|
|
105
108
|
.admonition[data-alert-source='github'] :global(.admonition-title) {
|
|
106
109
|
user-select: none;
|
|
107
110
|
cursor: default;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* The reference `:::name` directive container. Reuses the shared directive grammar rather
|
|
3
3
|
* than a hand-written opener, so the fence bytes stay the round-trip truth.
|
|
4
4
|
*/
|
|
5
|
-
import { activateDirectives, chromeChild, containerClosure, createDirectiveRebuild, declarePluginKind, defineBlockComponent, DIRECTIVE_BODY_WRAP, registerBlockComponent, registerBlockKind, registerBlockCommand, registerChromeLeaf, registerDirective, registerPasteTransform, isDirectiveRegistered, setPluginMetadata, getPluginMetadata } from '../../plugin';
|
|
5
|
+
import { activateDirectives, chromeChild, containerClosure, createDirectiveRebuild, declarePluginKind, defineBlockComponent, DIRECTIVE_BODY_WRAP, registerBlockComponent, registerBlockKind, registerBlockCommand, registerChromeLeaf, registerDirective, registerPasteTransform, isDirectiveRegistered, setPluginMetadata, getPluginMetadata, trimWhitespace } from '../../plugin';
|
|
6
6
|
import { ADMONITION, ADMONITION_KINDS, ADMONITION_TITLE, coerceAdmonitionName } from './kinds';
|
|
7
7
|
import { githubAlertsPasteTransform } from './convert-document';
|
|
8
8
|
import { registerGithubAlert } from './github-alert-kind';
|
|
@@ -10,7 +10,7 @@ import AdmonitionBlock from './AdmonitionBlock.svelte';
|
|
|
10
10
|
/** Child 0 is the title (the opener line's info, editable); children 1+ are the body. */
|
|
11
11
|
function admonitionFromDirective(kind, titleKind) {
|
|
12
12
|
return (parsed) => {
|
|
13
|
-
const title = parsed.fence.info
|
|
13
|
+
const title = trimWhitespace(parsed.fence.info);
|
|
14
14
|
const node = {
|
|
15
15
|
kind,
|
|
16
16
|
leadingTrivia: parsed.leadingTrivia,
|
|
@@ -35,13 +35,14 @@ export function registerAdmonitions(options) {
|
|
|
35
35
|
const admonition = declarePluginKind(ADMONITION);
|
|
36
36
|
const title = declarePluginKind(ADMONITION_TITLE);
|
|
37
37
|
const build = admonitionFromDirective(admonition, title);
|
|
38
|
-
// Every name resolves to one kind, which reads its variant back from metadata.
|
|
38
|
+
// Every name resolves to one kind, which reads its variant back from metadata. A name
|
|
39
|
+
// something else claimed first stays theirs.
|
|
39
40
|
for (const name of ADMONITION_KINDS) {
|
|
40
41
|
if (!isDirectiveRegistered('container', name)) {
|
|
41
42
|
registerDirective('container', name, { kind: admonition, fromDirective: build });
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
|
-
// `updateMetadata` is the
|
|
45
|
+
// `updateMetadata` is the only supported commit path: patch, rebuildRaw, one undoable edit.
|
|
45
46
|
const cycleKind = registerBlockCommand(admonition, 'admonition.cycleKind', (ctx) => {
|
|
46
47
|
const meta = getPluginMetadata(ctx.node);
|
|
47
48
|
const dir = ctx.arg === 'prev' ? -1 : 1;
|
|
@@ -51,10 +52,14 @@ export function registerAdmonitions(options) {
|
|
|
51
52
|
return true;
|
|
52
53
|
});
|
|
53
54
|
registerBlockKind(admonition, {
|
|
55
|
+
label: 'Admonition',
|
|
56
|
+
// A note reads as part of the text around it, so it shows no drag handle.
|
|
57
|
+
pageRole: 'prose',
|
|
54
58
|
mergeRole: 'container',
|
|
55
59
|
editable: true,
|
|
56
60
|
supportsInline: false,
|
|
57
|
-
//
|
|
61
|
+
// An opaque container has no text at either edge for the caret to step into, so both
|
|
62
|
+
// edges take the gap caret.
|
|
58
63
|
gapEdges: 'both',
|
|
59
64
|
container: {
|
|
60
65
|
// The title lives in the opener line, so raw is not a strip of the children.
|
|
@@ -62,10 +67,7 @@ export function registerAdmonitions(options) {
|
|
|
62
67
|
rebuildRaw: rebuildAdmonitionRaw,
|
|
63
68
|
bodyWrap: DIRECTIVE_BODY_WRAP,
|
|
64
69
|
reservedChrome: { kind: title },
|
|
65
|
-
unwrapRole: {
|
|
66
|
-
firstChildBackspace: 'keep-reserved-chrome',
|
|
67
|
-
middleChildBackspace: 'default-merge'
|
|
68
|
-
}
|
|
70
|
+
unwrapRole: { middleChildBackspace: 'default-merge' }
|
|
69
71
|
},
|
|
70
72
|
keymap: [{ chord: 'Mod+7', command: cycleKind }],
|
|
71
73
|
conformanceFixture: ':::note Heads up\n\nbody\n\n:::\n',
|
|
@@ -87,7 +89,7 @@ export function registerAdmonitions(options) {
|
|
|
87
89
|
}
|
|
88
90
|
})
|
|
89
91
|
});
|
|
90
|
-
registerChromeLeaf(title, { blockClass: 'admonition-title' });
|
|
92
|
+
registerChromeLeaf(title, { label: 'Title', blockClass: 'admonition-title' });
|
|
91
93
|
registerBlockComponent(admonition, defineBlockComponent(AdmonitionBlock));
|
|
92
94
|
if (options?.convertAlertsOnPaste) {
|
|
93
95
|
registerPasteTransform(githubAlertsPasteTransform);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* `getSource()` → transform → write the `source` prop back.
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* GitHub-alert conversion over a whole document, and the supported way to rewrite one:
|
|
3
|
+
* `getSource()` → transform → write the `source` prop back. Going through `parse` rather
|
|
4
|
+
* than scanning lines is what makes it fence-safe; nested alerts are skipped because
|
|
5
|
+
* rewriting one would mean rebuilding its ancestors' raw.
|
|
6
6
|
*/
|
|
7
7
|
import { type PasteTransform } from '../../plugin';
|
|
8
8
|
import { type AlertConversion } from './gh-alert';
|
|
9
9
|
export declare function convertGithubAlertsInDocument(source: string): AlertConversion;
|
|
10
|
-
/** The line
|
|
10
|
+
/** The line scan short-circuits the common no-alert paste before the parse. */
|
|
11
11
|
export declare const githubAlertsPasteTransform: PasteTransform;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* `getSource()` → transform → write the `source` prop back.
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* GitHub-alert conversion over a whole document, and the supported way to rewrite one:
|
|
3
|
+
* `getSource()` → transform → write the `source` prop back. Going through `parse` rather
|
|
4
|
+
* than scanning lines is what makes it fence-safe; nested alerts are skipped because
|
|
5
|
+
* rewriting one would mean rebuilding its ancestors' raw.
|
|
6
6
|
*/
|
|
7
|
-
import { parse } from '../../plugin';
|
|
7
|
+
import { documentLineEnding, parse } from '../../plugin';
|
|
8
8
|
import { convertAlertBlockquoteRaw, hasGithubAlert } from './gh-alert';
|
|
9
9
|
export function convertGithubAlertsInDocument(source) {
|
|
10
10
|
const doc = parse(source, { scope: 'document' });
|
|
11
|
+
const ending = documentLineEnding(doc);
|
|
11
12
|
let changed = false;
|
|
12
13
|
const parts = [doc.prefix];
|
|
13
14
|
for (const child of doc.children) {
|
|
@@ -15,7 +16,7 @@ export function convertGithubAlertsInDocument(source) {
|
|
|
15
16
|
// Both kinds feed the same first-line converter: a plain blockquote may still
|
|
16
17
|
// hold a mid-quote marker, which must stay literal.
|
|
17
18
|
const isAlertShaped = child.kind === 'blockquote' || child.kind === 'githubAlert';
|
|
18
|
-
const converted = isAlertShaped ? convertAlertBlockquoteRaw(child.raw) : null;
|
|
19
|
+
const converted = isAlertShaped ? convertAlertBlockquoteRaw(child.raw, ending) : null;
|
|
19
20
|
if (converted !== null) {
|
|
20
21
|
parts.push(converted);
|
|
21
22
|
changed = true;
|
|
@@ -27,7 +28,7 @@ export function convertGithubAlertsInDocument(source) {
|
|
|
27
28
|
parts.push(doc.suffix);
|
|
28
29
|
return { converted: parts.join(''), changed };
|
|
29
30
|
}
|
|
30
|
-
/** The line
|
|
31
|
+
/** The line scan short-circuits the common no-alert paste before the parse. */
|
|
31
32
|
export const githubAlertsPasteTransform = {
|
|
32
33
|
name: 'admonitions.github-alerts',
|
|
33
34
|
transform(text) {
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one place `> [!TYPE]` is recognized, shared with the native `githubAlert` opener.
|
|
3
|
+
* Both converters ask the parser how far the blockquote runs, so CommonMark §5.1 lazy
|
|
4
|
+
* continuation is handled identically. For a whole document use `convert-document.ts`
|
|
5
|
+
* instead: the scanner here is not fence-safe.
|
|
6
|
+
*/
|
|
7
|
+
import { type LineEnding } from '../../plugin';
|
|
1
8
|
/** The type as typed (`NOTE`, `Note`); the opener stores it verbatim so source casing
|
|
2
9
|
* survives a rebuild. */
|
|
3
10
|
export declare function matchAlertMarker(line: string): string | null;
|
|
@@ -8,6 +15,6 @@ export interface AlertConversion {
|
|
|
8
15
|
}
|
|
9
16
|
/** GitHub honors `[!TYPE]` only on the blockquote's first line; everything after,
|
|
10
17
|
* lazy-continuation lines and later literal markers alike, is body. */
|
|
11
|
-
export declare function convertAlertBlockquoteRaw(raw: string): string | null;
|
|
18
|
+
export declare function convertAlertBlockquoteRaw(raw: string, ending: LineEnding): string | null;
|
|
12
19
|
export declare function convertGithubAlerts(text: string): AlertConversion;
|
|
13
20
|
export declare function hasGithubAlert(text: string): boolean;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
3
|
-
* Both converters
|
|
4
|
-
* continuation
|
|
5
|
-
*
|
|
2
|
+
* The one place `> [!TYPE]` is recognized, shared with the native `githubAlert` opener.
|
|
3
|
+
* Both converters ask the parser how far the blockquote runs, so CommonMark §5.1 lazy
|
|
4
|
+
* continuation is handled identically. For a whole document use `convert-document.ts`
|
|
5
|
+
* instead: the scanner here is not fence-safe.
|
|
6
6
|
*/
|
|
7
|
-
import { blockquoteExtent, escalatedColonCount, splitLines } from '../../plugin';
|
|
7
|
+
import { blockquoteExtent, escalatedColonCount, firstLineEnding, splitLines } from '../../plugin';
|
|
8
8
|
import { ADMONITION_KINDS } from './kinds';
|
|
9
9
|
const ALERT_NAMES = new Set(ADMONITION_KINDS);
|
|
10
10
|
const CANONICAL_COLONS = 3;
|
|
11
|
-
/** Every `>` pattern here caps indent at CommonMark's 0
|
|
12
|
-
* indented code, and
|
|
11
|
+
/** Every `>` pattern here caps indent at CommonMark's 0 to 3 spaces: past that the line is
|
|
12
|
+
* indented code, and taking it would promote a literal `>` to a marker on rebuild. */
|
|
13
13
|
const MARKER = /^ {0,3}>[ \t]*\[!([A-Za-z]+)\][ \t]*$/;
|
|
14
14
|
const QUOTE_OPEN = /^ {0,3}>/;
|
|
15
15
|
/** The type as typed (`NOTE`, `Note`); the opener stores it verbatim so source casing
|
|
@@ -22,20 +22,16 @@ export function stripQuoteMarker(line) {
|
|
|
22
22
|
const m = /^ {0,3}>[ \t]?/.exec(line);
|
|
23
23
|
return m ? line.slice(m[0].length) : line;
|
|
24
24
|
}
|
|
25
|
-
/**
|
|
26
|
-
*
|
|
27
|
-
|
|
28
|
-
* quote level promotes a nested `> [!TIP]` to a top-level marker a later pass would convert again.
|
|
29
|
-
*/
|
|
30
|
-
function emitDirective(name, source) {
|
|
31
|
-
const fallback = source.find((line) => line.lineEnding !== '')?.lineEnding ?? '\n';
|
|
25
|
+
/** Each emitted line keeps its own ending, else `ending`, so CRLF survives. The body converts in
|
|
26
|
+
* the same pass, since stripping a quote level exposes a nested `> [!TIP]` to a second pass. */
|
|
27
|
+
function emitDirective(name, source, fallback) {
|
|
32
28
|
const stripped = source
|
|
33
29
|
.slice(1)
|
|
34
30
|
.map((line) => stripQuoteMarker(line.text) + (line.lineEnding || fallback))
|
|
35
31
|
.join('');
|
|
36
|
-
const body = splitLines(
|
|
37
|
-
//
|
|
38
|
-
// container's own closer once
|
|
32
|
+
const body = splitLines(convertAlerts(stripped, fallback).converted);
|
|
33
|
+
// The fence runs longer than any colon run in the body, which would otherwise read as
|
|
34
|
+
// this container's own closer once the output is written into the document.
|
|
39
35
|
const colons = ':'.repeat(escalatedColonCount(body.map((line) => line.text).join('\n'), CANONICAL_COLONS));
|
|
40
36
|
let out = `${colons}${name}${source[0].lineEnding || fallback}`;
|
|
41
37
|
for (let i = 0; i < body.length; i++)
|
|
@@ -44,14 +40,17 @@ function emitDirective(name, source) {
|
|
|
44
40
|
}
|
|
45
41
|
/** GitHub honors `[!TYPE]` only on the blockquote's first line; everything after,
|
|
46
42
|
* lazy-continuation lines and later literal markers alike, is body. */
|
|
47
|
-
export function convertAlertBlockquoteRaw(raw) {
|
|
43
|
+
export function convertAlertBlockquoteRaw(raw, ending) {
|
|
48
44
|
const lines = splitLines(raw);
|
|
49
45
|
if (lines.length === 0)
|
|
50
46
|
return null;
|
|
51
47
|
const typed = matchAlertMarker(lines[0].text);
|
|
52
|
-
return typed ? emitDirective(typed.toLowerCase(), lines) : null;
|
|
48
|
+
return typed ? emitDirective(typed.toLowerCase(), lines, ending) : null;
|
|
53
49
|
}
|
|
54
50
|
export function convertGithubAlerts(text) {
|
|
51
|
+
return convertAlerts(text, firstLineEnding(text) ?? '\n');
|
|
52
|
+
}
|
|
53
|
+
function convertAlerts(text, ending) {
|
|
55
54
|
const lines = splitLines(text);
|
|
56
55
|
let converted = '';
|
|
57
56
|
let changed = false;
|
|
@@ -60,10 +59,10 @@ export function convertGithubAlerts(text) {
|
|
|
60
59
|
const typed = matchAlertMarker(lines[i].text);
|
|
61
60
|
if (typed && startsBlockquote(lines, i)) {
|
|
62
61
|
const { nextIndex } = blockquoteExtent(lines, i, lines.length);
|
|
63
|
-
// A marker line always opens a quote, so the extent
|
|
64
|
-
//
|
|
62
|
+
// A marker line always opens a quote, so the extent covers at least this line;
|
|
63
|
+
// checked anyway because a loosened indent cap would hang this loop.
|
|
65
64
|
if (nextIndex > i) {
|
|
66
|
-
converted += emitDirective(typed.toLowerCase(), lines.slice(i, nextIndex));
|
|
65
|
+
converted += emitDirective(typed.toLowerCase(), lines.slice(i, nextIndex), ending);
|
|
67
66
|
changed = true;
|
|
68
67
|
i = nextIndex;
|
|
69
68
|
continue;
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Native GitHub alerts as a strip container
|
|
3
|
-
* never rewritten to `:::note`. The marker lives only in the container's raw
|
|
4
|
-
* metadata, so `strip(raw)` equals the serialized children.
|
|
5
|
-
*
|
|
6
|
-
* unambiguous per kind (the ATX/setext heading precedent).
|
|
2
|
+
* Native GitHub alerts as a strip container shaped like a blockquote: the source bytes are
|
|
3
|
+
* kept, never rewritten to `:::note`. The marker lives only in the container's raw and
|
|
4
|
+
* metadata, so `strip(raw)` equals the serialized children. Its own kind rather than a
|
|
5
|
+
* variant of the directive admonition, so kind stability and rebuildRaw stay unambiguous.
|
|
7
6
|
*/
|
|
8
7
|
import { type CstNode } from '../../plugin';
|
|
9
|
-
/**
|
|
10
|
-
* the marker's own ending is read off the current raw. */
|
|
8
|
+
/** Every body line keeps its own ending; the marker line keeps the one the current raw gives it. */
|
|
11
9
|
export declare function rebuildGithubAlertRaw(node: CstNode): void;
|
|
12
10
|
export declare function registerGithubAlert(): void;
|