UNPKG

merge-props

Version:

Merges className, style, and DOM event handlers for React elements

61 lines 1.91 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; function pushProp(target, key, value) { if (key === 'className') { target.className = [target.className, value].join(' ').trim(); } else if (key === 'style') { target.style = __assign(__assign({}, target.style), value); } else if (typeof value === 'function') { var oldFn_1 = target[key]; target[key] = oldFn_1 ? function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } oldFn_1.apply(void 0, args); value.apply(void 0, args); } : value; } else if ( // skip merging undefined values value === undefined || // skip if both value are the same primitive value (typeof value !== 'object' && value === target[key])) { return; } else if (!(key in target)) { target[key] = value; } else { throw new Error("Didn\u2019t know how to merge prop '".concat(key, "'. ") + "Only 'className', 'style', and event handlers are supported"); } } module.exports = function mergeProps() { var props = []; for (var _i = 0; _i < arguments.length; _i++) { props[_i] = arguments[_i]; } if (props.length === 1) { return props[0]; } return props.reduce(function (merged, ps) { for (var key in ps) { pushProp(merged, key, ps[key]); } return merged; }, {}); }; //# sourceMappingURL=index.js.map