(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["chunk-commons"], { "10a8": function(e, t, a) {
}, "1f23": function(e, t, a) {
}, "333d": function(e, t, a) {
"use strict";
var n = function() {
var e2 = this, t2 = e2.$createElement, a2 = e2._self._c || t2;
return a2("div", { staticClass: "pagination-container", class: { hidden: e2.hidden } }, [a2("el-pagination", e2._b({ attrs: { background: e2.background, "current-page": e2.currentPage, "page-size": e2.pageSize, layout: e2.layout, "page-sizes": e2.pageSizes, total: e2.total }, on: { "update:currentPage": function(t3) {
e2.currentPage = t3;
}, "update:current-page": function(t3) {
e2.currentPage = t3;
}, "update:pageSize": function(t3) {
e2.pageSize = t3;
}, "update:page-size": function(t3) {
e2.pageSize = t3;
}, "size-change": e2.handleSizeChange, "current-change": e2.handleCurrentChange } }, "el-pagination", e2.$attrs, false))], 1);
}, r = [], o = (a("e680"), { name: "Pagination", props: { total: { required: true, type: Number }, page: { type: Number, default: 1 }, limit: { type: Number, default: 10 }, pageSizes: { type: Array, default: function() {
return [10, 20, 30, 50];
} }, layout: { type: String, default: "total, sizes, prev, pager, next, jumper" }, background: { type: Boolean, default: true }, autoScroll: { type: Boolean, default: true }, hidden: { type: Boolean, default: false } }, computed: { currentPage: { get: function() {
return this.page;
}, set: function(e2) {
this.$emit("update:page", e2);
} }, pageSize: { get: function() {
return this.limit;
}, set: function(e2) {
this.$emit("update:limit", e2);
} } }, methods: { handleSizeChange: function(e2) {
this.$emit("handleSizeChange", { pageSize: this.pageSize, limit: e2 });
}, handleCurrentChange: function(e2) {
this.$emit("handleCurrentChange", { currentPage: e2, limit: this.currentPage });
} } }), i = o, l = (a("720d"), a("829d")), s = Object(l["a"])(i, n, r, false, null, "27f1f397", null);
t["a"] = s.exports;
}, 3701: function(e, t, a) {
"use strict";
a("10a8");
}, "3a3b": function(e, t, a) {
"use strict";
var n = function() {
var e2 = this, t2 = e2.$createElement, a2 = e2._self._c || t2;
return a2("div", { staticClass: "markdown-renderer", style: { color: e2.textColor }, domProps: { innerHTML: e2._s(e2.renderedHtml) } });
}, r = [], o = (a("d31c"), a("e8b2")), i = (a("aa18"), a("982e"), a("d0f2"), a("3269"), a("1bc7"), a("8dee"), a("11c2")), l = { name: "MarkdownRenderer", props: { mdContent: { type: String, required: true }, textColor: { type: String, default: "#333" }, tableTheme: { type: Object, default: function() {
return { headerBg: "#f5f5f5", headerText: "#333", borderColor: "#ccc", rowHover: "#f0f0f0", evenRow: "#f9f9f9", tableBorder: "#333", cellBg: "#ffffff", cellText: "#333" };
} } }, data: function() {
return { renderedHtml: "", mermaidCharts: [] };
}, watch: { mdContent: function(e2) {
this.renderMarkdown(e2);
}, textColor: function() {
this.updateTextColor();
} }, mounted: function() {
this.renderMarkdown(this.mdContent), this.updateTextColor(), this.loadMermaid();
}, methods: { loadMermaid: function() {
var e2 = this;
if (window.mermaid) this.initializeMermaid();
else if (document.querySelector('script[src*="mermaid"]')) this.waitForMermaid();
else {
console.log("Loading Mermaid from CDN...");
var t2 = document.createElement("script");
t2.src = "https://unpkg.com/mermaid@9.4.3/dist/mermaid.min.js", t2.onload = function() {
console.log("Mermaid loaded successfully"), e2.initializeMermaid(), e2.$nextTick((function() {
e2.renderMermaidDiagrams();
}));
}, t2.onerror = function() {
console.error("Failed to load Mermaid from unpkg, trying jsdelivr...");
var t3 = document.createElement("script");
t3.src = "https://cdn.jsdelivr.net/npm/mermaid@9.4.3/dist/mermaid.min.js", t3.onload = function() {
console.log("Mermaid loaded from backup CDN"), e2.initializeMermaid(), e2.$nextTick((function() {
e2.renderMermaidDiagrams();
}));
}, t3.onerror = function() {
console.error("Failed to load Mermaid from both CDNs");
}, document.head.appendChild(t3);
}, document.head.appendChild(t2);
}
}, waitForMermaid: function() {
var e2 = this, t2 = function() {
window.mermaid ? (e2.initializeMermaid(), e2.$nextTick((function() {
e2.renderMermaidDiagrams();
}))) : setTimeout(t2, 100);
};
t2();
}, initializeMermaid: function() {
window.mermaid ? (console.log("Initializing Mermaid..."), window.mermaid.initialize({ startOnLoad: false, theme: "default", securityLevel: "loose" }), console.log("Mermaid initialized successfully")) : console.error("Mermaid not available on window object");
}, renderMarkdown: function(e2) {
var t2 = this, a2 = e2;
"string" === typeof a2 && (a2 = a2.replace(/\\r\\n/g, "\n").replace(/\\n/g, "\n")), this.mermaidCharts = [];
var n2 = [];
a2 = this.extractMermaidChartsWithPlaceholders(a2, n2), a2 = this.preprocessImageLinks(a2), i["marked"].use({ pedantic: false, gfm: true, tables: true, breaks: false, smartLists: true, smartypants: false }), this.renderedHtml = Object(i["marked"])(a2), console.log("[Mermaid替换] 开始替换 ".concat(n2.length, " 个占位符")), console.log("[Mermaid替换] 渲染后的 HTML 预览: ".concat(this.renderedHtml.substring(0, 500), "...")), n2.forEach((function(e3, a3) {
var n3 = e3.placeholder, r2 = e3.mermaidDiv;
console.log("[Mermaid替换] 处理第 ".concat(a3 + 1, " 个占位符: ").concat(n3));
var o2 = t2.escapeRegExp(n3), i2 = t2.renderedHtml.length, l2 = false, s2 = new RegExp("
\\s*".concat(o2, "\\s*
"), "g"), c2 = t2.renderedHtml;
if (t2.renderedHtml = t2.renderedHtml.replace(s2, r2), t2.renderedHtml !== c2) l2 = true, console.log("[Mermaid替换] 第 ".concat(a3 + 1, " 个占位符:匹配为段落标签"));
else {
var d2 = new RegExp("\\s*".concat(o2, "\\s*"), "g"), u = t2.renderedHtml;
if (t2.renderedHtml = t2.renderedHtml.replace(d2, r2), t2.renderedHtml !== u) l2 = true, console.log("[Mermaid替换] 第 ".concat(a3 + 1, " 个占位符:匹配为代码标签"));
else {
var p = new RegExp("\\s*".concat(o2, "\\s*
"), "g"), m = t2.renderedHtml;
if (t2.renderedHtml = t2.renderedHtml.replace(p, r2), t2.renderedHtml !== m) l2 = true, console.log("[Mermaid替换] 第 ".concat(a3 + 1, " 个占位符:匹配为预格式化标签"));
else {
var f = new RegExp(o2, "g"), h = t2.renderedHtml;
t2.renderedHtml = t2.renderedHtml.replace(f, r2), t2.renderedHtml !== h && (l2 = true, console.log("[Mermaid替换] 第 ".concat(a3 + 1, " 个占位符:直接文本匹配")));
}
}
}
var g = t2.renderedHtml.length;
if (l2) console.log("[Mermaid替换] 第 ".concat(a3 + 1, " 个占位符替换成功,HTML长度变化: ").concat(i2, " -> ").concat(g));
else {
console.warn("[Mermaid替换] 第 ".concat(a3 + 1, " 个占位符未能找到匹配,占位符: ").concat(n3));
var v = n3.replace(/_/g, "\\_"), b = t2.escapeRegExp(v);
new RegExp(b, "g").test(t2.renderedHtml) && (t2.renderedHtml = t2.renderedHtml.replace(new RegExp(b, "g"), r2), console.log("[Mermaid替换] 第 ".concat(a3 + 1, " 个占位符:使用转义模式匹配成功")));
}
})), console.log("[Mermaid替换] 占位符替换完成,最终HTML中有 ".concat((this.renderedHtml.match(/class="mermaid"/g) || []).length, " 个 mermaid div")), (this.renderedHtml.includes("<") || this.renderedHtml.includes(">")) && (this.renderedHtml = this.renderedHtml.replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&")), this.renderedHtml = this.renderedHtml.replace(/alt="图表" style="[^"]*" \/>/g, "").replace(/alt="图表" style="[^"]*"/g, "").replace(/style="max-width: 100%; height: auto; border-radius: 4px; box-shadow: 0 2px 8px rgba\(0,0,0,0\.1\);"/g, "").replace(/alt="图表"/g, ""), this.renderedHtml = this.renderedHtml.replace(/(\d+%)(红)/g, '$1').replace(/(\d+%)(绿)/g, '$1').replace(/(\d+%)(黄)/g, '$1').replace(/(\d+%)(蓝)/g, '$1'), this.$nextTick((function() {
t2.updateTextColor(), t2.processImagesInDOM(), t2.applyTableTheme(), setTimeout((function() {
t2.renderMermaidDiagrams();
}), 100);
}));
}, extractMermaidChartsWithPlaceholders: function(e2, t2) {
var a2 = this, n2 = (e2.match(/```mermaid/g) || []).length;
console.log("[Mermaid提取] 原始内容中发现 ".concat(n2, " 个 mermaid 代码块开始标记"));
var r2, o2 = 0, i2 = 0, l2 = /```mermaid\s*[\r\n]+([\s\S]*?)```[\r\n]*/g, s2 = [];
while (null !== (r2 = l2.exec(e2))) s2.push({ fullMatch: r2[0], code: r2[1], index: r2.index });
if (console.log("[Mermaid提取] 正则表达式找到 ".concat(s2.length, " 个匹配项")), s2.length < n2) {
console.warn("[Mermaid提取] 匹配数量不匹配!尝试使用更宽松的正则表达式...");
var c2, d2 = /```mermaid([\s\S]*?)```/g, u = [];
while (null !== (c2 = d2.exec(e2))) u.push({ fullMatch: c2[0], code: c2[1], index: c2.index });
console.log("[Mermaid提取] 宽松模式找到 ".concat(u.length, " 个匹配项")), i2 = 0, o2 = 0;
var p = e2.replace(d2, (function(e3, n3) {
i2++;
var r3 = a2.processMermaidMatch(e3, n3, t2, o2, i2 - 1);
return r3;
}));
return console.log("[Mermaid提取] 总共处理了 ".concat(i2, " 个 mermaid 代码块")), p;
}
var m = e2.replace(/```mermaid\s*[\r\n]+([\s\S]*?)```[\r\n]*/g, (function(e3, n3) {
i2++, console.log("[Mermaid提取] 找到第 ".concat(i2, " 个 mermaid 代码块,长度: ").concat(e3.length));
var r3 = a2.processMermaidMatch(e3, n3, t2, o2, i2 - 1);
return r3;
}));
return console.log("[Mermaid提取] 总共处理了 ".concat(i2, " 个 mermaid 代码块")), m;
}, processMermaidMatch: function(e2, t2, a2, n2, r2) {
console.log("[Mermaid提取] 处理第 ".concat(r2 + 1, " 个 mermaid 代码块,长度: ").concat(e2.length, ", placeholderIndex: ").concat(n2));
var o2 = t2.trim();
if (o2 = o2.replace(/\\"/g, '"'), o2 = o2.replace(/\\r\\n/g, "\n").replace(/\\n/g, "\n"), o2 = o2.trim(), !o2) return console.warn("[Mermaid提取] 第 ".concat(r2 + 1, " 个代码块为空,跳过")), e2;
console.log("[Mermaid提取] 清理后的代码: ".concat(o2.substring(0, 50), "..."));
var i2 = "mermaid-".concat(Date.now(), "-").concat(Math.floor(1e4 * Math.random()), "-").concat(n2);
this.mermaidCharts.push({ id: i2, code: o2, rendered: false, svg: "" });
var l2 = '');
return l2;
}, escapeRegExp: function(e2) {
return e2.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}, preprocessMermaidCode: function(e2) {
return e2.replace(/```mermaid\s*\n([\s\S]*?)\n```/g, (function(e3, t2) {
var a2 = t2.trim(), n2 = "mermaid-".concat(Date.now(), "-").concat(Math.floor(1e4 * Math.random()));
return '');
}));
}, preprocessImageLinks: function(e2) {
var t2 = e2.replace(/[\s\S]*?```json\s*\n(https:\/\/quickchart\.io\/chart\?c=[A-Za-z0-9%]+)\s*\n```[\s\S]*?<\/details>/g, (function(e3, t3) {
var a2 = e3.match(/([\s\S]*?)<\/summary>/), n2 = a2 ? a2[1] : "Called MCP Tool: generate_chart";
return "\n ".concat(n2, '
\n \n
.concat(t3, ')
\n
图表
\n
\n ');
}));
return t2 = t2.replace(/```json\s*\n(https:\/\/quickchart\.io\/chart\?c=[A-Za-z0-9%]+)\s*\n```/g, (function(e3, t3) {
return '\n

\n
图表
\n
');
})), t2 = t2.replace(/https:\/\/quickchart\.io\/chart\?c=([A-Za-z0-9%]+)/g, (function(e3, t3) {
return '\n

\n
图表
\n
');
})), console.log("处理后的内容:", t2), t2;
}, processImagesInDOM: function() {
if (this.$el) {
var e2, t2 = document.createTreeWalker(this.$el, NodeFilter.SHOW_TEXT, null, false), a2 = [];
while (e2 = t2.nextNode()) if (e2.textContent.includes("quickchart.io/chart?c=")) {
var n2 = e2.parentNode, r2 = false;
while (n2 && n2 !== this.$el) {
if ("DETAILS" === n2.tagName) {
r2 = true;
break;
}
n2 = n2.parentNode;
}
r2 || a2.push(e2);
}
a2.forEach((function(e3) {
var t3 = e3.parentNode, a3 = e3.textContent, n3 = /https:\/\/quickchart\.io\/chart\?c=([A-Za-z0-9%]+)/g, r3 = Object(o["a"])(a3.matchAll(n3));
if (r3.length > 0) {
var i2 = a3;
r3.forEach((function(e4) {
var t4 = e4[0], a4 = '\n

\n
图表
\n
');
i2 = i2.replace(t4, a4);
}));
var l2 = document.createElement("div");
l2.innerHTML = i2;
while (l2.firstChild) t3.insertBefore(l2.firstChild, e3);
t3.removeChild(e3);
}
}));
}
}, applyTableTheme: function() {
var e2 = this;
if (this.$el) {
var t2 = this.$el.querySelectorAll("table");
t2.forEach((function(t3) {
t3.style.cssText = "\n width: 100% !important;\n border-collapse: collapse !important;\n margin: 1em 0 !important;\n background-color: ".concat(e2.tableTheme.cellBg, " !important;\n border: 1px solid ").concat(e2.tableTheme.tableBorder, " !important;\n border-radius: ").concat(e2.tableTheme.borderRadius || "4px", " !important;\n overflow: hidden !important;\n box-shadow: ").concat(e2.tableTheme.boxShadow || "none", " !important;\n ");
var a2 = t3.querySelectorAll("th");
a2.forEach((function(t4) {
t4.style.cssText = "\n background-color: ".concat(e2.tableTheme.headerBg, " !important;\n color: ").concat(e2.tableTheme.headerText, " !important;\n border: 1px solid ").concat(e2.tableTheme.borderColor, " !important;\n padding: ").concat(e2.tableTheme.headerPadding || "8px 12px", " !important;\n font-size: ").concat(e2.tableTheme.headerFontSize || "13px", " !important;\n font-weight: 600 !important;\n text-align: left !important;\n border-bottom: 1px solid ").concat(e2.tableTheme.borderColor, " !important;\n ");
}));
var n2 = t3.querySelectorAll("td");
n2.forEach((function(t4) {
t4.style.cssText = "\n background-color: ".concat(e2.tableTheme.cellBg, " !important;\n color: ").concat(e2.tableTheme.cellText, " !important;\n border: 1px solid ").concat(e2.tableTheme.borderColor, " !important;\n padding: ").concat(e2.tableTheme.cellPadding || "6px 12px", " !important;\n font-size: ").concat(e2.tableTheme.cellFontSize || "12px", " !important;\n text-align: left !important;\n border-bottom: 1px solid ").concat(e2.tableTheme.borderColor, " !important;\n ");
}));
var r2 = t3.querySelectorAll("tr");
r2.forEach((function(t4, a3) {
if (a3 % 2 === 1) {
t4.style.backgroundColor = e2.tableTheme.evenRow;
var n3 = t4.querySelectorAll("td");
n3.forEach((function(t5) {
t5.style.backgroundColor = e2.tableTheme.evenRow;
}));
} else {
var r3 = t4.querySelectorAll("td");
r3.forEach((function(t5) {
t5.style.backgroundColor = e2.tableTheme.cellBg;
}));
}
t4.addEventListener("mouseenter", (function() {
t4.style.backgroundColor = e2.tableTheme.rowHover;
var a4 = t4.querySelectorAll("td");
a4.forEach((function(t5) {
t5.style.backgroundColor = e2.tableTheme.rowHover;
}));
})), t4.addEventListener("mouseleave", (function() {
var n4 = a3 % 2 === 1;
t4.style.backgroundColor = n4 ? e2.tableTheme.evenRow : e2.tableTheme.cellBg;
var r4 = t4.querySelectorAll("td");
r4.forEach((function(t5) {
t5.style.backgroundColor = n4 ? e2.tableTheme.evenRow : e2.tableTheme.cellBg;
}));
}));
}));
}));
}
}, renderMermaidDiagrams: function() {
if (console.log("Starting Mermaid diagram rendering..."), window.mermaid) {
console.log("Using Mermaid built-in rendering...");
var e2 = this.$el.querySelectorAll(".mermaid");
console.log("Found mermaid elements:", e2.length), e2.length > 0 && (e2.forEach((function(e3) {
var t2 = e3.getAttribute("data-mermaid-code");
if (t2) {
var a2 = decodeURIComponent(t2);
e3.textContent = a2;
}
})), window.mermaid.init(void 0, e2));
} else console.log("Mermaid not available");
}, replacePlaceholder: function(e2) {
var t2 = this.$el.querySelector('[data-chart-id="'.concat(e2.id, '"]'));
if (t2) {
console.log("Found placeholder, replacing with SVG"), t2.innerHTML = e2.svg, t2.style.height = "auto", t2.style.lineHeight = "normal", t2.style.minHeight = "300px", t2.style.display = "block";
var a2 = t2.querySelector("svg");
a2 && (a2.style.width = "100%", a2.style.height = "auto", a2.style.display = "block", a2.style.maxWidth = "100%");
} else console.log("Placeholder not found for chart:", e2.id);
}, renderMermaidChart: function(e2) {
var t2 = this;
if (console.log("renderMermaidChart called, window.mermaid:", !!window.mermaid), console.log("Chart data:", e2), !window.mermaid) return e2.svg = 'Mermaid库正在加载中...
', void setTimeout((function() {
t2.renderMermaidChart(e2);
}), 1e3);
var a2 = e2.code.trim();
if (a2.startsWith("mermaid") && (a2 = a2.replace(/^mermaid\s*/, "")), a2.includes("pie")) {
var n2 = a2.match(/pie\s+(.*)/);
if (n2) {
var r2 = n2[1], o2 = r2.match(/title\s+([^"]+)/), i2 = "pie\n";
o2 && (i2 += " title " + o2[1].trim() + "\n");
var l2 = r2.match(/"([^"]+)"\s*:\s*(\d+)/g);
l2 && l2.forEach((function(e3) {
var t3 = e3.match(/"([^"]+)"\s*:\s*(\d+)/);
t3 && (i2 += ' "' + t3[1] + '" : ' + t3[2] + "\n");
})), a2 = i2.trim();
}
}
console.log("Cleaned Mermaid code:", a2);
try {
console.log("Attempting to render Mermaid chart...");
var s2 = window.mermaid.render(e2.id, a2);
console.log("Mermaid render result:", s2), s2 && "string" === typeof s2 && s2.includes("