@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,7 +1,8 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
// The marker
|
|
3
|
-
// body edits like ordinary prose
|
|
4
|
-
//
|
|
2
|
+
// The `[^label]: ` marker is drawn in front of the first child instead of being part of its
|
|
3
|
+
// text, the way a list item's `- ` is, so the body edits like ordinary prose and the marker
|
|
4
|
+
// stays read-only. Clicking the marker, or Enter on it in reading mode, jumps back to the first
|
|
5
|
+
// reference.
|
|
5
6
|
import {
|
|
6
7
|
BlockList,
|
|
7
8
|
createContainerBlock,
|
|
@@ -12,6 +13,7 @@
|
|
|
12
13
|
type NodeView
|
|
13
14
|
} from '../../plugin';
|
|
14
15
|
import type { FootnoteDefMetadata } from './footnote-definition';
|
|
16
|
+
import { backToReferenceLabel } from './constants';
|
|
15
17
|
import { collectFootnoteReferences } from './footnote-numbering';
|
|
16
18
|
|
|
17
19
|
let {
|
|
@@ -31,10 +33,10 @@
|
|
|
31
33
|
let boxEl: HTMLElement | undefined = $state();
|
|
32
34
|
|
|
33
35
|
const label = $derived(getPluginMetadata<FootnoteDefMetadata>(node)?.label ?? '');
|
|
34
|
-
//
|
|
36
|
+
// Only `[^label]` is clickable; the colon and space after it are syntax nobody aims at.
|
|
35
37
|
const marker = $derived(`[^${label}]`);
|
|
36
38
|
|
|
37
|
-
const { blockListProps, containerApi, getPresentationMode } = createContainerBlock({
|
|
39
|
+
const { blockListProps, containerApi, getPresentationMode, getEditor } = createContainerBlock({
|
|
38
40
|
getNode: () => node,
|
|
39
41
|
getIndex: () => index,
|
|
40
42
|
getPath: () => myPath,
|
|
@@ -46,28 +48,39 @@
|
|
|
46
48
|
start: 0,
|
|
47
49
|
end: marker.length,
|
|
48
50
|
className: 'footnote-def-marker',
|
|
49
|
-
|
|
51
|
+
role: 'link',
|
|
52
|
+
label: backToReferenceLabel(label),
|
|
53
|
+
// A tab stop only where the block holds no caret for it to interrupt.
|
|
54
|
+
focusable: getPresentationMode() === 'reading',
|
|
55
|
+
onClick: onMarkerClick,
|
|
56
|
+
onActivate: jumpToFirstReference
|
|
50
57
|
}
|
|
51
58
|
]
|
|
52
59
|
})
|
|
53
60
|
});
|
|
54
61
|
|
|
55
|
-
|
|
56
|
-
// so a captured path would be the walk's answer from whenever that was.
|
|
57
|
-
function jumpToFirstReference(e: MouseEvent): void {
|
|
62
|
+
function onMarkerClick(e: MouseEvent): void {
|
|
58
63
|
if (!isWidgetActivationClick(e.ctrlKey || e.metaKey, getPresentationMode())) return;
|
|
59
|
-
// Skips the
|
|
60
|
-
//
|
|
64
|
+
// Skips the block's caret handling and the editor's root click handler on purpose:
|
|
65
|
+
// jumping is the only thing this click does.
|
|
61
66
|
e.preventDefault();
|
|
62
67
|
e.stopPropagation();
|
|
68
|
+
jumpToFirstReference();
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Looked up on each jump, never derived: the span's listeners are bound once when the span is
|
|
72
|
+
// built, so a path captured then would be the answer from whenever that was.
|
|
73
|
+
function jumpToFirstReference(): void {
|
|
63
74
|
if (!document) return;
|
|
64
75
|
// GFM numbers by first-reference order, so the first reference is the one this
|
|
65
|
-
// definition's number
|
|
66
|
-
const first = collectFootnoteReferences(document).find(
|
|
76
|
+
// definition's number comes from.
|
|
77
|
+
const first = collectFootnoteReferences(document, getEditor()?.computeInlineContent).find(
|
|
78
|
+
(ref) => ref.label === label
|
|
79
|
+
);
|
|
67
80
|
if (first) void rects?.navigateTo(first.path, first.end);
|
|
68
81
|
}
|
|
69
82
|
|
|
70
|
-
//
|
|
83
|
+
// True where a plain click already jumps, so the pointer shape matches what a click does.
|
|
71
84
|
const plainClickJumps = $derived(isWidgetActivationClick(false, getPresentationMode()));
|
|
72
85
|
|
|
73
86
|
export { containerApi };
|
|
@@ -83,7 +96,8 @@
|
|
|
83
96
|
</div>
|
|
84
97
|
|
|
85
98
|
<style>
|
|
86
|
-
/* A
|
|
99
|
+
/* A line down the left margin, not a card: the marker itself is drawn in front of the
|
|
100
|
+
first child. */
|
|
87
101
|
.footnote-def {
|
|
88
102
|
position: relative;
|
|
89
103
|
margin: 0.4em 0;
|
|
@@ -92,12 +106,15 @@
|
|
|
92
106
|
font-size: 0.95em;
|
|
93
107
|
}
|
|
94
108
|
|
|
95
|
-
/* The marker span is built into the child
|
|
109
|
+
/* The marker span is built into the child block's DOM, outside this component's styles. */
|
|
96
110
|
.footnote-def :global(.footnote-def-marker:hover) {
|
|
97
111
|
text-decoration: underline;
|
|
98
112
|
}
|
|
99
113
|
|
|
114
|
+
/* Where the marker is a link, a dotted underline tells it from the note's text without
|
|
115
|
+
relying on colour. */
|
|
100
116
|
.footnote-def[data-plain-click-jumps] :global(.footnote-def-marker) {
|
|
101
117
|
cursor: pointer;
|
|
118
|
+
text-decoration: underline dotted;
|
|
102
119
|
}
|
|
103
120
|
</style>
|
|
@@ -1,46 +1,66 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { isWidgetActivationClick, type InlineWidgetComponentProps } from '../../plugin';
|
|
3
|
-
import {
|
|
3
|
+
import { footnoteNumbersFor } from './footnote-numbering';
|
|
4
4
|
import { findFootnoteDefinitionLanding } from './footnote-lookup';
|
|
5
|
+
import { footnoteReferenceLabel } from './constants';
|
|
5
6
|
|
|
6
7
|
let {
|
|
7
8
|
source,
|
|
8
9
|
getDocument,
|
|
9
10
|
getContentVersion,
|
|
10
11
|
getPresentationMode,
|
|
11
|
-
navigateTo
|
|
12
|
+
navigateTo,
|
|
13
|
+
computeInlineContent
|
|
12
14
|
}: InlineWidgetComponentProps = $props();
|
|
13
15
|
|
|
14
|
-
//
|
|
16
|
+
// Read once: the widget remounts on any source change, so this can never go stale.
|
|
15
17
|
// svelte-ignore state_referenced_locally
|
|
16
18
|
const label = source.slice(2, -1);
|
|
17
19
|
|
|
18
|
-
// Reactive,
|
|
19
|
-
//
|
|
20
|
-
// shared walk stays subscribed rather than snapshotted.
|
|
20
|
+
// Reactive, since a widget keyed on its source survives a renumber from a reference added
|
|
21
|
+
// elsewhere; reading the version inside keeps the shared numbering pass subscribed.
|
|
21
22
|
const display = $derived.by(() => {
|
|
22
|
-
const doc = getDocument
|
|
23
|
+
const doc = getDocument();
|
|
23
24
|
if (!doc) return label;
|
|
24
|
-
const
|
|
25
|
-
const numbers =
|
|
26
|
-
version === undefined ? assignFootnoteNumbers(doc) : footnoteNumbersFor(doc, version);
|
|
25
|
+
const numbers = footnoteNumbersFor(doc, getContentVersion(), computeInlineContent);
|
|
27
26
|
return String(numbers.get(label) ?? label);
|
|
28
27
|
});
|
|
29
28
|
|
|
30
|
-
//
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
29
|
+
// A tab stop only in reading mode: inside an editable block it would interrupt the caret.
|
|
30
|
+
const isReading = $derived(getPresentationMode() === 'reading');
|
|
31
|
+
|
|
32
|
+
// Looked up on each jump, never derived: a reference nobody follows costs nothing beyond the
|
|
33
|
+
// numbering pass it already pays for.
|
|
34
|
+
function jumpToDefinition(): void {
|
|
35
|
+
const doc = getDocument();
|
|
36
36
|
if (!doc) return;
|
|
37
37
|
const path = findFootnoteDefinitionLanding(doc, label);
|
|
38
|
-
if (path) void navigateTo
|
|
38
|
+
if (path) void navigateTo(path);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function onClick(e: MouseEvent): void {
|
|
42
|
+
if (isWidgetActivationClick(e.ctrlKey || e.metaKey, getPresentationMode())) jumpToDefinition();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function onKeydown(e: KeyboardEvent): void {
|
|
46
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
47
|
+
e.preventDefault();
|
|
48
|
+
e.stopPropagation();
|
|
49
|
+
jumpToDefinition();
|
|
50
|
+
}
|
|
39
51
|
}
|
|
40
52
|
</script>
|
|
41
53
|
|
|
42
|
-
<!--
|
|
43
|
-
|
|
54
|
+
<!-- The superscript stays a `<sup>` for its layout; the role says what it does. -->
|
|
55
|
+
<!-- svelte-ignore a11y_no_noninteractive_element_to_interactive_role -->
|
|
56
|
+
<sup
|
|
57
|
+
class="footnote-ref"
|
|
58
|
+
role="link"
|
|
59
|
+
aria-label={footnoteReferenceLabel(display)}
|
|
60
|
+
tabindex={isReading ? 0 : undefined}
|
|
61
|
+
onclick={onClick}
|
|
62
|
+
onkeydown={onKeydown}>{display}</sup
|
|
63
|
+
>
|
|
44
64
|
|
|
45
65
|
<style>
|
|
46
66
|
.footnote-ref {
|
|
@@ -2,3 +2,6 @@
|
|
|
2
2
|
// importing the registration modules.
|
|
3
3
|
export const FOOTNOTE_DEF_KIND = 'footnote-def';
|
|
4
4
|
export const FOOTNOTE_REF_KIND = 'footnote-ref';
|
|
5
|
+
// Accessible names, kept with the plugin so it carries its own strings.
|
|
6
|
+
export const footnoteReferenceLabel = (number) => `Footnote ${number}`;
|
|
7
|
+
export const backToReferenceLabel = (label) => `Back to reference ${label}`;
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The `[^label]: content` definition block
|
|
3
|
-
*
|
|
4
|
-
* `strip(raw) === serialize(children)`.
|
|
5
|
-
*
|
|
2
|
+
* The `[^label]: content` definition block, a strip container shaped like a list item. The
|
|
3
|
+
* marker is syntax living only in the container's own raw, so
|
|
4
|
+
* `strip(raw) === serialize(children)`. Loading is byte-exact off the stored raw; a rebuild
|
|
5
|
+
* after an edit normalizes marker spacing and indent, exactly as a list item does.
|
|
6
6
|
*/
|
|
7
7
|
import { type CstNode } from '../../plugin';
|
|
8
8
|
export interface FootnoteDefMetadata {
|
|
9
9
|
label: string;
|
|
10
10
|
}
|
|
11
|
-
/**
|
|
12
|
-
*
|
|
11
|
+
/**
|
|
12
|
+
* A separator line stays unindented, as the parser reads it. The blank lines that end the body,
|
|
13
|
+
* a leaf's own or the body's trailing line, take the indent that keeps them in the definition.
|
|
14
|
+
*/
|
|
13
15
|
export declare function rebuildFootnoteDefRaw(node: CstNode): void;
|
|
14
16
|
export declare function registerFootnoteDefinition(): void;
|
|
@@ -1,22 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The `[^label]: content` definition block
|
|
3
|
-
*
|
|
4
|
-
* `strip(raw) === serialize(children)`.
|
|
5
|
-
*
|
|
2
|
+
* The `[^label]: content` definition block, a strip container shaped like a list item. The
|
|
3
|
+
* marker is syntax living only in the container's own raw, so
|
|
4
|
+
* `strip(raw) === serialize(children)`. Loading is byte-exact off the stored raw; a rebuild
|
|
5
|
+
* after an edit normalizes marker spacing and indent, exactly as a list item does.
|
|
6
6
|
*/
|
|
7
|
-
import { OPENER_PRIORITIES, containerClosure, declarePluginKind, declaredPluginKind, defineBlockComponent, getPluginMetadata, isBlankLine, lineStartsOuterBlock,
|
|
7
|
+
import { OPENER_PRIORITIES, containerClosure, declarePluginKind, declaredPluginKind, defineBlockComponent, getPluginMetadata, isBlankLine, isBlankText, isWhitespaceChar, lineStartsOuterBlock, parseContainerBody, registerBlockComponent, registerBlockKind, registerBlockOpener, setPluginMetadata, splitLines } from '../../plugin';
|
|
8
8
|
import FootnoteDefinition from './FootnoteDefinition.svelte';
|
|
9
9
|
import { FOOTNOTE_DEF_KIND } from './constants';
|
|
10
|
-
const OPENER = /^ {0,3}\[\^([^\]
|
|
11
|
-
const MARKER_STRIP = /^ {0,3}\[\^[^\]
|
|
12
|
-
|
|
10
|
+
const OPENER = /^ {0,3}\[\^([^\]]+)\]:/;
|
|
11
|
+
const MARKER_STRIP = /^ {0,3}\[\^[^\]]+\]: ?/;
|
|
12
|
+
// Four columns, a tab counting to the next multiple of four, so no tab reaches past the body.
|
|
13
|
+
const CONTINUATION_INDENT = /^(?: {0,3}\t| {4})/;
|
|
13
14
|
const CONTINUATION_MARKER = ' ';
|
|
15
|
+
/** The `[^label]:` a line opens with, where the label holds no Markdown whitespace. */
|
|
16
|
+
function matchOpener(text) {
|
|
17
|
+
const match = OPENER.exec(text);
|
|
18
|
+
if (!match)
|
|
19
|
+
return null;
|
|
20
|
+
for (const ch of match[1])
|
|
21
|
+
if (isWhitespaceChar(ch))
|
|
22
|
+
return null;
|
|
23
|
+
return match;
|
|
24
|
+
}
|
|
14
25
|
/** Per-line approximation of the body's open-paragraph state, as in the core blockquote/list
|
|
15
26
|
* lazy models: laziness reaches only the body's own top-level paragraph. */
|
|
16
27
|
function keepsParagraphOpen(strippedText, grammar) {
|
|
17
28
|
if (isBlankLine(strippedText))
|
|
18
29
|
return false;
|
|
19
|
-
if (
|
|
30
|
+
if (matchOpener(strippedText))
|
|
20
31
|
return false;
|
|
21
32
|
for (const opener of grammar.orderedOpeners()) {
|
|
22
33
|
const interrupts = opener.interruptsParagraph;
|
|
@@ -25,28 +36,25 @@ function keepsParagraphOpen(strippedText, grammar) {
|
|
|
25
36
|
}
|
|
26
37
|
return true;
|
|
27
38
|
}
|
|
28
|
-
/**
|
|
29
|
-
*
|
|
30
|
-
* run belongs to the document. An unindented non-blank line continues the definition only as
|
|
31
|
-
* a lazy continuation of an open body paragraph (CommonMark §5.1, as cmark-gfm applies it).
|
|
32
|
-
*/
|
|
39
|
+
/** A line indented to the body continues the definition, bare blank lines only while such a line
|
|
40
|
+
* follows; an unindented line continues only lazily, into an open paragraph (CommonMark §5.1). */
|
|
33
41
|
function scanDefinitionEnd(ctx) {
|
|
34
42
|
let lastContent = ctx.index;
|
|
35
43
|
let paragraphOpen = keepsParagraphOpen(ctx.line.text.replace(MARKER_STRIP, ''), ctx.grammar);
|
|
36
44
|
let i = ctx.index + 1;
|
|
37
45
|
while (i < ctx.end) {
|
|
38
46
|
const text = ctx.lines[i].text;
|
|
39
|
-
if (isBlankLine(text)) {
|
|
40
|
-
paragraphOpen = false;
|
|
41
|
-
i++;
|
|
42
|
-
continue;
|
|
43
|
-
}
|
|
44
47
|
if (CONTINUATION_INDENT.test(text)) {
|
|
45
48
|
paragraphOpen = keepsParagraphOpen(text.replace(CONTINUATION_INDENT, ''), ctx.grammar);
|
|
46
49
|
lastContent = i;
|
|
47
50
|
i++;
|
|
48
51
|
continue;
|
|
49
52
|
}
|
|
53
|
+
if (isBlankLine(text)) {
|
|
54
|
+
paragraphOpen = false;
|
|
55
|
+
i++;
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
50
58
|
if (paragraphOpen &&
|
|
51
59
|
!lineStartsOuterBlock(ctx.lines[i], { paragraphOpen: true, grammar: ctx.grammar })) {
|
|
52
60
|
lastContent = i;
|
|
@@ -58,7 +66,7 @@ function scanDefinitionEnd(ctx) {
|
|
|
58
66
|
return lastContent + 1;
|
|
59
67
|
}
|
|
60
68
|
function tryOpen(ctx) {
|
|
61
|
-
const match =
|
|
69
|
+
const match = matchOpener(ctx.line.text);
|
|
62
70
|
if (!match)
|
|
63
71
|
return null;
|
|
64
72
|
const next = scanDefinitionEnd(ctx);
|
|
@@ -67,8 +75,9 @@ function tryOpen(ctx) {
|
|
|
67
75
|
const stripped = defLines
|
|
68
76
|
.map((line, i) => line.raw.replace(i === 0 ? MARKER_STRIP : CONTINUATION_INDENT, ''))
|
|
69
77
|
.join('');
|
|
70
|
-
// A fresh parse entry, so the body's own line 0 must not read as the document top.
|
|
71
|
-
|
|
78
|
+
// A fresh parse entry, so the body's own line 0 must not read as the document top. The body has
|
|
79
|
+
// no fence lines of its own, so no blank line is set aside from it.
|
|
80
|
+
const body = parseContainerBody(stripped, {}, { scope: 'fragment', grammar: ctx.grammar });
|
|
72
81
|
const node = {
|
|
73
82
|
kind: declaredPluginKind(FOOTNOTE_DEF_KIND),
|
|
74
83
|
leadingTrivia: ctx.leadingTrivia,
|
|
@@ -80,50 +89,65 @@ function tryOpen(ctx) {
|
|
|
80
89
|
setPluginMetadata(node, { label: match[1] });
|
|
81
90
|
return { node, consumed: next - ctx.index };
|
|
82
91
|
}
|
|
83
|
-
/**
|
|
84
|
-
*
|
|
92
|
+
/**
|
|
93
|
+
* A separator line stays unindented, as the parser reads it. The blank lines that end the body,
|
|
94
|
+
* a leaf's own or the body's trailing line, take the indent that keeps them in the definition.
|
|
95
|
+
*/
|
|
85
96
|
export function rebuildFootnoteDefRaw(node) {
|
|
86
97
|
const meta = getPluginMetadata(node);
|
|
87
98
|
const marker = `[^${meta?.label ?? ''}]: `;
|
|
88
|
-
const
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
99
|
+
const lines = [];
|
|
100
|
+
const add = (bytes, separator) => {
|
|
101
|
+
for (const line of splitLines(bytes))
|
|
102
|
+
lines.push({ ...line, separator });
|
|
103
|
+
};
|
|
104
|
+
add(node.innerPrefix ?? '', true);
|
|
105
|
+
for (const child of node.children ?? []) {
|
|
106
|
+
add(child.leadingTrivia, true);
|
|
107
|
+
// A nested container's rebuild already indented the blank lines it keeps.
|
|
108
|
+
add(child.raw, child.children !== undefined);
|
|
109
|
+
}
|
|
110
|
+
add(node.innerSuffix ?? '', false);
|
|
111
|
+
let lastContent = lines.length - 1;
|
|
112
|
+
while (lastContent >= 0 && isBlankText(lines[lastContent].text))
|
|
113
|
+
lastContent--;
|
|
114
|
+
let raw = '';
|
|
115
|
+
lines.forEach(({ text, lineEnding, separator }, i) => {
|
|
116
|
+
if (raw === '')
|
|
117
|
+
raw += marker + text + lineEnding;
|
|
118
|
+
else if (text === '' && (separator || i < lastContent))
|
|
119
|
+
raw += lineEnding;
|
|
120
|
+
else
|
|
121
|
+
raw += CONTINUATION_MARKER + text + lineEnding;
|
|
122
|
+
});
|
|
123
|
+
node.raw = raw;
|
|
101
124
|
}
|
|
102
125
|
export function registerFootnoteDefinition() {
|
|
103
126
|
const kind = declarePluginKind(FOOTNOTE_DEF_KIND);
|
|
104
127
|
registerBlockOpener(kind, {
|
|
105
|
-
// Below linkReferenceDefinition so the footnote form
|
|
106
|
-
//
|
|
128
|
+
// Below linkReferenceDefinition so the footnote form matches first, at a priority of
|
|
129
|
+
// its own so no two bundled plugins share one (G1.10).
|
|
107
130
|
priority: OPENER_PRIORITIES.linkReferenceDefinition - 4,
|
|
108
131
|
tryOpen,
|
|
109
132
|
interruptsParagraph: false
|
|
110
133
|
});
|
|
111
134
|
registerBlockKind(kind, {
|
|
135
|
+
label: 'Footnote',
|
|
112
136
|
gapEdges: 'none',
|
|
113
137
|
mergeRole: 'not-mergeable',
|
|
114
138
|
editable: true,
|
|
115
139
|
supportsInline: false,
|
|
116
|
-
//
|
|
117
|
-
// lazy form
|
|
140
|
+
// A conformance fixture has to survive rebuildRaw unchanged, so the continuation line
|
|
141
|
+
// is indented: the lazy form would be rewritten.
|
|
118
142
|
conformanceFixture: '[^1]: A footnote definition.\n with an indented continuation.\n',
|
|
119
|
-
//
|
|
120
|
-
//
|
|
143
|
+
// Body blocks reorder inside the definition, unlike a list item, which moves under its
|
|
144
|
+
// list; the marker does not depend on position, so rebuildRaw re-emits it.
|
|
121
145
|
container: {
|
|
122
146
|
contract: 'strip',
|
|
123
147
|
rebuildRaw: rebuildFootnoteDefRaw,
|
|
124
148
|
reorderChildren: {},
|
|
125
|
-
// The marker
|
|
126
|
-
//
|
|
149
|
+
// The marker lives in metadata rather than the first line, so lifting the first child
|
|
150
|
+
// out leaves a definition behind, not the plain blockquote a quote lift leaves.
|
|
127
151
|
unwrapRole: {
|
|
128
152
|
firstChildBackspace: 'lift-first-child-keep-container',
|
|
129
153
|
middleChildBackspace: 'default-merge'
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Where a `[^label]` reference jumps to: the
|
|
2
|
+
* Where a `[^label]` reference jumps to: the block inside that label's definition.
|
|
3
3
|
* Depth-first in document order, so two definitions under one label resolve to the first,
|
|
4
4
|
* which is the one GFM renders.
|
|
5
5
|
*/
|
|
6
6
|
import { type DocumentView } from '../../plugin';
|
|
7
|
-
/** The definition's first body block, since the
|
|
8
|
-
* container path
|
|
7
|
+
/** The definition's first body block, since the caret cannot sit on the container itself. The
|
|
8
|
+
* container's own path is used when the body holds no block; null when no definition matches. */
|
|
9
9
|
export declare function findFootnoteDefinitionLanding(document: DocumentView, label: string): number[] | null;
|
|
@@ -1,33 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Where a `[^label]` reference jumps to: the
|
|
2
|
+
* Where a `[^label]` reference jumps to: the block inside that label's definition.
|
|
3
3
|
* Depth-first in document order, so two definitions under one label resolve to the first,
|
|
4
4
|
* which is the one GFM renders.
|
|
5
5
|
*/
|
|
6
|
-
import { getPluginMetadata } from '../../plugin';
|
|
6
|
+
import { getPluginMetadata, walkBlocks } from '../../plugin';
|
|
7
7
|
import { FOOTNOTE_DEF_KIND } from './constants';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
getPluginMetadata(node)?.label === label) {
|
|
11
|
-
return { node, path };
|
|
12
|
-
}
|
|
13
|
-
const children = node.children;
|
|
14
|
-
if (!children)
|
|
15
|
-
return null;
|
|
16
|
-
for (let index = 0; index < children.length; index++) {
|
|
17
|
-
const hit = findInSubtree(children[index], [...path, index], label);
|
|
18
|
-
if (hit)
|
|
19
|
-
return hit;
|
|
20
|
-
}
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
/** The definition's first body block, since the container itself is no caret seat. The
|
|
24
|
-
* container path stands in when the body holds no block; null when no definition matches. */
|
|
8
|
+
/** The definition's first body block, since the caret cannot sit on the container itself. The
|
|
9
|
+
* container's own path is used when the body holds no block; null when no definition matches. */
|
|
25
10
|
export function findFootnoteDefinitionLanding(document, label) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
11
|
+
let landing = null;
|
|
12
|
+
walkBlocks(document, (node, path) => {
|
|
13
|
+
if (node.kind !== FOOTNOTE_DEF_KIND)
|
|
14
|
+
return;
|
|
15
|
+
if (getPluginMetadata(node)?.label !== label)
|
|
16
|
+
return;
|
|
17
|
+
landing = node.children?.length ? [...path, 0] : path;
|
|
18
|
+
return 'stop';
|
|
19
|
+
});
|
|
20
|
+
return landing;
|
|
33
21
|
}
|
|
@@ -4,20 +4,20 @@
|
|
|
4
4
|
* raw bytes excludes two things by construction: a `[^x]` in a code span, and a
|
|
5
5
|
* definition's own marker, which lives in the container's raw rather than a child.
|
|
6
6
|
*/
|
|
7
|
-
import { type DocumentView } from '../../plugin';
|
|
7
|
+
import { type DocumentView, type EditorContext } from '../../plugin';
|
|
8
|
+
/** The inline read numbering walks with: an editor's, so a reference inside syntax that editor
|
|
9
|
+
* left out still counts. Without one it reads every installed plugin. */
|
|
10
|
+
export type InlineReader = EditorContext['computeInlineContent'];
|
|
8
11
|
export interface FootnoteReference {
|
|
9
12
|
label: string;
|
|
10
|
-
/**
|
|
13
|
+
/** Document-absolute block path of the prose block holding the reference. */
|
|
11
14
|
path: number[];
|
|
12
|
-
/** Raw offset just past the `[^label]` bytes in that
|
|
15
|
+
/** Raw offset just past the `[^label]` bytes in that block: where a jump back lands. */
|
|
13
16
|
end: number;
|
|
14
17
|
}
|
|
15
|
-
export declare function collectFootnoteReferences(document: DocumentView): FootnoteReference[];
|
|
18
|
+
export declare function collectFootnoteReferences(document: DocumentView, reader?: InlineReader): FootnoteReference[];
|
|
16
19
|
/** Labels only, so the numbering a keystroke rebuilds allocates no rebased paths. */
|
|
17
|
-
export declare function assignFootnoteNumbers(document: DocumentView): Map<string, number>;
|
|
18
|
-
/**
|
|
19
|
-
*
|
|
20
|
-
|
|
21
|
-
* return a stale map.
|
|
22
|
-
*/
|
|
23
|
-
export declare function footnoteNumbersFor(document: DocumentView, contentVersion: number): Map<string, number>;
|
|
20
|
+
export declare function assignFootnoteNumbers(document: DocumentView, reader?: InlineReader): Map<string, number>;
|
|
21
|
+
/** One numbering per flush, not per widget, keyed on `contentVersion` too: the `$state` document
|
|
22
|
+
* changes in place, so an identity key alone would return a stale map. */
|
|
23
|
+
export declare function footnoteNumbersFor(document: DocumentView, contentVersion: number, reader?: InlineReader): Map<string, number>;
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
* raw bytes excludes two things by construction: a `[^x]` in a code span, and a
|
|
5
5
|
* definition's own marker, which lives in the container's raw rather than a child.
|
|
6
6
|
*/
|
|
7
|
-
import { computeInlineContent, isProseKind } from '../../plugin';
|
|
7
|
+
import { computeInlineContent, isProseKind, walkBlocks } from '../../plugin';
|
|
8
8
|
import { FOOTNOTE_REF_KIND } from './constants';
|
|
9
|
+
const EVERY_PLUGIN = computeInlineContent;
|
|
9
10
|
function collectRefsInInline(nodes, path, out) {
|
|
10
11
|
for (const node of nodes) {
|
|
11
12
|
if (node.kind === FOOTNOTE_REF_KIND)
|
|
@@ -14,31 +15,27 @@ function collectRefsInInline(nodes, path, out) {
|
|
|
14
15
|
collectRefsInInline(node.children, path, out);
|
|
15
16
|
}
|
|
16
17
|
}
|
|
17
|
-
function
|
|
18
|
-
if (node.children
|
|
19
|
-
node.children.forEach((child, index) => collectRefsInSubtree(child, [...basePath, index], out));
|
|
18
|
+
function collectRefsInLeaf(node, path, out, reader) {
|
|
19
|
+
if (node.children?.length || !isProseKind(node.kind))
|
|
20
20
|
return;
|
|
21
|
-
|
|
22
|
-
if (!isProseKind(node.kind))
|
|
23
|
-
return;
|
|
24
|
-
collectRefsInInline(computeInlineContent(node), basePath, out);
|
|
21
|
+
collectRefsInInline(reader(node), path, out);
|
|
25
22
|
}
|
|
26
|
-
export function collectFootnoteReferences(document) {
|
|
23
|
+
export function collectFootnoteReferences(document, reader = EVERY_PLUGIN) {
|
|
27
24
|
const refs = [];
|
|
28
25
|
const children = document.children;
|
|
29
26
|
for (let index = 0; index < children.length; index++) {
|
|
30
|
-
for (const ref of subtreeRefs(children[index])) {
|
|
27
|
+
for (const ref of subtreeRefs(children[index], reader)) {
|
|
31
28
|
refs.push({ label: ref.label, path: [index, ...ref.path], end: ref.end });
|
|
32
29
|
}
|
|
33
30
|
}
|
|
34
31
|
return refs;
|
|
35
32
|
}
|
|
36
33
|
/** Labels only, so the numbering a keystroke rebuilds allocates no rebased paths. */
|
|
37
|
-
export function assignFootnoteNumbers(document) {
|
|
34
|
+
export function assignFootnoteNumbers(document, reader = EVERY_PLUGIN) {
|
|
38
35
|
const numbers = new Map();
|
|
39
36
|
const children = document.children;
|
|
40
37
|
for (let index = 0; index < children.length; index++) {
|
|
41
|
-
for (const ref of subtreeRefs(children[index])) {
|
|
38
|
+
for (const ref of subtreeRefs(children[index], reader)) {
|
|
42
39
|
if (!numbers.has(ref.label))
|
|
43
40
|
numbers.set(ref.label, numbers.size + 1);
|
|
44
41
|
}
|
|
@@ -46,33 +43,27 @@ export function assignFootnoteNumbers(document) {
|
|
|
46
43
|
return numbers;
|
|
47
44
|
}
|
|
48
45
|
const refsBySubtree = new WeakMap();
|
|
49
|
-
/**
|
|
50
|
-
*
|
|
51
|
-
|
|
52
|
-
* never recurses (`editor.md` § 12): a subtree's `raw` is its whole byte image, kept so by
|
|
53
|
-
* the container-`raw` rebuild up the ancestry.
|
|
54
|
-
*/
|
|
55
|
-
function subtreeRefs(node) {
|
|
46
|
+
/** One top-level subtree's references, cached against its `raw` (the subtree's whole byte
|
|
47
|
+
* image), so a keystroke re-parses only the subtree it changed. */
|
|
48
|
+
function subtreeRefs(node, reader) {
|
|
56
49
|
const cached = refsBySubtree.get(node);
|
|
57
|
-
if (cached && cached.raw === node.raw && cached.kind === node.kind)
|
|
50
|
+
if (cached && cached.raw === node.raw && cached.kind === node.kind && cached.reader === reader)
|
|
58
51
|
return cached.refs;
|
|
59
52
|
const refs = [];
|
|
60
|
-
|
|
61
|
-
|
|
53
|
+
collectRefsInLeaf(node, [], refs, reader);
|
|
54
|
+
walkBlocks(node, (child, path) => collectRefsInLeaf(child, path, refs, reader));
|
|
55
|
+
refsBySubtree.set(node, { raw: node.raw, kind: node.kind, reader, refs });
|
|
62
56
|
return refs;
|
|
63
57
|
}
|
|
64
58
|
// ── Per-version sharing ──────────────────────────────────────────────────────
|
|
65
59
|
const numberingByDocument = new WeakMap();
|
|
66
|
-
/**
|
|
67
|
-
*
|
|
68
|
-
|
|
69
|
-
* return a stale map.
|
|
70
|
-
*/
|
|
71
|
-
export function footnoteNumbersFor(document, contentVersion) {
|
|
60
|
+
/** One numbering per flush, not per widget, keyed on `contentVersion` too: the `$state` document
|
|
61
|
+
* changes in place, so an identity key alone would return a stale map. */
|
|
62
|
+
export function footnoteNumbersFor(document, contentVersion, reader = EVERY_PLUGIN) {
|
|
72
63
|
const cached = numberingByDocument.get(document);
|
|
73
|
-
if (cached && cached.version === contentVersion)
|
|
64
|
+
if (cached && cached.version === contentVersion && cached.reader === reader)
|
|
74
65
|
return cached.numbers;
|
|
75
|
-
const numbers = assignFootnoteNumbers(document);
|
|
76
|
-
numberingByDocument.set(document, { version: contentVersion, numbers });
|
|
66
|
+
const numbers = assignFootnoteNumbers(document, reader);
|
|
67
|
+
numberingByDocument.set(document, { version: contentVersion, reader, numbers });
|
|
77
68
|
return numbers;
|
|
78
69
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* The worked example of an inline syntax handler: `[^label]` registers on the `[^` prefix, so
|
|
3
|
+
* it is tried before the built-in `[` handler. The literal bytes stay in the block's raw and
|
|
4
|
+
* the number is worked out rather than stored. Recognition starts only once the plugin
|
|
5
|
+
* registers: without it, `[` runs the built-in bracket handling instead.
|
|
6
6
|
*/
|
|
7
7
|
export declare function registerFootnoteReference(): void;
|