@lastfm-viewer/solid
Version:
A solidjs component to view recent scrobbles for a last.fm user
1,796 lines • 87.3 kB
JavaScript
var un = Object.defineProperty;
var fn = (e, t, n) => t in e ? un(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
var H = (e, t, n) => fn(e, typeof t != "symbol" ? t + "" : t, n);
import "./index.css";
const dn = !1, hn = (e, t) => e === t, G = Symbol("solid-proxy"), Qe = Symbol("solid-track"), _e = {
equals: hn
};
let Tt = jt;
const B = 1, Ie = 2, Ot = {
owned: null,
cleanups: null,
context: null,
owner: null
}, De = {};
var w = null;
let we = null, gn = null, x = null, O = null, U = null, Re = 0;
function Ve(e, t) {
const n = x, r = w, s = e.length === 0, o = r, i = s ? Ot : {
owned: null,
cleanups: null,
context: o ? o.context : null,
owner: o
}, c = s ? e : () => e(() => R(() => le(i)));
w = i, x = null;
try {
return D(c, !0);
} finally {
x = n, w = r;
}
}
function z(e, t) {
t = t ? Object.assign({}, _e, t) : _e;
const n = {
value: e,
observers: null,
observerSlots: null,
comparator: t.equals || void 0
}, r = (s) => (typeof s == "function" && (s = s(n.value)), Mt(n, s));
return [Rt.bind(n), r];
}
function it(e, t, n) {
const r = je(e, t, !0, B);
Z(r);
}
function S(e, t, n) {
const r = je(e, t, !1, B);
Z(r);
}
function pn(e, t, n) {
Tt = xn;
const r = je(e, t, !1, B);
r.user = !0, U ? U.push(r) : Z(r);
}
function M(e, t, n) {
n = n ? Object.assign({}, _e, n) : _e;
const r = je(e, t, !0, 0);
return r.observers = null, r.observerSlots = null, r.comparator = n.equals || void 0, Z(r), Rt.bind(r);
}
function yn(e) {
return e && typeof e == "object" && "then" in e;
}
function mn(e, t, n) {
let r, s, o;
r = !0, s = e, o = {};
let i = null, c = De, l = !1, a = "initialValue" in o, f = typeof r == "function" && M(r);
const u = /* @__PURE__ */ new Set(), [d, h] = (o.storage || z)(o.initialValue), [g, y] = z(void 0), [p, P] = z(void 0, {
equals: !1
}), [$, v] = z(a ? "ready" : "unresolved");
function m(A, k, j, L) {
return i === A && (i = null, L !== void 0 && (a = !0), (A === c || k === c) && o.onHydrated && queueMicrotask(() => o.onHydrated(L, {
value: k
})), c = De, N(k, j)), k;
}
function N(A, k) {
D(() => {
k === void 0 && h(() => A), v(k !== void 0 ? "errored" : a ? "ready" : "unresolved"), y(k);
for (const j of u.keys()) j.decrement();
u.clear();
}, !1);
}
function b() {
const A = An, k = d(), j = g();
if (j !== void 0 && !i) throw j;
return x && !x.user && A && it(() => {
p(), i && (A.resolved && we || u.has(A) || (A.increment(), u.add(A)));
}), k;
}
function E(A = !0) {
if (A !== !1 && l) return;
l = !1;
const k = f ? f() : r;
if (k == null || k === !1) {
m(i, R(d));
return;
}
let j;
const L = c !== De ? c : R(() => {
try {
return s(k, {
value: d(),
refetching: A
});
} catch (te) {
j = te;
}
});
if (j !== void 0) {
m(i, void 0, ve(j), k);
return;
} else if (!yn(L))
return m(i, L, void 0, k), L;
return i = L, "v" in L ? (L.s === 1 ? m(i, L.v, void 0, k) : m(i, void 0, ve(L.v), k), L) : (l = !0, queueMicrotask(() => l = !1), D(() => {
v(a ? "refreshing" : "pending"), P();
}, !1), L.then((te) => m(L, te, void 0, k), (te) => m(L, void 0, ve(te), k)));
}
Object.defineProperties(b, {
state: {
get: () => $()
},
error: {
get: () => g()
},
loading: {
get() {
const A = $();
return A === "pending" || A === "refreshing";
}
},
latest: {
get() {
if (!a) return b();
const A = g();
if (A && !i) throw A;
return d();
}
}
});
let q = w;
return f ? it(() => (q = w, E(!1))) : E(!1), [b, {
refetch: (A) => vn(q, () => E(A)),
mutate: h
}];
}
function bn(e) {
return D(e, !1);
}
function R(e) {
if (x === null) return e();
const t = x;
x = null;
try {
return e();
} finally {
x = t;
}
}
function Nt(e) {
return w === null || (w.cleanups === null ? w.cleanups = [e] : w.cleanups.push(e)), e;
}
function ze() {
return x;
}
function wn() {
return w;
}
function vn(e, t) {
const n = w, r = x;
w = e, x = null;
try {
return D(t, !0);
} catch (s) {
nt(s);
} finally {
w = n, x = r;
}
}
const [zs, Ks] = /* @__PURE__ */ z(!1);
function kn(e, t) {
const n = Symbol("context");
return {
id: n,
Provider: $n(n),
defaultValue: e
};
}
function Me(e) {
let t;
return w && w.context && (t = w.context[e.id]) !== void 0 ? t : e.defaultValue;
}
function Lt(e) {
const t = M(e), n = M(() => Ke(t()));
return n.toArray = () => {
const r = n();
return Array.isArray(r) ? r : r != null ? [r] : [];
}, n;
}
let An;
function Rt() {
if (this.sources && this.state)
if (this.state === B) Z(this);
else {
const e = O;
O = null, D(() => $e(this), !1), O = e;
}
if (x) {
const e = this.observers ? this.observers.length : 0;
x.sources ? (x.sources.push(this), x.sourceSlots.push(e)) : (x.sources = [this], x.sourceSlots = [e]), this.observers ? (this.observers.push(x), this.observerSlots.push(x.sources.length - 1)) : (this.observers = [x], this.observerSlots = [x.sources.length - 1]);
}
return this.value;
}
function Mt(e, t, n) {
let r = e.value;
return (!e.comparator || !e.comparator(r, t)) && (e.value = t, e.observers && e.observers.length && D(() => {
for (let s = 0; s < e.observers.length; s += 1) {
const o = e.observers[s], i = we && we.running;
i && we.disposed.has(o), (i ? !o.tState : !o.state) && (o.pure ? O.push(o) : U.push(o), o.observers && Ft(o)), i || (o.state = B);
}
if (O.length > 1e6)
throw O = [], new Error();
}, !1)), t;
}
function Z(e) {
if (!e.fn) return;
le(e);
const t = Re;
_n(e, e.value, t);
}
function _n(e, t, n) {
let r;
const s = w, o = x;
x = w = e;
try {
r = e.fn(t);
} catch (i) {
return e.pure && (e.state = B, e.owned && e.owned.forEach(le), e.owned = null), e.updatedAt = n + 1, nt(i);
} finally {
x = o, w = s;
}
(!e.updatedAt || e.updatedAt <= n) && (e.updatedAt != null && "observers" in e ? Mt(e, r) : e.value = r, e.updatedAt = n);
}
function je(e, t, n, r = B, s) {
const o = {
fn: e,
state: r,
updatedAt: null,
owned: null,
sources: null,
sourceSlots: null,
cleanups: null,
value: t,
owner: w,
context: w ? w.context : null,
pure: n
};
return w === null || w !== Ot && (w.owned ? w.owned.push(o) : w.owned = [o]), o;
}
function xe(e) {
if (e.state === 0) return;
if (e.state === Ie) return $e(e);
if (e.suspense && R(e.suspense.inFallback)) return e.suspense.effects.push(e);
const t = [e];
for (; (e = e.owner) && (!e.updatedAt || e.updatedAt < Re); )
e.state && t.push(e);
for (let n = t.length - 1; n >= 0; n--)
if (e = t[n], e.state === B)
Z(e);
else if (e.state === Ie) {
const r = O;
O = null, D(() => $e(e, t[0]), !1), O = r;
}
}
function D(e, t) {
if (O) return e();
let n = !1;
t || (O = []), U ? n = !0 : U = [], Re++;
try {
const r = e();
return In(n), r;
} catch (r) {
n || (U = null), O = null, nt(r);
}
}
function In(e) {
if (O && (jt(O), O = null), e) return;
const t = U;
U = null, t.length && D(() => Tt(t), !1);
}
function jt(e) {
for (let t = 0; t < e.length; t++) xe(e[t]);
}
function xn(e) {
let t, n = 0;
for (t = 0; t < e.length; t++) {
const r = e[t];
r.user ? e[n++] = r : xe(r);
}
for (t = 0; t < n; t++) xe(e[t]);
}
function $e(e, t) {
e.state = 0;
for (let n = 0; n < e.sources.length; n += 1) {
const r = e.sources[n];
if (r.sources) {
const s = r.state;
s === B ? r !== t && (!r.updatedAt || r.updatedAt < Re) && xe(r) : s === Ie && $e(r, t);
}
}
}
function Ft(e) {
for (let t = 0; t < e.observers.length; t += 1) {
const n = e.observers[t];
n.state || (n.state = Ie, n.pure ? O.push(n) : U.push(n), n.observers && Ft(n));
}
}
function le(e) {
let t;
if (e.sources)
for (; e.sources.length; ) {
const n = e.sources.pop(), r = e.sourceSlots.pop(), s = n.observers;
if (s && s.length) {
const o = s.pop(), i = n.observerSlots.pop();
r < s.length && (o.sourceSlots[i] = r, s[r] = o, n.observerSlots[r] = i);
}
}
if (e.tOwned) {
for (t = e.tOwned.length - 1; t >= 0; t--) le(e.tOwned[t]);
delete e.tOwned;
}
if (e.owned) {
for (t = e.owned.length - 1; t >= 0; t--) le(e.owned[t]);
e.owned = null;
}
if (e.cleanups) {
for (t = e.cleanups.length - 1; t >= 0; t--) e.cleanups[t]();
e.cleanups = null;
}
e.state = 0;
}
function ve(e) {
return e instanceof Error ? e : new Error(typeof e == "string" ? e : "Unknown error", {
cause: e
});
}
function nt(e, t = w) {
throw ve(e);
}
function Ke(e) {
if (typeof e == "function" && !e.length) return Ke(e());
if (Array.isArray(e)) {
const t = [];
for (let n = 0; n < e.length; n++) {
const r = Ke(e[n]);
Array.isArray(r) ? t.push.apply(t, r) : t.push(r);
}
return t;
}
return e;
}
function $n(e, t) {
return function(r) {
let s;
return S(() => s = R(() => (w.context = {
...w.context,
[e]: r.value
}, Lt(() => r.children))), void 0), s;
};
}
const Cn = Symbol("fallback");
function ct(e) {
for (let t = 0; t < e.length; t++) e[t]();
}
function Sn(e, t, n = {}) {
let r = [], s = [], o = [], i = 0, c = t.length > 1 ? [] : null;
return Nt(() => ct(o)), () => {
let l = e() || [], a = l.length, f, u;
return l[Qe], R(() => {
let h, g, y, p, P, $, v, m, N;
if (a === 0)
i !== 0 && (ct(o), o = [], r = [], s = [], i = 0, c && (c = [])), n.fallback && (r = [Cn], s[0] = Ve((b) => (o[0] = b, n.fallback())), i = 1);
else if (i === 0) {
for (s = new Array(a), u = 0; u < a; u++)
r[u] = l[u], s[u] = Ve(d);
i = a;
} else {
for (y = new Array(a), p = new Array(a), c && (P = new Array(a)), $ = 0, v = Math.min(i, a); $ < v && r[$] === l[$]; $++) ;
for (v = i - 1, m = a - 1; v >= $ && m >= $ && r[v] === l[m]; v--, m--)
y[m] = s[v], p[m] = o[v], c && (P[m] = c[v]);
for (h = /* @__PURE__ */ new Map(), g = new Array(m + 1), u = m; u >= $; u--)
N = l[u], f = h.get(N), g[u] = f === void 0 ? -1 : f, h.set(N, u);
for (f = $; f <= v; f++)
N = r[f], u = h.get(N), u !== void 0 && u !== -1 ? (y[u] = s[f], p[u] = o[f], c && (P[u] = c[f]), u = g[u], h.set(N, u)) : o[f]();
for (u = $; u < a; u++)
u in y ? (s[u] = y[u], o[u] = p[u], c && (c[u] = P[u], c[u](u))) : s[u] = Ve(d);
s = s.slice(0, i = a), r = l.slice(0);
}
return s;
});
function d(h) {
if (o[u] = h, c) {
const [g, y] = z(u);
return c[u] = y, t(l[u], g);
}
return t(l[u]);
}
};
}
function _(e, t) {
return R(() => e(t || {}));
}
const Ut = (e) => `Stale read from <${e}>.`;
function Pn(e) {
const t = "fallback" in e && {
fallback: () => e.fallback
};
return M(Sn(() => e.each, e.children, t || void 0));
}
function Ce(e) {
const t = e.keyed, n = M(() => e.when, void 0, void 0), r = t ? n : M(n, void 0, {
equals: (s, o) => !s == !o
});
return M(() => {
const s = r();
if (s) {
const o = e.children;
return typeof o == "function" && o.length > 0 ? R(() => o(t ? s : () => {
if (!R(r)) throw Ut("Show");
return n();
})) : o;
}
return e.fallback;
}, void 0, void 0);
}
function En(e) {
const t = Lt(() => e.children), n = M(() => {
const r = t(), s = Array.isArray(r) ? r : [r];
let o = () => {
};
for (let i = 0; i < s.length; i++) {
const c = i, l = s[i], a = o, f = M(() => a() ? void 0 : l.when, void 0, void 0), u = l.keyed ? f : M(f, void 0, {
equals: (d, h) => !d == !h
});
o = () => a() || (u() ? [c, f, l] : void 0);
}
return o;
});
return M(() => {
const r = n()();
if (!r) return e.fallback;
const [s, o, i] = r, c = i.children;
return typeof c == "function" && c.length > 0 ? R(() => c(i.keyed ? o() : () => {
var a;
if (((a = R(n)()) == null ? void 0 : a[0]) !== s) throw Ut("Match");
return o();
})) : c;
}, void 0, void 0);
}
function lt(e) {
return e;
}
const Tn = ["allowfullscreen", "async", "autofocus", "autoplay", "checked", "controls", "default", "disabled", "formnovalidate", "hidden", "indeterminate", "inert", "ismap", "loop", "multiple", "muted", "nomodule", "novalidate", "open", "playsinline", "readonly", "required", "reversed", "seamless", "selected"], On = /* @__PURE__ */ new Set(["className", "value", "readOnly", "noValidate", "formNoValidate", "isMap", "noModule", "playsInline", ...Tn]), Nn = /* @__PURE__ */ new Set(["innerHTML", "textContent", "innerText", "children"]), Ln = /* @__PURE__ */ Object.assign(/* @__PURE__ */ Object.create(null), {
className: "class",
htmlFor: "for"
}), Rn = /* @__PURE__ */ Object.assign(/* @__PURE__ */ Object.create(null), {
class: "className",
novalidate: {
$: "noValidate",
FORM: 1
},
formnovalidate: {
$: "formNoValidate",
BUTTON: 1,
INPUT: 1
},
ismap: {
$: "isMap",
IMG: 1
},
nomodule: {
$: "noModule",
SCRIPT: 1
},
playsinline: {
$: "playsInline",
VIDEO: 1
},
readonly: {
$: "readOnly",
INPUT: 1,
TEXTAREA: 1
}
});
function Mn(e, t) {
const n = Rn[e];
return typeof n == "object" ? n[t] ? n.$ : void 0 : n;
}
const jn = /* @__PURE__ */ new Set(["beforeinput", "click", "dblclick", "contextmenu", "focusin", "focusout", "input", "keydown", "keyup", "mousedown", "mousemove", "mouseout", "mouseover", "mouseup", "pointerdown", "pointermove", "pointerout", "pointerover", "pointerup", "touchend", "touchmove", "touchstart"]), ie = (e) => M(() => e());
function Fn(e, t, n) {
let r = n.length, s = t.length, o = r, i = 0, c = 0, l = t[s - 1].nextSibling, a = null;
for (; i < s || c < o; ) {
if (t[i] === n[c]) {
i++, c++;
continue;
}
for (; t[s - 1] === n[o - 1]; )
s--, o--;
if (s === i) {
const f = o < r ? c ? n[c - 1].nextSibling : n[o - c] : l;
for (; c < o; ) e.insertBefore(n[c++], f);
} else if (o === c)
for (; i < s; )
(!a || !a.has(t[i])) && t[i].remove(), i++;
else if (t[i] === n[o - 1] && n[c] === t[s - 1]) {
const f = t[--s].nextSibling;
e.insertBefore(n[c++], t[i++].nextSibling), e.insertBefore(n[--o], f), t[s] = n[o];
} else {
if (!a) {
a = /* @__PURE__ */ new Map();
let u = c;
for (; u < o; ) a.set(n[u], u++);
}
const f = a.get(t[i]);
if (f != null)
if (c < f && f < o) {
let u = i, d = 1, h;
for (; ++u < s && u < o && !((h = a.get(t[u])) == null || h !== f + d); )
d++;
if (d > f - c) {
const g = t[i];
for (; c < f; ) e.insertBefore(n[c++], g);
} else e.replaceChild(n[c++], t[i++]);
} else i++;
else t[i++].remove();
}
}
}
const at = "_$DX_DELEGATE";
function C(e, t, n, r) {
let s;
const o = () => {
const c = r ? document.createElementNS("http://www.w3.org/1998/Math/MathML", "template") : document.createElement("template");
return c.innerHTML = e, n ? c.content.firstChild.firstChild : r ? c.firstChild : c.content.firstChild;
}, i = t ? () => R(() => document.importNode(s || (s = o()), !0)) : () => (s || (s = o())).cloneNode(!0);
return i.cloneNode = i, i;
}
function Un(e, t = window.document) {
const n = t[at] || (t[at] = /* @__PURE__ */ new Set());
for (let r = 0, s = e.length; r < s; r++) {
const o = e[r];
n.has(o) || (n.add(o), t.addEventListener(o, Gn));
}
}
function T(e, t, n) {
n == null ? e.removeAttribute(t) : e.setAttribute(t, n);
}
function Dn(e, t, n) {
n ? e.setAttribute(t, "") : e.removeAttribute(t);
}
function Dt(e, t) {
t == null ? e.removeAttribute("class") : e.className = t;
}
function Vn(e, t, n, r) {
if (r)
Array.isArray(n) ? (e[`$$${t}`] = n[0], e[`$$${t}Data`] = n[1]) : e[`$$${t}`] = n;
else if (Array.isArray(n)) {
const s = n[0];
e.addEventListener(t, n[0] = (o) => s.call(e, n[1], o));
} else e.addEventListener(t, n, typeof n != "function" && n);
}
function Bn(e, t, n = {}) {
const r = Object.keys(t || {}), s = Object.keys(n);
let o, i;
for (o = 0, i = s.length; o < i; o++) {
const c = s[o];
!c || c === "undefined" || t[c] || (ut(e, c, !1), delete n[c]);
}
for (o = 0, i = r.length; o < i; o++) {
const c = r[o], l = !!t[c];
!c || c === "undefined" || n[c] === l || !l || (ut(e, c, !0), n[c] = l);
}
return n;
}
function qn(e, t, n) {
if (!t) return n ? T(e, "style") : t;
const r = e.style;
if (typeof t == "string") return r.cssText = t;
typeof n == "string" && (r.cssText = n = void 0), n || (n = {}), t || (t = {});
let s, o;
for (o in n)
t[o] == null && r.removeProperty(o), delete n[o];
for (o in t)
s = t[o], s !== n[o] && (r.setProperty(o, s), n[o] = s);
return n;
}
function Hn(e, t = {}, n, r) {
const s = {};
return S(() => s.children = ae(e, t.children, s.children)), S(() => typeof t.ref == "function" && Qn(t.ref, e)), S(() => zn(e, t, n, !0, s, !0)), s;
}
function Qn(e, t, n) {
return R(() => e(t, n));
}
function I(e, t, n, r) {
if (n !== void 0 && !r && (r = []), typeof t != "function") return ae(e, t, r, n);
S((s) => ae(e, t(), s, n), r);
}
function zn(e, t, n, r, s = {}, o = !1) {
t || (t = {});
for (const i in s)
if (!(i in t)) {
if (i === "children") continue;
s[i] = ft(e, i, null, s[i], n, o, t);
}
for (const i in t) {
if (i === "children")
continue;
const c = t[i];
s[i] = ft(e, i, c, s[i], n, o, t);
}
}
function Kn(e) {
return e.toLowerCase().replace(/-([a-z])/g, (t, n) => n.toUpperCase());
}
function ut(e, t, n) {
const r = t.trim().split(/\s+/);
for (let s = 0, o = r.length; s < o; s++) e.classList.toggle(r[s], n);
}
function ft(e, t, n, r, s, o, i) {
let c, l, a, f, u;
if (t === "style") return qn(e, n, r);
if (t === "classList") return Bn(e, n, r);
if (n === r) return r;
if (t === "ref")
o || n(e);
else if (t.slice(0, 3) === "on:") {
const d = t.slice(3);
r && e.removeEventListener(d, r, typeof r != "function" && r), n && e.addEventListener(d, n, typeof n != "function" && n);
} else if (t.slice(0, 10) === "oncapture:") {
const d = t.slice(10);
r && e.removeEventListener(d, r, !0), n && e.addEventListener(d, n, !0);
} else if (t.slice(0, 2) === "on") {
const d = t.slice(2).toLowerCase(), h = jn.has(d);
if (!h && r) {
const g = Array.isArray(r) ? r[0] : r;
e.removeEventListener(d, g);
}
(h || n) && (Vn(e, d, n, h), h && Un([d]));
} else t.slice(0, 5) === "attr:" ? T(e, t.slice(5), n) : t.slice(0, 5) === "bool:" ? Dn(e, t.slice(5), n) : (u = t.slice(0, 5) === "prop:") || (a = Nn.has(t)) || (f = Mn(t, e.tagName)) || (l = On.has(t)) || (c = e.nodeName.includes("-") || "is" in i) ? (u && (t = t.slice(5), l = !0), t === "class" || t === "className" ? Dt(e, n) : c && !l && !a ? e[Kn(t)] = n : e[f || t] = n) : T(e, Ln[t] || t, n);
return n;
}
function Gn(e) {
let t = e.target;
const n = `$$${e.type}`, r = e.target, s = e.currentTarget, o = (l) => Object.defineProperty(e, "target", {
configurable: !0,
value: l
}), i = () => {
const l = t[n];
if (l && !t.disabled) {
const a = t[`${n}Data`];
if (a !== void 0 ? l.call(t, a, e) : l.call(t, e), e.cancelBubble) return;
}
return t.host && typeof t.host != "string" && !t.host._$host && t.contains(e.target) && o(t.host), !0;
}, c = () => {
for (; i() && (t = t._$host || t.parentNode || t.host); ) ;
};
if (Object.defineProperty(e, "currentTarget", {
configurable: !0,
get() {
return t || document;
}
}), e.composedPath) {
const l = e.composedPath();
o(l[0]);
for (let a = 0; a < l.length - 2 && (t = l[a], !!i()); a++) {
if (t._$host) {
t = t._$host, c();
break;
}
if (t.parentNode === s)
break;
}
} else c();
o(r);
}
function ae(e, t, n, r, s) {
for (; typeof n == "function"; ) n = n();
if (t === n) return n;
const o = typeof t, i = r !== void 0;
if (e = i && n[0] && n[0].parentNode || e, o === "string" || o === "number") {
if (o === "number" && (t = t.toString(), t === n))
return n;
if (i) {
let c = n[0];
c && c.nodeType === 3 ? c.data !== t && (c.data = t) : c = document.createTextNode(t), n = W(e, n, r, c);
} else
n !== "" && typeof n == "string" ? n = e.firstChild.data = t : n = e.textContent = t;
} else if (t == null || o === "boolean")
n = W(e, n, r);
else {
if (o === "function")
return S(() => {
let c = t();
for (; typeof c == "function"; ) c = c();
n = ae(e, c, n, r);
}), () => n;
if (Array.isArray(t)) {
const c = [], l = n && Array.isArray(n);
if (Ge(c, t, n, s))
return S(() => n = ae(e, c, n, r, !0)), () => n;
if (c.length === 0) {
if (n = W(e, n, r), i) return n;
} else l ? n.length === 0 ? dt(e, c, r) : Fn(e, n, c) : (n && W(e), dt(e, c));
n = c;
} else if (t.nodeType) {
if (Array.isArray(n)) {
if (i) return n = W(e, n, r, t);
W(e, n, null, t);
} else n == null || n === "" || !e.firstChild ? e.appendChild(t) : e.replaceChild(t, e.firstChild);
n = t;
}
}
return n;
}
function Ge(e, t, n, r) {
let s = !1;
for (let o = 0, i = t.length; o < i; o++) {
let c = t[o], l = n && n[e.length], a;
if (!(c == null || c === !0 || c === !1)) if ((a = typeof c) == "object" && c.nodeType)
e.push(c);
else if (Array.isArray(c))
s = Ge(e, c, l) || s;
else if (a === "function")
if (r) {
for (; typeof c == "function"; ) c = c();
s = Ge(e, Array.isArray(c) ? c : [c], Array.isArray(l) ? l : [l]) || s;
} else
e.push(c), s = !0;
else {
const f = String(c);
l && l.nodeType === 3 && l.data === f ? e.push(l) : e.push(document.createTextNode(f));
}
}
return s;
}
function dt(e, t, n = null) {
for (let r = 0, s = t.length; r < s; r++) e.insertBefore(t[r], n);
}
function W(e, t, n, r) {
if (n === void 0) return e.textContent = "";
const s = r || document.createTextNode("");
if (t.length) {
let o = !1;
for (let i = t.length - 1; i >= 0; i--) {
const c = t[i];
if (s !== c) {
const l = c.parentNode === e;
!o && !i ? l ? e.replaceChild(s, c) : e.insertBefore(s, n) : l && c.remove();
} else o = !0;
}
} else e.insertBefore(s, n);
return [s];
}
const We = Symbol("store-raw"), Y = Symbol("store-node"), F = Symbol("store-has"), Vt = Symbol("store-self");
function Bt(e) {
let t = e[G];
if (!t && (Object.defineProperty(e, G, {
value: t = new Proxy(e, Xn)
}), !Array.isArray(e))) {
const n = Object.keys(e), r = Object.getOwnPropertyDescriptors(e);
for (let s = 0, o = n.length; s < o; s++) {
const i = n[s];
r[i].get && Object.defineProperty(e, i, {
enumerable: r[i].enumerable,
get: r[i].get.bind(t)
});
}
}
return t;
}
function Se(e) {
let t;
return e != null && typeof e == "object" && (e[G] || !(t = Object.getPrototypeOf(e)) || t === Object.prototype || Array.isArray(e));
}
function ue(e, t = /* @__PURE__ */ new Set()) {
let n, r, s, o;
if (n = e != null && e[We]) return n;
if (!Se(e) || t.has(e)) return e;
if (Array.isArray(e)) {
Object.isFrozen(e) ? e = e.slice(0) : t.add(e);
for (let i = 0, c = e.length; i < c; i++)
s = e[i], (r = ue(s, t)) !== s && (e[i] = r);
} else {
Object.isFrozen(e) ? e = Object.assign({}, e) : t.add(e);
const i = Object.keys(e), c = Object.getOwnPropertyDescriptors(e);
for (let l = 0, a = i.length; l < a; l++)
o = i[l], !c[o].get && (s = e[o], (r = ue(s, t)) !== s && (e[o] = r));
}
return e;
}
function Pe(e, t) {
let n = e[t];
return n || Object.defineProperty(e, t, {
value: n = /* @__PURE__ */ Object.create(null)
}), n;
}
function fe(e, t, n) {
if (e[t]) return e[t];
const [r, s] = z(n, {
equals: !1,
internal: !0
});
return r.$ = s, e[t] = r;
}
function Wn(e, t) {
const n = Reflect.getOwnPropertyDescriptor(e, t);
return !n || n.get || !n.configurable || t === G || t === Y || (delete n.value, delete n.writable, n.get = () => e[G][t]), n;
}
function qt(e) {
ze() && fe(Pe(e, Y), Vt)();
}
function Jn(e) {
return qt(e), Reflect.ownKeys(e);
}
const Xn = {
get(e, t, n) {
if (t === We) return e;
if (t === G) return n;
if (t === Qe)
return qt(e), n;
const r = Pe(e, Y), s = r[t];
let o = s ? s() : e[t];
if (t === Y || t === F || t === "__proto__") return o;
if (!s) {
const i = Object.getOwnPropertyDescriptor(e, t);
ze() && (typeof o != "function" || e.hasOwnProperty(t)) && !(i && i.get) && (o = fe(r, t, o)());
}
return Se(o) ? Bt(o) : o;
},
has(e, t) {
return t === We || t === G || t === Qe || t === Y || t === F || t === "__proto__" ? !0 : (ze() && fe(Pe(e, F), t)(), t in e);
},
set() {
return !0;
},
deleteProperty() {
return !0;
},
ownKeys: Jn,
getOwnPropertyDescriptor: Wn
};
function Ee(e, t, n, r = !1) {
if (!r && e[t] === n) return;
const s = e[t], o = e.length;
n === void 0 ? (delete e[t], e[F] && e[F][t] && s !== void 0 && e[F][t].$()) : (e[t] = n, e[F] && e[F][t] && s === void 0 && e[F][t].$());
let i = Pe(e, Y), c;
if ((c = fe(i, t, s)) && c.$(() => n), Array.isArray(e) && e.length !== o) {
for (let l = e.length; l < o; l++) (c = i[l]) && c.$();
(c = fe(i, "length", o)) && c.$(e.length);
}
(c = i[Vt]) && c.$();
}
function Ht(e, t) {
const n = Object.keys(t);
for (let r = 0; r < n.length; r += 1) {
const s = n[r];
Ee(e, s, t[s]);
}
}
function Yn(e, t) {
if (typeof t == "function" && (t = t(e)), t = ue(t), Array.isArray(t)) {
if (e === t) return;
let n = 0, r = t.length;
for (; n < r; n++) {
const s = t[n];
e[n] !== s && Ee(e, n, s);
}
Ee(e, "length", r);
} else Ht(e, t);
}
function oe(e, t, n = []) {
let r, s = e;
if (t.length > 1) {
r = t.shift();
const i = typeof r, c = Array.isArray(e);
if (Array.isArray(r)) {
for (let l = 0; l < r.length; l++)
oe(e, [r[l]].concat(t), n);
return;
} else if (c && i === "function") {
for (let l = 0; l < e.length; l++)
r(e[l], l) && oe(e, [l].concat(t), n);
return;
} else if (c && i === "object") {
const {
from: l = 0,
to: a = e.length - 1,
by: f = 1
} = r;
for (let u = l; u <= a; u += f)
oe(e, [u].concat(t), n);
return;
} else if (t.length > 1) {
oe(e[r], t, [r].concat(n));
return;
}
s = e[r], n = [r].concat(n);
}
let o = t[0];
typeof o == "function" && (o = o(s, n), o === s) || r === void 0 && o == null || (o = ue(o), r === void 0 || Se(s) && Se(o) && !Array.isArray(o) ? Ht(s, o) : Ee(e, r, o));
}
function Zn(...[e, t]) {
const n = ue(e || {}), r = Array.isArray(n), s = Bt(n);
function o(...i) {
bn(() => {
r && i.length === 1 ? Yn(n, i[0]) : oe(n, i);
});
}
return [s, o];
}
const er = (e) => Math.floor(e / 1e3 / 60), tr = (e) => Math.floor(e / 1e3 % 60).toLocaleString(void 0, {
minimumIntegerDigits: 2
}), nr = async (e) => new Promise((t) => setTimeout(t, e));
function rr(e, t, n) {
e = e / 255, t = t / 255, n = n / 255;
const r = Math.max(e, t, n), s = Math.min(e, t, n);
let o = (r + s) / 2, i = 0, c = 0;
if (r == s)
i = 0, c = 0;
else {
const l = r - s;
switch (c = l / (1 - Math.abs(2 * o - 1)), r) {
case e:
i = (t - n) / l, i = (t - n) / l % 6, i = (t - n) / l + (t < n ? 6 : 0);
break;
case t:
i = (n - e) / l + 2;
break;
case n:
i = (e - t) / l + 4;
break;
}
}
return i = Math.round(i * 60), c = Math.round(c * 100), o = Math.round(o * 100), [i, c, o];
}
function sr(e, t, n, r, s) {
return r + (e - t) * (s - r) / (n - t);
}
var or = (e) => typeof e == "string" ? e : e.src, ir = ({
amount: e = 3,
format: t = "array",
group: n = 20,
sample: r = 10
} = {}) => ({
amount: e,
format: t,
group: n,
sample: r
}), cr = (e, t) => {
var n = e.map((r) => {
var s = Array.isArray(r) ? r : r.split(",").map(Number);
return t.format === "hex" ? lr(s) : s;
});
return t.amount === 1 || n.length === 1 ? n[0] : n;
}, lr = (e) => "#" + e.map((t) => {
var n = t.toString(16);
return n.length === 1 ? "0" + n : n;
}).join(""), ar = (e) => new Promise((t, n) => {
var r = document.createElement("canvas"), s = r.getContext("2d"), o = new Image();
o.onload = () => {
r.height = o.height, r.width = o.width, s.drawImage(o, 0, 0);
var i = s.getImageData(0, 0, o.width, o.height).data;
t(i);
}, o.onerror = () => n(Error("Image loading failed.")), o.crossOrigin = "", o.src = e;
}), ur = (e, t) => {
for (var n = 4 * t.sample, r = e.length / n, s = {
r: 0,
g: 0,
b: 0
}, o = 0; o < e.length; o += n)
s.r += e[o], s.g += e[o + 1], s.b += e[o + 2];
return cr([[Math.round(s.r / r), Math.round(s.g / r), Math.round(s.b / r)]], t);
}, fr = (e, t, n) => new Promise((r, s) => ar(or(t)).then((o) => r(e(o, ir(n)))).catch((o) => s(o))), dr = (e, t) => fr(ur, e, t);
class Q extends Error {
constructor(t, n) {
super(t), this.code = n, this.name = "LastFMError";
}
}
class Te extends Error {
constructor(t, n) {
super(t), this.code = n, this.name = "MusicBrainzError";
}
}
class ht extends Error {
constructor(t, n) {
super(t), this.code = n, this.name = "CoverArtError";
}
}
class ee extends Error {
constructor(t, n, r) {
super(t), this.status = n, this.code = r, this.name = "APIError";
}
}
async function ge(e) {
if (!e.ok) {
const t = await e.json();
throw new ee(t.error, e.status);
}
return e.json();
}
const pe = "https://lastfm-viewer-api.cloudflare-untying955.workers.dev/api/lastfm", hr = async (e, t, n) => {
try {
const r = `${pe}/mb-releases?track=${encodeURIComponent(e)}&artist=${encodeURIComponent(t)}${n ? `&album=${encodeURIComponent(n)}` : ""}`, s = await fetch(r);
return await ge(s);
} catch (r) {
throw r instanceof ee ? new Te(r.message, r.code) : new Te(
"Failed to fetch MusicBrainz releases",
"MB_FETCH_ERROR"
);
}
}, gr = async (e) => {
try {
const t = await fetch(`${pe}/mb-release/${e}`);
return await ge(t);
} catch (t) {
throw t instanceof ee ? new Te(t.message, t.code) : new Te(
"Failed to fetch MusicBrainz release info",
"MB_INFO_ERROR"
);
}
}, pr = async (e) => {
try {
const t = await fetch(`${pe}/cover-art/${e}`);
return await ge(t);
} catch (t) {
throw t instanceof ee ? new ht(t.message, t.code) : new ht("Failed to fetch cover art", "COVER_ART_ERROR");
}
}, yr = async (e, t = 5) => {
try {
const n = await fetch(
`${pe}/user-tracks/${e}?limit=${t}`
);
return await ge(n);
} catch (n) {
throw n instanceof ee ? new Q(n.message, n.code) : new Q(
"Failed to fetch user tracks",
"USER_TRACKS_ERROR"
);
}
}, mr = async (e, t) => {
try {
const n = `${pe}/track-info?track=${encodeURIComponent(e)}&artist=${encodeURIComponent(t)}`, r = await fetch(n), s = await ge(r);
if (!(s.track.album && s.track.album.image[3]["#text"]))
throw new Q(
"No Last.fm album for this track",
"NO_ALBUM_ERROR"
);
return s;
} catch (n) {
throw n instanceof Q ? n : n instanceof ee ? new Q(n.message, n.code) : new Q("Failed to fetch track info", "TRACK_INFO_ERROR");
}
}, J = /* @__PURE__ */ new Map(), br = async (e) => {
var t, n, r, s;
try {
const o = await yr(e, 5), i = o.recenttracks.track[0];
if (!i)
throw new Q(
"No recent tracks found for this user",
"NO_RECENT_TRACKS_ERROR"
);
const c = i.name, l = J.get(`${e}-${c}`);
if (l) return l;
const a = i.artist["#text"], f = i && "@attr" in i && ((t = i["@attr"]) == null ? void 0 : t.nowplaying) === "true", u = o.recenttracks.track;
try {
const d = await mr(c, a), h = (n = d.track.album) == null ? void 0 : n.title, g = parseInt(d.track.duration), y = (r = d.track.album) == null ? void 0 : r.image[3]["#text"], p = await ne(y), P = {
trackName: c,
artistName: a,
albumTitle: h,
imageUrl: y,
colors: p,
nowplaying: f,
pastTracks: u,
duration: g
};
return J.set(`${e}-${c}`, P), P;
} catch (d) {
d instanceof Q && d.code === "NO_ALBUM_ERROR" ? console.warn("LastFM track info fetch failed:", d.message) : console.error("LastFM track info fetch failed:", d);
try {
const h = await hr(
c,
a
);
if (!h) {
const y = {
trackName: c,
artistName: a,
albumTitle: void 0,
imageUrl: void 0,
colors: await ne(void 0),
nowplaying: f,
pastTracks: u,
duration: 0
};
return J.set(`${e}-${c}`, y), y;
}
for (const y of h) {
try {
const p = await gr(y.id);
if (p["cover-art-archive"].front || p["cover-art-archive"].artwork || p["cover-art-archive"].back) {
const $ = await pr(y.id);
if (!((s = $[0]) != null && s.thumbnails[250])) continue;
const v = $[0].thumbnails[250], m = await ne(v), N = {
trackName: c,
artistName: a,
albumTitle: y.title,
imageUrl: v,
colors: m,
nowplaying: f,
pastTracks: u,
duration: 0
};
return J.set(`${e}-${c}`, N), N;
}
} catch (p) {
console.warn(
`Failed to fetch cover art for release ${y.id}:`,
p
);
continue;
}
await nr(1e3);
}
const g = {
trackName: c,
artistName: a,
albumTitle: void 0,
imageUrl: void 0,
colors: await ne(void 0),
nowplaying: f,
pastTracks: u,
duration: 0
};
return J.set(`${e}-${c}`, g), g;
} catch (h) {
console.error("MusicBrainz fallback failed:", h);
const g = {
trackName: c,
artistName: a,
albumTitle: void 0,
imageUrl: void 0,
colors: await ne(void 0),
nowplaying: f,
pastTracks: u,
duration: 0
};
return J.set(`${e}-${c}`, g), g;
}
}
} catch (o) {
return console.error("Failed to fetch latest track:", o), o instanceof Error ? o : new Error("Unknown error occurred");
}
}, ne = async (e) => {
let t = {
primary: "var(--default-primary)",
secondary: "var(--default-secondary)",
accent: "var(--default-accent)",
coverShadowColor: "var(--default-cover-shadow-color)"
};
if (!e) return t;
const n = await dr(e, {
amount: 1,
sample: 50
}), r = rr(n[0], n[1], n[2]), s = r[0], o = r[1], i = sr(r[2], 0, 100, 0, 30), c = 100 - i, l = i * 1.8, a = `hsl(${s}, ${o}%, ${i}%)`, f = `hsl(${s}, ${o}%, ${c}%)`, u = `hsl(${s}, ${o}%, ${l}%)`, d = `hsla(${s}, ${o}%, ${c}%, 0.5)`;
return t = {
primary: a,
secondary: f,
accent: u,
coverShadowColor: d
}, t;
}, wr = ({
user: e,
updateInterval: t
}) => {
const [n, {
refetch: r
}] = mn(i), [s, o] = Zn({
track: {
trackName: "",
artistName: "",
albumTitle: "",
imageUrl: void 0,
nowplaying: !1,
colors: {
primary: "",
secondary: "",
accent: "",
coverShadowColor: ""
},
pastTracks: [],
duration: 0
},
colors: void 0,
loading: !0,
message: void 0
});
async function i(c, {
value: l
}) {
const a = await br(e), f = a instanceof Error ? "" : a.trackName, u = l && !(l instanceof Error) ? l.trackName : "", d = c && f == u;
return a instanceof Error ? o((h) => ({
...h,
message: a.message,
loading: n.loading,
track: a
})) : d || o((h) => ({
...h,
colors: a.colors,
track: a,
loading: !1
})), a;
}
return pn(() => {
let c;
const a = t ? Math.max(t, 2e3) : void 0;
t && t < 2e3 && console.warn("updateInterval is too low. Using minimum allowed value of 2000ms to prevent rate limiting."), a && (c = setInterval(() => {
r();
}, a)), Nt(() => {
c && clearInterval(c);
});
}), s;
};
/**
* (c) Iconify
*
* For the full copyright and license information, please view the license.txt
* files at https://github.com/iconify/iconify
*
* Licensed under MIT.
*
* @license MIT
* @version 2.3.0
*/
const Qt = Object.freeze(
{
left: 0,
top: 0,
width: 16,
height: 16
}
), Oe = Object.freeze({
rotate: 0,
vFlip: !1,
hFlip: !1
}), ye = Object.freeze({
...Qt,
...Oe
}), Je = Object.freeze({
...ye,
body: "",
hidden: !1
}), vr = Object.freeze({
width: null,
height: null
}), zt = Object.freeze({
// Dimensions
...vr,
// Transformations
...Oe
});
function kr(e, t = 0) {
const n = e.replace(/^-?[0-9.]*/, "");
function r(s) {
for (; s < 0; )
s += 4;
return s % 4;
}
if (n === "") {
const s = parseInt(e);
return isNaN(s) ? 0 : r(s);
} else if (n !== e) {
let s = 0;
switch (n) {
case "%":
s = 25;
break;
case "deg":
s = 90;
}
if (s) {
let o = parseFloat(e.slice(0, e.length - n.length));
return isNaN(o) ? 0 : (o = o / s, o % 1 === 0 ? r(o) : 0);
}
}
return t;
}
const Ar = /[\s,]+/;
function _r(e, t) {
t.split(Ar).forEach((n) => {
switch (n.trim()) {
case "horizontal":
e.hFlip = !0;
break;
case "vertical":
e.vFlip = !0;
break;
}
});
}
const Kt = {
...zt,
preserveAspectRatio: ""
};
function gt(e) {
const t = {
...Kt
}, n = (r, s) => e.getAttribute(r) || s;
return t.width = n("width", null), t.height = n("height", null), t.rotate = kr(n("rotate", "")), _r(t, n("flip", "")), t.preserveAspectRatio = n("preserveAspectRatio", n("preserveaspectratio", "")), t;
}
function Ir(e, t) {
for (const n in Kt)
if (e[n] !== t[n])
return !0;
return !1;
}
const Gt = /^[a-z0-9]+(-[a-z0-9]+)*$/, me = (e, t, n, r = "") => {
const s = e.split(":");
if (e.slice(0, 1) === "@") {
if (s.length < 2 || s.length > 3)
return null;
r = s.shift().slice(1);
}
if (s.length > 3 || !s.length)
return null;
if (s.length > 1) {
const c = s.pop(), l = s.pop(), a = {
// Allow provider without '@': "provider:prefix:name"
provider: s.length > 0 ? s[0] : r,
prefix: l,
name: c
};
return t && !ke(a) ? null : a;
}
const o = s[0], i = o.split("-");
if (i.length > 1) {
const c = {
provider: r,
prefix: i.shift(),
name: i.join("-")
};
return t && !ke(c) ? null : c;
}
if (n && r === "") {
const c = {
provider: r,
prefix: "",
name: o
};
return t && !ke(c, n) ? null : c;
}
return null;
}, ke = (e, t) => e ? !!// Check prefix: cannot be empty, unless allowSimpleName is enabled
// Check name: cannot be empty
((t && e.prefix === "" || e.prefix) && e.name) : !1;
function xr(e, t) {
const n = {};
!e.hFlip != !t.hFlip && (n.hFlip = !0), !e.vFlip != !t.vFlip && (n.vFlip = !0);
const r = ((e.rotate || 0) + (t.rotate || 0)) % 4;
return r && (n.rotate = r), n;
}
function pt(e, t) {
const n = xr(e, t);
for (const r in Je)
r in Oe ? r in e && !(r in n) && (n[r] = Oe[r]) : r in t ? n[r] = t[r] : r in e && (n[r] = e[r]);
return n;
}
function $r(e, t) {
const n = e.icons, r = e.aliases || /* @__PURE__ */ Object.create(null), s = /* @__PURE__ */ Object.create(null);
function o(i) {
if (n[i])
return s[i] = [];
if (!(i in s)) {
s[i] = null;
const c = r[i] && r[i].parent, l = c && o(c);
l && (s[i] = [c].concat(l));
}
return s[i];
}
return Object.keys(n).concat(Object.keys(r)).forEach(o), s;
}
function Cr(e, t, n) {
const r = e.icons, s = e.aliases || /* @__PURE__ */ Object.create(null);
let o = {};
function i(c) {
o = pt(
r[c] || s[c],
o
);
}
return i(t), n.forEach(i), pt(e, o);
}
function Wt(e, t) {
const n = [];
if (typeof e != "object" || typeof e.icons != "object")
return n;
e.not_found instanceof Array && e.not_found.forEach((s) => {
t(s, null), n.push(s);
});
const r = $r(e);
for (const s in r) {
const o = r[s];
o && (t(s, Cr(e, s, o)), n.push(s));
}
return n;
}
const Sr = {
provider: "",
aliases: {},
not_found: {},
...Qt
};
function Be(e, t) {
for (const n in t)
if (n in e && typeof e[n] != typeof t[n])
return !1;
return !0;
}
function Jt(e) {
if (typeof e != "object" || e === null)
return null;
const t = e;
if (typeof t.prefix != "string" || !e.icons || typeof e.icons != "object" || !Be(e, Sr))
return null;
const n = t.icons;
for (const s in n) {
const o = n[s];
if (
// Name cannot be empty
!s || // Must have body
typeof o.body != "string" || // Check other props
!Be(
o,
Je
)
)
return null;
}
const r = t.aliases || /* @__PURE__ */ Object.create(null);
for (const s in r) {
const o = r[s], i = o.parent;
if (
// Name cannot be empty
!s || // Parent must be set and point to existing icon
typeof i != "string" || !n[i] && !r[i] || // Check other props
!Be(
o,
Je
)
)
return null;
}
return t;
}
const Ne = /* @__PURE__ */ Object.create(null);
function Pr(e, t) {
return {
provider: e,
prefix: t,
icons: /* @__PURE__ */ Object.create(null),
missing: /* @__PURE__ */ new Set()
};
}
function V(e, t) {
const n = Ne[e] || (Ne[e] = /* @__PURE__ */ Object.create(null));
return n[t] || (n[t] = Pr(e, t));
}
function Xt(e, t) {
return Jt(t) ? Wt(t, (n, r) => {
r ? e.icons[n] = r : e.missing.add(n);
}) : [];
}
function Er(e, t, n) {
try {
if (typeof n.body == "string")
return e.icons[t] = { ...n }, !0;
} catch {
}
return !1;
}
function Tr(e, t) {
let n = [];
return (typeof e == "string" ? [e] : Object.keys(Ne)).forEach((s) => {
(typeof s == "string" && typeof t == "string" ? [t] : Object.keys(Ne[s] || {})).forEach((i) => {
const c = V(s, i);
n = n.concat(
Object.keys(c.icons).map(
(l) => (s !== "" ? "@" + s + ":" : "") + i + ":" + l
)
);
});
}), n;
}
let de = !1;
function Yt(e) {
return typeof e == "boolean" && (de = e), de;
}
function he(e) {
const t = typeof e == "string" ? me(e, !0, de) : e;
if (t) {
const n = V(t.provider, t.prefix), r = t.name;
return n.icons[r] || (n.missing.has(r) ? null : void 0);
}
}
function Zt(e, t) {
const n = me(e, !0, de);
if (!n)
return !1;
const r = V(n.provider, n.prefix);
return t ? Er(r, n.name, t) : (r.missing.add(n.name), !0);
}
function yt(e, t) {
if (typeof e != "object")
return !1;
if (typeof t != "string" && (t = e.provider || ""), de && !t && !e.prefix) {
let s = !1;
return Jt(e) && (e.prefix = "", Wt(e, (o, i) => {
Zt(o, i) && (s = !0);
})), s;
}
const n = e.prefix;
if (!ke({
prefix: n,
name: "a"
}))
return !1;
const r = V(t, n);
return !!Xt(r, e);
}
function mt(e) {
return !!he(e);
}
function Or(e) {
const t = he(e);
return t && {
...ye,
...t
};
}
function Nr(e) {
const t = {
loaded: [],
missing: [],
pending: []
}, n = /* @__PURE__ */ Object.create(null);
e.sort((s, o) => s.provider !== o.provider ? s.provider.localeCompare(o.provider) : s.prefix !== o.prefix ? s.prefix.localeCompare(o.prefix) : s.name.localeCompare(o.name));
let r = {
provider: "",
prefix: "",
name: ""
};
return e.forEach((s) => {
if (r.name === s.name && r.prefix === s.prefix && r.provider === s.provider)
return;
r = s;
const o = s.provider, i = s.prefix, c = s.name, l = n[o] || (n[o] = /* @__PURE__ */ Object.create(null)), a = l[i] || (l[i] = V(o, i));
let f;
c in a.icons ? f = t.loaded : i === "" || a.missing.has(c) ? f = t.missing : f = t.pending;
const u = {
provider: o,
prefix: i,
name: c
};
f.push(u);
}), t;
}
function en(e, t) {
e.forEach((n) => {
const r = n.loaderCallbacks;
r && (n.loaderCallbacks = r.filter((s) => s.id !== t));
});
}
function Lr(e) {
e.pendingCallbacksFlag || (e.pendingCallbacksFlag = !0, setTimeout(() => {
e.pendingCallbacksFlag = !1;
const t = e.loaderCallbacks ? e.loaderCallbacks.slice(0) : [];
if (!t.length)
return;
let n = !1;
const r = e.provider, s = e.prefix;
t.forEach((o) => {
const i = o.icons, c = i.pending.length;
i.pending = i.pending.filter((l) => {
if (l.prefix !== s)
return !0;
const a = l.name;
if (e.icons[a])
i.loaded.push({
provider: r,
prefix: s,
name: a
});
else if (e.missing.has(a))
i.missing.push({
provider: r,
prefix: s,
name: a
});
else
return n = !0, !0;
return !1;
}), i.pending.length !== c && (n || en([e], o.id), o.callback(
i.loaded.slice(0),
i.missing.slice(0),
i.pending.slice(0),
o.abort
));
});
}));
}
let Rr = 0;
function Mr(e, t, n) {
const r = Rr++, s = en.bind(null, n, r);
if (!t.pending.length)
return s;
const o = {
id: r,
icons: t,
callback: e,
abort: s
};
return n.forEach((i) => {
(i.loaderCallbacks || (i.loaderCallbacks = [])).push(o);
}), s;
}
const Xe = /* @__PURE__ */ Object.create(null);
function bt(e, t) {
Xe[e] = t;
}
function Ye(e) {
return Xe[e] || Xe[""];
}
function jr(e, t = !0, n = !1) {
const r = [];
return e.forEach((s) => {
const o = typeof s == "string" ? me(s, t, n) : s;
o && r.push(o);
}), r;
}
var Fr = {
resources: [],
index: 0,
timeout: 2e3,
rotate: 750,
random: !1,
dataAfterTimeout: !1
};
function Ur(e, t, n, r) {
const s = e.resources.length, o = e.random ? Math.floor(Math.random() * s) : e.index;
let i;
if (e.random) {
let b = e.resources.slice(0);
for (i = []; b.length > 1; ) {
const E = Math.floor(Math.random() * b.length);
i.push(b[E]), b = b.slice(0, E).concat(b.slice(E + 1));
}
i = i.concat(b);
} else
i = e.resources.slice(o).concat(e.resources.slice(0, o));
const c = Date.now();
let l = "pending", a = 0, f, u = null, d = [], h = [];
typeof r == "function" && h.push(r);
function g() {
u && (clearTimeout(u), u = null);
}
function y() {
l === "pending" && (l = "aborted"), g(), d.forEach((b) => {
b.status === "pending" && (b.status = "aborted");
}), d = [];
}
function p(b, E) {
E && (h = []), typeof b == "function" && h.push(b);
}
function P() {
return {
startTime: c,
payload: t,
status: l,
queriesSent: a,
queriesPending: d.length,
subscribe: p,
abort: y
};
}
function $() {
l = "failed", h.forEach((b) => {
b(void 0, f);
});
}
function v() {
d.forEach((b) => {
b.status === "pending" && (b.status = "aborted");
}), d = [];
}
function m(b, E, q) {
const A = E !== "success";
switch (d = d.filter((k) => k !== b), l) {
case "pending":
break;
case "failed":
if (A || !e.dataAfterTimeout)
return;
break;
default:
return;
}
if (E === "abort") {
f = q, $();
return;
}
if (A) {
f = q, d.length || (i.length ? N() : $());
return;
}
if (g(), v(), !e.random) {
const k = e.resources.indexOf(b.resource);
k !== -1 && k !== e.index && (e.index = k);
}
l = "completed", h.forEach((k) => {
k(q);
});
}
function N() {
if (l !== "pending")
return;
g();
const b = i.shift();
if (b === void 0) {
if (d.length) {
u = setTimeout(() => {
g(), l === "pending" && (v(), $());
}, e.timeout);
return;
}
$();
return;
}
const E = {
status: "pending",
resource: b,
callback: (q, A) => {
m(E, q, A);
}
};
d.push(E), a++, u = setTimeout(N, e.rotate), n(b, t, E.callback);
}
return setTimeout(N), P;
}
function tn(e) {
const t = {
...Fr,
...e
};
let n = [];
function r() {
n = n.filter((c) => c().status === "pending");
}
function s(c, l, a) {
const f = Ur(
t,
c,
l,
(u, d) => {
r(), a && a(u, d);
}
);
return n.push(f), f;
}
function o(c) {
return n.find((l) => c(l)) || null;
}
return {
query: s,
find: o,
setIndex: (c) => {
t.index = c;
},
getIndex: () => t.index,
cleanup: r
};
}
function rt(e) {
let t;
if (typeof e.resources == "string")
t = [e.resources];
else if (t = e.resources, !(t instanceof Array) || !t.length)
return null;
return {
// API hosts
resources: t,
// R