import { shallowRef as En, watchEffect as Nv, readonly as Bv, unref as z, getCurrentScope as BM, onScopeDispose as UM, getCurrentInstance as dn, onMounted as Jt, nextTick as bt, watch as Qe, ref as Ee, defineComponent as Pe, openBlock as ve, createElementBlock as Ce, createElementVNode as Ne, warn as zM, isVNode as Uh, computed as ue, inject as pt, isRef as Zc, onBeforeUnmount as ei, onBeforeMount as kM, provide as sn, mergeProps as Ei, renderSlot as He, toRef as hi, onUnmounted as Uv, useAttrs as VM, useSlots as Xc, createCommentVNode as ke, Fragment as Ft, normalizeClass as Te, createBlock as Ve, withCtx as de, resolveDynamicComponent as Fn, withModifiers as Ut, createVNode as oe, toDisplayString as gt, normalizeStyle as Rt, Transition as el, withDirectives as Lt, vShow as mn, reactive as jn, onActivated as GM, onUpdated as zd, cloneVNode as HM, Text as zv, Comment as WM, Teleport as jM, onDeactivated as $M, vModelRadio as kv, createTextVNode as rt, toRefs as Br, toHandlers as ZM, withKeys as ui, createSlots as XM, toRaw as Vv, resolveComponent as Vn, resolveDirective as YM, toHandlerKey as JM, renderList as Gn, vModelText as KM, h as ho, createApp as qM, markRaw as An } from "vue";
import { TreeControls as QM, CreateTooltipContent as ew, Tooltip as tw, DrawToolbar as nw } from "@abi-software/map-utilities";
import { defineStore as iw, mapState as Gv, mapStores as rw } from "pinia";
import { MapSvgIcon as sw, MapSvgSpriteColor as ow } from "@abi-software/svg-sprite";
import { AnnotationService as aw } from "@abi-software/sparc-annotation";
const Ji = (n, e, { checkForDefaultPrevented: t = !0 } = {}) => (r) => {
const s = n == null ? void 0 : n(r);
if (t === !1 || !s)
return e == null ? void 0 : e(r);
};
var lw = Object.defineProperty, cw = Object.defineProperties, uw = Object.getOwnPropertyDescriptors, bp = Object.getOwnPropertySymbols, hw = Object.prototype.hasOwnProperty, dw = Object.prototype.propertyIsEnumerable, xp = (n, e, t) => e in n ? lw(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t, fw = (n, e) => {
for (var t in e || (e = {}))
hw.call(e, t) && xp(n, t, e[t]);
if (bp)
for (var t of bp(e))
dw.call(e, t) && xp(n, t, e[t]);
return n;
}, pw = (n, e) => cw(n, uw(e));
function Mp(n, e) {
var t;
const i = En();
return Nv(() => {
i.value = n();
}, pw(fw({}, e), {
flush: (t = void 0) != null ? t : "sync"
})), Bv(i);
}
var wp;
const en = typeof window < "u", mw = (n) => typeof n == "string", Hv = () => {
}, zh = en && ((wp = window == null ? void 0 : window.navigator) == null ? void 0 : wp.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent);
function Wv(n) {
return typeof n == "function" ? n() : z(n);
}
function gw(n) {
return n;
}
function Yc(n) {
return BM() ? (UM(n), !0) : !1;
}
function vw(n, e = !0) {
dn() ? Jt(n) : e ? n() : bt(n);
}
function er(n) {
var e;
const t = Wv(n);
return (e = t == null ? void 0 : t.$el) != null ? e : t;
}
const tl = en ? window : void 0, yw = en ? window.document : void 0;
function un(...n) {
let e, t, i, r;
if (mw(n[0]) || Array.isArray(n[0]) ? ([t, i, r] = n, e = tl) : [e, t, i, r] = n, !e)
return Hv;
Array.isArray(t) || (t = [t]), Array.isArray(i) || (i = [i]);
const s = [], o = () => {
s.forEach((d) => d()), s.length = 0;
}, a = (d, h, f, g) => (d.addEventListener(h, f, g), () => d.removeEventListener(h, f, g)), c = Qe(() => [er(e), Wv(r)], ([d, h]) => {
o(), d && s.push(...t.flatMap((f) => i.map((g) => a(d, f, g, h))));
}, { immediate: !0, flush: "post" }), l = () => {
c(), o();
};
return Yc(l), l;
}
let Ap = !1;
function bw(n, e, t = {}) {
const { window: i = tl, ignore: r = [], capture: s = !0, detectIframe: o = !1 } = t;
if (!i)
return;
zh && !Ap && (Ap = !0, Array.from(i.document.body.children).forEach((f) => f.addEventListener("click", Hv)));
let a = !0;
const c = (f) => r.some((g) => {
if (typeof g == "string")
return Array.from(i.document.querySelectorAll(g)).some((p) => p === f.target || f.composedPath().includes(p));
{
const p = er(g);
return p && (f.target === p || f.composedPath().includes(p));
}
}), d = [
un(i, "click", (f) => {
const g = er(n);
if (!(!g || g === f.target || f.composedPath().includes(g))) {
if (f.detail === 0 && (a = !c(f)), !a) {
a = !0;
return;
}
e(f);
}
}, { passive: !0, capture: s }),
un(i, "pointerdown", (f) => {
const g = er(n);
g && (a = !f.composedPath().includes(g) && !c(f));
}, { passive: !0 }),
o && un(i, "blur", (f) => {
var g;
const p = er(n);
((g = i.document.activeElement) == null ? void 0 : g.tagName) === "IFRAME" && !(p != null && p.contains(i.document.activeElement)) && e(f);
})
].filter(Boolean);
return () => d.forEach((f) => f());
}
function jv(n, e = !1) {
const t = Ee(), i = () => t.value = !!n();
return i(), vw(i, e), t;
}
const Sp = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}, _p = "__vueuse_ssr_handlers__";
Sp[_p] = Sp[_p] || {};
function xw({ document: n = yw } = {}) {
if (!n)
return Ee("visible");
const e = Ee(n.visibilityState);
return un(n, "visibilitychange", () => {
e.value = n.visibilityState;
}), e;
}
var Tp = Object.getOwnPropertySymbols, Mw = Object.prototype.hasOwnProperty, ww = Object.prototype.propertyIsEnumerable, Aw = (n, e) => {
var t = {};
for (var i in n)
Mw.call(n, i) && e.indexOf(i) < 0 && (t[i] = n[i]);
if (n != null && Tp)
for (var i of Tp(n))
e.indexOf(i) < 0 && ww.call(n, i) && (t[i] = n[i]);
return t;
};
function Jn(n, e, t = {}) {
const i = t, { window: r = tl } = i, s = Aw(i, ["window"]);
let o;
const a = jv(() => r && "ResizeObserver" in r), c = () => {
o && (o.disconnect(), o = void 0);
}, l = Qe(() => er(n), (h) => {
c(), a.value && r && h && (o = new ResizeObserver(e), o.observe(h, s));
}, { immediate: !0, flush: "post" }), d = () => {
c(), l();
};
return Yc(d), {
isSupported: a,
stop: d
};
}
var Ep = Object.getOwnPropertySymbols, Sw = Object.prototype.hasOwnProperty, _w = Object.prototype.propertyIsEnumerable, Tw = (n, e) => {
var t = {};
for (var i in n)
Sw.call(n, i) && e.indexOf(i) < 0 && (t[i] = n[i]);
if (n != null && Ep)
for (var i of Ep(n))
e.indexOf(i) < 0 && _w.call(n, i) && (t[i] = n[i]);
return t;
};
function Ew(n, e, t = {}) {
const i = t, { window: r = tl } = i, s = Tw(i, ["window"]);
let o;
const a = jv(() => r && "MutationObserver" in r), c = () => {
o && (o.disconnect(), o = void 0);
}, l = Qe(() => er(n), (h) => {
c(), a.value && r && h && (o = new MutationObserver(e), o.observe(h, s));
}, { immediate: !0 }), d = () => {
c(), l();
};
return Yc(d), {
isSupported: a,
stop: d
};
}
var Cp;
(function(n) {
n.UP = "UP", n.RIGHT = "RIGHT", n.DOWN = "DOWN", n.LEFT = "LEFT", n.NONE = "NONE";
})(Cp || (Cp = {}));
var Cw = Object.defineProperty, Lp = Object.getOwnPropertySymbols, Lw = Object.prototype.hasOwnProperty, Rw = Object.prototype.propertyIsEnumerable, Rp = (n, e, t) => e in n ? Cw(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t, Fw = (n, e) => {
for (var t in e || (e = {}))
Lw.call(e, t) && Rp(n, t, e[t]);
if (Lp)
for (var t of Lp(e))
Rw.call(e, t) && Rp(n, t, e[t]);
return n;
};
const Pw = {
easeInSine: [0.12, 0, 0.39, 0],
easeOutSine: [0.61, 1, 0.88, 1],
easeInOutSine: [0.37, 0, 0.63, 1],
easeInQuad: [0.11, 0, 0.5, 0],
easeOutQuad: [0.5, 1, 0.89, 1],
easeInOutQuad: [0.45, 0, 0.55, 1],
easeInCubic: [0.32, 0, 0.67, 0],
easeOutCubic: [0.33, 1, 0.68, 1],
easeInOutCubic: [0.65, 0, 0.35, 1],
easeInQuart: [0.5, 0, 0.75, 0],
easeOutQuart: [0.25, 1, 0.5, 1],
easeInOutQuart: [0.76, 0, 0.24, 1],
easeInQuint: [0.64, 0, 0.78, 0],
easeOutQuint: [0.22, 1, 0.36, 1],
easeInOutQuint: [0.83, 0, 0.17, 1],
easeInExpo: [0.7, 0, 0.84, 0],
easeOutExpo: [0.16, 1, 0.3, 1],
easeInOutExpo: [0.87, 0, 0.13, 1],
easeInCirc: [0.55, 0, 1, 0.45],
easeOutCirc: [0, 0.55, 0.45, 1],
easeInOutCirc: [0.85, 0, 0.15, 1],
easeInBack: [0.36, 0, 0.66, -0.56],
easeOutBack: [0.34, 1.56, 0.64, 1],
easeInOutBack: [0.68, -0.6, 0.32, 1.6]
};
Fw({
linear: gw
}, Pw);
function Iw({ window: n = tl } = {}) {
if (!n)
return Ee(!1);
const e = Ee(n.document.hasFocus());
return un(n, "blur", () => {
e.value = !1;
}), un(n, "focus", () => {
e.value = !0;
}), e;
}
const Ow = () => en && /firefox/i.test(window.navigator.userAgent);
/**
* @vue/shared v3.5.13
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/
process.env.NODE_ENV !== "production" && Object.freeze({});
process.env.NODE_ENV !== "production" && Object.freeze([]);
const Oa = () => {
}, Dw = Object.prototype.hasOwnProperty, Fp = (n, e) => Dw.call(n, e), Pn = Array.isArray, Sn = (n) => typeof n == "function", vn = (n) => typeof n == "string", Tn = (n) => n !== null && typeof n == "object", Nw = Object.prototype.toString, Bw = (n) => Nw.call(n), Pu = (n) => Bw(n).slice(8, -1), kd = (n) => {
const e = /* @__PURE__ */ Object.create(null);
return (t) => e[t] || (e[t] = n(t));
}, Uw = /-(\w)/g, zw = kd(
(n) => n.replace(Uw, (e, t) => t ? t.toUpperCase() : "")
), kw = /\B([A-Z])/g, Vw = kd(
(n) => n.replace(kw, "-$1").toLowerCase()
), Gw = kd((n) => n.charAt(0).toUpperCase() + n.slice(1));
var $v = typeof global == "object" && global && global.Object === Object && global, Hw = typeof self == "object" && self && self.Object === Object && self, Bi = $v || Hw || Function("return this")(), Pi = Bi.Symbol, Zv = Object.prototype, Ww = Zv.hasOwnProperty, jw = Zv.toString, la = Pi ? Pi.toStringTag : void 0;
function $w(n) {
var e = Ww.call(n, la), t = n[la];
try {
n[la] = void 0;
var i = !0;
} catch {
}
var r = jw.call(n);
return i && (e ? n[la] = t : delete n[la]), r;
}
var Zw = Object.prototype, Xw = Zw.toString;
function Yw(n) {
return Xw.call(n);
}
var Jw = "[object Null]", Kw = "[object Undefined]", Pp = Pi ? Pi.toStringTag : void 0;
function Zo(n) {
return n == null ? n === void 0 ? Kw : Jw : Pp && Pp in Object(n) ? $w(n) : Yw(n);
}
function Mo(n) {
return n != null && typeof n == "object";
}
var qw = "[object Symbol]";
function Jc(n) {
return typeof n == "symbol" || Mo(n) && Zo(n) == qw;
}
function Qw(n, e) {
for (var t = -1, i = n == null ? 0 : n.length, r = Array(i); ++t < i; )
r[t] = e(n[t], t, n);
return r;
}
var pi = Array.isArray, e1 = 1 / 0, Ip = Pi ? Pi.prototype : void 0, Op = Ip ? Ip.toString : void 0;
function Xv(n) {
if (typeof n == "string")
return n;
if (pi(n))
return Qw(n, Xv) + "";
if (Jc(n))
return Op ? Op.call(n) : "";
var e = n + "";
return e == "0" && 1 / n == -e1 ? "-0" : e;
}
var t1 = /\s/;
function n1(n) {
for (var e = n.length; e-- && t1.test(n.charAt(e)); )
;
return e;
}
var i1 = /^\s+/;
function r1(n) {
return n && n.slice(0, n1(n) + 1).replace(i1, "");
}
function Ur(n) {
var e = typeof n;
return n != null && (e == "object" || e == "function");
}
var Dp = NaN, s1 = /^[-+]0x[0-9a-f]+$/i, o1 = /^0b[01]+$/i, a1 = /^0o[0-7]+$/i, l1 = parseInt;
function Np(n) {
if (typeof n == "number")
return n;
if (Jc(n))
return Dp;
if (Ur(n)) {
var e = typeof n.valueOf == "function" ? n.valueOf() : n;
n = Ur(e) ? e + "" : e;
}
if (typeof n != "string")
return n === 0 ? n : +n;
n = r1(n);
var t = o1.test(n);
return t || a1.test(n) ? l1(n.slice(2), t ? 2 : 8) : s1.test(n) ? Dp : +n;
}
function Yv(n) {
return n;
}
var c1 = "[object AsyncFunction]", u1 = "[object Function]", h1 = "[object GeneratorFunction]", d1 = "[object Proxy]";
function Jv(n) {
if (!Ur(n))
return !1;
var e = Zo(n);
return e == u1 || e == h1 || e == c1 || e == d1;
}
var Iu = Bi["__core-js_shared__"], Bp = function() {
var n = /[^.]+$/.exec(Iu && Iu.keys && Iu.keys.IE_PROTO || "");
return n ? "Symbol(src)_1." + n : "";
}();
function f1(n) {
return !!Bp && Bp in n;
}
var p1 = Function.prototype, m1 = p1.toString;
function Os(n) {
if (n != null) {
try {
return m1.call(n);
} catch {
}
try {
return n + "";
} catch {
}
}
return "";
}
var g1 = /[\\^$.*+?()[\]{}|]/g, v1 = /^\[object .+?Constructor\]$/, y1 = Function.prototype, b1 = Object.prototype, x1 = y1.toString, M1 = b1.hasOwnProperty, w1 = RegExp(
"^" + x1.call(M1).replace(g1, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
);
function A1(n) {
if (!Ur(n) || f1(n))
return !1;
var e = Jv(n) ? w1 : v1;
return e.test(Os(n));
}
function S1(n, e) {
return n == null ? void 0 : n[e];
}
function Ds(n, e) {
var t = S1(n, e);
return A1(t) ? t : void 0;
}
var kh = Ds(Bi, "WeakMap");
function _1(n, e, t) {
switch (t.length) {
case 0:
return n.call(e);
case 1:
return n.call(e, t[0]);
case 2:
return n.call(e, t[0], t[1]);
case 3:
return n.call(e, t[0], t[1], t[2]);
}
return n.apply(e, t);
}
var T1 = 800, E1 = 16, C1 = Date.now;
function L1(n) {
var e = 0, t = 0;
return function() {
var i = C1(), r = E1 - (i - t);
if (t = i, r > 0) {
if (++e >= T1)
return arguments[0];
} else
e = 0;
return n.apply(void 0, arguments);
};
}
function R1(n) {
return function() {
return n;
};
}
var Fc = function() {
try {
var n = Ds(Object, "defineProperty");
return n({}, "", {}), n;
} catch {
}
}(), F1 = Fc ? function(n, e) {
return Fc(n, "toString", {
configurable: !0,
enumerable: !1,
value: R1(e),
writable: !0
});
} : Yv, P1 = L1(F1);
function I1(n, e, t, i) {
n.length;
for (var r = t + 1; r--; )
if (e(n[r], r, n))
return r;
return -1;
}
var O1 = 9007199254740991, D1 = /^(?:0|[1-9]\d*)$/;
function Vd(n, e) {
var t = typeof n;
return e = e ?? O1, !!e && (t == "number" || t != "symbol" && D1.test(n)) && n > -1 && n % 1 == 0 && n < e;
}
function N1(n, e, t) {
e == "__proto__" && Fc ? Fc(n, e, {
configurable: !0,
enumerable: !0,
value: t,
writable: !0
}) : n[e] = t;
}
function Gd(n, e) {
return n === e || n !== n && e !== e;
}
var B1 = Object.prototype, U1 = B1.hasOwnProperty;
function z1(n, e, t) {
var i = n[e];
(!(U1.call(n, e) && Gd(i, t)) || t === void 0 && !(e in n)) && N1(n, e, t);
}
var Up = Math.max;
function k1(n, e, t) {
return e = Up(e === void 0 ? n.length - 1 : e, 0), function() {
for (var i = arguments, r = -1, s = Up(i.length - e, 0), o = Array(s); ++r < s; )
o[r] = i[e + r];
r = -1;
for (var a = Array(e + 1); ++r < e; )
a[r] = i[r];
return a[e] = t(o), _1(n, this, a);
};
}
var V1 = 9007199254740991;
function Hd(n) {
return typeof n == "number" && n > -1 && n % 1 == 0 && n <= V1;
}
function G1(n) {
return n != null && Hd(n.length) && !Jv(n);
}
var H1 = Object.prototype;
function W1(n) {
var e = n && n.constructor, t = typeof e == "function" && e.prototype || H1;
return n === t;
}
function j1(n, e) {
for (var t = -1, i = Array(n); ++t < n; )
i[t] = e(t);
return i;
}
var $1 = "[object Arguments]";
function zp(n) {
return Mo(n) && Zo(n) == $1;
}
var Kv = Object.prototype, Z1 = Kv.hasOwnProperty, X1 = Kv.propertyIsEnumerable, Wd = zp(/* @__PURE__ */ function() {
return arguments;
}()) ? zp : function(n) {
return Mo(n) && Z1.call(n, "callee") && !X1.call(n, "callee");
};
function Y1() {
return !1;
}
var qv = typeof exports == "object" && exports && !exports.nodeType && exports, kp = qv && typeof module == "object" && module && !module.nodeType && module, J1 = kp && kp.exports === qv, Vp = J1 ? Bi.Buffer : void 0, K1 = Vp ? Vp.isBuffer : void 0, Vh = K1 || Y1, q1 = "[object Arguments]", Q1 = "[object Array]", eA = "[object Boolean]", tA = "[object Date]", nA = "[object Error]", iA = "[object Function]", rA = "[object Map]", sA = "[object Number]", oA = "[object Object]", aA = "[object RegExp]", lA = "[object Set]", cA = "[object String]", uA = "[object WeakMap]", hA = "[object ArrayBuffer]", dA = "[object DataView]", fA = "[object Float32Array]", pA = "[object Float64Array]", mA = "[object Int8Array]", gA = "[object Int16Array]", vA = "[object Int32Array]", yA = "[object Uint8Array]", bA = "[object Uint8ClampedArray]", xA = "[object Uint16Array]", MA = "[object Uint32Array]", Et = {};
Et[fA] = Et[pA] = Et[mA] = Et[gA] = Et[vA] = Et[yA] = Et[bA] = Et[xA] = Et[MA] = !0;
Et[q1] = Et[Q1] = Et[hA] = Et[eA] = Et[dA] = Et[tA] = Et[nA] = Et[iA] = Et[rA] = Et[sA] = Et[oA] = Et[aA] = Et[lA] = Et[cA] = Et[uA] = !1;
function wA(n) {
return Mo(n) && Hd(n.length) && !!Et[Zo(n)];
}
function AA(n) {
return function(e) {
return n(e);
};
}
var Qv = typeof exports == "object" && exports && !exports.nodeType && exports, Ea = Qv && typeof module == "object" && module && !module.nodeType && module, SA = Ea && Ea.exports === Qv, Ou = SA && $v.process, Gp = function() {
try {
var n = Ea && Ea.require && Ea.require("util").types;
return n || Ou && Ou.binding && Ou.binding("util");
} catch {
}
}(), Hp = Gp && Gp.isTypedArray, e0 = Hp ? AA(Hp) : wA, _A = Object.prototype, TA = _A.hasOwnProperty;
function EA(n, e) {
var t = pi(n), i = !t && Wd(n), r = !t && !i && Vh(n), s = !t && !i && !r && e0(n), o = t || i || r || s, a = o ? j1(n.length, String) : [], c = a.length;
for (var l in n)
TA.call(n, l) && !(o && // Safari 9 has enumerable `arguments.length` in strict mode.
(l == "length" || // Node.js 0.10 has enumerable non-index properties on buffers.
r && (l == "offset" || l == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays.
s && (l == "buffer" || l == "byteLength" || l == "byteOffset") || // Skip index properties.
Vd(l, c))) && a.push(l);
return a;
}
function CA(n, e) {
return function(t) {
return n(e(t));
};
}
var LA = CA(Object.keys, Object), RA = Object.prototype, FA = RA.hasOwnProperty;
function PA(n) {
if (!W1(n))
return LA(n);
var e = [];
for (var t in Object(n))
FA.call(n, t) && t != "constructor" && e.push(t);
return e;
}
function t0(n) {
return G1(n) ? EA(n) : PA(n);
}
var IA = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, OA = /^\w*$/;
function jd(n, e) {
if (pi(n))
return !1;
var t = typeof n;
return t == "number" || t == "symbol" || t == "boolean" || n == null || Jc(n) ? !0 : OA.test(n) || !IA.test(n) || e != null && n in Object(e);
}
var Da = Ds(Object, "create");
function DA() {
this.__data__ = Da ? Da(null) : {}, this.size = 0;
}
function NA(n) {
var e = this.has(n) && delete this.__data__[n];
return this.size -= e ? 1 : 0, e;
}
var BA = "__lodash_hash_undefined__", UA = Object.prototype, zA = UA.hasOwnProperty;
function kA(n) {
var e = this.__data__;
if (Da) {
var t = e[n];
return t === BA ? void 0 : t;
}
return zA.call(e, n) ? e[n] : void 0;
}
var VA = Object.prototype, GA = VA.hasOwnProperty;
function HA(n) {
var e = this.__data__;
return Da ? e[n] !== void 0 : GA.call(e, n);
}
var WA = "__lodash_hash_undefined__";
function jA(n, e) {
var t = this.__data__;
return this.size += this.has(n) ? 0 : 1, t[n] = Da && e === void 0 ? WA : e, this;
}
function _s(n) {
var e = -1, t = n == null ? 0 : n.length;
for (this.clear(); ++e < t; ) {
var i = n[e];
this.set(i[0], i[1]);
}
}
_s.prototype.clear = DA;
_s.prototype.delete = NA;
_s.prototype.get = kA;
_s.prototype.has = HA;
_s.prototype.set = jA;
function $A() {
this.__data__ = [], this.size = 0;
}
function Kc(n, e) {
for (var t = n.length; t--; )
if (Gd(n[t][0], e))
return t;
return -1;
}
var ZA = Array.prototype, XA = ZA.splice;
function YA(n) {
var e = this.__data__, t = Kc(e, n);
if (t < 0)
return !1;
var i = e.length - 1;
return t == i ? e.pop() : XA.call(e, t, 1), --this.size, !0;
}
function JA(n) {
var e = this.__data__, t = Kc(e, n);
return t < 0 ? void 0 : e[t][1];
}
function KA(n) {
return Kc(this.__data__, n) > -1;
}
function qA(n, e) {
var t = this.__data__, i = Kc(t, n);
return i < 0 ? (++this.size, t.push([n, e])) : t[i][1] = e, this;
}
function cr(n) {
var e = -1, t = n == null ? 0 : n.length;
for (this.clear(); ++e < t; ) {
var i = n[e];
this.set(i[0], i[1]);
}
}
cr.prototype.clear = $A;
cr.prototype.delete = YA;
cr.prototype.get = JA;
cr.prototype.has = KA;
cr.prototype.set = qA;
var Na = Ds(Bi, "Map");
function QA() {
this.size = 0, this.__data__ = {
hash: new _s(),
map: new (Na || cr)(),
string: new _s()
};
}
function eS(n) {
var e = typeof n;
return e == "string" || e == "number" || e == "symbol" || e == "boolean" ? n !== "__proto__" : n === null;
}
function qc(n, e) {
var t = n.__data__;
return eS(e) ? t[typeof e == "string" ? "string" : "hash"] : t.map;
}
function tS(n) {
var e = qc(this, n).delete(n);
return this.size -= e ? 1 : 0, e;
}
function nS(n) {
return qc(this, n).get(n);
}
function iS(n) {
return qc(this, n).has(n);
}
function rS(n, e) {
var t = qc(this, n), i = t.size;
return t.set(n, e), this.size += t.size == i ? 0 : 1, this;
}
function ur(n) {
var e = -1, t = n == null ? 0 : n.length;
for (this.clear(); ++e < t; ) {
var i = n[e];
this.set(i[0], i[1]);
}
}
ur.prototype.clear = QA;
ur.prototype.delete = tS;
ur.prototype.get = nS;
ur.prototype.has = iS;
ur.prototype.set = rS;
var sS = "Expected a function";
function $d(n, e) {
if (typeof n != "function" || e != null && typeof e != "function")
throw new TypeError(sS);
var t = function() {
var i = arguments, r = e ? e.apply(this, i) : i[0], s = t.cache;
if (s.has(r))
return s.get(r);
var o = n.apply(this, i);
return t.cache = s.set(r, o) || s, o;
};
return t.cache = new ($d.Cache || ur)(), t;
}
$d.Cache = ur;
var oS = 500;
function aS(n) {
var e = $d(n, function(i) {
return t.size === oS && t.clear(), i;
}), t = e.cache;
return e;
}
var lS = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, cS = /\\(\\)?/g, uS = aS(function(n) {
var e = [];
return n.charCodeAt(0) === 46 && e.push(""), n.replace(lS, function(t, i, r, s) {
e.push(r ? s.replace(cS, "$1") : i || t);
}), e;
});
function hS(n) {
return n == null ? "" : Xv(n);
}
function Qc(n, e) {
return pi(n) ? n : jd(n, e) ? [n] : uS(hS(n));
}
var dS = 1 / 0;
function nl(n) {
if (typeof n == "string" || Jc(n))
return n;
var e = n + "";
return e == "0" && 1 / n == -dS ? "-0" : e;
}
function Zd(n, e) {
e = Qc(e, n);
for (var t = 0, i = e.length; n != null && t < i; )
n = n[nl(e[t++])];
return t && t == i ? n : void 0;
}
function Ki(n, e, t) {
var i = n == null ? void 0 : Zd(n, e);
return i === void 0 ? t : i;
}
function n0(n, e) {
for (var t = -1, i = e.length, r = n.length; ++t < i; )
n[r + t] = e[t];
return n;
}
var Wp = Pi ? Pi.isConcatSpreadable : void 0;
function fS(n) {
return pi(n) || Wd(n) || !!(Wp && n && n[Wp]);
}
function pS(n, e, t, i, r) {
var s = -1, o = n.length;
for (t || (t = fS), r || (r = []); ++s < o; ) {
var a = n[s];
t(a) ? n0(r, a) : r[r.length] = a;
}
return r;
}
function mS(n) {
var e = n == null ? 0 : n.length;
return e ? pS(n) : [];
}
function gS(n) {
return P1(k1(n, void 0, mS), n + "");
}
function Si() {
if (!arguments.length)
return [];
var n = arguments[0];
return pi(n) ? n : [n];
}
function vS() {
this.__data__ = new cr(), this.size = 0;
}
function yS(n) {
var e = this.__data__, t = e.delete(n);
return this.size = e.size, t;
}
function bS(n) {
return this.__data__.get(n);
}
function xS(n) {
return this.__data__.has(n);
}
var MS = 200;
function wS(n, e) {
var t = this.__data__;
if (t instanceof cr) {
var i = t.__data__;
if (!Na || i.length < MS - 1)
return i.push([n, e]), this.size = ++t.size, this;
t = this.__data__ = new ur(i);
}
return t.set(n, e), this.size = t.size, this;
}
function tr(n) {
var e = this.__data__ = new cr(n);
this.size = e.size;
}
tr.prototype.clear = vS;
tr.prototype.delete = yS;
tr.prototype.get = bS;
tr.prototype.has = xS;
tr.prototype.set = wS;
function AS(n, e) {
for (var t = -1, i = n == null ? 0 : n.length, r = 0, s = []; ++t < i; ) {
var o = n[t];
e(o, t, n) && (s[r++] = o);
}
return s;
}
function SS() {
return [];
}
var _S = Object.prototype, TS = _S.propertyIsEnumerable, jp = Object.getOwnPropertySymbols, ES = jp ? function(n) {
return n == null ? [] : (n = Object(n), AS(jp(n), function(e) {
return TS.call(n, e);
}));
} : SS;
function CS(n, e, t) {
var i = e(n);
return pi(n) ? i : n0(i, t(n));
}
function $p(n) {
return CS(n, t0, ES);
}
var Gh = Ds(Bi, "DataView"), Hh = Ds(Bi, "Promise"), Wh = Ds(Bi, "Set"), Zp = "[object Map]", LS = "[object Object]", Xp = "[object Promise]", Yp = "[object Set]", Jp = "[object WeakMap]", Kp = "[object DataView]", RS = Os(Gh), FS = Os(Na), PS = Os(Hh), IS = Os(Wh), OS = Os(kh), Cr = Zo;
(Gh && Cr(new Gh(new ArrayBuffer(1))) != Kp || Na && Cr(new Na()) != Zp || Hh && Cr(Hh.resolve()) != Xp || Wh && Cr(new Wh()) != Yp || kh && Cr(new kh()) != Jp) && (Cr = function(n) {
var e = Zo(n), t = e == LS ? n.constructor : void 0, i = t ? Os(t) : "";
if (i)
switch (i) {
case RS:
return Kp;
case FS:
return Zp;
case PS:
return Xp;
case IS:
return Yp;
case OS:
return Jp;
}
return e;
});
var qp = Bi.Uint8Array, DS = "__lodash_hash_undefined__";
function NS(n) {
return this.__data__.set(n, DS), this;
}
function BS(n) {
return this.__data__.has(n);
}
function Pc(n) {
var e = -1, t = n == null ? 0 : n.length;
for (this.__data__ = new ur(); ++e < t; )
this.add(n[e]);
}
Pc.prototype.add = Pc.prototype.push = NS;
Pc.prototype.has = BS;
function US(n, e) {
for (var t = -1, i = n == null ? 0 : n.length; ++t < i; )
if (e(n[t], t, n))
return !0;
return !1;
}
function zS(n, e) {
return n.has(e);
}
var kS = 1, VS = 2;
function i0(n, e, t, i, r, s) {
var o = t & kS, a = n.length, c = e.length;
if (a != c && !(o && c > a))
return !1;
var l = s.get(n), d = s.get(e);
if (l && d)
return l == e && d == n;
var h = -1, f = !0, g = t & VS ? new Pc() : void 0;
for (s.set(n, e), s.set(e, n); ++h < a; ) {
var p = n[h], u = e[h];
if (i)
var y = o ? i(u, p, h, e, n, s) : i(p, u, h, n, e, s);
if (y !== void 0) {
if (y)
continue;
f = !1;
break;
}
if (g) {
if (!US(e, function(v, m) {
if (!zS(g, m) && (p === v || r(p, v, t, i, s)))
return g.push(m);
})) {
f = !1;
break;
}
} else if (!(p === u || r(p, u, t, i, s))) {
f = !1;
break;
}
}
return s.delete(n), s.delete(e), f;
}
function GS(n) {
var e = -1, t = Array(n.size);
return n.forEach(function(i, r) {
t[++e] = [r, i];
}), t;
}
function HS(n) {
var e = -1, t = Array(n.size);
return n.forEach(function(i) {
t[++e] = i;
}), t;
}
var WS = 1, jS = 2, $S = "[object Boolean]", ZS = "[object Date]", XS = "[object Error]", YS = "[object Map]", JS = "[object Number]", KS = "[object RegExp]", qS = "[object Set]", QS = "[object String]", e_ = "[object Symbol]", t_ = "[object ArrayBuffer]", n_ = "[object DataView]", Qp = Pi ? Pi.prototype : void 0, Du = Qp ? Qp.valueOf : void 0;
function i_(n, e, t, i, r, s, o) {
switch (t) {
case n_:
if (n.byteLength != e.byteLength || n.byteOffset != e.byteOffset)
return !1;
n = n.buffer, e = e.buffer;
case t_:
return !(n.byteLength != e.byteLength || !s(new qp(n), new qp(e)));
case $S:
case ZS:
case JS:
return Gd(+n, +e);
case XS:
return n.name == e.name && n.message == e.message;
case KS:
case QS:
return n == e + "";
case YS:
var a = GS;
case qS:
var c = i & WS;
if (a || (a = HS), n.size != e.size && !c)
return !1;
var l = o.get(n);
if (l)
return l == e;
i |= jS, o.set(n, e);
var d = i0(a(n), a(e), i, r, s, o);
return o.delete(n), d;
case e_:
if (Du)
return Du.call(n) == Du.call(e);
}
return !1;
}
var r_ = 1, s_ = Object.prototype, o_ = s_.hasOwnProperty;
function a_(n, e, t, i, r, s) {
var o = t & r_, a = $p(n), c = a.length, l = $p(e), d = l.length;
if (c != d && !o)
return !1;
for (var h = c; h--; ) {
var f = a[h];
if (!(o ? f in e : o_.call(e, f)))
return !1;
}
var g = s.get(n), p = s.get(e);
if (g && p)
return g == e && p == n;
var u = !0;
s.set(n, e), s.set(e, n);
for (var y = o; ++h < c; ) {
f = a[h];
var v = n[f], m = e[f];
if (i)
var x = o ? i(m, v, f, e, n, s) : i(v, m, f, n, e, s);
if (!(x === void 0 ? v === m || r(v, m, t, i, s) : x)) {
u = !1;
break;
}
y || (y = f == "constructor");
}
if (u && !y) {
var w = n.constructor, A = e.constructor;
w != A && "constructor" in n && "constructor" in e && !(typeof w == "function" && w instanceof w && typeof A == "function" && A instanceof A) && (u = !1);
}
return s.delete(n), s.delete(e), u;
}
var l_ = 1, em = "[object Arguments]", tm = "[object Array]", _l = "[object Object]", c_ = Object.prototype, nm = c_.hasOwnProperty;
function u_(n, e, t, i, r, s) {
var o = pi(n), a = pi(e), c = o ? tm : Cr(n), l = a ? tm : Cr(e);
c = c == em ? _l : c, l = l == em ? _l : l;
var d = c == _l, h = l == _l, f = c == l;
if (f && Vh(n)) {
if (!Vh(e))
return !1;
o = !0, d = !1;
}
if (f && !d)
return s || (s = new tr()), o || e0(n) ? i0(n, e, t, i, r, s) : i_(n, e, c, t, i, r, s);
if (!(t & l_)) {
var g = d && nm.call(n, "__wrapped__"), p = h && nm.call(e, "__wrapped__");
if (g || p) {
var u = g ? n.value() : n, y = p ? e.value() : e;
return s || (s = new tr()), r(u, y, t, i, s);
}
}
return f ? (s || (s = new tr()), a_(n, e, t, i, r, s)) : !1;
}
function eu(n, e, t, i, r) {
return n === e ? !0 : n == null || e == null || !Mo(n) && !Mo(e) ? n !== n && e !== e : u_(n, e, t, i, eu, r);
}
var h_ = 1, d_ = 2;
function f_(n, e, t, i) {
var r = t.length, s = r;
if (n == null)
return !s;
for (n = Object(n); r--; ) {
var o = t[r];
if (o[2] ? o[1] !== n[o[0]] : !(o[0] in n))
return !1;
}
for (; ++r < s; ) {
o = t[r];
var a = o[0], c = n[a], l = o[1];
if (o[2]) {
if (c === void 0 && !(a in n))
return !1;
} else {
var d = new tr(), h;
if (!(h === void 0 ? eu(l, c, h_ | d_, i, d) : h))
return !1;
}
}
return !0;
}
function r0(n) {
return n === n && !Ur(n);
}
function p_(n) {
for (var e = t0(n), t = e.length; t--; ) {
var i = e[t], r = n[i];
e[t] = [i, r, r0(r)];
}
return e;
}
function s0(n, e) {
return function(t) {
return t == null ? !1 : t[n] === e && (e !== void 0 || n in Object(t));
};
}
function m_(n) {
var e = p_(n);
return e.length == 1 && e[0][2] ? s0(e[0][0], e[0][1]) : function(t) {
return t === n || f_(t, n, e);
};
}
function g_(n, e) {
return n != null && e in Object(n);
}
function v_(n, e, t) {
e = Qc(e, n);
for (var i = -1, r = e.length, s = !1; ++i < r; ) {
var o = nl(e[i]);
if (!(s = n != null && t(n, o)))
break;
n = n[o];
}
return s || ++i != r ? s : (r = n == null ? 0 : n.length, !!r && Hd(r) && Vd(o, r) && (pi(n) || Wd(n)));
}
function o0(n, e) {
return n != null && v_(n, e, g_);
}
var y_ = 1, b_ = 2;
function x_(n, e) {
return jd(n) && r0(e) ? s0(nl(n), e) : function(t) {
var i = Ki(t, n);
return i === void 0 && i === e ? o0(t, n) : eu(e, i, y_ | b_);
};
}
function M_(n) {
return function(e) {
return e == null ? void 0 : e[n];
};
}
function w_(n) {
return function(e) {
return Zd(e, n);
};
}
function A_(n) {
return jd(n) ? M_(nl(n)) : w_(n);
}
function S_(n) {
return typeof n == "function" ? n : n == null ? Yv : typeof n == "object" ? pi(n) ? x_(n[0], n[1]) : m_(n) : A_(n);
}
var Nu = function() {
return Bi.Date.now();
}, __ = "Expected a function", T_ = Math.max, E_ = Math.min;
function jh(n, e, t) {
var i, r, s, o, a, c, l = 0, d = !1, h = !1, f = !0;
if (typeof n != "function")
throw new TypeError(__);
e = Np(e) || 0, Ur(t) && (d = !!t.leading, h = "maxWait" in t, s = h ? T_(Np(t.maxWait) || 0, e) : s, f = "trailing" in t ? !!t.trailing : f);
function g(M) {
var R = i, L = r;
return i = r = void 0, l = M, o = n.apply(L, R), o;
}
function p(M) {
return l = M, a = setTimeout(v, e), d ? g(M) : o;
}
function u(M) {
var R = M - c, L = M - l, T = e - R;
return h ? E_(T, s - L) : T;
}
function y(M) {
var R = M - c, L = M - l;
return c === void 0 || R >= e || R < 0 || h && L >= s;
}
function v() {
var M = Nu();
if (y(M))
return m(M);
a = setTimeout(v, u(M));
}
function m(M) {
return a = void 0, f && i ? g(M) : (i = r = void 0, o);
}
function x() {
a !== void 0 && clearTimeout(a), l = 0, i = c = r = a = void 0;
}
function w() {
return a === void 0 ? o : m(Nu());
}
function A() {
var M = Nu(), R = y(M);
if (i = arguments, r = this, c = M, R) {
if (a === void 0)
return p(c);
if (h)
return clearTimeout(a), a = setTimeout(v, e), g(c);
}
return a === void 0 && (a = setTimeout(v, e)), o;
}
return A.cancel = x, A.flush = w, A;
}
function C_(n, e, t) {
var i = n == null ? 0 : n.length;
if (!i)
return -1;
var r = i - 1;
return I1(n, S_(e), r);
}
function Ic(n) {
for (var e = -1, t = n == null ? 0 : n.length, i = {}; ++e < t; ) {
var r = n[e];
i[r[0]] = r[1];
}
return i;
}
function $h(n, e) {
return eu(n, e);
}
function Ci(n) {
return n == null;
}
function L_(n) {
return n === void 0;
}
function R_(n, e, t, i) {
if (!Ur(n))
return n;
e = Qc(e, n);
for (var r = -1, s = e.length, o = s - 1, a = n; a != null && ++r < s; ) {
var c = nl(e[r]), l = t;
if (c === "__proto__" || c === "constructor" || c === "prototype")
return n;
if (r != o) {
var d = a[c];
l = void 0, l === void 0 && (l = Ur(d) ? d : Vd(e[r + 1]) ? [] : {});
}
z1(a, c, l), a = a[c];
}
return n;
}
function F_(n, e, t) {
for (var i = -1, r = e.length, s = {}; ++i < r; ) {
var o = e[i], a = Zd(n, o);
t(a, o) && R_(s, Qc(o, n), a);
}
return s;
}
function P_(n, e) {
return F_(n, e, function(t, i) {
return o0(n, i);
});
}
var I_ = gS(function(n, e) {
return n == null ? {} : P_(n, e);
});
const di = (n) => n === void 0, Ba = (n) => typeof n == "boolean", yt = (n) => typeof n == "number", ys = (n) => typeof Element > "u" ? !1 : n instanceof Element, im = (n) => Ci(n), O_ = (n) => vn(n) ? !Number.isNaN(Number(n)) : !1, D_ = (n = "") => n.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d"), Rr = (n) => Gw(n), rm = (n) => Object.keys(n);
class a0 extends Error {
constructor(e) {
super(e), this.name = "ElementPlusError";
}
}
function Xo(n, e) {
throw new a0(`[${n}] ${e}`);
}
function kt(n, e) {
if (process.env.NODE_ENV !== "production") {
const t = vn(n) ? new a0(`[${n}] ${e}`) : n;
console.warn(t);
}
}
const N_ = "utils/dom/style", l0 = (n = "") => n.split(" ").filter((e) => !!e.trim()), sm = (n, e) => {
!n || !e.trim() || n.classList.add(...l0(e));
}, Oc = (n, e) => {
!n || !e.trim() || n.classList.remove(...l0(e));
}, ca = (n, e) => {
var t;
if (!en || !n || !e)
return "";
let i = zw(e);
i === "float" && (i = "cssFloat");
try {
const r = n.style[i];
if (r)
return r;
const s = (t = document.defaultView) == null ? void 0 : t.getComputedStyle(n, "");
return s ? s[i] : "";
} catch {
return n.style[i];
}
};
function Dc(n, e = "px") {
if (!n)
return "";
if (yt(n) || O_(n))
return `${n}${e}`;
if (vn(n))
return n;
kt(N_, "binding value must be a string or number");
}
function B_(n, e) {
if (!en)
return;
if (!e) {
n.scrollTop = 0;
return;
}
const t = [];
let i = e.offsetParent;
for (; i !== null && n !== i && n.contains(i); )
t.push(i), i = i.offsetParent;
const r = e.offsetTop + t.reduce((c, l) => c + l.offsetTop, 0), s = r + e.offsetHeight, o = n.scrollTop, a = o + n.clientHeight;
r < o ? n.scrollTop = r : s > a && (n.scrollTop = s - n.clientHeight);
}
/*! Element Plus Icons Vue v2.3.1 */
var U_ = /* @__PURE__ */ Pe({
name: "ArrowDown",
__name: "arrow-down",
setup(n) {
return (e, t) => (ve(), Ce("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 1024 1024"
}, [
Ne("path", {
fill: "currentColor",
d: "M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.592 30.592 0 0 0-42.752 0z"
})
]));
}
}), Xd = U_, z_ = /* @__PURE__ */ Pe({
name: "ArrowLeft",
__name: "arrow-left",
setup(n) {
return (e, t) => (ve(), Ce("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 1024 1024"
}, [
Ne("path", {
fill: "currentColor",
d: "M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z"
})
]));
}
}), zr = z_, k_ = /* @__PURE__ */ Pe({
name: "ArrowRight",
__name: "arrow-right",
setup(n) {
return (e, t) => (ve(), Ce("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 1024 1024"
}, [
Ne("path", {
fill: "currentColor",
d: "M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"
})
]));
}
}), kr = k_, V_ = /* @__PURE__ */ Pe({
name: "ArrowUp",
__name: "arrow-up",
setup(n) {
return (e, t) => (ve(), Ce("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 1024 1024"
}, [
Ne("path", {
fill: "currentColor",
d: "m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0"
})
]));
}
}), G_ = V_, H_ = /* @__PURE__ */ Pe({
name: "CircleCheck",
__name: "circle-check",
setup(n) {
return (e, t) => (ve(), Ce("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 1024 1024"
}, [
Ne("path", {
fill: "currentColor",
d: "M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"
}),
Ne("path", {
fill: "currentColor",
d: "M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752l265.344-265.408z"
})
]));
}
}), W_ = H_, j_ = /* @__PURE__ */ Pe({
name: "CircleClose",
__name: "circle-close",
setup(n) {
return (e, t) => (ve(), Ce("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 1024 1024"
}, [
Ne("path", {
fill: "currentColor",
d: "m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248z"
}),
Ne("path", {
fill: "currentColor",
d: "M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"
})
]));
}
}), Yd = j_, $_ = /* @__PURE__ */ Pe({
name: "Close",
__name: "close",
setup(n) {
return (e, t) => (ve(), Ce("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 1024 1024"
}, [
Ne("path", {
fill: "currentColor",
d: "M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"
})
]));
}
}), Zh = $_, Z_ = /* @__PURE__ */ Pe({
name: "Delete",
__name: "delete",
setup(n) {
return (e, t) => (ve(), Ce("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 1024 1024"
}, [
Ne("path", {
fill: "currentColor",
d: "M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32zm448-64v-64H416v64zM224 896h576V256H224zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32m192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32"
})
]));
}
}), Nc = Z_, X_ = /* @__PURE__ */ Pe({
name: "Hide",
__name: "hide",
setup(n) {
return (e, t) => (ve(), Ce("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 1024 1024"
}, [
Ne("path", {
fill: "currentColor",
d: "M876.8 156.8c0-9.6-3.2-16-9.6-22.4-6.4-6.4-12.8-9.6-22.4-9.6-9.6 0-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176C44.8 438.4 0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4 0 9.6 3.2 16 9.6 22.4 6.4 6.4 12.8 9.6 22.4 9.6 9.6 0 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4Zm-646.4 528c-76.8-70.4-128-128-153.6-172.8 28.8-48 80-105.6 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4Zm140.8-96c-12.8-22.4-19.2-48-19.2-76.8 0-44.8 16-83.2 48-112 32-28.8 67.2-48 112-48 28.8 0 54.4 6.4 73.6 19.2zM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6-28.8 48-80 105.6-153.6 172.8-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176C979.199 585.6 1024 528 1024 512s-48.001-73.6-134.401-176Z"
}),
Ne("path", {
fill: "currentColor",
d: "M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112-32 28.8-67.2 48-112 48Z"
})
]));
}
}), Y_ = X_, J_ = /* @__PURE__ */ Pe({
name: "Loading",
__name: "loading",
setup(n) {
return (e, t) => (ve(), Ce("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 1024 1024"
}, [
Ne("path", {
fill: "currentColor",
d: "M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32m448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32m-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32M195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0m-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z"
})
]));
}
}), c0 = J_, K_ = /* @__PURE__ */ Pe({
name: "Minus",
__name: "minus",
setup(n) {
return (e, t) => (ve(), Ce("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 1024 1024"
}, [
Ne("path", {
fill: "currentColor",
d: "M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64"
})
]));
}
}), q_ = K_, Q_ = /* @__PURE__ */ Pe({
name: "Plus",
__name: "plus",
setup(n) {
return (e, t) => (ve(), Ce("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 1024 1024"
}, [
Ne("path", {
fill: "currentColor",
d: "M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z"
})
]));
}
}), tu = Q_, eT = /* @__PURE__ */ Pe({
name: "View",
__name: "view",
setup(n) {
return (e, t) => (ve(), Ce("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 1024 1024"
}, [
Ne("path", {
fill: "currentColor",
d: "M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288zm0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.192 160.192 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160"
})
]));
}
}), tT = eT, nT = /* @__PURE__ */ Pe({
name: "WarningFilled",
__name: "warning-filled",
setup(n) {
return (e, t) => (ve(), Ce("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 1024 1024"
}, [
Ne("path", {
fill: "currentColor",
d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"
})
]));
}
}), u0 = nT;
const h0 = "__epPropKey", Je = (n) => n, iT = (n) => Tn(n) && !!n[h0], nu = (n, e) => {
if (!Tn(n) || iT(n))
return n;
const { values: t, required: i, default: r, type: s, validator: o } = n, c = {
type: s,
required: !!i,
validator: t || o ? (l) => {
let d = !1, h = [];
if (t && (h = Array.from(t), Fp(n, "default") && h.push(r), d || (d = h.includes(l))), o && (d || (d = o(l))), !d && h.length > 0) {
const f = [...new Set(h)].map((g) => JSON.stringify(g)).join(", ");
zM(`Invalid prop: validation failed${e ? ` for prop "${e}"` : ""}. Expected one of [${f}], got value ${JSON.stringify(l)}.`);
}
return d;
} : void 0,
[h0]: !0
};
return Fp(n, "default") && (c.default = r), c;
}, at = (n) => Ic(Object.entries(n).map(([e, t]) => [
e,
nu(t, e)
])), Vr = Je([
String,
Object,
Function
]), d0 = {
validating: c0,
success: W_,
error: Yd
}, on = (n, e) => {
if (n.install = (t) => {
for (const i of [n, ...Object.values(e ?? {})])
t.component(i.name, i);
}, e)
for (const [t, i] of Object.entries(e))
n[t] = i;
return n;
}, rT = (n, e) => (n.install = (t) => {
t.directive(e, n);
}, n), vi = (n) => (n.install = Oa, n), Li = {
tab: "Tab",
enter: "Enter",
space: "Space",
left: "ArrowLeft",
up: "ArrowUp",
right: "ArrowRight",
down: "ArrowDown",
esc: "Escape",
delete: "Delete",
backspace: "Backspace",
numpadEnter: "NumpadEnter",
pageUp: "PageUp",
pageDown: "PageDown",
home: "Home",
end: "End"
}, At = "update:modelValue", hr = "change", bs = "input", f0 = ["", "default", "small", "large"], Sc = (n) => {
const e = Pn(n) ? n : [n], t = [];
return e.forEach((i) => {
var r;
Pn(i) ? t.push(...Sc(i)) : Uh(i) && Pn(i.children) ? t.push(...Sc(i.children)) : (t.push(i), Uh(i) && ((r = i.component) != null && r.subTree) && t.push(...Sc(i.component.subTree)));
}), t;
}, sT = (n) => /([\uAC00-\uD7AF\u3130-\u318F])+/gi.test(n), qi = (n) => n, oT = ["class", "style"], aT = /^on[A-Z]/, lT = (n = {}) => {
const { excludeListeners: e = !1, excludeKeys: t } = n, i = ue(() => ((t == null ? void 0 : t.value) || []).concat(oT)), r = dn();
return r ? ue(() => {
var s;
return Ic(Object.entries((s = r.proxy) == null ? void 0 : s.$attrs).filter(([o]) => !i.value.includes(o) && !(e && aT.test(o))));
}) : (kt("use-attrs", "getCurrentInstance() returned null. useAttrs() must be called at the top of a setup function"), ue(() => ({})));
}, p0 = ({ from: n, replacement: e, scope: t, version: i, ref: r, type: s = "API" }, o) => {
Qe(() => z(o), (a) => {
a && kt(t, `[${s}] ${n} is about to be deprecated in version ${i}, please use ${e} instead.
For more detail, please visit: ${r}
`);
}, {
immediate: !0
});
};
var cT = {
name: "en",
el: {
breadcrumb: {
label: "Breadcrumb"
},
colorpicker: {
confirm: "OK",
clear: "Clear",
defaultLabel: "color picker",
description: "current color is {color}. press enter to select a new color.",
alphaLabel: "pick alpha value"
},
datepicker: {
now: "Now",
today: "Today",
cancel: "Cancel",
clear: "Clear",
confirm: "OK",
dateTablePrompt: "Use the arrow keys and enter to select the day of the month",
monthTablePrompt: "Use the arrow keys and enter to select the month",
yearTablePrompt: "Use the arrow keys and enter to select the year",
selectedDate: "Selected date",
selectDate: "Select date",
selectTime: "Select time",
startDate: "Start Date",
startTime: "Start Time",
endDate: "End Date",
endTime: "End Time",
prevYear: "Previous Year",
nextYear: "Next Year",
prevMonth: "Previous Month",
nextMonth: "Next Month",
year: "",
month1: "January",
month2: "February",
month3: "March",
month4: "April",
month5: "May",
month6: "June",
month7: "July",
month8: "August",
month9: "September",
month10: "October",
month11: "November",
month12: "December",
week: "week",
weeks: {
sun: "Sun",
mon: "Mon",
tue: "Tue",
wed: "Wed",
thu: "Thu",
fri: "Fri",
sat: "Sat"
},
weeksFull: {
sun: "Sunday",
mon: "Monday",
tue: "Tuesday",
wed: "Wednesday",
thu: "Thursday",
fri: "Friday",
sat: "Saturday"
},
months: {
jan: "Jan",
feb: "Feb",
mar: "Mar",
apr: "Apr",
may: "May",
jun: "Jun",
jul: "Jul",
aug: "Aug",
sep: "Sep",
oct: "Oct",
nov: "Nov",
dec: "Dec"
}
},
inputNumber: {
decrease: "decrease number",
increase: "increase number"
},
select: {
loading: "Loading",
noMatch: "No matching data",
noData: "No data",
placeholder: "Select"
},
mention: {
loading: "Loading"
},
dropdown: {
toggleDropdown: "Toggle Dropdown"
},
cascader: {
noMatch: "No matching data",
loading: "Loading",
placeholder: "Select",
noData: "No data"
},
pagination: {
goto: "Go to",
pagesize: "/page",
total: "Total {total}",
pageClassifier: "",
page: "Page",
prev: "Go to previous page",
next: "Go to next page",
currentPage: "page {pager}",
prevPages: "Previous {pager} pages",
nextPages: "Next {pager} pages",
deprecationWarning: "Deprecated usages detected, please refer to the el-pagination documentation for more details"
},
dialog: {
close: "Close this dialog"
},
drawer: {
close: "Close this dialog"
},
messagebox: {
title: "Message",
confirm: "OK",
cancel: "Cancel",
error: "Illegal input",
close: "Close this dialog"
},
upload: {
deleteTip: "press delete to remove",
delete: "Delete",
preview: "Preview",
continue: "Continue"
},
slider: {
defaultLabel: "slider between {min} and {max}",
defaultRangeStartLabel: "pick start value",
defaultRangeEndLabel: "pick end value"
},
table: {
emptyText: "No Data",
confirmFilter: "Confirm",
resetFilter: "Reset",
clearFilter: "All",
sumText: "Sum"
},
tour: {
next: "Next",
previous: "Previous",
finish: "Finish"
},
tree: {
emptyText: "No Data"
},
transfer: {
noMatch: "No matching data",
noData: "No data",
titles: ["List 1", "List 2"],
filterPlaceholder: "Enter keyword",
noCheckedFormat: "{total} items",
hasCheckedFormat: "{checked}/{total} checked"
},
image: {
error: "FAILED"
},
pageHeader: {
title: "Back"
},
popconfirm: {
confirmButtonText: "Yes",
cancelButtonText: "No"
},
carousel: {
leftArrow: "Carousel arrow left",
rightArrow: "Carousel arrow right",
indicator: "Carousel switch to index {index}"
}
}
};
const uT = (n) => (e, t) => hT(e, t, z(n)), hT = (n, e, t) => Ki(t, n, n).replace(/\{(\w+)\}/g, (i, r) => {
var s;
return `${(s = e == null ? void 0 : e[r]) != null ? s : `{${r}}`}`;
}), dT = (n) => {
const e = ue(() => z(n).name), t = Zc(n) ? n : Ee(n);
return {
lang: e,
locale: t,
t: uT(n)
};
}, m0 = Symbol("localeContextKey"), iu = (n) => {
const e = n || pt(m0, Ee());
return dT(ue(() => e.value || cT));
}, _c = "el", fT = "is-", rs = (n, e, t, i, r) => {
let s = `${n}-${e}`;
return t && (s += `-${t}`), i && (s += `__${i}`), r && (s += `--${r}`), s;
}, g0 = Symbol("namespaceContextKey"), Jd = (n) => {
const e = n || (dn() ? pt(g0, Ee(_c)) : Ee(_c));
return ue(() => z(e) || _c);
}, nt = (n, e) => {
const t = Jd(e);
return {
namespace: t,
b: (u = "") => rs(t.value, n, u, "", ""),
e: (u) => u ? rs(t.value, n, "", u, "") : "",
m: (u) => u ? rs(t.value, n, "", "", u) : "",
be: (u, y) => u && y ? rs(t.value, n, u, y, "") : "",
em: (u, y) => u && y ? rs(t.value, n, "", u, y) : "",
bm: (u, y) => u && y ? rs(t.value, n, u, "", y) : "",
bem: (u, y, v) => u && y && v ? rs(t.value, n, u, y, v) : "",
is: (u, ...y) => {
const v = y.length >= 1 ? y[0] : !0;
return u && v ? `${fT}${u}` : "";
},
cssVar: (u) => {
const y = {};
for (const v in u)
u[v] && (y[`--${t.value}-${v}`] = u[v]);
return y;
},
cssVarName: (u) => `--${t.value}-${u}`,
cssVarBlock: (u) => {
const y = {};
for (const v in u)
u[v] && (y[`--${t.value}-${n}-${v}`] = u[v]);
return y;
},
cssVarBlockName: (u) => `--${t.value}-${n}-${u}`
};
}, pT = nu({
type: Je(Boolean),
default: null
}), mT = nu({
type: Je(Function)
}), gT = (n) => {
const e = `update:${n}`, t = `onUpdate:${n}`, i = [e], r = {
[n]: pT,
[t]: mT
};
return {
useModelToggle: ({
indicator: o,
toggleReason: a,
shouldHideWhenRouteChanges: c,
shouldProceed: l,
onShow: d,
onHide: h
}) => {
const f = dn(), { emit: g } = f, p = f.props, u = ue(() => Sn(p[t])), y = ue(() => p[n] === null), v = (R) => {
o.value !== !0 && (o.value = !0, a && (a.value = R), Sn(d) && d(R));
}, m = (R) => {
o.value !== !1 && (o.value = !1, a && (a.value = R), Sn(h) && h(R));
}, x = (R) => {
if (p.disabled === !0 || Sn(l) && !l())
return;
const L = u.value && en;
L && g(e, !0), (y.value || !L) && v(R);
}, w = (R) => {
if (p.disabled === !0 || !en)
return;
const L = u.value && en;
L && g(e, !1), (y.value || !L) && m(R);
}, A = (R) => {
Ba(R) && (p.disabled && R ? u.value && g(e, !1) : o.value !== R && (R ? v() : m()));
}, M = () => {
o.value ? w() : x();
};
return Qe(() => p[n], A), c && f.appContext.config.globalProperties.$route !== void 0 && Qe(() => ({
...f.proxy.$route
}), () => {
c.value && o.value && w();
}), Jt(() => {
A(p[n]);
}), {
hide: w,
show: x,
toggle: M,
hasUpdateHandler: u
};
},
useModelToggleProps: r,
useModelToggleEmits: i
};
}, v0 = (n) => {
const e = dn();
return ue(() => {
var t, i;
return (i = (t = e == null ? void 0 : e.proxy) == null ? void 0 : t.$props) == null ? void 0 : i[n];
});
};
var On = "top", qn = "bottom", Qn = "right", Dn = "left", Kd = "auto", il = [On, qn, Qn, Dn], wo = "start", Ua = "end", vT = "clippingParents", y0 = "viewport", ua = "popper", yT = "reference", om = il.reduce(function(n, e) {
return n.concat([e + "-" + wo, e + "-" + Ua]);
}, []), Yo = [].concat(il, [Kd]).reduce(function(n, e) {
return n.concat([e, e + "-" + wo, e + "-" + Ua]);
}, []), bT = "beforeRead", xT = "read", MT = "afterRead", wT = "beforeMain", AT = "main", ST = "afterMain", _T = "beforeWrite", TT = "write", ET = "afterWrite", CT = [bT, xT, MT, wT, AT, ST, _T, TT, ET];
function Ii(n) {
return n ? (n.nodeName || "").toLowerCase() : null;
}
function yi(n) {
if (n == null) return window;
if (n.toString() !== "[object Window]") {
var e = n.ownerDocument;
return e && e.defaultView || window;
}
return n;
}
function Ao(n) {
var e = yi(n).Element;
return n instanceof e || n instanceof Element;
}
function Kn(n) {
var e = yi(n).HTMLElement;
return n instanceof e || n instanceof HTMLElement;
}
function qd(n) {
if (typeof ShadowRoot > "u") return !1;
var e = yi(n).ShadowRoot;
return n instanceof e || n instanceof ShadowRoot;
}
function LT(n) {
var e = n.state;
Object.keys(e.elements).forEach(function(t) {
var i = e.styles[t] || {}, r = e.attributes[t] || {}, s = e.elements[t];
!Kn(s) || !Ii(s) || (Object.assign(s.style, i), Object.keys(r).forEach(function(o) {
var a = r[o];
a === !1 ? s.removeAttribute(o) : s.setAttribute(o, a === !0 ? "" : a);
}));
});
}
function RT(n) {
var e = n.state, t = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} };
return Object.assign(e.elements.popper.style, t.popper), e.styles = t, e.elements.arrow && Object.assign(e.elements.arrow.style, t.arrow), function() {
Object.keys(e.elements).forEach(function(i) {
var r = e.elements[i], s = e.attributes[i] || {}, o = Object.keys(e.styles.hasOwnProperty(i) ? e.styles[i] : t[i]), a = o.reduce(function(c, l) {
return c[l] = "", c;
}, {});
!Kn(r) || !Ii(r) || (Object.assign(r.style, a), Object.keys(s).forEach(function(c) {
r.removeAttribute(c);
}));
});
};
}
var b0 = { name: "applyStyles", enabled: !0, phase: "write", fn: LT, effect: RT, requires: ["computeStyles"] };
function Ri(n) {
return n.split("-")[0];
}
var xs = Math.max, Bc = Math.min, So = Math.round;
function _o(n, e) {
e === void 0 && (e = !1);
var t = n.getBoundingClientRect(), i = 1, r = 1;
if (Kn(n) && e) {
var s = n.offsetHeight, o = n.offsetWidth;
o > 0 && (i = So(t.width) / o || 1), s > 0 && (r = So(t.height) / s || 1);
}
return { width: t.width / i, height: t.height / r, top: t.top / r, right: t.right / i, bottom: t.bottom / r, left: t.left / i, x: t.left / i, y: t.top / r };
}
function Qd(n) {
var e = _o(n), t = n.offsetWidth, i = n.offsetHeight;
return Math.abs(e.width - t) <= 1 && (t = e.width), Math.abs(e.height - i) <= 1 && (i = e.height), { x: n.offsetLeft, y: n.offsetTop, width: t, height: i };
}
function x0(n, e) {
var t = e.getRootNode && e.getRootNode();
if (n.contains(e)) return !0;
if (t && qd(t)) {
var i = e;
do {
if (i && n.isSameNode(i)) return !0;
i = i.parentNode || i.host;
} while (i);
}
return !1;
}
function sr(n) {
return yi(n).getComputedStyle(n);
}
function FT(n) {
return ["table", "td", "th"].indexOf(Ii(n)) >= 0;
}
function Xr(n) {
return ((Ao(n) ? n.ownerDocument : n.document) || window.document).documentElement;
}
function ru(n) {
return Ii(n) === "html" ? n : n.assignedSlot || n.parentNode || (qd(n) ? n.host : null) || Xr(n);
}
function am(n) {
return !Kn(n) || sr(n).position === "fixed" ? null : n.offsetParent;
}
function PT(n) {
var e = navigator.userAgent.toLowerCase().indexOf("firefox") !== -1, t = navigator.userAgent.indexOf("Trident") !== -1;
if (t && Kn(n)) {
var i = sr(n);
if (i.position === "fixed") return null;
}
var r = ru(n);
for (qd(r) && (r = r.host); Kn(r) && ["html", "body"].indexOf(Ii(r)) < 0; ) {
var s = sr(r);
if (s.transform !== "none" || s.perspective !== "none" || s.contain === "paint" || ["transform", "perspective"].indexOf(s.willChange) !== -1 || e && s.willChange === "filter" || e && s.filter && s.filter !== "none") return r;
r = r.parentNode;
}
return null;
}
function rl(n) {
for (var e = yi(n), t = am(n); t && FT(t) && sr(t).position === "static"; ) t = am(t);
return t && (Ii(t) === "html" || Ii(t) === "body" && sr(t).position === "static") ? e : t || PT(n) || e;
}
function ef(n) {
return ["top", "bottom"].indexOf(n) >= 0 ? "x" : "y";
}
function Ca(n, e, t) {
return xs(n, Bc(e, t));
}
function IT(n, e, t) {
var i = Ca(n, e, t);
return i > t ? t : i;
}
function M0() {
return { top: 0, right: 0, bottom: 0, left: 0 };
}
function w0(n) {
return Object.assign({}, M0(), n);
}
function A0(n, e) {
return e.reduce(function(t, i) {
return t[i] = n, t;
}, {});
}
var OT = function(n, e) {
return n = typeof n == "function" ? n(Object.assign({}, e.rects, { placement: e.placement })) : n, w0(typeof n != "number" ? n : A0(n, il));
};
function DT(n) {
var e, t = n.state, i = n.name, r = n.options, s = t.elements.arrow, o = t.modifiersData.popperOffsets, a = Ri(t.placement), c = ef(a), l = [Dn, Qn].indexOf(a) >= 0, d = l ? "height" : "width";
if (!(!s || !o)) {
var h = OT(r.padding, t), f = Qd(s), g = c === "y" ? On : Dn, p = c === "y" ? qn : Qn, u = t.rects.reference[d] + t.rects.reference[c] - o[c] - t.rects.popper[d], y = o[c] - t.rects.reference[c], v = rl(s), m = v ? c === "y" ? v.clientHeight || 0 : v.clientWidth || 0 : 0, x = u / 2 - y / 2, w = h[g], A = m - f[d] - h[p], M = m / 2 - f[d] / 2 + x, R = Ca(w, M, A), L = c;
t.modifiersData[i] = (e = {}, e[L] = R, e.centerOffset = R - M, e);
}
}
function NT(n) {
var e = n.state, t = n.options, i = t.element, r = i === void 0 ? "[data-popper-arrow]" : i;
r != null && (typeof r == "string" && (r = e.elements.popper.querySelector(r), !r) || !x0(e.elements.popper, r) || (e.elements.arrow = r));
}
var BT = { name: "arrow", enabled: !0, phase: "main", fn: DT, effect: NT, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] };
function To(n) {
return n.split("-")[1];
}
var UT = { top: "auto", right: "auto", bottom: "auto", left: "auto" };
function zT(n) {
var e = n.x, t = n.y, i = window, r = i.devicePixelRatio || 1;
return { x: So(e * r) / r || 0, y: So(t * r) / r || 0 };
}
function lm(n) {
var e, t = n.popper, i = n.popperRect, r = n.placement, s = n.variation, o = n.offsets, a = n.position, c = n.gpuAcceleration, l = n.adaptive, d = n.roundOffsets, h = n.isFixed, f = o.x, g = f === void 0 ? 0 : f, p = o.y, u = p === void 0 ? 0 : p, y = typeof d == "function" ? d({ x: g, y: u }) : { x: g, y: u };
g = y.x, u = y.y;
var v = o.hasOwnProperty("x"), m = o.hasOwnProperty("y"), x = Dn, w = On, A = window;
if (l) {
var M = rl(t), R = "clientHeight", L = "clientWidth";
if (M === yi(t) && (M = Xr(t), sr(M).position !== "static" && a === "absolute" && (R = "scrollHeight", L = "scrollWidth")), M = M, r === On || (r === Dn || r === Qn) && s === Ua) {
w = qn;
var T = h && M === A && A.visualViewport ? A.visualViewport.height : M[R];
u -= T - i.height, u *= c ? 1 : -1;
}
if (r === Dn || (r === On || r === qn) && s === Ua) {
x = Qn;
var P = h && M === A && A.visualViewport ? A.visualViewport.width : M[L];
g -= P - i.width, g *= c ? 1 : -1;
}
}
var _ = Object.assign({ position: a }, l && UT), S = d === !0 ? zT({ x: g, y: u }) : { x: g, y: u };
if (g = S.x, u = S.y, c) {
var E;
return Object.assign({}, _, (E = {}, E[w] = m ? "0" : "", E[x] = v ? "0" : "", E.transform = (A.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + u + "px)" : "translate3d(" + g + "px, " + u + "px, 0)", E));
}
return Object.assign({}, _, (e = {}, e[w] = m ? u + "px" : "", e[x] = v ? g + "px" : "", e.transform = "", e));
}
function kT(n) {
var e = n.state, t = n.options, i = t.gpuAcceleration, r = i === void 0 ? !0 : i, s = t.adaptive, o = s === void 0 ? !0 : s, a = t.roundOffsets, c = a === void 0 ? !0 : a, l = { placement: Ri(e.placement), variation: To(e.placement), popper: e.elements.popper, popperRect: e.rects.popper, gpuAcceleration: r, isFixed: e.options.strategy === "fixed" };
e.modifiersData.popperOffsets != null && (e.styles.popper = Object.assign({}, e.styles.popper, lm(Object.assign({}, l, { offsets: e.modifiersData.popperOffsets, position: e.options.strategy, adaptive: o, roundOffsets: c })))), e.modifiersData.arrow != null && (e.styles.arrow = Object.assign({}, e.styles.arrow, lm(Object.assign({}, l, { offsets: e.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: c })))), e.attributes.popper = Object.assign({}, e.attributes.popper, { "data-popper-placement": e.placement });
}
var S0 = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: kT, data: {} }, Tl = { passive: !0 };
function VT(n) {
var e = n.state, t = n.instance, i = n.options, r = i.scroll, s = r === void 0 ? !0 : r, o = i.resize, a = o === void 0 ? !0 : o, c = yi(e.elements.popper), l = [].concat(e.scrollParents.reference, e.scrollParents.popper);
return s && l.forEach(function(d) {
d.addEventListener("scroll", t.update, Tl);
}), a && c.addEventListener("resize", t.update, Tl), function() {
s && l.forEach(function(d) {
d.removeEventListener("scroll", t.update, Tl);
}), a && c.removeEventListener("resize", t.update, Tl);
};
}
var _0 = { name: "eventListeners", enabled: !0, phase: "write", fn: function() {
}, effect: VT, data: {} }, GT = { left: "right", right: "left", bottom: "top", top: "bottom" };
function Tc(n) {
return n.replace(/left|right|bottom|top/g, function(e) {
return GT[e];
});
}
var HT = { start: "end", end: "start" };
function cm(n) {
return n.replace(/start|end/g, function(e) {
return HT[e];
});
}
function tf(n) {
var e = yi(n), t = e.pageXOffset, i = e.pageYOffset;
return { scrollLeft: t, scrollTop: i };
}
function nf(n) {
return _o(Xr(n)).left + tf(n).scrollLeft;
}
function WT(n) {
var e = yi(n), t = Xr(n), i = e.visualViewport, r = t.clientWidth, s = t.clientHeight, o = 0, a = 0;
return i && (r = i.width, s = i.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (o = i.offsetLeft, a = i.offsetTop)), { width: r, height: s, x: o + nf(n), y: a };
}
function jT(n) {
var e, t = Xr(n), i = tf(n), r = (e = n.ownerDocument) == null ? void 0 : e.body, s = xs(t.scrollWidth, t.clientWidth, r ? r.scrollWidth : 0, r ? r.clientWidth : 0), o = xs(t.scrollHeight, t.clientHeight, r ? r.scrollHeight : 0, r ? r.clientHeight : 0), a = -i.scrollLeft + nf(n), c = -i.scrollTop;
return sr(r || t).direction === "rtl" && (a += xs(t.clientWidth, r ? r.clientWidth : 0) - s), { width: s, height: o, x: a, y: c };
}
function rf(n) {
var e = sr(n), t = e.overflow, i = e.overflowX, r = e.overflowY;
return /auto|scroll|overlay|hidden/.test(t + r + i);
}
function T0(n) {
return ["html", "body", "#document"].indexOf(Ii(n)) >= 0 ? n.ownerDocument.body : Kn(n) && rf(n) ? n : T0(ru(n));
}
function La(n, e) {
var t;
e === void 0 && (e = []);
var i = T0(n), r = i === ((t = n.ownerDocument) == null ? void 0 : t.body), s = yi(i), o = r ? [s].concat(s.visualViewport || [], rf(i) ? i : []) : i, a = e.concat(o);
return r ? a : a.concat(La(ru(o)));
}
function Xh(n) {
return Object.assign({}, n, { left: n.x, top: n.y, right: n.x + n.width, bottom: n.y + n.height });
}
function $T(n) {
var e = _o(n);
return e.top = e.top + n.clientTop, e.left = e.left + n.clientLeft, e.bottom = e.top + n.clientHeight, e.right = e.left + n.clientWidth, e.width = n.clientWidth, e.height = n.clientHeight, e.x = e.left, e.y = e.top, e;
}
function um(n, e) {
return e === y0 ? Xh(WT(n)) : Ao(e) ? $T(e) : Xh(jT(Xr(n)));
}
function ZT(n) {
var e = La(ru(n)), t = ["absolute", "fixed"].indexOf(sr(n).position) >= 0, i = t && Kn(n) ? rl(n) : n;
return Ao(i) ? e.filter(function(r) {
return Ao(r) && x0(r, i) && Ii(r) !== "body";
}) : [];
}
function XT(n, e, t) {
var i = e === "clippingParents" ? ZT(n) : [].concat(e), r = [].concat(i, [t]), s = r[0], o = r.reduce(function(a, c) {
var l = um(n, c);
return a.top = xs(l.top, a.top), a.right = Bc(l.right, a.right), a.bottom = Bc(l.bottom, a.bottom), a.left = xs(l.left, a.left), a;
}, um(n, s));
return o.width = o.right - o.left, o.height = o.bottom - o.top, o.x = o.left, o.y = o.top, o;
}
function E0(n) {
var e = n.reference, t = n.element, i = n.placement, r = i ? Ri(i) : null, s = i ? To(i) : null, o = e.x + e.width / 2 - t.width / 2, a = e.y + e.height / 2 - t.height / 2, c;
switch (r) {
case On:
c = { x: o, y: e.y - t.height };
break;
case qn:
c = { x: o, y: e.y + e.height };
break;
case Qn:
c = { x: e.x + e.width, y: a };
break;
case Dn:
c = { x: e.x - t.width, y: a };
break;
default:
c = { x: e.x, y: e.y };
}
var l = r ? ef(r) : null;
if (l != null) {
var d = l === "y" ? "height" : "width";
switch (s) {
case wo:
c[l] = c[l] - (e[d] / 2 - t[d] / 2);
break;
case Ua:
c[l] = c[l] + (e[d] / 2 - t[d] / 2);
break;
}
}
return c;
}
function za(n, e) {
e === void 0 && (e = {});
var t = e, i = t.placement, r = i === void 0 ? n.placement : i, s = t.boundary, o = s === void 0 ? vT : s, a = t.rootBoundary, c = a === void 0 ? y0 : a, l = t.elementContext, d = l === void 0 ? ua : l, h = t.altBoundary, f = h === void 0 ? !1 : h, g = t.padding, p = g === void 0 ? 0 : g, u = w0(typeof p != "number" ? p : A0(p, il)), y = d === ua ? yT : ua, v = n.rects.popper, m = n.elements[f ? y : d], x = XT(Ao(m) ? m : m.contextElement || Xr(n.elements.popper), o, c), w = _o(n.elements.reference), A = E0({ reference: w, element: v, strategy: "absolute", placement: r }), M = Xh(Object.assign({}, v, A)), R = d === ua ? M : w, L = { top: x.top - R.top + u.top, bottom: R.bottom - x.bottom + u.bottom, left: x.left - R.left + u.left, right: R.right - x.right + u.right }, T = n.modifiersData.offset;
if (d === ua && T) {
var P = T[r];
Object.keys(L).forEach(function(_) {
var S = [Qn, qn].indexOf(_) >= 0 ? 1 : -1, E = [On, qn].indexOf(_) >= 0 ? "y" : "x";
L[_] += P[E] * S;
});
}
return L;
}
function YT(n, e) {
e === void 0 && (e = {});
var t = e, i = t.placement, r = t.boundary, s = t.rootBoundary, o = t.padding, a = t.flipVariations, c = t.allowedAutoPlacements, l = c === void 0 ? Yo : c, d = To(i), h = d ? a ? om : om.filter(function(p) {
return To(p) === d;
}) : il, f = h.filter(function(p) {
return l.indexOf(p) >= 0;
});
f.length === 0 && (f = h);
var g = f.reduce(function(p, u) {
return p[u] = za(n, { placement: u, boundary: r, rootBoundary: s, padding: o })[Ri(u)], p;
}, {});
return Object.keys(g).sort(function(p, u) {
return g[p] - g[u];
});
}
function JT(n) {
if (Ri(n) === Kd) return [];
var e = Tc(n);
return [cm(n), e, cm(e)];
}
function KT(n) {
var e = n.state, t = n.options, i = n.name;
if (!e.modifiersData[i]._skip) {
for (var r = t.mainAxis, s = r === void 0 ? !0 : r, o = t.altAxis, a = o === void 0 ? !0 : o, c = t.fallbackPlacements, l = t.padding, d = t.boundary, h = t.rootBoundary, f = t.altBoundary, g = t.flipVariations, p = g === void 0 ? !0 : g, u = t.allowedAutoPlacements, y = e.options.placement, v = Ri(y), m = v === y, x = c || (m || !p ? [Tc(y)] : JT(y)), w = [y].concat(x).reduce(function(te, ae) {
return te.concat(Ri(ae) === Kd ? YT(e, { placement: ae, boundary: d, rootBoundary: h, padding: l, flipVariations: p, allowedAutoPlacements: u }) : ae);
}, []), A = e.rects.reference, M = e.rects.popper, R = /* @__PURE__ */ new Map(), L = !0, T = w[0], P = 0; P < w.length; P++) {
var _ = w[P], S = Ri(_), E = To(_) === wo, C = [On, qn].indexOf(S) >= 0, I = C ? "width" : "height", b = za(e, { placement: _, boundary: d, rootBoundary: h, altBoundary: f, padding: l }), F = C ? E ? Qn : Dn : E ? qn : On;
A[I] > M[I] && (F = Tc(F));
var D = Tc(F), N = [];
if (s && N.push(b[S] <= 0), a && N.push(b[F] <= 0, b[D] <= 0), N.every(function(te) {
return te;
})) {
T = _, L = !1;
break;
}
R.set(_, N);
}
if (L) for (var B = p ? 3 : 1, U = function(te) {
var ae = w.find(function(ie) {
var le = R.get(ie);
if (le) return le.slice(0, te).every(function(W) {
return W;
});
});
if (ae) return T = ae, "break";
}, G = B; G > 0; G--) {
var Y = U(G);
if (Y === "break") break;
}
e.placement !== T && (e.modifiersData[i]._skip = !0, e.placement = T, e.reset = !0);
}
}
var qT = { name: "flip", enabled: !0, phase: "main", fn: KT, requiresIfExists: ["offset"], data: { _skip: !1 } };
function hm(n, e, t) {
return t === void 0 && (t = { x: 0, y: 0 }), { top: n.top - e.height - t.y, right: n.right - e.width + t.x, bottom: n.bottom - e.height + t.y, left: n.left - e.width - t.x };
}
function dm(n) {
return [On, Qn, qn, Dn].some(function(e) {
return n[e] >= 0;
});
}
function QT(n) {
var e = n.state, t = n.name, i = e.rects.reference, r = e.rects.popper, s = e.modifiersData.preventOverflow, o = za(e, { elementContext: "reference" }), a = za(e, { altBoundary: !0 }), c = hm(o, i), l = hm(a, r, s), d = dm(c), h = dm(l);
e.modifiersData[t] = { referenceClippingOffsets: c, popperEscapeOffsets: l, isReferenceHidden: d, hasPopperEscaped: h }, e.attributes.popper = Object.assign({}, e.attributes.popper, { "data-popper-reference-hidden": d, "data-popper-escaped": h });
}
var eE = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: QT };
function tE(n, e, t) {
var i = Ri(n), r = [Dn, On].indexOf(i) >= 0 ? -1 : 1, s = typeof t == "function" ? t(Object.assign({}, e, { placement: n })) : t, o = s[0], a = s[1];
return o = o || 0, a = (a || 0) * r, [Dn, Qn].indexOf(i) >= 0 ? { x: a, y: o } : { x: o, y: a };
}
function nE(n) {
var e = n.state, t = n.options, i = n.name, r = t.offset, s = r === void 0 ? [0, 0] : r, o = Yo.reduce(function(d, h) {
return d[h] = tE(h, e.rects, s), d;
}, {}), a = o[e.placement], c = a.x, l = a.y;
e.modifiersData.popperOffsets != null && (e.modifiersData.popperOffsets.x += c, e.modifiersData.popperOffsets.y += l), e.modifiersData[i] = o;
}
var iE = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: nE };
function rE(n) {
var e = n.state, t = n.name;
e.modifiersData[t] = E0({ reference: e.rects.reference, element: e.rects.popper, strategy: "absolute", placement: e.placement });
}
var C0 = { name: "popperOffsets", enabled: !0, phase: "read", fn: rE, data: {} };
function sE(n) {
return n === "x" ? "y" : "x";
}
function oE(n) {
var e = n.state, t = n.options, i = n.name, r = t.mainAxis, s = r === void 0 ? !0 : r, o = t.altAxis, a = o === void 0 ? !1 : o, c = t.boundary, l = t.rootBoundary, d = t.altBoundary, h = t.padding, f = t.tether, g = f === void 0 ? !0 : f, p = t.tetherOffset, u = p === void 0 ? 0 : p, y = za(e, { boundary: c, rootBoundary: l, padding: h, altBoundary: d }), v = Ri(e.placement), m = To(e.placement), x = !m, w = ef(v), A = sE(w), M = e.modifiersData.popperOffsets, R = e.rects.reference, L = e.rects.popper, T = typeof u == "function" ? u(Object.assign({}, e.rects, { placement: e.placement })) : u, P = typeof T == "number" ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), _ = e.modifiersData.offset ? e.modifiersData.offset[e.placement] : null, S = { x: 0, y: 0 };
if (M) {
if (s) {
var E, C = w === "y" ? On : Dn, I = w === "y" ? qn : Qn, b = w === "y" ? "height" : "width", F = M[w], D = F + y[C], N = F - y[I], B = g ? -L[b] / 2 : 0, U = m === wo ? R[b] : L[b], G = m === wo ? -L[b] : -R[b], Y = e.elements.arrow, te = g && Y ? Qd(Y) : { width: 0, height: 0 }, ae = e.modifiersData["arrow#persistent"] ? e.modifiersData["arrow#persistent"].padding : M0(), ie = ae[C], le = ae[I], W = Ca(0, R[b], te[b]), $ = x ? R[b] / 2 - B - W - ie - P.mainAxis : U - W - ie - P.mainAxis, j = x ? -R[b] / 2 + B + W + le + P.mainAxis : G + W + le + P.mainAxis, re = e.elements.arrow && rl(e.elements.arrow), k = re ? w === "y" ? re.clientTop || 0 : re.clientLeft || 0 : 0, H = (E = _ == null ? void 0 : _[w]) != null ? E : 0, K = F + $ - H - k, ce = F + j - H, se = Ca(g ? Bc(D, K) : D, F, g ? xs(N, ce) : N);
M[w] = se, S[w] = se - F;
}
if (a) {
var V, O = w === "x" ? On : Dn, Z = w === "x" ? qn : Qn, X = M[A], ee = A === "y" ? "height" : "width", fe = X + y[O], be = X - y[Z], Ae = [On, Dn].indexOf(v) !== -1, he = (V = _ == null ? void 0 : _[A]) != null ? V : 0, xe = Ae ? fe : X - R[ee] - L[ee] - he + P.altAxis, ne = Ae ? X + R[ee] + L[ee] - he - P.altAxis : be, me = g && Ae ? IT(xe, X, ne) : Ca(g ? xe : fe, X, g ? ne : be);
M[A] = me, S[A] = me - X;
}
e.modifiersData[i] = S;
}
}
var aE = { name: "preventOverflow", enabled: !0, phase: "main", fn: oE, requiresIfExists: ["offset"] };
function lE(n) {
return { scrollLeft: n.scrollLeft, scrollTop: n.scrollTop };
}
function cE(n) {
return n === yi(n) || !Kn(n) ? tf(n) : lE(n);
}
function uE(n) {
var e = n.getBoundingClientRect(), t = So(e.width) / n.offsetWidth || 1, i = So(e.height) / n.offsetHeight || 1;
return t !== 1 || i !== 1;
}
function hE(n, e, t) {
t === void 0 && (t = !1);
var i = Kn(e), r = Kn(e) && uE(e), s = Xr(e), o = _o(n, r), a = { scrollLeft: 0, scrollTop: 0 }, c = { x: 0, y: 0 };
return (i || !i && !t) && ((Ii(e) !== "body" || rf(s)) && (a = cE(e)), Kn(e) ? (c = _o(e, !0), c.x += e.clientLeft, c.y += e.clientTop) : s && (c.x = nf(s))), { x: o.left + a.scrollLeft - c.x, y: o.top + a.scrollTop - c.y, width: o.width, height: o.height };
}
function dE(n) {
var e = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Set(), i = [];
n.forEach(function(s) {
e.set(s.name, s);
});
function r(s) {
t.add(s.name);
var o = [].concat(s.requires || [], s.requiresIfExists || []);
o.forEach(function(a) {
if (!t.has(a)) {
var c = e.get(a);
c && r(c);
}
}), i.push(s);
}
return n.forEach(function(s) {
t.has(s.name) || r(s);
}), i;
}
function fE(n) {
var e = dE(n);
return CT.reduce(function(t, i) {
return t.concat(e.filter(function(r) {
return r.phase === i;
}));
}, []);
}
function pE(n) {
var e;
return function() {
return e || (e = new Promise(function(t) {
Promise.resolve().then(function() {
e = void 0, t(n());
});
})), e;
};
}
function mE(n) {
var e = n.reduce(function(t, i) {
var r = t[i.name];
return t[i.name] = r ? Object.assign({}, r, i, { options: Object.assign({}, r.options, i.options), data: Object.assign({}, r.data, i.data) }) : i, t;
}, {});
return Object.keys(e).map(function(t) {
return e[t];
});
}
var fm = { placement: "bottom", modifiers: [], strategy: "absolute" };
function pm() {
for (var n = arguments.length, e = new Array(n), t = 0; t < n; t++) e[t] = arguments[t];
return !e.some(function(i) {
return !(i && typeof i.getBoundingClientRect == "function");
});
}
function sf(n) {
n === void 0 && (n = {});
var e = n, t = e.defaultModifiers, i = t === void 0 ? [] : t, r = e.defaultOptions, s = r === void 0 ? fm : r;
return function(o, a, c) {
c === void 0 && (c = s);
var l = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, fm, s), modifiersData: {}, elements: { reference: o, popper: a }, attributes: {}, styles: {} }, d = [], h = !1, f = { state: l, setOptions: function(u) {
var y = typeof u == "function" ? u(l.options) : u;
p(), l.options = Object.assign({}, s, l.options, y), l.scrollParents = { reference: Ao(o) ? La(o) : o.contextElement ? La(o.contextElement) : [], popper: La(a) };
var v = fE(mE([].concat(i, l.options.modifiers)));
return l.orderedModifiers = v.filter(function(m) {
return m.enabled;
}), g(), f.update();
}, forceUpdate: function() {
if (!h) {
var u = l.elements, y = u.reference, v = u.popper;
if (pm(y, v)) {
l.rects = { reference: hE(y, rl(v), l.options.strategy === "fixed"), popper: Qd(v) }, l.reset = !1, l.placement = l.options.placement, l.orderedModifiers.forEach(function(L) {
return l.modifiersData[L.name] = Object.assign({}, L.data);
});
for (var m = 0; m < l.orderedModifiers.length; m++) {
if (l.reset === !0) {
l.reset = !1, m = -1;
continue;
}
var x = l.orderedModifiers[m], w = x.fn, A = x.options, M = A === void 0 ? {} : A, R = x.name;
typeof w == "function" && (l = w({ state: l, options: M, name: R, instance: f }) || l);
}
}
}
}, update: pE(function() {
return new Promise(function(u) {
f.forceUpdate(), u(l);
});
}), destroy: function() {
p(), h = !0;
} };
if (!pm(o, a)) return f;
f.setOptions(c).then(function(u) {
!h && c.onFirstUpdate && c.onFirstUpdate(u);
});
function g() {
l.orderedModifiers.forEach(function(u) {
var y = u.name, v = u.options, m = v === void 0 ? {} : v, x = u.effect;
if (typeof x == "function") {
var w = x({ state: l, name: y, instance: f, options: m }), A = function() {
};
d.push(w || A);
}
});
}
function p() {
d.forEach(function(u) {
return u();
}), d = [];
}
return f;
};
}
sf();
var gE = [_0, C0, S0, b0];
sf({ defaultModifiers: gE });
var vE = [_0, C0, S0, b0, iE, qT, aE, BT, eE], yE = sf({ defaultModifiers: vE });
const bE = (n, e, t = {}) => {
const i = {
name: "updateState",
enabled: !0,
phase: "write",
fn: ({ state: c }) => {
const l = xE(c);
Object.assign(o.value, l);
},
requires: ["computeStyles"]
}, r = ue(() => {
const { onFirstUpdate: c, placement: l, strategy: d, modifiers: h } = z(t);
return {
onFirstUpdate: c,
placement: l || "bottom",
strategy: d || "absolute",
modifiers: [
...h || [],
i,
{ name: "applyStyles", enabled: !1 }
]
};
}), s = En(), o = Ee({
styles: {
popper: {
position: z(r).strategy,
left: "0",
top: "0"
},
arrow: {
position: "absolute"
}
},
attributes: {}
}), a = () => {
s.value && (s.value.destroy(), s.value = void 0);
};
return Qe(r, (c) => {
const l = z(s);
l && l.setOptions(c);
}, {
deep: !0
}), Qe([n, e], ([c, l]) => {
a(), !(!c || !l) && (s.value = yE(c, l, z(r)));
}), ei(() => {
a();
}), {
state: ue(() => {
var c;
return { ...((c = z(s)) == null ? void 0 : c.state) || {} };
}),
styles: ue(() => z(o).styles),
attributes: ue(() => z(o).attributes),
update: () => {
var c;
return (c = z(s)) == null ? void 0 : c.update();
},
forceUpdate: () => {
var c;
return (c = z(s)) == null ? void 0 : c.forceUpdate();
},
instanceRef: ue(() => z(s))
};
};
function xE(n) {
const e = Object.keys(n.elements), t = Ic(e.map((r) => [r, n.styles[r] || {}])), i = Ic(e.map((r) => [r, n.attributes[r]]));
return {
styles: t,
attributes: i
};
}
function mm() {
let n;
const e = (i, r) => {
t(), n = window.setTimeout(i, r);
}, t = () => window.clearTimeout(n);
return Yc(() => t()), {
registerTimeout: e,
cancelTimeout: t
};
}
const Yh = {
prefix: Math.floor(Math.random() * 1e4),
current: 0
}, ME = Symbol("elIdInjection"), of = () => dn() ? pt(ME, Yh) : Yh, sl = (n) => {
const e = of();
!en && e === Yh && kt("IdInjection", `Looks like you are using server rendering, you must provide a id provider to ensure the hydration process to be succeed
usage: app.provide(ID_INJECTION_KEY, {
prefix: number,
current: number,
})`);
const t = Jd();
return ue(() => z(n) || `${t.value}-id-${e.prefix}-${e.current++}`);
};
let fo = [];
const gm = (n) => {
const e = n;
e.key === Li.esc && fo.forEach((t) => t(e));
}, wE = (n) => {
Jt(() => {
fo.length === 0 && document.addEventListener("keydown", gm), en && fo.push(n);
}), ei(() => {
fo = fo.filter((e) => e !== n), fo.length === 0 && en && document.removeEventListener("keydown", gm);
});
};
let vm;
const L0 = () => {
const n = Jd(), e = of(), t = ue(() => `${n.value}-popper-container-${e.prefix}`), i = ue(() => `#${t.value}`);
return {
id: t,
selector: i
};
}, AE = (n) => {
const e = document.createElement("div");
return e.id = n, document.body.appendChild(e), e;
}, SE = () => {
const { id: n, selector: e } = L0();
return kM(() => {
en && (process.env.NODE_ENV === "test" || !vm || !document.body.querySelector(e.value)) && (vm = AE(n.value));
}), {
id: n,
selector: e
};
}, _E = at({
showAfter: {
type: Number,
default: 0
},
hideAfter: {
type: Number,
default: 200
},
autoClose: {
type: Number,
default: 0
}
}), TE = ({
showAfter: n,
hideAfter: e,
autoClose: t,
open: i,
close: r
}) => {
const { registerTimeout: s } = mm(), {
registerTimeout: o,
cancelTimeout: a
} = mm();
return {
onOpen: (d) => {
s(() => {
i(d);
const h = z(t);
yt(h) && h > 0 && o(() => {
r(d);
}, h);
}, z(n));
},
onClose: (d) => {
a(), s(() => {
r(d);
}, z(e));
}
};
}, R0 = Symbol("elForwardRef"), EE = (n) => {
sn(R0, {
setForwardRef: (t) => {
n.value = t;
}
});
}, CE = (n) => ({
mounted(e) {
n(e);
},
updated(e) {
n(e);
},
unmounted() {
n(null);
}
}), ym = {
current: 0
}, bm = Ee(0), F0 = 2e3, xm = Symbol("elZIndexContextKey"), P0 = Symbol("zIndexContextKey"), I0 = (n) => {
const e = dn() ? pt(xm, ym) : ym, t = n || (dn() ? pt(P0, void 0) : void 0), i = ue(() => {
const o = z(t);
return yt(o) ? o : F0;
}), r = ue(() => i.value + bm.value), s = () => (e.current++, bm.value = e.current, r.value);
return !en && !pt(xm) && kt("ZIndexInjection", `Looks like you are using server rendering, you must provide a z-index provider to ensure the hydration process to be succeed
usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`), {
initialZIndex: i,
currentZIndex: r,
nextZIndex: s
};
};
function LE(n) {
let e;
function t() {
if (n.value == null)
return;
const { selectionStart: r, selectionEnd: s, value: o } = n.value;
if (r == null || s == null)
return;
const a = o.slice(0, Math.max(0, r)), c = o.slice(Math.max(0, s));
e = {
selectionStart: r,
selectionEnd: s,
value: o,
beforeTxt: a,
afterTxt: c
};
}
function i() {
if (n.value == null || e == null)
return;
const { value: r } = n.value, { beforeTxt: s, afterTxt: o, selectionStart: a } = e;
if (s == null || o == null || a == null)
return;
let c = r.length;
if (r.endsWith(o))
c = r.length - o.length;
else if (r.startsWith(s))
c = s.length;
else {
const l = s[a - 1], d = r.indexOf(l, a - 1);
d !== -1 && (c = d + 1);
}
n.value.setSelectionRange(c, c);
}
return [t, i];
}
const RE = (n, e, t) => Sc(n.subTree).filter((s) => {
var o;
return Uh(s) && ((o = s.type) == null ? void 0 : o.name) === e && !!s.component;
}).map((s) => s.component.uid).map((s) => t[s]).filter((s) => !!s), FE = (n, e) => {
const t = {}, i = En([]);
return {
children: i,
addChild: (o) => {
t[o.uid] = o, i.value = RE(n, e, t);
},
removeChild: (o) => {
delete t[o], i.value = i.value.filter((a) => a.uid !== o);
}
};
}, Gr = nu({
type: String,
values: f0,
required: !1
}), O0 = Symbol("size"), PE = () => {
const n = pt(O0, {});
return ue(() => z(n.size) || "");
};
function D0(n, {
beforeFocus: e,
afterFocus: t,
beforeBlur: i,
afterBlur: r
} = {}) {
const s = dn(), { emit: o } = s, a = En(), c = Ee(!1), l = (f) => {
Sn(e) && e(f) || c.value || (c.value = !0, o("focus", f), t == null || t());
}, d = (f) => {
var g;
Sn(i) && i(f) || f.relatedTarget && ((g = a.value) != null && g.contains(f.relatedTarget)) || (c.value = !1, o("blur", f), r == null || r());
}, h = () => {
var f, g;
(f = a.value) != null && f.contains(document.activeElement) && a.value !== document.activeElement || (g = n.value) == null || g.focus();
};
return Qe(a, (f) => {
f && f.setAttribute("tabindex", "-1");
}), un(a, "focus", l, !0), un(a, "blur", d, !0), un(a, "click", h, !0), process.env.NODE_ENV === "test" && Jt(() => {
const f = ys(n.value) ? n.value : document.querySelector("input,textarea");
f && (un(f, "focus", l, !0), un(f, "blur", d, !0));
}), {
isFocused: c,
wrapperRef: a,
handleFocus: l,
handleBlur: d
};
}
function N0({
afterComposition: n,
emit: e
}) {
const t = Ee(!1), i = (a) => {
e == null || e("compositionstart", a), t.value = !0;
}, r = (a) => {
var c;
e == null || e("compositionupdate", a);
const l = (c = a.target) == null ? void 0 : c.value, d = l[l.length - 1] || "";
t.value = !sT(d);
}, s = (a) => {
e == null || e("compositionend", a), t.value && (t.value = !1, bt(() => n(a)));
};
return {
isComposing: t,
handleComposition: (a) => {
a.type === "compositionend" ? s(a) : r(a);
},
handleCompositionStart: i,
handleCompositionUpdate: r,
handleCompositionEnd: s
};
}
const B0 = Symbol("emptyValuesContextKey"), IE = "use-empty-values", OE = ["", void 0, null], DE = void 0, NE = at({
emptyValues: Array,
valueOnClear: {
type: [String, Number, Boolean, Function],
default: void 0,
validator: (n) => Sn(n) ? !n() : !n
}
}), BE = (n, e) => {
const t = dn() ? pt(B0, Ee({})) : Ee({}), i = ue(() => n.emptyValues || t.value.emptyValues || OE), r = ue(() => Sn(n.valueOnClear) ? n.valueOnClear() : n.valueOnClear !== void 0 ? n.valueOnClear : Sn(t.value.valueOnClear) ? t.value.valueOnClear() : t.value.valueOnClear !== void 0 ? t.value.valueOnClear : DE), s = (o) => i.value.includes(o);
return i.value.includes(r.value) || kt(IE, "value-on-clear should be a value of empty-values"), {
emptyValues: i,
valueOnClear: r,
isEmptyValue: s
};
}, UE = at({
ariaLabel: String,
ariaOrientation: {
type: String,
values: ["horizontal", "vertical", "undefined"]
},
ariaControls: String
}), Yr = (n) => I_(UE, n), U0 = Symbol(), Uc = Ee();
function af(n, e = void 0) {
const t = dn() ? pt(U0, Uc) : Uc;
return n ? ue(() => {
var i, r;
return (r = (i = t.value) == null ? void 0 : i[n]) != null ? r : e;
}) : t;
}
function zE(n, e) {
const t = af(), i = nt(n, ue(() => {
var a;
return ((a = t.value) == null ? void 0 : a.namespace) || _c;
})), r = iu(ue(() => {
var a;
return (a = t.value) == null ? void 0 : a.locale;
})), s = I0(ue(() => {
var a;
return ((a = t.value) == null ? void 0 : a.zIndex) || F0;
})), o = ue(() => {
var a;
return z(e) || ((a = t.value) == null ? void 0 : a.size) || "";
});
return kE(ue(() => z(t) || {})), {
ns: i,
locale: r,
zIndex: s,
size: o
};
}
const kE = (n, e, t = !1) => {
var i;
const r = !!dn(), s = r ? af() : void 0, o = (i = void 0) != null ? i : r ? sn : void 0;
if (!o) {
kt("provideGlobalConfig", "provideGlobalConfig() can only be used inside setup().");
return;
}
const a = ue(() => {
const c = z(n);
return s != null && s.value ? VE(s.value, c) : c;
});
return o(U0, a), o(m0, ue(() => a.value.locale)), o(g0, ue(() => a.value.namespace)), o(P0, ue(() => a.value.zIndex)), o(O0, {
size: ue(() => a.value.size || "")
}), o(B0, ue(() => ({
emptyValues: a.value.emptyValues,
valueOnClear: a.value.valueOnClear
}))), (t || !Uc.value) && (Uc.value = a.value), a;
}, VE = (n, e) => {
const t = [.../* @__PURE__ */ new Set([...rm(n), ...rm(e)])], i = {};
for (const r of t)
i[r] = e[r] !== void 0 ? e[r] : n[r];
return i;
};
var st = (n, e) => {
const t = n.__vccOpts || n;
for (const [i, r] of e)
t[i] = r;
return t;
};
const GE = at({
size: {
type: Je([Number, String])
},
color: {
type: String
}
}), HE = Pe({
name: "ElIcon",
inheritAttrs: !1
}), WE = /* @__PURE__ */ Pe({
...HE,
props: GE,
setup(n) {
const e = n, t = nt("icon"), i = ue(() => {
const { size: r, color: s } = e;
return !r && !s ? {} : {
fontSize: di(r) ? void 0 : Dc(r),
"--color": s
};
});
return (r, s) => (ve(), Ce("i", Ei({
class: z(t).b(),
style: z(i)
}, r.$attrs), [
He(r.$slots, "default")
], 16));
}
});
var jE = /* @__PURE__ */ st(WE, [["__file", "icon.vue"]]);
const It = on(jE), lf = Symbol("formContextKey"), zc = Symbol("formItemContextKey"), Ns = (n, e = {}) => {
const t = Ee(void 0), i = e.prop ? t : v0("size"), r = e.global ? t : PE(), s = e.form ? { size: void 0 } : pt(lf, void 0), o = e.formItem ? { size: void 0 } : pt(zc, void 0);
return ue(() => i.value || z(n) || (o == null ? void 0 : o.size) || (s == null ? void 0 : s.size) || r.value || "");
}, ol = (n) => {
const e = v0("disabled"), t = pt(lf, void 0);
return ue(() => e.value || z(n) || (t == null ? void 0 : t.disabled) || !1);
}, Jo = () => {
const n = pt(lf, void 0), e = pt(zc, void 0);
return {
form: n,
formItem: e
};
}, su = (n, {
formItemContext: e,
disableIdGeneration: t,
disableIdManagement: i
}) => {
t || (t = Ee(!1)), i || (i = Ee(!1));
const r = Ee();
let s;
const o = ue(() => {
var a;
return !!(!(n.label || n.ariaLabel) && e && e.inputIds && ((a = e.inputIds) == null ? void 0 : a.length) <= 1);
});
return Jt(() => {
s = Qe([hi(n, "id"), t], ([a, c]) => {
const l = a ?? (c ? void 0 : sl().value);
l !== r.value && (e != null && e.removeInputId && (r.value && e.removeInputId(r.value), !(i != null && i.value) && !c && l && e.addInputId(l)), r.value = l);
}, { immediate: !0 });
}), Uv(() => {
s && s(), e != null && e.removeInputId && r.value && e.removeInputId(r.value);
}), {
isLabeledByFormItem: o,
inputId: r
};
};
let ii;
const $E = `
height:0 !important;
visibility:hidden !important;
${Ow() ? "" : "overflow:hidden !important;"}
position:absolute !important;
z-index:-1000 !important;
top:0 !important;
right:0 !important;
`, ZE = [
"letter-spacing",
"line-height",
"padding-top",
"padding-bottom",
"font-family",
"font-weight",
"font-size",
"text-rendering",
"text-transform",
"width",
"text-indent",
"padding-left",
"padding-right",
"border-width",
"box-sizing"
];
function XE(n) {
const e = window.getComputedStyle(n), t = e.getPropertyValue("box-sizing"), i = Number.parseFloat(e.getPropertyValue("padding-bottom")) + Number.parseFloat(e.getPropertyValue("padding-top")), r = Number.parseFloat(e.getPropertyValue("border-bottom-width")) + Number.parseFloat(e.getPropertyValue("border-top-width"));
return { contextStyle: ZE.map((o) => `${o}:${e.getPropertyValue(o)}`).join(";"), paddingSize: i, borderSize: r, boxSizing: t };
}
function Mm(n, e = 1, t) {
var i;
ii || (ii = document.createElement("textarea"), document.body.appendChild(ii));
const { paddingSize: r, borderSize: s, boxSizing: o, contextStyle: a } = XE(n);
ii.setAttribute("style", `${a};${$E}`), ii.value = n.value || n.placeholder || "";
let c = ii.scrollHeight;
const l = {};
o === "border-box" ? c = c + s : o === "content-box" && (c = c - r), ii.value = "";
const d = ii.scrollHeight - r;
if (yt(e)) {
let h = d * e;
o === "border-box" && (h = h + r + s), c = Math.max(h, c), l.minHeight = `${h}px`;
}
if (yt(t)) {
let h = d * t;
o === "border-box" && (h = h + r + s), c = Math.min(h, c);
}
return l.height = `${c}px`, (i = ii.parentNode) == null || i.removeChild(ii), ii = void 0, l;
}
const YE = at({
id: {
type: String,
default: void 0
},
size: Gr,
disabled: Boolean,
modelValue: {
type: Je([
String,
Number,
Object
]),
default: ""
},
maxlength: {
type: [String, Number]
},
minlength: {
type: [String, Number]
},
type: {
type: String,
default: "text"
},
resize: {
type: String,
values: ["none", "both", "horizontal", "vertical"]
},
autosize: {
type: Je([Boolean, Object]),
default: !1
},
autocomplete: {
type: String,
default: "off"
},
formatter: {
type: Function
},
parser: {
type: Function
},
placeholder: {
type: String
},
form: {
type: String
},
readonly: Boolean,
clearable: Boolean,
showPassword: Boolean,
showWordLimit: Boolean,
suffixIcon: {
type: Vr
},
prefixIcon: {
type: Vr
},
containerRole: {
type: String,
default: void 0
},
tabindex: {
type: [String, Number],
default: 0
},
validateEvent: {
type: Boolean,
default: !0
},
inputStyle: {
type: Je([Object, Array, String]),
default: () => qi({})
},
autofocus: Boolean,
rows: {
type: Number,
default: 2
},
...Yr(["ariaLabel"])
}), JE = {
[At]: (n) => vn(n),
input: (n) => vn(n),
change: (n) => vn(n),
focus: (n) => n instanceof FocusEvent,
blur: (n) => n instanceof FocusEvent,
clear: () => !0,
mouseleave: (n) => n instanceof MouseEvent,
mouseenter: (n) => n instanceof MouseEvent,
keydown: (n) => n instanceof Event,
compositionstart: (n) => n instanceof CompositionEvent,
compositionupdate: (n) => n instanceof CompositionEvent,
compositionend: (n) => n instanceof CompositionEvent
}, KE = Pe({
name: "ElInput",
inheritAttrs: !1
}), qE = /* @__PURE__ */ Pe({
...KE,
props: YE,
emits: JE,
setup(n, { expose: e, emit: t }) {
const i = n, r = VM(), s = Xc(), o = ue(() => {
const he = {};
return i.containerRole === "combobox" && (he["aria-haspopup"] = r["aria-haspopup"], he["aria-owns"] = r["aria-owns"], he["aria-expanded"] = r["aria-expanded"]), he;
}), a = ue(() => [
i.type === "textarea" ? y.b() : u.b(),
u.m(g.value),
u.is("disabled", p.value),
u.is("exceed", Y.value),
{
[u.b("group")]: s.prepend || s.append,
[u.m("prefix")]: s.prefix || i.prefixIcon,
[u.m("suffix")]: s.suffix || i.suffixIcon || i.clearable || i.showPassword,
[u.bm("suffix", "password-clear")]: N.value && B.value,
[u.b("hidden")]: i.type === "hidden"
},
r.class
]), c = ue(() => [
u.e("wrapper"),
u.is("focus", T.value)
]), l = lT({
excludeKeys: ue(() => Object.keys(o.value))
}), { form: d, formItem: h } = Jo(), { inputId: f } = su(i, {
formItemContext: h
}), g = Ns(), p = ol(), u = nt("input"), y = nt("textarea"), v = En(), m = En(), x = Ee(!1), w = Ee(!1), A = Ee(), M = En(i.inputStyle), R = ue(() => v.value || m.value), { wrapperRef: L, isFocused: T, handleFocus: P, handleBlur: _ } = D0(R, {
beforeFocus() {
return p.value;
},
afterBlur() {
var he;
i.validateEvent && ((he = h == null ? void 0 : h.validate) == null || he.call(h, "blur").catch((xe) => kt(xe)));
}
}), S = ue(() => {
var he;
return (he = d == null ? void 0 : d.statusIcon) != null ? he : !1;
}), E = ue(() => (h == null ? void 0 : h.validateState) || ""), C = ue(() => E.value && d0[E.value]), I = ue(() => w.value ? tT : Y_), b = ue(() => [
r.style
]), F = ue(() => [
i.inputStyle,
M.value,
{ resize: i.resize }
]), D = ue(() => Ci(i.modelValue) ? "" : String(i.modelValue)), N = ue(() => i.clearable && !p.value && !i.readonly && !!D.value && (T.value || x.value)), B = ue(() => i.showPassword && !p.value && !i.readonly && !!D.value && (!!D.value || T.value)), U = ue(() => i.showWordLimit && !!i.maxlength && (i.type === "text" || i.type === "textarea") && !p.value && !i.readonly && !i.showPassword), G = ue(() => D.value.length), Y = ue(() => !!U.value && G.value > Number(i.maxlength)), te = ue(() => !!s.suffix || !!i.suffixIcon || N.value || i.showPassword || U.value || !!E.value && S.value), [ae, ie] = LE(v);
Jn(m, (he) => {
if ($(), !U.value || i.resize !== "both")
return;
const xe = he[0], { width: ne } = xe.contentRect;
A.value = {
right: `calc(100% - ${ne + 15 + 6}px)`
};
});
const le = () => {
const { type: he, autosize: xe } = i;
if (!(!en || he !== "textarea" || !m.value))
if (xe) {
const ne = Tn(xe) ? xe.minRows : void 0, me = Tn(xe) ? xe.maxRows : void 0, Me = Mm(m.value, ne, me);
M.value = {
overflowY: "hidden",
...Me
}, bt(() => {
m.value.offsetHeight, M.value = Me;
});
} else
M.value = {
minHeight: Mm(m.value).minHeight
};
}, $ = ((he) => {
let xe = !1;
return () => {
var ne;
if (xe || !i.autosize)
return;
((ne = m.value) == null ? void 0 : ne.offsetParent) === null || (he(), xe = !0);
};
})(le), j = () => {
const he = R.value, xe = i.formatter ? i.formatter(D.value) : D.value;
!he || he.value === xe || (he.value = xe);
}, re = async (he) => {
ae();
let { value: xe } = he.target;
if (i.formatter && (xe = i.parser ? i.parser(xe) : xe), !H.value) {
if (xe === D.value) {
j();
return;
}
t(At, xe), t("input", xe), await bt(), j(), ie();
}
}, k = (he) => {
t("change", he.target.value);
}, {
isComposing: H,
handleCompositionStart: K,
handleCompositionUpdate: ce,
handleCompositionEnd: se
} = N0({ emit: t, afterComposition: re }), V = () => {
w.value = !w.value, O();
}, O = async () => {
var he;
await bt(), (he = R.value) == null || he.focus();
}, Z = () => {
var he;
return (he = R.value) == null ? void 0 : he.blur();
}, X = (he) => {
x.value = !1, t("mouseleave", he);
}, ee = (he) => {
x.value = !0, t("mouseenter", he);
}, fe = (he) => {
t("keydown", he);
}, be = () => {
var he;
(he = R.value) == null || he.select();
}, Ae = () => {
t(At, ""), t("change", ""), t("clear"), t("input", "");
};
return Qe(() => i.modelValue, () => {
var he;
bt(() => le()), i.validateEvent && ((he = h == null ? void 0 : h.validate) == null || he.call(h, "change").catch((xe) => kt(xe)));
}), Qe(D, () => j()), Qe(() => i.type, async () => {
await bt(), j(), le();
}), Jt(() => {
!i.formatter && i.parser && kt("ElInput", "If you set the parser, you also need to set the formatter."), j(), bt(le);
}), e({
input: v,
textarea: m,
ref: R,
textareaStyle: F,
autosize: hi(i, "autosize"),
isComposing: H,
focus: O,
blur: Z,
select: be,
clear: Ae,
resizeTextarea: le
}), (he, xe) => (ve(), Ce("div", Ei(z(o), {
class: [
z(a),
{
[z(u).bm("group", "append")]: he.$slots.append,
[z(u).bm("group", "prepend")]: he.$slots.prepend
}
],
style: z(b),
role: he.containerRole,
onMouseenter: ee,
onMouseleave: X
}), [
ke(" input "),
he.type !== "textarea" ? (ve(), Ce(Ft, { key: 0 }, [
ke(" prepend slot "),
he.$slots.prepend ? (ve(), Ce("div", {
key: 0,
class: Te(z(u).be("group", "prepend"))
}, [
He(he.$slots, "prepend")
], 2)) : ke("v-if", !0),
Ne("div", {
ref_key: "wrapperRef",
ref: L,
class: Te(z(c))
}, [
ke(" prefix slot "),
he.$slots.prefix || he.prefixIcon ? (ve(), Ce("span", {
key: 0,
class: Te(z(u).e("prefix"))
}, [
Ne("span", {
class: Te(z(u).e("prefix-inner"))
}, [
He(he.$slots, "prefix"),
he.prefixIcon ? (ve(), Ve(z(It), {
key: 0,
class: Te(z(u).e("icon"))
}, {
default: de(() => [
(ve(), Ve(Fn(he.prefixIcon)))
]),
_: 1
}, 8, ["class"])) : ke("v-if", !0)
], 2)
], 2)) : ke("v-if", !0),
Ne("input", Ei({
id: z(f),
ref_key: "input",
ref: v,
class: z(u).e("inner")
}, z(l), {
minlength: he.minlength,
maxlength: he.maxlength,
type: he.showPassword ? w.value ? "text" : "password" : he.type,
disabled: z(p),
readonly: he.readonly,
autocomplete: he.autocomplete,
tabindex: he.tabindex,
"aria-label": he.ariaLabel,
placeholder: he.placeholder,
style: he.inputStyle,
form: he.form,
autofocus: he.autofocus,
onCompositionstart: z(K),
onCompositionupdate: z(ce),
onCompositionend: z(se),
onInput: re,
onChange: k,
onKeydown: fe
}), null, 16, ["id", "minlength", "maxlength", "type", "disabled", "readonly", "autocomplete", "tabindex", "aria-label", "placeholder", "form", "autofocus", "onCompositionstart", "onCompositionupdate", "onCompositionend"]),
ke(" suffix slot "),
z(te) ? (ve(), Ce("span", {
key: 1,
class: Te(z(u).e("suffix"))
}, [
Ne("span", {
class: Te(z(u).e("suffix-inner"))
}, [
!z(N) || !z(B) || !z(U) ? (ve(), Ce(Ft, { key: 0 }, [
He(he.$slots, "suffix"),
he.suffixIcon ? (ve(), Ve(z(It), {
key: 0,
class: Te(z(u).e("icon"))
}, {
default: de(() => [
(ve(), Ve(Fn(he.suffixIcon)))
]),
_: 1
}, 8, ["class"])) : ke("v-if", !0)
], 64)) : ke("v-if", !0),
z(N) ? (ve(), Ve(z(It), {
key: 1,
class: Te([z(u).e("icon"), z(u).e("clear")]),
onMousedown: Ut(z(Oa), ["prevent"]),
onClick: Ae
}, {
default: de(() => [
oe(z(Yd))
]),
_: 1
}, 8, ["class", "onMousedown"])) : ke("v-if", !0),
z(B) ? (ve(), Ve(z(It), {
key: 2,
class: Te([z(u).e("icon"), z(u).e("password")]),
onClick: V
}, {
default: de(() => [
(ve(), Ve(Fn(z(I))))
]),
_: 1
}, 8, ["class"])) : ke("v-if", !0),
z(U) ? (ve(), Ce("span", {
key: 3,
class: Te(z(u).e("count"))
}, [
Ne("span", {
class: Te(z(u).e("count-inner"))
}, gt(z(G)) + " / " + gt(he.maxlength), 3)
], 2)) : ke("v-if", !0),
z(E) && z(C) && z(S) ? (ve(), Ve(z(It), {
key: 4,
class: Te([
z(u).e("icon"),
z(u).e("validateIcon"),
z(u).is("loading", z(E) === "validating")
])
}, {
default: de(() => [
(ve(), Ve(Fn(z(C))))
]),
_: 1
}, 8, ["class"])) : ke("v-if", !0)
], 2)
], 2)) : ke("v-if", !0)
], 2),
ke(" append slot "),
he.$slots.append ? (ve(), Ce("div", {
key: 1,
class: Te(z(u).be("group", "append"))
}, [
He(he.$slots, "append")
], 2)) : ke("v-if", !0)
], 64)) : (ve(), Ce(Ft, { key: 1 }, [
ke(" textarea "),
Ne("textarea", Ei({
id: z(f),
ref_key: "textarea",
ref: m,
class: [z(y).e("inner"), z(u).is("focus", z(T))]
}, z(l), {
minlength: he.minlength,
maxlength: he.maxlength,
tabindex: he.tabindex,
disabled: z(p),
readonly: he.readonly,
autocomplete: he.autocomplete,
style: z(F),
"aria-label": he.ariaLabel,
placeholder: he.placeholder,
form: he.form,
autofocus: he.autofocus,
rows: he.rows,
onCompositionstart: z(K),
onCompositionupdate: z(ce),
onCompositionend: z(se),
onInput: re,
onFocus: z(P),
onBlur: z(_),
onChange: k,
onKeydown: fe
}), null, 16, ["id", "minlength", "maxlength", "tabindex", "disabled", "readonly", "autocomplete", "aria-label", "placeholder", "form", "autofocus", "rows", "onCompositionstart", "onCompositionupdate", "onCompositionend", "onFocus", "onBlur"]),
z(U) ? (ve(), Ce("span", {
key: 0,
style: Rt(A.value),
class: Te(z(u).e("count"))
}, gt(z(G)) + " / " + gt(he.maxlength), 7)) : ke("v-if", !0)
], 64))
], 16, ["role"]));
}
});
var QE = /* @__PURE__ */ st(qE, [["__file", "input.vue"]]);
const e2 = on(QE), Hs = 4, t2 = {
vertical: {
offset: "offsetHeight",
scroll: "scrollTop",
scrollSize: "scrollHeight",
size: "height",
key: "vertical",
axis: "Y",
client: "clientY",
direction: "top"
},
horizontal: {
offset: "offsetWidth",
scroll: "scrollLeft",
scrollSize: "scrollWidth",
size: "width",
key: "horizontal",
axis: "X",
client: "clientX",
direction: "left"
}
}, n2 = ({
move: n,
size: e,
bar: t
}) => ({
[t.size]: e,
transform: `translate${t.axis}(${n}%)`
}), cf = Symbol("scrollbarContextKey"), i2 = at({
vertical: Boolean,
size: String,
move: Number,
ratio: {
type: Number,
required: !0
},
always: Boolean
}), r2 = "Thumb", s2 = /* @__PURE__ */ Pe({
__name: "thumb",
props: i2,
setup(n) {
const e = n, t = pt(cf), i = nt("scrollbar");
t || Xo(r2, "can not inject scrollbar context");
const r = Ee(), s = Ee(), o = Ee({}), a = Ee(!1);
let c = !1, l = !1, d = en ? document.onselectstart : null;
const h = ue(() => t2[e.vertical ? "vertical" : "horizontal"]), f = ue(() => n2({
size: e.size,
move: e.move,
bar: h.value
})), g = ue(() => r.value[h.value.offset] ** 2 / t.wrapElement[h.value.scrollSize] / e.ratio / s.value[h.value.offset]), p = (M) => {
var R;
if (M.stopPropagation(), M.ctrlKey || [1, 2].includes(M.button))
return;
(R = window.getSelection()) == null || R.removeAllRanges(), y(M);
const L = M.currentTarget;
L && (o.value[h.value.axis] = L[h.value.offset] - (M[h.value.client] - L.getBoundingClientRect()[h.value.direction]));
}, u = (M) => {
if (!s.value || !r.value || !t.wrapElement)
return;
const R = Math.abs(M.target.getBoundingClientRect()[h.value.direction] - M[h.value.client]), L = s.value[h.value.offset] / 2, T = (R - L) * 100 * g.value / r.value[h.value.offset];
t.wrapElement[h.value.scroll] = T * t.wrapElement[h.value.scrollSize] / 100;
}, y = (M) => {
M.stopImmediatePropagation(), c = !0, document.addEventListener("mousemove", v), document.addEventListener("mouseup", m), d = document.onselectstart, document.onselectstart = () => !1;
}, v = (M) => {
if (!r.value || !s.value || c === !1)
return;
const R = o.value[h.value.axis];
if (!R)
return;
const L = (r.value.getBoundingClientRect()[h.value.direction] - M[h.value.client]) * -1, T = s.value[h.value.offset] - R, P = (L - T) * 100 * g.value / r.value[h.value.offset];
t.wrapElement[h.value.scroll] = P * t.wrapElement[h.value.scrollSize] / 100;
}, m = () => {
c = !1, o.value[h.value.axis] = 0, document.removeEventListener("mousemove", v), document.removeEventListener("mouseup", m), A(), l && (a.value = !1);
}, x = () => {
l = !1, a.value = !!e.size;
}, w = () => {
l = !0, a.value = c;
};
ei(() => {
A(), document.removeEventListener("mouseup", m);
});
const A = () => {
document.onselectstart !== d && (document.onselectstart = d);
};
return un(hi(t, "scrollbarElement"), "mousemove", x), un(hi(t, "scrollbarElement"), "mouseleave", w), (M, R) => (ve(), Ve(el, {
name: z(i).b("fade"),
persisted: ""
}, {
default: de(() => [
Lt(Ne("div", {
ref_key: "instance",
ref: r,
class: Te([z(i).e("bar"), z(i).is(z(h).key)]),
onMousedown: u
}, [
Ne("div", {
ref_key: "thumb",
ref: s,
class: Te(z(i).e("thumb")),
style: Rt(z(f)),
onMousedown: p
}, null, 38)
], 34), [
[mn, M.always || a.value]
])
]),
_: 1
}, 8, ["name"]));
}
});
var wm = /* @__PURE__ */ st(s2, [["__file", "thumb.vue"]]);
const o2 = at({
always: {
type: Boolean,
default: !0
},
minSize: {
type: Number,
required: !0
}
}), a2 = /* @__PURE__ */ Pe({
__name: "bar",
props: o2,
setup(n, { expose: e }) {
const t = n, i = pt(cf), r = Ee(0), s = Ee(0), o = Ee(""), a = Ee(""), c = Ee(1), l = Ee(1);
return e({
handleScroll: (f) => {
if (f) {
const g = f.offsetHeight - Hs, p = f.offsetWidth - Hs;
s.value = f.scrollTop * 100 / g * c.value, r.value = f.scrollLeft * 100 / p * l.value;
}
},
update: () => {
const f = i == null ? void 0 : i.wrapElement;
if (!f)
return;
const g = f.offsetHeight - Hs, p = f.offsetWidth - Hs, u = g ** 2 / f.scrollHeight, y = p ** 2 / f.scrollWidth, v = Math.max(u, t.minSize), m = Math.max(y, t.minSize);
c.value = u / (g - u) / (v / (g - v)), l.value = y / (p - y) / (m / (p - m)), a.value = v + Hs < g ? `${v}px` : "", o.value = m + Hs < p ? `${m}px` : "";
}
}), (f, g) => (ve(), Ce(Ft, null, [
oe(wm, {
move: r.value,
ratio: l.value,
size: o.value,
always: f.always
}, null, 8, ["move", "ratio", "size", "always"]),
oe(wm, {
move: s.value,
ratio: c.value,
size: a.value,
vertical: "",
always: f.always
}, null, 8, ["move", "ratio", "size", "always"])
], 64));
}
});
var l2 = /* @__PURE__ */ st(a2, [["__file", "bar.vue"]]);
const c2 = at({
height: {
type: [String, Number],
default: ""
},
maxHeight: {
type: [String, Number],
default: ""
},
native: {
type: Boolean,
default: !1
},
wrapStyle: {
type: Je([String, Object, Array]),
default: ""
},
wrapClass: {
type: [String, Array],
default: ""
},
viewClass: {
type: [String, Array],
default: ""
},
viewStyle: {
type: [String, Array, Object],
default: ""
},
noresize: Boolean,
tag: {
type: String,
default: "div"
},
always: Boolean,
minSize: {
type: Number,
default: 20
},
tabindex: {
type: [String, Number],
default: void 0
},
id: String,
role: String,
...Yr(["ariaLabel", "ariaOrientation"])
}), u2 = {
scroll: ({
scrollTop: n,
scrollLeft: e
}) => [n, e].every(yt)
}, Jh = "ElScrollbar", h2 = Pe({
name: Jh
}), d2 = /* @__PURE__ */ Pe({
...h2,
props: c2,
emits: u2,
setup(n, { expose: e, emit: t }) {
const i = n, r = nt("scrollbar");
let s, o, a = 0, c = 0;
const l = Ee(), d = Ee(), h = Ee(), f = Ee(), g = ue(() => {
const A = {};
return i.height && (A.height = Dc(i.height)), i.maxHeight && (A.maxHeight = Dc(i.maxHeight)), [i.wrapStyle, A];
}), p = ue(() => [
i.wrapClass,
r.e("wrap"),
{ [r.em("wrap", "hidden-default")]: !i.native }
]), u = ue(() => [r.e("view"), i.viewClass]), y = () => {
var A;
d.value && ((A = f.value) == null || A.handleScroll(d.value), a = d.value.scrollTop, c = d.value.scrollLeft, t("scroll", {
scrollTop: d.value.scrollTop,
scrollLeft: d.value.scrollLeft
}));
};
function v(A, M) {
Tn(A) ? d.value.scrollTo(A) : yt(A) && yt(M) && d.value.scrollTo(A, M);
}
const m = (A) => {
if (!yt(A)) {
kt(Jh, "value must be a number");
return;
}
d.value.scrollTop = A;
}, x = (A) => {
if (!yt(A)) {
kt(Jh, "value must be a number");
return;
}
d.value.scrollLeft = A;
}, w = () => {
var A;
(A = f.value) == null || A.update();
};
return Qe(() => i.noresize, (A) => {
A ? (s == null || s(), o == null || o()) : ({ stop: s } = Jn(h, w), o = un("resize", w));
}, { immediate: !0 }), Qe(() => [i.maxHeight, i.height], () => {
i.native || bt(() => {
var A;
w(), d.value && ((A = f.value) == null || A.handleScroll(d.value));
});
}), sn(cf, jn({
scrollbarElement: l,
wrapElement: d
})), GM(() => {
d.value && (d.value.scrollTop = a, d.value.scrollLeft = c);
}), Jt(() => {
i.native || bt(() => {
w();
});
}), zd(() => w()), e({
wrapRef: d,
update: w,
scrollTo: v,
setScrollTop: m,
setScrollLeft: x,
handleScroll: y
}), (A, M) => (ve(), Ce("div", {
ref_key: "scrollbarRef",
ref: l,
class: Te(z(r).b())
}, [
Ne("div", {
ref_key: "wrapRef",
ref: d,
class: Te(z(p)),
style: Rt(z(g)),
tabindex: A.tabindex,
onScroll: y
}, [
(ve(), Ve(Fn(A.tag), {
id: A.id,
ref_key: "resizeRef",
ref: h,
class: Te(z(u)),
style: Rt(A.viewStyle),
role: A.role,
"aria-label": A.ariaLabel,
"aria-orientation": A.ariaOrientation
}, {
default: de(() => [
He(A.$slots, "default")
]),
_: 3
}, 8, ["id", "class", "style", "role", "aria-label", "aria-orientation"]))
], 46, ["tabindex"]),
A.native ? ke("v-if", !0) : (ve(), Ve(l2, {
key: 0,
ref_key: "barRef",
ref: f,
always: A.always,
"min-size": A.minSize
}, null, 8, ["always", "min-size"]))
], 2));
}
});
var f2 = /* @__PURE__ */ st(d2, [["__file", "scrollbar.vue"]]);
const p2 = on(f2), uf = Symbol("popper"), z0 = Symbol("popperContent"), m2 = [
"dialog",
"grid",
"group",
"listbox",
"menu",
"navigation",
"tooltip",
"tree"
], k0 = at({
role: {
type: String,
values: m2,
default: "tooltip"
}
}), g2 = Pe({
name: "ElPopper",
inheritAttrs: !1
}), v2 = /* @__PURE__ */ Pe({
...g2,
props: k0,
setup(n, { expose: e }) {
const t = n, i = Ee(), r = Ee(), s = Ee(), o = Ee(), a = ue(() => t.role), c = {
triggerRef: i,
popperInstanceRef: r,
contentRef: s,
referenceRef: o,
role: a
};
return e(c), sn(uf, c), (l, d) => He(l.$slots, "default");
}
});
var y2 = /* @__PURE__ */ st(v2, [["__file", "popper.vue"]]);
const V0 = at({
arrowOffset: {
type: Number,
default: 5
}
}), b2 = Pe({
name: "ElPopperArrow",
inheritAttrs: !1
}), x2 = /* @__PURE__ */ Pe({
...b2,
props: V0,
setup(n, { expose: e }) {
const t = n, i = nt("popper"), { arrowOffset: r, arrowRef: s, arrowStyle: o } = pt(z0, void 0);
return Qe(() => t.arrowOffset, (a) => {
r.value = a;
}), ei(() => {
s.value = void 0;
}), e({
arrowRef: s
}), (a, c) => (ve(), Ce("span", {
ref_key: "arrowRef",
ref: s,
class: Te(z(i).e("arrow")),
style: Rt(z(o)),
"data-popper-arrow": ""
}, null, 6));
}
});
var M2 = /* @__PURE__ */ st(x2, [["__file", "arrow.vue"]]);
const Bu = "ElOnlyChild", w2 = Pe({
name: Bu,
setup(n, {
slots: e,
attrs: t
}) {
var i;
const r = pt(R0), s = CE((i = r == null ? void 0 : r.setForwardRef) != null ? i : Oa);
return () => {
var o;
const a = (o = e.default) == null ? void 0 : o.call(e, t);
if (!a)
return null;
if (a.length > 1)
return kt(Bu, "requires exact only one valid child."), null;
const c = G0(a);
return c ? Lt(HM(c, t), [[s]]) : (kt(Bu, "no valid child node found"), null);
};
}
});
function G0(n) {
if (!n)
return null;
const e = n;
for (const t of e) {
if (Tn(t))
switch (t.type) {
case WM:
continue;
case zv:
case "svg":
return Am(t);
case Ft:
return G0(t.children);
default:
return t;
}
return Am(t);
}
return null;
}
function Am(n) {
const e = nt("only-child");
return oe("span", {
class: e.e("content")
}, [n]);
}
const H0 = at({
virtualRef: {
type: Je(Object)
},
virtualTriggering: Boolean,
onMouseenter: {
type: Je(Function)
},
onMouseleave: {
type: Je(Function)
},
onClick: {
type: Je(Function)
},
onKeydown: {
type: Je(Function)
},
onFocus: {
type: Je(Function)
},
onBlur: {
type: Je(Function)
},
onContextmenu: {
type: Je(Function)
},
id: String,
open: Boolean
}), A2 = Pe({
name: "ElPopperTrigger",
inheritAttrs: !1
}), S2 = /* @__PURE__ */ Pe({
...A2,
props: H0,
setup(n, { expose: e }) {
const t = n, { role: i, triggerRef: r } = pt(uf, void 0);
EE(r);
const s = ue(() => a.value ? t.id : void 0), o = ue(() => {
if (i && i.value === "tooltip")
return t.open && t.id ? t.id : void 0;
}), a = ue(() => {
if (i && i.value !== "tooltip")
return i.value;
}), c = ue(() => a.value ? `${t.open}` : void 0);
let l;
const d = [
"onMouseenter",
"onMouseleave",
"onClick",
"onKeydown",
"onFocus",
"onBlur",
"onContextmenu"
];
return Jt(() => {
Qe(() => t.virtualRef, (h) => {
h && (r.value = er(h));
}, {
immediate: !0
}), Qe(r, (h, f) => {
l == null || l(), l = void 0, ys(h) && (d.forEach((g) => {
var p;
const u = t[g];
u && (h.addEventListener(g.slice(2).toLowerCase(), u), (p = f == null ? void 0 : f.removeEventListener) == null || p.call(f, g.slice(2).toLowerCase(), u));
}), l = Qe([s, o, a, c], (g) => {
[
"aria-controls",
"aria-describedby",
"aria-haspopup",
"aria-expanded"
].forEach((p, u) => {
Ci(g[u]) ? h.removeAttribute(p) : h.setAttribute(p, g[u]);
});
}, { immediate: !0 })), ys(f) && [
"aria-controls",
"aria-describedby",
"aria-haspopup",
"aria-expanded"
].forEach((g) => f.removeAttribute(g));
}, {
immediate: !0
});
}), ei(() => {
if (l == null || l(), l = void 0, r.value && ys(r.value)) {
const h = r.value;
d.forEach((f) => {
const g = t[f];
g && h.removeEventListener(f.slice(2).toLowerCase(), g);
}), r.value = void 0;
}
}), e({
triggerRef: r
}), (h, f) => h.virtualTriggering ? ke("v-if", !0) : (ve(), Ve(z(w2), Ei({ key: 0 }, h.$attrs, {
"aria-controls": z(s),
"aria-describedby": z(o),
"aria-expanded": z(c),
"aria-haspopup": z(a)
}), {
default: de(() => [
He(h.$slots, "default")
]),
_: 3
}, 16, ["aria-controls", "aria-describedby", "aria-expanded", "aria-haspopup"]));
}
});
var _2 = /* @__PURE__ */ st(S2, [["__file", "trigger.vue"]]);
const Uu = "focus-trap.focus-after-trapped", zu = "focus-trap.focus-after-released", T2 = "focus-trap.focusout-prevented", Sm = {
cancelable: !0,
bubbles: !1
}, E2 = {
cancelable: !0,
bubbles: !1
}, _m = "focusAfterTrapped", Tm = "focusAfterReleased", C2 = Symbol("elFocusTrap"), hf = Ee(), ou = Ee(0), df = Ee(0);
let El = 0;
const W0 = (n) => {
const e = [], t = document.createTreeWalker(n, NodeFilter.SHOW_ELEMENT, {
acceptNode: (i) => {
const r = i.tagName === "INPUT" && i.type === "hidden";
return i.disabled || i.hidden || r ? NodeFilter.FILTER_SKIP : i.tabIndex >= 0 || i === document.activeElement ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
}
});
for (; t.nextNode(); )
e.push(t.currentNode);
return e;
}, Em = (n, e) => {
for (const t of n)
if (!L2(t, e))
return t;
}, L2 = (n, e) => {
if (process.env.NODE_ENV === "test")
return !1;
if (getComputedStyle(n).visibility === "hidden")
return !0;
for (; n; ) {
if (e && n === e)
return !1;
if (getComputedStyle(n).display === "none")
return !0;
n = n.parentElement;
}
return !1;
}, R2 = (n) => {
const e = W0(n), t = Em(e, n), i = Em(e.reverse(), n);
return [t, i];
}, F2 = (n) => n instanceof HTMLInputElement && "select" in n, Tr = (n, e) => {
if (n && n.focus) {
const t = document.activeElement;
n.focus({ preventScroll: !0 }), df.value = window.performance.now(), n !== t && F2(n) && e && n.select();
}
};
function Cm(n, e) {
const t = [...n], i = n.indexOf(e);
return i !== -1 && t.splice(i, 1), t;
}
const P2 = () => {
let n = [];
return {
push: (i) => {
const r = n[0];
r && i !== r && r.pause(), n = Cm(n, i), n.unshift(i);
},
remove: (i) => {
var r, s;
n = Cm(n, i), (s = (r = n[0]) == null ? void 0 : r.resume) == null || s.call(r);
}
};
}, I2 = (n, e = !1) => {
const t = document.activeElement;
for (const i of n)
if (Tr(i, e), document.activeElement !== t)
return;
}, Lm = P2(), O2 = () => ou.value > df.value, Cl = () => {
hf.value = "pointer", ou.value = window.performance.now();
}, Rm = () => {
hf.value = "keyboard", ou.value = window.performance.now();
}, D2 = () => (Jt(() => {
El === 0 && (document.addEventListener("mousedown", Cl), document.addEventListener("touchstart", Cl), document.addEventListener("keydown", Rm)), El++;
}), ei(() => {
El--, El <= 0 && (document.removeEventListener("mousedown", Cl), document.removeEventListener("touchstart", Cl), document.removeEventListener("keydown", Rm));
}), {
focusReason: hf,
lastUserFocusTimestamp: ou,
lastAutomatedFocusTimestamp: df
}), Ll = (n) => new CustomEvent(T2, {
...E2,
detail: n
}), N2 = Pe({
name: "ElFocusTrap",
inheritAttrs: !1,
props: {
loop: Boolean,
trapped: Boolean,
focusTrapEl: Object,
focusStartEl: {
type: [Object, String],
default: "first"
}
},
emits: [
_m,
Tm,
"focusin",
"focusout",
"focusout-prevented",
"release-requested"
],
setup(n, { emit: e }) {
const t = Ee();
let i, r;
const { focusReason: s } = D2();
wE((p) => {
n.trapped && !o.paused && e("release-requested", p);
});
const o = {
paused: !1,
pause() {
this.paused = !0;
},
resume() {
this.paused = !1;
}
}, a = (p) => {
if (!n.loop && !n.trapped || o.paused)
return;
const { key: u, altKey: y, ctrlKey: v, metaKey: m, currentTarget: x, shiftKey: w } = p, { loop: A } = n, M = u === Li.tab && !y && !v && !m, R = document.activeElement;
if (M && R) {
const L = x, [T, P] = R2(L);
if (T && P) {
if (!w && R === P) {
const S = Ll({
focusReason: s.value
});
e("focusout-prevented", S), S.defaultPrevented || (p.preventDefault(), A && Tr(T, !0));
} else if (w && [T, L].includes(R)) {
const S = Ll({
focusReason: s.value
});
e("focusout-prevented", S), S.defaultPrevented || (p.preventDefault(), A && Tr(P, !0));
}
} else if (R === L) {
const S = Ll({
focusReason: s.value
});
e("focusout-prevented", S), S.defaultPrevented || p.preventDefault();
}
}
};
sn(C2, {
focusTrapRef: t,
onKeydown: a
}), Qe(() => n.focusTrapEl, (p) => {
p && (t.value = p);
}, { immediate: !0 }), Qe([t], ([p], [u]) => {
p && (p.addEventListener("keydown", a), p.addEventListener("focusin", d), p.addEventListener("focusout", h)), u && (u.removeEventListener("keydown", a), u.removeEventListener("focusin", d), u.removeEventListener("focusout", h));
});
const c = (p) => {
e(_m, p);
}, l = (p) => e(Tm, p), d = (p) => {
const u = z(t);
if (!u)
return;
const y = p.target, v = p.relatedTarget, m = y && u.contains(y);
n.trapped || v && u.contains(v) || (i = v), m && e("focusin", p), !o.paused && n.trapped && (m ? r = y : Tr(r, !0));
}, h = (p) => {
const u = z(t);
if (!(o.paused || !u))
if (n.trapped) {
const y = p.relatedTarget;
!Ci(y) && !u.contains(y) && setTimeout(() => {
if (!o.paused && n.trapped) {
const v = Ll({
focusReason: s.value
});
e("focusout-prevented", v), v.defaultPrevented || Tr(r, !0);
}
}, 0);
} else {
const y = p.target;
y && u.contains(y) || e("focusout", p);
}
};
async function f() {
await bt();
const p = z(t);
if (p) {
Lm.push(o);
const u = p.contains(document.activeElement) ? i : document.activeElement;
if (i = u, !p.contains(u)) {
const v = new Event(Uu, Sm);
p.addEventListener(Uu, c), p.dispatchEvent(v), v.defaultPrevented || bt(() => {
let m = n.focusStartEl;
vn(m) || (Tr(m), document.activeElement !== m && (m = "first")), m === "first" && I2(W0(p), !0), (document.activeElement === u || m === "container") && Tr(p);
});
}
}
}
function g() {
const p = z(t);
if (p) {
p.removeEventListener(Uu, c);
const u = new CustomEvent(zu, {
...Sm,
detail: {
focusReason: s.value
}
});
p.addEventListener(zu, l), p.dispatchEvent(u), !u.defaultPrevented && (s.value == "keyboard" || !O2() || p.contains(document.activeElement)) && Tr(i ?? document.body), p.removeEventListener(zu, l), Lm.remove(o);
}
}
return Jt(() => {
n.trapped && f(), Qe(() => n.trapped, (p) => {
p ? f() : g();
});
}), ei(() => {
n.trapped && g(), t.value && (t.value.removeEventListener("keydown", a), t.value.removeEventListener("focusin", d), t.value.removeEventListener("focusout", h), t.value = void 0);
}), {
onKeydown: a
};
}
});
function B2(n, e, t, i, r, s) {
return He(n.$slots, "default", { handleKeydown: n.onKeydown });
}
var U2 = /* @__PURE__ */ st(N2, [["render", B2], ["__file", "focus-trap.vue"]]);
const z2 = ["fixed", "absolute"], k2 = at({
boundariesPadding: {
type: Number,
default: 0
},
fallbackPlacements: {
type: Je(Array),
default: void 0
},
gpuAcceleration: {
type: Boolean,
default: !0
},
offset: {
type: Number,
default: 12
},
placement: {
type: String,
values: Yo,
default: "bottom"
},
popperOptions: {
type: Je(Object),
default: () => ({})
},
strategy: {
type: String,
values: z2,
default: "absolute"
}
}), j0 = at({
...k2,
id: String,
style: {
type: Je([String, Array, Object])
},
className: {
type: Je([String, Array, Object])
},
effect: {
type: Je(String),
default: "dark"
},
visible: Boolean,
enterable: {
type: Boolean,
default: !0
},
pure: Boolean,
focusOnShow: {
type: Boolean,
default: !1
},
trapping: {
type: Boolean,
default: !1
},
popperClass: {
type: Je([String, Array, Object])
},
popperStyle: {
type: Je([String, Array, Object])
},
referenceEl: {
type: Je(Object)
},
triggerTargetEl: {
type: Je(Object)
},
stopPopperMouseEvent: {
type: Boolean,
default: !0
},
virtualTriggering: Boolean,
zIndex: Number,
...Yr(["ariaLabel"])
}), V2 = {
mouseenter: (n) => n instanceof MouseEvent,
mouseleave: (n) => n instanceof MouseEvent,
focus: () => !0,
blur: () => !0,
close: () => !0
}, G2 = (n, e = []) => {
const { placement: t, strategy: i, popperOptions: r } = n, s = {
placement: t,
strategy: i,
...r,
modifiers: [...W2(n), ...e]
};
return j2(s, r == null ? void 0 : r.modifiers), s;
}, H2 = (n) => {
if (en)
return er(n);
};
function W2(n) {
const { offset: e, gpuAcceleration: t, fallbackPlacements: i } = n;
return [
{
name: "offset",
options: {
offset: [0, e ?? 12]
}
},
{
name: "preventOverflow",
options: {
padding: {
top: 2,
bottom: 2,
left: 5,
right: 5
}
}
},
{
name: "flip",
options: {
padding: 5,
fallbackPlacements: i
}
},
{
name: "computeStyles",
options: {
gpuAcceleration: t
}
}
];
}
function j2(n, e) {
e && (n.modifiers = [...n.modifiers, ...e ?? []]);
}
const $2 = 0, Z2 = (n) => {
const { popperInstanceRef: e, contentRef: t, triggerRef: i, role: r } = pt(uf, void 0), s = Ee(), o = Ee(), a = ue(() => ({
name: "eventListeners",
enabled: !!n.visible
})), c = ue(() => {
var v;
const m = z(s), x = (v = z(o)) != null ? v : $2;
return {
name: "arrow",
enabled: !L_(m),
options: {
element: m,
padding: x
}
};
}), l = ue(() => ({
onFirstUpdate: () => {
p();
},
...G2(n, [
z(c),
z(a)
])
})), d = ue(() => H2(n.referenceEl) || z(i)), { attributes: h, state: f, styles: g, update: p, forceUpdate: u, instanceRef: y } = bE(d, t, l);
return Qe(y, (v) => e.value = v), Jt(() => {
Qe(() => {
var v;
return (v = z(d)) == null ? void 0 : v.getBoundingClientRect();
}, () => {
p();
});
}), {
attributes: h,
arrowRef: s,
contentRef: t,
instanceRef: y,
state: f,
styles: g,
role: r,
forceUpdate: u,
update: p
};
}, X2 = (n, {
attributes: e,
styles: t,
role: i
}) => {
const { nextZIndex: r } = I0(), s = nt("popper"), o = ue(() => z(e).popper), a = Ee(yt(n.zIndex) ? n.zIndex : r()), c = ue(() => [
s.b(),
s.is("pure", n.pure),
s.is(n.effect),
n.popperClass
]), l = ue(() => [
{ zIndex: z(a) },
z(t).popper,
n.popperStyle || {}
]), d = ue(() => i.value === "dialog" ? "false" : void 0), h = ue(() => z(t).arrow || {});
return {
ariaModal: d,
arrowStyle: h,
contentAttrs: o,
contentClass: c,
contentStyle: l,
contentZIndex: a,
updateZIndex: () => {
a.value = yt(n.zIndex) ? n.zIndex : r();
}
};
}, Y2 = (n, e) => {
const t = Ee(!1), i = Ee();
return {
focusStartRef: i,
trapped: t,
onFocusAfterReleased: (l) => {
var d;
((d = l.detail) == null ? void 0 : d.focusReason) !== "pointer" && (i.value = "first", e("blur"));
},
onFocusAfterTrapped: () => {
e("focus");
},
onFocusInTrap: (l) => {
n.visible && !t.value && (l.target && (i.value = l.target), t.value = !0);
},
onFocusoutPrevented: (l) => {
n.trapping || (l.detail.focusReason === "pointer" && l.preventDefault(), t.value = !1);
},
onReleaseRequested: () => {
t.value = !1, e("close");
}
};
}, J2 = Pe({
name: "ElPopperContent"
}), K2 = /* @__PURE__ */ Pe({
...J2,
props: j0,
emits: V2,
setup(n, { expose: e, emit: t }) {
const i = n, {
focusStartRef: r,
trapped: s,
onFocusAfterReleased: o,
onFocusAfterTrapped: a,
onFocusInTrap: c,
onFocusoutPrevented: l,
onReleaseRequested: d
} = Y2(i, t), { attributes: h, arrowRef: f, contentRef: g, styles: p, instanceRef: u, role: y, update: v } = Z2(i), {
ariaModal: m,
arrowStyle: x,
contentAttrs: w,
contentClass: A,
contentStyle: M,
updateZIndex: R
} = X2(i, {
styles: p,
attributes: h,
role: y
}), L = pt(zc, void 0), T = Ee();
sn(z0, {
arrowStyle: x,
arrowRef: f,
arrowOffset: T
}), L && sn(zc, {
...L,
addInputId: Oa,
removeInputId: Oa
});
let P;
const _ = (E = !0) => {
v(), E && R();
}, S = () => {
_(!1), i.visible && i.focusOnShow ? s.value = !0 : i.visible === !1 && (s.value = !1);
};
return Jt(() => {
Qe(() => i.triggerTargetEl, (E, C) => {
P == null || P(), P = void 0;
const I = z(E || g.value), b = z(C || g.value);
ys(I) && (P = Qe([y, () => i.ariaLabel, m, () => i.id], (F) => {
["role", "aria-label", "aria-modal", "id"].forEach((D, N) => {
Ci(F[N]) ? I.removeAttribute(D) : I.setAttribute(D, F[N]);
});
}, { immediate: !0 })), b !== I && ys(b) && ["role", "aria-label", "aria-modal", "id"].forEach((F) => {
b.removeAttribute(F);
});
}, { immediate: !0 }), Qe(() => i.visible, S, { immediate: !0 });
}), ei(() => {
P == null || P(), P = void 0;
}), e({
popperContentRef: g,
popperInstanceRef: u,
updatePopper: _,
contentStyle: M
}), (E, C) => (ve(), Ce("div", Ei({
ref_key: "contentRef",
ref: g
}, z(w), {
style: z(M),
class: z(A),
tabindex: "-1",
onMouseenter: (I) => E.$emit("mouseenter", I),
onMouseleave: (I) => E.$emit("mouseleave", I)
}), [
oe(z(U2), {
trapped: z(s),
"trap-on-focus-in": !0,
"focus-trap-el": z(g),
"focus-start-el": z(r),
onFocusAfterTrapped: z(a),
onFocusAfterReleased: z(o),
onFocusin: z(c),
onFocusoutPrevented: z(l),
onReleaseRequested: z(d)
}, {
default: de(() => [
He(E.$slots, "default")
]),
_: 3
}, 8, ["trapped", "focus-trap-el", "focus-start-el", "onFocusAfterTrapped", "onFocusAfterReleased", "onFocusin", "onFocusoutPrevented", "onReleaseRequested"])
], 16, ["onMouseenter", "onMouseleave"]));
}
});
var q2 = /* @__PURE__ */ st(K2, [["__file", "content.vue"]]);
const Q2 = on(y2), ff = Symbol("elTooltip"), kn = at({
..._E,
...j0,
appendTo: {
type: Je([String, Object])
},
content: {
type: String,
default: ""
},
rawContent: Boolean,
persistent: Boolean,
visible: {
type: Je(Boolean),
default: null
},
transition: String,
teleported: {
type: Boolean,
default: !0
},
disabled: Boolean,
...Yr(["ariaLabel"])
}), ka = at({
...H0,
disabled: Boolean,
trigger: {
type: Je([String, Array]),
default: "hover"
},
triggerKeys: {
type: Je(Array),
default: () => [Li.enter, Li.space]
}
}), {
useModelToggleProps: eC,
useModelToggleEmits: tC,
useModelToggle: nC
} = gT("visible"), iC = at({
...k0,
...eC,
...kn,
...ka,
...V0,
showArrow: {
type: Boolean,
default: !0
}
}), rC = [
...tC,
"before-show",
"before-hide",
"show",
"hide",
"open",
"close"
], sC = (n, e) => Pn(n) ? n.includes(e) : n === e, Ws = (n, e, t) => (i) => {
sC(z(n), e) && t(i);
}, oC = Pe({
name: "ElTooltipTrigger"
}), aC = /* @__PURE__ */ Pe({
...oC,
props: ka,
setup(n, { expose: e }) {
const t = n, i = nt("tooltip"), { controlled: r, id: s, open: o, onOpen: a, onClose: c, onToggle: l } = pt(ff, void 0), d = Ee(null), h = () => {
if (z(r) || t.disabled)
return !0;
}, f = hi(t, "trigger"), g = Ji(h, Ws(f, "hover", a)), p = Ji(h, Ws(f, "hover", c)), u = Ji(h, Ws(f, "click", (w) => {
w.button === 0 && l(w);
})), y = Ji(h, Ws(f, "focus", a)), v = Ji(h, Ws(f, "focus", c)), m = Ji(h, Ws(f, "contextmenu", (w) => {
w.preventDefault(), l(w);
})), x = Ji(h, (w) => {
const { code: A } = w;
t.triggerKeys.includes(A) && (w.preventDefault(), l(w));
});
return e({
triggerRef: d
}), (w, A) => (ve(), Ve(z(_2), {
id: z(s),
"virtual-ref": w.virtualRef,
open: z(o),
"virtual-triggering": w.virtualTriggering,
class: Te(z(i).e("trigger")),
onBlur: z(v),
onClick: z(u),
onContextmenu: z(m),
onFocus: z(y),
onMouseenter: z(g),
onMouseleave: z(p),
onKeydown: z(x)
}, {
default: de(() => [
He(w.$slots, "default")
]),
_: 3
}, 8, ["id", "virtual-ref", "open", "virtual-triggering", "class", "onBlur", "onClick", "onContextmenu", "onFocus", "onMouseenter", "onMouseleave", "onKeydown"]));
}
});
var lC = /* @__PURE__ */ st(aC, [["__file", "trigger.vue"]]);
const cC = at({
to: {
type: Je([String, Object]),
required: !0
},
disabled: Boolean
}), uC = /* @__PURE__ */ Pe({
__name: "teleport",
props: cC,
setup(n) {
return (e, t) => e.disabled ? He(e.$slots, "default", { key: 0 }) : (ve(), Ve(jM, {
key: 1,
to: e.to
}, [
He(e.$slots, "default")
], 8, ["to"]));
}
});
var hC = /* @__PURE__ */ st(uC, [["__file", "teleport.vue"]]);
const dC = on(hC), fC = Pe({
name: "ElTooltipContent",
inheritAttrs: !1
}), pC = /* @__PURE__ */ Pe({
...fC,
props: kn,
setup(n, { expose: e }) {
const t = n, { selector: i } = L0(), r = nt("tooltip"), s = Ee(null);
let o;
const {
controlled: a,
id: c,
open: l,
trigger: d,
onClose: h,
onOpen: f,
onShow: g,
onHide: p,
onBeforeShow: u,
onBeforeHide: y
} = pt(ff, void 0), v = ue(() => t.transition || `${r.namespace.value}-fade-in-linear`), m = ue(() => process.env.NODE_ENV === "test" ? !0 : t.persistent);
ei(() => {
o == null || o();
});
const x = ue(() => z(m) ? !0 : z(l)), w = ue(() => t.disabled ? !1 : z(l)), A = ue(() => t.appendTo || i.value), M = ue(() => {
var b;
return (b = t.style) != null ? b : {};
}), R = Ee(!0), L = () => {
p(), R.value = !0;
}, T = () => {
if (z(a))
return !0;
}, P = Ji(T, () => {
t.enterable && z(d) === "hover" && f();
}), _ = Ji(T, () => {
z(d) === "hover" && h();
}), S = () => {
var b, F;
(F = (b = s.value) == null ? void 0 : b.updatePopper) == null || F.call(b), u == null || u();
}, E = () => {
y == null || y();
}, C = () => {
g(), o = bw(ue(() => {
var b;
return (b = s.value) == null ? void 0 : b.popperContentRef;
}), () => {
if (z(a))
return;
z(d) !== "hover" && h();
});
}, I = () => {
t.virtualTriggering || h();
};
return Qe(() => z(l), (b) => {
b ? R.value = !1 : o == null || o();
}, {
flush: "post"
}), Qe(() => t.content, () => {
var b, F;
(F = (b = s.value) == null ? void 0 : b.updatePopper) == null || F.call(b);
}), e({
contentRef: s
}), (b, F) => (ve(), Ve(z(dC), {
disabled: !b.teleported,
to: z(A)
}, {
default: de(() => [
oe(el, {
name: z(v),
onAfterLeave: L,
onBeforeEnter: S,
onAfterEnter: C,
onBeforeLeave: E
}, {
default: de(() => [
z(x) ? Lt((ve(), Ve(z(q2), Ei({
key: 0,
id: z(c),
ref_key: "contentRef",
ref: s
}, b.$attrs, {
"aria-label": b.ariaLabel,
"aria-hidden": R.value,
"boundaries-padding": b.boundariesPadding,
"fallback-placements": b.fallbackPlacements,
"gpu-acceleration": b.gpuAcceleration,
offset: b.offset,
placement: b.placement,
"popper-options": b.popperOptions,
strategy: b.strategy,
effect: b.effect,
enterable: b.enterable,
pure: b.pure,
"popper-class": b.popperClass,
"popper-style": [b.popperStyle, z(M)],
"reference-el": b.referenceEl,
"trigger-target-el": b.triggerTargetEl,
visible: z(w),
"z-index": b.zIndex,
onMouseenter: z(P),
onMouseleave: z(_),
onBlur: I,
onClose: z(h)
}), {
default: de(() => [
He(b.$slots, "default")
]),
_: 3
}, 16, ["id", "aria-label", "aria-hidden", "boundaries-padding", "fallback-placements", "gpu-acceleration", "offset", "placement", "popper-options", "strategy", "effect", "enterable", "pure", "popper-class", "popper-style", "reference-el", "trigger-target-el", "visible", "z-index", "onMouseenter", "onMouseleave", "onClose"])), [
[mn, z(w)]
]) : ke("v-if", !0)
]),
_: 3
}, 8, ["name"])
]),
_: 3
}, 8, ["disabled", "to"]));
}
});
var mC = /* @__PURE__ */ st(pC, [["__file", "content.vue"]]);
const gC = Pe({
name: "ElTooltip"
}), vC = /* @__PURE__ */ Pe({
...gC,
props: iC,
emits: rC,
setup(n, { expose: e, emit: t }) {
const i = n;
SE();
const r = sl(), s = Ee(), o = Ee(), a = () => {
var v;
const m = z(s);
m && ((v = m.popperInstanceRef) == null || v.update());
}, c = Ee(!1), l = Ee(), { show: d, hide: h, hasUpdateHandler: f } = nC({
indicator: c,
toggleReason: l
}), { onOpen: g, onClose: p } = TE({
showAfter: hi(i, "showAfter"),
hideAfter: hi(i, "hideAfter"),
autoClose: hi(i, "autoClose"),
open: d,
close: h
}), u = ue(() => Ba(i.visible) && !f.value);
sn(ff, {
controlled: u,
id: r,
open: Bv(c),
trigger: hi(i, "trigger"),
onOpen: (v) => {
g(v);
},
onClose: (v) => {
p(v);
},
onToggle: (v) => {
z(c) ? p(v) : g(v);
},
onShow: () => {
t("show", l.value);
},
onHide: () => {
t("hide", l.value);
},
onBeforeShow: () => {
t("before-show", l.value);
},
onBeforeHide: () => {
t("before-hide", l.value);
},
updatePopper: a
}), Qe(() => i.disabled, (v) => {
v && c.value && (c.value = !1);
});
const y = (v) => {
var m, x;
const w = (x = (m = o.value) == null ? void 0 : m.contentRef) == null ? void 0 : x.popperContentRef, A = (v == null ? void 0 : v.relatedTarget) || document.activeElement;
return w && w.contains(A);
};
return $M(() => c.value && h()), e({
popperRef: s,
contentRef: o,
isFocusInsideContent: y,
updatePopper: a,
onOpen: g,
onClose: p,
hide: h
}), (v, m) => (ve(), Ve(z(Q2), {
ref_key: "popperRef",
ref: s,
role: v.role
}, {
default: de(() => [
oe(lC, {
disabled: v.disabled,
trigger: v.trigger,
"trigger-keys": v.triggerKeys,
"virtual-ref": v.virtualRef,
"virtual-triggering": v.virtualTriggering
}, {
default: de(() => [
v.$slots.default ? He(v.$slots, "default", { key: 0 }) : ke("v-if", !0)
]),
_: 3
}, 8, ["disabled", "trigger", "trigger-keys", "virtual-ref", "virtual-triggering"]),
oe(mC, {
ref_key: "contentRef",
ref: o,
"aria-label": v.ariaLabel,
"boundaries-padding": v.boundariesPadding,
content: v.content,
disabled: v.disabled,
effect: v.effect,
enterable: v.enterable,
"fallback-placements": v.fallbackPlacements,
"hide-after": v.hideAfter,
"gpu-acceleration": v.gpuAcceleration,
offset: v.offset,
persistent: v.persistent,
"popper-class": v.popperClass,
"popper-style": v.popperStyle,
placement: v.placement,
"popper-options": v.popperOptions,
pure: v.pure,
"raw-content": v.rawContent,
"reference-el": v.referenceEl,
"trigger-target-el": v.triggerTargetEl,
"show-after": v.showAfter,
strategy: v.strategy,
teleported: v.teleported,
transition: v.transition,
"virtual-triggering": v.virtualTriggering,
"z-index": v.zIndex,
"append-to": v.appendTo
}, {
default: de(() => [
He(v.$slots, "content", {}, () => [
v.rawContent ? (ve(), Ce("span", {
key: 0,
innerHTML: v.content
}, null, 8, ["innerHTML"])) : (ve(), Ce("span", { key: 1 }, gt(v.content), 1))
]),
v.showArrow ? (ve(), Ve(z(M2), {
key: 0,
"arrow-offset": v.arrowOffset
}, null, 8, ["arrow-offset"])) : ke("v-if", !0)
]),
_: 3
}, 8, ["aria-label", "boundaries-padding", "content", "disabled", "effect", "enterable", "fallback-placements", "hide-after", "gpu-acceleration", "offset", "persistent", "popper-class", "popper-style", "placement", "popper-options", "pure", "raw-content", "reference-el", "trigger-target-el", "show-after", "strategy", "teleported", "transition", "virtual-triggering", "z-index", "append-to"])
]),
_: 3
}, 8, ["role"]));
}
});
var yC = /* @__PURE__ */ st(vC, [["__file", "tooltip.vue"]]);
const pf = on(yC), $0 = Symbol("buttonGroupContextKey"), bC = (n, e) => {
p0({
from: "type.text",
replacement: "link",
version: "3.0.0",
scope: "props",
ref: "https://element-plus.org/en-US/component/button.html#button-attributes"
}, ue(() => n.type === "text"));
const t = pt($0, void 0), i = af("button"), { form: r } = Jo(), s = Ns(ue(() => t == null ? void 0 : t.size)), o = ol(), a = Ee(), c = Xc(), l = ue(() => n.type || (t == null ? void 0 : t.type) || ""), d = ue(() => {
var p, u, y;
return (y = (u = n.autoInsertSpace) != null ? u : (p = i.value) == null ? void 0 : p.autoInsertSpace) != null ? y : !1;
}), h = ue(() => n.tag === "button" ? {
ariaDisabled: o.value || n.loading,
disabled: o.value || n.loading,
autofocus: n.autofocus,
type: n.nativeType
} : {}), f = ue(() => {
var p;
const u = (p = c.default) == null ? void 0 : p.call(c);
if (d.value && (u == null ? void 0 : u.length) === 1) {
const y = u[0];
if ((y == null ? void 0 : y.type) === zv) {
const v = y.children;
return new RegExp("^\\p{Unified_Ideograph}{2}$", "u").test(v.trim());
}
}
return !1;
});
return {
_disabled: o,
_size: s,
_type: l,
_ref: a,
_props: h,
shouldAddSpace: f,
handleClick: (p) => {
if (o.value || n.loading) {
p.stopPropagation();
return;
}
n.nativeType === "reset" && (r == null || r.resetFields()), e("click", p);
}
};
}, xC = [
"default",
"primary",
"success",
"warning",
"info",
"danger",
"text",
""
], MC = ["button", "submit", "reset"], Kh = at({
size: Gr,
disabled: Boolean,
type: {
type: String,
values: xC,
default: ""
},
icon: {
type: Vr
},
nativeType: {
type: String,
values: MC,
default: "button"
},
loading: Boolean,
loadingIcon: {
type: Vr,
default: () => c0
},
plain: Boolean,
text: Boolean,
link: Boolean,
bg: Boolean,
autofocus: Boolean,
round: Boolean,
circle: Boolean,
color: String,
dark: Boolean,
autoInsertSpace: {
type: Boolean,
default: void 0
},
tag: {
type: Je([String, Object]),
default: "button"
}
}), wC = {
click: (n) => n instanceof MouseEvent
};
function yn(n, e) {
AC(n) && (n = "100%");
var t = SC(n);
return n = e === 360 ? n : Math.min(e, Math.max(0, parseFloat(n))), t && (n = parseInt(String(n * e), 10) / 100), Math.abs(n - e) < 1e-6 ? 1 : (e === 360 ? n = (n < 0 ? n % e + e : n % e) / parseFloat(String(e)) : n = n % e / parseFloat(String(e)), n);
}
function Rl(n) {
return Math.min(1, Math.max(0, n));
}
function AC(n) {
return typeof n == "string" && n.indexOf(".") !== -1 && parseFloat(n) === 1;
}
function SC(n) {
return typeof n == "string" && n.indexOf("%") !== -1;
}
function Z0(n) {
return n = parseFloat(n), (isNaN(n) || n < 0 || n > 1) && (n = 1), n;
}
function Fl(n) {
return n <= 1 ? "".concat(Number(n) * 100, "%") : n;
}
function ms(n) {
return n.length === 1 ? "0" + n : String(n);
}
function _C(n, e, t) {
return {
r: yn(n, 255) * 255,
g: yn(e, 255) * 255,
b: yn(t, 255) * 255
};
}
function Fm(n, e, t) {
n = yn(n, 255), e = yn(e, 255), t = yn(t, 255);
var i = Math.max(n, e, t), r = Math.min(n, e, t), s = 0, o = 0, a = (i + r) / 2;
if (i === r)
o = 0, s = 0;
else {
var c = i - r;
switch (o = a > 0.5 ? c / (2 - i - r) : c / (i + r), i) {
case n:
s = (e - t) / c + (e < t ? 6 : 0);
break;
case e:
s = (t - n) / c + 2;
break;
case t:
s = (n - e) / c + 4;
break;
}
s /= 6;
}
return { h: s, s: o, l: a };
}
function ku(n, e, t) {
return t < 0 && (t += 1), t > 1 && (t -= 1), t < 1 / 6 ? n + (e - n) * (6 * t) : t < 1 / 2 ? e : t < 2 / 3 ? n + (e - n) * (2 / 3 - t) * 6 : n;
}
function TC(n, e, t) {
var i, r, s;
if (n = yn(n, 360), e = yn(e, 100), t = yn(t, 100), e === 0)
r = t, s = t, i = t;
else {
var o = t < 0.5 ? t * (1 + e) : t + e - t * e, a = 2 * t - o;
i = ku(a, o, n + 1 / 3), r = ku(a, o, n), s = ku(a, o, n - 1 / 3);
}
return { r: i * 255, g: r * 255, b: s * 255 };
}
function Pm(n, e, t) {
n = yn(n, 255), e = yn(e, 255), t = yn(t, 255);
var i = Math.max(n, e, t), r = Math.min(n, e, t), s = 0, o = i, a = i - r, c = i === 0 ? 0 : a / i;
if (i === r)
s = 0;
else {
switch (i) {
case n:
s = (e - t) / a + (e < t ? 6 : 0);
break;
case e:
s = (t - n) / a + 2;
break;
case t:
s = (n - e) / a + 4;
break;
}
s /= 6;
}
return { h: s, s: c, v: o };
}
function EC(n, e, t) {
n = yn(n, 360) * 6, e = yn(e, 100), t = yn(t, 100);
var i = Math.floor(n), r = n - i, s = t * (1 - e), o = t * (1 - r * e), a = t * (1 - (1 - r) * e), c = i % 6, l = [t, o, s, s, a, t][c], d = [a, t, t, o, s, s][c], h = [s, s, a, t, t, o][c];
return { r: l * 255, g: d * 255, b: h * 255 };
}
function Im(n, e, t, i) {
var r = [
ms(Math.round(n).toString(16)),
ms(Math.round(e).toString(16)),
ms(Math.round(t).toString(16))
];
return i && r[0].startsWith(r[0].charAt(1)) && r[1].startsWith(r[1].charAt(1)) && r[2].startsWith(r[2].charAt(1)) ? r[0].charAt(0) + r[1].charAt(0) + r[2].charAt(0) : r.join("");
}
function CC(n, e, t, i, r) {
var s = [
ms(Math.round(n).toString(16)),
ms(Math.round(e).toString(16)),
ms(Math.round(t).toString(16)),
ms(LC(i))
];
return r && s[0].startsWith(s[0].charAt(1)) && s[1].startsWith(s[1].charAt(1)) && s[2].startsWith(s[2].charAt(1)) && s[3].startsWith(s[3].charAt(1)) ? s[0].charAt(0) + s[1].charAt(0) + s[2].charAt(0) + s[3].charAt(0) : s.join("");
}
function LC(n) {
return Math.round(parseFloat(n) * 255).toString(16);
}
function Om(n) {
return zn(n) / 255;
}
function zn(n) {
return parseInt(n, 16);
}
function RC(n) {
return {
r: n >> 16,
g: (n & 65280) >> 8,
b: n & 255
};
}
var qh = {
aliceblue: "#f0f8ff",
antiquewhite: "#faebd7",
aqua: "#00ffff",
aquamarine: "#7fffd4",
azure: "#f0ffff",
beige: "#f5f5dc",
bisque: "#ffe4c4",
black: "#000000",
blanchedalmond: "#ffebcd",
blue: "#0000ff",
blueviolet: "#8a2be2",
brown: "#a52a2a",
burlywood: "#deb887",
cadetblue: "#5f9ea0",
chartreuse: "#7fff00",
chocolate: "#d2691e",
coral: "#ff7f50",
cornflowerblue: "#6495ed",
cornsilk: "#fff8dc",
crimson: "#dc143c",
cyan: "#00ffff",
darkblue: "#00008b",
darkcyan: "#008b8b",
darkgoldenrod: "#b8860b",
darkgray: "#a9a9a9",
darkgreen: "#006400",
darkgrey: "#a9a9a9",
darkkhaki: "#bdb76b",
darkmagenta: "#8b008b",
darkolivegreen: "#556b2f",
darkorange: "#ff8c00",
darkorchid: "#9932cc",
darkred: "#8b0000",
darksalmon: "#e9967a",
darkseagreen: "#8fbc8f",
darkslateblue: "#483d8b",
darkslategray: "#2f4f4f",
darkslategrey: "#2f4f4f",
darkturquoise: "#00ced1",
darkviolet: "#9400d3",
deeppink: "#ff1493",
deepskyblue: "#00bfff",
dimgray: "#696969",
dimgrey: "#696969",
dodgerblue: "#1e90ff",
firebrick: "#b22222",
floralwhite: "#fffaf0",
forestgreen: "#228b22",
fuchsia: "#ff00ff",
gainsboro: "#dcdcdc",
ghostwhite: "#f8f8ff",
goldenrod: "#daa520",
gold: "#ffd700",
gray: "#808080",
green: "#008000",
greenyellow: "#adff2f",
grey: "#808080",
honeydew: "#f0fff0",
hotpink: "#ff69b4",
indianred: "#cd5c5c",
indigo: "#4b0082",
ivory: "#fffff0",
khaki: "#f0e68c",
lavenderblush: "#fff0f5",
lavender: "#e6e6fa",
lawngreen: "#7cfc00",
lemonchiffon: "#fffacd",
lightblue: "#add8e6",
lightcoral: "#f08080",
lightcyan: "#e0ffff",
lightgoldenrodyellow: "#fafad2",
lightgray: "#d3d3d3",
lightgreen: "#90ee90",
lightgrey: "#d3d3d3",
lightpink: "#ffb6c1",
lightsalmon: "#ffa07a",
lightseagreen: "#20b2aa",
lightskyblue: "#87cefa",
lightslategray: "#778899",
lightslategrey: "#778899",
lightsteelblue: "#b0c4de",
lightyellow: "#ffffe0",
lime: "#00ff00",
limegreen: "#32cd32",
linen: "#faf0e6",
magenta: "#ff00ff",
maroon: "#800000",
mediumaquamarine: "#66cdaa",
mediumblue: "#0000cd",
mediumorchid: "#ba55d3",
mediumpurple: "#9370db",
mediumseagreen: "#3cb371",
mediumslateblue: "#7b68ee",
mediumspringgreen: "#00fa9a",
mediumturquoise: "#48d1cc",
mediumvioletred: "#c71585",
midnightblue: "#191970",
mintcream: "#f5fffa",
mistyrose: "#ffe4e1",
moccasin: "#ffe4b5",
navajowhite: "#ffdead",
navy: "#000080",
oldlace: "#fdf5e6",
olive: "#808000",
olivedrab: "#6b8e23",
orange: "#ffa500",
orangered: "#ff4500",
orchid: "#da70d6",
palegoldenrod: "#eee8aa",
palegreen: "#98fb98",
paleturquoise: "#afeeee",
palevioletred: "#db7093",
papayawhip: "#ffefd5",
peachpuff: "#ffdab9",
peru: "#cd853f",
pink: "#ffc0cb",
plum: "#dda0dd",
powderblue: "#b0e0e6",
purple: "#800080",
rebeccapurple: "#663399",
red: "#ff0000",
rosybrown: "#bc8f8f",
royalblue: "#4169e1",
saddlebrown: "#8b4513",
salmon: "#fa8072",
sandybrown: "#f4a460",
seagreen: "#2e8b57",
seashell: "#fff5ee",
sienna: "#a0522d",
silver: "#c0c0c0",
skyblue: "#87ceeb",
slateblue: "#6a5acd",
slategray: "#708090",
slategrey: "#708090",
snow: "#fffafa",
springgreen: "#00ff7f",
steelblue: "#4682b4",
tan: "#d2b48c",
teal: "#008080",
thistle: "#d8bfd8",
tomato: "#ff6347",
turquoise: "#40e0d0",
violet: "#ee82ee",
wheat: "#f5deb3",
white: "#ffffff",
whitesmoke: "#f5f5f5",
yellow: "#ffff00",
yellowgreen: "#9acd32"
};
function FC(n) {
var e = { r: 0, g: 0, b: 0 }, t = 1, i = null, r = null, s = null, o = !1, a = !1;
return typeof n == "string" && (n = OC(n)), typeof n == "object" && (Hi(n.r) && Hi(n.g) && Hi(n.b) ? (e = _C(n.r, n.g, n.b), o = !0, a = String(n.r).substr(-1) === "%" ? "prgb" : "rgb") : Hi(n.h) && Hi(n.s) && Hi(n.v) ? (i = Fl(n.s), r = Fl(n.v), e = EC(n.h, i, r), o = !0, a = "hsv") : Hi(n.h) && Hi(n.s) && Hi(n.l) && (i = Fl(n.s), s = Fl(n.l), e = TC(n.h, i, s), o = !0, a = "hsl"), Object.prototype.hasOwnProperty.call(n, "a") && (t = n.a)), t = Z0(t), {
ok: o,
format: n.format || a,
r: Math.min(255, Math.max(e.r, 0)),
g: Math.min(255, Math.max(e.g, 0)),
b: Math.min(255, Math.max(e.b, 0)),
a: t
};
}
var PC = "[-\\+]?\\d+%?", IC = "[-\\+]?\\d*\\.\\d+%?", Fr = "(?:".concat(IC, ")|(?:").concat(PC, ")"), Vu = "[\\s|\\(]+(".concat(Fr, ")[,|\\s]+(").concat(Fr, ")[,|\\s]+(").concat(Fr, ")\\s*\\)?"), Gu = "[\\s|\\(]+(".concat(Fr, ")[,|\\s]+(").concat(Fr, ")[,|\\s]+(").concat(Fr, ")[,|\\s]+(").concat(Fr, ")\\s*\\)?"), li = {
CSS_UNIT: new RegExp(Fr),
rgb: new RegExp("rgb" + Vu),
rgba: new RegExp("rgba" + Gu),
hsl: new RegExp("hsl" + Vu),
hsla: new RegExp("hsla" + Gu),
hsv: new RegExp("hsv" + Vu),
hsva: new RegExp("hsva" + Gu),
hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/
};
function OC(n) {
if (n = n.trim().toLowerCase(), n.length === 0)
return !1;
var e = !1;
if (qh[n])
n = qh[n], e = !0;
else if (n === "transparent")
return { r: 0, g: 0, b: 0, a: 0, format: "name" };
var t = li.rgb.exec(n);
return t ? { r: t[1], g: t[2], b: t[3] } : (t = li.rgba.exec(n), t ? { r: t[1], g: t[2], b: t[3], a: t[4] } : (t = li.hsl.exec(n), t ? { h: t[1], s: t[2], l: t[3] } : (t = li.hsla.exec(n), t ? { h: t[1], s: t[2], l: t[3], a: t[4] } : (t = li.hsv.exec(n), t ? { h: t[1], s: t[2], v: t[3] } : (t = li.hsva.exec(n), t ? { h: t[1], s: t[2], v: t[3], a: t[4] } : (t = li.hex8.exec(n), t ? {
r: zn(t[1]),
g: zn(t[2]),
b: zn(t[3]),
a: Om(t[4]),
format: e ? "name" : "hex8"
} : (t = li.hex6.exec(n), t ? {
r: zn(t[1]),
g: zn(t[2]),
b: zn(t[3]),
format: e ? "name" : "hex"
} : (t = li.hex4.exec(n), t ? {
r: zn(t[1] + t[1]),
g: zn(t[2] + t[2]),
b: zn(t[3] + t[3]),
a: Om(t[4] + t[4]),
format: e ? "name" : "hex8"
} : (t = li.hex3.exec(n), t ? {
r: zn(t[1] + t[1]),
g: zn(t[2] + t[2]),
b: zn(t[3] + t[3]),
format: e ? "name" : "hex"
} : !1)))))))));
}
function Hi(n) {
return !!li.CSS_UNIT.exec(String(n));
}
var DC = (
/** @class */
function() {
function n(e, t) {
e === void 0 && (e = ""), t === void 0 && (t = {});
var i;
if (e instanceof n)
return e;
typeof e == "number" && (e = RC(e)), this.originalInput = e;
var r = FC(e);
this.originalInput = e, this.r = r.r, this.g = r.g, this.b = r.b, this.a = r.a, this.roundA = Math.round(100 * this.a) / 100, this.format = (i = t.format) !== null && i !== void 0 ? i : r.format, this.gradientType = t.gradientType, this.r < 1 && (this.r = Math.round(this.r)), this.g < 1 && (this.g = Math.round(this.g)), this.b < 1 && (this.b = Math.round(this.b)), this.isValid = r.ok;
}
return n.prototype.isDark = function() {
return this.getBrightness() < 128;
}, n.prototype.isLight = function() {
return !this.isDark();
}, n.prototype.getBrightness = function() {
var e = this.toRgb();
return (e.r * 299 + e.g * 587 + e.b * 114) / 1e3;
}, n.prototype.getLuminance = function() {
var e = this.toRgb(), t, i, r, s = e.r / 255, o = e.g / 255, a = e.b / 255;
return s <= 0.03928 ? t = s / 12.92 : t = Math.pow((s + 0.055) / 1.055, 2.4), o <= 0.03928 ? i = o / 12.92 : i = Math.pow((o + 0.055) / 1.055, 2.4), a <= 0.03928 ? r = a / 12.92 : r = Math.pow((a + 0.055) / 1.055, 2.4), 0.2126 * t + 0.7152 * i + 0.0722 * r;
}, n.prototype.getAlpha = function() {
return this.a;
}, n.prototype.setAlpha = function(e) {
return this.a = Z0(e), this.roundA = Math.round(100 * this.a) / 100, this;
}, n.prototype.isMonochrome = function() {
var e = this.toHsl().s;
return e === 0;
}, n.prototype.toHsv = function() {
var e = Pm(this.r, this.g, this.b);
return { h: e.h * 360, s: e.s, v: e.v, a: this.a };
}, n.prototype.toHsvString = function() {
var e = Pm(this.r, this.g, this.b), t = Math.round(e.h * 360), i = Math.round(e.s * 100), r = Math.round(e.v * 100);
return this.a === 1 ? "hsv(".concat(t, ", ").concat(i, "%, ").concat(r, "%)") : "hsva(".concat(t, ", ").concat(i, "%, ").concat(r, "%, ").concat(this.roundA, ")");
}, n.prototype.toHsl = function() {
var e = Fm(this.r, this.g, this.b);
return { h: e.h * 360, s: e.s, l: e.l, a: this.a };
}, n.prototype.toHslString = function() {
var e = Fm(this.r, this.g, this.b), t = Math.round(e.h * 360), i = Math.round(e.s * 100), r = Math.round(e.l * 100);
return this.a === 1 ? "hsl(".concat(t, ", ").concat(i, "%, ").concat(r, "%)") : "hsla(".concat(t, ", ").concat(i, "%, ").concat(r, "%, ").concat(this.roundA, ")");
}, n.prototype.toHex = function(e) {
return e === void 0 && (e = !1), Im(this.r, this.g, this.b, e);
}, n.prototype.toHexString = function(e) {
return e === void 0 && (e = !1), "#" + this.toHex(e);
}, n.prototype.toHex8 = function(e) {
return e === void 0 && (e = !1), CC(this.r, this.g, this.b, this.a, e);
}, n.prototype.toHex8String = function(e) {
return e === void 0 && (e = !1), "#" + this.toHex8(e);
}, n.prototype.toHexShortString = function(e) {
return e === void 0 && (e = !1), this.a === 1 ? this.toHexString(e) : this.toHex8String(e);
}, n.prototype.toRgb = function() {
return {
r: Math.round(this.r),
g: Math.round(this.g),
b: Math.round(this.b),
a: this.a
};
}, n.prototype.toRgbString = function() {
var e = Math.round(this.r), t = Math.round(this.g), i = Math.round(this.b);
return this.a === 1 ? "rgb(".concat(e, ", ").concat(t, ", ").concat(i, ")") : "rgba(".concat(e, ", ").concat(t, ", ").concat(i, ", ").concat(this.roundA, ")");
}, n.prototype.toPercentageRgb = function() {
var e = function(t) {
return "".concat(Math.round(yn(t, 255) * 100), "%");
};
return {
r: e(this.r),
g: e(this.g),
b: e(this.b),
a: this.a
};
}, n.prototype.toPercentageRgbString = function() {
var e = function(t) {
return Math.round(yn(t, 255) * 100);
};
return this.a === 1 ? "rgb(".concat(e(this.r), "%, ").concat(e(this.g), "%, ").concat(e(this.b), "%)") : "rgba(".concat(e(this.r), "%, ").concat(e(this.g), "%, ").concat(e(this.b), "%, ").concat(this.roundA, ")");
}, n.prototype.toName = function() {
if (this.a === 0)
return "transparent";
if (this.a < 1)
return !1;
for (var e = "#" + Im(this.r, this.g, this.b, !1), t = 0, i = Object.entries(qh); t < i.length; t++) {
var r = i[t], s = r[0], o = r[1];
if (e === o)
return s;
}
return !1;
}, n.prototype.toString = function(e) {
var t = !!e;
e = e ?? this.format;
var i = !1, r = this.a < 1 && this.a >= 0, s = !t && r && (e.startsWith("hex") || e === "name");
return s ? e === "name" && this.a === 0 ? this.toName() : this.toRgbString() : (e === "rgb" && (i = this.toRgbString()), e === "prgb" && (i = this.toPercentageRgbString()), (e === "hex" || e === "hex6") && (i = this.toHexString()), e === "hex3" && (i = this.toHexString(!0)), e === "hex4" && (i = this.toHex8String(!0)), e === "hex8" && (i = this.toHex8String()), e === "name" && (i = this.toName()), e === "hsl" && (i = this.toHslString()), e === "hsv" && (i = this.toHsvString()), i || this.toHexString());
}, n.prototype.toNumber = function() {
return (Math.round(this.r) << 16) + (Math.round(this.g) << 8) + Math.round(this.b);
}, n.prototype.clone = function() {
return new n(this.toString());
}, n.prototype.lighten = function(e) {
e === void 0 && (e = 10);
var t = this.toHsl();
return t.l += e / 100, t.l = Rl(t.l), new n(t);
}, n.prototype.brighten = function(e) {
e === void 0 && (e = 10);
var t = this.toRgb();
return t.r = Math.max(0, Math.min(255, t.r - Math.round(255 * -(e / 100)))), t.g = Math.max(0, Math.min(255, t.g - Math.round(255 * -(e / 100)))), t.b = Math.max(0, Math.min(255, t.b - Math.round(255 * -(e / 100)))), new n(t);
}, n.prototype.darken = function(e) {
e === void 0 && (e = 10);
var t = this.toHsl();
return t.l -= e / 100, t.l = Rl(t.l), new n(t);
}, n.prototype.tint = function(e) {
return e === void 0 && (e = 10), this.mix("white", e);
}, n.prototype.shade = function(e) {
return e === void 0 && (e = 10), this.mix("black", e);
}, n.prototype.desaturate = function(e) {
e === void 0 && (e = 10);
var t = this.toHsl();
return t.s -= e / 100, t.s = Rl(t.s), new n(t);
}, n.prototype.saturate = function(e) {
e === void 0 && (e = 10);
var t = this.toHsl();
return t.s += e / 100, t.s = Rl(t.s), new n(t);
}, n.prototype.greyscale = function() {
return this.desaturate(100);
}, n.prototype.spin = function(e) {
var t = this.toHsl(), i = (t.h + e) % 360;
return t.h = i < 0 ? 360 + i : i, new n(t);
}, n.prototype.mix = function(e, t) {
t === void 0 && (t = 50);
var i = this.toRgb(), r = new n(e).toRgb(), s = t / 100, o = {
r: (r.r - i.r) * s + i.r,
g: (r.g - i.g) * s + i.g,
b: (r.b - i.b) * s + i.b,
a: (r.a - i.a) * s + i.a
};
return new n(o);
}, n.prototype.analogous = function(e, t) {
e === void 0 && (e = 6), t === void 0 && (t = 30);
var i = this.toHsl(), r = 360 / t, s = [this];
for (i.h = (i.h - (r * e >> 1) + 720) % 360; --e; )
i.h = (i.h + r) % 360, s.push(new n(i));
return s;
}, n.prototype.complement = function() {
var e = this.toHsl();
return e.h = (e.h + 180) % 360, new n(e);
}, n.prototype.monochromatic = function(e) {
e === void 0 && (e = 6);
for (var t = this.toHsv(), i = t.h, r = t.s, s = t.v, o = [], a = 1 / e; e--; )
o.push(new n({ h: i, s: r, v: s })), s = (s + a) % 1;
return o;
}, n.prototype.splitcomplement = function() {
var e = this.toHsl(), t = e.h;
return [
this,
new n({ h: (t + 72) % 360, s: e.s, l: e.l }),
new n({ h: (t + 216) % 360, s: e.s, l: e.l })
];
}, n.prototype.onBackground = function(e) {
var t = this.toRgb(), i = new n(e).toRgb(), r = t.a + i.a * (1 - t.a);
return new n({
r: (t.r * t.a + i.r * i.a * (1 - t.a)) / r,
g: (t.g * t.a + i.g * i.a * (1 - t.a)) / r,
b: (t.b * t.a + i.b * i.a * (1 - t.a)) / r,
a: r
});
}, n.prototype.triad = function() {
return this.polyad(3);
}, n.prototype.tetrad = function() {
return this.polyad(4);
}, n.prototype.polyad = function(e) {
for (var t = this.toHsl(), i = t.h, r = [this], s = 360 / e, o = 1; o < e; o++)
r.push(new n({ h: (i + o * s) % 360, s: t.s, l: t.l }));
return r;
}, n.prototype.equals = function(e) {
return this.toRgbString() === new n(e).toRgbString();
}, n;
}()
);
function gr(n, e = 20) {
return n.mix("#141414", e).toString();
}
function NC(n) {
const e = ol(), t = nt("button");
return ue(() => {
let i = {}, r = n.color;
if (r) {
const s = r.match(/var\((.*?)\)/);
s && (r = window.getComputedStyle(window.document.documentElement).getPropertyValue(s[1]));
const o = new DC(r), a = n.dark ? o.tint(20).toString() : gr(o, 20);
if (n.plain)
i = t.cssVarBlock({
"bg-color": n.dark ? gr(o, 90) : o.tint(90).toString(),
"text-color": r,
"border-color": n.dark ? gr(o, 50) : o.tint(50).toString(),
"hover-text-color": `var(${t.cssVarName("color-white")})`,
"hover-bg-color": r,
"hover-border-color": r,
"active-bg-color": a,
"active-text-color": `var(${t.cssVarName("color-white")})`,
"active-border-color": a
}), e.value && (i[t.cssVarBlockName("disabled-bg-color")] = n.dark ? gr(o, 90) : o.tint(90).toString(), i[t.cssVarBlockName("disabled-text-color")] = n.dark ? gr(o, 50) : o.tint(50).toString(), i[t.cssVarBlockName("disabled-border-color")] = n.dark ? gr(o, 80) : o.tint(80).toString());
else {
const c = n.dark ? gr(o, 30) : o.tint(30).toString(), l = o.isDark() ? `var(${t.cssVarName("color-white")})` : `var(${t.cssVarName("color-black")})`;
if (i = t.cssVarBlock({
"bg-color": r,
"text-color": l,
"border-color": r,
"hover-bg-color": c,
"hover-text-color": l,
"hover-border-color": c,
"active-bg-color": a,
"active-border-color": a
}), e.value) {
const d = n.dark ? gr(o, 50) : o.tint(50).toString();
i[t.cssVarBlockName("disabled-bg-color")] = d, i[t.cssVarBlockName("disabled-text-color")] = n.dark ? "rgba(255, 255, 255, 0.5)" : `var(${t.cssVarName("color-white")})`, i[t.cssVarBlockName("disabled-border-color")] = d;
}
}
}
return i;
});
}
const BC = Pe({
name: "ElButton"
}), UC = /* @__PURE__ */ Pe({
...BC,
props: Kh,
emits: wC,
setup(n, { expose: e, emit: t }) {
const i = n, r = NC(i), s = nt("button"), { _ref: o, _size: a, _type: c, _disabled: l, _props: d, shouldAddSpace: h, handleClick: f } = bC(i, t), g = ue(() => [
s.b(),
s.m(c.value),
s.m(a.value),
s.is("disabled", l.value),
s.is("loading", i.loading),
s.is("plain", i.plain),
s.is("round", i.round),
s.is("circle", i.circle),
s.is("text", i.text),
s.is("link", i.link),
s.is("has-bg", i.bg)
]);
return e({
ref: o,
size: a,
type: c,
disabled: l,
shouldAddSpace: h
}), (p, u) => (ve(), Ve(Fn(p.tag), Ei({
ref_key: "_ref",
ref: o
}, z(d), {
class: z(g),
style: z(r),
onClick: z(f)
}), {
default: de(() => [
p.loading ? (ve(), Ce(Ft, { key: 0 }, [
p.$slots.loading ? He(p.$slots, "loading", { key: 0 }) : (ve(), Ve(z(It), {
key: 1,
class: Te(z(s).is("loading"))
}, {
default: de(() => [
(ve(), Ve(Fn(p.loadingIcon)))
]),
_: 1
}, 8, ["class"]))
], 64)) : p.icon || p.$slots.icon ? (ve(), Ve(z(It), { key: 1 }, {
default: de(() => [
p.icon ? (ve(), Ve(Fn(p.icon), { key: 0 })) : He(p.$slots, "icon", { key: 1 })
]),
_: 3
})) : ke("v-if", !0),
p.$slots.default ? (ve(), Ce("span", {
key: 2,
class: Te({ [z(s).em("text", "expand")]: z(h) })
}, [
He(p.$slots, "default")
], 2)) : ke("v-if", !0)
]),
_: 3
}, 16, ["class", "style", "onClick"]));
}
});
var zC = /* @__PURE__ */ st(UC, [["__file", "button.vue"]]);
const kC = {
size: Kh.size,
type: Kh.type
}, VC = Pe({
name: "ElButtonGroup"
}), GC = /* @__PURE__ */ Pe({
...VC,
props: kC,
setup(n) {
const e = n;
sn($0, jn({
size: hi(e, "size"),
type: hi(e, "type")
}));
const t = nt("button");
return (i, r) => (ve(), Ce("div", {
class: Te(z(t).b("group"))
}, [
He(i.$slots, "default")
], 2));
}
});
var X0 = /* @__PURE__ */ st(GC, [["__file", "button-group.vue"]]);
const Ko = on(zC, {
ButtonGroup: X0
});
vi(X0);
var Lr = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
function HC(n) {
return n && n.__esModule && Object.prototype.hasOwnProperty.call(n, "default") ? n.default : n;
}
function au(n) {
if (n.__esModule) return n;
var e = n.default;
if (typeof e == "function") {
var t = function i() {
return this instanceof i ? Reflect.construct(e, arguments, this.constructor) : e.apply(this, arguments);
};
t.prototype = e.prototype;
} else t = {};
return Object.defineProperty(t, "__esModule", { value: !0 }), Object.keys(n).forEach(function(i) {
var r = Object.getOwnPropertyDescriptor(n, i);
Object.defineProperty(t, i, r.get ? r : {
enumerable: !0,
get: function() {
return n[i];
}
});
}), t;
}
const Er = /* @__PURE__ */ new Map();
if (en) {
let n;
document.addEventListener("mousedown", (e) => n = e), document.addEventListener("mouseup", (e) => {
if (n) {
for (const t of Er.values())
for (const { documentHandler: i } of t)
i(e, n);
n = void 0;
}
});
}
function Dm(n, e) {
let t = [];
return Array.isArray(e.arg) ? t = e.arg : ys(e.arg) && t.push(e.arg), function(i, r) {
const s = e.instance.popperRef, o = i.target, a = r == null ? void 0 : r.target, c = !e || !e.instance, l = !o || !a, d = n.contains(o) || n.contains(a), h = n === o, f = t.length && t.some((p) => p == null ? void 0 : p.contains(o)) || t.length && t.includes(a), g = s && (s.contains(o) || s.contains(a));
c || l || d || h || f || g || e.value(i, r);
};
}
const WC = {
beforeMount(n, e) {
Er.has(n) || Er.set(n, []), Er.get(n).push({
documentHandler: Dm(n, e),
bindingFn: e.value
});
},
updated(n, e) {
Er.has(n) || Er.set(n, []);
const t = Er.get(n), i = t.findIndex((s) => s.bindingFn === e.oldValue), r = {
documentHandler: Dm(n, e),
bindingFn: e.value
};
i >= 0 ? t.splice(i, 1, r) : t.push(r);
},
unmounted(n) {
Er.delete(n);
}
}, jC = 100, $C = 600, Nm = {
beforeMount(n, e) {
const t = e.value, { interval: i = jC, delay: r = $C } = Sn(t) ? {} : t;
let s, o;
const a = () => Sn(t) ? t() : t.handler(), c = () => {
o && (clearTimeout(o), o = void 0), s && (clearInterval(s), s = void 0);
};
n.addEventListener("mousedown", (l) => {
l.button === 0 && (c(), a(), document.addEventListener("mouseup", () => c(), {
once: !0
}), o = setTimeout(() => {
s = setInterval(() => {
a();
}, i);
}, r));
});
}
}, Y0 = at({
modelValue: {
type: [String, Number, Boolean],
default: void 0
},
size: Gr,
disabled: Boolean,
label: {
type: [String, Number, Boolean],
default: void 0
},
value: {
type: [String, Number, Boolean],
default: void 0
},
name: {
type: String,
default: void 0
}
}), ZC = at({
...Y0,
border: Boolean
}), J0 = {
[At]: (n) => vn(n) || yt(n) || Ba(n),
[hr]: (n) => vn(n) || yt(n) || Ba(n)
}, K0 = Symbol("radioGroupKey"), q0 = (n, e) => {
const t = Ee(), i = pt(K0, void 0), r = ue(() => !!i), s = ue(() => im(n.value) ? n.label : n.value), o = ue({
get() {
return r.value ? i.modelValue : n.modelValue;
},
set(h) {
r.value ? i.changeEvent(h) : e && e(At, h), t.value.checked = n.modelValue === s.value;
}
}), a = Ns(ue(() => i == null ? void 0 : i.size)), c = ol(ue(() => i == null ? void 0 : i.disabled)), l = Ee(!1), d = ue(() => c.value || r.value && o.value !== s.value ? -1 : 0);
return p0({
from: "label act as value",
replacement: "value",
version: "3.0.0",
scope: "el-radio",
ref: "https://element-plus.org/en-US/component/radio.html"
}, ue(() => r.value && im(n.value))), {
radioRef: t,
isGroup: r,
radioGroup: i,
focus: l,
size: a,
disabled: c,
tabIndex: d,
modelValue: o,
actualValue: s
};
}, XC = Pe({
name: "ElRadio"
}), YC = /* @__PURE__ */ Pe({
...XC,
props: ZC,
emits: J0,
setup(n, { emit: e }) {
const t = n, i = nt("radio"), { radioRef: r, radioGroup: s, focus: o, size: a, disabled: c, modelValue: l, actualValue: d } = q0(t, e);
function h() {
bt(() => e("change", l.value));
}
return (f, g) => {
var p;
return ve(), Ce("label", {
class: Te([
z(i).b(),
z(i).is("disabled", z(c)),
z(i).is("focus", z(o)),
z(i).is("bordered", f.border),
z(i).is("checked", z(l) === z(d)),
z(i).m(z(a))
])
}, [
Ne("span", {
class: Te([
z(i).e("input"),
z(i).is("disabled", z(c)),
z(i).is("checked", z(l) === z(d))
])
}, [
Lt(Ne("input", {
ref_key: "radioRef",
ref: r,
"onUpdate:modelValue": (u) => Zc(l) ? l.value = u : null,
class: Te(z(i).e("original")),
value: z(d),
name: f.name || ((p = z(s)) == null ? void 0 : p.name),
disabled: z(c),
checked: z(l) === z(d),
type: "radio",
onFocus: (u) => o.value = !0,
onBlur: (u) => o.value = !1,
onChange: h,
onClick: Ut(() => {
}, ["stop"])
}, null, 42, ["onUpdate:modelValue", "value", "name", "disabled", "checked", "onFocus", "onBlur", "onClick"]), [
[kv, z(l)]
]),
Ne("span", {
class: Te(z(i).e("inner"))
}, null, 2)
], 2),
Ne("span", {
class: Te(z(i).e("label")),
onKeydown: Ut(() => {
}, ["stop"])
}, [
He(f.$slots, "default", {}, () => [
rt(gt(f.label), 1)
])
], 42, ["onKeydown"])
], 2);
};
}
});
var JC = /* @__PURE__ */ st(YC, [["__file", "radio.vue"]]);
const KC = at({
...Y0
}), qC = Pe({
name: "ElRadioButton"
}), QC = /* @__PURE__ */ Pe({
...qC,
props: KC,
setup(n) {
const e = n, t = nt("radio"), { radioRef: i, focus: r, size: s, disabled: o, modelValue: a, radioGroup: c, actualValue: l } = q0(e), d = ue(() => ({
backgroundColor: (c == null ? void 0 : c.fill) || "",
borderColor: (c == null ? void 0 : c.fill) || "",
boxShadow: c != null && c.fill ? `-1px 0 0 0 ${c.fill}` : "",
color: (c == null ? void 0 : c.textColor) || ""
}));
return (h, f) => {
var g;
return ve(), Ce("label", {
class: Te([
z(t).b("button"),
z(t).is("active", z(a) === z(l)),
z(t).is("disabled", z(o)),
z(t).is("focus", z(r)),
z(t).bm("button", z(s))
])
}, [
Lt(Ne("input", {
ref_key: "radioRef",
ref: i,
"onUpdate:modelValue": (p) => Zc(a) ? a.value = p : null,
class: Te(z(t).be("button", "original-radio")),
value: z(l),
type: "radio",
name: h.name || ((g = z(c)) == null ? void 0 : g.name),
disabled: z(o),
onFocus: (p) => r.value = !0,
onBlur: (p) => r.value = !1,
onClick: Ut(() => {
}, ["stop"])
}, null, 42, ["onUpdate:modelValue", "value", "name", "disabled", "onFocus", "onBlur", "onClick"]), [
[kv, z(a)]
]),
Ne("span", {
class: Te(z(t).be("button", "inner")),
style: Rt(z(a) === z(l) ? z(d) : {}),
onKeydown: Ut(() => {
}, ["stop"])
}, [
He(h.$slots, "default", {}, () => [
rt(gt(h.label), 1)
])
], 46, ["onKeydown"])
], 2);
};
}
});
var Q0 = /* @__PURE__ */ st(QC, [["__file", "radio-button.vue"]]);
const eL = at({
id: {
type: String,
default: void 0
},
size: Gr,
disabled: Boolean,
modelValue: {
type: [String, Number, Boolean],
default: void 0
},
fill: {
type: String,
default: ""
},
textColor: {
type: String,
default: ""
},
name: {
type: String,
default: void 0
},
validateEvent: {
type: Boolean,
default: !0
},
...Yr(["ariaLabel"])
}), tL = J0, nL = Pe({
name: "ElRadioGroup"
}), iL = /* @__PURE__ */ Pe({
...nL,
props: eL,
emits: tL,
setup(n, { emit: e }) {
const t = n, i = nt("radio"), r = sl(), s = Ee(), { formItem: o } = Jo(), { inputId: a, isLabeledByFormItem: c } = su(t, {
formItemContext: o
}), l = (h) => {
e(At, h), bt(() => e("change", h));
};
Jt(() => {
const h = s.value.querySelectorAll("[type=radio]"), f = h[0];
!Array.from(h).some((g) => g.checked) && f && (f.tabIndex = 0);
});
const d = ue(() => t.name || r.value);
return sn(K0, jn({
...Br(t),
changeEvent: l,
name: d
})), Qe(() => t.modelValue, () => {
t.validateEvent && (o == null || o.validate("change").catch((h) => kt(h)));
}), (h, f) => (ve(), Ce("div", {
id: z(a),
ref_key: "radioGroupRef",
ref: s,
class: Te(z(i).b("group")),
role: "radiogroup",
"aria-label": z(c) ? void 0 : h.ariaLabel || "radio-group",
"aria-labelledby": z(c) ? z(o).labelId : void 0
}, [
He(h.$slots, "default")
], 10, ["id", "aria-label", "aria-labelledby"]));
}
});
var ey = /* @__PURE__ */ st(iL, [["__file", "radio-group.vue"]]);
const ty = on(JC, {
RadioButton: Q0,
RadioGroup: ey
}), ny = vi(ey);
vi(Q0);
const Qh = at({
type: {
type: String,
values: ["primary", "success", "info", "warning", "danger"],
default: "primary"
},
closable: Boolean,
disableTransitions: Boolean,
hit: Boolean,
color: String,
size: {
type: String,
values: f0
},
effect: {
type: String,
values: ["dark", "light", "plain"],
default: "light"
},
round: Boolean
}), rL = {
close: (n) => n instanceof MouseEvent,
click: (n) => n instanceof MouseEvent
}, sL = Pe({
name: "ElTag"
}), oL = /* @__PURE__ */ Pe({
...sL,
props: Qh,
emits: rL,
setup(n, { emit: e }) {
const t = n, i = Ns(), r = nt("tag"), s = ue(() => {
const { type: l, hit: d, effect: h, closable: f, round: g } = t;
return [
r.b(),
r.is("closable", f),
r.m(l || "primary"),
r.m(i.value),
r.m(h),
r.is("hit", d),
r.is("round", g)
];
}), o = (l) => {
e("close", l);
}, a = (l) => {
e("click", l);
}, c = (l) => {
l.component.subTree.component.bum = null;
};
return (l, d) => l.disableTransitions ? (ve(), Ce("span", {
key: 0,
class: Te(z(s)),
style: Rt({ backgroundColor: l.color }),
onClick: a
}, [
Ne("span", {
class: Te(z(r).e("content"))
}, [
He(l.$slots, "default")
], 2),
l.closable ? (ve(), Ve(z(It), {
key: 0,
class: Te(z(r).e("close")),
onClick: Ut(o, ["stop"])
}, {
default: de(() => [
oe(z(Zh))
]),
_: 1
}, 8, ["class", "onClick"])) : ke("v-if", !0)
], 6)) : (ve(), Ve(el, {
key: 1,
name: `${z(r).namespace.value}-zoom-in-center`,
appear: "",
onVnodeMounted: c
}, {
default: de(() => [
Ne("span", {
class: Te(z(s)),
style: Rt({ backgroundColor: l.color }),
onClick: a
}, [
Ne("span", {
class: Te(z(r).e("content"))
}, [
He(l.$slots, "default")
], 2),
l.closable ? (ve(), Ve(z(It), {
key: 0,
class: Te(z(r).e("close")),
onClick: Ut(o, ["stop"])
}, {
default: de(() => [
oe(z(Zh))
]),
_: 1
}, 8, ["class", "onClick"])) : ke("v-if", !0)
], 6)
]),
_: 3
}, 8, ["name"]));
}
});
var aL = /* @__PURE__ */ st(oL, [["__file", "tag.vue"]]);
const lL = on(aL), iy = Symbol("rowContextKey"), cL = [
"start",
"center",
"end",
"space-around",
"space-between",
"space-evenly"
], uL = ["top", "middle", "bottom"], hL = at({
tag: {
type: String,
default: "div"
},
gutter: {
type: Number,
default: 0
},
justify: {
type: String,
values: cL,
default: "start"
},
align: {
type: String,
values: uL
}
}), dL = Pe({
name: "ElRow"
}), fL = /* @__PURE__ */ Pe({
...dL,
props: hL,
setup(n) {
const e = n, t = nt("row"), i = ue(() => e.gutter);
sn(iy, {
gutter: i
});
const r = ue(() => {
const o = {};
return e.gutter && (o.marginRight = o.marginLeft = `-${e.gutter / 2}px`), o;
}), s = ue(() => [
t.b(),
t.is(`justify-${e.justify}`, e.justify !== "start"),
t.is(`align-${e.align}`, !!e.align)
]);
return (o, a) => (ve(), Ve(Fn(o.tag), {
class: Te(z(s)),
style: Rt(z(r))
}, {
default: de(() => [
He(o.$slots, "default")
]),
_: 3
}, 8, ["class", "style"]));
}
});
var pL = /* @__PURE__ */ st(fL, [["__file", "row.vue"]]);
const Ui = on(pL), mL = at({
tag: {
type: String,
default: "div"
},
span: {
type: Number,
default: 24
},
offset: {
type: Number,
default: 0
},
pull: {
type: Number,
default: 0
},
push: {
type: Number,
default: 0
},
xs: {
type: Je([Number, Object]),
default: () => qi({})
},
sm: {
type: Je([Number, Object]),
default: () => qi({})
},
md: {
type: Je([Number, Object]),
default: () => qi({})
},
lg: {
type: Je([Number, Object]),
default: () => qi({})
},
xl: {
type: Je([Number, Object]),
default: () => qi({})
}
}), gL = Pe({
name: "ElCol"
}), vL = /* @__PURE__ */ Pe({
...gL,
props: mL,
setup(n) {
const e = n, { gutter: t } = pt(iy, { gutter: ue(() => 0) }), i = nt("col"), r = ue(() => {
const o = {};
return t.value && (o.paddingLeft = o.paddingRight = `${t.value / 2}px`), o;
}), s = ue(() => {
const o = [];
return ["span", "offset", "pull", "push"].forEach((l) => {
const d = e[l];
yt(d) && (l === "span" ? o.push(i.b(`${e[l]}`)) : d > 0 && o.push(i.b(`${l}-${e[l]}`)));
}), ["xs", "sm", "md", "lg", "xl"].forEach((l) => {
yt(e[l]) ? o.push(i.b(`${l}-${e[l]}`)) : Tn(e[l]) && Object.entries(e[l]).forEach(([d, h]) => {
o.push(d !== "span" ? i.b(`${l}-${d}-${h}`) : i.b(`${l}-${h}`));
});
}), t.value && o.push(i.is("guttered")), [i.b(), o];
});
return (o, a) => (ve(), Ve(Fn(o.tag), {
class: Te(z(s)),
style: Rt(z(r))
}, {
default: de(() => [
He(o.$slots, "default")
]),
_: 3
}, 8, ["class", "style"]));
}
});
var yL = /* @__PURE__ */ st(vL, [["__file", "col.vue"]]);
const bi = on(yL), Bm = (n) => yt(n) || vn(n) || Pn(n), bL = at({
accordion: Boolean,
modelValue: {
type: Je([Array, String, Number]),
default: () => qi([])
}
}), xL = {
[At]: Bm,
[hr]: Bm
}, ry = Symbol("collapseContextKey"), ML = (n, e) => {
const t = Ee(Si(n.modelValue)), i = (s) => {
t.value = s;
const o = n.accordion ? t.value[0] : t.value;
e(At, o), e(hr, o);
}, r = (s) => {
if (n.accordion)
i([t.value[0] === s ? "" : s]);
else {
const o = [...t.value], a = o.indexOf(s);
a > -1 ? o.splice(a, 1) : o.push(s), i(o);
}
};
return Qe(() => n.modelValue, () => t.value = Si(n.modelValue), { deep: !0 }), sn(ry, {
activeNames: t,
handleItemClick: r
}), {
activeNames: t,
setActiveNames: i
};
}, wL = () => {
const n = nt("collapse");
return {
rootKls: ue(() => n.b())
};
}, AL = Pe({
name: "ElCollapse"
}), SL = /* @__PURE__ */ Pe({
...AL,
props: bL,
emits: xL,
setup(n, { expose: e, emit: t }) {
const i = n, { activeNames: r, setActiveNames: s } = ML(i, t), { rootKls: o } = wL();
return e({
activeNames: r,
setActiveNames: s
}), (a, c) => (ve(), Ce("div", {
class: Te(z(o))
}, [
He(a.$slots, "default")
], 2));
}
});
var _L = /* @__PURE__ */ st(SL, [["__file", "collapse.vue"]]);
const TL = Pe({
name: "ElCollapseTransition"
}), EL = /* @__PURE__ */ Pe({
...TL,
setup(n) {
const e = nt("collapse-transition"), t = (r) => {
r.style.maxHeight = "", r.style.overflow = r.dataset.oldOverflow, r.style.paddingTop = r.dataset.oldPaddingTop, r.style.paddingBottom = r.dataset.oldPaddingBottom;
}, i = {
beforeEnter(r) {
r.dataset || (r.dataset = {}), r.dataset.oldPaddingTop = r.style.paddingTop, r.dataset.oldPaddingBottom = r.style.paddingBottom, r.style.height && (r.dataset.elExistsHeight = r.style.height), r.style.maxHeight = 0, r.style.paddingTop = 0, r.style.paddingBottom = 0;
},
enter(r) {
requestAnimationFrame(() => {
r.dataset.oldOverflow = r.style.overflow, r.dataset.elExistsHeight ? r.style.maxHeight = r.dataset.elExistsHeight : r.scrollHeight !== 0 ? r.style.maxHeight = `${r.scrollHeight}px` : r.style.maxHeight = 0, r.style.paddingTop = r.dataset.oldPaddingTop, r.style.paddingBottom = r.dataset.oldPaddingBottom, r.style.overflow = "hidden";
});
},
afterEnter(r) {
r.style.maxHeight = "", r.style.overflow = r.dataset.oldOverflow;
},
enterCancelled(r) {
t(r);
},
beforeLeave(r) {
r.dataset || (r.dataset = {}), r.dataset.oldPaddingTop = r.style.paddingTop, r.dataset.oldPaddingBottom = r.style.paddingBottom, r.dataset.oldOverflow = r.style.overflow, r.style.maxHeight = `${r.scrollHeight}px`, r.style.overflow = "hidden";
},
leave(r) {
r.scrollHeight !== 0 && (r.style.maxHeight = 0, r.style.paddingTop = 0, r.style.paddingBottom = 0);
},
afterLeave(r) {
t(r);
},
leaveCancelled(r) {
t(r);
}
};
return (r, s) => (ve(), Ve(el, Ei({
name: z(e).b()
}, ZM(i)), {
default: de(() => [
He(r.$slots, "default")
]),
_: 3
}, 16, ["name"]));
}
});
var CL = /* @__PURE__ */ st(EL, [["__file", "collapse-transition.vue"]]);
const LL = on(CL), RL = at({
title: {
type: String,
default: ""
},
name: {
type: Je([String, Number]),
default: void 0
},
icon: {
type: Vr,
default: kr
},
disabled: Boolean
}), FL = (n) => {
const e = pt(ry), { namespace: t } = nt("collapse"), i = Ee(!1), r = Ee(!1), s = of(), o = ue(() => s.current++), a = ue(() => {
var f;
return (f = n.name) != null ? f : `${t.value}-id-${s.prefix}-${z(o)}`;
}), c = ue(() => e == null ? void 0 : e.activeNames.value.includes(z(a)));
return {
focusing: i,
id: o,
isActive: c,
handleFocus: () => {
setTimeout(() => {
r.value ? r.value = !1 : i.value = !0;
}, 50);
},
handleHeaderClick: () => {
n.disabled || (e == null || e.handleItemClick(z(a)), i.value = !1, r.value = !0);
},
handleEnterClick: () => {
e == null || e.handleItemClick(z(a));
}
};
}, PL = (n, { focusing: e, isActive: t, id: i }) => {
const r = nt("collapse"), s = ue(() => [
r.b("item"),
r.is("active", z(t)),
r.is("disabled", n.disabled)
]), o = ue(() => [
r.be("item", "header"),
r.is("active", z(t)),
{ focusing: z(e) && !n.disabled }
]), a = ue(() => [
r.be("item", "arrow"),
r.is("active", z(t))
]), c = ue(() => r.be("item", "wrap")), l = ue(() => r.be("item", "content")), d = ue(() => r.b(`content-${z(i)}`)), h = ue(() => r.b(`head-${z(i)}`));
return {
arrowKls: a,
headKls: o,
rootKls: s,
itemWrapperKls: c,
itemContentKls: l,
scopedContentId: d,
scopedHeadId: h
};
}, IL = Pe({
name: "ElCollapseItem"
}), OL = /* @__PURE__ */ Pe({
...IL,
props: RL,
setup(n, { expose: e }) {
const t = n, {
focusing: i,
id: r,
isActive: s,
handleFocus: o,
handleHeaderClick: a,
handleEnterClick: c
} = FL(t), {
arrowKls: l,
headKls: d,
rootKls: h,
itemWrapperKls: f,
itemContentKls: g,
scopedContentId: p,
scopedHeadId: u
} = PL(t, { focusing: i, isActive: s, id: r });
return e({
isActive: s
}), (y, v) => (ve(), Ce("div", {
class: Te(z(h))
}, [
Ne("button", {
id: z(u),
class: Te(z(d)),
"aria-expanded": z(s),
"aria-controls": z(p),
"aria-describedby": z(p),
tabindex: y.disabled ? -1 : 0,
type: "button",
onClick: z(a),
onKeydown: ui(Ut(z(c), ["stop", "prevent"]), ["space", "enter"]),
onFocus: z(o),
onBlur: (m) => i.value = !1
}, [
He(y.$slots, "title", {}, () => [
rt(gt(y.title), 1)
]),
He(y.$slots, "icon", { isActive: z(s) }, () => [
oe(z(It), {
class: Te(z(l))
}, {
default: de(() => [
(ve(), Ve(Fn(y.icon)))
]),
_: 1
}, 8, ["class"])
])
], 42, ["id", "aria-expanded", "aria-controls", "aria-describedby", "tabindex", "onClick", "onKeydown", "onFocus", "onBlur"]),
oe(z(LL), null, {
default: de(() => [
Lt(Ne("div", {
id: z(p),
role: "region",
class: Te(z(f)),
"aria-hidden": !z(s),
"aria-labelledby": z(u)
}, [
Ne("div", {
class: Te(z(g))
}, [
He(y.$slots, "default")
], 2)
], 10, ["id", "aria-hidden", "aria-labelledby"]), [
[mn, z(s)]
])
]),
_: 3
})
], 2));
}
});
var sy = /* @__PURE__ */ st(OL, [["__file", "collapse-item.vue"]]);
const oy = on(_L, {
CollapseItem: sy
}), ay = vi(sy), DL = Pe({
name: "ElContainer"
}), NL = /* @__PURE__ */ Pe({
...DL,
props: {
direction: {
type: String
}
},
setup(n) {
const e = n, t = Xc(), i = nt("container"), r = ue(() => e.direction === "vertical" ? !0 : e.direction === "horizontal" ? !1 : t && t.default ? t.default().some((o) => {
const a = o.type.name;
return a === "ElHeader" || a === "ElFooter";
}) : !1);
return (s, o) => (ve(), Ce("section", {
class: Te([z(i).b(), z(i).is("vertical", z(r))])
}, [
He(s.$slots, "default")
], 2));
}
});
var BL = /* @__PURE__ */ st(NL, [["__file", "container.vue"]]);
const UL = Pe({
name: "ElAside"
}), zL = /* @__PURE__ */ Pe({
...UL,
props: {
width: {
type: String,
default: null
}
},
setup(n) {
const e = n, t = nt("aside"), i = ue(() => e.width ? t.cssVarBlock({ width: e.width }) : {});
return (r, s) => (ve(), Ce("aside", {
class: Te(z(t).b()),
style: Rt(z(i))
}, [
He(r.$slots, "default")
], 6));
}
});
var ly = /* @__PURE__ */ st(zL, [["__file", "aside.vue"]]);
const kL = Pe({
name: "ElFooter"
}), VL = /* @__PURE__ */ Pe({
...kL,
props: {
height: {
type: String,
default: null
}
},
setup(n) {
const e = n, t = nt("footer"), i = ue(() => e.height ? t.cssVarBlock({ height: e.height }) : {});
return (r, s) => (ve(), Ce("footer", {
class: Te(z(t).b()),
style: Rt(z(i))
}, [
He(r.$slots, "default")
], 6));
}
});
var cy = /* @__PURE__ */ st(VL, [["__file", "footer.vue"]]);
const GL = Pe({
name: "ElHeader"
}), HL = /* @__PURE__ */ Pe({
...GL,
props: {
height: {
type: String,
default: null
}
},
setup(n) {
const e = n, t = nt("header"), i = ue(() => e.height ? t.cssVarBlock({
height: e.height
}) : {});
return (r, s) => (ve(), Ce("header", {
class: Te(z(t).b()),
style: Rt(z(i))
}, [
He(r.$slots, "default")
], 6));
}
});
var uy = /* @__PURE__ */ st(HL, [["__file", "header.vue"]]);
const WL = Pe({
name: "ElMain"
}), jL = /* @__PURE__ */ Pe({
...WL,
setup(n) {
const e = nt("main");
return (t, i) => (ve(), Ce("main", {
class: Te(z(e).b())
}, [
He(t.$slots, "default")
], 2));
}
});
var hy = /* @__PURE__ */ st(jL, [["__file", "main.vue"]]);
const zi = on(BL, {
Aside: ly,
Footer: cy,
Header: uy,
Main: hy
});
vi(ly);
const dy = vi(cy), $L = vi(uy), dr = vi(hy), ZL = /* @__PURE__ */ Pe({
inheritAttrs: !1
});
function XL(n, e, t, i, r, s) {
return He(n.$slots, "default");
}
var YL = /* @__PURE__ */ st(ZL, [["render", XL], ["__file", "collection.vue"]]);
const JL = /* @__PURE__ */ Pe({
name: "ElCollectionItem",
inheritAttrs: !1
});
function KL(n, e, t, i, r, s) {
return He(n.$slots, "default");
}
var qL = /* @__PURE__ */ st(JL, [["render", KL], ["__file", "collection-item.vue"]]);
const QL = "data-el-collection-item", eR = (n) => {
const e = `El${n}Collection`, t = `${e}Item`, i = Symbol(e), r = Symbol(t), s = {
...YL,
name: e,
setup() {
const a = Ee(null), c = /* @__PURE__ */ new Map();
sn(i, {
itemMap: c,
getItems: () => {
const d = z(a);
if (!d)
return [];
const h = Array.from(d.querySelectorAll(`[${QL}]`));
return [...c.values()].sort((g, p) => h.indexOf(g.ref) - h.indexOf(p.ref));
},
collectionRef: a
});
}
}, o = {
...qL,
name: t,
setup(a, { attrs: c }) {
const l = Ee(null), d = pt(i, void 0);
sn(r, {
collectionItemRef: l
}), Jt(() => {
const h = z(l);
h && d.itemMap.set(h, {
ref: h,
...c
});
}), ei(() => {
const h = z(l);
d.itemMap.delete(h);
});
}
};
return {
COLLECTION_INJECTION_KEY: i,
COLLECTION_ITEM_INJECTION_KEY: r,
ElCollection: s,
ElCollectionItem: o
};
}, Hu = at({
trigger: ka.trigger,
effect: {
...kn.effect,
default: "light"
},
type: {
type: Je(String)
},
placement: {
type: Je(String),
default: "bottom"
},
popperOptions: {
type: Je(Object),
default: () => ({})
},
id: String,
size: {
type: String,
default: ""
},
splitButton: Boolean,
hideOnClick: {
type: Boolean,
default: !0
},
loop: {
type: Boolean,
default: !0
},
showTimeout: {
type: Number,
default: 150
},
hideTimeout: {
type: Number,
default: 150
},
tabindex: {
type: Je([Number, String]),
default: 0
},
maxHeight: {
type: Je([Number, String]),
default: ""
},
popperClass: {
type: String,
default: ""
},
disabled: Boolean,
role: {
type: String,
default: "menu"
},
buttonProps: {
type: Je(Object)
},
teleported: kn.teleported
});
at({
command: {
type: [Object, String, Number],
default: () => ({})
},
disabled: Boolean,
divided: Boolean,
textValue: String,
icon: {
type: Vr
}
});
at({
onKeydown: { type: Je(Function) }
});
eR("Dropdown");
const tR = at({
id: {
type: String,
default: void 0
},
step: {
type: Number,
default: 1
},
stepStrictly: Boolean,
max: {
type: Number,
default: Number.POSITIVE_INFINITY
},
min: {
type: Number,
default: Number.NEGATIVE_INFINITY
},
modelValue: Number,
readonly: Boolean,
disabled: Boolean,
size: Gr,
controls: {
type: Boolean,
default: !0
},
controlsPosition: {
type: String,
default: "",
values: ["", "right"]
},
valueOnClear: {
type: [String, Number, null],
validator: (n) => n === null || yt(n) || ["min", "max"].includes(n),
default: null
},
name: String,
placeholder: String,
precision: {
type: Number,
validator: (n) => n >= 0 && n === Number.parseInt(`${n}`, 10)
},
validateEvent: {
type: Boolean,
default: !0
},
...Yr(["ariaLabel"])
}), nR = {
[hr]: (n, e) => e !== n,
blur: (n) => n instanceof FocusEvent,
focus: (n) => n instanceof FocusEvent,
[bs]: (n) => yt(n) || Ci(n),
[At]: (n) => yt(n) || Ci(n)
}, iR = Pe({
name: "ElInputNumber"
}), rR = /* @__PURE__ */ Pe({
...iR,
props: tR,
emits: nR,
setup(n, { expose: e, emit: t }) {
const i = n, { t: r } = iu(), s = nt("input-number"), o = Ee(), a = jn({
currentValue: i.modelValue,
userInput: null
}), { formItem: c } = Jo(), l = ue(() => yt(i.modelValue) && i.modelValue <= i.min), d = ue(() => yt(i.modelValue) && i.modelValue >= i.max), h = ue(() => {
const I = v(i.step);
return di(i.precision) ? Math.max(v(i.modelValue), I) : (I > i.precision && kt("InputNumber", "precision should not be less than the decimal places of step"), i.precision);
}), f = ue(() => i.controls && i.controlsPosition === "right"), g = Ns(), p = ol(), u = ue(() => {
if (a.userInput !== null)
return a.userInput;
let I = a.currentValue;
if (Ci(I))
return "";
if (yt(I)) {
if (Number.isNaN(I))
return "";
di(i.precision) || (I = I.toFixed(i.precision));
}
return I;
}), y = (I, b) => {
if (di(b) && (b = h.value), b === 0)
return Math.round(I);
let F = String(I);
const D = F.indexOf(".");
if (D === -1 || !F.replace(".", "").split("")[D + b])
return I;
const U = F.length;
return F.charAt(U - 1) === "5" && (F = `${F.slice(0, Math.max(0, U - 1))}6`), Number.parseFloat(Number(F).toFixed(b));
}, v = (I) => {
if (Ci(I))
return 0;
const b = I.toString(), F = b.indexOf(".");
let D = 0;
return F !== -1 && (D = b.length - F - 1), D;
}, m = (I, b = 1) => yt(I) ? y(I + i.step * b) : a.currentValue, x = () => {
if (i.readonly || p.value || d.value)
return;
const I = Number(u.value) || 0, b = m(I);
M(b), t(bs, a.currentValue), E();
}, w = () => {
if (i.readonly || p.value || l.value)
return;
const I = Number(u.value) || 0, b = m(I, -1);
M(b), t(bs, a.currentValue), E();
}, A = (I, b) => {
const { max: F, min: D, step: N, precision: B, stepStrictly: U, valueOnClear: G } = i;
F < D && Xo("InputNumber", "min should not be greater than max.");
let Y = Number(I);
if (Ci(I) || Number.isNaN(Y))
return null;
if (I === "") {
if (G === null)
return null;
Y = vn(G) ? { min: D, max: F }[G] : G;
}
return U && (Y = y(Math.round(Y / N) * N, B), Y !== I && b && t(At, Y)), di(B) || (Y = y(Y, B)), (Y > F || Y < D) && (Y = Y > F ? F : D, b && t(At, Y)), Y;
}, M = (I, b = !0) => {
var F;
const D = a.currentValue, N = A(I);
if (!b) {
t(At, N);
return;
}
D === N && I || (a.userInput = null, t(At, N), D !== N && t(hr, N, D), i.validateEvent && ((F = c == null ? void 0 : c.validate) == null || F.call(c, "change").catch((B) => kt(B))), a.currentValue = N);
}, R = (I) => {
a.userInput = I;
const b = I === "" ? null : Number(I);
t(bs, b), M(b, !1);
}, L = (I) => {
const b = I !== "" ? Number(I) : "";
(yt(b) && !Number.isNaN(b) || I === "") && M(b), E(), a.userInput = null;
}, T = () => {
var I, b;
(b = (I = o.value) == null ? void 0 : I.focus) == null || b.call(I);
}, P = () => {
var I, b;
(b = (I = o.value) == null ? void 0 : I.blur) == null || b.call(I);
}, _ = (I) => {
t("focus", I);
}, S = (I) => {
var b;
a.userInput = null, t("blur", I), i.validateEvent && ((b = c == null ? void 0 : c.validate) == null || b.call(c, "blur").catch((F) => kt(F)));
}, E = () => {
a.currentValue !== i.modelValue && (a.currentValue = i.modelValue);
}, C = (I) => {
document.activeElement === I.target && I.preventDefault();
};
return Qe(() => i.modelValue, (I, b) => {
const F = A(I, !0);
a.userInput === null && F !== b && (a.currentValue = F);
}, { immediate: !0 }), Jt(() => {
var I;
const { min: b, max: F, modelValue: D } = i, N = (I = o.value) == null ? void 0 : I.input;
if (N.setAttribute("role", "spinbutton"), Number.isFinite(F) ? N.setAttribute("aria-valuemax", String(F)) : N.removeAttribute("aria-valuemax"), Number.isFinite(b) ? N.setAttribute("aria-valuemin", String(b)) : N.removeAttribute("aria-valuemin"), N.setAttribute("aria-valuenow", a.currentValue || a.currentValue === 0 ? String(a.currentValue) : ""), N.setAttribute("aria-disabled", String(p.value)), !yt(D) && D != null) {
let B = Number(D);
Number.isNaN(B) && (B = null), t(At, B);
}
N.addEventListener("wheel", C, { passive: !1 });
}), zd(() => {
var I, b;
const F = (I = o.value) == null ? void 0 : I.input;
F == null || F.setAttribute("aria-valuenow", `${(b = a.currentValue) != null ? b : ""}`);
}), e({
focus: T,
blur: P
}), (I, b) => (ve(), Ce("div", {
class: Te([
z(s).b(),
z(s).m(z(g)),
z(s).is("disabled", z(p)),
z(s).is("without-controls", !I.controls),
z(s).is("controls-right", z(f))
]),
onDragstart: Ut(() => {
}, ["prevent"])
}, [
I.controls ? Lt((ve(), Ce("span", {
key: 0,
role: "button",
"aria-label": z(r)("el.inputNumber.decrease"),
class: Te([z(s).e("decrease"), z(s).is("disabled", z(l))]),
onKeydown: ui(w, ["enter"])
}, [
He(I.$slots, "decrease-icon", {}, () => [
oe(z(It), null, {
default: de(() => [
z(f) ? (ve(), Ve(z(Xd), { key: 0 })) : (ve(), Ve(z(q_), { key: 1 }))
]),
_: 1
})
])
], 42, ["aria-label", "onKeydown"])), [
[z(Nm), w]
]) : ke("v-if", !0),
I.controls ? Lt((ve(), Ce("span", {
key: 1,
role: "button",
"aria-label": z(r)("el.inputNumber.increase"),
class: Te([z(s).e("increase"), z(s).is("disabled", z(d))]),
onKeydown: ui(x, ["enter"])
}, [
He(I.$slots, "increase-icon", {}, () => [
oe(z(It), null, {
default: de(() => [
z(f) ? (ve(), Ve(z(G_), { key: 0 })) : (ve(), Ve(z(tu), { key: 1 }))
]),
_: 1
})
])
], 42, ["aria-label", "onKeydown"])), [
[z(Nm), x]
]) : ke("v-if", !0),
oe(z(e2), {
id: I.id,
ref_key: "input",
ref: o,
type: "number",
step: I.step,
"model-value": z(u),
placeholder: I.placeholder,
readonly: I.readonly,
disabled: z(p),
size: z(g),
max: I.max,
min: I.min,
name: I.name,
"aria-label": I.ariaLabel,
"validate-event": !1,
onKeydown: [
ui(Ut(x, ["prevent"]), ["up"]),
ui(Ut(w, ["prevent"]), ["down"])
],
onBlur: S,
onFocus: _,
onInput: R,
onChange: L
}, XM({ _: 2 }, [
I.$slots.prefix ? {
name: "prefix",
fn: de(() => [
He(I.$slots, "prefix")
])
} : void 0,
I.$slots.suffix ? {
name: "suffix",
fn: de(() => [
He(I.$slots, "suffix")
])
} : void 0
]), 1032, ["id", "step", "model-value", "placeholder", "readonly", "disabled", "size", "max", "min", "name", "aria-label", "onKeydown"])
], 42, ["onDragstart"]));
}
});
var sR = /* @__PURE__ */ st(rR, [["__file", "input-number.vue"]]);
const fr = on(sR), fy = Symbol("ElSelectGroup"), lu = Symbol("ElSelect");
function oR(n, e) {
const t = pt(lu), i = pt(fy, { disabled: !1 }), r = ue(() => d(Si(t.props.modelValue), n.value)), s = ue(() => {
var g;
if (t.props.multiple) {
const p = Si((g = t.props.modelValue) != null ? g : []);
return !r.value && p.length >= t.props.multipleLimit && t.props.multipleLimit > 0;
} else
return !1;
}), o = ue(() => n.label || (Tn(n.value) ? "" : n.value)), a = ue(() => n.value || n.label || ""), c = ue(() => n.disabled || e.groupDisabled || s.value), l = dn(), d = (g = [], p) => {
if (Tn(n.value)) {
const u = t.props.valueKey;
return g && g.some((y) => Vv(Ki(y, u)) === Ki(p, u));
} else
return g && g.includes(p);
}, h = () => {
!n.disabled && !i.disabled && (t.states.hoveringIndex = t.optionsArray.indexOf(l.proxy));
}, f = (g) => {
const p = new RegExp(D_(g), "i");
e.visible = p.test(o.value) || n.created;
};
return Qe(() => o.value, () => {
!n.created && !t.props.remote && t.setSelected();
}), Qe(() => n.value, (g, p) => {
const { remote: u, valueKey: y } = t.props;
if (g !== p && (t.onOptionDestroy(p, l.proxy), t.onOptionCreate(l.proxy)), !n.created && !u) {
if (y && Tn(g) && Tn(p) && g[y] === p[y])
return;
t.setSelected();
}
}), Qe(() => i.disabled, () => {
e.groupDisabled = i.disabled;
}, { immediate: !0 }), {
select: t,
currentLabel: o,
currentValue: a,
itemSelected: r,
isDisabled: c,
hoverItem: h,
updateOption: f
};
}
const aR = Pe({
name: "ElOption",
componentName: "ElOption",
props: {
value: {
required: !0,
type: [String, Number, Boolean, Object]
},
label: [String, Number],
created: Boolean,
disabled: Boolean
},
setup(n) {
const e = nt("select"), t = sl(), i = ue(() => [
e.be("dropdown", "item"),
e.is("disabled", z(a)),
e.is("selected", z(o)),
e.is("hovering", z(f))
]), r = jn({
index: -1,
groupDisabled: !1,
visible: !0,
hover: !1
}), {
currentLabel: s,
itemSelected: o,
isDisabled: a,
select: c,
hoverItem: l,
updateOption: d
} = oR(n, r), { visible: h, hover: f } = Br(r), g = dn().proxy;
c.onOptionCreate(g), ei(() => {
const u = g.value, { selected: y } = c.states, m = (c.props.multiple ? y : [y]).some((x) => x.value === g.value);
bt(() => {
c.states.cachedOptions.get(u) === g && !m && c.states.cachedOptions.delete(u);
}), c.onOptionDestroy(u, g);
});
function p() {
a.value || c.handleOptionSelect(g);
}
return {
ns: e,
id: t,
containerKls: i,
currentLabel: s,
itemSelected: o,
isDisabled: a,
select: c,
hoverItem: l,
updateOption: d,
visible: h,
hover: f,
selectOptionClick: p,
states: r
};
}
});
function lR(n, e, t, i, r, s) {
return Lt((ve(), Ce("li", {
id: n.id,
class: Te(n.containerKls),
role: "option",
"aria-disabled": n.isDisabled || void 0,
"aria-selected": n.itemSelected,
onMouseenter: n.hoverItem,
onClick: Ut(n.selectOptionClick, ["stop"])
}, [
He(n.$slots, "default", {}, () => [
Ne("span", null, gt(n.currentLabel), 1)
])
], 42, ["id", "aria-disabled", "aria-selected", "onMouseenter", "onClick"])), [
[mn, n.visible]
]);
}
var mf = /* @__PURE__ */ st(aR, [["render", lR], ["__file", "option.vue"]]);
const cR = Pe({
name: "ElSelectDropdown",
componentName: "ElSelectDropdown",
setup() {
const n = pt(lu), e = nt("select"), t = ue(() => n.props.popperClass), i = ue(() => n.props.multiple), r = ue(() => n.props.fitInputWidth), s = Ee("");
function o() {
var a;
s.value = `${(a = n.selectRef) == null ? void 0 : a.offsetWidth}px`;
}
return Jt(() => {
o(), Jn(n.selectRef, o);
}), {
ns: e,
minWidth: s,
popperClass: t,
isMultiple: i,
isFitInputWidth: r
};
}
});
function uR(n, e, t, i, r, s) {
return ve(), Ce("div", {
class: Te([n.ns.b("dropdown"), n.ns.is("multiple", n.isMultiple), n.popperClass]),
style: Rt({ [n.isFitInputWidth ? "width" : "minWidth"]: n.minWidth })
}, [
n.$slots.header ? (ve(), Ce("div", {
key: 0,
class: Te(n.ns.be("dropdown", "header"))
}, [
He(n.$slots, "header")
], 2)) : ke("v-if", !0),
He(n.$slots, "default"),
n.$slots.footer ? (ve(), Ce("div", {
key: 1,
class: Te(n.ns.be("dropdown", "footer"))
}, [
He(n.$slots, "footer")
], 2)) : ke("v-if", !0)
], 6);
}
var hR = /* @__PURE__ */ st(cR, [["render", uR], ["__file", "select-dropdown.vue"]]);
const dR = 11, fR = (n, e) => {
const { t } = iu(), i = sl(), r = nt("select"), s = nt("input"), o = jn({
inputValue: "",
options: /* @__PURE__ */ new Map(),
cachedOptions: /* @__PURE__ */ new Map(),
disabledOptions: /* @__PURE__ */ new Map(),
optionValues: [],
selected: [],
selectionWidth: 0,
calculatorWidth: 0,
collapseItemWidth: 0,
selectedLabel: "",
hoveringIndex: -1,
previousQuery: null,
inputHovering: !1,
menuVisibleOnFocus: !1,
isBeforeHide: !1
}), a = Ee(null), c = Ee(null), l = Ee(null), d = Ee(null), h = Ee(null), f = Ee(null), g = Ee(null), p = Ee(null), u = Ee(null), y = Ee(null), v = Ee(null), m = Ee(null), {
isComposing: x,
handleCompositionStart: w,
handleCompositionUpdate: A,
handleCompositionEnd: M
} = N0({
afterComposition: (ge) => ne(ge)
}), { wrapperRef: R, isFocused: L } = D0(h, {
beforeFocus() {
return b.value;
},
afterFocus() {
n.automaticDropdown && !T.value && (T.value = !0, o.menuVisibleOnFocus = !0);
},
beforeBlur(ge) {
var Se, Fe;
return ((Se = l.value) == null ? void 0 : Se.isFocusInsideContent(ge)) || ((Fe = d.value) == null ? void 0 : Fe.isFocusInsideContent(ge));
},
afterBlur() {
T.value = !1, o.menuVisibleOnFocus = !1;
}
}), T = Ee(!1), P = Ee(), { form: _, formItem: S } = Jo(), { inputId: E } = su(n, {
formItemContext: S
}), { valueOnClear: C, isEmptyValue: I } = BE(n), b = ue(() => n.disabled || (_ == null ? void 0 : _.disabled)), F = ue(() => Pn(n.modelValue) ? n.modelValue.length > 0 : !I(n.modelValue)), D = ue(() => n.clearable && !b.value && o.inputHovering && F.value), N = ue(() => n.remote && n.filterable && !n.remoteShowSuffix ? "" : n.suffixIcon), B = ue(() => r.is("reverse", N.value && T.value)), U = ue(() => (S == null ? void 0 : S.validateState) || ""), G = ue(() => d0[U.value]), Y = ue(() => n.remote ? 300 : 0), te = ue(() => n.loading ? n.loadingText || t("el.select.loading") : n.remote && !o.inputValue && o.options.size === 0 ? !1 : n.filterable && o.inputValue && o.options.size > 0 && ae.value === 0 ? n.noMatchText || t("el.select.noMatch") : o.options.size === 0 ? n.noDataText || t("el.select.noData") : null), ae = ue(() => ie.value.filter((ge) => ge.visible).length), ie = ue(() => {
const ge = Array.from(o.options.values()), Se = [];
return o.optionValues.forEach((Fe) => {
const Ge = ge.findIndex((je) => je.value === Fe);
Ge > -1 && Se.push(ge[Ge]);
}), Se.length >= ge.length ? Se : ge;
}), le = ue(() => Array.from(o.cachedOptions.values())), W = ue(() => {
const ge = ie.value.filter((Se) => !Se.created).some((Se) => Se.currentLabel === o.inputValue);
return n.filterable && n.allowCreate && o.inputValue !== "" && !ge;
}), $ = () => {
n.filterable && Sn(n.filterMethod) || n.filterable && n.remote && Sn(n.remoteMethod) || ie.value.forEach((ge) => {
var Se;
(Se = ge.updateOption) == null || Se.call(ge, o.inputValue);
});
}, j = Ns(), re = ue(() => ["small"].includes(j.value) ? "small" : "default"), k = ue({
get() {
return T.value && te.value !== !1;
},
set(ge) {
T.value = ge;
}
}), H = ue(() => {
if (n.multiple && !di(n.modelValue))
return Si(n.modelValue).length === 0 && !o.inputValue;
const ge = Pn(n.modelValue) ? n.modelValue[0] : n.modelValue;
return n.filterable || di(ge) ? !o.inputValue : !0;
}), K = ue(() => {
var ge;
const Se = (ge = n.placeholder) != null ? ge : t("el.select.placeholder");
return n.multiple || !F.value ? Se : o.selectedLabel;
}), ce = ue(() => zh ? null : "mouseenter");
Qe(() => n.modelValue, (ge, Se) => {
n.multiple && n.filterable && !n.reserveKeyword && (o.inputValue = "", se("")), O(), !$h(ge, Se) && n.validateEvent && (S == null || S.validate("change").catch((Fe) => kt(Fe)));
}, {
flush: "post",
deep: !0
}), Qe(() => T.value, (ge) => {
ge ? se(o.inputValue) : (o.inputValue = "", o.previousQuery = null, o.isBeforeHide = !0), e("visible-change", ge);
}), Qe(() => o.options.entries(), () => {
var ge;
if (!en)
return;
const Se = ((ge = a.value) == null ? void 0 : ge.querySelectorAll("input")) || [];
(!n.filterable && !n.defaultFirstOption && !di(n.modelValue) || !Array.from(Se).includes(document.activeElement)) && O(), n.defaultFirstOption && (n.filterable || n.remote) && ae.value && V();
}, {
flush: "post"
}), Qe(() => o.hoveringIndex, (ge) => {
yt(ge) && ge > -1 ? P.value = ie.value[ge] || {} : P.value = {}, ie.value.forEach((Se) => {
Se.hover = P.value === Se;
});
}), Nv(() => {
o.isBeforeHide || $();
});
const se = (ge) => {
o.previousQuery === ge || x.value || (o.previousQuery = ge, n.filterable && Sn(n.filterMethod) ? n.filterMethod(ge) : n.filterable && n.remote && Sn(n.remoteMethod) && n.remoteMethod(ge), n.defaultFirstOption && (n.filterable || n.remote) && ae.value ? bt(V) : bt(X));
}, V = () => {
const ge = ie.value.filter((Ge) => Ge.visible && !Ge.disabled && !Ge.states.groupDisabled), Se = ge.find((Ge) => Ge.created), Fe = ge[0];
o.hoveringIndex = Mt(ie.value, Se || Fe);
}, O = () => {
if (n.multiple)
o.selectedLabel = "";
else {
const Se = Pn(n.modelValue) ? n.modelValue[0] : n.modelValue, Fe = Z(Se);
o.selectedLabel = Fe.currentLabel, o.selected = [Fe];
return;
}
const ge = [];
di(n.modelValue) || Si(n.modelValue).forEach((Se) => {
ge.push(Z(Se));
}), o.selected = ge;
}, Z = (ge) => {
let Se;
const Fe = Pu(ge).toLowerCase() === "object", Ge = Pu(ge).toLowerCase() === "null", je = Pu(ge).toLowerCase() === "undefined";
for (let ft = o.cachedOptions.size - 1; ft >= 0; ft--) {
const Vt = le.value[ft];
if (Fe ? Ki(Vt.value, n.valueKey) === Ki(ge, n.valueKey) : Vt.value === ge) {
Se = {
value: ge,
currentLabel: Vt.currentLabel,
get isDisabled() {
return Vt.isDisabled;
}
};
break;
}
}
if (Se)
return Se;
const et = Fe ? ge.label : !Ge && !je ? ge : "";
return {
value: ge,
currentLabel: et
};
}, X = () => {
o.hoveringIndex = ie.value.findIndex((ge) => o.selected.some((Se) => _e(Se) === _e(ge)));
}, ee = () => {
o.selectionWidth = c.value.getBoundingClientRect().width;
}, fe = () => {
o.calculatorWidth = f.value.getBoundingClientRect().width;
}, be = () => {
o.collapseItemWidth = v.value.getBoundingClientRect().width;
}, Ae = () => {
var ge, Se;
(Se = (ge = l.value) == null ? void 0 : ge.updatePopper) == null || Se.call(ge);
}, he = () => {
var ge, Se;
(Se = (ge = d.value) == null ? void 0 : ge.updatePopper) == null || Se.call(ge);
}, xe = () => {
o.inputValue.length > 0 && !T.value && (T.value = !0), se(o.inputValue);
}, ne = (ge) => {
if (o.inputValue = ge.target.value, n.remote)
me();
else
return xe();
}, me = jh(() => {
xe();
}, Y.value), Me = (ge) => {
$h(n.modelValue, ge) || e(hr, ge);
}, De = (ge) => C_(ge, (Se) => !o.disabledOptions.has(Se)), Ie = (ge) => {
if (n.multiple && ge.code !== Li.delete && ge.target.value.length <= 0) {
const Se = Si(n.modelValue).slice(), Fe = De(Se);
if (Fe < 0)
return;
const Ge = Se[Fe];
Se.splice(Fe, 1), e(At, Se), Me(Se), e("remove-tag", Ge);
}
}, $e = (ge, Se) => {
const Fe = o.selected.indexOf(Se);
if (Fe > -1 && !b.value) {
const Ge = Si(n.modelValue).slice();
Ge.splice(Fe, 1), e(At, Ge), Me(Ge), e("remove-tag", Se.value);
}
ge.stopPropagation(), Pt();
}, lt = (ge) => {
ge.stopPropagation();
const Se = n.multiple ? [] : C.value;
if (n.multiple)
for (const Fe of o.selected)
Fe.isDisabled && Se.push(Fe.value);
e(At, Se), Me(Se), o.hoveringIndex = -1, T.value = !1, e("clear"), Pt();
}, qe = (ge) => {
var Se;
if (n.multiple) {
const Fe = Si((Se = n.modelValue) != null ? Se : []).slice(), Ge = Mt(Fe, ge.value);
Ge > -1 ? Fe.splice(Ge, 1) : (n.multipleLimit <= 0 || Fe.length < n.multipleLimit) && Fe.push(ge.value), e(At, Fe), Me(Fe), ge.created && se(""), n.filterable && !n.reserveKeyword && (o.inputValue = "");
} else
e(At, ge.value), Me(ge.value), T.value = !1;
Pt(), !T.value && bt(() => {
Be(ge);
});
}, Mt = (ge = [], Se) => {
if (!Tn(Se))
return ge.indexOf(Se);
const Fe = n.valueKey;
let Ge = -1;
return ge.some((je, et) => Vv(Ki(je, Fe)) === Ki(Se, Fe) ? (Ge = et, !0) : !1), Ge;
}, Be = (ge) => {
var Se, Fe, Ge, je, et;
const Ye = Pn(ge) ? ge[0] : ge;
let ft = null;
if (Ye != null && Ye.value) {
const Vt = ie.value.filter((ln) => ln.value === Ye.value);
Vt.length > 0 && (ft = Vt[0].$el);
}
if (l.value && ft) {
const Vt = (je = (Ge = (Fe = (Se = l.value) == null ? void 0 : Se.popperRef) == null ? void 0 : Fe.contentRef) == null ? void 0 : Ge.querySelector) == null ? void 0 : je.call(Ge, `.${r.be("dropdown", "wrap")}`);
Vt && B_(Vt, ft);
}
(et = m.value) == null || et.handleScroll();
}, it = (ge) => {
o.options.set(ge.value, ge), o.cachedOptions.set(ge.value, ge), ge.disabled && o.disabledOptions.set(ge.value, ge);
}, tt = (ge, Se) => {
o.options.get(ge) === Se && o.options.delete(ge);
}, qt = ue(() => {
var ge, Se;
return (Se = (ge = l.value) == null ? void 0 : ge.popperRef) == null ? void 0 : Se.contentRef;
}), Qt = () => {
o.isBeforeHide = !1, bt(() => Be(o.selected));
}, Pt = () => {
var ge;
(ge = h.value) == null || ge.focus();
}, Nt = () => {
var ge;
(ge = h.value) == null || ge.blur();
}, Vi = (ge) => {
lt(ge);
}, Gi = () => {
T.value = !1, L.value && Nt();
}, ni = () => {
o.inputValue.length > 0 ? o.inputValue = "" : T.value = !1;
}, ts = () => {
b.value || (zh && (o.inputHovering = !0), o.menuVisibleOnFocus ? o.menuVisibleOnFocus = !1 : T.value = !T.value);
}, Q = () => {
T.value ? ie.value[o.hoveringIndex] && qe(ie.value[o.hoveringIndex]) : ts();
}, _e = (ge) => Tn(ge.value) ? Ki(ge.value, n.valueKey) : ge.value, Oe = ue(() => ie.value.filter((ge) => ge.visible).every((ge) => ge.disabled)), Ze = ue(() => n.multiple ? n.collapseTags ? o.selected.slice(0, n.maxCollapseTags) : o.selected : []), ht = ue(() => n.multiple ? n.collapseTags ? o.selected.slice(n.maxCollapseTags) : [] : []), J = (ge) => {
if (!T.value) {
T.value = !0;
return;
}
if (!(o.options.size === 0 || o.filteredOptionsCount === 0 || x.value) && !Oe.value) {
ge === "next" ? (o.hoveringIndex++, o.hoveringIndex === o.options.size && (o.hoveringIndex = 0)) : ge === "prev" && (o.hoveringIndex--, o.hoveringIndex < 0 && (o.hoveringIndex = o.options.size - 1));
const Se = ie.value[o.hoveringIndex];
(Se.disabled === !0 || Se.states.groupDisabled === !0 || !Se.visible) && J(ge), bt(() => Be(P.value));
}
}, ye = () => {
if (!c.value)
return 0;
const ge = window.getComputedStyle(c.value);
return Number.parseFloat(ge.gap || "6px");
}, pe = ue(() => {
const ge = ye();
return { maxWidth: `${v.value && n.maxCollapseTags === 1 ? o.selectionWidth - o.collapseItemWidth - ge : o.selectionWidth}px` };
}), we = ue(() => ({ maxWidth: `${o.selectionWidth}px` })), Le = ue(() => ({
width: `${Math.max(o.calculatorWidth, dR)}px`
}));
return Jn(c, ee), Jn(f, fe), Jn(u, Ae), Jn(R, Ae), Jn(y, he), Jn(v, be), Jt(() => {
O();
}), {
inputId: E,
contentId: i,
nsSelect: r,
nsInput: s,
states: o,
isFocused: L,
expanded: T,
optionsArray: ie,
hoverOption: P,
selectSize: j,
filteredOptionsCount: ae,
resetCalculatorWidth: fe,
updateTooltip: Ae,
updateTagTooltip: he,
debouncedOnInputChange: me,
onInput: ne,
deletePrevTag: Ie,
deleteTag: $e,
deleteSelected: lt,
handleOptionSelect: qe,
scrollToOption: Be,
hasModelValue: F,
shouldShowPlaceholder: H,
currentPlaceholder: K,
mouseEnterEventName: ce,
showClose: D,
iconComponent: N,
iconReverse: B,
validateState: U,
validateIcon: G,
showNewOption: W,
updateOptions: $,
collapseTagSize: re,
setSelected: O,
selectDisabled: b,
emptyText: te,
handleCompositionStart: w,
handleCompositionUpdate: A,
handleCompositionEnd: M,
onOptionCreate: it,
onOptionDestroy: tt,
handleMenuEnter: Qt,
focus: Pt,
blur: Nt,
handleClearClick: Vi,
handleClickOutside: Gi,
handleEsc: ni,
toggleMenu: ts,
selectOption: Q,
getValueKey: _e,
navigateOptions: J,
dropdownMenuVisible: k,
showTagList: Ze,
collapseTagList: ht,
tagStyle: pe,
collapseTagStyle: we,
inputStyle: Le,
popperRef: qt,
inputRef: h,
tooltipRef: l,
tagTooltipRef: d,
calculatorRef: f,
prefixRef: g,
suffixRef: p,
selectRef: a,
wrapperRef: R,
selectionRef: c,
scrollbarRef: m,
menuRef: u,
tagMenuRef: y,
collapseItemRef: v
};
};
var pR = Pe({
name: "ElOptions",
setup(n, { slots: e }) {
const t = pt(lu);
let i = [];
return () => {
var r, s;
const o = (r = e.default) == null ? void 0 : r.call(e), a = [];
function c(l) {
Pn(l) && l.forEach((d) => {
var h, f, g, p;
const u = (h = (d == null ? void 0 : d.type) || {}) == null ? void 0 : h.name;
u === "ElOptionGroup" ? c(!vn(d.children) && !Pn(d.children) && Sn((f = d.children) == null ? void 0 : f.default) ? (g = d.children) == null ? void 0 : g.default() : d.children) : u === "ElOption" ? a.push((p = d.props) == null ? void 0 : p.value) : Pn(d.children) && c(d.children);
});
}
return o.length && c((s = o[0]) == null ? void 0 : s.children), $h(a, i) || (i = a, t && (t.states.optionValues = a)), o;
};
}
});
const mR = at({
name: String,
id: String,
modelValue: {
type: [Array, String, Number, Boolean, Object],
default: void 0
},
autocomplete: {
type: String,
default: "off"
},
automaticDropdown: Boolean,
size: Gr,
effect: {
type: Je(String),
default: "light"
},
disabled: Boolean,
clearable: Boolean,
filterable: Boolean,
allowCreate: Boolean,
loading: Boolean,
popperClass: {
type: String,
default: ""
},
popperOptions: {
type: Je(Object),
default: () => ({})
},
remote: Boolean,
loadingText: String,
noMatchText: String,
noDataText: String,
remoteMethod: Function,
filterMethod: Function,
multiple: Boolean,
multipleLimit: {
type: Number,
default: 0
},
placeholder: {
type: String
},
defaultFirstOption: Boolean,
reserveKeyword: {
type: Boolean,
default: !0
},
valueKey: {
type: String,
default: "value"
},
collapseTags: Boolean,
collapseTagsTooltip: Boolean,
maxCollapseTags: {
type: Number,
default: 1
},
teleported: kn.teleported,
persistent: {
type: Boolean,
default: !0
},
clearIcon: {
type: Vr,
default: Yd
},
fitInputWidth: Boolean,
suffixIcon: {
type: Vr,
default: Xd
},
tagType: { ...Qh.type, default: "info" },
tagEffect: { ...Qh.effect, default: "light" },
validateEvent: {
type: Boolean,
default: !0
},
remoteShowSuffix: Boolean,
placement: {
type: Je(String),
values: Yo,
default: "bottom-start"
},
fallbackPlacements: {
type: Je(Array),
default: ["bottom-start", "top-start", "right", "left"]
},
appendTo: String,
...NE,
...Yr(["ariaLabel"])
}), Um = "ElSelect", gR = Pe({
name: Um,
componentName: Um,
components: {
ElSelectMenu: hR,
ElOption: mf,
ElOptions: pR,
ElTag: lL,
ElScrollbar: p2,
ElTooltip: pf,
ElIcon: It
},
directives: { ClickOutside: WC },
props: mR,
emits: [
At,
hr,
"remove-tag",
"clear",
"visible-change",
"focus",
"blur"
],
setup(n, { emit: e }) {
const t = ue(() => {
const { modelValue: s, multiple: o } = n, a = o ? [] : void 0;
return Pn(s) ? o ? s : a : o ? a : s;
}), i = jn({
...Br(n),
modelValue: t
}), r = fR(i, e);
return sn(lu, jn({
props: i,
states: r.states,
optionsArray: r.optionsArray,
handleOptionSelect: r.handleOptionSelect,
onOptionCreate: r.onOptionCreate,
onOptionDestroy: r.onOptionDestroy,
selectRef: r.selectRef,
setSelected: r.setSelected
})), {
...r,
modelValue: t
};
}
});
function vR(n, e, t, i, r, s) {
const o = Vn("el-tag"), a = Vn("el-tooltip"), c = Vn("el-icon"), l = Vn("el-option"), d = Vn("el-options"), h = Vn("el-scrollbar"), f = Vn("el-select-menu"), g = YM("click-outside");
return Lt((ve(), Ce("div", {
ref: "selectRef",
class: Te([n.nsSelect.b(), n.nsSelect.m(n.selectSize)]),
[JM(n.mouseEnterEventName)]: (p) => n.states.inputHovering = !0,
onMouseleave: (p) => n.states.inputHovering = !1
}, [
oe(a, {
ref: "tooltipRef",
visible: n.dropdownMenuVisible,
placement: n.placement,
teleported: n.teleported,
"popper-class": [n.nsSelect.e("popper"), n.popperClass],
"popper-options": n.popperOptions,
"fallback-placements": n.fallbackPlacements,
effect: n.effect,
pure: "",
trigger: "click",
transition: `${n.nsSelect.namespace.value}-zoom-in-top`,
"stop-popper-mouse-event": !1,
"gpu-acceleration": !1,
persistent: n.persistent,
"append-to": n.appendTo,
onBeforeShow: n.handleMenuEnter,
onHide: (p) => n.states.isBeforeHide = !1
}, {
default: de(() => {
var p;
return [
Ne("div", {
ref: "wrapperRef",
class: Te([
n.nsSelect.e("wrapper"),
n.nsSelect.is("focused", n.isFocused),
n.nsSelect.is("hovering", n.states.inputHovering),
n.nsSelect.is("filterable", n.filterable),
n.nsSelect.is("disabled", n.selectDisabled)
]),
onClick: Ut(n.toggleMenu, ["prevent"])
}, [
n.$slots.prefix ? (ve(), Ce("div", {
key: 0,
ref: "prefixRef",
class: Te(n.nsSelect.e("prefix"))
}, [
He(n.$slots, "prefix")
], 2)) : ke("v-if", !0),
Ne("div", {
ref: "selectionRef",
class: Te([
n.nsSelect.e("selection"),
n.nsSelect.is("near", n.multiple && !n.$slots.prefix && !!n.states.selected.length)
])
}, [
n.multiple ? He(n.$slots, "tag", { key: 0 }, () => [
(ve(!0), Ce(Ft, null, Gn(n.showTagList, (u) => (ve(), Ce("div", {
key: n.getValueKey(u),
class: Te(n.nsSelect.e("selected-item"))
}, [
oe(o, {
closable: !n.selectDisabled && !u.isDisabled,
size: n.collapseTagSize,
type: n.tagType,
effect: n.tagEffect,
"disable-transitions": "",
style: Rt(n.tagStyle),
onClose: (y) => n.deleteTag(y, u)
}, {
default: de(() => [
Ne("span", {
class: Te(n.nsSelect.e("tags-text"))
}, [
He(n.$slots, "label", {
label: u.currentLabel,
value: u.value
}, () => [
rt(gt(u.currentLabel), 1)
])
], 2)
]),
_: 2
}, 1032, ["closable", "size", "type", "effect", "style", "onClose"])
], 2))), 128)),
n.collapseTags && n.states.selected.length > n.maxCollapseTags ? (ve(), Ve(a, {
key: 0,
ref: "tagTooltipRef",
disabled: n.dropdownMenuVisible || !n.collapseTagsTooltip,
"fallback-placements": ["bottom", "top", "right", "left"],
effect: n.effect,
placement: "bottom",
teleported: n.teleported
}, {
default: de(() => [
Ne("div", {
ref: "collapseItemRef",
class: Te(n.nsSelect.e("selected-item"))
}, [
oe(o, {
closable: !1,
size: n.collapseTagSize,
type: n.tagType,
effect: n.tagEffect,
"disable-transitions": "",
style: Rt(n.collapseTagStyle)
}, {
default: de(() => [
Ne("span", {
class: Te(n.nsSelect.e("tags-text"))
}, " + " + gt(n.states.selected.length - n.maxCollapseTags), 3)
]),
_: 1
}, 8, ["size", "type", "effect", "style"])
], 2)
]),
content: de(() => [
Ne("div", {
ref: "tagMenuRef",
class: Te(n.nsSelect.e("selection"))
}, [
(ve(!0), Ce(Ft, null, Gn(n.collapseTagList, (u) => (ve(), Ce("div", {
key: n.getValueKey(u),
class: Te(n.nsSelect.e("selected-item"))
}, [
oe(o, {
class: "in-tooltip",
closable: !n.selectDisabled && !u.isDisabled,
size: n.collapseTagSize,
type: n.tagType,
effect: n.tagEffect,
"disable-transitions": "",
onClose: (y) => n.deleteTag(y, u)
}, {
default: de(() => [
Ne("span", {
class: Te(n.nsSelect.e("tags-text"))
}, [
He(n.$slots, "label", {
label: u.currentLabel,
value: u.value
}, () => [
rt(gt(u.currentLabel), 1)
])
], 2)
]),
_: 2
}, 1032, ["closable", "size", "type", "effect", "onClose"])
], 2))), 128))
], 2)
]),
_: 3
}, 8, ["disabled", "effect", "teleported"])) : ke("v-if", !0)
]) : ke("v-if", !0),
n.selectDisabled ? ke("v-if", !0) : (ve(), Ce("div", {
key: 1,
class: Te([
n.nsSelect.e("selected-item"),
n.nsSelect.e("input-wrapper"),
n.nsSelect.is("hidden", !n.filterable)
])
}, [
Lt(Ne("input", {
id: n.inputId,
ref: "inputRef",
"onUpdate:modelValue": (u) => n.states.inputValue = u,
type: "text",
name: n.name,
class: Te([n.nsSelect.e("input"), n.nsSelect.is(n.selectSize)]),
disabled: n.selectDisabled,
autocomplete: n.autocomplete,
style: Rt(n.inputStyle),
role: "combobox",
readonly: !n.filterable,
spellcheck: "false",
"aria-activedescendant": ((p = n.hoverOption) == null ? void 0 : p.id) || "",
"aria-controls": n.contentId,
"aria-expanded": n.dropdownMenuVisible,
"aria-label": n.ariaLabel,
"aria-autocomplete": "none",
"aria-haspopup": "listbox",
onKeydown: [
ui(Ut((u) => n.navigateOptions("next"), ["stop", "prevent"]), ["down"]),
ui(Ut((u) => n.navigateOptions("prev"), ["stop", "prevent"]), ["up"]),
ui(Ut(n.handleEsc, ["stop", "prevent"]), ["esc"]),
ui(Ut(n.selectOption, ["stop", "prevent"]), ["enter"]),
ui(Ut(n.deletePrevTag, ["stop"]), ["delete"])
],
onCompositionstart: n.handleCompositionStart,
onCompositionupdate: n.handleCompositionUpdate,
onCompositionend: n.handleCompositionEnd,
onInput: n.onInput,
onClick: Ut(n.toggleMenu, ["stop"])
}, null, 46, ["id", "onUpdate:modelValue", "name", "disabled", "autocomplete", "readonly", "aria-activedescendant", "aria-controls", "aria-expanded", "aria-label", "onKeydown", "onCompositionstart", "onCompositionupdate", "onCompositionend", "onInput", "onClick"]), [
[KM, n.states.inputValue]
]),
n.filterable ? (ve(), Ce("span", {
key: 0,
ref: "calculatorRef",
"aria-hidden": "true",
class: Te(n.nsSelect.e("input-calculator")),
textContent: gt(n.states.inputValue)
}, null, 10, ["textContent"])) : ke("v-if", !0)
], 2)),
n.shouldShowPlaceholder ? (ve(), Ce("div", {
key: 2,
class: Te([
n.nsSelect.e("selected-item"),
n.nsSelect.e("placeholder"),
n.nsSelect.is("transparent", !n.hasModelValue || n.expanded && !n.states.inputValue)
])
}, [
n.hasModelValue ? He(n.$slots, "label", {
key: 0,
label: n.currentPlaceholder,
value: n.modelValue
}, () => [
Ne("span", null, gt(n.currentPlaceholder), 1)
]) : (ve(), Ce("span", { key: 1 }, gt(n.currentPlaceholder), 1))
], 2)) : ke("v-if", !0)
], 2),
Ne("div", {
ref: "suffixRef",
class: Te(n.nsSelect.e("suffix"))
}, [
n.iconComponent && !n.showClose ? (ve(), Ve(c, {
key: 0,
class: Te([n.nsSelect.e("caret"), n.nsSelect.e("icon"), n.iconReverse])
}, {
default: de(() => [
(ve(), Ve(Fn(n.iconComponent)))
]),
_: 1
}, 8, ["class"])) : ke("v-if", !0),
n.showClose && n.clearIcon ? (ve(), Ve(c, {
key: 1,
class: Te([
n.nsSelect.e("caret"),
n.nsSelect.e("icon"),
n.nsSelect.e("clear")
]),
onClick: n.handleClearClick
}, {
default: de(() => [
(ve(), Ve(Fn(n.clearIcon)))
]),
_: 1
}, 8, ["class", "onClick"])) : ke("v-if", !0),
n.validateState && n.validateIcon ? (ve(), Ve(c, {
key: 2,
class: Te([n.nsInput.e("icon"), n.nsInput.e("validateIcon")])
}, {
default: de(() => [
(ve(), Ve(Fn(n.validateIcon)))
]),
_: 1
}, 8, ["class"])) : ke("v-if", !0)
], 2)
], 10, ["onClick"])
];
}),
content: de(() => [
oe(f, { ref: "menuRef" }, {
default: de(() => [
n.$slots.header ? (ve(), Ce("div", {
key: 0,
class: Te(n.nsSelect.be("dropdown", "header")),
onClick: Ut(() => {
}, ["stop"])
}, [
He(n.$slots, "header")
], 10, ["onClick"])) : ke("v-if", !0),
Lt(oe(h, {
id: n.contentId,
ref: "scrollbarRef",
tag: "ul",
"wrap-class": n.nsSelect.be("dropdown", "wrap"),
"view-class": n.nsSelect.be("dropdown", "list"),
class: Te([n.nsSelect.is("empty", n.filteredOptionsCount === 0)]),
role: "listbox",
"aria-label": n.ariaLabel,
"aria-orientation": "vertical"
}, {
default: de(() => [
n.showNewOption ? (ve(), Ve(l, {
key: 0,
value: n.states.inputValue,
created: !0
}, null, 8, ["value"])) : ke("v-if", !0),
oe(d, null, {
default: de(() => [
He(n.$slots, "default")
]),
_: 3
})
]),
_: 3
}, 8, ["id", "wrap-class", "view-class", "class", "aria-label"]), [
[mn, n.states.options.size > 0 && !n.loading]
]),
n.$slots.loading && n.loading ? (ve(), Ce("div", {
key: 1,
class: Te(n.nsSelect.be("dropdown", "loading"))
}, [
He(n.$slots, "loading")
], 2)) : n.loading || n.filteredOptionsCount === 0 ? (ve(), Ce("div", {
key: 2,
class: Te(n.nsSelect.be("dropdown", "empty"))
}, [
He(n.$slots, "empty", {}, () => [
Ne("span", null, gt(n.emptyText), 1)
])
], 2)) : ke("v-if", !0),
n.$slots.footer ? (ve(), Ce("div", {
key: 3,
class: Te(n.nsSelect.be("dropdown", "footer")),
onClick: Ut(() => {
}, ["stop"])
}, [
He(n.$slots, "footer")
], 10, ["onClick"])) : ke("v-if", !0)
]),
_: 3
}, 512)
]),
_: 3
}, 8, ["visible", "placement", "teleported", "popper-class", "popper-options", "fallback-placements", "effect", "transition", "persistent", "append-to", "onBeforeShow", "onHide"])
], 16, ["onMouseleave"])), [
[g, n.handleClickOutside, n.popperRef]
]);
}
var yR = /* @__PURE__ */ st(gR, [["render", vR], ["__file", "select.vue"]]);
const bR = Pe({
name: "ElOptionGroup",
componentName: "ElOptionGroup",
props: {
label: String,
disabled: Boolean
},
setup(n) {
const e = nt("select"), t = Ee(null), i = dn(), r = Ee([]);
sn(fy, jn({
...Br(n)
}));
const s = ue(() => r.value.some((l) => l.visible === !0)), o = (l) => {
var d, h;
return ((d = l.type) == null ? void 0 : d.name) === "ElOption" && !!((h = l.component) != null && h.proxy);
}, a = (l) => {
const d = Si(l), h = [];
return d.forEach((f) => {
var g, p;
o(f) ? h.push(f.component.proxy) : (g = f.children) != null && g.length ? h.push(...a(f.children)) : (p = f.component) != null && p.subTree && h.push(...a(f.component.subTree));
}), h;
}, c = () => {
r.value = a(i.subTree);
};
return Jt(() => {
c();
}), Ew(t, c, {
attributes: !0,
subtree: !0,
childList: !0
}), {
groupRef: t,
visible: s,
ns: e
};
}
});
function xR(n, e, t, i, r, s) {
return Lt((ve(), Ce("ul", {
ref: "groupRef",
class: Te(n.ns.be("group", "wrap"))
}, [
Ne("li", {
class: Te(n.ns.be("group", "title"))
}, gt(n.label), 3),
Ne("li", null, [
Ne("ul", {
class: Te(n.ns.b("group"))
}, [
He(n.$slots, "default")
], 2)
])
], 2)), [
[mn, n.visible]
]);
}
var py = /* @__PURE__ */ st(bR, [["render", xR], ["__file", "option-group.vue"]]);
const qo = on(yR, {
Option: mf,
OptionGroup: py
}), Qo = vi(mf);
vi(py);
const MR = at({
trigger: ka.trigger,
placement: Hu.placement,
disabled: ka.disabled,
visible: kn.visible,
transition: kn.transition,
popperOptions: Hu.popperOptions,
tabindex: Hu.tabindex,
content: kn.content,
popperStyle: kn.popperStyle,
popperClass: kn.popperClass,
enterable: {
...kn.enterable,
default: !0
},
effect: {
...kn.effect,
default: "light"
},
teleported: kn.teleported,
title: String,
width: {
type: [String, Number],
default: 150
},
offset: {
type: Number,
default: void 0
},
showAfter: {
type: Number,
default: 0
},
hideAfter: {
type: Number,
default: 200
},
autoClose: {
type: Number,
default: 0
},
showArrow: {
type: Boolean,
default: !0
},
persistent: {
type: Boolean,
default: !0
},
"onUpdate:visible": {
type: Function
}
}), wR = {
"update:visible": (n) => Ba(n),
"before-enter": () => !0,
"before-leave": () => !0,
"after-enter": () => !0,
"after-leave": () => !0
}, AR = "onUpdate:visible", SR = Pe({
name: "ElPopover"
}), _R = /* @__PURE__ */ Pe({
...SR,
props: MR,
emits: wR,
setup(n, { expose: e, emit: t }) {
const i = n, r = ue(() => i[AR]), s = nt("popover"), o = Ee(), a = ue(() => {
var y;
return (y = z(o)) == null ? void 0 : y.popperRef;
}), c = ue(() => [
{
width: Dc(i.width)
},
i.popperStyle
]), l = ue(() => [s.b(), i.popperClass, { [s.m("plain")]: !!i.content }]), d = ue(() => i.transition === `${s.namespace.value}-fade-in-linear`), h = () => {
var y;
(y = o.value) == null || y.hide();
}, f = () => {
t("before-enter");
}, g = () => {
t("before-leave");
}, p = () => {
t("after-enter");
}, u = () => {
t("update:visible", !1), t("after-leave");
};
return e({
popperRef: a,
hide: h
}), (y, v) => (ve(), Ve(z(pf), Ei({
ref_key: "tooltipRef",
ref: o
}, y.$attrs, {
trigger: y.trigger,
placement: y.placement,
disabled: y.disabled,
visible: y.visible,
transition: y.transition,
"popper-options": y.popperOptions,
tabindex: y.tabindex,
content: y.content,
offset: y.offset,
"show-after": y.showAfter,
"hide-after": y.hideAfter,
"auto-close": y.autoClose,
"show-arrow": y.showArrow,
"aria-label": y.title,
effect: y.effect,
enterable: y.enterable,
"popper-class": z(l),
"popper-style": z(c),
teleported: y.teleported,
persistent: y.persistent,
"gpu-acceleration": z(d),
"onUpdate:visible": z(r),
onBeforeShow: f,
onBeforeHide: g,
onShow: p,
onHide: u
}), {
content: de(() => [
y.title ? (ve(), Ce("div", {
key: 0,
class: Te(z(s).e("title")),
role: "title"
}, gt(y.title), 3)) : ke("v-if", !0),
He(y.$slots, "default", {}, () => [
rt(gt(y.content), 1)
])
]),
default: de(() => [
y.$slots.reference ? He(y.$slots, "reference", { key: 0 }) : ke("v-if", !0)
]),
_: 3
}, 16, ["trigger", "placement", "disabled", "visible", "transition", "popper-options", "tabindex", "content", "offset", "show-after", "hide-after", "auto-close", "show-arrow", "aria-label", "effect", "enterable", "popper-class", "popper-style", "teleported", "persistent", "gpu-acceleration", "onUpdate:visible"]));
}
});
var TR = /* @__PURE__ */ st(_R, [["__file", "popover.vue"]]);
const zm = (n, e) => {
const t = e.arg || e.value, i = t == null ? void 0 : t.popperRef;
i && (i.triggerRef = n);
};
var ER = {
mounted(n, e) {
zm(n, e);
},
updated(n, e) {
zm(n, e);
}
};
const CR = "popover", LR = rT(ER, CR), cu = on(TR, {
directive: LR
}), my = Symbol("sliderContextKey"), RR = at({
modelValue: {
type: Je([Number, Array]),
default: 0
},
id: {
type: String,
default: void 0
},
min: {
type: Number,
default: 0
},
max: {
type: Number,
default: 100
},
step: {
type: Number,
default: 1
},
showInput: Boolean,
showInputControls: {
type: Boolean,
default: !0
},
size: Gr,
inputSize: Gr,
showStops: Boolean,
showTooltip: {
type: Boolean,
default: !0
},
formatTooltip: {
type: Je(Function),
default: void 0
},
disabled: Boolean,
range: Boolean,
vertical: Boolean,
height: String,
debounce: {
type: Number,
default: 300
},
rangeStartLabel: {
type: String,
default: void 0
},
rangeEndLabel: {
type: String,
default: void 0
},
formatValueText: {
type: Je(Function),
default: void 0
},
tooltipClass: {
type: String,
default: void 0
},
placement: {
type: String,
values: Yo,
default: "top"
},
marks: {
type: Je(Object)
},
validateEvent: {
type: Boolean,
default: !0
},
...Yr(["ariaLabel"])
}), Wu = (n) => yt(n) || Pn(n) && n.every(yt), FR = {
[At]: Wu,
[bs]: Wu,
[hr]: Wu
}, PR = (n, e, t) => {
const i = Ee();
return Jt(async () => {
n.range ? (Array.isArray(n.modelValue) ? (e.firstValue = Math.max(n.min, n.modelValue[0]), e.secondValue = Math.min(n.max, n.modelValue[1])) : (e.firstValue = n.min, e.secondValue = n.max), e.oldValue = [e.firstValue, e.secondValue]) : (typeof n.modelValue != "number" || Number.isNaN(n.modelValue) ? e.firstValue = n.min : e.firstValue = Math.min(n.max, Math.max(n.min, n.modelValue)), e.oldValue = e.firstValue), un(window, "resize", t), await bt(), t();
}), {
sliderWrapper: i
};
}, IR = (n) => ue(() => n.marks ? Object.keys(n.marks).map(Number.parseFloat).sort((t, i) => t - i).filter((t) => t <= n.max && t >= n.min).map((t) => ({
point: t,
position: (t - n.min) * 100 / (n.max - n.min),
mark: n.marks[t]
})) : []), OR = (n, e, t) => {
const { form: i, formItem: r } = Jo(), s = En(), o = Ee(), a = Ee(), c = {
firstButton: o,
secondButton: a
}, l = ue(() => n.disabled || (i == null ? void 0 : i.disabled) || !1), d = ue(() => Math.min(e.firstValue, e.secondValue)), h = ue(() => Math.max(e.firstValue, e.secondValue)), f = ue(() => n.range ? `${100 * (h.value - d.value) / (n.max - n.min)}%` : `${100 * (e.firstValue - n.min) / (n.max - n.min)}%`), g = ue(() => n.range ? `${100 * (d.value - n.min) / (n.max - n.min)}%` : "0%"), p = ue(() => n.vertical ? { height: n.height } : {}), u = ue(() => n.vertical ? {
height: f.value,
bottom: g.value
} : {
width: f.value,
left: g.value
}), y = () => {
s.value && (e.sliderSize = s.value[`client${n.vertical ? "Height" : "Width"}`]);
}, v = (S) => {
const E = n.min + S * (n.max - n.min) / 100;
if (!n.range)
return o;
let C;
return Math.abs(d.value - E) < Math.abs(h.value - E) ? C = e.firstValue < e.secondValue ? "firstButton" : "secondButton" : C = e.firstValue > e.secondValue ? "firstButton" : "secondButton", c[C];
}, m = (S) => {
const E = v(S);
return E.value.setPosition(S), E;
}, x = (S) => {
e.firstValue = S ?? n.min, A(n.range ? [d.value, h.value] : S ?? n.min);
}, w = (S) => {
e.secondValue = S, n.range && A([d.value, h.value]);
}, A = (S) => {
t(At, S), t(bs, S);
}, M = async () => {
await bt(), t(hr, n.range ? [d.value, h.value] : n.modelValue);
}, R = (S) => {
var E, C, I, b, F, D;
if (l.value || e.dragging)
return;
y();
let N = 0;
if (n.vertical) {
const B = (I = (C = (E = S.touches) == null ? void 0 : E.item(0)) == null ? void 0 : C.clientY) != null ? I : S.clientY;
N = (s.value.getBoundingClientRect().bottom - B) / e.sliderSize * 100;
} else {
const B = (D = (F = (b = S.touches) == null ? void 0 : b.item(0)) == null ? void 0 : F.clientX) != null ? D : S.clientX, U = s.value.getBoundingClientRect().left;
N = (B - U) / e.sliderSize * 100;
}
if (!(N < 0 || N > 100))
return m(N);
};
return {
elFormItem: r,
slider: s,
firstButton: o,
secondButton: a,
sliderDisabled: l,
minValue: d,
maxValue: h,
runwayStyle: p,
barStyle: u,
resetSize: y,
setPosition: m,
emitChange: M,
onSliderWrapperPrevent: (S) => {
var E, C;
((E = c.firstButton.value) != null && E.dragging || (C = c.secondButton.value) != null && C.dragging) && S.preventDefault();
},
onSliderClick: (S) => {
R(S) && M();
},
onSliderDown: async (S) => {
const E = R(S);
E && (await bt(), E.value.onButtonDown(S));
},
onSliderMarkerDown: (S) => {
l.value || e.dragging || m(S);
},
setFirstValue: x,
setSecondValue: w
};
}, { left: DR, down: NR, right: BR, up: UR, home: zR, end: kR, pageUp: VR, pageDown: GR } = Li, HR = (n, e, t) => {
const i = Ee(), r = Ee(!1), s = ue(() => e.value instanceof Function), o = ue(() => s.value && e.value(n.modelValue) || n.modelValue), a = jh(() => {
t.value && (r.value = !0);
}, 50), c = jh(() => {
t.value && (r.value = !1);
}, 50);
return {
tooltip: i,
tooltipVisible: r,
formatValue: o,
displayTooltip: a,
hideTooltip: c
};
}, WR = (n, e, t) => {
const {
disabled: i,
min: r,
max: s,
step: o,
showTooltip: a,
precision: c,
sliderSize: l,
formatTooltip: d,
emitChange: h,
resetSize: f,
updateDragging: g
} = pt(my), { tooltip: p, tooltipVisible: u, formatValue: y, displayTooltip: v, hideTooltip: m } = HR(n, d, a), x = Ee(), w = ue(() => `${(n.modelValue - r.value) / (s.value - r.value) * 100}%`), A = ue(() => n.vertical ? { bottom: w.value } : { left: w.value }), M = () => {
e.hovering = !0, v();
}, R = () => {
e.hovering = !1, e.dragging || m();
}, L = (G) => {
i.value || (G.preventDefault(), D(G), window.addEventListener("mousemove", N), window.addEventListener("touchmove", N), window.addEventListener("mouseup", B), window.addEventListener("touchend", B), window.addEventListener("contextmenu", B), x.value.focus());
}, T = (G) => {
i.value || (e.newPosition = Number.parseFloat(w.value) + G / (s.value - r.value) * 100, U(e.newPosition), h());
}, P = () => {
T(-o.value);
}, _ = () => {
T(o.value);
}, S = () => {
T(-o.value * 4);
}, E = () => {
T(o.value * 4);
}, C = () => {
i.value || (U(0), h());
}, I = () => {
i.value || (U(100), h());
}, b = (G) => {
let Y = !0;
[DR, NR].includes(G.key) ? P() : [BR, UR].includes(G.key) ? _() : G.key === zR ? C() : G.key === kR ? I() : G.key === GR ? S() : G.key === VR ? E() : Y = !1, Y && G.preventDefault();
}, F = (G) => {
let Y, te;
return G.type.startsWith("touch") ? (te = G.touches[0].clientY, Y = G.touches[0].clientX) : (te = G.clientY, Y = G.clientX), {
clientX: Y,
clientY: te
};
}, D = (G) => {
e.dragging = !0, e.isClick = !0;
const { clientX: Y, clientY: te } = F(G);
n.vertical ? e.startY = te : e.startX = Y, e.startPosition = Number.parseFloat(w.value), e.newPosition = e.startPosition;
}, N = (G) => {
if (e.dragging) {
e.isClick = !1, v(), f();
let Y;
const { clientX: te, clientY: ae } = F(G);
n.vertical ? (e.currentY = ae, Y = (e.startY - e.currentY) / l.value * 100) : (e.currentX = te, Y = (e.currentX - e.startX) / l.value * 100), e.newPosition = e.startPosition + Y, U(e.newPosition);
}
}, B = () => {
e.dragging && (setTimeout(() => {
e.dragging = !1, e.hovering || m(), e.isClick || U(e.newPosition), h();
}, 0), window.removeEventListener("mousemove", N), window.removeEventListener("touchmove", N), window.removeEventListener("mouseup", B), window.removeEventListener("touchend", B), window.removeEventListener("contextmenu", B));
}, U = async (G) => {
if (G === null || Number.isNaN(+G))
return;
G < 0 ? G = 0 : G > 100 && (G = 100);
const Y = 100 / ((s.value - r.value) / o.value);
let ae = Math.round(G / Y) * Y * (s.value - r.value) * 0.01 + r.value;
ae = Number.parseFloat(ae.toFixed(c.value)), ae !== n.modelValue && t(At, ae), !e.dragging && n.modelValue !== e.oldValue && (e.oldValue = n.modelValue), await bt(), e.dragging && v(), p.value.updatePopper();
};
return Qe(() => e.dragging, (G) => {
g(G);
}), un(x, "touchstart", L, { passive: !1 }), {
disabled: i,
button: x,
tooltip: p,
tooltipVisible: u,
showTooltip: a,
wrapperStyle: A,
formatValue: y,
handleMouseEnter: M,
handleMouseLeave: R,
onButtonDown: L,
onKeyDown: b,
setPosition: U
};
}, jR = (n, e, t, i) => ({
stops: ue(() => {
if (!n.showStops || n.min > n.max)
return [];
if (n.step === 0)
return kt("ElSlider", "step should not be 0."), [];
const o = (n.max - n.min) / n.step, a = 100 * n.step / (n.max - n.min), c = Array.from({ length: o - 1 }).map((l, d) => (d + 1) * a);
return n.range ? c.filter((l) => l < 100 * (t.value - n.min) / (n.max - n.min) || l > 100 * (i.value - n.min) / (n.max - n.min)) : c.filter((l) => l > 100 * (e.firstValue - n.min) / (n.max - n.min));
}),
getStopStyle: (o) => n.vertical ? { bottom: `${o}%` } : { left: `${o}%` }
}), $R = (n, e, t, i, r, s) => {
const o = (l) => {
r(At, l), r(bs, l);
}, a = () => n.range ? ![t.value, i.value].every((l, d) => l === e.oldValue[d]) : n.modelValue !== e.oldValue, c = () => {
var l, d;
n.min > n.max && Xo("Slider", "min should not be greater than max.");
const h = n.modelValue;
n.range && Array.isArray(h) ? h[1] < n.min ? o([n.min, n.min]) : h[0] > n.max ? o([n.max, n.max]) : h[0] < n.min ? o([n.min, h[1]]) : h[1] > n.max ? o([h[0], n.max]) : (e.firstValue = h[0], e.secondValue = h[1], a() && (n.validateEvent && ((l = s == null ? void 0 : s.validate) == null || l.call(s, "change").catch((f) => kt(f))), e.oldValue = h.slice())) : !n.range && typeof h == "number" && !Number.isNaN(h) && (h < n.min ? o(n.min) : h > n.max ? o(n.max) : (e.firstValue = h, a() && (n.validateEvent && ((d = s == null ? void 0 : s.validate) == null || d.call(s, "change").catch((f) => kt(f))), e.oldValue = h)));
};
c(), Qe(() => e.dragging, (l) => {
l || c();
}), Qe(() => n.modelValue, (l, d) => {
e.dragging || Array.isArray(l) && Array.isArray(d) && l.every((h, f) => h === d[f]) && e.firstValue === l[0] && e.secondValue === l[1] || c();
}, {
deep: !0
}), Qe(() => [n.min, n.max], () => {
c();
});
}, ZR = at({
modelValue: {
type: Number,
default: 0
},
vertical: Boolean,
tooltipClass: String,
placement: {
type: String,
values: Yo,
default: "top"
}
}), XR = {
[At]: (n) => yt(n)
}, YR = Pe({
name: "ElSliderButton"
}), JR = /* @__PURE__ */ Pe({
...YR,
props: ZR,
emits: XR,
setup(n, { expose: e, emit: t }) {
const i = n, r = nt("slider"), s = jn({
hovering: !1,
dragging: !1,
isClick: !1,
startX: 0,
currentX: 0,
startY: 0,
currentY: 0,
startPosition: 0,
newPosition: 0,
oldValue: i.modelValue
}), {
disabled: o,
button: a,
tooltip: c,
showTooltip: l,
tooltipVisible: d,
wrapperStyle: h,
formatValue: f,
handleMouseEnter: g,
handleMouseLeave: p,
onButtonDown: u,
onKeyDown: y,
setPosition: v
} = WR(i, s, t), { hovering: m, dragging: x } = Br(s);
return e({
onButtonDown: u,
onKeyDown: y,
setPosition: v,
hovering: m,
dragging: x
}), (w, A) => (ve(), Ce("div", {
ref_key: "button",
ref: a,
class: Te([z(r).e("button-wrapper"), { hover: z(m), dragging: z(x) }]),
style: Rt(z(h)),
tabindex: z(o) ? -1 : 0,
onMouseenter: z(g),
onMouseleave: z(p),
onMousedown: z(u),
onFocus: z(g),
onBlur: z(p),
onKeydown: z(y)
}, [
oe(z(pf), {
ref_key: "tooltip",
ref: c,
visible: z(d),
placement: w.placement,
"fallback-placements": ["top", "bottom", "right", "left"],
"stop-popper-mouse-event": !1,
"popper-class": w.tooltipClass,
disabled: !z(l),
persistent: ""
}, {
content: de(() => [
Ne("span", null, gt(z(f)), 1)
]),
default: de(() => [
Ne("div", {
class: Te([z(r).e("button"), { hover: z(m), dragging: z(x) }])
}, null, 2)
]),
_: 1
}, 8, ["visible", "placement", "popper-class", "disabled"])
], 46, ["tabindex", "onMouseenter", "onMouseleave", "onMousedown", "onFocus", "onBlur", "onKeydown"]));
}
});
var km = /* @__PURE__ */ st(JR, [["__file", "button.vue"]]);
const KR = at({
mark: {
type: Je([String, Object]),
default: void 0
}
});
var qR = Pe({
name: "ElSliderMarker",
props: KR,
setup(n) {
const e = nt("slider"), t = ue(() => vn(n.mark) ? n.mark : n.mark.label), i = ue(() => vn(n.mark) ? void 0 : n.mark.style);
return () => ho("div", {
class: e.e("marks-text"),
style: i.value
}, t.value);
}
});
const QR = Pe({
name: "ElSlider"
}), e3 = /* @__PURE__ */ Pe({
...QR,
props: RR,
emits: FR,
setup(n, { expose: e, emit: t }) {
const i = n, r = nt("slider"), { t: s } = iu(), o = jn({
firstValue: 0,
secondValue: 0,
oldValue: 0,
dragging: !1,
sliderSize: 1
}), {
elFormItem: a,
slider: c,
firstButton: l,
secondButton: d,
sliderDisabled: h,
minValue: f,
maxValue: g,
runwayStyle: p,
barStyle: u,
resetSize: y,
emitChange: v,
onSliderWrapperPrevent: m,
onSliderClick: x,
onSliderDown: w,
onSliderMarkerDown: A,
setFirstValue: M,
setSecondValue: R
} = OR(i, o, t), { stops: L, getStopStyle: T } = jR(i, o, f, g), { inputId: P, isLabeledByFormItem: _ } = su(i, {
formItemContext: a
}), S = Ns(), E = ue(() => i.inputSize || S.value), C = ue(() => i.ariaLabel || s("el.slider.defaultLabel", {
min: i.min,
max: i.max
})), I = ue(() => i.range ? i.rangeStartLabel || s("el.slider.defaultRangeStartLabel") : C.value), b = ue(() => i.formatValueText ? i.formatValueText(Y.value) : `${Y.value}`), F = ue(() => i.rangeEndLabel || s("el.slider.defaultRangeEndLabel")), D = ue(() => i.formatValueText ? i.formatValueText(te.value) : `${te.value}`), N = ue(() => [
r.b(),
r.m(S.value),
r.is("vertical", i.vertical),
{ [r.m("with-input")]: i.showInput }
]), B = IR(i);
$R(i, o, f, g, t, a);
const U = ue(() => {
const le = [i.min, i.max, i.step].map((W) => {
const $ = `${W}`.split(".")[1];
return $ ? $.length : 0;
});
return Math.max.apply(null, le);
}), { sliderWrapper: G } = PR(i, o, y), { firstValue: Y, secondValue: te, sliderSize: ae } = Br(o), ie = (le) => {
o.dragging = le;
};
return un(G, "touchstart", m, {
passive: !1
}), un(G, "touchmove", m, {
passive: !1
}), sn(my, {
...Br(i),
sliderSize: ae,
disabled: h,
precision: U,
emitChange: v,
resetSize: y,
updateDragging: ie
}), e({
onSliderClick: x
}), (le, W) => {
var $, j;
return ve(), Ce("div", {
id: le.range ? z(P) : void 0,
ref_key: "sliderWrapper",
ref: G,
class: Te(z(N)),
role: le.range ? "group" : void 0,
"aria-label": le.range && !z(_) ? z(C) : void 0,
"aria-labelledby": le.range && z(_) ? ($ = z(a)) == null ? void 0 : $.labelId : void 0
}, [
Ne("div", {
ref_key: "slider",
ref: c,
class: Te([
z(r).e("runway"),
{ "show-input": le.showInput && !le.range },
z(r).is("disabled", z(h))
]),
style: Rt(z(p)),
onMousedown: z(w),
onTouchstartPassive: z(w)
}, [
Ne("div", {
class: Te(z(r).e("bar")),
style: Rt(z(u))
}, null, 6),
oe(km, {
id: le.range ? void 0 : z(P),
ref_key: "firstButton",
ref: l,
"model-value": z(Y),
vertical: le.vertical,
"tooltip-class": le.tooltipClass,
placement: le.placement,
role: "slider",
"aria-label": le.range || !z(_) ? z(I) : void 0,
"aria-labelledby": !le.range && z(_) ? (j = z(a)) == null ? void 0 : j.labelId : void 0,
"aria-valuemin": le.min,
"aria-valuemax": le.range ? z(te) : le.max,
"aria-valuenow": z(Y),
"aria-valuetext": z(b),
"aria-orientation": le.vertical ? "vertical" : "horizontal",
"aria-disabled": z(h),
"onUpdate:modelValue": z(M)
}, null, 8, ["id", "model-value", "vertical", "tooltip-class", "placement", "aria-label", "aria-labelledby", "aria-valuemin", "aria-valuemax", "aria-valuenow", "aria-valuetext", "aria-orientation", "aria-disabled", "onUpdate:modelValue"]),
le.range ? (ve(), Ve(km, {
key: 0,
ref_key: "secondButton",
ref: d,
"model-value": z(te),
vertical: le.vertical,
"tooltip-class": le.tooltipClass,
placement: le.placement,
role: "slider",
"aria-label": z(F),
"aria-valuemin": z(Y),
"aria-valuemax": le.max,
"aria-valuenow": z(te),
"aria-valuetext": z(D),
"aria-orientation": le.vertical ? "vertical" : "horizontal",
"aria-disabled": z(h),
"onUpdate:modelValue": z(R)
}, null, 8, ["model-value", "vertical", "tooltip-class", "placement", "aria-label", "aria-valuemin", "aria-valuemax", "aria-valuenow", "aria-valuetext", "aria-orientation", "aria-disabled", "onUpdate:modelValue"])) : ke("v-if", !0),
le.showStops ? (ve(), Ce("div", { key: 1 }, [
(ve(!0), Ce(Ft, null, Gn(z(L), (re, k) => (ve(), Ce("div", {
key: k,
class: Te(z(r).e("stop")),
style: Rt(z(T)(re))
}, null, 6))), 128))
])) : ke("v-if", !0),
z(B).length > 0 ? (ve(), Ce(Ft, { key: 2 }, [
Ne("div", null, [
(ve(!0), Ce(Ft, null, Gn(z(B), (re, k) => (ve(), Ce("div", {
key: k,
style: Rt(z(T)(re.position)),
class: Te([z(r).e("stop"), z(r).e("marks-stop")])
}, null, 6))), 128))
]),
Ne("div", {
class: Te(z(r).e("marks"))
}, [
(ve(!0), Ce(Ft, null, Gn(z(B), (re, k) => (ve(), Ve(z(qR), {
key: k,
mark: re.mark,
style: Rt(z(T)(re.position)),
onMousedown: Ut((H) => z(A)(re.position), ["stop"])
}, null, 8, ["mark", "style", "onMousedown"]))), 128))
], 2)
], 64)) : ke("v-if", !0)
], 46, ["onMousedown", "onTouchstartPassive"]),
le.showInput && !le.range ? (ve(), Ve(z(fr), {
key: 0,
ref: "input",
"model-value": z(Y),
class: Te(z(r).e("input")),
step: le.step,
disabled: z(h),
controls: le.showInputControls,
min: le.min,
max: le.max,
precision: z(U),
debounce: le.debounce,
size: z(E),
"onUpdate:modelValue": z(M),
onChange: z(v)
}, null, 8, ["model-value", "class", "step", "disabled", "controls", "min", "max", "precision", "debounce", "size", "onUpdate:modelValue", "onChange"])) : ke("v-if", !0)
], 10, ["id", "role", "aria-label", "aria-labelledby"]);
};
}
});
var t3 = /* @__PURE__ */ st(e3, [["__file", "slider.vue"]]);
const ti = on(t3), uu = Symbol("tabsRootContextKey"), n3 = at({
tabs: {
type: Je(Array),
default: () => qi([])
}
}), gy = "ElTabBar", i3 = Pe({
name: gy
}), r3 = /* @__PURE__ */ Pe({
...i3,
props: n3,
setup(n, { expose: e }) {
const t = n, i = dn(), r = pt(uu);
r || Xo(gy, "");
const s = nt("tabs"), o = Ee(), a = Ee(), c = () => {
let g = 0, p = 0;
const u = ["top", "bottom"].includes(r.props.tabPosition) ? "width" : "height", y = u === "width" ? "x" : "y", v = y === "x" ? "left" : "top";
return t.tabs.every((m) => {
var x, w;
const A = (w = (x = i.parent) == null ? void 0 : x.refs) == null ? void 0 : w[`tab-${m.uid}`];
if (!A)
return !1;
if (!m.active)
return !0;
g = A[`offset${Rr(v)}`], p = A[`client${Rr(u)}`];
const M = window.getComputedStyle(A);
return u === "width" && (p -= Number.parseFloat(M.paddingLeft) + Number.parseFloat(M.paddingRight), g += Number.parseFloat(M.paddingLeft)), !1;
}), {
[u]: `${p}px`,
transform: `translate${Rr(y)}(${g}px)`
};
}, l = () => a.value = c(), d = [], h = () => {
var g;
d.forEach((u) => u.stop()), d.length = 0;
const p = (g = i.parent) == null ? void 0 : g.refs;
if (p) {
for (const u in p)
if (u.startsWith("tab-")) {
const y = p[u];
y && d.push(Jn(y, l));
}
}
};
Qe(() => t.tabs, async () => {
await bt(), l(), h();
}, { immediate: !0 });
const f = Jn(o, () => l());
return ei(() => {
d.forEach((g) => g.stop()), d.length = 0, f.stop();
}), e({
ref: o,
update: l
}), (g, p) => (ve(), Ce("div", {
ref_key: "barRef",
ref: o,
class: Te([z(s).e("active-bar"), z(s).is(z(r).props.tabPosition)]),
style: Rt(a.value)
}, null, 6));
}
});
var s3 = /* @__PURE__ */ st(r3, [["__file", "tab-bar.vue"]]);
const o3 = at({
panes: {
type: Je(Array),
default: () => qi([])
},
currentName: {
type: [String, Number],
default: ""
},
editable: Boolean,
type: {
type: String,
values: ["card", "border-card", ""],
default: ""
},
stretch: Boolean
}), a3 = {
tabClick: (n, e, t) => t instanceof Event,
tabRemove: (n, e) => e instanceof Event
}, Vm = "ElTabNav", l3 = Pe({
name: Vm,
props: o3,
emits: a3,
setup(n, {
expose: e,
emit: t
}) {
const i = pt(uu);
i || Xo(Vm, "");
const r = nt("tabs"), s = xw(), o = Iw(), a = Ee(), c = Ee(), l = Ee(), d = Ee(), h = Ee(!1), f = Ee(0), g = Ee(!1), p = Ee(!0), u = ue(() => ["top", "bottom"].includes(i.props.tabPosition) ? "width" : "height"), y = ue(() => ({
transform: `translate${u.value === "width" ? "X" : "Y"}(-${f.value}px)`
})), v = () => {
if (!a.value)
return;
const L = a.value[`offset${Rr(u.value)}`], T = f.value;
if (!T)
return;
const P = T > L ? T - L : 0;
f.value = P;
}, m = () => {
if (!a.value || !c.value)
return;
const L = c.value[`offset${Rr(u.value)}`], T = a.value[`offset${Rr(u.value)}`], P = f.value;
if (L - P <= T)
return;
const _ = L - P > T * 2 ? P + T : L - T;
f.value = _;
}, x = async () => {
const L = c.value;
if (!h.value || !l.value || !a.value || !L)
return;
await bt();
const T = l.value.querySelector(".is-active");
if (!T)
return;
const P = a.value, _ = ["top", "bottom"].includes(i.props.tabPosition), S = T.getBoundingClientRect(), E = P.getBoundingClientRect(), C = _ ? L.offsetWidth - E.width : L.offsetHeight - E.height, I = f.value;
let b = I;
_ ? (S.left < E.left && (b = I - (E.left - S.left)), S.right > E.right && (b = I + S.right - E.right)) : (S.top < E.top && (b = I - (E.top - S.top)), S.bottom > E.bottom && (b = I + (S.bottom - E.bottom))), b = Math.max(b, 0), f.value = Math.min(b, C);
}, w = () => {
var L;
if (!c.value || !a.value)
return;
n.stretch && ((L = d.value) == null || L.update());
const T = c.value[`offset${Rr(u.value)}`], P = a.value[`offset${Rr(u.value)}`], _ = f.value;
P < T ? (h.value = h.value || {}, h.value.prev = _, h.value.next = _ + P < T, T - _ < P && (f.value = T - P)) : (h.value = !1, _ > 0 && (f.value = 0));
}, A = (L) => {
const T = L.code, {
up: P,
down: _,
left: S,
right: E
} = Li;
if (![P, _, S, E].includes(T))
return;
const C = Array.from(L.currentTarget.querySelectorAll("[role=tab]:not(.is-disabled)")), I = C.indexOf(L.target);
let b;
T === S || T === P ? I === 0 ? b = C.length - 1 : b = I - 1 : I < C.length - 1 ? b = I + 1 : b = 0, C[b].focus({
preventScroll: !0
}), C[b].click(), M();
}, M = () => {
p.value && (g.value = !0);
}, R = () => g.value = !1;
return Qe(s, (L) => {
L === "hidden" ? p.value = !1 : L === "visible" && setTimeout(() => p.value = !0, 50);
}), Qe(o, (L) => {
L ? setTimeout(() => p.value = !0, 50) : p.value = !1;
}), Jn(l, w), Jt(() => setTimeout(() => x(), 0)), zd(() => w()), e({
scrollToActiveTab: x,
removeFocus: R
}), () => {
const L = h.value ? [oe("span", {
class: [r.e("nav-prev"), r.is("disabled", !h.value.prev)],
onClick: v
}, [oe(It, null, {
default: () => [oe(zr, null, null)]
})]), oe("span", {
class: [r.e("nav-next"), r.is("disabled", !h.value.next)],
onClick: m
}, [oe(It, null, {
default: () => [oe(kr, null, null)]
})])] : null, T = n.panes.map((P, _) => {
var S, E, C, I;
const b = P.uid, F = P.props.disabled, D = (E = (S = P.props.name) != null ? S : P.index) != null ? E : `${_}`, N = !F && (P.isClosable || n.editable);
P.index = `${_}`;
const B = N ? oe(It, {
class: "is-icon-close",
onClick: (Y) => t("tabRemove", P, Y)
}, {
default: () => [oe(Zh, null, null)]
}) : null, U = ((I = (C = P.slots).label) == null ? void 0 : I.call(C)) || P.props.label, G = !F && P.active ? 0 : -1;
return oe("div", {
ref: `tab-${b}`,
class: [r.e("item"), r.is(i.props.tabPosition), r.is("active", P.active), r.is("disabled", F), r.is("closable", N), r.is("focus", g.value)],
id: `tab-${D}`,
key: `tab-${b}`,
"aria-controls": `pane-${D}`,
role: "tab",
"aria-selected": P.active,
tabindex: G,
onFocus: () => M(),
onBlur: () => R(),
onClick: (Y) => {
R(), t("tabClick", P, D, Y);
},
onKeydown: (Y) => {
N && (Y.code === Li.delete || Y.code === Li.backspace) && t("tabRemove", P, Y);
}
}, [U, B]);
});
return oe("div", {
ref: l,
class: [r.e("nav-wrap"), r.is("scrollable", !!h.value), r.is(i.props.tabPosition)]
}, [L, oe("div", {
class: r.e("nav-scroll"),
ref: a
}, [oe("div", {
class: [r.e("nav"), r.is(i.props.tabPosition), r.is("stretch", n.stretch && ["top", "bottom"].includes(i.props.tabPosition))],
ref: c,
style: y.value,
role: "tablist",
onKeydown: A
}, [n.type ? null : oe(s3, {
ref: d,
tabs: [...n.panes]
}, null), T])])]);
};
}
}), c3 = at({
type: {
type: String,
values: ["card", "border-card", ""],
default: ""
},
closable: Boolean,
addable: Boolean,
modelValue: {
type: [String, Number]
},
editable: Boolean,
tabPosition: {
type: String,
values: ["top", "right", "bottom", "left"],
default: "top"
},
beforeLeave: {
type: Je(Function),
default: () => !0
},
stretch: Boolean
}), ju = (n) => vn(n) || yt(n), u3 = {
[At]: (n) => ju(n),
tabClick: (n, e) => e instanceof Event,
tabChange: (n) => ju(n),
edit: (n, e) => ["remove", "add"].includes(e),
tabRemove: (n) => ju(n),
tabAdd: () => !0
}, h3 = Pe({
name: "ElTabs",
props: c3,
emits: u3,
setup(n, {
emit: e,
slots: t,
expose: i
}) {
var r;
const s = nt("tabs"), o = ue(() => ["left", "right"].includes(n.tabPosition)), {
children: a,
addChild: c,
removeChild: l
} = FE(dn(), "ElTabPane"), d = Ee(), h = Ee((r = n.modelValue) != null ? r : "0"), f = async (v, m = !1) => {
var x, w, A;
if (!(h.value === v || di(v)))
try {
await ((x = n.beforeLeave) == null ? void 0 : x.call(n, v, h.value)) !== !1 && (h.value = v, m && (e(At, v), e("tabChange", v)), (A = (w = d.value) == null ? void 0 : w.removeFocus) == null || A.call(w));
} catch {
}
}, g = (v, m, x) => {
v.props.disabled || (f(m, !0), e("tabClick", v, x));
}, p = (v, m) => {
v.props.disabled || di(v.props.name) || (m.stopPropagation(), e("edit", v.props.name, "remove"), e("tabRemove", v.props.name));
}, u = () => {
e("edit", void 0, "add"), e("tabAdd");
};
Qe(() => n.modelValue, (v) => f(v)), Qe(h, async () => {
var v;
await bt(), (v = d.value) == null || v.scrollToActiveTab();
}), sn(uu, {
props: n,
currentName: h,
registerPane: (v) => {
a.value.push(v);
},
sortPane: c,
unregisterPane: l
}), i({
currentName: h
});
const y = ({
render: v
}) => v();
return () => {
const v = t["add-icon"], m = n.editable || n.addable ? oe("div", {
class: [s.e("new-tab"), o.value && s.e("new-tab-vertical")],
tabindex: "0",
onClick: u,
onKeydown: (A) => {
A.code === Li.enter && u();
}
}, [v ? He(t, "add-icon") : oe(It, {
class: s.is("icon-plus")
}, {
default: () => [oe(tu, null, null)]
})]) : null, x = oe("div", {
class: [s.e("header"), o.value && s.e("header-vertical"), s.is(n.tabPosition)]
}, [oe(y, {
render: () => {
const A = a.value.some((M) => M.slots.label);
return oe(l3, {
ref: d,
currentName: h.value,
editable: n.editable,
type: n.type,
panes: a.value,
stretch: n.stretch,
onTabClick: g,
onTabRemove: p
}, {
$stable: !A
});
}
}, null), m]), w = oe("div", {
class: s.e("content")
}, [He(t, "default")]);
return oe("div", {
class: [s.b(), s.m(n.tabPosition), {
[s.m("card")]: n.type === "card",
[s.m("border-card")]: n.type === "border-card"
}]
}, [w, x]);
};
}
}), d3 = at({
label: {
type: String,
default: ""
},
name: {
type: [String, Number]
},
closable: Boolean,
disabled: Boolean,
lazy: Boolean
}), vy = "ElTabPane", f3 = Pe({
name: vy
}), p3 = /* @__PURE__ */ Pe({
...f3,
props: d3,
setup(n) {
const e = n, t = dn(), i = Xc(), r = pt(uu);
r || Xo(vy, "usage: ");
const s = nt("tab-pane"), o = Ee(), a = ue(() => e.closable || r.props.closable), c = Mp(() => {
var g;
return r.currentName.value === ((g = e.name) != null ? g : o.value);
}), l = Ee(c.value), d = ue(() => {
var g;
return (g = e.name) != null ? g : o.value;
}), h = Mp(() => !e.lazy || l.value || c.value);
Qe(c, (g) => {
g && (l.value = !0);
});
const f = jn({
uid: t.uid,
slots: i,
props: e,
paneName: d,
active: c,
index: o,
isClosable: a
});
return r.registerPane(f), Jt(() => {
r.sortPane(f);
}), Uv(() => {
r.unregisterPane(f.uid);
}), (g, p) => z(h) ? Lt((ve(), Ce("div", {
key: 0,
id: `pane-${z(d)}`,
class: Te(z(s).b()),
role: "tabpanel",
"aria-hidden": !z(c),
"aria-labelledby": `tab-${z(d)}`
}, [
He(g.$slots, "default")
], 10, ["id", "aria-hidden", "aria-labelledby"])), [
[mn, z(c)]
]) : ke("v-if", !0);
}
});
var yy = /* @__PURE__ */ st(p3, [["__file", "tab-pane.vue"]]);
const by = on(h3, {
TabPane: yy
}), xy = vi(yy);
function m3(n) {
let e;
const t = Ee(!1), i = jn({
...n,
originalPosition: "",
originalOverflow: "",
visible: !1
});
function r(f) {
i.text = f;
}
function s() {
const f = i.parent, g = h.ns;
if (!f.vLoadingAddClassList) {
let p = f.getAttribute("loading-number");
p = Number.parseInt(p) - 1, p ? f.setAttribute("loading-number", p.toString()) : (Oc(f, g.bm("parent", "relative")), f.removeAttribute("loading-number")), Oc(f, g.bm("parent", "hidden"));
}
o(), d.unmount();
}
function o() {
var f, g;
(g = (f = h.$el) == null ? void 0 : f.parentNode) == null || g.removeChild(h.$el);
}
function a() {
var f;
n.beforeClose && !n.beforeClose() || (t.value = !0, clearTimeout(e), e = setTimeout(c, 400), i.visible = !1, (f = n.closed) == null || f.call(n));
}
function c() {
if (!t.value)
return;
const f = i.parent;
t.value = !1, f.vLoadingAddClassList = void 0, s();
}
const l = Pe({
name: "ElLoading",
setup(f, { expose: g }) {
const { ns: p, zIndex: u } = zE("loading");
return g({
ns: p,
zIndex: u
}), () => {
const y = i.spinner || i.svg, v = ho("svg", {
class: "circular",
viewBox: i.svgViewBox ? i.svgViewBox : "0 0 50 50",
...y ? { innerHTML: y } : {}
}, [
ho("circle", {
class: "path",
cx: "25",
cy: "25",
r: "20",
fill: "none"
})
]), m = i.text ? ho("p", { class: p.b("text") }, [i.text]) : void 0;
return ho(el, {
name: p.b("fade"),
onAfterLeave: c
}, {
default: de(() => [
Lt(oe("div", {
style: {
backgroundColor: i.background || ""
},
class: [
p.b("mask"),
i.customClass,
i.fullscreen ? "is-fullscreen" : ""
]
}, [
ho("div", {
class: p.b("spinner")
}, [v, m])
]), [[mn, i.visible]])
])
});
};
}
}), d = qM(l), h = d.mount(document.createElement("div"));
return {
...Br(i),
setText: r,
removeElLoadingChild: o,
close: a,
handleAfterLeave: c,
vm: h,
get $el() {
return h.$el;
}
};
}
let Pl;
const ed = function(n = {}) {
if (!en)
return;
const e = g3(n);
if (e.fullscreen && Pl)
return Pl;
const t = m3({
...e,
closed: () => {
var r;
(r = e.closed) == null || r.call(e), e.fullscreen && (Pl = void 0);
}
});
v3(e, e.parent, t), Gm(e, e.parent, t), e.parent.vLoadingAddClassList = () => Gm(e, e.parent, t);
let i = e.parent.getAttribute("loading-number");
return i ? i = `${Number.parseInt(i) + 1}` : i = "1", e.parent.setAttribute("loading-number", i), e.parent.appendChild(t.$el), bt(() => t.visible.value = e.visible), e.fullscreen && (Pl = t), t;
}, g3 = (n) => {
var e, t, i, r;
let s;
return vn(n.target) ? s = (e = document.querySelector(n.target)) != null ? e : document.body : s = n.target || document.body, {
parent: s === document.body || n.body ? document.body : s,
background: n.background || "",
svg: n.svg || "",
svgViewBox: n.svgViewBox || "",
spinner: n.spinner || !1,
text: n.text || "",
fullscreen: s === document.body && ((t = n.fullscreen) != null ? t : !0),
lock: (i = n.lock) != null ? i : !1,
customClass: n.customClass || "",
visible: (r = n.visible) != null ? r : !0,
beforeClose: n.beforeClose,
closed: n.closed,
target: s
};
}, v3 = async (n, e, t) => {
const { nextZIndex: i } = t.vm.zIndex || t.vm._.exposed.zIndex, r = {};
if (n.fullscreen)
t.originalPosition.value = ca(document.body, "position"), t.originalOverflow.value = ca(document.body, "overflow"), r.zIndex = i();
else if (n.parent === document.body) {
t.originalPosition.value = ca(document.body, "position"), await bt();
for (const s of ["top", "left"]) {
const o = s === "top" ? "scrollTop" : "scrollLeft";
r[s] = `${n.target.getBoundingClientRect()[s] + document.body[o] + document.documentElement[o] - Number.parseInt(ca(document.body, `margin-${s}`), 10)}px`;
}
for (const s of ["height", "width"])
r[s] = `${n.target.getBoundingClientRect()[s]}px`;
} else
t.originalPosition.value = ca(e, "position");
for (const [s, o] of Object.entries(r))
t.$el.style[s] = o;
}, Gm = (n, e, t) => {
const i = t.vm.ns || t.vm._.exposed.ns;
["absolute", "fixed", "sticky"].includes(t.originalPosition.value) ? Oc(e, i.bm("parent", "relative")) : sm(e, i.bm("parent", "relative")), n.fullscreen && n.lock ? sm(e, i.bm("parent", "hidden")) : Oc(e, i.bm("parent", "hidden"));
}, Ec = Symbol("ElLoading"), Hm = (n, e) => {
var t, i, r, s;
const o = e.instance, a = (f) => Tn(e.value) ? e.value[f] : void 0, c = (f) => {
const g = vn(f) && (o == null ? void 0 : o[f]) || f;
return g && Ee(g);
}, l = (f) => c(a(f) || n.getAttribute(`element-loading-${Vw(f)}`)), d = (t = a("fullscreen")) != null ? t : e.modifiers.fullscreen, h = {
text: l("text"),
svg: l("svg"),
svgViewBox: l("svgViewBox"),
spinner: l("spinner"),
background: l("background"),
customClass: l("customClass"),
fullscreen: d,
target: (i = a("target")) != null ? i : d ? void 0 : n,
body: (r = a("body")) != null ? r : e.modifiers.body,
lock: (s = a("lock")) != null ? s : e.modifiers.lock
};
n[Ec] = {
options: h,
instance: ed(h)
};
}, y3 = (n, e) => {
for (const t of Object.keys(e))
Zc(e[t]) && (e[t].value = n[t]);
}, td = {
mounted(n, e) {
e.value && Hm(n, e);
},
updated(n, e) {
const t = n[Ec];
e.oldValue !== e.value && (e.value && !e.oldValue ? Hm(n, e) : e.value && e.oldValue ? Tn(e.value) && y3(e.value, t.options) : t == null || t.instance.close());
},
unmounted(n) {
var e;
(e = n[Ec]) == null || e.instance.close(), n[Ec] = null;
}
}, b3 = {
install(n) {
n.directive("loading", td), n.config.globalProperties.$loading = ed;
},
directive: td,
service: ed
}, ki = (n, e) => {
const t = n.__vccOpts || n;
for (const [i, r] of e)
t[i] = r;
return t;
}, x3 = [
{ position: "top", mode: "vertical", text: "Begin interaction here to rotate on the x-axis" },
{ position: "bottom", mode: "vertical", text: "Begin interaction here to rotate on the x-axis" },
{ position: "left", mode: "horizontal", text: "Begin interaction here to rotate on the y-axis" },
{ position: "right", mode: "horizontal", text: "Begin interaction here to rotate on the y-axis" }
], M3 = {
name: "ScaffoldOverlay",
data: function() {
return {
lockRotationMode: !1,
touchActive: !1,
rotationOverlays: x3
};
},
props: {
/**
* Experimental feature to restrict rotation at
* one-axis based on position of the initial click
*/
positionalRotation: {
type: Boolean,
default: !1
}
},
methods: {
contentMouseActive: function(n, e) {
if (this.positionalRotation) {
const t = this.$refs.topLayer;
t && (e ? (this.lockRotationMode = !0, t.style.pointerEvents = "none", n.type === "touchstart" && (this.touchActive = !0)) : (this.lockRotationMode = !1, this.setRotationMode(void 0, "free"), t.style.pointerEvents = "auto", n.type === "touchend" && (this.touchActive = !1)));
}
},
setRotationMode: function(n, e) {
this.lockRotationMode || this.$emit("onRotationModeChange", e), n && (n.preventDefault(), n.stopPropagation());
},
skipWhenInBound: function(n) {
if (this.positionalRotation) {
const e = this.$refs.topLayer, t = this.$refs.contentLayer;
if (e && t) {
const i = e.style.pointerEvents;
e.style.pointerEvents = "none";
const r = document.elementFromPoint(n.clientX, n.clientY);
e.style.pointerEvents = i, t.contains(r) && n.stopPropagation();
}
}
},
forwardEvent: function(n) {
const e = this.$refs.topLayer;
if (!e) return;
const t = e.style.pointerEvents;
e.style.pointerEvents = "none";
const i = document.elementFromPoint(n.clientX, n.clientY);
if (e.style.pointerEvents = t, i) {
const r = new MouseEvent(
n.type,
{
bubbles: n.bubbles,
cancelable: n.cancelable,
view: n.view,
clientX: n.clientX,
clientY: n.clientY,
button: n.button
}
);
i.dispatchEvent(r), n.stopPropagation();
}
n.preventDefault();
},
forwardTouchEvent: function(n) {
const e = this.$refs.topLayer;
if (!e) return;
const t = e.style.pointerEvents;
e.style.pointerEvents = "none";
const i = n.changedTouches[0], r = i.clientX, s = i.clientY, o = document.elementFromPoint(r, s);
if (e.style.pointerEvents = t, o) {
const a = new Touch({
identifier: i.identifier,
target: o,
clientX: i.clientX,
clientY: i.clientY,
pageX: i.pageX,
pageY: i.pageY,
screenX: i.screenX,
screenY: i.screenY,
radiusX: i.radiusX,
radiusY: i.radiusY,
rotationAngle: i.rotationAngle,
force: i.force
}), c = new TouchEvent(
n.type,
{
bubbles: n.bubbles,
cancelable: n.cancelable,
composed: !0,
view: n.view,
touches: [a],
targetTouches: [a],
changedTouches: [a]
}
);
o.dispatchEvent(c), n.stopPropagation();
}
n.preventDefault();
}
}
}, w3 = { ref: "overlay" }, A3 = ["onMousedown", "onTouchstart"];
function S3(n, e, t, i, r, s) {
return ve(), Ce("div", w3, [
Ne("div", {
class: "content-layer",
ref: "contentLayer",
onMouseleaveCapture: e[0] || (e[0] = (...o) => s.skipWhenInBound && s.skipWhenInBound(...o)),
onMousedownCapture: e[1] || (e[1] = (o) => s.contentMouseActive(o, !0)),
onMouseupCapture: e[2] || (e[2] = (o) => s.contentMouseActive(o, !1)),
onTouchstartCapture: e[3] || (e[3] = (o) => s.contentMouseActive(o, !0)),
onTouchendCapture: e[4] || (e[4] = (o) => s.contentMouseActive(o, !1))
}, [
He(n.$slots, "default", {}, void 0, !0)
], 544),
t.positionalRotation ? (ve(), Ce("div", {
key: 0,
ref: "topLayer",
onMousemoveCapture: e[7] || (e[7] = (...o) => s.forwardEvent && s.forwardEvent(...o)),
onMouseoverCapture: e[8] || (e[8] = (...o) => s.forwardEvent && s.forwardEvent(...o)),
onTouchmoveCapture: e[9] || (e[9] = (...o) => s.forwardTouchEvent && s.forwardTouchEvent(...o)),
onClickCapture: e[10] || (e[10] = (...o) => s.forwardEvent && s.forwardEvent(...o))
}, [
(ve(!0), Ce(Ft, null, Gn(n.rotationOverlays, (o) => (ve(), Ce("div", {
key: o.position,
class: Te(["rotation-overlay", o.position, n.touchActive ? "touch-active" : ""]),
onMousedown: (a) => {
s.setRotationMode(a, o.mode), s.forwardEvent(a);
},
onMouseup: e[5] || (e[5] = (...a) => s.forwardEvent && s.forwardEvent(...a)),
onTouchstart: (a) => {
s.setRotationMode(a, o.mode), s.forwardTouchEvent(a);
},
onTouchend: e[6] || (e[6] = (...a) => s.forwardTouchEvent && s.forwardTouchEvent(...a))
}, [
Ne("span", null, gt(o.text), 1)
], 42, A3))), 128))
], 544)) : ke("", !0)
], 512);
}
const My = /* @__PURE__ */ ki(M3, [["render", S3], ["__scopeId", "data-v-24f88254"]]);
var wy = { exports: {} }, Wm = {}, jm;
function _3() {
return jm || (jm = 1, function(n) {
var e = function() {
try {
return !!Symbol.iterator;
} catch {
return !1;
}
}, t = e(), i = function(l) {
var d = {
next: function() {
var h = l.shift();
return { done: h === void 0, value: h };
}
};
return t && (d[Symbol.iterator] = function() {
return d;
}), d;
}, r = function(l) {
return encodeURIComponent(l).replace(/%20/g, "+");
}, s = function(l) {
return decodeURIComponent(String(l).replace(/\+/g, " "));
}, o = function() {
var l = function(h) {
Object.defineProperty(this, "_entries", { writable: !0, value: {} });
var f = typeof h;
if (f !== "undefined") if (f === "string")
h !== "" && this._fromString(h);
else if (h instanceof l) {
var g = this;
h.forEach(function(v, m) {
g.append(m, v);
});
} else if (h !== null && f === "object")
if (Object.prototype.toString.call(h) === "[object Array]")
for (var p = 0; p < h.length; p++) {
var u = h[p];
if (Object.prototype.toString.call(u) === "[object Array]" || u.length !== 2)
this.append(u[0], u[1]);
else
throw new TypeError("Expected [string, any] as entry at index " + p + " of URLSearchParams's input");
}
else
for (var y in h)
h.hasOwnProperty(y) && this.append(y, h[y]);
else
throw new TypeError("Unsupported input's type for URLSearchParams");
}, d = l.prototype;
d.append = function(h, f) {
h in this._entries ? this._entries[h].push(String(f)) : this._entries[h] = [String(f)];
}, d.delete = function(h) {
delete this._entries[h];
}, d.get = function(h) {
return h in this._entries ? this._entries[h][0] : null;
}, d.getAll = function(h) {
return h in this._entries ? this._entries[h].slice(0) : [];
}, d.has = function(h) {
return h in this._entries;
}, d.set = function(h, f) {
this._entries[h] = [String(f)];
}, d.forEach = function(h, f) {
var g;
for (var p in this._entries)
if (this._entries.hasOwnProperty(p)) {
g = this._entries[p];
for (var u = 0; u < g.length; u++)
h.call(f, g[u], p, this);
}
}, d.keys = function() {
var h = [];
return this.forEach(function(f, g) {
h.push(g);
}), i(h);
}, d.values = function() {
var h = [];
return this.forEach(function(f) {
h.push(f);
}), i(h);
}, d.entries = function() {
var h = [];
return this.forEach(function(f, g) {
h.push([g, f]);
}), i(h);
}, t && (d[Symbol.iterator] = d.entries), d.toString = function() {
var h = [];
return this.forEach(function(f, g) {
h.push(r(g) + "=" + r(f));
}), h.join("&");
}, n.URLSearchParams = l;
}, a = function() {
try {
var l = n.URLSearchParams;
return new l("?a=1").toString() === "a=1" && typeof l.prototype.set == "function" && typeof l.prototype.entries == "function";
} catch {
return !1;
}
};
a() || o();
var c = n.URLSearchParams.prototype;
typeof c.sort != "function" && (c.sort = function() {
var l = this, d = [];
this.forEach(function(f, g) {
d.push([g, f]), l._entries || l.delete(g);
}), d.sort(function(f, g) {
return f[0] < g[0] ? -1 : f[0] > g[0] ? 1 : 0;
}), l._entries && (l._entries = {});
for (var h = 0; h < d.length; h++)
this.append(d[h][0], d[h][1]);
}), typeof c._fromString != "function" && Object.defineProperty(c, "_fromString", {
enumerable: !1,
configurable: !1,
writable: !1,
value: function(l) {
if (this._entries)
this._entries = {};
else {
var d = [];
this.forEach(function(p, u) {
d.push(u);
});
for (var h = 0; h < d.length; h++)
this.delete(d[h]);
}
l = l.replace(/^\?/, "");
for (var f = l.split("&"), g, h = 0; h < f.length; h++)
g = f[h].split("="), this.append(
s(g[0]),
g.length > 1 ? s(g[1]) : ""
);
}
});
}(
typeof Lr < "u" ? Lr : typeof window < "u" ? window : typeof self < "u" ? self : Lr
), function(n) {
var e = function() {
try {
var r = new n.URL("b", "http://a");
return r.pathname = "c d", r.href === "http://a/c%20d" && r.searchParams;
} catch {
return !1;
}
}, t = function() {
var r = n.URL, s = function(c, l) {
typeof c != "string" && (c = String(c)), l && typeof l != "string" && (l = String(l));
var d = document, h;
if (l && (n.location === void 0 || l !== n.location.href)) {
l = l.toLowerCase(), d = document.implementation.createHTMLDocument(""), h = d.createElement("base"), h.href = l, d.head.appendChild(h);
try {
if (h.href.indexOf(l) !== 0) throw new Error(h.href);
} catch (x) {
throw new Error("URL unable to set base " + l + " due to " + x);
}
}
var f = d.createElement("a");
f.href = c, h && (d.body.appendChild(f), f.href = f.href);
var g = d.createElement("input");
if (g.type = "url", g.value = c, f.protocol === ":" || !/:/.test(f.href) || !g.checkValidity() && !l)
throw new TypeError("Invalid URL");
Object.defineProperty(this, "_anchorElement", {
value: f
});
var p = new n.URLSearchParams(this.search), u = !0, y = !0, v = this;
["append", "delete", "set"].forEach(function(x) {
var w = p[x];
p[x] = function() {
w.apply(p, arguments), u && (y = !1, v.search = p.toString(), y = !0);
};
}), Object.defineProperty(this, "searchParams", {
value: p,
enumerable: !0
});
var m = void 0;
Object.defineProperty(this, "_updateSearchParams", {
enumerable: !1,
configurable: !1,
writable: !1,
value: function() {
this.search !== m && (m = this.search, y && (u = !1, this.searchParams._fromString(this.search), u = !0));
}
});
}, o = s.prototype, a = function(c) {
Object.defineProperty(o, c, {
get: function() {
return this._anchorElement[c];
},
set: function(l) {
this._anchorElement[c] = l;
},
enumerable: !0
});
};
["hash", "host", "hostname", "port", "protocol"].forEach(function(c) {
a(c);
}), Object.defineProperty(o, "search", {
get: function() {
return this._anchorElement.search;
},
set: function(c) {
this._anchorElement.search = c, this._updateSearchParams();
},
enumerable: !0
}), Object.defineProperties(o, {
toString: {
get: function() {
var c = this;
return function() {
return c.href;
};
}
},
href: {
get: function() {
return this._anchorElement.href.replace(/\?$/, "");
},
set: function(c) {
this._anchorElement.href = c, this._updateSearchParams();
},
enumerable: !0
},
pathname: {
get: function() {
return this._anchorElement.pathname.replace(/(^\/?)/, "/");
},
set: function(c) {
this._anchorElement.pathname = c;
},
enumerable: !0
},
origin: {
get: function() {
var c = { "http:": 80, "https:": 443, "ftp:": 21 }[this._anchorElement.protocol], l = this._anchorElement.port != c && this._anchorElement.port !== "";
return this._anchorElement.protocol + "//" + this._anchorElement.hostname + (l ? ":" + this._anchorElement.port : "");
},
enumerable: !0
},
password: {
// TODO
get: function() {
return "";
},
set: function(c) {
},
enumerable: !0
},
username: {
// TODO
get: function() {
return "";
},
set: function(c) {
},
enumerable: !0
}
}), s.createObjectURL = function(c) {
return r.createObjectURL.apply(r, arguments);
}, s.revokeObjectURL = function(c) {
return r.revokeObjectURL.apply(r, arguments);
}, n.URL = s;
};
if (e() || t(), n.location !== void 0 && !("origin" in n.location)) {
var i = function() {
return n.location.protocol + "//" + n.location.hostname + (n.location.port ? ":" + n.location.port : "");
};
try {
Object.defineProperty(n.location, "origin", {
get: i,
enumerable: !0
});
} catch {
setInterval(function() {
n.location.origin = i();
}, 100);
}
}
}(
typeof Lr < "u" ? Lr : typeof window < "u" ? window : typeof self < "u" ? self : Lr
)), Wm;
}
/**
* @license
* Copyright 2010-2021 Three.js Authors
* SPDX-License-Identifier: MIT
*/
const gf = "130", T3 = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 }, E3 = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 }, Ay = 0, nd = 1, Sy = 2, C3 = 3, L3 = 0, vf = 1, _y = 2, po = 3, Hr = 0, jt = 1, Wr = 2, yf = 1, R3 = 2, nr = 0, vo = 1, id = 2, rd = 3, sd = 4, Ty = 5, ps = 100, Ey = 101, Cy = 102, od = 103, ad = 104, Ly = 200, Ry = 201, Fy = 202, Py = 203, bf = 204, xf = 205, Iy = 206, Oy = 207, Dy = 208, Ny = 209, By = 210, Uy = 0, zy = 1, ky = 2, kc = 3, Vy = 4, Gy = 5, Hy = 6, Wy = 7, al = 0, jy = 1, $y = 2, Ir = 0, Zy = 1, Xy = 2, Yy = 3, Jy = 4, Ky = 5, hu = 300, ll = 301, cl = 302, Vc = 303, Gc = 304, ea = 306, ul = 307, jr = 1e3, hn = 1001, Eo = 1002, $t = 1003, Va = 1004, F3 = 1004, Ga = 1005, P3 = 1005, zt = 1006, du = 1007, I3 = 1007, pr = 1008, O3 = 1008, Ts = 1009, qy = 1010, Qy = 1011, Ha = 1012, eb = 1013, Ra = 1014, Qi = 1015, Ms = 1016, tb = 1017, nb = 1018, ib = 1019, yo = 1020, rb = 1021, ir = 1022, Hn = 1023, sb = 1024, ob = 1025, ab = Hn, ws = 1026, Co = 1027, lb = 1028, cb = 1029, ub = 1030, hb = 1031, db = 1032, fb = 1033, ld = 33776, cd = 33777, ud = 33778, hd = 33779, dd = 35840, fd = 35841, pd = 35842, md = 35843, pb = 36196, gd = 37492, vd = 37496, mb = 37808, gb = 37809, vb = 37810, yb = 37811, bb = 37812, xb = 37813, Mb = 37814, wb = 37815, Ab = 37816, Sb = 37817, _b = 37818, Tb = 37819, Eb = 37820, Cb = 37821, Lb = 36492, Rb = 37840, Fb = 37841, Pb = 37842, Ib = 37843, Ob = 37844, Db = 37845, Nb = 37846, Bb = 37847, Ub = 37848, zb = 37849, kb = 37850, Vb = 37851, Gb = 37852, Hb = 37853, Wb = 2200, jb = 2201, $b = 2202, Lo = 2300, Es = 2301, Cc = 2302, gs = 2400, vs = 2401, Wa = 2402, fu = 2500, Mf = 2501, Zb = 0, Xb = 1, wf = 2, Cn = 3e3, Cs = 3001, pu = 3007, mu = 3002, Yb = 3003, Af = 3004, Sf = 3005, _f = 3006, Jb = 3200, Kb = 3201, Jr = 0, qb = 1, D3 = 0, Lc = 7680, N3 = 7681, B3 = 7682, U3 = 7683, z3 = 34055, k3 = 34056, V3 = 5386, G3 = 512, H3 = 513, W3 = 514, j3 = 515, $3 = 516, Z3 = 517, X3 = 518, Qb = 519, Ro = 35044, Fo = 35048, Y3 = 35040, J3 = 35045, K3 = 35049, q3 = 35041, Q3 = 35046, eF = 35050, tF = 35042, nF = "100", yd = "300 es";
class Kr {
addEventListener(e, t) {
this._listeners === void 0 && (this._listeners = {});
const i = this._listeners;
i[e] === void 0 && (i[e] = []), i[e].indexOf(t) === -1 && i[e].push(t);
}
hasEventListener(e, t) {
if (this._listeners === void 0) return !1;
const i = this._listeners;
return i[e] !== void 0 && i[e].indexOf(t) !== -1;
}
removeEventListener(e, t) {
if (this._listeners === void 0) return;
const r = this._listeners[e];
if (r !== void 0) {
const s = r.indexOf(t);
s !== -1 && r.splice(s, 1);
}
}
dispatchEvent(e) {
if (this._listeners === void 0) return;
const i = this._listeners[e.type];
if (i !== void 0) {
e.target = this;
const r = i.slice(0);
for (let s = 0, o = r.length; s < o; s++)
r[s].call(this, e);
e.target = null;
}
}
}
const fn = [];
for (let n = 0; n < 256; n++)
fn[n] = (n < 16 ? "0" : "") + n.toString(16);
let Il = 1234567;
const As = Math.PI / 180, ja = 180 / Math.PI;
function Wn() {
const n = Math.random() * 4294967295 | 0, e = Math.random() * 4294967295 | 0, t = Math.random() * 4294967295 | 0, i = Math.random() * 4294967295 | 0;
return (fn[n & 255] + fn[n >> 8 & 255] + fn[n >> 16 & 255] + fn[n >> 24 & 255] + "-" + fn[e & 255] + fn[e >> 8 & 255] + "-" + fn[e >> 16 & 15 | 64] + fn[e >> 24 & 255] + "-" + fn[t & 63 | 128] + fn[t >> 8 & 255] + "-" + fn[t >> 16 & 255] + fn[t >> 24 & 255] + fn[i & 255] + fn[i >> 8 & 255] + fn[i >> 16 & 255] + fn[i >> 24 & 255]).toUpperCase();
}
function gn(n, e, t) {
return Math.max(e, Math.min(t, n));
}
function Tf(n, e) {
return (n % e + e) % e;
}
function iF(n, e, t, i, r) {
return i + (n - e) * (r - i) / (t - e);
}
function rF(n, e, t) {
return n !== e ? (t - n) / (e - n) : 0;
}
function Fa(n, e, t) {
return (1 - t) * n + t * e;
}
function sF(n, e, t, i) {
return Fa(n, e, 1 - Math.exp(-t * i));
}
function oF(n, e = 1) {
return e - Math.abs(Tf(n, e * 2) - e);
}
function aF(n, e, t) {
return n <= e ? 0 : n >= t ? 1 : (n = (n - e) / (t - e), n * n * (3 - 2 * n));
}
function lF(n, e, t) {
return n <= e ? 0 : n >= t ? 1 : (n = (n - e) / (t - e), n * n * n * (n * (n * 6 - 15) + 10));
}
function cF(n, e) {
return n + Math.floor(Math.random() * (e - n + 1));
}
function uF(n, e) {
return n + Math.random() * (e - n);
}
function hF(n) {
return n * (0.5 - Math.random());
}
function dF(n) {
return n !== void 0 && (Il = n % 2147483647), Il = Il * 16807 % 2147483647, (Il - 1) / 2147483646;
}
function fF(n) {
return n * As;
}
function pF(n) {
return n * ja;
}
function bd(n) {
return (n & n - 1) === 0 && n !== 0;
}
function ex(n) {
return Math.pow(2, Math.ceil(Math.log(n) / Math.LN2));
}
function tx(n) {
return Math.pow(2, Math.floor(Math.log(n) / Math.LN2));
}
function mF(n, e, t, i, r) {
const s = Math.cos, o = Math.sin, a = s(t / 2), c = o(t / 2), l = s((e + i) / 2), d = o((e + i) / 2), h = s((e - i) / 2), f = o((e - i) / 2), g = s((i - e) / 2), p = o((i - e) / 2);
switch (r) {
case "XYX":
n.set(a * d, c * h, c * f, a * l);
break;
case "YZY":
n.set(c * f, a * d, c * h, a * l);
break;
case "ZXZ":
n.set(c * h, c * f, a * d, a * l);
break;
case "XZX":
n.set(a * d, c * p, c * g, a * l);
break;
case "YXY":
n.set(c * g, a * d, c * p, a * l);
break;
case "ZYZ":
n.set(c * p, c * g, a * d, a * l);
break;
default:
console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: " + r);
}
}
var xd = /* @__PURE__ */ Object.freeze({
__proto__: null,
DEG2RAD: As,
RAD2DEG: ja,
generateUUID: Wn,
clamp: gn,
euclideanModulo: Tf,
mapLinear: iF,
inverseLerp: rF,
lerp: Fa,
damp: sF,
pingpong: oF,
smoothstep: aF,
smootherstep: lF,
randInt: cF,
randFloat: uF,
randFloatSpread: hF,
seededRandom: dF,
degToRad: fF,
radToDeg: pF,
isPowerOfTwo: bd,
ceilPowerOfTwo: ex,
floorPowerOfTwo: tx,
setQuaternionFromProperEuler: mF
});
class Re {
constructor(e = 0, t = 0) {
this.x = e, this.y = t;
}
get width() {
return this.x;
}
set width(e) {
this.x = e;
}
get height() {
return this.y;
}
set height(e) {
this.y = e;
}
set(e, t) {
return this.x = e, this.y = t, this;
}
setScalar(e) {
return this.x = e, this.y = e, this;
}
setX(e) {
return this.x = e, this;
}
setY(e) {
return this.y = e, this;
}
setComponent(e, t) {
switch (e) {
case 0:
this.x = t;
break;
case 1:
this.y = t;
break;
default:
throw new Error("index is out of range: " + e);
}
return this;
}
getComponent(e) {
switch (e) {
case 0:
return this.x;
case 1:
return this.y;
default:
throw new Error("index is out of range: " + e);
}
}
clone() {
return new this.constructor(this.x, this.y);
}
copy(e) {
return this.x = e.x, this.y = e.y, this;
}
add(e, t) {
return t !== void 0 ? (console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."), this.addVectors(e, t)) : (this.x += e.x, this.y += e.y, this);
}
addScalar(e) {
return this.x += e, this.y += e, this;
}
addVectors(e, t) {
return this.x = e.x + t.x, this.y = e.y + t.y, this;
}
addScaledVector(e, t) {
return this.x += e.x * t, this.y += e.y * t, this;
}
sub(e, t) {
return t !== void 0 ? (console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."), this.subVectors(e, t)) : (this.x -= e.x, this.y -= e.y, this);
}
subScalar(e) {
return this.x -= e, this.y -= e, this;
}
subVectors(e, t) {
return this.x = e.x - t.x, this.y = e.y - t.y, this;
}
multiply(e) {
return this.x *= e.x, this.y *= e.y, this;
}
multiplyScalar(e) {
return this.x *= e, this.y *= e, this;
}
divide(e) {
return this.x /= e.x, this.y /= e.y, this;
}
divideScalar(e) {
return this.multiplyScalar(1 / e);
}
applyMatrix3(e) {
const t = this.x, i = this.y, r = e.elements;
return this.x = r[0] * t + r[3] * i + r[6], this.y = r[1] * t + r[4] * i + r[7], this;
}
min(e) {
return this.x = Math.min(this.x, e.x), this.y = Math.min(this.y, e.y), this;
}
max(e) {
return this.x = Math.max(this.x, e.x), this.y = Math.max(this.y, e.y), this;
}
clamp(e, t) {
return this.x = Math.max(e.x, Math.min(t.x, this.x)), this.y = Math.max(e.y, Math.min(t.y, this.y)), this;
}
clampScalar(e, t) {
return this.x = Math.max(e, Math.min(t, this.x)), this.y = Math.max(e, Math.min(t, this.y)), this;
}
clampLength(e, t) {
const i = this.length();
return this.divideScalar(i || 1).multiplyScalar(Math.max(e, Math.min(t, i)));
}
floor() {
return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this;
}
ceil() {
return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this;
}
round() {
return this.x = Math.round(this.x), this.y = Math.round(this.y), this;
}
roundToZero() {
return this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x), this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y), this;
}
negate() {
return this.x = -this.x, this.y = -this.y, this;
}
dot(e) {
return this.x * e.x + this.y * e.y;
}
cross(e) {
return this.x * e.y - this.y * e.x;
}
lengthSq() {
return this.x * this.x + this.y * this.y;
}
length() {
return Math.sqrt(this.x * this.x + this.y * this.y);
}
manhattanLength() {
return Math.abs(this.x) + Math.abs(this.y);
}
normalize() {
return this.divideScalar(this.length() || 1);
}
angle() {
return Math.atan2(-this.y, -this.x) + Math.PI;
}
distanceTo(e) {
return Math.sqrt(this.distanceToSquared(e));
}
distanceToSquared(e) {
const t = this.x - e.x, i = this.y - e.y;
return t * t + i * i;
}
manhattanDistanceTo(e) {
return Math.abs(this.x - e.x) + Math.abs(this.y - e.y);
}
setLength(e) {
return this.normalize().multiplyScalar(e);
}
lerp(e, t) {
return this.x += (e.x - this.x) * t, this.y += (e.y - this.y) * t, this;
}
lerpVectors(e, t, i) {
return this.x = e.x + (t.x - e.x) * i, this.y = e.y + (t.y - e.y) * i, this;
}
equals(e) {
return e.x === this.x && e.y === this.y;
}
fromArray(e, t = 0) {
return this.x = e[t], this.y = e[t + 1], this;
}
toArray(e = [], t = 0) {
return e[t] = this.x, e[t + 1] = this.y, e;
}
fromBufferAttribute(e, t, i) {
return i !== void 0 && console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."), this.x = e.getX(t), this.y = e.getY(t), this;
}
rotateAround(e, t) {
const i = Math.cos(t), r = Math.sin(t), s = this.x - e.x, o = this.y - e.y;
return this.x = s * i - o * r + e.x, this.y = s * r + o * i + e.y, this;
}
random() {
return this.x = Math.random(), this.y = Math.random(), this;
}
}
Re.prototype.isVector2 = !0;
class rn {
constructor() {
this.elements = [
1,
0,
0,
0,
1,
0,
0,
0,
1
], arguments.length > 0 && console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.");
}
set(e, t, i, r, s, o, a, c, l) {
const d = this.elements;
return d[0] = e, d[1] = r, d[2] = a, d[3] = t, d[4] = s, d[5] = c, d[6] = i, d[7] = o, d[8] = l, this;
}
identity() {
return this.set(
1,
0,
0,
0,
1,
0,
0,
0,
1
), this;
}
copy(e) {
const t = this.elements, i = e.elements;
return t[0] = i[0], t[1] = i[1], t[2] = i[2], t[3] = i[3], t[4] = i[4], t[5] = i[5], t[6] = i[6], t[7] = i[7], t[8] = i[8], this;
}
extractBasis(e, t, i) {
return e.setFromMatrix3Column(this, 0), t.setFromMatrix3Column(this, 1), i.setFromMatrix3Column(this, 2), this;
}
setFromMatrix4(e) {
const t = e.elements;
return this.set(
t[0],
t[4],
t[8],
t[1],
t[5],
t[9],
t[2],
t[6],
t[10]
), this;
}
multiply(e) {
return this.multiplyMatrices(this, e);
}
premultiply(e) {
return this.multiplyMatrices(e, this);
}
multiplyMatrices(e, t) {
const i = e.elements, r = t.elements, s = this.elements, o = i[0], a = i[3], c = i[6], l = i[1], d = i[4], h = i[7], f = i[2], g = i[5], p = i[8], u = r[0], y = r[3], v = r[6], m = r[1], x = r[4], w = r[7], A = r[2], M = r[5], R = r[8];
return s[0] = o * u + a * m + c * A, s[3] = o * y + a * x + c * M, s[6] = o * v + a * w + c * R, s[1] = l * u + d * m + h * A, s[4] = l * y + d * x + h * M, s[7] = l * v + d * w + h * R, s[2] = f * u + g * m + p * A, s[5] = f * y + g * x + p * M, s[8] = f * v + g * w + p * R, this;
}
multiplyScalar(e) {
const t = this.elements;
return t[0] *= e, t[3] *= e, t[6] *= e, t[1] *= e, t[4] *= e, t[7] *= e, t[2] *= e, t[5] *= e, t[8] *= e, this;
}
determinant() {
const e = this.elements, t = e[0], i = e[1], r = e[2], s = e[3], o = e[4], a = e[5], c = e[6], l = e[7], d = e[8];
return t * o * d - t * a * l - i * s * d + i * a * c + r * s * l - r * o * c;
}
invert() {
const e = this.elements, t = e[0], i = e[1], r = e[2], s = e[3], o = e[4], a = e[5], c = e[6], l = e[7], d = e[8], h = d * o - a * l, f = a * c - d * s, g = l * s - o * c, p = t * h + i * f + r * g;
if (p === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0);
const u = 1 / p;
return e[0] = h * u, e[1] = (r * l - d * i) * u, e[2] = (a * i - r * o) * u, e[3] = f * u, e[4] = (d * t - r * c) * u, e[5] = (r * s - a * t) * u, e[6] = g * u, e[7] = (i * c - l * t) * u, e[8] = (o * t - i * s) * u, this;
}
transpose() {
let e;
const t = this.elements;
return e = t[1], t[1] = t[3], t[3] = e, e = t[2], t[2] = t[6], t[6] = e, e = t[5], t[5] = t[7], t[7] = e, this;
}
getNormalMatrix(e) {
return this.setFromMatrix4(e).invert().transpose();
}
transposeIntoArray(e) {
const t = this.elements;
return e[0] = t[0], e[1] = t[3], e[2] = t[6], e[3] = t[1], e[4] = t[4], e[5] = t[7], e[6] = t[2], e[7] = t[5], e[8] = t[8], this;
}
setUvTransform(e, t, i, r, s, o, a) {
const c = Math.cos(s), l = Math.sin(s);
return this.set(
i * c,
i * l,
-i * (c * o + l * a) + o + e,
-r * l,
r * c,
-r * (-l * o + c * a) + a + t,
0,
0,
1
), this;
}
scale(e, t) {
const i = this.elements;
return i[0] *= e, i[3] *= e, i[6] *= e, i[1] *= t, i[4] *= t, i[7] *= t, this;
}
rotate(e) {
const t = Math.cos(e), i = Math.sin(e), r = this.elements, s = r[0], o = r[3], a = r[6], c = r[1], l = r[4], d = r[7];
return r[0] = t * s + i * c, r[3] = t * o + i * l, r[6] = t * a + i * d, r[1] = -i * s + t * c, r[4] = -i * o + t * l, r[7] = -i * a + t * d, this;
}
translate(e, t) {
const i = this.elements;
return i[0] += e * i[2], i[3] += e * i[5], i[6] += e * i[8], i[1] += t * i[2], i[4] += t * i[5], i[7] += t * i[8], this;
}
equals(e) {
const t = this.elements, i = e.elements;
for (let r = 0; r < 9; r++)
if (t[r] !== i[r]) return !1;
return !0;
}
fromArray(e, t = 0) {
for (let i = 0; i < 9; i++)
this.elements[i] = e[i + t];
return this;
}
toArray(e = [], t = 0) {
const i = this.elements;
return e[t] = i[0], e[t + 1] = i[1], e[t + 2] = i[2], e[t + 3] = i[3], e[t + 4] = i[4], e[t + 5] = i[5], e[t + 6] = i[6], e[t + 7] = i[7], e[t + 8] = i[8], e;
}
clone() {
return new this.constructor().fromArray(this.elements);
}
}
rn.prototype.isMatrix3 = !0;
let js;
class Bs {
static getDataURL(e) {
if (/^data:/i.test(e.src) || typeof HTMLCanvasElement > "u")
return e.src;
let t;
if (e instanceof HTMLCanvasElement)
t = e;
else {
js === void 0 && (js = document.createElementNS("http://www.w3.org/1999/xhtml", "canvas")), js.width = e.width, js.height = e.height;
const i = js.getContext("2d");
e instanceof ImageData ? i.putImageData(e, 0, 0) : i.drawImage(e, 0, 0, e.width, e.height), t = js;
}
return t.width > 2048 || t.height > 2048 ? (console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons", e), t.toDataURL("image/jpeg", 0.6)) : t.toDataURL("image/png");
}
}
let gF = 0;
class Yt extends Kr {
constructor(e = Yt.DEFAULT_IMAGE, t = Yt.DEFAULT_MAPPING, i = hn, r = hn, s = zt, o = pr, a = Hn, c = Ts, l = 1, d = Cn) {
super(), Object.defineProperty(this, "id", { value: gF++ }), this.uuid = Wn(), this.name = "", this.image = e, this.mipmaps = [], this.mapping = t, this.wrapS = i, this.wrapT = r, this.magFilter = s, this.minFilter = o, this.anisotropy = l, this.format = a, this.internalFormat = null, this.type = c, this.offset = new Re(0, 0), this.repeat = new Re(1, 1), this.center = new Re(0, 0), this.rotation = 0, this.matrixAutoUpdate = !0, this.matrix = new rn(), this.generateMipmaps = !0, this.premultiplyAlpha = !1, this.flipY = !0, this.unpackAlignment = 4, this.encoding = d, this.version = 0, this.onUpdate = null;
}
updateMatrix() {
this.matrix.setUvTransform(this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y);
}
clone() {
return new this.constructor().copy(this);
}
copy(e) {
return this.name = e.name, this.image = e.image, this.mipmaps = e.mipmaps.slice(0), this.mapping = e.mapping, this.wrapS = e.wrapS, this.wrapT = e.wrapT, this.magFilter = e.magFilter, this.minFilter = e.minFilter, this.anisotropy = e.anisotropy, this.format = e.format, this.internalFormat = e.internalFormat, this.type = e.type, this.offset.copy(e.offset), this.repeat.copy(e.repeat), this.center.copy(e.center), this.rotation = e.rotation, this.matrixAutoUpdate = e.matrixAutoUpdate, this.matrix.copy(e.matrix), this.generateMipmaps = e.generateMipmaps, this.premultiplyAlpha = e.premultiplyAlpha, this.flipY = e.flipY, this.unpackAlignment = e.unpackAlignment, this.encoding = e.encoding, this;
}
toJSON(e) {
const t = e === void 0 || typeof e == "string";
if (!t && e.textures[this.uuid] !== void 0)
return e.textures[this.uuid];
const i = {
metadata: {
version: 4.5,
type: "Texture",
generator: "Texture.toJSON"
},
uuid: this.uuid,
name: this.name,
mapping: this.mapping,
repeat: [this.repeat.x, this.repeat.y],
offset: [this.offset.x, this.offset.y],
center: [this.center.x, this.center.y],
rotation: this.rotation,
wrap: [this.wrapS, this.wrapT],
format: this.format,
type: this.type,
encoding: this.encoding,
minFilter: this.minFilter,
magFilter: this.magFilter,
anisotropy: this.anisotropy,
flipY: this.flipY,
premultiplyAlpha: this.premultiplyAlpha,
unpackAlignment: this.unpackAlignment
};
if (this.image !== void 0) {
const r = this.image;
if (r.uuid === void 0 && (r.uuid = Wn()), !t && e.images[r.uuid] === void 0) {
let s;
if (Array.isArray(r)) {
s = [];
for (let o = 0, a = r.length; o < a; o++)
r[o].isDataTexture ? s.push($u(r[o].image)) : s.push($u(r[o]));
} else
s = $u(r);
e.images[r.uuid] = {
uuid: r.uuid,
url: s
};
}
i.image = r.uuid;
}
return t || (e.textures[this.uuid] = i), i;
}
dispose() {
this.dispatchEvent({ type: "dispose" });
}
transformUv(e) {
if (this.mapping !== hu) return e;
if (e.applyMatrix3(this.matrix), e.x < 0 || e.x > 1)
switch (this.wrapS) {
case jr:
e.x = e.x - Math.floor(e.x);
break;
case hn:
e.x = e.x < 0 ? 0 : 1;
break;
case Eo:
Math.abs(Math.floor(e.x) % 2) === 1 ? e.x = Math.ceil(e.x) - e.x : e.x = e.x - Math.floor(e.x);
break;
}
if (e.y < 0 || e.y > 1)
switch (this.wrapT) {
case jr:
e.y = e.y - Math.floor(e.y);
break;
case hn:
e.y = e.y < 0 ? 0 : 1;
break;
case Eo:
Math.abs(Math.floor(e.y) % 2) === 1 ? e.y = Math.ceil(e.y) - e.y : e.y = e.y - Math.floor(e.y);
break;
}
return this.flipY && (e.y = 1 - e.y), e;
}
set needsUpdate(e) {
e === !0 && this.version++;
}
}
Yt.DEFAULT_IMAGE = void 0;
Yt.DEFAULT_MAPPING = hu;
Yt.prototype.isTexture = !0;
function $u(n) {
return typeof HTMLImageElement < "u" && n instanceof HTMLImageElement || typeof HTMLCanvasElement < "u" && n instanceof HTMLCanvasElement || typeof ImageBitmap < "u" && n instanceof ImageBitmap ? Bs.getDataURL(n) : n.data ? {
data: Array.prototype.slice.call(n.data),
width: n.width,
height: n.height,
type: n.data.constructor.name
} : (console.warn("THREE.Texture: Unable to serialize Texture."), {});
}
class xt {
constructor(e = 0, t = 0, i = 0, r = 1) {
this.x = e, this.y = t, this.z = i, this.w = r;
}
get width() {
return this.z;
}
set width(e) {
this.z = e;
}
get height() {
return this.w;
}
set height(e) {
this.w = e;
}
set(e, t, i, r) {
return this.x = e, this.y = t, this.z = i, this.w = r, this;
}
setScalar(e) {
return this.x = e, this.y = e, this.z = e, this.w = e, this;
}
setX(e) {
return this.x = e, this;
}
setY(e) {
return this.y = e, this;
}
setZ(e) {
return this.z = e, this;
}
setW(e) {
return this.w = e, this;
}
setComponent(e, t) {
switch (e) {
case 0:
this.x = t;
break;
case 1:
this.y = t;
break;
case 2:
this.z = t;
break;
case 3:
this.w = t;
break;
default:
throw new Error("index is out of range: " + e);
}
return this;
}
getComponent(e) {
switch (e) {
case 0:
return this.x;
case 1:
return this.y;
case 2:
return this.z;
case 3:
return this.w;
default:
throw new Error("index is out of range: " + e);
}
}
clone() {
return new this.constructor(this.x, this.y, this.z, this.w);
}
copy(e) {
return this.x = e.x, this.y = e.y, this.z = e.z, this.w = e.w !== void 0 ? e.w : 1, this;
}
add(e, t) {
return t !== void 0 ? (console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."), this.addVectors(e, t)) : (this.x += e.x, this.y += e.y, this.z += e.z, this.w += e.w, this);
}
addScalar(e) {
return this.x += e, this.y += e, this.z += e, this.w += e, this;
}
addVectors(e, t) {
return this.x = e.x + t.x, this.y = e.y + t.y, this.z = e.z + t.z, this.w = e.w + t.w, this;
}
addScaledVector(e, t) {
return this.x += e.x * t, this.y += e.y * t, this.z += e.z * t, this.w += e.w * t, this;
}
sub(e, t) {
return t !== void 0 ? (console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."), this.subVectors(e, t)) : (this.x -= e.x, this.y -= e.y, this.z -= e.z, this.w -= e.w, this);
}
subScalar(e) {
return this.x -= e, this.y -= e, this.z -= e, this.w -= e, this;
}
subVectors(e, t) {
return this.x = e.x - t.x, this.y = e.y - t.y, this.z = e.z - t.z, this.w = e.w - t.w, this;
}
multiply(e) {
return this.x *= e.x, this.y *= e.y, this.z *= e.z, this.w *= e.w, this;
}
multiplyScalar(e) {
return this.x *= e, this.y *= e, this.z *= e, this.w *= e, this;
}
applyMatrix4(e) {
const t = this.x, i = this.y, r = this.z, s = this.w, o = e.elements;
return this.x = o[0] * t + o[4] * i + o[8] * r + o[12] * s, this.y = o[1] * t + o[5] * i + o[9] * r + o[13] * s, this.z = o[2] * t + o[6] * i + o[10] * r + o[14] * s, this.w = o[3] * t + o[7] * i + o[11] * r + o[15] * s, this;
}
divideScalar(e) {
return this.multiplyScalar(1 / e);
}
setAxisAngleFromQuaternion(e) {
this.w = 2 * Math.acos(e.w);
const t = Math.sqrt(1 - e.w * e.w);
return t < 1e-4 ? (this.x = 1, this.y = 0, this.z = 0) : (this.x = e.x / t, this.y = e.y / t, this.z = e.z / t), this;
}
setAxisAngleFromRotationMatrix(e) {
let t, i, r, s;
const c = e.elements, l = c[0], d = c[4], h = c[8], f = c[1], g = c[5], p = c[9], u = c[2], y = c[6], v = c[10];
if (Math.abs(d - f) < 0.01 && Math.abs(h - u) < 0.01 && Math.abs(p - y) < 0.01) {
if (Math.abs(d + f) < 0.1 && Math.abs(h + u) < 0.1 && Math.abs(p + y) < 0.1 && Math.abs(l + g + v - 3) < 0.1)
return this.set(1, 0, 0, 0), this;
t = Math.PI;
const x = (l + 1) / 2, w = (g + 1) / 2, A = (v + 1) / 2, M = (d + f) / 4, R = (h + u) / 4, L = (p + y) / 4;
return x > w && x > A ? x < 0.01 ? (i = 0, r = 0.707106781, s = 0.707106781) : (i = Math.sqrt(x), r = M / i, s = R / i) : w > A ? w < 0.01 ? (i = 0.707106781, r = 0, s = 0.707106781) : (r = Math.sqrt(w), i = M / r, s = L / r) : A < 0.01 ? (i = 0.707106781, r = 0.707106781, s = 0) : (s = Math.sqrt(A), i = R / s, r = L / s), this.set(i, r, s, t), this;
}
let m = Math.sqrt((y - p) * (y - p) + (h - u) * (h - u) + (f - d) * (f - d));
return Math.abs(m) < 1e-3 && (m = 1), this.x = (y - p) / m, this.y = (h - u) / m, this.z = (f - d) / m, this.w = Math.acos((l + g + v - 1) / 2), this;
}
min(e) {
return this.x = Math.min(this.x, e.x), this.y = Math.min(this.y, e.y), this.z = Math.min(this.z, e.z), this.w = Math.min(this.w, e.w), this;
}
max(e) {
return this.x = Math.max(this.x, e.x), this.y = Math.max(this.y, e.y), this.z = Math.max(this.z, e.z), this.w = Math.max(this.w, e.w), this;
}
clamp(e, t) {
return this.x = Math.max(e.x, Math.min(t.x, this.x)), this.y = Math.max(e.y, Math.min(t.y, this.y)), this.z = Math.max(e.z, Math.min(t.z, this.z)), this.w = Math.max(e.w, Math.min(t.w, this.w)), this;
}
clampScalar(e, t) {
return this.x = Math.max(e, Math.min(t, this.x)), this.y = Math.max(e, Math.min(t, this.y)), this.z = Math.max(e, Math.min(t, this.z)), this.w = Math.max(e, Math.min(t, this.w)), this;
}
clampLength(e, t) {
const i = this.length();
return this.divideScalar(i || 1).multiplyScalar(Math.max(e, Math.min(t, i)));
}
floor() {
return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this.z = Math.floor(this.z), this.w = Math.floor(this.w), this;
}
ceil() {
return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this.z = Math.ceil(this.z), this.w = Math.ceil(this.w), this;
}
round() {
return this.x = Math.round(this.x), this.y = Math.round(this.y), this.z = Math.round(this.z), this.w = Math.round(this.w), this;
}
roundToZero() {
return this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x), this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y), this.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z), this.w = this.w < 0 ? Math.ceil(this.w) : Math.floor(this.w), this;
}
negate() {
return this.x = -this.x, this.y = -this.y, this.z = -this.z, this.w = -this.w, this;
}
dot(e) {
return this.x * e.x + this.y * e.y + this.z * e.z + this.w * e.w;
}
lengthSq() {
return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;
}
length() {
return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);
}
manhattanLength() {
return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w);
}
normalize() {
return this.divideScalar(this.length() || 1);
}
setLength(e) {
return this.normalize().multiplyScalar(e);
}
lerp(e, t) {
return this.x += (e.x - this.x) * t, this.y += (e.y - this.y) * t, this.z += (e.z - this.z) * t, this.w += (e.w - this.w) * t, this;
}
lerpVectors(e, t, i) {
return this.x = e.x + (t.x - e.x) * i, this.y = e.y + (t.y - e.y) * i, this.z = e.z + (t.z - e.z) * i, this.w = e.w + (t.w - e.w) * i, this;
}
equals(e) {
return e.x === this.x && e.y === this.y && e.z === this.z && e.w === this.w;
}
fromArray(e, t = 0) {
return this.x = e[t], this.y = e[t + 1], this.z = e[t + 2], this.w = e[t + 3], this;
}
toArray(e = [], t = 0) {
return e[t] = this.x, e[t + 1] = this.y, e[t + 2] = this.z, e[t + 3] = this.w, e;
}
fromBufferAttribute(e, t, i) {
return i !== void 0 && console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute()."), this.x = e.getX(t), this.y = e.getY(t), this.z = e.getZ(t), this.w = e.getW(t), this;
}
random() {
return this.x = Math.random(), this.y = Math.random(), this.z = Math.random(), this.w = Math.random(), this;
}
}
xt.prototype.isVector4 = !0;
class fi extends Kr {
constructor(e, t, i = {}) {
super(), this.width = e, this.height = t, this.depth = 1, this.scissor = new xt(0, 0, e, t), this.scissorTest = !1, this.viewport = new xt(0, 0, e, t), this.texture = new Yt(void 0, i.mapping, i.wrapS, i.wrapT, i.magFilter, i.minFilter, i.format, i.type, i.anisotropy, i.encoding), this.texture.image = { width: e, height: t, depth: 1 }, this.texture.generateMipmaps = i.generateMipmaps !== void 0 ? i.generateMipmaps : !1, this.texture.minFilter = i.minFilter !== void 0 ? i.minFilter : zt, this.depthBuffer = i.depthBuffer !== void 0 ? i.depthBuffer : !0, this.stencilBuffer = i.stencilBuffer !== void 0 ? i.stencilBuffer : !1, this.depthTexture = i.depthTexture !== void 0 ? i.depthTexture : null;
}
setTexture(e) {
e.image = {
width: this.width,
height: this.height,
depth: this.depth
}, this.texture = e;
}
setSize(e, t, i = 1) {
(this.width !== e || this.height !== t || this.depth !== i) && (this.width = e, this.height = t, this.depth = i, this.texture.image.width = e, this.texture.image.height = t, this.texture.image.depth = i, this.dispose()), this.viewport.set(0, 0, e, t), this.scissor.set(0, 0, e, t);
}
clone() {
return new this.constructor().copy(this);
}
copy(e) {
return this.width = e.width, this.height = e.height, this.depth = e.depth, this.viewport.copy(e.viewport), this.texture = e.texture.clone(), this.texture.image = { ...this.texture.image }, this.depthBuffer = e.depthBuffer, this.stencilBuffer = e.stencilBuffer, this.depthTexture = e.depthTexture, this;
}
dispose() {
this.dispatchEvent({ type: "dispose" });
}
}
fi.prototype.isWebGLRenderTarget = !0;
class nx extends fi {
constructor(e, t, i) {
super(e, t);
const r = this.texture;
this.texture = [];
for (let s = 0; s < i; s++)
this.texture[s] = r.clone();
}
setSize(e, t, i = 1) {
if (this.width !== e || this.height !== t || this.depth !== i) {
this.width = e, this.height = t, this.depth = i;
for (let r = 0, s = this.texture.length; r < s; r++)
this.texture[r].image.width = e, this.texture[r].image.height = t, this.texture[r].image.depth = i;
this.dispose();
}
return this.viewport.set(0, 0, e, t), this.scissor.set(0, 0, e, t), this;
}
copy(e) {
this.dispose(), this.width = e.width, this.height = e.height, this.depth = e.depth, this.viewport.set(0, 0, this.width, this.height), this.scissor.set(0, 0, this.width, this.height), this.depthBuffer = e.depthBuffer, this.stencilBuffer = e.stencilBuffer, this.depthTexture = e.depthTexture, this.texture.length = 0;
for (let t = 0, i = e.texture.length; t < i; t++)
this.texture[t] = e.texture[t].clone();
return this;
}
}
nx.prototype.isWebGLMultipleRenderTargets = !0;
class Ef extends fi {
constructor(e, t, i) {
super(e, t, i), this.samples = 4;
}
copy(e) {
return super.copy.call(this, e), this.samples = e.samples, this;
}
}
Ef.prototype.isWebGLMultisampleRenderTarget = !0;
class bn {
constructor(e = 0, t = 0, i = 0, r = 1) {
this._x = e, this._y = t, this._z = i, this._w = r;
}
static slerp(e, t, i, r) {
return console.warn("THREE.Quaternion: Static .slerp() has been deprecated. Use qm.slerpQuaternions( qa, qb, t ) instead."), i.slerpQuaternions(e, t, r);
}
static slerpFlat(e, t, i, r, s, o, a) {
let c = i[r + 0], l = i[r + 1], d = i[r + 2], h = i[r + 3];
const f = s[o + 0], g = s[o + 1], p = s[o + 2], u = s[o + 3];
if (a === 0) {
e[t + 0] = c, e[t + 1] = l, e[t + 2] = d, e[t + 3] = h;
return;
}
if (a === 1) {
e[t + 0] = f, e[t + 1] = g, e[t + 2] = p, e[t + 3] = u;
return;
}
if (h !== u || c !== f || l !== g || d !== p) {
let y = 1 - a;
const v = c * f + l * g + d * p + h * u, m = v >= 0 ? 1 : -1, x = 1 - v * v;
if (x > Number.EPSILON) {
const A = Math.sqrt(x), M = Math.atan2(A, v * m);
y = Math.sin(y * M) / A, a = Math.sin(a * M) / A;
}
const w = a * m;
if (c = c * y + f * w, l = l * y + g * w, d = d * y + p * w, h = h * y + u * w, y === 1 - a) {
const A = 1 / Math.sqrt(c * c + l * l + d * d + h * h);
c *= A, l *= A, d *= A, h *= A;
}
}
e[t] = c, e[t + 1] = l, e[t + 2] = d, e[t + 3] = h;
}
static multiplyQuaternionsFlat(e, t, i, r, s, o) {
const a = i[r], c = i[r + 1], l = i[r + 2], d = i[r + 3], h = s[o], f = s[o + 1], g = s[o + 2], p = s[o + 3];
return e[t] = a * p + d * h + c * g - l * f, e[t + 1] = c * p + d * f + l * h - a * g, e[t + 2] = l * p + d * g + a * f - c * h, e[t + 3] = d * p - a * h - c * f - l * g, e;
}
get x() {
return this._x;
}
set x(e) {
this._x = e, this._onChangeCallback();
}
get y() {
return this._y;
}
set y(e) {
this._y = e, this._onChangeCallback();
}
get z() {
return this._z;
}
set z(e) {
this._z = e, this._onChangeCallback();
}
get w() {
return this._w;
}
set w(e) {
this._w = e, this._onChangeCallback();
}
set(e, t, i, r) {
return this._x = e, this._y = t, this._z = i, this._w = r, this._onChangeCallback(), this;
}
clone() {
return new this.constructor(this._x, this._y, this._z, this._w);
}
copy(e) {
return this._x = e.x, this._y = e.y, this._z = e.z, this._w = e.w, this._onChangeCallback(), this;
}
setFromEuler(e, t) {
if (!(e && e.isEuler))
throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");
const i = e._x, r = e._y, s = e._z, o = e._order, a = Math.cos, c = Math.sin, l = a(i / 2), d = a(r / 2), h = a(s / 2), f = c(i / 2), g = c(r / 2), p = c(s / 2);
switch (o) {
case "XYZ":
this._x = f * d * h + l * g * p, this._y = l * g * h - f * d * p, this._z = l * d * p + f * g * h, this._w = l * d * h - f * g * p;
break;
case "YXZ":
this._x = f * d * h + l * g * p, this._y = l * g * h - f * d * p, this._z = l * d * p - f * g * h, this._w = l * d * h + f * g * p;
break;
case "ZXY":
this._x = f * d * h - l * g * p, this._y = l * g * h + f * d * p, this._z = l * d * p + f * g * h, this._w = l * d * h - f * g * p;
break;
case "ZYX":
this._x = f * d * h - l * g * p, this._y = l * g * h + f * d * p, this._z = l * d * p - f * g * h, this._w = l * d * h + f * g * p;
break;
case "YZX":
this._x = f * d * h + l * g * p, this._y = l * g * h + f * d * p, this._z = l * d * p - f * g * h, this._w = l * d * h - f * g * p;
break;
case "XZY":
this._x = f * d * h - l * g * p, this._y = l * g * h - f * d * p, this._z = l * d * p + f * g * h, this._w = l * d * h + f * g * p;
break;
default:
console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: " + o);
}
return t !== !1 && this._onChangeCallback(), this;
}
setFromAxisAngle(e, t) {
const i = t / 2, r = Math.sin(i);
return this._x = e.x * r, this._y = e.y * r, this._z = e.z * r, this._w = Math.cos(i), this._onChangeCallback(), this;
}
setFromRotationMatrix(e) {
const t = e.elements, i = t[0], r = t[4], s = t[8], o = t[1], a = t[5], c = t[9], l = t[2], d = t[6], h = t[10], f = i + a + h;
if (f > 0) {
const g = 0.5 / Math.sqrt(f + 1);
this._w = 0.25 / g, this._x = (d - c) * g, this._y = (s - l) * g, this._z = (o - r) * g;
} else if (i > a && i > h) {
const g = 2 * Math.sqrt(1 + i - a - h);
this._w = (d - c) / g, this._x = 0.25 * g, this._y = (r + o) / g, this._z = (s + l) / g;
} else if (a > h) {
const g = 2 * Math.sqrt(1 + a - i - h);
this._w = (s - l) / g, this._x = (r + o) / g, this._y = 0.25 * g, this._z = (c + d) / g;
} else {
const g = 2 * Math.sqrt(1 + h - i - a);
this._w = (o - r) / g, this._x = (s + l) / g, this._y = (c + d) / g, this._z = 0.25 * g;
}
return this._onChangeCallback(), this;
}
setFromUnitVectors(e, t) {
let i = e.dot(t) + 1;
return i < Number.EPSILON ? (i = 0, Math.abs(e.x) > Math.abs(e.z) ? (this._x = -e.y, this._y = e.x, this._z = 0, this._w = i) : (this._x = 0, this._y = -e.z, this._z = e.y, this._w = i)) : (this._x = e.y * t.z - e.z * t.y, this._y = e.z * t.x - e.x * t.z, this._z = e.x * t.y - e.y * t.x, this._w = i), this.normalize();
}
angleTo(e) {
return 2 * Math.acos(Math.abs(gn(this.dot(e), -1, 1)));
}
rotateTowards(e, t) {
const i = this.angleTo(e);
if (i === 0) return this;
const r = Math.min(1, t / i);
return this.slerp(e, r), this;
}
identity() {
return this.set(0, 0, 0, 1);
}
invert() {
return this.conjugate();
}
conjugate() {
return this._x *= -1, this._y *= -1, this._z *= -1, this._onChangeCallback(), this;
}
dot(e) {
return this._x * e._x + this._y * e._y + this._z * e._z + this._w * e._w;
}
lengthSq() {
return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;
}
length() {
return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w);
}
normalize() {
let e = this.length();
return e === 0 ? (this._x = 0, this._y = 0, this._z = 0, this._w = 1) : (e = 1 / e, this._x = this._x * e, this._y = this._y * e, this._z = this._z * e, this._w = this._w * e), this._onChangeCallback(), this;
}
multiply(e, t) {
return t !== void 0 ? (console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."), this.multiplyQuaternions(e, t)) : this.multiplyQuaternions(this, e);
}
premultiply(e) {
return this.multiplyQuaternions(e, this);
}
multiplyQuaternions(e, t) {
const i = e._x, r = e._y, s = e._z, o = e._w, a = t._x, c = t._y, l = t._z, d = t._w;
return this._x = i * d + o * a + r * l - s * c, this._y = r * d + o * c + s * a - i * l, this._z = s * d + o * l + i * c - r * a, this._w = o * d - i * a - r * c - s * l, this._onChangeCallback(), this;
}
slerp(e, t) {
if (t === 0) return this;
if (t === 1) return this.copy(e);
const i = this._x, r = this._y, s = this._z, o = this._w;
let a = o * e._w + i * e._x + r * e._y + s * e._z;
if (a < 0 ? (this._w = -e._w, this._x = -e._x, this._y = -e._y, this._z = -e._z, a = -a) : this.copy(e), a >= 1)
return this._w = o, this._x = i, this._y = r, this._z = s, this;
const c = 1 - a * a;
if (c <= Number.EPSILON) {
const g = 1 - t;
return this._w = g * o + t * this._w, this._x = g * i + t * this._x, this._y = g * r + t * this._y, this._z = g * s + t * this._z, this.normalize(), this._onChangeCallback(), this;
}
const l = Math.sqrt(c), d = Math.atan2(l, a), h = Math.sin((1 - t) * d) / l, f = Math.sin(t * d) / l;
return this._w = o * h + this._w * f, this._x = i * h + this._x * f, this._y = r * h + this._y * f, this._z = s * h + this._z * f, this._onChangeCallback(), this;
}
slerpQuaternions(e, t, i) {
this.copy(e).slerp(t, i);
}
equals(e) {
return e._x === this._x && e._y === this._y && e._z === this._z && e._w === this._w;
}
fromArray(e, t = 0) {
return this._x = e[t], this._y = e[t + 1], this._z = e[t + 2], this._w = e[t + 3], this._onChangeCallback(), this;
}
toArray(e = [], t = 0) {
return e[t] = this._x, e[t + 1] = this._y, e[t + 2] = this._z, e[t + 3] = this._w, e;
}
fromBufferAttribute(e, t) {
return this._x = e.getX(t), this._y = e.getY(t), this._z = e.getZ(t), this._w = e.getW(t), this;
}
_onChange(e) {
return this._onChangeCallback = e, this;
}
_onChangeCallback() {
}
}
bn.prototype.isQuaternion = !0;
class q {
constructor(e = 0, t = 0, i = 0) {
this.x = e, this.y = t, this.z = i;
}
set(e, t, i) {
return i === void 0 && (i = this.z), this.x = e, this.y = t, this.z = i, this;
}
setScalar(e) {
return this.x = e, this.y = e, this.z = e, this;
}
setX(e) {
return this.x = e, this;
}
setY(e) {
return this.y = e, this;
}
setZ(e) {
return this.z = e, this;
}
setComponent(e, t) {
switch (e) {
case 0:
this.x = t;
break;
case 1:
this.y = t;
break;
case 2:
this.z = t;
break;
default:
throw new Error("index is out of range: " + e);
}
return this;
}
getComponent(e) {
switch (e) {
case 0:
return this.x;
case 1:
return this.y;
case 2:
return this.z;
default:
throw new Error("index is out of range: " + e);
}
}
clone() {
return new this.constructor(this.x, this.y, this.z);
}
copy(e) {
return this.x = e.x, this.y = e.y, this.z = e.z, this;
}
add(e, t) {
return t !== void 0 ? (console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."), this.addVectors(e, t)) : (this.x += e.x, this.y += e.y, this.z += e.z, this);
}
addScalar(e) {
return this.x += e, this.y += e, this.z += e, this;
}
addVectors(e, t) {
return this.x = e.x + t.x, this.y = e.y + t.y, this.z = e.z + t.z, this;
}
addScaledVector(e, t) {
return this.x += e.x * t, this.y += e.y * t, this.z += e.z * t, this;
}
sub(e, t) {
return t !== void 0 ? (console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."), this.subVectors(e, t)) : (this.x -= e.x, this.y -= e.y, this.z -= e.z, this);
}
subScalar(e) {
return this.x -= e, this.y -= e, this.z -= e, this;
}
subVectors(e, t) {
return this.x = e.x - t.x, this.y = e.y - t.y, this.z = e.z - t.z, this;
}
multiply(e, t) {
return t !== void 0 ? (console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."), this.multiplyVectors(e, t)) : (this.x *= e.x, this.y *= e.y, this.z *= e.z, this);
}
multiplyScalar(e) {
return this.x *= e, this.y *= e, this.z *= e, this;
}
multiplyVectors(e, t) {
return this.x = e.x * t.x, this.y = e.y * t.y, this.z = e.z * t.z, this;
}
applyEuler(e) {
return e && e.isEuler || console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."), this.applyQuaternion($m.setFromEuler(e));
}
applyAxisAngle(e, t) {
return this.applyQuaternion($m.setFromAxisAngle(e, t));
}
applyMatrix3(e) {
const t = this.x, i = this.y, r = this.z, s = e.elements;
return this.x = s[0] * t + s[3] * i + s[6] * r, this.y = s[1] * t + s[4] * i + s[7] * r, this.z = s[2] * t + s[5] * i + s[8] * r, this;
}
applyNormalMatrix(e) {
return this.applyMatrix3(e).normalize();
}
applyMatrix4(e) {
const t = this.x, i = this.y, r = this.z, s = e.elements, o = 1 / (s[3] * t + s[7] * i + s[11] * r + s[15]);
return this.x = (s[0] * t + s[4] * i + s[8] * r + s[12]) * o, this.y = (s[1] * t + s[5] * i + s[9] * r + s[13]) * o, this.z = (s[2] * t + s[6] * i + s[10] * r + s[14]) * o, this;
}
applyQuaternion(e) {
const t = this.x, i = this.y, r = this.z, s = e.x, o = e.y, a = e.z, c = e.w, l = c * t + o * r - a * i, d = c * i + a * t - s * r, h = c * r + s * i - o * t, f = -s * t - o * i - a * r;
return this.x = l * c + f * -s + d * -a - h * -o, this.y = d * c + f * -o + h * -s - l * -a, this.z = h * c + f * -a + l * -o - d * -s, this;
}
project(e) {
return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix);
}
unproject(e) {
return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld);
}
transformDirection(e) {
const t = this.x, i = this.y, r = this.z, s = e.elements;
return this.x = s[0] * t + s[4] * i + s[8] * r, this.y = s[1] * t + s[5] * i + s[9] * r, this.z = s[2] * t + s[6] * i + s[10] * r, this.normalize();
}
divide(e) {
return this.x /= e.x, this.y /= e.y, this.z /= e.z, this;
}
divideScalar(e) {
return this.multiplyScalar(1 / e);
}
min(e) {
return this.x = Math.min(this.x, e.x), this.y = Math.min(this.y, e.y), this.z = Math.min(this.z, e.z), this;
}
max(e) {
return this.x = Math.max(this.x, e.x), this.y = Math.max(this.y, e.y), this.z = Math.max(this.z, e.z), this;
}
clamp(e, t) {
return this.x = Math.max(e.x, Math.min(t.x, this.x)), this.y = Math.max(e.y, Math.min(t.y, this.y)), this.z = Math.max(e.z, Math.min(t.z, this.z)), this;
}
clampScalar(e, t) {
return this.x = Math.max(e, Math.min(t, this.x)), this.y = Math.max(e, Math.min(t, this.y)), this.z = Math.max(e, Math.min(t, this.z)), this;
}
clampLength(e, t) {
const i = this.length();
return this.divideScalar(i || 1).multiplyScalar(Math.max(e, Math.min(t, i)));
}
floor() {
return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this.z = Math.floor(this.z), this;
}
ceil() {
return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this.z = Math.ceil(this.z), this;
}
round() {
return this.x = Math.round(this.x), this.y = Math.round(this.y), this.z = Math.round(this.z), this;
}
roundToZero() {
return this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x), this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y), this.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z), this;
}
negate() {
return this.x = -this.x, this.y = -this.y, this.z = -this.z, this;
}
dot(e) {
return this.x * e.x + this.y * e.y + this.z * e.z;
}
// TODO lengthSquared?
lengthSq() {
return this.x * this.x + this.y * this.y + this.z * this.z;
}
length() {
return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
}
manhattanLength() {
return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z);
}
normalize() {
return this.divideScalar(this.length() || 1);
}
setLength(e) {
return this.normalize().multiplyScalar(e);
}
lerp(e, t) {
return this.x += (e.x - this.x) * t, this.y += (e.y - this.y) * t, this.z += (e.z - this.z) * t, this;
}
lerpVectors(e, t, i) {
return this.x = e.x + (t.x - e.x) * i, this.y = e.y + (t.y - e.y) * i, this.z = e.z + (t.z - e.z) * i, this;
}
cross(e, t) {
return t !== void 0 ? (console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."), this.crossVectors(e, t)) : this.crossVectors(this, e);
}
crossVectors(e, t) {
const i = e.x, r = e.y, s = e.z, o = t.x, a = t.y, c = t.z;
return this.x = r * c - s * a, this.y = s * o - i * c, this.z = i * a - r * o, this;
}
projectOnVector(e) {
const t = e.lengthSq();
if (t === 0) return this.set(0, 0, 0);
const i = e.dot(this) / t;
return this.copy(e).multiplyScalar(i);
}
projectOnPlane(e) {
return Zu.copy(this).projectOnVector(e), this.sub(Zu);
}
reflect(e) {
return this.sub(Zu.copy(e).multiplyScalar(2 * this.dot(e)));
}
angleTo(e) {
const t = Math.sqrt(this.lengthSq() * e.lengthSq());
if (t === 0) return Math.PI / 2;
const i = this.dot(e) / t;
return Math.acos(gn(i, -1, 1));
}
distanceTo(e) {
return Math.sqrt(this.distanceToSquared(e));
}
distanceToSquared(e) {
const t = this.x - e.x, i = this.y - e.y, r = this.z - e.z;
return t * t + i * i + r * r;
}
manhattanDistanceTo(e) {
return Math.abs(this.x - e.x) + Math.abs(this.y - e.y) + Math.abs(this.z - e.z);
}
setFromSpherical(e) {
return this.setFromSphericalCoords(e.radius, e.phi, e.theta);
}
setFromSphericalCoords(e, t, i) {
const r = Math.sin(t) * e;
return this.x = r * Math.sin(i), this.y = Math.cos(t) * e, this.z = r * Math.cos(i), this;
}
setFromCylindrical(e) {
return this.setFromCylindricalCoords(e.radius, e.theta, e.y);
}
setFromCylindricalCoords(e, t, i) {
return this.x = e * Math.sin(t), this.y = i, this.z = e * Math.cos(t), this;
}
setFromMatrixPosition(e) {
const t = e.elements;
return this.x = t[12], this.y = t[13], this.z = t[14], this;
}
setFromMatrixScale(e) {
const t = this.setFromMatrixColumn(e, 0).length(), i = this.setFromMatrixColumn(e, 1).length(), r = this.setFromMatrixColumn(e, 2).length();
return this.x = t, this.y = i, this.z = r, this;
}
setFromMatrixColumn(e, t) {
return this.fromArray(e.elements, t * 4);
}
setFromMatrix3Column(e, t) {
return this.fromArray(e.elements, t * 3);
}
equals(e) {
return e.x === this.x && e.y === this.y && e.z === this.z;
}
fromArray(e, t = 0) {
return this.x = e[t], this.y = e[t + 1], this.z = e[t + 2], this;
}
toArray(e = [], t = 0) {
return e[t] = this.x, e[t + 1] = this.y, e[t + 2] = this.z, e;
}
fromBufferAttribute(e, t, i) {
return i !== void 0 && console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."), this.x = e.getX(t), this.y = e.getY(t), this.z = e.getZ(t), this;
}
random() {
return this.x = Math.random(), this.y = Math.random(), this.z = Math.random(), this;
}
}
q.prototype.isVector3 = !0;
const Zu = /* @__PURE__ */ new q(), $m = /* @__PURE__ */ new bn();
class Nn {
constructor(e = new q(1 / 0, 1 / 0, 1 / 0), t = new q(-1 / 0, -1 / 0, -1 / 0)) {
this.min = e, this.max = t;
}
set(e, t) {
return this.min.copy(e), this.max.copy(t), this;
}
setFromArray(e) {
let t = 1 / 0, i = 1 / 0, r = 1 / 0, s = -1 / 0, o = -1 / 0, a = -1 / 0;
for (let c = 0, l = e.length; c < l; c += 3) {
const d = e[c], h = e[c + 1], f = e[c + 2];
d < t && (t = d), h < i && (i = h), f < r && (r = f), d > s && (s = d), h > o && (o = h), f > a && (a = f);
}
return this.min.set(t, i, r), this.max.set(s, o, a), this;
}
setFromBufferAttribute(e) {
let t = 1 / 0, i = 1 / 0, r = 1 / 0, s = -1 / 0, o = -1 / 0, a = -1 / 0;
for (let c = 0, l = e.count; c < l; c++) {
const d = e.getX(c), h = e.getY(c), f = e.getZ(c);
d < t && (t = d), h < i && (i = h), f < r && (r = f), d > s && (s = d), h > o && (o = h), f > a && (a = f);
}
return this.min.set(t, i, r), this.max.set(s, o, a), this;
}
setFromPoints(e) {
this.makeEmpty();
for (let t = 0, i = e.length; t < i; t++)
this.expandByPoint(e[t]);
return this;
}
setFromCenterAndSize(e, t) {
const i = ha.copy(t).multiplyScalar(0.5);
return this.min.copy(e).sub(i), this.max.copy(e).add(i), this;
}
setFromObject(e) {
return this.makeEmpty(), this.expandByObject(e);
}
clone() {
return new this.constructor().copy(this);
}
copy(e) {
return this.min.copy(e.min), this.max.copy(e.max), this;
}
makeEmpty() {
return this.min.x = this.min.y = this.min.z = 1 / 0, this.max.x = this.max.y = this.max.z = -1 / 0, this;
}
isEmpty() {
return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z;
}
getCenter(e) {
return this.isEmpty() ? e.set(0, 0, 0) : e.addVectors(this.min, this.max).multiplyScalar(0.5);
}
getSize(e) {
return this.isEmpty() ? e.set(0, 0, 0) : e.subVectors(this.max, this.min);
}
expandByPoint(e) {
return this.min.min(e), this.max.max(e), this;
}
expandByVector(e) {
return this.min.sub(e), this.max.add(e), this;
}
expandByScalar(e) {
return this.min.addScalar(-e), this.max.addScalar(e), this;
}
expandByObject(e) {
e.updateWorldMatrix(!1, !1);
const t = e.geometry;
t !== void 0 && (t.boundingBox === null && t.computeBoundingBox(), Xu.copy(t.boundingBox), Xu.applyMatrix4(e.matrixWorld), this.union(Xu));
const i = e.children;
for (let r = 0, s = i.length; r < s; r++)
this.expandByObject(i[r]);
return this;
}
containsPoint(e) {
return !(e.x < this.min.x || e.x > this.max.x || e.y < this.min.y || e.y > this.max.y || e.z < this.min.z || e.z > this.max.z);
}
containsBox(e) {
return this.min.x <= e.min.x && e.max.x <= this.max.x && this.min.y <= e.min.y && e.max.y <= this.max.y && this.min.z <= e.min.z && e.max.z <= this.max.z;
}
getParameter(e, t) {
return t.set(
(e.x - this.min.x) / (this.max.x - this.min.x),
(e.y - this.min.y) / (this.max.y - this.min.y),
(e.z - this.min.z) / (this.max.z - this.min.z)
);
}
intersectsBox(e) {
return !(e.max.x < this.min.x || e.min.x > this.max.x || e.max.y < this.min.y || e.min.y > this.max.y || e.max.z < this.min.z || e.min.z > this.max.z);
}
intersectsSphere(e) {
return this.clampPoint(e.center, ha), ha.distanceToSquared(e.center) <= e.radius * e.radius;
}
intersectsPlane(e) {
let t, i;
return e.normal.x > 0 ? (t = e.normal.x * this.min.x, i = e.normal.x * this.max.x) : (t = e.normal.x * this.max.x, i = e.normal.x * this.min.x), e.normal.y > 0 ? (t += e.normal.y * this.min.y, i += e.normal.y * this.max.y) : (t += e.normal.y * this.max.y, i += e.normal.y * this.min.y), e.normal.z > 0 ? (t += e.normal.z * this.min.z, i += e.normal.z * this.max.z) : (t += e.normal.z * this.max.z, i += e.normal.z * this.min.z), t <= -e.constant && i >= -e.constant;
}
intersectsTriangle(e) {
if (this.isEmpty())
return !1;
this.getCenter(da), Ol.subVectors(this.max, da), $s.subVectors(e.a, da), Zs.subVectors(e.b, da), Xs.subVectors(e.c, da), vr.subVectors(Zs, $s), yr.subVectors(Xs, Zs), ss.subVectors($s, Xs);
let t = [
0,
-vr.z,
vr.y,
0,
-yr.z,
yr.y,
0,
-ss.z,
ss.y,
vr.z,
0,
-vr.x,
yr.z,
0,
-yr.x,
ss.z,
0,
-ss.x,
-vr.y,
vr.x,
0,
-yr.y,
yr.x,
0,
-ss.y,
ss.x,
0
];
return !Yu(t, $s, Zs, Xs, Ol) || (t = [1, 0, 0, 0, 1, 0, 0, 0, 1], !Yu(t, $s, Zs, Xs, Ol)) ? !1 : (Dl.crossVectors(vr, yr), t = [Dl.x, Dl.y, Dl.z], Yu(t, $s, Zs, Xs, Ol));
}
clampPoint(e, t) {
return t.copy(e).clamp(this.min, this.max);
}
distanceToPoint(e) {
return ha.copy(e).clamp(this.min, this.max).sub(e).length();
}
getBoundingSphere(e) {
return this.getCenter(e.center), e.radius = this.getSize(ha).length() * 0.5, e;
}
intersect(e) {
return this.min.max(e.min), this.max.min(e.max), this.isEmpty() && this.makeEmpty(), this;
}
union(e) {
return this.min.min(e.min), this.max.max(e.max), this;
}
applyMatrix4(e) {
return this.isEmpty() ? this : (Wi[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(e), Wi[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(e), Wi[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(e), Wi[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(e), Wi[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(e), Wi[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(e), Wi[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(e), Wi[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(e), this.setFromPoints(Wi), this);
}
translate(e) {
return this.min.add(e), this.max.add(e), this;
}
equals(e) {
return e.min.equals(this.min) && e.max.equals(this.max);
}
}
Nn.prototype.isBox3 = !0;
const Wi = [
/* @__PURE__ */ new q(),
/* @__PURE__ */ new q(),
/* @__PURE__ */ new q(),
/* @__PURE__ */ new q(),
/* @__PURE__ */ new q(),
/* @__PURE__ */ new q(),
/* @__PURE__ */ new q(),
/* @__PURE__ */ new q()
], ha = /* @__PURE__ */ new q(), Xu = /* @__PURE__ */ new Nn(), $s = /* @__PURE__ */ new q(), Zs = /* @__PURE__ */ new q(), Xs = /* @__PURE__ */ new q(), vr = /* @__PURE__ */ new q(), yr = /* @__PURE__ */ new q(), ss = /* @__PURE__ */ new q(), da = /* @__PURE__ */ new q(), Ol = /* @__PURE__ */ new q(), Dl = /* @__PURE__ */ new q(), os = /* @__PURE__ */ new q();
function Yu(n, e, t, i, r) {
for (let s = 0, o = n.length - 3; s <= o; s += 3) {
os.fromArray(n, s);
const a = r.x * Math.abs(os.x) + r.y * Math.abs(os.y) + r.z * Math.abs(os.z), c = e.dot(os), l = t.dot(os), d = i.dot(os);
if (Math.max(-Math.max(c, l, d), Math.min(c, l, d)) > a)
return !1;
}
return !0;
}
const vF = /* @__PURE__ */ new Nn(), Zm = /* @__PURE__ */ new q(), Ju = /* @__PURE__ */ new q(), Ku = /* @__PURE__ */ new q();
class mr {
constructor(e = new q(), t = -1) {
this.center = e, this.radius = t;
}
set(e, t) {
return this.center.copy(e), this.radius = t, this;
}
setFromPoints(e, t) {
const i = this.center;
t !== void 0 ? i.copy(t) : vF.setFromPoints(e).getCenter(i);
let r = 0;
for (let s = 0, o = e.length; s < o; s++)
r = Math.max(r, i.distanceToSquared(e[s]));
return this.radius = Math.sqrt(r), this;
}
copy(e) {
return this.center.copy(e.center), this.radius = e.radius, this;
}
isEmpty() {
return this.radius < 0;
}
makeEmpty() {
return this.center.set(0, 0, 0), this.radius = -1, this;
}
containsPoint(e) {
return e.distanceToSquared(this.center) <= this.radius * this.radius;
}
distanceToPoint(e) {
return e.distanceTo(this.center) - this.radius;
}
intersectsSphere(e) {
const t = this.radius + e.radius;
return e.center.distanceToSquared(this.center) <= t * t;
}
intersectsBox(e) {
return e.intersectsSphere(this);
}
intersectsPlane(e) {
return Math.abs(e.distanceToPoint(this.center)) <= this.radius;
}
clampPoint(e, t) {
const i = this.center.distanceToSquared(e);
return t.copy(e), i > this.radius * this.radius && (t.sub(this.center).normalize(), t.multiplyScalar(this.radius).add(this.center)), t;
}
getBoundingBox(e) {
return this.isEmpty() ? (e.makeEmpty(), e) : (e.set(this.center, this.center), e.expandByScalar(this.radius), e);
}
applyMatrix4(e) {
return this.center.applyMatrix4(e), this.radius = this.radius * e.getMaxScaleOnAxis(), this;
}
translate(e) {
return this.center.add(e), this;
}
expandByPoint(e) {
Ku.subVectors(e, this.center);
const t = Ku.lengthSq();
if (t > this.radius * this.radius) {
const i = Math.sqrt(t), r = (i - this.radius) * 0.5;
this.center.add(Ku.multiplyScalar(r / i)), this.radius += r;
}
return this;
}
union(e) {
return Ju.subVectors(e.center, this.center).normalize().multiplyScalar(e.radius), this.expandByPoint(Zm.copy(e.center).add(Ju)), this.expandByPoint(Zm.copy(e.center).sub(Ju)), this;
}
equals(e) {
return e.center.equals(this.center) && e.radius === this.radius;
}
clone() {
return new this.constructor().copy(this);
}
}
const ji = /* @__PURE__ */ new q(), qu = /* @__PURE__ */ new q(), Nl = /* @__PURE__ */ new q(), br = /* @__PURE__ */ new q(), Qu = /* @__PURE__ */ new q(), Bl = /* @__PURE__ */ new q(), eh = /* @__PURE__ */ new q();
class qr {
constructor(e = new q(), t = new q(0, 0, -1)) {
this.origin = e, this.direction = t;
}
set(e, t) {
return this.origin.copy(e), this.direction.copy(t), this;
}
copy(e) {
return this.origin.copy(e.origin), this.direction.copy(e.direction), this;
}
at(e, t) {
return t.copy(this.direction).multiplyScalar(e).add(this.origin);
}
lookAt(e) {
return this.direction.copy(e).sub(this.origin).normalize(), this;
}
recast(e) {
return this.origin.copy(this.at(e, ji)), this;
}
closestPointToPoint(e, t) {
t.subVectors(e, this.origin);
const i = t.dot(this.direction);
return i < 0 ? t.copy(this.origin) : t.copy(this.direction).multiplyScalar(i).add(this.origin);
}
distanceToPoint(e) {
return Math.sqrt(this.distanceSqToPoint(e));
}
distanceSqToPoint(e) {
const t = ji.subVectors(e, this.origin).dot(this.direction);
return t < 0 ? this.origin.distanceToSquared(e) : (ji.copy(this.direction).multiplyScalar(t).add(this.origin), ji.distanceToSquared(e));
}
distanceSqToSegment(e, t, i, r) {
qu.copy(e).add(t).multiplyScalar(0.5), Nl.copy(t).sub(e).normalize(), br.copy(this.origin).sub(qu);
const s = e.distanceTo(t) * 0.5, o = -this.direction.dot(Nl), a = br.dot(this.direction), c = -br.dot(Nl), l = br.lengthSq(), d = Math.abs(1 - o * o);
let h, f, g, p;
if (d > 0)
if (h = o * c - a, f = o * a - c, p = s * d, h >= 0)
if (f >= -p)
if (f <= p) {
const u = 1 / d;
h *= u, f *= u, g = h * (h + o * f + 2 * a) + f * (o * h + f + 2 * c) + l;
} else
f = s, h = Math.max(0, -(o * f + a)), g = -h * h + f * (f + 2 * c) + l;
else
f = -s, h = Math.max(0, -(o * f + a)), g = -h * h + f * (f + 2 * c) + l;
else
f <= -p ? (h = Math.max(0, -(-o * s + a)), f = h > 0 ? -s : Math.min(Math.max(-s, -c), s), g = -h * h + f * (f + 2 * c) + l) : f <= p ? (h = 0, f = Math.min(Math.max(-s, -c), s), g = f * (f + 2 * c) + l) : (h = Math.max(0, -(o * s + a)), f = h > 0 ? s : Math.min(Math.max(-s, -c), s), g = -h * h + f * (f + 2 * c) + l);
else
f = o > 0 ? -s : s, h = Math.max(0, -(o * f + a)), g = -h * h + f * (f + 2 * c) + l;
return i && i.copy(this.direction).multiplyScalar(h).add(this.origin), r && r.copy(Nl).multiplyScalar(f).add(qu), g;
}
intersectSphere(e, t) {
ji.subVectors(e.center, this.origin);
const i = ji.dot(this.direction), r = ji.dot(ji) - i * i, s = e.radius * e.radius;
if (r > s) return null;
const o = Math.sqrt(s - r), a = i - o, c = i + o;
return a < 0 && c < 0 ? null : a < 0 ? this.at(c, t) : this.at(a, t);
}
intersectsSphere(e) {
return this.distanceSqToPoint(e.center) <= e.radius * e.radius;
}
distanceToPlane(e) {
const t = e.normal.dot(this.direction);
if (t === 0)
return e.distanceToPoint(this.origin) === 0 ? 0 : null;
const i = -(this.origin.dot(e.normal) + e.constant) / t;
return i >= 0 ? i : null;
}
intersectPlane(e, t) {
const i = this.distanceToPlane(e);
return i === null ? null : this.at(i, t);
}
intersectsPlane(e) {
const t = e.distanceToPoint(this.origin);
return t === 0 || e.normal.dot(this.direction) * t < 0;
}
intersectBox(e, t) {
let i, r, s, o, a, c;
const l = 1 / this.direction.x, d = 1 / this.direction.y, h = 1 / this.direction.z, f = this.origin;
return l >= 0 ? (i = (e.min.x - f.x) * l, r = (e.max.x - f.x) * l) : (i = (e.max.x - f.x) * l, r = (e.min.x - f.x) * l), d >= 0 ? (s = (e.min.y - f.y) * d, o = (e.max.y - f.y) * d) : (s = (e.max.y - f.y) * d, o = (e.min.y - f.y) * d), i > o || s > r || ((s > i || i !== i) && (i = s), (o < r || r !== r) && (r = o), h >= 0 ? (a = (e.min.z - f.z) * h, c = (e.max.z - f.z) * h) : (a = (e.max.z - f.z) * h, c = (e.min.z - f.z) * h), i > c || a > r) || ((a > i || i !== i) && (i = a), (c < r || r !== r) && (r = c), r < 0) ? null : this.at(i >= 0 ? i : r, t);
}
intersectsBox(e) {
return this.intersectBox(e, ji) !== null;
}
intersectTriangle(e, t, i, r, s) {
Qu.subVectors(t, e), Bl.subVectors(i, e), eh.crossVectors(Qu, Bl);
let o = this.direction.dot(eh), a;
if (o > 0) {
if (r) return null;
a = 1;
} else if (o < 0)
a = -1, o = -o;
else
return null;
br.subVectors(this.origin, e);
const c = a * this.direction.dot(Bl.crossVectors(br, Bl));
if (c < 0)
return null;
const l = a * this.direction.dot(Qu.cross(br));
if (l < 0 || c + l > o)
return null;
const d = -a * br.dot(eh);
return d < 0 ? null : this.at(d / o, s);
}
applyMatrix4(e) {
return this.origin.applyMatrix4(e), this.direction.transformDirection(e), this;
}
equals(e) {
return e.origin.equals(this.origin) && e.direction.equals(this.direction);
}
clone() {
return new this.constructor().copy(this);
}
}
class Xe {
constructor() {
this.elements = [
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1
], arguments.length > 0 && console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.");
}
set(e, t, i, r, s, o, a, c, l, d, h, f, g, p, u, y) {
const v = this.elements;
return v[0] = e, v[4] = t, v[8] = i, v[12] = r, v[1] = s, v[5] = o, v[9] = a, v[13] = c, v[2] = l, v[6] = d, v[10] = h, v[14] = f, v[3] = g, v[7] = p, v[11] = u, v[15] = y, this;
}
identity() {
return this.set(
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1
), this;
}
clone() {
return new Xe().fromArray(this.elements);
}
copy(e) {
const t = this.elements, i = e.elements;
return t[0] = i[0], t[1] = i[1], t[2] = i[2], t[3] = i[3], t[4] = i[4], t[5] = i[5], t[6] = i[6], t[7] = i[7], t[8] = i[8], t[9] = i[9], t[10] = i[10], t[11] = i[11], t[12] = i[12], t[13] = i[13], t[14] = i[14], t[15] = i[15], this;
}
copyPosition(e) {
const t = this.elements, i = e.elements;
return t[12] = i[12], t[13] = i[13], t[14] = i[14], this;
}
setFromMatrix3(e) {
const t = e.elements;
return this.set(
t[0],
t[3],
t[6],
0,
t[1],
t[4],
t[7],
0,
t[2],
t[5],
t[8],
0,
0,
0,
0,
1
), this;
}
extractBasis(e, t, i) {
return e.setFromMatrixColumn(this, 0), t.setFromMatrixColumn(this, 1), i.setFromMatrixColumn(this, 2), this;
}
makeBasis(e, t, i) {
return this.set(
e.x,
t.x,
i.x,
0,
e.y,
t.y,
i.y,
0,
e.z,
t.z,
i.z,
0,
0,
0,
0,
1
), this;
}
extractRotation(e) {
const t = this.elements, i = e.elements, r = 1 / Ys.setFromMatrixColumn(e, 0).length(), s = 1 / Ys.setFromMatrixColumn(e, 1).length(), o = 1 / Ys.setFromMatrixColumn(e, 2).length();
return t[0] = i[0] * r, t[1] = i[1] * r, t[2] = i[2] * r, t[3] = 0, t[4] = i[4] * s, t[5] = i[5] * s, t[6] = i[6] * s, t[7] = 0, t[8] = i[8] * o, t[9] = i[9] * o, t[10] = i[10] * o, t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1, this;
}
makeRotationFromEuler(e) {
e && e.isEuler || console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");
const t = this.elements, i = e.x, r = e.y, s = e.z, o = Math.cos(i), a = Math.sin(i), c = Math.cos(r), l = Math.sin(r), d = Math.cos(s), h = Math.sin(s);
if (e.order === "XYZ") {
const f = o * d, g = o * h, p = a * d, u = a * h;
t[0] = c * d, t[4] = -c * h, t[8] = l, t[1] = g + p * l, t[5] = f - u * l, t[9] = -a * c, t[2] = u - f * l, t[6] = p + g * l, t[10] = o * c;
} else if (e.order === "YXZ") {
const f = c * d, g = c * h, p = l * d, u = l * h;
t[0] = f + u * a, t[4] = p * a - g, t[8] = o * l, t[1] = o * h, t[5] = o * d, t[9] = -a, t[2] = g * a - p, t[6] = u + f * a, t[10] = o * c;
} else if (e.order === "ZXY") {
const f = c * d, g = c * h, p = l * d, u = l * h;
t[0] = f - u * a, t[4] = -o * h, t[8] = p + g * a, t[1] = g + p * a, t[5] = o * d, t[9] = u - f * a, t[2] = -o * l, t[6] = a, t[10] = o * c;
} else if (e.order === "ZYX") {
const f = o * d, g = o * h, p = a * d, u = a * h;
t[0] = c * d, t[4] = p * l - g, t[8] = f * l + u, t[1] = c * h, t[5] = u * l + f, t[9] = g * l - p, t[2] = -l, t[6] = a * c, t[10] = o * c;
} else if (e.order === "YZX") {
const f = o * c, g = o * l, p = a * c, u = a * l;
t[0] = c * d, t[4] = u - f * h, t[8] = p * h + g, t[1] = h, t[5] = o * d, t[9] = -a * d, t[2] = -l * d, t[6] = g * h + p, t[10] = f - u * h;
} else if (e.order === "XZY") {
const f = o * c, g = o * l, p = a * c, u = a * l;
t[0] = c * d, t[4] = -h, t[8] = l * d, t[1] = f * h + u, t[5] = o * d, t[9] = g * h - p, t[2] = p * h - g, t[6] = a * d, t[10] = u * h + f;
}
return t[3] = 0, t[7] = 0, t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1, this;
}
makeRotationFromQuaternion(e) {
return this.compose(yF, e, bF);
}
lookAt(e, t, i) {
const r = this.elements;
return Bn.subVectors(e, t), Bn.lengthSq() === 0 && (Bn.z = 1), Bn.normalize(), xr.crossVectors(i, Bn), xr.lengthSq() === 0 && (Math.abs(i.z) === 1 ? Bn.x += 1e-4 : Bn.z += 1e-4, Bn.normalize(), xr.crossVectors(i, Bn)), xr.normalize(), Ul.crossVectors(Bn, xr), r[0] = xr.x, r[4] = Ul.x, r[8] = Bn.x, r[1] = xr.y, r[5] = Ul.y, r[9] = Bn.y, r[2] = xr.z, r[6] = Ul.z, r[10] = Bn.z, this;
}
multiply(e, t) {
return t !== void 0 ? (console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."), this.multiplyMatrices(e, t)) : this.multiplyMatrices(this, e);
}
premultiply(e) {
return this.multiplyMatrices(e, this);
}
multiplyMatrices(e, t) {
const i = e.elements, r = t.elements, s = this.elements, o = i[0], a = i[4], c = i[8], l = i[12], d = i[1], h = i[5], f = i[9], g = i[13], p = i[2], u = i[6], y = i[10], v = i[14], m = i[3], x = i[7], w = i[11], A = i[15], M = r[0], R = r[4], L = r[8], T = r[12], P = r[1], _ = r[5], S = r[9], E = r[13], C = r[2], I = r[6], b = r[10], F = r[14], D = r[3], N = r[7], B = r[11], U = r[15];
return s[0] = o * M + a * P + c * C + l * D, s[4] = o * R + a * _ + c * I + l * N, s[8] = o * L + a * S + c * b + l * B, s[12] = o * T + a * E + c * F + l * U, s[1] = d * M + h * P + f * C + g * D, s[5] = d * R + h * _ + f * I + g * N, s[9] = d * L + h * S + f * b + g * B, s[13] = d * T + h * E + f * F + g * U, s[2] = p * M + u * P + y * C + v * D, s[6] = p * R + u * _ + y * I + v * N, s[10] = p * L + u * S + y * b + v * B, s[14] = p * T + u * E + y * F + v * U, s[3] = m * M + x * P + w * C + A * D, s[7] = m * R + x * _ + w * I + A * N, s[11] = m * L + x * S + w * b + A * B, s[15] = m * T + x * E + w * F + A * U, this;
}
multiplyScalar(e) {
const t = this.elements;
return t[0] *= e, t[4] *= e, t[8] *= e, t[12] *= e, t[1] *= e, t[5] *= e, t[9] *= e, t[13] *= e, t[2] *= e, t[6] *= e, t[10] *= e, t[14] *= e, t[3] *= e, t[7] *= e, t[11] *= e, t[15] *= e, this;
}
determinant() {
const e = this.elements, t = e[0], i = e[4], r = e[8], s = e[12], o = e[1], a = e[5], c = e[9], l = e[13], d = e[2], h = e[6], f = e[10], g = e[14], p = e[3], u = e[7], y = e[11], v = e[15];
return p * (+s * c * h - r * l * h - s * a * f + i * l * f + r * a * g - i * c * g) + u * (+t * c * g - t * l * f + s * o * f - r * o * g + r * l * d - s * c * d) + y * (+t * l * h - t * a * g - s * o * h + i * o * g + s * a * d - i * l * d) + v * (-r * a * d - t * c * h + t * a * f + r * o * h - i * o * f + i * c * d);
}
transpose() {
const e = this.elements;
let t;
return t = e[1], e[1] = e[4], e[4] = t, t = e[2], e[2] = e[8], e[8] = t, t = e[6], e[6] = e[9], e[9] = t, t = e[3], e[3] = e[12], e[12] = t, t = e[7], e[7] = e[13], e[13] = t, t = e[11], e[11] = e[14], e[14] = t, this;
}
setPosition(e, t, i) {
const r = this.elements;
return e.isVector3 ? (r[12] = e.x, r[13] = e.y, r[14] = e.z) : (r[12] = e, r[13] = t, r[14] = i), this;
}
invert() {
const e = this.elements, t = e[0], i = e[1], r = e[2], s = e[3], o = e[4], a = e[5], c = e[6], l = e[7], d = e[8], h = e[9], f = e[10], g = e[11], p = e[12], u = e[13], y = e[14], v = e[15], m = h * y * l - u * f * l + u * c * g - a * y * g - h * c * v + a * f * v, x = p * f * l - d * y * l - p * c * g + o * y * g + d * c * v - o * f * v, w = d * u * l - p * h * l + p * a * g - o * u * g - d * a * v + o * h * v, A = p * h * c - d * u * c - p * a * f + o * u * f + d * a * y - o * h * y, M = t * m + i * x + r * w + s * A;
if (M === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
const R = 1 / M;
return e[0] = m * R, e[1] = (u * f * s - h * y * s - u * r * g + i * y * g + h * r * v - i * f * v) * R, e[2] = (a * y * s - u * c * s + u * r * l - i * y * l - a * r * v + i * c * v) * R, e[3] = (h * c * s - a * f * s - h * r * l + i * f * l + a * r * g - i * c * g) * R, e[4] = x * R, e[5] = (d * y * s - p * f * s + p * r * g - t * y * g - d * r * v + t * f * v) * R, e[6] = (p * c * s - o * y * s - p * r * l + t * y * l + o * r * v - t * c * v) * R, e[7] = (o * f * s - d * c * s + d * r * l - t * f * l - o * r * g + t * c * g) * R, e[8] = w * R, e[9] = (p * h * s - d * u * s - p * i * g + t * u * g + d * i * v - t * h * v) * R, e[10] = (o * u * s - p * a * s + p * i * l - t * u * l - o * i * v + t * a * v) * R, e[11] = (d * a * s - o * h * s - d * i * l + t * h * l + o * i * g - t * a * g) * R, e[12] = A * R, e[13] = (d * u * r - p * h * r + p * i * f - t * u * f - d * i * y + t * h * y) * R, e[14] = (p * a * r - o * u * r - p * i * c + t * u * c + o * i * y - t * a * y) * R, e[15] = (o * h * r - d * a * r + d * i * c - t * h * c - o * i * f + t * a * f) * R, this;
}
scale(e) {
const t = this.elements, i = e.x, r = e.y, s = e.z;
return t[0] *= i, t[4] *= r, t[8] *= s, t[1] *= i, t[5] *= r, t[9] *= s, t[2] *= i, t[6] *= r, t[10] *= s, t[3] *= i, t[7] *= r, t[11] *= s, this;
}
getMaxScaleOnAxis() {
const e = this.elements, t = e[0] * e[0] + e[1] * e[1] + e[2] * e[2], i = e[4] * e[4] + e[5] * e[5] + e[6] * e[6], r = e[8] * e[8] + e[9] * e[9] + e[10] * e[10];
return Math.sqrt(Math.max(t, i, r));
}
makeTranslation(e, t, i) {
return this.set(
1,
0,
0,
e,
0,
1,
0,
t,
0,
0,
1,
i,
0,
0,
0,
1
), this;
}
makeRotationX(e) {
const t = Math.cos(e), i = Math.sin(e);
return this.set(
1,
0,
0,
0,
0,
t,
-i,
0,
0,
i,
t,
0,
0,
0,
0,
1
), this;
}
makeRotationY(e) {
const t = Math.cos(e), i = Math.sin(e);
return this.set(
t,
0,
i,
0,
0,
1,
0,
0,
-i,
0,
t,
0,
0,
0,
0,
1
), this;
}
makeRotationZ(e) {
const t = Math.cos(e), i = Math.sin(e);
return this.set(
t,
-i,
0,
0,
i,
t,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1
), this;
}
makeRotationAxis(e, t) {
const i = Math.cos(t), r = Math.sin(t), s = 1 - i, o = e.x, a = e.y, c = e.z, l = s * o, d = s * a;
return this.set(
l * o + i,
l * a - r * c,
l * c + r * a,
0,
l * a + r * c,
d * a + i,
d * c - r * o,
0,
l * c - r * a,
d * c + r * o,
s * c * c + i,
0,
0,
0,
0,
1
), this;
}
makeScale(e, t, i) {
return this.set(
e,
0,
0,
0,
0,
t,
0,
0,
0,
0,
i,
0,
0,
0,
0,
1
), this;
}
makeShear(e, t, i, r, s, o) {
return this.set(
1,
i,
s,
0,
e,
1,
o,
0,
t,
r,
1,
0,
0,
0,
0,
1
), this;
}
compose(e, t, i) {
const r = this.elements, s = t._x, o = t._y, a = t._z, c = t._w, l = s + s, d = o + o, h = a + a, f = s * l, g = s * d, p = s * h, u = o * d, y = o * h, v = a * h, m = c * l, x = c * d, w = c * h, A = i.x, M = i.y, R = i.z;
return r[0] = (1 - (u + v)) * A, r[1] = (g + w) * A, r[2] = (p - x) * A, r[3] = 0, r[4] = (g - w) * M, r[5] = (1 - (f + v)) * M, r[6] = (y + m) * M, r[7] = 0, r[8] = (p + x) * R, r[9] = (y - m) * R, r[10] = (1 - (f + u)) * R, r[11] = 0, r[12] = e.x, r[13] = e.y, r[14] = e.z, r[15] = 1, this;
}
decompose(e, t, i) {
const r = this.elements;
let s = Ys.set(r[0], r[1], r[2]).length();
const o = Ys.set(r[4], r[5], r[6]).length(), a = Ys.set(r[8], r[9], r[10]).length();
this.determinant() < 0 && (s = -s), e.x = r[12], e.y = r[13], e.z = r[14], ri.copy(this);
const l = 1 / s, d = 1 / o, h = 1 / a;
return ri.elements[0] *= l, ri.elements[1] *= l, ri.elements[2] *= l, ri.elements[4] *= d, ri.elements[5] *= d, ri.elements[6] *= d, ri.elements[8] *= h, ri.elements[9] *= h, ri.elements[10] *= h, t.setFromRotationMatrix(ri), i.x = s, i.y = o, i.z = a, this;
}
makePerspective(e, t, i, r, s, o) {
o === void 0 && console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");
const a = this.elements, c = 2 * s / (t - e), l = 2 * s / (i - r), d = (t + e) / (t - e), h = (i + r) / (i - r), f = -(o + s) / (o - s), g = -2 * o * s / (o - s);
return a[0] = c, a[4] = 0, a[8] = d, a[12] = 0, a[1] = 0, a[5] = l, a[9] = h, a[13] = 0, a[2] = 0, a[6] = 0, a[10] = f, a[14] = g, a[3] = 0, a[7] = 0, a[11] = -1, a[15] = 0, this;
}
makeOrthographic(e, t, i, r, s, o) {
const a = this.elements, c = 1 / (t - e), l = 1 / (i - r), d = 1 / (o - s), h = (t + e) * c, f = (i + r) * l, g = (o + s) * d;
return a[0] = 2 * c, a[4] = 0, a[8] = 0, a[12] = -h, a[1] = 0, a[5] = 2 * l, a[9] = 0, a[13] = -f, a[2] = 0, a[6] = 0, a[10] = -2 * d, a[14] = -g, a[3] = 0, a[7] = 0, a[11] = 0, a[15] = 1, this;
}
equals(e) {
const t = this.elements, i = e.elements;
for (let r = 0; r < 16; r++)
if (t[r] !== i[r]) return !1;
return !0;
}
fromArray(e, t = 0) {
for (let i = 0; i < 16; i++)
this.elements[i] = e[i + t];
return this;
}
toArray(e = [], t = 0) {
const i = this.elements;
return e[t] = i[0], e[t + 1] = i[1], e[t + 2] = i[2], e[t + 3] = i[3], e[t + 4] = i[4], e[t + 5] = i[5], e[t + 6] = i[6], e[t + 7] = i[7], e[t + 8] = i[8], e[t + 9] = i[9], e[t + 10] = i[10], e[t + 11] = i[11], e[t + 12] = i[12], e[t + 13] = i[13], e[t + 14] = i[14], e[t + 15] = i[15], e;
}
}
Xe.prototype.isMatrix4 = !0;
const Ys = /* @__PURE__ */ new q(), ri = /* @__PURE__ */ new Xe(), yF = /* @__PURE__ */ new q(0, 0, 0), bF = /* @__PURE__ */ new q(1, 1, 1), xr = /* @__PURE__ */ new q(), Ul = /* @__PURE__ */ new q(), Bn = /* @__PURE__ */ new q(), Xm = /* @__PURE__ */ new Xe(), Ym = /* @__PURE__ */ new bn();
class Us {
constructor(e = 0, t = 0, i = 0, r = Us.DefaultOrder) {
this._x = e, this._y = t, this._z = i, this._order = r;
}
get x() {
return this._x;
}
set x(e) {
this._x = e, this._onChangeCallback();
}
get y() {
return this._y;
}
set y(e) {
this._y = e, this._onChangeCallback();
}
get z() {
return this._z;
}
set z(e) {
this._z = e, this._onChangeCallback();
}
get order() {
return this._order;
}
set order(e) {
this._order = e, this._onChangeCallback();
}
set(e, t, i, r = this._order) {
return this._x = e, this._y = t, this._z = i, this._order = r, this._onChangeCallback(), this;
}
clone() {
return new this.constructor(this._x, this._y, this._z, this._order);
}
copy(e) {
return this._x = e._x, this._y = e._y, this._z = e._z, this._order = e._order, this._onChangeCallback(), this;
}
setFromRotationMatrix(e, t = this._order, i = !0) {
const r = e.elements, s = r[0], o = r[4], a = r[8], c = r[1], l = r[5], d = r[9], h = r[2], f = r[6], g = r[10];
switch (t) {
case "XYZ":
this._y = Math.asin(gn(a, -1, 1)), Math.abs(a) < 0.9999999 ? (this._x = Math.atan2(-d, g), this._z = Math.atan2(-o, s)) : (this._x = Math.atan2(f, l), this._z = 0);
break;
case "YXZ":
this._x = Math.asin(-gn(d, -1, 1)), Math.abs(d) < 0.9999999 ? (this._y = Math.atan2(a, g), this._z = Math.atan2(c, l)) : (this._y = Math.atan2(-h, s), this._z = 0);
break;
case "ZXY":
this._x = Math.asin(gn(f, -1, 1)), Math.abs(f) < 0.9999999 ? (this._y = Math.atan2(-h, g), this._z = Math.atan2(-o, l)) : (this._y = 0, this._z = Math.atan2(c, s));
break;
case "ZYX":
this._y = Math.asin(-gn(h, -1, 1)), Math.abs(h) < 0.9999999 ? (this._x = Math.atan2(f, g), this._z = Math.atan2(c, s)) : (this._x = 0, this._z = Math.atan2(-o, l));
break;
case "YZX":
this._z = Math.asin(gn(c, -1, 1)), Math.abs(c) < 0.9999999 ? (this._x = Math.atan2(-d, l), this._y = Math.atan2(-h, s)) : (this._x = 0, this._y = Math.atan2(a, g));
break;
case "XZY":
this._z = Math.asin(-gn(o, -1, 1)), Math.abs(o) < 0.9999999 ? (this._x = Math.atan2(f, l), this._y = Math.atan2(a, s)) : (this._x = Math.atan2(-d, g), this._y = 0);
break;
default:
console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: " + t);
}
return this._order = t, i === !0 && this._onChangeCallback(), this;
}
setFromQuaternion(e, t, i) {
return Xm.makeRotationFromQuaternion(e), this.setFromRotationMatrix(Xm, t, i);
}
setFromVector3(e, t = this._order) {
return this.set(e.x, e.y, e.z, t);
}
reorder(e) {
return Ym.setFromEuler(this), this.setFromQuaternion(Ym, e);
}
equals(e) {
return e._x === this._x && e._y === this._y && e._z === this._z && e._order === this._order;
}
fromArray(e) {
return this._x = e[0], this._y = e[1], this._z = e[2], e[3] !== void 0 && (this._order = e[3]), this._onChangeCallback(), this;
}
toArray(e = [], t = 0) {
return e[t] = this._x, e[t + 1] = this._y, e[t + 2] = this._z, e[t + 3] = this._order, e;
}
toVector3(e) {
return e ? e.set(this._x, this._y, this._z) : new q(this._x, this._y, this._z);
}
_onChange(e) {
return this._onChangeCallback = e, this;
}
_onChangeCallback() {
}
}
Us.prototype.isEuler = !0;
Us.DefaultOrder = "XYZ";
Us.RotationOrders = ["XYZ", "YZX", "ZXY", "XZY", "YXZ", "ZYX"];
class Cf {
constructor() {
this.mask = 1;
}
set(e) {
this.mask = 1 << e | 0;
}
enable(e) {
this.mask |= 1 << e | 0;
}
enableAll() {
this.mask = -1;
}
toggle(e) {
this.mask ^= 1 << e | 0;
}
disable(e) {
this.mask &= ~(1 << e | 0);
}
disableAll() {
this.mask = 0;
}
test(e) {
return (this.mask & e.mask) !== 0;
}
}
let xF = 0;
const Jm = /* @__PURE__ */ new q(), Js = /* @__PURE__ */ new bn(), $i = /* @__PURE__ */ new Xe(), zl = /* @__PURE__ */ new q(), fa = /* @__PURE__ */ new q(), MF = /* @__PURE__ */ new q(), wF = /* @__PURE__ */ new bn(), Km = /* @__PURE__ */ new q(1, 0, 0), qm = /* @__PURE__ */ new q(0, 1, 0), Qm = /* @__PURE__ */ new q(0, 0, 1), AF = { type: "added" }, eg = { type: "removed" };
class ut extends Kr {
constructor() {
super(), Object.defineProperty(this, "id", { value: xF++ }), this.uuid = Wn(), this.name = "", this.type = "Object3D", this.parent = null, this.children = [], this.up = ut.DefaultUp.clone();
const e = new q(), t = new Us(), i = new bn(), r = new q(1, 1, 1);
function s() {
i.setFromEuler(t, !1);
}
function o() {
t.setFromQuaternion(i, void 0, !1);
}
t._onChange(s), i._onChange(o), Object.defineProperties(this, {
position: {
configurable: !0,
enumerable: !0,
value: e
},
rotation: {
configurable: !0,
enumerable: !0,
value: t
},
quaternion: {
configurable: !0,
enumerable: !0,
value: i
},
scale: {
configurable: !0,
enumerable: !0,
value: r
},
modelViewMatrix: {
value: new Xe()
},
normalMatrix: {
value: new rn()
}
}), this.matrix = new Xe(), this.matrixWorld = new Xe(), this.matrixAutoUpdate = ut.DefaultMatrixAutoUpdate, this.matrixWorldNeedsUpdate = !1, this.layers = new Cf(), this.visible = !0, this.castShadow = !1, this.receiveShadow = !1, this.frustumCulled = !0, this.renderOrder = 0, this.animations = [], this.userData = {};
}
onBeforeRender() {
}
onAfterRender() {
}
applyMatrix4(e) {
this.matrixAutoUpdate && this.updateMatrix(), this.matrix.premultiply(e), this.matrix.decompose(this.position, this.quaternion, this.scale);
}
applyQuaternion(e) {
return this.quaternion.premultiply(e), this;
}
setRotationFromAxisAngle(e, t) {
this.quaternion.setFromAxisAngle(e, t);
}
setRotationFromEuler(e) {
this.quaternion.setFromEuler(e, !0);
}
setRotationFromMatrix(e) {
this.quaternion.setFromRotationMatrix(e);
}
setRotationFromQuaternion(e) {
this.quaternion.copy(e);
}
rotateOnAxis(e, t) {
return Js.setFromAxisAngle(e, t), this.quaternion.multiply(Js), this;
}
rotateOnWorldAxis(e, t) {
return Js.setFromAxisAngle(e, t), this.quaternion.premultiply(Js), this;
}
rotateX(e) {
return this.rotateOnAxis(Km, e);
}
rotateY(e) {
return this.rotateOnAxis(qm, e);
}
rotateZ(e) {
return this.rotateOnAxis(Qm, e);
}
translateOnAxis(e, t) {
return Jm.copy(e).applyQuaternion(this.quaternion), this.position.add(Jm.multiplyScalar(t)), this;
}
translateX(e) {
return this.translateOnAxis(Km, e);
}
translateY(e) {
return this.translateOnAxis(qm, e);
}
translateZ(e) {
return this.translateOnAxis(Qm, e);
}
localToWorld(e) {
return e.applyMatrix4(this.matrixWorld);
}
worldToLocal(e) {
return e.applyMatrix4($i.copy(this.matrixWorld).invert());
}
lookAt(e, t, i) {
e.isVector3 ? zl.copy(e) : zl.set(e, t, i);
const r = this.parent;
this.updateWorldMatrix(!0, !1), fa.setFromMatrixPosition(this.matrixWorld), this.isCamera || this.isLight ? $i.lookAt(fa, zl, this.up) : $i.lookAt(zl, fa, this.up), this.quaternion.setFromRotationMatrix($i), r && ($i.extractRotation(r.matrixWorld), Js.setFromRotationMatrix($i), this.quaternion.premultiply(Js.invert()));
}
add(e) {
if (arguments.length > 1) {
for (let t = 0; t < arguments.length; t++)
this.add(arguments[t]);
return this;
}
return e === this ? (console.error("THREE.Object3D.add: object can't be added as a child of itself.", e), this) : (e && e.isObject3D ? (e.parent !== null && e.parent.remove(e), e.parent = this, this.children.push(e), e.dispatchEvent(AF)) : console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.", e), this);
}
remove(e) {
if (arguments.length > 1) {
for (let i = 0; i < arguments.length; i++)
this.remove(arguments[i]);
return this;
}
const t = this.children.indexOf(e);
return t !== -1 && (e.parent = null, this.children.splice(t, 1), e.dispatchEvent(eg)), this;
}
removeFromParent() {
const e = this.parent;
return e !== null && e.remove(this), this;
}
clear() {
for (let e = 0; e < this.children.length; e++) {
const t = this.children[e];
t.parent = null, t.dispatchEvent(eg);
}
return this.children.length = 0, this;
}
attach(e) {
return this.updateWorldMatrix(!0, !1), $i.copy(this.matrixWorld).invert(), e.parent !== null && (e.parent.updateWorldMatrix(!0, !1), $i.multiply(e.parent.matrixWorld)), e.applyMatrix4($i), this.add(e), e.updateWorldMatrix(!1, !0), this;
}
getObjectById(e) {
return this.getObjectByProperty("id", e);
}
getObjectByName(e) {
return this.getObjectByProperty("name", e);
}
getObjectByProperty(e, t) {
if (this[e] === t) return this;
for (let i = 0, r = this.children.length; i < r; i++) {
const o = this.children[i].getObjectByProperty(e, t);
if (o !== void 0)
return o;
}
}
getWorldPosition(e) {
return this.updateWorldMatrix(!0, !1), e.setFromMatrixPosition(this.matrixWorld);
}
getWorldQuaternion(e) {
return this.updateWorldMatrix(!0, !1), this.matrixWorld.decompose(fa, e, MF), e;
}
getWorldScale(e) {
return this.updateWorldMatrix(!0, !1), this.matrixWorld.decompose(fa, wF, e), e;
}
getWorldDirection(e) {
this.updateWorldMatrix(!0, !1);
const t = this.matrixWorld.elements;
return e.set(t[8], t[9], t[10]).normalize();
}
raycast() {
}
traverse(e) {
e(this);
const t = this.children;
for (let i = 0, r = t.length; i < r; i++)
t[i].traverse(e);
}
traverseVisible(e) {
if (this.visible === !1) return;
e(this);
const t = this.children;
for (let i = 0, r = t.length; i < r; i++)
t[i].traverseVisible(e);
}
traverseAncestors(e) {
const t = this.parent;
t !== null && (e(t), t.traverseAncestors(e));
}
updateMatrix() {
this.matrix.compose(this.position, this.quaternion, this.scale), this.matrixWorldNeedsUpdate = !0;
}
updateMatrixWorld(e) {
this.matrixAutoUpdate && this.updateMatrix(), (this.matrixWorldNeedsUpdate || e) && (this.parent === null ? this.matrixWorld.copy(this.matrix) : this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix), this.matrixWorldNeedsUpdate = !1, e = !0);
const t = this.children;
for (let i = 0, r = t.length; i < r; i++)
t[i].updateMatrixWorld(e);
}
updateWorldMatrix(e, t) {
const i = this.parent;
if (e === !0 && i !== null && i.updateWorldMatrix(!0, !1), this.matrixAutoUpdate && this.updateMatrix(), this.parent === null ? this.matrixWorld.copy(this.matrix) : this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix), t === !0) {
const r = this.children;
for (let s = 0, o = r.length; s < o; s++)
r[s].updateWorldMatrix(!1, !0);
}
}
toJSON(e) {
const t = e === void 0 || typeof e == "string", i = {};
t && (e = {
geometries: {},
materials: {},
textures: {},
images: {},
shapes: {},
skeletons: {},
animations: {}
}, i.metadata = {
version: 4.5,
type: "Object",
generator: "Object3D.toJSON"
});
const r = {};
r.uuid = this.uuid, r.type = this.type, this.name !== "" && (r.name = this.name), this.castShadow === !0 && (r.castShadow = !0), this.receiveShadow === !0 && (r.receiveShadow = !0), this.visible === !1 && (r.visible = !1), this.frustumCulled === !1 && (r.frustumCulled = !1), this.renderOrder !== 0 && (r.renderOrder = this.renderOrder), JSON.stringify(this.userData) !== "{}" && (r.userData = this.userData), r.layers = this.layers.mask, r.matrix = this.matrix.toArray(), this.matrixAutoUpdate === !1 && (r.matrixAutoUpdate = !1), this.isInstancedMesh && (r.type = "InstancedMesh", r.count = this.count, r.instanceMatrix = this.instanceMatrix.toJSON(), this.instanceColor !== null && (r.instanceColor = this.instanceColor.toJSON()));
function s(a, c) {
return a[c.uuid] === void 0 && (a[c.uuid] = c.toJSON(e)), c.uuid;
}
if (this.isScene)
this.background && (this.background.isColor ? r.background = this.background.toJSON() : this.background.isTexture && (r.background = this.background.toJSON(e).uuid)), this.environment && this.environment.isTexture && (r.environment = this.environment.toJSON(e).uuid);
else if (this.isMesh || this.isLine || this.isPoints) {
r.geometry = s(e.geometries, this.geometry);
const a = this.geometry.parameters;
if (a !== void 0 && a.shapes !== void 0) {
const c = a.shapes;
if (Array.isArray(c))
for (let l = 0, d = c.length; l < d; l++) {
const h = c[l];
s(e.shapes, h);
}
else
s(e.shapes, c);
}
}
if (this.isSkinnedMesh && (r.bindMode = this.bindMode, r.bindMatrix = this.bindMatrix.toArray(), this.skeleton !== void 0 && (s(e.skeletons, this.skeleton), r.skeleton = this.skeleton.uuid)), this.material !== void 0)
if (Array.isArray(this.material)) {
const a = [];
for (let c = 0, l = this.material.length; c < l; c++)
a.push(s(e.materials, this.material[c]));
r.material = a;
} else
r.material = s(e.materials, this.material);
if (this.children.length > 0) {
r.children = [];
for (let a = 0; a < this.children.length; a++)
r.children.push(this.children[a].toJSON(e).object);
}
if (this.animations.length > 0) {
r.animations = [];
for (let a = 0; a < this.animations.length; a++) {
const c = this.animations[a];
r.animations.push(s(e.animations, c));
}
}
if (t) {
const a = o(e.geometries), c = o(e.materials), l = o(e.textures), d = o(e.images), h = o(e.shapes), f = o(e.skeletons), g = o(e.animations);
a.length > 0 && (i.geometries = a), c.length > 0 && (i.materials = c), l.length > 0 && (i.textures = l), d.length > 0 && (i.images = d), h.length > 0 && (i.shapes = h), f.length > 0 && (i.skeletons = f), g.length > 0 && (i.animations = g);
}
return i.object = r, i;
function o(a) {
const c = [];
for (const l in a) {
const d = a[l];
delete d.metadata, c.push(d);
}
return c;
}
}
clone(e) {
return new this.constructor().copy(this, e);
}
copy(e, t = !0) {
if (this.name = e.name, this.up.copy(e.up), this.position.copy(e.position), this.rotation.order = e.rotation.order, this.quaternion.copy(e.quaternion), this.scale.copy(e.scale), this.matrix.copy(e.matrix), this.matrixWorld.copy(e.matrixWorld), this.matrixAutoUpdate = e.matrixAutoUpdate, this.matrixWorldNeedsUpdate = e.matrixWorldNeedsUpdate, this.layers.mask = e.layers.mask, this.visible = e.visible, this.castShadow = e.castShadow, this.receiveShadow = e.receiveShadow, this.frustumCulled = e.frustumCulled, this.renderOrder = e.renderOrder, this.userData = JSON.parse(JSON.stringify(e.userData)), t === !0)
for (let i = 0; i < e.children.length; i++) {
const r = e.children[i];
this.add(r.clone());
}
return this;
}
}
ut.DefaultUp = new q(0, 1, 0);
ut.DefaultMatrixAutoUpdate = !0;
ut.prototype.isObject3D = !0;
const si = /* @__PURE__ */ new q(), Zi = /* @__PURE__ */ new q(), th = /* @__PURE__ */ new q(), Xi = /* @__PURE__ */ new q(), Ks = /* @__PURE__ */ new q(), qs = /* @__PURE__ */ new q(), tg = /* @__PURE__ */ new q(), nh = /* @__PURE__ */ new q(), ih = /* @__PURE__ */ new q(), rh = /* @__PURE__ */ new q();
class Zt {
constructor(e = new q(), t = new q(), i = new q()) {
this.a = e, this.b = t, this.c = i;
}
static getNormal(e, t, i, r) {
r.subVectors(i, t), si.subVectors(e, t), r.cross(si);
const s = r.lengthSq();
return s > 0 ? r.multiplyScalar(1 / Math.sqrt(s)) : r.set(0, 0, 0);
}
// static/instance method to calculate barycentric coordinates
// based on: http://www.blackpawn.com/texts/pointinpoly/default.html
static getBarycoord(e, t, i, r, s) {
si.subVectors(r, t), Zi.subVectors(i, t), th.subVectors(e, t);
const o = si.dot(si), a = si.dot(Zi), c = si.dot(th), l = Zi.dot(Zi), d = Zi.dot(th), h = o * l - a * a;
if (h === 0)
return s.set(-2, -1, -1);
const f = 1 / h, g = (l * c - a * d) * f, p = (o * d - a * c) * f;
return s.set(1 - g - p, p, g);
}
static containsPoint(e, t, i, r) {
return this.getBarycoord(e, t, i, r, Xi), Xi.x >= 0 && Xi.y >= 0 && Xi.x + Xi.y <= 1;
}
static getUV(e, t, i, r, s, o, a, c) {
return this.getBarycoord(e, t, i, r, Xi), c.set(0, 0), c.addScaledVector(s, Xi.x), c.addScaledVector(o, Xi.y), c.addScaledVector(a, Xi.z), c;
}
static isFrontFacing(e, t, i, r) {
return si.subVectors(i, t), Zi.subVectors(e, t), si.cross(Zi).dot(r) < 0;
}
set(e, t, i) {
return this.a.copy(e), this.b.copy(t), this.c.copy(i), this;
}
setFromPointsAndIndices(e, t, i, r) {
return this.a.copy(e[t]), this.b.copy(e[i]), this.c.copy(e[r]), this;
}
clone() {
return new this.constructor().copy(this);
}
copy(e) {
return this.a.copy(e.a), this.b.copy(e.b), this.c.copy(e.c), this;
}
getArea() {
return si.subVectors(this.c, this.b), Zi.subVectors(this.a, this.b), si.cross(Zi).length() * 0.5;
}
getMidpoint(e) {
return e.addVectors(this.a, this.b).add(this.c).multiplyScalar(1 / 3);
}
getNormal(e) {
return Zt.getNormal(this.a, this.b, this.c, e);
}
getPlane(e) {
return e.setFromCoplanarPoints(this.a, this.b, this.c);
}
getBarycoord(e, t) {
return Zt.getBarycoord(e, this.a, this.b, this.c, t);
}
getUV(e, t, i, r, s) {
return Zt.getUV(e, this.a, this.b, this.c, t, i, r, s);
}
containsPoint(e) {
return Zt.containsPoint(e, this.a, this.b, this.c);
}
isFrontFacing(e) {
return Zt.isFrontFacing(this.a, this.b, this.c, e);
}
intersectsBox(e) {
return e.intersectsTriangle(this);
}
closestPointToPoint(e, t) {
const i = this.a, r = this.b, s = this.c;
let o, a;
Ks.subVectors(r, i), qs.subVectors(s, i), nh.subVectors(e, i);
const c = Ks.dot(nh), l = qs.dot(nh);
if (c <= 0 && l <= 0)
return t.copy(i);
ih.subVectors(e, r);
const d = Ks.dot(ih), h = qs.dot(ih);
if (d >= 0 && h <= d)
return t.copy(r);
const f = c * h - d * l;
if (f <= 0 && c >= 0 && d <= 0)
return o = c / (c - d), t.copy(i).addScaledVector(Ks, o);
rh.subVectors(e, s);
const g = Ks.dot(rh), p = qs.dot(rh);
if (p >= 0 && g <= p)
return t.copy(s);
const u = g * l - c * p;
if (u <= 0 && l >= 0 && p <= 0)
return a = l / (l - p), t.copy(i).addScaledVector(qs, a);
const y = d * p - g * h;
if (y <= 0 && h - d >= 0 && g - p >= 0)
return tg.subVectors(s, r), a = (h - d) / (h - d + (g - p)), t.copy(r).addScaledVector(tg, a);
const v = 1 / (y + u + f);
return o = u * v, a = f * v, t.copy(i).addScaledVector(Ks, o).addScaledVector(qs, a);
}
equals(e) {
return e.a.equals(this.a) && e.b.equals(this.b) && e.c.equals(this.c);
}
}
let SF = 0;
class tn extends Kr {
constructor() {
super(), Object.defineProperty(this, "id", { value: SF++ }), this.uuid = Wn(), this.name = "", this.type = "Material", this.fog = !0, this.blending = vo, this.side = Hr, this.vertexColors = !1, this.opacity = 1, this.transparent = !1, this.blendSrc = bf, this.blendDst = xf, this.blendEquation = ps, this.blendSrcAlpha = null, this.blendDstAlpha = null, this.blendEquationAlpha = null, this.depthFunc = kc, this.depthTest = !0, this.depthWrite = !0, this.stencilWriteMask = 255, this.stencilFunc = Qb, this.stencilRef = 0, this.stencilFuncMask = 255, this.stencilFail = Lc, this.stencilZFail = Lc, this.stencilZPass = Lc, this.stencilWrite = !1, this.clippingPlanes = null, this.clipIntersection = !1, this.clipShadows = !1, this.shadowSide = null, this.colorWrite = !0, this.precision = null, this.polygonOffset = !1, this.polygonOffsetFactor = 0, this.polygonOffsetUnits = 0, this.dithering = !1, this.alphaTest = 0, this.alphaToCoverage = !1, this.premultipliedAlpha = !1, this.visible = !0, this.toneMapped = !0, this.userData = {}, this.version = 0;
}
onBuild() {
}
onBeforeCompile() {
}
customProgramCacheKey() {
return this.onBeforeCompile.toString();
}
setValues(e) {
if (e !== void 0)
for (const t in e) {
const i = e[t];
if (i === void 0) {
console.warn("THREE.Material: '" + t + "' parameter is undefined.");
continue;
}
if (t === "shading") {
console.warn("THREE." + this.type + ": .shading has been removed. Use the boolean .flatShading instead."), this.flatShading = i === yf;
continue;
}
const r = this[t];
if (r === void 0) {
console.warn("THREE." + this.type + ": '" + t + "' is not a property of this material.");
continue;
}
r && r.isColor ? r.set(i) : r && r.isVector3 && i && i.isVector3 ? r.copy(i) : this[t] = i;
}
}
toJSON(e) {
const t = e === void 0 || typeof e == "string";
t && (e = {
textures: {},
images: {}
});
const i = {
metadata: {
version: 4.5,
type: "Material",
generator: "Material.toJSON"
}
};
i.uuid = this.uuid, i.type = this.type, this.name !== "" && (i.name = this.name), this.color && this.color.isColor && (i.color = this.color.getHex()), this.roughness !== void 0 && (i.roughness = this.roughness), this.metalness !== void 0 && (i.metalness = this.metalness), this.sheen && this.sheen.isColor && (i.sheen = this.sheen.getHex()), this.emissive && this.emissive.isColor && (i.emissive = this.emissive.getHex()), this.emissiveIntensity && this.emissiveIntensity !== 1 && (i.emissiveIntensity = this.emissiveIntensity), this.specular && this.specular.isColor && (i.specular = this.specular.getHex()), this.shininess !== void 0 && (i.shininess = this.shininess), this.clearcoat !== void 0 && (i.clearcoat = this.clearcoat), this.clearcoatRoughness !== void 0 && (i.clearcoatRoughness = this.clearcoatRoughness), this.clearcoatMap && this.clearcoatMap.isTexture && (i.clearcoatMap = this.clearcoatMap.toJSON(e).uuid), this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture && (i.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON(e).uuid), this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture && (i.clearcoatNormalMap = this.clearcoatNormalMap.toJSON(e).uuid, i.clearcoatNormalScale = this.clearcoatNormalScale.toArray()), this.map && this.map.isTexture && (i.map = this.map.toJSON(e).uuid), this.matcap && this.matcap.isTexture && (i.matcap = this.matcap.toJSON(e).uuid), this.alphaMap && this.alphaMap.isTexture && (i.alphaMap = this.alphaMap.toJSON(e).uuid), this.lightMap && this.lightMap.isTexture && (i.lightMap = this.lightMap.toJSON(e).uuid, i.lightMapIntensity = this.lightMapIntensity), this.aoMap && this.aoMap.isTexture && (i.aoMap = this.aoMap.toJSON(e).uuid, i.aoMapIntensity = this.aoMapIntensity), this.bumpMap && this.bumpMap.isTexture && (i.bumpMap = this.bumpMap.toJSON(e).uuid, i.bumpScale = this.bumpScale), this.normalMap && this.normalMap.isTexture && (i.normalMap = this.normalMap.toJSON(e).uuid, i.normalMapType = this.normalMapType, i.normalScale = this.normalScale.toArray()), this.displacementMap && this.displacementMap.isTexture && (i.displacementMap = this.displacementMap.toJSON(e).uuid, i.displacementScale = this.displacementScale, i.displacementBias = this.displacementBias), this.roughnessMap && this.roughnessMap.isTexture && (i.roughnessMap = this.roughnessMap.toJSON(e).uuid), this.metalnessMap && this.metalnessMap.isTexture && (i.metalnessMap = this.metalnessMap.toJSON(e).uuid), this.emissiveMap && this.emissiveMap.isTexture && (i.emissiveMap = this.emissiveMap.toJSON(e).uuid), this.specularMap && this.specularMap.isTexture && (i.specularMap = this.specularMap.toJSON(e).uuid), this.envMap && this.envMap.isTexture && (i.envMap = this.envMap.toJSON(e).uuid, this.combine !== void 0 && (i.combine = this.combine)), this.envMapIntensity !== void 0 && (i.envMapIntensity = this.envMapIntensity), this.reflectivity !== void 0 && (i.reflectivity = this.reflectivity), this.refractionRatio !== void 0 && (i.refractionRatio = this.refractionRatio), this.gradientMap && this.gradientMap.isTexture && (i.gradientMap = this.gradientMap.toJSON(e).uuid), this.transmission !== void 0 && (i.transmission = this.transmission), this.transmissionMap && this.transmissionMap.isTexture && (i.transmissionMap = this.transmissionMap.toJSON(e).uuid), this.thickness !== void 0 && (i.thickness = this.thickness), this.thicknessMap && this.thicknessMap.isTexture && (i.thicknessMap = this.thicknessMap.toJSON(e).uuid), this.attenuationDistance !== void 0 && (i.attenuationDistance = this.attenuationDistance), this.attenuationColor !== void 0 && (i.attenuationColor = this.attenuationColor.getHex()), this.size !== void 0 && (i.size = this.size), this.shadowSide !== null && (i.shadowSide = this.shadowSide), this.sizeAttenuation !== void 0 && (i.sizeAttenuation = this.sizeAttenuation), this.blending !== vo && (i.blending = this.blending), this.side !== Hr && (i.side = this.side), this.vertexColors && (i.vertexColors = !0), this.opacity < 1 && (i.opacity = this.opacity), this.transparent === !0 && (i.transparent = this.transparent), i.depthFunc = this.depthFunc, i.depthTest = this.depthTest, i.depthWrite = this.depthWrite, i.colorWrite = this.colorWrite, i.stencilWrite = this.stencilWrite, i.stencilWriteMask = this.stencilWriteMask, i.stencilFunc = this.stencilFunc, i.stencilRef = this.stencilRef, i.stencilFuncMask = this.stencilFuncMask, i.stencilFail = this.stencilFail, i.stencilZFail = this.stencilZFail, i.stencilZPass = this.stencilZPass, this.rotation && this.rotation !== 0 && (i.rotation = this.rotation), this.polygonOffset === !0 && (i.polygonOffset = !0), this.polygonOffsetFactor !== 0 && (i.polygonOffsetFactor = this.polygonOffsetFactor), this.polygonOffsetUnits !== 0 && (i.polygonOffsetUnits = this.polygonOffsetUnits), this.linewidth && this.linewidth !== 1 && (i.linewidth = this.linewidth), this.dashSize !== void 0 && (i.dashSize = this.dashSize), this.gapSize !== void 0 && (i.gapSize = this.gapSize), this.scale !== void 0 && (i.scale = this.scale), this.dithering === !0 && (i.dithering = !0), this.alphaTest > 0 && (i.alphaTest = this.alphaTest), this.alphaToCoverage === !0 && (i.alphaToCoverage = this.alphaToCoverage), this.premultipliedAlpha === !0 && (i.premultipliedAlpha = this.premultipliedAlpha), this.wireframe === !0 && (i.wireframe = this.wireframe), this.wireframeLinewidth > 1 && (i.wireframeLinewidth = this.wireframeLinewidth), this.wireframeLinecap !== "round" && (i.wireframeLinecap = this.wireframeLinecap), this.wireframeLinejoin !== "round" && (i.wireframeLinejoin = this.wireframeLinejoin), this.morphTargets === !0 && (i.morphTargets = !0), this.morphNormals === !0 && (i.morphNormals = !0), this.flatShading === !0 && (i.flatShading = this.flatShading), this.visible === !1 && (i.visible = !1), this.toneMapped === !1 && (i.toneMapped = !1), JSON.stringify(this.userData) !== "{}" && (i.userData = this.userData);
function r(s) {
const o = [];
for (const a in s) {
const c = s[a];
delete c.metadata, o.push(c);
}
return o;
}
if (t) {
const s = r(e.textures), o = r(e.images);
s.length > 0 && (i.textures = s), o.length > 0 && (i.images = o);
}
return i;
}
clone() {
return new this.constructor().copy(this);
}
copy(e) {
this.name = e.name, this.fog = e.fog, this.blending = e.blending, this.side = e.side, this.vertexColors = e.vertexColors, this.opacity = e.opacity, this.transparent = e.transparent, this.blendSrc = e.blendSrc, this.blendDst = e.blendDst, this.blendEquation = e.blendEquation, this.blendSrcAlpha = e.blendSrcAlpha, this.blendDstAlpha = e.blendDstAlpha, this.blendEquationAlpha = e.blendEquationAlpha, this.depthFunc = e.depthFunc, this.depthTest = e.depthTest, this.depthWrite = e.depthWrite, this.stencilWriteMask = e.stencilWriteMask, this.stencilFunc = e.stencilFunc, this.stencilRef = e.stencilRef, this.stencilFuncMask = e.stencilFuncMask, this.stencilFail = e.stencilFail, this.stencilZFail = e.stencilZFail, this.stencilZPass = e.stencilZPass, this.stencilWrite = e.stencilWrite;
const t = e.clippingPlanes;
let i = null;
if (t !== null) {
const r = t.length;
i = new Array(r);
for (let s = 0; s !== r; ++s)
i[s] = t[s].clone();
}
return this.clippingPlanes = i, this.clipIntersection = e.clipIntersection, this.clipShadows = e.clipShadows, this.shadowSide = e.shadowSide, this.colorWrite = e.colorWrite, this.precision = e.precision, this.polygonOffset = e.polygonOffset, this.polygonOffsetFactor = e.polygonOffsetFactor, this.polygonOffsetUnits = e.polygonOffsetUnits, this.dithering = e.dithering, this.alphaTest = e.alphaTest, this.alphaToCoverage = e.alphaToCoverage, this.premultipliedAlpha = e.premultipliedAlpha, this.visible = e.visible, this.toneMapped = e.toneMapped, this.userData = JSON.parse(JSON.stringify(e.userData)), this;
}
dispose() {
this.dispatchEvent({ type: "dispose" });
}
set needsUpdate(e) {
e === !0 && this.version++;
}
}
tn.prototype.isMaterial = !0;
const ix = {
aliceblue: 15792383,
antiquewhite: 16444375,
aqua: 65535,
aquamarine: 8388564,
azure: 15794175,
beige: 16119260,
bisque: 16770244,
black: 0,
blanchedalmond: 16772045,
blue: 255,
blueviolet: 9055202,
brown: 10824234,
burlywood: 14596231,
cadetblue: 6266528,
chartreuse: 8388352,
chocolate: 13789470,
coral: 16744272,
cornflowerblue: 6591981,
cornsilk: 16775388,
crimson: 14423100,
cyan: 65535,
darkblue: 139,
darkcyan: 35723,
darkgoldenrod: 12092939,
darkgray: 11119017,
darkgreen: 25600,
darkgrey: 11119017,
darkkhaki: 12433259,
darkmagenta: 9109643,
darkolivegreen: 5597999,
darkorange: 16747520,
darkorchid: 10040012,
darkred: 9109504,
darksalmon: 15308410,
darkseagreen: 9419919,
darkslateblue: 4734347,
darkslategray: 3100495,
darkslategrey: 3100495,
darkturquoise: 52945,
darkviolet: 9699539,
deeppink: 16716947,
deepskyblue: 49151,
dimgray: 6908265,
dimgrey: 6908265,
dodgerblue: 2003199,
firebrick: 11674146,
floralwhite: 16775920,
forestgreen: 2263842,
fuchsia: 16711935,
gainsboro: 14474460,
ghostwhite: 16316671,
gold: 16766720,
goldenrod: 14329120,
gray: 8421504,
green: 32768,
greenyellow: 11403055,
grey: 8421504,
honeydew: 15794160,
hotpink: 16738740,
indianred: 13458524,
indigo: 4915330,
ivory: 16777200,
khaki: 15787660,
lavender: 15132410,
lavenderblush: 16773365,
lawngreen: 8190976,
lemonchiffon: 16775885,
lightblue: 11393254,
lightcoral: 15761536,
lightcyan: 14745599,
lightgoldenrodyellow: 16448210,
lightgray: 13882323,
lightgreen: 9498256,
lightgrey: 13882323,
lightpink: 16758465,
lightsalmon: 16752762,
lightseagreen: 2142890,
lightskyblue: 8900346,
lightslategray: 7833753,
lightslategrey: 7833753,
lightsteelblue: 11584734,
lightyellow: 16777184,
lime: 65280,
limegreen: 3329330,
linen: 16445670,
magenta: 16711935,
maroon: 8388608,
mediumaquamarine: 6737322,
mediumblue: 205,
mediumorchid: 12211667,
mediumpurple: 9662683,
mediumseagreen: 3978097,
mediumslateblue: 8087790,
mediumspringgreen: 64154,
mediumturquoise: 4772300,
mediumvioletred: 13047173,
midnightblue: 1644912,
mintcream: 16121850,
mistyrose: 16770273,
moccasin: 16770229,
navajowhite: 16768685,
navy: 128,
oldlace: 16643558,
olive: 8421376,
olivedrab: 7048739,
orange: 16753920,
orangered: 16729344,
orchid: 14315734,
palegoldenrod: 15657130,
palegreen: 10025880,
paleturquoise: 11529966,
palevioletred: 14381203,
papayawhip: 16773077,
peachpuff: 16767673,
peru: 13468991,
pink: 16761035,
plum: 14524637,
powderblue: 11591910,
purple: 8388736,
rebeccapurple: 6697881,
red: 16711680,
rosybrown: 12357519,
royalblue: 4286945,
saddlebrown: 9127187,
salmon: 16416882,
sandybrown: 16032864,
seagreen: 3050327,
seashell: 16774638,
sienna: 10506797,
silver: 12632256,
skyblue: 8900331,
slateblue: 6970061,
slategray: 7372944,
slategrey: 7372944,
snow: 16775930,
springgreen: 65407,
steelblue: 4620980,
tan: 13808780,
teal: 32896,
thistle: 14204888,
tomato: 16737095,
turquoise: 4251856,
violet: 15631086,
wheat: 16113331,
white: 16777215,
whitesmoke: 16119285,
yellow: 16776960,
yellowgreen: 10145074
}, oi = { h: 0, s: 0, l: 0 }, kl = { h: 0, s: 0, l: 0 };
function sh(n, e, t) {
return t < 0 && (t += 1), t > 1 && (t -= 1), t < 1 / 6 ? n + (e - n) * 6 * t : t < 1 / 2 ? e : t < 2 / 3 ? n + (e - n) * 6 * (2 / 3 - t) : n;
}
function oh(n) {
return n < 0.04045 ? n * 0.0773993808 : Math.pow(n * 0.9478672986 + 0.0521327014, 2.4);
}
function ah(n) {
return n < 31308e-7 ? n * 12.92 : 1.055 * Math.pow(n, 0.41666) - 0.055;
}
class Ue {
constructor(e, t, i) {
return t === void 0 && i === void 0 ? this.set(e) : this.setRGB(e, t, i);
}
set(e) {
return e && e.isColor ? this.copy(e) : typeof e == "number" ? this.setHex(e) : typeof e == "string" && this.setStyle(e), this;
}
setScalar(e) {
return this.r = e, this.g = e, this.b = e, this;
}
setHex(e) {
return e = Math.floor(e), this.r = (e >> 16 & 255) / 255, this.g = (e >> 8 & 255) / 255, this.b = (e & 255) / 255, this;
}
setRGB(e, t, i) {
return this.r = e, this.g = t, this.b = i, this;
}
setHSL(e, t, i) {
if (e = Tf(e, 1), t = gn(t, 0, 1), i = gn(i, 0, 1), t === 0)
this.r = this.g = this.b = i;
else {
const r = i <= 0.5 ? i * (1 + t) : i + t - i * t, s = 2 * i - r;
this.r = sh(s, r, e + 1 / 3), this.g = sh(s, r, e), this.b = sh(s, r, e - 1 / 3);
}
return this;
}
setStyle(e) {
function t(r) {
r !== void 0 && parseFloat(r) < 1 && console.warn("THREE.Color: Alpha component of " + e + " will be ignored.");
}
let i;
if (i = /^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(e)) {
let r;
const s = i[1], o = i[2];
switch (s) {
case "rgb":
case "rgba":
if (r = /^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))
return this.r = Math.min(255, parseInt(r[1], 10)) / 255, this.g = Math.min(255, parseInt(r[2], 10)) / 255, this.b = Math.min(255, parseInt(r[3], 10)) / 255, t(r[4]), this;
if (r = /^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))
return this.r = Math.min(100, parseInt(r[1], 10)) / 100, this.g = Math.min(100, parseInt(r[2], 10)) / 100, this.b = Math.min(100, parseInt(r[3], 10)) / 100, t(r[4]), this;
break;
case "hsl":
case "hsla":
if (r = /^\s*(\d*\.?\d+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o)) {
const a = parseFloat(r[1]) / 360, c = parseInt(r[2], 10) / 100, l = parseInt(r[3], 10) / 100;
return t(r[4]), this.setHSL(a, c, l);
}
break;
}
} else if (i = /^\#([A-Fa-f\d]+)$/.exec(e)) {
const r = i[1], s = r.length;
if (s === 3)
return this.r = parseInt(r.charAt(0) + r.charAt(0), 16) / 255, this.g = parseInt(r.charAt(1) + r.charAt(1), 16) / 255, this.b = parseInt(r.charAt(2) + r.charAt(2), 16) / 255, this;
if (s === 6)
return this.r = parseInt(r.charAt(0) + r.charAt(1), 16) / 255, this.g = parseInt(r.charAt(2) + r.charAt(3), 16) / 255, this.b = parseInt(r.charAt(4) + r.charAt(5), 16) / 255, this;
}
return e && e.length > 0 ? this.setColorName(e) : this;
}
setColorName(e) {
const t = ix[e.toLowerCase()];
return t !== void 0 ? this.setHex(t) : console.warn("THREE.Color: Unknown color " + e), this;
}
clone() {
return new this.constructor(this.r, this.g, this.b);
}
copy(e) {
return this.r = e.r, this.g = e.g, this.b = e.b, this;
}
copyGammaToLinear(e, t = 2) {
return this.r = Math.pow(e.r, t), this.g = Math.pow(e.g, t), this.b = Math.pow(e.b, t), this;
}
copyLinearToGamma(e, t = 2) {
const i = t > 0 ? 1 / t : 1;
return this.r = Math.pow(e.r, i), this.g = Math.pow(e.g, i), this.b = Math.pow(e.b, i), this;
}
convertGammaToLinear(e) {
return this.copyGammaToLinear(this, e), this;
}
convertLinearToGamma(e) {
return this.copyLinearToGamma(this, e), this;
}
copySRGBToLinear(e) {
return this.r = oh(e.r), this.g = oh(e.g), this.b = oh(e.b), this;
}
copyLinearToSRGB(e) {
return this.r = ah(e.r), this.g = ah(e.g), this.b = ah(e.b), this;
}
convertSRGBToLinear() {
return this.copySRGBToLinear(this), this;
}
convertLinearToSRGB() {
return this.copyLinearToSRGB(this), this;
}
getHex() {
return this.r * 255 << 16 ^ this.g * 255 << 8 ^ this.b * 255 << 0;
}
getHexString() {
return ("000000" + this.getHex().toString(16)).slice(-6);
}
getHSL(e) {
const t = this.r, i = this.g, r = this.b, s = Math.max(t, i, r), o = Math.min(t, i, r);
let a, c;
const l = (o + s) / 2;
if (o === s)
a = 0, c = 0;
else {
const d = s - o;
switch (c = l <= 0.5 ? d / (s + o) : d / (2 - s - o), s) {
case t:
a = (i - r) / d + (i < r ? 6 : 0);
break;
case i:
a = (r - t) / d + 2;
break;
case r:
a = (t - i) / d + 4;
break;
}
a /= 6;
}
return e.h = a, e.s = c, e.l = l, e;
}
getStyle() {
return "rgb(" + (this.r * 255 | 0) + "," + (this.g * 255 | 0) + "," + (this.b * 255 | 0) + ")";
}
offsetHSL(e, t, i) {
return this.getHSL(oi), oi.h += e, oi.s += t, oi.l += i, this.setHSL(oi.h, oi.s, oi.l), this;
}
add(e) {
return this.r += e.r, this.g += e.g, this.b += e.b, this;
}
addColors(e, t) {
return this.r = e.r + t.r, this.g = e.g + t.g, this.b = e.b + t.b, this;
}
addScalar(e) {
return this.r += e, this.g += e, this.b += e, this;
}
sub(e) {
return this.r = Math.max(0, this.r - e.r), this.g = Math.max(0, this.g - e.g), this.b = Math.max(0, this.b - e.b), this;
}
multiply(e) {
return this.r *= e.r, this.g *= e.g, this.b *= e.b, this;
}
multiplyScalar(e) {
return this.r *= e, this.g *= e, this.b *= e, this;
}
lerp(e, t) {
return this.r += (e.r - this.r) * t, this.g += (e.g - this.g) * t, this.b += (e.b - this.b) * t, this;
}
lerpColors(e, t, i) {
return this.r = e.r + (t.r - e.r) * i, this.g = e.g + (t.g - e.g) * i, this.b = e.b + (t.b - e.b) * i, this;
}
lerpHSL(e, t) {
this.getHSL(oi), e.getHSL(kl);
const i = Fa(oi.h, kl.h, t), r = Fa(oi.s, kl.s, t), s = Fa(oi.l, kl.l, t);
return this.setHSL(i, r, s), this;
}
equals(e) {
return e.r === this.r && e.g === this.g && e.b === this.b;
}
fromArray(e, t = 0) {
return this.r = e[t], this.g = e[t + 1], this.b = e[t + 2], this;
}
toArray(e = [], t = 0) {
return e[t] = this.r, e[t + 1] = this.g, e[t + 2] = this.b, e;
}
fromBufferAttribute(e, t) {
return this.r = e.getX(t), this.g = e.getY(t), this.b = e.getZ(t), e.normalized === !0 && (this.r /= 255, this.g /= 255, this.b /= 255), this;
}
toJSON() {
return this.getHex();
}
}
Ue.NAMES = ix;
Ue.prototype.isColor = !0;
Ue.prototype.r = 1;
Ue.prototype.g = 1;
Ue.prototype.b = 1;
class In extends tn {
constructor(e) {
super(), this.type = "MeshBasicMaterial", this.color = new Ue(16777215), this.map = null, this.lightMap = null, this.lightMapIntensity = 1, this.aoMap = null, this.aoMapIntensity = 1, this.specularMap = null, this.alphaMap = null, this.envMap = null, this.combine = al, this.reflectivity = 1, this.refractionRatio = 0.98, this.wireframe = !1, this.wireframeLinewidth = 1, this.wireframeLinecap = "round", this.wireframeLinejoin = "round", this.morphTargets = !1, this.setValues(e);
}
copy(e) {
return super.copy(e), this.color.copy(e.color), this.map = e.map, this.lightMap = e.lightMap, this.lightMapIntensity = e.lightMapIntensity, this.aoMap = e.aoMap, this.aoMapIntensity = e.aoMapIntensity, this.specularMap = e.specularMap, this.alphaMap = e.alphaMap, this.envMap = e.envMap, this.combine = e.combine, this.reflectivity = e.reflectivity, this.refractionRatio = e.refractionRatio, this.wireframe = e.wireframe, this.wireframeLinewidth = e.wireframeLinewidth, this.wireframeLinecap = e.wireframeLinecap, this.wireframeLinejoin = e.wireframeLinejoin, this.morphTargets = e.morphTargets, this;
}
}
In.prototype.isMeshBasicMaterial = !0;
const St = /* @__PURE__ */ new q(), Vl = /* @__PURE__ */ new Re();
class ot {
constructor(e, t, i) {
if (Array.isArray(e))
throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");
this.name = "", this.array = e, this.itemSize = t, this.count = e !== void 0 ? e.length / t : 0, this.normalized = i === !0, this.usage = Ro, this.updateRange = { offset: 0, count: -1 }, this.version = 0;
}
onUploadCallback() {
}
set needsUpdate(e) {
e === !0 && this.version++;
}
setUsage(e) {
return this.usage = e, this;
}
copy(e) {
return this.name = e.name, this.array = new e.array.constructor(e.array), this.itemSize = e.itemSize, this.count = e.count, this.normalized = e.normalized, this.usage = e.usage, this;
}
copyAt(e, t, i) {
e *= this.itemSize, i *= t.itemSize;
for (let r = 0, s = this.itemSize; r < s; r++)
this.array[e + r] = t.array[i + r];
return this;
}
copyArray(e) {
return this.array.set(e), this;
}
copyColorsArray(e) {
const t = this.array;
let i = 0;
for (let r = 0, s = e.length; r < s; r++) {
let o = e[r];
o === void 0 && (console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined", r), o = new Ue()), t[i++] = o.r, t[i++] = o.g, t[i++] = o.b;
}
return this;
}
copyVector2sArray(e) {
const t = this.array;
let i = 0;
for (let r = 0, s = e.length; r < s; r++) {
let o = e[r];
o === void 0 && (console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined", r), o = new Re()), t[i++] = o.x, t[i++] = o.y;
}
return this;
}
copyVector3sArray(e) {
const t = this.array;
let i = 0;
for (let r = 0, s = e.length; r < s; r++) {
let o = e[r];
o === void 0 && (console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined", r), o = new q()), t[i++] = o.x, t[i++] = o.y, t[i++] = o.z;
}
return this;
}
copyVector4sArray(e) {
const t = this.array;
let i = 0;
for (let r = 0, s = e.length; r < s; r++) {
let o = e[r];
o === void 0 && (console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined", r), o = new xt()), t[i++] = o.x, t[i++] = o.y, t[i++] = o.z, t[i++] = o.w;
}
return this;
}
applyMatrix3(e) {
if (this.itemSize === 2)
for (let t = 0, i = this.count; t < i; t++)
Vl.fromBufferAttribute(this, t), Vl.applyMatrix3(e), this.setXY(t, Vl.x, Vl.y);
else if (this.itemSize === 3)
for (let t = 0, i = this.count; t < i; t++)
St.fromBufferAttribute(this, t), St.applyMatrix3(e), this.setXYZ(t, St.x, St.y, St.z);
return this;
}
applyMatrix4(e) {
for (let t = 0, i = this.count; t < i; t++)
St.x = this.getX(t), St.y = this.getY(t), St.z = this.getZ(t), St.applyMatrix4(e), this.setXYZ(t, St.x, St.y, St.z);
return this;
}
applyNormalMatrix(e) {
for (let t = 0, i = this.count; t < i; t++)
St.x = this.getX(t), St.y = this.getY(t), St.z = this.getZ(t), St.applyNormalMatrix(e), this.setXYZ(t, St.x, St.y, St.z);
return this;
}
transformDirection(e) {
for (let t = 0, i = this.count; t < i; t++)
St.x = this.getX(t), St.y = this.getY(t), St.z = this.getZ(t), St.transformDirection(e), this.setXYZ(t, St.x, St.y, St.z);
return this;
}
set(e, t = 0) {
return this.array.set(e, t), this;
}
getX(e) {
return this.array[e * this.itemSize];
}
setX(e, t) {
return this.array[e * this.itemSize] = t, this;
}
getY(e) {
return this.array[e * this.itemSize + 1];
}
setY(e, t) {
return this.array[e * this.itemSize + 1] = t, this;
}
getZ(e) {
return this.array[e * this.itemSize + 2];
}
setZ(e, t) {
return this.array[e * this.itemSize + 2] = t, this;
}
getW(e) {
return this.array[e * this.itemSize + 3];
}
setW(e, t) {
return this.array[e * this.itemSize + 3] = t, this;
}
setXY(e, t, i) {
return e *= this.itemSize, this.array[e + 0] = t, this.array[e + 1] = i, this;
}
setXYZ(e, t, i, r) {
return e *= this.itemSize, this.array[e + 0] = t, this.array[e + 1] = i, this.array[e + 2] = r, this;
}
setXYZW(e, t, i, r, s) {
return e *= this.itemSize, this.array[e + 0] = t, this.array[e + 1] = i, this.array[e + 2] = r, this.array[e + 3] = s, this;
}
onUpload(e) {
return this.onUploadCallback = e, this;
}
clone() {
return new this.constructor(this.array, this.itemSize).copy(this);
}
toJSON() {
const e = {
itemSize: this.itemSize,
type: this.array.constructor.name,
array: Array.prototype.slice.call(this.array),
normalized: this.normalized
};
return this.name !== "" && (e.name = this.name), this.usage !== Ro && (e.usage = this.usage), (this.updateRange.offset !== 0 || this.updateRange.count !== -1) && (e.updateRange = this.updateRange), e;
}
}
ot.prototype.isBufferAttribute = !0;
class rx extends ot {
constructor(e, t, i) {
super(new Int8Array(e), t, i);
}
}
class sx extends ot {
constructor(e, t, i) {
super(new Uint8Array(e), t, i);
}
}
class ox extends ot {
constructor(e, t, i) {
super(new Uint8ClampedArray(e), t, i);
}
}
class ax extends ot {
constructor(e, t, i) {
super(new Int16Array(e), t, i);
}
}
class gu extends ot {
constructor(e, t, i) {
super(new Uint16Array(e), t, i);
}
}
class lx extends ot {
constructor(e, t, i) {
super(new Int32Array(e), t, i);
}
}
class vu extends ot {
constructor(e, t, i) {
super(new Uint32Array(e), t, i);
}
}
class cx extends ot {
constructor(e, t, i) {
super(new Uint16Array(e), t, i);
}
}
cx.prototype.isFloat16BufferAttribute = !0;
class We extends ot {
constructor(e, t, i) {
super(new Float32Array(e), t, i);
}
}
class ux extends ot {
constructor(e, t, i) {
super(new Float64Array(e), t, i);
}
}
function hx(n) {
if (n.length === 0) return -1 / 0;
let e = n[0];
for (let t = 1, i = n.length; t < i; ++t)
n[t] > e && (e = n[t]);
return e;
}
const _F = {
Int8Array,
Uint8Array,
Uint8ClampedArray,
Int16Array,
Uint16Array,
Int32Array,
Uint32Array,
Float32Array,
Float64Array
};
function mo(n, e) {
return new _F[n](e);
}
let TF = 0;
const Yn = /* @__PURE__ */ new Xe(), lh = /* @__PURE__ */ new ut(), Qs = /* @__PURE__ */ new q(), Un = /* @__PURE__ */ new Nn(), pa = /* @__PURE__ */ new Nn(), cn = /* @__PURE__ */ new q();
class Ke extends Kr {
constructor() {
super(), Object.defineProperty(this, "id", { value: TF++ }), this.uuid = Wn(), this.name = "", this.type = "BufferGeometry", this.index = null, this.attributes = {}, this.morphAttributes = {}, this.morphTargetsRelative = !1, this.groups = [], this.boundingBox = null, this.boundingSphere = null, this.drawRange = { start: 0, count: 1 / 0 }, this.userData = {};
}
getIndex() {
return this.index;
}
setIndex(e) {
return Array.isArray(e) ? this.index = new (hx(e) > 65535 ? vu : gu)(e, 1) : this.index = e, this;
}
getAttribute(e) {
return this.attributes[e];
}
setAttribute(e, t) {
return this.attributes[e] = t, this;
}
deleteAttribute(e) {
return delete this.attributes[e], this;
}
hasAttribute(e) {
return this.attributes[e] !== void 0;
}
addGroup(e, t, i = 0) {
this.groups.push({
start: e,
count: t,
materialIndex: i
});
}
clearGroups() {
this.groups = [];
}
setDrawRange(e, t) {
this.drawRange.start = e, this.drawRange.count = t;
}
applyMatrix4(e) {
const t = this.attributes.position;
t !== void 0 && (t.applyMatrix4(e), t.needsUpdate = !0);
const i = this.attributes.normal;
if (i !== void 0) {
const s = new rn().getNormalMatrix(e);
i.applyNormalMatrix(s), i.needsUpdate = !0;
}
const r = this.attributes.tangent;
return r !== void 0 && (r.transformDirection(e), r.needsUpdate = !0), this.boundingBox !== null && this.computeBoundingBox(), this.boundingSphere !== null && this.computeBoundingSphere(), this;
}
applyQuaternion(e) {
return Yn.makeRotationFromQuaternion(e), this.applyMatrix4(Yn), this;
}
rotateX(e) {
return Yn.makeRotationX(e), this.applyMatrix4(Yn), this;
}
rotateY(e) {
return Yn.makeRotationY(e), this.applyMatrix4(Yn), this;
}
rotateZ(e) {
return Yn.makeRotationZ(e), this.applyMatrix4(Yn), this;
}
translate(e, t, i) {
return Yn.makeTranslation(e, t, i), this.applyMatrix4(Yn), this;
}
scale(e, t, i) {
return Yn.makeScale(e, t, i), this.applyMatrix4(Yn), this;
}
lookAt(e) {
return lh.lookAt(e), lh.updateMatrix(), this.applyMatrix4(lh.matrix), this;
}
center() {
return this.computeBoundingBox(), this.boundingBox.getCenter(Qs).negate(), this.translate(Qs.x, Qs.y, Qs.z), this;
}
setFromPoints(e) {
const t = [];
for (let i = 0, r = e.length; i < r; i++) {
const s = e[i];
t.push(s.x, s.y, s.z || 0);
}
return this.setAttribute("position", new We(t, 3)), this;
}
computeBoundingBox() {
this.boundingBox === null && (this.boundingBox = new Nn());
const e = this.attributes.position, t = this.morphAttributes.position;
if (e && e.isGLBufferAttribute) {
console.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set "mesh.frustumCulled" to "false".', this), this.boundingBox.set(
new q(-1 / 0, -1 / 0, -1 / 0),
new q(1 / 0, 1 / 0, 1 / 0)
);
return;
}
if (e !== void 0) {
if (this.boundingBox.setFromBufferAttribute(e), t)
for (let i = 0, r = t.length; i < r; i++) {
const s = t[i];
Un.setFromBufferAttribute(s), this.morphTargetsRelative ? (cn.addVectors(this.boundingBox.min, Un.min), this.boundingBox.expandByPoint(cn), cn.addVectors(this.boundingBox.max, Un.max), this.boundingBox.expandByPoint(cn)) : (this.boundingBox.expandByPoint(Un.min), this.boundingBox.expandByPoint(Un.max));
}
} else
this.boundingBox.makeEmpty();
(isNaN(this.boundingBox.min.x) || isNaN(this.boundingBox.min.y) || isNaN(this.boundingBox.min.z)) && console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this);
}
computeBoundingSphere() {
this.boundingSphere === null && (this.boundingSphere = new mr());
const e = this.attributes.position, t = this.morphAttributes.position;
if (e && e.isGLBufferAttribute) {
console.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set "mesh.frustumCulled" to "false".', this), this.boundingSphere.set(new q(), 1 / 0);
return;
}
if (e) {
const i = this.boundingSphere.center;
if (Un.setFromBufferAttribute(e), t)
for (let s = 0, o = t.length; s < o; s++) {
const a = t[s];
pa.setFromBufferAttribute(a), this.morphTargetsRelative ? (cn.addVectors(Un.min, pa.min), Un.expandByPoint(cn), cn.addVectors(Un.max, pa.max), Un.expandByPoint(cn)) : (Un.expandByPoint(pa.min), Un.expandByPoint(pa.max));
}
Un.getCenter(i);
let r = 0;
for (let s = 0, o = e.count; s < o; s++)
cn.fromBufferAttribute(e, s), r = Math.max(r, i.distanceToSquared(cn));
if (t)
for (let s = 0, o = t.length; s < o; s++) {
const a = t[s], c = this.morphTargetsRelative;
for (let l = 0, d = a.count; l < d; l++)
cn.fromBufferAttribute(a, l), c && (Qs.fromBufferAttribute(e, l), cn.add(Qs)), r = Math.max(r, i.distanceToSquared(cn));
}
this.boundingSphere.radius = Math.sqrt(r), isNaN(this.boundingSphere.radius) && console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this);
}
}
computeFaceNormals() {
}
computeTangents() {
const e = this.index, t = this.attributes;
if (e === null || t.position === void 0 || t.normal === void 0 || t.uv === void 0) {
console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");
return;
}
const i = e.array, r = t.position.array, s = t.normal.array, o = t.uv.array, a = r.length / 3;
t.tangent === void 0 && this.setAttribute("tangent", new ot(new Float32Array(4 * a), 4));
const c = t.tangent.array, l = [], d = [];
for (let P = 0; P < a; P++)
l[P] = new q(), d[P] = new q();
const h = new q(), f = new q(), g = new q(), p = new Re(), u = new Re(), y = new Re(), v = new q(), m = new q();
function x(P, _, S) {
h.fromArray(r, P * 3), f.fromArray(r, _ * 3), g.fromArray(r, S * 3), p.fromArray(o, P * 2), u.fromArray(o, _ * 2), y.fromArray(o, S * 2), f.sub(h), g.sub(h), u.sub(p), y.sub(p);
const E = 1 / (u.x * y.y - y.x * u.y);
isFinite(E) && (v.copy(f).multiplyScalar(y.y).addScaledVector(g, -u.y).multiplyScalar(E), m.copy(g).multiplyScalar(u.x).addScaledVector(f, -y.x).multiplyScalar(E), l[P].add(v), l[_].add(v), l[S].add(v), d[P].add(m), d[_].add(m), d[S].add(m));
}
let w = this.groups;
w.length === 0 && (w = [{
start: 0,
count: i.length
}]);
for (let P = 0, _ = w.length; P < _; ++P) {
const S = w[P], E = S.start, C = S.count;
for (let I = E, b = E + C; I < b; I += 3)
x(
i[I + 0],
i[I + 1],
i[I + 2]
);
}
const A = new q(), M = new q(), R = new q(), L = new q();
function T(P) {
R.fromArray(s, P * 3), L.copy(R);
const _ = l[P];
A.copy(_), A.sub(R.multiplyScalar(R.dot(_))).normalize(), M.crossVectors(L, _);
const E = M.dot(d[P]) < 0 ? -1 : 1;
c[P * 4] = A.x, c[P * 4 + 1] = A.y, c[P * 4 + 2] = A.z, c[P * 4 + 3] = E;
}
for (let P = 0, _ = w.length; P < _; ++P) {
const S = w[P], E = S.start, C = S.count;
for (let I = E, b = E + C; I < b; I += 3)
T(i[I + 0]), T(i[I + 1]), T(i[I + 2]);
}
}
computeVertexNormals() {
const e = this.index, t = this.getAttribute("position");
if (t !== void 0) {
let i = this.getAttribute("normal");
if (i === void 0)
i = new ot(new Float32Array(t.count * 3), 3), this.setAttribute("normal", i);
else
for (let f = 0, g = i.count; f < g; f++)
i.setXYZ(f, 0, 0, 0);
const r = new q(), s = new q(), o = new q(), a = new q(), c = new q(), l = new q(), d = new q(), h = new q();
if (e)
for (let f = 0, g = e.count; f < g; f += 3) {
const p = e.getX(f + 0), u = e.getX(f + 1), y = e.getX(f + 2);
r.fromBufferAttribute(t, p), s.fromBufferAttribute(t, u), o.fromBufferAttribute(t, y), d.subVectors(o, s), h.subVectors(r, s), d.cross(h), a.fromBufferAttribute(i, p), c.fromBufferAttribute(i, u), l.fromBufferAttribute(i, y), a.add(d), c.add(d), l.add(d), i.setXYZ(p, a.x, a.y, a.z), i.setXYZ(u, c.x, c.y, c.z), i.setXYZ(y, l.x, l.y, l.z);
}
else
for (let f = 0, g = t.count; f < g; f += 3)
r.fromBufferAttribute(t, f + 0), s.fromBufferAttribute(t, f + 1), o.fromBufferAttribute(t, f + 2), d.subVectors(o, s), h.subVectors(r, s), d.cross(h), i.setXYZ(f + 0, d.x, d.y, d.z), i.setXYZ(f + 1, d.x, d.y, d.z), i.setXYZ(f + 2, d.x, d.y, d.z);
this.normalizeNormals(), i.needsUpdate = !0;
}
}
merge(e, t) {
if (!(e && e.isBufferGeometry)) {
console.error("THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.", e);
return;
}
t === void 0 && (t = 0, console.warn(
"THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge."
));
const i = this.attributes;
for (const r in i) {
if (e.attributes[r] === void 0) continue;
const o = i[r].array, a = e.attributes[r], c = a.array, l = a.itemSize * t, d = Math.min(c.length, o.length - l);
for (let h = 0, f = l; h < d; h++, f++)
o[f] = c[h];
}
return this;
}
normalizeNormals() {
const e = this.attributes.normal;
for (let t = 0, i = e.count; t < i; t++)
cn.fromBufferAttribute(e, t), cn.normalize(), e.setXYZ(t, cn.x, cn.y, cn.z);
}
toNonIndexed() {
function e(a, c) {
const l = a.array, d = a.itemSize, h = a.normalized, f = new l.constructor(c.length * d);
let g = 0, p = 0;
for (let u = 0, y = c.length; u < y; u++) {
a.isInterleavedBufferAttribute ? g = c[u] * a.data.stride + a.offset : g = c[u] * d;
for (let v = 0; v < d; v++)
f[p++] = l[g++];
}
return new ot(f, d, h);
}
if (this.index === null)
return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."), this;
const t = new Ke(), i = this.index.array, r = this.attributes;
for (const a in r) {
const c = r[a], l = e(c, i);
t.setAttribute(a, l);
}
const s = this.morphAttributes;
for (const a in s) {
const c = [], l = s[a];
for (let d = 0, h = l.length; d < h; d++) {
const f = l[d], g = e(f, i);
c.push(g);
}
t.morphAttributes[a] = c;
}
t.morphTargetsRelative = this.morphTargetsRelative;
const o = this.groups;
for (let a = 0, c = o.length; a < c; a++) {
const l = o[a];
t.addGroup(l.start, l.count, l.materialIndex);
}
return t;
}
toJSON() {
const e = {
metadata: {
version: 4.5,
type: "BufferGeometry",
generator: "BufferGeometry.toJSON"
}
};
if (e.uuid = this.uuid, e.type = this.type, this.name !== "" && (e.name = this.name), Object.keys(this.userData).length > 0 && (e.userData = this.userData), this.parameters !== void 0) {
const c = this.parameters;
for (const l in c)
c[l] !== void 0 && (e[l] = c[l]);
return e;
}
e.data = { attributes: {} };
const t = this.index;
t !== null && (e.data.index = {
type: t.array.constructor.name,
array: Array.prototype.slice.call(t.array)
});
const i = this.attributes;
for (const c in i) {
const l = i[c];
e.data.attributes[c] = l.toJSON(e.data);
}
const r = {};
let s = !1;
for (const c in this.morphAttributes) {
const l = this.morphAttributes[c], d = [];
for (let h = 0, f = l.length; h < f; h++) {
const g = l[h];
d.push(g.toJSON(e.data));
}
d.length > 0 && (r[c] = d, s = !0);
}
s && (e.data.morphAttributes = r, e.data.morphTargetsRelative = this.morphTargetsRelative);
const o = this.groups;
o.length > 0 && (e.data.groups = JSON.parse(JSON.stringify(o)));
const a = this.boundingSphere;
return a !== null && (e.data.boundingSphere = {
center: a.center.toArray(),
radius: a.radius
}), e;
}
clone() {
return new Ke().copy(this);
}
copy(e) {
this.index = null, this.attributes = {}, this.morphAttributes = {}, this.groups = [], this.boundingBox = null, this.boundingSphere = null;
const t = {};
this.name = e.name;
const i = e.index;
i !== null && this.setIndex(i.clone(t));
const r = e.attributes;
for (const l in r) {
const d = r[l];
this.setAttribute(l, d.clone(t));
}
const s = e.morphAttributes;
for (const l in s) {
const d = [], h = s[l];
for (let f = 0, g = h.length; f < g; f++)
d.push(h[f].clone(t));
this.morphAttributes[l] = d;
}
this.morphTargetsRelative = e.morphTargetsRelative;
const o = e.groups;
for (let l = 0, d = o.length; l < d; l++) {
const h = o[l];
this.addGroup(h.start, h.count, h.materialIndex);
}
const a = e.boundingBox;
a !== null && (this.boundingBox = a.clone());
const c = e.boundingSphere;
return c !== null && (this.boundingSphere = c.clone()), this.drawRange.start = e.drawRange.start, this.drawRange.count = e.drawRange.count, this.userData = e.userData, this;
}
dispose() {
this.dispatchEvent({ type: "dispose" });
}
}
Ke.prototype.isBufferGeometry = !0;
const ng = /* @__PURE__ */ new Xe(), eo = /* @__PURE__ */ new qr(), ch = /* @__PURE__ */ new mr(), Mr = /* @__PURE__ */ new q(), wr = /* @__PURE__ */ new q(), Ar = /* @__PURE__ */ new q(), uh = /* @__PURE__ */ new q(), hh = /* @__PURE__ */ new q(), dh = /* @__PURE__ */ new q(), Gl = /* @__PURE__ */ new q(), Hl = /* @__PURE__ */ new q(), Wl = /* @__PURE__ */ new q(), jl = /* @__PURE__ */ new Re(), $l = /* @__PURE__ */ new Re(), Zl = /* @__PURE__ */ new Re(), fh = /* @__PURE__ */ new q(), Xl = /* @__PURE__ */ new q();
class Xt extends ut {
constructor(e = new Ke(), t = new In()) {
super(), this.type = "Mesh", this.geometry = e, this.material = t, this.updateMorphTargets();
}
copy(e) {
return super.copy(e), e.morphTargetInfluences !== void 0 && (this.morphTargetInfluences = e.morphTargetInfluences.slice()), e.morphTargetDictionary !== void 0 && (this.morphTargetDictionary = Object.assign({}, e.morphTargetDictionary)), this.material = e.material, this.geometry = e.geometry, this;
}
updateMorphTargets() {
const e = this.geometry;
if (e.isBufferGeometry) {
const t = e.morphAttributes, i = Object.keys(t);
if (i.length > 0) {
const r = t[i[0]];
if (r !== void 0) {
this.morphTargetInfluences = [], this.morphTargetDictionary = {};
for (let s = 0, o = r.length; s < o; s++) {
const a = r[s].name || String(s);
this.morphTargetInfluences.push(0), this.morphTargetDictionary[a] = s;
}
}
}
} else {
const t = e.morphTargets;
t !== void 0 && t.length > 0 && console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");
}
}
raycast(e, t) {
const i = this.geometry, r = this.material, s = this.matrixWorld;
if (r === void 0 || (i.boundingSphere === null && i.computeBoundingSphere(), ch.copy(i.boundingSphere), ch.applyMatrix4(s), e.ray.intersectsSphere(ch) === !1) || (ng.copy(s).invert(), eo.copy(e.ray).applyMatrix4(ng), i.boundingBox !== null && eo.intersectsBox(i.boundingBox) === !1))
return;
let o;
if (i.isBufferGeometry) {
const a = i.index, c = i.attributes.position, l = i.morphAttributes.position, d = i.morphTargetsRelative, h = i.attributes.uv, f = i.attributes.uv2, g = i.groups, p = i.drawRange;
if (a !== null)
if (Array.isArray(r))
for (let u = 0, y = g.length; u < y; u++) {
const v = g[u], m = r[v.materialIndex], x = Math.max(v.start, p.start), w = Math.min(v.start + v.count, p.start + p.count);
for (let A = x, M = w; A < M; A += 3) {
const R = a.getX(A), L = a.getX(A + 1), T = a.getX(A + 2);
o = Yl(this, m, e, eo, c, l, d, h, f, R, L, T), o && (o.faceIndex = Math.floor(A / 3), o.face.materialIndex = v.materialIndex, t.push(o));
}
}
else {
const u = Math.max(0, p.start), y = Math.min(a.count, p.start + p.count);
for (let v = u, m = y; v < m; v += 3) {
const x = a.getX(v), w = a.getX(v + 1), A = a.getX(v + 2);
o = Yl(this, r, e, eo, c, l, d, h, f, x, w, A), o && (o.faceIndex = Math.floor(v / 3), t.push(o));
}
}
else if (c !== void 0)
if (Array.isArray(r))
for (let u = 0, y = g.length; u < y; u++) {
const v = g[u], m = r[v.materialIndex], x = Math.max(v.start, p.start), w = Math.min(v.start + v.count, p.start + p.count);
for (let A = x, M = w; A < M; A += 3) {
const R = A, L = A + 1, T = A + 2;
o = Yl(this, m, e, eo, c, l, d, h, f, R, L, T), o && (o.faceIndex = Math.floor(A / 3), o.face.materialIndex = v.materialIndex, t.push(o));
}
}
else {
const u = Math.max(0, p.start), y = Math.min(c.count, p.start + p.count);
for (let v = u, m = y; v < m; v += 3) {
const x = v, w = v + 1, A = v + 2;
o = Yl(this, r, e, eo, c, l, d, h, f, x, w, A), o && (o.faceIndex = Math.floor(v / 3), t.push(o));
}
}
} else i.isGeometry && console.error("THREE.Mesh.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");
}
}
Xt.prototype.isMesh = !0;
function EF(n, e, t, i, r, s, o, a) {
let c;
if (e.side === jt ? c = i.intersectTriangle(o, s, r, !0, a) : c = i.intersectTriangle(r, s, o, e.side !== Wr, a), c === null) return null;
Xl.copy(a), Xl.applyMatrix4(n.matrixWorld);
const l = t.ray.origin.distanceTo(Xl);
return l < t.near || l > t.far ? null : {
distance: l,
point: Xl.clone(),
object: n
};
}
function Yl(n, e, t, i, r, s, o, a, c, l, d, h) {
Mr.fromBufferAttribute(r, l), wr.fromBufferAttribute(r, d), Ar.fromBufferAttribute(r, h);
const f = n.morphTargetInfluences;
if (e.morphTargets && s && f) {
Gl.set(0, 0, 0), Hl.set(0, 0, 0), Wl.set(0, 0, 0);
for (let p = 0, u = s.length; p < u; p++) {
const y = f[p], v = s[p];
y !== 0 && (uh.fromBufferAttribute(v, l), hh.fromBufferAttribute(v, d), dh.fromBufferAttribute(v, h), o ? (Gl.addScaledVector(uh, y), Hl.addScaledVector(hh, y), Wl.addScaledVector(dh, y)) : (Gl.addScaledVector(uh.sub(Mr), y), Hl.addScaledVector(hh.sub(wr), y), Wl.addScaledVector(dh.sub(Ar), y)));
}
Mr.add(Gl), wr.add(Hl), Ar.add(Wl);
}
n.isSkinnedMesh && (n.boneTransform(l, Mr), n.boneTransform(d, wr), n.boneTransform(h, Ar));
const g = EF(n, e, t, i, Mr, wr, Ar, fh);
if (g) {
a && (jl.fromBufferAttribute(a, l), $l.fromBufferAttribute(a, d), Zl.fromBufferAttribute(a, h), g.uv = Zt.getUV(fh, Mr, wr, Ar, jl, $l, Zl, new Re())), c && (jl.fromBufferAttribute(c, l), $l.fromBufferAttribute(c, d), Zl.fromBufferAttribute(c, h), g.uv2 = Zt.getUV(fh, Mr, wr, Ar, jl, $l, Zl, new Re()));
const p = {
a: l,
b: d,
c: h,
normal: new q(),
materialIndex: 0
};
Zt.getNormal(Mr, wr, Ar, p.normal), g.face = p;
}
return g;
}
class or extends Ke {
constructor(e = 1, t = 1, i = 1, r = 1, s = 1, o = 1) {
super(), this.type = "BoxGeometry", this.parameters = {
width: e,
height: t,
depth: i,
widthSegments: r,
heightSegments: s,
depthSegments: o
};
const a = this;
r = Math.floor(r), s = Math.floor(s), o = Math.floor(o);
const c = [], l = [], d = [], h = [];
let f = 0, g = 0;
p("z", "y", "x", -1, -1, i, t, e, o, s, 0), p("z", "y", "x", 1, -1, i, t, -e, o, s, 1), p("x", "z", "y", 1, 1, e, i, t, r, o, 2), p("x", "z", "y", 1, -1, e, i, -t, r, o, 3), p("x", "y", "z", 1, -1, e, t, i, r, s, 4), p("x", "y", "z", -1, -1, e, t, -i, r, s, 5), this.setIndex(c), this.setAttribute("position", new We(l, 3)), this.setAttribute("normal", new We(d, 3)), this.setAttribute("uv", new We(h, 2));
function p(u, y, v, m, x, w, A, M, R, L, T) {
const P = w / R, _ = A / L, S = w / 2, E = A / 2, C = M / 2, I = R + 1, b = L + 1;
let F = 0, D = 0;
const N = new q();
for (let B = 0; B < b; B++) {
const U = B * _ - E;
for (let G = 0; G < I; G++) {
const Y = G * P - S;
N[u] = Y * m, N[y] = U * x, N[v] = C, l.push(N.x, N.y, N.z), N[u] = 0, N[y] = 0, N[v] = M > 0 ? 1 : -1, d.push(N.x, N.y, N.z), h.push(G / R), h.push(1 - B / L), F += 1;
}
}
for (let B = 0; B < L; B++)
for (let U = 0; U < R; U++) {
const G = f + U + I * B, Y = f + U + I * (B + 1), te = f + (U + 1) + I * (B + 1), ae = f + (U + 1) + I * B;
c.push(G, Y, ae), c.push(Y, te, ae), D += 6;
}
a.addGroup(g, D, T), g += D, f += F;
}
}
static fromJSON(e) {
return new or(e.width, e.height, e.depth, e.widthSegments, e.heightSegments, e.depthSegments);
}
}
function Po(n) {
const e = {};
for (const t in n) {
e[t] = {};
for (const i in n[t]) {
const r = n[t][i];
r && (r.isColor || r.isMatrix3 || r.isMatrix4 || r.isVector2 || r.isVector3 || r.isVector4 || r.isTexture || r.isQuaternion) ? e[t][i] = r.clone() : Array.isArray(r) ? e[t][i] = r.slice() : e[t][i] = r;
}
}
return e;
}
function wn(n) {
const e = {};
for (let t = 0; t < n.length; t++) {
const i = Po(n[t]);
for (const r in i)
e[r] = i[r];
}
return e;
}
const dx = { clone: Po, merge: wn };
var CF = `void main() {
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
}`, LF = `void main() {
gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );
}`;
class ar extends tn {
constructor(e) {
super(), this.type = "ShaderMaterial", this.defines = {}, this.uniforms = {}, this.vertexShader = CF, this.fragmentShader = LF, this.linewidth = 1, this.wireframe = !1, this.wireframeLinewidth = 1, this.fog = !1, this.lights = !1, this.clipping = !1, this.morphTargets = !1, this.morphNormals = !1, this.extensions = {
derivatives: !1,
// set to use derivatives
fragDepth: !1,
// set to use fragment depth values
drawBuffers: !1,
// set to use draw buffers
shaderTextureLOD: !1
// set to use shader texture LOD
}, this.defaultAttributeValues = {
color: [1, 1, 1],
uv: [0, 0],
uv2: [0, 0]
}, this.index0AttributeName = void 0, this.uniformsNeedUpdate = !1, this.glslVersion = null, e !== void 0 && (e.attributes !== void 0 && console.error("THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead."), this.setValues(e));
}
copy(e) {
return super.copy(e), this.fragmentShader = e.fragmentShader, this.vertexShader = e.vertexShader, this.uniforms = Po(e.uniforms), this.defines = Object.assign({}, e.defines), this.wireframe = e.wireframe, this.wireframeLinewidth = e.wireframeLinewidth, this.lights = e.lights, this.clipping = e.clipping, this.morphTargets = e.morphTargets, this.morphNormals = e.morphNormals, this.extensions = Object.assign({}, e.extensions), this.glslVersion = e.glslVersion, this;
}
toJSON(e) {
const t = super.toJSON(e);
t.glslVersion = this.glslVersion, t.uniforms = {};
for (const r in this.uniforms) {
const o = this.uniforms[r].value;
o && o.isTexture ? t.uniforms[r] = {
type: "t",
value: o.toJSON(e).uuid
} : o && o.isColor ? t.uniforms[r] = {
type: "c",
value: o.getHex()
} : o && o.isVector2 ? t.uniforms[r] = {
type: "v2",
value: o.toArray()
} : o && o.isVector3 ? t.uniforms[r] = {
type: "v3",
value: o.toArray()
} : o && o.isVector4 ? t.uniforms[r] = {
type: "v4",
value: o.toArray()
} : o && o.isMatrix3 ? t.uniforms[r] = {
type: "m3",
value: o.toArray()
} : o && o.isMatrix4 ? t.uniforms[r] = {
type: "m4",
value: o.toArray()
} : t.uniforms[r] = {
value: o
};
}
Object.keys(this.defines).length > 0 && (t.defines = this.defines), t.vertexShader = this.vertexShader, t.fragmentShader = this.fragmentShader;
const i = {};
for (const r in this.extensions)
this.extensions[r] === !0 && (i[r] = !0);
return Object.keys(i).length > 0 && (t.extensions = i), t;
}
}
ar.prototype.isShaderMaterial = !0;
class hl extends ut {
constructor() {
super(), this.type = "Camera", this.matrixWorldInverse = new Xe(), this.projectionMatrix = new Xe(), this.projectionMatrixInverse = new Xe();
}
copy(e, t) {
return super.copy(e, t), this.matrixWorldInverse.copy(e.matrixWorldInverse), this.projectionMatrix.copy(e.projectionMatrix), this.projectionMatrixInverse.copy(e.projectionMatrixInverse), this;
}
getWorldDirection(e) {
this.updateWorldMatrix(!0, !1);
const t = this.matrixWorld.elements;
return e.set(-t[8], -t[9], -t[10]).normalize();
}
updateMatrixWorld(e) {
super.updateMatrixWorld(e), this.matrixWorldInverse.copy(this.matrixWorld).invert();
}
updateWorldMatrix(e, t) {
super.updateWorldMatrix(e, t), this.matrixWorldInverse.copy(this.matrixWorld).invert();
}
clone() {
return new this.constructor().copy(this);
}
}
hl.prototype.isCamera = !0;
class nn extends hl {
constructor(e = 50, t = 1, i = 0.1, r = 2e3) {
super(), this.type = "PerspectiveCamera", this.fov = e, this.zoom = 1, this.near = i, this.far = r, this.focus = 10, this.aspect = t, this.view = null, this.filmGauge = 35, this.filmOffset = 0, this.updateProjectionMatrix();
}
copy(e, t) {
return super.copy(e, t), this.fov = e.fov, this.zoom = e.zoom, this.near = e.near, this.far = e.far, this.focus = e.focus, this.aspect = e.aspect, this.view = e.view === null ? null : Object.assign({}, e.view), this.filmGauge = e.filmGauge, this.filmOffset = e.filmOffset, this;
}
/**
* Sets the FOV by focal length in respect to the current .filmGauge.
*
* The default film gauge is 35, so that the focal length can be specified for
* a 35mm (full frame) camera.
*
* Values for focal length and film gauge must have the same unit.
*/
setFocalLength(e) {
const t = 0.5 * this.getFilmHeight() / e;
this.fov = ja * 2 * Math.atan(t), this.updateProjectionMatrix();
}
/**
* Calculates the focal length from the current .fov and .filmGauge.
*/
getFocalLength() {
const e = Math.tan(As * 0.5 * this.fov);
return 0.5 * this.getFilmHeight() / e;
}
getEffectiveFOV() {
return ja * 2 * Math.atan(
Math.tan(As * 0.5 * this.fov) / this.zoom
);
}
getFilmWidth() {
return this.filmGauge * Math.min(this.aspect, 1);
}
getFilmHeight() {
return this.filmGauge / Math.max(this.aspect, 1);
}
/**
* Sets an offset in a larger frustum. This is useful for multi-window or
* multi-monitor/multi-machine setups.
*
* For example, if you have 3x2 monitors and each monitor is 1920x1080 and
* the monitors are in grid like this
*
* +---+---+---+
* | A | B | C |
* +---+---+---+
* | D | E | F |
* +---+---+---+
*
* then for each monitor you would call it like this
*
* const w = 1920;
* const h = 1080;
* const fullWidth = w * 3;
* const fullHeight = h * 2;
*
* --A--
* camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );
* --B--
* camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );
* --C--
* camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );
* --D--
* camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );
* --E--
* camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );
* --F--
* camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );
*
* Note there is no reason monitors have to be the same size or in a grid.
*/
setViewOffset(e, t, i, r, s, o) {
this.aspect = e / t, this.view === null && (this.view = {
enabled: !0,
fullWidth: 1,
fullHeight: 1,
offsetX: 0,
offsetY: 0,
width: 1,
height: 1
}), this.view.enabled = !0, this.view.fullWidth = e, this.view.fullHeight = t, this.view.offsetX = i, this.view.offsetY = r, this.view.width = s, this.view.height = o, this.updateProjectionMatrix();
}
clearViewOffset() {
this.view !== null && (this.view.enabled = !1), this.updateProjectionMatrix();
}
updateProjectionMatrix() {
const e = this.near;
let t = e * Math.tan(As * 0.5 * this.fov) / this.zoom, i = 2 * t, r = this.aspect * i, s = -0.5 * r;
const o = this.view;
if (this.view !== null && this.view.enabled) {
const c = o.fullWidth, l = o.fullHeight;
s += o.offsetX * r / c, t -= o.offsetY * i / l, r *= o.width / c, i *= o.height / l;
}
const a = this.filmOffset;
a !== 0 && (s += e * a / this.getFilmWidth()), this.projectionMatrix.makePerspective(s, s + r, t, t - i, e, this.far), this.projectionMatrixInverse.copy(this.projectionMatrix).invert();
}
toJSON(e) {
const t = super.toJSON(e);
return t.object.fov = this.fov, t.object.zoom = this.zoom, t.object.near = this.near, t.object.far = this.far, t.object.focus = this.focus, t.object.aspect = this.aspect, this.view !== null && (t.object.view = Object.assign({}, this.view)), t.object.filmGauge = this.filmGauge, t.object.filmOffset = this.filmOffset, t;
}
}
nn.prototype.isPerspectiveCamera = !0;
const to = 90, no = 1;
class yu extends ut {
constructor(e, t, i) {
if (super(), this.type = "CubeCamera", i.isWebGLCubeRenderTarget !== !0) {
console.error("THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.");
return;
}
this.renderTarget = i;
const r = new nn(to, no, e, t);
r.layers = this.layers, r.up.set(0, -1, 0), r.lookAt(new q(1, 0, 0)), this.add(r);
const s = new nn(to, no, e, t);
s.layers = this.layers, s.up.set(0, -1, 0), s.lookAt(new q(-1, 0, 0)), this.add(s);
const o = new nn(to, no, e, t);
o.layers = this.layers, o.up.set(0, 0, 1), o.lookAt(new q(0, 1, 0)), this.add(o);
const a = new nn(to, no, e, t);
a.layers = this.layers, a.up.set(0, 0, -1), a.lookAt(new q(0, -1, 0)), this.add(a);
const c = new nn(to, no, e, t);
c.layers = this.layers, c.up.set(0, -1, 0), c.lookAt(new q(0, 0, 1)), this.add(c);
const l = new nn(to, no, e, t);
l.layers = this.layers, l.up.set(0, -1, 0), l.lookAt(new q(0, 0, -1)), this.add(l);
}
update(e, t) {
this.parent === null && this.updateMatrixWorld();
const i = this.renderTarget, [r, s, o, a, c, l] = this.children, d = e.xr.enabled, h = e.getRenderTarget();
e.xr.enabled = !1;
const f = i.texture.generateMipmaps;
i.texture.generateMipmaps = !1, e.setRenderTarget(i, 0), e.render(t, r), e.setRenderTarget(i, 1), e.render(t, s), e.setRenderTarget(i, 2), e.render(t, o), e.setRenderTarget(i, 3), e.render(t, a), e.setRenderTarget(i, 4), e.render(t, c), i.texture.generateMipmaps = f, e.setRenderTarget(i, 5), e.render(t, l), e.setRenderTarget(h), e.xr.enabled = d;
}
}
class ta extends Yt {
constructor(e, t, i, r, s, o, a, c, l, d) {
e = e !== void 0 ? e : [], t = t !== void 0 ? t : ll, a = a !== void 0 ? a : ir, super(e, t, i, r, s, o, a, c, l, d), this._needsFlipEnvMap = !0, this.flipY = !1;
}
get images() {
return this.image;
}
set images(e) {
this.image = e;
}
}
ta.prototype.isCubeTexture = !0;
class bu extends fi {
constructor(e, t, i) {
Number.isInteger(t) && (console.warn("THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )"), t = i), super(e, e, t), t = t || {}, this.texture = new ta(void 0, t.mapping, t.wrapS, t.wrapT, t.magFilter, t.minFilter, t.format, t.type, t.anisotropy, t.encoding), this.texture.generateMipmaps = t.generateMipmaps !== void 0 ? t.generateMipmaps : !1, this.texture.minFilter = t.minFilter !== void 0 ? t.minFilter : zt, this.texture._needsFlipEnvMap = !1;
}
fromEquirectangularTexture(e, t) {
this.texture.type = t.type, this.texture.format = Hn, this.texture.encoding = t.encoding, this.texture.generateMipmaps = t.generateMipmaps, this.texture.minFilter = t.minFilter, this.texture.magFilter = t.magFilter;
const i = {
uniforms: {
tEquirect: { value: null }
},
vertexShader: (
/* glsl */
`
varying vec3 vWorldDirection;
vec3 transformDirection( in vec3 dir, in mat4 matrix ) {
return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );
}
void main() {
vWorldDirection = transformDirection( position, modelMatrix );
#include
#include
}
`
),
fragmentShader: (
/* glsl */
`
uniform sampler2D tEquirect;
varying vec3 vWorldDirection;
#include
void main() {
vec3 direction = normalize( vWorldDirection );
vec2 sampleUV = equirectUv( direction );
gl_FragColor = texture2D( tEquirect, sampleUV );
}
`
)
}, r = new or(5, 5, 5), s = new ar({
name: "CubemapFromEquirect",
uniforms: Po(i.uniforms),
vertexShader: i.vertexShader,
fragmentShader: i.fragmentShader,
side: jt,
blending: nr
});
s.uniforms.tEquirect.value = t;
const o = new Xt(r, s), a = t.minFilter;
return t.minFilter === pr && (t.minFilter = zt), new yu(1, 10, this).update(e, o), t.minFilter = a, o.geometry.dispose(), o.material.dispose(), this;
}
clear(e, t, i, r) {
const s = e.getRenderTarget();
for (let o = 0; o < 6; o++)
e.setRenderTarget(this, o), e.clear(t, i, r);
e.setRenderTarget(s);
}
}
bu.prototype.isWebGLCubeRenderTarget = !0;
const ph = /* @__PURE__ */ new q(), RF = /* @__PURE__ */ new q(), FF = /* @__PURE__ */ new rn();
class wi {
constructor(e = new q(1, 0, 0), t = 0) {
this.normal = e, this.constant = t;
}
set(e, t) {
return this.normal.copy(e), this.constant = t, this;
}
setComponents(e, t, i, r) {
return this.normal.set(e, t, i), this.constant = r, this;
}
setFromNormalAndCoplanarPoint(e, t) {
return this.normal.copy(e), this.constant = -t.dot(this.normal), this;
}
setFromCoplanarPoints(e, t, i) {
const r = ph.subVectors(i, t).cross(RF.subVectors(e, t)).normalize();
return this.setFromNormalAndCoplanarPoint(r, e), this;
}
copy(e) {
return this.normal.copy(e.normal), this.constant = e.constant, this;
}
normalize() {
const e = 1 / this.normal.length();
return this.normal.multiplyScalar(e), this.constant *= e, this;
}
negate() {
return this.constant *= -1, this.normal.negate(), this;
}
distanceToPoint(e) {
return this.normal.dot(e) + this.constant;
}
distanceToSphere(e) {
return this.distanceToPoint(e.center) - e.radius;
}
projectPoint(e, t) {
return t.copy(this.normal).multiplyScalar(-this.distanceToPoint(e)).add(e);
}
intersectLine(e, t) {
const i = e.delta(ph), r = this.normal.dot(i);
if (r === 0)
return this.distanceToPoint(e.start) === 0 ? t.copy(e.start) : null;
const s = -(e.start.dot(this.normal) + this.constant) / r;
return s < 0 || s > 1 ? null : t.copy(i).multiplyScalar(s).add(e.start);
}
intersectsLine(e) {
const t = this.distanceToPoint(e.start), i = this.distanceToPoint(e.end);
return t < 0 && i > 0 || i < 0 && t > 0;
}
intersectsBox(e) {
return e.intersectsPlane(this);
}
intersectsSphere(e) {
return e.intersectsPlane(this);
}
coplanarPoint(e) {
return e.copy(this.normal).multiplyScalar(-this.constant);
}
applyMatrix4(e, t) {
const i = t || FF.getNormalMatrix(e), r = this.coplanarPoint(ph).applyMatrix4(e), s = this.normal.applyMatrix3(i).normalize();
return this.constant = -r.dot(s), this;
}
translate(e) {
return this.constant -= e.dot(this.normal), this;
}
equals(e) {
return e.normal.equals(this.normal) && e.constant === this.constant;
}
clone() {
return new this.constructor().copy(this);
}
}
wi.prototype.isPlane = !0;
const io = /* @__PURE__ */ new mr(), Jl = /* @__PURE__ */ new q();
class dl {
constructor(e = new wi(), t = new wi(), i = new wi(), r = new wi(), s = new wi(), o = new wi()) {
this.planes = [e, t, i, r, s, o];
}
set(e, t, i, r, s, o) {
const a = this.planes;
return a[0].copy(e), a[1].copy(t), a[2].copy(i), a[3].copy(r), a[4].copy(s), a[5].copy(o), this;
}
copy(e) {
const t = this.planes;
for (let i = 0; i < 6; i++)
t[i].copy(e.planes[i]);
return this;
}
setFromProjectionMatrix(e) {
const t = this.planes, i = e.elements, r = i[0], s = i[1], o = i[2], a = i[3], c = i[4], l = i[5], d = i[6], h = i[7], f = i[8], g = i[9], p = i[10], u = i[11], y = i[12], v = i[13], m = i[14], x = i[15];
return t[0].setComponents(a - r, h - c, u - f, x - y).normalize(), t[1].setComponents(a + r, h + c, u + f, x + y).normalize(), t[2].setComponents(a + s, h + l, u + g, x + v).normalize(), t[3].setComponents(a - s, h - l, u - g, x - v).normalize(), t[4].setComponents(a - o, h - d, u - p, x - m).normalize(), t[5].setComponents(a + o, h + d, u + p, x + m).normalize(), this;
}
intersectsObject(e) {
const t = e.geometry;
return t.boundingSphere === null && t.computeBoundingSphere(), io.copy(t.boundingSphere).applyMatrix4(e.matrixWorld), this.intersectsSphere(io);
}
intersectsSprite(e) {
return io.center.set(0, 0, 0), io.radius = 0.7071067811865476, io.applyMatrix4(e.matrixWorld), this.intersectsSphere(io);
}
intersectsSphere(e) {
const t = this.planes, i = e.center, r = -e.radius;
for (let s = 0; s < 6; s++)
if (t[s].distanceToPoint(i) < r)
return !1;
return !0;
}
intersectsBox(e) {
const t = this.planes;
for (let i = 0; i < 6; i++) {
const r = t[i];
if (Jl.x = r.normal.x > 0 ? e.max.x : e.min.x, Jl.y = r.normal.y > 0 ? e.max.y : e.min.y, Jl.z = r.normal.z > 0 ? e.max.z : e.min.z, r.distanceToPoint(Jl) < 0)
return !1;
}
return !0;
}
containsPoint(e) {
const t = this.planes;
for (let i = 0; i < 6; i++)
if (t[i].distanceToPoint(e) < 0)
return !1;
return !0;
}
clone() {
return new this.constructor().copy(this);
}
}
function fx() {
let n = null, e = !1, t = null, i = null;
function r(s, o) {
t(s, o), i = n.requestAnimationFrame(r);
}
return {
start: function() {
e !== !0 && t !== null && (i = n.requestAnimationFrame(r), e = !0);
},
stop: function() {
n.cancelAnimationFrame(i), e = !1;
},
setAnimationLoop: function(s) {
t = s;
},
setContext: function(s) {
n = s;
}
};
}
function PF(n, e) {
const t = e.isWebGL2, i = /* @__PURE__ */ new WeakMap();
function r(l, d) {
const h = l.array, f = l.usage, g = n.createBuffer();
n.bindBuffer(d, g), n.bufferData(d, h, f), l.onUploadCallback();
let p = 5126;
return h instanceof Float32Array ? p = 5126 : h instanceof Float64Array ? console.warn("THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.") : h instanceof Uint16Array ? l.isFloat16BufferAttribute ? t ? p = 5131 : console.warn("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.") : p = 5123 : h instanceof Int16Array ? p = 5122 : h instanceof Uint32Array ? p = 5125 : h instanceof Int32Array ? p = 5124 : h instanceof Int8Array ? p = 5120 : (h instanceof Uint8Array || h instanceof Uint8ClampedArray) && (p = 5121), {
buffer: g,
type: p,
bytesPerElement: h.BYTES_PER_ELEMENT,
version: l.version
};
}
function s(l, d, h) {
const f = d.array, g = d.updateRange;
n.bindBuffer(h, l), g.count === -1 ? n.bufferSubData(h, 0, f) : (t ? n.bufferSubData(
h,
g.offset * f.BYTES_PER_ELEMENT,
f,
g.offset,
g.count
) : n.bufferSubData(
h,
g.offset * f.BYTES_PER_ELEMENT,
f.subarray(g.offset, g.offset + g.count)
), g.count = -1);
}
function o(l) {
return l.isInterleavedBufferAttribute && (l = l.data), i.get(l);
}
function a(l) {
l.isInterleavedBufferAttribute && (l = l.data);
const d = i.get(l);
d && (n.deleteBuffer(d.buffer), i.delete(l));
}
function c(l, d) {
if (l.isGLBufferAttribute) {
const f = i.get(l);
(!f || f.version < l.version) && i.set(l, {
buffer: l.buffer,
type: l.type,
bytesPerElement: l.elementSize,
version: l.version
});
return;
}
l.isInterleavedBufferAttribute && (l = l.data);
const h = i.get(l);
h === void 0 ? i.set(l, r(l, d)) : h.version < l.version && (s(h.buffer, l, d), h.version = l.version);
}
return {
get: o,
remove: a,
update: c
};
}
class Ls extends Ke {
constructor(e = 1, t = 1, i = 1, r = 1) {
super(), this.type = "PlaneGeometry", this.parameters = {
width: e,
height: t,
widthSegments: i,
heightSegments: r
};
const s = e / 2, o = t / 2, a = Math.floor(i), c = Math.floor(r), l = a + 1, d = c + 1, h = e / a, f = t / c, g = [], p = [], u = [], y = [];
for (let v = 0; v < d; v++) {
const m = v * f - o;
for (let x = 0; x < l; x++) {
const w = x * h - s;
p.push(w, -m, 0), u.push(0, 0, 1), y.push(x / a), y.push(1 - v / c);
}
}
for (let v = 0; v < c; v++)
for (let m = 0; m < a; m++) {
const x = m + l * v, w = m + l * (v + 1), A = m + 1 + l * (v + 1), M = m + 1 + l * v;
g.push(x, w, M), g.push(w, A, M);
}
this.setIndex(g), this.setAttribute("position", new We(p, 3)), this.setAttribute("normal", new We(u, 3)), this.setAttribute("uv", new We(y, 2));
}
static fromJSON(e) {
return new Ls(e.width, e.height, e.widthSegments, e.heightSegments);
}
}
var IF = `#ifdef USE_ALPHAMAP
diffuseColor.a *= texture2D( alphaMap, vUv ).g;
#endif`, OF = `#ifdef USE_ALPHAMAP
uniform sampler2D alphaMap;
#endif`, DF = `#ifdef ALPHATEST
if ( diffuseColor.a < ALPHATEST ) discard;
#endif`, NF = `#ifdef USE_AOMAP
float ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;
reflectedLight.indirectDiffuse *= ambientOcclusion;
#if defined( USE_ENVMAP ) && defined( STANDARD )
float dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );
reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );
#endif
#endif`, BF = `#ifdef USE_AOMAP
uniform sampler2D aoMap;
uniform float aoMapIntensity;
#endif`, UF = "vec3 transformed = vec3( position );", zF = `vec3 objectNormal = vec3( normal );
#ifdef USE_TANGENT
vec3 objectTangent = vec3( tangent.xyz );
#endif`, kF = `vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {
const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );
const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );
vec4 r = roughness * c0 + c1;
float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;
return vec2( -1.04, 1.04 ) * a004 + r.zw;
}
float punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {
#if defined ( PHYSICALLY_CORRECT_LIGHTS )
float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );
if( cutoffDistance > 0.0 ) {
distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );
}
return distanceFalloff;
#else
if( cutoffDistance > 0.0 && decayExponent > 0.0 ) {
return pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );
}
return 1.0;
#endif
}
vec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {
return RECIPROCAL_PI * diffuseColor;
}
vec3 F_Schlick( const in vec3 specularColor, const in float dotVH ) {
float fresnel = exp2( ( -5.55473 * dotVH - 6.98316 ) * dotVH );
return ( 1.0 - specularColor ) * fresnel + specularColor;
}
vec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {
float fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );
vec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;
return Fr * fresnel + F0;
}
float G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {
float a2 = pow2( alpha );
float gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );
float gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );
return 1.0 / ( gl * gv );
}
float G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {
float a2 = pow2( alpha );
float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );
float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );
return 0.5 / max( gv + gl, EPSILON );
}
float D_GGX( const in float alpha, const in float dotNH ) {
float a2 = pow2( alpha );
float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;
return RECIPROCAL_PI * a2 / pow2( denom );
}
vec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {
float alpha = pow2( roughness );
vec3 halfDir = normalize( incidentLight.direction + viewDir );
float dotNL = saturate( dot( normal, incidentLight.direction ) );
float dotNV = saturate( dot( normal, viewDir ) );
float dotNH = saturate( dot( normal, halfDir ) );
float dotLH = saturate( dot( incidentLight.direction, halfDir ) );
vec3 F = F_Schlick( specularColor, dotLH );
float G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );
float D = D_GGX( alpha, dotNH );
return F * ( G * D );
}
vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {
const float LUT_SIZE = 64.0;
const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;
const float LUT_BIAS = 0.5 / LUT_SIZE;
float dotNV = saturate( dot( N, V ) );
vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );
uv = uv * LUT_SCALE + LUT_BIAS;
return uv;
}
float LTC_ClippedSphereFormFactor( const in vec3 f ) {
float l = length( f );
return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );
}
vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {
float x = dot( v1, v2 );
float y = abs( x );
float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;
float b = 3.4175940 + ( 4.1616724 + y ) * y;
float v = a / b;
float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;
return cross( v1, v2 ) * theta_sintheta;
}
vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {
vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];
vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];
vec3 lightNormal = cross( v1, v2 );
if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );
vec3 T1, T2;
T1 = normalize( V - N * dot( V, N ) );
T2 = - cross( N, T1 );
mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );
vec3 coords[ 4 ];
coords[ 0 ] = mat * ( rectCoords[ 0 ] - P );
coords[ 1 ] = mat * ( rectCoords[ 1 ] - P );
coords[ 2 ] = mat * ( rectCoords[ 2 ] - P );
coords[ 3 ] = mat * ( rectCoords[ 3 ] - P );
coords[ 0 ] = normalize( coords[ 0 ] );
coords[ 1 ] = normalize( coords[ 1 ] );
coords[ 2 ] = normalize( coords[ 2 ] );
coords[ 3 ] = normalize( coords[ 3 ] );
vec3 vectorFormFactor = vec3( 0.0 );
vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );
vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );
vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );
vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );
float result = LTC_ClippedSphereFormFactor( vectorFormFactor );
return vec3( result );
}
vec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {
float dotNV = saturate( dot( normal, viewDir ) );
vec2 brdf = integrateSpecularBRDF( dotNV, roughness );
return specularColor * brdf.x + brdf.y;
}
void BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {
float dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );
vec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );
vec2 brdf = integrateSpecularBRDF( dotNV, roughness );
vec3 FssEss = F * brdf.x + brdf.y;
float Ess = brdf.x + brdf.y;
float Ems = 1.0 - Ess;
vec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );
singleScatter += FssEss;
multiScatter += Fms * Ems;
}
float G_BlinnPhong_Implicit( ) {
return 0.25;
}
float D_BlinnPhong( const in float shininess, const in float dotNH ) {
return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );
}
vec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {
vec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );
float dotNH = saturate( dot( geometry.normal, halfDir ) );
float dotLH = saturate( dot( incidentLight.direction, halfDir ) );
vec3 F = F_Schlick( specularColor, dotLH );
float G = G_BlinnPhong_Implicit( );
float D = D_BlinnPhong( shininess, dotNH );
return F * ( G * D );
}
float GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {
return ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );
}
float BlinnExponentToGGXRoughness( const in float blinnExponent ) {
return sqrt( 2.0 / ( blinnExponent + 2.0 ) );
}
#if defined( USE_SHEEN )
float D_Charlie(float roughness, float NoH) {
float invAlpha = 1.0 / roughness;
float cos2h = NoH * NoH;
float sin2h = max(1.0 - cos2h, 0.0078125); return (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI);
}
float V_Neubelt(float NoV, float NoL) {
return saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV)));
}
vec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {
vec3 N = geometry.normal;
vec3 V = geometry.viewDir;
vec3 H = normalize( V + L );
float dotNH = saturate( dot( N, H ) );
return specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );
}
#endif`, VF = `#ifdef USE_BUMPMAP
uniform sampler2D bumpMap;
uniform float bumpScale;
vec2 dHdxy_fwd() {
vec2 dSTdx = dFdx( vUv );
vec2 dSTdy = dFdy( vUv );
float Hll = bumpScale * texture2D( bumpMap, vUv ).x;
float dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;
float dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;
return vec2( dBx, dBy );
}
vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {
vec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );
vec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );
vec3 vN = surf_norm;
vec3 R1 = cross( vSigmaY, vN );
vec3 R2 = cross( vN, vSigmaX );
float fDet = dot( vSigmaX, R1 ) * faceDirection;
vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
return normalize( abs( fDet ) * surf_norm - vGrad );
}
#endif`, GF = `#if NUM_CLIPPING_PLANES > 0
vec4 plane;
#pragma unroll_loop_start
for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {
plane = clippingPlanes[ i ];
if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;
}
#pragma unroll_loop_end
#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES
bool clipped = true;
#pragma unroll_loop_start
for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {
plane = clippingPlanes[ i ];
clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;
}
#pragma unroll_loop_end
if ( clipped ) discard;
#endif
#endif`, HF = `#if NUM_CLIPPING_PLANES > 0
varying vec3 vClipPosition;
uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];
#endif`, WF = `#if NUM_CLIPPING_PLANES > 0
varying vec3 vClipPosition;
#endif`, jF = `#if NUM_CLIPPING_PLANES > 0
vClipPosition = - mvPosition.xyz;
#endif`, $F = `#if defined( USE_COLOR_ALPHA )
diffuseColor *= vColor;
#elif defined( USE_COLOR )
diffuseColor.rgb *= vColor;
#endif`, ZF = `#if defined( USE_COLOR_ALPHA )
varying vec4 vColor;
#elif defined( USE_COLOR )
varying vec3 vColor;
#endif`, XF = `#if defined( USE_COLOR_ALPHA )
varying vec4 vColor;
#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )
varying vec3 vColor;
#endif`, YF = `#if defined( USE_COLOR_ALPHA )
vColor = vec4( 1.0 );
#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )
vColor = vec3( 1.0 );
#endif
#ifdef USE_COLOR
vColor *= color;
#endif
#ifdef USE_INSTANCING_COLOR
vColor.xyz *= instanceColor.xyz;
#endif`, JF = `#define PI 3.141592653589793
#define PI2 6.283185307179586
#define PI_HALF 1.5707963267948966
#define RECIPROCAL_PI 0.3183098861837907
#define RECIPROCAL_PI2 0.15915494309189535
#define EPSILON 1e-6
#ifndef saturate
#define saturate(a) clamp( a, 0.0, 1.0 )
#endif
#define whiteComplement(a) ( 1.0 - saturate( a ) )
float pow2( const in float x ) { return x*x; }
float pow3( const in float x ) { return x*x*x; }
float pow4( const in float x ) { float x2 = x*x; return x2*x2; }
float average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }
highp float rand( const in vec2 uv ) {
const highp float a = 12.9898, b = 78.233, c = 43758.5453;
highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );
return fract(sin(sn) * c);
}
#ifdef HIGH_PRECISION
float precisionSafeLength( vec3 v ) { return length( v ); }
#else
float max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); }
float precisionSafeLength( vec3 v ) {
float maxComponent = max3( abs( v ) );
return length( v / maxComponent ) * maxComponent;
}
#endif
struct IncidentLight {
vec3 color;
vec3 direction;
bool visible;
};
struct ReflectedLight {
vec3 directDiffuse;
vec3 directSpecular;
vec3 indirectDiffuse;
vec3 indirectSpecular;
};
struct GeometricContext {
vec3 position;
vec3 normal;
vec3 viewDir;
#ifdef CLEARCOAT
vec3 clearcoatNormal;
#endif
};
vec3 transformDirection( in vec3 dir, in mat4 matrix ) {
return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );
}
vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {
return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );
}
vec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {
float distance = dot( planeNormal, point - pointOnPlane );
return - distance * planeNormal + point;
}
float sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {
return sign( dot( point - pointOnPlane, planeNormal ) );
}
vec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {
return lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;
}
mat3 transposeMat3( const in mat3 m ) {
mat3 tmp;
tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );
tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );
tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );
return tmp;
}
float linearToRelativeLuminance( const in vec3 color ) {
vec3 weights = vec3( 0.2126, 0.7152, 0.0722 );
return dot( weights, color.rgb );
}
bool isPerspectiveMatrix( mat4 m ) {
return m[ 2 ][ 3 ] == - 1.0;
}
vec2 equirectUv( in vec3 dir ) {
float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;
float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;
return vec2( u, v );
}`, KF = `#ifdef ENVMAP_TYPE_CUBE_UV
#define cubeUV_maxMipLevel 8.0
#define cubeUV_minMipLevel 4.0
#define cubeUV_maxTileSize 256.0
#define cubeUV_minTileSize 16.0
float getFace( vec3 direction ) {
vec3 absDirection = abs( direction );
float face = - 1.0;
if ( absDirection.x > absDirection.z ) {
if ( absDirection.x > absDirection.y )
face = direction.x > 0.0 ? 0.0 : 3.0;
else
face = direction.y > 0.0 ? 1.0 : 4.0;
} else {
if ( absDirection.z > absDirection.y )
face = direction.z > 0.0 ? 2.0 : 5.0;
else
face = direction.y > 0.0 ? 1.0 : 4.0;
}
return face;
}
vec2 getUV( vec3 direction, float face ) {
vec2 uv;
if ( face == 0.0 ) {
uv = vec2( direction.z, direction.y ) / abs( direction.x );
} else if ( face == 1.0 ) {
uv = vec2( - direction.x, - direction.z ) / abs( direction.y );
} else if ( face == 2.0 ) {
uv = vec2( - direction.x, direction.y ) / abs( direction.z );
} else if ( face == 3.0 ) {
uv = vec2( - direction.z, direction.y ) / abs( direction.x );
} else if ( face == 4.0 ) {
uv = vec2( - direction.x, direction.z ) / abs( direction.y );
} else {
uv = vec2( direction.x, direction.y ) / abs( direction.z );
}
return 0.5 * ( uv + 1.0 );
}
vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {
float face = getFace( direction );
float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );
mipInt = max( mipInt, cubeUV_minMipLevel );
float faceSize = exp2( mipInt );
float texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );
vec2 uv = getUV( direction, face ) * ( faceSize - 1.0 );
vec2 f = fract( uv );
uv += 0.5 - f;
if ( face > 2.0 ) {
uv.y += faceSize;
face -= 3.0;
}
uv.x += face * faceSize;
if ( mipInt < cubeUV_maxMipLevel ) {
uv.y += 2.0 * cubeUV_maxTileSize;
}
uv.y += filterInt * 2.0 * cubeUV_minTileSize;
uv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize );
uv *= texelSize;
vec3 tl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;
uv.x += texelSize;
vec3 tr = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;
uv.y += texelSize;
vec3 br = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;
uv.x -= texelSize;
vec3 bl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;
vec3 tm = mix( tl, tr, f.x );
vec3 bm = mix( bl, br, f.x );
return mix( tm, bm, f.y );
}
#define r0 1.0
#define v0 0.339
#define m0 - 2.0
#define r1 0.8
#define v1 0.276
#define m1 - 1.0
#define r4 0.4
#define v4 0.046
#define m4 2.0
#define r5 0.305
#define v5 0.016
#define m5 3.0
#define r6 0.21
#define v6 0.0038
#define m6 4.0
float roughnessToMip( float roughness ) {
float mip = 0.0;
if ( roughness >= r1 ) {
mip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;
} else if ( roughness >= r4 ) {
mip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;
} else if ( roughness >= r5 ) {
mip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;
} else if ( roughness >= r6 ) {
mip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;
} else {
mip = - 2.0 * log2( 1.16 * roughness ); }
return mip;
}
vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {
float mip = clamp( roughnessToMip( roughness ), m0, cubeUV_maxMipLevel );
float mipF = fract( mip );
float mipInt = floor( mip );
vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );
if ( mipF == 0.0 ) {
return vec4( color0, 1.0 );
} else {
vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );
return vec4( mix( color0, color1, mipF ), 1.0 );
}
}
#endif`, qF = `vec3 transformedNormal = objectNormal;
#ifdef USE_INSTANCING
mat3 m = mat3( instanceMatrix );
transformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );
transformedNormal = m * transformedNormal;
#endif
transformedNormal = normalMatrix * transformedNormal;
#ifdef FLIP_SIDED
transformedNormal = - transformedNormal;
#endif
#ifdef USE_TANGENT
vec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;
#ifdef FLIP_SIDED
transformedTangent = - transformedTangent;
#endif
#endif`, QF = `#ifdef USE_DISPLACEMENTMAP
uniform sampler2D displacementMap;
uniform float displacementScale;
uniform float displacementBias;
#endif`, eP = `#ifdef USE_DISPLACEMENTMAP
transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );
#endif`, tP = `#ifdef USE_EMISSIVEMAP
vec4 emissiveColor = texture2D( emissiveMap, vUv );
emissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;
totalEmissiveRadiance *= emissiveColor.rgb;
#endif`, nP = `#ifdef USE_EMISSIVEMAP
uniform sampler2D emissiveMap;
#endif`, iP = "gl_FragColor = linearToOutputTexel( gl_FragColor );", rP = `
vec4 LinearToLinear( in vec4 value ) {
return value;
}
vec4 GammaToLinear( in vec4 value, in float gammaFactor ) {
return vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );
}
vec4 LinearToGamma( in vec4 value, in float gammaFactor ) {
return vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );
}
vec4 sRGBToLinear( in vec4 value ) {
return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );
}
vec4 LinearTosRGB( in vec4 value ) {
return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );
}
vec4 RGBEToLinear( in vec4 value ) {
return vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );
}
vec4 LinearToRGBE( in vec4 value ) {
float maxComponent = max( max( value.r, value.g ), value.b );
float fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );
return vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );
}
vec4 RGBMToLinear( in vec4 value, in float maxRange ) {
return vec4( value.rgb * value.a * maxRange, 1.0 );
}
vec4 LinearToRGBM( in vec4 value, in float maxRange ) {
float maxRGB = max( value.r, max( value.g, value.b ) );
float M = clamp( maxRGB / maxRange, 0.0, 1.0 );
M = ceil( M * 255.0 ) / 255.0;
return vec4( value.rgb / ( M * maxRange ), M );
}
vec4 RGBDToLinear( in vec4 value, in float maxRange ) {
return vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );
}
vec4 LinearToRGBD( in vec4 value, in float maxRange ) {
float maxRGB = max( value.r, max( value.g, value.b ) );
float D = max( maxRange / maxRGB, 1.0 );
D = clamp( floor( D ) / 255.0, 0.0, 1.0 );
return vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );
}
const mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );
vec4 LinearToLogLuv( in vec4 value ) {
vec3 Xp_Y_XYZp = cLogLuvM * value.rgb;
Xp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );
vec4 vResult;
vResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;
float Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;
vResult.w = fract( Le );
vResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;
return vResult;
}
const mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );
vec4 LogLuvToLinear( in vec4 value ) {
float Le = value.z * 255.0 + value.w;
vec3 Xp_Y_XYZp;
Xp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );
Xp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;
Xp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;
vec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;
return vec4( max( vRGB, 0.0 ), 1.0 );
}`, sP = `#ifdef USE_ENVMAP
#ifdef ENV_WORLDPOS
vec3 cameraToFrag;
if ( isOrthographic ) {
cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
} else {
cameraToFrag = normalize( vWorldPosition - cameraPosition );
}
vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
#ifdef ENVMAP_MODE_REFLECTION
vec3 reflectVec = reflect( cameraToFrag, worldNormal );
#else
vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );
#endif
#else
vec3 reflectVec = vReflect;
#endif
#ifdef ENVMAP_TYPE_CUBE
vec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );
#elif defined( ENVMAP_TYPE_CUBE_UV )
vec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );
#else
vec4 envColor = vec4( 0.0 );
#endif
#ifndef ENVMAP_TYPE_CUBE_UV
envColor = envMapTexelToLinear( envColor );
#endif
#ifdef ENVMAP_BLENDING_MULTIPLY
outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );
#elif defined( ENVMAP_BLENDING_MIX )
outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );
#elif defined( ENVMAP_BLENDING_ADD )
outgoingLight += envColor.xyz * specularStrength * reflectivity;
#endif
#endif`, oP = `#ifdef USE_ENVMAP
uniform float envMapIntensity;
uniform float flipEnvMap;
uniform int maxMipLevel;
#ifdef ENVMAP_TYPE_CUBE
uniform samplerCube envMap;
#else
uniform sampler2D envMap;
#endif
#endif`, aP = `#ifdef USE_ENVMAP
uniform float reflectivity;
#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )
#define ENV_WORLDPOS
#endif
#ifdef ENV_WORLDPOS
varying vec3 vWorldPosition;
uniform float refractionRatio;
#else
varying vec3 vReflect;
#endif
#endif`, lP = `#ifdef USE_ENVMAP
#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )
#define ENV_WORLDPOS
#endif
#ifdef ENV_WORLDPOS
varying vec3 vWorldPosition;
#else
varying vec3 vReflect;
uniform float refractionRatio;
#endif
#endif`, cP = `#ifdef USE_ENVMAP
#ifdef ENV_WORLDPOS
vWorldPosition = worldPosition.xyz;
#else
vec3 cameraToVertex;
if ( isOrthographic ) {
cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
} else {
cameraToVertex = normalize( worldPosition.xyz - cameraPosition );
}
vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );
#ifdef ENVMAP_MODE_REFLECTION
vReflect = reflect( cameraToVertex, worldNormal );
#else
vReflect = refract( cameraToVertex, worldNormal, refractionRatio );
#endif
#endif
#endif`, uP = `#ifdef USE_FOG
fogDepth = - mvPosition.z;
#endif`, hP = `#ifdef USE_FOG
varying float fogDepth;
#endif`, dP = `#ifdef USE_FOG
#ifdef FOG_EXP2
float fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );
#else
float fogFactor = smoothstep( fogNear, fogFar, fogDepth );
#endif
gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );
#endif`, fP = `#ifdef USE_FOG
uniform vec3 fogColor;
varying float fogDepth;
#ifdef FOG_EXP2
uniform float fogDensity;
#else
uniform float fogNear;
uniform float fogFar;
#endif
#endif`, pP = `#ifdef USE_GRADIENTMAP
uniform sampler2D gradientMap;
#endif
vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {
float dotNL = dot( normal, lightDirection );
vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );
#ifdef USE_GRADIENTMAP
return texture2D( gradientMap, coord ).rgb;
#else
return ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );
#endif
}`, mP = `#ifdef USE_LIGHTMAP
vec4 lightMapTexel= texture2D( lightMap, vUv2 );
reflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;
#endif`, gP = `#ifdef USE_LIGHTMAP
uniform sampler2D lightMap;
uniform float lightMapIntensity;
#endif`, vP = `vec3 diffuse = vec3( 1.0 );
GeometricContext geometry;
geometry.position = mvPosition.xyz;
geometry.normal = normalize( transformedNormal );
geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );
GeometricContext backGeometry;
backGeometry.position = geometry.position;
backGeometry.normal = -geometry.normal;
backGeometry.viewDir = geometry.viewDir;
vLightFront = vec3( 0.0 );
vIndirectFront = vec3( 0.0 );
#ifdef DOUBLE_SIDED
vLightBack = vec3( 0.0 );
vIndirectBack = vec3( 0.0 );
#endif
IncidentLight directLight;
float dotNL;
vec3 directLightColor_Diffuse;
vIndirectFront += getAmbientLightIrradiance( ambientLightColor );
vIndirectFront += getLightProbeIrradiance( lightProbe, geometry );
#ifdef DOUBLE_SIDED
vIndirectBack += getAmbientLightIrradiance( ambientLightColor );
vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry );
#endif
#if NUM_POINT_LIGHTS > 0
#pragma unroll_loop_start
for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
getPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );
dotNL = dot( geometry.normal, directLight.direction );
directLightColor_Diffuse = PI * directLight.color;
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
#ifdef DOUBLE_SIDED
vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
#endif
}
#pragma unroll_loop_end
#endif
#if NUM_SPOT_LIGHTS > 0
#pragma unroll_loop_start
for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
getSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );
dotNL = dot( geometry.normal, directLight.direction );
directLightColor_Diffuse = PI * directLight.color;
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
#ifdef DOUBLE_SIDED
vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
#endif
}
#pragma unroll_loop_end
#endif
#if NUM_DIR_LIGHTS > 0
#pragma unroll_loop_start
for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
getDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );
dotNL = dot( geometry.normal, directLight.direction );
directLightColor_Diffuse = PI * directLight.color;
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
#ifdef DOUBLE_SIDED
vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
#endif
}
#pragma unroll_loop_end
#endif
#if NUM_HEMI_LIGHTS > 0
#pragma unroll_loop_start
for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );
#ifdef DOUBLE_SIDED
vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );
#endif
}
#pragma unroll_loop_end
#endif`, yP = `uniform bool receiveShadow;
uniform vec3 ambientLightColor;
uniform vec3 lightProbe[ 9 ];
vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {
float x = normal.x, y = normal.y, z = normal.z;
vec3 result = shCoefficients[ 0 ] * 0.886227;
result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;
result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;
result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;
result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;
result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;
result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );
result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;
result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );
return result;
}
vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {
vec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );
vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );
return irradiance;
}
vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {
vec3 irradiance = ambientLightColor;
#ifndef PHYSICALLY_CORRECT_LIGHTS
irradiance *= PI;
#endif
return irradiance;
}
#if NUM_DIR_LIGHTS > 0
struct DirectionalLight {
vec3 direction;
vec3 color;
};
uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];
void getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {
directLight.color = directionalLight.color;
directLight.direction = directionalLight.direction;
directLight.visible = true;
}
#endif
#if NUM_POINT_LIGHTS > 0
struct PointLight {
vec3 position;
vec3 color;
float distance;
float decay;
};
uniform PointLight pointLights[ NUM_POINT_LIGHTS ];
void getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {
vec3 lVector = pointLight.position - geometry.position;
directLight.direction = normalize( lVector );
float lightDistance = length( lVector );
directLight.color = pointLight.color;
directLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );
directLight.visible = ( directLight.color != vec3( 0.0 ) );
}
#endif
#if NUM_SPOT_LIGHTS > 0
struct SpotLight {
vec3 position;
vec3 direction;
vec3 color;
float distance;
float decay;
float coneCos;
float penumbraCos;
};
uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];
void getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {
vec3 lVector = spotLight.position - geometry.position;
directLight.direction = normalize( lVector );
float lightDistance = length( lVector );
float angleCos = dot( directLight.direction, spotLight.direction );
if ( angleCos > spotLight.coneCos ) {
float spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );
directLight.color = spotLight.color;
directLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );
directLight.visible = true;
} else {
directLight.color = vec3( 0.0 );
directLight.visible = false;
}
}
#endif
#if NUM_RECT_AREA_LIGHTS > 0
struct RectAreaLight {
vec3 color;
vec3 position;
vec3 halfWidth;
vec3 halfHeight;
};
uniform sampler2D ltc_1; uniform sampler2D ltc_2;
uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];
#endif
#if NUM_HEMI_LIGHTS > 0
struct HemisphereLight {
vec3 direction;
vec3 skyColor;
vec3 groundColor;
};
uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];
vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {
float dotNL = dot( geometry.normal, hemiLight.direction );
float hemiDiffuseWeight = 0.5 * dotNL + 0.5;
vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );
#ifndef PHYSICALLY_CORRECT_LIGHTS
irradiance *= PI;
#endif
return irradiance;
}
#endif`, bP = `#if defined( USE_ENVMAP )
#ifdef ENVMAP_MODE_REFRACTION
uniform float refractionRatio;
#endif
vec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {
vec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );
#ifdef ENVMAP_TYPE_CUBE
vec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );
#ifdef TEXTURE_LOD_EXT
vec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );
#else
vec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );
#endif
envMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;
#elif defined( ENVMAP_TYPE_CUBE_UV )
vec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );
#else
vec4 envMapColor = vec4( 0.0 );
#endif
return PI * envMapColor.rgb * envMapIntensity;
}
float getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) {
float maxMIPLevelScalar = float( maxMIPLevel );
float sigma = PI * roughness * roughness / ( 1.0 + roughness );
float desiredMIPLevel = maxMIPLevelScalar + log2( sigma );
return clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );
}
vec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) {
#ifdef ENVMAP_MODE_REFLECTION
vec3 reflectVec = reflect( -viewDir, normal );
reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );
#else
vec3 reflectVec = refract( -viewDir, normal, refractionRatio );
#endif
reflectVec = inverseTransformDirection( reflectVec, viewMatrix );
float specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel );
#ifdef ENVMAP_TYPE_CUBE
vec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );
#ifdef TEXTURE_LOD_EXT
vec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );
#else
vec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );
#endif
envMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;
#elif defined( ENVMAP_TYPE_CUBE_UV )
vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );
#endif
return envMapColor.rgb * envMapIntensity;
}
#endif`, xP = `ToonMaterial material;
material.diffuseColor = diffuseColor.rgb;`, MP = `varying vec3 vViewPosition;
#ifndef FLAT_SHADED
varying vec3 vNormal;
#endif
struct ToonMaterial {
vec3 diffuseColor;
};
void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;
#ifndef PHYSICALLY_CORRECT_LIGHTS
irradiance *= PI;
#endif
reflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );
}
void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
reflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );
}
#define RE_Direct RE_Direct_Toon
#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
#define Material_LightProbeLOD( material ) (0)`, wP = `BlinnPhongMaterial material;
material.diffuseColor = diffuseColor.rgb;
material.specularColor = specular;
material.specularShininess = shininess;
material.specularStrength = specularStrength;`, AP = `varying vec3 vViewPosition;
#ifndef FLAT_SHADED
varying vec3 vNormal;
#endif
struct BlinnPhongMaterial {
vec3 diffuseColor;
vec3 specularColor;
float specularShininess;
float specularStrength;
};
void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
float dotNL = saturate( dot( geometry.normal, directLight.direction ) );
vec3 irradiance = dotNL * directLight.color;
#ifndef PHYSICALLY_CORRECT_LIGHTS
irradiance *= PI;
#endif
reflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );
reflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;
}
void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
reflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );
}
#define RE_Direct RE_Direct_BlinnPhong
#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong
#define Material_LightProbeLOD( material ) (0)`, SP = `PhysicalMaterial material;
material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );
vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );
float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );
material.specularRoughness = max( roughnessFactor, 0.0525 );material.specularRoughness += geometryRoughness;
material.specularRoughness = min( material.specularRoughness, 1.0 );
#ifdef REFLECTIVITY
material.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );
#else
material.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );
#endif
#ifdef CLEARCOAT
material.clearcoat = clearcoat;
material.clearcoatRoughness = clearcoatRoughness;
#ifdef USE_CLEARCOATMAP
material.clearcoat *= texture2D( clearcoatMap, vUv ).x;
#endif
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;
#endif
material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );
material.clearcoatRoughness += geometryRoughness;
material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );
#endif
#ifdef USE_SHEEN
material.sheenColor = sheen;
#endif`, _P = `struct PhysicalMaterial {
vec3 diffuseColor;
float specularRoughness;
vec3 specularColor;
#ifdef CLEARCOAT
float clearcoat;
float clearcoatRoughness;
#endif
#ifdef USE_SHEEN
vec3 sheenColor;
#endif
};
#define MAXIMUM_SPECULAR_COEFFICIENT 0.16
#define DEFAULT_SPECULAR_COEFFICIENT 0.04
float clearcoatDHRApprox( const in float roughness, const in float dotNL ) {
return DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );
}
#if NUM_RECT_AREA_LIGHTS > 0
void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
vec3 normal = geometry.normal;
vec3 viewDir = geometry.viewDir;
vec3 position = geometry.position;
vec3 lightPos = rectAreaLight.position;
vec3 halfWidth = rectAreaLight.halfWidth;
vec3 halfHeight = rectAreaLight.halfHeight;
vec3 lightColor = rectAreaLight.color;
float roughness = material.specularRoughness;
vec3 rectCoords[ 4 ];
rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight;
rectCoords[ 2 ] = lightPos - halfWidth + halfHeight;
rectCoords[ 3 ] = lightPos + halfWidth + halfHeight;
vec2 uv = LTC_Uv( normal, viewDir, roughness );
vec4 t1 = texture2D( ltc_1, uv );
vec4 t2 = texture2D( ltc_2, uv );
mat3 mInv = mat3(
vec3( t1.x, 0, t1.y ),
vec3( 0, 1, 0 ),
vec3( t1.z, 0, t1.w )
);
vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );
reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );
reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );
}
#endif
void RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
float dotNL = saturate( dot( geometry.normal, directLight.direction ) );
vec3 irradiance = dotNL * directLight.color;
#ifndef PHYSICALLY_CORRECT_LIGHTS
irradiance *= PI;
#endif
#ifdef CLEARCOAT
float ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );
vec3 ccIrradiance = ccDotNL * directLight.color;
#ifndef PHYSICALLY_CORRECT_LIGHTS
ccIrradiance *= PI;
#endif
float clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );
reflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );
#else
float clearcoatDHR = 0.0;
#endif
#ifdef USE_SHEEN
reflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen(
material.specularRoughness,
directLight.direction,
geometry,
material.sheenColor
);
#else
reflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness);
#endif
reflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );
}
void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
reflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );
}
void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
#ifdef CLEARCOAT
float ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );
reflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );
float ccDotNL = ccDotNV;
float clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );
#else
float clearcoatDHR = 0.0;
#endif
float clearcoatInv = 1.0 - clearcoatDHR;
vec3 singleScattering = vec3( 0.0 );
vec3 multiScattering = vec3( 0.0 );
vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;
BRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );
vec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );
reflectedLight.indirectSpecular += clearcoatInv * radiance * singleScattering;
reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;
reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;
}
#define RE_Direct RE_Direct_Physical
#define RE_Direct_RectArea RE_Direct_RectArea_Physical
#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical
#define RE_IndirectSpecular RE_IndirectSpecular_Physical
float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {
return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );
}`, TP = `
GeometricContext geometry;
geometry.position = - vViewPosition;
geometry.normal = normal;
geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );
#ifdef CLEARCOAT
geometry.clearcoatNormal = clearcoatNormal;
#endif
IncidentLight directLight;
#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )
PointLight pointLight;
#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0
PointLightShadow pointLightShadow;
#endif
#pragma unroll_loop_start
for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
pointLight = pointLights[ i ];
getPointDirectLightIrradiance( pointLight, geometry, directLight );
#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )
pointLightShadow = pointLightShadows[ i ];
directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;
#endif
RE_Direct( directLight, geometry, material, reflectedLight );
}
#pragma unroll_loop_end
#endif
#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )
SpotLight spotLight;
#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0
SpotLightShadow spotLightShadow;
#endif
#pragma unroll_loop_start
for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
spotLight = spotLights[ i ];
getSpotDirectLightIrradiance( spotLight, geometry, directLight );
#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )
spotLightShadow = spotLightShadows[ i ];
directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;
#endif
RE_Direct( directLight, geometry, material, reflectedLight );
}
#pragma unroll_loop_end
#endif
#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )
DirectionalLight directionalLight;
#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0
DirectionalLightShadow directionalLightShadow;
#endif
#pragma unroll_loop_start
for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
directionalLight = directionalLights[ i ];
getDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );
#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )
directionalLightShadow = directionalLightShadows[ i ];
directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
#endif
RE_Direct( directLight, geometry, material, reflectedLight );
}
#pragma unroll_loop_end
#endif
#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )
RectAreaLight rectAreaLight;
#pragma unroll_loop_start
for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {
rectAreaLight = rectAreaLights[ i ];
RE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );
}
#pragma unroll_loop_end
#endif
#if defined( RE_IndirectDiffuse )
vec3 iblIrradiance = vec3( 0.0 );
vec3 irradiance = getAmbientLightIrradiance( ambientLightColor );
irradiance += getLightProbeIrradiance( lightProbe, geometry );
#if ( NUM_HEMI_LIGHTS > 0 )
#pragma unroll_loop_start
for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );
}
#pragma unroll_loop_end
#endif
#endif
#if defined( RE_IndirectSpecular )
vec3 radiance = vec3( 0.0 );
vec3 clearcoatRadiance = vec3( 0.0 );
#endif`, EP = `#if defined( RE_IndirectDiffuse )
#ifdef USE_LIGHTMAP
vec4 lightMapTexel= texture2D( lightMap, vUv2 );
vec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;
#ifndef PHYSICALLY_CORRECT_LIGHTS
lightMapIrradiance *= PI;
#endif
irradiance += lightMapIrradiance;
#endif
#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )
iblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );
#endif
#endif
#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )
radiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel );
#ifdef CLEARCOAT
clearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel );
#endif
#endif`, CP = `#if defined( RE_IndirectDiffuse )
RE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );
#endif
#if defined( RE_IndirectSpecular )
RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );
#endif`, LP = `#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )
gl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;
#endif`, RP = `#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )
uniform float logDepthBufFC;
varying float vFragDepth;
varying float vIsPerspective;
#endif`, FP = `#ifdef USE_LOGDEPTHBUF
#ifdef USE_LOGDEPTHBUF_EXT
varying float vFragDepth;
varying float vIsPerspective;
#else
uniform float logDepthBufFC;
#endif
#endif`, PP = `#ifdef USE_LOGDEPTHBUF
#ifdef USE_LOGDEPTHBUF_EXT
vFragDepth = 1.0 + gl_Position.w;
vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );
#else
if ( isPerspectiveMatrix( projectionMatrix ) ) {
gl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;
gl_Position.z *= gl_Position.w;
}
#endif
#endif`, IP = `#ifdef USE_MAP
vec4 texelColor = texture2D( map, vUv );
texelColor = mapTexelToLinear( texelColor );
diffuseColor *= texelColor;
#endif`, OP = `#ifdef USE_MAP
uniform sampler2D map;
#endif`, DP = `#if defined( USE_MAP ) || defined( USE_ALPHAMAP )
vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;
#endif
#ifdef USE_MAP
vec4 mapTexel = texture2D( map, uv );
diffuseColor *= mapTexelToLinear( mapTexel );
#endif
#ifdef USE_ALPHAMAP
diffuseColor.a *= texture2D( alphaMap, uv ).g;
#endif`, NP = `#if defined( USE_MAP ) || defined( USE_ALPHAMAP )
uniform mat3 uvTransform;
#endif
#ifdef USE_MAP
uniform sampler2D map;
#endif
#ifdef USE_ALPHAMAP
uniform sampler2D alphaMap;
#endif`, BP = `float metalnessFactor = metalness;
#ifdef USE_METALNESSMAP
vec4 texelMetalness = texture2D( metalnessMap, vUv );
metalnessFactor *= texelMetalness.b;
#endif`, UP = `#ifdef USE_METALNESSMAP
uniform sampler2D metalnessMap;
#endif`, zP = `#ifdef USE_MORPHNORMALS
objectNormal *= morphTargetBaseInfluence;
objectNormal += morphNormal0 * morphTargetInfluences[ 0 ];
objectNormal += morphNormal1 * morphTargetInfluences[ 1 ];
objectNormal += morphNormal2 * morphTargetInfluences[ 2 ];
objectNormal += morphNormal3 * morphTargetInfluences[ 3 ];
#endif`, kP = `#ifdef USE_MORPHTARGETS
uniform float morphTargetBaseInfluence;
#ifndef USE_MORPHNORMALS
uniform float morphTargetInfluences[ 8 ];
#else
uniform float morphTargetInfluences[ 4 ];
#endif
#endif`, VP = `#ifdef USE_MORPHTARGETS
transformed *= morphTargetBaseInfluence;
transformed += morphTarget0 * morphTargetInfluences[ 0 ];
transformed += morphTarget1 * morphTargetInfluences[ 1 ];
transformed += morphTarget2 * morphTargetInfluences[ 2 ];
transformed += morphTarget3 * morphTargetInfluences[ 3 ];
#ifndef USE_MORPHNORMALS
transformed += morphTarget4 * morphTargetInfluences[ 4 ];
transformed += morphTarget5 * morphTargetInfluences[ 5 ];
transformed += morphTarget6 * morphTargetInfluences[ 6 ];
transformed += morphTarget7 * morphTargetInfluences[ 7 ];
#endif
#endif`, GP = `float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;
#ifdef FLAT_SHADED
vec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );
vec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );
vec3 normal = normalize( cross( fdx, fdy ) );
#else
vec3 normal = normalize( vNormal );
#ifdef DOUBLE_SIDED
normal = normal * faceDirection;
#endif
#ifdef USE_TANGENT
vec3 tangent = normalize( vTangent );
vec3 bitangent = normalize( vBitangent );
#ifdef DOUBLE_SIDED
tangent = tangent * faceDirection;
bitangent = bitangent * faceDirection;
#endif
#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )
mat3 vTBN = mat3( tangent, bitangent, normal );
#endif
#endif
#endif
vec3 geometryNormal = normal;`, HP = `#ifdef OBJECTSPACE_NORMALMAP
normal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;
#ifdef FLIP_SIDED
normal = - normal;
#endif
#ifdef DOUBLE_SIDED
normal = normal * faceDirection;
#endif
normal = normalize( normalMatrix * normal );
#elif defined( TANGENTSPACE_NORMALMAP )
vec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;
mapN.xy *= normalScale;
#ifdef USE_TANGENT
normal = normalize( vTBN * mapN );
#else
normal = perturbNormal2Arb( -vViewPosition, normal, mapN, faceDirection );
#endif
#elif defined( USE_BUMPMAP )
normal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd(), faceDirection );
#endif`, WP = `#ifdef USE_NORMALMAP
uniform sampler2D normalMap;
uniform vec2 normalScale;
#endif
#ifdef OBJECTSPACE_NORMALMAP
uniform mat3 normalMatrix;
#endif
#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )
vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {
vec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );
vec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );
vec2 st0 = dFdx( vUv.st );
vec2 st1 = dFdy( vUv.st );
vec3 N = surf_norm;
vec3 q1perp = cross( q1, N );
vec3 q0perp = cross( N, q0 );
vec3 T = q1perp * st0.x + q0perp * st1.x;
vec3 B = q1perp * st0.y + q0perp * st1.y;
float det = max( dot( T, T ), dot( B, B ) );
float scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );
return normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );
}
#endif`, jP = `#ifdef CLEARCOAT
vec3 clearcoatNormal = geometryNormal;
#endif`, $P = `#ifdef USE_CLEARCOAT_NORMALMAP
vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;
clearcoatMapN.xy *= clearcoatNormalScale;
#ifdef USE_TANGENT
clearcoatNormal = normalize( vTBN * clearcoatMapN );
#else
clearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );
#endif
#endif`, ZP = `#ifdef USE_CLEARCOATMAP
uniform sampler2D clearcoatMap;
#endif
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
uniform sampler2D clearcoatRoughnessMap;
#endif
#ifdef USE_CLEARCOAT_NORMALMAP
uniform sampler2D clearcoatNormalMap;
uniform vec2 clearcoatNormalScale;
#endif`, XP = `vec3 packNormalToRGB( const in vec3 normal ) {
return normalize( normal ) * 0.5 + 0.5;
}
vec3 unpackRGBToNormal( const in vec3 rgb ) {
return 2.0 * rgb.xyz - 1.0;
}
const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;
const vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );
const vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );
const float ShiftRight8 = 1. / 256.;
vec4 packDepthToRGBA( const in float v ) {
vec4 r = vec4( fract( v * PackFactors ), v );
r.yzw -= r.xyz * ShiftRight8; return r * PackUpscale;
}
float unpackRGBAToDepth( const in vec4 v ) {
return dot( v, UnpackFactors );
}
vec4 pack2HalfToRGBA( vec2 v ) {
vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ));
return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w);
}
vec2 unpackRGBATo2Half( vec4 v ) {
return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );
}
float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {
return ( viewZ + near ) / ( near - far );
}
float orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {
return linearClipZ * ( near - far ) - near;
}
float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {
return (( near + viewZ ) * far ) / (( far - near ) * viewZ );
}
float perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {
return ( near * far ) / ( ( far - near ) * invClipZ - far );
}`, YP = `#ifdef PREMULTIPLIED_ALPHA
gl_FragColor.rgb *= gl_FragColor.a;
#endif`, JP = `vec4 mvPosition = vec4( transformed, 1.0 );
#ifdef USE_INSTANCING
mvPosition = instanceMatrix * mvPosition;
#endif
mvPosition = modelViewMatrix * mvPosition;
gl_Position = projectionMatrix * mvPosition;`, KP = `#ifdef DITHERING
gl_FragColor.rgb = dithering( gl_FragColor.rgb );
#endif`, qP = `#ifdef DITHERING
vec3 dithering( vec3 color ) {
float grid_position = rand( gl_FragCoord.xy );
vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );
dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );
return color + dither_shift_RGB;
}
#endif`, QP = `float roughnessFactor = roughness;
#ifdef USE_ROUGHNESSMAP
vec4 texelRoughness = texture2D( roughnessMap, vUv );
roughnessFactor *= texelRoughness.g;
#endif`, eI = `#ifdef USE_ROUGHNESSMAP
uniform sampler2D roughnessMap;
#endif`, tI = `#ifdef USE_SHADOWMAP
#if NUM_DIR_LIGHT_SHADOWS > 0
uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];
varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];
struct DirectionalLightShadow {
float shadowBias;
float shadowNormalBias;
float shadowRadius;
vec2 shadowMapSize;
};
uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];
#endif
#if NUM_SPOT_LIGHT_SHADOWS > 0
uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];
varying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];
struct SpotLightShadow {
float shadowBias;
float shadowNormalBias;
float shadowRadius;
vec2 shadowMapSize;
};
uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];
#endif
#if NUM_POINT_LIGHT_SHADOWS > 0
uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];
varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];
struct PointLightShadow {
float shadowBias;
float shadowNormalBias;
float shadowRadius;
vec2 shadowMapSize;
float shadowCameraNear;
float shadowCameraFar;
};
uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];
#endif
float texture2DCompare( sampler2D depths, vec2 uv, float compare ) {
return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );
}
vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {
return unpackRGBATo2Half( texture2D( shadow, uv ) );
}
float VSMShadow (sampler2D shadow, vec2 uv, float compare ){
float occlusion = 1.0;
vec2 distribution = texture2DDistribution( shadow, uv );
float hard_shadow = step( compare , distribution.x );
if (hard_shadow != 1.0 ) {
float distance = compare - distribution.x ;
float variance = max( 0.00000, distribution.y * distribution.y );
float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );
}
return occlusion;
}
float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {
float shadow = 1.0;
shadowCoord.xyz /= shadowCoord.w;
shadowCoord.z += shadowBias;
bvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );
bool inFrustum = all( inFrustumVec );
bvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );
bool frustumTest = all( frustumTestVec );
if ( frustumTest ) {
#if defined( SHADOWMAP_TYPE_PCF )
vec2 texelSize = vec2( 1.0 ) / shadowMapSize;
float dx0 = - texelSize.x * shadowRadius;
float dy0 = - texelSize.y * shadowRadius;
float dx1 = + texelSize.x * shadowRadius;
float dy1 = + texelSize.y * shadowRadius;
float dx2 = dx0 / 2.0;
float dy2 = dy0 / 2.0;
float dx3 = dx1 / 2.0;
float dy3 = dy1 / 2.0;
shadow = (
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )
) * ( 1.0 / 17.0 );
#elif defined( SHADOWMAP_TYPE_PCF_SOFT )
vec2 texelSize = vec2( 1.0 ) / shadowMapSize;
float dx = texelSize.x;
float dy = texelSize.y;
vec2 uv = shadowCoord.xy;
vec2 f = fract( uv * shadowMapSize + 0.5 );
uv -= f * texelSize;
shadow = (
texture2DCompare( shadowMap, uv, shadowCoord.z ) +
texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +
texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +
mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),
texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),
f.x ) +
mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),
texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),
f.x ) +
mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),
texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),
f.y ) +
mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),
texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),
f.y ) +
mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),
texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),
f.x ),
mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),
texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),
f.x ),
f.y )
) * ( 1.0 / 9.0 );
#elif defined( SHADOWMAP_TYPE_VSM )
shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );
#else
shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );
#endif
}
return shadow;
}
vec2 cubeToUV( vec3 v, float texelSizeY ) {
vec3 absV = abs( v );
float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );
absV *= scaleToCube;
v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );
vec2 planar = v.xy;
float almostATexel = 1.5 * texelSizeY;
float almostOne = 1.0 - almostATexel;
if ( absV.z >= almostOne ) {
if ( v.z > 0.0 )
planar.x = 4.0 - v.x;
} else if ( absV.x >= almostOne ) {
float signX = sign( v.x );
planar.x = v.z * signX + 2.0 * signX;
} else if ( absV.y >= almostOne ) {
float signY = sign( v.y );
planar.x = v.x + 2.0 * signY + 2.0;
planar.y = v.z * signY - 2.0;
}
return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );
}
float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {
vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );
vec3 lightToPosition = shadowCoord.xyz;
float dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias;
vec3 bd3D = normalize( lightToPosition );
#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )
vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;
return (
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )
) * ( 1.0 / 9.0 );
#else
return texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );
#endif
}
#endif`, nI = `#ifdef USE_SHADOWMAP
#if NUM_DIR_LIGHT_SHADOWS > 0
uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];
varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];
struct DirectionalLightShadow {
float shadowBias;
float shadowNormalBias;
float shadowRadius;
vec2 shadowMapSize;
};
uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];
#endif
#if NUM_SPOT_LIGHT_SHADOWS > 0
uniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];
varying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];
struct SpotLightShadow {
float shadowBias;
float shadowNormalBias;
float shadowRadius;
vec2 shadowMapSize;
};
uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];
#endif
#if NUM_POINT_LIGHT_SHADOWS > 0
uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];
varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];
struct PointLightShadow {
float shadowBias;
float shadowNormalBias;
float shadowRadius;
vec2 shadowMapSize;
float shadowCameraNear;
float shadowCameraFar;
};
uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];
#endif
#endif`, iI = `#ifdef USE_SHADOWMAP
#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0
vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );
vec4 shadowWorldPosition;
#endif
#if NUM_DIR_LIGHT_SHADOWS > 0
#pragma unroll_loop_start
for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {
shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );
vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;
}
#pragma unroll_loop_end
#endif
#if NUM_SPOT_LIGHT_SHADOWS > 0
#pragma unroll_loop_start
for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {
shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );
vSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;
}
#pragma unroll_loop_end
#endif
#if NUM_POINT_LIGHT_SHADOWS > 0
#pragma unroll_loop_start
for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {
shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );
vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;
}
#pragma unroll_loop_end
#endif
#endif`, rI = `float getShadowMask() {
float shadow = 1.0;
#ifdef USE_SHADOWMAP
#if NUM_DIR_LIGHT_SHADOWS > 0
DirectionalLightShadow directionalLight;
#pragma unroll_loop_start
for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {
directionalLight = directionalLightShadows[ i ];
shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
}
#pragma unroll_loop_end
#endif
#if NUM_SPOT_LIGHT_SHADOWS > 0
SpotLightShadow spotLight;
#pragma unroll_loop_start
for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {
spotLight = spotLightShadows[ i ];
shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;
}
#pragma unroll_loop_end
#endif
#if NUM_POINT_LIGHT_SHADOWS > 0
PointLightShadow pointLight;
#pragma unroll_loop_start
for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {
pointLight = pointLightShadows[ i ];
shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;
}
#pragma unroll_loop_end
#endif
#endif
return shadow;
}`, sI = `#ifdef USE_SKINNING
mat4 boneMatX = getBoneMatrix( skinIndex.x );
mat4 boneMatY = getBoneMatrix( skinIndex.y );
mat4 boneMatZ = getBoneMatrix( skinIndex.z );
mat4 boneMatW = getBoneMatrix( skinIndex.w );
#endif`, oI = `#ifdef USE_SKINNING
uniform mat4 bindMatrix;
uniform mat4 bindMatrixInverse;
#ifdef BONE_TEXTURE
uniform highp sampler2D boneTexture;
uniform int boneTextureSize;
mat4 getBoneMatrix( const in float i ) {
float j = i * 4.0;
float x = mod( j, float( boneTextureSize ) );
float y = floor( j / float( boneTextureSize ) );
float dx = 1.0 / float( boneTextureSize );
float dy = 1.0 / float( boneTextureSize );
y = dy * ( y + 0.5 );
vec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );
vec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );
vec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );
vec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );
mat4 bone = mat4( v1, v2, v3, v4 );
return bone;
}
#else
uniform mat4 boneMatrices[ MAX_BONES ];
mat4 getBoneMatrix( const in float i ) {
mat4 bone = boneMatrices[ int(i) ];
return bone;
}
#endif
#endif`, aI = `#ifdef USE_SKINNING
vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );
vec4 skinned = vec4( 0.0 );
skinned += boneMatX * skinVertex * skinWeight.x;
skinned += boneMatY * skinVertex * skinWeight.y;
skinned += boneMatZ * skinVertex * skinWeight.z;
skinned += boneMatW * skinVertex * skinWeight.w;
transformed = ( bindMatrixInverse * skinned ).xyz;
#endif`, lI = `#ifdef USE_SKINNING
mat4 skinMatrix = mat4( 0.0 );
skinMatrix += skinWeight.x * boneMatX;
skinMatrix += skinWeight.y * boneMatY;
skinMatrix += skinWeight.z * boneMatZ;
skinMatrix += skinWeight.w * boneMatW;
skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;
objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;
#ifdef USE_TANGENT
objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;
#endif
#endif`, cI = `float specularStrength;
#ifdef USE_SPECULARMAP
vec4 texelSpecular = texture2D( specularMap, vUv );
specularStrength = texelSpecular.r;
#else
specularStrength = 1.0;
#endif`, uI = `#ifdef USE_SPECULARMAP
uniform sampler2D specularMap;
#endif`, hI = `#if defined( TONE_MAPPING )
gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );
#endif`, dI = `#ifndef saturate
#define saturate(a) clamp( a, 0.0, 1.0 )
#endif
uniform float toneMappingExposure;
vec3 LinearToneMapping( vec3 color ) {
return toneMappingExposure * color;
}
vec3 ReinhardToneMapping( vec3 color ) {
color *= toneMappingExposure;
return saturate( color / ( vec3( 1.0 ) + color ) );
}
vec3 OptimizedCineonToneMapping( vec3 color ) {
color *= toneMappingExposure;
color = max( vec3( 0.0 ), color - 0.004 );
return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );
}
vec3 RRTAndODTFit( vec3 v ) {
vec3 a = v * ( v + 0.0245786 ) - 0.000090537;
vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;
return a / b;
}
vec3 ACESFilmicToneMapping( vec3 color ) {
const mat3 ACESInputMat = mat3(
vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ),
vec3( 0.04823, 0.01566, 0.83777 )
);
const mat3 ACESOutputMat = mat3(
vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ),
vec3( -0.07367, -0.00605, 1.07602 )
);
color *= toneMappingExposure / 0.6;
color = ACESInputMat * color;
color = RRTAndODTFit( color );
color = ACESOutputMat * color;
return saturate( color );
}
vec3 CustomToneMapping( vec3 color ) { return color; }`, fI = `#ifdef USE_TRANSMISSION
float transmissionFactor = transmission;
float thicknessFactor = thickness;
#ifdef USE_TRANSMISSIONMAP
transmissionFactor *= texture2D( transmissionMap, vUv ).r;
#endif
#ifdef USE_THICKNESSNMAP
thicknessFactor *= texture2D( thicknessMap, vUv ).g;
#endif
vec3 pos = vWorldPosition.xyz / vWorldPosition.w;
vec3 v = normalize( cameraPosition - pos );
float ior = ( 1.0 + 0.4 * reflectivity ) / ( 1.0 - 0.4 * reflectivity );
vec3 transmission = transmissionFactor * getIBLVolumeRefraction(
normal, v, roughnessFactor, material.diffuseColor, totalSpecular,
pos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,
attenuationColor, attenuationDistance );
totalDiffuse = mix( totalDiffuse, transmission, transmissionFactor );
#endif`, pI = `#ifdef USE_TRANSMISSION
#ifdef USE_TRANSMISSIONMAP
uniform sampler2D transmissionMap;
#endif
#ifdef USE_THICKNESSMAP
uniform sampler2D thicknessMap;
#endif
uniform vec2 transmissionSamplerSize;
uniform sampler2D transmissionSamplerMap;
uniform mat4 modelMatrix;
uniform mat4 projectionMatrix;
varying vec4 vWorldPosition;
vec3 getVolumeTransmissionRay(vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix) {
vec3 refractionVector = refract(-v, normalize(n), 1.0 / ior);
vec3 modelScale;
modelScale.x = length(vec3(modelMatrix[0].xyz));
modelScale.y = length(vec3(modelMatrix[1].xyz));
modelScale.z = length(vec3(modelMatrix[2].xyz));
return normalize(refractionVector) * thickness * modelScale;
}
float applyIorToRoughness(float roughness, float ior) {
return roughness * clamp(ior * 2.0 - 2.0, 0.0, 1.0);
}
vec3 getTransmissionSample(vec2 fragCoord, float roughness, float ior) {
float framebufferLod = log2(transmissionSamplerSize.x) * applyIorToRoughness(roughness, ior);
return texture2DLodEXT(transmissionSamplerMap, fragCoord.xy, framebufferLod).rgb;
}
vec3 applyVolumeAttenuation(vec3 radiance, float transmissionDistance, vec3 attenuationColor, float attenuationDistance) {
if (attenuationDistance == 0.0) {
return radiance;
} else {
vec3 attenuationCoefficient = -log(attenuationColor) / attenuationDistance;
vec3 transmittance = exp(-attenuationCoefficient * transmissionDistance); return transmittance * radiance;
}
}
vec3 getIBLVolumeRefraction(vec3 n, vec3 v, float perceptualRoughness, vec3 baseColor, vec3 specularColor,
vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness,
vec3 attenuationColor, float attenuationDistance) {
vec3 transmissionRay = getVolumeTransmissionRay(n, v, thickness, ior, modelMatrix);
vec3 refractedRayExit = position + transmissionRay;
vec4 ndcPos = projMatrix * viewMatrix * vec4(refractedRayExit, 1.0);
vec2 refractionCoords = ndcPos.xy / ndcPos.w;
refractionCoords += 1.0;
refractionCoords /= 2.0;
vec3 transmittedLight = getTransmissionSample(refractionCoords, perceptualRoughness, ior);
vec3 attenuatedColor = applyVolumeAttenuation(transmittedLight, length(transmissionRay), attenuationColor, attenuationDistance);
return (1.0 - specularColor) * attenuatedColor * baseColor;
}
#endif`, mI = `#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )
varying vec2 vUv;
#endif`, gI = `#ifdef USE_UV
#ifdef UVS_VERTEX_ONLY
vec2 vUv;
#else
varying vec2 vUv;
#endif
uniform mat3 uvTransform;
#endif`, vI = `#ifdef USE_UV
vUv = ( uvTransform * vec3( uv, 1 ) ).xy;
#endif`, yI = `#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )
varying vec2 vUv2;
#endif`, bI = `#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )
attribute vec2 uv2;
varying vec2 vUv2;
uniform mat3 uv2Transform;
#endif`, xI = `#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )
vUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;
#endif`, MI = `#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION )
vec4 worldPosition = vec4( transformed, 1.0 );
#ifdef USE_INSTANCING
worldPosition = instanceMatrix * worldPosition;
#endif
worldPosition = modelMatrix * worldPosition;
#endif`, wI = `uniform sampler2D t2D;
varying vec2 vUv;
void main() {
vec4 texColor = texture2D( t2D, vUv );
gl_FragColor = mapTexelToLinear( texColor );
#include
#include
}`, AI = `varying vec2 vUv;
uniform mat3 uvTransform;
void main() {
vUv = ( uvTransform * vec3( uv, 1 ) ).xy;
gl_Position = vec4( position.xy, 1.0, 1.0 );
}`, SI = `#include
uniform float opacity;
varying vec3 vWorldDirection;
#include
void main() {
vec3 vReflect = vWorldDirection;
#include
gl_FragColor = envColor;
gl_FragColor.a *= opacity;
#include
#include
}`, _I = `varying vec3 vWorldDirection;
#include
void main() {
vWorldDirection = transformDirection( position, modelMatrix );
#include
#include
gl_Position.z = gl_Position.w;
}`, TI = `#if DEPTH_PACKING == 3200
uniform float opacity;
#endif
#include
#include
#include
#include
#include
#include
#include
varying vec2 vHighPrecisionZW;
void main() {
#include
vec4 diffuseColor = vec4( 1.0 );
#if DEPTH_PACKING == 3200
diffuseColor.a = opacity;
#endif
#include
#include
#include
#include
float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;
#if DEPTH_PACKING == 3200
gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );
#elif DEPTH_PACKING == 3201
gl_FragColor = packDepthToRGBA( fragCoordZ );
#endif
}`, EI = `#include
#include
#include
#include
#include
#include
#include
varying vec2 vHighPrecisionZW;
void main() {
#include
#include
#ifdef USE_DISPLACEMENTMAP
#include
#include
#include
#endif
#include
#include
#include
#include
#include
#include
#include
vHighPrecisionZW = gl_Position.zw;
}`, CI = `#define DISTANCE
uniform vec3 referencePosition;
uniform float nearDistance;
uniform float farDistance;
varying vec3 vWorldPosition;
#include
#include
#include
#include
#include
#include
void main () {
#include
vec4 diffuseColor = vec4( 1.0 );
#include
#include
#include
float dist = length( vWorldPosition - referencePosition );
dist = ( dist - nearDistance ) / ( farDistance - nearDistance );
dist = saturate( dist );
gl_FragColor = packDepthToRGBA( dist );
}`, LI = `#define DISTANCE
varying vec3 vWorldPosition;
#include
#include
#include
#include
#include
#include
void main() {
#include
#include
#ifdef USE_DISPLACEMENTMAP
#include
#include
#include
#endif
#include
#include
#include
#include
#include
#include
#include
vWorldPosition = worldPosition.xyz;
}`, RI = `uniform sampler2D tEquirect;
varying vec3 vWorldDirection;
#include
void main() {
vec3 direction = normalize( vWorldDirection );
vec2 sampleUV = equirectUv( direction );
vec4 texColor = texture2D( tEquirect, sampleUV );
gl_FragColor = mapTexelToLinear( texColor );
#include
#include
}`, FI = `varying vec3 vWorldDirection;
#include
void main() {
vWorldDirection = transformDirection( position, modelMatrix );
#include
#include
}`, PI = `uniform vec3 diffuse;
uniform float opacity;
uniform float dashSize;
uniform float totalSize;
varying float vLineDistance;
#include
#include
#include
#include
#include
void main() {
#include
if ( mod( vLineDistance, totalSize ) > dashSize ) {
discard;
}
vec3 outgoingLight = vec3( 0.0 );
vec4 diffuseColor = vec4( diffuse, opacity );
#include
#include
outgoingLight = diffuseColor.rgb;
gl_FragColor = vec4( outgoingLight, diffuseColor.a );
#include
#include
#include
#include
}`, II = `uniform float scale;
attribute float lineDistance;
varying float vLineDistance;
#include
#include
#include
#include
#include
#include
void main() {
vLineDistance = scale * lineDistance;
#include
#include
#include
#include
#include
#include
#include
}`, OI = `uniform vec3 diffuse;
uniform float opacity;
#ifndef FLAT_SHADED
varying vec3 vNormal;
#endif
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
void main() {
#include
vec4 diffuseColor = vec4( diffuse, opacity );
#include
#include
#include
#include
#include
#include
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
#ifdef USE_LIGHTMAP
vec4 lightMapTexel= texture2D( lightMap, vUv2 );
reflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;
#else
reflectedLight.indirectDiffuse += vec3( 1.0 );
#endif
#include
reflectedLight.indirectDiffuse *= diffuseColor.rgb;
vec3 outgoingLight = reflectedLight.indirectDiffuse;
#include
gl_FragColor = vec4( outgoingLight, diffuseColor.a );
#include
#include
#include
#include
#include
}`, DI = `#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
void main() {
#include
#include
#include
#include
#ifdef USE_ENVMAP
#include
#include
#include
#include
#endif
#include
#include
#include
#include
#include
#include
#include
#include
#include
}`, NI = `uniform vec3 diffuse;
uniform vec3 emissive;
uniform float opacity;
varying vec3 vLightFront;
varying vec3 vIndirectFront;
#ifdef DOUBLE_SIDED
varying vec3 vLightBack;
varying vec3 vIndirectBack;
#endif
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
void main() {
#include
vec4 diffuseColor = vec4( diffuse, opacity );
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
vec3 totalEmissiveRadiance = emissive;
#include
#include
#include
#include
#include
#include
#include
#ifdef DOUBLE_SIDED
reflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;
#else
reflectedLight.indirectDiffuse += vIndirectFront;
#endif
#include
reflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );
#ifdef DOUBLE_SIDED
reflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;
#else
reflectedLight.directDiffuse = vLightFront;
#endif
reflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();
#include
vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;
#include
gl_FragColor = vec4( outgoingLight, diffuseColor.a );
#include
#include
#include
#include
#include
}`, BI = `#define LAMBERT
varying vec3 vLightFront;
varying vec3 vIndirectFront;
#ifdef DOUBLE_SIDED
varying vec3 vLightBack;
varying vec3 vIndirectBack;
#endif
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
void main() {
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
}`, UI = `#define MATCAP
uniform vec3 diffuse;
uniform float opacity;
uniform sampler2D matcap;
varying vec3 vViewPosition;
#ifndef FLAT_SHADED
varying vec3 vNormal;
#endif
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
void main() {
#include
vec4 diffuseColor = vec4( diffuse, opacity );
#include
#include
#include
#include
#include
#include
#include
vec3 viewDir = normalize( vViewPosition );
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
vec3 y = cross( viewDir, x );
vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;
#ifdef USE_MATCAP
vec4 matcapColor = texture2D( matcap, uv );
matcapColor = matcapTexelToLinear( matcapColor );
#else
vec4 matcapColor = vec4( 1.0 );
#endif
vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;
gl_FragColor = vec4( outgoingLight, diffuseColor.a );
#include
#include
#include
#include
#include
}`, zI = `#define MATCAP
varying vec3 vViewPosition;
#ifndef FLAT_SHADED
varying vec3 vNormal;
#endif
#include