@voithos-labs/aragonite 0.10.3 → 0.10.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/a11y-strings.d.ts +12 -5
- package/dist/a11y-strings.js +61 -5
- package/dist/action-contracts.d.ts +242 -155
- package/dist/action-contracts.js +2 -2
- package/dist/active-editor.d.ts +3 -3
- package/dist/active-editor.js +8 -9
- package/dist/ambient/ambient-dom.d.ts +2 -5
- package/dist/ambient/ambient-dom.js +16 -62
- package/dist/assert.js +6 -5
- package/dist/block-component.d.ts +135 -109
- package/dist/block-component.js +30 -22
- package/dist/block-id.d.ts +6 -10
- package/dist/block-id.js +25 -14
- package/dist/bounded-memo.d.ts +5 -5
- package/dist/bounded-memo.js +6 -6
- package/dist/components/BlockDragHandle.svelte +13 -20
- package/dist/components/BlockHost.svelte +56 -134
- package/dist/components/BlockList.svelte +22 -19
- package/dist/components/DecorationOverlay.svelte +9 -10
- package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
- package/dist/components/Editor.svelte +619 -1089
- package/dist/components/Editor.svelte.d.ts +9 -20
- package/dist/components/GapCaret.svelte +26 -59
- package/dist/components/SelectionOverlay.svelte +36 -67
- package/dist/components/SelectionOverlay.svelte.d.ts +6 -4
- package/dist/components/TailInsert.svelte +8 -55
- package/dist/components/TailInsert.svelte.d.ts +4 -6
- package/dist/components/block-content-selector.d.ts +11 -11
- package/dist/components/block-content-selector.js +11 -11
- package/dist/components/block-el-lookup.d.ts +6 -0
- package/dist/components/block-el-lookup.js +27 -0
- package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
- package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
- package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
- package/dist/components/blocks/code/CodeBlock.svelte +255 -276
- package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
- package/dist/components/blocks/code/CodeBlockRail.svelte +103 -100
- package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
- package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
- package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
- package/dist/components/blocks/code/code-bootstrap.js +35 -28
- package/dist/components/blocks/code/code-context-actions.js +5 -4
- package/dist/components/blocks/code/code-enter.js +2 -2
- package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
- package/dist/components/blocks/code/code-fence-boundary.js +40 -66
- package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
- package/dist/components/blocks/code/code-fence-exit.js +24 -25
- package/dist/components/blocks/code/code-indent.d.ts +2 -2
- package/dist/components/blocks/code/code-indent.js +4 -7
- package/dist/components/blocks/code/code-languages.d.ts +16 -12
- package/dist/components/blocks/code/code-languages.js +58 -32
- package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
- package/dist/components/blocks/code/code-paste-surface.js +9 -18
- package/dist/components/blocks/code/code-renderer.d.ts +21 -5
- package/dist/components/blocks/code/code-renderer.js +90 -125
- package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
- package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
- package/dist/components/blocks/directive/activate-directives.js +18 -13
- package/dist/components/blocks/editable-leaf.d.ts +50 -74
- package/dist/components/blocks/editable-leaf.js +144 -202
- package/dist/components/blocks/editable-surface.d.ts +96 -100
- package/dist/components/blocks/editable-surface.js +101 -109
- package/dist/components/blocks/list/ListBlock.svelte +46 -90
- package/dist/components/blocks/list/ListItemBlock.svelte +99 -144
- package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +3 -0
- package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
- package/dist/components/blocks/list/task-checkbox.js +12 -7
- package/dist/components/blocks/plain-text-backend.d.ts +4 -20
- package/dist/components/blocks/plain-text-backend.js +9 -43
- package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
- package/dist/components/blocks/surface-wiring.svelte.js +15 -34
- package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
- package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
- package/dist/components/blocks/table/TableBlock.svelte +100 -165
- package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
- package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
- package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
- package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
- package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
- package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
- package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
- package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
- package/dist/components/blocks/table/cell-pointer.js +49 -71
- package/dist/components/blocks/table/cell-render.d.ts +24 -29
- package/dist/components/blocks/table/cell-render.js +29 -31
- package/dist/components/blocks/table/selected-cells.d.ts +7 -7
- package/dist/components/blocks/table/selected-cells.js +9 -13
- package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
- package/dist/components/blocks/table/table-caret-at-point.js +5 -5
- package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
- package/dist/components/blocks/table/table-cell-paste.js +27 -43
- package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
- package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
- package/dist/components/blocks/table/table-menu-model.js +6 -10
- package/dist/components/blocks/table/table-navigation.js +2 -2
- package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
- package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
- package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
- package/dist/components/blocks/text/auto-pair-record.js +51 -0
- package/dist/components/blocks/text/click-snap-guard.d.ts +9 -4
- package/dist/components/blocks/text/click-snap-guard.js +16 -5
- package/dist/components/blocks/text/composition-seat.d.ts +17 -14
- package/dist/components/blocks/text/composition-seat.js +11 -11
- package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
- package/dist/components/blocks/text/construct-edge-delete.js +50 -65
- package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
- package/dist/components/blocks/text/construct-reveal.js +13 -14
- package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
- package/dist/components/blocks/text/delimiter-autopair.js +87 -103
- package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
- package/dist/components/blocks/text/edge-policy-dispatch.js +164 -180
- package/dist/components/blocks/text/edge-seat.d.ts +17 -26
- package/dist/components/blocks/text/edge-seat.js +43 -70
- package/dist/components/blocks/text/link-at-point.d.ts +9 -9
- package/dist/components/blocks/text/link-at-point.js +12 -15
- package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
- package/dist/components/blocks/text/live-join-seam.js +75 -112
- package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
- package/dist/components/blocks/text/live-selection-edit.js +32 -105
- package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
- package/dist/components/blocks/text/live-split-rebalance.js +50 -67
- package/dist/components/blocks/text/marker-completion.d.ts +7 -12
- package/dist/components/blocks/text/marker-completion.js +17 -10
- package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
- package/dist/components/blocks/text/pending-mark-insert.js +30 -49
- package/dist/components/blocks/text/screen-diff.d.ts +5 -15
- package/dist/components/blocks/text/screen-diff.js +5 -19
- package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
- package/dist/components/blocks/text/text-clipboard.js +27 -32
- package/dist/components/blocks/text/text-keydown.d.ts +20 -30
- package/dist/components/blocks/text/text-keydown.js +54 -51
- package/dist/components/blocks/text/text-render.d.ts +25 -35
- package/dist/components/blocks/text/text-render.js +82 -61
- package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
- package/dist/components/blocks/text/widget-adjacency.js +17 -17
- package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
- package/dist/components/blocks/text/widget-interaction.js +243 -208
- package/dist/components/blocks/widget-portal.d.ts +20 -29
- package/dist/components/blocks/widget-portal.js +16 -14
- package/dist/components/built-in-blocks.d.ts +3 -4
- package/dist/components/built-in-blocks.js +17 -18
- package/dist/components/drag-handle.d.ts +13 -30
- package/dist/components/drag-handle.js +25 -63
- package/dist/components/editor-built-ins.d.ts +1 -0
- package/dist/components/editor-built-ins.js +16 -0
- package/dist/components/editor-root-clipboard.d.ts +6 -6
- package/dist/components/editor-root-clipboard.js +16 -27
- package/dist/components/editor-root-document-swap.d.ts +49 -0
- package/dist/components/editor-root-document-swap.js +54 -0
- package/dist/components/editor-root-focus.d.ts +5 -4
- package/dist/components/editor-root-focus.js +51 -22
- package/dist/components/editor-root-focused-surface.d.ts +35 -0
- package/dist/components/editor-root-focused-surface.js +65 -0
- package/dist/components/editor-root-geometry.d.ts +15 -24
- package/dist/components/editor-root-geometry.js +27 -31
- package/dist/components/editor-root-gestures.d.ts +39 -0
- package/dist/components/editor-root-gestures.js +189 -0
- package/dist/components/editor-root-keydown.d.ts +10 -25
- package/dist/components/editor-root-keydown.js +19 -43
- package/dist/components/editor-root-listeners.d.ts +22 -31
- package/dist/components/editor-root-listeners.js +49 -46
- package/dist/components/editor-root-menus.d.ts +51 -0
- package/dist/components/editor-root-menus.js +147 -0
- package/dist/components/editor-root-mode-flip.d.ts +16 -11
- package/dist/components/editor-root-mode-flip.js +36 -34
- package/dist/components/editor-root-scroll-host.d.ts +22 -0
- package/dist/components/editor-root-scroll-host.js +34 -0
- package/dist/components/editor-root-test-surface.d.ts +48 -0
- package/dist/components/editor-root-test-surface.js +6 -0
- package/dist/components/image/ImageOverlayHost.svelte +44 -35
- package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
- package/dist/components/image/ImageProperties.svelte +37 -41
- package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
- package/dist/components/image/ImageResizeHandles.svelte +26 -30
- package/dist/components/image/image-crop.d.ts +5 -11
- package/dist/components/image/image-crop.js +5 -11
- package/dist/components/image/image-edit-commit.d.ts +19 -16
- package/dist/components/image/image-edit-commit.js +74 -38
- package/dist/components/image/image-resize.d.ts +2 -5
- package/dist/components/image/image-resize.js +3 -6
- package/dist/components/image/image-widget-editing.d.ts +3 -3
- package/dist/components/image/image-widget-editing.js +9 -9
- package/dist/components/image/widget-dom.d.ts +2 -3
- package/dist/components/image/widget-dom.js +19 -24
- package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
- package/dist/components/image/widget-selection-state.svelte.js +26 -19
- package/dist/components/kind-cue.svelte.d.ts +21 -0
- package/dist/components/kind-cue.svelte.js +35 -0
- package/dist/components/link-card/LinkCard.svelte +115 -64
- package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
- package/dist/components/link-card/LinkCardHost.svelte +42 -33
- package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
- package/dist/components/link-card/link-card-commit.d.ts +16 -19
- package/dist/components/link-card/link-card-commit.js +21 -30
- package/dist/components/link-card/link-card-entry.d.ts +13 -23
- package/dist/components/link-card/link-card-entry.js +16 -24
- package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
- package/dist/components/link-card/link-card-state.svelte.js +2 -2
- package/dist/components/lrd-map-gate.d.ts +4 -11
- package/dist/components/lrd-map-gate.js +5 -11
- package/dist/components/menu/BlockMenu.svelte +20 -81
- package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
- package/dist/components/menu/InlineMenuHost.svelte +191 -0
- package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
- package/dist/components/menu/MenuIcon.svelte +3 -103
- package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
- package/dist/components/menu/SelectionToolbar.svelte +380 -0
- package/dist/components/menu/SelectionToolbar.svelte.d.ts +14 -0
- package/dist/components/menu/clipboard-actions.d.ts +3 -4
- package/dist/components/menu/clipboard-actions.js +3 -4
- package/dist/components/menu/default-context-actions.d.ts +4 -13
- package/dist/components/menu/default-context-actions.js +49 -67
- package/dist/components/menu/flyout-placement.d.ts +2 -2
- package/dist/components/menu/flyout-placement.js +2 -2
- package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
- package/dist/components/menu/menu-presence.svelte.js +19 -0
- package/dist/components/paste-image-arm.d.ts +6 -11
- package/dist/components/paste-image-arm.js +11 -18
- package/dist/components/portal.d.ts +2 -5
- package/dist/components/portal.js +4 -7
- package/dist/core/directive/activate.d.ts +4 -5
- package/dist/core/directive/activate.js +8 -9
- package/dist/core/directive/container-opener.js +13 -12
- package/dist/core/directive/grammar.d.ts +2 -5
- package/dist/core/directive/grammar.js +10 -10
- package/dist/core/directive/kinds.d.ts +4 -7
- package/dist/core/directive/kinds.js +14 -16
- package/dist/core/directive/registry.d.ts +12 -9
- package/dist/core/directive/registry.js +19 -20
- package/dist/core/directive/text-recognizer.d.ts +3 -2
- package/dist/core/directive/text-recognizer.js +5 -9
- package/dist/core/escapable.d.ts +1 -5
- package/dist/core/escapable.js +1 -5
- package/dist/core/inline/backticks.d.ts +3 -4
- package/dist/core/inline/backticks.js +3 -4
- package/dist/core/inline/character-refs.js +2 -1
- package/dist/core/inline/destination-bytes.d.ts +6 -3
- package/dist/core/inline/destination-bytes.js +50 -8
- package/dist/core/inline/entity-widget.d.ts +4 -3
- package/dist/core/inline/entity-widget.js +6 -6
- package/dist/core/inline/format-toggle.d.ts +22 -28
- package/dist/core/inline/format-toggle.js +97 -129
- package/dist/core/inline/html-entities.d.ts +2 -3
- package/dist/core/inline/html-entities.js +2 -3
- package/dist/core/inline/html-tag-grammar.js +6 -2
- package/dist/core/inline/image-dimensions.d.ts +2 -0
- package/dist/core/inline/image-dimensions.js +19 -2
- package/dist/core/inline/image-source-bytes.d.ts +11 -0
- package/dist/core/inline/image-source-bytes.js +71 -0
- package/dist/core/inline/index.d.ts +28 -21
- package/dist/core/inline/index.js +56 -34
- package/dist/core/inline/inline-cache.d.ts +12 -15
- package/dist/core/inline/inline-cache.js +11 -14
- package/dist/core/inline/inline-widgets.d.ts +55 -68
- package/dist/core/inline/inline-widgets.js +55 -58
- package/dist/core/inline/link-destination.d.ts +31 -0
- package/dist/core/inline/link-destination.js +129 -0
- package/dist/core/inline/link-reference-resolver.d.ts +8 -6
- package/dist/core/inline/link-reference-resolver.js +10 -6
- package/dist/core/inline/link-source-bytes.d.ts +31 -0
- package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
- package/dist/core/inline/live-edit/read-back.d.ts +29 -0
- package/dist/core/inline/live-edit/read-back.js +50 -0
- package/dist/core/inline/picture.d.ts +10 -0
- package/dist/core/inline/picture.js +40 -0
- package/dist/core/inline/scan/autolinks.d.ts +7 -8
- package/dist/core/inline/scan/autolinks.js +80 -59
- package/dist/core/inline/scan/brackets.d.ts +2 -2
- package/dist/core/inline/scan/brackets.js +6 -103
- package/dist/core/inline/scan/code-spans.d.ts +4 -0
- package/dist/core/inline/scan/code-spans.js +8 -0
- package/dist/core/inline/scan/emphasis.js +10 -14
- package/dist/core/inline/scan/index.d.ts +3 -1
- package/dist/core/inline/scan/index.js +32 -33
- package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
- package/dist/core/inline/scan/plugin-syntax.js +75 -89
- package/dist/core/inline/scan/scan-state.d.ts +2 -0
- package/dist/core/inline/scan/scan-state.js +1 -0
- package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
- package/dist/core/inline/scan/simple-nodes.js +2 -5
- package/dist/core/inline/scan/triggers.d.ts +17 -0
- package/dist/core/inline/scan/triggers.js +26 -0
- package/dist/core/inline/scan/url.js +8 -10
- package/dist/core/inline/transparency.d.ts +2 -1
- package/dist/core/inline/transparency.js +33 -17
- package/dist/core/inline/visibility.d.ts +30 -49
- package/dist/core/inline/visibility.js +31 -49
- package/dist/core/inline/walk.d.ts +4 -10
- package/dist/core/inline/walk.js +4 -10
- package/dist/core/inline-render.d.ts +22 -27
- package/dist/core/inline-render.js +51 -60
- package/dist/core/lines.d.ts +67 -26
- package/dist/core/lines.js +164 -33
- package/dist/core/metadata-parity.d.ts +9 -0
- package/dist/core/metadata-parity.js +25 -0
- package/dist/core/node-views.d.ts +7 -6
- package/dist/core/node-views.js +5 -5
- package/dist/core/nodes.d.ts +34 -44
- package/dist/core/nodes.js +4 -12
- package/dist/core/parser.d.ts +27 -34
- package/dist/core/parser.js +53 -67
- package/dist/core/parsers/blockquote.d.ts +5 -8
- package/dist/core/parsers/blockquote.js +11 -10
- package/dist/core/parsers/built-in-openers.d.ts +2 -5
- package/dist/core/parsers/built-in-openers.js +5 -8
- package/dist/core/parsers/fence-syntax.d.ts +36 -7
- package/dist/core/parsers/fence-syntax.js +61 -11
- package/dist/core/parsers/fenced-code.d.ts +16 -0
- package/dist/core/parsers/fenced-code.js +16 -15
- package/dist/core/parsers/heading.d.ts +19 -2
- package/dist/core/parsers/heading.js +50 -2
- package/dist/core/parsers/html-block.d.ts +3 -6
- package/dist/core/parsers/html-block.js +10 -11
- package/dist/core/parsers/indented-code.d.ts +1 -1
- package/dist/core/parsers/indented-code.js +2 -8
- package/dist/core/parsers/link-reference.d.ts +5 -3
- package/dist/core/parsers/link-reference.js +116 -120
- package/dist/core/parsers/list.d.ts +12 -5
- package/dist/core/parsers/list.js +53 -36
- package/dist/core/parsers/paragraph.d.ts +3 -3
- package/dist/core/parsers/paragraph.js +14 -5
- package/dist/core/parsers/table-completion.d.ts +2 -5
- package/dist/core/parsers/table-completion.js +7 -10
- package/dist/core/parsers/table.d.ts +8 -8
- package/dist/core/parsers/table.js +23 -26
- package/dist/core/parsers/thematic-break.js +15 -14
- package/dist/core/paths.d.ts +13 -0
- package/dist/core/paths.js +31 -0
- package/dist/core/terminator-escalation.d.ts +0 -7
- package/dist/core/terminator-escalation.js +5 -8
- package/dist/core/url-policy.d.ts +2 -5
- package/dist/core/url-policy.js +8 -12
- package/dist/cursor/caret-memory.d.ts +34 -0
- package/dist/cursor/caret-memory.js +82 -0
- package/dist/cursor/coordinate-spaces.d.ts +26 -19
- package/dist/cursor/coordinate-spaces.js +32 -20
- package/dist/cursor/dom-walk.d.ts +7 -13
- package/dist/cursor/dom-walk.js +7 -13
- package/dist/cursor/edge-affinity.d.ts +7 -35
- package/dist/cursor/edge-affinity.js +13 -44
- package/dist/cursor/focused-caret.d.ts +6 -8
- package/dist/cursor/focused-caret.js +7 -16
- package/dist/cursor/height-model.d.ts +3 -3
- package/dist/cursor/height-model.js +5 -5
- package/dist/cursor/height-oracle.d.ts +10 -7
- package/dist/cursor/height-oracle.js +26 -75
- package/dist/cursor/observe-resize.d.ts +13 -0
- package/dist/cursor/observe-resize.js +43 -0
- package/dist/cursor/overlay-rects.d.ts +2 -5
- package/dist/cursor/overlay-rects.js +2 -5
- package/dist/cursor/overlay-remeasure.d.ts +6 -7
- package/dist/cursor/overlay-remeasure.js +10 -14
- package/dist/cursor/pending-marks.d.ts +7 -9
- package/dist/cursor/pending-marks.js +6 -27
- package/dist/cursor/point-offset.d.ts +16 -10
- package/dist/cursor/point-offset.js +60 -25
- package/dist/cursor/reveal-source.d.ts +7 -11
- package/dist/cursor/reveal-source.js +10 -18
- package/dist/cursor/scroll-ancestors.d.ts +9 -20
- package/dist/cursor/scroll-ancestors.js +14 -26
- package/dist/cursor/scroll-owner.d.ts +92 -0
- package/dist/cursor/scroll-owner.js +283 -0
- package/dist/cursor/scrollport.d.ts +16 -8
- package/dist/cursor/scrollport.js +28 -5
- package/dist/cursor/sticky-column.d.ts +6 -29
- package/dist/cursor/sticky-column.js +6 -49
- package/dist/cursor/sticky-measure.d.ts +14 -9
- package/dist/cursor/sticky-measure.js +99 -49
- package/dist/cursor/surface-backend.d.ts +41 -0
- package/dist/cursor/surface-backend.js +78 -0
- package/dist/cursor/typography-estimates.d.ts +3 -3
- package/dist/cursor/typography-estimates.js +3 -3
- package/dist/cursor/visual-lines.d.ts +25 -13
- package/dist/cursor/visual-lines.js +72 -28
- package/dist/cursor/widget-edge-snap.d.ts +23 -0
- package/dist/cursor/widget-edge-snap.js +39 -0
- package/dist/cursor/widget-offset.d.ts +111 -102
- package/dist/cursor/widget-offset.js +352 -177
- package/dist/debug/diagnostics-report.d.ts +6 -6
- package/dist/debug/diagnostics-report.js +5 -5
- package/dist/debug/dump-tree.js +2 -2
- package/dist/debug/editor-diagnostics.d.ts +15 -0
- package/dist/debug/editor-diagnostics.js +33 -0
- package/dist/debug/inspect.d.ts +2 -2
- package/dist/debug/inspect.js +4 -4
- package/dist/debug/interaction-trace.d.ts +14 -15
- package/dist/debug/interaction-trace.js +19 -20
- package/dist/debug/operations-log.d.ts +1 -1
- package/dist/debug/operations-log.js +1 -1
- package/dist/decorations/buckets.d.ts +6 -12
- package/dist/decorations/buckets.js +4 -11
- package/dist/decorations/decoration-state.svelte.d.ts +2 -3
- package/dist/decorations/decoration-state.svelte.js +24 -26
- package/dist/decorations/island-dom.d.ts +10 -18
- package/dist/decorations/island-dom.js +25 -50
- package/dist/decorations/reserved-attrs.d.ts +6 -8
- package/dist/decorations/reserved-attrs.js +31 -17
- package/dist/decorations/types.d.ts +6 -7
- package/dist/decorations/types.js +2 -1
- package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
- package/dist/decorations/use-block-decorations.svelte.js +71 -0
- package/dist/decorations/widget-dom.d.ts +3 -3
- package/dist/decorations/widget-dom.js +5 -5
- package/dist/dev-warn.d.ts +5 -2
- package/dist/dev-warn.js +16 -4
- package/dist/editor-actions/ancestry-folds.d.ts +9 -14
- package/dist/editor-actions/ancestry-folds.js +13 -18
- package/dist/editor-actions/block-edit-core.d.ts +49 -22
- package/dist/editor-actions/block-edit-core.js +279 -151
- package/dist/editor-actions/block-edit-scope.d.ts +63 -50
- package/dist/editor-actions/block-edit-scope.js +100 -48
- package/dist/editor-actions/block-edit.d.ts +2 -3
- package/dist/editor-actions/block-edit.js +14 -90
- package/dist/editor-actions/commit/history.d.ts +4 -4
- package/dist/editor-actions/commit/history.js +33 -34
- package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
- package/dist/editor-actions/commit/reading-write-gate.js +56 -0
- package/dist/editor-actions/commit/text-batch.d.ts +7 -11
- package/dist/editor-actions/commit/text-batch.js +6 -7
- package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
- package/dist/editor-actions/commit/undo-controller.js +346 -216
- package/dist/editor-actions/container-block-component.d.ts +32 -51
- package/dist/editor-actions/container-block-component.js +66 -92
- package/dist/editor-actions/container-edit.d.ts +4 -2
- package/dist/editor-actions/container-edit.js +14 -44
- package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
- package/dist/editor-actions/container-exit-overrides.js +19 -21
- package/dist/editor-actions/deps.d.ts +25 -32
- package/dist/editor-actions/enter-completion.d.ts +12 -15
- package/dist/editor-actions/enter-completion.js +49 -51
- package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
- package/dist/editor-actions/focus/focus-dispatch.js +33 -52
- package/dist/editor-actions/focus/focus-landing.d.ts +11 -5
- package/dist/editor-actions/focus/focus-landing.js +29 -14
- package/dist/editor-actions/focus/focus.d.ts +3 -2
- package/dist/editor-actions/focus/focus.js +42 -59
- package/dist/editor-actions/index.d.ts +4 -3
- package/dist/editor-actions/index.js +5 -4
- package/dist/editor-actions/inline-range-commit.d.ts +18 -16
- package/dist/editor-actions/inline-range-commit.js +45 -54
- package/dist/editor-actions/leaf-write.d.ts +11 -0
- package/dist/editor-actions/leaf-write.js +102 -0
- package/dist/editor-actions/list-context.d.ts +9 -10
- package/dist/editor-actions/list-context.js +115 -110
- package/dist/editor-actions/list-overrides.d.ts +13 -5
- package/dist/editor-actions/list-overrides.js +36 -12
- package/dist/editor-actions/merge-fallback.d.ts +10 -16
- package/dist/editor-actions/merge-fallback.js +11 -22
- package/dist/editor-actions/nested/container-actions.d.ts +37 -0
- package/dist/editor-actions/nested/container-actions.js +42 -0
- package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
- package/dist/editor-actions/nested/emptied-container.js +5 -0
- package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
- package/dist/editor-actions/nested/nested-actions.js +17 -15
- package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
- package/dist/editor-actions/nested/nested-block-edit.js +40 -134
- package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
- package/dist/editor-actions/nested/nested-focus.js +33 -21
- package/dist/editor-actions/paste-coordinator.d.ts +3 -2
- package/dist/editor-actions/paste-coordinator.js +17 -13
- package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
- package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
- package/dist/editor-actions/plugin/container.d.ts +55 -76
- package/dist/editor-actions/plugin/container.js +105 -186
- package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
- package/dist/editor-actions/plugin/directive-container.js +7 -8
- package/dist/editor-actions/reorder-action.d.ts +7 -12
- package/dist/editor-actions/reorder-action.js +32 -48
- package/dist/editor-actions/reorder-drag.d.ts +12 -8
- package/dist/editor-actions/reorder-drag.js +45 -41
- package/dist/editor-actions/replacement-focus.d.ts +13 -21
- package/dist/editor-actions/replacement-focus.js +32 -33
- package/dist/editor-actions/search-replace.js +71 -67
- package/dist/editor-actions/stored-caret.d.ts +7 -0
- package/dist/editor-actions/stored-caret.js +10 -0
- package/dist/editor-actions/table-context.d.ts +9 -11
- package/dist/editor-actions/table-context.js +70 -93
- package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
- package/dist/editor-actions/unwrap-strategies.js +52 -63
- package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
- package/dist/editor-actions/whole-block-focus-surface.js +43 -53
- package/dist/editor-events.d.ts +25 -29
- package/dist/editor-events.js +17 -28
- package/dist/editor-keys.d.ts +96 -104
- package/dist/editor-keys.js +11 -24
- package/dist/editor-props.d.ts +91 -71
- package/dist/editor-rects.d.ts +23 -34
- package/dist/editor-rects.js +9 -77
- package/dist/env.d.ts +6 -4
- package/dist/env.js +8 -4
- package/dist/index.d.ts +6 -2
- package/dist/index.js +5 -2
- package/dist/inline-menu/inline-menu-session.d.ts +37 -0
- package/dist/inline-menu/inline-menu-session.js +98 -0
- package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
- package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
- package/dist/inline-menu/types.d.ts +77 -0
- package/dist/inline-menu/types.js +7 -0
- package/dist/invariants/child-id-parity.d.ts +23 -0
- package/dist/invariants/child-id-parity.js +39 -0
- package/dist/invariants/commit-paths.d.ts +4 -4
- package/dist/invariants/commit-paths.js +4 -4
- package/dist/invariants/commit-scope.d.ts +4 -4
- package/dist/invariants/commit-scope.js +9 -8
- package/dist/invariants/context-keys.d.ts +2 -5
- package/dist/invariants/context-keys.js +3 -6
- package/dist/invariants/descriptor.d.ts +2 -6
- package/dist/invariants/descriptor.js +2 -6
- package/dist/invariants/inline-transitions.d.ts +9 -16
- package/dist/invariants/inline-transitions.js +10 -18
- package/dist/invariants/install.d.ts +18 -27
- package/dist/invariants/install.js +29 -30
- package/dist/invariants/keeps-a-block.d.ts +7 -0
- package/dist/invariants/keeps-a-block.js +14 -0
- package/dist/invariants/landable-caret.d.ts +5 -7
- package/dist/invariants/landable-caret.js +8 -11
- package/dist/invariants/landing-focus-scroll.d.ts +7 -0
- package/dist/invariants/landing-focus-scroll.js +13 -0
- package/dist/invariants/landing-value.d.ts +13 -0
- package/dist/invariants/landing-value.js +27 -0
- package/dist/invariants/marker-css-parity.d.ts +5 -6
- package/dist/invariants/marker-css-parity.js +11 -12
- package/dist/invariants/measures-in-own-list.d.ts +6 -0
- package/dist/invariants/measures-in-own-list.js +13 -0
- package/dist/invariants/node-shape.d.ts +18 -37
- package/dist/invariants/node-shape.js +123 -79
- package/dist/invariants/open-tail.d.ts +7 -0
- package/dist/invariants/open-tail.js +45 -0
- package/dist/invariants/placement-ends-widget.d.ts +8 -0
- package/dist/invariants/placement-ends-widget.js +13 -0
- package/dist/invariants/registry.d.ts +27 -66
- package/dist/invariants/registry.js +61 -137
- package/dist/invariants/render-fidelity.d.ts +4 -4
- package/dist/invariants/render-fidelity.js +5 -5
- package/dist/invariants/selection-endpoints.d.ts +6 -7
- package/dist/invariants/selection-endpoints.js +18 -16
- package/dist/invariants/single-node-sink.d.ts +4 -5
- package/dist/invariants/single-node-sink.js +4 -5
- package/dist/invariants/snapshot-integrity.d.ts +5 -6
- package/dist/invariants/snapshot-integrity.js +1 -1
- package/dist/invariants/structural-descriptor.d.ts +6 -15
- package/dist/invariants/structural-descriptor.js +6 -15
- package/dist/menu-icons.d.ts +47 -0
- package/dist/menu-icons.js +113 -0
- package/dist/perf/instruments.d.ts +20 -5
- package/dist/perf/instruments.js +35 -15
- package/dist/perf/use-mount-gauge.svelte.js +4 -4
- package/dist/plugin.d.ts +38 -8
- package/dist/plugin.js +102 -74
- package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
- package/dist/plugins/admonitions/admonition-kind.js +12 -10
- package/dist/plugins/admonitions/convert-document.d.ts +5 -5
- package/dist/plugins/admonitions/convert-document.js +8 -7
- package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
- package/dist/plugins/admonitions/gh-alert.js +21 -22
- package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
- package/dist/plugins/admonitions/github-alert-kind.js +28 -37
- package/dist/plugins/admonitions/index.js +2 -2
- package/dist/plugins/admonitions/kinds.d.ts +1 -1
- package/dist/plugins/admonitions/register.js +11 -2
- package/dist/plugins/details/DetailsBlock.svelte +20 -20
- package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
- package/dist/plugins/details/details-disclosure.svelte.js +6 -7
- package/dist/plugins/details/details-kind.d.ts +6 -7
- package/dist/plugins/details/details-kind.js +44 -59
- package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
- package/dist/plugins/emoji/emoji-recognizer.js +7 -14
- package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
- package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
- package/dist/plugins/footnotes/constants.d.ts +2 -0
- package/dist/plugins/footnotes/constants.js +3 -0
- package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
- package/dist/plugins/footnotes/footnote-definition.js +69 -45
- package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
- package/dist/plugins/footnotes/footnote-lookup.js +14 -26
- package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
- package/dist/plugins/footnotes/footnote-numbering.js +22 -31
- package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
- package/dist/plugins/footnotes/footnote-reference.js +8 -13
- package/dist/plugins/footnotes/index.js +2 -3
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
- package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
- package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
- package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
- package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
- package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
- package/dist/plugins/highlight-occurrences/word-char.js +4 -0
- package/dist/plugins/latex/BlockMath.svelte +58 -75
- package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
- package/dist/plugins/latex/MathInline.svelte +10 -9
- package/dist/plugins/latex/flanking.d.ts +1 -0
- package/dist/plugins/latex/flanking.js +3 -0
- package/dist/plugins/latex/index.d.ts +1 -1
- package/dist/plugins/latex/latex-kind.d.ts +4 -4
- package/dist/plugins/latex/latex-kind.js +113 -85
- package/dist/plugins/latex/math-completion.d.ts +1 -1
- package/dist/plugins/latex/math-completion.js +5 -8
- package/dist/plugins/latex/math-layout.d.ts +2 -8
- package/dist/plugins/latex/math-layout.js +0 -9
- package/dist/plugins/latex/math-renderer.d.ts +17 -20
- package/dist/plugins/latex/math-renderer.js +21 -38
- package/dist/plugins/latex/math-source.d.ts +4 -8
- package/dist/plugins/latex/math-source.js +36 -75
- package/dist/plugins/latex/register.d.ts +10 -11
- package/dist/plugins/latex/register.js +24 -10
- package/dist/plugins/latex/renderer.d.ts +9 -10
- package/dist/plugins/latex/renderer.js +9 -24
- package/dist/plugins/mermaid/MermaidBlock.svelte +63 -47
- package/dist/plugins/mermaid/index.js +1 -1
- package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
- package/dist/plugins/mermaid/mermaid-kind.js +30 -47
- package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
- package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
- package/dist/plugins/mermaid/register.d.ts +3 -3
- package/dist/plugins/mermaid/register.js +5 -5
- package/dist/plugins/mermaid/renderer.d.ts +5 -5
- package/dist/plugins/mermaid/renderer.js +8 -11
- package/dist/plugins/parrot/ParrotBlock.svelte +18 -7
- package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
- package/dist/plugins/parrot/parrot-plugin.js +3 -3
- package/dist/plugins/slash-commands/filter.d.ts +23 -0
- package/dist/plugins/slash-commands/filter.js +31 -0
- package/dist/plugins/slash-commands/index.d.ts +2 -0
- package/dist/plugins/slash-commands/index.js +2 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
- package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
- package/dist/plugins/slash-commands/slash-source.js +108 -0
- package/dist/plugins/toc/TocBlock.svelte +23 -22
- package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
- package/dist/plugins/toc/heading-outline.d.ts +7 -12
- package/dist/plugins/toc/heading-outline.js +22 -36
- package/dist/plugins/toc/navigation-queue.d.ts +2 -4
- package/dist/plugins/toc/toc-plugin.d.ts +5 -5
- package/dist/plugins/toc/toc-plugin.js +20 -13
- package/dist/presentation-mode.d.ts +15 -23
- package/dist/presentation-mode.js +19 -25
- package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
- package/dist/reactivity/block-list-state.svelte.js +8 -9
- package/dist/reactivity/block-window.svelte.d.ts +12 -6
- package/dist/reactivity/block-window.svelte.js +44 -17
- package/dist/reactivity/child-list.d.ts +34 -0
- package/dist/reactivity/child-list.js +48 -0
- package/dist/reactivity/content-version.svelte.d.ts +4 -7
- package/dist/reactivity/content-version.svelte.js +3 -5
- package/dist/reactivity/hold-across.d.ts +39 -0
- package/dist/reactivity/hold-across.js +57 -0
- package/dist/reactivity/layout-state.svelte.d.ts +27 -0
- package/dist/reactivity/layout-state.svelte.js +51 -0
- package/dist/reactivity/list-tree.d.ts +39 -0
- package/dist/reactivity/list-tree.js +132 -0
- package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
- package/dist/reactivity/list-windowing.svelte.js +143 -292
- package/dist/reactivity/measure-batch.d.ts +6 -8
- package/dist/reactivity/measure-batch.js +5 -6
- package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
- package/dist/reactivity/publish-ref.svelte.js +21 -85
- package/dist/reactivity/scope-geometry.d.ts +6 -13
- package/dist/reactivity/scope-geometry.js +7 -14
- package/dist/reactivity/state-registry.d.ts +5 -5
- package/dist/reactivity/state-registry.js +11 -15
- package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
- package/dist/reactivity/use-container-windowing.svelte.js +64 -74
- package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
- package/dist/reactivity/use-measured-child.svelte.js +41 -0
- package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
- package/dist/reactivity/use-window-floor.svelte.js +27 -0
- package/dist/reactivity/window-slice.d.ts +4 -4
- package/dist/reactivity/window-slice.js +0 -2
- package/dist/renderer-slot.d.ts +48 -0
- package/dist/renderer-slot.js +85 -0
- package/dist/scan-index.d.ts +4 -4
- package/dist/scan-index.js +4 -4
- package/dist/schema/block-commands.d.ts +69 -54
- package/dist/schema/block-commands.js +91 -104
- package/dist/schema/block-completions.d.ts +16 -19
- package/dist/schema/block-completions.js +25 -32
- package/dist/schema/block-component-registry.d.ts +13 -14
- package/dist/schema/block-component-registry.js +19 -17
- package/dist/schema/block-kind-descriptor.d.ts +234 -168
- package/dist/schema/block-kind-descriptor.js +151 -66
- package/dist/schema/block-openers.d.ts +48 -39
- package/dist/schema/block-openers.js +73 -83
- package/dist/schema/built-in-descriptors.d.ts +3 -5
- package/dist/schema/built-in-descriptors.js +96 -80
- package/dist/schema/child-spans.d.ts +12 -10
- package/dist/schema/child-spans.js +68 -34
- package/dist/schema/closure.d.ts +18 -16
- package/dist/schema/closure.js +24 -14
- package/dist/schema/command-id.d.ts +6 -8
- package/dist/schema/command-id.js +20 -25
- package/dist/schema/commands.d.ts +79 -81
- package/dist/schema/commands.js +156 -116
- package/dist/schema/container-raw.d.ts +51 -11
- package/dist/schema/container-raw.js +143 -14
- package/dist/schema/container-rebuilders.d.ts +17 -15
- package/dist/schema/container-rebuilders.js +30 -22
- package/dist/schema/context-actions.d.ts +25 -13
- package/dist/schema/context-actions.js +32 -17
- package/dist/schema/define-plugin-block.d.ts +8 -6
- package/dist/schema/define-plugin-block.js +6 -4
- package/dist/schema/fenced-code-raw.d.ts +30 -17
- package/dist/schema/fenced-code-raw.js +155 -107
- package/dist/schema/global-commands.d.ts +6 -6
- package/dist/schema/global-commands.js +14 -22
- package/dist/schema/height-estimates.d.ts +31 -0
- package/dist/schema/height-estimates.js +64 -0
- package/dist/schema/inline-construct-policy.d.ts +42 -55
- package/dist/schema/inline-construct-policy.js +36 -35
- package/dist/schema/insert-catalogue.d.ts +30 -0
- package/dist/schema/insert-catalogue.js +95 -0
- package/dist/schema/keybinding-overrides.d.ts +9 -11
- package/dist/schema/keybinding-overrides.js +1 -1
- package/dist/schema/keybindings.d.ts +15 -7
- package/dist/schema/keybindings.js +21 -9
- package/dist/schema/merge-rules.d.ts +5 -7
- package/dist/schema/merge-rules.js +7 -9
- package/dist/schema/opener-priorities.d.ts +4 -4
- package/dist/schema/opener-priorities.js +4 -4
- package/dist/schema/operations.d.ts +9 -11
- package/dist/schema/operations.js +3 -3
- package/dist/schema/page-role.d.ts +14 -0
- package/dist/schema/page-role.js +19 -0
- package/dist/schema/plugin-activation.d.ts +4 -6
- package/dist/schema/plugin-activation.js +12 -10
- package/dist/schema/plugin-editor-context.d.ts +25 -10
- package/dist/schema/plugin-editor-context.js +40 -9
- package/dist/schema/plugin-install.d.ts +49 -17
- package/dist/schema/plugin-install.js +51 -25
- package/dist/schema/plugin-kind.d.ts +12 -8
- package/dist/schema/plugin-kind.js +35 -42
- package/dist/schema/plugin-name.js +3 -3
- package/dist/schema/plugin-registry.d.ts +54 -0
- package/dist/schema/plugin-registry.js +70 -0
- package/dist/schema/reading.d.ts +23 -0
- package/dist/schema/reading.js +7 -0
- package/dist/schema/register-once.d.ts +3 -5
- package/dist/schema/register-once.js +7 -16
- package/dist/schema/registration-checks.d.ts +12 -16
- package/dist/schema/registration-checks.js +35 -51
- package/dist/schema/registration-pairs.d.ts +54 -0
- package/dist/schema/registration-pairs.js +48 -0
- package/dist/schema/registration-pending.d.ts +8 -12
- package/dist/schema/registration-pending.js +9 -9
- package/dist/schema/registry-reset.d.ts +8 -4
- package/dist/schema/registry-reset.js +13 -26
- package/dist/schema/registry-view.d.ts +25 -13
- package/dist/schema/registry-view.js +26 -20
- package/dist/schema/reserved-chords.d.ts +9 -10
- package/dist/schema/reserved-chords.js +73 -78
- package/dist/schema/reserved-chrome.d.ts +12 -11
- package/dist/schema/reserved-chrome.js +15 -11
- package/dist/schema/setext-raw.d.ts +13 -0
- package/dist/schema/setext-raw.js +33 -0
- package/dist/schema/stored-as.d.ts +20 -0
- package/dist/schema/stored-as.js +6 -0
- package/dist/schema/table-cell-raw.d.ts +18 -7
- package/dist/schema/table-cell-raw.js +28 -7
- package/dist/schema/whole-block-unit.d.ts +5 -4
- package/dist/schema/whole-block-unit.js +5 -4
- package/dist/search/document-scan.d.ts +3 -3
- package/dist/search/document-scan.js +2 -2
- package/dist/search/matcher.d.ts +1 -1
- package/dist/search/regex-executor.d.ts +5 -6
- package/dist/search/regex-executor.js +6 -8
- package/dist/search/replace.d.ts +2 -5
- package/dist/search/replace.js +2 -5
- package/dist/search/search-state.svelte.d.ts +5 -5
- package/dist/search/search-state.svelte.js +12 -16
- package/dist/selection/autoscroll.d.ts +6 -9
- package/dist/selection/block-hit-test.d.ts +16 -24
- package/dist/selection/block-hit-test.js +29 -22
- package/dist/selection/caret-doors.d.ts +15 -14
- package/dist/selection/caret-doors.js +37 -26
- package/dist/selection/caret-landing.d.ts +62 -0
- package/dist/selection/caret-landing.js +157 -0
- package/dist/selection/caret-restore.d.ts +17 -10
- package/dist/selection/caret-restore.js +10 -22
- package/dist/selection/caret-target.d.ts +30 -0
- package/dist/selection/caret-target.js +84 -0
- package/dist/selection/char-endpoint-snap.d.ts +6 -10
- package/dist/selection/char-endpoint-snap.js +8 -14
- package/dist/selection/clipboard-text.d.ts +5 -12
- package/dist/selection/clipboard-text.js +69 -172
- package/dist/selection/covered-block.d.ts +6 -8
- package/dist/selection/covered-block.js +8 -19
- package/dist/selection/cross-block/clipboard.d.ts +3 -2
- package/dist/selection/cross-block/clipboard.js +13 -4
- package/dist/selection/cross-block/dispatch.d.ts +47 -43
- package/dist/selection/cross-block/dispatch.js +12 -23
- package/dist/selection/cross-block/format-range.d.ts +18 -21
- package/dist/selection/cross-block/format-range.js +104 -103
- package/dist/selection/cross-block/format-toggle.d.ts +10 -15
- package/dist/selection/cross-block/format-toggle.js +28 -33
- package/dist/selection/cross-block/keydown.d.ts +4 -4
- package/dist/selection/cross-block/keydown.js +93 -152
- package/dist/selection/cross-block/ops.d.ts +19 -34
- package/dist/selection/cross-block/ops.js +110 -95
- package/dist/selection/cross-block/paste.d.ts +2 -3
- package/dist/selection/cross-block/paste.js +61 -104
- package/dist/selection/cross-block/pointer.d.ts +17 -15
- package/dist/selection/cross-block/pointer.js +74 -25
- package/dist/selection/cross-block/type-replace.d.ts +4 -6
- package/dist/selection/cross-block/type-replace.js +53 -146
- package/dist/selection/dead-space-caret.d.ts +20 -28
- package/dist/selection/dead-space-caret.js +79 -87
- package/dist/selection/drag-pointer.d.ts +22 -5
- package/dist/selection/drag-pointer.js +63 -31
- package/dist/selection/gap-caret.d.ts +17 -28
- package/dist/selection/gap-caret.js +14 -26
- package/dist/selection/grid-selection.d.ts +12 -0
- package/dist/selection/grid-selection.js +22 -0
- package/dist/selection/keyboard-extend.d.ts +27 -39
- package/dist/selection/keyboard-extend.js +94 -116
- package/dist/selection/multi-click.d.ts +37 -0
- package/dist/selection/multi-click.js +197 -0
- package/dist/selection/native-bridge.d.ts +30 -37
- package/dist/selection/native-bridge.js +80 -100
- package/dist/selection/nearest-block.d.ts +17 -12
- package/dist/selection/nearest-block.js +37 -18
- package/dist/selection/path-lookup.d.ts +31 -14
- package/dist/selection/path-lookup.js +110 -20
- package/dist/selection/path-math.d.ts +9 -11
- package/dist/selection/path-math.js +5 -7
- package/dist/selection/pointer-gesture.d.ts +9 -0
- package/dist/selection/pointer-gesture.js +11 -0
- package/dist/selection/pointer-session.d.ts +10 -16
- package/dist/selection/pointer-session.js +6 -7
- package/dist/selection/primitives.d.ts +64 -33
- package/dist/selection/primitives.js +61 -53
- package/dist/selection/range-coverage.d.ts +94 -0
- package/dist/selection/range-coverage.js +365 -0
- package/dist/selection/range-delete-ceremony.d.ts +28 -74
- package/dist/selection/range-delete-ceremony.js +100 -141
- package/dist/selection/range-delete-chrome.d.ts +20 -33
- package/dist/selection/range-delete-chrome.js +53 -78
- package/dist/selection/range-delete-table-coverage.d.ts +11 -25
- package/dist/selection/range-delete-table-coverage.js +42 -112
- package/dist/selection/range-delete-table.d.ts +14 -12
- package/dist/selection/range-delete-table.js +106 -310
- package/dist/selection/range-delete.d.ts +18 -19
- package/dist/selection/range-delete.js +83 -123
- package/dist/selection/round-trip-restore.d.ts +18 -0
- package/dist/selection/round-trip-restore.js +19 -0
- package/dist/selection/selection-announcer.d.ts +17 -0
- package/dist/selection/selection-announcer.js +25 -0
- package/dist/selection/selection-description.d.ts +4 -3
- package/dist/selection/selection-description.js +5 -4
- package/dist/selection/selection-drop.d.ts +52 -0
- package/dist/selection/selection-drop.js +317 -0
- package/dist/selection/selection-restore.d.ts +20 -33
- package/dist/selection/selection-restore.js +21 -44
- package/dist/selection/selection-state.svelte.d.ts +50 -42
- package/dist/selection/selection-state.svelte.js +144 -98
- package/dist/selection/shared-keydown.d.ts +22 -27
- package/dist/selection/shared-keydown.js +25 -45
- package/dist/selection/table-endpoint-snap.d.ts +17 -41
- package/dist/selection/table-endpoint-snap.js +54 -80
- package/dist/selection/table-rect-extend.d.ts +3 -6
- package/dist/selection/table-rect-extend.js +19 -14
- package/dist/styles/editor-theme.css +75 -53
- package/dist/styles/editor.css +248 -139
- package/dist/testing/conformance-core.d.ts +50 -18
- package/dist/testing/conformance-core.js +88 -50
- package/dist/testing/container-conformance.d.ts +48 -84
- package/dist/testing/container-conformance.js +159 -285
- package/dist/testing/headless-actions.d.ts +34 -19
- package/dist/testing/headless-actions.js +116 -65
- package/dist/testing/headless-block-list.svelte.d.ts +16 -0
- package/dist/testing/headless-block-list.svelte.js +22 -0
- package/dist/testing/inline-conformance.d.ts +15 -22
- package/dist/testing/inline-conformance.js +131 -148
- package/dist/testing/kind-conformance.d.ts +19 -24
- package/dist/testing/kind-conformance.js +204 -117
- package/dist/testing/kit-reading.d.ts +7 -0
- package/dist/testing/kit-reading.js +16 -0
- package/dist/testing/mount-dom-stubs.d.ts +4 -5
- package/dist/testing/mount-dom-stubs.js +8 -5
- package/dist/testing/parse-convergence.d.ts +10 -10
- package/dist/testing/parse-convergence.js +14 -49
- package/dist/testing.d.ts +13 -9
- package/dist/testing.js +28 -38
- package/dist/tree-operations/blockquote.d.ts +8 -14
- package/dist/tree-operations/blockquote.js +25 -45
- package/dist/tree-operations/chain-rebuild.d.ts +34 -25
- package/dist/tree-operations/chain-rebuild.js +115 -52
- package/dist/tree-operations/children.d.ts +5 -9
- package/dist/tree-operations/children.js +7 -11
- package/dist/tree-operations/cleanup.d.ts +6 -7
- package/dist/tree-operations/cleanup.js +14 -11
- package/dist/tree-operations/clone.js +5 -4
- package/dist/tree-operations/container-lift.d.ts +10 -5
- package/dist/tree-operations/container-lift.js +20 -14
- package/dist/tree-operations/container-offsets.d.ts +22 -0
- package/dist/tree-operations/container-offsets.js +89 -0
- package/dist/tree-operations/content-write.d.ts +52 -29
- package/dist/tree-operations/content-write.js +155 -110
- package/dist/tree-operations/index.d.ts +4 -4
- package/dist/tree-operations/index.js +4 -4
- package/dist/tree-operations/keep-one-block.d.ts +10 -0
- package/dist/tree-operations/keep-one-block.js +19 -0
- package/dist/tree-operations/leaf-range.d.ts +33 -0
- package/dist/tree-operations/leaf-range.js +67 -0
- package/dist/tree-operations/list/empty-check.d.ts +2 -3
- package/dist/tree-operations/list/empty-check.js +4 -4
- package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
- package/dist/tree-operations/list/exit-replacement.js +4 -9
- package/dist/tree-operations/list/item-partition.d.ts +2 -2
- package/dist/tree-operations/list/item-partition.js +2 -2
- package/dist/tree-operations/list/list-builders.d.ts +18 -16
- package/dist/tree-operations/list/list-builders.js +59 -30
- package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
- package/dist/tree-operations/list/ordered-markers.js +7 -16
- package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
- package/dist/tree-operations/list/reconcile-task.js +80 -23
- package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
- package/dist/tree-operations/list/sublist-separator.js +20 -27
- package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
- package/dist/tree-operations/list/task-paragraph.js +54 -0
- package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
- package/dist/tree-operations/list/unwrap-merge.js +44 -79
- package/dist/tree-operations/node-ops.d.ts +30 -52
- package/dist/tree-operations/node-ops.js +152 -218
- package/dist/tree-operations/node-primitives.d.ts +44 -31
- package/dist/tree-operations/node-primitives.js +84 -60
- package/dist/tree-operations/open-tail.d.ts +25 -0
- package/dist/tree-operations/open-tail.js +100 -0
- package/dist/tree-operations/parse-block.d.ts +15 -2
- package/dist/tree-operations/parse-block.js +19 -4
- package/dist/tree-operations/paste/apply.d.ts +7 -8
- package/dist/tree-operations/paste/apply.js +33 -63
- package/dist/tree-operations/paste/body-write.d.ts +8 -6
- package/dist/tree-operations/paste/body-write.js +13 -14
- package/dist/tree-operations/paste/container-match.d.ts +7 -10
- package/dist/tree-operations/paste/container-match.js +76 -58
- package/dist/tree-operations/paste/container-paste.d.ts +3 -3
- package/dist/tree-operations/paste/container-paste.js +3 -3
- package/dist/tree-operations/paste/dispatch.d.ts +26 -29
- package/dist/tree-operations/paste/dispatch.js +68 -53
- package/dist/tree-operations/paste/focus-target.d.ts +11 -14
- package/dist/tree-operations/paste/focus-target.js +13 -18
- package/dist/tree-operations/paste/hooks.d.ts +7 -12
- package/dist/tree-operations/paste/hooks.js +49 -46
- package/dist/tree-operations/paste/line-ending.d.ts +11 -0
- package/dist/tree-operations/paste/line-ending.js +32 -0
- package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
- package/dist/tree-operations/paste/list-absorb.js +17 -19
- package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
- package/dist/tree-operations/paste/list-break-out.js +24 -32
- package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
- package/dist/tree-operations/paste/parent-scope.js +9 -16
- package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
- package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
- package/dist/tree-operations/paste/paste-replacement.js +73 -42
- package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
- package/dist/tree-operations/paste/paste-transforms.js +18 -27
- package/dist/tree-operations/paste/replacement-parse.d.ts +19 -0
- package/dist/tree-operations/paste/replacement-parse.js +24 -0
- package/dist/tree-operations/paste/strategy.d.ts +1 -1
- package/dist/tree-operations/paste/strategy.js +1 -1
- package/dist/tree-operations/paste/table-slice.js +15 -10
- package/dist/tree-operations/paste-surfaces.d.ts +18 -29
- package/dist/tree-operations/paste-surfaces.js +14 -10
- package/dist/tree-operations/path-mutate.d.ts +7 -8
- package/dist/tree-operations/path-mutate.js +4 -4
- package/dist/tree-operations/reorder-unit.d.ts +4 -5
- package/dist/tree-operations/reorder-unit.js +5 -6
- package/dist/tree-operations/reorder.d.ts +7 -9
- package/dist/tree-operations/reorder.js +39 -40
- package/dist/tree-operations/settle.d.ts +42 -53
- package/dist/tree-operations/settle.js +241 -162
- package/dist/tree-operations/sharing.d.ts +5 -5
- package/dist/tree-operations/splice-many.d.ts +5 -5
- package/dist/tree-operations/splice-many.js +5 -5
- package/dist/tree-operations/stored-as.d.ts +13 -0
- package/dist/tree-operations/stored-as.js +48 -0
- package/dist/tree-operations/structural-change.d.ts +11 -15
- package/dist/tree-operations/structural-change.js +10 -14
- package/dist/tree-operations/structural-suffix.d.ts +22 -0
- package/dist/tree-operations/structural-suffix.js +61 -0
- package/dist/tree-operations/sub-table-copy.d.ts +7 -0
- package/dist/tree-operations/sub-table-copy.js +40 -36
- package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
- package/dist/tree-operations/table-grid-clipboard.js +11 -36
- package/dist/tree-operations/table-mutations.d.ts +7 -3
- package/dist/tree-operations/table-mutations.js +45 -9
- package/dist/tree-operations/unshare.d.ts +11 -15
- package/dist/tree-operations/unshare.js +15 -17
- package/dist/undo/manager.js +1 -1
- package/dist/undo/types.d.ts +2 -2
- package/docs/guide/consumer-guide.md +329 -205
- package/docs/guide/directives.md +7 -7
- package/docs/guide/plugin-api.md +267 -183
- package/docs/guide/plugin-guide.md +341 -235
- package/docs/guide/plugin-testing.md +96 -82
- package/package.json +17 -21
- package/dist/ambient/ambient-cursor.d.ts +0 -41
- package/dist/ambient/ambient-cursor.js +0 -120
- package/dist/components/blocks/code/code-paste.d.ts +0 -24
- package/dist/components/blocks/code/code-paste.js +0 -21
- package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
- package/dist/components/blocks/table/cell-clipboard.js +0 -67
- package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
- package/dist/components/blocks/text/hidden-suffix.js +0 -15
- package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
- package/dist/components/image/image-source-bytes.d.ts +0 -15
- package/dist/components/image/image-source-bytes.js +0 -80
- package/dist/cursor/content-offsets.d.ts +0 -29
- package/dist/cursor/content-offsets.js +0 -151
- package/dist/cursor/reveal-anchor.d.ts +0 -30
- package/dist/cursor/reveal-anchor.js +0 -31
- package/dist/invariants/split-landing.d.ts +0 -8
- package/dist/invariants/split-landing.js +0 -15
- package/dist/selection/double-click-trim.d.ts +0 -17
- package/dist/selection/double-click-trim.js +0 -57
- package/dist/tree-operations/list/terminator.d.ts +0 -17
- package/dist/tree-operations/list/terminator.js +0 -60
- package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -29
- package/dist/tree-operations/paste/replace-block-at-parent.js +0 -75
|
@@ -1,41 +1,67 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* imports highlight.js directly;
|
|
2
|
+
* The registry of languages code blocks are highlighted with. Nothing outside this directory
|
|
3
|
+
* imports highlight.js directly; whether a language loads eagerly is decided above this.
|
|
4
|
+
* Alternate spellings resolve to their canonical name here, so no caller keeps its own table.
|
|
5
|
+
* Every read takes an editor's activation, so a plugin's language shows only where it is listed.
|
|
4
6
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
import { createPluginRegistry } from '../../../schema/plugin-registry';
|
|
8
|
+
import { fenceLanguage } from '../../../core/parsers/fence-syntax';
|
|
9
|
+
const grammars = createPluginRegistry({
|
|
10
|
+
label: 'registerLanguage',
|
|
11
|
+
isBuiltin: () => false
|
|
12
|
+
});
|
|
13
|
+
/** Register-once: a name already taken throws (a dev server replaces). */
|
|
8
14
|
export function registerLanguage(name, definition, aliasList = []) {
|
|
15
|
+
const { key, language, conflict } = languageEntry(name, definition, aliasList);
|
|
16
|
+
grammars.register(key, language, conflict);
|
|
17
|
+
}
|
|
18
|
+
/** The code bootstrap's entry: a language the test reset keeps, owned by no plugin. */
|
|
19
|
+
export function registerBuiltinLanguage(name, definition, aliasList = []) {
|
|
20
|
+
const { key, language, conflict } = languageEntry(name, definition, aliasList);
|
|
21
|
+
grammars.registerCore(key, language, conflict);
|
|
22
|
+
}
|
|
23
|
+
function languageEntry(name, definition, aliasList) {
|
|
9
24
|
const key = name.toLowerCase();
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
25
|
+
const aliases = [...new Set(aliasList.map((alias) => alias.toLowerCase()))];
|
|
26
|
+
return {
|
|
27
|
+
key,
|
|
28
|
+
language: { name: key, definition, aliases },
|
|
29
|
+
conflict: `registerLanguage: "${key}" is already registered. Languages are register-once.`
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** Whether the name is taken, whatever the activation: the check before a guarded register. */
|
|
33
|
+
export function isLanguageRegistered(name) {
|
|
34
|
+
return grammars.has(name.toLowerCase());
|
|
35
|
+
}
|
|
36
|
+
/** Any spelling of a language to the one name it is registered under. A name of its own beats
|
|
37
|
+
* another language's alternate spelling, so no grammar is hidden behind somebody's nickname. */
|
|
38
|
+
function canonicalName(spelling, activation) {
|
|
39
|
+
const key = spelling.toLowerCase();
|
|
40
|
+
const languages = grammars.entries(activation);
|
|
41
|
+
if (languages.some(([name]) => name === key))
|
|
42
|
+
return key;
|
|
43
|
+
let canonical = key;
|
|
44
|
+
for (const [name, language] of languages)
|
|
45
|
+
if (language.aliases.includes(key))
|
|
46
|
+
canonical = name;
|
|
47
|
+
return canonical;
|
|
16
48
|
}
|
|
17
49
|
/** Info strings with trailing attributes (`js {1-3}`) resolve on the first token. */
|
|
18
|
-
export function getLanguageGrammar(infoString) {
|
|
19
|
-
const
|
|
20
|
-
if (
|
|
50
|
+
export function getLanguageGrammar(infoString, activation) {
|
|
51
|
+
const language = fenceLanguage(infoString);
|
|
52
|
+
if (language === '')
|
|
21
53
|
return null;
|
|
22
|
-
|
|
23
|
-
const resolvedName = aliases.get(firstToken) ?? firstToken;
|
|
24
|
-
return grammars.get(resolvedName) ?? null;
|
|
54
|
+
return grammars.get(canonicalName(language, activation), activation) ?? null;
|
|
25
55
|
}
|
|
26
|
-
/**
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
/** Test-only: clear all registered languages. */
|
|
38
|
-
export function __resetRegistryForTests() {
|
|
39
|
-
grammars.clear();
|
|
40
|
-
aliases.clear();
|
|
56
|
+
/** Every registered language once, under its canonical name, sorted: the picker's rows. */
|
|
57
|
+
export function listLanguages(activation) {
|
|
58
|
+
return grammars
|
|
59
|
+
.entries(activation)
|
|
60
|
+
.map(([name]) => name)
|
|
61
|
+
.sort();
|
|
62
|
+
}
|
|
63
|
+
/** The alternate spellings a language answers to, from any spelling of it, so a picker's
|
|
64
|
+
* filter matches `rs` to `rust` without a table of its own. */
|
|
65
|
+
export function getLanguageAliases(name, activation) {
|
|
66
|
+
return grammars.get(canonicalName(name, activation), activation)?.aliases ?? [];
|
|
41
67
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* PasteSurface for fenced code blocks. Paste is always literal text, so the structural
|
|
3
|
-
*
|
|
2
|
+
* PasteSurface for fenced code blocks. Paste is always literal text, so the structural hook is
|
|
3
|
+
* omitted and pasteDispatch falls through to the inline path; the write that stores the splice
|
|
4
|
+
* runs the fence rule, which grows the fence past a run the paste lands.
|
|
4
5
|
*/
|
|
5
6
|
import type { PasteSurface } from '../../../tree-operations/paste-surfaces';
|
|
6
7
|
export declare const codePasteSurface: PasteSurface;
|
|
@@ -1,29 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* PasteSurface for fenced code blocks. Paste is always literal text, so the structural
|
|
3
|
-
*
|
|
2
|
+
* PasteSurface for fenced code blocks. Paste is always literal text, so the structural hook is
|
|
3
|
+
* omitted and pasteDispatch falls through to the inline path; the write that stores the splice
|
|
4
|
+
* runs the fence rule, which grows the fence past a run the paste lands.
|
|
4
5
|
*/
|
|
5
|
-
import { metadataOf } from '../../../core/nodes';
|
|
6
6
|
import { trailingLineEnding, trimTrailingLineEnding } from '../../../core/lines';
|
|
7
|
-
import { computeCodePaste } from './code-paste';
|
|
8
7
|
export const codePasteSurface = {
|
|
9
8
|
kind: 'fencedCode',
|
|
10
|
-
onInlinePaste(node, offset, text, preDelete) {
|
|
11
|
-
const meta = metadataOf(node, 'fencedCode');
|
|
12
|
-
const lineEnding = trailingLineEnding(node.raw);
|
|
9
|
+
onInlinePaste(node, offset, text, preDelete, _store, documentEnding) {
|
|
13
10
|
const display = trimTrailingLineEnding(node.raw);
|
|
14
11
|
const start = preDelete?.start ?? offset;
|
|
15
|
-
const end = preDelete?.end ?? offset;
|
|
16
|
-
const result = computeCodePaste({
|
|
17
|
-
display,
|
|
18
|
-
selection: { start, end },
|
|
19
|
-
pasted: text,
|
|
20
|
-
fenceMarker: meta.fenceMarker,
|
|
21
|
-
fenceLength: meta.fenceLength,
|
|
22
|
-
closed: meta.closed
|
|
23
|
-
});
|
|
24
12
|
return {
|
|
25
|
-
newRaw:
|
|
26
|
-
|
|
13
|
+
newRaw: display.slice(0, start) +
|
|
14
|
+
text +
|
|
15
|
+
display.slice(preDelete?.end ?? offset) +
|
|
16
|
+
trailingLineEnding(node.raw, documentEnding),
|
|
17
|
+
caretOffset: start + text.length
|
|
27
18
|
};
|
|
28
19
|
}
|
|
29
20
|
};
|
|
@@ -1,18 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Draws a fenced source, a code block's or any plugin kind's that holds its own fence: the fence
|
|
3
|
+
* lines as dimmed markers the marker-hiding modes collapse, the body as its caller paints it. The
|
|
4
|
+
* fragment's text is exactly the source's (G1.28).
|
|
5
5
|
*/
|
|
6
6
|
import type { NodeView } from '../../../core/node-views';
|
|
7
|
+
import { type FenceRun } from '../../../core/parsers/fence-syntax';
|
|
8
|
+
import type { PluginActivation } from '../../../schema/plugin-activation';
|
|
7
9
|
export interface FencedCodeSlice {
|
|
8
10
|
openerLine: string;
|
|
9
11
|
body: string;
|
|
10
12
|
closerLine: string;
|
|
11
13
|
infoString: string;
|
|
12
14
|
}
|
|
15
|
+
/** A fenced source split at its fence lines: each line keeps its own ending. */
|
|
16
|
+
export interface FencedSource {
|
|
17
|
+
opener: string;
|
|
18
|
+
body: string;
|
|
19
|
+
closer: string;
|
|
20
|
+
}
|
|
21
|
+
/** `text` split where {@link fenceAnatomy} reads its fence lines; null when it opens no fence. */
|
|
22
|
+
export declare function sliceFencedSource(text: string, fence?: FenceRun): FencedSource | null;
|
|
13
23
|
export declare function sliceFencedCode(node: NodeView): FencedCodeSlice;
|
|
14
24
|
export declare function mapHljsClass(hljsClass: string): string;
|
|
15
25
|
export declare function walkHljsNodes(source: Node, target: DocumentFragment | HTMLElement): void;
|
|
16
26
|
/** `ignoreIllegals` is set so mid-typing invalid syntax doesn't throw. */
|
|
17
|
-
export declare function tokenizeBody(body: string, infoString: string): DocumentFragment;
|
|
18
|
-
|
|
27
|
+
export declare function tokenizeBody(body: string, infoString: string, activation: PluginActivation): DocumentFragment;
|
|
28
|
+
/** The line break before the closer belongs to the closer's fence line, so modes that hide it
|
|
29
|
+
* take that break too; a blank body keeps it, as the only line the caret can sit on. */
|
|
30
|
+
export declare function fenceBodyAsDrawn(source: FencedSource): string;
|
|
31
|
+
/** A fenced source as DOM: the fence lines as markers, the body through `paintBody`. */
|
|
32
|
+
export declare function renderFencedSource(source: FencedSource, paintBody: (body: string) => Node): DocumentFragment;
|
|
33
|
+
/** `activation` is the editor's, so a language whose plugin it left out renders untokenized. */
|
|
34
|
+
export declare function renderCodeBlock(node: NodeView, activation: PluginActivation): DocumentFragment;
|
|
@@ -1,39 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Draws a fenced source, a code block's or any plugin kind's that holds its own fence: the fence
|
|
3
|
+
* lines as dimmed markers the marker-hiding modes collapse, the body as its caller paints it. The
|
|
4
|
+
* fragment's text is exactly the source's (G1.28).
|
|
5
5
|
*/
|
|
6
6
|
import { metadataOf } from '../../../core/nodes';
|
|
7
|
-
import { trimTrailingLineEnding } from '../../../core/lines';
|
|
7
|
+
import { displayLines, ownTrailingLineEnding, trimTrailingLineEnding } from '../../../core/lines';
|
|
8
|
+
import { fenceAnatomy } from '../../../core/parsers/fence-syntax';
|
|
9
|
+
import { createCaretAnchor } from '../../../cursor/widget-offset';
|
|
8
10
|
import { devWarn } from '../../../dev-warn';
|
|
9
11
|
import { assertInvariant } from '../../../assert';
|
|
10
12
|
import { checkRenderedTextFidelity } from '../../../invariants/render-fidelity';
|
|
11
13
|
import hljs from 'highlight.js/lib/core';
|
|
12
14
|
import { getLanguageGrammar } from './code-languages';
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
return { openerLine: raw, body: '', closerLine: '', infoString: meta.info ?? '' };
|
|
19
|
-
}
|
|
20
|
-
const openerLine = raw.slice(0, firstNewline + 1);
|
|
21
|
-
if (!meta.closed) {
|
|
22
|
-
return {
|
|
23
|
-
openerLine,
|
|
24
|
-
body: raw.slice(openerLine.length),
|
|
25
|
-
closerLine: '',
|
|
26
|
-
infoString: meta.info ?? ''
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
const closerStart = findClosingFenceStart(raw, openerLine.length, meta.fenceMarker, meta.fenceLength);
|
|
15
|
+
/** `text` split where {@link fenceAnatomy} reads its fence lines; null when it opens no fence. */
|
|
16
|
+
export function sliceFencedSource(text, fence) {
|
|
17
|
+
const anatomy = fenceAnatomy(text, fence);
|
|
18
|
+
if (!anatomy)
|
|
19
|
+
return null;
|
|
30
20
|
return {
|
|
31
|
-
|
|
32
|
-
body:
|
|
33
|
-
|
|
34
|
-
infoString: meta.info ?? ''
|
|
21
|
+
opener: text.slice(0, anatomy.bodyStart),
|
|
22
|
+
body: text.slice(anatomy.bodyStart, anatomy.closerStart),
|
|
23
|
+
closer: text.slice(anatomy.closerStart)
|
|
35
24
|
};
|
|
36
25
|
}
|
|
26
|
+
export function sliceFencedCode(node) {
|
|
27
|
+
const infoString = metadataOf(node, 'fencedCode').info ?? '';
|
|
28
|
+
const source = sliceFencedSource(node.raw, codeFenceRun(node));
|
|
29
|
+
if (!source) {
|
|
30
|
+
// Not a parse result: a line the grammar reads as no fence is all structure.
|
|
31
|
+
const bodyStart = node.raw.indexOf('\n') + 1 || node.raw.length;
|
|
32
|
+
const openerLine = node.raw.slice(0, bodyStart);
|
|
33
|
+
return { openerLine, body: node.raw.slice(bodyStart), closerLine: '', infoString };
|
|
34
|
+
}
|
|
35
|
+
return { openerLine: source.opener, body: source.body, closerLine: source.closer, infoString };
|
|
36
|
+
}
|
|
37
37
|
// ── hljs class → code-tok class mapping ───────────────────────────────────
|
|
38
38
|
const HLJS_CLASS_MAP = {
|
|
39
39
|
'hljs-keyword': 'code-tok-keyword',
|
|
@@ -92,20 +92,22 @@ export function walkHljsNodes(source, target) {
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
// ── Body tokenization ─────────────────────────────────────────────────────
|
|
95
|
-
|
|
95
|
+
// The definition highlight.js last took under each name, checked against the language registry
|
|
96
|
+
// on every read, so a grammar the registry replaced (a reset, a dev-server re-run) replaces here.
|
|
97
|
+
const handedToHljs = new Map();
|
|
96
98
|
/** `ignoreIllegals` is set so mid-typing invalid syntax doesn't throw. */
|
|
97
|
-
export function tokenizeBody(body, infoString) {
|
|
99
|
+
export function tokenizeBody(body, infoString, activation) {
|
|
98
100
|
const frag = document.createDocumentFragment();
|
|
99
101
|
if (body.length === 0)
|
|
100
102
|
return frag;
|
|
101
|
-
const grammar = getLanguageGrammar(infoString);
|
|
103
|
+
const grammar = getLanguageGrammar(infoString, activation);
|
|
102
104
|
if (!grammar) {
|
|
103
105
|
frag.appendChild(document.createTextNode(body));
|
|
104
106
|
return frag;
|
|
105
107
|
}
|
|
106
|
-
if (
|
|
108
|
+
if (handedToHljs.get(grammar.name) !== grammar.definition) {
|
|
107
109
|
hljs.registerLanguage(grammar.name, grammar.definition);
|
|
108
|
-
|
|
110
|
+
handedToHljs.set(grammar.name, grammar.definition);
|
|
109
111
|
}
|
|
110
112
|
// `template.innerHTML` normalizes every `\r\n`/`\r` to `\n`, so a CRLF body is
|
|
111
113
|
// highlighted as pure LF and its endings restored positionally afterward.
|
|
@@ -122,9 +124,8 @@ export function tokenizeBody(body, infoString) {
|
|
|
122
124
|
restoreLineEndings(frag, body);
|
|
123
125
|
return frag;
|
|
124
126
|
}
|
|
125
|
-
// An in-order text-node walk rewrites the k-th `\n` back to the k-th original ending
|
|
126
|
-
//
|
|
127
|
-
// hljs nor the HTML parser adds or drops a newline.
|
|
127
|
+
// An in-order text-node walk rewrites the k-th `\n` back to the k-th original ending; every
|
|
128
|
+
// `\r` was stripped before highlighting, so the counts match.
|
|
128
129
|
function restoreLineEndings(root, originalBody) {
|
|
129
130
|
const endings = originalBody.match(/\r\n|\r|\n/g);
|
|
130
131
|
if (!endings)
|
|
@@ -144,22 +145,47 @@ function restoreLineEndings(root, originalBody) {
|
|
|
144
145
|
}
|
|
145
146
|
};
|
|
146
147
|
restore(root);
|
|
147
|
-
// A count mismatch would silently write `undefined` into committed bytes
|
|
148
|
-
//
|
|
148
|
+
// A count mismatch would silently write `undefined` into the committed bytes, so a
|
|
149
|
+
// change in what hljs produces fails loudly here instead.
|
|
149
150
|
if (next !== endings.length) {
|
|
150
151
|
devWarn('code-renderer', `restoreLineEndings count mismatch: ${next} fragment newlines vs ${endings.length} source endings`);
|
|
151
152
|
}
|
|
152
153
|
}
|
|
153
|
-
// ──
|
|
154
|
+
// ── Fenced source rendering ───────────────────────────────────────────────
|
|
155
|
+
/** The line break before the closer belongs to the closer's fence line, so modes that hide it
|
|
156
|
+
* take that break too; a blank body keeps it, as the only line the caret can sit on. */
|
|
157
|
+
export function fenceBodyAsDrawn(source) {
|
|
158
|
+
const ending = ownTrailingLineEnding(source.body);
|
|
159
|
+
const rehomed = source.closer !== '' && ending !== '' && /\S/.test(source.body);
|
|
160
|
+
return rehomed ? source.body.slice(0, -ending.length) : source.body;
|
|
161
|
+
}
|
|
162
|
+
/** A fenced source as DOM: the fence lines as markers, the body through `paintBody`. */
|
|
163
|
+
export function renderFencedSource(source, paintBody) {
|
|
164
|
+
const frag = document.createDocumentFragment();
|
|
165
|
+
const body = fenceBodyAsDrawn(source);
|
|
166
|
+
const separator = source.body.slice(body.length);
|
|
167
|
+
if (source.opener !== '')
|
|
168
|
+
frag.appendChild(makeFenceLine(openerParts(source.opener)));
|
|
169
|
+
frag.appendChild(paintBody(body));
|
|
170
|
+
// Chromium paints no caret on an empty last body line with only the hidden closer after it, so
|
|
171
|
+
// an anchor holds that line; the modes that paint the closer hide it in CSS.
|
|
172
|
+
if (separator !== '' && body.endsWith('\n'))
|
|
173
|
+
frag.appendChild(createCaretAnchor('closer'));
|
|
174
|
+
if (source.closer !== '') {
|
|
175
|
+
const parts = separator !== '' ? [document.createTextNode(separator)] : [];
|
|
176
|
+
parts.push(makeMarkerSpan(source.closer, 'md-fence'));
|
|
177
|
+
frag.appendChild(makeFenceLine(parts));
|
|
178
|
+
}
|
|
179
|
+
return frag;
|
|
180
|
+
}
|
|
154
181
|
function makeMarkerSpan(text, extraClass) {
|
|
155
182
|
const span = document.createElement('span');
|
|
156
|
-
span.className =
|
|
183
|
+
span.className = `md-marker ${extraClass}`;
|
|
157
184
|
span.textContent = text;
|
|
158
185
|
return span;
|
|
159
186
|
}
|
|
160
|
-
// A fence line's newline is a bare text node CSS cannot reach
|
|
161
|
-
//
|
|
162
|
-
// mode — an inline span under `white-space: pre` still breaks on its inner `\n`.
|
|
187
|
+
// A fence line's newline is a bare text node CSS cannot reach, so wrapping the whole line lets
|
|
188
|
+
// the marker-hiding modes collapse it with `display: none`.
|
|
163
189
|
function makeFenceLine(parts) {
|
|
164
190
|
const line = document.createElement('span');
|
|
165
191
|
line.className = 'md-fence-line';
|
|
@@ -167,94 +193,33 @@ function makeFenceLine(parts) {
|
|
|
167
193
|
line.appendChild(part);
|
|
168
194
|
return line;
|
|
169
195
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
const
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
const parts = [makeMarkerSpan(indent + fenceChars, 'md-fence')];
|
|
181
|
-
const afterFence = openerWithoutNewline.slice(indent.length + fenceChars.length);
|
|
182
|
-
if (afterFence.length > 0) {
|
|
183
|
-
parts.push(makeMarkerSpan(afterFence, 'md-lang'));
|
|
184
|
-
}
|
|
185
|
-
if (hasTrailingNewline) {
|
|
186
|
-
parts.push(document.createTextNode('\n'));
|
|
187
|
-
}
|
|
188
|
-
frag.appendChild(makeFenceLine(parts));
|
|
189
|
-
return frag;
|
|
190
|
-
}
|
|
191
|
-
function renderCloserLine(slice, leadingNewline) {
|
|
192
|
-
const frag = document.createDocumentFragment();
|
|
193
|
-
if (slice.closerLine.length === 0)
|
|
194
|
-
return frag;
|
|
195
|
-
const parts = [];
|
|
196
|
-
// The line break before the closer belongs to the closer's fence line, not the
|
|
197
|
-
// body's last code line; owning it here lets the wrapper hide both together.
|
|
198
|
-
if (leadingNewline)
|
|
199
|
-
parts.push(document.createTextNode('\n'));
|
|
200
|
-
parts.push(makeMarkerSpan(slice.closerLine, 'md-fence'));
|
|
201
|
-
frag.appendChild(makeFenceLine(parts));
|
|
202
|
-
return frag;
|
|
196
|
+
/** The opener's indent and marker run, then its info string, then its line ending. */
|
|
197
|
+
function openerParts(opener) {
|
|
198
|
+
const [{ text, ending }] = displayLines(opener);
|
|
199
|
+
const runEnd = fenceAnatomy(text)?.runEnd ?? text.length;
|
|
200
|
+
const parts = [makeMarkerSpan(text.slice(0, runEnd), 'md-fence')];
|
|
201
|
+
if (runEnd < text.length)
|
|
202
|
+
parts.push(makeMarkerSpan(text.slice(runEnd), 'md-lang'));
|
|
203
|
+
if (ending !== '')
|
|
204
|
+
parts.push(document.createTextNode(ending));
|
|
205
|
+
return parts;
|
|
203
206
|
}
|
|
204
207
|
// ── Top-level render ─────────────────────────────────────────────────────
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
const
|
|
208
|
-
const
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
const separatorNewline = hasCloser && slice.body.endsWith('\n') && bodyHasContentLine;
|
|
217
|
-
const bodyText = separatorNewline ? slice.body.slice(0, -1) : slice.body;
|
|
218
|
-
frag.appendChild(renderOpenerLine(slice, meta.fenceMarker, meta.fenceLength));
|
|
219
|
-
frag.appendChild(tokenizeBody(bodyText, slice.infoString));
|
|
220
|
-
// An empty last body line ends the body in `\n` with only the (hidden) closer after it.
|
|
221
|
-
// Chromium paints no caret after a trailing `\n` unless something follows, so it
|
|
222
|
-
// canonicalises the seat to BEFORE the newline and the next key lands one byte early —
|
|
223
|
-
// the second line of a code block was untypeable in live mode. A `br` anchors the line
|
|
224
|
-
// without touching textContent; source mode, where the closer line itself follows, hides
|
|
225
|
-
// it in CSS.
|
|
226
|
-
if (separatorNewline && bodyText.endsWith('\n')) {
|
|
227
|
-
const anchor = document.createElement('br');
|
|
228
|
-
anchor.dataset.caretAnchor = 'closer';
|
|
229
|
-
frag.appendChild(anchor);
|
|
230
|
-
}
|
|
231
|
-
frag.appendChild(renderCloserLine(slice, separatorNewline));
|
|
232
|
-
assertInvariant('rendered-text-fidelity', () => checkRenderedTextFidelity(frag.textContent ?? '', trimTrailingLineEnding(node.raw)));
|
|
208
|
+
/** `activation` is the editor's, so a language whose plugin it left out renders untokenized. */
|
|
209
|
+
export function renderCodeBlock(node, activation) {
|
|
210
|
+
const display = trimTrailingLineEnding(node.raw);
|
|
211
|
+
const info = metadataOf(node, 'fencedCode').info ?? '';
|
|
212
|
+
const source = sliceFencedSource(display, codeFenceRun(node)) ?? {
|
|
213
|
+
opener: display,
|
|
214
|
+
body: '',
|
|
215
|
+
closer: ''
|
|
216
|
+
};
|
|
217
|
+
const frag = renderFencedSource(source, (body) => tokenizeBody(body, info, activation));
|
|
218
|
+
assertInvariant('rendered-text-fidelity', () => checkRenderedTextFidelity(frag.textContent ?? '', display));
|
|
233
219
|
return frag;
|
|
234
220
|
}
|
|
235
221
|
// ── Internal ─────────────────────────────────────────────────────────────────
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
if (slice.closerLine.length > 0)
|
|
240
|
-
return { ...slice, closerLine: trimTrailingLineEnding(slice.closerLine) };
|
|
241
|
-
if (slice.body.length > 0)
|
|
242
|
-
return { ...slice, body: trimTrailingLineEnding(slice.body) };
|
|
243
|
-
return { ...slice, openerLine: trimTrailingLineEnding(slice.openerLine) };
|
|
244
|
-
}
|
|
245
|
-
function findClosingFenceStart(raw, searchStart, fenceMarker, fenceLength) {
|
|
246
|
-
const fencePattern = new RegExp(`^ {0,3}${fenceMarker}{${fenceLength},}\\s*$`);
|
|
247
|
-
let lineEnd = raw.length;
|
|
248
|
-
while (lineEnd > searchStart) {
|
|
249
|
-
const lineStart = raw.lastIndexOf('\n', lineEnd - 2) + 1;
|
|
250
|
-
if (lineStart < searchStart)
|
|
251
|
-
break;
|
|
252
|
-
const line = raw.slice(lineStart, lineEnd).replace(/\n$/, '');
|
|
253
|
-
if (fencePattern.test(line)) {
|
|
254
|
-
return lineStart;
|
|
255
|
-
}
|
|
256
|
-
lineEnd = lineStart;
|
|
257
|
-
}
|
|
258
|
-
// Unreachable when the parser's `closed` flag is consistent with raw.
|
|
259
|
-
return raw.length;
|
|
222
|
+
function codeFenceRun(node) {
|
|
223
|
+
const meta = metadataOf(node, 'fencedCode');
|
|
224
|
+
return { marker: meta.fenceMarker, length: meta.fenceLength };
|
|
260
225
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
2
|
+
// How an unregistered `:::name` directive renders, built on the same `createContainerBlock`
|
|
3
|
+
// helper a plugin gets from the public barrel. Its marker is a dimmed line over a left
|
|
4
|
+
// border, not a card box: a document should look like a document.
|
|
5
5
|
import { createContainerBlock } from '../../../editor-actions/plugin/container';
|
|
6
6
|
import BlockList from '../../BlockList.svelte';
|
|
7
7
|
import type { NodeView } from '../../../core/node-views';
|
|
8
|
+
import { firstDisplayLine } from '../../../core/lines';
|
|
8
9
|
|
|
9
10
|
let { node, index, myPath = [] }: { node: NodeView; index: number; myPath?: number[] } = $props();
|
|
10
11
|
|
|
@@ -12,11 +13,7 @@
|
|
|
12
13
|
|
|
13
14
|
// The opener line sliced verbatim, not rebuilt from metadata: the line can also
|
|
14
15
|
// carry an indent, attributes, or trailing spaces the metadata does not hold.
|
|
15
|
-
const marker = $derived
|
|
16
|
-
const end = node.raw.indexOf('\n');
|
|
17
|
-
const line = end === -1 ? node.raw : node.raw.slice(0, end);
|
|
18
|
-
return line.endsWith('\r') ? line.slice(0, -1) : line;
|
|
19
|
-
});
|
|
16
|
+
const marker = $derived(firstDisplayLine(node.raw).text);
|
|
20
17
|
|
|
21
18
|
const { blockListProps, containerApi, handleKeydown } = createContainerBlock({
|
|
22
19
|
getNode: () => node,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* Turns on the `:::name` directive syntax: the grammar plus the generic container and leaf
|
|
3
|
+
* components. Exported from `@voithos-labs/aragonite/plugin`; a consumer that never calls it
|
|
4
|
+
* leaves `:::` as ordinary text. Lives in `components/` because it binds Svelte components,
|
|
5
|
+
* which core may not import. Each registration checks first, so calling this twice is safe.
|
|
6
6
|
*/
|
|
7
7
|
export declare function activateDirectives(): void;
|
|
@@ -1,23 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* Turns on the `:::name` directive syntax: the grammar plus the generic container and leaf
|
|
3
|
+
* components. Exported from `@voithos-labs/aragonite/plugin`; a consumer that never calls it
|
|
4
|
+
* leaves `:::` as ordinary text. Lives in `components/` because it binds Svelte components,
|
|
5
|
+
* which core may not import. Each registration checks first, so calling this twice is safe.
|
|
6
6
|
*/
|
|
7
7
|
import { activateDirectiveGrammar } from '../../../core/directive/activate';
|
|
8
8
|
import { registerBlockComponent, defineBlockComponent, isBlockComponentRegistered } from '../../../schema/block-component-registry';
|
|
9
9
|
import { declaredPluginKind } from '../../../schema/plugin-kind';
|
|
10
|
+
import { registerAsCore } from '../../../schema/plugin-install';
|
|
10
11
|
import { DIRECTIVE_CONTAINER, DIRECTIVE_LEAF } from '../../../core/directive/kinds';
|
|
11
12
|
import DirectiveContainerBlock from './DirectiveContainerBlock.svelte';
|
|
12
13
|
import TextEditableBlock from '../text/TextEditableBlock.svelte';
|
|
13
14
|
export function activateDirectives() {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
// The shared directive kinds and their components belong to no plugin, whichever plugin's setup
|
|
16
|
+
// turns directives on, so an editor that left that plugin out still reads `:::name` as generic.
|
|
17
|
+
registerAsCore(() => {
|
|
18
|
+
activateDirectiveGrammar();
|
|
19
|
+
if (!isBlockComponentRegistered(DIRECTIVE_CONTAINER)) {
|
|
20
|
+
registerBlockComponent(declaredPluginKind(DIRECTIVE_CONTAINER), defineBlockComponent(DirectiveContainerBlock));
|
|
21
|
+
}
|
|
22
|
+
// The leaf's kind descriptor already drives its dimmed marker and split behavior, so it
|
|
23
|
+
// reuses the built-in text block component as is.
|
|
24
|
+
if (!isBlockComponentRegistered(DIRECTIVE_LEAF)) {
|
|
25
|
+
registerBlockComponent(declaredPluginKind(DIRECTIVE_LEAF), defineBlockComponent(TextEditableBlock, () => ({ blockClass: 'directive-leaf' })));
|
|
26
|
+
}
|
|
27
|
+
});
|
|
23
28
|
}
|