@bianic-ui/utils
Version:
Common utilties and types for Bianic UI
45 lines (34 loc) • 1.51 kB
JavaScript
exports.__esModule = true;
exports.mergeProps = mergeProps;
var _function = require("./function");
var _dom = require("./dom");
var _assertion = require("./assertion");
function mergeProps() {
var result = {};
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
for (var _i = 0, _args = args; _i < _args.length; _i++) {
var props = _args[_i];
for (var _key2 in result) {
// Chain events
if (/^on[A-Z]/.test(_key2) && (0, _assertion.isFunction)(result[_key2]) && (0, _assertion.isFunction)(props[_key2])) {
result[_key2] = (0, _function.callAllHandlers)(result[_key2], props[_key2]); // Merge classnames, sometimes classNames are empty string which eval to false, so we just need to do a type check
} else if (_key2 === "className" && (0, _assertion.isString)(result.className) && (0, _assertion.isString)(props.className)) {
result[_key2] = (0, _dom.cx)(result.className, props.className);
} else if (_key2 === "id" && result.id && props.id) {
result.id = (0, _dom.cx)(result.id, props.id); // Override others
} else {
result[_key2] = props[_key2] !== undefined ? props[_key2] : result[_key2];
}
} // Add props from b that are not in a
for (var _key3 in props) {
if (result[_key3] === undefined) {
result[_key3] = props[_key3];
}
}
}
return result;
}
//# sourceMappingURL=merge-props.js.map
;