alinea
Version:
Headless git-based CMS
64 lines (62 loc) • 1.98 kB
JavaScript
// node_modules/@alinea/styler/dist/index.js
var hasClassName = Symbol.for("@alinea/styler/hasClassName");
var VARIANT_PREFIX = "is-";
function styler(input, globals = [], module = typeof input === "object" ? input : void 0) {
const className = typeof input === "string" ? input : "";
const result = module?.[className] ?? className;
return new Proxy(
Object.assign(
function instance(...variants) {
return variants.flatMap(function makeVariant(variant) {
if (!variant) return [];
if (Array.isArray(variant)) return variant.map(makeVariant);
if (typeof variant === "function") return variant[hasClassName];
if (typeof variant === "object") {
if (hasClassName in variant) return variant[hasClassName];
return Object.entries(variant).map(([cl, active]) => active && cl).filter(Boolean).map(makeVariant);
}
const requestedVariant = VARIANT_PREFIX + variant;
return module?.[requestedVariant] ?? requestedVariant;
}).concat(globals).concat(result).join(" ");
},
{
[hasClassName]: result,
toString() {
return result;
},
with(...extra) {
return styler(
className,
globals.concat(extra.filter(Boolean)),
module
);
},
mergeProps(props) {
if (!props) return this;
return this.with(props.className);
}
}
),
{
get(target, property) {
if (typeof property !== "string") return target[property];
return target[property] ??= styler(
className ? `${className}-${property}` : property,
void 0,
module
);
}
}
);
}
styler.global = (className) => {
return { [hasClassName]: className };
};
styler.merge = (props) => {
return styler.global(props.className);
};
var dist_default = styler;
export {
styler,
dist_default
};