@voithos-labs/aragonite 0.10.4 → 0.10.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/a11y-strings.d.ts +11 -5
- package/dist/a11y-strings.js +60 -5
- package/dist/action-contracts.d.ts +242 -155
- package/dist/action-contracts.js +2 -2
- package/dist/active-editor.d.ts +3 -3
- package/dist/active-editor.js +8 -9
- package/dist/ambient/ambient-dom.d.ts +2 -5
- package/dist/ambient/ambient-dom.js +16 -62
- package/dist/assert.js +6 -5
- package/dist/block-component.d.ts +135 -109
- package/dist/block-component.js +30 -22
- package/dist/block-id.d.ts +6 -10
- package/dist/block-id.js +25 -14
- package/dist/bounded-memo.d.ts +5 -5
- package/dist/bounded-memo.js +6 -6
- package/dist/components/BlockDragHandle.svelte +12 -21
- package/dist/components/BlockHost.svelte +56 -134
- package/dist/components/BlockList.svelte +22 -19
- package/dist/components/DecorationOverlay.svelte +9 -10
- package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
- package/dist/components/Editor.svelte +603 -1126
- package/dist/components/Editor.svelte.d.ts +9 -20
- package/dist/components/GapCaret.svelte +26 -59
- package/dist/components/SelectionOverlay.svelte +26 -51
- package/dist/components/SelectionOverlay.svelte.d.ts +5 -3
- package/dist/components/TailInsert.svelte +8 -55
- package/dist/components/TailInsert.svelte.d.ts +4 -6
- package/dist/components/block-content-selector.d.ts +11 -11
- package/dist/components/block-content-selector.js +11 -11
- package/dist/components/block-el-lookup.d.ts +6 -0
- package/dist/components/block-el-lookup.js +27 -0
- package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
- package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
- package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
- package/dist/components/blocks/code/CodeBlock.svelte +255 -276
- package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
- package/dist/components/blocks/code/CodeBlockRail.svelte +72 -87
- package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
- package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
- package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
- package/dist/components/blocks/code/code-bootstrap.js +29 -34
- package/dist/components/blocks/code/code-context-actions.js +5 -4
- package/dist/components/blocks/code/code-enter.js +2 -2
- package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
- package/dist/components/blocks/code/code-fence-boundary.js +40 -66
- package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
- package/dist/components/blocks/code/code-fence-exit.js +24 -25
- package/dist/components/blocks/code/code-indent.d.ts +2 -2
- package/dist/components/blocks/code/code-indent.js +4 -7
- package/dist/components/blocks/code/code-languages.d.ts +16 -12
- package/dist/components/blocks/code/code-languages.js +57 -39
- package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
- package/dist/components/blocks/code/code-paste-surface.js +9 -18
- package/dist/components/blocks/code/code-renderer.d.ts +21 -5
- package/dist/components/blocks/code/code-renderer.js +90 -125
- package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
- package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
- package/dist/components/blocks/directive/activate-directives.js +18 -13
- package/dist/components/blocks/editable-leaf.d.ts +50 -74
- package/dist/components/blocks/editable-leaf.js +141 -203
- package/dist/components/blocks/editable-surface.d.ts +96 -100
- package/dist/components/blocks/editable-surface.js +101 -109
- package/dist/components/blocks/list/ListBlock.svelte +45 -90
- package/dist/components/blocks/list/ListItemBlock.svelte +93 -147
- package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +1 -0
- package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
- package/dist/components/blocks/list/task-checkbox.js +12 -7
- package/dist/components/blocks/plain-text-backend.d.ts +4 -20
- package/dist/components/blocks/plain-text-backend.js +9 -43
- package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
- package/dist/components/blocks/surface-wiring.svelte.js +15 -34
- package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
- package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
- package/dist/components/blocks/table/TableBlock.svelte +100 -165
- package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
- package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
- package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
- package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
- package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
- package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
- package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
- package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
- package/dist/components/blocks/table/cell-pointer.js +49 -71
- package/dist/components/blocks/table/cell-render.d.ts +24 -29
- package/dist/components/blocks/table/cell-render.js +29 -31
- package/dist/components/blocks/table/selected-cells.d.ts +7 -7
- package/dist/components/blocks/table/selected-cells.js +9 -13
- package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
- package/dist/components/blocks/table/table-caret-at-point.js +5 -5
- package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
- package/dist/components/blocks/table/table-cell-paste.js +27 -43
- package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
- package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
- package/dist/components/blocks/table/table-menu-model.js +6 -10
- package/dist/components/blocks/table/table-navigation.js +2 -2
- package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
- package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
- package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
- package/dist/components/blocks/text/auto-pair-record.js +51 -0
- package/dist/components/blocks/text/click-snap-guard.d.ts +8 -6
- package/dist/components/blocks/text/click-snap-guard.js +10 -7
- package/dist/components/blocks/text/composition-seat.d.ts +17 -14
- package/dist/components/blocks/text/composition-seat.js +11 -11
- package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
- package/dist/components/blocks/text/construct-edge-delete.js +50 -65
- package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
- package/dist/components/blocks/text/construct-reveal.js +13 -14
- package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
- package/dist/components/blocks/text/delimiter-autopair.js +87 -103
- package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
- package/dist/components/blocks/text/edge-policy-dispatch.js +150 -181
- package/dist/components/blocks/text/edge-seat.d.ts +17 -26
- package/dist/components/blocks/text/edge-seat.js +43 -70
- package/dist/components/blocks/text/link-at-point.d.ts +9 -9
- package/dist/components/blocks/text/link-at-point.js +12 -15
- package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
- package/dist/components/blocks/text/live-join-seam.js +75 -112
- package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
- package/dist/components/blocks/text/live-selection-edit.js +32 -108
- package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
- package/dist/components/blocks/text/live-split-rebalance.js +50 -67
- package/dist/components/blocks/text/marker-completion.d.ts +7 -12
- package/dist/components/blocks/text/marker-completion.js +17 -10
- package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
- package/dist/components/blocks/text/pending-mark-insert.js +30 -49
- package/dist/components/blocks/text/screen-diff.d.ts +5 -15
- package/dist/components/blocks/text/screen-diff.js +5 -19
- package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
- package/dist/components/blocks/text/text-clipboard.js +27 -32
- package/dist/components/blocks/text/text-keydown.d.ts +20 -30
- package/dist/components/blocks/text/text-keydown.js +54 -51
- package/dist/components/blocks/text/text-render.d.ts +25 -35
- package/dist/components/blocks/text/text-render.js +82 -61
- package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
- package/dist/components/blocks/text/widget-adjacency.js +17 -17
- package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
- package/dist/components/blocks/text/widget-interaction.js +212 -199
- package/dist/components/blocks/widget-portal.d.ts +20 -29
- package/dist/components/blocks/widget-portal.js +16 -14
- package/dist/components/built-in-blocks.d.ts +3 -4
- package/dist/components/built-in-blocks.js +17 -18
- package/dist/components/drag-handle.d.ts +12 -35
- package/dist/components/drag-handle.js +22 -68
- package/dist/components/editor-built-ins.d.ts +1 -0
- package/dist/components/editor-built-ins.js +16 -0
- package/dist/components/editor-root-clipboard.d.ts +6 -6
- package/dist/components/editor-root-clipboard.js +16 -27
- package/dist/components/editor-root-document-swap.d.ts +49 -0
- package/dist/components/editor-root-document-swap.js +54 -0
- package/dist/components/editor-root-focus.d.ts +5 -4
- package/dist/components/editor-root-focus.js +51 -22
- package/dist/components/editor-root-focused-surface.d.ts +35 -0
- package/dist/components/editor-root-focused-surface.js +65 -0
- package/dist/components/editor-root-geometry.d.ts +15 -24
- package/dist/components/editor-root-geometry.js +27 -31
- package/dist/components/editor-root-gestures.d.ts +39 -0
- package/dist/components/editor-root-gestures.js +189 -0
- package/dist/components/editor-root-keydown.d.ts +10 -25
- package/dist/components/editor-root-keydown.js +19 -43
- package/dist/components/editor-root-listeners.d.ts +22 -24
- package/dist/components/editor-root-listeners.js +49 -24
- package/dist/components/editor-root-menus.d.ts +51 -0
- package/dist/components/editor-root-menus.js +147 -0
- package/dist/components/editor-root-mode-flip.d.ts +16 -11
- package/dist/components/editor-root-mode-flip.js +36 -34
- package/dist/components/editor-root-scroll-host.d.ts +22 -0
- package/dist/components/editor-root-scroll-host.js +34 -0
- package/dist/components/editor-root-test-surface.d.ts +48 -0
- package/dist/components/editor-root-test-surface.js +6 -0
- package/dist/components/image/ImageOverlayHost.svelte +44 -35
- package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
- package/dist/components/image/ImageProperties.svelte +37 -41
- package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
- package/dist/components/image/ImageResizeHandles.svelte +14 -26
- package/dist/components/image/image-crop.d.ts +5 -11
- package/dist/components/image/image-crop.js +5 -11
- package/dist/components/image/image-edit-commit.d.ts +19 -16
- package/dist/components/image/image-edit-commit.js +74 -38
- package/dist/components/image/image-resize.d.ts +2 -5
- package/dist/components/image/image-resize.js +3 -6
- package/dist/components/image/image-widget-editing.d.ts +3 -3
- package/dist/components/image/image-widget-editing.js +9 -9
- package/dist/components/image/widget-dom.d.ts +2 -3
- package/dist/components/image/widget-dom.js +19 -24
- package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
- package/dist/components/image/widget-selection-state.svelte.js +26 -19
- package/dist/components/kind-cue.svelte.d.ts +21 -0
- package/dist/components/kind-cue.svelte.js +35 -0
- package/dist/components/link-card/LinkCard.svelte +115 -64
- package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
- package/dist/components/link-card/LinkCardHost.svelte +42 -33
- package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
- package/dist/components/link-card/link-card-commit.d.ts +16 -19
- package/dist/components/link-card/link-card-commit.js +21 -30
- package/dist/components/link-card/link-card-entry.d.ts +13 -23
- package/dist/components/link-card/link-card-entry.js +16 -24
- package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
- package/dist/components/link-card/link-card-state.svelte.js +2 -2
- package/dist/components/lrd-map-gate.d.ts +4 -11
- package/dist/components/lrd-map-gate.js +5 -11
- package/dist/components/menu/BlockMenu.svelte +20 -81
- package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
- package/dist/components/menu/InlineMenuHost.svelte +191 -0
- package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
- package/dist/components/menu/MenuIcon.svelte +3 -103
- package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
- package/dist/components/menu/SelectionToolbar.svelte +30 -35
- package/dist/components/menu/SelectionToolbar.svelte.d.ts +3 -5
- package/dist/components/menu/clipboard-actions.d.ts +3 -4
- package/dist/components/menu/clipboard-actions.js +3 -4
- package/dist/components/menu/default-context-actions.d.ts +4 -13
- package/dist/components/menu/default-context-actions.js +49 -67
- package/dist/components/menu/flyout-placement.d.ts +2 -2
- package/dist/components/menu/flyout-placement.js +2 -2
- package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
- package/dist/components/menu/menu-presence.svelte.js +19 -0
- package/dist/components/paste-image-arm.d.ts +6 -11
- package/dist/components/paste-image-arm.js +11 -18
- package/dist/components/portal.d.ts +2 -5
- package/dist/components/portal.js +4 -7
- package/dist/core/directive/activate.d.ts +4 -5
- package/dist/core/directive/activate.js +8 -9
- package/dist/core/directive/container-opener.js +13 -12
- package/dist/core/directive/grammar.d.ts +2 -5
- package/dist/core/directive/grammar.js +10 -10
- package/dist/core/directive/kinds.d.ts +4 -7
- package/dist/core/directive/kinds.js +14 -16
- package/dist/core/directive/registry.d.ts +12 -9
- package/dist/core/directive/registry.js +19 -20
- package/dist/core/directive/text-recognizer.d.ts +3 -2
- package/dist/core/directive/text-recognizer.js +5 -9
- package/dist/core/escapable.d.ts +1 -5
- package/dist/core/escapable.js +1 -5
- package/dist/core/inline/backticks.d.ts +3 -4
- package/dist/core/inline/backticks.js +3 -4
- package/dist/core/inline/character-refs.js +2 -1
- package/dist/core/inline/destination-bytes.d.ts +6 -3
- package/dist/core/inline/destination-bytes.js +50 -8
- package/dist/core/inline/entity-widget.d.ts +4 -3
- package/dist/core/inline/entity-widget.js +6 -6
- package/dist/core/inline/format-toggle.d.ts +22 -28
- package/dist/core/inline/format-toggle.js +97 -129
- package/dist/core/inline/html-entities.d.ts +2 -3
- package/dist/core/inline/html-entities.js +2 -3
- package/dist/core/inline/html-tag-grammar.js +6 -2
- package/dist/core/inline/image-dimensions.d.ts +2 -0
- package/dist/core/inline/image-dimensions.js +19 -2
- package/dist/core/inline/image-source-bytes.d.ts +11 -0
- package/dist/core/inline/image-source-bytes.js +71 -0
- package/dist/core/inline/index.d.ts +28 -21
- package/dist/core/inline/index.js +56 -34
- package/dist/core/inline/inline-cache.d.ts +12 -15
- package/dist/core/inline/inline-cache.js +11 -14
- package/dist/core/inline/inline-widgets.d.ts +54 -75
- package/dist/core/inline/inline-widgets.js +54 -62
- package/dist/core/inline/link-destination.d.ts +31 -0
- package/dist/core/inline/link-destination.js +129 -0
- package/dist/core/inline/link-reference-resolver.d.ts +8 -6
- package/dist/core/inline/link-reference-resolver.js +10 -6
- package/dist/core/inline/link-source-bytes.d.ts +31 -0
- package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
- package/dist/core/inline/live-edit/read-back.d.ts +29 -0
- package/dist/core/inline/live-edit/read-back.js +50 -0
- package/dist/core/inline/picture.d.ts +10 -0
- package/dist/core/inline/picture.js +40 -0
- package/dist/core/inline/scan/autolinks.d.ts +7 -8
- package/dist/core/inline/scan/autolinks.js +80 -59
- package/dist/core/inline/scan/brackets.d.ts +2 -2
- package/dist/core/inline/scan/brackets.js +6 -103
- package/dist/core/inline/scan/code-spans.d.ts +4 -0
- package/dist/core/inline/scan/code-spans.js +8 -0
- package/dist/core/inline/scan/emphasis.js +10 -14
- package/dist/core/inline/scan/index.d.ts +3 -1
- package/dist/core/inline/scan/index.js +32 -33
- package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
- package/dist/core/inline/scan/plugin-syntax.js +75 -89
- package/dist/core/inline/scan/scan-state.d.ts +2 -0
- package/dist/core/inline/scan/scan-state.js +1 -0
- package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
- package/dist/core/inline/scan/simple-nodes.js +2 -5
- package/dist/core/inline/scan/triggers.d.ts +17 -0
- package/dist/core/inline/scan/triggers.js +26 -0
- package/dist/core/inline/scan/url.js +8 -10
- package/dist/core/inline/transparency.d.ts +2 -1
- package/dist/core/inline/transparency.js +31 -15
- package/dist/core/inline/visibility.d.ts +30 -49
- package/dist/core/inline/visibility.js +31 -49
- package/dist/core/inline/walk.d.ts +4 -10
- package/dist/core/inline/walk.js +4 -10
- package/dist/core/inline-render.d.ts +22 -27
- package/dist/core/inline-render.js +51 -60
- package/dist/core/lines.d.ts +67 -26
- package/dist/core/lines.js +164 -33
- package/dist/core/metadata-parity.d.ts +9 -0
- package/dist/core/metadata-parity.js +25 -0
- package/dist/core/node-views.d.ts +7 -6
- package/dist/core/node-views.js +5 -5
- package/dist/core/nodes.d.ts +34 -44
- package/dist/core/nodes.js +4 -12
- package/dist/core/parser.d.ts +27 -34
- package/dist/core/parser.js +53 -67
- package/dist/core/parsers/blockquote.d.ts +5 -8
- package/dist/core/parsers/blockquote.js +11 -10
- package/dist/core/parsers/built-in-openers.d.ts +2 -5
- package/dist/core/parsers/built-in-openers.js +5 -8
- package/dist/core/parsers/fence-syntax.d.ts +36 -7
- package/dist/core/parsers/fence-syntax.js +61 -11
- package/dist/core/parsers/fenced-code.d.ts +16 -0
- package/dist/core/parsers/fenced-code.js +16 -15
- package/dist/core/parsers/heading.d.ts +19 -2
- package/dist/core/parsers/heading.js +50 -2
- package/dist/core/parsers/html-block.d.ts +3 -6
- package/dist/core/parsers/html-block.js +10 -11
- package/dist/core/parsers/indented-code.d.ts +1 -1
- package/dist/core/parsers/indented-code.js +2 -8
- package/dist/core/parsers/link-reference.d.ts +5 -3
- package/dist/core/parsers/link-reference.js +116 -120
- package/dist/core/parsers/list.d.ts +12 -5
- package/dist/core/parsers/list.js +53 -36
- package/dist/core/parsers/paragraph.d.ts +3 -3
- package/dist/core/parsers/paragraph.js +14 -5
- package/dist/core/parsers/table-completion.d.ts +2 -5
- package/dist/core/parsers/table-completion.js +7 -10
- package/dist/core/parsers/table.d.ts +8 -8
- package/dist/core/parsers/table.js +23 -26
- package/dist/core/parsers/thematic-break.js +15 -14
- package/dist/core/paths.d.ts +13 -0
- package/dist/core/paths.js +31 -0
- package/dist/core/terminator-escalation.d.ts +0 -7
- package/dist/core/terminator-escalation.js +5 -8
- package/dist/core/url-policy.d.ts +2 -5
- package/dist/core/url-policy.js +8 -12
- package/dist/cursor/caret-memory.d.ts +34 -0
- package/dist/cursor/caret-memory.js +82 -0
- package/dist/cursor/coordinate-spaces.d.ts +26 -19
- package/dist/cursor/coordinate-spaces.js +32 -20
- package/dist/cursor/dom-walk.d.ts +7 -13
- package/dist/cursor/dom-walk.js +7 -13
- package/dist/cursor/edge-affinity.d.ts +7 -35
- package/dist/cursor/edge-affinity.js +13 -44
- package/dist/cursor/focused-caret.d.ts +6 -8
- package/dist/cursor/focused-caret.js +7 -16
- package/dist/cursor/height-model.d.ts +3 -3
- package/dist/cursor/height-model.js +5 -5
- package/dist/cursor/height-oracle.d.ts +10 -6
- package/dist/cursor/height-oracle.js +26 -74
- package/dist/cursor/observe-resize.d.ts +13 -0
- package/dist/cursor/observe-resize.js +43 -0
- package/dist/cursor/overlay-rects.d.ts +2 -5
- package/dist/cursor/overlay-rects.js +2 -5
- package/dist/cursor/overlay-remeasure.d.ts +6 -7
- package/dist/cursor/overlay-remeasure.js +10 -14
- package/dist/cursor/pending-marks.d.ts +7 -9
- package/dist/cursor/pending-marks.js +6 -27
- package/dist/cursor/point-offset.d.ts +16 -10
- package/dist/cursor/point-offset.js +60 -25
- package/dist/cursor/reveal-source.d.ts +7 -11
- package/dist/cursor/reveal-source.js +10 -18
- package/dist/cursor/scroll-ancestors.d.ts +9 -20
- package/dist/cursor/scroll-ancestors.js +14 -26
- package/dist/cursor/scroll-owner.d.ts +92 -0
- package/dist/cursor/scroll-owner.js +283 -0
- package/dist/cursor/scrollport.d.ts +14 -15
- package/dist/cursor/scrollport.js +7 -13
- package/dist/cursor/sticky-column.d.ts +6 -29
- package/dist/cursor/sticky-column.js +6 -49
- package/dist/cursor/sticky-measure.d.ts +14 -9
- package/dist/cursor/sticky-measure.js +99 -49
- package/dist/cursor/surface-backend.d.ts +41 -0
- package/dist/cursor/surface-backend.js +78 -0
- package/dist/cursor/typography-estimates.d.ts +3 -3
- package/dist/cursor/typography-estimates.js +3 -3
- package/dist/cursor/visual-lines.d.ts +25 -14
- package/dist/cursor/visual-lines.js +45 -46
- package/dist/cursor/widget-edge-snap.d.ts +10 -15
- package/dist/cursor/widget-edge-snap.js +13 -12
- package/dist/cursor/widget-offset.d.ts +110 -104
- package/dist/cursor/widget-offset.js +344 -179
- package/dist/debug/diagnostics-report.d.ts +6 -6
- package/dist/debug/diagnostics-report.js +5 -5
- package/dist/debug/dump-tree.js +2 -2
- package/dist/debug/editor-diagnostics.d.ts +15 -0
- package/dist/debug/editor-diagnostics.js +33 -0
- package/dist/debug/inspect.d.ts +2 -2
- package/dist/debug/inspect.js +4 -4
- package/dist/debug/interaction-trace.d.ts +14 -15
- package/dist/debug/interaction-trace.js +19 -20
- package/dist/debug/operations-log.d.ts +1 -1
- package/dist/debug/operations-log.js +1 -1
- package/dist/decorations/buckets.d.ts +6 -12
- package/dist/decorations/buckets.js +4 -11
- package/dist/decorations/decoration-state.svelte.d.ts +2 -3
- package/dist/decorations/decoration-state.svelte.js +24 -26
- package/dist/decorations/island-dom.d.ts +10 -18
- package/dist/decorations/island-dom.js +25 -50
- package/dist/decorations/reserved-attrs.d.ts +6 -8
- package/dist/decorations/reserved-attrs.js +30 -17
- package/dist/decorations/types.d.ts +6 -7
- package/dist/decorations/types.js +2 -1
- package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
- package/dist/decorations/use-block-decorations.svelte.js +71 -0
- package/dist/decorations/widget-dom.d.ts +3 -3
- package/dist/decorations/widget-dom.js +5 -5
- package/dist/dev-warn.d.ts +5 -2
- package/dist/dev-warn.js +16 -4
- package/dist/editor-actions/ancestry-folds.d.ts +9 -14
- package/dist/editor-actions/ancestry-folds.js +13 -18
- package/dist/editor-actions/block-edit-core.d.ts +49 -22
- package/dist/editor-actions/block-edit-core.js +279 -151
- package/dist/editor-actions/block-edit-scope.d.ts +63 -50
- package/dist/editor-actions/block-edit-scope.js +100 -48
- package/dist/editor-actions/block-edit.d.ts +2 -3
- package/dist/editor-actions/block-edit.js +14 -90
- package/dist/editor-actions/commit/history.d.ts +4 -4
- package/dist/editor-actions/commit/history.js +33 -34
- package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
- package/dist/editor-actions/commit/reading-write-gate.js +56 -0
- package/dist/editor-actions/commit/text-batch.d.ts +7 -11
- package/dist/editor-actions/commit/text-batch.js +6 -7
- package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
- package/dist/editor-actions/commit/undo-controller.js +346 -216
- package/dist/editor-actions/container-block-component.d.ts +32 -51
- package/dist/editor-actions/container-block-component.js +66 -92
- package/dist/editor-actions/container-edit.d.ts +4 -2
- package/dist/editor-actions/container-edit.js +14 -44
- package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
- package/dist/editor-actions/container-exit-overrides.js +19 -21
- package/dist/editor-actions/deps.d.ts +25 -32
- package/dist/editor-actions/enter-completion.d.ts +12 -15
- package/dist/editor-actions/enter-completion.js +49 -51
- package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
- package/dist/editor-actions/focus/focus-dispatch.js +28 -50
- package/dist/editor-actions/focus/focus-landing.d.ts +8 -11
- package/dist/editor-actions/focus/focus-landing.js +15 -14
- package/dist/editor-actions/focus/focus.d.ts +3 -2
- package/dist/editor-actions/focus/focus.js +42 -59
- package/dist/editor-actions/index.d.ts +4 -3
- package/dist/editor-actions/index.js +5 -4
- package/dist/editor-actions/inline-range-commit.d.ts +18 -16
- package/dist/editor-actions/inline-range-commit.js +45 -54
- package/dist/editor-actions/leaf-write.d.ts +11 -0
- package/dist/editor-actions/leaf-write.js +102 -0
- package/dist/editor-actions/list-context.d.ts +9 -10
- package/dist/editor-actions/list-context.js +115 -110
- package/dist/editor-actions/list-overrides.d.ts +13 -5
- package/dist/editor-actions/list-overrides.js +36 -12
- package/dist/editor-actions/merge-fallback.d.ts +10 -16
- package/dist/editor-actions/merge-fallback.js +11 -22
- package/dist/editor-actions/nested/container-actions.d.ts +37 -0
- package/dist/editor-actions/nested/container-actions.js +42 -0
- package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
- package/dist/editor-actions/nested/emptied-container.js +5 -0
- package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
- package/dist/editor-actions/nested/nested-actions.js +17 -15
- package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
- package/dist/editor-actions/nested/nested-block-edit.js +40 -134
- package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
- package/dist/editor-actions/nested/nested-focus.js +33 -21
- package/dist/editor-actions/paste-coordinator.d.ts +3 -2
- package/dist/editor-actions/paste-coordinator.js +17 -13
- package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
- package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
- package/dist/editor-actions/plugin/container.d.ts +54 -82
- package/dist/editor-actions/plugin/container.js +105 -188
- package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
- package/dist/editor-actions/plugin/directive-container.js +7 -8
- package/dist/editor-actions/reorder-action.d.ts +7 -12
- package/dist/editor-actions/reorder-action.js +32 -48
- package/dist/editor-actions/reorder-drag.d.ts +12 -8
- package/dist/editor-actions/reorder-drag.js +45 -41
- package/dist/editor-actions/replacement-focus.d.ts +13 -21
- package/dist/editor-actions/replacement-focus.js +32 -33
- package/dist/editor-actions/search-replace.js +71 -67
- package/dist/editor-actions/stored-caret.d.ts +7 -0
- package/dist/editor-actions/stored-caret.js +10 -0
- package/dist/editor-actions/table-context.d.ts +9 -11
- package/dist/editor-actions/table-context.js +70 -93
- package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
- package/dist/editor-actions/unwrap-strategies.js +52 -63
- package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
- package/dist/editor-actions/whole-block-focus-surface.js +43 -53
- package/dist/editor-events.d.ts +25 -29
- package/dist/editor-events.js +17 -28
- package/dist/editor-keys.d.ts +96 -104
- package/dist/editor-keys.js +11 -24
- package/dist/editor-props.d.ts +88 -71
- package/dist/editor-rects.d.ts +23 -34
- package/dist/editor-rects.js +9 -77
- package/dist/env.d.ts +6 -4
- package/dist/env.js +8 -4
- package/dist/index.d.ts +6 -2
- package/dist/index.js +5 -2
- package/dist/inline-menu/inline-menu-session.d.ts +37 -0
- package/dist/inline-menu/inline-menu-session.js +98 -0
- package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
- package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
- package/dist/inline-menu/types.d.ts +77 -0
- package/dist/inline-menu/types.js +7 -0
- package/dist/invariants/child-id-parity.d.ts +23 -0
- package/dist/invariants/child-id-parity.js +39 -0
- package/dist/invariants/commit-paths.d.ts +4 -4
- package/dist/invariants/commit-paths.js +4 -4
- package/dist/invariants/commit-scope.d.ts +4 -4
- package/dist/invariants/commit-scope.js +9 -8
- package/dist/invariants/context-keys.d.ts +2 -5
- package/dist/invariants/context-keys.js +3 -6
- package/dist/invariants/descriptor.d.ts +2 -6
- package/dist/invariants/descriptor.js +2 -6
- package/dist/invariants/inline-transitions.d.ts +9 -16
- package/dist/invariants/inline-transitions.js +10 -18
- package/dist/invariants/install.d.ts +18 -27
- package/dist/invariants/install.js +29 -30
- package/dist/invariants/keeps-a-block.d.ts +7 -0
- package/dist/invariants/keeps-a-block.js +14 -0
- package/dist/invariants/landable-caret.d.ts +5 -7
- package/dist/invariants/landable-caret.js +8 -11
- package/dist/invariants/landing-focus-scroll.d.ts +7 -0
- package/dist/invariants/landing-focus-scroll.js +13 -0
- package/dist/invariants/landing-value.d.ts +13 -0
- package/dist/invariants/landing-value.js +27 -0
- package/dist/invariants/marker-css-parity.d.ts +5 -6
- package/dist/invariants/marker-css-parity.js +11 -12
- package/dist/invariants/measures-in-own-list.d.ts +6 -0
- package/dist/invariants/measures-in-own-list.js +13 -0
- package/dist/invariants/node-shape.d.ts +18 -37
- package/dist/invariants/node-shape.js +123 -79
- package/dist/invariants/open-tail.d.ts +7 -0
- package/dist/invariants/open-tail.js +45 -0
- package/dist/invariants/placement-ends-widget.d.ts +8 -0
- package/dist/invariants/placement-ends-widget.js +13 -0
- package/dist/invariants/registry.d.ts +27 -66
- package/dist/invariants/registry.js +61 -137
- package/dist/invariants/render-fidelity.d.ts +4 -4
- package/dist/invariants/render-fidelity.js +5 -5
- package/dist/invariants/selection-endpoints.d.ts +6 -7
- package/dist/invariants/selection-endpoints.js +18 -16
- package/dist/invariants/single-node-sink.d.ts +4 -5
- package/dist/invariants/single-node-sink.js +4 -5
- package/dist/invariants/snapshot-integrity.d.ts +5 -6
- package/dist/invariants/snapshot-integrity.js +1 -1
- package/dist/invariants/structural-descriptor.d.ts +6 -15
- package/dist/invariants/structural-descriptor.js +6 -15
- package/dist/menu-icons.d.ts +47 -0
- package/dist/menu-icons.js +113 -0
- package/dist/perf/instruments.d.ts +20 -5
- package/dist/perf/instruments.js +35 -15
- package/dist/perf/use-mount-gauge.svelte.js +4 -4
- package/dist/plugin.d.ts +37 -8
- package/dist/plugin.js +100 -77
- package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
- package/dist/plugins/admonitions/admonition-kind.js +12 -10
- package/dist/plugins/admonitions/convert-document.d.ts +5 -5
- package/dist/plugins/admonitions/convert-document.js +8 -7
- package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
- package/dist/plugins/admonitions/gh-alert.js +21 -22
- package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
- package/dist/plugins/admonitions/github-alert-kind.js +28 -37
- package/dist/plugins/admonitions/index.js +2 -2
- package/dist/plugins/admonitions/kinds.d.ts +1 -1
- package/dist/plugins/admonitions/register.js +11 -2
- package/dist/plugins/details/DetailsBlock.svelte +20 -20
- package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
- package/dist/plugins/details/details-disclosure.svelte.js +6 -7
- package/dist/plugins/details/details-kind.d.ts +6 -7
- package/dist/plugins/details/details-kind.js +44 -59
- package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
- package/dist/plugins/emoji/emoji-recognizer.js +7 -14
- package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
- package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
- package/dist/plugins/footnotes/constants.d.ts +2 -0
- package/dist/plugins/footnotes/constants.js +3 -0
- package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
- package/dist/plugins/footnotes/footnote-definition.js +69 -45
- package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
- package/dist/plugins/footnotes/footnote-lookup.js +14 -26
- package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
- package/dist/plugins/footnotes/footnote-numbering.js +22 -31
- package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
- package/dist/plugins/footnotes/footnote-reference.js +8 -13
- package/dist/plugins/footnotes/index.js +2 -3
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
- package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
- package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
- package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
- package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
- package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
- package/dist/plugins/highlight-occurrences/word-char.js +4 -0
- package/dist/plugins/latex/BlockMath.svelte +58 -75
- package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
- package/dist/plugins/latex/MathInline.svelte +10 -9
- package/dist/plugins/latex/flanking.d.ts +1 -0
- package/dist/plugins/latex/flanking.js +3 -0
- package/dist/plugins/latex/index.d.ts +1 -1
- package/dist/plugins/latex/latex-kind.d.ts +4 -4
- package/dist/plugins/latex/latex-kind.js +78 -67
- package/dist/plugins/latex/math-completion.d.ts +1 -1
- package/dist/plugins/latex/math-completion.js +5 -8
- package/dist/plugins/latex/math-layout.d.ts +2 -8
- package/dist/plugins/latex/math-layout.js +0 -9
- package/dist/plugins/latex/math-renderer.d.ts +17 -20
- package/dist/plugins/latex/math-renderer.js +21 -38
- package/dist/plugins/latex/math-source.d.ts +4 -8
- package/dist/plugins/latex/math-source.js +36 -81
- package/dist/plugins/latex/register.d.ts +10 -11
- package/dist/plugins/latex/register.js +24 -10
- package/dist/plugins/latex/renderer.d.ts +9 -10
- package/dist/plugins/latex/renderer.js +9 -24
- package/dist/plugins/mermaid/MermaidBlock.svelte +51 -45
- package/dist/plugins/mermaid/index.js +1 -1
- package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
- package/dist/plugins/mermaid/mermaid-kind.js +30 -47
- package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
- package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
- package/dist/plugins/mermaid/register.d.ts +3 -3
- package/dist/plugins/mermaid/register.js +5 -5
- package/dist/plugins/mermaid/renderer.d.ts +5 -5
- package/dist/plugins/mermaid/renderer.js +8 -11
- package/dist/plugins/parrot/ParrotBlock.svelte +15 -6
- package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
- package/dist/plugins/parrot/parrot-plugin.js +3 -3
- package/dist/plugins/slash-commands/filter.d.ts +23 -0
- package/dist/plugins/slash-commands/filter.js +31 -0
- package/dist/plugins/slash-commands/index.d.ts +2 -0
- package/dist/plugins/slash-commands/index.js +2 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
- package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
- package/dist/plugins/slash-commands/slash-source.js +108 -0
- package/dist/plugins/toc/TocBlock.svelte +23 -22
- package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
- package/dist/plugins/toc/heading-outline.d.ts +7 -12
- package/dist/plugins/toc/heading-outline.js +22 -36
- package/dist/plugins/toc/navigation-queue.d.ts +2 -4
- package/dist/plugins/toc/toc-plugin.d.ts +5 -5
- package/dist/plugins/toc/toc-plugin.js +20 -13
- package/dist/presentation-mode.d.ts +15 -23
- package/dist/presentation-mode.js +19 -25
- package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
- package/dist/reactivity/block-list-state.svelte.js +8 -9
- package/dist/reactivity/block-window.svelte.d.ts +12 -6
- package/dist/reactivity/block-window.svelte.js +44 -17
- package/dist/reactivity/child-list.d.ts +34 -0
- package/dist/reactivity/child-list.js +48 -0
- package/dist/reactivity/content-version.svelte.d.ts +4 -7
- package/dist/reactivity/content-version.svelte.js +3 -5
- package/dist/reactivity/hold-across.d.ts +39 -0
- package/dist/reactivity/hold-across.js +57 -0
- package/dist/reactivity/layout-state.svelte.d.ts +27 -0
- package/dist/reactivity/layout-state.svelte.js +51 -0
- package/dist/reactivity/list-tree.d.ts +39 -0
- package/dist/reactivity/list-tree.js +132 -0
- package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
- package/dist/reactivity/list-windowing.svelte.js +141 -310
- package/dist/reactivity/measure-batch.d.ts +6 -8
- package/dist/reactivity/measure-batch.js +5 -6
- package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
- package/dist/reactivity/publish-ref.svelte.js +21 -85
- package/dist/reactivity/scope-geometry.d.ts +6 -13
- package/dist/reactivity/scope-geometry.js +7 -14
- package/dist/reactivity/state-registry.d.ts +5 -5
- package/dist/reactivity/state-registry.js +11 -15
- package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
- package/dist/reactivity/use-container-windowing.svelte.js +64 -74
- package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
- package/dist/reactivity/use-measured-child.svelte.js +41 -0
- package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
- package/dist/reactivity/use-window-floor.svelte.js +27 -0
- package/dist/reactivity/window-slice.d.ts +4 -4
- package/dist/reactivity/window-slice.js +0 -2
- package/dist/renderer-slot.d.ts +48 -0
- package/dist/renderer-slot.js +85 -0
- package/dist/scan-index.d.ts +4 -4
- package/dist/scan-index.js +4 -4
- package/dist/schema/block-commands.d.ts +69 -54
- package/dist/schema/block-commands.js +91 -104
- package/dist/schema/block-completions.d.ts +16 -19
- package/dist/schema/block-completions.js +25 -32
- package/dist/schema/block-component-registry.d.ts +13 -14
- package/dist/schema/block-component-registry.js +19 -17
- package/dist/schema/block-kind-descriptor.d.ts +234 -168
- package/dist/schema/block-kind-descriptor.js +151 -66
- package/dist/schema/block-openers.d.ts +48 -39
- package/dist/schema/block-openers.js +73 -83
- package/dist/schema/built-in-descriptors.d.ts +3 -5
- package/dist/schema/built-in-descriptors.js +96 -80
- package/dist/schema/child-spans.d.ts +12 -10
- package/dist/schema/child-spans.js +68 -34
- package/dist/schema/closure.d.ts +18 -16
- package/dist/schema/closure.js +24 -14
- package/dist/schema/command-id.d.ts +6 -8
- package/dist/schema/command-id.js +20 -25
- package/dist/schema/commands.d.ts +78 -84
- package/dist/schema/commands.js +152 -117
- package/dist/schema/container-raw.d.ts +51 -11
- package/dist/schema/container-raw.js +143 -14
- package/dist/schema/container-rebuilders.d.ts +17 -15
- package/dist/schema/container-rebuilders.js +30 -22
- package/dist/schema/context-actions.d.ts +25 -13
- package/dist/schema/context-actions.js +32 -17
- package/dist/schema/define-plugin-block.d.ts +8 -6
- package/dist/schema/define-plugin-block.js +6 -4
- package/dist/schema/fenced-code-raw.d.ts +30 -17
- package/dist/schema/fenced-code-raw.js +155 -107
- package/dist/schema/global-commands.d.ts +6 -6
- package/dist/schema/global-commands.js +14 -22
- package/dist/schema/height-estimates.d.ts +31 -0
- package/dist/schema/height-estimates.js +64 -0
- package/dist/schema/inline-construct-policy.d.ts +42 -55
- package/dist/schema/inline-construct-policy.js +36 -35
- package/dist/schema/insert-catalogue.d.ts +30 -0
- package/dist/schema/insert-catalogue.js +95 -0
- package/dist/schema/keybinding-overrides.d.ts +9 -11
- package/dist/schema/keybinding-overrides.js +1 -1
- package/dist/schema/keybindings.d.ts +15 -7
- package/dist/schema/keybindings.js +21 -9
- package/dist/schema/merge-rules.d.ts +5 -7
- package/dist/schema/merge-rules.js +7 -9
- package/dist/schema/opener-priorities.d.ts +4 -4
- package/dist/schema/opener-priorities.js +4 -4
- package/dist/schema/operations.d.ts +8 -10
- package/dist/schema/operations.js +3 -3
- package/dist/schema/page-role.d.ts +14 -0
- package/dist/schema/page-role.js +19 -0
- package/dist/schema/plugin-activation.d.ts +4 -6
- package/dist/schema/plugin-activation.js +12 -10
- package/dist/schema/plugin-editor-context.d.ts +25 -10
- package/dist/schema/plugin-editor-context.js +40 -9
- package/dist/schema/plugin-install.d.ts +49 -17
- package/dist/schema/plugin-install.js +51 -25
- package/dist/schema/plugin-kind.d.ts +12 -8
- package/dist/schema/plugin-kind.js +35 -42
- package/dist/schema/plugin-name.js +3 -3
- package/dist/schema/plugin-registry.d.ts +54 -0
- package/dist/schema/plugin-registry.js +70 -0
- package/dist/schema/reading.d.ts +23 -0
- package/dist/schema/reading.js +7 -0
- package/dist/schema/register-once.d.ts +3 -5
- package/dist/schema/register-once.js +7 -16
- package/dist/schema/registration-checks.d.ts +12 -16
- package/dist/schema/registration-checks.js +35 -51
- package/dist/schema/registration-pairs.d.ts +54 -0
- package/dist/schema/registration-pairs.js +48 -0
- package/dist/schema/registration-pending.d.ts +8 -12
- package/dist/schema/registration-pending.js +9 -9
- package/dist/schema/registry-reset.d.ts +8 -4
- package/dist/schema/registry-reset.js +13 -26
- package/dist/schema/registry-view.d.ts +25 -13
- package/dist/schema/registry-view.js +26 -20
- package/dist/schema/reserved-chords.d.ts +9 -10
- package/dist/schema/reserved-chords.js +63 -80
- package/dist/schema/reserved-chrome.d.ts +12 -11
- package/dist/schema/reserved-chrome.js +15 -11
- package/dist/schema/setext-raw.d.ts +13 -0
- package/dist/schema/setext-raw.js +33 -0
- package/dist/schema/stored-as.d.ts +20 -0
- package/dist/schema/stored-as.js +6 -0
- package/dist/schema/table-cell-raw.d.ts +18 -7
- package/dist/schema/table-cell-raw.js +28 -7
- package/dist/schema/whole-block-unit.d.ts +5 -4
- package/dist/schema/whole-block-unit.js +5 -4
- package/dist/search/document-scan.d.ts +3 -3
- package/dist/search/document-scan.js +2 -2
- package/dist/search/matcher.d.ts +1 -1
- package/dist/search/regex-executor.d.ts +5 -6
- package/dist/search/regex-executor.js +6 -8
- package/dist/search/replace.d.ts +2 -5
- package/dist/search/replace.js +2 -5
- package/dist/search/search-state.svelte.d.ts +5 -5
- package/dist/search/search-state.svelte.js +12 -16
- package/dist/selection/autoscroll.d.ts +6 -9
- package/dist/selection/block-hit-test.d.ts +16 -24
- package/dist/selection/block-hit-test.js +29 -22
- package/dist/selection/caret-doors.d.ts +15 -14
- package/dist/selection/caret-doors.js +37 -26
- package/dist/selection/caret-landing.d.ts +62 -0
- package/dist/selection/caret-landing.js +157 -0
- package/dist/selection/caret-restore.d.ts +17 -10
- package/dist/selection/caret-restore.js +10 -22
- package/dist/selection/caret-target.d.ts +30 -0
- package/dist/selection/caret-target.js +84 -0
- package/dist/selection/char-endpoint-snap.d.ts +6 -10
- package/dist/selection/char-endpoint-snap.js +8 -14
- package/dist/selection/clipboard-text.d.ts +5 -12
- package/dist/selection/clipboard-text.js +69 -172
- package/dist/selection/covered-block.d.ts +6 -8
- package/dist/selection/covered-block.js +8 -19
- package/dist/selection/cross-block/clipboard.d.ts +3 -2
- package/dist/selection/cross-block/clipboard.js +13 -4
- package/dist/selection/cross-block/dispatch.d.ts +47 -43
- package/dist/selection/cross-block/dispatch.js +12 -23
- package/dist/selection/cross-block/format-range.d.ts +18 -21
- package/dist/selection/cross-block/format-range.js +104 -103
- package/dist/selection/cross-block/format-toggle.d.ts +10 -15
- package/dist/selection/cross-block/format-toggle.js +28 -33
- package/dist/selection/cross-block/keydown.d.ts +4 -4
- package/dist/selection/cross-block/keydown.js +92 -125
- package/dist/selection/cross-block/ops.d.ts +19 -34
- package/dist/selection/cross-block/ops.js +110 -95
- package/dist/selection/cross-block/paste.d.ts +2 -3
- package/dist/selection/cross-block/paste.js +59 -96
- package/dist/selection/cross-block/pointer.d.ts +17 -15
- package/dist/selection/cross-block/pointer.js +74 -25
- package/dist/selection/cross-block/type-replace.d.ts +4 -6
- package/dist/selection/cross-block/type-replace.js +51 -134
- package/dist/selection/dead-space-caret.d.ts +19 -30
- package/dist/selection/dead-space-caret.js +70 -88
- package/dist/selection/drag-pointer.d.ts +7 -9
- package/dist/selection/drag-pointer.js +23 -33
- package/dist/selection/gap-caret.d.ts +17 -28
- package/dist/selection/gap-caret.js +14 -26
- package/dist/selection/grid-selection.d.ts +12 -0
- package/dist/selection/grid-selection.js +22 -0
- package/dist/selection/keyboard-extend.d.ts +27 -40
- package/dist/selection/keyboard-extend.js +94 -117
- package/dist/selection/multi-click.d.ts +13 -18
- package/dist/selection/multi-click.js +32 -38
- package/dist/selection/native-bridge.d.ts +29 -39
- package/dist/selection/native-bridge.js +78 -127
- package/dist/selection/nearest-block.d.ts +17 -12
- package/dist/selection/nearest-block.js +37 -18
- package/dist/selection/path-lookup.d.ts +25 -16
- package/dist/selection/path-lookup.js +101 -18
- package/dist/selection/path-math.d.ts +9 -11
- package/dist/selection/path-math.js +5 -7
- package/dist/selection/pointer-gesture.d.ts +5 -5
- package/dist/selection/pointer-gesture.js +5 -5
- package/dist/selection/pointer-session.d.ts +10 -16
- package/dist/selection/pointer-session.js +6 -7
- package/dist/selection/primitives.d.ts +64 -40
- package/dist/selection/primitives.js +57 -67
- package/dist/selection/range-coverage.d.ts +94 -0
- package/dist/selection/range-coverage.js +365 -0
- package/dist/selection/range-delete-ceremony.d.ts +28 -74
- package/dist/selection/range-delete-ceremony.js +100 -141
- package/dist/selection/range-delete-chrome.d.ts +20 -33
- package/dist/selection/range-delete-chrome.js +53 -78
- package/dist/selection/range-delete-table-coverage.d.ts +11 -25
- package/dist/selection/range-delete-table-coverage.js +42 -112
- package/dist/selection/range-delete-table.d.ts +14 -12
- package/dist/selection/range-delete-table.js +106 -310
- package/dist/selection/range-delete.d.ts +18 -23
- package/dist/selection/range-delete.js +83 -123
- package/dist/selection/round-trip-restore.d.ts +18 -0
- package/dist/selection/round-trip-restore.js +19 -0
- package/dist/selection/selection-announcer.d.ts +17 -0
- package/dist/selection/selection-announcer.js +25 -0
- package/dist/selection/selection-description.d.ts +4 -3
- package/dist/selection/selection-description.js +5 -4
- package/dist/selection/selection-drop.d.ts +34 -16
- package/dist/selection/selection-drop.js +159 -95
- package/dist/selection/selection-restore.d.ts +20 -33
- package/dist/selection/selection-restore.js +21 -44
- package/dist/selection/selection-state.svelte.d.ts +50 -42
- package/dist/selection/selection-state.svelte.js +144 -98
- package/dist/selection/shared-keydown.d.ts +22 -27
- package/dist/selection/shared-keydown.js +25 -45
- package/dist/selection/table-endpoint-snap.d.ts +17 -41
- package/dist/selection/table-endpoint-snap.js +54 -80
- package/dist/selection/table-rect-extend.d.ts +3 -6
- package/dist/selection/table-rect-extend.js +19 -14
- package/dist/styles/editor-theme.css +60 -53
- package/dist/styles/editor.css +201 -143
- package/dist/testing/conformance-core.d.ts +50 -18
- package/dist/testing/conformance-core.js +88 -50
- package/dist/testing/container-conformance.d.ts +48 -84
- package/dist/testing/container-conformance.js +159 -285
- package/dist/testing/headless-actions.d.ts +34 -19
- package/dist/testing/headless-actions.js +116 -65
- package/dist/testing/headless-block-list.svelte.d.ts +16 -0
- package/dist/testing/headless-block-list.svelte.js +22 -0
- package/dist/testing/inline-conformance.d.ts +15 -22
- package/dist/testing/inline-conformance.js +131 -148
- package/dist/testing/kind-conformance.d.ts +19 -24
- package/dist/testing/kind-conformance.js +204 -117
- package/dist/testing/kit-reading.d.ts +7 -0
- package/dist/testing/kit-reading.js +16 -0
- package/dist/testing/mount-dom-stubs.d.ts +4 -5
- package/dist/testing/mount-dom-stubs.js +8 -5
- package/dist/testing/parse-convergence.d.ts +10 -10
- package/dist/testing/parse-convergence.js +14 -49
- package/dist/testing.d.ts +13 -9
- package/dist/testing.js +28 -38
- package/dist/tree-operations/blockquote.d.ts +8 -14
- package/dist/tree-operations/blockquote.js +25 -45
- package/dist/tree-operations/chain-rebuild.d.ts +34 -25
- package/dist/tree-operations/chain-rebuild.js +115 -52
- package/dist/tree-operations/children.d.ts +5 -9
- package/dist/tree-operations/children.js +7 -11
- package/dist/tree-operations/cleanup.d.ts +6 -7
- package/dist/tree-operations/cleanup.js +14 -11
- package/dist/tree-operations/clone.js +5 -4
- package/dist/tree-operations/container-lift.d.ts +10 -5
- package/dist/tree-operations/container-lift.js +20 -14
- package/dist/tree-operations/container-offsets.d.ts +22 -0
- package/dist/tree-operations/container-offsets.js +89 -0
- package/dist/tree-operations/content-write.d.ts +52 -29
- package/dist/tree-operations/content-write.js +155 -110
- package/dist/tree-operations/index.d.ts +4 -4
- package/dist/tree-operations/index.js +4 -4
- package/dist/tree-operations/keep-one-block.d.ts +10 -0
- package/dist/tree-operations/keep-one-block.js +19 -0
- package/dist/tree-operations/leaf-range.d.ts +33 -0
- package/dist/tree-operations/leaf-range.js +67 -0
- package/dist/tree-operations/list/empty-check.d.ts +2 -3
- package/dist/tree-operations/list/empty-check.js +4 -4
- package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
- package/dist/tree-operations/list/exit-replacement.js +4 -9
- package/dist/tree-operations/list/item-partition.d.ts +2 -2
- package/dist/tree-operations/list/item-partition.js +2 -2
- package/dist/tree-operations/list/list-builders.d.ts +18 -16
- package/dist/tree-operations/list/list-builders.js +59 -30
- package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
- package/dist/tree-operations/list/ordered-markers.js +7 -16
- package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
- package/dist/tree-operations/list/reconcile-task.js +80 -23
- package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
- package/dist/tree-operations/list/sublist-separator.js +20 -27
- package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
- package/dist/tree-operations/list/task-paragraph.js +54 -0
- package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
- package/dist/tree-operations/list/unwrap-merge.js +44 -79
- package/dist/tree-operations/node-ops.d.ts +30 -52
- package/dist/tree-operations/node-ops.js +152 -218
- package/dist/tree-operations/node-primitives.d.ts +44 -31
- package/dist/tree-operations/node-primitives.js +84 -60
- package/dist/tree-operations/open-tail.d.ts +25 -0
- package/dist/tree-operations/open-tail.js +100 -0
- package/dist/tree-operations/parse-block.d.ts +15 -2
- package/dist/tree-operations/parse-block.js +19 -4
- package/dist/tree-operations/paste/apply.d.ts +7 -8
- package/dist/tree-operations/paste/apply.js +33 -63
- package/dist/tree-operations/paste/body-write.d.ts +8 -6
- package/dist/tree-operations/paste/body-write.js +13 -14
- package/dist/tree-operations/paste/container-match.d.ts +7 -10
- package/dist/tree-operations/paste/container-match.js +76 -58
- package/dist/tree-operations/paste/container-paste.d.ts +3 -3
- package/dist/tree-operations/paste/container-paste.js +3 -3
- package/dist/tree-operations/paste/dispatch.d.ts +26 -29
- package/dist/tree-operations/paste/dispatch.js +68 -53
- package/dist/tree-operations/paste/focus-target.d.ts +11 -14
- package/dist/tree-operations/paste/focus-target.js +13 -18
- package/dist/tree-operations/paste/hooks.d.ts +7 -12
- package/dist/tree-operations/paste/hooks.js +49 -46
- package/dist/tree-operations/paste/line-ending.d.ts +11 -0
- package/dist/tree-operations/paste/line-ending.js +32 -0
- package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
- package/dist/tree-operations/paste/list-absorb.js +17 -19
- package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
- package/dist/tree-operations/paste/list-break-out.js +24 -32
- package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
- package/dist/tree-operations/paste/parent-scope.js +9 -16
- package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
- package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
- package/dist/tree-operations/paste/paste-replacement.js +73 -42
- package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
- package/dist/tree-operations/paste/paste-transforms.js +18 -27
- package/dist/tree-operations/paste/replacement-parse.d.ts +9 -7
- package/dist/tree-operations/paste/replacement-parse.js +12 -10
- package/dist/tree-operations/paste/strategy.d.ts +1 -1
- package/dist/tree-operations/paste/strategy.js +1 -1
- package/dist/tree-operations/paste/table-slice.js +15 -10
- package/dist/tree-operations/paste-surfaces.d.ts +18 -29
- package/dist/tree-operations/paste-surfaces.js +14 -10
- package/dist/tree-operations/path-mutate.d.ts +7 -8
- package/dist/tree-operations/path-mutate.js +4 -4
- package/dist/tree-operations/reorder-unit.d.ts +4 -5
- package/dist/tree-operations/reorder-unit.js +5 -6
- package/dist/tree-operations/reorder.d.ts +7 -9
- package/dist/tree-operations/reorder.js +39 -40
- package/dist/tree-operations/settle.d.ts +42 -53
- package/dist/tree-operations/settle.js +241 -162
- package/dist/tree-operations/sharing.d.ts +5 -5
- package/dist/tree-operations/splice-many.d.ts +5 -5
- package/dist/tree-operations/splice-many.js +5 -5
- package/dist/tree-operations/stored-as.d.ts +13 -0
- package/dist/tree-operations/stored-as.js +48 -0
- package/dist/tree-operations/structural-change.d.ts +11 -15
- package/dist/tree-operations/structural-change.js +10 -14
- package/dist/tree-operations/structural-suffix.d.ts +22 -0
- package/dist/tree-operations/structural-suffix.js +61 -0
- package/dist/tree-operations/sub-table-copy.d.ts +7 -0
- package/dist/tree-operations/sub-table-copy.js +40 -36
- package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
- package/dist/tree-operations/table-grid-clipboard.js +11 -36
- package/dist/tree-operations/table-mutations.d.ts +7 -3
- package/dist/tree-operations/table-mutations.js +45 -9
- package/dist/tree-operations/unshare.d.ts +11 -15
- package/dist/tree-operations/unshare.js +15 -17
- package/dist/undo/manager.js +1 -1
- package/dist/undo/types.d.ts +2 -2
- package/docs/guide/consumer-guide.md +327 -205
- package/docs/guide/directives.md +7 -7
- package/docs/guide/plugin-api.md +253 -185
- package/docs/guide/plugin-guide.md +332 -235
- package/docs/guide/plugin-testing.md +96 -82
- package/package.json +12 -16
- package/dist/ambient/ambient-cursor.d.ts +0 -41
- package/dist/ambient/ambient-cursor.js +0 -120
- package/dist/components/blocks/code/code-paste.d.ts +0 -24
- package/dist/components/blocks/code/code-paste.js +0 -21
- package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
- package/dist/components/blocks/table/cell-clipboard.js +0 -67
- package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
- package/dist/components/blocks/text/hidden-suffix.js +0 -15
- package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
- package/dist/components/image/image-source-bytes.d.ts +0 -15
- package/dist/components/image/image-source-bytes.js +0 -80
- package/dist/cursor/content-offsets.d.ts +0 -29
- package/dist/cursor/content-offsets.js +0 -151
- package/dist/cursor/reveal-anchor.d.ts +0 -30
- package/dist/cursor/reveal-anchor.js +0 -31
- package/dist/cursor/scroll-hold.d.ts +0 -10
- package/dist/cursor/scroll-hold.js +0 -22
- package/dist/invariants/split-landing.d.ts +0 -8
- package/dist/invariants/split-landing.js +0 -15
- package/dist/tree-operations/list/terminator.d.ts +0 -17
- package/dist/tree-operations/list/terminator.js +0 -60
- package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -31
- package/dist/tree-operations/paste/replace-block-at-parent.js +0 -78
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { trimWhitespace } from '../lines';
|
|
1
2
|
import { joinRaw, isBlankLine } from '../parser';
|
|
2
3
|
import { lineStartsOuterBlock } from '../../schema/block-openers';
|
|
3
4
|
// ── Cell splitter ──────────────────────────────────────────────────────────
|
|
4
|
-
// Cell padding is cosmetic
|
|
5
|
-
//
|
|
5
|
+
// Cell padding is cosmetic: a rebuilt row writes single spaces. GFM §4.10 trims spaces, so a
|
|
6
|
+
// non-breaking space at a cell's edge is content and survives the rebuild.
|
|
6
7
|
export function splitRowCells(rowText) {
|
|
7
|
-
const trimmed = rowText
|
|
8
|
+
const trimmed = trimWhitespace(rowText);
|
|
8
9
|
const head = trimmed.startsWith('|') ? trimmed.slice(1) : trimmed;
|
|
9
10
|
const inner = head.endsWith('|') ? head.slice(0, -1) : head;
|
|
10
11
|
const cells = [];
|
|
@@ -13,21 +14,18 @@ export function splitRowCells(rowText) {
|
|
|
13
14
|
for (let i = 0; i < inner.length; i++) {
|
|
14
15
|
const ch = inner[i];
|
|
15
16
|
if (ch === '|' && !escaped) {
|
|
16
|
-
cells.push(current
|
|
17
|
+
cells.push(trimWhitespace(current));
|
|
17
18
|
current = '';
|
|
18
19
|
continue;
|
|
19
20
|
}
|
|
20
21
|
current += ch;
|
|
21
22
|
escaped = ch === '\\' && !escaped;
|
|
22
23
|
}
|
|
23
|
-
cells.push(current
|
|
24
|
+
cells.push(trimWhitespace(current));
|
|
24
25
|
return cells;
|
|
25
26
|
}
|
|
26
|
-
/**
|
|
27
|
-
*
|
|
28
|
-
* the shape, so a row the continuation scan accepts and the Enter completer refuses cannot exist.
|
|
29
|
-
* Arity against the delimiter is the caller's check.
|
|
30
|
-
*/
|
|
27
|
+
/** The cells a line offers as a header row, or null: the one definition, so the continuation scan
|
|
28
|
+
* and the Enter completer cannot disagree. Arity against the delimiter is the caller's check. */
|
|
31
29
|
export function tableHeaderCells(text) {
|
|
32
30
|
if (!text.includes('|'))
|
|
33
31
|
return null;
|
|
@@ -35,14 +33,14 @@ export function tableHeaderCells(text) {
|
|
|
35
33
|
}
|
|
36
34
|
// ── Delimiter row ──────────────────────────────────────────────────────────
|
|
37
35
|
export function matchTableDelimiterRow(text) {
|
|
38
|
-
const trimmed = text
|
|
36
|
+
const trimmed = trimWhitespace(text);
|
|
39
37
|
if (!trimmed.includes('|'))
|
|
40
38
|
return null;
|
|
41
39
|
const inner = trimmed.replace(/^\||\|$/g, '');
|
|
42
40
|
const cells = inner.split('|');
|
|
43
41
|
const alignments = [];
|
|
44
42
|
for (const cell of cells) {
|
|
45
|
-
const c = cell
|
|
43
|
+
const c = trimWhitespace(cell);
|
|
46
44
|
if (!/^:?-+:?$/.test(c))
|
|
47
45
|
return null;
|
|
48
46
|
const left = c.startsWith(':');
|
|
@@ -59,17 +57,17 @@ export function matchTableDelimiterRow(text) {
|
|
|
59
57
|
return { columnCount: cells.length, alignments };
|
|
60
58
|
}
|
|
61
59
|
// ── Block parser ───────────────────────────────────────────────────────────
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
60
|
+
/** Whether a table takes `lines[index]` as one more row, pipe or none: GFM ends a table only at a
|
|
61
|
+
* blank line or a block start (spec example 201), judged in the editor's grammar. */
|
|
62
|
+
export function tableTakesLine(lines, index, end, grammar) {
|
|
63
|
+
const line = lines[index];
|
|
64
|
+
return (!isBlankLine(line.text) &&
|
|
65
|
+
!lineStartsOuterBlock(line, { paragraphOpen: false, grammar, window: { lines, index, end } }));
|
|
66
|
+
}
|
|
67
|
+
export function parseTable(lines, startIndex, endIndex, leadingTrivia, delimiter, grammar) {
|
|
66
68
|
let i = startIndex + 2;
|
|
67
|
-
while (i < endIndex &&
|
|
68
|
-
!isBlankLine(lines[i].text) &&
|
|
69
|
-
lines[i].text.includes('|') &&
|
|
70
|
-
!lineStartsOuterBlock(lines[i], { paragraphOpen: false })) {
|
|
69
|
+
while (i < endIndex && tableTakesLine(lines, i, endIndex, grammar))
|
|
71
70
|
i++;
|
|
72
|
-
}
|
|
73
71
|
const rows = [];
|
|
74
72
|
rows.push(buildRow(lines[startIndex], delimiter.columnCount, true));
|
|
75
73
|
for (let r = startIndex + 2; r < i; r++) {
|
|
@@ -87,14 +85,13 @@ export function parseTable(lines, startIndex, endIndex, leadingTrivia, delimiter
|
|
|
87
85
|
consumed: i - startIndex
|
|
88
86
|
};
|
|
89
87
|
}
|
|
90
|
-
// GFM pads short
|
|
91
|
-
//
|
|
88
|
+
// GFM pads short body rows and renders a long one's first cells, keeping the rest as surplus bytes;
|
|
89
|
+
// a header mismatch rejects the whole table at recognition (paragraph.ts).
|
|
92
90
|
function buildRow(line, columnCount, isHeader) {
|
|
93
91
|
const cellTexts = splitRowCells(line.text);
|
|
94
92
|
while (cellTexts.length < columnCount)
|
|
95
93
|
cellTexts.push('');
|
|
96
|
-
|
|
97
|
-
cellTexts.length = columnCount;
|
|
94
|
+
const surplusCells = cellTexts.splice(columnCount);
|
|
98
95
|
const cells = cellTexts.map((text) => ({
|
|
99
96
|
kind: 'tableCell',
|
|
100
97
|
leadingTrivia: '',
|
|
@@ -104,7 +101,7 @@ function buildRow(line, columnCount, isHeader) {
|
|
|
104
101
|
kind: 'tableRow',
|
|
105
102
|
leadingTrivia: '',
|
|
106
103
|
raw: line.raw,
|
|
107
|
-
metadata: { isHeader },
|
|
104
|
+
metadata: surplusCells.length > 0 ? { isHeader, surplusCells } : { isHeader },
|
|
108
105
|
children: cells
|
|
109
106
|
};
|
|
110
107
|
}
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
// Ambiguity with setext underlines is resolved in paragraph.ts; top-level
|
|
2
2
|
// dispatch only reaches here after a blank line or a non-paragraph state.
|
|
3
|
+
import { indentColumns, OPTIONAL_LINE_ENDING } from '../lines';
|
|
4
|
+
// CommonMark §4.1: only spaces and tabs sit around the markers, so a non-breaking space makes the
|
|
5
|
+
// line a paragraph.
|
|
6
|
+
const breakOf = (marker) => new RegExp(`^[ \\t]*(?:\\${marker}[ \\t]*){3,}${OPTIONAL_LINE_ENDING}$`);
|
|
7
|
+
const BREAKS = [
|
|
8
|
+
[breakOf('*'), '*'],
|
|
9
|
+
[breakOf('-'), '-'],
|
|
10
|
+
[breakOf('_'), '_']
|
|
11
|
+
];
|
|
3
12
|
export function matchThematicBreak(text) {
|
|
4
|
-
//
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
if (
|
|
9
|
-
return
|
|
10
|
-
}
|
|
11
|
-
const trimmed = text.trim();
|
|
12
|
-
if (/^(\*[ \t]*){3,}$/.test(trimmed))
|
|
13
|
-
return '*';
|
|
14
|
-
if (/^(-[ \t]*){3,}$/.test(trimmed))
|
|
15
|
-
return '-';
|
|
16
|
-
if (/^(_[ \t]*){3,}$/.test(trimmed))
|
|
17
|
-
return '_';
|
|
13
|
+
// 0-3 columns of indent; 4+ is indented code.
|
|
14
|
+
if (indentColumns(text) >= 4)
|
|
15
|
+
return null;
|
|
16
|
+
for (const [pattern, marker] of BREAKS)
|
|
17
|
+
if (pattern.test(text))
|
|
18
|
+
return marker;
|
|
18
19
|
return null;
|
|
19
20
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Traversals of the block tree by path. */
|
|
2
|
+
import type { CstNode, Document } from './nodes';
|
|
3
|
+
import type { DocumentView, NodeView } from './node-views';
|
|
4
|
+
type WalkControl = void | 'skip' | 'stop';
|
|
5
|
+
/** Every block under `root`, not `root` itself, parents first; each path starts with `basePath` and
|
|
6
|
+
* is the visitor's to keep. `'skip'` leaves out a node's children; `'stop'` ends it, returning true. */
|
|
7
|
+
export declare function walkBlocks(root: Document | CstNode, visit: (node: CstNode, path: number[]) => WalkControl, basePath?: readonly number[]): boolean;
|
|
8
|
+
export declare function walkBlocks(root: DocumentView | NodeView, visit: (node: NodeView, path: number[]) => WalkControl, basePath?: readonly number[]): boolean;
|
|
9
|
+
/** The blocks strictly between `root` and the block at `path`, outermost first; the steps past a
|
|
10
|
+
* missing child are left out. */
|
|
11
|
+
export declare function ancestorsOf(root: Document | CstNode, path: readonly number[]): CstNode[];
|
|
12
|
+
export declare function ancestorsOf(root: DocumentView | NodeView, path: readonly number[]): NodeView[];
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** Traversals of the block tree by path. */
|
|
2
|
+
export function walkBlocks(root, visit, basePath = []) {
|
|
3
|
+
return walkChildren(root.children, [...basePath], visit);
|
|
4
|
+
}
|
|
5
|
+
export function ancestorsOf(root, path) {
|
|
6
|
+
const ancestors = [];
|
|
7
|
+
let children = root.children;
|
|
8
|
+
for (const index of path.slice(0, -1)) {
|
|
9
|
+
const node = children?.[index];
|
|
10
|
+
if (!node)
|
|
11
|
+
break;
|
|
12
|
+
ancestors.push(node);
|
|
13
|
+
children = node.children;
|
|
14
|
+
}
|
|
15
|
+
return ancestors;
|
|
16
|
+
}
|
|
17
|
+
// `trail` is the traversal's own path, copied for each visit so a visitor's array stays its own.
|
|
18
|
+
function walkChildren(children, trail, visit) {
|
|
19
|
+
if (!children)
|
|
20
|
+
return false;
|
|
21
|
+
for (let index = 0; index < children.length; index++) {
|
|
22
|
+
trail.push(index);
|
|
23
|
+
const control = visit(children[index], trail.slice());
|
|
24
|
+
const stopped = control === 'stop' ||
|
|
25
|
+
(control !== 'skip' && walkChildren(children[index].children, trail, visit));
|
|
26
|
+
trail.pop();
|
|
27
|
+
if (stopped)
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
@@ -1,8 +1 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The walk behind every "widen the opener past its own body" rule: raise `minimum` one past
|
|
3
|
-
* each body line that would close the block at the width reached so far. A core leaf because
|
|
4
|
-
* the fence grammar and the directive grammar both need it, and neither should import the
|
|
5
|
-
* other's directory. Per-syntax knowledge stays in `closerRun`, which reports the closing
|
|
6
|
-
* line's run length or `null` for a line that does not close.
|
|
7
|
-
*/
|
|
8
1
|
export declare function escalateTerminatorRun(body: string, minimum: number, closerRun: (text: string, required: number) => number | null): number;
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
3
|
-
* each body line that would close the block at the width reached so far.
|
|
4
|
-
*
|
|
5
|
-
* other's directory. Per-syntax knowledge stays in `closerRun`, which reports the closing
|
|
6
|
-
* line's run length or `null` for a line that does not close.
|
|
2
|
+
* The run length a fence or directive opener needs so no body line closes it: `minimum`, raised
|
|
3
|
+
* one past each body line that would close the block at the width reached so far. `closerRun`
|
|
4
|
+
* reports a closing line's run length, or `null` for a line that does not close.
|
|
7
5
|
*/
|
|
6
|
+
import { displayLines } from './lines';
|
|
8
7
|
export function escalateTerminatorRun(body, minimum, closerRun) {
|
|
9
8
|
let required = minimum;
|
|
10
|
-
for (const
|
|
11
|
-
// Splitting on `\n` leaves a CRLF body's `\r` on the tail; a closer line's text excludes it.
|
|
12
|
-
const text = line.endsWith('\r') ? line.slice(0, -1) : line;
|
|
9
|
+
for (const { text } of displayLines(body)) {
|
|
13
10
|
const run = closerRun(text, required);
|
|
14
11
|
if (run !== null)
|
|
15
12
|
required = run + 1;
|
|
@@ -6,9 +6,6 @@
|
|
|
6
6
|
export declare function isAllowedHrefScheme(url: string): boolean;
|
|
7
7
|
/** Same rule as href over a different set: schemes that hand bytes to an `<img>`. */
|
|
8
8
|
export declare function isAllowedImageSrcScheme(url: string): boolean;
|
|
9
|
-
/**
|
|
10
|
-
*
|
|
11
|
-
* is a security-relevant signal a production host can act on, so it reports through `onBlocked`
|
|
12
|
-
* (the editor's `error` channel) rather than only reaching a dev console.
|
|
13
|
-
*/
|
|
9
|
+
/** The default when a consumer supplies no `onLinkActivate`, gated on the href allowlist. A block
|
|
10
|
+
* reports through `onBlocked` (the `error` channel), since a production host may act on it. */
|
|
14
11
|
export declare function defaultLinkActivation(url: string, _event: MouseEvent, onBlocked?: (url: string) => void): void;
|
package/dist/core/url-policy.js
CHANGED
|
@@ -3,14 +3,13 @@
|
|
|
3
3
|
* URLs cannot smuggle script execution into the DOM. `defaultLinkActivation` is the one DOM sink.
|
|
4
4
|
*/
|
|
5
5
|
import { devWarn } from '../dev-warn';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
// `
|
|
9
|
-
//
|
|
6
|
+
// `xmpp` hands the address to a chat client the way `mailto` hands it to a mail client.
|
|
7
|
+
const ALLOWED_HREF_SCHEMES = new Set(['http', 'https', 'mailto', 'tel', 'xmpp']);
|
|
8
|
+
// `asset:` is a desktop shell's local-file protocol off Windows, needed for images on macOS and
|
|
9
|
+
// Linux; it carries no script capability, since no browser resolves it.
|
|
10
10
|
const ALLOWED_IMG_SCHEMES = new Set(['http', 'https', 'data', 'asset']);
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
// way here is what stops a control byte from trivially bypassing the allowlist.
|
|
11
|
+
// Mirrors the WHATWG URL parser's pre-scheme normalization, or a control byte (`java\tscript:`)
|
|
12
|
+
// would slip past the allowlist.
|
|
14
13
|
function schemeOf(url) {
|
|
15
14
|
const stripped = url.replace(/[\t\n\r]/g, '');
|
|
16
15
|
let i = 0;
|
|
@@ -29,11 +28,8 @@ export function isAllowedImageSrcScheme(url) {
|
|
|
29
28
|
const scheme = schemeOf(url);
|
|
30
29
|
return scheme === null || ALLOWED_IMG_SCHEMES.has(scheme);
|
|
31
30
|
}
|
|
32
|
-
/**
|
|
33
|
-
*
|
|
34
|
-
* is a security-relevant signal a production host can act on, so it reports through `onBlocked`
|
|
35
|
-
* (the editor's `error` channel) rather than only reaching a dev console.
|
|
36
|
-
*/
|
|
31
|
+
/** The default when a consumer supplies no `onLinkActivate`, gated on the href allowlist. A block
|
|
32
|
+
* reports through `onBlocked` (the `error` channel), since a production host may act on it. */
|
|
37
33
|
export function defaultLinkActivation(url, _event, onBlocked) {
|
|
38
34
|
if (isAllowedHrefScheme(url)) {
|
|
39
35
|
window.open(url, '_blank', 'noopener,noreferrer');
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the editor remembers about how the caret arrived: the sticky column (the x a run of
|
|
3
|
+
* Up/Down arrows keeps), the edge affinity (which side of a hidden marker run the caret means)
|
|
4
|
+
* and the pending marks (the formats a toggle promised the next typed byte). All three share one
|
|
5
|
+
* lifetime: a keydown updates them through `noteKey`, and any other caret move calls `forget`,
|
|
6
|
+
* which drops all three at once.
|
|
7
|
+
*/
|
|
8
|
+
import type { EditorX } from './coordinate-spaces';
|
|
9
|
+
import { type EdgeAffinity } from './edge-affinity';
|
|
10
|
+
import { type PendingMarks } from './pending-marks';
|
|
11
|
+
import type { AnyCommandId } from '../schema/command-id';
|
|
12
|
+
/** The parts of a keydown the classifiers read. */
|
|
13
|
+
export type ArrivalKey = Pick<KeyboardEvent, 'key'> & Partial<Pick<KeyboardEvent, 'metaKey'>>;
|
|
14
|
+
export interface CaretMemory {
|
|
15
|
+
/** The editor-relative x a vertical move aims for, or null outside an Up/Down run. */
|
|
16
|
+
column(): EditorX | null;
|
|
17
|
+
/** Which side of a hidden marker run the caret means; null leaves the typing path's default. */
|
|
18
|
+
side(): EdgeAffinity | null;
|
|
19
|
+
/** The marks a toggle at a collapsed caret promised; `forget` drops them with the rest. */
|
|
20
|
+
readonly pendingMarks: PendingMarks;
|
|
21
|
+
/** Classify a keydown; `command` is the chord's meaning at the focused block, so a rebound chord
|
|
22
|
+
* reads as what it does. Without `measureX` (a caller holding a range) the column is kept. */
|
|
23
|
+
noteKey(e: ArrivalKey, command: AnyCommandId | null, measureX?: () => EditorX | null): void;
|
|
24
|
+
/** A committed keystroke: the byte belongs to the content, whatever arrival preceded it. */
|
|
25
|
+
noteTyping(): void;
|
|
26
|
+
/** The caret was placed at an end rather than stepped there, so it means the outside. */
|
|
27
|
+
noteExtreme(): void;
|
|
28
|
+
/** Record a column a surface measured itself on the way out (the table, which has no caret
|
|
29
|
+
* of its own at the moment it leaves). Keeps a column already held. */
|
|
30
|
+
captureColumn(x: EditorX): void;
|
|
31
|
+
/** A caret move that is not a key: a click, a paste, an undo, a document swap, a blur. */
|
|
32
|
+
forget(): void;
|
|
33
|
+
}
|
|
34
|
+
export declare function createCaretMemory(): CaretMemory;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the editor remembers about how the caret arrived: the sticky column (the x a run of
|
|
3
|
+
* Up/Down arrows keeps), the edge affinity (which side of a hidden marker run the caret means)
|
|
4
|
+
* and the pending marks (the formats a toggle promised the next typed byte). All three share one
|
|
5
|
+
* lifetime: a keydown updates them through `noteKey`, and any other caret move calls `forget`,
|
|
6
|
+
* which drops all three at once.
|
|
7
|
+
*/
|
|
8
|
+
import { classifyStickyKey } from './sticky-column';
|
|
9
|
+
import { classifyArrivalKey } from './edge-affinity';
|
|
10
|
+
import { flipMark } from './pending-marks';
|
|
11
|
+
import { BLOCK_MOVE_COMMAND_IDS } from '../schema/commands';
|
|
12
|
+
import { isInteractionTraceEnabled, traceStickyCapture, traceStickyReset } from '../debug/interaction-trace';
|
|
13
|
+
export function createCaretMemory() {
|
|
14
|
+
let column = null;
|
|
15
|
+
let side = null;
|
|
16
|
+
let marks = null;
|
|
17
|
+
function dropColumn() {
|
|
18
|
+
// Runs on nearly every keystroke, so the enabled check short-circuits first.
|
|
19
|
+
if (isInteractionTraceEnabled() && column !== null)
|
|
20
|
+
traceStickyReset();
|
|
21
|
+
column = null;
|
|
22
|
+
}
|
|
23
|
+
function captureColumn(x) {
|
|
24
|
+
if (column !== null || !Number.isFinite(x))
|
|
25
|
+
return;
|
|
26
|
+
column = x;
|
|
27
|
+
traceStickyCapture(x);
|
|
28
|
+
}
|
|
29
|
+
// Promised marks belong to one side of the caret, so a caret that changed sides drops them.
|
|
30
|
+
function settleSide(next) {
|
|
31
|
+
side = next;
|
|
32
|
+
marks = null;
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
column: () => column,
|
|
36
|
+
side: () => side,
|
|
37
|
+
pendingMarks: {
|
|
38
|
+
get: () => marks,
|
|
39
|
+
toggle: (kind) => {
|
|
40
|
+
marks = flipMark(marks, kind);
|
|
41
|
+
},
|
|
42
|
+
consume: () => {
|
|
43
|
+
const spent = marks;
|
|
44
|
+
marks = null;
|
|
45
|
+
return spent;
|
|
46
|
+
},
|
|
47
|
+
restore: (unspent) => {
|
|
48
|
+
if (marks === null)
|
|
49
|
+
marks = unspent;
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
noteKey: (e, command, measureX) => {
|
|
53
|
+
// A block move leaves the caret where it was; the move's own commit forgets the memory.
|
|
54
|
+
if (command !== null && BLOCK_MOVE_COMMAND_IDS.has(command))
|
|
55
|
+
return;
|
|
56
|
+
const columnAction = classifyStickyKey(e.key);
|
|
57
|
+
if (columnAction === 'reset')
|
|
58
|
+
dropColumn();
|
|
59
|
+
else if (columnAction === 'capture') {
|
|
60
|
+
const x = measureX?.();
|
|
61
|
+
if (x !== null && x !== undefined)
|
|
62
|
+
captureColumn(x);
|
|
63
|
+
}
|
|
64
|
+
const sideAction = classifyArrivalKey(e.key, e.metaKey);
|
|
65
|
+
// A preserved key left the caret where it was: the chord that pends a mark and the
|
|
66
|
+
// character that spends it both preserve, so neither may clear the marks.
|
|
67
|
+
if (sideAction === 'preserve')
|
|
68
|
+
return;
|
|
69
|
+
settleSide(sideAction === 'reset' ? null : sideAction);
|
|
70
|
+
},
|
|
71
|
+
noteTyping: () => {
|
|
72
|
+
dropColumn();
|
|
73
|
+
settleSide('near');
|
|
74
|
+
},
|
|
75
|
+
noteExtreme: () => settleSide('outside'),
|
|
76
|
+
captureColumn,
|
|
77
|
+
forget: () => {
|
|
78
|
+
dropColumn();
|
|
79
|
+
settleSide(null);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
}
|
|
@@ -1,27 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The editor's coordinate spaces as branded numbers (G3.7), so mixing them is a type error
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
3
|
+
* instead of a caret bug later. A brand is produced only by the module that owns its space or
|
|
4
|
+
* by an `as*` cast at a declared public entry point (G4.15's rows in `lint/file-rules.test.ts`
|
|
5
|
+
* hold that list closed), and moves between spaces only through the conversions below, one
|
|
6
|
+
* function per direction. Public API entry points take `number` and brand it once.
|
|
7
7
|
*/
|
|
8
8
|
import type { DocPath } from '../selection/path-math';
|
|
9
9
|
declare const rawOffsetBrand: unique symbol;
|
|
10
|
-
/** Byte offset into a block node's raw content (CST-facing;
|
|
10
|
+
/** Byte offset into a block node's raw content (CST-facing; the container's marker prefix excluded). */
|
|
11
11
|
export type RawOffset = number & {
|
|
12
12
|
readonly [rawOffsetBrand]: true;
|
|
13
13
|
};
|
|
14
14
|
declare const domTextOffsetBrand: unique symbol;
|
|
15
15
|
/**
|
|
16
|
-
* Offset
|
|
17
|
-
*
|
|
18
|
-
* widget-free equivalent.
|
|
16
|
+
* Offset as the DOM walk counts it: the raw offset plus the leading marker prefix's text length.
|
|
17
|
+
* Produced only by `cursor/widget-offset.ts`.
|
|
19
18
|
*/
|
|
20
19
|
export type DomTextOffset = number & {
|
|
21
20
|
readonly [domTextOffsetBrand]: true;
|
|
22
21
|
};
|
|
23
22
|
declare const editorXBrand: unique symbol;
|
|
24
|
-
/** Editor-relative pixel X (viewport X minus the editor container's left)
|
|
23
|
+
/** Editor-relative pixel X (viewport X minus the editor container's left), unaffected by scrolling. */
|
|
25
24
|
export type EditorX = number & {
|
|
26
25
|
readonly [editorXBrand]: true;
|
|
27
26
|
};
|
|
@@ -31,15 +30,15 @@ export type ViewportX = number & {
|
|
|
31
30
|
readonly [viewportXBrand]: true;
|
|
32
31
|
};
|
|
33
32
|
declare const cellIndexBrand: unique symbol;
|
|
34
|
-
/** Row-major table cell index
|
|
33
|
+
/** Row-major table cell index, declared here rather than in the table code so the
|
|
35
34
|
* `as CellIndex` lint rule exists before the first cast does. */
|
|
36
35
|
export type CellIndex = number & {
|
|
37
36
|
readonly [cellIndexBrand]: true;
|
|
38
37
|
};
|
|
39
38
|
export declare function toDomTextOffset(raw: RawOffset, ambientLength: number): DomTextOffset;
|
|
40
39
|
export declare function toRawOffset(domText: DomTextOffset, ambientLength: number): RawOffset;
|
|
41
|
-
/** `toRawOffset` clamped to raw 0, for DOM reads that may land inside the leading
|
|
42
|
-
*
|
|
40
|
+
/** `toRawOffset` clamped to raw 0, for DOM reads that may land inside the leading marker
|
|
41
|
+
* prefix, where the unclamped result goes negative. */
|
|
43
42
|
export declare function toClampedRawOffset(domText: DomTextOffset, ambientLength: number): RawOffset;
|
|
44
43
|
export declare function toEditorX(viewport: ViewportX, editorLeft: number): EditorX;
|
|
45
44
|
export declare function toViewportX(editor: EditorX, editorLeft: number): ViewportX;
|
|
@@ -48,18 +47,26 @@ export declare function asDomTextOffset(n: number): DomTextOffset;
|
|
|
48
47
|
export declare function asEditorX(n: number): EditorX;
|
|
49
48
|
export declare function asViewportX(n: number): ViewportX;
|
|
50
49
|
export declare function asCellIndex(n: number): CellIndex;
|
|
51
|
-
/**
|
|
52
|
-
*
|
|
53
|
-
* for the divmod the selection and table-overlay paths otherwise hand-roll. Takes a plain
|
|
54
|
-
* number so a `CellIndex` holder and a bare loop counter both reach it without a cast.
|
|
55
|
-
*/
|
|
50
|
+
/** Row-major cell index to `{ row, col }` for a table of `colCount` columns. Takes a plain
|
|
51
|
+
* number so a `CellIndex` and a bare loop counter both reach it without a cast. */
|
|
56
52
|
export declare function cellRowCol(cellIdx: number, colCount: number): {
|
|
57
53
|
row: number;
|
|
58
54
|
col: number;
|
|
59
55
|
};
|
|
60
|
-
/**
|
|
56
|
+
/** Grid coordinates to the row-major cell index {@link cellRowCol} decodes. */
|
|
57
|
+
export declare function rowMajorCellIndex(row: number, col: number, colCount: number): CellIndex;
|
|
58
|
+
/** A rectangle of table cells: its top-left cell plus its size. */
|
|
59
|
+
export interface CellRect {
|
|
60
|
+
top: number;
|
|
61
|
+
left: number;
|
|
62
|
+
rows: number;
|
|
63
|
+
cols: number;
|
|
64
|
+
}
|
|
65
|
+
/** The rectangle two cells span as its corners, in either order. */
|
|
66
|
+
export declare function cellRectBounds(cornerA: number, cornerB: number, colCount: number): CellRect;
|
|
67
|
+
/** Append a child index to a parent path, yielding a document-absolute path. */
|
|
61
68
|
export declare function extendDocPath(parent: readonly number[], index: number): DocPath;
|
|
62
|
-
/** Brand a complete
|
|
69
|
+
/** Brand a complete document-absolute path (copied) for callers that already hold one;
|
|
63
70
|
* `extendDocPath` covers the parent-plus-index case, this covers the rest. */
|
|
64
71
|
export declare function docPathFrom(indices: readonly number[]): DocPath;
|
|
65
72
|
export {};
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The editor's coordinate spaces as branded numbers (G3.7), so mixing them is a type error
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
3
|
+
* instead of a caret bug later. A brand is produced only by the module that owns its space or
|
|
4
|
+
* by an `as*` cast at a declared public entry point (G4.15's rows in `lint/file-rules.test.ts`
|
|
5
|
+
* hold that list closed), and moves between spaces only through the conversions below, one
|
|
6
|
+
* function per direction. Public API entry points take `number` and brand it once.
|
|
7
7
|
*/
|
|
8
|
-
// ── Conversions (
|
|
8
|
+
// ── Conversions (between spaces, one function per direction) ─────────────────
|
|
9
9
|
export function toDomTextOffset(raw, ambientLength) {
|
|
10
10
|
return (raw + ambientLength);
|
|
11
11
|
}
|
|
12
12
|
export function toRawOffset(domText, ambientLength) {
|
|
13
13
|
return (domText - ambientLength);
|
|
14
14
|
}
|
|
15
|
-
/** `toRawOffset` clamped to raw 0, for DOM reads that may land inside the leading
|
|
16
|
-
*
|
|
15
|
+
/** `toRawOffset` clamped to raw 0, for DOM reads that may land inside the leading marker
|
|
16
|
+
* prefix, where the unclamped result goes negative. */
|
|
17
17
|
export function toClampedRawOffset(domText, ambientLength) {
|
|
18
18
|
return Math.max(0, toRawOffset(domText, ambientLength));
|
|
19
19
|
}
|
|
@@ -23,7 +23,7 @@ export function toEditorX(viewport, editorLeft) {
|
|
|
23
23
|
export function toViewportX(editor, editorLeft) {
|
|
24
24
|
return (editor + editorLeft);
|
|
25
25
|
}
|
|
26
|
-
// ──
|
|
26
|
+
// ── Brand casts (owning modules and declared entry points only; see the lint) ─
|
|
27
27
|
export function asRawOffset(n) {
|
|
28
28
|
return n;
|
|
29
29
|
}
|
|
@@ -40,26 +40,38 @@ export function asCellIndex(n) {
|
|
|
40
40
|
return n;
|
|
41
41
|
}
|
|
42
42
|
// ── Cell grid decode ─────────────────────────────────────────────────────────
|
|
43
|
-
/**
|
|
44
|
-
*
|
|
45
|
-
* for the divmod the selection and table-overlay paths otherwise hand-roll. Takes a plain
|
|
46
|
-
* number so a `CellIndex` holder and a bare loop counter both reach it without a cast.
|
|
47
|
-
*/
|
|
43
|
+
/** Row-major cell index to `{ row, col }` for a table of `colCount` columns. Takes a plain
|
|
44
|
+
* number so a `CellIndex` and a bare loop counter both reach it without a cast. */
|
|
48
45
|
export function cellRowCol(cellIdx, colCount) {
|
|
49
46
|
const row = Math.floor(cellIdx / colCount);
|
|
50
47
|
return { row, col: cellIdx - row * colCount };
|
|
51
48
|
}
|
|
52
|
-
|
|
49
|
+
/** Grid coordinates to the row-major cell index {@link cellRowCol} decodes. */
|
|
50
|
+
export function rowMajorCellIndex(row, col, colCount) {
|
|
51
|
+
return asCellIndex(row * colCount + col);
|
|
52
|
+
}
|
|
53
|
+
/** The rectangle two cells span as its corners, in either order. */
|
|
54
|
+
export function cellRectBounds(cornerA, cornerB, colCount) {
|
|
55
|
+
const a = cellRowCol(cornerA, colCount);
|
|
56
|
+
const b = cellRowCol(cornerB, colCount);
|
|
57
|
+
const top = Math.min(a.row, b.row);
|
|
58
|
+
const left = Math.min(a.col, b.col);
|
|
59
|
+
return {
|
|
60
|
+
top,
|
|
61
|
+
left,
|
|
62
|
+
rows: Math.max(a.row, b.row) - top + 1,
|
|
63
|
+
cols: Math.max(a.col, b.col) - left + 1
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
// ── DocPath composition (document-absolute path helpers, in a dependency-free module) ──
|
|
53
67
|
//
|
|
54
|
-
// `
|
|
55
|
-
// because `
|
|
56
|
-
|
|
57
|
-
// cursor↔selection cycle, while the type-only `DocPath` edge is erased.
|
|
58
|
-
/** Append a child index to a parent path, yielding a doc-absolute path. */
|
|
68
|
+
// Here so `tree-operations/` can compose paths without importing `selection/`; the casts are
|
|
69
|
+
// bare because importing `selection/path-math.ts` at runtime would close an import cycle.
|
|
70
|
+
/** Append a child index to a parent path, yielding a document-absolute path. */
|
|
59
71
|
export function extendDocPath(parent, index) {
|
|
60
72
|
return [...parent, index];
|
|
61
73
|
}
|
|
62
|
-
/** Brand a complete
|
|
74
|
+
/** Brand a complete document-absolute path (copied) for callers that already hold one;
|
|
63
75
|
* `extendDocPath` covers the parent-plus-index case, this covers the rest. */
|
|
64
76
|
export function docPathFrom(indices) {
|
|
65
77
|
return [...indices];
|
|
@@ -1,18 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The one iterative pre-order
|
|
3
|
-
* `core/inline/walk.ts
|
|
4
|
-
* import from (`ambient/` reads this direction too, `core/` never does). Nesting depth
|
|
5
|
-
* input
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* `root`, then its descendants, in document order. `fromEnd` MIRRORS that walk rather than
|
|
10
|
-
* reversing it — each level's children come last-first, a parent still ahead of them — so the
|
|
11
|
-
* leaves arrive reversed and a search for the last matching one reads them in the order it wants.
|
|
12
|
-
* `descend` declines a node's children: the node itself is still yielded, and is asked only when
|
|
13
|
-
* it has any. Each child list is read when its parent pops, so a consumer that rewrites the tree
|
|
14
|
-
* must finish the walk first.
|
|
2
|
+
* The one iterative pre-order traversal of rendered inline DOM, the DOM counterpart of
|
|
3
|
+
* `core/inline/walk.ts`. It lives here rather than beside it because `cursor/` is what a DOM walk
|
|
4
|
+
* may import from (`ambient/` reads this direction too, `core/` never does). Nesting depth comes
|
|
5
|
+
* from the input, so recursion would overflow the stack and leave the block stuck in the
|
|
6
|
+
* failed-block fallback.
|
|
15
7
|
*/
|
|
8
|
+
/** `root`, then its descendants in document order, or mirrored by `fromEnd` (a parent still ahead
|
|
9
|
+
* of its children). Child lists are read lazily, so finish the walk before rewriting the tree. */
|
|
16
10
|
export declare function domDescendants(root: Node, descend?: (node: Node) => boolean, options?: {
|
|
17
11
|
fromEnd?: boolean;
|
|
18
12
|
}): Generator<Node>;
|
package/dist/cursor/dom-walk.js
CHANGED
|
@@ -1,18 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The one iterative pre-order
|
|
3
|
-
* `core/inline/walk.ts
|
|
4
|
-
* import from (`ambient/` reads this direction too, `core/` never does). Nesting depth
|
|
5
|
-
* input
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* `root`, then its descendants, in document order. `fromEnd` MIRRORS that walk rather than
|
|
10
|
-
* reversing it — each level's children come last-first, a parent still ahead of them — so the
|
|
11
|
-
* leaves arrive reversed and a search for the last matching one reads them in the order it wants.
|
|
12
|
-
* `descend` declines a node's children: the node itself is still yielded, and is asked only when
|
|
13
|
-
* it has any. Each child list is read when its parent pops, so a consumer that rewrites the tree
|
|
14
|
-
* must finish the walk first.
|
|
2
|
+
* The one iterative pre-order traversal of rendered inline DOM, the DOM counterpart of
|
|
3
|
+
* `core/inline/walk.ts`. It lives here rather than beside it because `cursor/` is what a DOM walk
|
|
4
|
+
* may import from (`ambient/` reads this direction too, `core/` never does). Nesting depth comes
|
|
5
|
+
* from the input, so recursion would overflow the stack and leave the block stuck in the
|
|
6
|
+
* failed-block fallback.
|
|
15
7
|
*/
|
|
8
|
+
/** `root`, then its descendants in document order, or mirrored by `fromEnd` (a parent still ahead
|
|
9
|
+
* of its children). Child lists are read lazily, so finish the walk before rewriting the tree. */
|
|
16
10
|
export function* domDescendants(root, descend, options = {}) {
|
|
17
11
|
const stack = [root];
|
|
18
12
|
while (stack.length > 0) {
|