breact
Version:
Browser react utility
38 lines (29 loc) • 3.03 kB
JavaScript
/**
* Create an element
* @function create
* @param {Object} Component
* @param {Object} props
* @param {...Object} children - Child elements
* @returns {Object}
*/
;
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _assign = require('babel-runtime/core-js/object/assign');
var _assign2 = _interopRequireDefault(_assign);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var React = require('react');
/** @lends create */
function create(Component, props) {
for (var _len = arguments.length, children = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
children[_key - 2] = arguments[_key];
}
Component = Component.default || Component;
props = (0, _assign2.default)({}, props); // Copy props to cut prototype chain
children = [].concat(children || []).reduce(function (children, child) {
return children.concat(child);
}, []);
return React.createElement.apply(React, [Component, props].concat((0, _toConsumableArray3.default)(children)));
}
module.exports = create;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNyZWF0ZS5qcyJdLCJuYW1lcyI6WyJSZWFjdCIsInJlcXVpcmUiLCJjcmVhdGUiLCJDb21wb25lbnQiLCJwcm9wcyIsImNoaWxkcmVuIiwiZGVmYXVsdCIsImNvbmNhdCIsInJlZHVjZSIsImNoaWxkIiwiY3JlYXRlRWxlbWVudCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztBQVFBOzs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxRQUFRQyxRQUFRLE9BQVIsQ0FBZDs7QUFFQTtBQUNBLFNBQVNDLE1BQVQsQ0FBaUJDLFNBQWpCLEVBQTRCQyxLQUE1QixFQUFnRDtBQUFBLG9DQUFWQyxRQUFVO0FBQVZBLFlBQVU7QUFBQTs7QUFDOUNGLGNBQVlBLFVBQVVHLE9BQVYsSUFBcUJILFNBQWpDO0FBQ0FDLFVBQVEsc0JBQWMsRUFBZCxFQUFrQkEsS0FBbEIsQ0FBUixDQUY4QyxDQUViO0FBQ2pDQyxhQUFXLEdBQUdFLE1BQUgsQ0FBVUYsWUFBWSxFQUF0QixFQUEwQkcsTUFBMUIsQ0FBaUMsVUFBQ0gsUUFBRCxFQUFXSSxLQUFYO0FBQUEsV0FBcUJKLFNBQVNFLE1BQVQsQ0FBZ0JFLEtBQWhCLENBQXJCO0FBQUEsR0FBakMsRUFBOEUsRUFBOUUsQ0FBWDtBQUNBLFNBQU9ULE1BQU1VLGFBQU4sZUFBb0JQLFNBQXBCLEVBQStCQyxLQUEvQiwwQ0FBeUNDLFFBQXpDLEdBQVA7QUFDRDs7QUFFRE0sT0FBT0MsT0FBUCxHQUFpQlYsTUFBakIiLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6ImxpYiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3JlYXRlIGFuIGVsZW1lbnRcbiAqIEBmdW5jdGlvbiBjcmVhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBDb21wb25lbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wc1xuICogQHBhcmFtIHsuLi5PYmplY3R9IGNoaWxkcmVuIC0gQ2hpbGQgZWxlbWVudHNcbiAqIEByZXR1cm5zIHtPYmplY3R9XG4gKi9cbid1c2Ugc3RyaWN0J1xuXG5jb25zdCBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0JylcblxuLyoqIEBsZW5kcyBjcmVhdGUgKi9cbmZ1bmN0aW9uIGNyZWF0ZSAoQ29tcG9uZW50LCBwcm9wcywgLi4uY2hpbGRyZW4pIHtcbiAgQ29tcG9uZW50ID0gQ29tcG9uZW50LmRlZmF1bHQgfHwgQ29tcG9uZW50XG4gIHByb3BzID0gT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMpIC8vIENvcHkgcHJvcHMgdG8gY3V0IHByb3RvdHlwZSBjaGFpblxuICBjaGlsZHJlbiA9IFtdLmNvbmNhdChjaGlsZHJlbiB8fCBbXSkucmVkdWNlKChjaGlsZHJlbiwgY2hpbGQpID0+IGNoaWxkcmVuLmNvbmNhdChjaGlsZCksIFtdKVxuICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChDb21wb25lbnQsIHByb3BzLCAuLi5jaGlsZHJlbilcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVcbiJdfQ==