@nex-ui/utils
Version:
Utility functions for React components.
46 lines (40 loc) • 1.55 kB
JavaScript
var clsx = require('clsx');
var mergeWith = require('lodash.mergewith');
var chain = require('./chain.cjs');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var clsx__default = /*#__PURE__*/_interopDefault(clsx);
var mergeWith__default = /*#__PURE__*/_interopDefault(mergeWith);
function mergeProps(...args) {
const result = {
...args[0]
};
for(let i = 1; i < args.length; i += 1){
const props = args[i];
for(const key in props){
const a = result[key];
const b = props[key];
if (typeof a === 'function' && typeof b === 'function' && key[0] === 'o' && key[1] === 'n' && key.charCodeAt(2) >= /* 'A' */ 65 && key.charCodeAt(2) <= /* 'Z' */ 90) {
result[key] = chain.chain(a, b);
} else if (key === 'className') {
result[key] = clsx__default.default(a, b);
} else if (key === 'style') {
result[key] = {
...a,
...b
};
} else if (key === 'classes') {
result[key] = mergeWith__default.default({}, a, b, (classObj, classSrc)=>clsx__default.default(classObj, classSrc));
} else if (key === 'sx' && a && b) {
result[key] = [
a,
b
].flat(1);
} else {
result[key] = b !== undefined ? b : a;
}
}
}
return result;
}
exports.mergeProps = mergeProps;
;