UNPKG

@klass/core

Version:

Class variant utility

50 lines (49 loc) 2.04 kB
import { clsx as l } from "clsx"; const y = (n, t) => `${n ?? t}`, h = (n) => n, g = "prefix", p = (n, t) => `${n}${t}`, O = (n, t) => `${t}${n}`, x = (n) => { const t = {}; let e; for (e in n) t[e] = l(n[e]); return t; }, j = (n) => { const t = x(n.variant), e = (f) => { let a; return `${a = y(f, n.defaultVariant)}` in n.variant ? t[a] : void 0; }; return e.o = n, e; }, A = ({ class: n, ...t }) => t, M = (n) => Object.keys(n), G = ({ class: n }) => l(n), I = (n, t = {}) => { const { it: e = h } = t, f = l(n.base), a = [], d = Object.entries(n.variants).reduce((v, [V, u]) => (a.push(V), v[V] = j({ variant: u, defaultVariant: n.defaultVariants?.[V] }), v), {}), s = n.compoundVariants ?? [], i = s.length > 0, r = s.map(A), c = r.map(M), F = s.map(G), m = (v, V) => { let u = "", o, C; for (o = 0; o < a.length; o++) (C = d[a[o]](v?.[a[o]])) && (u && (u += " "), u += C); if (i) for (o = 0; o < r.length; o++) { let b = r[o], $; c[o].every((k) => typeof ($ = b[k]) < "u" && (v?.[k] ?? n.defaultVariants?.[k]) === $) && (C = F[o]) && (u && (u += " "), u += C); } return e(l(f, u, V)); }; return m.o = n, m.v = d, m.vk = a, m; }, P = (n, t = {}) => { const { as: e = g } = t, f = Object.keys(n.conditions), a = x(n.variant), d = e === "suffix" ? O : p, s = (i) => { let r; return typeof i != "object" ? `${r = y(i)}` in n.variant ? d(n.conditions[n.defaultCondition], a[r]) : void 0 : l( f.map((c) => c in i && `${r = y(i[c])}` in n.variant && d(n.conditions[c], a[r])) ); }; return s.o = n, s; }, K = (n, t = {}) => { const { as: e, it: f = h } = t, a = [], d = Object.entries(n.variants).reduce((i, [r, c]) => (a.push(r), i[r] = P({ conditions: n.conditions, defaultCondition: n.defaultCondition, variant: c }, { as: e }), i), {}), s = (i, r) => f( l( a.map((c) => d[c](i?.[c])), r ) ); return s.o = n, s.rv = d, s.rvk = a, s; }; export { I as klass, K as reklass, P as revariant, j as variant };