react-collection-helpers
Version:
React Collection Helpers Component
39 lines (29 loc) • 1.51 kB
JavaScript
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;