var Ft = Math.min, vt = Math.max, Ht = Math.round; var st = (n) => ({ x: n, y: n }), ji = { left: "right", right: "left", bottom: "top", top: "bottom" }, qi = { start: "end", end: "start" }; function De(n, t, e) { return vt(n, Ft(t, e)); } function Vt(n, t) { return typeof n == "function" ? n(t) : n; } function yt(n) { return n.split("-")[0]; } function Wt(n) { return n.split("-")[1]; } function Ae(n) { return n === "x" ? "y" : "x"; } function Ce(n) { return n === "y" ? "height" : "width"; } var Ji = new Set(["top", "bottom"]); function ht(n) { return Ji.has(yt(n)) ? "y" : "x"; } function Le(n) { return Ae(ht(n)); } function Je(n, t, e) { e === void 0 && (e = !1); let i = Wt(n), o = Le(n), s = Ce(o), r = o === "x" ? i === (e ? "end" : "start") ? "right" : "left" : i === "start" ? "bottom" : "top"; return (t.reference[s] > t.floating[s] && (r = Bt(r)), [r, Bt(r)]); } function Qe(n) { let t = Bt(n); return [ie(n), t, ie(t)]; } function ie(n) { return n.replace(/start|end/g, (t) => qi[t]); } var je = ["left", "right"], qe = ["right", "left"], Qi = ["top", "bottom"], Zi = ["bottom", "top"]; function tn(n, t, e) { switch (n) { case "top": case "bottom": return e ? (t ? qe : je) : t ? je : qe; case "left": case "right": return t ? Qi : Zi; default: return []; } } function Ze(n, t, e, i) { let o = Wt(n), s = tn(yt(n), e === "start", i); return ( o && ((s = s.map((r) => r + "-" + o)), t && (s = s.concat(s.map(ie)))), s ); } function Bt(n) { return n.replace(/left|right|bottom|top/g, (t) => ji[t]); } function en(n) { return { top: 0, right: 0, bottom: 0, left: 0, ...n }; } function ti(n) { return typeof n != "number" ? en(n) : { top: n, right: n, bottom: n, left: n }; } function Ot(n) { let { x: t, y: e, width: i, height: o } = n; return { width: i, height: o, top: e, left: t, right: t + i, bottom: e + o, x: t, y: e, }; } function ei(n, t, e) { let { reference: i, floating: o } = n, s = ht(t), r = Le(t), a = Ce(r), l = yt(t), c = s === "y", f = i.x + i.width / 2 - o.width / 2, d = i.y + i.height / 2 - o.height / 2, p = i[a] / 2 - o[a] / 2, u; switch (l) { case "top": u = { x: f, y: i.y - o.height }; break; case "bottom": u = { x: f, y: i.y + i.height }; break; case "right": u = { x: i.x + i.width, y: d }; break; case "left": u = { x: i.x - o.width, y: d }; break; default: u = { x: i.x, y: i.y }; } switch (Wt(t)) { case "start": u[r] -= p * (e && c ? -1 : 1); break; case "end": u[r] += p * (e && c ? -1 : 1); break; } return u; } var ii = async (n, t, e) => { let { placement: i = "bottom", strategy: o = "absolute", middleware: s = [], platform: r, } = e, a = s.filter(Boolean), l = await (r.isRTL == null ? void 0 : r.isRTL(t)), c = await r.getElementRects({ reference: n, floating: t, strategy: o }), { x: f, y: d } = ei(c, i, l), p = i, u = {}, g = 0; for (let m = 0; m < a.length; m++) { let { name: S, fn: E } = a[m], { x: w, y: D, data: A, reset: C, } = await E({ x: f, y: d, initialPlacement: i, placement: p, strategy: o, middlewareData: u, rects: c, platform: r, elements: { reference: n, floating: t }, }); ((f = w ?? f), (d = D ?? d), (u = { ...u, [S]: { ...u[S], ...A } }), C && g <= 50 && (g++, typeof C == "object" && (C.placement && (p = C.placement), C.rects && (c = C.rects === !0 ? await r.getElementRects({ reference: n, floating: t, strategy: o, }) : C.rects), ({ x: f, y: d } = ei(c, p, l))), (m = -1))); } return { x: f, y: d, placement: p, strategy: o, middlewareData: u }; }; async function Ie(n, t) { var e; t === void 0 && (t = {}); let { x: i, y: o, platform: s, rects: r, elements: a, strategy: l } = n, { boundary: c = "clippingAncestors", rootBoundary: f = "viewport", elementContext: d = "floating", altBoundary: p = !1, padding: u = 0, } = Vt(t, n), g = ti(u), S = a[p ? (d === "floating" ? "reference" : "floating") : d], E = Ot( await s.getClippingRect({ element: (e = await (s.isElement == null ? void 0 : s.isElement(S))) == null || e ? S : S.contextElement || (await (s.getDocumentElement == null ? void 0 : s.getDocumentElement(a.floating))), boundary: c, rootBoundary: f, strategy: l, }), ), w = d === "floating" ? { x: i, y: o, width: r.floating.width, height: r.floating.height, } : r.reference, D = await (s.getOffsetParent == null ? void 0 : s.getOffsetParent(a.floating)), A = (await (s.isElement == null ? void 0 : s.isElement(D))) ? (await (s.getScale == null ? void 0 : s.getScale(D))) || { x: 1, y: 1, } : { x: 1, y: 1 }, C = Ot( s.convertOffsetParentRelativeRectToViewportRelativeRect ? await s.convertOffsetParentRelativeRectToViewportRelativeRect( { elements: a, rect: w, offsetParent: D, strategy: l }, ) : w, ); return { top: (E.top - C.top + g.top) / A.y, bottom: (C.bottom - E.bottom + g.bottom) / A.y, left: (E.left - C.left + g.left) / A.x, right: (C.right - E.right + g.right) / A.x, }; } var ni = function (n) { return ( n === void 0 && (n = {}), { name: "flip", options: n, async fn(t) { var e, i; let { placement: o, middlewareData: s, rects: r, initialPlacement: a, platform: l, elements: c, } = t, { mainAxis: f = !0, crossAxis: d = !0, fallbackPlacements: p, fallbackStrategy: u = "bestFit", fallbackAxisSideDirection: g = "none", flipAlignment: m = !0, ...S } = Vt(n, t); if ((e = s.arrow) != null && e.alignmentOffset) return {}; let E = yt(o), w = ht(a), D = yt(a) === a, A = await (l.isRTL == null ? void 0 : l.isRTL(c.floating)), C = p || (D || !m ? [Bt(a)] : Qe(a)), F = g !== "none"; !p && F && C.push(...Ze(a, m, g, A)); let q = [a, ...C], J = await Ie(t, S), _ = [], V = ((i = s.flip) == null ? void 0 : i.overflows) || []; if ((f && _.push(J[E]), d)) { let k = Je(o, r, A); _.push(J[k[0]], J[k[1]]); } if ( ((V = [...V, { placement: o, overflows: _ }]), !_.every((k) => k <= 0)) ) { var W, tt; let k = (((W = s.flip) == null ? void 0 : W.index) || 0) + 1, Y = q[k]; if ( Y && (!(d === "alignment" ? w !== ht(Y) : !1) || V.every((L) => ht(L.placement) === w ? L.overflows[0] > 0 : !0, )) ) return { data: { index: k, overflows: V }, reset: { placement: Y }, }; let B = (tt = V.filter((X) => X.overflows[0] <= 0).sort( (X, L) => X.overflows[1] - L.overflows[1], )[0]) == null ? void 0 : tt.placement; if (!B) switch (u) { case "bestFit": { var z; let X = (z = V.filter((L) => { if (F) { let et = ht(L.placement); return et === w || et === "y"; } return !0; }) .map((L) => [ L.placement, L.overflows .filter((et) => et > 0) .reduce((et, ee) => et + ee, 0), ]) .sort((L, et) => L[1] - et[1])[0]) == null ? void 0 : z[0]; X && (B = X); break; } case "initialPlacement": B = a; break; } if (o !== B) return { reset: { placement: B } }; } return {}; }, } ); }; var nn = new Set(["left", "top"]); async function on(n, t) { let { placement: e, platform: i, elements: o } = n, s = await (i.isRTL == null ? void 0 : i.isRTL(o.floating)), r = yt(e), a = Wt(e), l = ht(e) === "y", c = nn.has(r) ? -1 : 1, f = s && l ? -1 : 1, d = Vt(t, n), { mainAxis: p, crossAxis: u, alignmentAxis: g, } = typeof d == "number" ? { mainAxis: d, crossAxis: 0, alignmentAxis: null } : { mainAxis: d.mainAxis || 0, crossAxis: d.crossAxis || 0, alignmentAxis: d.alignmentAxis, }; return ( a && typeof g == "number" && (u = a === "end" ? g * -1 : g), l ? { x: u * f, y: p * c } : { x: p * c, y: u * f } ); } var oi = function (n) { return ( n === void 0 && (n = 0), { name: "offset", options: n, async fn(t) { var e, i; let { x: o, y: s, placement: r, middlewareData: a } = t, l = await on(t, n); return r === ((e = a.offset) == null ? void 0 : e.placement) && (i = a.arrow) != null && i.alignmentOffset ? {} : { x: o + l.x, y: s + l.y, data: { ...l, placement: r }, }; }, } ); }, si = function (n) { return ( n === void 0 && (n = {}), { name: "shift", options: n, async fn(t) { let { x: e, y: i, placement: o } = t, { mainAxis: s = !0, crossAxis: r = !1, limiter: a = { fn: (S) => { let { x: E, y: w } = S; return { x: E, y: w }; }, }, ...l } = Vt(n, t), c = { x: e, y: i }, f = await Ie(t, l), d = ht(yt(o)), p = Ae(d), u = c[p], g = c[d]; if (s) { let S = p === "y" ? "top" : "left", E = p === "y" ? "bottom" : "right", w = u + f[S], D = u - f[E]; u = De(w, u, D); } if (r) { let S = d === "y" ? "top" : "left", E = d === "y" ? "bottom" : "right", w = g + f[S], D = g - f[E]; g = De(w, g, D); } let m = a.fn({ ...t, [p]: u, [d]: g }); return { ...m, data: { x: m.x - e, y: m.y - i, enabled: { [p]: s, [d]: r }, }, }; }, } ); }; function oe() { return typeof window < "u"; } function Et(n) { return ai(n) ? (n.nodeName || "").toLowerCase() : "#document"; } function U(n) { var t; return ( (n == null || (t = n.ownerDocument) == null ? void 0 : t.defaultView) || window ); } function ct(n) { var t; return (t = (ai(n) ? n.ownerDocument : n.document) || window.document) == null ? void 0 : t.documentElement; } function ai(n) { return oe() ? n instanceof Node || n instanceof U(n).Node : !1; } function it(n) { return oe() ? n instanceof Element || n instanceof U(n).Element : !1; } function rt(n) { return oe() ? n instanceof HTMLElement || n instanceof U(n).HTMLElement : !1; } function ri(n) { return !oe() || typeof ShadowRoot > "u" ? !1 : n instanceof ShadowRoot || n instanceof U(n).ShadowRoot; } var sn = new Set(["inline", "contents"]); function It(n) { let { overflow: t, overflowX: e, overflowY: i, display: o } = nt(n); return /auto|scroll|overlay|hidden|clip/.test(t + i + e) && !sn.has(o); } var rn = new Set(["table", "td", "th"]); function li(n) { return rn.has(Et(n)); } var an = [":popover-open", ":modal"]; function zt(n) { return an.some((t) => { try { return n.matches(t); } catch { return !1; } }); } var ln = ["transform", "translate", "scale", "rotate", "perspective"], cn = ["transform", "translate", "scale", "rotate", "perspective", "filter"], dn = ["paint", "layout", "strict", "content"]; function se(n) { let t = re(), e = it(n) ? nt(n) : n; return ( ln.some((i) => (e[i] ? e[i] !== "none" : !1)) || (e.containerType ? e.containerType !== "normal" : !1) || (!t && (e.backdropFilter ? e.backdropFilter !== "none" : !1)) || (!t && (e.filter ? e.filter !== "none" : !1)) || cn.some((i) => (e.willChange || "").includes(i)) || dn.some((i) => (e.contain || "").includes(i)) ); } function ci(n) { let t = ut(n); for (; rt(t) && !Dt(t); ) { if (se(t)) return t; if (zt(t)) return null; t = ut(t); } return null; } function re() { return typeof CSS > "u" || !CSS.supports ? !1 : CSS.supports("-webkit-backdrop-filter", "none"); } var fn = new Set(["html", "body", "#document"]); function Dt(n) { return fn.has(Et(n)); } function nt(n) { return U(n).getComputedStyle(n); } function Xt(n) { return it(n) ? { scrollLeft: n.scrollLeft, scrollTop: n.scrollTop } : { scrollLeft: n.scrollX, scrollTop: n.scrollY }; } function ut(n) { if (Et(n) === "html") return n; let t = n.assignedSlot || n.parentNode || (ri(n) && n.host) || ct(n); return ri(t) ? t.host : t; } function di(n) { let t = ut(n); return Dt(t) ? n.ownerDocument ? n.ownerDocument.body : n.body : rt(t) && It(t) ? t : di(t); } function ne(n, t, e) { var i; (t === void 0 && (t = []), e === void 0 && (e = !0)); let o = di(n), s = o === ((i = n.ownerDocument) == null ? void 0 : i.body), r = U(o); if (s) { let a = ae(r); return t.concat( r, r.visualViewport || [], It(o) ? o : [], a && e ? ne(a) : [], ); } return t.concat(o, ne(o, [], e)); } function ae(n) { return n.parent && Object.getPrototypeOf(n.parent) ? n.frameElement : null; } function pi(n) { let t = nt(n), e = parseFloat(t.width) || 0, i = parseFloat(t.height) || 0, o = rt(n), s = o ? n.offsetWidth : e, r = o ? n.offsetHeight : i, a = Ht(e) !== s || Ht(i) !== r; return (a && ((e = s), (i = r)), { width: e, height: i, $: a }); } function gi(n) { return it(n) ? n : n.contextElement; } function Tt(n) { let t = gi(n); if (!rt(t)) return st(1); let e = t.getBoundingClientRect(), { width: i, height: o, $: s } = pi(t), r = (s ? Ht(e.width) : e.width) / i, a = (s ? Ht(e.height) : e.height) / o; return ( (!r || !Number.isFinite(r)) && (r = 1), (!a || !Number.isFinite(a)) && (a = 1), { x: r, y: a } ); } var hn = st(0); function mi(n) { let t = U(n); return !re() || !t.visualViewport ? hn : { x: t.visualViewport.offsetLeft, y: t.visualViewport.offsetTop }; } function un(n, t, e) { return (t === void 0 && (t = !1), !e || (t && e !== U(n)) ? !1 : t); } function $t(n, t, e, i) { (t === void 0 && (t = !1), e === void 0 && (e = !1)); let o = n.getBoundingClientRect(), s = gi(n), r = st(1); t && (i ? it(i) && (r = Tt(i)) : (r = Tt(n))); let a = un(s, e, i) ? mi(s) : st(0), l = (o.left + a.x) / r.x, c = (o.top + a.y) / r.y, f = o.width / r.x, d = o.height / r.y; if (s) { let p = U(s), u = i && it(i) ? U(i) : i, g = p, m = ae(g); for (; m && i && u !== g; ) { let S = Tt(m), E = m.getBoundingClientRect(), w = nt(m), D = E.left + (m.clientLeft + parseFloat(w.paddingLeft)) * S.x, A = E.top + (m.clientTop + parseFloat(w.paddingTop)) * S.y; ((l *= S.x), (c *= S.y), (f *= S.x), (d *= S.y), (l += D), (c += A), (g = U(m)), (m = ae(g))); } } return Ot({ width: f, height: d, x: l, y: c }); } function le(n, t) { let e = Xt(n).scrollLeft; return t ? t.left + e : $t(ct(n)).left + e; } function bi(n, t) { let e = n.getBoundingClientRect(), i = e.left + t.scrollLeft - le(n, e), o = e.top + t.scrollTop; return { x: i, y: o }; } function pn(n) { let { elements: t, rect: e, offsetParent: i, strategy: o } = n, s = o === "fixed", r = ct(i), a = t ? zt(t.floating) : !1; if (i === r || (a && s)) return e; let l = { scrollLeft: 0, scrollTop: 0 }, c = st(1), f = st(0), d = rt(i); if ( (d || (!d && !s)) && ((Et(i) !== "body" || It(r)) && (l = Xt(i)), rt(i)) ) { let u = $t(i); ((c = Tt(i)), (f.x = u.x + i.clientLeft), (f.y = u.y + i.clientTop)); } let p = r && !d && !s ? bi(r, l) : st(0); return { width: e.width * c.x, height: e.height * c.y, x: e.x * c.x - l.scrollLeft * c.x + f.x + p.x, y: e.y * c.y - l.scrollTop * c.y + f.y + p.y, }; } function gn(n) { return Array.from(n.getClientRects()); } function mn(n) { let t = ct(n), e = Xt(n), i = n.ownerDocument.body, o = vt(t.scrollWidth, t.clientWidth, i.scrollWidth, i.clientWidth), s = vt(t.scrollHeight, t.clientHeight, i.scrollHeight, i.clientHeight), r = -e.scrollLeft + le(n), a = -e.scrollTop; return ( nt(i).direction === "rtl" && (r += vt(t.clientWidth, i.clientWidth) - o), { width: o, height: s, x: r, y: a } ); } var fi = 25; function bn(n, t) { let e = U(n), i = ct(n), o = e.visualViewport, s = i.clientWidth, r = i.clientHeight, a = 0, l = 0; if (o) { ((s = o.width), (r = o.height)); let f = re(); (!f || (f && t === "fixed")) && ((a = o.offsetLeft), (l = o.offsetTop)); } let c = le(i); if (c <= 0) { let f = i.ownerDocument, d = f.body, p = getComputedStyle(d), u = (f.compatMode === "CSS1Compat" && parseFloat(p.marginLeft) + parseFloat(p.marginRight)) || 0, g = Math.abs(i.clientWidth - d.clientWidth - u); g <= fi && (s -= g); } else c <= fi && (s += c); return { width: s, height: r, x: a, y: l }; } var vn = new Set(["absolute", "fixed"]); function yn(n, t) { let e = $t(n, !0, t === "fixed"), i = e.top + n.clientTop, o = e.left + n.clientLeft, s = rt(n) ? Tt(n) : st(1), r = n.clientWidth * s.x, a = n.clientHeight * s.y, l = o * s.x, c = i * s.y; return { width: r, height: a, x: l, y: c }; } function hi(n, t, e) { let i; if (t === "viewport") i = bn(n, e); else if (t === "document") i = mn(ct(n)); else if (it(t)) i = yn(t, e); else { let o = mi(n); i = { x: t.x - o.x, y: t.y - o.y, width: t.width, height: t.height }; } return Ot(i); } function vi(n, t) { let e = ut(n); return e === t || !it(e) || Dt(e) ? !1 : nt(e).position === "fixed" || vi(e, t); } function wn(n, t) { let e = t.get(n); if (e) return e; let i = ne(n, [], !1).filter((a) => it(a) && Et(a) !== "body"), o = null, s = nt(n).position === "fixed", r = s ? ut(n) : n; for (; it(r) && !Dt(r); ) { let a = nt(r), l = se(r); (!l && a.position === "fixed" && (o = null), ( s ? !l && !o : (!l && a.position === "static" && !!o && vn.has(o.position)) || (It(r) && !l && vi(n, r)) ) ? (i = i.filter((f) => f !== r)) : (o = a), (r = ut(r))); } return (t.set(n, i), i); } function Sn(n) { let { element: t, boundary: e, rootBoundary: i, strategy: o } = n, r = [ ...(e === "clippingAncestors" ? zt(t) ? [] : wn(t, this._c) : [].concat(e)), i, ], a = r[0], l = r.reduce( (c, f) => { let d = hi(t, f, o); return ( (c.top = vt(d.top, c.top)), (c.right = Ft(d.right, c.right)), (c.bottom = Ft(d.bottom, c.bottom)), (c.left = vt(d.left, c.left)), c ); }, hi(t, a, o), ); return { width: l.right - l.left, height: l.bottom - l.top, x: l.left, y: l.top, }; } function xn(n) { let { width: t, height: e } = pi(n); return { width: t, height: e }; } function On(n, t, e) { let i = rt(t), o = ct(t), s = e === "fixed", r = $t(n, !0, s, t), a = { scrollLeft: 0, scrollTop: 0 }, l = st(0); function c() { l.x = le(o); } if (i || (!i && !s)) if (((Et(t) !== "body" || It(o)) && (a = Xt(t)), i)) { let u = $t(t, !0, s, t); ((l.x = u.x + t.clientLeft), (l.y = u.y + t.clientTop)); } else o && c(); s && !i && o && c(); let f = o && !i && !s ? bi(o, a) : st(0), d = r.left + a.scrollLeft - l.x - f.x, p = r.top + a.scrollTop - l.y - f.y; return { x: d, y: p, width: r.width, height: r.height }; } function Te(n) { return nt(n).position === "static"; } function ui(n, t) { if (!rt(n) || nt(n).position === "fixed") return null; if (t) return t(n); let e = n.offsetParent; return (ct(n) === e && (e = e.ownerDocument.body), e); } function yi(n, t) { let e = U(n); if (zt(n)) return e; if (!rt(n)) { let o = ut(n); for (; o && !Dt(o); ) { if (it(o) && !Te(o)) return o; o = ut(o); } return e; } let i = ui(n, t); for (; i && li(i) && Te(i); ) i = ui(i, t); return i && Dt(i) && Te(i) && !se(i) ? e : i || ci(n) || e; } var En = async function (n) { let t = this.getOffsetParent || yi, e = this.getDimensions, i = await e(n.floating); return { reference: On(n.reference, await t(n.floating), n.strategy), floating: { x: 0, y: 0, width: i.width, height: i.height }, }; }; function Dn(n) { return nt(n).direction === "rtl"; } var An = { convertOffsetParentRelativeRectToViewportRelativeRect: pn, getDocumentElement: ct, getClippingRect: Sn, getOffsetParent: yi, getElementRects: En, getClientRects: gn, getDimensions: xn, getScale: Tt, isElement: it, isRTL: Dn, }; var wi = oi; var Si = si, xi = ni; var Oi = (n, t, e) => { let i = new Map(), o = { platform: An, ...e }, s = { ...o.platform, _c: i }; return ii(n, t, { ...o, platform: s }); }; function Ei(n, t) { var e = Object.keys(n); if (Object.getOwnPropertySymbols) { var i = Object.getOwnPropertySymbols(n); (t && (i = i.filter(function (o) { return Object.getOwnPropertyDescriptor(n, o).enumerable; })), e.push.apply(e, i)); } return e; } function ft(n) { for (var t = 1; t < arguments.length; t++) { var e = arguments[t] != null ? arguments[t] : {}; t % 2 ? Ei(Object(e), !0).forEach(function (i) { Cn(n, i, e[i]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(n, Object.getOwnPropertyDescriptors(e)) : Ei(Object(e)).forEach(function (i) { Object.defineProperty( n, i, Object.getOwnPropertyDescriptor(e, i), ); }); } return n; } function ue(n) { "@babel/helpers - typeof"; return ( typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? (ue = function (t) { return typeof t; }) : (ue = function (t) { return t && typeof Symbol == "function" && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t; }), ue(n) ); } function Cn(n, t, e) { return ( t in n ? Object.defineProperty(n, t, { value: e, enumerable: !0, configurable: !0, writable: !0, }) : (n[t] = e), n ); } function gt() { return ( (gt = Object.assign || function (n) { for (var t = 1; t < arguments.length; t++) { var e = arguments[t]; for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (n[i] = e[i]); } return n; }), gt.apply(this, arguments) ); } function Ln(n, t) { if (n == null) return {}; var e = {}, i = Object.keys(n), o, s; for (s = 0; s < i.length; s++) ((o = i[s]), !(t.indexOf(o) >= 0) && (e[o] = n[o])); return e; } function In(n, t) { if (n == null) return {}; var e = Ln(n, t), i, o; if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(n); for (o = 0; o < s.length; o++) ((i = s[o]), !(t.indexOf(i) >= 0) && Object.prototype.propertyIsEnumerable.call(n, i) && (e[i] = n[i])); } return e; } var Tn = "1.15.6"; function pt(n) { if (typeof window < "u" && window.navigator) return !!navigator.userAgent.match(n); } var mt = pt(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i), Zt = pt(/Edge/i), Di = pt(/firefox/i), Gt = pt(/safari/i) && !pt(/chrome/i) && !pt(/android/i), $e = pt(/iP(ad|od|hone)/i), Pi = pt(/chrome/i) && pt(/android/i), Mi = { capture: !1, passive: !1 }; function O(n, t, e) { n.addEventListener(t, e, !mt && Mi); } function x(n, t, e) { n.removeEventListener(t, e, !mt && Mi); } function ve(n, t) { if (t) { if ((t[0] === ">" && (t = t.substring(1)), n)) try { if (n.matches) return n.matches(t); if (n.msMatchesSelector) return n.msMatchesSelector(t); if (n.webkitMatchesSelector) return n.webkitMatchesSelector(t); } catch { return !1; } return !1; } } function Ni(n) { return n.host && n !== document && n.host.nodeType ? n.host : n.parentNode; } function lt(n, t, e, i) { if (n) { e = e || document; do { if ( (t != null && (t[0] === ">" ? n.parentNode === e && ve(n, t) : ve(n, t))) || (i && n === e) ) return n; if (n === e) break; } while ((n = Ni(n))); } return null; } var Ai = /\s+/g; function Q(n, t, e) { if (n && t) if (n.classList) n.classList[e ? "add" : "remove"](t); else { var i = (" " + n.className + " ") .replace(Ai, " ") .replace(" " + t + " ", " "); n.className = (i + (e ? " " + t : "")).replace(Ai, " "); } } function b(n, t, e) { var i = n && n.style; if (i) { if (e === void 0) return ( document.defaultView && document.defaultView.getComputedStyle ? (e = document.defaultView.getComputedStyle(n, "")) : n.currentStyle && (e = n.currentStyle), t === void 0 ? e : e[t] ); (!(t in i) && t.indexOf("webkit") === -1 && (t = "-webkit-" + t), (i[t] = e + (typeof e == "string" ? "" : "px"))); } } function Nt(n, t) { var e = ""; if (typeof n == "string") e = n; else do { var i = b(n, "transform"); i && i !== "none" && (e = i + " " + e); } while (!t && (n = n.parentNode)); var o = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix; return o && new o(e); } function ki(n, t, e) { if (n) { var i = n.getElementsByTagName(t), o = 0, s = i.length; if (e) for (; o < s; o++) e(i[o], o); return i; } return []; } function dt() { var n = document.scrollingElement; return n || document.documentElement; } function N(n, t, e, i, o) { if (!(!n.getBoundingClientRect && n !== window)) { var s, r, a, l, c, f, d; if ( (n !== window && n.parentNode && n !== dt() ? ((s = n.getBoundingClientRect()), (r = s.top), (a = s.left), (l = s.bottom), (c = s.right), (f = s.height), (d = s.width)) : ((r = 0), (a = 0), (l = window.innerHeight), (c = window.innerWidth), (f = window.innerHeight), (d = window.innerWidth)), (t || e) && n !== window && ((o = o || n.parentNode), !mt)) ) do if ( o && o.getBoundingClientRect && (b(o, "transform") !== "none" || (e && b(o, "position") !== "static")) ) { var p = o.getBoundingClientRect(); ((r -= p.top + parseInt(b(o, "border-top-width"))), (a -= p.left + parseInt(b(o, "border-left-width"))), (l = r + s.height), (c = a + s.width)); break; } while ((o = o.parentNode)); if (i && n !== window) { var u = Nt(o || n), g = u && u.a, m = u && u.d; u && ((r /= m), (a /= g), (d /= g), (f /= m), (l = r + f), (c = a + d)); } return { top: r, left: a, bottom: l, right: c, width: d, height: f }; } } function Ci(n, t, e) { for (var i = xt(n, !0), o = N(n)[t]; i; ) { var s = N(i)[e], r = void 0; if ((e === "top" || e === "left" ? (r = o >= s) : (r = o <= s), !r)) return i; if (i === dt()) break; i = xt(i, !1); } return !1; } function kt(n, t, e, i) { for (var o = 0, s = 0, r = n.children; s < r.length; ) { if ( r[s].style.display !== "none" && r[s] !== v.ghost && (i || r[s] !== v.dragged) && lt(r[s], e.draggable, n, !1) ) { if (o === t) return r[s]; o++; } s++; } return null; } function Ke(n, t) { for ( var e = n.lastElementChild; e && (e === v.ghost || b(e, "display") === "none" || (t && !ve(e, t))); ) e = e.previousElementSibling; return e || null; } function ot(n, t) { var e = 0; if (!n || !n.parentNode) return -1; for (; (n = n.previousElementSibling); ) n.nodeName.toUpperCase() !== "TEMPLATE" && n !== v.clone && (!t || ve(n, t)) && e++; return e; } function Li(n) { var t = 0, e = 0, i = dt(); if (n) do { var o = Nt(n), s = o.a, r = o.d; ((t += n.scrollLeft * s), (e += n.scrollTop * r)); } while (n !== i && (n = n.parentNode)); return [t, e]; } function _n(n, t) { for (var e in n) if (n.hasOwnProperty(e)) { for (var i in t) if (t.hasOwnProperty(i) && t[i] === n[e][i]) return Number(e); } return -1; } function xt(n, t) { if (!n || !n.getBoundingClientRect) return dt(); var e = n, i = !1; do if (e.clientWidth < e.scrollWidth || e.clientHeight < e.scrollHeight) { var o = b(e); if ( (e.clientWidth < e.scrollWidth && (o.overflowX == "auto" || o.overflowX == "scroll")) || (e.clientHeight < e.scrollHeight && (o.overflowY == "auto" || o.overflowY == "scroll")) ) { if (!e.getBoundingClientRect || e === document.body) return dt(); if (i || t) return e; i = !0; } } while ((e = e.parentNode)); return dt(); } function Rn(n, t) { if (n && t) for (var e in t) t.hasOwnProperty(e) && (n[e] = t[e]); return n; } function _e(n, t) { return ( Math.round(n.top) === Math.round(t.top) && Math.round(n.left) === Math.round(t.left) && Math.round(n.height) === Math.round(t.height) && Math.round(n.width) === Math.round(t.width) ); } var jt; function Bi(n, t) { return function () { if (!jt) { var e = arguments, i = this; (e.length === 1 ? n.call(i, e[0]) : n.apply(i, e), (jt = setTimeout(function () { jt = void 0; }, t))); } }; } function Pn() { (clearTimeout(jt), (jt = void 0)); } function Fi(n, t, e) { ((n.scrollLeft += t), (n.scrollTop += e)); } function Hi(n) { var t = window.Polymer, e = window.jQuery || window.Zepto; return t && t.dom ? t.dom(n).cloneNode(!0) : e ? e(n).clone(!0)[0] : n.cloneNode(!0); } function Vi(n, t, e) { var i = {}; return ( Array.from(n.children).forEach(function (o) { var s, r, a, l; if (!(!lt(o, t.draggable, n, !1) || o.animated || o === e)) { var c = N(o); ((i.left = Math.min( (s = i.left) !== null && s !== void 0 ? s : 1 / 0, c.left, )), (i.top = Math.min( (r = i.top) !== null && r !== void 0 ? r : 1 / 0, c.top, )), (i.right = Math.max( (a = i.right) !== null && a !== void 0 ? a : -1 / 0, c.right, )), (i.bottom = Math.max( (l = i.bottom) !== null && l !== void 0 ? l : -1 / 0, c.bottom, ))); } }), (i.width = i.right - i.left), (i.height = i.bottom - i.top), (i.x = i.left), (i.y = i.top), i ); } var j = "Sortable" + new Date().getTime(); function Mn() { var n = [], t; return { captureAnimationState: function () { if (((n = []), !!this.options.animation)) { var i = [].slice.call(this.el.children); i.forEach(function (o) { if (!(b(o, "display") === "none" || o === v.ghost)) { n.push({ target: o, rect: N(o) }); var s = ft({}, n[n.length - 1].rect); if (o.thisAnimationDuration) { var r = Nt(o, !0); r && ((s.top -= r.f), (s.left -= r.e)); } o.fromRect = s; } }); } }, addAnimationState: function (i) { n.push(i); }, removeAnimationState: function (i) { n.splice(_n(n, { target: i }), 1); }, animateAll: function (i) { var o = this; if (!this.options.animation) { (clearTimeout(t), typeof i == "function" && i()); return; } var s = !1, r = 0; (n.forEach(function (a) { var l = 0, c = a.target, f = c.fromRect, d = N(c), p = c.prevFromRect, u = c.prevToRect, g = a.rect, m = Nt(c, !0); (m && ((d.top -= m.f), (d.left -= m.e)), (c.toRect = d), c.thisAnimationDuration && _e(p, d) && !_e(f, d) && (g.top - d.top) / (g.left - d.left) === (f.top - d.top) / (f.left - d.left) && (l = kn(g, p, u, o.options)), _e(d, f) || ((c.prevFromRect = f), (c.prevToRect = d), l || (l = o.options.animation), o.animate(c, g, d, l)), l && ((s = !0), (r = Math.max(r, l)), clearTimeout(c.animationResetTimer), (c.animationResetTimer = setTimeout(function () { ((c.animationTime = 0), (c.prevFromRect = null), (c.fromRect = null), (c.prevToRect = null), (c.thisAnimationDuration = null)); }, l)), (c.thisAnimationDuration = l))); }), clearTimeout(t), s ? (t = setTimeout(function () { typeof i == "function" && i(); }, r)) : typeof i == "function" && i(), (n = [])); }, animate: function (i, o, s, r) { if (r) { (b(i, "transition", ""), b(i, "transform", "")); var a = Nt(this.el), l = a && a.a, c = a && a.d, f = (o.left - s.left) / (l || 1), d = (o.top - s.top) / (c || 1); ((i.animatingX = !!f), (i.animatingY = !!d), b(i, "transform", "translate3d(" + f + "px," + d + "px,0)"), (this.forRepaintDummy = Nn(i)), b( i, "transition", "transform " + r + "ms" + (this.options.easing ? " " + this.options.easing : ""), ), b(i, "transform", "translate3d(0,0,0)"), typeof i.animated == "number" && clearTimeout(i.animated), (i.animated = setTimeout(function () { (b(i, "transition", ""), b(i, "transform", ""), (i.animated = !1), (i.animatingX = !1), (i.animatingY = !1)); }, r))); } }, }; } function Nn(n) { return n.offsetWidth; } function kn(n, t, e, i) { return ( (Math.sqrt(Math.pow(t.top - n.top, 2) + Math.pow(t.left - n.left, 2)) / Math.sqrt( Math.pow(t.top - e.top, 2) + Math.pow(t.left - e.left, 2), )) * i.animation ); } var _t = [], Re = { initializeByDefault: !0 }, te = { mount: function (t) { for (var e in Re) Re.hasOwnProperty(e) && !(e in t) && (t[e] = Re[e]); (_t.forEach(function (i) { if (i.pluginName === t.pluginName) throw "Sortable: Cannot mount plugin ".concat( t.pluginName, " more than once", ); }), _t.push(t)); }, pluginEvent: function (t, e, i) { var o = this; ((this.eventCanceled = !1), (i.cancel = function () { o.eventCanceled = !0; })); var s = t + "Global"; _t.forEach(function (r) { e[r.pluginName] && (e[r.pluginName][s] && e[r.pluginName][s](ft({ sortable: e }, i)), e.options[r.pluginName] && e[r.pluginName][t] && e[r.pluginName][t](ft({ sortable: e }, i))); }); }, initializePlugins: function (t, e, i, o) { _t.forEach(function (a) { var l = a.pluginName; if (!(!t.options[l] && !a.initializeByDefault)) { var c = new a(t, e, t.options); ((c.sortable = t), (c.options = t.options), (t[l] = c), gt(i, c.defaults)); } }); for (var s in t.options) if (t.options.hasOwnProperty(s)) { var r = this.modifyOption(t, s, t.options[s]); typeof r < "u" && (t.options[s] = r); } }, getEventProperties: function (t, e) { var i = {}; return ( _t.forEach(function (o) { typeof o.eventProperties == "function" && gt(i, o.eventProperties.call(e[o.pluginName], t)); }), i ); }, modifyOption: function (t, e, i) { var o; return ( _t.forEach(function (s) { t[s.pluginName] && s.optionListeners && typeof s.optionListeners[e] == "function" && (o = s.optionListeners[e].call(t[s.pluginName], i)); }), o ); }, }; function Bn(n) { var t = n.sortable, e = n.rootEl, i = n.name, o = n.targetEl, s = n.cloneEl, r = n.toEl, a = n.fromEl, l = n.oldIndex, c = n.newIndex, f = n.oldDraggableIndex, d = n.newDraggableIndex, p = n.originalEvent, u = n.putSortable, g = n.extraEventProperties; if (((t = t || (e && e[j])), !!t)) { var m, S = t.options, E = "on" + i.charAt(0).toUpperCase() + i.substr(1); (window.CustomEvent && !mt && !Zt ? (m = new CustomEvent(i, { bubbles: !0, cancelable: !0 })) : ((m = document.createEvent("Event")), m.initEvent(i, !0, !0)), (m.to = r || e), (m.from = a || e), (m.item = o || e), (m.clone = s), (m.oldIndex = l), (m.newIndex = c), (m.oldDraggableIndex = f), (m.newDraggableIndex = d), (m.originalEvent = p), (m.pullMode = u ? u.lastPutMode : void 0)); var w = ft(ft({}, g), te.getEventProperties(i, t)); for (var D in w) m[D] = w[D]; (e && e.dispatchEvent(m), S[E] && S[E].call(t, m)); } } var Fn = ["evt"], G = function (t, e) { var i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, o = i.evt, s = In(i, Fn); te.pluginEvent.bind(v)( t, e, ft( { dragEl: h, parentEl: R, ghostEl: y, rootEl: I, nextEl: Lt, lastDownEl: pe, cloneEl: T, cloneHidden: St, dragStarted: Kt, putSortable: H, activeSortable: v.active, originalEvent: o, oldIndex: Mt, oldDraggableIndex: qt, newIndex: Z, newDraggableIndex: wt, hideGhostForTarget: $i, unhideGhostForTarget: Ki, cloneNowHidden: function () { St = !0; }, cloneNowShown: function () { St = !1; }, dispatchSortableEvent: function (a) { K({ sortable: e, name: a, originalEvent: o }); }, }, s, ), ); }; function K(n) { Bn( ft( { putSortable: H, cloneEl: T, targetEl: h, rootEl: I, oldIndex: Mt, oldDraggableIndex: qt, newIndex: Z, newDraggableIndex: wt, }, n, ), ); } var h, R, y, I, Lt, pe, T, St, Mt, Z, qt, wt, ce, H, Pt = !1, ye = !1, we = [], At, at, Pe, Me, Ii, Ti, Kt, Rt, Jt, Qt = !1, de = !1, ge, $, Ne = [], Ve = !1, Se = [], Oe = typeof document < "u", fe = $e, _i = Zt || mt ? "cssFloat" : "float", Hn = Oe && !Pi && !$e && "draggable" in document.createElement("div"), Wi = (function () { if (Oe) { if (mt) return !1; var n = document.createElement("x"); return ( (n.style.cssText = "pointer-events:auto"), n.style.pointerEvents === "auto" ); } })(), zi = function (t, e) { var i = b(t), o = parseInt(i.width) - parseInt(i.paddingLeft) - parseInt(i.paddingRight) - parseInt(i.borderLeftWidth) - parseInt(i.borderRightWidth), s = kt(t, 0, e), r = kt(t, 1, e), a = s && b(s), l = r && b(r), c = a && parseInt(a.marginLeft) + parseInt(a.marginRight) + N(s).width, f = l && parseInt(l.marginLeft) + parseInt(l.marginRight) + N(r).width; if (i.display === "flex") return i.flexDirection === "column" || i.flexDirection === "column-reverse" ? "vertical" : "horizontal"; if (i.display === "grid") return i.gridTemplateColumns.split(" ").length <= 1 ? "vertical" : "horizontal"; if (s && a.float && a.float !== "none") { var d = a.float === "left" ? "left" : "right"; return r && (l.clear === "both" || l.clear === d) ? "vertical" : "horizontal"; } return s && (a.display === "block" || a.display === "flex" || a.display === "table" || a.display === "grid" || (c >= o && i[_i] === "none") || (r && i[_i] === "none" && c + f > o)) ? "vertical" : "horizontal"; }, Vn = function (t, e, i) { var o = i ? t.left : t.top, s = i ? t.right : t.bottom, r = i ? t.width : t.height, a = i ? e.left : e.top, l = i ? e.right : e.bottom, c = i ? e.width : e.height; return o === a || s === l || o + r / 2 === a + c / 2; }, Wn = function (t, e) { var i; return ( we.some(function (o) { var s = o[j].options.emptyInsertThreshold; if (!(!s || Ke(o))) { var r = N(o), a = t >= r.left - s && t <= r.right + s, l = e >= r.top - s && e <= r.bottom + s; if (a && l) return (i = o); } }), i ); }, Xi = function (t) { function e(s, r) { return function (a, l, c, f) { var d = a.options.group.name && l.options.group.name && a.options.group.name === l.options.group.name; if (s == null && (r || d)) return !0; if (s == null || s === !1) return !1; if (r && s === "clone") return s; if (typeof s == "function") return e(s(a, l, c, f), r)(a, l, c, f); var p = (r ? a : l).options.group.name; return ( s === !0 || (typeof s == "string" && s === p) || (s.join && s.indexOf(p) > -1) ); }; } var i = {}, o = t.group; ((!o || ue(o) != "object") && (o = { name: o }), (i.name = o.name), (i.checkPull = e(o.pull, !0)), (i.checkPut = e(o.put)), (i.revertClone = o.revertClone), (t.group = i)); }, $i = function () { !Wi && y && b(y, "display", "none"); }, Ki = function () { !Wi && y && b(y, "display", ""); }; Oe && !Pi && document.addEventListener( "click", function (n) { if (ye) return ( n.preventDefault(), n.stopPropagation && n.stopPropagation(), n.stopImmediatePropagation && n.stopImmediatePropagation(), (ye = !1), !1 ); }, !0, ); var Ct = function (t) { if (h) { t = t.touches ? t.touches[0] : t; var e = Wn(t.clientX, t.clientY); if (e) { var i = {}; for (var o in t) t.hasOwnProperty(o) && (i[o] = t[o]); ((i.target = i.rootEl = e), (i.preventDefault = void 0), (i.stopPropagation = void 0), e[j]._onDragOver(i)); } } }, zn = function (t) { h && h.parentNode[j]._isOutsideThisEl(t.target); }; function v(n, t) { if (!(n && n.nodeType && n.nodeType === 1)) throw "Sortable: `el` must be an HTMLElement, not ".concat( {}.toString.call(n), ); ((this.el = n), (this.options = t = gt({}, t)), (n[j] = this)); var e = { group: null, sort: !0, disabled: !1, store: null, handle: null, draggable: /^[uo]l$/i.test(n.nodeName) ? ">li" : ">*", swapThreshold: 1, invertSwap: !1, invertedSwapThreshold: null, removeCloneOnHide: !0, direction: function () { return zi(n, this.options); }, ghostClass: "sortable-ghost", chosenClass: "sortable-chosen", dragClass: "sortable-drag", ignore: "a, img", filter: null, preventOnFilter: !0, animation: 0, easing: null, setData: function (r, a) { r.setData("Text", a.textContent); }, dropBubble: !1, dragoverBubble: !1, dataIdAttr: "data-id", delay: 0, delayOnTouchOnly: !1, touchStartThreshold: (Number.parseInt ? Number : window).parseInt( window.devicePixelRatio, 10, ) || 1, forceFallback: !1, fallbackClass: "sortable-fallback", fallbackOnBody: !1, fallbackTolerance: 0, fallbackOffset: { x: 0, y: 0 }, supportPointer: v.supportPointer !== !1 && "PointerEvent" in window && (!Gt || $e), emptyInsertThreshold: 5, }; te.initializePlugins(this, n, e); for (var i in e) !(i in t) && (t[i] = e[i]); Xi(t); for (var o in this) o.charAt(0) === "_" && typeof this[o] == "function" && (this[o] = this[o].bind(this)); ((this.nativeDraggable = t.forceFallback ? !1 : Hn), this.nativeDraggable && (this.options.touchStartThreshold = 1), t.supportPointer ? O(n, "pointerdown", this._onTapStart) : (O(n, "mousedown", this._onTapStart), O(n, "touchstart", this._onTapStart)), this.nativeDraggable && (O(n, "dragover", this), O(n, "dragenter", this)), we.push(this.el), t.store && t.store.get && this.sort(t.store.get(this) || []), gt(this, Mn())); } v.prototype = { constructor: v, _isOutsideThisEl: function (t) { !this.el.contains(t) && t !== this.el && (Rt = null); }, _getDirection: function (t, e) { return typeof this.options.direction == "function" ? this.options.direction.call(this, t, e, h) : this.options.direction; }, _onTapStart: function (t) { if (t.cancelable) { var e = this, i = this.el, o = this.options, s = o.preventOnFilter, r = t.type, a = (t.touches && t.touches[0]) || (t.pointerType && t.pointerType === "touch" && t), l = (a || t).target, c = (t.target.shadowRoot && ((t.path && t.path[0]) || (t.composedPath && t.composedPath()[0]))) || l, f = o.filter; if ( (qn(i), !h && !( (/mousedown|pointerdown/.test(r) && t.button !== 0) || o.disabled ) && !c.isContentEditable && !( !this.nativeDraggable && Gt && l && l.tagName.toUpperCase() === "SELECT" ) && ((l = lt(l, o.draggable, i, !1)), !(l && l.animated) && pe !== l)) ) { if ( ((Mt = ot(l)), (qt = ot(l, o.draggable)), typeof f == "function") ) { if (f.call(this, t, l, this)) { (K({ sortable: e, rootEl: c, name: "filter", targetEl: l, toEl: i, fromEl: i, }), G("filter", e, { evt: t }), s && t.preventDefault()); return; } } else if ( f && ((f = f.split(",").some(function (d) { if (((d = lt(c, d.trim(), i, !1)), d)) return ( K({ sortable: e, rootEl: d, name: "filter", targetEl: l, fromEl: i, toEl: i, }), G("filter", e, { evt: t }), !0 ); })), f) ) { s && t.preventDefault(); return; } (o.handle && !lt(c, o.handle, i, !1)) || this._prepareDragStart(t, a, l); } } }, _prepareDragStart: function (t, e, i) { var o = this, s = o.el, r = o.options, a = s.ownerDocument, l; if (i && !h && i.parentNode === s) { var c = N(i); if ( ((I = s), (h = i), (R = h.parentNode), (Lt = h.nextSibling), (pe = i), (ce = r.group), (v.dragged = h), (At = { target: h, clientX: (e || t).clientX, clientY: (e || t).clientY, }), (Ii = At.clientX - c.left), (Ti = At.clientY - c.top), (this._lastX = (e || t).clientX), (this._lastY = (e || t).clientY), (h.style["will-change"] = "all"), (l = function () { if ((G("delayEnded", o, { evt: t }), v.eventCanceled)) { o._onDrop(); return; } (o._disableDelayedDragEvents(), !Di && o.nativeDraggable && (h.draggable = !0), o._triggerDragStart(t, e), K({ sortable: o, name: "choose", originalEvent: t }), Q(h, r.chosenClass, !0)); }), r.ignore.split(",").forEach(function (f) { ki(h, f.trim(), ke); }), O(a, "dragover", Ct), O(a, "mousemove", Ct), O(a, "touchmove", Ct), r.supportPointer ? (O(a, "pointerup", o._onDrop), !this.nativeDraggable && O(a, "pointercancel", o._onDrop)) : (O(a, "mouseup", o._onDrop), O(a, "touchend", o._onDrop), O(a, "touchcancel", o._onDrop)), Di && this.nativeDraggable && ((this.options.touchStartThreshold = 4), (h.draggable = !0)), G("delayStart", this, { evt: t }), r.delay && (!r.delayOnTouchOnly || e) && (!this.nativeDraggable || !(Zt || mt))) ) { if (v.eventCanceled) { this._onDrop(); return; } (r.supportPointer ? (O(a, "pointerup", o._disableDelayedDrag), O(a, "pointercancel", o._disableDelayedDrag)) : (O(a, "mouseup", o._disableDelayedDrag), O(a, "touchend", o._disableDelayedDrag), O(a, "touchcancel", o._disableDelayedDrag)), O(a, "mousemove", o._delayedDragTouchMoveHandler), O(a, "touchmove", o._delayedDragTouchMoveHandler), r.supportPointer && O(a, "pointermove", o._delayedDragTouchMoveHandler), (o._dragStartTimer = setTimeout(l, r.delay))); } else l(); } }, _delayedDragTouchMoveHandler: function (t) { var e = t.touches ? t.touches[0] : t; Math.max( Math.abs(e.clientX - this._lastX), Math.abs(e.clientY - this._lastY), ) >= Math.floor( this.options.touchStartThreshold / ((this.nativeDraggable && window.devicePixelRatio) || 1), ) && this._disableDelayedDrag(); }, _disableDelayedDrag: function () { (h && ke(h), clearTimeout(this._dragStartTimer), this._disableDelayedDragEvents()); }, _disableDelayedDragEvents: function () { var t = this.el.ownerDocument; (x(t, "mouseup", this._disableDelayedDrag), x(t, "touchend", this._disableDelayedDrag), x(t, "touchcancel", this._disableDelayedDrag), x(t, "pointerup", this._disableDelayedDrag), x(t, "pointercancel", this._disableDelayedDrag), x(t, "mousemove", this._delayedDragTouchMoveHandler), x(t, "touchmove", this._delayedDragTouchMoveHandler), x(t, "pointermove", this._delayedDragTouchMoveHandler)); }, _triggerDragStart: function (t, e) { ((e = e || (t.pointerType == "touch" && t)), !this.nativeDraggable || e ? this.options.supportPointer ? O(document, "pointermove", this._onTouchMove) : e ? O(document, "touchmove", this._onTouchMove) : O(document, "mousemove", this._onTouchMove) : (O(h, "dragend", this), O(I, "dragstart", this._onDragStart))); try { document.selection ? me(function () { document.selection.empty(); }) : window.getSelection().removeAllRanges(); } catch {} }, _dragStarted: function (t, e) { if (((Pt = !1), I && h)) { (G("dragStarted", this, { evt: e }), this.nativeDraggable && O(document, "dragover", zn)); var i = this.options; (!t && Q(h, i.dragClass, !1), Q(h, i.ghostClass, !0), (v.active = this), t && this._appendGhost(), K({ sortable: this, name: "start", originalEvent: e })); } else this._nulling(); }, _emulateDragOver: function () { if (at) { ((this._lastX = at.clientX), (this._lastY = at.clientY), $i()); for ( var t = document.elementFromPoint(at.clientX, at.clientY), e = t; t && t.shadowRoot && ((t = t.shadowRoot.elementFromPoint(at.clientX, at.clientY)), t !== e); ) e = t; if ((h.parentNode[j]._isOutsideThisEl(t), e)) do { if (e[j]) { var i = void 0; if ( ((i = e[j]._onDragOver({ clientX: at.clientX, clientY: at.clientY, target: t, rootEl: e, })), i && !this.options.dragoverBubble) ) break; } t = e; } while ((e = Ni(e))); Ki(); } }, _onTouchMove: function (t) { if (At) { var e = this.options, i = e.fallbackTolerance, o = e.fallbackOffset, s = t.touches ? t.touches[0] : t, r = y && Nt(y, !0), a = y && r && r.a, l = y && r && r.d, c = fe && $ && Li($), f = (s.clientX - At.clientX + o.x) / (a || 1) + (c ? c[0] - Ne[0] : 0) / (a || 1), d = (s.clientY - At.clientY + o.y) / (l || 1) + (c ? c[1] - Ne[1] : 0) / (l || 1); if (!v.active && !Pt) { if ( i && Math.max( Math.abs(s.clientX - this._lastX), Math.abs(s.clientY - this._lastY), ) < i ) return; this._onDragStart(t, !0); } if (y) { r ? ((r.e += f - (Pe || 0)), (r.f += d - (Me || 0))) : (r = { a: 1, b: 0, c: 0, d: 1, e: f, f: d }); var p = "matrix(" .concat(r.a, ",") .concat(r.b, ",") .concat(r.c, ",") .concat(r.d, ",") .concat(r.e, ",") .concat(r.f, ")"); (b(y, "webkitTransform", p), b(y, "mozTransform", p), b(y, "msTransform", p), b(y, "transform", p), (Pe = f), (Me = d), (at = s)); } t.cancelable && t.preventDefault(); } }, _appendGhost: function () { if (!y) { var t = this.options.fallbackOnBody ? document.body : I, e = N(h, !0, fe, !0, t), i = this.options; if (fe) { for ( $ = t; b($, "position") === "static" && b($, "transform") === "none" && $ !== document; ) $ = $.parentNode; ($ !== document.body && $ !== document.documentElement ? ($ === document && ($ = dt()), (e.top += $.scrollTop), (e.left += $.scrollLeft)) : ($ = dt()), (Ne = Li($))); } ((y = h.cloneNode(!0)), Q(y, i.ghostClass, !1), Q(y, i.fallbackClass, !0), Q(y, i.dragClass, !0), b(y, "transition", ""), b(y, "transform", ""), b(y, "box-sizing", "border-box"), b(y, "margin", 0), b(y, "top", e.top), b(y, "left", e.left), b(y, "width", e.width), b(y, "height", e.height), b(y, "opacity", "0.8"), b(y, "position", fe ? "absolute" : "fixed"), b(y, "zIndex", "100000"), b(y, "pointerEvents", "none"), (v.ghost = y), t.appendChild(y), b( y, "transform-origin", (Ii / parseInt(y.style.width)) * 100 + "% " + (Ti / parseInt(y.style.height)) * 100 + "%", )); } }, _onDragStart: function (t, e) { var i = this, o = t.dataTransfer, s = i.options; if ((G("dragStart", this, { evt: t }), v.eventCanceled)) { this._onDrop(); return; } (G("setupClone", this), v.eventCanceled || ((T = Hi(h)), T.removeAttribute("id"), (T.draggable = !1), (T.style["will-change"] = ""), this._hideClone(), Q(T, this.options.chosenClass, !1), (v.clone = T)), (i.cloneId = me(function () { (G("clone", i), !v.eventCanceled && (i.options.removeCloneOnHide || I.insertBefore(T, h), i._hideClone(), K({ sortable: i, name: "clone" }))); })), !e && Q(h, s.dragClass, !0), e ? ((ye = !0), (i._loopId = setInterval(i._emulateDragOver, 50))) : (x(document, "mouseup", i._onDrop), x(document, "touchend", i._onDrop), x(document, "touchcancel", i._onDrop), o && ((o.effectAllowed = "move"), s.setData && s.setData.call(i, o, h)), O(document, "drop", i), b(h, "transform", "translateZ(0)")), (Pt = !0), (i._dragStartId = me(i._dragStarted.bind(i, e, t))), O(document, "selectstart", i), (Kt = !0), window.getSelection().removeAllRanges(), Gt && b(document.body, "user-select", "none")); }, _onDragOver: function (t) { var e = this.el, i = t.target, o, s, r, a = this.options, l = a.group, c = v.active, f = ce === l, d = a.sort, p = H || c, u, g = this, m = !1; if (Ve) return; function S(L, et) { G( L, g, ft( { evt: t, isOwner: f, axis: u ? "vertical" : "horizontal", revert: r, dragRect: o, targetRect: s, canSort: d, fromSortable: p, target: i, completed: w, onMove: function (Ge, Gi) { return he(I, e, h, o, Ge, N(Ge), t, Gi); }, changed: D, }, et, ), ); } function E() { (S("dragOverAnimationCapture"), g.captureAnimationState(), g !== p && p.captureAnimationState()); } function w(L) { return ( S("dragOverCompleted", { insertion: L }), L && (f ? c._hideClone() : c._showClone(g), g !== p && (Q( h, H ? H.options.ghostClass : c.options.ghostClass, !1, ), Q(h, a.ghostClass, !0)), H !== g && g !== v.active ? (H = g) : g === v.active && H && (H = null), p === g && (g._ignoreWhileAnimating = i), g.animateAll(function () { (S("dragOverAnimationComplete"), (g._ignoreWhileAnimating = null)); }), g !== p && (p.animateAll(), (p._ignoreWhileAnimating = null))), ((i === h && !h.animated) || (i === e && !i.animated)) && (Rt = null), !a.dragoverBubble && !t.rootEl && i !== document && (h.parentNode[j]._isOutsideThisEl(t.target), !L && Ct(t)), !a.dragoverBubble && t.stopPropagation && t.stopPropagation(), (m = !0) ); } function D() { ((Z = ot(h)), (wt = ot(h, a.draggable)), K({ sortable: g, name: "change", toEl: e, newIndex: Z, newDraggableIndex: wt, originalEvent: t, })); } if ( (t.preventDefault !== void 0 && t.cancelable && t.preventDefault(), (i = lt(i, a.draggable, e, !0)), S("dragOver"), v.eventCanceled) ) return m; if ( h.contains(t.target) || (i.animated && i.animatingX && i.animatingY) || g._ignoreWhileAnimating === i ) return w(!1); if ( ((ye = !1), c && !a.disabled && (f ? d || (r = R !== I) : H === this || ((this.lastPutMode = ce.checkPull(this, c, h, t)) && l.checkPut(this, c, h, t)))) ) { if ( ((u = this._getDirection(t, i) === "vertical"), (o = N(h)), S("dragOverValid"), v.eventCanceled) ) return m; if (r) return ( (R = I), E(), this._hideClone(), S("revert"), v.eventCanceled || (Lt ? I.insertBefore(h, Lt) : I.appendChild(h)), w(!0) ); var A = Ke(e, a.draggable); if (!A || (Yn(t, u, this) && !A.animated)) { if (A === h) return w(!1); if ( (A && e === t.target && (i = A), i && (s = N(i)), he(I, e, h, o, i, s, t, !!i) !== !1) ) return ( E(), A && A.nextSibling ? e.insertBefore(h, A.nextSibling) : e.appendChild(h), (R = e), D(), w(!0) ); } else if (A && Kn(t, u, this)) { var C = kt(e, 0, a, !0); if (C === h) return w(!1); if (((i = C), (s = N(i)), he(I, e, h, o, i, s, t, !1) !== !1)) return (E(), e.insertBefore(h, C), (R = e), D(), w(!0)); } else if (i.parentNode === e) { s = N(i); var F = 0, q, J = h.parentNode !== e, _ = !Vn( (h.animated && h.toRect) || o, (i.animated && i.toRect) || s, u, ), V = u ? "top" : "left", W = Ci(i, "top", "top") || Ci(h, "top", "top"), tt = W ? W.scrollTop : void 0; (Rt !== i && ((q = s[V]), (Qt = !1), (de = (!_ && a.invertSwap) || J)), (F = Un( t, i, s, u, _ ? 1 : a.swapThreshold, a.invertedSwapThreshold == null ? a.swapThreshold : a.invertedSwapThreshold, de, Rt === i, ))); var z; if (F !== 0) { var k = ot(h); do ((k -= F), (z = R.children[k])); while (z && (b(z, "display") === "none" || z === y)); } if (F === 0 || z === i) return w(!1); ((Rt = i), (Jt = F)); var Y = i.nextElementSibling, B = !1; B = F === 1; var X = he(I, e, h, o, i, s, t, B); if (X !== !1) return ( (X === 1 || X === -1) && (B = X === 1), (Ve = !0), setTimeout($n, 30), E(), B && !Y ? e.appendChild(h) : i.parentNode.insertBefore(h, B ? Y : i), W && Fi(W, 0, tt - W.scrollTop), (R = h.parentNode), q !== void 0 && !de && (ge = Math.abs(q - N(i)[V])), D(), w(!0) ); } if (e.contains(h)) return w(!1); } return !1; }, _ignoreWhileAnimating: null, _offMoveEvents: function () { (x(document, "mousemove", this._onTouchMove), x(document, "touchmove", this._onTouchMove), x(document, "pointermove", this._onTouchMove), x(document, "dragover", Ct), x(document, "mousemove", Ct), x(document, "touchmove", Ct)); }, _offUbEvents: function () { var t = this.el.ownerDocument; (x(t, "mouseup", this._onDrop), x(t, "touchend", this._onDrop), x(t, "pointerup", this._onDrop), x(t, "pointercancel", this._onDrop), x(t, "touchcancel", this._onDrop), x(document, "selectstart", this)); }, _onDrop: function (t) { var e = this.el, i = this.options; if ( ((Z = ot(h)), (wt = ot(h, i.draggable)), G("drop", this, { evt: t }), (R = h && h.parentNode), (Z = ot(h)), (wt = ot(h, i.draggable)), v.eventCanceled) ) { this._nulling(); return; } ((Pt = !1), (de = !1), (Qt = !1), clearInterval(this._loopId), clearTimeout(this._dragStartTimer), We(this.cloneId), We(this._dragStartId), this.nativeDraggable && (x(document, "drop", this), x(e, "dragstart", this._onDragStart)), this._offMoveEvents(), this._offUbEvents(), Gt && b(document.body, "user-select", ""), b(h, "transform", ""), t && (Kt && (t.cancelable && t.preventDefault(), !i.dropBubble && t.stopPropagation()), y && y.parentNode && y.parentNode.removeChild(y), (I === R || (H && H.lastPutMode !== "clone")) && T && T.parentNode && T.parentNode.removeChild(T), h && (this.nativeDraggable && x(h, "dragend", this), ke(h), (h.style["will-change"] = ""), Kt && !Pt && Q( h, H ? H.options.ghostClass : this.options.ghostClass, !1, ), Q(h, this.options.chosenClass, !1), K({ sortable: this, name: "unchoose", toEl: R, newIndex: null, newDraggableIndex: null, originalEvent: t, }), I !== R ? (Z >= 0 && (K({ rootEl: R, name: "add", toEl: R, fromEl: I, originalEvent: t, }), K({ sortable: this, name: "remove", toEl: R, originalEvent: t, }), K({ rootEl: R, name: "sort", toEl: R, fromEl: I, originalEvent: t, }), K({ sortable: this, name: "sort", toEl: R, originalEvent: t, })), H && H.save()) : Z !== Mt && Z >= 0 && (K({ sortable: this, name: "update", toEl: R, originalEvent: t, }), K({ sortable: this, name: "sort", toEl: R, originalEvent: t, })), v.active && ((Z == null || Z === -1) && ((Z = Mt), (wt = qt)), K({ sortable: this, name: "end", toEl: R, originalEvent: t, }), this.save()))), this._nulling()); }, _nulling: function () { (G("nulling", this), (I = h = R = y = Lt = T = pe = St = At = at = Kt = Z = wt = Mt = qt = Rt = Jt = H = ce = v.dragged = v.ghost = v.clone = v.active = null), Se.forEach(function (t) { t.checked = !0; }), (Se.length = Pe = Me = 0)); }, handleEvent: function (t) { switch (t.type) { case "drop": case "dragend": this._onDrop(t); break; case "dragenter": case "dragover": h && (this._onDragOver(t), Xn(t)); break; case "selectstart": t.preventDefault(); break; } }, toArray: function () { for ( var t = [], e, i = this.el.children, o = 0, s = i.length, r = this.options; o < s; o++ ) ((e = i[o]), lt(e, r.draggable, this.el, !1) && t.push(e.getAttribute(r.dataIdAttr) || jn(e))); return t; }, sort: function (t, e) { var i = {}, o = this.el; (this.toArray().forEach(function (s, r) { var a = o.children[r]; lt(a, this.options.draggable, o, !1) && (i[s] = a); }, this), e && this.captureAnimationState(), t.forEach(function (s) { i[s] && (o.removeChild(i[s]), o.appendChild(i[s])); }), e && this.animateAll()); }, save: function () { var t = this.options.store; t && t.set && t.set(this); }, closest: function (t, e) { return lt(t, e || this.options.draggable, this.el, !1); }, option: function (t, e) { var i = this.options; if (e === void 0) return i[t]; var o = te.modifyOption(this, t, e); (typeof o < "u" ? (i[t] = o) : (i[t] = e), t === "group" && Xi(i)); }, destroy: function () { G("destroy", this); var t = this.el; ((t[j] = null), x(t, "mousedown", this._onTapStart), x(t, "touchstart", this._onTapStart), x(t, "pointerdown", this._onTapStart), this.nativeDraggable && (x(t, "dragover", this), x(t, "dragenter", this)), Array.prototype.forEach.call( t.querySelectorAll("[draggable]"), function (e) { e.removeAttribute("draggable"); }, ), this._onDrop(), this._disableDelayedDragEvents(), we.splice(we.indexOf(this.el), 1), (this.el = t = null)); }, _hideClone: function () { if (!St) { if ((G("hideClone", this), v.eventCanceled)) return; (b(T, "display", "none"), this.options.removeCloneOnHide && T.parentNode && T.parentNode.removeChild(T), (St = !0)); } }, _showClone: function (t) { if (t.lastPutMode !== "clone") { this._hideClone(); return; } if (St) { if ((G("showClone", this), v.eventCanceled)) return; (h.parentNode == I && !this.options.group.revertClone ? I.insertBefore(T, h) : Lt ? I.insertBefore(T, Lt) : I.appendChild(T), this.options.group.revertClone && this.animate(h, T), b(T, "display", ""), (St = !1)); } }, }; function Xn(n) { (n.dataTransfer && (n.dataTransfer.dropEffect = "move"), n.cancelable && n.preventDefault()); } function he(n, t, e, i, o, s, r, a) { var l, c = n[j], f = c.options.onMove, d; return ( window.CustomEvent && !mt && !Zt ? (l = new CustomEvent("move", { bubbles: !0, cancelable: !0 })) : ((l = document.createEvent("Event")), l.initEvent("move", !0, !0)), (l.to = t), (l.from = n), (l.dragged = e), (l.draggedRect = i), (l.related = o || t), (l.relatedRect = s || N(t)), (l.willInsertAfter = a), (l.originalEvent = r), n.dispatchEvent(l), f && (d = f.call(c, l, r)), d ); } function ke(n) { n.draggable = !1; } function $n() { Ve = !1; } function Kn(n, t, e) { var i = N(kt(e.el, 0, e.options, !0)), o = Vi(e.el, e.options, y), s = 10; return t ? n.clientX < o.left - s || (n.clientY < i.top && n.clientX < i.right) : n.clientY < o.top - s || (n.clientY < i.bottom && n.clientX < i.left); } function Yn(n, t, e) { var i = N(Ke(e.el, e.options.draggable)), o = Vi(e.el, e.options, y), s = 10; return t ? n.clientX > o.right + s || (n.clientY > i.bottom && n.clientX > i.left) : n.clientY > o.bottom + s || (n.clientX > i.right && n.clientY > i.top); } function Un(n, t, e, i, o, s, r, a) { var l = i ? n.clientY : n.clientX, c = i ? e.height : e.width, f = i ? e.top : e.left, d = i ? e.bottom : e.right, p = !1; if (!r) { if (a && ge < c * o) { if ( (!Qt && (Jt === 1 ? l > f + (c * s) / 2 : l < d - (c * s) / 2) && (Qt = !0), Qt) ) p = !0; else if (Jt === 1 ? l < f + ge : l > d - ge) return -Jt; } else if (l > f + (c * (1 - o)) / 2 && l < d - (c * (1 - o)) / 2) return Gn(t); } return ( (p = p || r), p && (l < f + (c * s) / 2 || l > d - (c * s) / 2) ? l > f + c / 2 ? 1 : -1 : 0 ); } function Gn(n) { return ot(h) < ot(n) ? 1 : -1; } function jn(n) { for ( var t = n.tagName + n.className + n.src + n.href + n.textContent, e = t.length, i = 0; e--; ) i += t.charCodeAt(e); return i.toString(36); } function qn(n) { Se.length = 0; for (var t = n.getElementsByTagName("input"), e = t.length; e--; ) { var i = t[e]; i.checked && Se.push(i); } } function me(n) { return setTimeout(n, 0); } function We(n) { return clearTimeout(n); } Oe && O(document, "touchmove", function (n) { (v.active || Pt) && n.cancelable && n.preventDefault(); }); v.utils = { on: O, off: x, css: b, find: ki, is: function (t, e) { return !!lt(t, e, t, !1); }, extend: Rn, throttle: Bi, closest: lt, toggleClass: Q, clone: Hi, index: ot, nextTick: me, cancelNextTick: We, detectDirection: zi, getChild: kt, expando: j, }; v.get = function (n) { return n[j]; }; v.mount = function () { for (var n = arguments.length, t = new Array(n), e = 0; e < n; e++) t[e] = arguments[e]; (t[0].constructor === Array && (t = t[0]), t.forEach(function (i) { if (!i.prototype || !i.prototype.constructor) throw "Sortable: Mounted plugin must be a constructor function, not ".concat( {}.toString.call(i), ); (i.utils && (v.utils = ft(ft({}, v.utils), i.utils)), te.mount(i)); })); }; v.create = function (n, t) { return new v(n, t); }; v.version = Tn; var M = [], Yt, ze, Xe = !1, Be, Fe, xe, Ut; function Jn() { function n() { this.defaults = { scroll: !0, forceAutoScrollFallback: !1, scrollSensitivity: 30, scrollSpeed: 10, bubbleScroll: !0, }; for (var t in this) t.charAt(0) === "_" && typeof this[t] == "function" && (this[t] = this[t].bind(this)); } return ( (n.prototype = { dragStarted: function (e) { var i = e.originalEvent; this.sortable.nativeDraggable ? O(document, "dragover", this._handleAutoScroll) : this.options.supportPointer ? O( document, "pointermove", this._handleFallbackAutoScroll, ) : i.touches ? O( document, "touchmove", this._handleFallbackAutoScroll, ) : O( document, "mousemove", this._handleFallbackAutoScroll, ); }, dragOverCompleted: function (e) { var i = e.originalEvent; !this.options.dragOverBubble && !i.rootEl && this._handleAutoScroll(i); }, drop: function () { (this.sortable.nativeDraggable ? x(document, "dragover", this._handleAutoScroll) : (x( document, "pointermove", this._handleFallbackAutoScroll, ), x(document, "touchmove", this._handleFallbackAutoScroll), x(document, "mousemove", this._handleFallbackAutoScroll)), Ri(), be(), Pn()); }, nulling: function () { ((xe = ze = Yt = Xe = Ut = Be = Fe = null), (M.length = 0)); }, _handleFallbackAutoScroll: function (e) { this._handleAutoScroll(e, !0); }, _handleAutoScroll: function (e, i) { var o = this, s = (e.touches ? e.touches[0] : e).clientX, r = (e.touches ? e.touches[0] : e).clientY, a = document.elementFromPoint(s, r); if ( ((xe = e), i || this.options.forceAutoScrollFallback || Zt || mt || Gt) ) { He(e, this.options, a, i); var l = xt(a, !0); Xe && (!Ut || s !== Be || r !== Fe) && (Ut && Ri(), (Ut = setInterval(function () { var c = xt(document.elementFromPoint(s, r), !0); (c !== l && ((l = c), be()), He(e, o.options, c, i)); }, 10)), (Be = s), (Fe = r)); } else { if (!this.options.bubbleScroll || xt(a, !0) === dt()) { be(); return; } He(e, this.options, xt(a, !1), !1); } }, }), gt(n, { pluginName: "scroll", initializeByDefault: !0 }) ); } function be() { (M.forEach(function (n) { clearInterval(n.pid); }), (M = [])); } function Ri() { clearInterval(Ut); } var He = Bi(function (n, t, e, i) { if (t.scroll) { var o = (n.touches ? n.touches[0] : n).clientX, s = (n.touches ? n.touches[0] : n).clientY, r = t.scrollSensitivity, a = t.scrollSpeed, l = dt(), c = !1, f; ze !== e && ((ze = e), be(), (Yt = t.scroll), (f = t.scrollFn), Yt === !0 && (Yt = xt(e, !0))); var d = 0, p = Yt; do { var u = p, g = N(u), m = g.top, S = g.bottom, E = g.left, w = g.right, D = g.width, A = g.height, C = void 0, F = void 0, q = u.scrollWidth, J = u.scrollHeight, _ = b(u), V = u.scrollLeft, W = u.scrollTop; u === l ? ((C = D < q && (_.overflowX === "auto" || _.overflowX === "scroll" || _.overflowX === "visible")), (F = A < J && (_.overflowY === "auto" || _.overflowY === "scroll" || _.overflowY === "visible"))) : ((C = D < q && (_.overflowX === "auto" || _.overflowX === "scroll")), (F = A < J && (_.overflowY === "auto" || _.overflowY === "scroll"))); var tt = C && (Math.abs(w - o) <= r && V + D < q) - (Math.abs(E - o) <= r && !!V), z = F && (Math.abs(S - s) <= r && W + A < J) - (Math.abs(m - s) <= r && !!W); if (!M[d]) for (var k = 0; k <= d; k++) M[k] || (M[k] = {}); ((M[d].vx != tt || M[d].vy != z || M[d].el !== u) && ((M[d].el = u), (M[d].vx = tt), (M[d].vy = z), clearInterval(M[d].pid), (tt != 0 || z != 0) && ((c = !0), (M[d].pid = setInterval( function () { i && this.layer === 0 && v.active._onTouchMove(xe); var Y = M[this.layer].vy ? M[this.layer].vy * a : 0, B = M[this.layer].vx ? M[this.layer].vx * a : 0; (typeof f == "function" && f.call( v.dragged.parentNode[j], B, Y, n, xe, M[this.layer].el, ) !== "continue") || Fi(M[this.layer].el, B, Y); }.bind({ layer: d }), 24, )))), d++); } while (t.bubbleScroll && p !== l && (p = xt(p, !1))); Xe = c; } }, 30), Yi = function (t) { var e = t.originalEvent, i = t.putSortable, o = t.dragEl, s = t.activeSortable, r = t.dispatchSortableEvent, a = t.hideGhostForTarget, l = t.unhideGhostForTarget; if (e) { var c = i || s; a(); var f = e.changedTouches && e.changedTouches.length ? e.changedTouches[0] : e, d = document.elementFromPoint(f.clientX, f.clientY); (l(), c && !c.el.contains(d) && (r("spill"), this.onSpill({ dragEl: o, putSortable: i }))); } }; function Ye() {} Ye.prototype = { startIndex: null, dragStart: function (t) { var e = t.oldDraggableIndex; this.startIndex = e; }, onSpill: function (t) { var e = t.dragEl, i = t.putSortable; (this.sortable.captureAnimationState(), i && i.captureAnimationState()); var o = kt(this.sortable.el, this.startIndex, this.options); (o ? this.sortable.el.insertBefore(e, o) : this.sortable.el.appendChild(e), this.sortable.animateAll(), i && i.animateAll()); }, drop: Yi, }; gt(Ye, { pluginName: "revertOnSpill" }); function Ue() {} Ue.prototype = { onSpill: function (t) { var e = t.dragEl, i = t.putSortable, o = i || this.sortable; (o.captureAnimationState(), e.parentNode && e.parentNode.removeChild(e), o.animateAll()); }, drop: Yi, }; gt(Ue, { pluginName: "removeOnSpill" }); v.mount(new Jn()); v.mount(Ue, Ye); var Ui = v; function bt(n) { return n == null || n === "" || (typeof n == "string" && n.trim() === ""); } function P(n) { return !bt(n); } var Ee = class { constructor({ canOptionLabelsWrap: t = !0, canSelectPlaceholder: e = !0, element: i, getOptionLabelUsing: o = null, getOptionLabelsUsing: s = null, getOptionsUsing: r = null, getSearchResultsUsing: a = null, hasDynamicOptions: l = !1, hasDynamicSearchResults: c = !0, hasInitialNoOptionsMessage: f = !1, initialOptionLabel: d = null, initialOptionLabels: p = null, initialState: u = null, isAutofocused: g = !1, isDisabled: m = !1, isHtmlAllowed: S = !1, isMultiple: E = !1, isReorderable: w = !1, isSearchable: D = !1, livewireId: A = null, loadingMessage: C = "Loading...", maxItems: F = null, maxItemsMessage: q = "Maximum number of items selected", noOptionsMessage: J = "No options available", noSearchResultsMessage: _ = "No results found", onStateChange: V = () => {}, options: W, optionsLimit: tt = null, placeholder: z, position: k = null, searchableOptionFields: Y = ["label"], searchDebounce: B = 1e3, searchingMessage: X = "Searching...", searchPrompt: L = "Search...", state: et, statePath: ee = null, }) { ((this.canOptionLabelsWrap = t), (this.canSelectPlaceholder = e), (this.element = i), (this.getOptionLabelUsing = o), (this.getOptionLabelsUsing = s), (this.getOptionsUsing = r), (this.getSearchResultsUsing = a), (this.hasDynamicOptions = l), (this.hasDynamicSearchResults = c), (this.hasInitialNoOptionsMessage = f), (this.initialOptionLabel = d), (this.initialOptionLabels = p), (this.initialState = u), (this.isAutofocused = g), (this.isDisabled = m), (this.isHtmlAllowed = S), (this.isMultiple = E), (this.isReorderable = w), (this.isSearchable = D), (this.livewireId = A), (this.loadingMessage = C), (this.maxItems = F), (this.maxItemsMessage = q), (this.noOptionsMessage = J), (this.noSearchResultsMessage = _), (this.onStateChange = V), (this.options = W), (this.optionsLimit = tt), (this.originalOptions = JSON.parse(JSON.stringify(W))), (this.placeholder = z), (this.position = k), (this.searchableOptionFields = Array.isArray(Y) ? Y : ["label"]), (this.searchDebounce = B), (this.searchingMessage = X), (this.searchPrompt = L), (this.state = et), (this.statePath = ee), (this.activeSearchId = 0), (this.labelRepository = {}), (this.isOpen = !1), (this.selectedIndex = -1), (this.searchQuery = ""), (this.searchTimeout = null), (this.isSearching = !1), (this.selectedDisplayVersion = 0), this.render(), this.setUbEventListeners(), this.isAutofocused && this.selectButton.focus()); } populateLabelRepositoryFromOptions(t) { if (!(!t || !Array.isArray(t))) for (let e of t) e.options && Array.isArray(e.options) ? this.populateLabelRepositoryFromOptions(e.options) : e.value !== void 0 && e.label !== void 0 && (this.labelRepository[e.value] = e.label); } render() { (this.populateLabelRepositoryFromOptions(this.options), (this.container = document.createElement("div")), (this.container.className = "fi-select-input-ctn"), this.canOptionLabelsWrap || this.container.classList.add( "fi-select-input-ctn-option-labels-not-wrapped", ), this.container.setAttribute("aria-haspopup", "listbox"), (this.selectButton = document.createElement("button")), (this.selectButton.className = "fi-select-input-btn"), (this.selectButton.type = "button"), this.selectButton.setAttribute("aria-expanded", "false"), (this.selectedDisplay = document.createElement("div")), (this.selectedDisplay.className = "fi-select-input-value-ctn"), this.updateSelectedDisplay(), this.selectButton.appendChild(this.selectedDisplay), (this.dropdown = document.createElement("div")), (this.dropdown.className = "fi-dropdown-panel fi-scrollable"), this.dropdown.setAttribute("role", "listbox"), this.dropdown.setAttribute("tabindex", "-1"), (this.dropdown.style.display = "none"), (this.dropdownId = `fi-select-input-dropdown-${Math.random().toString(36).substring(2, 11)}`), (this.dropdown.id = this.dropdownId), this.isMultiple && this.dropdown.setAttribute("aria-multiselectable", "true"), this.isSearchable && ((this.searchContainer = document.createElement("div")), (this.searchContainer.className = "fi-select-input-search-ctn"), (this.searchInput = document.createElement("input")), (this.searchInput.className = "fi-input"), (this.searchInput.type = "text"), (this.searchInput.placeholder = this.searchPrompt), this.searchInput.setAttribute("aria-label", "Search"), this.searchContainer.appendChild(this.searchInput), this.dropdown.appendChild(this.searchContainer), this.searchInput.addEventListener("input", (t) => { this.isDisabled || this.handleSearch(t); }), this.searchInput.addEventListener("keydown", (t) => { if (!this.isDisabled) { if (t.key === "Tab") { t.preventDefault(); let e = this.getVisibleOptions(); if (e.length === 0) return; (t.shiftKey ? (this.selectedIndex = e.length - 1) : (this.selectedIndex = 0), e.forEach((i) => { i.classList.remove("fi-selected"); }), e[this.selectedIndex].classList.add( "fi-selected", ), e[this.selectedIndex].focus()); } else if (t.key === "ArrowDown") { if ( (t.preventDefault(), t.stopPropagation(), this.getVisibleOptions().length === 0) ) return; ((this.selectedIndex = -1), this.searchInput.blur(), this.focusNextOption()); } else if (t.key === "ArrowUp") { (t.preventDefault(), t.stopPropagation()); let e = this.getVisibleOptions(); if (e.length === 0) return; ((this.selectedIndex = e.length - 1), this.searchInput.blur(), e[this.selectedIndex].classList.add( "fi-selected", ), e[this.selectedIndex].focus(), e[this.selectedIndex].id && this.dropdown.setAttribute( "aria-activedescendant", e[this.selectedIndex].id, ), this.scrollOptionIntoView( e[this.selectedIndex], )); } else if (t.key === "Enter") { if ( (t.preventDefault(), t.stopPropagation(), this.isSearching) ) return; let e = this.getVisibleOptions(); if (e.length === 0) return; let i = e.find((s) => { let r = s.getAttribute("aria-disabled") === "true", a = s.classList.contains("fi-disabled"), l = s.offsetParent === null; return !(r || a || l); }); if (!i) return; let o = i.getAttribute("data-value"); if (o === null) return; this.selectOption(o); } } })), (this.optionsList = document.createElement("ul")), this.renderOptions(), this.container.appendChild(this.selectButton), this.container.appendChild(this.dropdown), this.element.appendChild(this.container), this.applyDisabledState()); } renderOptions() { this.optionsList.innerHTML = ""; let t = 0, e = this.options, i = 0, o = !1; (this.options.forEach((a) => { a.options && Array.isArray(a.options) ? ((i += a.options.length), (o = !0)) : i++; }), o ? (this.optionsList.className = "fi-select-input-options-ctn") : i > 0 && (this.optionsList.className = "fi-dropdown-list")); let s = o ? null : this.optionsList, r = 0; for (let a of e) { if (this.optionsLimit > 0 && r >= this.optionsLimit) break; if (a.options && Array.isArray(a.options)) { let l = a.options; if ( (this.isMultiple && Array.isArray(this.state) && this.state.length > 0 && (l = a.options.filter( (c) => !this.state.includes(c.value), )), l.length > 0) ) { if (this.optionsLimit > 0) { let c = this.optionsLimit - r; c < l.length && (l = l.slice(0, c)); } (this.renderOptionGroup(a.label, l), (r += l.length), (t += l.length)); } } else { if ( this.isMultiple && Array.isArray(this.state) && this.state.includes(a.value) ) continue; !s && o && ((s = document.createElement("ul")), (s.className = "fi-dropdown-list"), this.optionsList.appendChild(s)); let l = this.createOptionElement(a.value, a); (s.appendChild(l), r++, t++); } } t === 0 ? (this.searchQuery ? this.showNoResultsMessage() : this.hasInitialNoOptionsMessage || this.hasDynamicOptions ? this.showNoOptionsMessage() : this.isMultiple && this.isOpen && !this.isSearchable && this.closeDropdown(), this.optionsList.parentNode === this.dropdown && this.dropdown.removeChild(this.optionsList)) : (this.hideLoadingState(), this.optionsList.parentNode !== this.dropdown && this.dropdown.appendChild(this.optionsList)); } renderOptionGroup(t, e) { if (e.length === 0) return; let i = document.createElement("li"); i.className = "fi-select-input-option-group"; let o = document.createElement("div"); ((o.className = "fi-dropdown-header"), (o.textContent = t)); let s = document.createElement("ul"); ((s.className = "fi-dropdown-list"), e.forEach((r) => { let a = this.createOptionElement(r.value, r); s.appendChild(a); }), i.appendChild(o), i.appendChild(s), this.optionsList.appendChild(i)); } createOptionElement(t, e) { let i = t, o = e, s = !1; typeof e == "object" && e !== null && "label" in e && "value" in e && ((i = e.value), (o = e.label), (s = e.isDisabled || !1)); let r = document.createElement("li"); ((r.className = "fi-dropdown-list-item fi-select-input-option"), s && r.classList.add("fi-disabled")); let a = `fi-select-input-option-${Math.random().toString(36).substring(2, 11)}`; if ( ((r.id = a), r.setAttribute("role", "option"), r.setAttribute("data-value", i), r.setAttribute("tabindex", "0"), s && r.setAttribute("aria-disabled", "true"), this.isHtmlAllowed && typeof o == "string") ) { let f = document.createElement("div"); f.innerHTML = o; let d = f.textContent || f.innerText || o; r.setAttribute("aria-label", d); } let l = this.isMultiple ? Array.isArray(this.state) && this.state.includes(i) : this.state === i; (r.setAttribute("aria-selected", l ? "true" : "false"), l && r.classList.add("fi-selected")); let c = document.createElement("span"); return ( this.isHtmlAllowed ? (c.innerHTML = o) : (c.textContent = o), r.appendChild(c), s || r.addEventListener("click", (f) => { (f.preventDefault(), f.stopPropagation(), this.selectOption(i), this.isMultiple && (this.isSearchable && this.searchInput ? setTimeout(() => { this.searchInput.focus(); }, 0) : setTimeout(() => { r.focus(); }, 0))); }), r ); } async updateSelectedDisplay() { this.selectedDisplayVersion = this.selectedDisplayVersion + 1; let t = this.selectedDisplayVersion, e = document.createDocumentFragment(); if (this.isMultiple) { if (!Array.isArray(this.state) || this.state.length === 0) { let o = document.createElement("span"); ((o.textContent = this.placeholder), o.classList.add("fi-select-input-placeholder"), e.appendChild(o)); } else { let o = await this.getLabelsForMultipleSelection(); if (t !== this.selectedDisplayVersion) return; this.addBadgesForSelectedOptions(o, e); } t === this.selectedDisplayVersion && (this.selectedDisplay.replaceChildren(e), this.isOpen && this.deferPositionDropdown()); return; } if (this.state === null || this.state === "") { let o = document.createElement("span"); if ( ((o.textContent = this.placeholder), o.classList.add("fi-select-input-placeholder"), e.appendChild(o), t === this.selectedDisplayVersion) ) { this.selectedDisplay.replaceChildren(e); let s = this.container.querySelector( ".fi-select-input-value-remove-btn", ); (s && s.remove(), this.container.classList.remove( "fi-select-input-ctn-clearable", )); } return; } let i = await this.getLabelForSingleSelection(); t === this.selectedDisplayVersion && (this.addSingleSelectionDisplay(i, e), t === this.selectedDisplayVersion && this.selectedDisplay.replaceChildren(e)); } async getLabelsForMultipleSelection() { let t = this.getSelectedOptionLabels(), e = []; if (Array.isArray(this.state)) { for (let o of this.state) if (!P(this.labelRepository[o])) { if (P(t[o])) { this.labelRepository[o] = t[o]; continue; } e.push(o.toString()); } } if ( e.length > 0 && P(this.initialOptionLabels) && JSON.stringify(this.state) === JSON.stringify(this.initialState) ) { if (Array.isArray(this.initialOptionLabels)) for (let o of this.initialOptionLabels) P(o) && o.value !== void 0 && o.label !== void 0 && e.includes(o.value) && (this.labelRepository[o.value] = o.label); } else if (e.length > 0 && this.getOptionLabelsUsing) try { let o = await this.getOptionLabelsUsing(); for (let s of o) P(s) && s.value !== void 0 && s.label !== void 0 && (this.labelRepository[s.value] = s.label); } catch (o) { console.error("Error fetching option labels:", o); } let i = []; if (Array.isArray(this.state)) for (let o of this.state) P(this.labelRepository[o]) ? i.push(this.labelRepository[o]) : P(t[o]) ? i.push(t[o]) : i.push(o); return i; } createBadgeElement(t, e) { let i = document.createElement("span"); ((i.className = "fi-badge fi-size-md fi-color fi-color-primary fi-text-color-600 dark:fi-text-color-200"), P(t) && i.setAttribute("data-value", t)); let o = document.createElement("span"); o.className = "fi-badge-label-ctn"; let s = document.createElement("span"); ((s.className = "fi-badge-label"), this.canOptionLabelsWrap && s.classList.add("fi-wrapped"), this.isHtmlAllowed ? (s.innerHTML = e) : (s.textContent = e), o.appendChild(s), i.appendChild(o)); let r = this.createRemoveButton(t, e); return (i.appendChild(r), i); } createRemoveButton(t, e) { let i = document.createElement("button"); return ( (i.type = "button"), (i.className = "fi-badge-delete-btn"), (i.innerHTML = ''), i.setAttribute( "aria-label", "Remove " + (this.isHtmlAllowed ? e.replace(/<[^>]*>/g, "") : e), ), i.addEventListener("click", (o) => { (o.stopPropagation(), P(t) && this.selectOption(t)); }), i.addEventListener("keydown", (o) => { (o.key === " " || o.key === "Enter") && (o.preventDefault(), o.stopPropagation(), P(t) && this.selectOption(t)); }), i ); } addBadgesForSelectedOptions(t, e = this.selectedDisplay) { let i = document.createElement("div"); ((i.className = "fi-select-input-value-badges-ctn"), t.forEach((o, s) => { let r = Array.isArray(this.state) ? this.state[s] : null, a = this.createBadgeElement(r, o); i.appendChild(a); }), e.appendChild(i), this.isReorderable && (i.addEventListener("click", (o) => { o.stopPropagation(); }), i.addEventListener("mousedown", (o) => { o.stopPropagation(); }), new Ui(i, { animation: 150, onEnd: () => { let o = []; (i.querySelectorAll("[data-value]").forEach((s) => { o.push(s.getAttribute("data-value")); }), (this.state = o), this.onStateChange(this.state)); }, }))); } async getLabelForSingleSelection() { let t = this.labelRepository[this.state]; if ( (bt(t) && (t = this.getSelectedOptionLabel(this.state)), bt(t) && P(this.initialOptionLabel) && this.state === this.initialState) ) ((t = this.initialOptionLabel), P(this.state) && (this.labelRepository[this.state] = t)); else if (bt(t) && this.getOptionLabelUsing) try { ((t = await this.getOptionLabelUsing()), P(t) && P(this.state) && (this.labelRepository[this.state] = t)); } catch (e) { (console.error("Error fetching option label:", e), (t = this.state)); } else bt(t) && (t = this.state); return t; } addSingleSelectionDisplay(t, e = this.selectedDisplay) { let i = document.createElement("span"); if ( ((i.className = "fi-select-input-value-label"), this.isHtmlAllowed ? (i.innerHTML = t) : (i.textContent = t), e.appendChild(i), !this.canSelectPlaceholder || this.container.querySelector( ".fi-select-input-value-remove-btn", )) ) return; let o = document.createElement("button"); ((o.type = "button"), (o.className = "fi-select-input-value-remove-btn"), (o.innerHTML = ''), o.setAttribute("aria-label", "Clear selection"), o.addEventListener("click", (s) => { (s.stopPropagation(), this.selectOption("")); }), o.addEventListener("keydown", (s) => { (s.key === " " || s.key === "Enter") && (s.preventDefault(), s.stopPropagation(), this.selectOption("")); }), this.container.appendChild(o), this.container.classList.add("fi-select-input-ctn-clearable")); } getSelectedOptionLabel(t) { if (P(this.labelRepository[t])) return this.labelRepository[t]; let e = ""; for (let i of this.options) if (i.options && Array.isArray(i.options)) { for (let o of i.options) if (o.value === t) { ((e = o.label), (this.labelRepository[t] = e)); break; } } else if (i.value === t) { ((e = i.label), (this.labelRepository[t] = e)); break; } return e; } setUbEventListeners() { ((this.buttonClickListener = () => { this.toggleDropdown(); }), (this.documentClickListener = (t) => { !this.container.contains(t.target) && this.isOpen && this.closeDropdown(); }), (this.buttonKeydownListener = (t) => { this.isDisabled || this.handleSelectButtonKeydown(t); }), (this.dropdownKeydownListener = (t) => { this.isDisabled || (this.isSearchable && document.activeElement === this.searchInput && !["Tab", "Escape"].includes(t.key)) || this.handleDropdownKeydown(t); }), this.selectButton.addEventListener( "click", this.buttonClickListener, ), document.addEventListener("click", this.documentClickListener), this.selectButton.addEventListener( "keydown", this.buttonKeydownListener, ), this.dropdown.addEventListener( "keydown", this.dropdownKeydownListener, ), !this.isMultiple && this.livewireId && this.statePath && this.getOptionLabelUsing && ((this.refreshOptionLabelListener = async (t) => { if ( t.detail.livewireId === this.livewireId && t.detail.statePath === this.statePath && P(this.state) ) try { delete this.labelRepository[this.state]; let e = await this.getOptionLabelUsing(); P(e) && (this.labelRepository[this.state] = e); let i = this.selectedDisplay.querySelector( ".fi-select-input-value-label", ); (P(i) && (this.isHtmlAllowed ? (i.innerHTML = e) : (i.textContent = e)), this.updateOptionLabelInList(this.state, e)); } catch (e) { console.error("Error refreshing option label:", e); } }), window.addEventListener( "filament-forms::select.refreshSelectedOptionLabel", this.refreshOptionLabelListener, ))); } updateOptionLabelInList(t, e) { this.labelRepository[t] = e; let i = this.getVisibleOptions(); for (let o of i) if (o.getAttribute("data-value") === String(t)) { if (((o.innerHTML = ""), this.isHtmlAllowed)) { let s = document.createElement("span"); ((s.innerHTML = e), o.appendChild(s)); } else o.appendChild(document.createTextNode(e)); break; } for (let o of this.options) if (o.options && Array.isArray(o.options)) { for (let s of o.options) if (s.value === t) { s.label = e; break; } } else if (o.value === t) { o.label = e; break; } for (let o of this.originalOptions) if (o.options && Array.isArray(o.options)) { for (let s of o.options) if (s.value === t) { s.label = e; break; } } else if (o.value === t) { o.label = e; break; } } handleSelectButtonKeydown(t) { switch (t.key) { case "ArrowDown": (t.preventDefault(), t.stopPropagation(), this.isOpen ? this.focusNextOption() : this.openDropdown()); break; case "ArrowUp": (t.preventDefault(), t.stopPropagation(), this.isOpen ? this.focusPreviousOption() : this.openDropdown()); break; case " ": if ((t.preventDefault(), this.isOpen)) { if (this.selectedIndex >= 0) { let e = this.getVisibleOptions()[this.selectedIndex]; e && e.click(); } } else this.openDropdown(); break; case "Enter": break; case "Escape": this.isOpen && (t.preventDefault(), this.closeDropdown()); break; case "Tab": this.isOpen && this.closeDropdown(); break; default: if ( this.isSearchable && !t.ctrlKey && !t.metaKey && !t.altKey && typeof t.key == "string" && t.key.length === 1 ) { t.preventDefault(); let e = t.key; (this.isOpen || this.openDropdown(), this.searchInput && (this.searchInput.focus(), (this.searchInput.value = (this.searchInput.value || "") + e), this.searchInput.dispatchEvent( new Event("input", { bubbles: !0 }), ))); } break; } } handleDropdownKeydown(t) { switch (t.key) { case "ArrowDown": (t.preventDefault(), t.stopPropagation(), this.focusNextOption()); break; case "ArrowUp": (t.preventDefault(), t.stopPropagation(), this.focusPreviousOption()); break; case " ": if ((t.preventDefault(), this.selectedIndex >= 0)) { let e = this.getVisibleOptions()[this.selectedIndex]; e && e.click(); } break; case "Enter": if ((t.preventDefault(), this.selectedIndex >= 0)) { let e = this.getVisibleOptions()[this.selectedIndex]; e && e.click(); } else { let e = this.element.closest("form"); e && e.submit(); } break; case "Escape": (t.preventDefault(), this.closeDropdown(), this.selectButton.focus()); break; case "Tab": this.closeDropdown(); break; default: if ( this.isSearchable && !t.ctrlKey && !t.metaKey && !t.altKey && typeof t.key == "string" && t.key.length === 1 ) { t.preventDefault(); let e = t.key; this.searchInput && (this.searchInput.focus(), (this.searchInput.value = (this.searchInput.value || "") + e), this.searchInput.dispatchEvent( new Event("input", { bubbles: !0 }), )); } break; } } toggleDropdown() { if (!this.isDisabled) { if (this.isOpen) { this.closeDropdown(); return; } (this.isMultiple && !this.isSearchable && !this.hasAvailableOptions()) || this.openDropdown(); } } hasAvailableOptions() { for (let t of this.options) if (t.options && Array.isArray(t.options)) { for (let e of t.options) if ( !Array.isArray(this.state) || !this.state.includes(e.value) ) return !0; } else if ( !Array.isArray(this.state) || !this.state.includes(t.value) ) return !0; return !1; } async openDropdown() { ((this.dropdown.style.display = "block"), (this.dropdown.style.opacity = "0")); let t = this.selectButton.closest(".fi-fixed-positioning-context") !== null && this.selectButton.closest(".fi-absolute-positioning-context") === null; if ( ((this.dropdown.style.position = t ? "fixed" : "absolute"), (this.dropdown.style.width = `${this.selectButton.offsetWidth}px`), this.selectButton.setAttribute("aria-expanded", "true"), (this.isOpen = !0), this.positionDropdown(), this.resizeListener || ((this.resizeListener = () => { ((this.dropdown.style.width = `${this.selectButton.offsetWidth}px`), this.positionDropdown()); }), window.addEventListener("resize", this.resizeListener)), this.scrollListener || ((this.scrollListener = () => this.positionDropdown()), window.addEventListener("scroll", this.scrollListener, !0)), (this.dropdown.style.opacity = "1"), this.isSearchable && this.searchInput && ((this.searchInput.value = ""), (this.searchQuery = ""), this.hasDynamicOptions || ((this.options = JSON.parse( JSON.stringify(this.originalOptions), )), this.renderOptions())), this.hasDynamicOptions && this.getOptionsUsing) ) { this.showLoadingState(!1); try { let e = await this.getOptionsUsing(), i = Array.isArray(e) ? e : e && Array.isArray(e.options) ? e.options : []; if ( ((this.options = i), (this.originalOptions = JSON.parse(JSON.stringify(i))), this.populateLabelRepositoryFromOptions(i), this.isSearchable && this.searchInput && ((this.searchInput.value && this.searchInput.value.trim() !== "") || (this.searchQuery && this.searchQuery.trim() !== ""))) ) { let o = (this.searchInput.value || this.searchQuery || "") .trim() .toLowerCase(); (this.hideLoadingState(), this.filterOptions(o)); } else this.renderOptions(); } catch (e) { (console.error("Error fetching options:", e), this.hideLoadingState()); } } else (!this.hasInitialNoOptionsMessage || this.searchQuery) && this.hideLoadingState(); if (this.isSearchable && this.searchInput) this.searchInput.focus(); else { this.selectedIndex = -1; let e = this.getVisibleOptions(); if (this.isMultiple) { if (Array.isArray(this.state) && this.state.length > 0) { for (let i = 0; i < e.length; i++) if ( this.state.includes(e[i].getAttribute("data-value")) ) { this.selectedIndex = i; break; } } } else for (let i = 0; i < e.length; i++) if (e[i].getAttribute("data-value") === this.state) { this.selectedIndex = i; break; } (this.selectedIndex === -1 && e.length > 0 && (this.selectedIndex = 0), this.selectedIndex >= 0 && (e[this.selectedIndex].classList.add("fi-selected"), e[this.selectedIndex].focus())); } } positionDropdown() { let t = this.position === "top" ? "top-start" : "bottom-start", e = [wi(4), Si({ padding: 5 })]; this.position !== "top" && this.position !== "bottom" && e.push(xi()); let i = this.selectButton.closest(".fi-fixed-positioning-context") !== null && this.selectButton.closest(".fi-absolute-positioning-context") === null; Oi(this.selectButton, this.dropdown, { placement: t, middleware: e, strategy: i ? "fixed" : "absolute", }).then(({ x: o, y: s }) => { Object.assign(this.dropdown.style, { left: `${o}px`, top: `${s}px`, }); }); } deferPositionDropdown() { this.isOpen && (this.positioningRequestAnimationFrame && (cancelAnimationFrame(this.positioningRequestAnimationFrame), (this.positioningRequestAnimationFrame = null)), (this.positioningRequestAnimationFrame = requestAnimationFrame( () => { (this.positionDropdown(), (this.positioningRequestAnimationFrame = null)); }, ))); } closeDropdown() { ((this.dropdown.style.display = "none"), this.selectButton.setAttribute("aria-expanded", "false"), (this.isOpen = !1), this.searchTimeout && (clearTimeout(this.searchTimeout), (this.searchTimeout = null)), this.activeSearchId++, (this.isSearching = !1), this.hideLoadingState(), this.resizeListener && (window.removeEventListener("resize", this.resizeListener), (this.resizeListener = null)), this.scrollListener && (window.removeEventListener("scroll", this.scrollListener, !0), (this.scrollListener = null)), this.getVisibleOptions().forEach((e) => { e.classList.remove("fi-selected"); }), this.dropdown.removeAttribute("aria-activedescendant")); } focusNextOption() { let t = this.getVisibleOptions(); if (t.length !== 0) { if ( (this.selectedIndex >= 0 && this.selectedIndex < t.length && t[this.selectedIndex].classList.remove("fi-selected"), this.selectedIndex === t.length - 1 && this.isSearchable && this.searchInput) ) { ((this.selectedIndex = -1), this.searchInput.focus(), this.dropdown.removeAttribute("aria-activedescendant")); return; } ((this.selectedIndex = (this.selectedIndex + 1) % t.length), t[this.selectedIndex].classList.add("fi-selected"), t[this.selectedIndex].focus(), t[this.selectedIndex].id && this.dropdown.setAttribute( "aria-activedescendant", t[this.selectedIndex].id, ), this.scrollOptionIntoView(t[this.selectedIndex])); } } focusPreviousOption() { let t = this.getVisibleOptions(); if (t.length !== 0) { if ( (this.selectedIndex >= 0 && this.selectedIndex < t.length && t[this.selectedIndex].classList.remove("fi-selected"), (this.selectedIndex === 0 || this.selectedIndex === -1) && this.isSearchable && this.searchInput) ) { ((this.selectedIndex = -1), this.searchInput.focus(), this.dropdown.removeAttribute("aria-activedescendant")); return; } ((this.selectedIndex = (this.selectedIndex - 1 + t.length) % t.length), t[this.selectedIndex].classList.add("fi-selected"), t[this.selectedIndex].focus(), t[this.selectedIndex].id && this.dropdown.setAttribute( "aria-activedescendant", t[this.selectedIndex].id, ), this.scrollOptionIntoView(t[this.selectedIndex])); } } scrollOptionIntoView(t) { if (!t) return; let e = this.dropdown.getBoundingClientRect(), i = t.getBoundingClientRect(); i.bottom > e.bottom ? (this.dropdown.scrollTop += i.bottom - e.bottom) : i.top < e.top && (this.dropdown.scrollTop -= e.top - i.top); } getVisibleOptions() { let t = []; this.optionsList.classList.contains("fi-dropdown-list") ? (t = Array.from( this.optionsList.querySelectorAll( ':scope > li[role="option"]', ), )) : (t = Array.from( this.optionsList.querySelectorAll( ':scope > ul.fi-dropdown-list > li[role="option"]', ), )); let e = Array.from( this.optionsList.querySelectorAll( 'li.fi-select-input-option-group > ul > li[role="option"]', ), ); return [...t, ...e]; } getSelectedOptionLabels() { if (!Array.isArray(this.state) || this.state.length === 0) return {}; let t = {}; for (let e of this.state) { let i = !1; for (let o of this.options) if (o.options && Array.isArray(o.options)) { for (let s of o.options) if (s.value === e) { ((t[e] = s.label), (i = !0)); break; } if (i) break; } else if (o.value === e) { ((t[e] = o.label), (i = !0)); break; } } return t; } handleSearch(t) { let e = t.target.value.trim(); if ( ((this.searchQuery = e), this.searchTimeout && clearTimeout(this.searchTimeout), e === "") ) { ((this.options = JSON.parse(JSON.stringify(this.originalOptions))), this.renderOptions()); return; } if ( !this.getSearchResultsUsing || typeof this.getSearchResultsUsing != "function" || !this.hasDynamicSearchResults ) { this.filterOptions(e); return; } this.searchTimeout = setTimeout(async () => { this.searchTimeout = null; let i = ++this.activeSearchId; this.isSearching = !0; try { this.showLoadingState(!0); let o = await this.getSearchResultsUsing(e); if (i !== this.activeSearchId || !this.isOpen) return; let s = Array.isArray(o) ? o : o && Array.isArray(o.options) ? o.options : []; ((this.options = s), this.populateLabelRepositoryFromOptions(s), this.hideLoadingState(), this.renderOptions(), this.isOpen && this.deferPositionDropdown(), this.options.length === 0 && this.showNoResultsMessage()); } catch (o) { i === this.activeSearchId && (console.error("Error fetching search results:", o), this.hideLoadingState(), (this.options = JSON.parse( JSON.stringify(this.originalOptions), )), this.renderOptions()); } finally { i === this.activeSearchId && (this.isSearching = !1); } }, this.searchDebounce); } showLoadingState(t = !1) { (this.optionsList.parentNode === this.dropdown && this.dropdown.removeChild(this.optionsList), this.hideLoadingState()); let e = document.createElement("div"); ((e.className = "fi-select-input-message"), (e.textContent = t ? this.searchingMessage : this.loadingMessage), this.dropdown.appendChild(e), this.isOpen && this.deferPositionDropdown()); } hideLoadingState() { let t = this.dropdown.querySelector(".fi-select-input-message"); t && t.remove(); } showNoOptionsMessage() { (this.optionsList.parentNode === this.dropdown && this.dropdown.removeChild(this.optionsList), this.hideLoadingState()); let t = document.createElement("div"); ((t.className = "fi-select-input-message"), (t.textContent = this.noOptionsMessage), this.dropdown.appendChild(t), this.isOpen && this.deferPositionDropdown()); } showNoResultsMessage() { (this.optionsList.parentNode === this.dropdown && this.dropdown.removeChild(this.optionsList), this.hideLoadingState()); let t = document.createElement("div"); ((t.className = "fi-select-input-message"), (t.textContent = this.noSearchResultsMessage), this.dropdown.appendChild(t), this.isOpen && this.deferPositionDropdown()); } filterOptions(t) { let e = this.searchableOptionFields.includes("label"), i = this.searchableOptionFields.includes("value"); t = t.toLowerCase(); let o = []; for (let s of this.originalOptions) if (s.options && Array.isArray(s.options)) { let r = s.options.filter( (a) => (e && a.label.toLowerCase().includes(t)) || (i && String(a.value).toLowerCase().includes(t)), ); r.length > 0 && o.push({ label: s.label, options: r }); } else ((e && s.label.toLowerCase().includes(t)) || (i && String(s.value).toLowerCase().includes(t))) && o.push(s); ((this.options = o), this.renderOptions(), this.options.length === 0 && this.showNoResultsMessage(), this.isOpen && this.positionDropdown()); } selectOption(t) { if (this.isDisabled) return; if (!this.isMultiple) { ((this.state = t), this.updateSelectedDisplay(), this.renderOptions(), this.closeDropdown(), this.selectButton.focus(), this.onStateChange(this.state)); return; } let e = Array.isArray(this.state) ? [...this.state] : []; if (e.includes(t)) { let o = this.selectedDisplay.querySelector(`[data-value="${t}"]`); if (P(o)) { let s = o.parentElement; P(s) && s.children.length === 1 ? ((e = e.filter((r) => r !== t)), (this.state = e), this.updateSelectedDisplay()) : (o.remove(), (e = e.filter((r) => r !== t)), (this.state = e)); } else ((e = e.filter((s) => s !== t)), (this.state = e), this.updateSelectedDisplay()); (this.renderOptions(), this.isOpen && this.deferPositionDropdown(), this.maintainFocusInMultipleMode(), this.onStateChange(this.state)); return; } if (this.maxItems && e.length >= this.maxItems) { this.maxItemsMessage && alert(this.maxItemsMessage); return; } (e.push(t), (this.state = e)); let i = this.selectedDisplay.querySelector( ".fi-select-input-value-badges-ctn", ); (bt(i) ? this.updateSelectedDisplay() : this.addSingleBadge(t, i), this.renderOptions(), this.isOpen && this.deferPositionDropdown(), this.maintainFocusInMultipleMode(), this.onStateChange(this.state)); } async addSingleBadge(t, e) { let i = this.labelRepository[t]; if ( (bt(i) && ((i = this.getSelectedOptionLabel(t)), P(i) && (this.labelRepository[t] = i)), bt(i) && this.getOptionLabelsUsing) ) try { let s = await this.getOptionLabelsUsing(); for (let r of s) if (P(r) && r.value === t && r.label !== void 0) { ((i = r.label), (this.labelRepository[t] = i)); break; } } catch (s) { console.error("Error fetching option label:", s); } bt(i) && (i = t); let o = this.createBadgeElement(t, i); e.appendChild(o); } maintainFocusInMultipleMode() { if (this.isSearchable && this.searchInput) { this.searchInput.focus(); return; } let t = this.getVisibleOptions(); if (t.length !== 0) { if ( ((this.selectedIndex = -1), Array.isArray(this.state) && this.state.length > 0) ) { for (let e = 0; e < t.length; e++) if (this.state.includes(t[e].getAttribute("data-value"))) { this.selectedIndex = e; break; } } (this.selectedIndex === -1 && (this.selectedIndex = 0), t[this.selectedIndex].classList.add("fi-selected"), t[this.selectedIndex].focus()); } } disable() { this.isDisabled || ((this.isDisabled = !0), this.applyDisabledState(), this.isOpen && this.closeDropdown()); } enable() { this.isDisabled && ((this.isDisabled = !1), this.applyDisabledState()); } applyDisabledState() { if (this.isDisabled) { if ( (this.selectButton.setAttribute("disabled", "disabled"), this.selectButton.setAttribute("aria-disabled", "true"), this.selectButton.classList.add("fi-disabled"), this.isMultiple && this.container .querySelectorAll(".fi-select-input-badge-remove") .forEach((e) => { (e.setAttribute("disabled", "disabled"), e.classList.add("fi-disabled")); }), !this.isMultiple && this.canSelectPlaceholder) ) { let t = this.container.querySelector( ".fi-select-input-value-remove-btn", ); t && (t.setAttribute("disabled", "disabled"), t.classList.add("fi-disabled")); } this.isSearchable && this.searchInput && (this.searchInput.setAttribute("disabled", "disabled"), this.searchInput.classList.add("fi-disabled")); } else { if ( (this.selectButton.removeAttribute("disabled"), this.selectButton.removeAttribute("aria-disabled"), this.selectButton.classList.remove("fi-disabled"), this.isMultiple && this.container .querySelectorAll(".fi-select-input-badge-remove") .forEach((e) => { (e.removeAttribute("disabled"), e.classList.remove("fi-disabled")); }), !this.isMultiple && this.canSelectPlaceholder) ) { let t = this.container.querySelector( ".fi-select-input-value-remove-btn", ); t && (t.removeAttribute("disabled"), t.classList.add("fi-disabled")); } this.isSearchable && this.searchInput && (this.searchInput.removeAttribute("disabled"), this.searchInput.classList.remove("fi-disabled")); } } destroy() { (this.selectButton && this.buttonClickListener && this.selectButton.removeEventListener( "click", this.buttonClickListener, ), this.documentClickListener && document.removeEventListener( "click", this.documentClickListener, ), this.selectButton && this.buttonKeydownListener && this.selectButton.removeEventListener( "keydown", this.buttonKeydownListener, ), this.dropdown && this.dropdownKeydownListener && this.dropdown.removeEventListener( "keydown", this.dropdownKeydownListener, ), this.resizeListener && (window.removeEventListener("resize", this.resizeListener), (this.resizeListener = null)), this.scrollListener && (window.removeEventListener("scroll", this.scrollListener, !0), (this.scrollListener = null)), this.refreshOptionLabelListener && window.removeEventListener( "filament-forms::select.refreshSelectedOptionLabel", this.refreshOptionLabelListener, ), this.isOpen && this.closeDropdown(), this.searchTimeout && (clearTimeout(this.searchTimeout), (this.searchTimeout = null)), this.container && this.container.remove()); } }; function Qn({ canOptionLabelsWrap: n, canSelectPlaceholder: t, getOptionLabelUsing: e, getOptionLabelsUsing: i, getOptionsUsing: o, getSearchResultsUsing: s, hasDynamicOptions: r, hasDynamicSearchResults: a, hasInitialNoOptionsMessage: l, initialOptionLabel: c, initialOptionLabels: f, initialState: d, isAutofocused: p, isDisabled: u, isHtmlAllowed: g, isMultiple: m, isReorderable: S, isSearchable: E, livewireId: w, loadingMessage: D, maxItems: A, maxItemsMessage: C, noOptionsMessage: F, noSearchResultsMessage: q, options: J, optionsLimit: _, placeholder: V, position: W, searchDebounce: tt, searchingMessage: z, searchPrompt: k, searchableOptionFields: Y, state: B, statePath: X, }) { return { select: null, state: B, init() { ((this.select = new Ee({ canOptionLabelsWrap: n, canSelectPlaceholder: t, element: this.$refs.select, getOptionLabelUsing: e, getOptionLabelsUsing: i, getOptionsUsing: o, getSearchResultsUsing: s, hasDynamicOptions: r, hasDynamicSearchResults: a, hasInitialNoOptionsMessage: l, initialOptionLabel: c, initialOptionLabels: f, initialState: d, isAutofocused: p, isDisabled: u, isHtmlAllowed: g, isMultiple: m, isReorderable: S, isSearchable: E, livewireId: w, loadingMessage: D, maxItems: A, maxItemsMessage: C, noOptionsMessage: F, noSearchResultsMessage: q, onStateChange: (L) => { this.state = L; }, options: J, optionsLimit: _, placeholder: V, position: W, searchableOptionFields: Y, searchDebounce: tt, searchingMessage: z, searchPrompt: k, state: this.state, statePath: X, })), this.$watch("state", (L) => { this.$nextTick(() => { this.select && this.select.state !== L && ((this.select.state = L), this.select.updateSelectedDisplay(), this.select.renderOptions()); }); })); }, destroy() { this.select && (this.select.destroy(), (this.select = null)); }, }; } export { Qn as default }; /*! Bundled license information: sortablejs/modular/sortable.esm.js: (**! * Sortable 1.15.6 * @author RubaXa * @author owenm * @license MIT *) */