UNPKG

@axewo/cnsframework

Version:

一个免费开源的中后台管理系统基础解决方案,基于 Vue3、TypeScript、Element Plus、Pinia 和 Vite 等主流技术

1,551 lines 55.9 kB
import { reactive as We, ref as z, watch as Me, onBeforeMount as He, onMounted as $e, onBeforeUnmount as Oe, defineComponent as A, openBlock as d, createElementBlock as k, createElementVNode as x, toDisplayString as F, unref as p, resolveComponent as g, createVNode as u, withCtx as f, Transition as Ae, createBlock as w, KeepAlive as qe, resolveDynamicComponent as fe, createCommentVNode as M, Fragment as j, renderList as Q, withModifiers as oe, renderSlot as ae, computed as C, normalizeClass as D, createSlots as Ue, createTextVNode as J, normalizeStyle as Le, useCssVars as Ve, watchEffect as le, pushScopeId as Re, popScopeId as Ie, nextTick as Ge, getCurrentInstance as Xe, withDirectives as re, vShow as ce } from "vue"; import { d as je, g as Je, s as xe, u as ie, a as O, b as H, c as Fe, e as ue, f as de, r as Ke, h as Pe, i as Ye, j as Ze, k as Qe, R as et } from "./main-ba2a9cc9.js"; import { Fold as tt, Expand as nt, Bell as ot, MagicStick as st, UserFilled as at, Refresh as lt, ArrowLeft as rt, ArrowRight as ct, Close as it, Setting as ut } from "@element-plus/icons-vue"; import "dayjs"; import { ElMessage as De, ElScrollbar as dt } from "element-plus"; var X = /* @__PURE__ */ ((n) => (n[n.Mobile = 0] = "Mobile", n[n.Desktop = 1] = "Desktop", n))(X || {}); const _t = "opened", Ne = "closed"; function ft(n) { n ? xe(_t) : xe(Ne); } const ne = je("app", () => { const n = We({ opened: Je() !== Ne, withoutAnimation: !1 }), e = z(X.Desktop); return Me( () => n.opened, (s) => ft(s) ), { device: e, sidebar: n, toggleSidebar: (s) => { n.opened = !n.opened, n.withoutAnimation = s; }, closeSidebar: (s) => { n.opened = !1, n.withoutAnimation = s; }, toggleDevice: (s) => { e.value = s; } }; }), pt = 992, vt = () => { const n = ne(), { listenerRouteChange: e } = ie(), t = () => document.body.getBoundingClientRect().width - 1 < pt, l = () => { if (!document.hidden) { const o = t(); n.toggleDevice(o ? X.Mobile : X.Desktop), o && n.closeSidebar(!0); } }; e(() => { n.device === X.Mobile && n.sidebar.opened && n.closeSidebar(!1); }), He(() => { window.addEventListener("resize", l); }), $e(() => { t() && (n.toggleDevice(X.Mobile), n.closeSidebar(!0)); }), Oe(() => { window.removeEventListener("resize", l); }); }, mt = { class: "layout-footer" }, ht = /* @__PURE__ */ A({ __name: "index", setup(n) { const e = O(), { copyrightZh: t, copyrightEn: l } = H(e); return (o, s) => (d(), k("footer", mt, [ x("div", null, F(p(t)), 1), x("div", null, F(p(l)), 1) ])); } }); const R = (n, e) => { const t = n.__vccOpts || n; for (const [l, o] of e) t[l] = o; return t; }, gt = /* @__PURE__ */ R(ht, [["__scopeId", "data-v-365aeeb6"]]), bt = { class: "app-main" }, yt = { class: "app-scrollbar" }, wt = /* @__PURE__ */ A({ __name: "AppMain", setup(n) { const e = Fe(), t = O(); return (l, o) => { const s = g("router-view"), a = g("el-backtop"); return d(), k("section", bt, [ x("div", yt, [ u(s, null, { default: f(({ Component: r, route: c }) => [ u(Ae, { name: "el-fade-in", mode: "out-in" }, { default: f(() => [ (d(), w(qe, { include: p(e).cachedViews }, [ (d(), w(fe(r), { key: c.path, class: "app-container-grow" })) ], 1032, ["include"])) ]), _: 2 }, 1024) ]), _: 1 }), p(t).showFooter ? (d(), w(gt, { key: 0 })) : M("", !0) ]), u(a), u(a, { target: ".app-scrollbar" }) ]); }; } }); const ve = /* @__PURE__ */ R(wt, [["__scopeId", "data-v-849e13d2"]]), xt = /* @__PURE__ */ A({ __name: "index", props: { isActive: { type: Boolean, default: !1 } }, emits: ["toggleClick"], setup(n, { emit: e }) { const t = n, l = e, o = () => { l("toggleClick"); }; return (s, a) => { const r = g("el-icon"); return d(), k("div", { onClick: o }, [ u(r, { size: 20, class: "icon" }, { default: f(() => [ t.isActive ? (d(), w(p(tt), { key: 0 })) : (d(), w(p(nt), { key: 1 })) ]), _: 1 }) ]); }; } }); const kt = /* @__PURE__ */ R(xt, [["__scopeId", "data-v-9f145668"]]); function St(n) { for (var e = [], t = 0; t < n.length; ) { var l = n[t]; if (l === "*" || l === "+" || l === "?") { e.push({ type: "MODIFIER", index: t, value: n[t++] }); continue; } if (l === "\\") { e.push({ type: "ESCAPED_CHAR", index: t++, value: n[t++] }); continue; } if (l === "{") { e.push({ type: "OPEN", index: t, value: n[t++] }); continue; } if (l === "}") { e.push({ type: "CLOSE", index: t, value: n[t++] }); continue; } if (l === ":") { for (var o = "", s = t + 1; s < n.length; ) { var a = n.charCodeAt(s); if ( // `0-9` a >= 48 && a <= 57 || // `A-Z` a >= 65 && a <= 90 || // `a-z` a >= 97 && a <= 122 || // `_` a === 95 ) { o += n[s++]; continue; } break; } if (!o) throw new TypeError("Missing parameter name at ".concat(t)); e.push({ type: "NAME", index: t, value: o }), t = s; continue; } if (l === "(") { var r = 1, c = "", s = t + 1; if (n[s] === "?") throw new TypeError('Pattern cannot start with "?" at '.concat(s)); for (; s < n.length; ) { if (n[s] === "\\") { c += n[s++] + n[s++]; continue; } if (n[s] === ")") { if (r--, r === 0) { s++; break; } } else if (n[s] === "(" && (r++, n[s + 1] !== "?")) throw new TypeError("Capturing groups are not allowed at ".concat(s)); c += n[s++]; } if (r) throw new TypeError("Unbalanced pattern at ".concat(t)); if (!c) throw new TypeError("Missing pattern at ".concat(t)); e.push({ type: "PATTERN", index: t, value: c }), t = s; continue; } e.push({ type: "CHAR", index: t, value: n[t++] }); } return e.push({ type: "END", index: t, value: "" }), e; } function Ct(n, e) { e === void 0 && (e = {}); for (var t = St(n), l = e.prefixes, o = l === void 0 ? "./" : l, s = "[^".concat(Mt(e.delimiter || "/#?"), "]+?"), a = [], r = 0, c = 0, v = "", _ = function(P) { if (c < t.length && t[c].type === P) return t[c++].value; }, i = function(P) { var q = _(P); if (q !== void 0) return q; var K = t[c], b = K.type, $ = K.index; throw new TypeError("Unexpected ".concat(b, " at ").concat($, ", expected ").concat(P)); }, m = function() { for (var P = "", q; q = _("CHAR") || _("ESCAPED_CHAR"); ) P += q; return P; }; c < t.length; ) { var h = _("CHAR"), y = _("NAME"), E = _("PATTERN"); if (y || E) { var S = h || ""; o.indexOf(S) === -1 && (v += S, S = ""), v && (a.push(v), v = ""), a.push({ name: y || r++, prefix: S, suffix: "", pattern: E || s, modifier: _("MODIFIER") || "" }); continue; } var I = h || _("ESCAPED_CHAR"); if (I) { v += I; continue; } v && (a.push(v), v = ""); var L = _("OPEN"); if (L) { var S = m(), V = _("NAME") || "", W = _("PATTERN") || "", U = m(); i("CLOSE"), a.push({ name: V || (W ? r++ : ""), pattern: V && !W ? s : W, prefix: S, suffix: U, modifier: _("MODIFIER") || "" }); continue; } i("END"); } return a; } function Et(n, e) { return Tt(Ct(n, e), e); } function Tt(n, e) { e === void 0 && (e = {}); var t = $t(e), l = e.encode, o = l === void 0 ? function(c) { return c; } : l, s = e.validate, a = s === void 0 ? !0 : s, r = n.map(function(c) { if (typeof c == "object") return new RegExp("^(?:".concat(c.pattern, ")$"), t); }); return function(c) { for (var v = "", _ = 0; _ < n.length; _++) { var i = n[_]; if (typeof i == "string") { v += i; continue; } var m = c ? c[i.name] : void 0, h = i.modifier === "?" || i.modifier === "*", y = i.modifier === "*" || i.modifier === "+"; if (Array.isArray(m)) { if (!y) throw new TypeError('Expected "'.concat(i.name, '" to not repeat, but got an array')); if (m.length === 0) { if (h) continue; throw new TypeError('Expected "'.concat(i.name, '" to not be empty')); } for (var E = 0; E < m.length; E++) { var S = o(m[E], i); if (a && !r[_].test(S)) throw new TypeError('Expected all "'.concat(i.name, '" to match "').concat(i.pattern, '", but got "').concat(S, '"')); v += i.prefix + S + i.suffix; } continue; } if (typeof m == "string" || typeof m == "number") { var S = o(String(m), i); if (a && !r[_].test(S)) throw new TypeError('Expected "'.concat(i.name, '" to match "').concat(i.pattern, '", but got "').concat(S, '"')); v += i.prefix + S + i.suffix; continue; } if (!h) { var I = y ? "an array" : "a string"; throw new TypeError('Expected "'.concat(i.name, '" to be ').concat(I)); } } return v; }; } function Mt(n) { return n.replace(/([.+*?=^!:${}()[\]|/\\])/g, "\\$1"); } function $t(n) { return n && n.sensitive ? "" : "i"; } const At = { key: 0, class: "no-redirect" }, Lt = ["onClick"], Vt = /* @__PURE__ */ A({ __name: "index", setup(n) { const e = ue(), t = de(), { listenerRouteChange: l } = ie(), o = z([]), s = () => { o.value = e.matched.filter((c) => c.meta?.title && c.meta?.breadcrumb !== !1); }, a = (c) => Et(c)(e.params), r = (c) => { const { redirect: v, path: _ } = c; if (v) { t.push(v); return; } t.push(a(_)); }; return l((c) => { c.path.startsWith("/redirect/") || s(); }, !0), (c, v) => { const _ = g("el-breadcrumb-item"), i = g("el-breadcrumb"); return d(), w(i, { class: "app-breadcrumb" }, { default: f(() => [ (d(!0), k(j, null, Q(o.value, (m, h) => (d(), w(_, { key: m.path }, { default: f(() => [ m.redirect === "noRedirect" || h === o.value.length - 1 ? (d(), k("span", At, F(m.meta.title), 1)) : (d(), k("a", { key: 1, onClick: oe((y) => r(m), ["prevent"]) }, F(m.meta.title), 9, Lt)) ]), _: 2 }, 1024))), 128)) ]), _: 1 }); }; } }); const Rt = /* @__PURE__ */ R(Vt, [["__scopeId", "data-v-3a94d4c6"]]), pe = (n) => /^(https?:|mailto:|tel:)/.test(n), It = ["href"], Ft = /* @__PURE__ */ A({ __name: "SidebarItemLink", props: { to: {} }, setup(n) { const e = n; return (t, l) => { const o = g("router-link"); return p(pe)(e.to) ? (d(), k("a", { key: 0, href: e.to, target: "_blank", rel: "noopener" }, [ ae(t.$slots, "default") ], 8, It)) : (d(), w(o, { key: 1, to: e.to }, { default: f(() => [ ae(t.$slots, "default") ]), _: 3 }, 8, ["to"])); }; } }); function Pt(n) { return n && n.__esModule && Object.prototype.hasOwnProperty.call(n, "default") ? n.default : n; } function G(n) { if (typeof n != "string") throw new TypeError("Path must be a string. Received " + JSON.stringify(n)); } function ke(n, e) { for (var t = "", l = 0, o = -1, s = 0, a, r = 0; r <= n.length; ++r) { if (r < n.length) a = n.charCodeAt(r); else { if (a === 47) break; a = 47; } if (a === 47) { if (!(o === r - 1 || s === 1)) if (o !== r - 1 && s === 2) { if (t.length < 2 || l !== 2 || t.charCodeAt(t.length - 1) !== 46 || t.charCodeAt(t.length - 2) !== 46) { if (t.length > 2) { var c = t.lastIndexOf("/"); if (c !== t.length - 1) { c === -1 ? (t = "", l = 0) : (t = t.slice(0, c), l = t.length - 1 - t.lastIndexOf("/")), o = r, s = 0; continue; } } else if (t.length === 2 || t.length === 1) { t = "", l = 0, o = r, s = 0; continue; } } e && (t.length > 0 ? t += "/.." : t = "..", l = 2); } else t.length > 0 ? t += "/" + n.slice(o + 1, r) : t = n.slice(o + 1, r), l = r - o - 1; o = r, s = 0; } else a === 46 && s !== -1 ? ++s : s = -1; } return t; } function Dt(n, e) { var t = e.dir || e.root, l = e.base || (e.name || "") + (e.ext || ""); return t ? t === e.root ? t + l : t + n + l : l; } var te = { // path.resolve([from ...], to) resolve: function() { for (var e = "", t = !1, l, o = arguments.length - 1; o >= -1 && !t; o--) { var s; o >= 0 ? s = arguments[o] : (l === void 0 && (l = process.cwd()), s = l), G(s), s.length !== 0 && (e = s + "/" + e, t = s.charCodeAt(0) === 47); } return e = ke(e, !t), t ? e.length > 0 ? "/" + e : "/" : e.length > 0 ? e : "."; }, normalize: function(e) { if (G(e), e.length === 0) return "."; var t = e.charCodeAt(0) === 47, l = e.charCodeAt(e.length - 1) === 47; return e = ke(e, !t), e.length === 0 && !t && (e = "."), e.length > 0 && l && (e += "/"), t ? "/" + e : e; }, isAbsolute: function(e) { return G(e), e.length > 0 && e.charCodeAt(0) === 47; }, join: function() { if (arguments.length === 0) return "."; for (var e, t = 0; t < arguments.length; ++t) { var l = arguments[t]; G(l), l.length > 0 && (e === void 0 ? e = l : e += "/" + l); } return e === void 0 ? "." : te.normalize(e); }, relative: function(e, t) { if (G(e), G(t), e === t || (e = te.resolve(e), t = te.resolve(t), e === t)) return ""; for (var l = 1; l < e.length && e.charCodeAt(l) === 47; ++l) ; for (var o = e.length, s = o - l, a = 1; a < t.length && t.charCodeAt(a) === 47; ++a) ; for (var r = t.length, c = r - a, v = s < c ? s : c, _ = -1, i = 0; i <= v; ++i) { if (i === v) { if (c > v) { if (t.charCodeAt(a + i) === 47) return t.slice(a + i + 1); if (i === 0) return t.slice(a + i); } else s > v && (e.charCodeAt(l + i) === 47 ? _ = i : i === 0 && (_ = 0)); break; } var m = e.charCodeAt(l + i), h = t.charCodeAt(a + i); if (m !== h) break; m === 47 && (_ = i); } var y = ""; for (i = l + _ + 1; i <= o; ++i) (i === o || e.charCodeAt(i) === 47) && (y.length === 0 ? y += ".." : y += "/.."); return y.length > 0 ? y + t.slice(a + _) : (a += _, t.charCodeAt(a) === 47 && ++a, t.slice(a)); }, _makeLong: function(e) { return e; }, dirname: function(e) { if (G(e), e.length === 0) return "."; for (var t = e.charCodeAt(0), l = t === 47, o = -1, s = !0, a = e.length - 1; a >= 1; --a) if (t = e.charCodeAt(a), t === 47) { if (!s) { o = a; break; } } else s = !1; return o === -1 ? l ? "/" : "." : l && o === 1 ? "//" : e.slice(0, o); }, basename: function(e, t) { if (t !== void 0 && typeof t != "string") throw new TypeError('"ext" argument must be a string'); G(e); var l = 0, o = -1, s = !0, a; if (t !== void 0 && t.length > 0 && t.length <= e.length) { if (t.length === e.length && t === e) return ""; var r = t.length - 1, c = -1; for (a = e.length - 1; a >= 0; --a) { var v = e.charCodeAt(a); if (v === 47) { if (!s) { l = a + 1; break; } } else c === -1 && (s = !1, c = a + 1), r >= 0 && (v === t.charCodeAt(r) ? --r === -1 && (o = a) : (r = -1, o = c)); } return l === o ? o = c : o === -1 && (o = e.length), e.slice(l, o); } else { for (a = e.length - 1; a >= 0; --a) if (e.charCodeAt(a) === 47) { if (!s) { l = a + 1; break; } } else o === -1 && (s = !1, o = a + 1); return o === -1 ? "" : e.slice(l, o); } }, extname: function(e) { G(e); for (var t = -1, l = 0, o = -1, s = !0, a = 0, r = e.length - 1; r >= 0; --r) { var c = e.charCodeAt(r); if (c === 47) { if (!s) { l = r + 1; break; } continue; } o === -1 && (s = !1, o = r + 1), c === 46 ? t === -1 ? t = r : a !== 1 && (a = 1) : t !== -1 && (a = -1); } return t === -1 || o === -1 || // We saw a non-dot character immediately before the dot a === 0 || // The (right-most) trimmed path component is exactly '..' a === 1 && t === o - 1 && t === l + 1 ? "" : e.slice(t, o); }, format: function(e) { if (e === null || typeof e != "object") throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof e); return Dt("/", e); }, parse: function(e) { G(e); var t = { root: "", dir: "", base: "", ext: "", name: "" }; if (e.length === 0) return t; var l = e.charCodeAt(0), o = l === 47, s; o ? (t.root = "/", s = 1) : s = 0; for (var a = -1, r = 0, c = -1, v = !0, _ = e.length - 1, i = 0; _ >= s; --_) { if (l = e.charCodeAt(_), l === 47) { if (!v) { r = _ + 1; break; } continue; } c === -1 && (v = !1, c = _ + 1), l === 46 ? a === -1 ? a = _ : i !== 1 && (i = 1) : a !== -1 && (i = -1); } return a === -1 || c === -1 || // We saw a non-dot character immediately before the dot i === 0 || // The (right-most) trimmed path component is exactly '..' i === 1 && a === c - 1 && a === r + 1 ? c !== -1 && (r === 0 && o ? t.base = t.name = e.slice(1, c) : t.base = t.name = e.slice(r, c)) : (r === 0 && o ? (t.name = e.slice(1, a), t.base = e.slice(1, c)) : (t.name = e.slice(r, a), t.base = e.slice(r, c)), t.ext = e.slice(a, c)), r > 0 ? t.dir = e.slice(0, r - 1) : o && (t.dir = "/"), t; }, sep: "/", delimiter: ":", win32: null, posix: null }; te.posix = te; var Nt = te; const Be = /* @__PURE__ */ Pt(Nt), Bt = { key: 2 }, zt = /* @__PURE__ */ A({ __name: "SidebarItem", props: { item: {}, isCollapse: { type: Boolean, default: !1 }, isTop: { type: Boolean, default: !1 }, isFirstLevel: { type: Boolean, default: !0 }, basePath: { default: "" } }, setup(n) { const e = n, t = C(() => e.item.meta?.alwaysShow), l = C(() => e.item.children?.filter((r) => !r.meta?.hidden) ?? []), o = C(() => l.value.length), s = C(() => { const r = o.value; switch (!0) { case r > 1: return null; case r === 1: return l.value[0]; default: return { ...e.item, path: "" }; } }), a = (r) => { switch (!0) { case pe(r): return r; case pe(e.basePath): return e.basePath; default: return Be.resolve(e.basePath, r); } }; return (r, c) => { const v = g("SvgIcon"), _ = g("el-menu-item"), i = g("sidebar-item", !0), m = g("el-sub-menu"); return e.item.meta?.hidden ? M("", !0) : (d(), k("div", { key: 0, class: D({ "simple-mode": e.isCollapse && !r.isTop, "first-level": e.isFirstLevel }) }, [ !t.value && s.value && !s.value.children ? (d(), k(j, { key: 0 }, [ s.value.meta ? (d(), w(Ft, { key: 0, to: a(s.value.path) }, { default: f(() => [ u(_, { index: a(s.value.path) }, Ue({ default: f(() => [ s.value.meta.svgIcon ? (d(), w(v, { key: 0, name: s.value.meta.svgIcon }, null, 8, ["name"])) : s.value.meta.elIcon ? (d(), w(fe(s.value.meta.elIcon), { key: 1, class: "el-icon" })) : M("", !0) ]), _: 2 }, [ s.value.meta.title ? { name: "title", fn: f(() => [ J(F(s.value.meta.title), 1) ]), key: "0" } : void 0 ]), 1032, ["index"]) ]), _: 1 }, 8, ["to"])) : M("", !0) ], 64)) : (d(), w(m, { key: 1, index: a(e.item.path), teleported: "" }, { title: f(() => [ e.item.meta?.svgIcon ? (d(), w(v, { key: 0, name: e.item.meta.svgIcon }, null, 8, ["name"])) : e.item.meta?.elIcon ? (d(), w(fe(e.item.meta.elIcon), { key: 1, class: "el-icon" })) : M("", !0), e.item.meta?.title ? (d(), k("span", Bt, F(e.item.meta.title), 1)) : M("", !0) ]), default: f(() => [ e.item.children && e.item.children.length > 0 ? (d(!0), k(j, { key: 0 }, Q(e.item.children, (h) => (d(), w(i, { key: h.path, item: h, "is-collapse": e.isCollapse, "is-first-level": !1, "base-path": a(h.path) }, null, 8, ["item", "is-collapse", "base-path"]))), 128)) : M("", !0) ]), _: 1 }, 8, ["index"])) ], 2)); }; } }); const Wt = /* @__PURE__ */ R(zt, [["__scopeId", "data-v-2227fea7"]]), Ht = ["src"], Ot = ["src"], qt = /* @__PURE__ */ A({ __name: "index", props: { collapse: { type: Boolean, default: !0 } }, setup(n) { const e = n, t = O(), { layoutMode: l, sideLogo: o, title: s } = H(t); return (a, r) => { const c = g("router-link"); return d(), k("div", { class: D(["layout-logo-container", { collapse: e.collapse, "layout-mode-top": p(l) === "top" }]) }, [ u(Ae, { name: "layout-logo-fade" }, { default: f(() => [ e.collapse ? (d(), w(c, { key: "collapse", to: "/" }, { default: f(() => [ x("img", { src: p(o), class: "layout-logo" }, null, 8, Ht) ]), _: 1 })) : (d(), w(c, { key: "expand", to: "/", class: "layout-logo-text" }, { default: f(() => [ x("img", { src: p(o), style: { flex: "32px 0 0", width: "32px", "margin-left": "10px" } }, null, 8, Ot), x("div", { class: "layout-title", style: Le({ color: p(l) !== "left" ? "#000" : "#fff" }) }, F(p(s)), 5) ]), _: 1 })) ]), _: 1 }) ], 2); }; } }); const me = /* @__PURE__ */ R(qt, [["__scopeId", "data-v-fa229ec7"]]), se = (n) => { let e = ""; try { e = getComputedStyle(document.documentElement).getPropertyValue(n); } catch (t) { console.error(t); } return e; }, Se = (n, e) => { try { document.documentElement.style.setProperty(n, e); } catch (t) { console.error(t); } }, Ut = () => { Ke(), location.reload(); }, Gt = /* @__PURE__ */ A({ __name: "index", setup(n) { Ve((b) => ({ "56bea8c8": q.value, "107712b2": K.value, "75d0f4f8": U.value, "4df57e2c": P.value, "38d5ff3f": W.value })); const e = se("--v3-sidebar-menu-bg-color"), t = se("--v3-sidebar-menu-text-color"), l = se("--v3-sidebar-menu-active-text-color"), o = ue(), s = ne(), a = Pe(), r = O(), { sidebar: c, device: v } = H(s), { layoutMode: _, showLogo: i } = H(r), m = C(() => { const { meta: { activeMenu: b }, path: $ } = o; return b || $; }), h = C(() => !c.value.opened), y = C(() => _.value === "left"), E = C(() => _.value === "top"), S = C(() => v.value === X.Mobile), I = C(() => y.value && i.value), L = C(() => y.value ? e : void 0), V = C(() => y.value ? t : void 0), W = C(() => y.value ? l : void 0), U = C(() => _.value !== "top" ? "var(--v3-sidebar-menu-item-height)" : "var(--v3-navigationbar-height)"), P = C(() => _.value !== "top" ? "var(--v3-sidebar-menu-hover-bg-color)" : "transparent"), q = C(() => _.value !== "top" ? "2px" : "0px"), K = C(() => _.value === "top" ? "none" : "block"); return (b, $) => { const Y = g("el-menu"), T = g("el-scrollbar"); return d(), k("div", { class: D({ "has-logo": I.value }) }, [ I.value ? (d(), w(me, { key: 0, collapse: h.value }, null, 8, ["collapse"])) : M("", !0), u(T, { "wrap-class": "scrollbar-wrapper" }, { default: f(() => [ u(Y, { "default-active": m.value, collapse: h.value && !E.value, "background-color": L.value, "text-color": V.value, "active-text-color": W.value, "unique-opened": !0, "collapse-transition": !1, mode: E.value && !S.value ? "horizontal" : "vertical" }, { default: f(() => [ (d(!0), k(j, null, Q(p(a).routes, (N) => (d(), w(Wt, { key: N.path, item: N, "base-path": N.path, "is-collapse": h.value, "is-top": E.value }, null, 8, ["item", "base-path", "is-collapse", "is-top"]))), 128)) ]), _: 1 }, 8, ["default-active", "collapse", "background-color", "text-color", "active-text-color", "mode"]) ]), _: 1 }) ], 2); }; } }); const he = /* @__PURE__ */ R(Gt, [["__scopeId", "data-v-1b00bae0"]]), Xt = { class: "card-header" }, jt = { class: "card-title" }, Jt = { class: "card-time" }, Kt = { key: 0, class: "card-avatar" }, Yt = ["src"], Zt = { class: "card-body" }, Qt = /* @__PURE__ */ A({ __name: "NotifyList", props: { list: {}, prop: {} }, setup(n) { return (e, t) => { const l = g("el-empty"), o = g("el-tag"), s = g("el-card"); return e.list.length === 0 ? (d(), w(l, { key: 0 })) : (d(!0), k(j, { key: 1 }, Q(e.list, (a, r) => (d(), w(s, { key: r, shadow: "never", class: "card-container" }, { header: f(() => [ x("div", Xt, [ x("div", null, [ x("span", null, [ x("span", jt, F(a[e.prop.title]), 1), a[e.prop.extra] ? (d(), w(o, { key: 0, type: a[e.prop.status], effect: "plain", size: "small" }, { default: f(() => [ J(F(a[e.prop.extra]), 1) ]), _: 2 }, 1032, ["type"])) : M("", !0) ]), x("div", Jt, F(a[e.prop.datetime]), 1) ]), a[e.prop.avatar] ? (d(), k("div", Kt, [ x("img", { src: a[e.prop.avatar], width: "34" }, null, 8, Yt) ])) : M("", !0) ]) ]), default: f(() => [ x("div", Zt, F(a[e.prop.description] ?? "No Data"), 1) ]), _: 2 }, 1024))), 128)); }; } }); const en = /* @__PURE__ */ R(Qt, [["__scopeId", "data-v-7cda7a8f"]]), tn = { class: "notify" }, nn = { class: "notify-history" }, Ce = 99, on = 350, sn = /* @__PURE__ */ A({ __name: "index", setup(n) { const e = de(), { notityProps: t } = Ye(), { column: l, jumpUrl: o } = t, s = C(() => l.reduce((c, v) => c + v.badge, 0)), a = z(l[0].name || "通知"), r = () => { o || De.error(`您还没有配置跳转到${a.value}历史页面`), e.push(o); }; return (c, v) => { const _ = g("el-icon"), i = g("el-tooltip"), m = g("el-badge"), h = g("el-scrollbar"), y = g("el-tab-pane"), E = g("el-tabs"), S = g("el-button"), I = g("el-popover"); return d(), k("div", tn, [ u(I, { placement: "bottom", width: on, trigger: "click" }, { reference: f(() => [ u(m, { value: s.value, max: Ce, hidden: s.value === 0 }, { default: f(() => [ u(i, { effect: "dark", content: "消息通知", placement: "bottom" }, { default: f(() => [ u(_, { size: 20 }, { default: f(() => [ u(p(ot)) ]), _: 1 }) ]), _: 1 }) ]), _: 1 }, 8, ["value", "hidden"]) ]), default: f(() => [ u(E, { modelValue: a.value, "onUpdate:modelValue": v[0] || (v[0] = (L) => a.value = L), class: "demo-tabs", stretch: "" }, { default: f(() => [ (d(!0), k(j, null, Q(p(l), (L, V) => (d(), w(y, { name: L.name, key: V }, { label: f(() => [ J(F(L.name) + " ", 1), u(m, { value: L.badgeMax, max: Ce, type: L.type }, null, 8, ["value", "type"]) ]), default: f(() => [ u(h, { height: "400px" }, { default: f(() => [ u(en, { list: L.list, prop: L.props }, null, 8, ["list", "prop"]) ]), _: 2 }, 1024) ]), _: 2 }, 1032, ["name"]))), 128)) ]), _: 1 }, 8, ["modelValue"]), x("div", nn, [ u(S, { link: "", onClick: r }, { default: f(() => [ J("查看" + F(a.value) + "历史", 1) ]), _: 1 }) ]) ]), _: 1 }) ]); }; } }); const an = /* @__PURE__ */ R(sn, [["__scopeId", "data-v-836e55c3"]]), ln = /* @__PURE__ */ A({ __name: "index", setup(n) { const { themeList: e, activeThemeName: t, setTheme: l } = Ze(); return (o, s) => { const a = g("el-icon"), r = g("el-tooltip"), c = g("el-dropdown-item"), v = g("el-dropdown-menu"), _ = g("el-dropdown"); return d(), w(_, { trigger: "click", onCommand: p(l) }, { dropdown: f(() => [ u(v, null, { default: f(() => [ (d(!0), k(j, null, Q(p(e), (i, m) => (d(), w(c, { key: m, disabled: p(t) === i.name, command: i.name }, { default: f(() => [ x("span", null, F(i.title), 1) ]), _: 2 }, 1032, ["disabled", "command"]))), 128)) ]), _: 1 }) ]), default: f(() => [ x("div", null, [ u(r, { effect: "dark", content: "主题模式", placement: "bottom" }, { default: f(() => [ u(a, { size: 20 }, { default: f(() => [ u(p(st)) ]), _: 1 }) ]), _: 1 }) ]) ]), _: 1 }, 8, ["onCommand"]); }; } }), Ee = [ [ "requestFullscreen", "exitFullscreen", "fullscreenElement", "fullscreenEnabled", "fullscreenchange", "fullscreenerror" ], // New WebKit [ "webkitRequestFullscreen", "webkitExitFullscreen", "webkitFullscreenElement", "webkitFullscreenEnabled", "webkitfullscreenchange", "webkitfullscreenerror" ], // Old WebKit [ "webkitRequestFullScreen", "webkitCancelFullScreen", "webkitCurrentFullScreenElement", "webkitCancelFullScreen", "webkitfullscreenchange", "webkitfullscreenerror" ], [ "mozRequestFullScreen", "mozCancelFullScreen", "mozFullScreenElement", "mozFullScreenEnabled", "mozfullscreenchange", "mozfullscreenerror" ], [ "msRequestFullscreen", "msExitFullscreen", "msFullscreenElement", "msFullscreenEnabled", "MSFullscreenChange", "MSFullscreenError" ] ], Z = (() => { if (typeof document > "u") return !1; const n = Ee[0], e = {}; for (const t of Ee) if (t?.[1] in document) { for (const [o, s] of t.entries()) e[n[o]] = s; return e; } return !1; })(), Te = { change: Z.fullscreenchange, error: Z.fullscreenerror }; let B = { // eslint-disable-next-line default-param-last request(n = document.documentElement, e) { return new Promise((t, l) => { const o = () => { B.off("change", o), t(); }; B.on("change", o); const s = n[Z.requestFullscreen](e); s instanceof Promise && s.then(o).catch(l); }); }, exit() { return new Promise((n, e) => { if (!B.isFullscreen) { n(); return; } const t = () => { B.off("change", t), n(); }; B.on("change", t); const l = document[Z.exitFullscreen](); l instanceof Promise && l.then(t).catch(e); }); }, toggle(n, e) { return B.isFullscreen ? B.exit() : B.request(n, e); }, onchange(n) { B.on("change", n); }, onerror(n) { B.on("error", n); }, on(n, e) { const t = Te[n]; t && document.addEventListener(t, e, !1); }, off(n, e) { const t = Te[n]; t && document.removeEventListener(t, e, !1); }, raw: Z }; Object.defineProperties(B, { isFullscreen: { get: () => !!document[Z.fullscreenElement] }, element: { enumerable: !0, get: () => document[Z.fullscreenElement] ?? void 0 }, isEnabled: { enumerable: !0, // Coerce to boolean in case of old WebKit. get: () => !!document[Z.fullscreenEnabled] } }); Z || (B = { isEnabled: !1 }); const ee = B, rn = /* @__PURE__ */ A({ __name: "index", props: { element: { default: "html" }, openTips: { default: "全屏" }, exitTips: { default: "退出全屏" }, content: { type: Boolean, default: !1 } }, setup(n) { const e = n, t = z(!1), l = C(() => t.value ? e.exitTips : e.openTips), o = C(() => t.value ? "fullscreen-exit" : "fullscreen"), s = () => { const i = document.querySelector(e.element) || void 0; ee.isEnabled ? ee.toggle(i) : De.warning("您的浏览器无法工作"); }, a = () => { t.value = ee.isFullscreen; }; le((i) => { ee.on("change", a), i(() => { ee.isEnabled && ee.off("change", a); }); }); const r = z(!1), c = C(() => r.value ? "内容区复原" : "内容区放大"), v = C(() => r.value ? "fullscreen-exit" : "fullscreen"), _ = () => { document.body.className = r.value ? "" : "content-large", r.value = !r.value; }; return (i, m) => { const h = g("SvgIcon"), y = g("el-tooltip"), E = g("el-dropdown-item"), S = g("el-dropdown-menu"), I = g("el-dropdown"); return d(), k("div", null, [ i.content ? (d(), w(I, { key: 1 }, { dropdown: f(() => [ u(S, null, { default: f(() => [ u(E, { onClick: _ }, { default: f(() => [ J(F(c.value), 1) ]), _: 1 }), u(E, { onClick: s, disabled: t.value }, { default: f(() => [ J("内容区全屏") ]), _: 1 }, 8, ["disabled"]) ]), _: 1 }) ]), default: f(() => [ u(h, { name: v.value }, null, 8, ["name"]) ]), _: 1 })) : (d(), w(y, { key: 0, effect: "dark", content: l.value, placement: "bottom" }, { default: f(() => [ u(h, { name: o.value, onClick: s }, null, 8, ["name"]) ]), _: 1 }, 8, ["content"])) ]); }; } }); const cn = /* @__PURE__ */ R(rn, [["__scopeId", "data-v-0baf781b"]]), un = (n) => (Re("data-v-70ce923e"), n = n(), Ie(), n), dn = { class: "navigation-bar" }, _n = { class: "right-menu" }, fn = { class: "right-menu-avatar" }, pn = { target: "_blank", href: "https://github.com/un-pany/v3-admin-vite" }, vn = { target: "_blank", href: "https://gitee.com/un-pany/v3-admin-vite" }, mn = /* @__PURE__ */ un(() => /* @__PURE__ */ x("span", { style: { display: "block" } }, "退出登录", -1)), hn = /* @__PURE__ */ A({ __name: "index", setup(n) { const e = de(), t = ne(), l = O(), o = Qe(), { sidebar: s, device: a } = H(t), { layoutMode: r, showNotify: c, showThemeSwitch: v, showScreenfull: _, showSearchMenu: i } = H(l), m = C(() => r.value === "top"), h = C(() => a.value === X.Mobile), y = () => { t.toggleSidebar(!1); }, E = () => { o.logout(), e.push("/login"); }; return (S, I) => { const L = g("el-avatar"), V = g("el-dropdown-item"), W = g("el-dropdown-menu"), U = g("el-dropdown"); return d(), k("div", dn, [ !m.value || h.value ? (d(), w(kt, { key: 0, "is-active": p(s).opened, class: "hamburger", onToggleClick: y }, null, 8, ["is-active"])) : M("", !0), !m.value || h.value ? (d(), w(Rt, { key: 1, class: "breadcrumb" })) : M("", !0), m.value && !h.value ? (d(), w(he, { key: 2, class: "sidebar" })) : M("", !0), x("div", _n, [ p(_) ? (d(), w(cn, { key: 0, class: "right-menu-item" })) : M("", !0), p(v) ? (d(), w(ln, { key: 1, class: "right-menu-item" })) : M("", !0), p(c) ? (d(), w(an, { key: 2, class: "right-menu-item" })) : M("", !0), u(U, { class: "right-menu-item" }, { dropdown: f(() => [ u(W, null, { default: f(() => [ x("a", pn, [ u(V, null, { default: f(() => [ J("GitHub") ]), _: 1 }) ]), x("a", vn, [ u(V, null, { default: f(() => [ J("Gitee") ]), _: 1 }) ]), u(V, { divided: "", onClick: E }, { default: f(() => [ mn ]), _: 1 }) ]), _: 1 }) ]), default: f(() => [ x("div", fn, [ u(L, { icon: p(at), size: 30 }, null, 8, ["icon"]), x("span", null, F(p(o).username), 1) ]) ]), _: 1 }) ]) ]); }; } }); const ge = /* @__PURE__ */ R(hn, [["__scopeId", "data-v-70ce923e"]]), gn = { class: "select-layout-mode" }, bn = /* @__PURE__ */ A({ __name: "SelectLayoutMode", setup(n) { const e = O(), { layoutMode: t } = H(e), l = C(() => t.value === "left"), o = C(() => t.value === "top"), s = C(() => t.value === "left-top"); return (a, r) => { const c = g("el-aside"), v = g("el-header"), _ = g("el-main"), i = g("el-container"), m = g("el-tooltip"); return d(), k("div", gn, [ u(m, { content: "左侧模式" }, { default: f(() => [ u(i, { class: D(["layout-mode left", { active: l.value }]), onClick: r[0] || (r[0] = (h) => t.value = "left") }, { default: f(() => [ u(c), u(i, null, { default: f(() => [ u(v), u(_) ]), _: 1 }) ]), _: 1 }, 8, ["class"]) ]), _: 1 }), u(m, { content: "顶部模式" }, { default: f(() => [ u(i, { class: D(["layout-mode top", { active: o.value }]), onClick: r[1] || (r[1] = (h) => t.value = "top") }, { default: f(() => [ u(v), u(_) ]), _: 1 }, 8, ["class"]) ]), _: 1 }), u(m, { content: "混合模式" }, { default: f(() => [ u(i, { class: D(["layout-mode left-top", { active: s.value }]), onClick: r[2] || (r[2] = (h) => t.value = "left-top") }, { default: f(() => [ u(v), u(i, null, { default: f(() => [ u(c), u(_) ]), _: 1 }) ]), _: 1 }, 8, ["class"]) ]), _: 1 }) ]); }; } }); const yn = /* @__PURE__ */ R(bn, [["__scopeId", "data-v-d031256f"]]), ze = (n) => (Re("data-v-d5c669d1"), n = n(), Ie(), n), wn = { class: "setting-container" }, xn = /* @__PURE__ */ ze(() => /* @__PURE__ */ x("h4", null, "布局配置", -1)), kn = /* @__PURE__ */ ze(() => /* @__PURE__ */ x("h4", null, "功能配置", -1)), Sn = { class: "setting-name" }, Cn = /* @__PURE__ */ A({ __name: "index", setup(n) { const e = O(), { layoutMode: t, showTagsView: l, showLogo: o, fixedHeader: s, showFooter: a, showNotify: r, showThemeSwitch: c, showScreenfull: v, showSearchMenu: _, cacheTagsView: i, showWatermark: m, showGreyMode: h, showColorWeakness: y } = H(e), E = { 显示标签栏: l, "显示 Logo": o, "固定 Header": s, "显示页脚 Footer": a, 显示消息通知: r, 显示切换主题按钮: c, 显示全屏按钮: v, 显示搜索按钮: _, 是否缓存标签栏: i, 开启系统水印: m, 显示灰色模式: h, 显示色弱模式: y }; return le(() => { t.value !== "left" && (s.value = !0); }), (S, I) => { const L = g("el-divider"), V = g("el-switch"), W = g("el-button"); return d(), k("div", wn, [ xn, u(yn), u(L), kn, (d(), k(j, null, Q(E, (U, P, q) => x("div", { class: "setting-item", key: q }, [ x("span", Sn, F(P), 1), u(V, { modelValue: U.value, "onUpdate:modelValue": (K) => U.value = K, disabled: p(t) !== "left" && P === "固定 Header" }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"]) ])), 64)), u(W, { type: "danger", icon: p(lt), onClick: p(Ut) }, { default: f(() => [ J("重 置") ]), _: 1 }, 8, ["icon", "onClick"]) ]); }; } }); const En = /* @__PURE__ */ R(Cn, [["__scopeId", "data-v-d5c669d1"]]), Tn = { class: "scroll-container" }, Mn = 200, $n = /* @__PURE__ */ A({ __name: "ScrollPane", props: { tagRefs: {} }, setup(n) { const e = n, t = ue(); O(); const { listenerRouteChange: l } = ie(), o = z(), s = z(); let a = 0; const r = ({ scrollLeft: m }) => { a = m; }, c = ({ deltaY: m }) => { /^-/.test(m.toString()) ? _("left") : _("right"); }, v = () => { const m = s.value.clientWidth, h = o.value.wrapRef.clientWidth, y = m - h - a; return { scrollbarContentRefWidth: m, scrollbarRefWidth: h, lastDistance: y }; }, _ = (m, h = Mn) => { let y = 0; const { scrollbarContentRefWidth: E, scrollbarRefWidth: S, lastDistance: I } = v(); S > E || (m === "left" ? y = Math.max(0, a - h) : y = Math.min(a + h, a + I), o.value.setScrollLeft(y)); }, i = () => { const m = e.tagRefs; for (let h = 0; h < m.length; h++) if (t.path === m[h].$props.to.path) { const y = m[h].$el, E = y.offsetWidth, S = y.offsetLeft, { scrollbarRefWidth: I } = v(); if (S < a) { const V = a - S; _("left", V); return; } const L = I + a - E; if (S > L) { const V = S - L; _("right", V); return; } } }; return l(() => { Ge(i); }), (m, h) => { const y = g("el-icon"); return d(), k("div", Tn, [ u(y, { class: "arrow left", onClick: h[0] || (h[0] = (E) => _("left")) }, { default: f(() => [ u(p(rt)) ]), _: 1 }), u(p(dt), { ref_key: "scrollbarRef", ref: o, onWheelPassive: c, onScroll: r }, { default: f(() => [ x("div", { ref_key: "scrollbarContentRef", ref: s, class: "scrollbar-content" }, [ ae(m.$slots, "default", {}, void 0, !0) ], 512) ]), _: 3 }, 512), u(y, { class: "arrow right", onClick: h[1] || (h[1] = (E) => _("right")) }, { default: f(() => [ u(p(ct)) ]), _: 1 }) ]); }; } }); const An = /* @__PURE__ */ R($n, [["__scopeId", "data-v-b5475e98"]]), Ln = { class: "tags-view-container" }, Vn = /* @__PURE__ */ A({ __name: "index", setup(n) { const e = Xe(), t = de(), l = ue(), o = Fe(), s = Pe(), { listenerRouteChange: a } = ie(), r = z([]), c = z(!1), v = z(0), _ = z(0), i = z({}); let m = []; const h = (b) => b.path === l.path, y = (b) => b.meta?.affix, E = (b, $ = "/") => { const Y = []; return b.forEach((T) => { if (y(T)) { const N = Be.resolve($, T.path); Y.push({ fullPath: N, path: N, name: T.name, meta: { ...T.meta } }); } if (T.children) { const N = E(T.children, T.path); Y.push(...N); } }), Y; }, S = () => { m = E(s.routes); for (const b of m) b.name && o.addVisitedView(b); }, I = (b) => { b.name && (o.addVisitedView(b), o.addCachedView(b)); }, L = (b) => { o.delCachedView(b), t.replace({ path: "/redirect" + b.path, query: b.query }); }, V = (b) => { o.delVisitedView(b), o.delCachedView(b), h(b) && P(o.visitedViews, b); }, W = () => { const b = i.value.fullPath; b !== l.path && b !== void 0 && t.push(b), o.delOthersVisitedViews(i.value), o.delOthersCachedViews(i.value); }, U = (b) => { o.delAllVisitedViews(), o.delAllCachedViews(), !m.some(($) => $.path === l.path) && P(o.visitedViews, b); }, P = (b, $) => { const T = b.slice(-1)[0]?.fullPath; T !== void 0 ? t.push(T) : $.name === "Dashboard" ? t.push({ path: "/redirect" + $.path, query: $.query }) : t.push("/"); }, q = (b, $) => { const T = e.proxy.$el.getBoundingClientRect().left, ye = e.proxy.$el.offsetWidth - 105, we = $.clientX - T + 15; _.value = we > ye ? ye : we, v.value = $.clientY, c.value = !0, i.value = b; }, K = () => { c.value = !1; }; return Me(c, (b) => { b ? document.body.addEventListener("click", K) : document.body.removeEventListener("click", K); }), $e(() => { S(), a((b) => { I(b); }, !0); }), (b, $) => { const Y = g("el-icon"); return d(), k("div", Ln, [ u(An, { class: "tags-view-wrapper", "tag-refs": r.value }, { default: f(() => [ (d(!0), k(j, null, Q(p(o).visitedViews, (T) => (d(), w(p(et), { ref_for: !0, ref_key: "tagRefs", ref: r, key: T.path, class: D([{ active: h(T) }, "tags-view-item"]), to: { path: T.path, query: T.query }, onMouseup: oe((N) => !y(T) && V(T), ["middle"]), onContextmenu: oe((N) => q(T, N), ["prevent"]) }, { default: f(() => [ J(F(T.meta?.title) + " ", 1), y(T) ? M("", !0) : (d(), w(Y, { key: 0, size: 12, onClick: oe((N) => V(T), ["prevent", "stop"]) }, { default: f(() => [ u(p(it)) ]), _: