@batijs/elements
Version:
BatiJS website as Web Components
1,240 lines • 304 kB
JavaScript
function Hr(e) {
return Object.keys(e).reduce((i, r) => {
const o = e[r];
return i[r] = Object.assign({}, o), Fi(o.value) && !$r(o.value) && !Array.isArray(o.value) && (i[r].value = Object.assign({}, o.value)), Array.isArray(o.value) && (i[r].value = o.value.slice(0)), i;
}, {});
}
function _r(e) {
return e ? Object.keys(e).reduce((i, r) => {
const o = e[r];
return i[r] = Fi(o) && "value" in o ? o : {
value: o
}, i[r].attribute || (i[r].attribute = Jr(r)), i[r].parse = "parse" in i[r] ? i[r].parse : typeof i[r].value != "string", i;
}, {}) : {};
}
function Vr(e) {
return Object.keys(e).reduce((i, r) => (i[r] = e[r].value, i), {});
}
function Fr(e, t) {
const i = Hr(t);
return Object.keys(t).forEach((o) => {
const n = i[o], a = e.getAttribute(n.attribute), l = e[o];
a != null && (n.value = n.parse ? Vi(a) : a), l != null && (n.value = Array.isArray(l) ? l.slice(0) : l), n.reflect && Ii(e, n.attribute, n.value, !!n.parse), Object.defineProperty(e, o, {
get() {
return n.value;
},
set(s) {
const c = n.value;
n.value = s, n.reflect && Ii(this, n.attribute, n.value, !!n.parse);
for (let M = 0, u = this.__propertyChangedCallbacks.length; M < u; M++)
this.__propertyChangedCallbacks[M](o, s, c);
},
enumerable: !0,
configurable: !0
});
}), i;
}
function Vi(e) {
if (e)
try {
return JSON.parse(e);
} catch {
return e;
}
}
function Ii(e, t, i, r) {
if (i == null || i === !1) return e.removeAttribute(t);
let o = r ? JSON.stringify(i) : i;
e.__updating[t] = !0, o === "true" && (o = ""), e.setAttribute(t, o), Promise.resolve().then(() => delete e.__updating[t]);
}
function Jr(e) {
return e.replace(/\.?([A-Z]+)/g, (t, i) => "-" + i.toLowerCase()).replace("_", "-").replace(/^-/, "");
}
function Fi(e) {
return e != null && (typeof e == "object" || typeof e == "function");
}
function $r(e) {
return Object.prototype.toString.call(e) === "[object Function]";
}
function Xr(e) {
return typeof e == "function" && e.toString().indexOf("class") === 0;
}
let zt;
function Kr(e, t) {
const i = Object.keys(t);
return class extends e {
static get observedAttributes() {
return i.map((o) => t[o].attribute);
}
constructor() {
super(), this.__initialized = !1, this.__released = !1, this.__releaseCallbacks = [], this.__propertyChangedCallbacks = [], this.__updating = {}, this.props = {};
}
connectedCallback() {
if (this.__initialized) return;
this.__releaseCallbacks = [], this.__propertyChangedCallbacks = [], this.__updating = {}, this.props = Fr(this, t);
const o = Vr(this.props), n = this.Component, a = zt;
try {
zt = this, this.__initialized = !0, Xr(n) ? new n(o, {
element: this
}) : n(o, {
element: this
});
} finally {
zt = a;
}
}
async disconnectedCallback() {
if (await Promise.resolve(), this.isConnected) return;
this.__propertyChangedCallbacks.length = 0;
let o = null;
for (; o = this.__releaseCallbacks.pop(); ) o(this);
delete this.__initialized, this.__released = !0;
}
attributeChangedCallback(o, n, a) {
if (this.__initialized && !this.__updating[o] && (o = this.lookupProp(o), o in t)) {
if (a == null && !this[o]) return;
this[o] = t[o].parse ? Vi(a) : a;
}
}
lookupProp(o) {
if (t)
return i.find((n) => o === n || o === t[n].attribute);
}
get renderRoot() {
return this.shadowRoot || this.attachShadow({
mode: "open"
});
}
addReleaseCallback(o) {
this.__releaseCallbacks.push(o);
}
addPropertyChangedCallback(o) {
this.__propertyChangedCallbacks.push(o);
}
};
}
function qr(e, t = {}, i = {}) {
const {
BaseElement: r = HTMLElement,
extension: o,
customElements: n = window.customElements
} = i;
return (a) => {
let l = n.get(e);
return l ? (l.prototype.Component = a, l) : (l = Kr(r, _r(t)), l.prototype.Component = a, l.prototype.registeredTag = e, n.define(e, l, o), l);
};
}
const eo = !1, to = (e, t) => e === t, $ = Symbol("solid-proxy"), Ji = typeof Proxy == "function", Gt = Symbol("solid-track"), at = {
equals: to
};
let $i = tr;
const le = 1, lt = 2, Xi = {
owned: null,
cleanups: null,
context: null,
owner: null
}, vt = {};
var S = null;
let St = null, io = null, k = null, U = null, ne = null, Dt = 0;
function it(e, t) {
const i = k, r = S, o = e.length === 0, n = t === void 0 ? r : t, a = o ? Xi : {
owned: null,
cleanups: null,
context: n ? n.context : null,
owner: n
}, l = o ? e : () => e(() => Z(() => Pe(a)));
S = a, k = null;
try {
return ae(l, !0);
} finally {
k = i, S = r;
}
}
function Q(e, t) {
t = t ? Object.assign({}, at, t) : at;
const i = {
value: e,
observers: null,
observerSlots: null,
comparator: t.equals || void 0
}, r = (o) => (typeof o == "function" && (o = o(i.value)), er(i, o));
return [qi.bind(i), r];
}
function ro(e, t, i) {
const r = xt(e, t, !0, le);
Ee(r);
}
function C(e, t, i) {
const r = xt(e, t, !1, le);
Ee(r);
}
function be(e, t, i) {
$i = uo;
const r = xt(e, t, !1, le);
r.user = !0, ne ? ne.push(r) : Ee(r);
}
function z(e, t, i) {
i = i ? Object.assign({}, at, i) : at;
const r = xt(e, t, !0, 0);
return r.observers = null, r.observerSlots = null, r.comparator = i.equals || void 0, Ee(r), qi.bind(r);
}
function oo(e) {
return e && typeof e == "object" && "then" in e;
}
function no(e, t, i) {
let r, o, n;
typeof t == "function" ? (r = e, o = t, n = i || {}) : (r = !0, o = e, n = t || {});
let a = null, l = vt, s = !1, c = "initialValue" in n, M = typeof r == "function" && z(r);
const u = /* @__PURE__ */ new Set(), [g, d] = (n.storage || Q)(n.initialValue), [I, N] = Q(void 0), [x, b] = Q(void 0, {
equals: !1
}), [p, j] = Q(c ? "ready" : "unresolved");
function L(f, m, A, O) {
return a === f && (a = null, O !== void 0 && (c = !0), (f === l || m === l) && n.onHydrated && queueMicrotask(() => n.onHydrated(O, {
value: m
})), l = vt, w(m, A)), m;
}
function w(f, m) {
ae(() => {
m === void 0 && d(() => f), j(m !== void 0 ? "errored" : c ? "ready" : "unresolved"), N(m);
for (const A of u.keys()) A.decrement();
u.clear();
}, !1);
}
function E() {
const f = so, m = g(), A = I();
if (A !== void 0 && !a) throw A;
return k && k.user, m;
}
function T(f = !0) {
if (f !== !1 && s) return;
s = !1;
const m = M ? M() : r;
if (m == null || m === !1) {
L(a, Z(g));
return;
}
let A;
const O = l !== vt ? l : Z(() => {
try {
return o(m, {
value: g(),
refetching: f
});
} catch (Y) {
A = Y;
}
});
if (A !== void 0) {
L(a, void 0, rt(A), m);
return;
} else if (!oo(O))
return L(a, O, void 0, m), O;
return a = O, "v" in O ? (O.s === 1 ? L(a, O.v, void 0, m) : L(a, void 0, rt(O.v), m), O) : (s = !0, queueMicrotask(() => s = !1), ae(() => {
j(c ? "refreshing" : "pending"), b();
}, !1), O.then((Y) => L(O, Y, void 0, m), (Y) => L(O, void 0, rt(Y), m)));
}
Object.defineProperties(E, {
state: {
get: () => p()
},
error: {
get: () => I()
},
loading: {
get() {
const f = p();
return f === "pending" || f === "refreshing";
}
},
latest: {
get() {
if (!c) return E();
const f = I();
if (f && !a) throw f;
return g();
}
}
});
let v = S;
return M ? ro(() => (v = S, T(!1))) : T(!1), [E, {
refetch: (f) => lo(v, () => T(f)),
mutate: d
}];
}
function Rt(e) {
return ae(e, !1);
}
function Z(e) {
if (k === null) return e();
const t = k;
k = null;
try {
return e();
} finally {
k = t;
}
}
function ao(e, t, i) {
const r = Array.isArray(e);
let o;
return (n) => {
let a;
if (r) {
a = Array(e.length);
for (let s = 0; s < e.length; s++) a[s] = e[s]();
} else a = e();
const l = Z(() => t(a, o, n));
return o = a, l;
};
}
function yt(e) {
be(() => Z(e));
}
function Fe(e) {
return S === null || (S.cleanups === null ? S.cleanups = [e] : S.cleanups.push(e)), e;
}
function Wt() {
return k;
}
function lo(e, t) {
const i = S, r = k;
S = e, k = null;
try {
return ae(t, !0);
} catch (o) {
ti(o);
} finally {
S = i, k = r;
}
}
const [Zs, Ps] = /* @__PURE__ */ Q(!1);
function bt(e, t) {
const i = Symbol("context");
return {
id: i,
Provider: go(i),
defaultValue: e
};
}
function P(e) {
let t;
return S && S.context && (t = S.context[e.id]) !== void 0 ? t : e.defaultValue;
}
function Ki(e) {
const t = z(e), i = z(() => Bt(t()));
return i.toArray = () => {
const r = i();
return Array.isArray(r) ? r : r != null ? [r] : [];
}, i;
}
let so;
function qi() {
if (this.sources && this.state)
if (this.state === le) Ee(this);
else {
const e = U;
U = null, ae(() => ct(this), !1), U = e;
}
if (k) {
const e = this.observers ? this.observers.length : 0;
k.sources ? (k.sources.push(this), k.sourceSlots.push(e)) : (k.sources = [this], k.sourceSlots = [e]), this.observers ? (this.observers.push(k), this.observerSlots.push(k.sources.length - 1)) : (this.observers = [k], this.observerSlots = [k.sources.length - 1]);
}
return this.value;
}
function er(e, t, i) {
let r = e.value;
return (!e.comparator || !e.comparator(r, t)) && (e.value = t, e.observers && e.observers.length && ae(() => {
for (let o = 0; o < e.observers.length; o += 1) {
const n = e.observers[o], a = St && St.running;
a && St.disposed.has(n), (a ? !n.tState : !n.state) && (n.pure ? U.push(n) : ne.push(n), n.observers && ir(n)), a || (n.state = le);
}
if (U.length > 1e6)
throw U = [], new Error();
}, !1)), t;
}
function Ee(e) {
if (!e.fn) return;
Pe(e);
const t = Dt;
co(e, e.value, t);
}
function co(e, t, i) {
let r;
const o = S, n = k;
k = S = e;
try {
r = e.fn(t);
} catch (a) {
return e.pure && (e.state = le, e.owned && e.owned.forEach(Pe), e.owned = null), e.updatedAt = i + 1, ti(a);
} finally {
k = n, S = o;
}
(!e.updatedAt || e.updatedAt <= i) && (e.updatedAt != null && "observers" in e ? er(e, r) : e.value = r, e.updatedAt = i);
}
function xt(e, t, i, r = le, o) {
const n = {
fn: e,
state: r,
updatedAt: null,
owned: null,
sources: null,
sourceSlots: null,
cleanups: null,
value: t,
owner: S,
context: S ? S.context : null,
pure: i
};
return S === null || S !== Xi && (S.owned ? S.owned.push(n) : S.owned = [n]), n;
}
function st(e) {
if (e.state === 0) return;
if (e.state === lt) return ct(e);
if (e.suspense && Z(e.suspense.inFallback)) return e.suspense.effects.push(e);
const t = [e];
for (; (e = e.owner) && (!e.updatedAt || e.updatedAt < Dt); )
e.state && t.push(e);
for (let i = t.length - 1; i >= 0; i--)
if (e = t[i], e.state === le)
Ee(e);
else if (e.state === lt) {
const r = U;
U = null, ae(() => ct(e, t[0]), !1), U = r;
}
}
function ae(e, t) {
if (U) return e();
let i = !1;
t || (U = []), ne ? i = !0 : ne = [], Dt++;
try {
const r = e();
return Mo(i), r;
} catch (r) {
i || (ne = null), U = null, ti(r);
}
}
function Mo(e) {
if (U && (tr(U), U = null), e) return;
const t = ne;
ne = null, t.length && ae(() => $i(t), !1);
}
function tr(e) {
for (let t = 0; t < e.length; t++) st(e[t]);
}
function uo(e) {
let t, i = 0;
for (t = 0; t < e.length; t++) {
const r = e[t];
r.user ? e[i++] = r : st(r);
}
for (t = 0; t < i; t++) st(e[t]);
}
function ct(e, t) {
e.state = 0;
for (let i = 0; i < e.sources.length; i += 1) {
const r = e.sources[i];
if (r.sources) {
const o = r.state;
o === le ? r !== t && (!r.updatedAt || r.updatedAt < Dt) && st(r) : o === lt && ct(r, t);
}
}
}
function ir(e) {
for (let t = 0; t < e.observers.length; t += 1) {
const i = e.observers[t];
i.state || (i.state = lt, i.pure ? U.push(i) : ne.push(i), i.observers && ir(i));
}
}
function Pe(e) {
let t;
if (e.sources)
for (; e.sources.length; ) {
const i = e.sources.pop(), r = e.sourceSlots.pop(), o = i.observers;
if (o && o.length) {
const n = o.pop(), a = i.observerSlots.pop();
r < o.length && (n.sourceSlots[a] = r, o[r] = n, i.observerSlots[r] = a);
}
}
if (e.tOwned) {
for (t = e.tOwned.length - 1; t >= 0; t--) Pe(e.tOwned[t]);
delete e.tOwned;
}
if (e.owned) {
for (t = e.owned.length - 1; t >= 0; t--) Pe(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 rt(e) {
return e instanceof Error ? e : new Error(typeof e == "string" ? e : "Unknown error", {
cause: e
});
}
function ti(e, t = S) {
throw rt(e);
}
function Bt(e) {
if (typeof e == "function" && !e.length) return Bt(e());
if (Array.isArray(e)) {
const t = [];
for (let i = 0; i < e.length; i++) {
const r = Bt(e[i]);
Array.isArray(r) ? t.push.apply(t, r) : t.push(r);
}
return t;
}
return e;
}
function go(e, t) {
return function(r) {
let o;
return C(() => o = Z(() => (S.context = {
...S.context,
[e]: r.value
}, Ki(() => r.children))), void 0), o;
};
}
const No = Symbol("fallback");
function ji(e) {
for (let t = 0; t < e.length; t++) e[t]();
}
function Io(e, t, i = {}) {
let r = [], o = [], n = [], a = 0, l = t.length > 1 ? [] : null;
return Fe(() => ji(n)), () => {
let s = e() || [], c = s.length, M, u;
return s[Gt], Z(() => {
let d, I, N, x, b, p, j, L, w;
if (c === 0)
a !== 0 && (ji(n), n = [], r = [], o = [], a = 0, l && (l = [])), i.fallback && (r = [No], o[0] = it((E) => (n[0] = E, i.fallback())), a = 1);
else if (a === 0) {
for (o = new Array(c), u = 0; u < c; u++)
r[u] = s[u], o[u] = it(g);
a = c;
} else {
for (N = new Array(c), x = new Array(c), l && (b = new Array(c)), p = 0, j = Math.min(a, c); p < j && r[p] === s[p]; p++) ;
for (j = a - 1, L = c - 1; j >= p && L >= p && r[j] === s[L]; j--, L--)
N[L] = o[j], x[L] = n[j], l && (b[L] = l[j]);
for (d = /* @__PURE__ */ new Map(), I = new Array(L + 1), u = L; u >= p; u--)
w = s[u], M = d.get(w), I[u] = M === void 0 ? -1 : M, d.set(w, u);
for (M = p; M <= j; M++)
w = r[M], u = d.get(w), u !== void 0 && u !== -1 ? (N[u] = o[M], x[u] = n[M], l && (b[u] = l[M]), u = I[u], d.set(w, u)) : n[M]();
for (u = p; u < c; u++)
u in N ? (o[u] = N[u], n[u] = x[u], l && (l[u] = b[u], l[u](u))) : o[u] = it(g);
o = o.slice(0, a = c), r = s.slice(0);
}
return o;
});
function g(d) {
if (n[u] = d, l) {
const [I, N] = Q(u);
return l[u] = N, t(s[u], I);
}
return t(s[u]);
}
};
}
function D(e, t) {
return Z(() => e(t || {}));
}
function Xe() {
return !0;
}
const Ht = {
get(e, t, i) {
return t === $ ? i : e.get(t);
},
has(e, t) {
return t === $ ? !0 : e.has(t);
},
set: Xe,
deleteProperty: Xe,
getOwnPropertyDescriptor(e, t) {
return {
configurable: !0,
enumerable: !0,
get() {
return e.get(t);
},
set: Xe,
deleteProperty: Xe
};
},
ownKeys(e) {
return e.keys();
}
};
function Et(e) {
return (e = typeof e == "function" ? e() : e) ? e : {};
}
function jo() {
for (let e = 0, t = this.length; e < t; ++e) {
const i = this[e]();
if (i !== void 0) return i;
}
}
function rr(...e) {
let t = !1;
for (let a = 0; a < e.length; a++) {
const l = e[a];
t = t || !!l && $ in l, e[a] = typeof l == "function" ? (t = !0, z(l)) : l;
}
if (Ji && t)
return new Proxy({
get(a) {
for (let l = e.length - 1; l >= 0; l--) {
const s = Et(e[l])[a];
if (s !== void 0) return s;
}
},
has(a) {
for (let l = e.length - 1; l >= 0; l--)
if (a in Et(e[l])) return !0;
return !1;
},
keys() {
const a = [];
for (let l = 0; l < e.length; l++) a.push(...Object.keys(Et(e[l])));
return [...new Set(a)];
}
}, Ht);
const i = {}, r = /* @__PURE__ */ Object.create(null);
for (let a = e.length - 1; a >= 0; a--) {
const l = e[a];
if (!l) continue;
const s = Object.getOwnPropertyNames(l);
for (let c = s.length - 1; c >= 0; c--) {
const M = s[c];
if (M === "__proto__" || M === "constructor") continue;
const u = Object.getOwnPropertyDescriptor(l, M);
if (!r[M])
r[M] = u.get ? {
enumerable: !0,
configurable: !0,
get: jo.bind(i[M] = [u.get.bind(l)])
} : u.value !== void 0 ? u : void 0;
else {
const g = i[M];
g && (u.get ? g.push(u.get.bind(l)) : u.value !== void 0 && g.push(() => u.value));
}
}
}
const o = {}, n = Object.keys(r);
for (let a = n.length - 1; a >= 0; a--) {
const l = n[a], s = r[l];
s && s.get ? Object.defineProperty(o, l, s) : o[l] = s ? s.value : void 0;
}
return o;
}
function or(e, ...t) {
if (Ji && $ in e) {
const o = new Set(t.length > 1 ? t.flat() : t[0]), n = t.map((a) => new Proxy({
get(l) {
return a.includes(l) ? e[l] : void 0;
},
has(l) {
return a.includes(l) && l in e;
},
keys() {
return a.filter((l) => l in e);
}
}, Ht));
return n.push(new Proxy({
get(a) {
return o.has(a) ? void 0 : e[a];
},
has(a) {
return o.has(a) ? !1 : a in e;
},
keys() {
return Object.keys(e).filter((a) => !o.has(a));
}
}, Ht)), n;
}
const i = {}, r = t.map(() => ({}));
for (const o of Object.getOwnPropertyNames(e)) {
const n = Object.getOwnPropertyDescriptor(e, o), a = !n.get && !n.set && n.enumerable && n.writable && n.configurable;
let l = !1, s = 0;
for (const c of t)
c.includes(o) && (l = !0, a ? r[s][o] = n.value : Object.defineProperty(r[s], o, n)), ++s;
l || (a ? i[o] = n.value : Object.defineProperty(i, o, n));
}
return [...r, i];
}
const nr = (e) => `Stale read from <${e}>.`;
function de(e) {
const t = "fallback" in e && {
fallback: () => e.fallback
};
return z(Io(() => e.each, e.children, t || void 0));
}
function R(e) {
const t = e.keyed, i = z(() => e.when, void 0, void 0), r = t ? i : z(i, void 0, {
equals: (o, n) => !o == !n
});
return z(() => {
const o = r();
if (o) {
const n = e.children;
return typeof n == "function" && n.length > 0 ? Z(() => n(t ? o : () => {
if (!Z(r)) throw nr("Show");
return i();
})) : n;
}
return e.fallback;
}, void 0, void 0);
}
function Do(e) {
const t = Ki(() => e.children), i = z(() => {
const r = t(), o = Array.isArray(r) ? r : [r];
let n = () => {
};
for (let a = 0; a < o.length; a++) {
const l = a, s = o[a], c = n, M = z(() => c() ? void 0 : s.when, void 0, void 0), u = s.keyed ? M : z(M, void 0, {
equals: (g, d) => !g == !d
});
n = () => c() || (u() ? [l, M, s] : void 0);
}
return n;
});
return z(() => {
const r = i()();
if (!r) return e.fallback;
const [o, n, a] = r, l = a.children;
return typeof l == "function" && l.length > 0 ? Z(() => l(a.keyed ? n() : () => {
var c;
if (((c = Z(i)()) == null ? void 0 : c[0]) !== o) throw nr("Match");
return n();
})) : l;
}, void 0, void 0);
}
function Di(e) {
return e;
}
const yo = ["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"], bo = /* @__PURE__ */ new Set(["className", "value", "readOnly", "noValidate", "formNoValidate", "isMap", "noModule", "playsInline", ...yo]), xo = /* @__PURE__ */ new Set(["innerHTML", "textContent", "innerText", "children"]), wo = /* @__PURE__ */ Object.assign(/* @__PURE__ */ Object.create(null), {
className: "class",
htmlFor: "for"
}), fo = /* @__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 po(e, t) {
const i = fo[e];
return typeof i == "object" ? i[t] ? i.$ : void 0 : i;
}
const Lo = /* @__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"]), ho = /* @__PURE__ */ new Set([
"altGlyph",
"altGlyphDef",
"altGlyphItem",
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"circle",
"clipPath",
"color-profile",
"cursor",
"defs",
"desc",
"ellipse",
"feBlend",
"feColorMatrix",
"feComponentTransfer",
"feComposite",
"feConvolveMatrix",
"feDiffuseLighting",
"feDisplacementMap",
"feDistantLight",
"feDropShadow",
"feFlood",
"feFuncA",
"feFuncB",
"feFuncG",
"feFuncR",
"feGaussianBlur",
"feImage",
"feMerge",
"feMergeNode",
"feMorphology",
"feOffset",
"fePointLight",
"feSpecularLighting",
"feSpotLight",
"feTile",
"feTurbulence",
"filter",
"font",
"font-face",
"font-face-format",
"font-face-name",
"font-face-src",
"font-face-uri",
"foreignObject",
"g",
"glyph",
"glyphRef",
"hkern",
"image",
"line",
"linearGradient",
"marker",
"mask",
"metadata",
"missing-glyph",
"mpath",
"path",
"pattern",
"polygon",
"polyline",
"radialGradient",
"rect",
"set",
"stop",
"svg",
"switch",
"symbol",
"text",
"textPath",
"tref",
"tspan",
"use",
"view",
"vkern"
]), To = {
xlink: "http://www.w3.org/1999/xlink",
xml: "http://www.w3.org/XML/1998/namespace"
}, De = (e) => z(() => e());
function Ao(e, t, i) {
let r = i.length, o = t.length, n = r, a = 0, l = 0, s = t[o - 1].nextSibling, c = null;
for (; a < o || l < n; ) {
if (t[a] === i[l]) {
a++, l++;
continue;
}
for (; t[o - 1] === i[n - 1]; )
o--, n--;
if (o === a) {
const M = n < r ? l ? i[l - 1].nextSibling : i[n - l] : s;
for (; l < n; ) e.insertBefore(i[l++], M);
} else if (n === l)
for (; a < o; )
(!c || !c.has(t[a])) && t[a].remove(), a++;
else if (t[a] === i[n - 1] && i[l] === t[o - 1]) {
const M = t[--o].nextSibling;
e.insertBefore(i[l++], t[a++].nextSibling), e.insertBefore(i[--n], M), t[o] = i[n];
} else {
if (!c) {
c = /* @__PURE__ */ new Map();
let u = l;
for (; u < n; ) c.set(i[u], u++);
}
const M = c.get(t[a]);
if (M != null)
if (l < M && M < n) {
let u = a, g = 1, d;
for (; ++u < o && u < n && !((d = c.get(t[u])) == null || d !== M + g); )
g++;
if (g > M - l) {
const I = t[a];
for (; l < M; ) e.insertBefore(i[l++], I);
} else e.replaceChild(i[l++], t[a++]);
} else a++;
else t[a++].remove();
}
}
}
const yi = "_$DX_DELEGATE";
function h(e, t, i, r) {
let o;
const n = () => {
const l = document.createElement("template");
return l.innerHTML = e, l.content.firstChild;
}, a = () => (o || (o = n())).cloneNode(!0);
return a.cloneNode = a, a;
}
function Ce(e, t = window.document) {
const i = t[yi] || (t[yi] = /* @__PURE__ */ new Set());
for (let r = 0, o = e.length; r < o; r++) {
const n = e[r];
i.has(n) || (i.add(n), t.addEventListener(n, Co));
}
}
function G(e, t, i) {
i == null ? e.removeAttribute(t) : e.setAttribute(t, i);
}
function mo(e, t, i, r) {
r == null ? e.removeAttributeNS(t, i) : e.setAttributeNS(t, i, r);
}
function zo(e, t, i) {
i ? e.setAttribute(t, "") : e.removeAttribute(t);
}
function q(e, t) {
t == null ? e.removeAttribute("class") : e.className = t;
}
function _t(e, t, i, r) {
if (r)
Array.isArray(i) ? (e[`$$${t}`] = i[0], e[`$$${t}Data`] = i[1]) : e[`$$${t}`] = i;
else if (Array.isArray(i)) {
const o = i[0];
e.addEventListener(t, i[0] = (n) => o.call(e, i[1], n));
} else e.addEventListener(t, i, typeof i != "function" && i);
}
function xe(e, t, i = {}) {
const r = Object.keys(t || {}), o = Object.keys(i);
let n, a;
for (n = 0, a = o.length; n < a; n++) {
const l = o[n];
!l || l === "undefined" || t[l] || (bi(e, l, !1), delete i[l]);
}
for (n = 0, a = r.length; n < a; n++) {
const l = r[n], s = !!t[l];
!l || l === "undefined" || i[l] === s || !s || (bi(e, l, !0), i[l] = s);
}
return i;
}
function ar(e, t, i) {
if (!t) return i ? G(e, "style") : t;
const r = e.style;
if (typeof t == "string") return r.cssText = t;
typeof i == "string" && (r.cssText = i = void 0), i || (i = {}), t || (t = {});
let o, n;
for (n in i)
t[n] == null && r.removeProperty(n), delete i[n];
for (n in t)
o = t[n], o !== i[n] && (r.setProperty(n, o), i[n] = o);
return i;
}
function vo(e, t = {}, i, r) {
const o = {};
return C(() => o.children = Ge(e, t.children, o.children)), C(() => typeof t.ref == "function" && ye(t.ref, e)), C(() => So(e, t, i, !0, o, !0)), o;
}
function ye(e, t, i) {
return Z(() => e(t, i));
}
function y(e, t, i, r) {
if (i !== void 0 && !r && (r = []), typeof t != "function") return Ge(e, t, r, i);
C((o) => Ge(e, t(), o, i), r);
}
function So(e, t, i, r, o = {}, n = !1) {
t || (t = {});
for (const a in o)
if (!(a in t)) {
if (a === "children") continue;
o[a] = xi(e, a, null, o[a], i, n, t);
}
for (const a in t) {
if (a === "children")
continue;
const l = t[a];
o[a] = xi(e, a, l, o[a], i, n, t);
}
}
function Eo(e) {
return e.toLowerCase().replace(/-([a-z])/g, (t, i) => i.toUpperCase());
}
function bi(e, t, i) {
const r = t.trim().split(/\s+/);
for (let o = 0, n = r.length; o < n; o++) e.classList.toggle(r[o], i);
}
function xi(e, t, i, r, o, n, a) {
let l, s, c, M, u;
if (t === "style") return ar(e, i, r);
if (t === "classList") return xe(e, i, r);
if (i === r) return r;
if (t === "ref")
n || i(e);
else if (t.slice(0, 3) === "on:") {
const g = t.slice(3);
r && e.removeEventListener(g, r, typeof r != "function" && r), i && e.addEventListener(g, i, typeof i != "function" && i);
} else if (t.slice(0, 10) === "oncapture:") {
const g = t.slice(10);
r && e.removeEventListener(g, r, !0), i && e.addEventListener(g, i, !0);
} else if (t.slice(0, 2) === "on") {
const g = t.slice(2).toLowerCase(), d = Lo.has(g);
if (!d && r) {
const I = Array.isArray(r) ? r[0] : r;
e.removeEventListener(g, I);
}
(d || i) && (_t(e, g, i, d), d && Ce([g]));
} else if (t.slice(0, 5) === "attr:")
G(e, t.slice(5), i);
else if (t.slice(0, 5) === "bool:")
zo(e, t.slice(5), i);
else if ((u = t.slice(0, 5) === "prop:") || (c = xo.has(t)) || !o && ((M = po(t, e.tagName)) || (s = bo.has(t))) || (l = e.nodeName.includes("-") || "is" in a))
u && (t = t.slice(5), s = !0), t === "class" || t === "className" ? q(e, i) : l && !s && !c ? e[Eo(t)] = i : e[M || t] = i;
else {
const g = o && t.indexOf(":") > -1 && To[t.split(":")[0]];
g ? mo(e, g, t, i) : G(e, wo[t] || t, i);
}
return i;
}
function Co(e) {
let t = e.target;
const i = `$$${e.type}`, r = e.target, o = e.currentTarget, n = (s) => Object.defineProperty(e, "target", {
configurable: !0,
value: s
}), a = () => {
const s = t[i];
if (s && !t.disabled) {
const c = t[`${i}Data`];
if (c !== void 0 ? s.call(t, c, e) : s.call(t, e), e.cancelBubble) return;
}
return t.host && typeof t.host != "string" && !t.host._$host && t.contains(e.target) && n(t.host), !0;
}, l = () => {
for (; a() && (t = t._$host || t.parentNode || t.host); ) ;
};
if (Object.defineProperty(e, "currentTarget", {
configurable: !0,
get() {
return t || document;
}
}), e.composedPath) {
const s = e.composedPath();
n(s[0]);
for (let c = 0; c < s.length - 2 && (t = s[c], !!a()); c++) {
if (t._$host) {
t = t._$host, l();
break;
}
if (t.parentNode === o)
break;
}
} else l();
n(r);
}
function Ge(e, t, i, r, o) {
for (; typeof i == "function"; ) i = i();
if (t === i) return i;
const n = typeof t, a = r !== void 0;
if (e = a && i[0] && i[0].parentNode || e, n === "string" || n === "number") {
if (n === "number" && (t = t.toString(), t === i))
return i;
if (a) {
let l = i[0];
l && l.nodeType === 3 ? l.data !== t && (l.data = t) : l = document.createTextNode(t), i = pe(e, i, r, l);
} else
i !== "" && typeof i == "string" ? i = e.firstChild.data = t : i = e.textContent = t;
} else if (t == null || n === "boolean")
i = pe(e, i, r);
else {
if (n === "function")
return C(() => {
let l = t();
for (; typeof l == "function"; ) l = l();
i = Ge(e, l, i, r);
}), () => i;
if (Array.isArray(t)) {
const l = [], s = i && Array.isArray(i);
if (Vt(l, t, i, o))
return C(() => i = Ge(e, l, i, r, !0)), () => i;
if (l.length === 0) {
if (i = pe(e, i, r), a) return i;
} else s ? i.length === 0 ? wi(e, l, r) : Ao(e, i, l) : (i && pe(e), wi(e, l));
i = l;
} else if (t.nodeType) {
if (Array.isArray(i)) {
if (a) return i = pe(e, i, r, t);
pe(e, i, null, t);
} else i == null || i === "" || !e.firstChild ? e.appendChild(t) : e.replaceChild(t, e.firstChild);
i = t;
}
}
return i;
}
function Vt(e, t, i, r) {
let o = !1;
for (let n = 0, a = t.length; n < a; n++) {
let l = t[n], s = i && i[e.length], c;
if (!(l == null || l === !0 || l === !1)) if ((c = typeof l) == "object" && l.nodeType)
e.push(l);
else if (Array.isArray(l))
o = Vt(e, l, s) || o;
else if (c === "function")
if (r) {
for (; typeof l == "function"; ) l = l();
o = Vt(e, Array.isArray(l) ? l : [l], Array.isArray(s) ? s : [s]) || o;
} else
e.push(l), o = !0;
else {
const M = String(l);
s && s.nodeType === 3 && s.data === M ? e.push(s) : e.push(document.createTextNode(M));
}
}
return o;
}
function wi(e, t, i = null) {
for (let r = 0, o = t.length; r < o; r++) e.insertBefore(t[r], i);
}
function pe(e, t, i, r) {
if (i === void 0) return e.textContent = "";
const o = r || document.createTextNode("");
if (t.length) {
let n = !1;
for (let a = t.length - 1; a >= 0; a--) {
const l = t[a];
if (o !== l) {
const s = l.parentNode === e;
!n && !a ? s ? e.replaceChild(o, l) : e.insertBefore(o, i) : s && l.remove();
} else n = !0;
}
} else e.insertBefore(o, i);
return [o];
}
const Oo = "http://www.w3.org/2000/svg";
function ko(e, t = !1) {
return t ? document.createElementNS(Oo, e) : document.createElement(e);
}
function Yo(e, t) {
const i = z(e);
return z(() => {
const r = i();
switch (typeof r) {
case "function":
return Z(() => r(t));
case "string":
const o = ho.has(r), n = ko(r, o);
return vo(n, t, o), n;
}
});
}
function ii(e) {
const [, t] = or(e, ["component"]);
return Yo(() => e.component, t);
}
function Qo(e) {
const t = Object.keys(e), i = {};
for (let r = 0; r < t.length; r++) {
const [o, n] = Q(e[t[r]]);
Object.defineProperty(i, t[r], {
get: o,
set(a) {
n(() => a);
}
});
}
return i;
}
function Uo(e) {
if (e.assignedSlot && e.assignedSlot._$owner) return e.assignedSlot._$owner;
let t = e.parentNode;
for (; t && !t._$owner && !(t.assignedSlot && t.assignedSlot._$owner); )
t = t.parentNode;
return t && t.assignedSlot ? t.assignedSlot._$owner : e._$owner;
}
function Zo(e) {
return (t, i) => {
const { element: r } = i;
return it((o) => {
const n = Qo(t);
r.addPropertyChangedCallback((l, s) => n[l] = s), r.addReleaseCallback(() => {
r.renderRoot.textContent = "", o();
});
const a = e(n, i);
return y(r.renderRoot, a);
}, Uo(r));
};
}
function Po(e, t, i) {
return arguments.length === 2 && (i = t, t = {}), qr(e, t)(Zo(i));
}
var wt = [
// Vike
{
category: "Frontend Framework",
label: "Vike",
flag: "vike",
image: "data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaGFtbWVyIiB3aWR0aD0iNDcuMjE3IiBoZWlnaHQ9IjQ3LjIxNyIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSItNTAgLTUwIDQ3LjIxNyA0Ny4yMTciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzAuMjksLTIxLjMpIj4KICA8ZyBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPgogICA8cGF0aCBkPSJtLTguNTExLTEwLjQ0OSAxLjEyNiA0LjA2NCAyLjcwNy0yLjc2NXoiIGZpbGw9IiNhYmFiYWIiLz4KICAgPHBhdGggZD0ibS0yLjI3My0yNC40OTYtNi4yMzggMTQuMDQ3IDMuODMzIDEuMjk5IDYuMjM4LTE0LjA0OHoiIGZpbGw9IiM5NDk0OTQiLz4KICAgPHBhdGggZD0ibS0yLjI3My0yNC40OTYgMy40NjUtMS4yMDQuMzY4IDIuNTAyeiIgZmlsbD0iI2FiYWJhYiIvPgogICA8cGF0aCBkPSJtMTcuNTExIDQuNjc0LTIuNzA3IDIuNzY2LTIyLjE4OS0xMy44MjUgMi43MDctMi43NjV6IiBmaWxsPSIjOTQ5NDk0Ii8+CiAgPC9nPgogIDxnIHN0cm9rZT0iIzgyODI4MiI+CiAgIDxwYXRoIGQ9Im0tMTAuNTI2IDIzLjcwNS0xLjE3IDIuNjM0IiBzdHJva2Utd2lkdGg9IjkuNiIvPgogICA8cGF0aCBkPSJtLTEzLjg5OSAyNi41MjhjLTEuODUxLTEuMTUzLTIuMzI2LTIuMTMzLTEuMDg3LTIuMjM5IDEuMjQtLjEwNiAzLjY0My43MDkgNS40OTQgMS44NjIgMS44NSAxLjE1MyAyLjMyNiAyLjEzMiAxLjA4NiAyLjIzOC0xLjIzOS4xMDYtMy42NDItLjcwOC01LjQ5My0xLjg2MSIgZmlsbD0iIzgyODI4MiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CiAgIDxwYXRoIGQ9Im0tMTIuNzMgMjMuODk0YzEuODUxIDEuMTUzIDQuMjU1IDEuOTY3IDUuNDk0IDEuODYxcy43NjQtMS4wODUtMS4wODctMi4yMzhjLTEuODUtMS4xNTMtNC4yNTQtMS45NjctNS40OTMtMS44NjEtMS4yNC4xMDYtLjc2NCAxLjA4NSAxLjA4NiAyLjIzOCIgZmlsbD0iIzgyODI4MiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CiAgPC9nPgogIDxnIHN0cm9rZT0iIzdhN2E3YSI+CiAgIDxwYXRoIGQ9Im0tOS44NDQgMjIuMTY5LS4zOS44NzgiIHN0cm9rZS13aWR0aD0iOS4xIi8+CiAgIDxwYXRoIGQ9Im0tMTIuNDM3IDIzLjIzNWMtMS44NTEtMS4xNTMtMi4zMjYtMi4xMzItMS4wODctMi4yMzggMS4yNC0uMTA2IDMuNjQzLjcwOCA1LjQ5NCAxLjg2MSAxLjg1IDEuMTUzIDIuMzI2IDIuMTMzIDEuMDg2IDIuMjM5LTEuMjM5LjEwNi0zLjY0Mi0uNzA5LTUuNDkzLTEuODYyIiBmaWxsPSIjN2E3YTdhIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iLjUiLz4KICAgPHBhdGggZD0ibS0xMi4wNDcgMjIuMzU3YzEuODUgMS4xNTMgNC4yNTQgMS45NjggNS40OTMgMS44NjIgMS4yNC0uMTA2Ljc2NC0xLjA4Ni0xLjA4Ny0yLjIzOS0xLjg1LTEuMTUzLTQuMjU0LTEuOTY3LTUuNDkzLTEuODYxcy0uNzY0IDEuMDg1IDEuMDg3IDIuMjM4IiBmaWxsPSIjN2E3YTdhIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iLjUiLz4KICA8L2c+CiAgPGcgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4KICAgPHBhdGggZD0ibS0xNi43MS05Ljc0OCA4LjE5OS0uNzAxIDEuMTI2IDQuMDY0LTguMTk5LjcwMXoiIGZpbGw9IiM5NDk0OTQiLz4KICAgPHBhdGggZD0ibTIzLjc0OS05LjM3My02LjIzOCAxNC4wNDctMjIuMTg5LTEzLjgyNCA2LjIzOC0xNC4wNDh6IiBmaWxsPSIjNzU3NTc1Ii8+CiAgIDxwYXRoIGQ9Im0xMC4yNzEtMTYuMDczIDMuNzUxIDMuNTM0Yy4wNjIuMDU4LjA4My4xNTYuMDUyLjIzOGwtMS45NSA1LjEyOGMtLjA0Ni4xMjEtLjE4LjE1My0uMjY4LjA2NWwtMS4wMjQtMS4wM2MtLjA5NS0uMDk2LS4yNDItLjA0OC0uMjc1LjA5MWwtLjUxNiAyLjE1MmMtLjAzNC4xNDUtLjE5MS4xOS0uMjg0LjA4MiAwIDAtLjYwNi0uNjk2LS42MDYtLjY5Ni0uMDk0LS4xMDgtLjI1LS4wNjMtLjI4NS4wODJsLS44MDMgMy4zODRjLS4wNS4yMTItLjMxNy4xNzgtLjMzNi0uMDQzbC0uMDE0LS4xNDdzLjA1OC05Ljg5Mi4wNTgtOS44OTJjLjAwMS0uMTY1LjE2NS0uMjUzLjI3Ny0uMTQ4bDEuMDc3IDEuMDA5Yy4xMDEuMDk1LjI1LjAzNC4yNzQtLjExMWwuNTk3LTMuNTg3Yy4wMjUtLjE0Ni4xNzQtLjIwNi4yNzUtLjExMXoiIGZpbGw9IiNmYmJmMjgiIHN0cm9rZT0iI2ZiYmYyOCIgc3Ryb2tlLXdpZHRoPSIuNiIvPgogICA8cGF0aCBkPSJtLTE2LjcxLTkuNzQ4IDguMTk5LS43MDEgNi4yMzgtMTQuMDQ3LTguMTk5LjcwMXoiIGZpbGw9IiM3NTc1NzUiLz4KICA8L2c+CiAgPHBhdGggZD0ibS0xLjc1NCAzLjk1MS03Ljk5MiAxNy45OTgiIHN0cm9rZT0iIzkxNTEyYiIgc3Ryb2tlLXdpZHRoPSI4LjYiLz4KICA8ZyBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPgogICA8cGF0aCBkPSJtLTExLjk1IDIyLjEzOGMtMS44NTEtMS4xNTMtMi4zMjYtMi4xMzItMS4wODctMi4yMzggMS4yNC0uMTA2IDMuNjQzLjcwOCA1LjQ5NCAxLjg2MXMyLjMyNiAyLjEzMiAxLjA4NyAyLjIzOGMtMS4yNC4xMDYtMy42NDMtLjcwOC01LjQ5NC0xLjg2MSIgZmlsbD0iIzkxNTEyYiIvPgogICA8cGF0aCBkPSJtLTMuOTU4IDQuMTM5YzEuODUxIDEuMTUzIDQuMjU0IDEuOTY4IDUuNDk0IDEuODYyIDEuMjM5LS4xMDYuNzY0LTEuMDg2LTEuMDg3LTIuMjM5cy00LjI1NC0xLjk2Ny01LjQ5My0xLjg2MWMtMS4yNC4xMDYtLjc2NCAxLjA4NSAxLjA4NiAyLjIzOCIgZmlsbD0iIzkxNTEyYiIvPgogICA8cGF0aCBkPSJtMS4xOTItMjUuNy4zNjggMi41MDIgMjIuMTg5IDEzLjgyNS0uMzY4LTIuNTAzeiIgZmlsbD0iIzk0OTQ5NCIvPgogICA8cGF0aCBkPSJtLTEwLjQ3Mi0yMy43OTUgOC4xOTktLjcwMSAzLjQ2NS0xLjIwNC04LjE5OS43MDF6IiBmaWxsPSIjOTQ5NDk0Ii8+CiAgPC9nPgogIDxnIHN0cm9rZT0iIzZlNmU2ZSI+CiAgIDxwYXRoIGQ9Im0tLjQ4NyAxLjA5Ny0xLjE3IDIuNjM0IiBzdHJva2Utd2lkdGg9IjkuMSIvPgogICA8cGF0aCBkPSJtLTMuODYgMy45MmMtMS44NTEtMS4xNTMtMi4zMjYtMi4xMzItMS4wODctMi4yMzhzMy42NDMuNzA4IDUuNDkzIDEuODYxYzEuODUxIDEuMTUzIDIuMzI3IDIuMTMyIDEuMDg3IDIuMjM4LTEuMjM5LjEwNi0zLjY0My0uNzA4LTUuNDkzLTEuODYxIiBmaWxsPSIjNmU2ZTZlIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iLjUiLz4KICAgPHBhdGggZD0ibS0yLjY5MSAxLjI4NmMxLjg1MSAxLjE1MyA0LjI1NCAxLjk2NyA1LjQ5NCAxLjg2MSAxLjIzOS0uMTA2Ljc2NC0xLjA4NS0xLjA4Ny0yLjIzOHMtNC4yNTQtMS45NjctNS40OTMtMS44NjFjLTEuMjQuMTA2LS43NjQgMS4wODUgMS4wODYgMi4yMzgiIGZpbGw9IiM2ZTZlNmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIuNSIvPgogIDwvZz4KICA8ZyBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPgogICA8cGF0aCBkPSJtMTguMjY5IDYuMjM2LTMuNDY1IDEuMjA0IDIuNzA3LTIuNzY2eiIgZmlsbD0iI2FiYWJhYiIvPgogICA8cGF0aCBkPSJtMTQuODA0IDcuNDQtOC4xOTkuNzAxLTIyLjE4OS0xMy44MjUgOC4xOTktLjcwMXoiIGZpbGw9IiM3NTc1NzUiLz4KICAgPHBhdGggZD0ibS0xNi43MS05Ljc0OCAxLjEyNiA0LjA2NC0uMzY3LTIuNTAyeiIgZmlsbD0iI2FiYWJhYiIvPgogICA8cGF0aCBkPSJtMjQuNTA3LTcuODEyLTYuMjM4IDE0LjA0OC0uNzU4LTEuNTYyIDYuMjM4LTE0LjA0N3oiIGZpbGw9IiM5NDk0OTQiLz4KICAgPHBhdGggZD0ibS0xMC40NzItMjMuNzk1LTYuMjM4IDE0LjA0Ny43NTkgMS41NjIgNi4yMzctMTQuMDQ4eiIgZmlsbD0iIzk0OTQ5NCIvPgogICA8cGF0aCBkPSJtMjQuNTA3LTcuODEyLTEuMTI2LTQuMDY0LjM2OCAyLjUwM3oiIGZpbGw9IiNhYmFiYWIiLz4KICAgPHBhdGggZD0ibTIzLjM4MS0xMS44NzYtOC4xOTkuNzAxLTIyLjE4OS0xMy44MjQgOC4xOTktLjcwMXoiIGZpbGw9IiM3NTc1NzUiLz4KICAgPHBhdGggZD0ibS0xMC40NzItMjMuNzk1IDMuNDY1LTEuMjA0LTIuNzA3IDIuNzY1eiIgZmlsbD0iI2FiYWJhYiIvPgogICA8cGF0aCBkPSJtMTguMjY5IDYuMjM2LTguMTk5LjcwMS0zLjQ2NSAxLjIwNCA4LjE5OS0uNzAxeiIgZmlsbD0iIzk0OTQ5NCIvPgogICA8cGF0aCBkPSJtLTE1Ljk1MS04LjE4Ni4zNjcgMi41MDIgMjIuMTg5IDEzLjgyNS0uMzY3LTIuNTAzeiIgZmlsbD0iIzk0OTQ5NCIvPgogICA8cGF0aCBkPSJtMTguMjY5IDYuMjM2LTguMTk5LjcwMSA2LjIzOC0xNC4wNDggOC4xOTktLjcwMXoiIGZpbGw9IiM3NTc1NzUiLz4KICAgPHBhdGggZD0ibS05LjcxNC0yMi4yMzQtNi4yMzcgMTQuMDQ4IDIyLjE4OSAxMy44MjQgNi4yMzctMTQuMDQ3eiIgZmlsbD0iIzc1NzU3NSIvPgogICA8cGF0aCBkPSJtMi41NDUtMTIuNzktNC41ODMtMS42NTljLS4wNzYtLjAyNy0uMTU2LjAwOC0uMTk1LjA4NSAwIDAtMi40NjMgNC44MDgtMi40NjMgNC44MDgtLjA1OC4xMTQtLjAwNS4yNjMuMTA3LjI5OGwxLjI5Ni40MTZjLjEyMi4wMzkuMTcxLjIxLjA5My4zMjEgMCAwLTEuMjA1IDEuNzIyLTEuMjA1IDEuNzIyLS4wODEuMTE2LS4wMjQuMjk0LjEwNS4zMjVsLjgyNy4xOTZjLjEyOC4wMzEuMTg2LjIwOS4xMDQuMzI1IDAgMC0xLjg5OSAyLjcwMS0xLjg5OSAyLjcwMS0uMTE4LjE2OS4wNTYuNDEuMjIuMzA0bC4xMS0uMDcgNi44NDktNS42NjFjLjExNS0uMDk1LjA4My0uMzA0LS4wNTQtLjM1NGwtMS4zMTItLjQ4Yy0uMTIzLS4wNDUtLjE2NS0uMjI0LS4wNzgtLjMzMSAwIDAgMi4xNTctMi42MTUgMi4xNTctMi42MTUuMDg3LS4xMDYuMDQ1LS4yODYtLjA3OS0uMzMxeiIgZmlsbD0iI2ZiYmYyOCIgc3Ryb2tlPSIjZmJiZjI4IiBzdHJva2Utd2lkdGg9Ii42Ii8+CiAgIDxwYXRoIGQ9Im0yNC41MDctNy44MTItOC4xOTkuNzAxLTEuMTI2LTQuMDY0IDguMTk5LS43MDF6IiBmaWxsPSIjOTQ5NDk0Ii8+CiAgIDxwYXRoIGQ9Im0xNS4xODItMTEuMTc1LTIuNzA3IDIuNzY2LTIyLjE4OS0xMy44MjUgMi43MDctMi43NjV6IiBmaWxsPSIjOTQ5NDk0Ii8+CiAgIDxwYXRoIGQ9Im0xMC4wNyA2LjkzNy0zLjQ2NSAxLjIwNC0uMzY3LTIuNTAzeiIgZmlsbD0iI2FiYWJhYiIvPgogICA8cGF0aCBkPSJtMTYuMzA4LTcuMTExLTYuMjM4IDE0LjA0OC0zLjgzMi0xLjI5OSA2LjIzNy0xNC4wNDd6IiBmaWxsPSIjOTQ5NDk0Ii8+CiAgIDxwYXRoIGQ9Im0xNi4zMDgtNy4xMTEtMS4xMjYtNC4wNjQtMi43MDcgMi43NjZ6IiBmaWxsPSIjYWJhYmFiIi8+CiAgPC9nPgogPC9nPgo8L3N2Zz4K",
url: "https://vike.dev",
tagline: "Flexible, lean, reliable, community-driven, fast Vite-based frontend framework",
repo: "vikejs/vike",
links: [
{
label: "Docs",
href: "https://vike.dev"
},
{
label: "FAQ",
href: "https://vike.dev/faq"
}
],
invisibleCli: !0,
readonly: !0
},
// UI Framework
{
category: "UI Framework",
label: "React",
flag: "react",
image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxLjEzZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjU2IDIyOCI+PHBhdGggZmlsbD0iIzAwRDhGRiIgZD0iTTIxMC40ODMgNzMuODI0YTE3MS40OSAxNzEuNDkgMCAwIDAtOC4yNC0yLjU5N2MuNDY1LTEuOS44OTMtMy43NzcgMS4yNzMtNS42MjFjNi4yMzgtMzAuMjgxIDIuMTYtNTQuNjc2LTExLjc2OS02Mi43MDhjLTEzLjM1NS03LjctMzUuMTk2LjMyOS01Ny4yNTQgMTkuNTI2YTE3MS4yMyAxNzEuMjMgMCAwIDAtNi4zNzUgNS44NDhhMTU1Ljg2NiAxNTUuODY2IDAgMCAwLTQuMjQxLTMuOTE3QzEwMC43NTkgMy44MjkgNzcuNTg3LTQuODIyIDYzLjY3MyAzLjIzM0M1MC4zMyAxMC45NTcgNDYuMzc5IDMzLjg5IDUxLjk5NSA2Mi41ODhhMTcwLjk3NCAxNzAuOTc0IDAgMCAwIDEuODkyIDguNDhjLTMuMjguOTMyLTYuNDQ1IDEuOTI0LTkuNDc0IDIuOThDMTcuMzA5IDgzLjQ5OCAwIDk4LjMwNyAwIDExMy42NjhjMCAxNS44NjUgMTguNTgyIDMxLjc3OCA0Ni44MTIgNDEuNDI3YTE0NS41MiAxNDUuNTIgMCAwIDAgNi45MjEgMi4xNjVhMTY3LjQ2NyAxNjcuNDY3IDAgMCAwLTIuMDEgOS4xMzhjLTUuMzU0IDI4LjItMS4xNzMgNTAuNTkxIDEyLjEzNCA1OC4yNjZjMTMuNzQ0IDcuOTI2IDM2LjgxMi0uMjIgNTkuMjczLTE5Ljg1NWExNDUuNTY3IDE0NS41NjcgMCAwIDAgNS4zNDItNC45MjNhMTY4LjA2NCAxNjguMDY0IDAgMCAwIDYuOTIgNi4zMTRjMjEuNzU4IDE4LjcyMiA0My4yNDYgMjYuMjgyIDU2LjU0IDE4LjU4NmMxMy43MzEtNy45NDkgMTguMTk0LTMyLjAwMyAxMi40LTYxLjI2OGExNDUuMDE2IDE0NS4wMTYgMCAwIDAtMS41MzUtNi44NDJjMS42Mi0uNDggMy4yMS0uOTc0IDQuNzYtMS40ODhjMjkuMzQ4LTkuNzIzIDQ4LjQ0My0yNS40NDMgNDguNDQzLTQxLjUyYzAtMTUuNDE3LTE3Ljg2OC0zMC4zMjYtNDUuNTE3LTM5Ljg0NFptLTYuMzY1IDcwLjk4NGMtMS40LjQ2My0yLjgzNi45MS00LjMgMS4zNDVjLTMuMjQtMTAuMjU3LTcuNjEyLTIxLjE2My0xMi45NjMtMzIuNDMyYzUuMTA2LTExIDkuMzEtMjEuNzY3IDEyLjQ1OS0zMS45NTdjMi42MTkuNzU4IDUuMTYgMS41NTcgNy42MSAyLjRjMjMuNjkgOC4xNTYgMzguMTQgMjAuMjEzIDM4LjE0IDI5LjUwNGMwIDkuODk2LTE1LjYwNiAyMi43NDMtNDAuOTQ2IDMxLjE0Wm0tMTAuNTE0IDIwLjgzNGMyLjU2MiAxMi45NCAyLjkyNyAyNC42NCAxLjIzIDMzLjc4N2MtMS41MjQgOC4yMTktNC41OSAxMy42OTgtOC4zODIgMTUuODkzYy04LjA2NyA0LjY3LTI1LjMyLTEuNC00My45MjctMTcuNDEyYTE1Ni43MjYgMTU2LjcyNiAwIDAgMS02LjQzNy01Ljg3YzcuMjE0LTcuODg5IDE0LjQyMy0xNy4wNiAyMS40NTktMjcuMjQ2YzEyLjM3Ni0xLjA5OCAyNC4wNjgtMi44OTQgMzQuNjcxLTUuMzQ1YTEzNC4xNyAxMzQuMTcgMCAwIDEgMS4zODYgNi4xOTNaTTg3LjI3NiAyMTQuNTE1Yy03Ljg4MiAyLjc4My0xNC4xNiAyLjg2My0xNy45NTUuNjc1Yy04LjA3NS00LjY1Ny0xMS40MzItMjIuNjM2LTYuODUzLTQ2Ljc1MmExNTYuOTIzIDE1Ni45MjMgMCAwIDEgMS44NjktOC40OTljMTAuNDg2IDIuMzIgMjIuMDkzIDMuOTg4IDM0LjQ5OCA0Ljk5NGM3LjA4NCA5Ljk2NyAxNC41MDEgMTkuMTI4IDIxLjk3NiAyNy4xNWExMzQuNjY4IDEzNC42NjggMCAwIDEtNC44NzcgNC40OTJjLTkuOTMzIDguNjgyLTE5Ljg4NiAxNC44NDItMjguNjU4IDE3Ljk0Wk01MC4zNSAxNDQuNzQ3Yy0xMi40ODMtNC4yNjctMjIuNzkyLTkuODEyLTI5Ljg1OC0xNS44NjNjLTYuMzUtNS40MzctOS41NTUtMTAuODM2LTkuNTU1LTE1LjIxNmMwLTkuMzIyIDEzLjg5Ny0yMS4yMTIgMzcuMDc2LTI5LjI5M2MyLjgxMy0uOTggNS43NTctMS45MDUgOC44MTItMi43NzNjMy4yMDQgMTAuNDIgNy40MDYgMjEuMzE1IDEyLjQ3NyAzMi4zMzJjLTUuMTM3IDExLjE4LTkuMzk5IDIyLjI0OS0xMi42MzQgMzIuNzkyYTEzNC43MTggMTM0LjcxOCAwIDAgMS02LjMxOC0xLjk3OVptMTIuMzc4LTg0LjI2Yy00LjgxMS0yNC41ODctMS42MTYtNDMuMTM0IDYuNDI1LTQ3Ljc4OWM4LjU2NC00Ljk1OCAyNy41MDIgMi4xMTEgNDcuNDYzIDE5LjgzNWExNDQuMzE4IDE0NC4zMTggMCAwIDEgMy44NDEgMy41NDVjLTcuNDM4IDcuOTg3LTE0Ljc4NyAxNy4wOC0yMS44MDggMjYuOTg4Yy0xMi4wNCAxLjExNi0yMy41NjUgMi45MDgtMzQuMTYxIDUuMzA5YTE2MC4zNDIgMTYwLjM0MiAwIDAgMS0xLjc2LTcuODg3Wm0xMTAuNDI3IDI3LjI2OGEzNDcuOCAzNDcuOCAwIDAgMC03Ljc4NS0xMi44MDNjOC4xNjggMS4wMzMgMTUuOTk0IDIuNDA0IDIzLjM0MyA0LjA4Yy0yLjIwNiA3LjA3Mi00Ljk1NiAxNC40NjUtOC4xOTMgMjIuMDQ1YTM4MS4xNTEgMzgxLjE1MSAwIDAgMC03LjM2NS0xMy4zMjJabS00NS4wMzItNDMuODYxYzUuMDQ0IDUuNDY1IDEwLjA5NiAxMS41NjYgMTUuMDY1IDE4LjE4NmEzMjIuMDQgMzIyLjA0IDAgMCAwLTMwLjI1Ny0uMDA2YzQuOTc0LTYuNTU5IDEwLjA2OS0xMi42NTIgMTUuMTkyLTE4LjE4Wk04Mi44MDIgODcuODNhMzIzLjE2NyAzMjMuMTY3IDAgMCAwLTcuMjI3IDEzLjIzOGMtMy4xODQtNy41NTMtNS45MDktMTQuOTgtOC4xMzQtMjIuMTUyYzcuMzA0LTEuNjM0IDE1LjA5My0yLjk3IDIzLjIwOS0zLjk4NGEzMjEuNTI0IDMyMS41MjQgMCAwIDAtNy44NDggMTIuODk3Wm04LjA4MSA2NS4zNTJjLTguMzg1LS45MzYtMTYuMjkxLTIuMjAzLTIzLjU5My0zLjc5M2MyLjI2LTcuMyA1LjA0NS0xNC44ODUgOC4yOTgtMjIuNmEzMjEuMTg3IDMyMS4xODcgMCAwIDAgNy4yNTcgMTMuMjQ2YzIuNTk0IDQuNDggNS4yOCA4Ljg2OCA4LjAzOCAxMy4xNDdabTM3LjU0MiAzMS4wM2MtNS4xODQtNS41OTItMTAuMzU0LTExLjc3OS0xNS40MDMtMTguNDMzYzQuOTAyLjE5MiA5Ljg5OS4yOSAxNC45NzguMjljNS4yMTggMCAxMC4zNzYtLjExNyAxNS40NTMtLjM0M2MtNC45ODUgNi43NzQtMTAuMDE4IDEyLjk3LTE1LjAyOCAxOC40ODZabTUyLjE5OC01Ny44MTdjMy40MjIgNy44IDYuMzA2IDE1LjM0NSA4LjU5NiAyMi41MmMtNy40MjIgMS42OTQtMTUuNDM2IDMuMDU4LTIzLjg4IDQuMDcxYTM4Mi40MTcgMzgyLjQxNyAwIDAgMCA3Ljg1OS0xMy4wMjZhMzQ3LjQwMyAzNDcuNDAzIDAgMCAwIDcuNDI1LTEzLjU2NVptLTE2Ljg5OCA4LjEwMWEzNTguNTU3IDM1OC41NTcgMCAwIDEtMTIuMjgxIDE5LjgxNWEzMjkuNCAzMjkuNCAwIDAgMS0yMy40NDQuODIzYy03Ljk2NyAwLTE1LjcxNi0uMjQ4LTIzLjE3OC0uNzMyYTMxMC4yMDIgMzEwLjIwMiAwIDAgMS0xMi41MTMtMTkuODQ2aC4wMDFhMzA3LjQxIDMwNy40MSAwIDAgMS0xMC45MjMtMjAuNjI3YTMxMC4yNzggMzEwLjI3OCAwIDAgMSAxMC44OS0yMC42MzdsLS4wMDEuMDAxYTMwNy4zMTggMzA3LjMxOCAwIDAgMSAxMi40MTMtMTkuNzYxYzcuNjEzLS41NzYgMTUuNDItLjg3NiAyMy4zMS0uODc2SDEyOGM3LjkyNiAwIDE1Ljc0My4zMDMgMjMuMzU0Ljg4M2EzMjkuMzU3IDMyOS4zNTcgMCAwIDEgMTIuMzM1IDE5LjY5NWEzNTguNDg5IDM1OC40ODkgMCAwIDEgMTEuMDM2IDIwLjU0YTMyOS40NzIgMzI5LjQ3MiAwIDAgMS0xMSAyMC43MjJabTIyLjU2LTEyMi4xMjRjOC41NzIgNC45NDQgMTEuOTA2IDI0Ljg4MSA2LjUyIDUxLjAyNmMtLjM0NCAxLjY2OC0uNzMgMy4zNjctMS4xNSA1LjA5Yy0xMC42MjItMi40NTItMjIuMTU1LTQuMjc1LTM0LjIzLTUuNDA4Yy03LjAzNC0xMC4wMTctMTQuMzIzLTE5LjEyNC0yMS42NC0yNy4wMDhhMTYwLjc4OSAxNjAuNzg5IDAgMCAxIDUuODg4LTUuNGMxOC45LTE2LjQ0NyAzNi41NjQtMjIuOTQxIDQ0LjYxMi0xOC4zWk0xMjggOTAuODA4YzEyLjYyNSAwIDIyLjg2IDEwLjIzNSAyMi44NiAyMi44NnMtMTAuMjM1IDIyLjg2LTIyLjg2IDIyLjg2cy0yMi44Ni0xMC4yMzUtMjIuODYtMjIuODZzMTAuMjM1LTIyLjg2IDIyLjg2LTIyLjg2WiIvPjwvc3ZnPg==",
url: "https://react.dev",
spectrum: "beaten_path",
tagline: "The library for web and native user interfaces",
repo: "facebook/react",
selected: !0,
links: [
{
label: "Learn",
href: "https://react.dev/learn"
},
{
label: "Docs",
href: "https://react.dev/reference/react"
}
]
},
{
category: "UI Framework",
label: "Vue",
flag: "vue",
image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxLjE2ZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjU2IDIyMSI+PHBhdGggZmlsbD0iIzQxQjg4MyIgZD0iTTIwNC44IDBIMjU2TDEyOCAyMjAuOEwwIDBoOTcuOTJMMTI4IDUxLjJMMTU3LjQ0IDBoNDcuMzZaIi8+PHBhdGggZmlsbD0iIzQxQjg4MyIgZD0ibTAgMGwxMjggMjIwLjhMMjU2IDBoLTUxLjJMMTI4IDEzMi40OEw1MC41NiAwSDBaIi8+PHBhdGggZmlsbD0iIzM1NDk1RSIgZD0iTTUwLjU2IDBMMTI4IDEzMy4xMkwyMDQuOCAwaC00Ny4zNkwxMjggNTEuMkw5Ny45MiAwSDUwLjU2WiIvPjwvc3ZnPg==",
url: "https://vuejs.org",
tagline: "The Progressive JavaScript Framework",
repo: "vuejs/core",
links: [
{
label: "Quick start",
href: "https://vuejs.org/guide/quick-start.html"
},
{
label: "Examples",
href: "https://vuejs.org/examples/#hello-world"
},
{
label: "API",
href: "https://vuejs.org/api/"
}
]
},
{
category: "UI Framework",
label: "SolidJS",
flag: "solid",
image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxLjA4ZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIyNTYgMjM5IDI1NiAyMzkiPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0ibG9nb3NTb2xpZGpzSWNvbjAiIHgxPSIyNy41IiB4Mj0iMTUyIiB5MT0iMyIgeTI9IjYzLjUiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQ5LjU2IDIzMy4xMikgc2NhbGUoMS42MTAwNikiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9Ii4xIiBzdG9wLWNvbG9yPSIjNzZiM2UxIi8+PHN0b3Agb2Zmc2V0PSIuMyIgc3RvcC1jb2xvcj0iI2RjZjJmZCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzc2YjNlMSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJsb2dvc1NvbGlkanNJY29uMSIgeDE9Ijk1LjgiIHgyPSI3NCIgeTE9IjMyLjYiIHkyPSIxMDUuMiIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgyNDkuNTYgMjMzLjEyKSBzY2FsZSgxLjYxMDA2KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzc2YjNlMSIvPjxzdG9wIG9mZnNldD0iLjUiIHN0b3AtY29sb3I9IiM0Mzc3YmIiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMxZjNiNzciLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0ibG9nb3NTb2xpZGpzSWNvbjIiIHgxPSIxOC40IiB4Mj0iMTQ0LjMiIHkxPSI2NC4yIiB5Mj0iMTQ5LjgiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQ5LjU2IDIzMy4xMikgc2NhbGUoMS42MTAwNikiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMzMTVhYTkiLz48c3RvcCBvZmZzZXQ9Ii41IiBzdG9wLWNvbG9yPSIjNTE4YWM4Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzE1YWE5Ii8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImxvZ29zU29saWRqc0ljb24zIiB4MT0iNzUuMiIgeDI9IjI0LjQiIHkxPSI3NC41IiB5Mj0iMjYwLjgiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQ5LjU2IDIzMy4xMikgc2NhbGUoMS42MTAwNikiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM0Mzc3YmIiLz48c3RvcCBvZmZzZXQ9Ii41IiBzdG9wLWNvbG9yPSIjMWEzMzZiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMWEzMzZiIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZmlsbD0iIzc2YjNlMSIgZD0iTTUxMiAyODkuNDcycy04NS4zMzMtNjIuNzkxLTE1MS4zNDctNDguMzAxbC00LjgyOSAxLjYxYy05LjY2IDMuMjIxLTE3LjcxMSA4LjA1LTIyLjU0MiAxNC40OTFsLTMuMjE5IDQuODI5bC0yNC4xNTIgNDEuODYybDQxLjg2MyA4LjA1MWMxNy43MSAxMS4yNyA0MC4yNTEgMTYuMTAxIDYxLjE4MiAxMS4yN2w3NC4wNjMgMTQu