react-collection-helpers
Version:
React Collection Helpers Component
45 lines (32 loc) • 1.62 kB
JavaScript
;
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'];