UNPKG

@bianic-ui/utils

Version:

Common utilties and types for Bianic UI

45 lines (34 loc) 1.51 kB
"use strict"; 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