UNPKG

react-collection-helpers

Version:
45 lines (32 loc) 1.62 kB
'use strict'; exports.__esModule = true; var _react = require('react'); var _misc = require('../../helpers/misc.helpers'); var _errorMessage = require('../../helpers/error-message.helpers'); function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } var BaseCollectionHelper = function BaseCollectionHelper(_ref) { var collection = _ref.collection, children = _ref.children, elementType = _ref.elementType, delegated = _objectWithoutProperties(_ref, ['collection', 'children', 'elementType']); if ((0, _react.isValidElement)(children)) { // Check to make sure it's one of ours. if (!(0, _misc.isCollectionHelper)(children)) { throw new Error((0, _errorMessage.unknownChildPassedToCollectionHelper)(children)); } return (0, _react.cloneElement)(children, { collection: collection }); } return (0, _react.createElement)(elementType, delegated, collection.map(children)); }; BaseCollectionHelper.displayName = 'ReactCollectionHelperBase'; BaseCollectionHelper.propTypes = { children: _react.PropTypes.oneOfType([_react.PropTypes.func, _react.PropTypes.element]).isRequired, elementType: _react.PropTypes.oneOfType([_react.PropTypes.string, // For native nodes (eg. 'div') _react.PropTypes.func]).isRequired, collection: _react.PropTypes.array.isRequired }; BaseCollectionHelper.defaultProps = { elementType: 'div' }; exports.default = BaseCollectionHelper; module.exports = exports['default'];