UNPKG

cvb

Version:

Class Variance Builder 👷🏼

108 lines (107 loc) 3.04 kB
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 };