UNPKG

@nex-ui/utils

Version:

Utility functions for React components.

46 lines (40 loc) 1.55 kB
'use strict'; 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;