markstream-svelte 0.0.1-beta.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/README.md +77 -0
- package/dist/components/AdmonitionNode.svelte +8 -0
- package/dist/components/AdmonitionNode.svelte.d.ts +23 -0
- package/dist/components/AdmonitionNode.svelte.d.ts.map +1 -0
- package/dist/components/BlockquoteNode.svelte +10 -0
- package/dist/components/BlockquoteNode.svelte.d.ts +24 -0
- package/dist/components/BlockquoteNode.svelte.d.ts.map +1 -0
- package/dist/components/CheckboxNode.svelte +5 -0
- package/dist/components/CheckboxNode.svelte.d.ts +22 -0
- package/dist/components/CheckboxNode.svelte.d.ts.map +1 -0
- package/dist/components/CodeBlockNode.svelte +944 -0
- package/dist/components/CodeBlockNode.svelte.d.ts +43 -0
- package/dist/components/CodeBlockNode.svelte.d.ts.map +1 -0
- package/dist/components/D2BlockNode.svelte +272 -0
- package/dist/components/D2BlockNode.svelte.d.ts +33 -0
- package/dist/components/D2BlockNode.svelte.d.ts.map +1 -0
- package/dist/components/DefinitionListNode.svelte +8 -0
- package/dist/components/DefinitionListNode.svelte.d.ts +23 -0
- package/dist/components/DefinitionListNode.svelte.d.ts.map +1 -0
- package/dist/components/EmojiNode.svelte +7 -0
- package/dist/components/EmojiNode.svelte.d.ts +22 -0
- package/dist/components/EmojiNode.svelte.d.ts.map +1 -0
- package/dist/components/EmphasisNode.svelte +8 -0
- package/dist/components/EmphasisNode.svelte.d.ts +24 -0
- package/dist/components/EmphasisNode.svelte.d.ts.map +1 -0
- package/dist/components/FallbackComponent.svelte +8 -0
- package/dist/components/FallbackComponent.svelte.d.ts +23 -0
- package/dist/components/FallbackComponent.svelte.d.ts.map +1 -0
- package/dist/components/FootnoteAnchorNode.svelte +21 -0
- package/dist/components/FootnoteAnchorNode.svelte.d.ts +22 -0
- package/dist/components/FootnoteAnchorNode.svelte.d.ts.map +1 -0
- package/dist/components/FootnoteNode.svelte +19 -0
- package/dist/components/FootnoteNode.svelte.d.ts +24 -0
- package/dist/components/FootnoteNode.svelte.d.ts.map +1 -0
- package/dist/components/FootnoteReferenceNode.svelte +26 -0
- package/dist/components/FootnoteReferenceNode.svelte.d.ts +22 -0
- package/dist/components/FootnoteReferenceNode.svelte.d.ts.map +1 -0
- package/dist/components/HardBreakNode.svelte +1 -0
- package/dist/components/HardBreakNode.svelte.d.ts +27 -0
- package/dist/components/HardBreakNode.svelte.d.ts.map +1 -0
- package/dist/components/HeadingNode.svelte +15 -0
- package/dist/components/HeadingNode.svelte.d.ts +24 -0
- package/dist/components/HeadingNode.svelte.d.ts.map +1 -0
- package/dist/components/HighlightNode.svelte +8 -0
- package/dist/components/HighlightNode.svelte.d.ts +24 -0
- package/dist/components/HighlightNode.svelte.d.ts.map +1 -0
- package/dist/components/HtmlBlockNode.svelte +8 -0
- package/dist/components/HtmlBlockNode.svelte.d.ts +23 -0
- package/dist/components/HtmlBlockNode.svelte.d.ts.map +1 -0
- package/dist/components/HtmlInlineNode.svelte +8 -0
- package/dist/components/HtmlInlineNode.svelte.d.ts +23 -0
- package/dist/components/HtmlInlineNode.svelte.d.ts.map +1 -0
- package/dist/components/HtmlPreviewFrame.svelte +13 -0
- package/dist/components/HtmlPreviewFrame.svelte.d.ts +26 -0
- package/dist/components/HtmlPreviewFrame.svelte.d.ts.map +1 -0
- package/dist/components/ImageNode.svelte +86 -0
- package/dist/components/ImageNode.svelte.d.ts +25 -0
- package/dist/components/ImageNode.svelte.d.ts.map +1 -0
- package/dist/components/InfographicBlockNode.svelte +429 -0
- package/dist/components/InfographicBlockNode.svelte.d.ts +34 -0
- package/dist/components/InfographicBlockNode.svelte.d.ts.map +1 -0
- package/dist/components/InlineCodeNode.svelte +7 -0
- package/dist/components/InlineCodeNode.svelte.d.ts +22 -0
- package/dist/components/InlineCodeNode.svelte.d.ts.map +1 -0
- package/dist/components/InlineWrapNode.svelte +10 -0
- package/dist/components/InlineWrapNode.svelte.d.ts +25 -0
- package/dist/components/InlineWrapNode.svelte.d.ts.map +1 -0
- package/dist/components/InsertNode.svelte +8 -0
- package/dist/components/InsertNode.svelte.d.ts +24 -0
- package/dist/components/InsertNode.svelte.d.ts.map +1 -0
- package/dist/components/LinkNode.svelte +41 -0
- package/dist/components/LinkNode.svelte.d.ts +25 -0
- package/dist/components/LinkNode.svelte.d.ts.map +1 -0
- package/dist/components/ListItemNode.svelte +9 -0
- package/dist/components/ListItemNode.svelte.d.ts +24 -0
- package/dist/components/ListItemNode.svelte.d.ts.map +1 -0
- package/dist/components/ListNode.svelte +16 -0
- package/dist/components/ListNode.svelte.d.ts +24 -0
- package/dist/components/ListNode.svelte.d.ts.map +1 -0
- package/dist/components/MarkdownCodeBlockNode.svelte +7 -0
- package/dist/components/MarkdownCodeBlockNode.svelte.d.ts +23 -0
- package/dist/components/MarkdownCodeBlockNode.svelte.d.ts.map +1 -0
- package/dist/components/MathBlockNode.svelte +96 -0
- package/dist/components/MathBlockNode.svelte.d.ts +22 -0
- package/dist/components/MathBlockNode.svelte.d.ts.map +1 -0
- package/dist/components/MathInlineNode.svelte +103 -0
- package/dist/components/MathInlineNode.svelte.d.ts +22 -0
- package/dist/components/MathInlineNode.svelte.d.ts.map +1 -0
- package/dist/components/MermaidBlockNode.svelte +557 -0
- package/dist/components/MermaidBlockNode.svelte.d.ts +40 -0
- package/dist/components/MermaidBlockNode.svelte.d.ts.map +1 -0
- package/dist/components/NodeOutlet.svelte +192 -0
- package/dist/components/NodeOutlet.svelte.d.ts +24 -0
- package/dist/components/NodeOutlet.svelte.d.ts.map +1 -0
- package/dist/components/NodeRenderer.svelte +349 -0
- package/dist/components/NodeRenderer.svelte.d.ts +64 -0
- package/dist/components/NodeRenderer.svelte.d.ts.map +1 -0
- package/dist/components/ParagraphNode.svelte +21 -0
- package/dist/components/ParagraphNode.svelte.d.ts +24 -0
- package/dist/components/ParagraphNode.svelte.d.ts.map +1 -0
- package/dist/components/PreCodeNode.svelte +13 -0
- package/dist/components/PreCodeNode.svelte.d.ts +22 -0
- package/dist/components/PreCodeNode.svelte.d.ts.map +1 -0
- package/dist/components/ReferenceNode.svelte +8 -0
- package/dist/components/ReferenceNode.svelte.d.ts +23 -0
- package/dist/components/ReferenceNode.svelte.d.ts.map +1 -0
- package/dist/components/RenderChildren.svelte +12 -0
- package/dist/components/RenderChildren.svelte.d.ts +24 -0
- package/dist/components/RenderChildren.svelte.d.ts.map +1 -0
- package/dist/components/StrikethroughNode.svelte +8 -0
- package/dist/components/StrikethroughNode.svelte.d.ts +24 -0
- package/dist/components/StrikethroughNode.svelte.d.ts.map +1 -0
- package/dist/components/StrongNode.svelte +8 -0
- package/dist/components/StrongNode.svelte.d.ts +24 -0
- package/dist/components/StrongNode.svelte.d.ts.map +1 -0
- package/dist/components/SubscriptNode.svelte +8 -0
- package/dist/components/SubscriptNode.svelte.d.ts +24 -0
- package/dist/components/SubscriptNode.svelte.d.ts.map +1 -0
- package/dist/components/SuperscriptNode.svelte +8 -0
- package/dist/components/SuperscriptNode.svelte.d.ts +24 -0
- package/dist/components/SuperscriptNode.svelte.d.ts.map +1 -0
- package/dist/components/TableNode.svelte +8 -0
- package/dist/components/TableNode.svelte.d.ts +23 -0
- package/dist/components/TableNode.svelte.d.ts.map +1 -0
- package/dist/components/TextNode.svelte +37 -0
- package/dist/components/TextNode.svelte.d.ts +25 -0
- package/dist/components/TextNode.svelte.d.ts.map +1 -0
- package/dist/components/ThematicBreakNode.svelte +1 -0
- package/dist/components/ThematicBreakNode.svelte.d.ts +27 -0
- package/dist/components/ThematicBreakNode.svelte.d.ts.map +1 -0
- package/dist/components/Tooltip.svelte +4 -0
- package/dist/components/Tooltip.svelte.d.ts +21 -0
- package/dist/components/Tooltip.svelte.d.ts.map +1 -0
- package/dist/components/VmrContainerNode.svelte +8 -0
- package/dist/components/VmrContainerNode.svelte.d.ts +23 -0
- package/dist/components/VmrContainerNode.svelte.d.ts.map +1 -0
- package/dist/components/shared/diagram-height.d.ts +10 -0
- package/dist/components/shared/diagram-height.d.ts.map +1 -0
- package/dist/components/shared/diagram-height.js +52 -0
- package/dist/components/shared/node-helpers.d.ts +108 -0
- package/dist/components/shared/node-helpers.d.ts.map +1 -0
- package/dist/components/shared/node-helpers.js +220 -0
- package/dist/components/shared/node-outlet-helpers.d.ts +9 -0
- package/dist/components/shared/node-outlet-helpers.d.ts.map +1 -0
- package/dist/components/shared/node-outlet-helpers.js +92 -0
- package/dist/components/shared/render-window.d.ts +19 -0
- package/dist/components/shared/render-window.d.ts.map +1 -0
- package/dist/components/shared/render-window.js +63 -0
- package/dist/components/shared/renderNodeHtml.d.ts +4 -0
- package/dist/components/shared/renderNodeHtml.d.ts.map +1 -0
- package/dist/components/shared/renderNodeHtml.js +19 -0
- package/dist/components/shared/rich-block-helpers.d.ts +7 -0
- package/dist/components/shared/rich-block-helpers.d.ts.map +1 -0
- package/dist/components/shared/rich-block-helpers.js +76 -0
- package/dist/customComponents.d.ts +10 -0
- package/dist/customComponents.d.ts.map +1 -0
- package/dist/customComponents.js +66 -0
- package/dist/enhanceRenderedHtml.d.ts +21 -0
- package/dist/enhanceRenderedHtml.d.ts.map +1 -0
- package/dist/enhanceRenderedHtml.js +768 -0
- package/dist/hydrateCustomTagContent.d.ts +3 -0
- package/dist/hydrateCustomTagContent.d.ts.map +1 -0
- package/dist/hydrateCustomTagContent.js +130 -0
- package/dist/i18n/useSafeI18n.d.ts +5 -0
- package/dist/i18n/useSafeI18n.d.ts.map +1 -0
- package/dist/i18n/useSafeI18n.js +42 -0
- package/dist/index.css +2009 -0
- package/dist/index.d.ts +78 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +66 -0
- package/dist/index.px.css +2009 -0
- package/dist/index.tailwind.css +2009 -0
- package/dist/optional/d2.d.ts +7 -0
- package/dist/optional/d2.d.ts.map +1 -0
- package/dist/optional/d2.js +67 -0
- package/dist/optional/infographic.d.ts +2 -0
- package/dist/optional/infographic.d.ts.map +1 -0
- package/dist/optional/infographic.js +29 -0
- package/dist/optional/katex.d.ts +7 -0
- package/dist/optional/katex.d.ts.map +1 -0
- package/dist/optional/katex.js +93 -0
- package/dist/optional/mermaid.d.ts +7 -0
- package/dist/optional/mermaid.d.ts.map +1 -0
- package/dist/optional/mermaid.js +171 -0
- package/dist/optional/monaco.d.ts +5 -0
- package/dist/optional/monaco.d.ts.map +1 -0
- package/dist/optional/monaco.js +70 -0
- package/dist/parseNestedMarkdownToNodes.d.ts +15 -0
- package/dist/parseNestedMarkdownToNodes.d.ts.map +1 -0
- package/dist/parseNestedMarkdownToNodes.js +66 -0
- package/dist/renderMarkdownHtml.d.ts +31 -0
- package/dist/renderMarkdownHtml.d.ts.map +1 -0
- package/dist/renderMarkdownHtml.js +465 -0
- package/dist/sanitizeHtmlContent.d.ts +3 -0
- package/dist/sanitizeHtmlContent.d.ts.map +1 -0
- package/dist/sanitizeHtmlContent.js +175 -0
- package/dist/sanitizeSvg.d.ts +3 -0
- package/dist/sanitizeSvg.d.ts.map +1 -0
- package/dist/sanitizeSvg.js +76 -0
- package/dist/tailwind-entry.d.ts +2 -0
- package/dist/tailwind-entry.d.ts.map +1 -0
- package/dist/tailwind-entry.js +1 -0
- package/dist/tooltip/singletonTooltip.d.ts +8 -0
- package/dist/tooltip/singletonTooltip.d.ts.map +1 -0
- package/dist/tooltip/singletonTooltip.js +124 -0
- package/dist/types/monaco.d.ts +66 -0
- package/dist/types/monaco.d.ts.map +1 -0
- package/dist/types/monaco.js +1 -0
- package/dist/utils/languageIcon.d.ts +8 -0
- package/dist/utils/languageIcon.d.ts.map +1 -0
- package/dist/utils/languageIcon.js +182 -0
- package/dist/utils/normalizeKaTeXRenderInput.d.ts +2 -0
- package/dist/utils/normalizeKaTeXRenderInput.d.ts.map +1 -0
- package/dist/utils/normalizeKaTeXRenderInput.js +7 -0
- package/dist/workers/katexCdnWorker.d.ts +21 -0
- package/dist/workers/katexCdnWorker.d.ts.map +1 -0
- package/dist/workers/katexCdnWorker.js +193 -0
- package/dist/workers/katexRenderer.worker.d.ts +2 -0
- package/dist/workers/katexRenderer.worker.d.ts.map +1 -0
- package/dist/workers/katexRenderer.worker.js +55 -0
- package/dist/workers/katexWorkerClient.d.ts +36 -0
- package/dist/workers/katexWorkerClient.d.ts.map +1 -0
- package/dist/workers/katexWorkerClient.js +270 -0
- package/dist/workers/mermaidCdnWorker.d.ts +16 -0
- package/dist/workers/mermaidCdnWorker.d.ts.map +1 -0
- package/dist/workers/mermaidCdnWorker.js +235 -0
- package/dist/workers/mermaidParser.worker.d.ts +2 -0
- package/dist/workers/mermaidParser.worker.d.ts.map +1 -0
- package/dist/workers/mermaidParser.worker.js +85 -0
- package/dist/workers/mermaidWorkerClient.d.ts +16 -0
- package/dist/workers/mermaidWorkerClient.d.ts.map +1 -0
- package/dist/workers/mermaidWorkerClient.js +170 -0
- package/package.json +95 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
const DISALLOWED_STYLE_PATTERNS = [/javascript:/i, /expression\s*\(/i, /url\s*\(\s*javascript:/i, /@import/i];
|
|
2
|
+
const SAFE_URL_PROTOCOLS = /^(?:https?:|mailto:|tel:|#|\/|data:image\/(?:png|gif|jpe?g|webp);)/i;
|
|
3
|
+
function neutralizeScriptProtocols(raw) {
|
|
4
|
+
return raw
|
|
5
|
+
.replace(/["']\s*javascript:/gi, '#')
|
|
6
|
+
.replace(/\bjavascript:/gi, '#')
|
|
7
|
+
.replace(/["']\s*vbscript:/gi, '#')
|
|
8
|
+
.replace(/\bvbscript:/gi, '#')
|
|
9
|
+
.replace(/\bdata:text\/html/gi, '#');
|
|
10
|
+
}
|
|
11
|
+
function sanitizeUrl(value) {
|
|
12
|
+
if (!value)
|
|
13
|
+
return '';
|
|
14
|
+
const trimmed = value.trim();
|
|
15
|
+
if (SAFE_URL_PROTOCOLS.test(trimmed))
|
|
16
|
+
return trimmed;
|
|
17
|
+
return '';
|
|
18
|
+
}
|
|
19
|
+
function scrubSvgElement(svgEl) {
|
|
20
|
+
const forbiddenTags = new Set(['script']);
|
|
21
|
+
const nodes = [svgEl, ...Array.from(svgEl.querySelectorAll('*'))];
|
|
22
|
+
for (const node of nodes) {
|
|
23
|
+
if (forbiddenTags.has(node.tagName.toLowerCase())) {
|
|
24
|
+
node.remove();
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const attrs = Array.from(node.attributes);
|
|
28
|
+
for (const attr of attrs) {
|
|
29
|
+
const name = attr.name;
|
|
30
|
+
if (/^on/i.test(name)) {
|
|
31
|
+
node.removeAttribute(name);
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
if (name === 'style' && attr.value) {
|
|
35
|
+
if (DISALLOWED_STYLE_PATTERNS.some(re => re.test(attr.value))) {
|
|
36
|
+
node.removeAttribute(name);
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if ((name === 'href' || name === 'xlink:href') && attr.value) {
|
|
41
|
+
const safe = sanitizeUrl(attr.value);
|
|
42
|
+
if (!safe) {
|
|
43
|
+
node.removeAttribute(name);
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
if (safe !== attr.value)
|
|
47
|
+
node.setAttribute(name, safe);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export function toSafeSvgMarkup(svg) {
|
|
53
|
+
if (typeof DOMParser === 'undefined')
|
|
54
|
+
return '';
|
|
55
|
+
if (!svg)
|
|
56
|
+
return '';
|
|
57
|
+
const neutralized = neutralizeScriptProtocols(svg);
|
|
58
|
+
const parsed = new DOMParser().parseFromString(neutralized, 'image/svg+xml');
|
|
59
|
+
const svgEl = parsed.documentElement;
|
|
60
|
+
if (!svgEl || svgEl.nodeName.toLowerCase() !== 'svg')
|
|
61
|
+
return '';
|
|
62
|
+
const svgElement = svgEl;
|
|
63
|
+
scrubSvgElement(svgElement);
|
|
64
|
+
return svgElement.outerHTML;
|
|
65
|
+
}
|
|
66
|
+
export function extractRenderedSvg(renderResult) {
|
|
67
|
+
if (!renderResult)
|
|
68
|
+
return '';
|
|
69
|
+
if (typeof renderResult === 'string')
|
|
70
|
+
return renderResult;
|
|
71
|
+
if (typeof renderResult.svg === 'string')
|
|
72
|
+
return renderResult.svg;
|
|
73
|
+
if (typeof renderResult.data === 'string')
|
|
74
|
+
return renderResult.data;
|
|
75
|
+
return '';
|
|
76
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tailwind-entry.d.ts","sourceRoot":"","sources":["../src/tailwind-entry.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './index.css';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right';
|
|
2
|
+
export declare function showTooltipForAnchor(anchor: HTMLElement | null, content: string, placement?: TooltipPlacement, immediate?: boolean, _origin?: {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
} | undefined, isDark?: boolean | null): void;
|
|
6
|
+
export declare function hideTooltip(immediate?: boolean): void;
|
|
7
|
+
export declare function isTooltipVisible(): boolean;
|
|
8
|
+
//# sourceMappingURL=singletonTooltip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"singletonTooltip.d.ts","sourceRoot":"","sources":["../../src/tooltip/singletonTooltip.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;AAkElE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,GAAG,IAAI,EAC1B,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,gBAAwB,EACnC,SAAS,UAAQ,EACjB,OAAO,CAAC,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,EAC9C,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,QAkCxB;AAED,wBAAgB,WAAW,CAAC,SAAS,UAAQ,QA0B5C;AAED,wBAAgB,gBAAgB,YAE/B"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom';
|
|
2
|
+
let tooltipEl = null;
|
|
3
|
+
let currentAnchor = null;
|
|
4
|
+
let cleanupAutoUpdate = null;
|
|
5
|
+
let showTimer = null;
|
|
6
|
+
let hideTimer = null;
|
|
7
|
+
let currentId = null;
|
|
8
|
+
let visible = false;
|
|
9
|
+
function clearTimers() {
|
|
10
|
+
if (showTimer) {
|
|
11
|
+
clearTimeout(showTimer);
|
|
12
|
+
showTimer = null;
|
|
13
|
+
}
|
|
14
|
+
if (hideTimer) {
|
|
15
|
+
clearTimeout(hideTimer);
|
|
16
|
+
hideTimer = null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function ensureTooltipEl() {
|
|
20
|
+
if (tooltipEl || typeof document === 'undefined')
|
|
21
|
+
return tooltipEl;
|
|
22
|
+
tooltipEl = document.createElement('div');
|
|
23
|
+
tooltipEl.className = 'ms-tooltip';
|
|
24
|
+
tooltipEl.setAttribute('role', 'tooltip');
|
|
25
|
+
tooltipEl.dataset.visible = 'false';
|
|
26
|
+
tooltipEl.style.position = 'fixed';
|
|
27
|
+
tooltipEl.style.left = '0px';
|
|
28
|
+
tooltipEl.style.top = '0px';
|
|
29
|
+
tooltipEl.style.transform = 'translate3d(0,0,0)';
|
|
30
|
+
document.body.appendChild(tooltipEl);
|
|
31
|
+
return tooltipEl;
|
|
32
|
+
}
|
|
33
|
+
function detectDarkModeHint(hint) {
|
|
34
|
+
if (typeof hint === 'boolean')
|
|
35
|
+
return hint;
|
|
36
|
+
if (typeof document !== 'undefined') {
|
|
37
|
+
try {
|
|
38
|
+
if (document.documentElement.classList.contains('dark'))
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
catch { }
|
|
42
|
+
}
|
|
43
|
+
if (typeof window !== 'undefined' && typeof window.matchMedia === 'function') {
|
|
44
|
+
try {
|
|
45
|
+
return window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
46
|
+
}
|
|
47
|
+
catch { }
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
async function updatePosition(placement) {
|
|
52
|
+
if (!tooltipEl || !currentAnchor)
|
|
53
|
+
return;
|
|
54
|
+
const { x, y } = await computePosition(currentAnchor, tooltipEl, {
|
|
55
|
+
placement,
|
|
56
|
+
middleware: [offset(8), flip(), shift({ padding: 8 })],
|
|
57
|
+
strategy: 'fixed',
|
|
58
|
+
});
|
|
59
|
+
tooltipEl.style.transform = `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`;
|
|
60
|
+
}
|
|
61
|
+
export function showTooltipForAnchor(anchor, content, placement = 'top', immediate = false, _origin, isDark) {
|
|
62
|
+
if (!anchor || typeof document === 'undefined')
|
|
63
|
+
return;
|
|
64
|
+
ensureTooltipEl();
|
|
65
|
+
if (!tooltipEl)
|
|
66
|
+
return;
|
|
67
|
+
clearTimers();
|
|
68
|
+
const doShow = async () => {
|
|
69
|
+
if (!tooltipEl)
|
|
70
|
+
return;
|
|
71
|
+
currentAnchor = anchor;
|
|
72
|
+
tooltipEl.textContent = content;
|
|
73
|
+
tooltipEl.dataset.placement = placement;
|
|
74
|
+
tooltipEl.dataset.dark = detectDarkModeHint(isDark) ? 'true' : 'false';
|
|
75
|
+
tooltipEl.dataset.visible = 'false';
|
|
76
|
+
currentId = `tooltip-${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
|
77
|
+
tooltipEl.id = currentId;
|
|
78
|
+
try {
|
|
79
|
+
anchor.setAttribute('aria-describedby', currentId);
|
|
80
|
+
}
|
|
81
|
+
catch { }
|
|
82
|
+
await updatePosition(placement);
|
|
83
|
+
tooltipEl.dataset.visible = 'true';
|
|
84
|
+
visible = true;
|
|
85
|
+
cleanupAutoUpdate === null || cleanupAutoUpdate === void 0 ? void 0 : cleanupAutoUpdate();
|
|
86
|
+
cleanupAutoUpdate = autoUpdate(anchor, tooltipEl, () => {
|
|
87
|
+
void updatePosition(placement);
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
if (immediate)
|
|
91
|
+
void doShow();
|
|
92
|
+
else
|
|
93
|
+
showTimer = setTimeout(doShow, 80);
|
|
94
|
+
}
|
|
95
|
+
export function hideTooltip(immediate = false) {
|
|
96
|
+
if (!tooltipEl)
|
|
97
|
+
return;
|
|
98
|
+
clearTimers();
|
|
99
|
+
const doHide = () => {
|
|
100
|
+
if (!tooltipEl)
|
|
101
|
+
return;
|
|
102
|
+
tooltipEl.dataset.visible = 'false';
|
|
103
|
+
visible = false;
|
|
104
|
+
if (currentAnchor && currentId) {
|
|
105
|
+
try {
|
|
106
|
+
currentAnchor.removeAttribute('aria-describedby');
|
|
107
|
+
}
|
|
108
|
+
catch { }
|
|
109
|
+
}
|
|
110
|
+
currentAnchor = null;
|
|
111
|
+
currentId = null;
|
|
112
|
+
if (cleanupAutoUpdate) {
|
|
113
|
+
cleanupAutoUpdate();
|
|
114
|
+
cleanupAutoUpdate = null;
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
if (immediate)
|
|
118
|
+
doHide();
|
|
119
|
+
else
|
|
120
|
+
hideTimer = setTimeout(doHide, 120);
|
|
121
|
+
}
|
|
122
|
+
export function isTooltipVisible() {
|
|
123
|
+
return visible;
|
|
124
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export interface CodeBlockMonacoThemeObject {
|
|
2
|
+
name: string;
|
|
3
|
+
base?: string;
|
|
4
|
+
inherit?: boolean;
|
|
5
|
+
colors?: Record<string, string>;
|
|
6
|
+
rules?: Array<Record<string, unknown>>;
|
|
7
|
+
[key: string]: unknown;
|
|
8
|
+
}
|
|
9
|
+
export type CodeBlockMonacoTheme = string | CodeBlockMonacoThemeObject;
|
|
10
|
+
export type CodeBlockMonacoLanguage = string | ((...args: any[]) => unknown);
|
|
11
|
+
export interface CodeBlockDiffHideUnchangedRegionsOptions {
|
|
12
|
+
enabled?: boolean;
|
|
13
|
+
contextLineCount?: number;
|
|
14
|
+
minimumLineCount?: number;
|
|
15
|
+
revealLineCount?: number;
|
|
16
|
+
}
|
|
17
|
+
export type CodeBlockDiffHideUnchangedRegions = boolean | CodeBlockDiffHideUnchangedRegionsOptions;
|
|
18
|
+
export type CodeBlockDiffLineStyle = 'background' | 'bar';
|
|
19
|
+
export type CodeBlockDiffAppearance = 'auto' | 'light' | 'dark';
|
|
20
|
+
export type CodeBlockDiffUnchangedRegionStyle = 'line-info' | 'line-info-basic' | 'metadata' | 'simple';
|
|
21
|
+
export type CodeBlockDiffHunkActionKind = 'revert' | 'stage';
|
|
22
|
+
export type CodeBlockDiffHunkSide = 'upper' | 'lower';
|
|
23
|
+
export interface CodeBlockDiffHunkActionContext {
|
|
24
|
+
action: CodeBlockDiffHunkActionKind;
|
|
25
|
+
side: CodeBlockDiffHunkSide;
|
|
26
|
+
lineChange: unknown;
|
|
27
|
+
originalModel: unknown;
|
|
28
|
+
modifiedModel: unknown;
|
|
29
|
+
}
|
|
30
|
+
export interface CodeBlockMonacoOptions {
|
|
31
|
+
MAX_HEIGHT?: number | string;
|
|
32
|
+
fontSize?: number;
|
|
33
|
+
lineHeight?: number;
|
|
34
|
+
fontFamily?: string;
|
|
35
|
+
tabSize?: number;
|
|
36
|
+
readOnly?: boolean;
|
|
37
|
+
wordWrap?: 'off' | 'on' | 'wordWrapColumn' | 'bounded' | string;
|
|
38
|
+
wrappingIndent?: 'none' | 'same' | 'indent' | 'deepIndent' | string;
|
|
39
|
+
theme?: string;
|
|
40
|
+
themes?: CodeBlockMonacoTheme[];
|
|
41
|
+
languages?: CodeBlockMonacoLanguage[];
|
|
42
|
+
renderSideBySide?: boolean;
|
|
43
|
+
useInlineViewWhenSpaceIsLimited?: boolean;
|
|
44
|
+
enableSplitViewResizing?: boolean;
|
|
45
|
+
ignoreTrimWhitespace?: boolean;
|
|
46
|
+
maxComputationTime?: number;
|
|
47
|
+
diffAlgorithm?: string;
|
|
48
|
+
renderIndicators?: boolean;
|
|
49
|
+
originalEditable?: boolean;
|
|
50
|
+
revealDebounceMs?: number;
|
|
51
|
+
revealStrategy?: 'bottom' | 'centerIfOutside' | 'center';
|
|
52
|
+
revealBatchOnIdleMs?: number;
|
|
53
|
+
updateThrottleMs?: number;
|
|
54
|
+
diffUpdateThrottleMs?: number;
|
|
55
|
+
diffAutoScroll?: boolean;
|
|
56
|
+
diffHideUnchangedRegions?: CodeBlockDiffHideUnchangedRegions;
|
|
57
|
+
diffLineStyle?: CodeBlockDiffLineStyle;
|
|
58
|
+
diffAppearance?: CodeBlockDiffAppearance;
|
|
59
|
+
diffUnchangedRegionStyle?: CodeBlockDiffUnchangedRegionStyle;
|
|
60
|
+
diffHunkActionsOnHover?: boolean;
|
|
61
|
+
diffHunkHoverHideDelayMs?: number;
|
|
62
|
+
onDiffHunkAction?: (context: CodeBlockDiffHunkActionContext) => void | boolean | Promise<void | boolean>;
|
|
63
|
+
scrollbar?: Record<string, any>;
|
|
64
|
+
[key: string]: any;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=monaco.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monaco.d.ts","sourceRoot":"","sources":["../../src/types/monaco.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type LanguageIconResolver = (lang: string) => string | undefined | null;
|
|
2
|
+
export declare function normalizeLanguageIdentifier(lang?: string | null): string;
|
|
3
|
+
export declare function resolveMonacoLanguageId(lang?: string | null): string;
|
|
4
|
+
export declare function isLikelyIncompleteLanguageIdentifier(lang?: string | null): boolean;
|
|
5
|
+
export declare function setLanguageIconResolver(resolver?: LanguageIconResolver | null): void;
|
|
6
|
+
export declare function getLanguageIcon(lang: string): string;
|
|
7
|
+
export declare const languageMap: Record<string, string>;
|
|
8
|
+
//# sourceMappingURL=languageIcon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languageIcon.d.ts","sourceRoot":"","sources":["../../src/utils/languageIcon.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;AA8J9E,wBAAgB,2BAA2B,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGxE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAWpE;AAED,wBAAgB,oCAAoC,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAOlF;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,CAAC,EAAE,oBAAoB,GAAG,IAAI,QAE7E;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQpD;AAED,eAAO,MAAM,WAAW,wBAAqB,CAAA"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
const DEFAULT_ICON = `
|
|
2
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
3
|
+
<path d="M14 3h5a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5" />
|
|
4
|
+
<path d="M8 11l-3 3l3 3" />
|
|
5
|
+
<path d="M16 11l3 3l-3 3" />
|
|
6
|
+
<path d="M13 9l-2 10" />
|
|
7
|
+
</svg>`;
|
|
8
|
+
const MERMAID_ICON = `
|
|
9
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
10
|
+
<rect x="3" y="4" width="7" height="5" rx="1.5" />
|
|
11
|
+
<rect x="14" y="4" width="7" height="5" rx="1.5" />
|
|
12
|
+
<rect x="8.5" y="15" width="7" height="5" rx="1.5" />
|
|
13
|
+
<path d="M10 6.5h4" />
|
|
14
|
+
<path d="M12 9v2.5" />
|
|
15
|
+
<path d="M12 11.5l-3.5 3.5" />
|
|
16
|
+
<path d="M12 11.5l3.5 3.5" />
|
|
17
|
+
</svg>`;
|
|
18
|
+
const HTML_ICON = `
|
|
19
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
20
|
+
<path d="M8 7l-4 5l4 5" />
|
|
21
|
+
<path d="M16 7l4 5l-4 5" />
|
|
22
|
+
<path d="M14 4l-4 16" />
|
|
23
|
+
</svg>`;
|
|
24
|
+
const MARKDOWN_ICON = `
|
|
25
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
26
|
+
<rect x="3" y="4" width="18" height="16" rx="2" />
|
|
27
|
+
<path d="M7 15V9l3 3l3-3v6" />
|
|
28
|
+
<path d="M16 9v6" />
|
|
29
|
+
<path d="M14 13l2 2l2-2" />
|
|
30
|
+
</svg>`;
|
|
31
|
+
const JSON_ICON = `
|
|
32
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
33
|
+
<path d="M9 4c-2 0-3 1.5-3 3.5v2c0 1.1-.4 1.8-1.5 2.5C5.6 12.7 6 13.4 6 14.5v2C6 18.5 7 20 9 20" />
|
|
34
|
+
<path d="M15 4c2 0 3 1.5 3 3.5v2c0 1.1.4 1.8 1.5 2.5c-1.1.7-1.5 1.4-1.5 2.5v2c0 2-1 3.5-3 3.5" />
|
|
35
|
+
</svg>`;
|
|
36
|
+
const TEXT_ICON = `
|
|
37
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
38
|
+
<path d="M5 6h14" />
|
|
39
|
+
<path d="M12 6v12" />
|
|
40
|
+
<path d="M8 18h8" />
|
|
41
|
+
</svg>`;
|
|
42
|
+
const LANGUAGE_ALIAS_MAP = {
|
|
43
|
+
'': '',
|
|
44
|
+
'cjs': 'javascript',
|
|
45
|
+
'c++': 'cpp',
|
|
46
|
+
'c#': 'csharp',
|
|
47
|
+
'd2lang': 'd2',
|
|
48
|
+
'golang': 'go',
|
|
49
|
+
'js': 'javascript',
|
|
50
|
+
'jsx': 'jsx',
|
|
51
|
+
'kt': 'kotlin',
|
|
52
|
+
'md': 'markdown',
|
|
53
|
+
'mjs': 'javascript',
|
|
54
|
+
'objective-c': 'objectivec',
|
|
55
|
+
'objective-c++': 'objectivecpp',
|
|
56
|
+
'plaintext': 'plain',
|
|
57
|
+
'rb': 'ruby',
|
|
58
|
+
'rs': 'rust',
|
|
59
|
+
'py': 'python',
|
|
60
|
+
'bash': 'shell',
|
|
61
|
+
'bat': 'shell',
|
|
62
|
+
'batch': 'shell',
|
|
63
|
+
'ps1': 'powershell',
|
|
64
|
+
'sh': 'shell',
|
|
65
|
+
'shellscript': 'shell',
|
|
66
|
+
'text': 'plain',
|
|
67
|
+
'ts': 'typescript',
|
|
68
|
+
'tsx': 'tsx',
|
|
69
|
+
'yml': 'yaml',
|
|
70
|
+
'zsh': 'shell',
|
|
71
|
+
};
|
|
72
|
+
const LANGUAGE_LABEL_MAP = {
|
|
73
|
+
'': 'Text',
|
|
74
|
+
'css': 'CSS',
|
|
75
|
+
'c': 'C',
|
|
76
|
+
'cpp': 'C++',
|
|
77
|
+
'csharp': 'C#',
|
|
78
|
+
'd2': 'D2',
|
|
79
|
+
'go': 'Go',
|
|
80
|
+
'html': 'HTML',
|
|
81
|
+
'java': 'Java',
|
|
82
|
+
'javascript': 'JavaScript',
|
|
83
|
+
'json': 'JSON',
|
|
84
|
+
'jsx': 'JSX',
|
|
85
|
+
'markdown': 'Markdown',
|
|
86
|
+
'mermaid': 'Mermaid',
|
|
87
|
+
'php': 'PHP',
|
|
88
|
+
'plain': 'Text',
|
|
89
|
+
'plaintext': 'Text',
|
|
90
|
+
'python': 'Python',
|
|
91
|
+
'ruby': 'Ruby',
|
|
92
|
+
'rust': 'Rust',
|
|
93
|
+
'shell': 'Shell',
|
|
94
|
+
'sql': 'SQL',
|
|
95
|
+
'svg': 'SVG',
|
|
96
|
+
'tsx': 'TSX',
|
|
97
|
+
'typescript': 'TypeScript',
|
|
98
|
+
'vue': 'Vue',
|
|
99
|
+
'yaml': 'YAML',
|
|
100
|
+
};
|
|
101
|
+
const LANGUAGE_ICON_MAP = {
|
|
102
|
+
'': TEXT_ICON,
|
|
103
|
+
'html': HTML_ICON,
|
|
104
|
+
'javascript': DEFAULT_ICON,
|
|
105
|
+
'json': JSON_ICON,
|
|
106
|
+
'jsx': DEFAULT_ICON,
|
|
107
|
+
'markdown': MARKDOWN_ICON,
|
|
108
|
+
'mermaid': MERMAID_ICON,
|
|
109
|
+
'plain': TEXT_ICON,
|
|
110
|
+
'python': DEFAULT_ICON,
|
|
111
|
+
'shell': DEFAULT_ICON,
|
|
112
|
+
'svg': HTML_ICON,
|
|
113
|
+
'tsx': DEFAULT_ICON,
|
|
114
|
+
'typescript': DEFAULT_ICON,
|
|
115
|
+
};
|
|
116
|
+
let userLanguageIconResolver = null;
|
|
117
|
+
const LANGUAGE_PREFIX_CANDIDATES = Array.from(new Set([
|
|
118
|
+
...Object.keys(LANGUAGE_ALIAS_MAP),
|
|
119
|
+
...Object.keys(LANGUAGE_LABEL_MAP),
|
|
120
|
+
...Object.keys(LANGUAGE_ICON_MAP),
|
|
121
|
+
'bash',
|
|
122
|
+
'c',
|
|
123
|
+
'cpp',
|
|
124
|
+
'csharp',
|
|
125
|
+
'diff',
|
|
126
|
+
'go',
|
|
127
|
+
'java',
|
|
128
|
+
'php',
|
|
129
|
+
'ruby',
|
|
130
|
+
'rust',
|
|
131
|
+
'sql',
|
|
132
|
+
'yaml',
|
|
133
|
+
'zsh',
|
|
134
|
+
]));
|
|
135
|
+
function extractLanguageToken(lang) {
|
|
136
|
+
if (!lang)
|
|
137
|
+
return '';
|
|
138
|
+
const trimmed = lang.trim();
|
|
139
|
+
if (!trimmed)
|
|
140
|
+
return '';
|
|
141
|
+
const [firstToken] = trimmed.split(/\s+/);
|
|
142
|
+
const [base] = firstToken.split(':');
|
|
143
|
+
return base.toLowerCase();
|
|
144
|
+
}
|
|
145
|
+
export function normalizeLanguageIdentifier(lang) {
|
|
146
|
+
var _a;
|
|
147
|
+
const token = extractLanguageToken(lang);
|
|
148
|
+
return (_a = LANGUAGE_ALIAS_MAP[token]) !== null && _a !== void 0 ? _a : token;
|
|
149
|
+
}
|
|
150
|
+
export function resolveMonacoLanguageId(lang) {
|
|
151
|
+
const canonical = normalizeLanguageIdentifier(lang);
|
|
152
|
+
if (!canonical)
|
|
153
|
+
return 'plaintext';
|
|
154
|
+
if (canonical === 'plain')
|
|
155
|
+
return 'plaintext';
|
|
156
|
+
if (canonical === 'jsx')
|
|
157
|
+
return 'javascript';
|
|
158
|
+
if (canonical === 'tsx')
|
|
159
|
+
return 'typescript';
|
|
160
|
+
return canonical;
|
|
161
|
+
}
|
|
162
|
+
export function isLikelyIncompleteLanguageIdentifier(lang) {
|
|
163
|
+
const token = extractLanguageToken(lang);
|
|
164
|
+
if (!token)
|
|
165
|
+
return false;
|
|
166
|
+
if (LANGUAGE_PREFIX_CANDIDATES.includes(token))
|
|
167
|
+
return false;
|
|
168
|
+
return LANGUAGE_PREFIX_CANDIDATES.some(candidate => candidate.startsWith(token));
|
|
169
|
+
}
|
|
170
|
+
export function setLanguageIconResolver(resolver) {
|
|
171
|
+
userLanguageIconResolver = resolver !== null && resolver !== void 0 ? resolver : null;
|
|
172
|
+
}
|
|
173
|
+
export function getLanguageIcon(lang) {
|
|
174
|
+
if (userLanguageIconResolver) {
|
|
175
|
+
const hit = userLanguageIconResolver(lang);
|
|
176
|
+
if (hit != null && hit !== '')
|
|
177
|
+
return hit;
|
|
178
|
+
}
|
|
179
|
+
const normalized = normalizeLanguageIdentifier(lang);
|
|
180
|
+
return LANGUAGE_ICON_MAP[normalized] || DEFAULT_ICON;
|
|
181
|
+
}
|
|
182
|
+
export const languageMap = LANGUAGE_LABEL_MAP;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeKaTeXRenderInput.d.ts","sourceRoot":"","sources":["../../src/utils/normalizeKaTeXRenderInput.ts"],"names":[],"mappings":"AAAA,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,UAOxD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type KaTeXCDNWorkerMode = 'classic' | 'module';
|
|
2
|
+
export interface KaTeXCDNWorkerOptions {
|
|
3
|
+
katexUrl: string;
|
|
4
|
+
mhchemUrl?: string;
|
|
5
|
+
mode?: KaTeXCDNWorkerMode;
|
|
6
|
+
debug?: boolean;
|
|
7
|
+
workerOptions?: WorkerOptions;
|
|
8
|
+
renderOptions?: {
|
|
9
|
+
throwOnError?: boolean;
|
|
10
|
+
output?: string;
|
|
11
|
+
strict?: string;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export interface KaTeXCDNWorkerHandle {
|
|
15
|
+
worker: Worker | null;
|
|
16
|
+
dispose: () => void;
|
|
17
|
+
source: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function buildKaTeXCDNWorkerSource(options: KaTeXCDNWorkerOptions): string;
|
|
20
|
+
export declare function createKaTeXWorkerFromCDN(options: KaTeXCDNWorkerOptions): KaTeXCDNWorkerHandle;
|
|
21
|
+
//# sourceMappingURL=katexCdnWorker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"katexCdnWorker.d.ts","sourceRoot":"","sources":["../../src/workers/katexCdnWorker.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,QAAQ,CAAA;AAErD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,kBAAkB,CAAA;IACzB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,aAAa,CAAC,EAAE;QACd,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;CACF;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;CACf;AAMD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,CAwJhF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,qBAAqB,GAAG,oBAAoB,CA2C7F"}
|