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,3 @@
|
|
|
1
|
+
import type { BaseNode } from 'stream-markdown-parser';
|
|
2
|
+
export declare function hydrateCustomTagContent<T extends BaseNode>(nodes: readonly T[] | null | undefined, source: string, customHtmlTags?: readonly string[]): T[];
|
|
3
|
+
//# sourceMappingURL=hydrateCustomTagContent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hydrateCustomTagContent.d.ts","sourceRoot":"","sources":["../src/hydrateCustomTagContent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAoBtD,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,QAAQ,EACxD,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,EACtC,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GACjC,CAAC,EAAE,CA0CL"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { normalizeCustomHtmlTags, normalizeCustomHtmlTagName as normalizeTagName } from 'stream-markdown-parser';
|
|
2
|
+
const TAG_TOKEN_RE = /<\/?([A-Z][\w:-]*)(?:\s[^<>]*)?>/gi;
|
|
3
|
+
export function hydrateCustomTagContent(nodes, source, customHtmlTags) {
|
|
4
|
+
const normalizedTags = normalizeCustomHtmlTags(customHtmlTags);
|
|
5
|
+
const tagSet = new Set(normalizedTags);
|
|
6
|
+
if (!source || tagSet.size === 0 || !Array.isArray(nodes) || nodes.length === 0)
|
|
7
|
+
return Array.isArray(nodes) ? nodes.slice() : [];
|
|
8
|
+
const segments = collectCustomTagSegments(source, tagSet);
|
|
9
|
+
if (segments.length === 0)
|
|
10
|
+
return nodes.slice();
|
|
11
|
+
let segmentIndex = 0;
|
|
12
|
+
const cloned = nodes.map(node => cloneNodeTree(node));
|
|
13
|
+
const visitNode = (node) => {
|
|
14
|
+
if (!node || typeof node !== 'object')
|
|
15
|
+
return;
|
|
16
|
+
const tag = resolveCustomTagName(node, tagSet);
|
|
17
|
+
if (tag) {
|
|
18
|
+
const segment = consumeNextSegment(segments, tag, () => segmentIndex, nextIndex => (segmentIndex = nextIndex));
|
|
19
|
+
if (segment) {
|
|
20
|
+
node.tag = tag;
|
|
21
|
+
node.type = tag;
|
|
22
|
+
node.content = segment.innerContent;
|
|
23
|
+
node.raw = segment.raw;
|
|
24
|
+
if (typeof node.loading !== 'boolean')
|
|
25
|
+
node.loading = segment.loading;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
for (const value of Object.values(node)) {
|
|
29
|
+
if (!Array.isArray(value))
|
|
30
|
+
continue;
|
|
31
|
+
for (const child of value)
|
|
32
|
+
visitNode(child);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
for (const node of cloned)
|
|
36
|
+
visitNode(node);
|
|
37
|
+
return cloned;
|
|
38
|
+
}
|
|
39
|
+
function collectCustomTagSegments(source, tagSet) {
|
|
40
|
+
const stack = [];
|
|
41
|
+
const segments = [];
|
|
42
|
+
let match;
|
|
43
|
+
TAG_TOKEN_RE.lastIndex = 0;
|
|
44
|
+
while ((match = TAG_TOKEN_RE.exec(source)) !== null) {
|
|
45
|
+
const raw = match[0];
|
|
46
|
+
const tag = normalizeTagName(match[1]);
|
|
47
|
+
if (!tag || !tagSet.has(tag))
|
|
48
|
+
continue;
|
|
49
|
+
const isClosing = raw.startsWith('</');
|
|
50
|
+
if (!isClosing) {
|
|
51
|
+
stack.push({
|
|
52
|
+
tag,
|
|
53
|
+
start: match.index,
|
|
54
|
+
openEnd: TAG_TOKEN_RE.lastIndex,
|
|
55
|
+
});
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
const openIndex = findLastOpenIndex(stack, tag);
|
|
59
|
+
if (openIndex < 0)
|
|
60
|
+
continue;
|
|
61
|
+
const [open] = stack.splice(openIndex, 1);
|
|
62
|
+
const closeStart = match.index;
|
|
63
|
+
const closeEnd = TAG_TOKEN_RE.lastIndex;
|
|
64
|
+
segments.push({
|
|
65
|
+
tag,
|
|
66
|
+
start: open.start,
|
|
67
|
+
end: closeEnd,
|
|
68
|
+
innerContent: source.slice(open.openEnd, closeStart),
|
|
69
|
+
raw: source.slice(open.start, closeEnd),
|
|
70
|
+
loading: false,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
for (const open of stack) {
|
|
74
|
+
segments.push({
|
|
75
|
+
tag: open.tag,
|
|
76
|
+
start: open.start,
|
|
77
|
+
end: source.length,
|
|
78
|
+
innerContent: source.slice(open.openEnd),
|
|
79
|
+
raw: source.slice(open.start),
|
|
80
|
+
loading: true,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
return segments.sort((left, right) => {
|
|
84
|
+
if (left.start !== right.start)
|
|
85
|
+
return left.start - right.start;
|
|
86
|
+
return right.end - left.end;
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
function findLastOpenIndex(stack, tag) {
|
|
90
|
+
var _a;
|
|
91
|
+
for (let index = stack.length - 1; index >= 0; index -= 1) {
|
|
92
|
+
if (((_a = stack[index]) === null || _a === void 0 ? void 0 : _a.tag) === tag)
|
|
93
|
+
return index;
|
|
94
|
+
}
|
|
95
|
+
return -1;
|
|
96
|
+
}
|
|
97
|
+
function consumeNextSegment(segments, tag, getIndex, setIndex) {
|
|
98
|
+
let index = getIndex();
|
|
99
|
+
while (index < segments.length) {
|
|
100
|
+
const segment = segments[index];
|
|
101
|
+
index += 1;
|
|
102
|
+
if (segment.tag !== tag)
|
|
103
|
+
continue;
|
|
104
|
+
setIndex(index);
|
|
105
|
+
return segment;
|
|
106
|
+
}
|
|
107
|
+
setIndex(index);
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
function resolveCustomTagName(node, tagSet) {
|
|
111
|
+
const byTag = normalizeTagName(node.tag);
|
|
112
|
+
if (byTag && tagSet.has(byTag))
|
|
113
|
+
return byTag;
|
|
114
|
+
const byType = normalizeTagName(node.type);
|
|
115
|
+
return byType && tagSet.has(byType) ? byType : '';
|
|
116
|
+
}
|
|
117
|
+
function cloneNodeTree(node) {
|
|
118
|
+
if (!node || typeof node !== 'object')
|
|
119
|
+
return node;
|
|
120
|
+
const cloned = Array.isArray(node)
|
|
121
|
+
? node.map(item => cloneNodeTree(item))
|
|
122
|
+
: { ...node };
|
|
123
|
+
if (!Array.isArray(cloned)) {
|
|
124
|
+
for (const [key, value] of Object.entries(cloned)) {
|
|
125
|
+
if (Array.isArray(value))
|
|
126
|
+
cloned[key] = value.map(item => cloneNodeTree(item));
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return cloned;
|
|
130
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSafeI18n.d.ts","sourceRoot":"","sources":["../../src/i18n/useSafeI18n.ts"],"names":[],"mappings":"AAiCA,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAE5D;AAED,wBAAgB,WAAW;WAEhB,MAAM;EAIhB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
function humanizeKey(key) {
|
|
2
|
+
const suffix = key.split('.').pop() || key;
|
|
3
|
+
return suffix
|
|
4
|
+
.replace(/[_-]/g, ' ')
|
|
5
|
+
.replace(/([A-Z])/g, ' $1')
|
|
6
|
+
.replace(/\s+/g, ' ')
|
|
7
|
+
.replace(/\b\w/g, char => char.toUpperCase())
|
|
8
|
+
.trim();
|
|
9
|
+
}
|
|
10
|
+
const defaultMap = {
|
|
11
|
+
'common.copy': 'Copy',
|
|
12
|
+
'common.copied': 'Copied',
|
|
13
|
+
'common.decrease': 'Decrease',
|
|
14
|
+
'common.reset': 'Reset',
|
|
15
|
+
'common.increase': 'Increase',
|
|
16
|
+
'common.expand': 'Expand',
|
|
17
|
+
'common.collapse': 'Collapse',
|
|
18
|
+
'common.preview': 'Preview',
|
|
19
|
+
'common.source': 'Source',
|
|
20
|
+
'common.export': 'Export',
|
|
21
|
+
'common.open': 'Open',
|
|
22
|
+
'common.close': 'Close',
|
|
23
|
+
'common.zoomIn': 'Zoom in',
|
|
24
|
+
'common.zoomOut': 'Zoom out',
|
|
25
|
+
'common.resetZoom': 'Reset zoom',
|
|
26
|
+
'artifacts.htmlPreviewTitle': 'HTML Preview',
|
|
27
|
+
'artifacts.svgPreviewTitle': 'SVG Preview',
|
|
28
|
+
'image.preview': 'Preview image',
|
|
29
|
+
'image.loadError': 'Image failed to load',
|
|
30
|
+
'image.loading': 'Loading image...',
|
|
31
|
+
};
|
|
32
|
+
export function setDefaultI18nMap(map) {
|
|
33
|
+
Object.assign(defaultMap, map);
|
|
34
|
+
}
|
|
35
|
+
export function useSafeI18n() {
|
|
36
|
+
return {
|
|
37
|
+
t(key) {
|
|
38
|
+
var _a;
|
|
39
|
+
return (_a = defaultMap[key]) !== null && _a !== void 0 ? _a : humanizeKey(key);
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|