@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,57 +1,57 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Inline `$…$` math and the two display-math block forms, as
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* Inline `$…$` math and the two display-math block forms, as block kinds that hold their own
|
|
3
|
+
* source. No renderer here: `math-renderer.ts` is handed one, and this file never imports one.
|
|
4
|
+
* Recognition starts only once the plugin registers, so without it parsing stays byte-identical
|
|
5
|
+
* to plain GFM.
|
|
6
6
|
*/
|
|
7
|
-
import { caretOffsetAtPoint, createScanIndex, declarePluginInlineKind, declarePluginKind, registerInlineSyntax, registerInlineWidgetKind, registerBlockKind, registerBlockOpener,
|
|
7
|
+
import { caretOffsetAtPoint, createScanIndex, declarePluginInlineKind, declarePluginKind, registerInlineSyntax, registerInlineWidgetKind, registerBlockKind, registerBlockOpener, simpleLeafClosure, fenceAnatomy, fenceRawWrite, fenceShapeOfRaw, matchFenceInfo, scanFence, OPENER_PRIORITIES, trimTrailingLineEnding, displayLines, joinDisplayLines, ownTrailingLineEnding, trailingLineEnding, trimWhitespace } from '../../plugin';
|
|
8
8
|
import MathInline from './MathInline.svelte';
|
|
9
|
+
import { isFlankingSpace } from './flanking';
|
|
9
10
|
import { registerMathBlockCompleter } from './math-completion';
|
|
10
11
|
export const MATH_INLINE = 'math';
|
|
11
12
|
export const MATH_BLOCK = 'mathBlock';
|
|
12
13
|
export const MATH_FENCE = 'mathFence';
|
|
13
14
|
// ── Recognition ──────────────────────────────────────────────────────────────
|
|
14
|
-
const isWhitespace = (ch) => /\s/.test(ch);
|
|
15
15
|
const isDigit = (ch) => ch >= '0' && ch <= '9';
|
|
16
|
-
function
|
|
16
|
+
function indexDollars(raw) {
|
|
17
17
|
const positions = [];
|
|
18
18
|
for (let i = 1; i < raw.length; i++) {
|
|
19
|
-
if (raw[i] === '$'
|
|
19
|
+
if (raw[i] === '$')
|
|
20
20
|
positions.push(i);
|
|
21
21
|
}
|
|
22
22
|
return Int32Array.from(positions);
|
|
23
23
|
}
|
|
24
24
|
// Indexed once per block, not searched per consultation: a paragraph of shell prose
|
|
25
25
|
// (`$HOME $PATH $USER …`) would otherwise cost a full block scan at every `$`.
|
|
26
|
-
const
|
|
27
|
-
/**
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
*/
|
|
26
|
+
const nextDollarFrom = createScanIndex(indexDollars);
|
|
27
|
+
/** Money, written the way prose writes it: a whole number between the delimiters. */
|
|
28
|
+
const isPriceSpan = (body) => /^\d[\d.,]*$/.test(body);
|
|
29
|
+
/** Pandoc's rule: a match ends at the next `$`, and a closer with a space before it or a digit
|
|
30
|
+
* after leaves the opener literal. Added: a span that is only a number (`$5$`) stays prose. */
|
|
31
31
|
function recognizeMath(raw, pos, end, kind) {
|
|
32
32
|
const afterOpen = pos + 1;
|
|
33
33
|
if (afterOpen >= end)
|
|
34
34
|
return null;
|
|
35
35
|
const opener = raw[afterOpen];
|
|
36
|
-
if (
|
|
36
|
+
if (isFlankingSpace(opener))
|
|
37
37
|
return null;
|
|
38
38
|
// `$$` is the display fence, or the empty pair a keystroke just closed: never an inline
|
|
39
|
-
// opener, or
|
|
39
|
+
// opener, or the match would end on the second `$` of its own opener.
|
|
40
40
|
if (opener === '$')
|
|
41
41
|
return null;
|
|
42
|
-
// The index spans the whole block, so `end`
|
|
43
|
-
//
|
|
44
|
-
const close =
|
|
42
|
+
// The index spans the whole block, so `end` is what decides: a closer past the scan
|
|
43
|
+
// range leaves the `$` literal.
|
|
44
|
+
const close = nextDollarFrom(raw, pos + 2);
|
|
45
45
|
if (close === -1 || close >= end)
|
|
46
46
|
return null;
|
|
47
|
+
if (isFlankingSpace(raw[close - 1]) || isDigit(raw[close + 1] ?? ''))
|
|
48
|
+
return null;
|
|
49
|
+
if (isPriceSpan(raw.slice(afterOpen, close)))
|
|
50
|
+
return null;
|
|
47
51
|
return { kind, start: pos, end: close + 1 };
|
|
48
52
|
}
|
|
49
53
|
// ── Registration ─────────────────────────────────────────────────────────────
|
|
50
54
|
export function registerMathInline() {
|
|
51
|
-
// Keyed on the kind registry, not a module latch, so the platform reset that clears
|
|
52
|
-
// the inline registries also clears this guard.
|
|
53
|
-
if (isInlineKindDeclared(MATH_INLINE))
|
|
54
|
-
return;
|
|
55
55
|
const kind = declarePluginInlineKind(MATH_INLINE);
|
|
56
56
|
registerInlineSyntax('$', (raw, pos, end) => recognizeMath(raw, pos, end, kind), {
|
|
57
57
|
autoPair: true
|
|
@@ -61,34 +61,90 @@ export function registerMathInline() {
|
|
|
61
61
|
component: MathInline,
|
|
62
62
|
editing: {
|
|
63
63
|
revealSource: true,
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
revealContentSpan: (source) => source.length >= 2 ? { start: 1, end: source.length - 1 } : null
|
|
64
|
+
revealContentSpan: mathContentSpan,
|
|
65
|
+
revealOffsetAtPoint: mathInlineOffsetAtPoint
|
|
67
66
|
}
|
|
68
67
|
});
|
|
69
68
|
}
|
|
69
|
+
// ── Caret from a click ───────────────────────────────────────────────────────
|
|
70
|
+
// KaTeX paints glyphs, not source bytes, so both forms read a click the same way: how far along
|
|
71
|
+
// the painted run it landed, scaled into the span that run renders.
|
|
72
|
+
/** `$…$`: one delimiter each side, so an edit stays inside the formula. */
|
|
73
|
+
const mathContentSpan = (source) => source.length >= 2 ? { start: 1, end: source.length - 1 } : null;
|
|
74
|
+
function glyphOffsetInSpan(rendered, span, clientX, clientY) {
|
|
75
|
+
// `.katex-html` is the half that is painted: the MathML copy beside it is clipped to a
|
|
76
|
+
// pixel, and measuring both together answers for a point nobody clicked.
|
|
77
|
+
const glyphs = rendered.querySelector('.katex-html');
|
|
78
|
+
const along = glyphs ? caretOffsetAtPoint(glyphs, clientX, clientY) : null;
|
|
79
|
+
const total = glyphs?.textContent?.length ?? 0;
|
|
80
|
+
if (along === null || total === 0)
|
|
81
|
+
return null;
|
|
82
|
+
return span.start + Math.round((along / total) * (span.end - span.start));
|
|
83
|
+
}
|
|
84
|
+
function mathInlineOffsetAtPoint(widgetEl, source, clientX, clientY) {
|
|
85
|
+
const span = mathContentSpan(source);
|
|
86
|
+
return span ? glyphOffsetInSpan(widgetEl, span, clientX, clientY) : null;
|
|
87
|
+
}
|
|
88
|
+
/** Where a click on the rendered equation puts the caret; the fence lines paint no glyphs of
|
|
89
|
+
* their own, so a point the glyphs cannot answer for goes to the body's end. */
|
|
90
|
+
function mathCaretAtPoint(blockEl, clientX, clientY) {
|
|
91
|
+
const render = blockEl.querySelector('.math-block-render');
|
|
92
|
+
if (!render)
|
|
93
|
+
return null;
|
|
94
|
+
const start = Number(render.dataset.bodyStart);
|
|
95
|
+
const end = Number(render.dataset.bodyEnd);
|
|
96
|
+
if (!Number.isFinite(start) || !Number.isFinite(end))
|
|
97
|
+
return null;
|
|
98
|
+
return { path: [], offset: glyphOffsetInSpan(render, { start, end }, clientX, clientY) ?? end };
|
|
99
|
+
}
|
|
70
100
|
// ── Rendered display source ────────────────────────────────────────────────────
|
|
71
101
|
/**
|
|
72
102
|
* Shared by the render component so `mathBlock` and `mathFence` display identically.
|
|
73
103
|
* Round-trip stays byte-level on `raw`, so this never feeds serialization.
|
|
74
104
|
*/
|
|
75
105
|
export function mathDisplaySource(source) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
return '';
|
|
80
|
-
const body = source
|
|
81
|
-
.slice(firstBreak + 1)
|
|
82
|
-
.replace(/(?:\r?\n)?[ \t]*(?:`{3,}|~{3,})[ \t]*\r?\n?$/, '');
|
|
83
|
-
return body.trim();
|
|
84
|
-
}
|
|
106
|
+
const fence = fenceAnatomy(source);
|
|
107
|
+
if (fence)
|
|
108
|
+
return trimWhitespace(source.slice(fence.bodyStart, fence.closerStart));
|
|
85
109
|
let inner = source;
|
|
86
110
|
if (inner.startsWith('$$'))
|
|
87
111
|
inner = inner.slice(2);
|
|
88
112
|
if (inner.endsWith('$$'))
|
|
89
113
|
inner = inner.slice(0, -2);
|
|
90
|
-
return inner
|
|
114
|
+
return trimWhitespace(inner);
|
|
91
115
|
}
|
|
116
|
+
// ── Writing a block's own bytes ────────────────────────────────────────────────
|
|
117
|
+
/** The ending a restored closer line takes: the block's own, else the document's. */
|
|
118
|
+
const closerEnding = (ctx) => trailingLineEnding(ctx.node.raw, ctx.lineEnding);
|
|
119
|
+
/** The `$$` kind's write rule: put back a closer a truncating write dropped, as a fenced code
|
|
120
|
+
* block does; a first line that does not open the block is left alone. */
|
|
121
|
+
function normalizeMathBlockRaw(raw, ctx) {
|
|
122
|
+
const display = trimTrailingLineEnding(raw);
|
|
123
|
+
const lines = displayLines(display);
|
|
124
|
+
const { text } = lines[0];
|
|
125
|
+
if (!text.startsWith(BLOCK_FENCE))
|
|
126
|
+
return raw;
|
|
127
|
+
if (text === BLOCK_FENCE) {
|
|
128
|
+
if (lines.slice(1).some((line) => line.text === BLOCK_FENCE))
|
|
129
|
+
return raw;
|
|
130
|
+
return display + closerEnding(ctx) + BLOCK_FENCE + ownTrailingLineEnding(raw);
|
|
131
|
+
}
|
|
132
|
+
if (isBlockMathOpener(text))
|
|
133
|
+
return raw;
|
|
134
|
+
// The one-line form closes on line 0, so the lines a join brought along stay their own blocks.
|
|
135
|
+
lines[0] = { ...lines[0], text: text + BLOCK_FENCE };
|
|
136
|
+
return joinDisplayLines(lines) + ownTrailingLineEnding(raw);
|
|
137
|
+
}
|
|
138
|
+
const mathBlockWrite = {
|
|
139
|
+
normalize: normalizeMathBlockRaw,
|
|
140
|
+
// A restored closer line goes after every written byte; only the one-line form's closer lands
|
|
141
|
+
// mid-write, at the end of line 0.
|
|
142
|
+
mapOffset: (raw, offset) => {
|
|
143
|
+
const { text } = displayLines(raw)[0];
|
|
144
|
+
const closesLineZero = text.startsWith(BLOCK_FENCE) && text !== BLOCK_FENCE && !isBlockMathOpener(text);
|
|
145
|
+
return closesLineZero && offset > text.length ? offset + BLOCK_FENCE.length : offset;
|
|
146
|
+
}
|
|
147
|
+
};
|
|
92
148
|
// ── Block `$$…$$` display math ─────────────────────────────────────────────────
|
|
93
149
|
const BLOCK_FENCE = '$$';
|
|
94
150
|
/** The length ≥ 4 test keeps the open/close pair disjoint; anything else `$$`-prefixed
|
|
@@ -102,17 +158,21 @@ function isBlockMathOpener(text) {
|
|
|
102
158
|
}
|
|
103
159
|
export function registerMathBlock() {
|
|
104
160
|
const mathBlock = declarePluginKind(MATH_BLOCK);
|
|
105
|
-
// A source
|
|
106
|
-
// so a raw built from the exact fence bytes round-trips byte
|
|
161
|
+
// A block that holds its own source, like `fencedCode`: `serialize` re-emits
|
|
162
|
+
// `leadingTrivia + raw`, so a raw built from the exact fence bytes round-trips byte for byte.
|
|
107
163
|
registerBlockKind(mathBlock, {
|
|
164
|
+
label: 'Math block',
|
|
165
|
+
// A formula's source makes a poor label on the drag ghost.
|
|
166
|
+
dragLabel: 'Equation',
|
|
108
167
|
mergeRole: 'not-mergeable',
|
|
109
168
|
editable: true,
|
|
110
169
|
supportsInline: false,
|
|
111
|
-
// The
|
|
112
|
-
//
|
|
170
|
+
// The open source takes Enter as a literal newline and never splits, so neither edge
|
|
171
|
+
// can grow a neighbouring block.
|
|
113
172
|
gapEdges: 'both',
|
|
114
173
|
conformanceFixture: '$$\nx^2\n$$\n',
|
|
115
174
|
caretTargetAtPoint: mathCaretAtPoint,
|
|
175
|
+
rawWrite: mathBlockWrite,
|
|
116
176
|
closure: simpleLeafClosure({
|
|
117
177
|
focus: {
|
|
118
178
|
mode: 'implemented',
|
|
@@ -134,7 +194,7 @@ export function registerMathBlock() {
|
|
|
134
194
|
})
|
|
135
195
|
});
|
|
136
196
|
registerBlockOpener(mathBlock, {
|
|
137
|
-
// `$$` collides with no built-in matcher, so this
|
|
197
|
+
// `$$` collides with no built-in matcher, so this number only keeps it from tying.
|
|
138
198
|
priority: OPENER_PRIORITIES.fencedCode + 5,
|
|
139
199
|
interruptsParagraph: isBlockMathOpener,
|
|
140
200
|
tryOpen(ctx) {
|
|
@@ -164,46 +224,24 @@ export function registerMathBlock() {
|
|
|
164
224
|
});
|
|
165
225
|
// The open/close pair needs its lines adjacent, which Enter alone can never type.
|
|
166
226
|
registerMathBlockCompleter(mathBlock);
|
|
167
|
-
//
|
|
227
|
+
// Registered together so one install adds both forms, as admonitions and alerts do.
|
|
168
228
|
registerMathFence();
|
|
169
229
|
}
|
|
170
|
-
/** Where a press on the folded equation puts the caret. KaTeX paints glyphs, not source bytes,
|
|
171
|
-
* so the press walks the body span in proportion to how far along the equation it fell; the
|
|
172
|
-
* fence lines carry no glyph of their own. */
|
|
173
|
-
function mathCaretAtPoint(blockEl, clientX, clientY) {
|
|
174
|
-
const render = blockEl.querySelector('.math-block-render');
|
|
175
|
-
if (!render)
|
|
176
|
-
return null;
|
|
177
|
-
const start = Number(render.dataset.bodyStart);
|
|
178
|
-
const end = Number(render.dataset.bodyEnd);
|
|
179
|
-
if (!Number.isFinite(start) || !Number.isFinite(end))
|
|
180
|
-
return null;
|
|
181
|
-
// `.katex-html` is the painted half: its MathML twin is clipped to a pixel, and the pair
|
|
182
|
-
// measured together answers for a point no reader aimed at.
|
|
183
|
-
const glyphs = render.querySelector('.katex-html');
|
|
184
|
-
const along = glyphs ? caretOffsetAtPoint(glyphs, clientX, clientY) : null;
|
|
185
|
-
const total = glyphs?.textContent?.length ?? 0;
|
|
186
|
-
if (along === null || total === 0)
|
|
187
|
-
return { path: [], offset: end };
|
|
188
|
-
return { path: [], offset: start + Math.round((along / total) * (end - start)) };
|
|
189
|
-
}
|
|
190
230
|
// ── Fenced ```math display math ─────────────────────────────────────────────────
|
|
191
|
-
// GitHub's third math form: a
|
|
231
|
+
// GitHub's third math form: a block holding its own source, like the `$$` block, rendered by
|
|
192
232
|
// the same component.
|
|
193
|
-
const
|
|
194
|
-
function matchMathFence(text) {
|
|
195
|
-
const fence = matchFenceOpen(text);
|
|
196
|
-
return fence && fence.info.split(/\s+/)[0] === FENCE_INFO_TOKEN ? fence : null;
|
|
197
|
-
}
|
|
233
|
+
const matchMathFence = matchFenceInfo('math');
|
|
198
234
|
export function registerMathFence() {
|
|
199
235
|
const mathFence = declarePluginKind(MATH_FENCE);
|
|
200
236
|
registerBlockKind(mathFence, {
|
|
237
|
+
label: 'Math block',
|
|
201
238
|
mergeRole: 'not-mergeable',
|
|
202
239
|
editable: true,
|
|
203
240
|
supportsInline: false,
|
|
204
241
|
gapEdges: 'both',
|
|
205
242
|
caretTargetAtPoint: mathCaretAtPoint,
|
|
206
243
|
conformanceFixture: '```math\nx^2\n```\n',
|
|
244
|
+
rawWrite: fenceRawWrite(fenceShapeOfRaw),
|
|
207
245
|
closure: simpleLeafClosure({
|
|
208
246
|
focus: {
|
|
209
247
|
mode: 'implemented',
|
|
@@ -227,31 +265,21 @@ export function registerMathFence() {
|
|
|
227
265
|
})
|
|
228
266
|
});
|
|
229
267
|
registerBlockOpener(mathFence, {
|
|
230
|
-
// `fencedCode` accepts every fence, ```math included, so this
|
|
231
|
-
//
|
|
268
|
+
// `fencedCode` accepts every fence, ```math included, so this has to be tried before
|
|
269
|
+
// it, at a priority of its own just below mermaid's.
|
|
232
270
|
priority: OPENER_PRIORITIES.fencedCode - 4,
|
|
233
271
|
interruptsParagraph: (line) => matchMathFence(line) !== null,
|
|
234
272
|
tryOpen(ctx) {
|
|
235
273
|
const fence = matchMathFence(ctx.line.text);
|
|
236
274
|
if (!fence)
|
|
237
275
|
return null;
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
break;
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
// Unterminated declines so the built-in fencedCode claims it as a plain
|
|
246
|
-
// `math` code block, matching the sibling `$$` block.
|
|
247
|
-
if (closeIdx === -1)
|
|
276
|
+
const scan = scanFence(ctx, fence);
|
|
277
|
+
// An unterminated fence backs out, so the built-in fencedCode takes it as a plain
|
|
278
|
+
// `math` code block, matching the `$$` block.
|
|
279
|
+
if (scan.closer === -1)
|
|
248
280
|
return null;
|
|
249
|
-
const
|
|
250
|
-
|
|
251
|
-
.map((l) => l.raw)
|
|
252
|
-
.join('');
|
|
253
|
-
const node = { kind: mathFence, leadingTrivia: ctx.leadingTrivia, raw };
|
|
254
|
-
return { node, consumed: closeIdx + 1 - ctx.index };
|
|
281
|
+
const node = { kind: mathFence, leadingTrivia: ctx.leadingTrivia, raw: scan.raw };
|
|
282
|
+
return { node, consumed: scan.consumed };
|
|
255
283
|
}
|
|
256
284
|
});
|
|
257
285
|
}
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { type AnyBlockKind, type CompletionResult } from '../../plugin';
|
|
7
7
|
/** Exactly the fence and nothing else: `$$x$$` is already a whole block and `$$ x` opens no
|
|
8
|
-
* multi-line form, so neither is
|
|
8
|
+
* multi-line form, so neither is an attempt at the pair this completes. */
|
|
9
9
|
export declare function tryCompleteMathBlock(line: string): CompletionResult | null;
|
|
10
10
|
export declare function registerMathBlockCompleter(kind: AnyBlockKind): void;
|
|
@@ -3,20 +3,17 @@
|
|
|
3
3
|
* the closer, with the caret on the body. Registered beside the kind, so with no extension loaded
|
|
4
4
|
* `$$` plus Enter still splits exactly as bare GFM does.
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { registerBlockCompleter, trimWhitespace } from '../../plugin';
|
|
7
7
|
const BLOCK_FENCE = '$$';
|
|
8
8
|
/** Exactly the fence and nothing else: `$$x$$` is already a whole block and `$$ x` opens no
|
|
9
|
-
* multi-line form, so neither is
|
|
9
|
+
* multi-line form, so neither is an attempt at the pair this completes. */
|
|
10
10
|
export function tryCompleteMathBlock(line) {
|
|
11
|
-
if (line
|
|
11
|
+
if (trimWhitespace(line) !== BLOCK_FENCE)
|
|
12
12
|
return null;
|
|
13
13
|
return { lines: [BLOCK_FENCE, '', BLOCK_FENCE], caret: { path: [], line: 1, column: 0 } };
|
|
14
14
|
}
|
|
15
15
|
export function registerMathBlockCompleter(kind) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
// On type as well as at Enter: a lone `$$` can only be the pair's opener, so the block forms
|
|
19
|
-
// as the second `$` lands — the way a typed ` ``` ` is a fence at once — with the caret on
|
|
20
|
-
// the body line. The one-line `$$x$$` form is still reachable by typing into that body.
|
|
16
|
+
// On typing as well as on Enter: a lone `$$` can only be the pair's opener, so the block
|
|
17
|
+
// forms as the second `$` is typed, the way a typed ` ``` ` becomes a fence at once.
|
|
21
18
|
registerBlockCompleter(kind, { tryComplete: tryCompleteMathBlock, onType: true });
|
|
22
19
|
}
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* How a `$$` block lays out its source and preview while it is being edited. `split` (side by
|
|
3
3
|
* side) is the default because it moves the page least; `stacked` suits long equations; `source`
|
|
4
|
-
* shows no preview. A host picks the default through `latexPlugin({ blockLayout })
|
|
5
|
-
* block's own toggle
|
|
4
|
+
* shows no preview. A host picks the default through `latexPlugin({ blockLayout })` or an
|
|
5
|
+
* editor's `{ plugin, options }` entry, and the block's own toggle cycles from there.
|
|
6
6
|
*/
|
|
7
7
|
export type MathBlockLayout = 'split' | 'stacked' | 'source';
|
|
8
8
|
export declare const MATH_BLOCK_LAYOUTS: readonly MathBlockLayout[];
|
|
9
9
|
export declare function isMathBlockLayout(value: unknown): value is MathBlockLayout;
|
|
10
|
-
/**
|
|
11
|
-
* The starting layout: this editor's per-instance plugin options first (`{ plugin, options:
|
|
12
|
-
* { blockLayout } }`), then the factory's own default (`latexPlugin({ blockLayout })`), then
|
|
13
|
-
* `split`. An unknown value falls through rather than throwing.
|
|
14
|
-
*/
|
|
15
|
-
export declare function resolveDefaultLayout(options: unknown, fallback?: MathBlockLayout): MathBlockLayout;
|
|
@@ -2,12 +2,3 @@ export const MATH_BLOCK_LAYOUTS = ['split', 'stacked', 'source'];
|
|
|
2
2
|
export function isMathBlockLayout(value) {
|
|
3
3
|
return MATH_BLOCK_LAYOUTS.includes(value);
|
|
4
4
|
}
|
|
5
|
-
/**
|
|
6
|
-
* The starting layout: this editor's per-instance plugin options first (`{ plugin, options:
|
|
7
|
-
* { blockLayout } }`), then the factory's own default (`latexPlugin({ blockLayout })`), then
|
|
8
|
-
* `split`. An unknown value falls through rather than throwing.
|
|
9
|
-
*/
|
|
10
|
-
export function resolveDefaultLayout(options, fallback = 'split') {
|
|
11
|
-
const declared = options?.blockLayout;
|
|
12
|
-
return isMathBlockLayout(declared) ? declared : fallback;
|
|
13
|
-
}
|
|
@@ -1,26 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* Where the math renderer is plugged in: `latexPlugin({ renderer })` sets it at install time, so
|
|
3
|
+
* the plugin's own code never imports KaTeX. Blocks and widgets render through `mathSlot`
|
|
4
|
+
* because their props carry no renderer; one cache for the whole document means a repeated
|
|
5
|
+
* formula renders once per theme.
|
|
6
6
|
*/
|
|
7
|
+
/** `theme` is for an adapter that draws its own colors; one written against `{ display }` alone
|
|
8
|
+
* stays assignable. */
|
|
7
9
|
export type MathRenderer = (source: string, opts: {
|
|
8
10
|
display: boolean;
|
|
9
|
-
|
|
11
|
+
theme: string;
|
|
12
|
+
}) => MathRender;
|
|
13
|
+
export interface MathRender {
|
|
10
14
|
dom: HTMLElement;
|
|
11
15
|
error?: string;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
export declare function
|
|
20
|
-
dom: HTMLElement;
|
|
21
|
-
error?: string;
|
|
22
|
-
};
|
|
23
|
-
export declare function renderDisplayMath(source: string): {
|
|
24
|
-
dom: HTMLElement;
|
|
25
|
-
error?: string;
|
|
26
|
-
};
|
|
16
|
+
}
|
|
17
|
+
export declare const mathSlot: import("../../plugin").RendererSlot<{
|
|
18
|
+
source: string;
|
|
19
|
+
display: boolean;
|
|
20
|
+
}, MathRender>;
|
|
21
|
+
/** A formula the renderer rejected: its typed source in the error color, with the parser's
|
|
22
|
+
* message on hover. */
|
|
23
|
+
export declare function mathErrorNode(source: string, message: string): HTMLElement;
|
|
@@ -1,42 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* Where the math renderer is plugged in: `latexPlugin({ renderer })` sets it at install time, so
|
|
3
|
+
* the plugin's own code never imports KaTeX. Blocks and widgets render through `mathSlot`
|
|
4
|
+
* because their props carry no renderer; one cache for the whole document means a repeated
|
|
5
|
+
* formula renders once per theme.
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
cap: MEMO_CAP,
|
|
17
|
-
cloneOnRead: (entry) => ({ dom: entry.dom.cloneNode(true), error: entry.error })
|
|
18
|
-
});
|
|
19
|
-
return (source, opts) => memo(`${source}\x00${opts.display}`, () => inner(source, opts));
|
|
20
|
-
}
|
|
21
|
-
// ── Injection seam ──────────────────────────────────────────────────────────────
|
|
22
|
-
// Deliberately no default engine: the core must not import one, and the plugin's
|
|
23
|
-
// required `renderer` option guarantees this is set before any widget mounts.
|
|
24
|
-
let activeRenderer = null;
|
|
25
|
-
export function setMathRenderer(renderer) {
|
|
26
|
-
activeRenderer = createMemoizedRenderer(renderer);
|
|
27
|
-
}
|
|
28
|
-
export function renderInlineMath(source) {
|
|
29
|
-
return render(source, false);
|
|
30
|
-
}
|
|
31
|
-
export function renderDisplayMath(source) {
|
|
32
|
-
return render(source, true);
|
|
33
|
-
}
|
|
34
|
-
function render(source, display) {
|
|
35
|
-
if (!activeRenderer) {
|
|
36
|
-
const dom = document.createElement('span');
|
|
37
|
-
dom.className = 'math-error';
|
|
38
|
-
dom.textContent = 'Math error: renderer not configured';
|
|
39
|
-
return { dom, error: 'renderer not configured' };
|
|
7
|
+
import { createRendererSlot, renderSourceFallback } from '../../plugin';
|
|
8
|
+
export const mathSlot = createRendererSlot({
|
|
9
|
+
key: ({ source, display }) => `${display}\0${source}`,
|
|
10
|
+
// A cached node can sit in one place only, so every caller mounts its own copy.
|
|
11
|
+
cloneOnRead: ({ dom, error }) => ({ dom: dom.cloneNode(true), error }),
|
|
12
|
+
missing: ({ source }) => ({ dom: renderSourceFallback(source, 'Math renderer not configured') }),
|
|
13
|
+
failed: ({ source }, error) => {
|
|
14
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
15
|
+
return { dom: mathErrorNode(source, message), error: message };
|
|
40
16
|
}
|
|
41
|
-
|
|
17
|
+
});
|
|
18
|
+
/** A formula the renderer rejected: its typed source in the error color, with the parser's
|
|
19
|
+
* message on hover. */
|
|
20
|
+
export function mathErrorNode(source, message) {
|
|
21
|
+
const dom = renderSourceFallback(source, message);
|
|
22
|
+
dom.className = 'math-error';
|
|
23
|
+
dom.style.color = 'var(--color-error, #d03025)';
|
|
24
|
+
return dom;
|
|
42
25
|
}
|
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Where the body sits inside the block's source. The fence lines
|
|
3
|
-
* a point measured against the rendered equation
|
|
2
|
+
* Where the body sits inside the block's source. The fence lines paint no glyphs of their own,
|
|
3
|
+
* so a point measured against the rendered equation can only name a place inside this span.
|
|
4
4
|
*/
|
|
5
5
|
export declare function mathBodySpan(text: string): {
|
|
6
6
|
start: number;
|
|
7
7
|
end: number;
|
|
8
8
|
};
|
|
9
|
-
/**
|
|
10
|
-
*
|
|
11
|
-
* for a caret to sit once the fence lines hide, and Backspace has no byte it could mean. The
|
|
12
|
-
* completion every such block takes as its source is revealed: opener, one empty body line,
|
|
13
|
-
* closer, caret on that line. A block that already has a body line, blank or not, is left alone.
|
|
14
|
-
*/
|
|
9
|
+
/** A block with no body line (`$$$$`, `$$\n$$`) has no caret position once the fence lines hide,
|
|
10
|
+
* so it gains one empty body line with the caret on it. */
|
|
15
11
|
export declare function completeBareMathSource(text: string): {
|
|
16
12
|
text: string;
|
|
17
13
|
caret: number;
|