v-toggle-theme
Version:
A Vue 3 and Vuetify 3 compatible component that automatically switches between light and dark themes based on sunrise and sunset times. Includes manual override capabilities and full support for SSR and geolocation.
1,748 lines • 92.9 kB
JavaScript
import { Fragment as st, reactive as le, computed as h, watchEffect as ce, toRefs as nn, capitalize as Yn, shallowRef as U, warn as lt, getCurrentInstance as Xn, inject as J, ref as A, unref as K, provide as fe, defineComponent as Ze, isRef as ue, createVNode as p, toRef as j, watch as I, onScopeDispose as q, effectScope as ut, toRaw as rn, onBeforeUnmount as Ce, onMounted as ct, onUpdated as Kn, mergeProps as z, Text as Jn, readonly as on, resolveDynamicComponent as Zn, nextTick as de, withDirectives as an, h as Qn, TransitionGroup as er, Transition as sn, Teleport as tr, vShow as nr, resolveDirective as rr, onUnmounted as ir, openBlock as or, createBlock as ar, withCtx as xt, createElementVNode as sr, toDisplayString as lr } from "vue";
import { getSunrise as ze, getSunset as kt } from "sunrise-sunset-js";
import { useTheme as ur } from "vuetify";
var cr = "M17.75,4.09L15.22,6.03L16.13,9.09L13.5,7.28L10.87,9.09L11.78,6.03L9.25,4.09L12.44,4L13.5,1L14.56,4L17.75,4.09M21.25,11L19.61,12.25L20.2,14.23L18.5,13.06L16.8,14.23L17.39,12.25L15.75,11L17.81,10.95L18.5,9L19.19,10.95L21.25,11M18.97,15.95C19.8,15.87 20.69,17.05 20.16,17.8C19.84,18.25 19.5,18.67 19.08,19.07C15.17,23 8.84,23 4.94,19.07C1.03,15.17 1.03,8.83 4.94,4.93C5.34,4.53 5.76,4.17 6.21,3.85C6.96,3.32 8.14,4.21 8.06,5.04C7.79,7.9 8.75,10.87 10.95,13.06C13.14,15.26 16.1,16.22 18.97,15.95M17.33,17.97C14.5,17.81 11.7,16.64 9.53,14.5C7.36,12.31 6.2,9.5 6.04,6.68C3.23,9.82 3.34,14.64 6.35,17.66C9.37,20.67 14.19,20.78 17.33,17.97Z", fr = "M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M3.36,17L5.12,13.23C5.26,14 5.53,14.78 5.95,15.5C6.37,16.24 6.91,16.86 7.5,17.37L3.36,17M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M20.64,17L16.5,17.36C17.09,16.85 17.62,16.22 18.04,15.5C18.46,14.77 18.73,14 18.87,13.21L20.64,17M12,22L9.59,18.56C10.33,18.83 11.14,19 12,19C12.82,19 13.63,18.83 14.37,18.56L12,22Z";
const G = typeof window < "u", dr = G && "IntersectionObserver" in window;
function ft(e, t) {
if (e === t) return !0;
if (e instanceof Date && t instanceof Date && e.getTime() !== t.getTime() || e !== Object(e) || t !== Object(t))
return !1;
const n = Object.keys(e);
return n.length !== Object.keys(t).length ? !1 : n.every((r) => ft(e[r], t[r]));
}
function T(e) {
let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "px";
if (!(e == null || e === ""))
return isNaN(+e) ? String(e) : isFinite(+e) ? `${Number(e)}${t}` : void 0;
}
function vr(e) {
return e !== null && typeof e == "object" && !Array.isArray(e);
}
function Et(e) {
let t;
return e !== null && typeof e == "object" && ((t = Object.getPrototypeOf(e)) === Object.prototype || t === null);
}
function mr(e) {
if (e && "$el" in e) {
const t = e.$el;
return (t == null ? void 0 : t.nodeType) === Node.TEXT_NODE ? t.nextElementSibling : t;
}
return e;
}
const Pt = Object.freeze({
enter: 13,
tab: 9,
delete: 46,
esc: 27,
space: 32,
up: 38,
down: 40,
left: 37,
right: 39,
end: 35,
home: 36,
del: 46,
backspace: 8,
insert: 45,
pageup: 33,
pagedown: 34,
shift: 16
});
function He(e, t) {
return t.every((n) => e.hasOwnProperty(n));
}
function gr(e, t) {
const n = {}, r = new Set(Object.keys(e));
for (const i of t)
r.has(i) && (n[i] = e[i]);
return n;
}
function hr(e, t) {
const n = {
...e
};
return t.forEach((r) => delete n[r]), n;
}
const yr = /^on[^a-z]/, ln = (e) => yr.test(e);
function br(e) {
return e == null ? [] : Array.isArray(e) ? e : [e];
}
function Lt(e) {
let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 1;
return Math.max(t, Math.min(n, e));
}
function Ot(e, t) {
let n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "0";
return e + n.repeat(Math.max(0, t - e.length));
}
function pr(e) {
let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1;
const n = [];
let r = 0;
for (; r < e.length; )
n.push(e.substr(r, t)), r += t;
return n;
}
function ae() {
let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, n = arguments.length > 2 ? arguments[2] : void 0;
const r = {};
for (const i in e)
r[i] = e[i];
for (const i in t) {
const o = e[i], a = t[i];
if (Et(o) && Et(a)) {
r[i] = ae(o, a, n);
continue;
}
if (n && Array.isArray(o) && Array.isArray(a)) {
r[i] = n(o, a);
continue;
}
r[i] = a;
}
return r;
}
function un(e) {
return e.map((t) => t.type === st ? un(t.children) : t).flat();
}
function Q() {
let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "";
if (Q.cache.has(e)) return Q.cache.get(e);
const t = e.replace(/[^a-z]/gi, "-").replace(/\B([A-Z])/g, "-$1").toLowerCase();
return Q.cache.set(e, t), t;
}
Q.cache = /* @__PURE__ */ new Map();
function he(e, t) {
if (!t || typeof t != "object") return [];
if (Array.isArray(t))
return t.map((n) => he(e, n)).flat(1);
if (t.suspense)
return he(e, t.ssContent);
if (Array.isArray(t.children))
return t.children.map((n) => he(e, n)).flat(1);
if (t.component) {
if (Object.getOwnPropertySymbols(t.component.provides).includes(e))
return [t.component];
if (t.component.subTree)
return he(e, t.component.subTree).flat(1);
}
return [];
}
function dt(e) {
const t = le({}), n = h(e);
return ce(() => {
for (const r in n.value)
t[r] = n.value[r];
}, {
flush: "sync"
}), nn(t);
}
function Be(e, t) {
return e.includes(t);
}
function cn(e) {
return e[2].toLowerCase() + e.slice(3);
}
function Tt(e, t) {
return t = "on" + Yn(t), !!(e[t] || e[`${t}Once`] || e[`${t}Capture`] || e[`${t}OnceCapture`] || e[`${t}CaptureOnce`]);
}
function wr(e, t) {
if (!(G && typeof CSS < "u" && typeof CSS.supports < "u" && CSS.supports(`selector(${t})`))) return null;
try {
return !!e && e.matches(t);
} catch {
return null;
}
}
function Cr(e, t) {
if (!G || e === 0)
return t(), () => {
};
const n = window.setTimeout(t, e);
return () => window.clearTimeout(n);
}
function Qe() {
const e = U(), t = (n) => {
e.value = n;
};
return Object.defineProperty(t, "value", {
enumerable: !0,
get: () => e.value,
set: (n) => e.value = n
}), Object.defineProperty(t, "el", {
enumerable: !0,
get: () => mr(e.value)
}), t;
}
const fn = ["top", "bottom"], Sr = ["start", "end", "left", "right"];
function et(e, t) {
let [n, r] = e.split(" ");
return r || (r = Be(fn, n) ? "start" : Be(Sr, n) ? "top" : "center"), {
side: _t(n, t),
align: _t(r, t)
};
}
function _t(e, t) {
return e === "start" ? t ? "right" : "left" : e === "end" ? t ? "left" : "right" : e;
}
function je(e) {
return {
side: {
center: "center",
top: "bottom",
bottom: "top",
left: "right",
right: "left"
}[e.side],
align: e.align
};
}
function Ge(e) {
return {
side: e.side,
align: {
center: "center",
top: "bottom",
bottom: "top",
left: "right",
right: "left"
}[e.align]
};
}
function At(e) {
return {
side: e.align,
align: e.side
};
}
function Bt(e) {
return Be(fn, e.side) ? "y" : "x";
}
class ee {
constructor(t) {
let {
x: n,
y: r,
width: i,
height: o
} = t;
this.x = n, this.y = r, this.width = i, this.height = o;
}
get top() {
return this.y;
}
get bottom() {
return this.y + this.height;
}
get left() {
return this.x;
}
get right() {
return this.x + this.width;
}
}
function It(e, t) {
return {
x: {
before: Math.max(0, t.left - e.left),
after: Math.max(0, e.right - t.right)
},
y: {
before: Math.max(0, t.top - e.top),
after: Math.max(0, e.bottom - t.bottom)
}
};
}
function xr(e) {
return Array.isArray(e) ? new ee({
x: e[0],
y: e[1],
width: 0,
height: 0
}) : e.getBoundingClientRect();
}
function kr(e) {
const t = e.getBoundingClientRect(), n = getComputedStyle(e), r = n.transform;
if (r) {
let i, o, a, s, l;
if (r.startsWith("matrix3d("))
i = r.slice(9, -1).split(/, /), o = +i[0], a = +i[5], s = +i[12], l = +i[13];
else if (r.startsWith("matrix("))
i = r.slice(7, -1).split(/, /), o = +i[0], a = +i[3], s = +i[4], l = +i[5];
else
return new ee(t);
const u = n.transformOrigin, c = t.x - s - (1 - o) * parseFloat(u), v = t.y - l - (1 - a) * parseFloat(u.slice(u.indexOf(" ") + 1)), d = o ? t.width / o : e.offsetWidth + 1, g = a ? t.height / a : e.offsetHeight + 1;
return new ee({
x: c,
y: v,
width: d,
height: g
});
} else
return new ee(t);
}
function Er(e, t, n) {
if (typeof e.animate > "u") return {
finished: Promise.resolve()
};
let r;
try {
r = e.animate(t, n);
} catch {
return {
finished: Promise.resolve()
};
}
return typeof r.finished > "u" && (r.finished = new Promise((i) => {
r.onfinish = () => {
i(r);
};
})), r;
}
const Oe = /* @__PURE__ */ new WeakMap();
function Pr(e, t) {
Object.keys(t).forEach((n) => {
if (ln(n)) {
const r = cn(n), i = Oe.get(e);
if (t[n] == null)
i == null || i.forEach((o) => {
const [a, s] = o;
a === r && (e.removeEventListener(r, s), i.delete(o));
});
else if (!i || ![...i].some((o) => o[0] === r && o[1] === t[n])) {
e.addEventListener(r, t[n]);
const o = i || /* @__PURE__ */ new Set();
o.add([r, t[n]]), Oe.has(e) || Oe.set(e, o);
}
} else
t[n] == null ? e.removeAttribute(n) : e.setAttribute(n, t[n]);
});
}
function Lr(e, t) {
Object.keys(t).forEach((n) => {
if (ln(n)) {
const r = cn(n), i = Oe.get(e);
i == null || i.forEach((o) => {
const [a, s] = o;
a === r && (e.removeEventListener(r, s), i.delete(o));
});
} else
e.removeAttribute(n);
});
}
const oe = 2.4, Rt = 0.2126729, Vt = 0.7151522, Nt = 0.072175, Or = 0.55, Tr = 0.58, _r = 0.57, Ar = 0.62, Pe = 0.03, $t = 1.45, Br = 5e-4, Ir = 1.25, Rr = 1.25, Mt = 0.078, Dt = 12.82051282051282, Le = 0.06, Ft = 1e-3;
function Wt(e, t) {
const n = (e.r / 255) ** oe, r = (e.g / 255) ** oe, i = (e.b / 255) ** oe, o = (t.r / 255) ** oe, a = (t.g / 255) ** oe, s = (t.b / 255) ** oe;
let l = n * Rt + r * Vt + i * Nt, u = o * Rt + a * Vt + s * Nt;
if (l <= Pe && (l += (Pe - l) ** $t), u <= Pe && (u += (Pe - u) ** $t), Math.abs(u - l) < Br) return 0;
let c;
if (u > l) {
const v = (u ** Or - l ** Tr) * Ir;
c = v < Ft ? 0 : v < Mt ? v - v * Dt * Le : v - Le;
} else {
const v = (u ** Ar - l ** _r) * Rr;
c = v > -Ft ? 0 : v > -Mt ? v - v * Dt * Le : v + Le;
}
return c * 100;
}
function se(e) {
lt(`Vuetify: ${e}`);
}
function Vr(e) {
lt(`Vuetify error: ${e}`);
}
function tt(e) {
return !!e && /^(#|var\(--|(rgb|hsl)a?\()/.test(e);
}
function Nr(e) {
return tt(e) && !/^((rgb|hsl)a?\()?var\(--/.test(e);
}
const zt = /^(?<fn>(?:rgb|hsl)a?)\((?<values>.+)\)/, $r = {
rgb: (e, t, n, r) => ({
r: e,
g: t,
b: n,
a: r
}),
rgba: (e, t, n, r) => ({
r: e,
g: t,
b: n,
a: r
}),
hsl: (e, t, n, r) => Ht({
h: e,
s: t,
l: n,
a: r
}),
hsla: (e, t, n, r) => Ht({
h: e,
s: t,
l: n,
a: r
}),
hsv: (e, t, n, r) => be({
h: e,
s: t,
v: n,
a: r
}),
hsva: (e, t, n, r) => be({
h: e,
s: t,
v: n,
a: r
})
};
function ye(e) {
if (typeof e == "number")
return (isNaN(e) || e < 0 || e > 16777215) && se(`'${e}' is not a valid hex color`), {
r: (e & 16711680) >> 16,
g: (e & 65280) >> 8,
b: e & 255
};
if (typeof e == "string" && zt.test(e)) {
const {
groups: t
} = e.match(zt), {
fn: n,
values: r
} = t, i = r.split(/,\s*/).map((o) => o.endsWith("%") && ["hsl", "hsla", "hsv", "hsva"].includes(n) ? parseFloat(o) / 100 : parseFloat(o));
return $r[n](...i);
} else if (typeof e == "string") {
let t = e.startsWith("#") ? e.slice(1) : e;
[3, 4].includes(t.length) ? t = t.split("").map((r) => r + r).join("") : [6, 8].includes(t.length) || se(`'${e}' is not a valid hex(a) color`);
const n = parseInt(t, 16);
return (isNaN(n) || n < 0 || n > 4294967295) && se(`'${e}' is not a valid hex(a) color`), Mr(t);
} else if (typeof e == "object") {
if (He(e, ["r", "g", "b"]))
return e;
if (He(e, ["h", "s", "l"]))
return be(dn(e));
if (He(e, ["h", "s", "v"]))
return be(e);
}
throw new TypeError(`Invalid color: ${e == null ? e : String(e) || e.constructor.name}
Expected #hex, #hexa, rgb(), rgba(), hsl(), hsla(), object or number`);
}
function be(e) {
const {
h: t,
s: n,
v: r,
a: i
} = e, o = (s) => {
const l = (s + t / 60) % 6;
return r - r * n * Math.max(Math.min(l, 4 - l, 1), 0);
}, a = [o(5), o(3), o(1)].map((s) => Math.round(s * 255));
return {
r: a[0],
g: a[1],
b: a[2],
a: i
};
}
function Ht(e) {
return be(dn(e));
}
function dn(e) {
const {
h: t,
s: n,
l: r,
a: i
} = e, o = r + n * Math.min(r, 1 - r), a = o === 0 ? 0 : 2 - 2 * r / o;
return {
h: t,
s: a,
v: o,
a: i
};
}
function Mr(e) {
e = Dr(e);
let [t, n, r, i] = pr(e, 2).map((o) => parseInt(o, 16));
return i = i === void 0 ? i : i / 255, {
r: t,
g: n,
b: r,
a: i
};
}
function Dr(e) {
return e.startsWith("#") && (e = e.slice(1)), e = e.replace(/([^0-9a-f])/gi, "F"), (e.length === 3 || e.length === 4) && (e = e.split("").map((t) => t + t).join("")), e.length !== 6 && (e = Ot(Ot(e, 6), 8, "F")), e;
}
function Fr(e) {
const t = Math.abs(Wt(ye(0), ye(e)));
return Math.abs(Wt(ye(16777215), ye(e))) > Math.min(t, 50) ? "#fff" : "#000";
}
function S(e, t) {
return (n) => Object.keys(e).reduce((r, i) => {
const a = typeof e[i] == "object" && e[i] != null && !Array.isArray(e[i]) ? e[i] : {
type: e[i]
};
return n && i in n ? r[i] = {
...a,
default: n[i]
} : r[i] = a, t && !r[i].source && (r[i].source = t), r;
}, {});
}
const Se = S({
class: [String, Array, Object],
style: {
type: [String, Array, Object],
default: null
}
}, "component");
function $(e, t) {
const n = Xn();
if (!n)
throw new Error(`[Vuetify] ${e} must be called from inside a setup function`);
return n;
}
function Z() {
let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "composables";
const t = $(e).type;
return Q((t == null ? void 0 : t.aliasName) || (t == null ? void 0 : t.name));
}
let vn = 0, Te = /* @__PURE__ */ new WeakMap();
function vt() {
const e = $("getUid");
if (Te.has(e)) return Te.get(e);
{
const t = vn++;
return Te.set(e, t), t;
}
}
vt.reset = () => {
vn = 0, Te = /* @__PURE__ */ new WeakMap();
};
function Wr(e) {
let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : $("injectSelf");
const {
provides: n
} = t;
if (n && e in n)
return n[e];
}
const Ie = Symbol.for("vuetify:defaults");
function mt() {
const e = J(Ie);
if (!e) throw new Error("[Vuetify] Could not find defaults instance");
return e;
}
function mn(e, t) {
const n = mt(), r = A(e), i = h(() => {
if (K(t == null ? void 0 : t.disabled)) return n.value;
const a = K(t == null ? void 0 : t.scoped), s = K(t == null ? void 0 : t.reset), l = K(t == null ? void 0 : t.root);
if (r.value == null && !(a || s || l)) return n.value;
let u = ae(r.value, {
prev: n.value
});
if (a) return u;
if (s || l) {
const c = Number(s || 1 / 0);
for (let v = 0; v <= c && !(!u || !("prev" in u)); v++)
u = u.prev;
return u && typeof l == "string" && l in u && (u = ae(ae(u, {
prev: u
}), u[l])), u;
}
return u.prev ? ae(u.prev, u) : u;
});
return fe(Ie, i), i;
}
function zr(e, t) {
var n, r;
return typeof ((n = e.props) == null ? void 0 : n[t]) < "u" || typeof ((r = e.props) == null ? void 0 : r[Q(t)]) < "u";
}
function Hr() {
let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, t = arguments.length > 1 ? arguments[1] : void 0, n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : mt();
const r = $("useDefaults");
if (t = t ?? r.type.name ?? r.type.__name, !t)
throw new Error("[Vuetify] Could not determine component name");
const i = h(() => {
var l;
return (l = n.value) == null ? void 0 : l[e._as ?? t];
}), o = new Proxy(e, {
get(l, u) {
var v, d, g, m, f, b, w;
const c = Reflect.get(l, u);
return u === "class" || u === "style" ? [(v = i.value) == null ? void 0 : v[u], c].filter((x) => x != null) : typeof u == "string" && !zr(r.vnode, u) ? ((d = i.value) == null ? void 0 : d[u]) !== void 0 ? (g = i.value) == null ? void 0 : g[u] : ((f = (m = n.value) == null ? void 0 : m.global) == null ? void 0 : f[u]) !== void 0 ? (w = (b = n.value) == null ? void 0 : b.global) == null ? void 0 : w[u] : c : c;
}
}), a = U();
ce(() => {
if (i.value) {
const l = Object.entries(i.value).filter((u) => {
let [c] = u;
return c.startsWith(c[0].toUpperCase());
});
a.value = l.length ? Object.fromEntries(l) : void 0;
} else
a.value = void 0;
});
function s() {
const l = Wr(Ie, r);
fe(Ie, h(() => a.value ? ae((l == null ? void 0 : l.value) ?? {}, a.value) : l == null ? void 0 : l.value));
}
return {
props: o,
provideSubDefaults: s
};
}
function Me(e) {
if (e._setup = e._setup ?? e.setup, !e.name)
return se("The component is missing an explicit name, unable to generate default prop value"), e;
if (e._setup) {
e.props = S(e.props ?? {}, e.name)();
const t = Object.keys(e.props).filter((n) => n !== "class" && n !== "style");
e.filterProps = function(r) {
return gr(r, t);
}, e.props._as = String, e.setup = function(r, i) {
const o = mt();
if (!o.value) return e._setup(r, i);
const {
props: a,
provideSubDefaults: s
} = Hr(r, r._as ?? e.name, o), l = e._setup(a, i);
return s(), l;
};
}
return e;
}
function Y() {
let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !0;
return (t) => (e ? Me : Ze)(t);
}
function gn(e) {
if (typeof e.getRootNode != "function") {
for (; e.parentNode; ) e = e.parentNode;
return e !== document ? null : document;
}
const t = e.getRootNode();
return t !== document && t.getRootNode({
composed: !0
}) !== document ? null : t;
}
const jr = "cubic-bezier(0.4, 0, 0.2, 1)";
function Gr(e) {
let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1;
for (; e; ) {
if (t ? qr(e) : gt(e)) return e;
e = e.parentElement;
}
return document.scrollingElement;
}
function Re(e, t) {
const n = [];
if (t && e && !t.contains(e)) return n;
for (; e && (gt(e) && n.push(e), e !== t); )
e = e.parentElement;
return n;
}
function gt(e) {
if (!e || e.nodeType !== Node.ELEMENT_NODE) return !1;
const t = window.getComputedStyle(e);
return t.overflowY === "scroll" || t.overflowY === "auto" && e.scrollHeight > e.clientHeight;
}
function qr(e) {
if (!e || e.nodeType !== Node.ELEMENT_NODE) return !1;
const t = window.getComputedStyle(e);
return ["scroll", "auto"].includes(t.overflowY);
}
function Ur(e) {
for (; e; ) {
if (window.getComputedStyle(e).position === "fixed")
return !0;
e = e.offsetParent;
}
return !1;
}
function te(e) {
const t = $("useRender");
t.render = e;
}
const hn = S({
border: [Boolean, Number, String]
}, "border");
function yn(e) {
let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Z();
return {
borderClasses: h(() => {
const r = ue(e) ? e.value : e.border, i = [];
if (r === !0 || r === "")
i.push(`${t}--border`);
else if (typeof r == "string" || r === 0)
for (const o of String(r).split(" "))
i.push(`border-${o}`);
return i;
})
};
}
const Yr = [null, "default", "comfortable", "compact"], bn = S({
density: {
type: String,
default: "default",
validator: (e) => Yr.includes(e)
}
}, "density");
function pn(e) {
let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Z();
return {
densityClasses: h(() => `${t}--density-${e.density}`)
};
}
const wn = S({
elevation: {
type: [Number, String],
validator(e) {
const t = parseInt(e);
return !isNaN(t) && t >= 0 && // Material Design has a maximum elevation of 24
// https://material.io/design/environment/elevation.html#default-elevations
t <= 24;
}
}
}, "elevation");
function Cn(e) {
return {
elevationClasses: h(() => {
const n = ue(e) ? e.value : e.elevation, r = [];
return n == null || r.push(`elevation-${n}`), r;
})
};
}
const Sn = S({
rounded: {
type: [Boolean, Number, String],
default: void 0
},
tile: Boolean
}, "rounded");
function xn(e) {
let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Z();
return {
roundedClasses: h(() => {
const r = ue(e) ? e.value : e.rounded, i = ue(e) ? e.value : e.tile, o = [];
if (r === !0 || r === "")
o.push(`${t}--rounded`);
else if (typeof r == "string" || r === 0)
for (const a of String(r).split(" "))
o.push(`rounded-${a}`);
else (i || r === !1) && o.push("rounded-0");
return o;
})
};
}
const De = S({
tag: {
type: String,
default: "div"
}
}, "tag"), jt = Symbol.for("vuetify:theme"), xe = S({
theme: String
}, "theme");
function ke(e) {
$("provideTheme");
const t = J(jt, null);
if (!t) throw new Error("Could not find Vuetify theme injection");
const n = h(() => e.theme ?? t.name.value), r = h(() => t.themes.value[n.value]), i = h(() => t.isDisabled ? void 0 : `v-theme--${n.value}`), o = {
...t,
name: n,
current: r,
themeClasses: i
};
return fe(jt, o), o;
}
function ht(e) {
return dt(() => {
const t = [], n = {};
if (e.value.background)
if (tt(e.value.background)) {
if (n.backgroundColor = e.value.background, !e.value.text && Nr(e.value.background)) {
const r = ye(e.value.background);
if (r.a == null || r.a === 1) {
const i = Fr(r);
n.color = i, n.caretColor = i;
}
}
} else
t.push(`bg-${e.value.background}`);
return e.value.text && (tt(e.value.text) ? (n.color = e.value.text, n.caretColor = e.value.text) : t.push(`text-${e.value.text}`)), {
colorClasses: t,
colorStyles: n
};
});
}
function nt(e, t) {
const n = h(() => ({
text: ue(e) ? e.value : null
})), {
colorClasses: r,
colorStyles: i
} = ht(n);
return {
textColorClasses: r,
textColorStyles: i
};
}
function Xr(e, t) {
const n = h(() => ({
background: ue(e) ? e.value : null
})), {
colorClasses: r,
colorStyles: i
} = ht(n);
return {
backgroundColorClasses: r,
backgroundColorStyles: i
};
}
const Kr = ["elevated", "flat", "tonal", "outlined", "text", "plain"];
function Jr(e, t) {
return p(st, null, [p("span", {
key: "overlay",
class: `${t}__overlay`
}, null), p("span", {
key: "underlay",
class: `${t}__underlay`
}, null)]);
}
const kn = S({
color: String,
variant: {
type: String,
default: "elevated",
validator: (e) => Kr.includes(e)
}
}, "variant");
function Zr(e) {
let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Z();
const n = h(() => {
const {
variant: o
} = K(e);
return `${t}--variant-${o}`;
}), {
colorClasses: r,
colorStyles: i
} = ht(h(() => {
const {
variant: o,
color: a
} = K(e);
return {
[["elevated", "flat"].includes(o) ? "background" : "text"]: a
};
}));
return {
colorClasses: r,
colorStyles: i,
variantClasses: n
};
}
const En = S({
baseColor: String,
divided: Boolean,
...hn(),
...Se(),
...bn(),
...wn(),
...Sn(),
...De(),
...xe(),
...kn()
}, "VBtnGroup"), Gt = Y()({
name: "VBtnGroup",
props: En(),
setup(e, t) {
let {
slots: n
} = t;
const {
themeClasses: r
} = ke(e), {
densityClasses: i
} = pn(e), {
borderClasses: o
} = yn(e), {
elevationClasses: a
} = Cn(e), {
roundedClasses: s
} = xn(e);
mn({
VBtn: {
height: "auto",
baseColor: j(e, "baseColor"),
color: j(e, "color"),
density: j(e, "density"),
flat: !0,
variant: j(e, "variant")
}
}), te(() => p(e.tag, {
class: ["v-btn-group", {
"v-btn-group--divided": e.divided
}, r.value, o.value, i.value, a.value, s.value, e.class],
style: e.style
}, n));
}
});
function Fe(e, t) {
let n;
function r() {
n = ut(), n.run(() => t.length ? t(() => {
n == null || n.stop(), r();
}) : t());
}
I(e, (i) => {
i && !n ? r() : i || (n == null || n.stop(), n = void 0);
}, {
immediate: !0
}), q(() => {
n == null || n.stop();
});
}
function yt(e, t, n) {
let r = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : (v) => v, i = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : (v) => v;
const o = $("useProxiedModel"), a = A(e[t] !== void 0 ? e[t] : n), s = Q(t), u = s !== t ? h(() => {
var v, d, g, m;
return e[t], !!(((v = o.vnode.props) != null && v.hasOwnProperty(t) || (d = o.vnode.props) != null && d.hasOwnProperty(s)) && ((g = o.vnode.props) != null && g.hasOwnProperty(`onUpdate:${t}`) || (m = o.vnode.props) != null && m.hasOwnProperty(`onUpdate:${s}`)));
}) : h(() => {
var v, d;
return e[t], !!((v = o.vnode.props) != null && v.hasOwnProperty(t) && ((d = o.vnode.props) != null && d.hasOwnProperty(`onUpdate:${t}`)));
});
Fe(() => !u.value, () => {
I(() => e[t], (v) => {
a.value = v;
});
});
const c = h({
get() {
const v = e[t];
return r(u.value ? v : a.value);
},
set(v) {
const d = i(v), g = rn(u.value ? e[t] : a.value);
g === d || r(g) === v || (a.value = d, o == null || o.emit(`update:${t}`, d));
}
});
return Object.defineProperty(c, "externalValue", {
get: () => u.value ? e[t] : a.value
}), c;
}
const Qr = S({
modelValue: {
type: null,
default: void 0
},
multiple: Boolean,
mandatory: [Boolean, String],
max: Number,
selectedClass: String,
disabled: Boolean
}, "group"), ei = S({
value: null,
disabled: Boolean,
selectedClass: String
}, "group-item");
function ti(e, t) {
let n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !0;
const r = $("useGroupItem");
if (!r)
throw new Error("[Vuetify] useGroupItem composable must be used inside a component setup function");
const i = vt();
fe(Symbol.for(`${t.description}:id`), i);
const o = J(t, null);
if (!o) {
if (!n) return o;
throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${t.description}`);
}
const a = j(e, "value"), s = h(() => !!(o.disabled.value || e.disabled));
o.register({
id: i,
value: a,
disabled: s
}, r), Ce(() => {
o.unregister(i);
});
const l = h(() => o.isSelected(i)), u = h(() => o.items.value[0].id === i), c = h(() => o.items.value[o.items.value.length - 1].id === i), v = h(() => l.value && [o.selectedClass.value, e.selectedClass]);
return I(l, (d) => {
r.emit("group:selected", {
value: d
});
}, {
flush: "sync"
}), {
id: i,
isSelected: l,
isFirst: u,
isLast: c,
toggle: () => o.select(i, !l.value),
select: (d) => o.select(i, d),
selectedClass: v,
value: a,
disabled: s,
group: o
};
}
function ni(e, t) {
let n = !1;
const r = le([]), i = yt(e, "modelValue", [], (d) => d == null ? [] : Pn(r, br(d)), (d) => {
const g = ii(r, d);
return e.multiple ? g : g[0];
}), o = $("useGroup");
function a(d, g) {
const m = d, f = Symbol.for(`${t.description}:id`), w = he(f, o == null ? void 0 : o.vnode).indexOf(g);
K(m.value) == null && (m.value = w, m.useIndexAsValue = !0), w > -1 ? r.splice(w, 0, m) : r.push(m);
}
function s(d) {
if (n) return;
l();
const g = r.findIndex((m) => m.id === d);
r.splice(g, 1);
}
function l() {
const d = r.find((g) => !g.disabled);
d && e.mandatory === "force" && !i.value.length && (i.value = [d.id]);
}
ct(() => {
l();
}), Ce(() => {
n = !0;
}), Kn(() => {
for (let d = 0; d < r.length; d++)
r[d].useIndexAsValue && (r[d].value = d);
});
function u(d, g) {
const m = r.find((f) => f.id === d);
if (!(g && (m != null && m.disabled)))
if (e.multiple) {
const f = i.value.slice(), b = f.findIndex((x) => x === d), w = ~b;
if (g = g ?? !w, w && e.mandatory && f.length <= 1 || !w && e.max != null && f.length + 1 > e.max) return;
b < 0 && g ? f.push(d) : b >= 0 && !g && f.splice(b, 1), i.value = f;
} else {
const f = i.value.includes(d);
if (e.mandatory && f) return;
i.value = g ?? !f ? [d] : [];
}
}
function c(d) {
if (e.multiple && se('This method is not supported when using "multiple" prop'), i.value.length) {
const g = i.value[0], m = r.findIndex((w) => w.id === g);
let f = (m + d) % r.length, b = r[f];
for (; b.disabled && f !== m; )
f = (f + d) % r.length, b = r[f];
if (b.disabled) return;
i.value = [r[f].id];
} else {
const g = r.find((m) => !m.disabled);
g && (i.value = [g.id]);
}
}
const v = {
register: a,
unregister: s,
selected: i,
select: u,
disabled: j(e, "disabled"),
prev: () => c(r.length - 1),
next: () => c(1),
isSelected: (d) => i.value.includes(d),
selectedClass: h(() => e.selectedClass),
items: h(() => r),
getItemIndex: (d) => ri(r, d)
};
return fe(t, v), v;
}
function ri(e, t) {
const n = Pn(e, [t]);
return n.length ? e.findIndex((r) => r.id === n[0]) : -1;
}
function Pn(e, t) {
const n = [];
return t.forEach((r) => {
const i = e.find((a) => ft(r, a.value)), o = e[r];
(i == null ? void 0 : i.value) != null ? n.push(i.id) : o != null && n.push(o.id);
}), n;
}
function ii(e, t) {
const n = [];
return t.forEach((r) => {
const i = e.findIndex((o) => o.id === r);
if (~i) {
const o = e[i];
n.push(o.value != null ? o.value : i);
}
}), n;
}
const Ln = Symbol.for("vuetify:v-btn-toggle"), oi = S({
...En(),
...Qr()
}, "VBtnToggle");
Y()({
name: "VBtnToggle",
props: oi(),
emits: {
"update:modelValue": (e) => !0
},
setup(e, t) {
let {
slots: n
} = t;
const {
isSelected: r,
next: i,
prev: o,
select: a,
selected: s
} = ni(e, Ln);
return te(() => {
const l = Gt.filterProps(e);
return p(Gt, z({
class: ["v-btn-toggle", e.class]
}, l, {
style: e.style
}), {
default: () => {
var u;
return [(u = n.default) == null ? void 0 : u.call(n, {
isSelected: r,
next: i,
prev: o,
select: a,
selected: s
})];
}
});
}), {
next: i,
prev: o,
select: a
};
}
});
const ai = S({
defaults: Object,
disabled: Boolean,
reset: [Number, String],
root: [Boolean, String],
scoped: Boolean
}, "VDefaultsProvider"), qe = Y(!1)({
name: "VDefaultsProvider",
props: ai(),
setup(e, t) {
let {
slots: n
} = t;
const {
defaults: r,
disabled: i,
reset: o,
root: a,
scoped: s
} = nn(e);
return mn(r, {
reset: o,
root: a,
scoped: s,
disabled: i
}), () => {
var l;
return (l = n.default) == null ? void 0 : l.call(n);
};
}
}), Ve = [String, Function, Object, Array], si = Symbol.for("vuetify:icons"), We = S({
icon: {
type: Ve
},
// Could not remove this and use makeTagProps, types complained because it is not required
tag: {
type: String,
required: !0
}
}, "icon"), qt = Y()({
name: "VComponentIcon",
props: We(),
setup(e, t) {
let {
slots: n
} = t;
return () => {
const r = e.icon;
return p(e.tag, null, {
default: () => {
var i;
return [e.icon ? p(r, null, null) : (i = n.default) == null ? void 0 : i.call(n)];
}
});
};
}
}), li = Me({
name: "VSvgIcon",
inheritAttrs: !1,
props: We(),
setup(e, t) {
let {
attrs: n
} = t;
return () => p(e.tag, z(n, {
style: null
}), {
default: () => [p("svg", {
class: "v-icon__svg",
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
role: "img",
"aria-hidden": "true"
}, [Array.isArray(e.icon) ? e.icon.map((r) => Array.isArray(r) ? p("path", {
d: r[0],
"fill-opacity": r[1]
}, null) : p("path", {
d: r
}, null)) : p("path", {
d: e.icon
}, null)])]
});
}
});
Me({
name: "VLigatureIcon",
props: We(),
setup(e) {
return () => p(e.tag, null, {
default: () => [e.icon]
});
}
});
Me({
name: "VClassIcon",
props: We(),
setup(e) {
return () => p(e.tag, {
class: e.icon
}, null);
}
});
const ui = (e) => {
const t = J(si);
if (!t) throw new Error("Missing Vuetify Icons provide!");
return {
iconData: h(() => {
var l;
const r = K(e);
if (!r) return {
component: qt
};
let i = r;
if (typeof i == "string" && (i = i.trim(), i.startsWith("$") && (i = (l = t.aliases) == null ? void 0 : l[i.slice(1)])), i || se(`Could not find aliased icon "${r}"`), Array.isArray(i))
return {
component: li,
icon: i
};
if (typeof i != "string")
return {
component: qt,
icon: i
};
const o = Object.keys(t.sets).find((u) => typeof i == "string" && i.startsWith(`${u}:`)), a = o ? i.slice(o.length + 1) : i;
return {
component: t.sets[o ?? t.defaultSet].component,
icon: a
};
})
};
}, ci = ["x-small", "small", "default", "large", "x-large"], bt = S({
size: {
type: [String, Number],
default: "default"
}
}, "size");
function pt(e) {
let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Z();
return dt(() => {
let n, r;
return Be(ci, e.size) ? n = `${t}--size-${e.size}` : e.size && (r = {
width: T(e.size),
height: T(e.size)
}), {
sizeClasses: n,
sizeStyles: r
};
});
}
const fi = S({
color: String,
disabled: Boolean,
start: Boolean,
end: Boolean,
icon: Ve,
...Se(),
...bt(),
...De({
tag: "i"
}),
...xe()
}, "VIcon"), _e = Y()({
name: "VIcon",
props: fi(),
setup(e, t) {
let {
attrs: n,
slots: r
} = t;
const i = A(), {
themeClasses: o
} = ke(e), {
iconData: a
} = ui(h(() => i.value || e.icon)), {
sizeClasses: s
} = pt(e), {
textColorClasses: l,
textColorStyles: u
} = nt(j(e, "color"));
return te(() => {
var d, g;
const c = (d = r.default) == null ? void 0 : d.call(r);
c && (i.value = (g = un(c).filter((m) => m.type === Jn && m.children && typeof m.children == "string")[0]) == null ? void 0 : g.children);
const v = !!(n.onClick || n.onClickOnce);
return p(a.value.component, {
tag: e.tag,
icon: a.value.icon,
class: ["v-icon", "notranslate", o.value, s.value, l.value, {
"v-icon--clickable": v,
"v-icon--disabled": e.disabled,
"v-icon--start": e.start,
"v-icon--end": e.end
}, e.class],
style: [s.value ? void 0 : {
fontSize: T(e.size),
height: T(e.size),
width: T(e.size)
}, u.value, e.style],
role: v ? "button" : void 0,
"aria-hidden": !v,
tabindex: v ? e.disabled ? -1 : 0 : void 0
}, {
default: () => [c]
});
}), {};
}
});
function di(e, t) {
const n = A(), r = U(!1);
if (dr) {
const i = new IntersectionObserver((o) => {
r.value = !!o.find((a) => a.isIntersecting);
}, t);
Ce(() => {
i.disconnect();
}), I(n, (o, a) => {
a && (i.unobserve(a), r.value = !1), o && i.observe(o);
}, {
flush: "post"
});
}
return {
intersectionRef: n,
isIntersecting: r
};
}
function vi(e) {
let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "content";
const n = Qe(), r = A();
if (G) {
const i = new ResizeObserver((o) => {
o.length && (t === "content" ? r.value = o[0].contentRect : r.value = o[0].target.getBoundingClientRect());
});
Ce(() => {
i.disconnect();
}), I(() => n.el, (o, a) => {
a && (i.unobserve(a), r.value = void 0), o && i.observe(o);
}, {
flush: "post"
});
}
return {
resizeRef: n,
contentRect: on(r)
};
}
const mi = S({
bgColor: String,
color: String,
indeterminate: [Boolean, String],
modelValue: {
type: [Number, String],
default: 0
},
rotate: {
type: [Number, String],
default: 0
},
width: {
type: [Number, String],
default: 4
},
...Se(),
...bt(),
...De({
tag: "div"
}),
...xe()
}, "VProgressCircular"), gi = Y()({
name: "VProgressCircular",
props: mi(),
setup(e, t) {
let {
slots: n
} = t;
const r = 20, i = 2 * Math.PI * r, o = A(), {
themeClasses: a
} = ke(e), {
sizeClasses: s,
sizeStyles: l
} = pt(e), {
textColorClasses: u,
textColorStyles: c
} = nt(j(e, "color")), {
textColorClasses: v,
textColorStyles: d
} = nt(j(e, "bgColor")), {
intersectionRef: g,
isIntersecting: m
} = di(), {
resizeRef: f,
contentRect: b
} = vi(), w = h(() => Math.max(0, Math.min(100, parseFloat(e.modelValue)))), x = h(() => Number(e.width)), P = h(() => l.value ? Number(e.size) : b.value ? b.value.width : Math.max(x.value, 32)), B = h(() => r / (1 - x.value / P.value) * 2), R = h(() => x.value / P.value * B.value), V = h(() => T((100 - w.value) / 100 * i));
return ce(() => {
g.value = o.value, f.value = o.value;
}), te(() => p(e.tag, {
ref: o,
class: ["v-progress-circular", {
"v-progress-circular--indeterminate": !!e.indeterminate,
"v-progress-circular--visible": m.value,
"v-progress-circular--disable-shrink": e.indeterminate === "disable-shrink"
}, a.value, s.value, u.value, e.class],
style: [l.value, c.value, e.style],
role: "progressbar",
"aria-valuemin": "0",
"aria-valuemax": "100",
"aria-valuenow": e.indeterminate ? void 0 : w.value
}, {
default: () => [p("svg", {
style: {
transform: `rotate(calc(-90deg + ${Number(e.rotate)}deg))`
},
xmlns: "http://www.w3.org/2000/svg",
viewBox: `0 0 ${B.value} ${B.value}`
}, [p("circle", {
class: ["v-progress-circular__underlay", v.value],
style: d.value,
fill: "transparent",
cx: "50%",
cy: "50%",
r,
"stroke-width": R.value,
"stroke-dasharray": i,
"stroke-dashoffset": 0
}, null), p("circle", {
class: "v-progress-circular__overlay",
fill: "transparent",
cx: "50%",
cy: "50%",
r,
"stroke-width": R.value,
"stroke-dasharray": i,
"stroke-dashoffset": V.value
}, null)]), n.default && p("div", {
class: "v-progress-circular__content"
}, [n.default({
value: w.value
})])]
})), {};
}
}), On = S({
height: [Number, String],
maxHeight: [Number, String],
maxWidth: [Number, String],
minHeight: [Number, String],
minWidth: [Number, String],
width: [Number, String]
}, "dimension");
function Tn(e) {
return {
dimensionStyles: h(() => {
const n = {}, r = T(e.height), i = T(e.maxHeight), o = T(e.maxWidth), a = T(e.minHeight), s = T(e.minWidth), l = T(e.width);
return r != null && (n.height = r), i != null && (n.maxHeight = i), o != null && (n.maxWidth = o), a != null && (n.minHeight = a), s != null && (n.minWidth = s), l != null && (n.width = l), n;
})
};
}
const hi = Symbol.for("vuetify:locale");
function _n() {
const e = J(hi);
if (!e) throw new Error("[Vuetify] Could not find injected rtl instance");
return {
isRtl: e.isRtl,
rtlClasses: e.rtlClasses
};
}
const Ut = {
center: "center",
top: "bottom",
bottom: "top",
left: "right",
right: "left"
}, yi = S({
location: String
}, "location");
function bi(e) {
let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1, n = arguments.length > 2 ? arguments[2] : void 0;
const {
isRtl: r
} = _n();
return {
locationStyles: h(() => {
if (!e.location) return {};
const {
side: o,
align: a
} = et(e.location.split(" ").length > 1 ? e.location : `${e.location} center`, r.value);
function s(u) {
return n ? n(u) : 0;
}
const l = {};
return o !== "center" && (t ? l[Ut[o]] = `calc(100% - ${s(o)}px)` : l[o] = 0), a !== "center" ? t ? l[Ut[a]] = `calc(100% - ${s(a)}px)` : l[a] = 0 : (o === "center" ? l.top = l.left = "50%" : l[{
top: "left",
bottom: "left",
left: "top",
right: "top"
}[o]] = "50%", l.transform = {
top: "translateX(-50%)",
bottom: "translateX(-50%)",
left: "translateY(-50%)",
right: "translateY(-50%)",
center: "translate(-50%, -50%)"
}[o]), l;
})
};
}
const pi = S({
loading: [Boolean, String]
}, "loader");
function wi(e) {
let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Z();
return {
loaderClasses: h(() => ({
[`${t}--loading`]: e.loading
}))
};
}
const Ci = ["static", "relative", "fixed", "absolute", "sticky"], Si = S({
position: {
type: String,
validator: (
/* istanbul ignore next */
(e) => Ci.includes(e)
)
}
}, "position");
function xi(e) {
let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Z();
return {
positionClasses: h(() => e.position ? `${t}--${e.position}` : void 0)
};
}
function ki() {
const e = $("useRoute");
return h(() => {
var t;
return (t = e == null ? void 0 : e.proxy) == null ? void 0 : t.$route;
});
}
function Ei() {
var e, t;
return (t = (e = $("useRouter")) == null ? void 0 : e.proxy) == null ? void 0 : t.$router;
}
function Pi(e, t) {
var v, d;
const n = Zn("RouterLink"), r = h(() => !!(e.href || e.to)), i = h(() => (r == null ? void 0 : r.value) || Tt(t, "click") || Tt(e, "click"));
if (typeof n == "string" || !("useLink" in n)) {
const g = j(e, "href");
return {
isLink: r,
isClickable: i,
href: g,
linkProps: le({
href: g
})
};
}
const o = h(() => ({
...e,
to: j(() => e.to || "")
})), a = n.useLink(o.value), s = h(() => e.to ? a : void 0), l = ki(), u = h(() => {
var g, m, f;
return s.value ? e.exact ? l.value ? ((f = s.value.isExactActive) == null ? void 0 : f.value) && ft(s.value.route.value.query, l.value.query) : ((m = s.value.isExactActive) == null ? void 0 : m.value) ?? !1 : ((g = s.value.isActive) == null ? void 0 : g.value) ?? !1 : !1;
}), c = h(() => {
var g;
return e.to ? (g = s.value) == null ? void 0 : g.route.value.href : e.href;
});
return {
isLink: r,
isClickable: i,
isActive: u,
route: (v = s.value) == null ? void 0 : v.route,
navigate: (d = s.value) == null ? void 0 : d.navigate,
href: c,
linkProps: le({
href: c,
"aria-current": h(() => u.value ? "page" : void 0)
})
};
}
const Li = S({
href: String,
replace: Boolean,
to: [String, Object],
exact: Boolean
}, "router");
let Ue = !1;
function Oi(e, t) {
let n = !1, r, i;
G && (de(() => {
window.addEventListener("popstate", o), r = e == null ? void 0 : e.beforeEach((a, s, l) => {
Ue ? n ? t(l) : l() : setTimeout(() => n ? t(l) : l()), Ue = !0;
}), i = e == null ? void 0 : e.afterEach(() => {
Ue = !1;
});
}), q(() => {
window.removeEventListener("popstate", o), r == null || r(), i == null || i();
}));
function o(a) {
var s;
(s = a.state) != null && s.replaced || (n = !0, setTimeout(() => n = !1));
}
}
function Ti(e, t) {
I(() => {
var n;
return (n = e.isActive) == null ? void 0 : n.value;
}, (n) => {
e.isLink.value && n && t && de(() => {
t(!0);
});
}, {
immediate: !0
});
}
const rt = Symbol("rippleStop"), _i = 80;
function Yt(e, t) {
e.style.transform = t, e.style.webkitTransform = t;
}
function it(e) {
return e.constructor.name === "TouchEvent";
}
function An(e) {
return e.constructor.name === "KeyboardEvent";
}
const Ai = function(e, t) {
var v;
let n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, r = 0, i = 0;
if (!An(e)) {
const d = t.getBoundingClientRect(), g = it(e) ? e.touches[e.touches.length - 1] : e;
r = g.clientX - d.left, i = g.clientY - d.top;
}
let o = 0, a = 0.3;
(v = t._ripple) != null && v.circle ? (a = 0.15, o = t.clientWidth / 2, o = n.center ? o : o + Math.sqrt((r - o) ** 2 + (i - o) ** 2) / 4) : o = Math.sqrt(t.clientWidth ** 2 + t.clientHeight ** 2) / 2;
const s = `${(t.clientWidth - o * 2) / 2}px`, l = `${(t.clientHeight - o * 2) / 2}px`, u = n.center ? s : `${r - o}px`, c = n.center ? l : `${i - o}px`;
return {
radius: o,
scale: a,
x: u,
y: c,
centerX: s,
centerY: l
};
}, Ne = {
/* eslint-disable max-statements */
show(e, t) {
var g;
let n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
if (!((g = t == null ? void 0 : t._ripple) != null && g.enabled))
return;
const r = document.createElement("span"), i = document.createElement("span");
r.appendChild(i), r.className = "v-ripple__container", n.class && (r.className += ` ${n.class}`);
const {
radius: o,
scale: a,
x: s,
y: l,
centerX: u,
centerY: c
} = Ai(e, t, n), v = `${o * 2}px`;
i.className = "v-ripple__animation", i.style.width = v, i.style.height = v, t.appendChild(r);
const d = window.getComputedStyle(t);
d && d.position === "static" && (t.style.position = "relative", t.dataset.previousPosition = "static"), i.classList.add("v-ripple__animation--enter"), i.classList.add("v-ripple__animation--visible"), Yt(i, `translate(${s}, ${l}) scale3d(${a},${a},${a})`), i.dataset.activated = String(performance.now()), setTimeout(() => {
i.classList.remove("v-ripple__animation--enter"), i.classList.add("v-ripple__animation--in"), Yt(i, `translate(${u}, ${c}) scale3d(1,1,1)`);
}, 0);
},
hide(e) {
var o;
if (!((o = e == null ? void 0 : e._ripple) != null && o.enabled)) return;
const t = e.getElementsByClassName("v-ripple__animation");
if (t.length === 0) return;
const n = t[t.length - 1];
if (n.dataset.isHiding) return;
n.dataset.isHiding = "true";
const r = performance.now() - Number(n.dataset.activated), i = Math.max(250 - r, 0);
setTimeout(() => {
n.classList.remove("v-ripple__animation--in"), n.classList.add("v-ripple__animation--out"), setTimeout(() => {
var s;
e.getElementsByClassName("v-ripple__animation").length === 1 && e.dataset.previousPosition && (e.style.position = e.dataset.previousPosition, delete e.dataset.previousPosition), ((s = n.parentNode) == null ? void 0 : s.parentNode) === e && e.removeChild(n.parentNode);
}, 300);
}, i);
}
};
function Bn(e) {
return typeof e > "u" || !!e;
}
function pe(e) {
const t = {}, n = e.currentTarget;
if (!(!(n != null && n._ripple) || n._ripple.touched || e[rt])) {
if (e[rt] = !0, it(e))
n._ripple.touched = !0, n._ripple.isTouch = !0;
else if (n._ripple.isTouch) return;
if (t.center = n._ripple.centered || An(e), n._ripple.class && (t.class = n._ripple.class), it(e)) {
if (n._ripple.showTimerCommit) return;
n._ripple.showTimerCommit = () => {
Ne.show(e, n, t);
}, n._ripple.showTimer = window.setTimeout(() => {
var r;
(r = n == null ? void 0 : n._ripple) != null && r.showTimerCommit && (n._ripple.showTimerCommit(), n._ripple.showTimerCommit = null);
}, _i);
} else
Ne.show(e, n, t);
}
}
function Xt(e) {
e[rt] = !0;
}
function W(e) {
const t = e.currentTarget;
if (t != null && t._ripple) {
if (window.clearTimeout(t._ripple.showTimer), e.type === "touchend" && t._ripple.showTimerCommit) {
t._ripple.showTimerCommit(), t._ripple.showTimerCommit = null, t._ripple.showTimer = window.setTimeout(() => {
W(e);
});
return;
}
window.setTimeout(() => {
t._ripple && (t._ripple.touched = !1);
}), Ne.hide(t);
}
}
function In(e) {
const t = e.currentTarget;
t != null && t._ripple && (t._ripple.showTimerCommit && (t._ripple.showTimerCommit = null), window.clearTimeout(t._ripple.showTimer));
}
let we = !