@voithos-labs/aragonite 0.10.3 → 0.10.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/a11y-strings.d.ts +12 -5
- package/dist/a11y-strings.js +61 -5
- package/dist/action-contracts.d.ts +242 -155
- package/dist/action-contracts.js +2 -2
- package/dist/active-editor.d.ts +3 -3
- package/dist/active-editor.js +8 -9
- package/dist/ambient/ambient-dom.d.ts +2 -5
- package/dist/ambient/ambient-dom.js +16 -62
- package/dist/assert.js +6 -5
- package/dist/block-component.d.ts +135 -109
- package/dist/block-component.js +30 -22
- package/dist/block-id.d.ts +6 -10
- package/dist/block-id.js +25 -14
- package/dist/bounded-memo.d.ts +5 -5
- package/dist/bounded-memo.js +6 -6
- package/dist/components/BlockDragHandle.svelte +13 -20
- package/dist/components/BlockHost.svelte +56 -134
- package/dist/components/BlockList.svelte +22 -19
- package/dist/components/DecorationOverlay.svelte +9 -10
- package/dist/components/DecorationOverlay.svelte.d.ts +2 -2
- package/dist/components/Editor.svelte +619 -1089
- package/dist/components/Editor.svelte.d.ts +9 -20
- package/dist/components/GapCaret.svelte +26 -59
- package/dist/components/SelectionOverlay.svelte +36 -67
- package/dist/components/SelectionOverlay.svelte.d.ts +6 -4
- package/dist/components/TailInsert.svelte +8 -55
- package/dist/components/TailInsert.svelte.d.ts +4 -6
- package/dist/components/block-content-selector.d.ts +11 -11
- package/dist/components/block-content-selector.js +11 -11
- package/dist/components/block-el-lookup.d.ts +6 -0
- package/dist/components/block-el-lookup.js +27 -0
- package/dist/components/blocks/BlockquoteBlock.svelte +3 -3
- package/dist/components/blocks/ThematicBreakBlock.svelte +22 -63
- package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +0 -2
- package/dist/components/blocks/code/CodeBlock.svelte +255 -276
- package/dist/components/blocks/code/CodeBlock.svelte.d.ts +2 -3
- package/dist/components/blocks/code/CodeBlockRail.svelte +103 -100
- package/dist/components/blocks/code/CodeBlockRail.svelte.d.ts +9 -4
- package/dist/components/blocks/code/code-beforeinput.d.ts +1 -1
- package/dist/components/blocks/code/code-bootstrap.d.ts +3 -5
- package/dist/components/blocks/code/code-bootstrap.js +35 -28
- package/dist/components/blocks/code/code-context-actions.js +5 -4
- package/dist/components/blocks/code/code-enter.js +2 -2
- package/dist/components/blocks/code/code-fence-boundary.d.ts +29 -46
- package/dist/components/blocks/code/code-fence-boundary.js +40 -66
- package/dist/components/blocks/code/code-fence-exit.d.ts +6 -11
- package/dist/components/blocks/code/code-fence-exit.js +24 -25
- package/dist/components/blocks/code/code-indent.d.ts +2 -2
- package/dist/components/blocks/code/code-indent.js +4 -7
- package/dist/components/blocks/code/code-languages.d.ts +16 -12
- package/dist/components/blocks/code/code-languages.js +58 -32
- package/dist/components/blocks/code/code-paste-surface.d.ts +3 -2
- package/dist/components/blocks/code/code-paste-surface.js +9 -18
- package/dist/components/blocks/code/code-renderer.d.ts +21 -5
- package/dist/components/blocks/code/code-renderer.js +90 -125
- package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +5 -8
- package/dist/components/blocks/directive/activate-directives.d.ts +4 -4
- package/dist/components/blocks/directive/activate-directives.js +18 -13
- package/dist/components/blocks/editable-leaf.d.ts +50 -74
- package/dist/components/blocks/editable-leaf.js +144 -202
- package/dist/components/blocks/editable-surface.d.ts +96 -100
- package/dist/components/blocks/editable-surface.js +101 -109
- package/dist/components/blocks/list/ListBlock.svelte +46 -90
- package/dist/components/blocks/list/ListItemBlock.svelte +99 -144
- package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +3 -0
- package/dist/components/blocks/list/task-checkbox.d.ts +5 -2
- package/dist/components/blocks/list/task-checkbox.js +12 -7
- package/dist/components/blocks/plain-text-backend.d.ts +4 -20
- package/dist/components/blocks/plain-text-backend.js +9 -43
- package/dist/components/blocks/surface-wiring.svelte.d.ts +8 -9
- package/dist/components/blocks/surface-wiring.svelte.js +15 -34
- package/dist/components/blocks/table/TableActionMenu.svelte +19 -18
- package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +3 -1
- package/dist/components/blocks/table/TableBlock.svelte +100 -165
- package/dist/components/blocks/table/TableBlock.svelte.d.ts +3 -3
- package/dist/components/blocks/table/TableCellBlock.svelte +307 -385
- package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +1 -0
- package/dist/components/blocks/table/TableRowBlock.svelte +60 -104
- package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +0 -1
- package/dist/components/blocks/table/cell-keydown-plan.d.ts +4 -9
- package/dist/components/blocks/table/cell-keydown-plan.js +8 -12
- package/dist/components/blocks/table/cell-pointer.d.ts +18 -23
- package/dist/components/blocks/table/cell-pointer.js +49 -71
- package/dist/components/blocks/table/cell-render.d.ts +24 -29
- package/dist/components/blocks/table/cell-render.js +29 -31
- package/dist/components/blocks/table/selected-cells.d.ts +7 -7
- package/dist/components/blocks/table/selected-cells.js +9 -13
- package/dist/components/blocks/table/table-caret-at-point.d.ts +4 -4
- package/dist/components/blocks/table/table-caret-at-point.js +5 -5
- package/dist/components/blocks/table/table-cell-paste.d.ts +5 -11
- package/dist/components/blocks/table/table-cell-paste.js +27 -43
- package/dist/components/blocks/table/table-drag-hit-test.js +2 -1
- package/dist/components/blocks/table/table-menu-model.d.ts +4 -8
- package/dist/components/blocks/table/table-menu-model.js +6 -10
- package/dist/components/blocks/table/table-navigation.js +2 -2
- package/dist/components/blocks/text/TextEditableBlock.svelte +392 -310
- package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +2 -1
- package/dist/components/blocks/text/auto-pair-record.d.ts +23 -0
- package/dist/components/blocks/text/auto-pair-record.js +51 -0
- package/dist/components/blocks/text/click-snap-guard.d.ts +9 -4
- package/dist/components/blocks/text/click-snap-guard.js +16 -5
- package/dist/components/blocks/text/composition-seat.d.ts +17 -14
- package/dist/components/blocks/text/composition-seat.js +11 -11
- package/dist/components/blocks/text/construct-edge-delete.d.ts +20 -20
- package/dist/components/blocks/text/construct-edge-delete.js +50 -65
- package/dist/components/blocks/text/construct-reveal.d.ts +16 -21
- package/dist/components/blocks/text/construct-reveal.js +13 -14
- package/dist/components/blocks/text/delimiter-autopair.d.ts +51 -34
- package/dist/components/blocks/text/delimiter-autopair.js +87 -103
- package/dist/components/blocks/text/edge-policy-dispatch.d.ts +44 -46
- package/dist/components/blocks/text/edge-policy-dispatch.js +164 -180
- package/dist/components/blocks/text/edge-seat.d.ts +17 -26
- package/dist/components/blocks/text/edge-seat.js +43 -70
- package/dist/components/blocks/text/link-at-point.d.ts +9 -9
- package/dist/components/blocks/text/link-at-point.js +12 -15
- package/dist/components/blocks/text/live-join-seam.d.ts +6 -9
- package/dist/components/blocks/text/live-join-seam.js +75 -112
- package/dist/components/blocks/text/live-selection-edit.d.ts +14 -43
- package/dist/components/blocks/text/live-selection-edit.js +32 -105
- package/dist/components/blocks/text/live-split-rebalance.d.ts +9 -13
- package/dist/components/blocks/text/live-split-rebalance.js +50 -67
- package/dist/components/blocks/text/marker-completion.d.ts +7 -12
- package/dist/components/blocks/text/marker-completion.js +17 -10
- package/dist/components/blocks/text/pending-mark-insert.d.ts +11 -18
- package/dist/components/blocks/text/pending-mark-insert.js +30 -49
- package/dist/components/blocks/text/screen-diff.d.ts +5 -15
- package/dist/components/blocks/text/screen-diff.js +5 -19
- package/dist/components/blocks/text/text-clipboard.d.ts +23 -32
- package/dist/components/blocks/text/text-clipboard.js +27 -32
- package/dist/components/blocks/text/text-keydown.d.ts +20 -30
- package/dist/components/blocks/text/text-keydown.js +54 -51
- package/dist/components/blocks/text/text-render.d.ts +25 -35
- package/dist/components/blocks/text/text-render.js +82 -61
- package/dist/components/blocks/text/widget-adjacency.d.ts +9 -9
- package/dist/components/blocks/text/widget-adjacency.js +17 -17
- package/dist/components/blocks/text/widget-interaction.d.ts +67 -43
- package/dist/components/blocks/text/widget-interaction.js +243 -208
- package/dist/components/blocks/widget-portal.d.ts +20 -29
- package/dist/components/blocks/widget-portal.js +16 -14
- package/dist/components/built-in-blocks.d.ts +3 -4
- package/dist/components/built-in-blocks.js +17 -18
- package/dist/components/drag-handle.d.ts +13 -30
- package/dist/components/drag-handle.js +25 -63
- package/dist/components/editor-built-ins.d.ts +1 -0
- package/dist/components/editor-built-ins.js +16 -0
- package/dist/components/editor-root-clipboard.d.ts +6 -6
- package/dist/components/editor-root-clipboard.js +16 -27
- package/dist/components/editor-root-document-swap.d.ts +49 -0
- package/dist/components/editor-root-document-swap.js +54 -0
- package/dist/components/editor-root-focus.d.ts +5 -4
- package/dist/components/editor-root-focus.js +51 -22
- package/dist/components/editor-root-focused-surface.d.ts +35 -0
- package/dist/components/editor-root-focused-surface.js +65 -0
- package/dist/components/editor-root-geometry.d.ts +15 -24
- package/dist/components/editor-root-geometry.js +27 -31
- package/dist/components/editor-root-gestures.d.ts +39 -0
- package/dist/components/editor-root-gestures.js +189 -0
- package/dist/components/editor-root-keydown.d.ts +10 -25
- package/dist/components/editor-root-keydown.js +19 -43
- package/dist/components/editor-root-listeners.d.ts +22 -31
- package/dist/components/editor-root-listeners.js +49 -46
- package/dist/components/editor-root-menus.d.ts +51 -0
- package/dist/components/editor-root-menus.js +147 -0
- package/dist/components/editor-root-mode-flip.d.ts +16 -11
- package/dist/components/editor-root-mode-flip.js +36 -34
- package/dist/components/editor-root-scroll-host.d.ts +22 -0
- package/dist/components/editor-root-scroll-host.js +34 -0
- package/dist/components/editor-root-test-surface.d.ts +48 -0
- package/dist/components/editor-root-test-surface.js +6 -0
- package/dist/components/image/ImageOverlayHost.svelte +44 -35
- package/dist/components/image/ImageOverlayHost.svelte.d.ts +5 -6
- package/dist/components/image/ImageProperties.svelte +37 -41
- package/dist/components/image/ImageProperties.svelte.d.ts +9 -4
- package/dist/components/image/ImageResizeHandles.svelte +26 -30
- package/dist/components/image/image-crop.d.ts +5 -11
- package/dist/components/image/image-crop.js +5 -11
- package/dist/components/image/image-edit-commit.d.ts +19 -16
- package/dist/components/image/image-edit-commit.js +74 -38
- package/dist/components/image/image-resize.d.ts +2 -5
- package/dist/components/image/image-resize.js +3 -6
- package/dist/components/image/image-widget-editing.d.ts +3 -3
- package/dist/components/image/image-widget-editing.js +9 -9
- package/dist/components/image/widget-dom.d.ts +2 -3
- package/dist/components/image/widget-dom.js +19 -24
- package/dist/components/image/widget-selection-state.svelte.d.ts +10 -11
- package/dist/components/image/widget-selection-state.svelte.js +26 -19
- package/dist/components/kind-cue.svelte.d.ts +21 -0
- package/dist/components/kind-cue.svelte.js +35 -0
- package/dist/components/link-card/LinkCard.svelte +115 -64
- package/dist/components/link-card/LinkCard.svelte.d.ts +7 -5
- package/dist/components/link-card/LinkCardHost.svelte +42 -33
- package/dist/components/link-card/LinkCardHost.svelte.d.ts +10 -8
- package/dist/components/link-card/link-card-commit.d.ts +16 -19
- package/dist/components/link-card/link-card-commit.js +21 -30
- package/dist/components/link-card/link-card-entry.d.ts +13 -23
- package/dist/components/link-card/link-card-entry.js +16 -24
- package/dist/components/link-card/link-card-state.svelte.d.ts +17 -21
- package/dist/components/link-card/link-card-state.svelte.js +2 -2
- package/dist/components/lrd-map-gate.d.ts +4 -11
- package/dist/components/lrd-map-gate.js +5 -11
- package/dist/components/menu/BlockMenu.svelte +20 -81
- package/dist/components/menu/BlockMenu.svelte.d.ts +11 -9
- package/dist/components/menu/InlineMenuHost.svelte +191 -0
- package/dist/components/menu/InlineMenuHost.svelte.d.ts +13 -0
- package/dist/components/menu/MenuIcon.svelte +3 -103
- package/dist/components/menu/MenuIcon.svelte.d.ts +2 -44
- package/dist/components/menu/SelectionToolbar.svelte +380 -0
- package/dist/components/menu/SelectionToolbar.svelte.d.ts +14 -0
- package/dist/components/menu/clipboard-actions.d.ts +3 -4
- package/dist/components/menu/clipboard-actions.js +3 -4
- package/dist/components/menu/default-context-actions.d.ts +4 -13
- package/dist/components/menu/default-context-actions.js +49 -67
- package/dist/components/menu/flyout-placement.d.ts +2 -2
- package/dist/components/menu/flyout-placement.js +2 -2
- package/dist/components/menu/menu-presence.svelte.d.ts +12 -0
- package/dist/components/menu/menu-presence.svelte.js +19 -0
- package/dist/components/paste-image-arm.d.ts +6 -11
- package/dist/components/paste-image-arm.js +11 -18
- package/dist/components/portal.d.ts +2 -5
- package/dist/components/portal.js +4 -7
- package/dist/core/directive/activate.d.ts +4 -5
- package/dist/core/directive/activate.js +8 -9
- package/dist/core/directive/container-opener.js +13 -12
- package/dist/core/directive/grammar.d.ts +2 -5
- package/dist/core/directive/grammar.js +10 -10
- package/dist/core/directive/kinds.d.ts +4 -7
- package/dist/core/directive/kinds.js +14 -16
- package/dist/core/directive/registry.d.ts +12 -9
- package/dist/core/directive/registry.js +19 -20
- package/dist/core/directive/text-recognizer.d.ts +3 -2
- package/dist/core/directive/text-recognizer.js +5 -9
- package/dist/core/escapable.d.ts +1 -5
- package/dist/core/escapable.js +1 -5
- package/dist/core/inline/backticks.d.ts +3 -4
- package/dist/core/inline/backticks.js +3 -4
- package/dist/core/inline/character-refs.js +2 -1
- package/dist/core/inline/destination-bytes.d.ts +6 -3
- package/dist/core/inline/destination-bytes.js +50 -8
- package/dist/core/inline/entity-widget.d.ts +4 -3
- package/dist/core/inline/entity-widget.js +6 -6
- package/dist/core/inline/format-toggle.d.ts +22 -28
- package/dist/core/inline/format-toggle.js +97 -129
- package/dist/core/inline/html-entities.d.ts +2 -3
- package/dist/core/inline/html-entities.js +2 -3
- package/dist/core/inline/html-tag-grammar.js +6 -2
- package/dist/core/inline/image-dimensions.d.ts +2 -0
- package/dist/core/inline/image-dimensions.js +19 -2
- package/dist/core/inline/image-source-bytes.d.ts +11 -0
- package/dist/core/inline/image-source-bytes.js +71 -0
- package/dist/core/inline/index.d.ts +28 -21
- package/dist/core/inline/index.js +56 -34
- package/dist/core/inline/inline-cache.d.ts +12 -15
- package/dist/core/inline/inline-cache.js +11 -14
- package/dist/core/inline/inline-widgets.d.ts +55 -68
- package/dist/core/inline/inline-widgets.js +55 -58
- package/dist/core/inline/link-destination.d.ts +31 -0
- package/dist/core/inline/link-destination.js +129 -0
- package/dist/core/inline/link-reference-resolver.d.ts +8 -6
- package/dist/core/inline/link-reference-resolver.js +10 -6
- package/dist/core/inline/link-source-bytes.d.ts +31 -0
- package/dist/{components/blocks/text → core/inline}/link-source-bytes.js +43 -54
- package/dist/core/inline/live-edit/read-back.d.ts +29 -0
- package/dist/core/inline/live-edit/read-back.js +50 -0
- package/dist/core/inline/picture.d.ts +10 -0
- package/dist/core/inline/picture.js +40 -0
- package/dist/core/inline/scan/autolinks.d.ts +7 -8
- package/dist/core/inline/scan/autolinks.js +80 -59
- package/dist/core/inline/scan/brackets.d.ts +2 -2
- package/dist/core/inline/scan/brackets.js +6 -103
- package/dist/core/inline/scan/code-spans.d.ts +4 -0
- package/dist/core/inline/scan/code-spans.js +8 -0
- package/dist/core/inline/scan/emphasis.js +10 -14
- package/dist/core/inline/scan/index.d.ts +3 -1
- package/dist/core/inline/scan/index.js +32 -33
- package/dist/core/inline/scan/plugin-syntax.d.ts +28 -36
- package/dist/core/inline/scan/plugin-syntax.js +75 -89
- package/dist/core/inline/scan/scan-state.d.ts +2 -0
- package/dist/core/inline/scan/scan-state.js +1 -0
- package/dist/core/inline/scan/simple-nodes.d.ts +2 -5
- package/dist/core/inline/scan/simple-nodes.js +2 -5
- package/dist/core/inline/scan/triggers.d.ts +17 -0
- package/dist/core/inline/scan/triggers.js +26 -0
- package/dist/core/inline/scan/url.js +8 -10
- package/dist/core/inline/transparency.d.ts +2 -1
- package/dist/core/inline/transparency.js +33 -17
- package/dist/core/inline/visibility.d.ts +30 -49
- package/dist/core/inline/visibility.js +31 -49
- package/dist/core/inline/walk.d.ts +4 -10
- package/dist/core/inline/walk.js +4 -10
- package/dist/core/inline-render.d.ts +22 -27
- package/dist/core/inline-render.js +51 -60
- package/dist/core/lines.d.ts +67 -26
- package/dist/core/lines.js +164 -33
- package/dist/core/metadata-parity.d.ts +9 -0
- package/dist/core/metadata-parity.js +25 -0
- package/dist/core/node-views.d.ts +7 -6
- package/dist/core/node-views.js +5 -5
- package/dist/core/nodes.d.ts +34 -44
- package/dist/core/nodes.js +4 -12
- package/dist/core/parser.d.ts +27 -34
- package/dist/core/parser.js +53 -67
- package/dist/core/parsers/blockquote.d.ts +5 -8
- package/dist/core/parsers/blockquote.js +11 -10
- package/dist/core/parsers/built-in-openers.d.ts +2 -5
- package/dist/core/parsers/built-in-openers.js +5 -8
- package/dist/core/parsers/fence-syntax.d.ts +36 -7
- package/dist/core/parsers/fence-syntax.js +61 -11
- package/dist/core/parsers/fenced-code.d.ts +16 -0
- package/dist/core/parsers/fenced-code.js +16 -15
- package/dist/core/parsers/heading.d.ts +19 -2
- package/dist/core/parsers/heading.js +50 -2
- package/dist/core/parsers/html-block.d.ts +3 -6
- package/dist/core/parsers/html-block.js +10 -11
- package/dist/core/parsers/indented-code.d.ts +1 -1
- package/dist/core/parsers/indented-code.js +2 -8
- package/dist/core/parsers/link-reference.d.ts +5 -3
- package/dist/core/parsers/link-reference.js +116 -120
- package/dist/core/parsers/list.d.ts +12 -5
- package/dist/core/parsers/list.js +53 -36
- package/dist/core/parsers/paragraph.d.ts +3 -3
- package/dist/core/parsers/paragraph.js +14 -5
- package/dist/core/parsers/table-completion.d.ts +2 -5
- package/dist/core/parsers/table-completion.js +7 -10
- package/dist/core/parsers/table.d.ts +8 -8
- package/dist/core/parsers/table.js +23 -26
- package/dist/core/parsers/thematic-break.js +15 -14
- package/dist/core/paths.d.ts +13 -0
- package/dist/core/paths.js +31 -0
- package/dist/core/terminator-escalation.d.ts +0 -7
- package/dist/core/terminator-escalation.js +5 -8
- package/dist/core/url-policy.d.ts +2 -5
- package/dist/core/url-policy.js +8 -12
- package/dist/cursor/caret-memory.d.ts +34 -0
- package/dist/cursor/caret-memory.js +82 -0
- package/dist/cursor/coordinate-spaces.d.ts +26 -19
- package/dist/cursor/coordinate-spaces.js +32 -20
- package/dist/cursor/dom-walk.d.ts +7 -13
- package/dist/cursor/dom-walk.js +7 -13
- package/dist/cursor/edge-affinity.d.ts +7 -35
- package/dist/cursor/edge-affinity.js +13 -44
- package/dist/cursor/focused-caret.d.ts +6 -8
- package/dist/cursor/focused-caret.js +7 -16
- package/dist/cursor/height-model.d.ts +3 -3
- package/dist/cursor/height-model.js +5 -5
- package/dist/cursor/height-oracle.d.ts +10 -7
- package/dist/cursor/height-oracle.js +26 -75
- package/dist/cursor/observe-resize.d.ts +13 -0
- package/dist/cursor/observe-resize.js +43 -0
- package/dist/cursor/overlay-rects.d.ts +2 -5
- package/dist/cursor/overlay-rects.js +2 -5
- package/dist/cursor/overlay-remeasure.d.ts +6 -7
- package/dist/cursor/overlay-remeasure.js +10 -14
- package/dist/cursor/pending-marks.d.ts +7 -9
- package/dist/cursor/pending-marks.js +6 -27
- package/dist/cursor/point-offset.d.ts +16 -10
- package/dist/cursor/point-offset.js +60 -25
- package/dist/cursor/reveal-source.d.ts +7 -11
- package/dist/cursor/reveal-source.js +10 -18
- package/dist/cursor/scroll-ancestors.d.ts +9 -20
- package/dist/cursor/scroll-ancestors.js +14 -26
- package/dist/cursor/scroll-owner.d.ts +92 -0
- package/dist/cursor/scroll-owner.js +283 -0
- package/dist/cursor/scrollport.d.ts +16 -8
- package/dist/cursor/scrollport.js +28 -5
- package/dist/cursor/sticky-column.d.ts +6 -29
- package/dist/cursor/sticky-column.js +6 -49
- package/dist/cursor/sticky-measure.d.ts +14 -9
- package/dist/cursor/sticky-measure.js +99 -49
- package/dist/cursor/surface-backend.d.ts +41 -0
- package/dist/cursor/surface-backend.js +78 -0
- package/dist/cursor/typography-estimates.d.ts +3 -3
- package/dist/cursor/typography-estimates.js +3 -3
- package/dist/cursor/visual-lines.d.ts +25 -13
- package/dist/cursor/visual-lines.js +72 -28
- package/dist/cursor/widget-edge-snap.d.ts +23 -0
- package/dist/cursor/widget-edge-snap.js +39 -0
- package/dist/cursor/widget-offset.d.ts +111 -102
- package/dist/cursor/widget-offset.js +352 -177
- package/dist/debug/diagnostics-report.d.ts +6 -6
- package/dist/debug/diagnostics-report.js +5 -5
- package/dist/debug/dump-tree.js +2 -2
- package/dist/debug/editor-diagnostics.d.ts +15 -0
- package/dist/debug/editor-diagnostics.js +33 -0
- package/dist/debug/inspect.d.ts +2 -2
- package/dist/debug/inspect.js +4 -4
- package/dist/debug/interaction-trace.d.ts +14 -15
- package/dist/debug/interaction-trace.js +19 -20
- package/dist/debug/operations-log.d.ts +1 -1
- package/dist/debug/operations-log.js +1 -1
- package/dist/decorations/buckets.d.ts +6 -12
- package/dist/decorations/buckets.js +4 -11
- package/dist/decorations/decoration-state.svelte.d.ts +2 -3
- package/dist/decorations/decoration-state.svelte.js +24 -26
- package/dist/decorations/island-dom.d.ts +10 -18
- package/dist/decorations/island-dom.js +25 -50
- package/dist/decorations/reserved-attrs.d.ts +6 -8
- package/dist/decorations/reserved-attrs.js +31 -17
- package/dist/decorations/types.d.ts +6 -7
- package/dist/decorations/types.js +2 -1
- package/dist/decorations/use-block-decorations.svelte.d.ts +19 -0
- package/dist/decorations/use-block-decorations.svelte.js +71 -0
- package/dist/decorations/widget-dom.d.ts +3 -3
- package/dist/decorations/widget-dom.js +5 -5
- package/dist/dev-warn.d.ts +5 -2
- package/dist/dev-warn.js +16 -4
- package/dist/editor-actions/ancestry-folds.d.ts +9 -14
- package/dist/editor-actions/ancestry-folds.js +13 -18
- package/dist/editor-actions/block-edit-core.d.ts +49 -22
- package/dist/editor-actions/block-edit-core.js +279 -151
- package/dist/editor-actions/block-edit-scope.d.ts +63 -50
- package/dist/editor-actions/block-edit-scope.js +100 -48
- package/dist/editor-actions/block-edit.d.ts +2 -3
- package/dist/editor-actions/block-edit.js +14 -90
- package/dist/editor-actions/commit/history.d.ts +4 -4
- package/dist/editor-actions/commit/history.js +33 -34
- package/dist/editor-actions/commit/reading-write-gate.d.ts +18 -0
- package/dist/editor-actions/commit/reading-write-gate.js +56 -0
- package/dist/editor-actions/commit/text-batch.d.ts +7 -11
- package/dist/editor-actions/commit/text-batch.js +6 -7
- package/dist/editor-actions/commit/undo-controller.d.ts +6 -4
- package/dist/editor-actions/commit/undo-controller.js +346 -216
- package/dist/editor-actions/container-block-component.d.ts +32 -51
- package/dist/editor-actions/container-block-component.js +66 -92
- package/dist/editor-actions/container-edit.d.ts +4 -2
- package/dist/editor-actions/container-edit.js +14 -44
- package/dist/editor-actions/container-exit-overrides.d.ts +6 -4
- package/dist/editor-actions/container-exit-overrides.js +19 -21
- package/dist/editor-actions/deps.d.ts +25 -32
- package/dist/editor-actions/enter-completion.d.ts +12 -15
- package/dist/editor-actions/enter-completion.js +49 -51
- package/dist/editor-actions/focus/focus-dispatch.d.ts +24 -25
- package/dist/editor-actions/focus/focus-dispatch.js +33 -52
- package/dist/editor-actions/focus/focus-landing.d.ts +11 -5
- package/dist/editor-actions/focus/focus-landing.js +29 -14
- package/dist/editor-actions/focus/focus.d.ts +3 -2
- package/dist/editor-actions/focus/focus.js +42 -59
- package/dist/editor-actions/index.d.ts +4 -3
- package/dist/editor-actions/index.js +5 -4
- package/dist/editor-actions/inline-range-commit.d.ts +18 -16
- package/dist/editor-actions/inline-range-commit.js +45 -54
- package/dist/editor-actions/leaf-write.d.ts +11 -0
- package/dist/editor-actions/leaf-write.js +102 -0
- package/dist/editor-actions/list-context.d.ts +9 -10
- package/dist/editor-actions/list-context.js +115 -110
- package/dist/editor-actions/list-overrides.d.ts +13 -5
- package/dist/editor-actions/list-overrides.js +36 -12
- package/dist/editor-actions/merge-fallback.d.ts +10 -16
- package/dist/editor-actions/merge-fallback.js +11 -22
- package/dist/editor-actions/nested/container-actions.d.ts +37 -0
- package/dist/editor-actions/nested/container-actions.js +42 -0
- package/dist/editor-actions/nested/emptied-container.d.ts +5 -0
- package/dist/editor-actions/nested/emptied-container.js +5 -0
- package/dist/editor-actions/nested/nested-actions.d.ts +22 -25
- package/dist/editor-actions/nested/nested-actions.js +17 -15
- package/dist/editor-actions/nested/nested-block-edit.d.ts +3 -4
- package/dist/editor-actions/nested/nested-block-edit.js +40 -134
- package/dist/editor-actions/nested/nested-focus.d.ts +2 -3
- package/dist/editor-actions/nested/nested-focus.js +33 -21
- package/dist/editor-actions/paste-coordinator.d.ts +3 -2
- package/dist/editor-actions/paste-coordinator.js +17 -13
- package/dist/editor-actions/plugin/chrome-leaf.d.ts +11 -9
- package/dist/editor-actions/plugin/chrome-leaf.js +14 -13
- package/dist/editor-actions/plugin/container.d.ts +55 -76
- package/dist/editor-actions/plugin/container.js +105 -186
- package/dist/editor-actions/plugin/directive-container.d.ts +4 -4
- package/dist/editor-actions/plugin/directive-container.js +7 -8
- package/dist/editor-actions/reorder-action.d.ts +7 -12
- package/dist/editor-actions/reorder-action.js +32 -48
- package/dist/editor-actions/reorder-drag.d.ts +12 -8
- package/dist/editor-actions/reorder-drag.js +45 -41
- package/dist/editor-actions/replacement-focus.d.ts +13 -21
- package/dist/editor-actions/replacement-focus.js +32 -33
- package/dist/editor-actions/search-replace.js +71 -67
- package/dist/editor-actions/stored-caret.d.ts +7 -0
- package/dist/editor-actions/stored-caret.js +10 -0
- package/dist/editor-actions/table-context.d.ts +9 -11
- package/dist/editor-actions/table-context.js +70 -93
- package/dist/editor-actions/unwrap-strategies.d.ts +4 -5
- package/dist/editor-actions/unwrap-strategies.js +52 -63
- package/dist/editor-actions/whole-block-focus-surface.d.ts +19 -28
- package/dist/editor-actions/whole-block-focus-surface.js +43 -53
- package/dist/editor-events.d.ts +25 -29
- package/dist/editor-events.js +17 -28
- package/dist/editor-keys.d.ts +96 -104
- package/dist/editor-keys.js +11 -24
- package/dist/editor-props.d.ts +91 -71
- package/dist/editor-rects.d.ts +23 -34
- package/dist/editor-rects.js +9 -77
- package/dist/env.d.ts +6 -4
- package/dist/env.js +8 -4
- package/dist/index.d.ts +6 -2
- package/dist/index.js +5 -2
- package/dist/inline-menu/inline-menu-session.d.ts +37 -0
- package/dist/inline-menu/inline-menu-session.js +98 -0
- package/dist/inline-menu/inline-menu-state.svelte.d.ts +63 -0
- package/dist/inline-menu/inline-menu-state.svelte.js +409 -0
- package/dist/inline-menu/types.d.ts +77 -0
- package/dist/inline-menu/types.js +7 -0
- package/dist/invariants/child-id-parity.d.ts +23 -0
- package/dist/invariants/child-id-parity.js +39 -0
- package/dist/invariants/commit-paths.d.ts +4 -4
- package/dist/invariants/commit-paths.js +4 -4
- package/dist/invariants/commit-scope.d.ts +4 -4
- package/dist/invariants/commit-scope.js +9 -8
- package/dist/invariants/context-keys.d.ts +2 -5
- package/dist/invariants/context-keys.js +3 -6
- package/dist/invariants/descriptor.d.ts +2 -6
- package/dist/invariants/descriptor.js +2 -6
- package/dist/invariants/inline-transitions.d.ts +9 -16
- package/dist/invariants/inline-transitions.js +10 -18
- package/dist/invariants/install.d.ts +18 -27
- package/dist/invariants/install.js +29 -30
- package/dist/invariants/keeps-a-block.d.ts +7 -0
- package/dist/invariants/keeps-a-block.js +14 -0
- package/dist/invariants/landable-caret.d.ts +5 -7
- package/dist/invariants/landable-caret.js +8 -11
- package/dist/invariants/landing-focus-scroll.d.ts +7 -0
- package/dist/invariants/landing-focus-scroll.js +13 -0
- package/dist/invariants/landing-value.d.ts +13 -0
- package/dist/invariants/landing-value.js +27 -0
- package/dist/invariants/marker-css-parity.d.ts +5 -6
- package/dist/invariants/marker-css-parity.js +11 -12
- package/dist/invariants/measures-in-own-list.d.ts +6 -0
- package/dist/invariants/measures-in-own-list.js +13 -0
- package/dist/invariants/node-shape.d.ts +18 -37
- package/dist/invariants/node-shape.js +123 -79
- package/dist/invariants/open-tail.d.ts +7 -0
- package/dist/invariants/open-tail.js +45 -0
- package/dist/invariants/placement-ends-widget.d.ts +8 -0
- package/dist/invariants/placement-ends-widget.js +13 -0
- package/dist/invariants/registry.d.ts +27 -66
- package/dist/invariants/registry.js +61 -137
- package/dist/invariants/render-fidelity.d.ts +4 -4
- package/dist/invariants/render-fidelity.js +5 -5
- package/dist/invariants/selection-endpoints.d.ts +6 -7
- package/dist/invariants/selection-endpoints.js +18 -16
- package/dist/invariants/single-node-sink.d.ts +4 -5
- package/dist/invariants/single-node-sink.js +4 -5
- package/dist/invariants/snapshot-integrity.d.ts +5 -6
- package/dist/invariants/snapshot-integrity.js +1 -1
- package/dist/invariants/structural-descriptor.d.ts +6 -15
- package/dist/invariants/structural-descriptor.js +6 -15
- package/dist/menu-icons.d.ts +47 -0
- package/dist/menu-icons.js +113 -0
- package/dist/perf/instruments.d.ts +20 -5
- package/dist/perf/instruments.js +35 -15
- package/dist/perf/use-mount-gauge.svelte.js +4 -4
- package/dist/plugin.d.ts +38 -8
- package/dist/plugin.js +102 -74
- package/dist/plugins/admonitions/AdmonitionBlock.svelte +14 -11
- package/dist/plugins/admonitions/admonition-kind.js +12 -10
- package/dist/plugins/admonitions/convert-document.d.ts +5 -5
- package/dist/plugins/admonitions/convert-document.js +8 -7
- package/dist/plugins/admonitions/gh-alert.d.ts +8 -1
- package/dist/plugins/admonitions/gh-alert.js +21 -22
- package/dist/plugins/admonitions/github-alert-kind.d.ts +5 -7
- package/dist/plugins/admonitions/github-alert-kind.js +28 -37
- package/dist/plugins/admonitions/index.js +2 -2
- package/dist/plugins/admonitions/kinds.d.ts +1 -1
- package/dist/plugins/admonitions/register.js +11 -2
- package/dist/plugins/details/DetailsBlock.svelte +20 -20
- package/dist/plugins/details/details-disclosure.svelte.d.ts +5 -6
- package/dist/plugins/details/details-disclosure.svelte.js +6 -7
- package/dist/plugins/details/details-kind.d.ts +6 -7
- package/dist/plugins/details/details-kind.js +44 -59
- package/dist/plugins/emoji/emoji-recognizer.d.ts +4 -7
- package/dist/plugins/emoji/emoji-recognizer.js +7 -14
- package/dist/plugins/footnotes/FootnoteDefinition.svelte +33 -16
- package/dist/plugins/footnotes/FootnoteReference.svelte +39 -19
- package/dist/plugins/footnotes/constants.d.ts +2 -0
- package/dist/plugins/footnotes/constants.js +3 -0
- package/dist/plugins/footnotes/footnote-definition.d.ts +8 -6
- package/dist/plugins/footnotes/footnote-definition.js +69 -45
- package/dist/plugins/footnotes/footnote-lookup.d.ts +3 -3
- package/dist/plugins/footnotes/footnote-lookup.js +14 -26
- package/dist/plugins/footnotes/footnote-numbering.d.ts +11 -11
- package/dist/plugins/footnotes/footnote-numbering.js +22 -31
- package/dist/plugins/footnotes/footnote-reference.d.ts +4 -4
- package/dist/plugins/footnotes/footnote-reference.js +8 -13
- package/dist/plugins/footnotes/index.js +2 -3
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +5 -8
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +8 -3
- package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +10 -12
- package/dist/plugins/highlight-occurrences/occurrence-source.js +21 -18
- package/dist/plugins/highlight-occurrences/occurrences.d.ts +11 -11
- package/dist/plugins/highlight-occurrences/occurrences.js +14 -36
- package/dist/plugins/highlight-occurrences/word-char.d.ts +1 -0
- package/dist/plugins/highlight-occurrences/word-char.js +4 -0
- package/dist/plugins/latex/BlockMath.svelte +58 -75
- package/dist/plugins/latex/BlockMath.svelte.d.ts +2 -4
- package/dist/plugins/latex/MathInline.svelte +10 -9
- package/dist/plugins/latex/flanking.d.ts +1 -0
- package/dist/plugins/latex/flanking.js +3 -0
- package/dist/plugins/latex/index.d.ts +1 -1
- package/dist/plugins/latex/latex-kind.d.ts +4 -4
- package/dist/plugins/latex/latex-kind.js +113 -85
- package/dist/plugins/latex/math-completion.d.ts +1 -1
- package/dist/plugins/latex/math-completion.js +5 -8
- package/dist/plugins/latex/math-layout.d.ts +2 -8
- package/dist/plugins/latex/math-layout.js +0 -9
- package/dist/plugins/latex/math-renderer.d.ts +17 -20
- package/dist/plugins/latex/math-renderer.js +21 -38
- package/dist/plugins/latex/math-source.d.ts +4 -8
- package/dist/plugins/latex/math-source.js +36 -75
- package/dist/plugins/latex/register.d.ts +10 -11
- package/dist/plugins/latex/register.js +24 -10
- package/dist/plugins/latex/renderer.d.ts +9 -10
- package/dist/plugins/latex/renderer.js +9 -24
- package/dist/plugins/mermaid/MermaidBlock.svelte +63 -47
- package/dist/plugins/mermaid/index.js +1 -1
- package/dist/plugins/mermaid/mermaid-kind.d.ts +4 -7
- package/dist/plugins/mermaid/mermaid-kind.js +30 -47
- package/dist/plugins/mermaid/mermaid-renderer.d.ts +9 -16
- package/dist/plugins/mermaid/mermaid-renderer.js +12 -31
- package/dist/plugins/mermaid/register.d.ts +3 -3
- package/dist/plugins/mermaid/register.js +5 -5
- package/dist/plugins/mermaid/renderer.d.ts +5 -5
- package/dist/plugins/mermaid/renderer.js +8 -11
- package/dist/plugins/parrot/ParrotBlock.svelte +18 -7
- package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +2 -2
- package/dist/plugins/parrot/parrot-plugin.js +3 -3
- package/dist/plugins/slash-commands/filter.d.ts +23 -0
- package/dist/plugins/slash-commands/filter.js +31 -0
- package/dist/plugins/slash-commands/index.d.ts +2 -0
- package/dist/plugins/slash-commands/index.js +2 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.d.ts +12 -0
- package/dist/plugins/slash-commands/slash-commands-plugin.js +40 -0
- package/dist/plugins/slash-commands/slash-source.d.ts +36 -0
- package/dist/plugins/slash-commands/slash-source.js +108 -0
- package/dist/plugins/toc/TocBlock.svelte +23 -22
- package/dist/plugins/toc/TocBlock.svelte.d.ts +2 -3
- package/dist/plugins/toc/heading-outline.d.ts +7 -12
- package/dist/plugins/toc/heading-outline.js +22 -36
- package/dist/plugins/toc/navigation-queue.d.ts +2 -4
- package/dist/plugins/toc/toc-plugin.d.ts +5 -5
- package/dist/plugins/toc/toc-plugin.js +20 -13
- package/dist/presentation-mode.d.ts +15 -23
- package/dist/presentation-mode.js +19 -25
- package/dist/reactivity/block-list-state.svelte.d.ts +9 -11
- package/dist/reactivity/block-list-state.svelte.js +8 -9
- package/dist/reactivity/block-window.svelte.d.ts +12 -6
- package/dist/reactivity/block-window.svelte.js +44 -17
- package/dist/reactivity/child-list.d.ts +34 -0
- package/dist/reactivity/child-list.js +48 -0
- package/dist/reactivity/content-version.svelte.d.ts +4 -7
- package/dist/reactivity/content-version.svelte.js +3 -5
- package/dist/reactivity/hold-across.d.ts +39 -0
- package/dist/reactivity/hold-across.js +57 -0
- package/dist/reactivity/layout-state.svelte.d.ts +27 -0
- package/dist/reactivity/layout-state.svelte.js +51 -0
- package/dist/reactivity/list-tree.d.ts +39 -0
- package/dist/reactivity/list-tree.js +132 -0
- package/dist/reactivity/list-windowing.svelte.d.ts +50 -71
- package/dist/reactivity/list-windowing.svelte.js +143 -292
- package/dist/reactivity/measure-batch.d.ts +6 -8
- package/dist/reactivity/measure-batch.js +5 -6
- package/dist/reactivity/publish-ref.svelte.d.ts +16 -41
- package/dist/reactivity/publish-ref.svelte.js +21 -85
- package/dist/reactivity/scope-geometry.d.ts +6 -13
- package/dist/reactivity/scope-geometry.js +7 -14
- package/dist/reactivity/state-registry.d.ts +5 -5
- package/dist/reactivity/state-registry.js +11 -15
- package/dist/reactivity/use-container-windowing.svelte.d.ts +13 -26
- package/dist/reactivity/use-container-windowing.svelte.js +64 -74
- package/dist/reactivity/use-measured-child.svelte.d.ts +10 -0
- package/dist/reactivity/use-measured-child.svelte.js +41 -0
- package/dist/reactivity/use-window-floor.svelte.d.ts +2 -0
- package/dist/reactivity/use-window-floor.svelte.js +27 -0
- package/dist/reactivity/window-slice.d.ts +4 -4
- package/dist/reactivity/window-slice.js +0 -2
- package/dist/renderer-slot.d.ts +48 -0
- package/dist/renderer-slot.js +85 -0
- package/dist/scan-index.d.ts +4 -4
- package/dist/scan-index.js +4 -4
- package/dist/schema/block-commands.d.ts +69 -54
- package/dist/schema/block-commands.js +91 -104
- package/dist/schema/block-completions.d.ts +16 -19
- package/dist/schema/block-completions.js +25 -32
- package/dist/schema/block-component-registry.d.ts +13 -14
- package/dist/schema/block-component-registry.js +19 -17
- package/dist/schema/block-kind-descriptor.d.ts +234 -168
- package/dist/schema/block-kind-descriptor.js +151 -66
- package/dist/schema/block-openers.d.ts +48 -39
- package/dist/schema/block-openers.js +73 -83
- package/dist/schema/built-in-descriptors.d.ts +3 -5
- package/dist/schema/built-in-descriptors.js +96 -80
- package/dist/schema/child-spans.d.ts +12 -10
- package/dist/schema/child-spans.js +68 -34
- package/dist/schema/closure.d.ts +18 -16
- package/dist/schema/closure.js +24 -14
- package/dist/schema/command-id.d.ts +6 -8
- package/dist/schema/command-id.js +20 -25
- package/dist/schema/commands.d.ts +79 -81
- package/dist/schema/commands.js +156 -116
- package/dist/schema/container-raw.d.ts +51 -11
- package/dist/schema/container-raw.js +143 -14
- package/dist/schema/container-rebuilders.d.ts +17 -15
- package/dist/schema/container-rebuilders.js +30 -22
- package/dist/schema/context-actions.d.ts +25 -13
- package/dist/schema/context-actions.js +32 -17
- package/dist/schema/define-plugin-block.d.ts +8 -6
- package/dist/schema/define-plugin-block.js +6 -4
- package/dist/schema/fenced-code-raw.d.ts +30 -17
- package/dist/schema/fenced-code-raw.js +155 -107
- package/dist/schema/global-commands.d.ts +6 -6
- package/dist/schema/global-commands.js +14 -22
- package/dist/schema/height-estimates.d.ts +31 -0
- package/dist/schema/height-estimates.js +64 -0
- package/dist/schema/inline-construct-policy.d.ts +42 -55
- package/dist/schema/inline-construct-policy.js +36 -35
- package/dist/schema/insert-catalogue.d.ts +30 -0
- package/dist/schema/insert-catalogue.js +95 -0
- package/dist/schema/keybinding-overrides.d.ts +9 -11
- package/dist/schema/keybinding-overrides.js +1 -1
- package/dist/schema/keybindings.d.ts +15 -7
- package/dist/schema/keybindings.js +21 -9
- package/dist/schema/merge-rules.d.ts +5 -7
- package/dist/schema/merge-rules.js +7 -9
- package/dist/schema/opener-priorities.d.ts +4 -4
- package/dist/schema/opener-priorities.js +4 -4
- package/dist/schema/operations.d.ts +9 -11
- package/dist/schema/operations.js +3 -3
- package/dist/schema/page-role.d.ts +14 -0
- package/dist/schema/page-role.js +19 -0
- package/dist/schema/plugin-activation.d.ts +4 -6
- package/dist/schema/plugin-activation.js +12 -10
- package/dist/schema/plugin-editor-context.d.ts +25 -10
- package/dist/schema/plugin-editor-context.js +40 -9
- package/dist/schema/plugin-install.d.ts +49 -17
- package/dist/schema/plugin-install.js +51 -25
- package/dist/schema/plugin-kind.d.ts +12 -8
- package/dist/schema/plugin-kind.js +35 -42
- package/dist/schema/plugin-name.js +3 -3
- package/dist/schema/plugin-registry.d.ts +54 -0
- package/dist/schema/plugin-registry.js +70 -0
- package/dist/schema/reading.d.ts +23 -0
- package/dist/schema/reading.js +7 -0
- package/dist/schema/register-once.d.ts +3 -5
- package/dist/schema/register-once.js +7 -16
- package/dist/schema/registration-checks.d.ts +12 -16
- package/dist/schema/registration-checks.js +35 -51
- package/dist/schema/registration-pairs.d.ts +54 -0
- package/dist/schema/registration-pairs.js +48 -0
- package/dist/schema/registration-pending.d.ts +8 -12
- package/dist/schema/registration-pending.js +9 -9
- package/dist/schema/registry-reset.d.ts +8 -4
- package/dist/schema/registry-reset.js +13 -26
- package/dist/schema/registry-view.d.ts +25 -13
- package/dist/schema/registry-view.js +26 -20
- package/dist/schema/reserved-chords.d.ts +9 -10
- package/dist/schema/reserved-chords.js +73 -78
- package/dist/schema/reserved-chrome.d.ts +12 -11
- package/dist/schema/reserved-chrome.js +15 -11
- package/dist/schema/setext-raw.d.ts +13 -0
- package/dist/schema/setext-raw.js +33 -0
- package/dist/schema/stored-as.d.ts +20 -0
- package/dist/schema/stored-as.js +6 -0
- package/dist/schema/table-cell-raw.d.ts +18 -7
- package/dist/schema/table-cell-raw.js +28 -7
- package/dist/schema/whole-block-unit.d.ts +5 -4
- package/dist/schema/whole-block-unit.js +5 -4
- package/dist/search/document-scan.d.ts +3 -3
- package/dist/search/document-scan.js +2 -2
- package/dist/search/matcher.d.ts +1 -1
- package/dist/search/regex-executor.d.ts +5 -6
- package/dist/search/regex-executor.js +6 -8
- package/dist/search/replace.d.ts +2 -5
- package/dist/search/replace.js +2 -5
- package/dist/search/search-state.svelte.d.ts +5 -5
- package/dist/search/search-state.svelte.js +12 -16
- package/dist/selection/autoscroll.d.ts +6 -9
- package/dist/selection/block-hit-test.d.ts +16 -24
- package/dist/selection/block-hit-test.js +29 -22
- package/dist/selection/caret-doors.d.ts +15 -14
- package/dist/selection/caret-doors.js +37 -26
- package/dist/selection/caret-landing.d.ts +62 -0
- package/dist/selection/caret-landing.js +157 -0
- package/dist/selection/caret-restore.d.ts +17 -10
- package/dist/selection/caret-restore.js +10 -22
- package/dist/selection/caret-target.d.ts +30 -0
- package/dist/selection/caret-target.js +84 -0
- package/dist/selection/char-endpoint-snap.d.ts +6 -10
- package/dist/selection/char-endpoint-snap.js +8 -14
- package/dist/selection/clipboard-text.d.ts +5 -12
- package/dist/selection/clipboard-text.js +69 -172
- package/dist/selection/covered-block.d.ts +6 -8
- package/dist/selection/covered-block.js +8 -19
- package/dist/selection/cross-block/clipboard.d.ts +3 -2
- package/dist/selection/cross-block/clipboard.js +13 -4
- package/dist/selection/cross-block/dispatch.d.ts +47 -43
- package/dist/selection/cross-block/dispatch.js +12 -23
- package/dist/selection/cross-block/format-range.d.ts +18 -21
- package/dist/selection/cross-block/format-range.js +104 -103
- package/dist/selection/cross-block/format-toggle.d.ts +10 -15
- package/dist/selection/cross-block/format-toggle.js +28 -33
- package/dist/selection/cross-block/keydown.d.ts +4 -4
- package/dist/selection/cross-block/keydown.js +93 -152
- package/dist/selection/cross-block/ops.d.ts +19 -34
- package/dist/selection/cross-block/ops.js +110 -95
- package/dist/selection/cross-block/paste.d.ts +2 -3
- package/dist/selection/cross-block/paste.js +61 -104
- package/dist/selection/cross-block/pointer.d.ts +17 -15
- package/dist/selection/cross-block/pointer.js +74 -25
- package/dist/selection/cross-block/type-replace.d.ts +4 -6
- package/dist/selection/cross-block/type-replace.js +53 -146
- package/dist/selection/dead-space-caret.d.ts +20 -28
- package/dist/selection/dead-space-caret.js +79 -87
- package/dist/selection/drag-pointer.d.ts +22 -5
- package/dist/selection/drag-pointer.js +63 -31
- package/dist/selection/gap-caret.d.ts +17 -28
- package/dist/selection/gap-caret.js +14 -26
- package/dist/selection/grid-selection.d.ts +12 -0
- package/dist/selection/grid-selection.js +22 -0
- package/dist/selection/keyboard-extend.d.ts +27 -39
- package/dist/selection/keyboard-extend.js +94 -116
- package/dist/selection/multi-click.d.ts +37 -0
- package/dist/selection/multi-click.js +197 -0
- package/dist/selection/native-bridge.d.ts +30 -37
- package/dist/selection/native-bridge.js +80 -100
- package/dist/selection/nearest-block.d.ts +17 -12
- package/dist/selection/nearest-block.js +37 -18
- package/dist/selection/path-lookup.d.ts +31 -14
- package/dist/selection/path-lookup.js +110 -20
- package/dist/selection/path-math.d.ts +9 -11
- package/dist/selection/path-math.js +5 -7
- package/dist/selection/pointer-gesture.d.ts +9 -0
- package/dist/selection/pointer-gesture.js +11 -0
- package/dist/selection/pointer-session.d.ts +10 -16
- package/dist/selection/pointer-session.js +6 -7
- package/dist/selection/primitives.d.ts +64 -33
- package/dist/selection/primitives.js +61 -53
- package/dist/selection/range-coverage.d.ts +94 -0
- package/dist/selection/range-coverage.js +365 -0
- package/dist/selection/range-delete-ceremony.d.ts +28 -74
- package/dist/selection/range-delete-ceremony.js +100 -141
- package/dist/selection/range-delete-chrome.d.ts +20 -33
- package/dist/selection/range-delete-chrome.js +53 -78
- package/dist/selection/range-delete-table-coverage.d.ts +11 -25
- package/dist/selection/range-delete-table-coverage.js +42 -112
- package/dist/selection/range-delete-table.d.ts +14 -12
- package/dist/selection/range-delete-table.js +106 -310
- package/dist/selection/range-delete.d.ts +18 -19
- package/dist/selection/range-delete.js +83 -123
- package/dist/selection/round-trip-restore.d.ts +18 -0
- package/dist/selection/round-trip-restore.js +19 -0
- package/dist/selection/selection-announcer.d.ts +17 -0
- package/dist/selection/selection-announcer.js +25 -0
- package/dist/selection/selection-description.d.ts +4 -3
- package/dist/selection/selection-description.js +5 -4
- package/dist/selection/selection-drop.d.ts +52 -0
- package/dist/selection/selection-drop.js +317 -0
- package/dist/selection/selection-restore.d.ts +20 -33
- package/dist/selection/selection-restore.js +21 -44
- package/dist/selection/selection-state.svelte.d.ts +50 -42
- package/dist/selection/selection-state.svelte.js +144 -98
- package/dist/selection/shared-keydown.d.ts +22 -27
- package/dist/selection/shared-keydown.js +25 -45
- package/dist/selection/table-endpoint-snap.d.ts +17 -41
- package/dist/selection/table-endpoint-snap.js +54 -80
- package/dist/selection/table-rect-extend.d.ts +3 -6
- package/dist/selection/table-rect-extend.js +19 -14
- package/dist/styles/editor-theme.css +75 -53
- package/dist/styles/editor.css +248 -139
- package/dist/testing/conformance-core.d.ts +50 -18
- package/dist/testing/conformance-core.js +88 -50
- package/dist/testing/container-conformance.d.ts +48 -84
- package/dist/testing/container-conformance.js +159 -285
- package/dist/testing/headless-actions.d.ts +34 -19
- package/dist/testing/headless-actions.js +116 -65
- package/dist/testing/headless-block-list.svelte.d.ts +16 -0
- package/dist/testing/headless-block-list.svelte.js +22 -0
- package/dist/testing/inline-conformance.d.ts +15 -22
- package/dist/testing/inline-conformance.js +131 -148
- package/dist/testing/kind-conformance.d.ts +19 -24
- package/dist/testing/kind-conformance.js +204 -117
- package/dist/testing/kit-reading.d.ts +7 -0
- package/dist/testing/kit-reading.js +16 -0
- package/dist/testing/mount-dom-stubs.d.ts +4 -5
- package/dist/testing/mount-dom-stubs.js +8 -5
- package/dist/testing/parse-convergence.d.ts +10 -10
- package/dist/testing/parse-convergence.js +14 -49
- package/dist/testing.d.ts +13 -9
- package/dist/testing.js +28 -38
- package/dist/tree-operations/blockquote.d.ts +8 -14
- package/dist/tree-operations/blockquote.js +25 -45
- package/dist/tree-operations/chain-rebuild.d.ts +34 -25
- package/dist/tree-operations/chain-rebuild.js +115 -52
- package/dist/tree-operations/children.d.ts +5 -9
- package/dist/tree-operations/children.js +7 -11
- package/dist/tree-operations/cleanup.d.ts +6 -7
- package/dist/tree-operations/cleanup.js +14 -11
- package/dist/tree-operations/clone.js +5 -4
- package/dist/tree-operations/container-lift.d.ts +10 -5
- package/dist/tree-operations/container-lift.js +20 -14
- package/dist/tree-operations/container-offsets.d.ts +22 -0
- package/dist/tree-operations/container-offsets.js +89 -0
- package/dist/tree-operations/content-write.d.ts +52 -29
- package/dist/tree-operations/content-write.js +155 -110
- package/dist/tree-operations/index.d.ts +4 -4
- package/dist/tree-operations/index.js +4 -4
- package/dist/tree-operations/keep-one-block.d.ts +10 -0
- package/dist/tree-operations/keep-one-block.js +19 -0
- package/dist/tree-operations/leaf-range.d.ts +33 -0
- package/dist/tree-operations/leaf-range.js +67 -0
- package/dist/tree-operations/list/empty-check.d.ts +2 -3
- package/dist/tree-operations/list/empty-check.js +4 -4
- package/dist/tree-operations/list/exit-replacement.d.ts +4 -6
- package/dist/tree-operations/list/exit-replacement.js +4 -9
- package/dist/tree-operations/list/item-partition.d.ts +2 -2
- package/dist/tree-operations/list/item-partition.js +2 -2
- package/dist/tree-operations/list/list-builders.d.ts +18 -16
- package/dist/tree-operations/list/list-builders.js +59 -30
- package/dist/tree-operations/list/ordered-markers.d.ts +7 -16
- package/dist/tree-operations/list/ordered-markers.js +7 -16
- package/dist/tree-operations/list/reconcile-task.d.ts +16 -7
- package/dist/tree-operations/list/reconcile-task.js +80 -23
- package/dist/tree-operations/list/sublist-separator.d.ts +7 -7
- package/dist/tree-operations/list/sublist-separator.js +20 -27
- package/dist/tree-operations/list/task-paragraph.d.ts +25 -0
- package/dist/tree-operations/list/task-paragraph.js +54 -0
- package/dist/tree-operations/list/unwrap-merge.d.ts +8 -16
- package/dist/tree-operations/list/unwrap-merge.js +44 -79
- package/dist/tree-operations/node-ops.d.ts +30 -52
- package/dist/tree-operations/node-ops.js +152 -218
- package/dist/tree-operations/node-primitives.d.ts +44 -31
- package/dist/tree-operations/node-primitives.js +84 -60
- package/dist/tree-operations/open-tail.d.ts +25 -0
- package/dist/tree-operations/open-tail.js +100 -0
- package/dist/tree-operations/parse-block.d.ts +15 -2
- package/dist/tree-operations/parse-block.js +19 -4
- package/dist/tree-operations/paste/apply.d.ts +7 -8
- package/dist/tree-operations/paste/apply.js +33 -63
- package/dist/tree-operations/paste/body-write.d.ts +8 -6
- package/dist/tree-operations/paste/body-write.js +13 -14
- package/dist/tree-operations/paste/container-match.d.ts +7 -10
- package/dist/tree-operations/paste/container-match.js +76 -58
- package/dist/tree-operations/paste/container-paste.d.ts +3 -3
- package/dist/tree-operations/paste/container-paste.js +3 -3
- package/dist/tree-operations/paste/dispatch.d.ts +26 -29
- package/dist/tree-operations/paste/dispatch.js +68 -53
- package/dist/tree-operations/paste/focus-target.d.ts +11 -14
- package/dist/tree-operations/paste/focus-target.js +13 -18
- package/dist/tree-operations/paste/hooks.d.ts +7 -12
- package/dist/tree-operations/paste/hooks.js +49 -46
- package/dist/tree-operations/paste/line-ending.d.ts +11 -0
- package/dist/tree-operations/paste/line-ending.js +32 -0
- package/dist/tree-operations/paste/list-absorb.d.ts +8 -11
- package/dist/tree-operations/paste/list-absorb.js +17 -19
- package/dist/tree-operations/paste/list-break-out.d.ts +12 -11
- package/dist/tree-operations/paste/list-break-out.js +24 -32
- package/dist/tree-operations/paste/parent-scope.d.ts +8 -12
- package/dist/tree-operations/paste/parent-scope.js +9 -16
- package/dist/tree-operations/paste/paste-deps.d.ts +14 -9
- package/dist/tree-operations/paste/paste-replacement.d.ts +20 -3
- package/dist/tree-operations/paste/paste-replacement.js +73 -42
- package/dist/tree-operations/paste/paste-transforms.d.ts +5 -7
- package/dist/tree-operations/paste/paste-transforms.js +18 -27
- package/dist/tree-operations/paste/replacement-parse.d.ts +19 -0
- package/dist/tree-operations/paste/replacement-parse.js +24 -0
- package/dist/tree-operations/paste/strategy.d.ts +1 -1
- package/dist/tree-operations/paste/strategy.js +1 -1
- package/dist/tree-operations/paste/table-slice.js +15 -10
- package/dist/tree-operations/paste-surfaces.d.ts +18 -29
- package/dist/tree-operations/paste-surfaces.js +14 -10
- package/dist/tree-operations/path-mutate.d.ts +7 -8
- package/dist/tree-operations/path-mutate.js +4 -4
- package/dist/tree-operations/reorder-unit.d.ts +4 -5
- package/dist/tree-operations/reorder-unit.js +5 -6
- package/dist/tree-operations/reorder.d.ts +7 -9
- package/dist/tree-operations/reorder.js +39 -40
- package/dist/tree-operations/settle.d.ts +42 -53
- package/dist/tree-operations/settle.js +241 -162
- package/dist/tree-operations/sharing.d.ts +5 -5
- package/dist/tree-operations/splice-many.d.ts +5 -5
- package/dist/tree-operations/splice-many.js +5 -5
- package/dist/tree-operations/stored-as.d.ts +13 -0
- package/dist/tree-operations/stored-as.js +48 -0
- package/dist/tree-operations/structural-change.d.ts +11 -15
- package/dist/tree-operations/structural-change.js +10 -14
- package/dist/tree-operations/structural-suffix.d.ts +22 -0
- package/dist/tree-operations/structural-suffix.js +61 -0
- package/dist/tree-operations/sub-table-copy.d.ts +7 -0
- package/dist/tree-operations/sub-table-copy.js +40 -36
- package/dist/tree-operations/table-grid-clipboard.d.ts +2 -7
- package/dist/tree-operations/table-grid-clipboard.js +11 -36
- package/dist/tree-operations/table-mutations.d.ts +7 -3
- package/dist/tree-operations/table-mutations.js +45 -9
- package/dist/tree-operations/unshare.d.ts +11 -15
- package/dist/tree-operations/unshare.js +15 -17
- package/dist/undo/manager.js +1 -1
- package/dist/undo/types.d.ts +2 -2
- package/docs/guide/consumer-guide.md +329 -205
- package/docs/guide/directives.md +7 -7
- package/docs/guide/plugin-api.md +267 -183
- package/docs/guide/plugin-guide.md +341 -235
- package/docs/guide/plugin-testing.md +96 -82
- package/package.json +17 -21
- package/dist/ambient/ambient-cursor.d.ts +0 -41
- package/dist/ambient/ambient-cursor.js +0 -120
- package/dist/components/blocks/code/code-paste.d.ts +0 -24
- package/dist/components/blocks/code/code-paste.js +0 -21
- package/dist/components/blocks/table/cell-clipboard.d.ts +0 -33
- package/dist/components/blocks/table/cell-clipboard.js +0 -67
- package/dist/components/blocks/text/hidden-suffix.d.ts +0 -10
- package/dist/components/blocks/text/hidden-suffix.js +0 -15
- package/dist/components/blocks/text/link-source-bytes.d.ts +0 -37
- package/dist/components/image/image-source-bytes.d.ts +0 -15
- package/dist/components/image/image-source-bytes.js +0 -80
- package/dist/cursor/content-offsets.d.ts +0 -29
- package/dist/cursor/content-offsets.js +0 -151
- package/dist/cursor/reveal-anchor.d.ts +0 -30
- package/dist/cursor/reveal-anchor.js +0 -31
- package/dist/invariants/split-landing.d.ts +0 -8
- package/dist/invariants/split-landing.js +0 -15
- package/dist/selection/double-click-trim.d.ts +0 -17
- package/dist/selection/double-click-trim.js +0 -57
- package/dist/tree-operations/list/terminator.d.ts +0 -17
- package/dist/tree-operations/list/terminator.js +0 -60
- package/dist/tree-operations/paste/replace-block-at-parent.d.ts +0 -29
- package/dist/tree-operations/paste/replace-block-at-parent.js +0 -75
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The live-mode split rewrite (live-mode.md § 4.4 close-and-reopen): Enter inside a construct
|
|
3
|
-
* closes it before the cut and reopens it after, so neither half strands a run the
|
|
4
|
-
* saw. Bytes stay candidates until the parser agrees; null leaves `splitNode`'s
|
|
3
|
+
* closes it before the cut and reopens it after, so neither half strands a run the user never
|
|
4
|
+
* saw. Bytes stay candidates until the parser agrees; null leaves `splitNode`'s literal cut.
|
|
5
5
|
*/
|
|
6
|
-
import type {
|
|
6
|
+
import type { Reading } from '../../../schema/reading';
|
|
7
7
|
import type { AnyInlineKind, InlineNode } from '../../../core/nodes';
|
|
8
8
|
import { type LiveSplitRebalancer } from '../../../schema/inline-construct-policy';
|
|
9
9
|
export declare const rebalanceLiveSplit: LiveSplitRebalancer;
|
|
@@ -13,7 +13,7 @@ interface SplitBytes {
|
|
|
13
13
|
raw: string;
|
|
14
14
|
contentStart: number;
|
|
15
15
|
contentEnd: number;
|
|
16
|
-
/** Where the second half's content begins in `raw
|
|
16
|
+
/** Where the second half's content begins in `raw`, past a line ending the cut consumed. */
|
|
17
17
|
cut: number;
|
|
18
18
|
firstResidue: string;
|
|
19
19
|
secondResidue: string;
|
|
@@ -25,19 +25,15 @@ export interface ChainLink {
|
|
|
25
25
|
contentStart: number;
|
|
26
26
|
contentEnd: number;
|
|
27
27
|
}
|
|
28
|
-
/**
|
|
29
|
-
*
|
|
30
|
-
* with no policy row, one whose split behavior is plain and one whose content bounds are unknown
|
|
31
|
-
* cannot be cut open, and cutting the constructs inside one would strand its pair. Exported for
|
|
32
|
-
* the depth pin, which has to reach it with a tree no split this deep could be rendered at.
|
|
33
|
-
*/
|
|
28
|
+
/** Every construct holding `offset`, outermost first, or null when one cannot be cut open, since
|
|
29
|
+
* cutting the constructs inside it would strand its pair. Exported for the depth test. */
|
|
34
30
|
export declare function splittableChainAt(inlines: readonly InlineNode[], offset: number): ChainLink[] | null;
|
|
35
31
|
interface SeamParts {
|
|
36
|
-
/** Bytes before the
|
|
32
|
+
/** Bytes before the cut, the block's own marker prefix included. */
|
|
37
33
|
head: string;
|
|
38
34
|
closers: string;
|
|
39
35
|
openers: string;
|
|
40
|
-
/** Bytes after the
|
|
36
|
+
/** Bytes after the cut, up to the block's content end. */
|
|
41
37
|
tail: string;
|
|
42
38
|
closed: AnyInlineKind[];
|
|
43
39
|
reopened: AnyInlineKind[];
|
|
@@ -52,5 +48,5 @@ interface RebalancedHalves {
|
|
|
52
48
|
* A candidate answers every question below or it is not written. Exported for the verification
|
|
53
49
|
* test, which has to reach it with a candidate no producer here would build.
|
|
54
50
|
*/
|
|
55
|
-
export declare function parsesBack(bytes: SplitBytes, seam: SeamParts, candidate: RebalancedHalves,
|
|
51
|
+
export declare function parsesBack(bytes: SplitBytes, seam: SeamParts, candidate: RebalancedHalves, reading: Reading): boolean;
|
|
56
52
|
export {};
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The live-mode split rewrite (live-mode.md § 4.4 close-and-reopen): Enter inside a construct
|
|
3
|
-
* closes it before the cut and reopens it after, so neither half strands a run the
|
|
4
|
-
* saw. Bytes stay candidates until the parser agrees; null leaves `splitNode`'s
|
|
3
|
+
* closes it before the cut and reopens it after, so neither half strands a run the user never
|
|
4
|
+
* saw. Bytes stay candidates until the parser agrees; null leaves `splitNode`'s literal cut.
|
|
5
5
|
*/
|
|
6
|
-
import { constructContentRange, constructKinds, getContentRange, inlineDescendants, isProseKind,
|
|
6
|
+
import { constructContentRange, constructKinds, getContentRange, inlineDescendants, isProseKind, readInline } from '../../../core/inline';
|
|
7
7
|
import { CONTENT_VISIBILITY, paintsOnlyChrome, renderedText } from '../../../core/inline/visibility';
|
|
8
|
+
import { isBlankText } from '../../../core/lines';
|
|
8
9
|
import { getInlineConstructPolicy } from '../../../schema/inline-construct-policy';
|
|
9
|
-
import {
|
|
10
|
+
import { readBlocks } from '../../../core/parser';
|
|
10
11
|
// ── The rewrite ──────────────────────────────────────────────────────────────
|
|
11
|
-
export const rebalanceLiveSplit = (node, offset, firstRaw, secondRaw,
|
|
12
|
+
export const rebalanceLiveSplit = (node, offset, firstRaw, secondRaw, reading) => {
|
|
12
13
|
const read = readSplitBytes(node, offset, firstRaw, secondRaw);
|
|
13
14
|
if (read === null)
|
|
14
15
|
return null;
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
//
|
|
18
|
-
|
|
19
|
-
if (paintsOnlyChrome(inlines, read.raw))
|
|
16
|
+
const inlines = readInline(read.raw, read.contentStart, read.contentEnd, reading.resolver, reading.grammar);
|
|
17
|
+
// Markers standing over nothing are all on screen (live-mode.md § 4.1), so closing and
|
|
18
|
+
// reopening them would move delimiters the user is looking at: the literal cut stands.
|
|
19
|
+
if (paintsOnlyChrome(inlines, read.raw, { grammar: reading.grammar }))
|
|
20
20
|
return null;
|
|
21
21
|
const moved = wholeConstructEdge(inlines, offset);
|
|
22
22
|
const at = moved ?? offset;
|
|
23
23
|
const bytes = moved === null ? read : { ...read, cut: moved };
|
|
24
24
|
const chain = splittableChainAt(inlines, at);
|
|
25
25
|
// An empty chain with the cut where the caller put it is a cut no construct touches, and the
|
|
26
|
-
//
|
|
26
|
+
// literal halves are already right; a cut that moved is a rewrite in its own right.
|
|
27
27
|
if (chain === null || (chain.length === 0 && moved === null))
|
|
28
28
|
return null;
|
|
29
29
|
const seam = seamParts(bytes, chain, at);
|
|
@@ -33,9 +33,9 @@ export const rebalanceLiveSplit = (node, offset, firstRaw, secondRaw, linkRef) =
|
|
|
33
33
|
assembleDroppingTerminalTrivia(bytes, seam)
|
|
34
34
|
];
|
|
35
35
|
for (const candidate of candidates) {
|
|
36
|
-
// The dropped bytes are the
|
|
37
|
-
// is the two halves, whatever the candidate had to
|
|
38
|
-
if (candidate !== null && parsesBack(bytes, seam, candidate,
|
|
36
|
+
// The dropped bytes are the check's business, not the caller's: what the caller gets back
|
|
37
|
+
// is the two halves, whatever the candidate had to declare to earn them.
|
|
38
|
+
if (candidate !== null && parsesBack(bytes, seam, candidate, reading)) {
|
|
39
39
|
return { firstRaw: candidate.firstRaw, secondRaw: candidate.secondRaw };
|
|
40
40
|
}
|
|
41
41
|
}
|
|
@@ -43,7 +43,7 @@ export const rebalanceLiveSplit = (node, offset, firstRaw, secondRaw, linkRef) =
|
|
|
43
43
|
};
|
|
44
44
|
/**
|
|
45
45
|
* Read the caller's two halves back against the original, so a cut this rewrite did not make (a
|
|
46
|
-
* container body-write rule, a suffix move, a consumed line ending)
|
|
46
|
+
* container body-write rule, a suffix move, a consumed line ending) shows up as a failed match.
|
|
47
47
|
*/
|
|
48
48
|
function readSplitBytes(node, offset, firstRaw, secondRaw) {
|
|
49
49
|
if (!isProseKind(node.kind))
|
|
@@ -69,12 +69,8 @@ function readSplitBytes(node, offset, firstRaw, secondRaw) {
|
|
|
69
69
|
}
|
|
70
70
|
return null;
|
|
71
71
|
}
|
|
72
|
-
/**
|
|
73
|
-
*
|
|
74
|
-
* halves of a URL are not two URLs, and half an escape is a literal backslash, so the whole
|
|
75
|
-
* construct goes to the half the caret was nearer (live-mode.md § 4.4). Null where the cut lands
|
|
76
|
-
* in no such construct. Innermost wins, as everywhere else.
|
|
77
|
-
*/
|
|
72
|
+
/** Where a cut inside a childless never-extend construct (a URL, an escape) moves to: the edge the
|
|
73
|
+
* caret was nearer, so the construct goes whole to one half (`docs/design/live-mode.md` § 4.4). */
|
|
78
74
|
function wholeConstructEdge(inlines, offset) {
|
|
79
75
|
let found = null;
|
|
80
76
|
for (const node of inlineDescendants(inlines)) {
|
|
@@ -86,12 +82,8 @@ function wholeConstructEdge(inlines, offset) {
|
|
|
86
82
|
}
|
|
87
83
|
return found;
|
|
88
84
|
}
|
|
89
|
-
/**
|
|
90
|
-
*
|
|
91
|
-
* with no policy row, one whose split behavior is plain and one whose content bounds are unknown
|
|
92
|
-
* cannot be cut open, and cutting the constructs inside one would strand its pair. Exported for
|
|
93
|
-
* the depth pin, which has to reach it with a tree no split this deep could be rendered at.
|
|
94
|
-
*/
|
|
85
|
+
/** Every construct holding `offset`, outermost first, or null when one cannot be cut open, since
|
|
86
|
+
* cutting the constructs inside it would strand its pair. Exported for the depth test. */
|
|
95
87
|
export function splittableChainAt(inlines, offset) {
|
|
96
88
|
const chain = [];
|
|
97
89
|
const holds = (node) => holdsOffset(node, offset);
|
|
@@ -113,11 +105,8 @@ export function splittableChainAt(inlines, offset) {
|
|
|
113
105
|
}
|
|
114
106
|
return chain;
|
|
115
107
|
}
|
|
116
|
-
/**
|
|
117
|
-
*
|
|
118
|
-
* its edges reach the chain (the handover cases); a childless one is strict-interior, its edges
|
|
119
|
-
* being ordinary seams. Text is content, and nothing under it is a construct either.
|
|
120
|
-
*/
|
|
108
|
+
/** Whether a cut at `offset` lands in this construct: one with children includes its content
|
|
109
|
+
* bounds; one without counts only its strict interior, since its edges are ordinary cut points. */
|
|
121
110
|
function holdsOffset(node, offset) {
|
|
122
111
|
if (node.kind === 'text')
|
|
123
112
|
return false;
|
|
@@ -126,11 +115,8 @@ function holdsOffset(node, offset) {
|
|
|
126
115
|
? offset >= content.start && offset <= content.end
|
|
127
116
|
: offset > node.start && offset < node.end;
|
|
128
117
|
}
|
|
129
|
-
/**
|
|
130
|
-
*
|
|
131
|
-
* did. A side with no content takes the whole construct: a pair enclosing nothing is residue live
|
|
132
|
-
* may never write.
|
|
133
|
-
*/
|
|
118
|
+
/** Innermost first, so the halves nest as the original did. A side with no content takes the whole
|
|
119
|
+
* construct, since live mode never writes a pair enclosing nothing. */
|
|
134
120
|
function seamParts(bytes, chain, offset) {
|
|
135
121
|
let leftEnd = offset;
|
|
136
122
|
let rightStart = bytes.cut;
|
|
@@ -165,11 +151,8 @@ const assemble = (bytes, seam) => ({
|
|
|
165
151
|
firstRaw: seam.head + seam.closers + bytes.firstResidue,
|
|
166
152
|
secondRaw: seam.openers + seam.tail + bytes.secondResidue
|
|
167
153
|
});
|
|
168
|
-
/**
|
|
169
|
-
*
|
|
170
|
-
* closes a run against a word, never whitespace, so a space left inside kills the construct; a
|
|
171
|
-
* space's formatting is invisible, so moving it is the reading that parses and looks unchanged.
|
|
172
|
-
*/
|
|
154
|
+
/** The same cut with a boundary space handed to the plain text beside it: a run cannot open or close
|
|
155
|
+
* against whitespace, and a space's formatting is invisible anyway. */
|
|
173
156
|
function assembleSpaceOutside(bytes, seam) {
|
|
174
157
|
const trailing = seam.closers !== '' && seam.head.endsWith(' ');
|
|
175
158
|
const leading = seam.openers !== '' && seam.tail.startsWith(' ');
|
|
@@ -182,13 +165,10 @@ function assembleSpaceOutside(bytes, seam) {
|
|
|
182
165
|
bytes.secondResidue
|
|
183
166
|
};
|
|
184
167
|
}
|
|
185
|
-
/**
|
|
186
|
-
*
|
|
187
|
-
* TERMINAL whitespace is a hard break with no following line, so it paints nothing, and
|
|
188
|
-
* live-mode.md § 4.5 licenses live to drop what it never showed.
|
|
189
|
-
*/
|
|
168
|
+
/** The cut with a whitespace-only tail dropped: trailing whitespace draws nothing, and live mode
|
|
169
|
+
* may drop what it never showed (`docs/design/live-mode.md` § 4.5). */
|
|
190
170
|
function assembleDroppingTerminalTrivia(bytes, seam) {
|
|
191
|
-
if (seam.openers !== '' || seam.tail === '' || seam.tail
|
|
171
|
+
if (seam.openers !== '' || seam.tail === '' || !isBlankText(seam.tail))
|
|
192
172
|
return null;
|
|
193
173
|
return {
|
|
194
174
|
firstRaw: seam.head + seam.closers + bytes.firstResidue,
|
|
@@ -200,40 +180,43 @@ function assembleDroppingTerminalTrivia(bytes, seam) {
|
|
|
200
180
|
* A candidate answers every question below or it is not written. Exported for the verification
|
|
201
181
|
* test, which has to reach it with a candidate no producer here would build.
|
|
202
182
|
*/
|
|
203
|
-
export function parsesBack(bytes, seam, candidate,
|
|
204
|
-
const first = soleProseBlock(candidate.firstRaw,
|
|
205
|
-
const second = soleProseBlock(candidate.secondRaw,
|
|
183
|
+
export function parsesBack(bytes, seam, candidate, reading) {
|
|
184
|
+
const first = soleProseBlock(candidate.firstRaw, reading);
|
|
185
|
+
const second = soleProseBlock(candidate.secondRaw, reading);
|
|
206
186
|
if (first === null || second === null)
|
|
207
187
|
return false;
|
|
208
|
-
// Each half must be a block
|
|
209
|
-
// document reads those bytes as blank
|
|
210
|
-
if (
|
|
188
|
+
// Each half must be a block a reparse keeps. Empty is one; whitespace-only is not, since the
|
|
189
|
+
// document reads those bytes as a blank line and the pair comes back a different shape.
|
|
190
|
+
if (readsAsBlankLine(first.visible) || readsAsBlankLine(second.visible))
|
|
211
191
|
return false;
|
|
212
192
|
if (!seam.closed.every((kind) => first.kinds.has(kind)))
|
|
213
193
|
return false;
|
|
214
194
|
if (!seam.reopened.every((kind) => second.kinds.has(kind)))
|
|
215
195
|
return false;
|
|
216
|
-
// The render
|
|
217
|
-
// the "screen never showed it" rule is
|
|
218
|
-
if (candidate.droppedTail !== undefined && candidate.droppedTail
|
|
196
|
+
// The render check below counts characters while CSS collapses a trailing run to nothing, so
|
|
197
|
+
// the "the screen never showed it" rule is tested here rather than taken on trust.
|
|
198
|
+
if (candidate.droppedTail !== undefined && !isBlankText(candidate.droppedTail))
|
|
219
199
|
return false;
|
|
220
|
-
const whole = renderedText(
|
|
200
|
+
const whole = renderedText(readInline(bytes.raw, bytes.contentStart, bytes.contentEnd, reading.resolver, reading.grammar), bytes.raw, CONTENT_VISIBILITY, { grammar: reading.grammar });
|
|
221
201
|
if (!whole.startsWith(first.visible))
|
|
222
202
|
return false;
|
|
223
|
-
//
|
|
224
|
-
//
|
|
225
|
-
// inferring them.
|
|
203
|
+
// A split may consume only the line ending the cut landed on and a dropped tail, which the
|
|
204
|
+
// candidate names rather than the check inferring it.
|
|
226
205
|
const rest = whole.slice(first.visible.length);
|
|
227
206
|
const tail = second.visible + (candidate.droppedTail ?? '');
|
|
228
207
|
return rest === tail || rest === '\n' + tail || rest === '\r\n' + tail;
|
|
229
208
|
}
|
|
230
|
-
const
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
209
|
+
const readsAsBlankLine = (visible) => visible !== '' && isBlankText(visible);
|
|
210
|
+
/** A half read as a top-level fragment: exactly one prose block, or null. */
|
|
211
|
+
function soleProseBlock(raw, reading) {
|
|
212
|
+
const blocks = readBlocks(raw, { grammar: reading.grammar, scope: 'fragment' }).children;
|
|
213
|
+
if (blocks.length !== 1 || !isProseKind(blocks[0].kind))
|
|
234
214
|
return null;
|
|
215
|
+
const block = blocks[0];
|
|
216
|
+
const range = getContentRange(block);
|
|
217
|
+
const nodes = readInline(block.raw, range.start, range.end, reading.resolver, reading.grammar);
|
|
235
218
|
return {
|
|
236
|
-
visible: renderedText(
|
|
237
|
-
kinds: constructKinds(
|
|
219
|
+
visible: renderedText(nodes, block.raw, CONTENT_VISIBILITY, { grammar: reading.grammar }),
|
|
220
|
+
kinds: constructKinds(nodes)
|
|
238
221
|
};
|
|
239
222
|
}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The space that finishes a container's marker.
|
|
3
|
-
* (`>`)
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* The space that finishes a container's marker. The parser creates the container on the bare
|
|
3
|
+
* marker byte (`>`), before the space arrives, so that space belongs to the marker and not to
|
|
4
|
+
* the child the caret landed in. The container declares this with `contentStartSpace`; nothing
|
|
5
|
+
* here is keyed on a kind name.
|
|
6
6
|
*/
|
|
7
7
|
import type { NodeView } from '../../../core/node-views';
|
|
8
8
|
export interface MarkerCompletion {
|
|
9
|
-
/**
|
|
10
|
-
*
|
|
11
|
-
|
|
12
|
-
* its own depth — or null at the document root. One claim per child: a claimed space writes
|
|
13
|
-
* nothing, so only this memory tells press 2 from press 1, and press 2 is the only way to
|
|
14
|
-
* type a leading space inside an empty quoted line.
|
|
15
|
-
*/
|
|
16
|
-
claimSpace(node: NodeView, parent: NodeView | null, caretOffset: number): boolean;
|
|
9
|
+
/** Take a bare space at `caretOffset` for the nearest container's marker (`parent`, null at the
|
|
10
|
+
* root), once per child: a second space there is content, the only way to type a leading one. */
|
|
11
|
+
claimSpace(node: NodeView, parent: NodeView | null, index: number, caretOffset: number): boolean;
|
|
17
12
|
}
|
|
18
13
|
export declare function createMarkerCompletion(): MarkerCompletion;
|
|
@@ -1,25 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The space that finishes a container's marker.
|
|
3
|
-
* (`>`)
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* The space that finishes a container's marker. The parser creates the container on the bare
|
|
3
|
+
* marker byte (`>`), before the space arrives, so that space belongs to the marker and not to
|
|
4
|
+
* the child the caret landed in. The container declares this with `contentStartSpace`; nothing
|
|
5
|
+
* here is keyed on a kind name.
|
|
6
6
|
*/
|
|
7
7
|
import { displayLength } from '../../../core/lines';
|
|
8
8
|
import { isProseKind } from '../../../core/inline';
|
|
9
9
|
import { tryGetBlockKindDescriptor } from '../../../schema/block-kind-descriptor';
|
|
10
|
+
import { rawOffsetOfLeaf } from '../../../tree-operations/container-offsets';
|
|
10
11
|
export function createMarkerCompletion() {
|
|
11
|
-
// The node, not a bare flag:
|
|
12
|
-
// by a commit's copy-
|
|
12
|
+
// The node, not a bare flag: an element reused for another child, or the same child recreated
|
|
13
|
+
// by a commit's copy-before-write, needs a fresh completion.
|
|
13
14
|
let claimedFor = null;
|
|
14
15
|
return {
|
|
15
|
-
claimSpace(node, parent, caretOffset) {
|
|
16
|
-
if (caretOffset !== 0 || !parent)
|
|
17
|
-
return false;
|
|
18
|
-
if (!isProseKind(node.kind) || displayLength(node.raw) !== 0)
|
|
16
|
+
claimSpace(node, parent, index, caretOffset) {
|
|
17
|
+
if (caretOffset !== 0 || !parent || !isProseKind(node.kind))
|
|
19
18
|
return false;
|
|
20
19
|
if (tryGetBlockKindDescriptor(parent.kind)?.contentStartSpace !== 'complete-marker') {
|
|
21
20
|
return false;
|
|
22
21
|
}
|
|
22
|
+
if (displayLength(node.raw) !== 0 && !followsBareMarker(parent, index))
|
|
23
|
+
return false;
|
|
23
24
|
if (claimedFor === node)
|
|
24
25
|
return false;
|
|
25
26
|
claimedFor = node;
|
|
@@ -27,3 +28,9 @@ export function createMarkerCompletion() {
|
|
|
27
28
|
}
|
|
28
29
|
};
|
|
29
30
|
}
|
|
31
|
+
/** Whether the child's text starts straight after its container's marker, with no space between
|
|
32
|
+
* (`>abc`): the marker still lacks the space, so a space typed there completes it. */
|
|
33
|
+
function followsBareMarker(parent, index) {
|
|
34
|
+
const at = rawOffsetOfLeaf(parent, [index], 0);
|
|
35
|
+
return at !== null && at > 0 && !/\s/.test(parent.raw[at - 1]);
|
|
36
|
+
}
|
|
@@ -1,23 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The bytes an insertion produces while marks are pending. A mark resolves against the caret's
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* (`**hello**X** world**` renders literal stars), so every candidate is
|
|
3
|
+
* chain of enclosing constructs (live-mode.md § 4.3): a kind the chain lacks wraps the insertion,
|
|
4
|
+
* a kind it already has escapes it. Flanking rules mean a splice that reads right can parse wrong
|
|
5
|
+
* (`**hello**X** world**` renders literal stars), so every candidate is reparsed and checked.
|
|
6
6
|
*/
|
|
7
7
|
import type { AnyInlineKind, InlineNode } from '../../../core/nodes';
|
|
8
8
|
import { type InlineMarkKind } from '../../../schema/inline-construct-policy';
|
|
9
|
+
import type { Reading } from '../../../schema/reading';
|
|
9
10
|
export interface MarkedInsertion {
|
|
10
|
-
/** The block's whole
|
|
11
|
+
/** The block's whole displayed text after the insertion. */
|
|
11
12
|
raw: string;
|
|
12
|
-
/** Where the caret lands
|
|
13
|
+
/** Where the caret lands: after the inserted text, inside whatever now wraps it. */
|
|
13
14
|
caret: number;
|
|
14
15
|
}
|
|
15
|
-
/**
|
|
16
|
-
*
|
|
17
|
-
|
|
18
|
-
* combination at every caret, and a byte that types plain beats one that shows delimiters.
|
|
19
|
-
*/
|
|
20
|
-
export declare function resolveMarkedInsertion(display: string, caretOffset: number, text: string, marks: ReadonlySet<InlineMarkKind>, inlines: readonly InlineNode[]): MarkedInsertion | null;
|
|
16
|
+
/** The insertion `text` at `caretOffset` makes under `marks`, or null when no candidate parses back
|
|
17
|
+
* as asked. `reading` must be the one `inlines` was read with. */
|
|
18
|
+
export declare function resolveMarkedInsertion(display: string, caretOffset: number, text: string, marks: ReadonlySet<InlineMarkKind>, inlines: readonly InlineNode[], reading: Reading): MarkedInsertion | null;
|
|
21
19
|
export interface ChainNode {
|
|
22
20
|
kind: AnyInlineKind;
|
|
23
21
|
/** The mark a chord can toggle, or null for a construct no chord addresses. */
|
|
@@ -27,11 +25,6 @@ export interface ChainNode {
|
|
|
27
25
|
contentStart: number;
|
|
28
26
|
contentEnd: number;
|
|
29
27
|
}
|
|
30
|
-
/**
|
|
31
|
-
*
|
|
32
|
-
* `intended`, which is what lets a candidate destroy it unnoticed. A construct with children is
|
|
33
|
-
* content-INCLUSIVE, a childless one STRICT-interior, its edges being ordinary insertion points.
|
|
34
|
-
* Exported for the depth pin, which has to reach it with a tree no insertion this deep could be
|
|
35
|
-
* rendered at.
|
|
36
|
-
*/
|
|
28
|
+
/** Every construct holding `offset`, outermost first; one missing here could be destroyed unnoticed.
|
|
29
|
+
* Exported for the depth test. */
|
|
37
30
|
export declare function constructChainAt(offset: number, inlines: readonly InlineNode[]): ChainNode[];
|
|
@@ -1,19 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The bytes an insertion produces while marks are pending. A mark resolves against the caret's
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* (`**hello**X** world**` renders literal stars), so every candidate is
|
|
3
|
+
* chain of enclosing constructs (live-mode.md § 4.3): a kind the chain lacks wraps the insertion,
|
|
4
|
+
* a kind it already has escapes it. Flanking rules mean a splice that reads right can parse wrong
|
|
5
|
+
* (`**hello**X** world**` renders literal stars), so every candidate is reparsed and checked.
|
|
6
6
|
*/
|
|
7
|
-
import { constructContentRange, constructKinds, inlineDescendants,
|
|
7
|
+
import { constructContentRange, constructKinds, inlineDescendants, readInline } from '../../../core/inline';
|
|
8
8
|
import { CONTENT_VISIBILITY, renderedText } from '../../../core/inline/visibility';
|
|
9
9
|
import { getInlineConstructPolicy, getInlineMarkPolicy, listInlineMarks } from '../../../schema/inline-construct-policy';
|
|
10
10
|
import { insertsExactly } from './screen-diff';
|
|
11
|
-
/**
|
|
12
|
-
*
|
|
13
|
-
|
|
14
|
-
* combination at every caret, and a byte that types plain beats one that shows delimiters.
|
|
15
|
-
*/
|
|
16
|
-
export function resolveMarkedInsertion(display, caretOffset, text, marks, inlines) {
|
|
11
|
+
/** The insertion `text` at `caretOffset` makes under `marks`, or null when no candidate parses back
|
|
12
|
+
* as asked. `reading` must be the one `inlines` was read with. */
|
|
13
|
+
export function resolveMarkedInsertion(display, caretOffset, text, marks, inlines, reading) {
|
|
17
14
|
if (marks.size === 0 || text.length === 0)
|
|
18
15
|
return null;
|
|
19
16
|
const chain = constructChainAt(caretOffset, inlines);
|
|
@@ -22,16 +19,15 @@ export function resolveMarkedInsertion(display, caretOffset, text, marks, inline
|
|
|
22
19
|
.map((entry) => entry.kind)
|
|
23
20
|
.filter((kind) => marks.has(kind) && !chain.some((node) => node.mark === kind));
|
|
24
21
|
const removedKinds = new Set(removed.map((node) => node.kind));
|
|
25
|
-
//
|
|
26
|
-
//
|
|
27
|
-
// that is what stops an escape from carrying the byte out of a link it was inside.
|
|
22
|
+
// Ancestors with no mark stay in the intended chain, which stops an escape from carrying the
|
|
23
|
+
// byte out of a link it was inside.
|
|
28
24
|
const intended = new Set([
|
|
29
25
|
...chain.map((node) => node.kind).filter((kind) => !removedKinds.has(kind)),
|
|
30
26
|
...applied
|
|
31
27
|
]);
|
|
32
|
-
const before = { visible: visibleText(display), kinds: constructKinds(inlines) };
|
|
28
|
+
const before = { visible: visibleText(display, reading), kinds: constructKinds(inlines) };
|
|
33
29
|
for (const candidate of candidateInsertions(display, caretOffset, text, chain, removed, intended)) {
|
|
34
|
-
if (parsesAsIntended(candidate, text, intended, before)) {
|
|
30
|
+
if (parsesAsIntended(candidate, text, intended, before, reading)) {
|
|
35
31
|
return { raw: candidate.raw, caret: candidate.textAt + text.length };
|
|
36
32
|
}
|
|
37
33
|
}
|
|
@@ -52,9 +48,8 @@ function* candidateInsertions(display, caretOffset, text, chain, removed, intend
|
|
|
52
48
|
const escaped = chain.slice(depth);
|
|
53
49
|
const outside = chain.slice(0, depth);
|
|
54
50
|
const payload = marksToWrite(intended, outside);
|
|
55
|
-
// A link or
|
|
56
|
-
// closer
|
|
57
|
-
// literal bytes into content. Only stepping outside is available there.
|
|
51
|
+
// A link or widget between the caret and the escaped construct cannot be cut open, since its
|
|
52
|
+
// closer does not mirror its opener, so only stepping outside is tried.
|
|
58
53
|
if (escaped.every((node) => isSymmetricPair(node.kind))) {
|
|
59
54
|
yield splitOpen(display, caretOffset, text, escaped, payload);
|
|
60
55
|
}
|
|
@@ -63,9 +58,8 @@ function* candidateInsertions(display, caretOffset, text, chain, removed, intend
|
|
|
63
58
|
for (const at of sides)
|
|
64
59
|
yield spliceWrapped(display, at, text, payload);
|
|
65
60
|
}
|
|
66
|
-
/** The marks the insertion must
|
|
67
|
-
* already provide, outermost first.
|
|
68
|
-
* marker up and miss. */
|
|
61
|
+
/** The marks the insertion must write for itself: the intended ones its surroundings do not
|
|
62
|
+
* already provide, outermost first. */
|
|
69
63
|
function marksToWrite(intended, provided) {
|
|
70
64
|
return listInlineMarks().filter(({ kind }) => intended.has(kind) && !provided.some((node) => node.kind === kind));
|
|
71
65
|
}
|
|
@@ -80,9 +74,8 @@ function spliceWrapped(display, at, text, payload) {
|
|
|
80
74
|
textAt: at + openers.length
|
|
81
75
|
};
|
|
82
76
|
}
|
|
83
|
-
/** Close every escaped construct before the insertion and reopen it after
|
|
84
|
-
*
|
|
85
|
-
* invisible `****` residue live mode must never mint, so that side steps outside the run. */
|
|
77
|
+
/** Close every escaped construct before the insertion and reopen it after. A side left empty
|
|
78
|
+
* steps outside the run instead, since live mode never writes a pair around nothing. */
|
|
86
79
|
function splitOpen(display, caretOffset, text, escaped, payload) {
|
|
87
80
|
let leftEnd = caretOffset;
|
|
88
81
|
let rightStart = caretOffset;
|
|
@@ -104,14 +97,10 @@ function splitOpen(display, caretOffset, text, escaped, payload) {
|
|
|
104
97
|
textAt: leftEnd + closers.length + inner.textAt
|
|
105
98
|
};
|
|
106
99
|
}
|
|
107
|
-
/**
|
|
108
|
-
*
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
* the loser is a construct nobody asked to spend. And is the rewrite invisible otherwise?
|
|
112
|
-
*/
|
|
113
|
-
function parsesAsIntended(candidate, text, intended, before) {
|
|
114
|
-
const nodes = parseInline(candidate.raw, 0, candidate.raw.length);
|
|
100
|
+
/** A candidate is written only if exactly the intended constructs enclose the inserted text, every
|
|
101
|
+
* construct the block held survives (a shared run can rebind), and nothing else shows a change. */
|
|
102
|
+
function parsesAsIntended(candidate, text, intended, before, reading) {
|
|
103
|
+
const nodes = readInline(candidate.raw, 0, candidate.raw.length, reading.resolver, reading.grammar);
|
|
115
104
|
const around = enclosingKinds(nodes, candidate.textAt, candidate.textAt + text.length);
|
|
116
105
|
if (around.size !== intended.size)
|
|
117
106
|
return false;
|
|
@@ -122,7 +111,7 @@ function parsesAsIntended(candidate, text, intended, before) {
|
|
|
122
111
|
for (const kind of before.kinds)
|
|
123
112
|
if (!after.has(kind))
|
|
124
113
|
return false;
|
|
125
|
-
return insertsExactly(before.visible, visibleText(candidate.raw, nodes), text);
|
|
114
|
+
return insertsExactly(before.visible, visibleText(candidate.raw, reading, nodes), text);
|
|
126
115
|
}
|
|
127
116
|
/** The construct kinds covering `[start, end)`; `text` is content, not a construct. */
|
|
128
117
|
function enclosingKinds(nodes, start, end) {
|
|
@@ -134,13 +123,10 @@ function enclosingKinds(nodes, start, end) {
|
|
|
134
123
|
}
|
|
135
124
|
return kinds;
|
|
136
125
|
}
|
|
137
|
-
/** What
|
|
138
|
-
*
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
* it licenses dropping one the reader saw. */
|
|
142
|
-
function visibleText(raw, parsed) {
|
|
143
|
-
return renderedText(parsed ?? parseInline(raw, 0, raw.length), raw, CONTENT_VISIBILITY);
|
|
126
|
+
/** What the user sees, asked of the render (G4.33). The content reading rather than the block's
|
|
127
|
+
* own: the first byte typed into an empty construct hides its markers, which is not a loss. */
|
|
128
|
+
function visibleText(raw, reading, parsed) {
|
|
129
|
+
return renderedText(parsed ?? readInline(raw, 0, raw.length, reading.resolver, reading.grammar), raw, CONTENT_VISIBILITY, { grammar: reading.grammar });
|
|
144
130
|
}
|
|
145
131
|
/** Read off the kind's row rather than a second list, so a new format joins in one place. */
|
|
146
132
|
function markOf(kind) {
|
|
@@ -151,13 +137,8 @@ function markOf(kind) {
|
|
|
151
137
|
function isSymmetricPair(kind) {
|
|
152
138
|
return getInlineConstructPolicy(kind)?.edgeAffinity === 'symmetric-pair';
|
|
153
139
|
}
|
|
154
|
-
/**
|
|
155
|
-
*
|
|
156
|
-
* `intended`, which is what lets a candidate destroy it unnoticed. A construct with children is
|
|
157
|
-
* content-INCLUSIVE, a childless one STRICT-interior, its edges being ordinary insertion points.
|
|
158
|
-
* Exported for the depth pin, which has to reach it with a tree no insertion this deep could be
|
|
159
|
-
* rendered at.
|
|
160
|
-
*/
|
|
140
|
+
/** Every construct holding `offset`, outermost first; one missing here could be destroyed unnoticed.
|
|
141
|
+
* Exported for the depth test. */
|
|
161
142
|
export function constructChainAt(offset, inlines) {
|
|
162
143
|
const holds = (node) => holdsOffset(node, offset);
|
|
163
144
|
const chain = [];
|
|
@@ -176,8 +157,8 @@ export function constructChainAt(offset, inlines) {
|
|
|
176
157
|
}
|
|
177
158
|
return chain;
|
|
178
159
|
}
|
|
179
|
-
/** Whether `offset` sits inside this construct, on the reading
|
|
180
|
-
* content, and nothing under it is a construct either. */
|
|
160
|
+
/** Whether `offset` sits inside this construct, on the reading `constructChainAt` describes. Text
|
|
161
|
+
* is content, and nothing under it is a construct either. */
|
|
181
162
|
function holdsOffset(node, offset) {
|
|
182
163
|
if (node.kind === 'text')
|
|
183
164
|
return false;
|
|
@@ -1,20 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* What a live rewrite
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* carrying its own walk.
|
|
2
|
+
* What a live rewrite says it did to the screen, as two checks over the text before and after
|
|
3
|
+
* (live-mode.md § 2). Shared, so every caller asks the same questions of the same shapes instead
|
|
4
|
+
* of writing its own traversal.
|
|
6
5
|
*/
|
|
7
|
-
import type { LinkReferenceResolver } from '../../../core/inline/link-reference-resolver';
|
|
8
|
-
import type { CstNode, InlineNode } from '../../../core/nodes';
|
|
9
6
|
/** Whether `after` is `before` with `text` spliced in at one place and nothing else moved. */
|
|
10
7
|
export declare function insertsExactly(before: string, after: string, text: string): boolean;
|
|
11
|
-
/** Whether `after` is `before` with exactly `removed` gone from one place
|
|
12
|
-
*
|
|
8
|
+
/** Whether `after` is `before` with exactly `removed` gone from one place: everything a cut
|
|
9
|
+
* promises the user, asked of the bytes the parser produced rather than the ones it was given. */
|
|
13
10
|
export declare function removesExactly(before: string, after: string, removed: string): boolean;
|
|
14
|
-
/** A candidate's admission gate: its bytes reload as exactly ONE prose block, whose inline tree the
|
|
15
|
-
* caller then reads its own oracle over. Null declines — a reload that splits or re-kinds the
|
|
16
|
-
* block is not what the caller is about to install. */
|
|
17
|
-
export declare function soleProseReparse(raw: string, resolver?: LinkReferenceResolver): {
|
|
18
|
-
block: CstNode;
|
|
19
|
-
nodes: InlineNode[];
|
|
20
|
-
} | null;
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* What a live rewrite
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* carrying its own walk.
|
|
2
|
+
* What a live rewrite says it did to the screen, as two checks over the text before and after
|
|
3
|
+
* (live-mode.md § 2). Shared, so every caller asks the same questions of the same shapes instead
|
|
4
|
+
* of writing its own traversal.
|
|
6
5
|
*/
|
|
7
|
-
import { getContentRange, isProseKind, parseInline } from '../../../core/inline';
|
|
8
|
-
import { parse } from '../../../core/parser';
|
|
9
6
|
/** Whether `after` is `before` with `text` spliced in at one place and nothing else moved. */
|
|
10
7
|
export function insertsExactly(before, after, text) {
|
|
11
8
|
if (after.length !== before.length + text.length)
|
|
@@ -15,8 +12,8 @@ export function insertsExactly(before, after, text) {
|
|
|
15
12
|
at++;
|
|
16
13
|
return (after.slice(at, at + text.length) === text && after.slice(at + text.length) === before.slice(at));
|
|
17
14
|
}
|
|
18
|
-
/** Whether `after` is `before` with exactly `removed` gone from one place
|
|
19
|
-
*
|
|
15
|
+
/** Whether `after` is `before` with exactly `removed` gone from one place: everything a cut
|
|
16
|
+
* promises the user, asked of the bytes the parser produced rather than the ones it was given. */
|
|
20
17
|
export function removesExactly(before, after, removed) {
|
|
21
18
|
if (after.length !== before.length - removed.length)
|
|
22
19
|
return false;
|
|
@@ -26,14 +23,3 @@ export function removesExactly(before, after, removed) {
|
|
|
26
23
|
return (before.slice(at, at + removed.length) === removed &&
|
|
27
24
|
after.slice(at) === before.slice(at + removed.length));
|
|
28
25
|
}
|
|
29
|
-
/** A candidate's admission gate: its bytes reload as exactly ONE prose block, whose inline tree the
|
|
30
|
-
* caller then reads its own oracle over. Null declines — a reload that splits or re-kinds the
|
|
31
|
-
* block is not what the caller is about to install. */
|
|
32
|
-
export function soleProseReparse(raw, resolver) {
|
|
33
|
-
const blocks = parse(raw, { scope: 'fragment' }).children;
|
|
34
|
-
if (blocks.length !== 1 || !isProseKind(blocks[0].kind))
|
|
35
|
-
return null;
|
|
36
|
-
const block = blocks[0];
|
|
37
|
-
const range = getContentRange(block);
|
|
38
|
-
return { block, nodes: parseInline(block.raw, range.start, range.end, resolver) };
|
|
39
|
-
}
|