tss-react
Version:
Type safe CSS-in-JS API heavily inspired by react-jss
28 lines (27 loc) • 1.15 kB
JavaScript
;
/* eslint-disable @typescript-eslint/ban-types */
/* eslint-disable @typescript-eslint/no-explicit-any */
Object.defineProperty(exports, "__esModule", { value: true });
exports.mergeClasses = void 0;
const objectKeys_1 = require("./tools/objectKeys");
function mergeClasses(classesFromUseStyles, classesOverrides, cx) {
//NOTE: We use this test to be resilient in case classesOverrides is not of the expected type.
if (!(classesOverrides instanceof Object)) {
return classesFromUseStyles;
}
const out = {};
(0, objectKeys_1.objectKeys)(classesFromUseStyles).forEach(ruleName => (out[ruleName] = cx(classesFromUseStyles[ruleName], classesOverrides[ruleName])));
(0, objectKeys_1.objectKeys)(classesOverrides).forEach(ruleName => {
if (ruleName in classesFromUseStyles) {
return;
}
const className = classesOverrides[ruleName];
//...Same here, that why we don't do className === undefined
if (typeof className !== "string") {
return;
}
out[ruleName] = className;
});
return out;
}
exports.mergeClasses = mergeClasses;