UNPKG

react-collection-helpers

Version:
39 lines (29 loc) 1.51 kB
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; } import { createElement, isValidElement, cloneElement, PropTypes } from 'react'; import { isCollectionHelper } from '../../helpers/misc.helpers'; import { unknownChildPassedToCollectionHelper } from '../../helpers/error-message.helpers'; var BaseCollectionHelper = function BaseCollectionHelper(_ref) { var collection = _ref.collection, children = _ref.children, elementType = _ref.elementType, delegated = _objectWithoutProperties(_ref, ['collection', 'children', 'elementType']); if (isValidElement(children)) { // Check to make sure it's one of ours. if (!isCollectionHelper(children)) { throw new Error(unknownChildPassedToCollectionHelper(children)); } return cloneElement(children, { collection: collection }); } return createElement(elementType, delegated, collection.map(children)); }; BaseCollectionHelper.displayName = 'ReactCollectionHelperBase'; BaseCollectionHelper.propTypes = { children: PropTypes.oneOfType([PropTypes.func, PropTypes.element]).isRequired, elementType: PropTypes.oneOfType([PropTypes.string, // For native nodes (eg. 'div') PropTypes.func]).isRequired, collection: PropTypes.array.isRequired }; BaseCollectionHelper.defaultProps = { elementType: 'div' }; export default BaseCollectionHelper;