@hejiayue/x-markdown-test 0.0.1-beta.151 → 0.0.1-beta.152
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/dist/style.css +438 -1
- package/dist/types/config.d.ts +33 -0
- package/dist/types/hooks/useMermaid.d.ts +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/x-markdown.cjs.js +35 -1
- package/dist/x-markdown.cjs.js.map +1 -1
- package/dist/x-markdown.cjs10.js +52 -1
- package/dist/x-markdown.cjs10.js.map +1 -1
- package/dist/x-markdown.cjs11.js +57 -1
- package/dist/x-markdown.cjs11.js.map +1 -1
- package/dist/x-markdown.cjs12.js +18 -0
- package/dist/x-markdown.cjs12.js.map +1 -0
- package/dist/x-markdown.cjs14.js +92 -1
- package/dist/x-markdown.cjs14.js.map +1 -1
- package/dist/x-markdown.cjs15.js +36 -1
- package/dist/x-markdown.cjs15.js.map +1 -1
- package/dist/x-markdown.cjs16.js +9 -1
- package/dist/x-markdown.cjs16.js.map +1 -1
- package/dist/x-markdown.cjs17.js +10 -1
- package/dist/x-markdown.cjs17.js.map +1 -1
- package/dist/x-markdown.cjs18.js +11 -1
- package/dist/x-markdown.cjs18.js.map +1 -1
- package/dist/x-markdown.cjs19.js +11 -1
- package/dist/x-markdown.cjs19.js.map +1 -1
- package/dist/x-markdown.cjs2.js +86 -1
- package/dist/x-markdown.cjs2.js.map +1 -1
- package/dist/x-markdown.cjs20.js +211 -0
- package/dist/x-markdown.cjs20.js.map +1 -0
- package/dist/x-markdown.cjs22.js +13 -1
- package/dist/x-markdown.cjs22.js.map +1 -1
- package/dist/x-markdown.cjs23.js +79 -0
- package/dist/x-markdown.cjs23.js.map +1 -0
- package/dist/x-markdown.cjs25.js +409 -0
- package/dist/x-markdown.cjs25.js.map +1 -0
- package/dist/x-markdown.cjs27.js +199 -1
- package/dist/x-markdown.cjs27.js.map +1 -1
- package/dist/x-markdown.cjs28.js +135 -1
- package/dist/x-markdown.cjs28.js.map +1 -1
- package/dist/x-markdown.cjs3.js +97 -1
- package/dist/x-markdown.cjs3.js.map +1 -1
- package/dist/x-markdown.cjs30.js +11 -1
- package/dist/x-markdown.cjs30.js.map +1 -1
- package/dist/x-markdown.cjs31.js +122 -1
- package/dist/x-markdown.cjs31.js.map +1 -1
- package/dist/x-markdown.cjs32.js +11 -0
- package/dist/x-markdown.cjs32.js.map +1 -0
- package/dist/x-markdown.cjs33.js +128 -1
- package/dist/x-markdown.cjs33.js.map +1 -1
- package/dist/x-markdown.cjs4.js +153 -1
- package/dist/x-markdown.cjs4.js.map +1 -1
- package/dist/x-markdown.cjs5.js +43 -1
- package/dist/x-markdown.cjs5.js.map +1 -1
- package/dist/x-markdown.cjs6.js +27 -1
- package/dist/x-markdown.cjs6.js.map +1 -1
- package/dist/x-markdown.cjs7.js +310 -1
- package/dist/x-markdown.cjs7.js.map +1 -1
- package/dist/x-markdown.cjs8.js +30 -1
- package/dist/x-markdown.cjs8.js.map +1 -1
- package/dist/x-markdown.cjs9.js +435 -1
- package/dist/x-markdown.cjs9.js.map +1 -1
- package/dist/x-markdown.es.js +11 -28
- package/dist/x-markdown.es10.js +10 -10
- package/dist/x-markdown.es10.js.map +1 -1
- package/dist/x-markdown.es11.js +4 -5
- package/dist/x-markdown.es11.js.map +1 -1
- package/dist/x-markdown.es12.js +12 -0
- package/dist/x-markdown.es12.js.map +1 -0
- package/dist/x-markdown.es14.js +85 -29
- package/dist/x-markdown.es14.js.map +1 -1
- package/dist/x-markdown.es15.js +32 -4
- package/dist/x-markdown.es15.js.map +1 -1
- package/dist/x-markdown.es16.js +5 -5
- package/dist/x-markdown.es16.js.map +1 -1
- package/dist/x-markdown.es17.js +5 -6
- package/dist/x-markdown.es17.js.map +1 -1
- package/dist/x-markdown.es18.js +6 -6
- package/dist/x-markdown.es18.js.map +1 -1
- package/dist/x-markdown.es19.js +7 -206
- package/dist/x-markdown.es19.js.map +1 -1
- package/dist/x-markdown.es2.js +6 -7
- package/dist/x-markdown.es2.js.map +1 -1
- package/dist/x-markdown.es20.js +207 -0
- package/dist/x-markdown.es20.js.map +1 -0
- package/dist/x-markdown.es22.js +7 -72
- package/dist/x-markdown.es22.js.map +1 -1
- package/dist/x-markdown.es23.js +75 -0
- package/dist/x-markdown.es23.js.map +1 -0
- package/dist/{x-markdown.es24.js → x-markdown.es25.js} +12 -10
- package/dist/x-markdown.es25.js.map +1 -0
- package/dist/x-markdown.es27.js +182 -7
- package/dist/x-markdown.es27.js.map +1 -1
- package/dist/x-markdown.es28.js +7 -8
- package/dist/x-markdown.es28.js.map +1 -1
- package/dist/x-markdown.es3.js +7 -8
- package/dist/x-markdown.es3.js.map +1 -1
- package/dist/x-markdown.es30.js +7 -77
- package/dist/x-markdown.es30.js.map +1 -1
- package/dist/x-markdown.es31.js +112 -124
- package/dist/x-markdown.es31.js.map +1 -1
- package/dist/x-markdown.es32.js +7 -0
- package/dist/x-markdown.es32.js.map +1 -0
- package/dist/x-markdown.es33.js +124 -5
- package/dist/x-markdown.es33.js.map +1 -1
- package/dist/x-markdown.es4.js +5 -7
- package/dist/x-markdown.es4.js.map +1 -1
- package/dist/x-markdown.es5.js +9 -10
- package/dist/x-markdown.es5.js.map +1 -1
- package/dist/x-markdown.es6.js +5 -5
- package/dist/x-markdown.es6.js.map +1 -1
- package/dist/x-markdown.es7.js +61 -74
- package/dist/x-markdown.es7.js.map +1 -1
- package/dist/x-markdown.es8.js +4 -5
- package/dist/x-markdown.es8.js.map +1 -1
- package/dist/x-markdown.es9.js +22 -14
- package/dist/x-markdown.es9.js.map +1 -1
- package/package.json +3 -14
- package/dist/types/vite-plugin.d.ts +0 -29
- package/dist/vite-plugin.cjs +0 -128
- package/dist/vite-plugin.cjs.map +0 -1
- package/dist/vite-plugin.js +0 -128
- package/dist/vite-plugin.js.map +0 -1
- package/dist/x-markdown.cjs13.js +0 -2
- package/dist/x-markdown.cjs13.js.map +0 -1
- package/dist/x-markdown.cjs21.js +0 -2
- package/dist/x-markdown.cjs21.js.map +0 -1
- package/dist/x-markdown.cjs24.js +0 -2
- package/dist/x-markdown.cjs24.js.map +0 -1
- package/dist/x-markdown.cjs26.js +0 -2
- package/dist/x-markdown.cjs26.js.map +0 -1
- package/dist/x-markdown.es13.js +0 -89
- package/dist/x-markdown.es13.js.map +0 -1
- package/dist/x-markdown.es21.js +0 -11
- package/dist/x-markdown.es21.js.map +0 -1
- package/dist/x-markdown.es24.js.map +0 -1
- package/dist/x-markdown.es26.js +0 -160
- package/dist/x-markdown.es26.js.map +0 -1
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
|
|
4
|
+
|
|
5
|
+
const vue = require('vue');
|
|
6
|
+
const index = require('./x-markdown.cjs27.js');
|
|
7
|
+
const config = require('./x-markdown.cjs12.js');
|
|
8
|
+
const useMermaid = require('./x-markdown.cjs9.js');
|
|
9
|
+
const SyntaxMermaid_vue_vue_type_script_setup_true_lang = require('./x-markdown.cjs28.js');
|
|
10
|
+
;/* empty css */
|
|
11
|
+
const index$1 = require('./x-markdown.cjs18.js');
|
|
12
|
+
|
|
13
|
+
const _hoisted_1 = { class: "toolbar-container" };
|
|
14
|
+
const _hoisted_2 = { class: "mermaid-toolbar" };
|
|
15
|
+
const _hoisted_3 = { class: "toolbar-left" };
|
|
16
|
+
const _hoisted_4 = { class: "segmented-control" };
|
|
17
|
+
const _hoisted_5 = { class: "toolbar-right" };
|
|
18
|
+
const _hoisted_6 = ["title", "onClick"];
|
|
19
|
+
const _hoisted_7 = {
|
|
20
|
+
key: 0,
|
|
21
|
+
width: "16",
|
|
22
|
+
height: "16",
|
|
23
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
24
|
+
viewBox: "0 0 1024 1024"
|
|
25
|
+
};
|
|
26
|
+
const _hoisted_8 = {
|
|
27
|
+
key: 1,
|
|
28
|
+
width: "16",
|
|
29
|
+
height: "16",
|
|
30
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
31
|
+
viewBox: "0 0 1024 1024"
|
|
32
|
+
};
|
|
33
|
+
const _hoisted_9 = { class: "mermaid-source-code" };
|
|
34
|
+
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
35
|
+
__name: "index",
|
|
36
|
+
props: {
|
|
37
|
+
isDark: { type: Boolean, default: false },
|
|
38
|
+
shikiTheme: { default: () => ["vitesse-light", "vitesse-dark"] },
|
|
39
|
+
config: { default: () => ({}) },
|
|
40
|
+
mermaidActions: { default: void 0 },
|
|
41
|
+
raw: { default: () => ({}) }
|
|
42
|
+
},
|
|
43
|
+
setup(__props) {
|
|
44
|
+
const props = __props;
|
|
45
|
+
const config$1 = config.useXMarkdownConfig();
|
|
46
|
+
const syntaxMermaidRef = vue.ref(null);
|
|
47
|
+
const showSourceCode = vue.ref(false);
|
|
48
|
+
const isDegraded = vue.ref(true);
|
|
49
|
+
const mermaidContent = vue.computed(() => props.raw?.content || "");
|
|
50
|
+
const mermaidId = vue.computed(() => `mermaid-${props.raw?.key || "default"}`);
|
|
51
|
+
const isLoading = vue.computed(() => syntaxMermaidRef.value?.isLoading ?? true);
|
|
52
|
+
const svg = vue.computed(() => syntaxMermaidRef.value?.svg ?? "");
|
|
53
|
+
const activeTab = vue.computed(() => showSourceCode.value ? "code" : "diagram");
|
|
54
|
+
function handleZoomIn(event) {
|
|
55
|
+
event?.stopPropagation();
|
|
56
|
+
event?.preventDefault();
|
|
57
|
+
if (!showSourceCode.value) {
|
|
58
|
+
syntaxMermaidRef.value?.zoomIn();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function handleZoomOut(event) {
|
|
62
|
+
event?.stopPropagation();
|
|
63
|
+
event?.preventDefault();
|
|
64
|
+
if (!showSourceCode.value) {
|
|
65
|
+
syntaxMermaidRef.value?.zoomOut();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function handleReset(event) {
|
|
69
|
+
event?.stopPropagation();
|
|
70
|
+
event?.preventDefault();
|
|
71
|
+
if (!showSourceCode.value) {
|
|
72
|
+
syntaxMermaidRef.value?.reset();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function handleFullscreen() {
|
|
76
|
+
if (!showSourceCode.value) {
|
|
77
|
+
syntaxMermaidRef.value?.fullscreen();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function handleToggleCode() {
|
|
81
|
+
showSourceCode.value = !showSourceCode.value;
|
|
82
|
+
}
|
|
83
|
+
const { copy: copyCode, copied } = index.useClipboard({ copiedDuring: 1500 });
|
|
84
|
+
function handleTabClick(tabName) {
|
|
85
|
+
if (tabName === "code" && !showSourceCode.value) {
|
|
86
|
+
showSourceCode.value = true;
|
|
87
|
+
} else if (tabName === "diagram" && showSourceCode.value) {
|
|
88
|
+
showSourceCode.value = false;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async function handleCopyCode(event) {
|
|
92
|
+
event?.stopPropagation();
|
|
93
|
+
event?.preventDefault();
|
|
94
|
+
if (copied.value) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
if (!props.raw.content) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
await copyCode(props.raw.content);
|
|
101
|
+
}
|
|
102
|
+
function handleDownload() {
|
|
103
|
+
syntaxMermaidRef.value?.download();
|
|
104
|
+
}
|
|
105
|
+
const normalizedActions = vue.computed(() => {
|
|
106
|
+
return props.mermaidActions || [];
|
|
107
|
+
});
|
|
108
|
+
const filteredActions = vue.computed(() => {
|
|
109
|
+
return normalizedActions.value.filter((action) => {
|
|
110
|
+
if (!action.show) return true;
|
|
111
|
+
return action.show(slotProps.value);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
const slotProps = vue.computed(() => ({
|
|
115
|
+
showSourceCode: showSourceCode.value,
|
|
116
|
+
svg: svg.value,
|
|
117
|
+
rawContent: props.raw.content || "",
|
|
118
|
+
isLoading: isLoading.value,
|
|
119
|
+
copied: copied.value,
|
|
120
|
+
zoomIn: handleZoomIn,
|
|
121
|
+
zoomOut: handleZoomOut,
|
|
122
|
+
reset: handleReset,
|
|
123
|
+
fullscreen: handleFullscreen,
|
|
124
|
+
toggleCode: handleToggleCode,
|
|
125
|
+
copyCode: handleCopyCode,
|
|
126
|
+
download: handleDownload,
|
|
127
|
+
raw: props.raw
|
|
128
|
+
}));
|
|
129
|
+
function renderActionIcon(action) {
|
|
130
|
+
if (!action.icon) return null;
|
|
131
|
+
if (typeof action.icon === "string") {
|
|
132
|
+
return vue.h("span", {
|
|
133
|
+
class: "mermaid-action-icon",
|
|
134
|
+
innerHTML: action.icon
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
if (typeof action.icon === "function") {
|
|
138
|
+
try {
|
|
139
|
+
const result = action.icon(slotProps.value);
|
|
140
|
+
if (result && typeof result === "object" && "__v_isVNode" in result) {
|
|
141
|
+
return result;
|
|
142
|
+
}
|
|
143
|
+
} catch {
|
|
144
|
+
}
|
|
145
|
+
return vue.h(action.icon);
|
|
146
|
+
}
|
|
147
|
+
return vue.h(action.icon);
|
|
148
|
+
}
|
|
149
|
+
function handleActionClick(action) {
|
|
150
|
+
if (action.disabled) return;
|
|
151
|
+
action.onClick?.(slotProps.value);
|
|
152
|
+
}
|
|
153
|
+
const exposedMethods = vue.computed(
|
|
154
|
+
() => ({
|
|
155
|
+
showSourceCode: showSourceCode.value,
|
|
156
|
+
svg: svg.value,
|
|
157
|
+
rawContent: props.raw.content || "",
|
|
158
|
+
isLoading: isLoading.value,
|
|
159
|
+
copied: copied.value,
|
|
160
|
+
zoomIn: handleZoomIn,
|
|
161
|
+
zoomOut: handleZoomOut,
|
|
162
|
+
reset: handleReset,
|
|
163
|
+
fullscreen: handleFullscreen,
|
|
164
|
+
toggleCode: handleToggleCode,
|
|
165
|
+
copyCode: handleCopyCode,
|
|
166
|
+
download: handleDownload,
|
|
167
|
+
raw: props.raw
|
|
168
|
+
})
|
|
169
|
+
);
|
|
170
|
+
vue.onMounted(async () => {
|
|
171
|
+
const hasMermaid = await useMermaid.checkMermaidAvailable(config$1.mermaid);
|
|
172
|
+
isDegraded.value = !hasMermaid;
|
|
173
|
+
});
|
|
174
|
+
return (_ctx, _cache) => {
|
|
175
|
+
return isDegraded.value ? (vue.openBlock(), vue.createBlock(index$1.default, {
|
|
176
|
+
key: 0,
|
|
177
|
+
code: props.raw?.content || "",
|
|
178
|
+
language: "mermaid",
|
|
179
|
+
"is-dark": props.isDark,
|
|
180
|
+
"light-theme": props.shikiTheme[0],
|
|
181
|
+
"dark-theme": props.shikiTheme[1]
|
|
182
|
+
}, null, 8, ["code", "is-dark", "light-theme", "dark-theme"])) : (vue.openBlock(), vue.createElementBlock("div", {
|
|
183
|
+
key: props.raw.key,
|
|
184
|
+
class: vue.normalizeClass(["markdown-mermaid", { "markdown-mermaid--dark": props.isDark }])
|
|
185
|
+
}, [
|
|
186
|
+
vue.createVNode(vue.Transition, {
|
|
187
|
+
name: "toolbar",
|
|
188
|
+
appear: ""
|
|
189
|
+
}, {
|
|
190
|
+
default: vue.withCtx(() => [
|
|
191
|
+
vue.createElementVNode("div", _hoisted_1, [
|
|
192
|
+
vue.renderSlot(_ctx.$slots, "mermaidHeader", vue.normalizeProps(vue.guardReactiveProps(exposedMethods.value)), () => [
|
|
193
|
+
vue.createElementVNode("div", _hoisted_2, [
|
|
194
|
+
vue.createElementVNode("div", _hoisted_3, [
|
|
195
|
+
vue.createElementVNode("div", _hoisted_4, [
|
|
196
|
+
vue.createElementVNode("div", {
|
|
197
|
+
class: vue.normalizeClass(["segmented-slider", { "slide-right": activeTab.value === "code" }])
|
|
198
|
+
}, null, 2),
|
|
199
|
+
vue.createElementVNode("div", {
|
|
200
|
+
class: vue.normalizeClass(["segment-item", { active: activeTab.value === "diagram" }]),
|
|
201
|
+
onClick: _cache[0] || (_cache[0] = ($event) => handleTabClick("diagram"))
|
|
202
|
+
}, [..._cache[6] || (_cache[6] = [
|
|
203
|
+
vue.createElementVNode("svg", {
|
|
204
|
+
width: "14",
|
|
205
|
+
height: "14",
|
|
206
|
+
viewBox: "0 0 24 24",
|
|
207
|
+
fill: "none",
|
|
208
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
209
|
+
}, [
|
|
210
|
+
vue.createElementVNode("path", {
|
|
211
|
+
d: "M12 2L2 7L12 12L22 7L12 2Z",
|
|
212
|
+
stroke: "currentColor",
|
|
213
|
+
"stroke-width": "2",
|
|
214
|
+
"stroke-linecap": "round",
|
|
215
|
+
"stroke-linejoin": "round"
|
|
216
|
+
}),
|
|
217
|
+
vue.createElementVNode("path", {
|
|
218
|
+
d: "M2 17L12 22L22 17",
|
|
219
|
+
stroke: "currentColor",
|
|
220
|
+
"stroke-width": "2",
|
|
221
|
+
"stroke-linecap": "round",
|
|
222
|
+
"stroke-linejoin": "round"
|
|
223
|
+
}),
|
|
224
|
+
vue.createElementVNode("path", {
|
|
225
|
+
d: "M2 12L12 17L22 12",
|
|
226
|
+
stroke: "currentColor",
|
|
227
|
+
"stroke-width": "2",
|
|
228
|
+
"stroke-linecap": "round",
|
|
229
|
+
"stroke-linejoin": "round"
|
|
230
|
+
})
|
|
231
|
+
], -1),
|
|
232
|
+
vue.createElementVNode("span", null, "预览", -1)
|
|
233
|
+
])], 2),
|
|
234
|
+
vue.createElementVNode("div", {
|
|
235
|
+
class: vue.normalizeClass(["segment-item", { active: activeTab.value === "code" }]),
|
|
236
|
+
onClick: _cache[1] || (_cache[1] = ($event) => handleTabClick("code"))
|
|
237
|
+
}, [..._cache[7] || (_cache[7] = [
|
|
238
|
+
vue.createElementVNode("svg", {
|
|
239
|
+
width: "14",
|
|
240
|
+
height: "14",
|
|
241
|
+
viewBox: "0 0 24 24",
|
|
242
|
+
fill: "none",
|
|
243
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
244
|
+
}, [
|
|
245
|
+
vue.createElementVNode("path", {
|
|
246
|
+
d: "M16 18L22 12L16 6",
|
|
247
|
+
stroke: "currentColor",
|
|
248
|
+
"stroke-width": "2",
|
|
249
|
+
"stroke-linecap": "round",
|
|
250
|
+
"stroke-linejoin": "round"
|
|
251
|
+
}),
|
|
252
|
+
vue.createElementVNode("path", {
|
|
253
|
+
d: "M8 6L2 12L8 18",
|
|
254
|
+
stroke: "currentColor",
|
|
255
|
+
"stroke-width": "2",
|
|
256
|
+
"stroke-linecap": "round",
|
|
257
|
+
"stroke-linejoin": "round"
|
|
258
|
+
})
|
|
259
|
+
], -1),
|
|
260
|
+
vue.createElementVNode("span", null, "代码", -1)
|
|
261
|
+
])], 2)
|
|
262
|
+
])
|
|
263
|
+
]),
|
|
264
|
+
vue.createElementVNode("div", _hoisted_5, [
|
|
265
|
+
vue.renderSlot(_ctx.$slots, "mermaidActions", vue.normalizeProps(vue.guardReactiveProps(exposedMethods.value)), () => [
|
|
266
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(filteredActions.value, (action) => {
|
|
267
|
+
return vue.openBlock(), vue.createElementBlock("div", {
|
|
268
|
+
key: action.key,
|
|
269
|
+
class: vue.normalizeClass(["toolbar-action-btn", [action.class, { "toolbar-action-btn--disabled": action.disabled }]]),
|
|
270
|
+
style: vue.normalizeStyle(action.style),
|
|
271
|
+
title: action.title,
|
|
272
|
+
onClick: ($event) => handleActionClick(action)
|
|
273
|
+
}, [
|
|
274
|
+
action.icon ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(renderActionIcon(action)), { key: 0 })) : vue.createCommentVNode("", true)
|
|
275
|
+
], 14, _hoisted_6);
|
|
276
|
+
}), 128)),
|
|
277
|
+
showSourceCode.value ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
278
|
+
key: 0,
|
|
279
|
+
class: vue.normalizeClass(["toolbar-action-btn", { "copy-success": vue.unref(copied) }]),
|
|
280
|
+
title: "复制代码",
|
|
281
|
+
onClick: _cache[2] || (_cache[2] = ($event) => handleCopyCode($event))
|
|
282
|
+
}, [
|
|
283
|
+
vue.unref(copied) ? (vue.openBlock(), vue.createElementBlock("svg", _hoisted_7, [..._cache[8] || (_cache[8] = [
|
|
284
|
+
vue.createElementVNode("path", {
|
|
285
|
+
fill: "currentColor",
|
|
286
|
+
d: "M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z"
|
|
287
|
+
}, null, -1)
|
|
288
|
+
])])) : (vue.openBlock(), vue.createElementBlock("svg", _hoisted_8, [..._cache[9] || (_cache[9] = [
|
|
289
|
+
vue.createElementVNode("path", {
|
|
290
|
+
fill: "currentColor",
|
|
291
|
+
d: "M768 832a128 128 0 0 1-128 128H192A128 128 0 0 1 64 832V384a128 128 0 0 1 128-128v64a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64z"
|
|
292
|
+
}, null, -1),
|
|
293
|
+
vue.createElementVNode("path", {
|
|
294
|
+
fill: "currentColor",
|
|
295
|
+
d: "M384 128a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64zm0-64h448a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H384a128 128 0 0 1-128-128V192A128 128 0 0 1 384 64"
|
|
296
|
+
}, null, -1)
|
|
297
|
+
])]))
|
|
298
|
+
], 2)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
|
|
299
|
+
vue.createElementVNode("div", {
|
|
300
|
+
class: "toolbar-action-btn",
|
|
301
|
+
title: "缩小",
|
|
302
|
+
onClick: _cache[3] || (_cache[3] = ($event) => handleZoomOut($event))
|
|
303
|
+
}, [..._cache[10] || (_cache[10] = [
|
|
304
|
+
vue.createElementVNode("svg", {
|
|
305
|
+
width: "16",
|
|
306
|
+
height: "16",
|
|
307
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
308
|
+
viewBox: "0 0 1024 1024"
|
|
309
|
+
}, [
|
|
310
|
+
vue.createElementVNode("path", {
|
|
311
|
+
fill: "currentColor",
|
|
312
|
+
d: "m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704M352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64"
|
|
313
|
+
})
|
|
314
|
+
], -1)
|
|
315
|
+
])]),
|
|
316
|
+
vue.createElementVNode("div", {
|
|
317
|
+
class: "toolbar-action-btn",
|
|
318
|
+
title: "放大",
|
|
319
|
+
onClick: _cache[4] || (_cache[4] = ($event) => handleZoomIn($event))
|
|
320
|
+
}, [..._cache[11] || (_cache[11] = [
|
|
321
|
+
vue.createElementVNode("svg", {
|
|
322
|
+
width: "16",
|
|
323
|
+
height: "16",
|
|
324
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
325
|
+
viewBox: "0 0 1024 1024"
|
|
326
|
+
}, [
|
|
327
|
+
vue.createElementVNode("path", {
|
|
328
|
+
fill: "currentColor",
|
|
329
|
+
d: "m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704m-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64z"
|
|
330
|
+
})
|
|
331
|
+
], -1)
|
|
332
|
+
])]),
|
|
333
|
+
vue.createElementVNode("div", {
|
|
334
|
+
class: "toolbar-action-btn",
|
|
335
|
+
title: "重置",
|
|
336
|
+
onClick: _cache[5] || (_cache[5] = ($event) => handleReset($event))
|
|
337
|
+
}, [..._cache[12] || (_cache[12] = [
|
|
338
|
+
vue.createElementVNode("svg", {
|
|
339
|
+
width: "16",
|
|
340
|
+
height: "16",
|
|
341
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
342
|
+
viewBox: "0 0 1024 1024"
|
|
343
|
+
}, [
|
|
344
|
+
vue.createElementVNode("path", {
|
|
345
|
+
fill: "currentColor",
|
|
346
|
+
d: "M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"
|
|
347
|
+
}),
|
|
348
|
+
vue.createElementVNode("path", {
|
|
349
|
+
fill: "currentColor",
|
|
350
|
+
d: "M512 96a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V128a32 32 0 0 1 32-32m0 576a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V704a32 32 0 0 1 32-32M96 512a32 32 0 0 1 32-32h192a32 32 0 0 1 0 64H128a32 32 0 0 1-32-32m576 0a32 32 0 0 1 32-32h192a32 32 0 1 1 0 64H704a32 32 0 0 1-32-32"
|
|
351
|
+
})
|
|
352
|
+
], -1)
|
|
353
|
+
])]),
|
|
354
|
+
vue.createElementVNode("div", {
|
|
355
|
+
class: "toolbar-action-btn",
|
|
356
|
+
title: "下载",
|
|
357
|
+
onClick: handleDownload
|
|
358
|
+
}, [..._cache[13] || (_cache[13] = [
|
|
359
|
+
vue.createElementVNode("svg", {
|
|
360
|
+
width: "16",
|
|
361
|
+
height: "16",
|
|
362
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
363
|
+
viewBox: "0 0 1024 1024"
|
|
364
|
+
}, [
|
|
365
|
+
vue.createElementVNode("path", {
|
|
366
|
+
fill: "currentColor",
|
|
367
|
+
d: "M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-253.696 236.288-236.352 45.248 45.248L508.8 704 192 387.2l45.248-45.248L480 584.704V128h64z"
|
|
368
|
+
})
|
|
369
|
+
], -1)
|
|
370
|
+
])])
|
|
371
|
+
], 64))
|
|
372
|
+
])
|
|
373
|
+
])
|
|
374
|
+
])
|
|
375
|
+
])
|
|
376
|
+
])
|
|
377
|
+
]),
|
|
378
|
+
_: 3
|
|
379
|
+
}),
|
|
380
|
+
vue.withDirectives(vue.createElementVNode("div", _hoisted_9, [
|
|
381
|
+
vue.createVNode(index$1.default, {
|
|
382
|
+
code: props.raw?.content || "",
|
|
383
|
+
language: "mermaid",
|
|
384
|
+
"is-dark": props.isDark,
|
|
385
|
+
"light-theme": props.shikiTheme[0],
|
|
386
|
+
"dark-theme": props.shikiTheme[1],
|
|
387
|
+
"show-code-block-header": false,
|
|
388
|
+
"sticky-code-block-header": false
|
|
389
|
+
}, null, 8, ["code", "is-dark", "light-theme", "dark-theme"])
|
|
390
|
+
], 512), [
|
|
391
|
+
[vue.vShow, showSourceCode.value]
|
|
392
|
+
]),
|
|
393
|
+
vue.withDirectives(vue.createVNode(SyntaxMermaid_vue_vue_type_script_setup_true_lang.default, {
|
|
394
|
+
ref_key: "syntaxMermaidRef",
|
|
395
|
+
ref: syntaxMermaidRef,
|
|
396
|
+
content: mermaidContent.value,
|
|
397
|
+
id: mermaidId.value,
|
|
398
|
+
"is-dark": props.isDark,
|
|
399
|
+
config: props.config
|
|
400
|
+
}, null, 8, ["content", "id", "is-dark", "config"]), [
|
|
401
|
+
[vue.vShow, !showSourceCode.value]
|
|
402
|
+
])
|
|
403
|
+
], 2));
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
});
|
|
407
|
+
|
|
408
|
+
exports.default = _sfc_main;
|
|
409
|
+
//# sourceMappingURL=x-markdown.cjs25.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x-markdown.cjs25.js","sources":["../src/components/Mermaid/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { MdComponent, MermaidExposeProps, MermaidAction, MermaidSlotProps } from './types'\r\nimport type { VNode } from 'vue'\r\nimport { computed, ref, h, onMounted } from 'vue'\r\nimport { useClipboard } from '@vueuse/core'\r\nimport { useXMarkdownConfig } from '../../config'\r\n// 使用运行时检测\r\nimport { checkMermaidAvailable } from '../../hooks/useMermaid'\r\nimport SyntaxMermaid from './SyntaxMermaid.vue'\r\nimport CodeBlock from '../CodeBlock/index.vue'\r\n\r\ninterface MermaidProps extends MdComponent {\r\n isDark?: boolean\r\n shikiTheme?: [string, string]\r\n config?: Record<string, any>\r\n mermaidActions?: MermaidAction[]\r\n}\r\n\r\nconst props = withDefaults(defineProps<MermaidProps>(), {\r\n raw: () => ({}),\r\n isDark: false,\r\n shikiTheme: () => ['vitesse-light', 'vitesse-dark'],\r\n config: () => ({}),\r\n mermaidActions: undefined,\r\n})\r\n\r\nconst config = useXMarkdownConfig()\r\nconst syntaxMermaidRef = ref<InstanceType<typeof SyntaxMermaid> | null>(null)\r\nconst showSourceCode = ref(false)\r\n// 运行时检测 mermaid 是否可用\r\n// 默认为 true(降级模式),检测到可用后才切换到正常模式\r\n// 这样可以避免首次渲染时的闪烁问题\r\nconst isDegraded = ref(true)\r\nconst mermaidContent = computed(() => props.raw?.content || '')\r\nconst mermaidId = computed(() => `mermaid-${props.raw?.key || 'default'}`)\r\nconst isLoading = computed(() => syntaxMermaidRef.value?.isLoading ?? true)\r\nconst svg = computed(() => syntaxMermaidRef.value?.svg ?? '')\r\nconst activeTab = computed(() => (showSourceCode.value ? 'code' : 'diagram'))\r\n\r\nfunction handleZoomIn(event?: Event) {\r\n event?.stopPropagation()\r\n event?.preventDefault()\r\n if (!showSourceCode.value) {\r\n syntaxMermaidRef.value?.zoomIn()\r\n }\r\n}\r\n\r\nfunction handleZoomOut(event?: Event) {\r\n event?.stopPropagation()\r\n event?.preventDefault()\r\n if (!showSourceCode.value) {\r\n syntaxMermaidRef.value?.zoomOut()\r\n }\r\n}\r\n\r\nfunction handleReset(event?: Event) {\r\n event?.stopPropagation()\r\n event?.preventDefault()\r\n if (!showSourceCode.value) {\r\n syntaxMermaidRef.value?.reset()\r\n }\r\n}\r\n\r\nfunction handleFullscreen() {\r\n if (!showSourceCode.value) {\r\n syntaxMermaidRef.value?.fullscreen()\r\n }\r\n}\r\n\r\nfunction handleToggleCode() {\r\n showSourceCode.value = !showSourceCode.value\r\n}\r\n\r\nconst { copy: copyCode, copied } = useClipboard({ copiedDuring: 1500 })\r\n\r\nfunction handleTabClick(tabName: string) {\r\n if (tabName === 'code' && !showSourceCode.value) {\r\n showSourceCode.value = true\r\n } else if (tabName === 'diagram' && showSourceCode.value) {\r\n showSourceCode.value = false\r\n }\r\n}\r\n\r\nasync function handleCopyCode(event?: Event) {\r\n event?.stopPropagation()\r\n event?.preventDefault()\r\n\r\n if (copied.value) {\r\n return\r\n }\r\n\r\n if (!props.raw.content) {\r\n return\r\n }\r\n await copyCode(props.raw.content)\r\n}\r\n\r\nfunction handleDownload() {\r\n syntaxMermaidRef.value?.download()\r\n}\r\n\r\nconst normalizedActions = computed<MermaidAction[]>(() => {\r\n return props.mermaidActions || []\r\n})\r\n\r\nconst filteredActions = computed<MermaidAction[]>(() => {\r\n return normalizedActions.value.filter((action) => {\r\n if (!action.show) return true\r\n return action.show(slotProps.value)\r\n })\r\n})\r\n\r\nconst slotProps = computed<MermaidSlotProps>(() => ({\r\n showSourceCode: showSourceCode.value,\r\n svg: svg.value,\r\n rawContent: props.raw.content || '',\r\n isLoading: isLoading.value,\r\n copied: copied.value,\r\n zoomIn: handleZoomIn,\r\n zoomOut: handleZoomOut,\r\n reset: handleReset,\r\n fullscreen: handleFullscreen,\r\n toggleCode: handleToggleCode,\r\n copyCode: handleCopyCode,\r\n download: handleDownload,\r\n raw: props.raw,\r\n}))\r\n\r\nfunction renderActionIcon(action: MermaidAction): VNode | null {\r\n if (!action.icon) return null\r\n\r\n if (typeof action.icon === 'string') {\r\n return h('span', {\r\n class: 'mermaid-action-icon',\r\n innerHTML: action.icon,\r\n })\r\n }\r\n\r\n if (typeof action.icon === 'function') {\r\n try {\r\n const result = (action.icon as (props: MermaidSlotProps) => VNode)(slotProps.value)\r\n if (result && typeof result === 'object' && '__v_isVNode' in result) {\r\n return result\r\n }\r\n } catch {\r\n // ignore\r\n }\r\n return h(action.icon as any)\r\n }\r\n\r\n return h(action.icon as any)\r\n}\r\n\r\nfunction handleActionClick(action: MermaidAction) {\r\n if (action.disabled) return\r\n action.onClick?.(slotProps.value)\r\n}\r\n\r\nconst exposedMethods = computed(\r\n () =>\r\n ({\r\n showSourceCode: showSourceCode.value,\r\n svg: svg.value,\r\n rawContent: props.raw.content || '',\r\n isLoading: isLoading.value,\r\n copied: copied.value,\r\n zoomIn: handleZoomIn,\r\n zoomOut: handleZoomOut,\r\n reset: handleReset,\r\n fullscreen: handleFullscreen,\r\n toggleCode: handleToggleCode,\r\n copyCode: handleCopyCode,\r\n download: handleDownload,\r\n raw: props.raw,\r\n }) satisfies MermaidExposeProps,\r\n)\r\n\r\n// 组件挂载时检测 mermaid 是否可用\r\nonMounted(async () => {\r\n const hasMermaid = await checkMermaidAvailable(config.mermaid)\r\n isDegraded.value = !hasMermaid\r\n})\r\n</script>\r\n\r\n<template>\r\n <!-- 当 Mermaid 不可用时(降级),渲染 CodeBlock -->\r\n <CodeBlock v-if=\"isDegraded\" :code=\"props.raw?.content || ''\" language=\"mermaid\" :is-dark=\"props.isDark\"\r\n :light-theme=\"props.shikiTheme[0]\" :dark-theme=\"props.shikiTheme[1]\" />\r\n\r\n <!-- 当 Mermaid 可用时,渲染完整的 Mermaid 组件 -->\r\n <div v-else :key=\"props.raw.key\" class=\"markdown-mermaid\" :class=\"{ 'markdown-mermaid--dark': props.isDark }\">\r\n <Transition name=\"toolbar\" appear>\r\n <div class=\"toolbar-container\">\r\n <slot name=\"mermaidHeader\" v-bind=\"exposedMethods\">\r\n <div class=\"mermaid-toolbar\">\r\n <div class=\"toolbar-left\">\r\n <div class=\"segmented-control\">\r\n <div class=\"segmented-slider\" :class=\"{ 'slide-right': activeTab === 'code' }\" />\r\n <div class=\"segment-item\" :class=\"{ active: activeTab === 'diagram' }\"\r\n @click=\"handleTabClick('diagram')\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M12 2L2 7L12 12L22 7L12 2Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path d=\"M2 17L12 22L22 17\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path d=\"M2 12L12 17L22 12\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <span>预览</span>\r\n </div>\r\n <div class=\"segment-item\" :class=\"{ active: activeTab === 'code' }\" @click=\"handleTabClick('code')\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M16 18L22 12L16 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path d=\"M8 6L2 12L8 18\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <span>代码</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"toolbar-right\">\r\n <slot name=\"mermaidActions\" v-bind=\"exposedMethods\">\r\n <div v-for=\"action in filteredActions\" :key=\"action.key\" class=\"toolbar-action-btn\"\r\n :class=\"[action.class, { 'toolbar-action-btn--disabled': action.disabled }]\" :style=\"action.style\"\r\n :title=\"action.title\" @click=\"handleActionClick(action)\">\r\n <component :is=\"renderActionIcon(action)\" v-if=\"action.icon\" />\r\n </div>\r\n\r\n <template v-if=\"showSourceCode\">\r\n <div class=\"toolbar-action-btn\" :class=\"{ 'copy-success': copied }\" title=\"复制代码\"\r\n @click=\"handleCopyCode($event)\">\r\n <svg v-if=\"copied\" width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 1024 1024\">\r\n <path fill=\"currentColor\"\r\n d=\"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z\" />\r\n </svg>\r\n <svg v-else width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path fill=\"currentColor\"\r\n d=\"M768 832a128 128 0 0 1-128 128H192A128 128 0 0 1 64 832V384a128 128 0 0 1 128-128v64a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64z\" />\r\n <path fill=\"currentColor\"\r\n d=\"M384 128a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64zm0-64h448a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H384a128 128 0 0 1-128-128V192A128 128 0 0 1 384 64\" />\r\n </svg>\r\n </div>\r\n </template>\r\n\r\n <template v-else>\r\n <div class=\"toolbar-action-btn\" title=\"缩小\" @click=\"handleZoomOut($event)\">\r\n <svg width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path fill=\"currentColor\"\r\n d=\"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704M352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64\" />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"toolbar-action-btn\" title=\"放大\" @click=\"handleZoomIn($event)\">\r\n <svg width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path fill=\"currentColor\"\r\n d=\"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704m-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64z\" />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"toolbar-action-btn\" title=\"重置\" @click=\"handleReset($event)\">\r\n <svg width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path fill=\"currentColor\"\r\n d=\"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896\" />\r\n <path fill=\"currentColor\"\r\n d=\"M512 96a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V128a32 32 0 0 1 32-32m0 576a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V704a32 32 0 0 1 32-32M96 512a32 32 0 0 1 32-32h192a32 32 0 0 1 0 64H128a32 32 0 0 1-32-32m576 0a32 32 0 0 1 32-32h192a32 32 0 1 1 0 64H704a32 32 0 0 1-32-32\" />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"toolbar-action-btn\" title=\"下载\" @click=\"handleDownload\">\r\n <svg width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path fill=\"currentColor\"\r\n d=\"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-253.696 236.288-236.352 45.248 45.248L508.8 704 192 387.2l45.248-45.248L480 584.704V128h64z\" />\r\n </svg>\r\n </div>\r\n </template>\r\n </slot>\r\n </div>\r\n </div>\r\n </slot>\r\n </div>\r\n </Transition>\r\n\r\n <div v-show=\"showSourceCode\" class=\"mermaid-source-code\">\r\n <CodeBlock :code=\"props.raw?.content || ''\" language=\"mermaid\" :is-dark=\"props.isDark\"\r\n :light-theme=\"props.shikiTheme[0]\" :dark-theme=\"props.shikiTheme[1]\" :show-code-block-header=\"false\"\r\n :sticky-code-block-header=\"false\" />\r\n </div>\r\n\r\n <SyntaxMermaid v-show=\"!showSourceCode\" ref=\"syntaxMermaidRef\" :content=\"mermaidContent\" :id=\"mermaidId\"\r\n :is-dark=\"props.isDark\" :config=\"props.config\" />\r\n </div>\r\n</template>\r\n\r\n<style>\r\n.markdown-mermaid {\r\n border-radius: 8px;\r\n overflow: hidden;\r\n font-size: 0;\r\n background: rgba(0, 0, 0, 0.03);\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark {\r\n background: rgba(255, 255, 255, 0.13);\r\n}\r\n\r\n.markdown-mermaid .toolbar-container {\r\n position: relative;\r\n z-index: 10;\r\n flex-shrink: 0;\r\n background: rgba(0, 0, 0, 0.05);\r\n color: #333;\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark .toolbar-container {\r\n background: rgba(0, 0, 0, 0.25);\r\n color: #fff;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 8px 16px;\r\n background: transparent;\r\n color: inherit;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-left {\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segmented-control {\r\n display: flex;\r\n align-items: center;\r\n position: relative;\r\n background: rgba(0, 0, 0, 0.06);\r\n border-radius: 6px;\r\n padding: 3px;\r\n gap: 2px;\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark .mermaid-toolbar .segmented-control {\r\n background: rgba(255, 255, 255, 0.08);\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segmented-slider {\r\n position: absolute;\r\n top: 3px;\r\n left: 3px;\r\n width: calc(50% - 4px);\r\n height: calc(100% - 6px);\r\n background: #fff;\r\n border-radius: 4px;\r\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\r\n transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);\r\n z-index: 0;\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark .mermaid-toolbar .segmented-slider {\r\n background: rgba(255, 255, 255, 0.15);\r\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segmented-slider.slide-right {\r\n transform: translateX(calc(100% + 2px));\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segment-item {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 4px;\r\n font-size: 12px;\r\n border: none;\r\n color: inherit;\r\n min-width: 60px;\r\n text-align: center;\r\n box-sizing: border-box;\r\n font-weight: 500;\r\n cursor: pointer;\r\n border-radius: 4px;\r\n padding: 5px 12px;\r\n transition: all 0.2s ease;\r\n background: transparent;\r\n opacity: 0.6;\r\n user-select: none;\r\n position: relative;\r\n z-index: 1;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segment-item.active {\r\n opacity: 1;\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark .mermaid-toolbar .segment-item.active {\r\n color: #fff;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segment-item:hover {\r\n opacity: 1;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segment-item svg {\r\n flex-shrink: 0;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-right {\r\n display: flex;\r\n align-items: center;\r\n gap: 16px;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-action-btn {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 28px;\r\n height: 28px;\r\n padding: 0;\r\n border: none;\r\n border-radius: 4px;\r\n background: transparent;\r\n color: inherit;\r\n cursor: pointer;\r\n transition: all 0.2s ease;\r\n opacity: 0.7;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-action-btn:hover {\r\n opacity: 1;\r\n background: rgba(0, 0, 0, 0.08);\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-action-btn.copy-success {\r\n opacity: 1;\r\n color: #22c55e;\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark .mermaid-toolbar .toolbar-action-btn:hover {\r\n background: rgba(255, 255, 255, 0.1);\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-action-btn.toolbar-action-btn--disabled {\r\n opacity: 0.3;\r\n cursor: not-allowed;\r\n pointer-events: none;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .mermaid-action-icon {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .mermaid-action-icon :deep(svg) {\r\n width: 16px;\r\n height: 16px;\r\n flex-shrink: 0;\r\n}\r\n\r\n.markdown-mermaid .mermaid-source-code {\r\n position: relative;\r\n z-index: 1;\r\n flex: 1;\r\n width: 100%;\r\n overflow: auto;\r\n box-sizing: border-box;\r\n}\r\n\r\n.toolbar-enter-active,\r\n.toolbar-leave-active {\r\n transition: opacity 0.3s ease;\r\n}\r\n\r\n.toolbar-enter-from,\r\n.toolbar-leave-to {\r\n opacity: 0;\r\n}\r\n</style>\r\n"],"names":["config","useXMarkdownConfig","ref","computed","useClipboard","h","onMounted","checkMermaidAvailable","_createBlock","CodeBlock","_createElementBlock","_normalizeClass","_createVNode","_Transition","_createElementVNode","_renderSlot","_normalizeProps","_guardReactiveProps","_Fragment","_renderList","_normalizeStyle","_resolveDynamicComponent","_unref","_openBlock","_withDirectives","SyntaxMermaid"],"mappings":"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"}
|