UNPKG

xuxi

Version:

Dynamically utility for combining different types of values ​​into a single value.

33 lines (32 loc) 1.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.variant = variant; /** * A utility function for managing values based on variant configurations. * * This function simplifies the handling of value generation with support for variants, default values, and dynamic overrides. * @template T - The type of variant keys and their possible values. * @param {VariantRecord<T>} keys - The configuration object containing: * - `assign` (optional): A base value to always include. * - `variants`: An object defining variant keys and their possible values as classes. * - `defaultVariants` (optional): Default variant values for each variant key. * @returns {(result?: VariantResult<T>) => string} - A function that takes a `result` object to override default variants * and generates a class name string. * @example * @see {@link https://ilkhoeri.github.io/xuxi/variant Docs} */ function variant(keys) { return (result = {}) => { const mergedVariant = { ...keys.defaultVariants, ...result }; const variants = Object.keys(keys.variants) .map(key => { var _a; const variantKey = mergedVariant[key] || ((_a = keys.defaultVariants) === null || _a === void 0 ? void 0 : _a[key]); return variantKey ? keys.variants[key][variantKey] : undefined; }) .filter(Boolean) .join(' ') .trim(); return keys.assign ? [keys.assign, variants].join(' ').trim() : variants; }; }