@voithos-labs/aragonite 0.10.1
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/LICENSE +661 -0
- package/README.md +365 -0
- package/THIRD-PARTY-NOTICES.md +102 -0
- package/dist/a11y-strings.d.ts +46 -0
- package/dist/a11y-strings.js +62 -0
- package/dist/action-contracts.d.ts +301 -0
- package/dist/action-contracts.js +5 -0
- package/dist/active-editor.d.ts +16 -0
- package/dist/active-editor.js +67 -0
- package/dist/ambient/ambient-cursor.d.ts +41 -0
- package/dist/ambient/ambient-cursor.js +120 -0
- package/dist/ambient/ambient-dom.d.ts +9 -0
- package/dist/ambient/ambient-dom.js +102 -0
- package/dist/assert.d.ts +6 -0
- package/dist/assert.js +17 -0
- package/dist/block-component.d.ts +274 -0
- package/dist/block-component.js +43 -0
- package/dist/block-id.d.ts +14 -0
- package/dist/block-id.js +34 -0
- package/dist/bounded-memo.d.ts +14 -0
- package/dist/bounded-memo.js +32 -0
- package/dist/components/BlockDragHandle.svelte +66 -0
- package/dist/components/BlockDragHandle.svelte.d.ts +18 -0
- package/dist/components/BlockHost.svelte +328 -0
- package/dist/components/BlockHost.svelte.d.ts +15 -0
- package/dist/components/BlockList.svelte +114 -0
- package/dist/components/BlockList.svelte.d.ts +16 -0
- package/dist/components/DecorationOverlay.svelte +156 -0
- package/dist/components/DecorationOverlay.svelte.d.ts +14 -0
- package/dist/components/Editor.svelte +1849 -0
- package/dist/components/Editor.svelte.d.ts +49 -0
- package/dist/components/GapCaret.svelte +226 -0
- package/dist/components/GapCaret.svelte.d.ts +9 -0
- package/dist/components/SearchBar.svelte +243 -0
- package/dist/components/SearchBar.svelte.d.ts +7 -0
- package/dist/components/SelectionOverlay.svelte +171 -0
- package/dist/components/SelectionOverlay.svelte.d.ts +14 -0
- package/dist/components/block-content-selector.d.ts +12 -0
- package/dist/components/block-content-selector.js +12 -0
- package/dist/components/blocks/BlockquoteBlock.svelte +32 -0
- package/dist/components/blocks/BlockquoteBlock.svelte.d.ts +11 -0
- package/dist/components/blocks/ThematicBreakBlock.svelte +156 -0
- package/dist/components/blocks/ThematicBreakBlock.svelte.d.ts +17 -0
- package/dist/components/blocks/code/CodeBlock.svelte +726 -0
- package/dist/components/blocks/code/CodeBlock.svelte.d.ts +23 -0
- package/dist/components/blocks/code/CodeLanguageChip.svelte +127 -0
- package/dist/components/blocks/code/CodeLanguageChip.svelte.d.ts +14 -0
- package/dist/components/blocks/code/code-beforeinput.d.ts +30 -0
- package/dist/components/blocks/code/code-beforeinput.js +40 -0
- package/dist/components/blocks/code/code-bootstrap.d.ts +8 -0
- package/dist/components/blocks/code/code-bootstrap.js +54 -0
- package/dist/components/blocks/code/code-editing.d.ts +28 -0
- package/dist/components/blocks/code/code-editing.js +79 -0
- package/dist/components/blocks/code/code-enter.d.ts +22 -0
- package/dist/components/blocks/code/code-enter.js +19 -0
- package/dist/components/blocks/code/code-fence-boundary.d.ts +77 -0
- package/dist/components/blocks/code/code-fence-boundary.js +169 -0
- package/dist/components/blocks/code/code-fence-exit.d.ts +24 -0
- package/dist/components/blocks/code/code-fence-exit.js +36 -0
- package/dist/components/blocks/code/code-indent.d.ts +14 -0
- package/dist/components/blocks/code/code-indent.js +87 -0
- package/dist/components/blocks/code/code-languages.d.ts +15 -0
- package/dist/components/blocks/code/code-languages.js +30 -0
- package/dist/components/blocks/code/code-paste-surface.d.ts +6 -0
- package/dist/components/blocks/code/code-paste-surface.js +29 -0
- package/dist/components/blocks/code/code-paste.d.ts +24 -0
- package/dist/components/blocks/code/code-paste.js +21 -0
- package/dist/components/blocks/code/code-renderer.d.ts +18 -0
- package/dist/components/blocks/code/code-renderer.js +249 -0
- package/dist/components/blocks/directive/DirectiveContainerBlock.svelte +51 -0
- package/dist/components/blocks/directive/DirectiveContainerBlock.svelte.d.ts +11 -0
- package/dist/components/blocks/directive/activate-directives.d.ts +7 -0
- package/dist/components/blocks/directive/activate-directives.js +23 -0
- package/dist/components/blocks/editable-leaf.d.ts +126 -0
- package/dist/components/blocks/editable-leaf.js +410 -0
- package/dist/components/blocks/editable-surface.d.ts +209 -0
- package/dist/components/blocks/editable-surface.js +331 -0
- package/dist/components/blocks/list/ListBlock.svelte +162 -0
- package/dist/components/blocks/list/ListBlock.svelte.d.ts +11 -0
- package/dist/components/blocks/list/ListItemBlock.svelte +324 -0
- package/dist/components/blocks/list/ListItemBlock.svelte.d.ts +14 -0
- package/dist/components/blocks/list/task-checkbox.d.ts +3 -0
- package/dist/components/blocks/list/task-checkbox.js +33 -0
- package/dist/components/blocks/plain-text-backend.d.ts +21 -0
- package/dist/components/blocks/plain-text-backend.js +47 -0
- package/dist/components/blocks/surface-wiring.svelte.d.ts +18 -0
- package/dist/components/blocks/surface-wiring.svelte.js +68 -0
- package/dist/components/blocks/table/TableActionMenu.svelte +267 -0
- package/dist/components/blocks/table/TableActionMenu.svelte.d.ts +15 -0
- package/dist/components/blocks/table/TableBlock.svelte +765 -0
- package/dist/components/blocks/table/TableBlock.svelte.d.ts +30 -0
- package/dist/components/blocks/table/TableCellBlock.svelte +1075 -0
- package/dist/components/blocks/table/TableCellBlock.svelte.d.ts +30 -0
- package/dist/components/blocks/table/TableGrip.svelte +91 -0
- package/dist/components/blocks/table/TableGrip.svelte.d.ts +8 -0
- package/dist/components/blocks/table/TableRowBlock.svelte +233 -0
- package/dist/components/blocks/table/TableRowBlock.svelte.d.ts +34 -0
- package/dist/components/blocks/table/cell-clipboard.d.ts +23 -0
- package/dist/components/blocks/table/cell-clipboard.js +34 -0
- package/dist/components/blocks/table/cell-keydown-plan.d.ts +37 -0
- package/dist/components/blocks/table/cell-keydown-plan.js +66 -0
- package/dist/components/blocks/table/cell-pointer.d.ts +58 -0
- package/dist/components/blocks/table/cell-pointer.js +153 -0
- package/dist/components/blocks/table/cell-render.d.ts +51 -0
- package/dist/components/blocks/table/cell-render.js +98 -0
- package/dist/components/blocks/table/cell-table-commands.d.ts +12 -0
- package/dist/components/blocks/table/cell-table-commands.js +21 -0
- package/dist/components/blocks/table/cell-x-mapping.d.ts +6 -0
- package/dist/components/blocks/table/cell-x-mapping.js +16 -0
- package/dist/components/blocks/table/selected-cells.d.ts +19 -0
- package/dist/components/blocks/table/selected-cells.js +35 -0
- package/dist/components/blocks/table/table-caret-at-point.d.ts +8 -0
- package/dist/components/blocks/table/table-caret-at-point.js +35 -0
- package/dist/components/blocks/table/table-cell-paste.d.ts +16 -0
- package/dist/components/blocks/table/table-cell-paste.js +75 -0
- package/dist/components/blocks/table/table-drag-hit-test.d.ts +5 -0
- package/dist/components/blocks/table/table-drag-hit-test.js +20 -0
- package/dist/components/blocks/table/table-drop-target.d.ts +1 -0
- package/dist/components/blocks/table/table-drop-target.js +16 -0
- package/dist/components/blocks/table/table-menu-model.d.ts +52 -0
- package/dist/components/blocks/table/table-menu-model.js +78 -0
- package/dist/components/blocks/table/table-navigation.d.ts +8 -0
- package/dist/components/blocks/table/table-navigation.js +22 -0
- package/dist/components/blocks/table/table-reorder-drag.d.ts +78 -0
- package/dist/components/blocks/table/table-reorder-drag.js +97 -0
- package/dist/components/blocks/text/TextEditableBlock.svelte +1012 -0
- package/dist/components/blocks/text/TextEditableBlock.svelte.d.ts +33 -0
- package/dist/components/blocks/text/click-snap-guard.d.ts +8 -0
- package/dist/components/blocks/text/click-snap-guard.js +19 -0
- package/dist/components/blocks/text/composition-seat.d.ts +50 -0
- package/dist/components/blocks/text/composition-seat.js +65 -0
- package/dist/components/blocks/text/construct-edge-delete.d.ts +47 -0
- package/dist/components/blocks/text/construct-edge-delete.js +164 -0
- package/dist/components/blocks/text/construct-reveal.d.ts +39 -0
- package/dist/components/blocks/text/construct-reveal.js +164 -0
- package/dist/components/blocks/text/edge-policy-dispatch.d.ts +91 -0
- package/dist/components/blocks/text/edge-policy-dispatch.js +457 -0
- package/dist/components/blocks/text/edge-seat.d.ts +42 -0
- package/dist/components/blocks/text/edge-seat.js +197 -0
- package/dist/components/blocks/text/hidden-suffix.d.ts +10 -0
- package/dist/components/blocks/text/hidden-suffix.js +15 -0
- package/dist/components/blocks/text/link-at-point.d.ts +33 -0
- package/dist/components/blocks/text/link-at-point.js +47 -0
- package/dist/components/blocks/text/link-source-bytes.d.ts +37 -0
- package/dist/components/blocks/text/link-source-bytes.js +161 -0
- package/dist/components/blocks/text/live-join-seam.d.ts +15 -0
- package/dist/components/blocks/text/live-join-seam.js +327 -0
- package/dist/components/blocks/text/live-selection-edit.d.ts +68 -0
- package/dist/components/blocks/text/live-selection-edit.js +120 -0
- package/dist/components/blocks/text/live-split-rebalance.d.ts +56 -0
- package/dist/components/blocks/text/live-split-rebalance.js +239 -0
- package/dist/components/blocks/text/marker-completion.d.ts +18 -0
- package/dist/components/blocks/text/marker-completion.js +29 -0
- package/dist/components/blocks/text/pending-mark-insert.d.ts +37 -0
- package/dist/components/blocks/text/pending-mark-insert.js +188 -0
- package/dist/components/blocks/text/screen-diff.d.ts +20 -0
- package/dist/components/blocks/text/screen-diff.js +39 -0
- package/dist/components/blocks/text/text-clipboard.d.ts +70 -0
- package/dist/components/blocks/text/text-clipboard.js +131 -0
- package/dist/components/blocks/text/text-keydown.d.ts +39 -0
- package/dist/components/blocks/text/text-keydown.js +80 -0
- package/dist/components/blocks/text/text-render.d.ts +67 -0
- package/dist/components/blocks/text/text-render.js +215 -0
- package/dist/components/blocks/text/widget-adjacency.d.ts +30 -0
- package/dist/components/blocks/text/widget-adjacency.js +68 -0
- package/dist/components/blocks/text/widget-interaction.d.ts +90 -0
- package/dist/components/blocks/text/widget-interaction.js +591 -0
- package/dist/components/blocks/widget-portal.d.ts +54 -0
- package/dist/components/blocks/widget-portal.js +136 -0
- package/dist/components/built-in-blocks.d.ts +7 -0
- package/dist/components/built-in-blocks.js +77 -0
- package/dist/components/editor-root-clipboard.d.ts +29 -0
- package/dist/components/editor-root-clipboard.js +105 -0
- package/dist/components/editor-root-keydown.d.ts +47 -0
- package/dist/components/editor-root-keydown.js +88 -0
- package/dist/components/editor-root-listeners.d.ts +44 -0
- package/dist/components/editor-root-listeners.js +112 -0
- package/dist/components/image/ImageOverlayHost.svelte +115 -0
- package/dist/components/image/ImageOverlayHost.svelte.d.ts +20 -0
- package/dist/components/image/ImageProperties.svelte +153 -0
- package/dist/components/image/ImageProperties.svelte.d.ts +14 -0
- package/dist/components/image/ImageResizeHandles.svelte +188 -0
- package/dist/components/image/ImageResizeHandles.svelte.d.ts +10 -0
- package/dist/components/image/image-edit-commit.d.ts +38 -0
- package/dist/components/image/image-edit-commit.js +159 -0
- package/dist/components/image/image-resize.d.ts +11 -0
- package/dist/components/image/image-resize.js +38 -0
- package/dist/components/image/image-source-bytes.d.ts +15 -0
- package/dist/components/image/image-source-bytes.js +73 -0
- package/dist/components/image/image-widget-editing.d.ts +7 -0
- package/dist/components/image/image-widget-editing.js +41 -0
- package/dist/components/image/widget-dom.d.ts +11 -0
- package/dist/components/image/widget-dom.js +110 -0
- package/dist/components/image/widget-selection-state.svelte.d.ts +18 -0
- package/dist/components/image/widget-selection-state.svelte.js +26 -0
- package/dist/components/link-card/LinkCard.svelte +190 -0
- package/dist/components/link-card/LinkCard.svelte.d.ts +18 -0
- package/dist/components/link-card/LinkCardHost.svelte +181 -0
- package/dist/components/link-card/LinkCardHost.svelte.d.ts +25 -0
- package/dist/components/link-card/link-card-commit.d.ts +50 -0
- package/dist/components/link-card/link-card-commit.js +134 -0
- package/dist/components/link-card/link-card-entry.d.ts +39 -0
- package/dist/components/link-card/link-card-entry.js +51 -0
- package/dist/components/link-card/link-card-state.svelte.d.ts +44 -0
- package/dist/components/link-card/link-card-state.svelte.js +46 -0
- package/dist/components/lrd-map-gate.d.ts +18 -0
- package/dist/components/lrd-map-gate.js +22 -0
- package/dist/components/paste-image-arm.d.ts +29 -0
- package/dist/components/paste-image-arm.js +61 -0
- package/dist/components/portal.d.ts +11 -0
- package/dist/components/portal.js +29 -0
- package/dist/core/directive/activate.d.ts +8 -0
- package/dist/core/directive/activate.js +25 -0
- package/dist/core/directive/container-opener.d.ts +7 -0
- package/dist/core/directive/container-opener.js +162 -0
- package/dist/core/directive/grammar.d.ts +50 -0
- package/dist/core/directive/grammar.js +88 -0
- package/dist/core/directive/kinds.d.ts +31 -0
- package/dist/core/directive/kinds.js +137 -0
- package/dist/core/directive/registry.d.ts +39 -0
- package/dist/core/directive/registry.js +49 -0
- package/dist/core/directive/text-recognizer.d.ts +8 -0
- package/dist/core/directive/text-recognizer.js +87 -0
- package/dist/core/escapable.d.ts +6 -0
- package/dist/core/escapable.js +6 -0
- package/dist/core/inline/backticks.d.ts +16 -0
- package/dist/core/inline/backticks.js +62 -0
- package/dist/core/inline/character-refs.d.ts +7 -0
- package/dist/core/inline/character-refs.js +70 -0
- package/dist/core/inline/destination-bytes.d.ts +7 -0
- package/dist/core/inline/destination-bytes.js +14 -0
- package/dist/core/inline/entity-widget.d.ts +11 -0
- package/dist/core/inline/entity-widget.js +21 -0
- package/dist/core/inline/format-toggle.d.ts +50 -0
- package/dist/core/inline/format-toggle.js +533 -0
- package/dist/core/inline/html-entities.d.ts +8 -0
- package/dist/core/inline/html-entities.js +2134 -0
- package/dist/core/inline/html-tag-grammar.d.ts +16 -0
- package/dist/core/inline/html-tag-grammar.js +58 -0
- package/dist/core/inline/image-dimensions.d.ts +6 -0
- package/dist/core/inline/image-dimensions.js +42 -0
- package/dist/core/inline/index.d.ts +42 -0
- package/dist/core/inline/index.js +77 -0
- package/dist/core/inline/inline-cache.d.ts +20 -0
- package/dist/core/inline/inline-cache.js +28 -0
- package/dist/core/inline/inline-widgets.d.ts +124 -0
- package/dist/core/inline/inline-widgets.js +131 -0
- package/dist/core/inline/link-reference-resolver.d.ts +21 -0
- package/dist/core/inline/link-reference-resolver.js +46 -0
- package/dist/core/inline/raw-html-widget.d.ts +10 -0
- package/dist/core/inline/raw-html-widget.js +22 -0
- package/dist/core/inline/scan/autolinks.d.ts +23 -0
- package/dist/core/inline/scan/autolinks.js +354 -0
- package/dist/core/inline/scan/brackets.d.ts +11 -0
- package/dist/core/inline/scan/brackets.js +284 -0
- package/dist/core/inline/scan/code-spans.d.ts +7 -0
- package/dist/core/inline/scan/code-spans.js +27 -0
- package/dist/core/inline/scan/emphasis.d.ts +10 -0
- package/dist/core/inline/scan/emphasis.js +276 -0
- package/dist/core/inline/scan/index.d.ts +7 -0
- package/dist/core/inline/scan/index.js +176 -0
- package/dist/core/inline/scan/plugin-syntax.d.ts +62 -0
- package/dist/core/inline/scan/plugin-syntax.js +150 -0
- package/dist/core/inline/scan/scan-state.d.ts +47 -0
- package/dist/core/inline/scan/scan-state.js +48 -0
- package/dist/core/inline/scan/simple-nodes.d.ts +14 -0
- package/dist/core/inline/scan/simple-nodes.js +53 -0
- package/dist/core/inline/scan/url.d.ts +12 -0
- package/dist/core/inline/scan/url.js +82 -0
- package/dist/core/inline/transparency.d.ts +8 -0
- package/dist/core/inline/transparency.js +39 -0
- package/dist/core/inline/visibility.d.ts +81 -0
- package/dist/core/inline/visibility.js +144 -0
- package/dist/core/inline/walk.d.ts +14 -0
- package/dist/core/inline/walk.js +29 -0
- package/dist/core/inline-render.d.ts +48 -0
- package/dist/core/inline-render.js +322 -0
- package/dist/core/lines.d.ts +44 -0
- package/dist/core/lines.js +91 -0
- package/dist/core/node-views.d.ts +22 -0
- package/dist/core/node-views.js +8 -0
- package/dist/core/nodes.d.ts +297 -0
- package/dist/core/nodes.js +83 -0
- package/dist/core/parser.d.ts +68 -0
- package/dist/core/parser.js +189 -0
- package/dist/core/parsers/blockquote.d.ts +17 -0
- package/dist/core/parsers/blockquote.js +69 -0
- package/dist/core/parsers/built-in-openers.d.ts +8 -0
- package/dist/core/parsers/built-in-openers.js +124 -0
- package/dist/core/parsers/fence-syntax.d.ts +24 -0
- package/dist/core/parsers/fence-syntax.js +44 -0
- package/dist/core/parsers/fenced-code.d.ts +7 -0
- package/dist/core/parsers/fenced-code.js +29 -0
- package/dist/core/parsers/heading.d.ts +3 -0
- package/dist/core/parsers/heading.js +6 -0
- package/dist/core/parsers/html-block.d.ts +17 -0
- package/dist/core/parsers/html-block.js +94 -0
- package/dist/core/parsers/indented-code.d.ts +4 -0
- package/dist/core/parsers/indented-code.js +41 -0
- package/dist/core/parsers/link-reference.d.ts +7 -0
- package/dist/core/parsers/link-reference.js +152 -0
- package/dist/core/parsers/list.d.ts +19 -0
- package/dist/core/parsers/list.js +133 -0
- package/dist/core/parsers/paragraph.d.ts +10 -0
- package/dist/core/parsers/paragraph.js +42 -0
- package/dist/core/parsers/table-completion.d.ts +13 -0
- package/dist/core/parsers/table-completion.js +48 -0
- package/dist/core/parsers/table.d.ts +18 -0
- package/dist/core/parsers/table.js +110 -0
- package/dist/core/parsers/thematic-break.d.ts +1 -0
- package/dist/core/parsers/thematic-break.js +19 -0
- package/dist/core/serializer.d.ts +15 -0
- package/dist/core/serializer.js +11 -0
- package/dist/core/terminator-escalation.d.ts +8 -0
- package/dist/core/terminator-escalation.js +18 -0
- package/dist/core/url-policy.d.ts +14 -0
- package/dist/core/url-policy.js +44 -0
- package/dist/cursor/content-offsets.d.ts +29 -0
- package/dist/cursor/content-offsets.js +151 -0
- package/dist/cursor/coordinate-spaces.d.ts +65 -0
- package/dist/cursor/coordinate-spaces.js +66 -0
- package/dist/cursor/dom-walk.d.ts +18 -0
- package/dist/cursor/dom-walk.js +31 -0
- package/dist/cursor/edge-affinity.d.ts +44 -0
- package/dist/cursor/edge-affinity.js +60 -0
- package/dist/cursor/focused-caret.d.ts +10 -0
- package/dist/cursor/focused-caret.js +24 -0
- package/dist/cursor/height-model.d.ts +24 -0
- package/dist/cursor/height-model.js +72 -0
- package/dist/cursor/height-oracle.d.ts +24 -0
- package/dist/cursor/height-oracle.js +94 -0
- package/dist/cursor/overlay-rects.d.ts +8 -0
- package/dist/cursor/overlay-rects.js +19 -0
- package/dist/cursor/overlay-remeasure.d.ts +17 -0
- package/dist/cursor/overlay-remeasure.js +31 -0
- package/dist/cursor/pending-marks.d.ts +24 -0
- package/dist/cursor/pending-marks.js +36 -0
- package/dist/cursor/point-offset.d.ts +21 -0
- package/dist/cursor/point-offset.js +48 -0
- package/dist/cursor/reveal-anchor.d.ts +30 -0
- package/dist/cursor/reveal-anchor.js +31 -0
- package/dist/cursor/reveal-source.d.ts +35 -0
- package/dist/cursor/reveal-source.js +51 -0
- package/dist/cursor/scroll-ancestors.d.ts +28 -0
- package/dist/cursor/scroll-ancestors.js +89 -0
- package/dist/cursor/scrollport.d.ts +20 -0
- package/dist/cursor/scrollport.js +41 -0
- package/dist/cursor/sticky-column.d.ts +35 -0
- package/dist/cursor/sticky-column.js +64 -0
- package/dist/cursor/sticky-measure.d.ts +16 -0
- package/dist/cursor/sticky-measure.js +97 -0
- package/dist/cursor/typography-estimates.d.ts +21 -0
- package/dist/cursor/typography-estimates.js +21 -0
- package/dist/cursor/visual-lines.d.ts +25 -0
- package/dist/cursor/visual-lines.js +125 -0
- package/dist/cursor/widget-offset.d.ts +132 -0
- package/dist/cursor/widget-offset.js +543 -0
- package/dist/debug/diagnostics-report.d.ts +17 -0
- package/dist/debug/diagnostics-report.js +25 -0
- package/dist/debug/dump-tree.d.ts +6 -0
- package/dist/debug/dump-tree.js +114 -0
- package/dist/debug/inspect.d.ts +19 -0
- package/dist/debug/inspect.js +116 -0
- package/dist/debug/interaction-trace.d.ts +39 -0
- package/dist/debug/interaction-trace.js +105 -0
- package/dist/debug/operations-log.d.ts +14 -0
- package/dist/debug/operations-log.js +30 -0
- package/dist/decorations/buckets.d.ts +40 -0
- package/dist/decorations/buckets.js +87 -0
- package/dist/decorations/decoration-state.svelte.d.ts +20 -0
- package/dist/decorations/decoration-state.svelte.js +195 -0
- package/dist/decorations/island-dom.d.ts +35 -0
- package/dist/decorations/island-dom.js +148 -0
- package/dist/decorations/reserved-attrs.d.ts +12 -0
- package/dist/decorations/reserved-attrs.js +47 -0
- package/dist/decorations/types.d.ts +68 -0
- package/dist/decorations/types.js +5 -0
- package/dist/decorations/widget-dom.d.ts +15 -0
- package/dist/decorations/widget-dom.js +35 -0
- package/dist/dev-warn.d.ts +13 -0
- package/dist/dev-warn.js +28 -0
- package/dist/editor-actions/ancestry-folds.d.ts +32 -0
- package/dist/editor-actions/ancestry-folds.js +106 -0
- package/dist/editor-actions/block-edit-core.d.ts +29 -0
- package/dist/editor-actions/block-edit-core.js +277 -0
- package/dist/editor-actions/block-edit-scope.d.ts +79 -0
- package/dist/editor-actions/block-edit-scope.js +76 -0
- package/dist/editor-actions/block-edit.d.ts +8 -0
- package/dist/editor-actions/block-edit.js +111 -0
- package/dist/editor-actions/commit/history.d.ts +9 -0
- package/dist/editor-actions/commit/history.js +77 -0
- package/dist/editor-actions/commit/text-batch.d.ts +34 -0
- package/dist/editor-actions/commit/text-batch.js +61 -0
- package/dist/editor-actions/commit/undo-controller.d.ts +7 -0
- package/dist/editor-actions/commit/undo-controller.js +570 -0
- package/dist/editor-actions/container-block-component.d.ts +85 -0
- package/dist/editor-actions/container-block-component.js +228 -0
- package/dist/editor-actions/container-edit.d.ts +7 -0
- package/dist/editor-actions/container-edit.js +49 -0
- package/dist/editor-actions/container-exit-overrides.d.ts +16 -0
- package/dist/editor-actions/container-exit-overrides.js +38 -0
- package/dist/editor-actions/deps.d.ts +60 -0
- package/dist/editor-actions/deps.js +1 -0
- package/dist/editor-actions/enter-completion.d.ts +25 -0
- package/dist/editor-actions/enter-completion.js +76 -0
- package/dist/editor-actions/focus/focus-dispatch.d.ts +36 -0
- package/dist/editor-actions/focus/focus-dispatch.js +106 -0
- package/dist/editor-actions/focus/focus-landing.d.ts +7 -0
- package/dist/editor-actions/focus/focus-landing.js +39 -0
- package/dist/editor-actions/focus/focus.d.ts +7 -0
- package/dist/editor-actions/focus/focus.js +74 -0
- package/dist/editor-actions/index.d.ts +15 -0
- package/dist/editor-actions/index.js +19 -0
- package/dist/editor-actions/inline-range-commit.d.ts +20 -0
- package/dist/editor-actions/inline-range-commit.js +63 -0
- package/dist/editor-actions/list-context.d.ts +25 -0
- package/dist/editor-actions/list-context.js +285 -0
- package/dist/editor-actions/list-overrides.d.ts +13 -0
- package/dist/editor-actions/list-overrides.js +26 -0
- package/dist/editor-actions/merge-fallback.d.ts +19 -0
- package/dist/editor-actions/merge-fallback.js +27 -0
- package/dist/editor-actions/nested/nested-actions.d.ts +65 -0
- package/dist/editor-actions/nested/nested-actions.js +59 -0
- package/dist/editor-actions/nested/nested-block-edit.d.ts +10 -0
- package/dist/editor-actions/nested/nested-block-edit.js +181 -0
- package/dist/editor-actions/nested/nested-focus.d.ts +9 -0
- package/dist/editor-actions/nested/nested-focus.js +30 -0
- package/dist/editor-actions/paste-coordinator.d.ts +4 -0
- package/dist/editor-actions/paste-coordinator.js +20 -0
- package/dist/editor-actions/plugin/chrome-leaf.d.ts +25 -0
- package/dist/editor-actions/plugin/chrome-leaf.js +80 -0
- package/dist/editor-actions/plugin/container.d.ts +137 -0
- package/dist/editor-actions/plugin/container.js +351 -0
- package/dist/editor-actions/plugin/directive-container.d.ts +13 -0
- package/dist/editor-actions/plugin/directive-container.js +31 -0
- package/dist/editor-actions/reorder-action.d.ts +17 -0
- package/dist/editor-actions/reorder-action.js +104 -0
- package/dist/editor-actions/reorder-drag.d.ts +34 -0
- package/dist/editor-actions/reorder-drag.js +152 -0
- package/dist/editor-actions/replacement-focus.d.ts +27 -0
- package/dist/editor-actions/replacement-focus.js +60 -0
- package/dist/editor-actions/search-replace.d.ts +6 -0
- package/dist/editor-actions/search-replace.js +145 -0
- package/dist/editor-actions/table-context.d.ts +34 -0
- package/dist/editor-actions/table-context.js +292 -0
- package/dist/editor-actions/unwrap-strategies.d.ts +14 -0
- package/dist/editor-actions/unwrap-strategies.js +131 -0
- package/dist/editor-actions/whole-block-focus-surface.d.ts +51 -0
- package/dist/editor-actions/whole-block-focus-surface.js +171 -0
- package/dist/editor-events.d.ts +89 -0
- package/dist/editor-events.js +96 -0
- package/dist/editor-keys.d.ts +197 -0
- package/dist/editor-keys.js +40 -0
- package/dist/editor-props.d.ts +164 -0
- package/dist/editor-props.js +1 -0
- package/dist/editor-rects.d.ts +58 -0
- package/dist/editor-rects.js +114 -0
- package/dist/env.d.ts +12 -0
- package/dist/env.js +20 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.js +19 -0
- package/dist/invariants/commit-paths.d.ts +10 -0
- package/dist/invariants/commit-paths.js +25 -0
- package/dist/invariants/commit-scope.d.ts +9 -0
- package/dist/invariants/commit-scope.js +16 -0
- package/dist/invariants/context-keys.d.ts +7 -0
- package/dist/invariants/context-keys.js +14 -0
- package/dist/invariants/descriptor.d.ts +10 -0
- package/dist/invariants/descriptor.js +24 -0
- package/dist/invariants/inline-transitions.d.ts +23 -0
- package/dist/invariants/inline-transitions.js +52 -0
- package/dist/invariants/install.d.ts +36 -0
- package/dist/invariants/install.js +66 -0
- package/dist/invariants/landable-caret.d.ts +12 -0
- package/dist/invariants/landable-caret.js +31 -0
- package/dist/invariants/marker-css-parity.d.ts +10 -0
- package/dist/invariants/marker-css-parity.js +87 -0
- package/dist/invariants/node-shape.d.ts +44 -0
- package/dist/invariants/node-shape.js +258 -0
- package/dist/invariants/registry.d.ts +126 -0
- package/dist/invariants/registry.js +349 -0
- package/dist/invariants/render-fidelity.d.ts +8 -0
- package/dist/invariants/render-fidelity.js +33 -0
- package/dist/invariants/selection-endpoints.d.ts +19 -0
- package/dist/invariants/selection-endpoints.js +78 -0
- package/dist/invariants/single-node-sink.d.ts +9 -0
- package/dist/invariants/single-node-sink.js +16 -0
- package/dist/invariants/snapshot-integrity.d.ts +17 -0
- package/dist/invariants/snapshot-integrity.js +24 -0
- package/dist/invariants/split-landing.d.ts +8 -0
- package/dist/invariants/split-landing.js +15 -0
- package/dist/invariants/structural-descriptor.d.ts +21 -0
- package/dist/invariants/structural-descriptor.js +50 -0
- package/dist/perf/instruments.d.ts +49 -0
- package/dist/perf/instruments.js +154 -0
- package/dist/perf/use-mount-gauge.svelte.d.ts +1 -0
- package/dist/perf/use-mount-gauge.svelte.js +15 -0
- package/dist/plugin.d.ts +102 -0
- package/dist/plugin.js +156 -0
- package/dist/plugins/admonitions/AdmonitionBlock.svelte +144 -0
- package/dist/plugins/admonitions/AdmonitionBlock.svelte.d.ts +11 -0
- package/dist/plugins/admonitions/admonition-kind.d.ts +8 -0
- package/dist/plugins/admonitions/admonition-kind.js +97 -0
- package/dist/plugins/admonitions/convert-document.d.ts +11 -0
- package/dist/plugins/admonitions/convert-document.js +39 -0
- package/dist/plugins/admonitions/gh-alert.d.ts +13 -0
- package/dist/plugins/admonitions/gh-alert.js +83 -0
- package/dist/plugins/admonitions/github-alert-kind.d.ts +12 -0
- package/dist/plugins/admonitions/github-alert-kind.js +125 -0
- package/dist/plugins/admonitions/index.d.ts +6 -0
- package/dist/plugins/admonitions/index.js +8 -0
- package/dist/plugins/admonitions/kinds.d.ts +26 -0
- package/dist/plugins/admonitions/kinds.js +18 -0
- package/dist/plugins/admonitions/register.d.ts +7 -0
- package/dist/plugins/admonitions/register.js +12 -0
- package/dist/plugins/details/DetailsBlock.svelte +129 -0
- package/dist/plugins/details/DetailsBlock.svelte.d.ts +11 -0
- package/dist/plugins/details/details-disclosure.svelte.d.ts +17 -0
- package/dist/plugins/details/details-disclosure.svelte.js +24 -0
- package/dist/plugins/details/details-kind.d.ts +25 -0
- package/dist/plugins/details/details-kind.js +237 -0
- package/dist/plugins/details/index.d.ts +2 -0
- package/dist/plugins/details/index.js +2 -0
- package/dist/plugins/details/register.d.ts +6 -0
- package/dist/plugins/details/register.js +15 -0
- package/dist/plugins/emoji/emoji-plugin.d.ts +2 -0
- package/dist/plugins/emoji/emoji-plugin.js +10 -0
- package/dist/plugins/emoji/emoji-recognizer.d.ts +18 -0
- package/dist/plugins/emoji/emoji-recognizer.js +63 -0
- package/dist/plugins/emoji/emoji-table.d.ts +1 -0
- package/dist/plugins/emoji/emoji-table.js +1919 -0
- package/dist/plugins/emoji/index.d.ts +3 -0
- package/dist/plugins/emoji/index.js +4 -0
- package/dist/plugins/footnotes/FootnoteDefinition.svelte +103 -0
- package/dist/plugins/footnotes/FootnoteDefinition.svelte.d.ts +13 -0
- package/dist/plugins/footnotes/FootnoteReference.svelte +50 -0
- package/dist/plugins/footnotes/FootnoteReference.svelte.d.ts +4 -0
- package/dist/plugins/footnotes/constants.d.ts +2 -0
- package/dist/plugins/footnotes/constants.js +4 -0
- package/dist/plugins/footnotes/footnote-definition.d.ts +14 -0
- package/dist/plugins/footnotes/footnote-definition.js +147 -0
- package/dist/plugins/footnotes/footnote-lookup.d.ts +9 -0
- package/dist/plugins/footnotes/footnote-lookup.js +33 -0
- package/dist/plugins/footnotes/footnote-numbering.d.ts +23 -0
- package/dist/plugins/footnotes/footnote-numbering.js +78 -0
- package/dist/plugins/footnotes/footnote-reference.d.ts +7 -0
- package/dist/plugins/footnotes/footnote-reference.js +54 -0
- package/dist/plugins/footnotes/footnotes-plugin.d.ts +7 -0
- package/dist/plugins/footnotes/footnotes-plugin.js +17 -0
- package/dist/plugins/footnotes/index.d.ts +5 -0
- package/dist/plugins/footnotes/index.js +6 -0
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.d.ts +17 -0
- package/dist/plugins/highlight-occurrences/highlight-occurrences-plugin.js +31 -0
- package/dist/plugins/highlight-occurrences/index.d.ts +1 -0
- package/dist/plugins/highlight-occurrences/index.js +1 -0
- package/dist/plugins/highlight-occurrences/occurrence-source.d.ts +26 -0
- package/dist/plugins/highlight-occurrences/occurrence-source.js +54 -0
- package/dist/plugins/highlight-occurrences/occurrences.d.ts +33 -0
- package/dist/plugins/highlight-occurrences/occurrences.js +108 -0
- package/dist/plugins/latex/BlockMath.svelte +119 -0
- package/dist/plugins/latex/BlockMath.svelte.d.ts +21 -0
- package/dist/plugins/latex/MathInline.svelte +28 -0
- package/dist/plugins/latex/MathInline.svelte.d.ts +4 -0
- package/dist/plugins/latex/index.d.ts +3 -0
- package/dist/plugins/latex/index.js +4 -0
- package/dist/plugins/latex/latex-kind.d.ts +17 -0
- package/dist/plugins/latex/latex-kind.js +224 -0
- package/dist/plugins/latex/math-completion.d.ts +10 -0
- package/dist/plugins/latex/math-completion.js +19 -0
- package/dist/plugins/latex/math-renderer.d.ts +26 -0
- package/dist/plugins/latex/math-renderer.js +42 -0
- package/dist/plugins/latex/register.d.ts +10 -0
- package/dist/plugins/latex/register.js +23 -0
- package/dist/plugins/latex/renderer.d.ts +13 -0
- package/dist/plugins/latex/renderer.js +34 -0
- package/dist/plugins/mermaid/MermaidBlock.svelte +572 -0
- package/dist/plugins/mermaid/MermaidBlock.svelte.d.ts +11 -0
- package/dist/plugins/mermaid/index.d.ts +3 -0
- package/dist/plugins/mermaid/index.js +3 -0
- package/dist/plugins/mermaid/mermaid-kind.d.ts +38 -0
- package/dist/plugins/mermaid/mermaid-kind.js +176 -0
- package/dist/plugins/mermaid/mermaid-renderer.d.ts +28 -0
- package/dist/plugins/mermaid/mermaid-renderer.js +35 -0
- package/dist/plugins/mermaid/register.d.ts +10 -0
- package/dist/plugins/mermaid/register.js +20 -0
- package/dist/plugins/mermaid/renderer.d.ts +11 -0
- package/dist/plugins/mermaid/renderer.js +53 -0
- package/dist/plugins/parrot/ParrotBlock.svelte +342 -0
- package/dist/plugins/parrot/ParrotBlock.svelte.d.ts +21 -0
- package/dist/plugins/parrot/index.d.ts +1 -0
- package/dist/plugins/parrot/index.js +2 -0
- package/dist/plugins/parrot/parrot-plugin.d.ts +3 -0
- package/dist/plugins/parrot/parrot-plugin.js +49 -0
- package/dist/plugins/toc/TocBlock.svelte +218 -0
- package/dist/plugins/toc/TocBlock.svelte.d.ts +24 -0
- package/dist/plugins/toc/heading-outline.d.ts +28 -0
- package/dist/plugins/toc/heading-outline.js +65 -0
- package/dist/plugins/toc/index.d.ts +2 -0
- package/dist/plugins/toc/index.js +2 -0
- package/dist/plugins/toc/navigation-queue.d.ts +12 -0
- package/dist/plugins/toc/navigation-queue.js +21 -0
- package/dist/plugins/toc/toc-plugin.d.ts +16 -0
- package/dist/plugins/toc/toc-plugin.js +71 -0
- package/dist/presentation-mode.d.ts +32 -0
- package/dist/presentation-mode.js +50 -0
- package/dist/reactivity/block-list-state.svelte.d.ts +22 -0
- package/dist/reactivity/block-list-state.svelte.js +46 -0
- package/dist/reactivity/block-window.svelte.d.ts +41 -0
- package/dist/reactivity/block-window.svelte.js +93 -0
- package/dist/reactivity/content-version.svelte.d.ts +14 -0
- package/dist/reactivity/content-version.svelte.js +16 -0
- package/dist/reactivity/list-windowing.svelte.d.ts +100 -0
- package/dist/reactivity/list-windowing.svelte.js +402 -0
- package/dist/reactivity/measure-batch.d.ts +15 -0
- package/dist/reactivity/measure-batch.js +18 -0
- package/dist/reactivity/publish-ref.svelte.d.ts +54 -0
- package/dist/reactivity/publish-ref.svelte.js +128 -0
- package/dist/reactivity/scope-geometry.d.ts +18 -0
- package/dist/reactivity/scope-geometry.js +29 -0
- package/dist/reactivity/state-registry.d.ts +10 -0
- package/dist/reactivity/state-registry.js +44 -0
- package/dist/reactivity/use-container-windowing.svelte.d.ts +35 -0
- package/dist/reactivity/use-container-windowing.svelte.js +95 -0
- package/dist/reactivity/window-slice.d.ts +11 -0
- package/dist/reactivity/window-slice.js +9 -0
- package/dist/scan-index.d.ts +11 -0
- package/dist/scan-index.js +27 -0
- package/dist/schema/block-commands.d.ts +105 -0
- package/dist/schema/block-commands.js +179 -0
- package/dist/schema/block-completions.d.ts +33 -0
- package/dist/schema/block-completions.js +49 -0
- package/dist/schema/block-component-registry.d.ts +33 -0
- package/dist/schema/block-component-registry.js +33 -0
- package/dist/schema/block-kind-descriptor.d.ts +281 -0
- package/dist/schema/block-kind-descriptor.js +187 -0
- package/dist/schema/block-openers.d.ts +94 -0
- package/dist/schema/block-openers.js +150 -0
- package/dist/schema/built-in-descriptors.d.ts +8 -0
- package/dist/schema/built-in-descriptors.js +560 -0
- package/dist/schema/child-spans.d.ts +25 -0
- package/dist/schema/child-spans.js +161 -0
- package/dist/schema/closure.d.ts +39 -0
- package/dist/schema/closure.js +55 -0
- package/dist/schema/command-id.d.ts +20 -0
- package/dist/schema/command-id.js +42 -0
- package/dist/schema/commands.d.ts +147 -0
- package/dist/schema/commands.js +294 -0
- package/dist/schema/container-raw.d.ts +21 -0
- package/dist/schema/container-raw.js +43 -0
- package/dist/schema/container-rebuilders.d.ts +32 -0
- package/dist/schema/container-rebuilders.js +95 -0
- package/dist/schema/define-plugin-block.d.ts +15 -0
- package/dist/schema/define-plugin-block.js +18 -0
- package/dist/schema/fenced-code-raw.d.ts +43 -0
- package/dist/schema/fenced-code-raw.js +220 -0
- package/dist/schema/global-commands.d.ts +11 -0
- package/dist/schema/global-commands.js +40 -0
- package/dist/schema/inline-construct-policy.d.ts +131 -0
- package/dist/schema/inline-construct-policy.js +96 -0
- package/dist/schema/keybinding-overrides.d.ts +39 -0
- package/dist/schema/keybinding-overrides.js +43 -0
- package/dist/schema/keybindings.d.ts +36 -0
- package/dist/schema/keybindings.js +75 -0
- package/dist/schema/merge-rules.d.ts +28 -0
- package/dist/schema/merge-rules.js +57 -0
- package/dist/schema/opener-priorities.d.ts +16 -0
- package/dist/schema/opener-priorities.js +16 -0
- package/dist/schema/operations.d.ts +110 -0
- package/dist/schema/operations.js +6 -0
- package/dist/schema/plugin-activation.d.ts +13 -0
- package/dist/schema/plugin-activation.js +18 -0
- package/dist/schema/plugin-editor-context.d.ts +33 -0
- package/dist/schema/plugin-editor-context.js +65 -0
- package/dist/schema/plugin-install.d.ts +58 -0
- package/dist/schema/plugin-install.js +132 -0
- package/dist/schema/plugin-kind.d.ts +21 -0
- package/dist/schema/plugin-kind.js +86 -0
- package/dist/schema/plugin-name.d.ts +1 -0
- package/dist/schema/plugin-name.js +7 -0
- package/dist/schema/register-once.d.ts +9 -0
- package/dist/schema/register-once.js +35 -0
- package/dist/schema/registration-checks.d.ts +32 -0
- package/dist/schema/registration-checks.js +122 -0
- package/dist/schema/registration-pending.d.ts +28 -0
- package/dist/schema/registration-pending.js +48 -0
- package/dist/schema/registry-reset.d.ts +7 -0
- package/dist/schema/registry-reset.js +30 -0
- package/dist/schema/registry-view.d.ts +30 -0
- package/dist/schema/registry-view.js +39 -0
- package/dist/schema/reserved-chords.d.ts +35 -0
- package/dist/schema/reserved-chords.js +313 -0
- package/dist/schema/reserved-chrome.d.ts +23 -0
- package/dist/schema/reserved-chrome.js +33 -0
- package/dist/schema/table-cell-raw.d.ts +14 -0
- package/dist/schema/table-cell-raw.js +30 -0
- package/dist/schema/whole-block-unit.d.ts +8 -0
- package/dist/schema/whole-block-unit.js +12 -0
- package/dist/search/document-scan.d.ts +22 -0
- package/dist/search/document-scan.js +39 -0
- package/dist/search/matcher.d.ts +31 -0
- package/dist/search/matcher.js +70 -0
- package/dist/search/regex-executor.d.ts +41 -0
- package/dist/search/regex-executor.js +165 -0
- package/dist/search/replace.d.ts +15 -0
- package/dist/search/replace.js +29 -0
- package/dist/search/search-state.svelte.d.ts +59 -0
- package/dist/search/search-state.svelte.js +231 -0
- package/dist/selection/autoscroll.d.ts +26 -0
- package/dist/selection/autoscroll.js +91 -0
- package/dist/selection/block-hit-test.d.ts +37 -0
- package/dist/selection/block-hit-test.js +59 -0
- package/dist/selection/caret-doors.d.ts +20 -0
- package/dist/selection/caret-doors.js +44 -0
- package/dist/selection/caret-restore.d.ts +15 -0
- package/dist/selection/caret-restore.js +32 -0
- package/dist/selection/char-endpoint-snap.d.ts +15 -0
- package/dist/selection/char-endpoint-snap.js +39 -0
- package/dist/selection/clipboard-text.d.ts +13 -0
- package/dist/selection/clipboard-text.js +314 -0
- package/dist/selection/cross-block/clipboard.d.ts +14 -0
- package/dist/selection/cross-block/clipboard.js +20 -0
- package/dist/selection/cross-block/dispatch.d.ts +78 -0
- package/dist/selection/cross-block/dispatch.js +57 -0
- package/dist/selection/cross-block/format-range.d.ts +38 -0
- package/dist/selection/cross-block/format-range.js +193 -0
- package/dist/selection/cross-block/format-toggle.d.ts +27 -0
- package/dist/selection/cross-block/format-toggle.js +109 -0
- package/dist/selection/cross-block/keydown.d.ts +11 -0
- package/dist/selection/cross-block/keydown.js +339 -0
- package/dist/selection/cross-block/ops.d.ts +56 -0
- package/dist/selection/cross-block/ops.js +210 -0
- package/dist/selection/cross-block/paste.d.ts +8 -0
- package/dist/selection/cross-block/paste.js +156 -0
- package/dist/selection/cross-block/pointer.d.ts +19 -0
- package/dist/selection/cross-block/pointer.js +80 -0
- package/dist/selection/cross-block/type-replace.d.ts +10 -0
- package/dist/selection/cross-block/type-replace.js +129 -0
- package/dist/selection/dead-space-caret.d.ts +39 -0
- package/dist/selection/dead-space-caret.js +173 -0
- package/dist/selection/drag-pointer.d.ts +22 -0
- package/dist/selection/drag-pointer.js +89 -0
- package/dist/selection/gap-caret.d.ts +47 -0
- package/dist/selection/gap-caret.js +72 -0
- package/dist/selection/keyboard-extend.d.ts +43 -0
- package/dist/selection/keyboard-extend.js +257 -0
- package/dist/selection/native-bridge.d.ts +47 -0
- package/dist/selection/native-bridge.js +204 -0
- package/dist/selection/nearest-block.d.ts +43 -0
- package/dist/selection/nearest-block.js +73 -0
- package/dist/selection/path-lookup.d.ts +32 -0
- package/dist/selection/path-lookup.js +132 -0
- package/dist/selection/path-math.d.ts +35 -0
- package/dist/selection/path-math.js +90 -0
- package/dist/selection/pointer-session.d.ts +43 -0
- package/dist/selection/pointer-session.js +111 -0
- package/dist/selection/primitives.d.ts +75 -0
- package/dist/selection/primitives.js +91 -0
- package/dist/selection/range-delete-ceremony.d.ts +85 -0
- package/dist/selection/range-delete-ceremony.js +197 -0
- package/dist/selection/range-delete-chrome.d.ts +39 -0
- package/dist/selection/range-delete-chrome.js +105 -0
- package/dist/selection/range-delete-table-coverage.d.ts +28 -0
- package/dist/selection/range-delete-table-coverage.js +168 -0
- package/dist/selection/range-delete-table.d.ts +16 -0
- package/dist/selection/range-delete-table.js +347 -0
- package/dist/selection/range-delete.d.ts +33 -0
- package/dist/selection/range-delete.js +121 -0
- package/dist/selection/selection-description.d.ts +7 -0
- package/dist/selection/selection-description.js +18 -0
- package/dist/selection/selection-restore.d.ts +46 -0
- package/dist/selection/selection-restore.js +66 -0
- package/dist/selection/selection-state.svelte.d.ts +72 -0
- package/dist/selection/selection-state.svelte.js +247 -0
- package/dist/selection/shared-keydown.d.ts +61 -0
- package/dist/selection/shared-keydown.js +150 -0
- package/dist/selection/table-endpoint-snap.d.ts +55 -0
- package/dist/selection/table-endpoint-snap.js +143 -0
- package/dist/selection/table-rect-extend.d.ts +23 -0
- package/dist/selection/table-rect-extend.js +46 -0
- package/dist/selection/widget-range-paint.d.ts +12 -0
- package/dist/selection/widget-range-paint.js +44 -0
- package/dist/styles/editor-theme.css +151 -0
- package/dist/styles/editor.css +585 -0
- package/dist/testing/conformance-core.d.ts +45 -0
- package/dist/testing/conformance-core.js +105 -0
- package/dist/testing/container-conformance.d.ts +137 -0
- package/dist/testing/container-conformance.js +533 -0
- package/dist/testing/headless-actions.d.ts +37 -0
- package/dist/testing/headless-actions.js +118 -0
- package/dist/testing/inline-conformance.d.ts +50 -0
- package/dist/testing/inline-conformance.js +442 -0
- package/dist/testing/kind-conformance.d.ts +54 -0
- package/dist/testing/kind-conformance.js +325 -0
- package/dist/testing/mount-dom-stubs.d.ts +8 -0
- package/dist/testing/mount-dom-stubs.js +19 -0
- package/dist/testing/parse-convergence.d.ts +14 -0
- package/dist/testing/parse-convergence.js +81 -0
- package/dist/testing.d.ts +20 -0
- package/dist/testing.js +61 -0
- package/dist/tree-operations/blockquote.d.ts +18 -0
- package/dist/tree-operations/blockquote.js +59 -0
- package/dist/tree-operations/children.d.ts +17 -0
- package/dist/tree-operations/children.js +56 -0
- package/dist/tree-operations/cleanup.d.ts +10 -0
- package/dist/tree-operations/cleanup.js +25 -0
- package/dist/tree-operations/clone.d.ts +5 -0
- package/dist/tree-operations/clone.js +43 -0
- package/dist/tree-operations/container-lift.d.ts +9 -0
- package/dist/tree-operations/container-lift.js +29 -0
- package/dist/tree-operations/index.d.ts +16 -0
- package/dist/tree-operations/index.js +14 -0
- package/dist/tree-operations/list/empty-check.d.ts +7 -0
- package/dist/tree-operations/list/empty-check.js +19 -0
- package/dist/tree-operations/list/exit-replacement.d.ts +13 -0
- package/dist/tree-operations/list/exit-replacement.js +49 -0
- package/dist/tree-operations/list/item-partition.d.ts +13 -0
- package/dist/tree-operations/list/item-partition.js +33 -0
- package/dist/tree-operations/list/list-builders.d.ts +44 -0
- package/dist/tree-operations/list/list-builders.js +129 -0
- package/dist/tree-operations/list/ordered-markers.d.ts +36 -0
- package/dist/tree-operations/list/ordered-markers.js +114 -0
- package/dist/tree-operations/list/reconcile-task.d.ts +12 -0
- package/dist/tree-operations/list/reconcile-task.js +47 -0
- package/dist/tree-operations/list/sublist-separator.d.ts +13 -0
- package/dist/tree-operations/list/sublist-separator.js +34 -0
- package/dist/tree-operations/list/terminator.d.ts +17 -0
- package/dist/tree-operations/list/terminator.js +60 -0
- package/dist/tree-operations/list/unwrap-merge.d.ts +29 -0
- package/dist/tree-operations/list/unwrap-merge.js +202 -0
- package/dist/tree-operations/node-ops.d.ts +296 -0
- package/dist/tree-operations/node-ops.js +1428 -0
- package/dist/tree-operations/parse-block.d.ts +3 -0
- package/dist/tree-operations/parse-block.js +8 -0
- package/dist/tree-operations/paste/apply.d.ts +12 -0
- package/dist/tree-operations/paste/apply.js +75 -0
- package/dist/tree-operations/paste/body-write.d.ts +19 -0
- package/dist/tree-operations/paste/body-write.js +53 -0
- package/dist/tree-operations/paste/container-match.d.ts +32 -0
- package/dist/tree-operations/paste/container-match.js +238 -0
- package/dist/tree-operations/paste/container-paste.d.ts +10 -0
- package/dist/tree-operations/paste/container-paste.js +27 -0
- package/dist/tree-operations/paste/dispatch.d.ts +61 -0
- package/dist/tree-operations/paste/dispatch.js +138 -0
- package/dist/tree-operations/paste/find-enclosing-list.d.ts +8 -0
- package/dist/tree-operations/paste/find-enclosing-list.js +30 -0
- package/dist/tree-operations/paste/focus-target.d.ts +27 -0
- package/dist/tree-operations/paste/focus-target.js +40 -0
- package/dist/tree-operations/paste/hooks.d.ts +17 -0
- package/dist/tree-operations/paste/hooks.js +80 -0
- package/dist/tree-operations/paste/list-absorb.d.ts +29 -0
- package/dist/tree-operations/paste/list-absorb.js +106 -0
- package/dist/tree-operations/paste/list-break-out.d.ts +42 -0
- package/dist/tree-operations/paste/list-break-out.js +136 -0
- package/dist/tree-operations/paste/parent-scope.d.ts +17 -0
- package/dist/tree-operations/paste/parent-scope.js +35 -0
- package/dist/tree-operations/paste/paste-deps.d.ts +20 -0
- package/dist/tree-operations/paste/paste-deps.js +6 -0
- package/dist/tree-operations/paste/paste-replacement.d.ts +8 -0
- package/dist/tree-operations/paste/paste-replacement.js +60 -0
- package/dist/tree-operations/paste/paste-transforms.d.ts +25 -0
- package/dist/tree-operations/paste/paste-transforms.js +72 -0
- package/dist/tree-operations/paste/replace-block-at-parent.d.ts +29 -0
- package/dist/tree-operations/paste/replace-block-at-parent.js +75 -0
- package/dist/tree-operations/paste/strategy.d.ts +9 -0
- package/dist/tree-operations/paste/strategy.js +20 -0
- package/dist/tree-operations/paste/table-slice.d.ts +10 -0
- package/dist/tree-operations/paste/table-slice.js +39 -0
- package/dist/tree-operations/paste-surfaces.d.ts +61 -0
- package/dist/tree-operations/paste-surfaces.js +15 -0
- package/dist/tree-operations/path-mutate.d.ts +12 -0
- package/dist/tree-operations/path-mutate.js +20 -0
- package/dist/tree-operations/reorder-unit.d.ts +17 -0
- package/dist/tree-operations/reorder-unit.js +37 -0
- package/dist/tree-operations/reorder.d.ts +13 -0
- package/dist/tree-operations/reorder.js +57 -0
- package/dist/tree-operations/sharing.d.ts +18 -0
- package/dist/tree-operations/sharing.js +14 -0
- package/dist/tree-operations/splice-many.d.ts +9 -0
- package/dist/tree-operations/splice-many.js +22 -0
- package/dist/tree-operations/structural-change.d.ts +65 -0
- package/dist/tree-operations/structural-change.js +117 -0
- package/dist/tree-operations/sub-table-copy.d.ts +6 -0
- package/dist/tree-operations/sub-table-copy.js +43 -0
- package/dist/tree-operations/table-mutations.d.ts +17 -0
- package/dist/tree-operations/table-mutations.js +101 -0
- package/dist/tree-operations/unshare.d.ts +101 -0
- package/dist/tree-operations/unshare.js +248 -0
- package/dist/undo/manager.d.ts +2 -0
- package/dist/undo/manager.js +50 -0
- package/dist/undo/types.d.ts +44 -0
- package/dist/undo/types.js +7 -0
- package/docs/guide/consumer-guide.md +1098 -0
- package/docs/guide/directives.md +223 -0
- package/docs/guide/plugin-api.md +329 -0
- package/docs/guide/plugin-guide/conspiracy.gif +0 -0
- package/docs/guide/plugin-guide/parrot-frames.md +209 -0
- package/docs/guide/plugin-guide/parrot.gif +0 -0
- package/docs/guide/plugin-guide.md +1693 -0
- package/docs/guide/plugin-testing.md +463 -0
- package/package.json +238 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visibility gate and DOM builder for the decoded-entity inline widget. A character reference
|
|
3
|
+
* renders as an atomic widget showing its decoded glyph, but only when that glyph is visible:
|
|
4
|
+
* an entity decoding to nothing drawable (` `, `​`) keeps its literal
|
|
5
|
+
* source span, because an invisible atomic island is a caret trap.
|
|
6
|
+
*/
|
|
7
|
+
import { mintWidgetShell } from './inline-widgets';
|
|
8
|
+
// Zero-advance categories only. `Mn`/`Me` are here because a lone combining mark (`́`)
|
|
9
|
+
// has nothing to combine with and draws nothing; spacing marks (`Mc`) keep real advance and
|
|
10
|
+
// stay widgets. The empty string (a non-decoding node) is invisible by the same test.
|
|
11
|
+
const RENDERS_NO_GLYPH = /^[\p{Cc}\p{Cf}\p{Zs}\p{Zl}\p{Zp}\p{Mn}\p{Me}]*$/u;
|
|
12
|
+
/** True when the decoded value draws at least one glyph, so it earns a widget. */
|
|
13
|
+
export function entityRendersGlyph(decoded) {
|
|
14
|
+
return decoded !== undefined && !RENDERS_NO_GLYPH.test(decoded);
|
|
15
|
+
}
|
|
16
|
+
/** Source bytes ride the shell's `data-source-*`, so the raw-aware walk reads back `©`. */
|
|
17
|
+
export function buildEntityWidget(node) {
|
|
18
|
+
const shell = mintWidgetShell('md-entity-widget', node);
|
|
19
|
+
shell.textContent = node.decoded ?? '';
|
|
20
|
+
return shell;
|
|
21
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Toggle an inline format inside a prose block. Over a SELECTION the direction is parse coverage,
|
|
3
|
+
* not edge adjacency: a covered range unapplies (aligned strip, else split, over every covering run
|
|
4
|
+
* in turn), overlapping or abutting runs apply over their union, a bare range wraps. Where the mode
|
|
5
|
+
* PAINTS delimiters the strip and the wrap write literally; every other candidate declines unless it
|
|
6
|
+
* verifies. At a COLLAPSED CARET: unwrap the span, else drop the empty pair, else insert one
|
|
7
|
+
* (live-mode.md § 4.3). Every write clamps to the CONTENT range: a marker in `# ` changes the kind.
|
|
8
|
+
*/
|
|
9
|
+
import { type PresentationMode } from '../../presentation-mode';
|
|
10
|
+
import { type InlineMarkKind } from '../../schema/inline-construct-policy';
|
|
11
|
+
import { type ContentRange } from './index';
|
|
12
|
+
/** Named fields, because the two ranges and the display are all offsets into the same string:
|
|
13
|
+
* a swapped content-and-selection pair type-checks and splices markers into structural bytes. */
|
|
14
|
+
export interface InlineFormatEdit {
|
|
15
|
+
/** The block's display bytes — its raw without the trailing line ending. */
|
|
16
|
+
display: string;
|
|
17
|
+
/** The bytes the block's own kind calls content; every write clamps into them. */
|
|
18
|
+
content: ContentRange;
|
|
19
|
+
selection: {
|
|
20
|
+
start: number;
|
|
21
|
+
end: number;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export interface ToggleInlineFormatResult {
|
|
25
|
+
newDisplay: string;
|
|
26
|
+
newSelStart: number;
|
|
27
|
+
newSelEnd: number;
|
|
28
|
+
}
|
|
29
|
+
/** Null for a kind whose row declares no mark, or for a press whose every candidate fails its
|
|
30
|
+
* verification: the vocabulary lives on the row, so a kind without one has no delimiters this
|
|
31
|
+
* seam could write, and a toggle's sound fallback is not writing. */
|
|
32
|
+
export declare function toggleInlineFormat(edit: InlineFormatEdit, format: InlineMarkKind, mode: PresentationMode | undefined): ToggleInlineFormatResult | null;
|
|
33
|
+
/** Whether a toggle right now would UNAPPLY — the pressed-state a toolbar paints. The same arms
|
|
34
|
+
* the toggle routes by, asked without emitting: a caret inside the construct, a selection
|
|
35
|
+
* carrying its own markers, flanked by them, or covered by a same-format construct. */
|
|
36
|
+
export declare function isInlineFormatActive(edit: InlineFormatEdit, format: InlineMarkKind): boolean;
|
|
37
|
+
/** The pressed state a result would paint: the same read, over the bytes and range it hands back.
|
|
38
|
+
* One home for the after-read, so the seam's own direction check and the ladder guard cannot
|
|
39
|
+
* drift on the content-end arithmetic. */
|
|
40
|
+
export declare function isInlineFormatActiveAfter(edit: InlineFormatEdit, result: ToggleInlineFormatResult, format: InlineMarkKind): boolean;
|
|
41
|
+
/** Every registered mark the edit's range already carries. */
|
|
42
|
+
export declare function activeInlineFormats(edit: InlineFormatEdit): Set<InlineMarkKind>;
|
|
43
|
+
/** Which of `candidates` the range carries, off ONE parse of the block. A toolbar asks once per
|
|
44
|
+
* button on every selection change and every answer is the same walk; taking candidates rather
|
|
45
|
+
* than the vocabulary is what lets a range's running intersection stop re-asking ruled-out marks. */
|
|
46
|
+
export declare function inlineFormatsCovering(edit: InlineFormatEdit, candidates: Iterable<InlineMarkKind>): Set<InlineMarkKind>;
|
|
47
|
+
/** The same read, one id at a time, with consecutive asks over one block state sharing the parse:
|
|
48
|
+
* a toolbar's buttons arrive as N separate calls, and only the caller knows they are one repaint.
|
|
49
|
+
* One slot, since the previous state is dead the moment a keystroke or the caret moves. */
|
|
50
|
+
export declare function createInlineFormatActiveMemo(): (edit: InlineFormatEdit, format: InlineMarkKind) => boolean;
|
|
@@ -0,0 +1,533 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Toggle an inline format inside a prose block. Over a SELECTION the direction is parse coverage,
|
|
3
|
+
* not edge adjacency: a covered range unapplies (aligned strip, else split, over every covering run
|
|
4
|
+
* in turn), overlapping or abutting runs apply over their union, a bare range wraps. Where the mode
|
|
5
|
+
* PAINTS delimiters the strip and the wrap write literally; every other candidate declines unless it
|
|
6
|
+
* verifies. At a COLLAPSED CARET: unwrap the span, else drop the empty pair, else insert one
|
|
7
|
+
* (live-mode.md § 4.3). Every write clamps to the CONTENT range: a marker in `# ` changes the kind.
|
|
8
|
+
*/
|
|
9
|
+
import { recordFormatCoverageRead } from '../../perf/instruments';
|
|
10
|
+
import { paintsFocusedMarkers } from '../../presentation-mode';
|
|
11
|
+
import { getInlineMarkPolicy, listInlineMarks } from '../../schema/inline-construct-policy';
|
|
12
|
+
import { constructContentRange, inlineDescendants, parseInline } from './index';
|
|
13
|
+
import { CONTENT_VISIBILITY, renderedText } from './visibility';
|
|
14
|
+
/** Null for a kind whose row declares no mark, or for a press whose every candidate fails its
|
|
15
|
+
* verification: the vocabulary lives on the row, so a kind without one has no delimiters this
|
|
16
|
+
* seam could write, and a toggle's sound fallback is not writing. */
|
|
17
|
+
export function toggleInlineFormat(edit, format, mode) {
|
|
18
|
+
const mark = getInlineMarkPolicy(format);
|
|
19
|
+
if (!mark)
|
|
20
|
+
return null;
|
|
21
|
+
const { display, content, selection } = edit;
|
|
22
|
+
const start = clampToContent(selection.start, content);
|
|
23
|
+
const end = clampToContent(selection.end, content);
|
|
24
|
+
// The same bounds the block itself parses with, so no construct can straddle the structural
|
|
25
|
+
// bytes the clamp above keeps the write out of.
|
|
26
|
+
const inlines = parseInline(display, content.start, content.end);
|
|
27
|
+
if (start === end)
|
|
28
|
+
return toggleAtCaret(display, inlines, start, format, mark);
|
|
29
|
+
// Painted delimiters are the mode's own answer, so those modes write their candidate unverified.
|
|
30
|
+
// The preview rungs paint: this seam only writes into the block those rungs reveal.
|
|
31
|
+
const paints = paintsFocusedMarkers(mode ?? 'source');
|
|
32
|
+
const covering = coveringSpansOf(inlines, start, end, format);
|
|
33
|
+
// A strip sheds ONE run, so where a second of the same kind covers the selection too, the answer
|
|
34
|
+
// is the covering arm's split: stripping there leaves the press's own read still active.
|
|
35
|
+
const sole = covering.length > 1 ? null : soleStripCandidate(display, inlines, start, end, format);
|
|
36
|
+
if (sole)
|
|
37
|
+
return paints || preservesScreen(sole, edit, screenOf(display, content)) ? sole : null;
|
|
38
|
+
// The flank strip rewrites bytes OUTSIDE the selection, and byte equality can mistake a nested
|
|
39
|
+
// run's delimiters for the enclosing one's, so its candidate verifies like the split's.
|
|
40
|
+
const enclosing = enclosingSpanOf(inlines, start, end, format);
|
|
41
|
+
if (enclosing && flanksAreItsMarkers(display, start, end, enclosing)) {
|
|
42
|
+
const flank = firstFlipVerified([flankStrip(display, start, end, enclosing)], edit, format, 'unapply');
|
|
43
|
+
if (flank)
|
|
44
|
+
return flank;
|
|
45
|
+
}
|
|
46
|
+
if (covering.length > 0)
|
|
47
|
+
return firstFlipVerified(covering.flatMap((span) => splitCandidates(display, inlines, span, start, end, format)), edit, format, 'unapply');
|
|
48
|
+
const union = formatUnionOf(inlines, start, end, format);
|
|
49
|
+
if (union)
|
|
50
|
+
return firstFlipVerified(absorbCandidates(display, inlines, union, format, mark), edit, format, 'apply');
|
|
51
|
+
// A wrap whose markers do not paint owes split and absorb's coverage check: bytes that re-pair
|
|
52
|
+
// against a neighbouring run leave the range unformatted with nothing on screen to say so.
|
|
53
|
+
const wraps = wrapCandidates(display, inlines, start, end, mark);
|
|
54
|
+
return paints ? (wraps[0] ?? null) : firstFlipVerified(wraps, edit, format, 'apply');
|
|
55
|
+
}
|
|
56
|
+
/** Whether a toggle right now would UNAPPLY — the pressed-state a toolbar paints. The same arms
|
|
57
|
+
* the toggle routes by, asked without emitting: a caret inside the construct, a selection
|
|
58
|
+
* carrying its own markers, flanked by them, or covered by a same-format construct. */
|
|
59
|
+
export function isInlineFormatActive(edit, format) {
|
|
60
|
+
return coverageCarries(coverageOf(edit), format);
|
|
61
|
+
}
|
|
62
|
+
/** The pressed state a result would paint: the same read, over the bytes and range it hands back.
|
|
63
|
+
* One home for the after-read, so the seam's own direction check and the ladder guard cannot
|
|
64
|
+
* drift on the content-end arithmetic. */
|
|
65
|
+
export function isInlineFormatActiveAfter(edit, result, format) {
|
|
66
|
+
return isInlineFormatActive({
|
|
67
|
+
display: result.newDisplay,
|
|
68
|
+
content: shiftedContent(edit.content, edit.display, result),
|
|
69
|
+
selection: { start: result.newSelStart, end: result.newSelEnd }
|
|
70
|
+
}, format);
|
|
71
|
+
}
|
|
72
|
+
/** Every registered mark the edit's range already carries. */
|
|
73
|
+
export function activeInlineFormats(edit) {
|
|
74
|
+
return inlineFormatsCovering(edit, listInlineMarks().map((entry) => entry.kind));
|
|
75
|
+
}
|
|
76
|
+
/** Which of `candidates` the range carries, off ONE parse of the block. A toolbar asks once per
|
|
77
|
+
* button on every selection change and every answer is the same walk; taking candidates rather
|
|
78
|
+
* than the vocabulary is what lets a range's running intersection stop re-asking ruled-out marks. */
|
|
79
|
+
export function inlineFormatsCovering(edit, candidates) {
|
|
80
|
+
const coverage = coverageOf(edit);
|
|
81
|
+
const carried = new Set();
|
|
82
|
+
for (const kind of candidates)
|
|
83
|
+
if (coverageCarries(coverage, kind))
|
|
84
|
+
carried.add(kind);
|
|
85
|
+
return carried;
|
|
86
|
+
}
|
|
87
|
+
/** The same read, one id at a time, with consecutive asks over one block state sharing the parse:
|
|
88
|
+
* a toolbar's buttons arrive as N separate calls, and only the caller knows they are one repaint.
|
|
89
|
+
* One slot, since the previous state is dead the moment a keystroke or the caret moves. */
|
|
90
|
+
export function createInlineFormatActiveMemo() {
|
|
91
|
+
let slot = null;
|
|
92
|
+
return (edit, format) => {
|
|
93
|
+
if (!slot || !sameEdit(slot.edit, edit))
|
|
94
|
+
slot = { edit, coverage: coverageOf(edit) };
|
|
95
|
+
return coverageCarries(slot.coverage, format);
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function coverageOf(edit) {
|
|
99
|
+
recordFormatCoverageRead();
|
|
100
|
+
const { display, content, selection } = edit;
|
|
101
|
+
const start = clampToContent(selection.start, content);
|
|
102
|
+
const end = clampToContent(selection.end, content);
|
|
103
|
+
const inlines = parseInline(display, content.start, content.end);
|
|
104
|
+
// A selection spanning the whole display is the same parse, byte bounds included — which is
|
|
105
|
+
// every middle block of a cross-block range, so the second parse is worth not making.
|
|
106
|
+
const sliceIsDisplay = start === 0 && end === display.length;
|
|
107
|
+
return {
|
|
108
|
+
display,
|
|
109
|
+
start,
|
|
110
|
+
end,
|
|
111
|
+
inlines,
|
|
112
|
+
sliceNodes: start === end
|
|
113
|
+
? []
|
|
114
|
+
: sliceIsDisplay
|
|
115
|
+
? inlines
|
|
116
|
+
: parseInline(display.slice(start, end), 0, end - start)
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/** The memo's key: field-wise, where the cross-block sibling composes a string, because the
|
|
120
|
+
* display here is the block's whole raw and building a key would cost what the memo saves. */
|
|
121
|
+
function sameEdit(a, b) {
|
|
122
|
+
return (a.display === b.display &&
|
|
123
|
+
a.content.start === b.content.start &&
|
|
124
|
+
a.content.end === b.content.end &&
|
|
125
|
+
a.selection.start === b.selection.start &&
|
|
126
|
+
a.selection.end === b.selection.end);
|
|
127
|
+
}
|
|
128
|
+
/** The one home for "does this range carry this mark", so every reader asks the same guards —
|
|
129
|
+
* including the mark-row test, which a kind with no vocabulary has to fail rather than parse. */
|
|
130
|
+
function coverageCarries({ display, start, end, inlines, sliceNodes }, format) {
|
|
131
|
+
if (!getInlineMarkPolicy(format))
|
|
132
|
+
return false;
|
|
133
|
+
if (start === end)
|
|
134
|
+
return enclosingSpanOf(inlines, start, start, format) !== null;
|
|
135
|
+
if (soleSpanOfSelection(sliceNodes, inlines, start, end, format))
|
|
136
|
+
return true;
|
|
137
|
+
const enclosing = enclosingSpanOf(inlines, start, end, format);
|
|
138
|
+
if (enclosing && flanksAreItsMarkers(display, start, end, enclosing))
|
|
139
|
+
return true;
|
|
140
|
+
return coveringSpansOf(inlines, start, end, format).length > 0;
|
|
141
|
+
}
|
|
142
|
+
// ── Aligned unapply ──────────────────────────────────────────────────────────
|
|
143
|
+
/** The selection carries its own flanking markers (the user selected `**word**`): exactly one
|
|
144
|
+
* span covering the whole slice, so the strip can't orphan markers on `**a** **b**`. It rewrites
|
|
145
|
+
* only selected bytes, so it keeps the press's literal reading, and it sheds the runs of its own
|
|
146
|
+
* kind inside that reading, or a whole-range unapply would leave part of the range formatted. */
|
|
147
|
+
function soleStripCandidate(display, inlines, start, end, format) {
|
|
148
|
+
const slice = display.slice(start, end);
|
|
149
|
+
const sliceNodes = parseInline(slice, 0, slice.length);
|
|
150
|
+
const selfSpan = soleSpanOfSelection(sliceNodes, inlines, start, end, format);
|
|
151
|
+
if (!selfSpan)
|
|
152
|
+
return null;
|
|
153
|
+
const unwrapped = stripKindMarkers(display, inlines, format, start + selfSpan.contentStart, start + selfSpan.contentEnd);
|
|
154
|
+
return {
|
|
155
|
+
newDisplay: display.slice(0, start) + unwrapped + display.slice(end),
|
|
156
|
+
newSelStart: start,
|
|
157
|
+
newSelEnd: start + unwrapped.length
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/** Markers outside the selection (`word` inside `*word*`), stripped at the selection's flanks
|
|
161
|
+
* rather than the construct's own run, so a `***word***` stack sheds one layer by run
|
|
162
|
+
* arithmetic; the construct check is what makes `**word**` toggled to emphasis nest instead. */
|
|
163
|
+
function flankStrip(display, start, end, span) {
|
|
164
|
+
const mLen = markerLengthOf(span);
|
|
165
|
+
return {
|
|
166
|
+
newDisplay: display.slice(0, start - mLen) + display.slice(start, end) + display.slice(end + mLen),
|
|
167
|
+
newSelStart: start - mLen,
|
|
168
|
+
newSelEnd: end - mLen
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
// ── Split unapply ────────────────────────────────────────────────────────────
|
|
172
|
+
/**
|
|
173
|
+
* The construct re-emitted around the selection: each non-empty half keeps the construct's own
|
|
174
|
+
* delimiter run, and a half's boundary whitespace yields a second candidate with it moved outside,
|
|
175
|
+
* since the symmetric runs cannot close against a space. The middle sheds the markers of any
|
|
176
|
+
* same-format construct it wholly contains, or it would reload still formatted.
|
|
177
|
+
*/
|
|
178
|
+
function splitCandidates(display, inlines, span, start, end, format) {
|
|
179
|
+
const cutStart = Math.max(start, span.contentStart);
|
|
180
|
+
const cutEnd = Math.min(end, span.contentEnd);
|
|
181
|
+
// A selection wholly inside the run's delimiters clamps to nothing; emitting there writes the
|
|
182
|
+
// bytes unchanged and collapses the selection onto a caret.
|
|
183
|
+
if (cutEnd <= cutStart)
|
|
184
|
+
return [];
|
|
185
|
+
if (!cutsLandCleanly(inlines, { start: cutStart, end: cutEnd }, span))
|
|
186
|
+
return [];
|
|
187
|
+
const opener = display.slice(span.start, span.contentStart);
|
|
188
|
+
const closer = display.slice(span.contentEnd, span.end);
|
|
189
|
+
const middle = stripKindMarkers(display, inlines, format, cutStart, cutEnd);
|
|
190
|
+
const prefix = display.slice(0, span.start);
|
|
191
|
+
const out = [];
|
|
192
|
+
for (const left of halfVariants(display.slice(span.contentStart, cutStart), opener, closer))
|
|
193
|
+
for (const right of halfVariants(display.slice(cutEnd, span.contentEnd), opener, closer))
|
|
194
|
+
out.push({
|
|
195
|
+
newDisplay: prefix + left + middle + right + display.slice(span.end),
|
|
196
|
+
newSelStart: prefix.length + left.length,
|
|
197
|
+
newSelEnd: prefix.length + left.length + middle.length
|
|
198
|
+
});
|
|
199
|
+
return out;
|
|
200
|
+
}
|
|
201
|
+
/** A kept-whitespace emission first, then one with the boundary whitespace moved outside the
|
|
202
|
+
* delimiters; a half that is empty or all whitespace carries no delimiters at all. */
|
|
203
|
+
function halfVariants(text, opener, closer) {
|
|
204
|
+
const lead = leadingWs(text);
|
|
205
|
+
if (lead === text)
|
|
206
|
+
return [text];
|
|
207
|
+
const kept = opener + text + closer;
|
|
208
|
+
const trail = trailingWs(text);
|
|
209
|
+
if (!lead && !trail)
|
|
210
|
+
return [kept];
|
|
211
|
+
return [
|
|
212
|
+
kept,
|
|
213
|
+
lead + opener + text.slice(lead.length, text.length - trail.length) + closer + trail
|
|
214
|
+
];
|
|
215
|
+
}
|
|
216
|
+
// ── Absorb apply ─────────────────────────────────────────────────────────────
|
|
217
|
+
/**
|
|
218
|
+
* The selection grown over every same-format construct it touches, to a fixed point. Only
|
|
219
|
+
* recursive-content constructs join: one holding literal text (a code span) means its delimiters
|
|
220
|
+
* are honest content inside any wider span, so merging would rewrite what the reader sees.
|
|
221
|
+
*/
|
|
222
|
+
function formatUnionOf(inlines, start, end, format) {
|
|
223
|
+
const spans = [];
|
|
224
|
+
for (const node of inlineDescendants(inlines)) {
|
|
225
|
+
if (node.kind !== format || !node.children)
|
|
226
|
+
continue;
|
|
227
|
+
const span = spanOf(node);
|
|
228
|
+
if (span)
|
|
229
|
+
spans.push(span);
|
|
230
|
+
}
|
|
231
|
+
let from = start;
|
|
232
|
+
let to = end;
|
|
233
|
+
let touched = false;
|
|
234
|
+
let grew = true;
|
|
235
|
+
while (grew) {
|
|
236
|
+
grew = false;
|
|
237
|
+
for (const span of spans) {
|
|
238
|
+
if (span.end < from || span.start > to)
|
|
239
|
+
continue;
|
|
240
|
+
touched = true;
|
|
241
|
+
if (span.start < from || span.end > to) {
|
|
242
|
+
from = Math.min(from, span.start);
|
|
243
|
+
to = Math.max(to, span.end);
|
|
244
|
+
grew = true;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
return touched ? { start: from, end: to } : null;
|
|
249
|
+
}
|
|
250
|
+
function absorbCandidates(display, inlines, union, format, mark) {
|
|
251
|
+
if (!cutsLandCleanly(inlines, union, union))
|
|
252
|
+
return [];
|
|
253
|
+
const stripped = stripKindMarkers(display, inlines, format, union.start, union.end);
|
|
254
|
+
const prefix = display.slice(0, union.start);
|
|
255
|
+
const suffix = display.slice(union.end);
|
|
256
|
+
const wrapAt = (lead, core, trail) => {
|
|
257
|
+
const wrapped = wrapSlice(core, mark);
|
|
258
|
+
return {
|
|
259
|
+
newDisplay: prefix + lead + wrapped + trail + suffix,
|
|
260
|
+
newSelStart: prefix.length + lead.length,
|
|
261
|
+
newSelEnd: prefix.length + lead.length + wrapped.length
|
|
262
|
+
};
|
|
263
|
+
};
|
|
264
|
+
const out = [wrapAt('', stripped, '')];
|
|
265
|
+
const lead = leadingWs(stripped);
|
|
266
|
+
const trail = trailingWs(stripped);
|
|
267
|
+
if ((lead || trail) && lead.length + trail.length < stripped.length)
|
|
268
|
+
out.push(wrapAt(lead, stripped.slice(lead.length, stripped.length - trail.length), trail));
|
|
269
|
+
return out;
|
|
270
|
+
}
|
|
271
|
+
/** Whether a rewrite of `within` may splice at both `cuts`: each has to land where a byte splice
|
|
272
|
+
* can, in a text run or on a construct boundary, never strictly inside another construct's bytes —
|
|
273
|
+
* a stranded delimiter re-pairs with whatever run the parse finds next, which can preserve the
|
|
274
|
+
* text while reformatting content nobody selected. Split, absorb and the wrap all ask here. */
|
|
275
|
+
function cutsLandCleanly(inlines, cuts, within) {
|
|
276
|
+
for (const node of inlineDescendants(inlines)) {
|
|
277
|
+
if (node.kind === 'text')
|
|
278
|
+
continue;
|
|
279
|
+
if (node.start <= within.start && within.end <= node.end)
|
|
280
|
+
continue;
|
|
281
|
+
if (node.start < cuts.start && cuts.start < node.end)
|
|
282
|
+
return false;
|
|
283
|
+
if (node.start < cuts.end && cuts.end < node.end)
|
|
284
|
+
return false;
|
|
285
|
+
}
|
|
286
|
+
return true;
|
|
287
|
+
}
|
|
288
|
+
/** The bytes of `[from, to)` with the delimiter runs of every same-format construct lying wholly
|
|
289
|
+
* inside removed; one straddling the range keeps its markers, for the verifier to judge. */
|
|
290
|
+
function stripKindMarkers(display, inlines, format, from, to) {
|
|
291
|
+
const cuts = [];
|
|
292
|
+
for (const node of inlineDescendants(inlines)) {
|
|
293
|
+
if (node.kind !== format)
|
|
294
|
+
continue;
|
|
295
|
+
const span = spanOf(node);
|
|
296
|
+
if (!span || span.start < from || span.end > to)
|
|
297
|
+
continue;
|
|
298
|
+
cuts.push([span.start, span.contentStart], [span.contentEnd, span.end]);
|
|
299
|
+
}
|
|
300
|
+
cuts.sort((a, b) => a[0] - b[0]);
|
|
301
|
+
let out = '';
|
|
302
|
+
let at = from;
|
|
303
|
+
for (const [cutFrom, cutTo] of cuts) {
|
|
304
|
+
out += display.slice(at, cutFrom);
|
|
305
|
+
at = cutTo;
|
|
306
|
+
}
|
|
307
|
+
return out + display.slice(at, to);
|
|
308
|
+
}
|
|
309
|
+
// ── Wrap ─────────────────────────────────────────────────────────────────────
|
|
310
|
+
/**
|
|
311
|
+
* What a bare wrap could mean, what it literally says first. Only the wrap has a second reading:
|
|
312
|
+
* markdown opens and closes a run against a word, never whitespace, so a boundary space goes to
|
|
313
|
+
* the plain text beside the run, as `live-split-rebalance` reads the same problem. Either reading
|
|
314
|
+
* needs both its endpoints to be legal cuts: markers spliced into a construct's bytes re-pair.
|
|
315
|
+
*/
|
|
316
|
+
function wrapCandidates(display, inlines, start, end, mark) {
|
|
317
|
+
const core = trimmedRange(display, start, end);
|
|
318
|
+
const readings = core === null ? [{ start, end }] : [{ start, end }, core];
|
|
319
|
+
return readings
|
|
320
|
+
.filter((range) => cutsLandCleanly(inlines, range, range))
|
|
321
|
+
.map((range) => wrapRange(display, range.start, range.end, mark));
|
|
322
|
+
}
|
|
323
|
+
/** The selection minus its boundary whitespace, or null when there is none to trim or nothing
|
|
324
|
+
* left once it goes. */
|
|
325
|
+
function trimmedRange(display, start, end) {
|
|
326
|
+
let from = start;
|
|
327
|
+
let to = end;
|
|
328
|
+
while (from < to && /\s/.test(display[from]))
|
|
329
|
+
from++;
|
|
330
|
+
while (to > from && /\s/.test(display[to - 1]))
|
|
331
|
+
to--;
|
|
332
|
+
return (from === start && to === end) || from === to ? null : { start: from, end: to };
|
|
333
|
+
}
|
|
334
|
+
function wrapRange(display, start, end, mark) {
|
|
335
|
+
const wrapped = wrapSlice(display.slice(start, end), mark);
|
|
336
|
+
return {
|
|
337
|
+
newDisplay: display.slice(0, start) + wrapped + display.slice(end),
|
|
338
|
+
newSelStart: start,
|
|
339
|
+
newSelEnd: start + wrapped.length
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
// ── Verification ─────────────────────────────────────────────────────────────
|
|
343
|
+
/** A toggle changes formatting, never the text on screen, so the render path's own reading of the
|
|
344
|
+
* content is what a candidate has to leave unchanged (live-mode.md § 2). */
|
|
345
|
+
function screenOf(display, content) {
|
|
346
|
+
return renderedText(parseInline(display, content.start, content.end), display, CONTENT_VISIBILITY);
|
|
347
|
+
}
|
|
348
|
+
function preservesScreen(candidate, edit, shown) {
|
|
349
|
+
const { display, content } = edit;
|
|
350
|
+
return screenOf(candidate.newDisplay, shiftedContent(content, display, candidate)) === shown;
|
|
351
|
+
}
|
|
352
|
+
/** Both checks a candidate owes wherever its own bytes are not the mode's answer: the content text
|
|
353
|
+
* unchanged, and the selection's coverage actually flipped — text preservation alone admits a
|
|
354
|
+
* nested pair that leaves the range formatted exactly as it was. */
|
|
355
|
+
function firstFlipVerified(candidates, edit, format, direction) {
|
|
356
|
+
const { display, content } = edit;
|
|
357
|
+
const shown = screenOf(display, content);
|
|
358
|
+
return (candidates.find((candidate) => preservesScreen(candidate, edit, shown) &&
|
|
359
|
+
coverageFlipped(candidate, shiftedContent(content, display, candidate), format, direction)) ?? null);
|
|
360
|
+
}
|
|
361
|
+
/** Whether NO same-format run is left overlapping the selection, or one covers it whole — the
|
|
362
|
+
* press's direction, asked of the bytes it would write. */
|
|
363
|
+
function coverageFlipped(candidate, content, format, direction) {
|
|
364
|
+
const { newDisplay, newSelStart: from, newSelEnd: to } = candidate;
|
|
365
|
+
const inlines = parseInline(newDisplay, content.start, content.end);
|
|
366
|
+
if (direction === 'apply')
|
|
367
|
+
return coveringSpansOf(inlines, from, to, format).length > 0;
|
|
368
|
+
const spans = [];
|
|
369
|
+
for (const node of inlineDescendants(inlines))
|
|
370
|
+
if (node.kind === format)
|
|
371
|
+
spans.push({ start: node.start, end: node.end });
|
|
372
|
+
return spans.every((span) => span.end <= from || to <= span.start);
|
|
373
|
+
}
|
|
374
|
+
/** The write clamps into the content, so only its END moves, by what the candidate added. */
|
|
375
|
+
function shiftedContent(content, display, candidate) {
|
|
376
|
+
return { start: content.start, end: content.end + candidate.newDisplay.length - display.length };
|
|
377
|
+
}
|
|
378
|
+
// ── Caret ────────────────────────────────────────────────────────────────────
|
|
379
|
+
function toggleAtCaret(display, inlines, caret, format, mark) {
|
|
380
|
+
const enclosing = enclosingSpanOf(inlines, caret, caret, format);
|
|
381
|
+
if (enclosing) {
|
|
382
|
+
const mLen = markerLengthOf(enclosing);
|
|
383
|
+
return {
|
|
384
|
+
newDisplay: display.slice(0, enclosing.start) +
|
|
385
|
+
display.slice(enclosing.contentStart, enclosing.contentEnd) +
|
|
386
|
+
display.slice(enclosing.end),
|
|
387
|
+
newSelStart: caret - mLen,
|
|
388
|
+
newSelEnd: caret - mLen
|
|
389
|
+
};
|
|
390
|
+
}
|
|
391
|
+
const markers = mark.markerBytes;
|
|
392
|
+
const mLen = markers.length;
|
|
393
|
+
// The empty pair the previous press inserted; there is no span to find, since `****` parses as
|
|
394
|
+
// literal text. Removal is the exact inverse of the insert below, so the pair must be a run of
|
|
395
|
+
// its own: a marker character abutting either side means these are bytes the user wrote, and
|
|
396
|
+
// this arm only runs where the mode paints them.
|
|
397
|
+
if (isLoneEmptyPair(display, caret, markers)) {
|
|
398
|
+
return {
|
|
399
|
+
newDisplay: display.slice(0, caret - mLen) + display.slice(caret + mLen),
|
|
400
|
+
newSelStart: caret - mLen,
|
|
401
|
+
newSelEnd: caret - mLen
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
return {
|
|
405
|
+
newDisplay: display.slice(0, caret) + markers + markers + display.slice(caret),
|
|
406
|
+
newSelStart: caret + mLen,
|
|
407
|
+
newSelEnd: caret + mLen
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
/** Both halves at the caret, with no marker character abutting the pair on either side. */
|
|
411
|
+
function isLoneEmptyPair(display, caret, markers) {
|
|
412
|
+
const mLen = markers.length;
|
|
413
|
+
const start = caret - mLen;
|
|
414
|
+
if (start < 0)
|
|
415
|
+
return false;
|
|
416
|
+
return (display.slice(start, caret) === markers &&
|
|
417
|
+
display.slice(caret, caret + mLen) === markers &&
|
|
418
|
+
display[start - 1] !== markers[0] &&
|
|
419
|
+
display[caret + mLen] !== markers[mLen - 1]);
|
|
420
|
+
}
|
|
421
|
+
/** Both delimiters of a construct are the same run, so the bytes its content leaves over split
|
|
422
|
+
* evenly — which is how a code span's content-sized fence is read back off the parse. */
|
|
423
|
+
function markerLengthOf(span) {
|
|
424
|
+
return span.contentStart - span.start;
|
|
425
|
+
}
|
|
426
|
+
function spanOf(node) {
|
|
427
|
+
const content = constructContentRange(node);
|
|
428
|
+
if (!content || content.start <= node.start)
|
|
429
|
+
return null;
|
|
430
|
+
return { start: node.start, end: node.end, contentStart: content.start, contentEnd: content.end };
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* The innermost construct of this kind whose CONTENT covers `[start, end]`, off the FULL-context
|
|
434
|
+
* parse: `*word*` carved from `**word**` and from `***word***` read identically in isolation, but
|
|
435
|
+
* only the latter sits inside an emphasis span.
|
|
436
|
+
*/
|
|
437
|
+
function enclosingSpanOf(inlines, start, end, format) {
|
|
438
|
+
let found = null;
|
|
439
|
+
for (const node of inlineDescendants(inlines)) {
|
|
440
|
+
if (node.kind !== format)
|
|
441
|
+
continue;
|
|
442
|
+
const span = spanOf(node);
|
|
443
|
+
if (span && span.contentStart <= start && end <= span.contentEnd)
|
|
444
|
+
found = span;
|
|
445
|
+
}
|
|
446
|
+
return found;
|
|
447
|
+
}
|
|
448
|
+
/** Every construct of this kind whose WHOLE RANGE covers the selection, peeled of the delimiters
|
|
449
|
+
* the selection takes whole — coverage that reaches into the delimiters still reads as "already
|
|
450
|
+
* formatted", and where runs of one kind nest, shedding the inner one leaves the outer covering,
|
|
451
|
+
* so the split tries each in turn. */
|
|
452
|
+
function coveringSpansOf(inlines, start, end, format) {
|
|
453
|
+
const range = peeledToContent(inlines, start, end);
|
|
454
|
+
const covering = [];
|
|
455
|
+
for (const node of inlineDescendants(inlines)) {
|
|
456
|
+
if (node.kind !== format)
|
|
457
|
+
continue;
|
|
458
|
+
const span = spanOf(node);
|
|
459
|
+
if (span && span.start <= range.start && range.end <= span.end)
|
|
460
|
+
covering.push(span);
|
|
461
|
+
}
|
|
462
|
+
return covering;
|
|
463
|
+
}
|
|
464
|
+
/** The range with the delimiters of every construct it takes WHOLE peeled off: a run nests inside
|
|
465
|
+
* another kind's bytes (`***ab***` is emphasis around strong), so a range that takes the outer
|
|
466
|
+
* construct whole is asking about the content that construct encloses. */
|
|
467
|
+
function peeledToContent(inlines, start, end) {
|
|
468
|
+
let from = start;
|
|
469
|
+
let to = end;
|
|
470
|
+
for (;;) {
|
|
471
|
+
const span = spanExactlyOver(inlines, from, to);
|
|
472
|
+
if (!span)
|
|
473
|
+
return { start: from, end: to };
|
|
474
|
+
from = span.contentStart;
|
|
475
|
+
to = span.contentEnd;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
function spanExactlyOver(inlines, start, end) {
|
|
479
|
+
// A toolbar asks the coverage read once per button on every selection change, so the walk skips
|
|
480
|
+
// the children of every node too small to hold the range.
|
|
481
|
+
const containing = (node) => node.start <= start && end <= node.end;
|
|
482
|
+
for (const node of inlineDescendants(inlines, containing)) {
|
|
483
|
+
if (node.start !== start || node.end !== end)
|
|
484
|
+
continue;
|
|
485
|
+
const span = spanOf(node);
|
|
486
|
+
if (span)
|
|
487
|
+
return span;
|
|
488
|
+
}
|
|
489
|
+
return null;
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* The selection read as exactly one span of this kind — standalone AND in the block's own parse,
|
|
493
|
+
* which is the only reading a strip may act on: `*bold*` carved out of `**bold**` is emphasis alone
|
|
494
|
+
* while the block holds none, and shedding one delimiter layer there lands on a run of the same
|
|
495
|
+
* kind. Offsets come back in SLICE space, where the strip splices.
|
|
496
|
+
*/
|
|
497
|
+
function soleSpanOfSelection(sliceNodes, inlines, start, end, format) {
|
|
498
|
+
const span = soleSpanIn(sliceNodes, end - start, format);
|
|
499
|
+
if (!span)
|
|
500
|
+
return null;
|
|
501
|
+
for (const node of inlineDescendants(inlines))
|
|
502
|
+
if (node.kind === format && node.start === start && node.end === end)
|
|
503
|
+
return span;
|
|
504
|
+
return null;
|
|
505
|
+
}
|
|
506
|
+
function soleSpanIn(nodes, length, format) {
|
|
507
|
+
if (nodes.length !== 1 || nodes[0].kind !== format)
|
|
508
|
+
return null;
|
|
509
|
+
const span = spanOf(nodes[0]);
|
|
510
|
+
return span && span.start === 0 && span.end === length ? span : null;
|
|
511
|
+
}
|
|
512
|
+
/** Whether the bytes flanking the selection are the enclosing construct's own delimiters, rather
|
|
513
|
+
* than content that happens to sit there. */
|
|
514
|
+
function flanksAreItsMarkers(display, start, end, span) {
|
|
515
|
+
const mLen = markerLengthOf(span);
|
|
516
|
+
return (display.slice(start - mLen, start) === display.slice(span.start, span.contentStart) &&
|
|
517
|
+
display.slice(end, end + mLen) === display.slice(span.contentEnd, span.end));
|
|
518
|
+
}
|
|
519
|
+
// ── Wrapping ─────────────────────────────────────────────────────────────────
|
|
520
|
+
function wrapSlice(slice, mark) {
|
|
521
|
+
return mark.wrapBytes ? mark.wrapBytes(slice) : mark.markerBytes + slice + mark.markerBytes;
|
|
522
|
+
}
|
|
523
|
+
// ── Whitespace ───────────────────────────────────────────────────────────────
|
|
524
|
+
function leadingWs(text) {
|
|
525
|
+
return /^\s*/.exec(text)[0];
|
|
526
|
+
}
|
|
527
|
+
function trailingWs(text) {
|
|
528
|
+
return /\s*$/.exec(text)[0];
|
|
529
|
+
}
|
|
530
|
+
// ── Content clamp ────────────────────────────────────────────────────────────
|
|
531
|
+
function clampToContent(offset, content) {
|
|
532
|
+
return Math.min(Math.max(offset, content.start), content.end);
|
|
533
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTML5 named-entity table per CommonMark §2.5, vendored from
|
|
3
|
+
* https://html.spec.whatwg.org/entities.json (WHATWG HTML Standard, CC BY 4.0; see
|
|
4
|
+
* THIRD-PARTY-NOTICES.md). To regenerate: keep only entries whose key ends with `;`
|
|
5
|
+
* (CommonMark requires it), then map key-without-`&`/`;` to the whole `characters` field,
|
|
6
|
+
* which is multi-codepoint for some entries.
|
|
7
|
+
*/
|
|
8
|
+
export declare const HTML5_NAMED_ENTITIES: Readonly<Record<string, string>>;
|