@brizy/ui
Version:
React elements in Brizy style
26 lines (25 loc) • 1.15 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.classNames = void 0;
const classnames_1 = __importDefault(require("classnames"));
const constants_1 = require("./constants");
function parseClassNames(arg) {
if (typeof arg === "string" && !arg.startsWith(constants_1.BRZ_PREFIX)) {
return `${constants_1.BRZ_PREFIX}-${arg}`;
}
if (Array.isArray(arg)) {
return arg.map(parseClassNames);
}
if (typeof arg === "object" && arg !== null) {
return Object.entries(arg).reduce((acc, [key, value]) => {
const prefixedKey = key.startsWith(constants_1.BRZ_PREFIX) ? key : `${constants_1.BRZ_PREFIX}-${key}`;
return Object.assign(Object.assign({}, acc), { [prefixedKey]: value });
}, {});
}
return arg;
}
const classNames = (...classNameWithoutPrefix) => (...classNameToPrefix) => (0, classnames_1.default)(classNameWithoutPrefix, classNameToPrefix.map(parseClassNames));
exports.classNames = classNames;