cvb
Version:
Class Variance Builder 👷🏼
108 lines (107 loc) • 3.04 kB
JavaScript
const g = (s) => typeof s == "boolean" ? `${s}` : s === 0 ? "0" : s, y = (s = {}, e) => {
const r = { ...e };
for (const t in s) {
const l = s[t];
typeof l < "u" && (r[t] = l);
}
return r;
}, h = (s = {}, e, r = {}) => {
let t = "";
for (const l in e) {
const c = s[l] ?? r[l], n = g(c), o = e[l][n];
o && (t && (t += " "), t += o);
}
return t;
}, V = (s, e) => {
let r = "";
for (const t of s) {
let l = !0;
for (const c in t) {
if (c === "class" || c === "className") continue;
const n = t[c], o = e[c];
if (!(Array.isArray(n) ? n.includes(o) : o === n)) {
l = !1;
break;
}
}
l && (r && (r += " "), r += t.class ?? t.className);
}
return r;
}, k = (s = {}, e, r, t = {}) => {
var c;
let l = "";
for (const n in r) {
const o = s[n] ?? t[n], f = g(o), i = (c = r[n][f]) == null ? void 0 : c[e];
i && (l && (l += " "), l += i);
}
return l;
}, x = (s, e, r) => {
var l, c;
let t = "";
for (const n of e) {
let o = !0;
for (const i in n) {
if (i === "class" || i === "className") continue;
const a = n[i], m = r[i];
if (!(Array.isArray(a) ? a.includes(m) : m === a)) {
o = !1;
break;
}
}
const f = ((l = n.class) == null ? void 0 : l[s]) ?? ((c = n.className) == null ? void 0 : c[s]);
o && f && (t && (t += " "), t += f);
}
return t;
}, b = (...s) => {
let e = "", r = 0, t;
for (; r < s.length; )
(t = s[r++]) && typeof t == "string" && (e && (e += " "), e += t);
return e;
}, A = (s) => {
const e = (...c) => {
var n;
return typeof ((n = s == null ? void 0 : s.hooks) == null ? void 0 : n.onComplete) == "function" ? s.hooks.onComplete(b(...c)) : b(...c);
};
return {
compose: (...c) => (n) => {
const { class: o, className: f, ...i } = n ?? {};
return e(...c.map((a) => a(i)), o ?? f);
},
cvb: (c) => {
const { base: n, variants: o, compoundVariants: f = [], defaultVariants: i = {} } = c ?? {};
return o === void 0 ? (a) => e(n, (a == null ? void 0 : a.class) ?? (a == null ? void 0 : a.className)) : (a) => {
const m = h(a, o, i), v = V(
f,
y(a, i)
);
return e(n, m, v, (a == null ? void 0 : a.class) ?? (a == null ? void 0 : a.className));
};
},
svb: (c) => {
const { slots: n = [], base: o, variants: f = {}, compoundVariants: i = [], defaultVariants: a = {} } = c ?? {};
return (m) => {
const v = {}, { class: C, className: N, ...d } = m ?? {};
for (const u of n)
v[u] = e(
o == null ? void 0 : o[u],
k(d, u, f, a),
x(
u,
i,
y(d, a)
),
(C == null ? void 0 : C[u]) ?? (N == null ? void 0 : N[u])
);
return v;
};
},
cx: e
};
}, { compose: K, cvb: S, svb: P, cx: B } = A();
export {
K as compose,
S as cvb,
B as cx,
A as defineConfig,
P as svb
};