@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,9 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* editor-root fallback.
|
|
4
|
-
*
|
|
5
|
-
* dependably live afterwards), and a multi-block selection reaches the delete only after the hook
|
|
6
|
-
* answers, so a failed import destroys nothing.
|
|
2
|
+
* Hands a paste's images to the host's import hook, for the blocks' clipboard code and the
|
|
3
|
+
* editor-root fallback alike. Files are read before the first await, since `clipboardData` may
|
|
4
|
+
* not stay live, and a multi-block selection is deleted only after the hook answers.
|
|
7
5
|
*/
|
|
8
6
|
import { emitClipboardError } from '../editor-events';
|
|
9
7
|
export function createImagePasteArm(deps) {
|
|
@@ -14,13 +12,12 @@ export function createImagePasteArm(deps) {
|
|
|
14
12
|
if (!importImage)
|
|
15
13
|
return null;
|
|
16
14
|
const markdown = await importAll(deps, importImage, files);
|
|
17
|
-
// Empty markdown ends the
|
|
18
|
-
//
|
|
15
|
+
// Empty markdown ends this the same way no markdown does, and keeps the
|
|
16
|
+
// cross-block paste from being handed an empty string.
|
|
19
17
|
if (!markdown)
|
|
20
18
|
return null;
|
|
21
|
-
//
|
|
22
|
-
//
|
|
23
|
-
// seam reads `isCrossBlock` LIVE, so a mid-import selection is the one replaced.
|
|
19
|
+
// The ordinary paste route, which reads `isCrossBlock` live, since the delete can
|
|
20
|
+
// collapse or merge away the receiving block.
|
|
24
21
|
if (await deps.crossBlock.handlePaste(e, markdown))
|
|
25
22
|
return null;
|
|
26
23
|
return markdown;
|
|
@@ -33,11 +30,8 @@ export function createImagePasteArm(deps) {
|
|
|
33
30
|
function imageFilesOf(data) {
|
|
34
31
|
return Array.from(data?.files ?? []).filter((file) => file.type.startsWith('image/'));
|
|
35
32
|
}
|
|
36
|
-
/**
|
|
37
|
-
*
|
|
38
|
-
* structural paste can split the block out from under a second insertion addressed at
|
|
39
|
-
* anchor + length — and one paste gesture owes the user one undo entry.
|
|
40
|
-
*/
|
|
33
|
+
/** One insertion for every image: multi-line markdown can split the block out from under a
|
|
34
|
+
* second insertion, and one paste is one undo entry. */
|
|
41
35
|
async function importAll(deps, importImage, files) {
|
|
42
36
|
const markdown = [];
|
|
43
37
|
for (const image of files) {
|
|
@@ -51,9 +45,8 @@ async function importAll(deps, importImage, files) {
|
|
|
51
45
|
markdown.push(inserted);
|
|
52
46
|
}
|
|
53
47
|
catch (error) {
|
|
54
|
-
//
|
|
55
|
-
//
|
|
56
|
-
// it started importing will not appear in the document.
|
|
48
|
+
// A failed import skips its image and reports a clipboard error, so the host knows
|
|
49
|
+
// that asset will not appear.
|
|
57
50
|
emitClipboardError(deps.events, { error });
|
|
58
51
|
}
|
|
59
52
|
}
|
|
@@ -3,9 +3,6 @@
|
|
|
3
3
|
* instance: the node keeps its identity, its Svelte scope classes and its place in the
|
|
4
4
|
* reactive tree, so only its position in the DOM moves.
|
|
5
5
|
*/
|
|
6
|
-
/**
|
|
7
|
-
*
|
|
8
|
-
* target changes or the attachment tears down. A null target leaves the node home, which is
|
|
9
|
-
* how the seam stays absent by default.
|
|
10
|
-
*/
|
|
6
|
+
/** Appends the node to `target` and puts it back when the target changes or the attachment
|
|
7
|
+
* tears down; a null target leaves the node where it is. */
|
|
11
8
|
export declare function portalInto(target: HTMLElement | null | undefined): (node: HTMLElement) => (() => void) | void;
|
|
@@ -3,17 +3,14 @@
|
|
|
3
3
|
* instance: the node keeps its identity, its Svelte scope classes and its place in the
|
|
4
4
|
* reactive tree, so only its position in the DOM moves.
|
|
5
5
|
*/
|
|
6
|
-
/**
|
|
7
|
-
*
|
|
8
|
-
* target changes or the attachment tears down. A null target leaves the node home, which is
|
|
9
|
-
* how the seam stays absent by default.
|
|
10
|
-
*/
|
|
6
|
+
/** Appends the node to `target` and puts it back when the target changes or the attachment
|
|
7
|
+
* tears down; a null target leaves the node where it is. */
|
|
11
8
|
export function portalInto(target) {
|
|
12
9
|
return (node) => {
|
|
13
10
|
if (!target)
|
|
14
11
|
return;
|
|
15
|
-
// A
|
|
16
|
-
// is away, so a captured `nextSibling` would
|
|
12
|
+
// A comment marks where the node came from: the siblings around it can change while
|
|
13
|
+
// the node is away, so a captured `nextSibling` would be a stale reference.
|
|
17
14
|
const marker = node.ownerDocument.createComment('');
|
|
18
15
|
node.parentNode?.insertBefore(marker, node);
|
|
19
16
|
target.appendChild(node);
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Grammar-side activation for the `:::name` directive
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* A second activation site is a no-op: every step guards on something the tier itself owns.
|
|
2
|
+
* Grammar-side activation for the `:::name` directive syntax. The public `activateDirectives`
|
|
3
|
+
* adds the components (core can't import them) and makes both belong to no plugin. A call, not an
|
|
4
|
+
* import side effect, so `:::` and `:` stay free until someone asks. Must run before the editor
|
|
5
|
+
* first parses (G1.17); calling it twice is a no-op, since every step checks its registration first.
|
|
7
6
|
*/
|
|
8
7
|
export declare function activateDirectiveGrammar(): void;
|
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Grammar-side activation for the `:::name` directive
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* A second activation site is a no-op: every step guards on something the tier itself owns.
|
|
2
|
+
* Grammar-side activation for the `:::name` directive syntax. The public `activateDirectives`
|
|
3
|
+
* adds the components (core can't import them) and makes both belong to no plugin. A call, not an
|
|
4
|
+
* import side effect, so `:::` and `:` stay free until someone asks. Must run before the editor
|
|
5
|
+
* first parses (G1.17); calling it twice is a no-op, since every step checks its registration first.
|
|
7
6
|
*/
|
|
8
7
|
import { registerDirectiveKinds, registerDirectiveTextKind, DIRECTIVE_TEXT } from './kinds';
|
|
9
8
|
import { registerDirectiveOpeners } from './container-opener';
|
|
10
9
|
import { declaredPluginInlineKind, isInlineKindDeclared } from '../../schema/plugin-kind';
|
|
11
10
|
import { registerInlineSyntax } from '../inline/scan/plugin-syntax';
|
|
12
11
|
import { recognizeTextDirective } from './text-recognizer';
|
|
12
|
+
import { defaultGrammarView } from '../../schema/block-openers';
|
|
13
13
|
export function activateDirectiveGrammar() {
|
|
14
|
-
// The inline
|
|
15
|
-
// read
|
|
16
|
-
// the trigger is SHARED (emoji rungs on it too), so that question answers for another plugin.
|
|
14
|
+
// The inline handler has no registration of its own to check, so it borrows the
|
|
15
|
+
// `directiveText` flag, read before it is set; the `:` trigger is shared with emoji.
|
|
17
16
|
const alreadyActive = isInlineKindDeclared(DIRECTIVE_TEXT);
|
|
18
17
|
registerDirectiveKinds();
|
|
19
18
|
registerDirectiveOpeners();
|
|
20
19
|
registerDirectiveTextKind();
|
|
21
20
|
if (!alreadyActive) {
|
|
22
21
|
const kind = declaredPluginInlineKind(DIRECTIVE_TEXT);
|
|
23
|
-
registerInlineSyntax(':', (raw, pos, end) => recognizeTextDirective(raw, pos, end, kind));
|
|
22
|
+
registerInlineSyntax(':', (raw, pos, end, grammar) => recognizeTextDirective(raw, pos, end, kind, grammar ?? defaultGrammarView));
|
|
24
23
|
}
|
|
25
24
|
}
|
|
@@ -19,18 +19,20 @@ export function registerDirectiveOpeners() {
|
|
|
19
19
|
const container = declaredPluginKind(DIRECTIVE_CONTAINER);
|
|
20
20
|
const leaf = declaredPluginKind(DIRECTIVE_LEAF);
|
|
21
21
|
registerBlockOpener(container, {
|
|
22
|
-
//
|
|
23
|
-
// with it. A colon fence collides with no built-in matcher; it only needs
|
|
22
|
+
// Derived from the built-in priorities, never a bare integer, so renumbering a built-in
|
|
23
|
+
// moves this with it. A colon fence collides with no built-in matcher; it only needs a gap.
|
|
24
24
|
priority: OPENER_PRIORITIES.blockquote + 5,
|
|
25
25
|
interruptsParagraph: (line) => matchDirectiveOpener(line) !== null,
|
|
26
26
|
tryOpen(ctx) {
|
|
27
27
|
const fence = matchDirectiveOpener(ctx.line.text);
|
|
28
28
|
if (!fence)
|
|
29
29
|
return null;
|
|
30
|
-
|
|
30
|
+
// A one-line leaf at the end of the source takes the source's first break, else LF.
|
|
31
|
+
const sourceEnding = (ctx.lines[0]?.lineEnding || '\n');
|
|
32
|
+
const lineEnding = trailingLineEnding(ctx.line.raw, sourceEnding);
|
|
31
33
|
if (fence.tier === 'leaf') {
|
|
32
|
-
const def = resolveDirective('leaf', fence.name);
|
|
33
|
-
const factory = resolveBlockDirectiveFactory('leaf', fence.name);
|
|
34
|
+
const def = resolveDirective('leaf', fence.name, ctx.grammar);
|
|
35
|
+
const factory = resolveBlockDirectiveFactory('leaf', fence.name, ctx.grammar);
|
|
34
36
|
if (factory) {
|
|
35
37
|
const parsed = {
|
|
36
38
|
fence,
|
|
@@ -62,12 +64,13 @@ export function registerDirectiveOpeners() {
|
|
|
62
64
|
// body stays inside this parse entry, so it inherits its scope.
|
|
63
65
|
const body = parseContainerBody(bodyText, DIRECTIVE_BODY_WRAP, {
|
|
64
66
|
scope: ctx.isDocumentParse ? 'document' : 'fragment',
|
|
65
|
-
depth: ctx.depth + 1
|
|
67
|
+
depth: ctx.depth + 1,
|
|
68
|
+
grammar: ctx.grammar
|
|
66
69
|
});
|
|
67
|
-
// isDirectiveCloser guarantees an all-colon line, so its length
|
|
70
|
+
// isDirectiveCloser guarantees an all-colon line, so its length is the colon count.
|
|
68
71
|
const closerColonCount = closerLine.text.length;
|
|
69
72
|
const closerNewline = closerLine.raw.endsWith('\n');
|
|
70
|
-
const factory = resolveBlockDirectiveFactory('container', fence.name);
|
|
73
|
+
const factory = resolveBlockDirectiveFactory('container', fence.name, ctx.grammar);
|
|
71
74
|
if (factory) {
|
|
72
75
|
const parsed = {
|
|
73
76
|
fence,
|
|
@@ -126,10 +129,8 @@ function closerIndex(lines) {
|
|
|
126
129
|
closerIndexCache.set(lines, index);
|
|
127
130
|
return index;
|
|
128
131
|
}
|
|
129
|
-
/**
|
|
130
|
-
*
|
|
131
|
-
* hold 0 and an opener runs at least two colons, so they never match.
|
|
132
|
-
*/
|
|
132
|
+
/** First closer index at or after `from` with a run of at least `min` colons, or -1. Padding
|
|
133
|
+
* leaves hold 0, and an opener runs at least two colons, so they never match. */
|
|
133
134
|
function firstCloserAtLeast(index, from, min) {
|
|
134
135
|
const descend = (node, lo, hi) => {
|
|
135
136
|
if (hi <= from || index.maxCounts[node] < min)
|
|
@@ -15,11 +15,8 @@ export interface DirectiveFence {
|
|
|
15
15
|
}
|
|
16
16
|
export declare function matchDirectiveOpener(lineText: string): DirectiveFence | null;
|
|
17
17
|
export declare function isDirectiveCloser(lineText: string, openColonCount: number): boolean;
|
|
18
|
-
/**
|
|
19
|
-
*
|
|
20
|
-
* `minimum`. Without it a body line reproducing the terminator reads as the container's own
|
|
21
|
-
* closer and ejects everything below it on reparse.
|
|
22
|
-
*/
|
|
18
|
+
/** The colon count needed to wrap `body`: one past its longest whole-line colon run, never below
|
|
19
|
+
* `minimum`, so no body line reads as the container's closer on reparse. */
|
|
23
20
|
export declare function escalatedColonCount(body: string, minimum: number): number;
|
|
24
21
|
export declare function serializeDirective(parts: {
|
|
25
22
|
colonCount: number;
|
|
@@ -3,8 +3,11 @@
|
|
|
3
3
|
* Byte round-trip is the master invariant: `serializeDirective` reproduces the opener colons,
|
|
4
4
|
* the verbatim `info` (leading separator included), the body wrap, and a matched closer exactly.
|
|
5
5
|
*/
|
|
6
|
+
import { WHITESPACE_CHARS, WHITESPACE_CLASS } from '../lines';
|
|
6
7
|
import { escalateTerminatorRun } from '../terminator-escalation';
|
|
7
|
-
|
|
8
|
+
// The `s` flag lets the info string run to the line's end over a line separator (U+2028),
|
|
9
|
+
// which the line splitter keeps inside a line.
|
|
10
|
+
const OPENER = /^(:{2,})([A-Za-z][A-Za-z0-9-]*)(.*)$/s;
|
|
8
11
|
export function matchDirectiveOpener(lineText) {
|
|
9
12
|
const match = OPENER.exec(lineText);
|
|
10
13
|
if (!match)
|
|
@@ -26,11 +29,8 @@ export function isDirectiveCloser(lineText, openColonCount) {
|
|
|
26
29
|
count++;
|
|
27
30
|
return count >= openColonCount && count === lineText.length;
|
|
28
31
|
}
|
|
29
|
-
/**
|
|
30
|
-
*
|
|
31
|
-
* `minimum`. Without it a body line reproducing the terminator reads as the container's own
|
|
32
|
-
* closer and ejects everything below it on reparse.
|
|
33
|
-
*/
|
|
32
|
+
/** The colon count needed to wrap `body`: one past its longest whole-line colon run, never below
|
|
33
|
+
* `minimum`, so no body line reads as the container's closer on reparse. */
|
|
34
34
|
export function escalatedColonCount(body, minimum) {
|
|
35
35
|
// A closer line is colons end to end, so its own length IS the run.
|
|
36
36
|
return escalateTerminatorRun(body, minimum, (text, required) => isDirectiveCloser(text, required) ? text.length : null);
|
|
@@ -39,18 +39,18 @@ export function escalatedColonCount(body, minimum) {
|
|
|
39
39
|
export function serializeDirective(parts) {
|
|
40
40
|
const lineEnding = parts.lineEnding ?? '\n';
|
|
41
41
|
const inner = `${parts.innerPrefix}${parts.body}${parts.innerSuffix}`;
|
|
42
|
-
//
|
|
43
|
-
//
|
|
42
|
+
// Escalated from the body on every emit, so the fence holds before the editor re-reads the
|
|
43
|
+
// metadata; `colonCount` is a floor, not a target.
|
|
44
44
|
const colonCount = escalatedColonCount(inner, parts.colonCount);
|
|
45
45
|
const opener = ':'.repeat(colonCount);
|
|
46
46
|
const closer = ':'.repeat(Math.max(colonCount, parts.closerColonCount ?? colonCount));
|
|
47
47
|
const closerEnd = (parts.closerNewline ?? true) ? (parts.closerLineEnding ?? lineEnding) : '';
|
|
48
48
|
return `${opener}${parts.name}${parts.info}${lineEnding}${inner}${closer}${closerEnd}`;
|
|
49
49
|
}
|
|
50
|
-
const LABEL =
|
|
50
|
+
const LABEL = new RegExp(`^${WHITESPACE_CLASS}*\\[([^\\]]*)\\]`);
|
|
51
51
|
const BRACES = /\{([^}]*)\}/;
|
|
52
52
|
// Quoted segments fold in, so `title="a b"` stays one token instead of splitting on its space.
|
|
53
|
-
const ATTR_TOKEN =
|
|
53
|
+
const ATTR_TOKEN = new RegExp(`(?:[^${WHITESPACE_CHARS}"]+|"[^"]*")+`, 'g');
|
|
54
54
|
/**
|
|
55
55
|
* Opt-in `info -> structure` reader for a leading `[label]` and a `{#id .class key=val}` block.
|
|
56
56
|
* One-way: there is no inverse serializer, and the verbatim `info` stays the round-trip truth.
|
|
@@ -9,7 +9,7 @@ import type { ContainerBodyWrap } from '../parser';
|
|
|
9
9
|
export declare const DIRECTIVE_CONTAINER = "directiveContainer";
|
|
10
10
|
export declare const DIRECTIVE_LEAF = "directiveLeaf";
|
|
11
11
|
export declare const DIRECTIVE_TEXT = "directiveText";
|
|
12
|
-
/** The `:::` opener and closer bracket every directive body, whatever kind the name
|
|
12
|
+
/** The `:::` opener and closer bracket every directive body, whatever kind the name maps to. */
|
|
13
13
|
export declare const DIRECTIVE_BODY_WRAP: ContainerBodyWrap;
|
|
14
14
|
/** Fence bytes a container node round-trips through `rebuildDirectiveContainerRaw`. */
|
|
15
15
|
export interface DirectiveContainerMetadata {
|
|
@@ -18,14 +18,11 @@ export interface DirectiveContainerMetadata {
|
|
|
18
18
|
info: string;
|
|
19
19
|
closerColonCount: number;
|
|
20
20
|
closerNewline: boolean;
|
|
21
|
-
/** Authored line ending for the opener and closer
|
|
21
|
+
/** Authored line ending for the opener and closer fence lines. */
|
|
22
22
|
lineEnding: string;
|
|
23
23
|
}
|
|
24
24
|
export declare function registerDirectiveKinds(): void;
|
|
25
|
-
/**
|
|
26
|
-
*
|
|
27
|
-
* opts into `revealSource`, so focus swaps the island for editable source and blur/Enter commits
|
|
28
|
-
* (the shared reveal primitive in widget-interaction.ts). Idempotent for HMR.
|
|
29
|
-
*/
|
|
25
|
+
/** The `:` recognizer gives this kind to the span it delimits. The widget opts into `revealSource`,
|
|
26
|
+
* so focus swaps it for its editable source. Idempotent for HMR. */
|
|
30
27
|
export declare function registerDirectiveTextKind(): void;
|
|
31
28
|
export declare function rebuildDirectiveContainerRaw(node: CstNode): void;
|
|
@@ -8,14 +8,14 @@ import { declarePluginKind, declarePluginInlineKind, isInlineKindDeclared } from
|
|
|
8
8
|
import { registerBlockKind, isBlockKindRegistered } from '../../schema/block-kind-descriptor';
|
|
9
9
|
import { containerClosure } from '../../schema/closure';
|
|
10
10
|
import { getPluginMetadata } from '../nodes';
|
|
11
|
-
import { displayLength,
|
|
11
|
+
import { displayLength, ownTrailingLineEnding, trimTrailingLineEnding } from '../lines';
|
|
12
12
|
import { concatChildren as serializeChildren } from '../serializer';
|
|
13
13
|
import { registerInlineWidgetKind, mintWidgetShell } from '../inline/inline-widgets';
|
|
14
14
|
import { matchDirectiveOpener, serializeDirective } from './grammar';
|
|
15
15
|
export const DIRECTIVE_CONTAINER = 'directiveContainer';
|
|
16
16
|
export const DIRECTIVE_LEAF = 'directiveLeaf';
|
|
17
17
|
export const DIRECTIVE_TEXT = 'directiveText';
|
|
18
|
-
/** The `:::` opener and closer bracket every directive body, whatever kind the name
|
|
18
|
+
/** The `:::` opener and closer bracket every directive body, whatever kind the name maps to. */
|
|
19
19
|
export const DIRECTIVE_BODY_WRAP = {
|
|
20
20
|
afterOpenerLine: true,
|
|
21
21
|
beforeCloserLine: true
|
|
@@ -24,10 +24,11 @@ export function registerDirectiveKinds() {
|
|
|
24
24
|
if (isBlockKindRegistered(DIRECTIVE_CONTAINER))
|
|
25
25
|
return; // idempotent for HMR / re-import
|
|
26
26
|
registerBlockKind(declarePluginKind(DIRECTIVE_CONTAINER), {
|
|
27
|
+
label: 'Directive',
|
|
27
28
|
mergeRole: 'container',
|
|
28
29
|
editable: true,
|
|
29
30
|
supportsInline: false,
|
|
30
|
-
//
|
|
31
|
+
// An opaque container has no text of its own at either edge, so both take the gap caret.
|
|
31
32
|
gapEdges: 'both',
|
|
32
33
|
container: {
|
|
33
34
|
contract: 'opaque',
|
|
@@ -51,11 +52,12 @@ export function registerDirectiveKinds() {
|
|
|
51
52
|
})
|
|
52
53
|
});
|
|
53
54
|
registerBlockKind(declarePluginKind(DIRECTIVE_LEAF), {
|
|
55
|
+
label: 'Directive',
|
|
54
56
|
gapEdges: 'none',
|
|
55
57
|
mergeRole: 'not-mergeable',
|
|
56
58
|
editable: true,
|
|
57
59
|
supportsInline: false,
|
|
58
|
-
|
|
60
|
+
contentStart: { range: directiveLeafContentRange },
|
|
59
61
|
keymap: DIRECTIVE_LEAF_KEYMAP,
|
|
60
62
|
conformanceFixture: '::spoiler\n',
|
|
61
63
|
closure: {
|
|
@@ -78,11 +80,8 @@ export function registerDirectiveKinds() {
|
|
|
78
80
|
});
|
|
79
81
|
}
|
|
80
82
|
// ── Text tier: inline `:name[label]{attrs}` ────────────────────────────────────
|
|
81
|
-
/**
|
|
82
|
-
*
|
|
83
|
-
* opts into `revealSource`, so focus swaps the island for editable source and blur/Enter commits
|
|
84
|
-
* (the shared reveal primitive in widget-interaction.ts). Idempotent for HMR.
|
|
85
|
-
*/
|
|
83
|
+
/** The `:` recognizer gives this kind to the span it delimits. The widget opts into `revealSource`,
|
|
84
|
+
* so focus swaps it for its editable source. Idempotent for HMR. */
|
|
86
85
|
export function registerDirectiveTextKind() {
|
|
87
86
|
if (isInlineKindDeclared(DIRECTIVE_TEXT))
|
|
88
87
|
return;
|
|
@@ -99,8 +98,8 @@ function buildDirectiveTextWidget(node, raw) {
|
|
|
99
98
|
shell.textContent = raw.slice(node.start, node.end);
|
|
100
99
|
return shell;
|
|
101
100
|
}
|
|
102
|
-
// Enter opens a paragraph sibling
|
|
103
|
-
//
|
|
101
|
+
// Enter opens a paragraph sibling, since a leaf never holds a line break; Backspace and Delete at
|
|
102
|
+
// an edge move focus without joining, as for any block that doesn't merge.
|
|
104
103
|
const DIRECTIVE_LEAF_KEYMAP = [
|
|
105
104
|
{ chord: 'Enter', command: 'block.split' },
|
|
106
105
|
{ chord: 'Tab', command: 'block.insertTab' },
|
|
@@ -109,8 +108,8 @@ const DIRECTIVE_LEAF_KEYMAP = [
|
|
|
109
108
|
{ chord: 'Alt+ArrowUp', command: 'block.moveUp' },
|
|
110
109
|
{ chord: 'Alt+ArrowDown', command: 'block.moveDown' }
|
|
111
110
|
];
|
|
112
|
-
// The `::name` fence is a dimmed marker prefix,
|
|
113
|
-
//
|
|
111
|
+
// The `::name` fence is a dimmed marker prefix, like a heading's. A raw that stops opening a fence
|
|
112
|
+
// reparses to a paragraph first, so the null branch is only a fallback.
|
|
114
113
|
function directiveLeafContentRange(node) {
|
|
115
114
|
const fence = matchDirectiveOpener(trimTrailingLineEnding(node.raw));
|
|
116
115
|
const start = fence ? fence.colonCount + fence.name.length : 0;
|
|
@@ -130,8 +129,7 @@ export function rebuildDirectiveContainerRaw(node) {
|
|
|
130
129
|
closerColonCount: meta.closerColonCount,
|
|
131
130
|
closerNewline: meta.closerNewline,
|
|
132
131
|
lineEnding: meta.lineEnding,
|
|
133
|
-
// The
|
|
134
|
-
|
|
135
|
-
closerLineEnding: trailingLineEnding(node.raw)
|
|
132
|
+
// The closer is the raw's last line, so its ending is the raw's own, else the opener's.
|
|
133
|
+
closerLineEnding: ownTrailingLineEnding(node.raw) || undefined
|
|
136
134
|
});
|
|
137
135
|
}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Name-to-kind registry for the directive
|
|
3
|
-
* `(tier, name)` here, then delegates to `fromDirective` or
|
|
2
|
+
* Name-to-kind registry for the directive syntax: the shared opener resolves a fence's
|
|
3
|
+
* `(tier, name)` (tier: container, leaf or text) here, then delegates to `fromDirective` or
|
|
4
|
+
* builds a lossless generic node.
|
|
4
5
|
* Register-once with no unregister, the `customElements` model the schema registries follow.
|
|
5
6
|
* Tier scopes the key, so a container and a leaf may share a name.
|
|
6
7
|
*/
|
|
7
8
|
import type { DirectiveTier, DirectiveFence } from './grammar';
|
|
8
9
|
import type { AnyBlockKind, PluginInlineKind, CstNode, InlineNode, Document } from '../nodes';
|
|
10
|
+
import type { GrammarView } from '../../schema/block-openers';
|
|
9
11
|
export interface ParsedDirective {
|
|
10
12
|
fence: DirectiveFence;
|
|
11
13
|
body?: Document;
|
|
@@ -15,7 +17,7 @@ export interface ParsedDirective {
|
|
|
15
17
|
raw: string;
|
|
16
18
|
closerColonCount: number;
|
|
17
19
|
closerNewline: boolean;
|
|
18
|
-
/** Opener line ending; a factory stores it so a rebuild
|
|
20
|
+
/** Opener line ending; a factory stores it so a rebuild keeps CRLF fence lines. */
|
|
19
21
|
lineEnding: string;
|
|
20
22
|
}
|
|
21
23
|
export interface DirectiveDefinition {
|
|
@@ -24,16 +26,17 @@ export interface DirectiveDefinition {
|
|
|
24
26
|
fromDirective?(parsed: ParsedDirective): CstNode | InlineNode;
|
|
25
27
|
}
|
|
26
28
|
export declare function registerDirective(tier: DirectiveTier, name: string, def: DirectiveDefinition): void;
|
|
27
|
-
|
|
29
|
+
/** The name's definition under an editor's grammar; a name its plugin registered is absent where
|
|
30
|
+
* the editor left that plugin out, so the fence reads as the generic directive. */
|
|
31
|
+
export declare function resolveDirective(tier: DirectiveTier, name: string, grammar: GrammarView): DirectiveDefinition | undefined;
|
|
28
32
|
/**
|
|
29
|
-
* Pre-narrowed:
|
|
30
|
-
*
|
|
33
|
+
* Pre-narrowed: registration guarantees a block node for these tiers, so the union narrowing
|
|
34
|
+
* happens here once instead of a cast per opener call site.
|
|
31
35
|
*/
|
|
32
|
-
export declare function resolveBlockDirectiveFactory(tier: 'leaf' | 'container', name: string): ((parsed: ParsedDirective) => CstNode) | undefined;
|
|
36
|
+
export declare function resolveBlockDirectiveFactory(tier: 'leaf' | 'container', name: string, grammar: GrammarView): ((parsed: ParsedDirective) => CstNode) | undefined;
|
|
33
37
|
export declare function isDirectiveRegistered(tier: DirectiveTier, name: string): boolean;
|
|
34
38
|
/**
|
|
35
39
|
* What "does this kind have a recognizer" must ask: a directive kind owns no opener of its own,
|
|
36
|
-
* so
|
|
40
|
+
* so checking the opener registry alone reads every directive kind as unrecognizable.
|
|
37
41
|
*/
|
|
38
42
|
export declare function isDirectiveKind(kind: AnyBlockKind | PluginInlineKind): boolean;
|
|
39
|
-
export declare function __resetDirectiveRegistryForTests(): void;
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Name-to-kind registry for the directive
|
|
3
|
-
* `(tier, name)` here, then delegates to `fromDirective` or
|
|
2
|
+
* Name-to-kind registry for the directive syntax: the shared opener resolves a fence's
|
|
3
|
+
* `(tier, name)` (tier: container, leaf or text) here, then delegates to `fromDirective` or
|
|
4
|
+
* builds a lossless generic node.
|
|
4
5
|
* Register-once with no unregister, the `customElements` model the schema registries follow.
|
|
5
6
|
* Tier scopes the key, so a container and a leaf may share a name.
|
|
6
7
|
*/
|
|
7
|
-
import {
|
|
8
|
-
const definitions =
|
|
8
|
+
import { createPluginRegistry } from '../../schema/plugin-registry';
|
|
9
|
+
const definitions = createPluginRegistry({
|
|
10
|
+
label: 'registerDirective',
|
|
11
|
+
isBuiltin: () => false
|
|
12
|
+
});
|
|
9
13
|
const keyOf = (tier, name) => `${tier}:${name}`;
|
|
10
14
|
export function registerDirective(tier, name, def) {
|
|
11
15
|
// Fail loud at registration so a tier/factory mismatch can't silently no-op at dispatch.
|
|
@@ -17,17 +21,19 @@ export function registerDirective(tier, name, def) {
|
|
|
17
21
|
throw new Error(`registerDirective: text "${name}" is kind-only; fromDirective is not used for inline nodes.`);
|
|
18
22
|
}
|
|
19
23
|
const key = keyOf(tier, name);
|
|
20
|
-
|
|
24
|
+
definitions.register(key, def, `registerDirective: "${key}" is already registered. Directives are register-once.`);
|
|
21
25
|
}
|
|
22
|
-
|
|
23
|
-
|
|
26
|
+
/** The name's definition under an editor's grammar; a name its plugin registered is absent where
|
|
27
|
+
* the editor left that plugin out, so the fence reads as the generic directive. */
|
|
28
|
+
export function resolveDirective(tier, name, grammar) {
|
|
29
|
+
return definitions.get(keyOf(tier, name), grammar.activation);
|
|
24
30
|
}
|
|
25
31
|
/**
|
|
26
|
-
* Pre-narrowed:
|
|
27
|
-
*
|
|
32
|
+
* Pre-narrowed: registration guarantees a block node for these tiers, so the union narrowing
|
|
33
|
+
* happens here once instead of a cast per opener call site.
|
|
28
34
|
*/
|
|
29
|
-
export function resolveBlockDirectiveFactory(tier, name) {
|
|
30
|
-
const factory =
|
|
35
|
+
export function resolveBlockDirectiveFactory(tier, name, grammar) {
|
|
36
|
+
const factory = resolveDirective(tier, name, grammar)?.fromDirective;
|
|
31
37
|
return factory;
|
|
32
38
|
}
|
|
33
39
|
export function isDirectiveRegistered(tier, name) {
|
|
@@ -35,15 +41,8 @@ export function isDirectiveRegistered(tier, name) {
|
|
|
35
41
|
}
|
|
36
42
|
/**
|
|
37
43
|
* What "does this kind have a recognizer" must ask: a directive kind owns no opener of its own,
|
|
38
|
-
* so
|
|
44
|
+
* so checking the opener registry alone reads every directive kind as unrecognizable.
|
|
39
45
|
*/
|
|
40
46
|
export function isDirectiveKind(kind) {
|
|
41
|
-
|
|
42
|
-
if (def.kind === kind)
|
|
43
|
-
return true;
|
|
44
|
-
}
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
export function __resetDirectiveRegistryForTests() {
|
|
48
|
-
definitions.clear();
|
|
47
|
+
return definitions.records().some(({ value }) => value.kind === kind);
|
|
49
48
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Inline text-directive recognizer for `:name[label]{attrs}`. It
|
|
2
|
+
* Inline text-directive recognizer for `:name[label]{attrs}`. It owns the whole span: returning
|
|
3
3
|
* `end` past the `[label]{attrs}` keeps the scanner's bracket stack from competing for the inner
|
|
4
4
|
* `[label]`. Conservative by construction, declining unless `[` or `{` follows the name, so
|
|
5
5
|
* `:smile:`, `10:30`, and `://` stay literal. Meaning is parsed elsewhere (`grammar.ts`).
|
|
6
6
|
*/
|
|
7
7
|
import type { InlineNode, PluginInlineKind } from '../nodes';
|
|
8
|
-
|
|
8
|
+
import type { GrammarView } from '../../schema/block-openers';
|
|
9
|
+
export declare function recognizeTextDirective(raw: string, pos: number, end: number, kind: PluginInlineKind, grammar: GrammarView): InlineNode | null;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Inline text-directive recognizer for `:name[label]{attrs}`. It
|
|
2
|
+
* Inline text-directive recognizer for `:name[label]{attrs}`. It owns the whole span: returning
|
|
3
3
|
* `end` past the `[label]{attrs}` keeps the scanner's bracket stack from competing for the inner
|
|
4
4
|
* `[label]`. Conservative by construction, declining unless `[` or `{` follows the name, so
|
|
5
5
|
* `:smile:`, `10:30`, and `://` stay literal. Meaning is parsed elsewhere (`grammar.ts`).
|
|
@@ -8,12 +8,8 @@ import { createBoundedMemo } from '../../bounded-memo';
|
|
|
8
8
|
import { resolveDirective } from './registry';
|
|
9
9
|
const isNameStart = (code) => (code >= 0x41 && code <= 0x5a) || (code >= 0x61 && code <= 0x7a); // A-Z a-z
|
|
10
10
|
const isNameChar = (code) => isNameStart(code) || (code >= 0x30 && code <= 0x39) || code === 0x2d; // + 0-9 -
|
|
11
|
-
/**
|
|
12
|
-
*
|
|
13
|
-
* starts pays a full block scan each. Matching is prefix-determined, so one stack pass answers
|
|
14
|
-
* every consultation and the caller's `end` filters the result. Bounded rather than weak-keyed
|
|
15
|
-
* because a string cannot key a WeakMap; two entries cover a block's own scan.
|
|
16
|
-
*/
|
|
11
|
+
/** Balanced-run matches per block raw, so a paragraph with many `:name[` starts pays one scan:
|
|
12
|
+
* matching is prefix-determined, and the caller's `end` filters the result. */
|
|
17
13
|
const balancedRuns = createBoundedMemo({ cap: 2 });
|
|
18
14
|
function matchBalancedRuns(raw) {
|
|
19
15
|
const label = new Map();
|
|
@@ -50,7 +46,7 @@ function consumeBalanced(raw, open, end, openCh) {
|
|
|
50
46
|
const close = (openCh === '[' ? runs.label : runs.attrs).get(open);
|
|
51
47
|
return close !== undefined && close <= end ? close : -1;
|
|
52
48
|
}
|
|
53
|
-
export function recognizeTextDirective(raw, pos, end, kind) {
|
|
49
|
+
export function recognizeTextDirective(raw, pos, end, kind, grammar) {
|
|
54
50
|
// `://` is a scheme separator (http://, mailto:), never a directive.
|
|
55
51
|
if (raw[pos + 1] === '/' && raw[pos + 2] === '/')
|
|
56
52
|
return null;
|
|
@@ -82,6 +78,6 @@ export function recognizeTextDirective(raw, pos, end, kind) {
|
|
|
82
78
|
}
|
|
83
79
|
// Sibling-path parity with the block opener: a registered name resolves to the plugin's own
|
|
84
80
|
// inline kind, an unregistered one keeps the generic `kind`.
|
|
85
|
-
const def = resolveDirective('text', raw.slice(pos + 1, nameEnd));
|
|
81
|
+
const def = resolveDirective('text', raw.slice(pos + 1, nameEnd), grammar);
|
|
86
82
|
return { kind: (def?.kind ?? kind), start: pos, end: i };
|
|
87
83
|
}
|
package/dist/core/escapable.d.ts
CHANGED
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CommonMark's 32 escapable ASCII punctuation characters (§2.4). A core leaf because both the
|
|
3
|
-
* inline scanner and the block-level link-reference parser (§4.7) need it, and neither should
|
|
4
|
-
* import the other's directory to reach a lexical constant.
|
|
5
|
-
*/
|
|
1
|
+
/** CommonMark's escapable ASCII punctuation (§2.4), shared by the inline and block parsers. */
|
|
6
2
|
export declare const ESCAPABLE_PUNCTUATION: Set<string>;
|
package/dist/core/escapable.js
CHANGED
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CommonMark's 32 escapable ASCII punctuation characters (§2.4). A core leaf because both the
|
|
3
|
-
* inline scanner and the block-level link-reference parser (§4.7) need it, and neither should
|
|
4
|
-
* import the other's directory to reach a lexical constant.
|
|
5
|
-
*/
|
|
1
|
+
/** CommonMark's escapable ASCII punctuation (§2.4), shared by the inline and block parsers. */
|
|
6
2
|
export const ESCAPABLE_PUNCTUATION = new Set('!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~');
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Backtick-run indexing for code spans (CommonMark §6.1): a run of N backticks closes with the
|
|
3
3
|
* next run of exactly N. Indexed once, then binary-searched per opener, because a per-opener
|
|
4
|
-
* forward rescan to EOF turns a run
|
|
4
|
+
* forward rescan to EOF turns a sequence of growing run lengths quadratic.
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* without which the fence and that byte merge into one longer run and the span closes elsewhere.
|
|
7
|
+
* The fence runs one backtick past the longest run inside, so nothing inside closes it; content
|
|
8
|
+
* with a backtick at an edge gets a space pad, or that backtick would merge into the fence.
|
|
10
9
|
*/
|
|
11
10
|
export declare function wrapAsCodeSpan(content: string): string;
|
|
12
11
|
/** Run start positions by run length, ascending within each length. */
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Backtick-run indexing for code spans (CommonMark §6.1): a run of N backticks closes with the
|
|
3
3
|
* next run of exactly N. Indexed once, then binary-searched per opener, because a per-opener
|
|
4
|
-
* forward rescan to EOF turns a run
|
|
4
|
+
* forward rescan to EOF turns a sequence of growing run lengths quadratic.
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* without which the fence and that byte merge into one longer run and the span closes elsewhere.
|
|
7
|
+
* The fence runs one backtick past the longest run inside, so nothing inside closes it; content
|
|
8
|
+
* with a backtick at an edge gets a space pad, or that backtick would merge into the fence.
|
|
10
9
|
*/
|
|
11
10
|
export function wrapAsCodeSpan(content) {
|
|
12
11
|
const fence = '`'.repeat(longestBacktickRun(content) + 1);
|