UNPKG

react-flexbox-layout

Version:
262 lines (217 loc) 8.85 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _lodashKeys = require('lodash/keys'); var _lodashKeys2 = _interopRequireDefault(_lodashKeys); var _lodashAssign = require('lodash/assign'); var _lodashAssign2 = _interopRequireDefault(_lodashAssign); var _lodashOmit = require('lodash/omit'); var _lodashOmit2 = _interopRequireDefault(_lodashOmit); function layoutItemChildrenChecker(props, propName, componentName) { if (_react2['default'].Children.count(props[propName]) > 1) { return new Error('Can\'t provide more than one child to ' + componentName + '.'); } } function shouldNotExist(props, propName, componentName) { if (props.hasOwnProperty(propName)) { return new Error('Invalid prop ' + propName + ' supplied to ' + componentName + '.'); } } // // Horizontal Layout // var HLayoutPropTypes = { justifyItems: _propTypes2['default'].oneOf(['left', 'center', 'right']), alignItems: _propTypes2['default'].oneOf(['top', 'middle', 'baseline', 'bottom', 'stretch']), gutter: _propTypes2['default'].number, gutterUnit: _propTypes2['default'].string, width: _propTypes2['default'].any, height: _propTypes2['default'].any, style: function style(props, propName, componentName) { var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = layoutDangerousStyles[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var property = _step.value; if (props[propName] && props[propName].hasOwnProperty(property)) { return new Error(componentName + ' ' + propName + ' can\'t have ' + property + '.'); } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator['return']) { _iterator['return'](); } } finally { if (_didIteratorError) { throw _iteratorError; } } } }, onLayout: _propTypes2['default'].func }; exports.HLayoutPropTypes = HLayoutPropTypes; var HLayoutDefaultPropTypes = { justifyItems: 'left', alignItems: 'top', gutter: 0, gutterUnit: 'px' }; exports.HLayoutDefaultPropTypes = HLayoutDefaultPropTypes; var HLayoutItemPropTypes = { width: _propTypes2['default'].any, height: _propTypes2['default'].any, flexGrow: _propTypes2['default'].oneOfType([_propTypes2['default'].bool, _propTypes2['default'].number]), align: _propTypes2['default'].oneOf(['top', 'middle', 'baseline', 'bottom', 'stretch']), justify: shouldNotExist, gutterLeft: _propTypes2['default'].number, gutterRight: _propTypes2['default'].number, children: layoutItemChildrenChecker, // Used internally by HLayout _gutterLeft: _propTypes2['default'].string, _gutterRight: _propTypes2['default'].string, style: function style(props, propName, componentName) { var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { for (var _iterator2 = layoutItemDangerousStyles[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var property = _step2.value; if (props[propName] && props[propName].hasOwnProperty(property)) { return new Error(componentName + ' ' + propName + ' can\'t have ' + property + '.'); } } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2['return']) { _iterator2['return'](); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } if (props.flexGrow && (props[propName] && props[propName].hasOwnProperty('width') || props.hasOwnProperty('width'))) { return new Error(componentName + ' can\'t define width when flexGrow is set.'); } if (props.align === 'stretch' && (props[propName] && props[propName].hasOwnProperty('height') || props.hasOwnProperty('height'))) { return new Error(componentName + ' can\'t define height when align=stretch.'); } } }; exports.HLayoutItemPropTypes = HLayoutItemPropTypes; // // Vertical Layout // var VLayoutPropTypes = { justifyItems: _propTypes2['default'].oneOf(['left', 'center', 'right', 'stretch']), alignItems: _propTypes2['default'].oneOf(['top', 'middle', 'bottom']), gutter: _propTypes2['default'].number, gutterUnit: _propTypes2['default'].string, width: _propTypes2['default'].any, height: _propTypes2['default'].any, style: function style(props, propName, componentName) { var _iteratorNormalCompletion3 = true; var _didIteratorError3 = false; var _iteratorError3 = undefined; try { for (var _iterator3 = layoutDangerousStyles[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { var property = _step3.value; if (props[propName] && props[propName].hasOwnProperty(property)) { return new Error(componentName + ' ' + propName + ' can\'t have ' + property + '.'); } } } catch (err) { _didIteratorError3 = true; _iteratorError3 = err; } finally { try { if (!_iteratorNormalCompletion3 && _iterator3['return']) { _iterator3['return'](); } } finally { if (_didIteratorError3) { throw _iteratorError3; } } } }, onLayout: _propTypes2['default'].func }; exports.VLayoutPropTypes = VLayoutPropTypes; var VLayoutDefaultPropTypes = { justifyItems: 'stretch', alignItems: 'top', gutter: 0, gutterUnit: 'px' }; exports.VLayoutDefaultPropTypes = VLayoutDefaultPropTypes; var VLayoutItemPropTypes = { width: _propTypes2['default'].any, height: _propTypes2['default'].any, flexGrow: _propTypes2['default'].oneOfType([_propTypes2['default'].bool, _propTypes2['default'].number]), align: shouldNotExist, justify: _propTypes2['default'].oneOf(['left', 'center', 'right', 'stretch']), gutterTop: _propTypes2['default'].number, gutterBottom: _propTypes2['default'].number, children: layoutItemChildrenChecker, // Used internally by VLayout _gutterTop: _propTypes2['default'].string, _gutterBottom: _propTypes2['default'].string, style: function style(props, propName, componentName) { var _iteratorNormalCompletion4 = true; var _didIteratorError4 = false; var _iteratorError4 = undefined; try { for (var _iterator4 = layoutItemDangerousStyles[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { var property = _step4.value; if (props[propName] && props[propName].hasOwnProperty(property)) { return new Error(componentName + ' ' + propName + ' can\'t have ' + property); } } } catch (err) { _didIteratorError4 = true; _iteratorError4 = err; } finally { try { if (!_iteratorNormalCompletion4 && _iterator4['return']) { _iterator4['return'](); } } finally { if (_didIteratorError4) { throw _iteratorError4; } } } if (props.flexGrow && (props[propName] && props[propName].hasOwnProperty('height') || props.hasOwnProperty('height'))) { return new Error(componentName + ' can\'t define height when flexGrow is set'); } if (props.justify === 'stretch' && (props[propName] && props[propName].hasOwnProperty('width') || props.hasOwnProperty('width'))) { return new Error(componentName + ' can\'t define width when justify=stretch'); } } }; exports.VLayoutItemPropTypes = VLayoutItemPropTypes; var everythingDangerousStyles = ["display", "float"]; var layoutDangerousStyles = everythingDangerousStyles; var layoutItemDangerousStyles = everythingDangerousStyles.concat(["position", "margin", "marginTop", "marginBottom", "marginLeft", "marginRight"]); var proprietaryProps = (0, _lodashKeys2['default'])((0, _lodashAssign2['default'])({}, HLayoutPropTypes, HLayoutDefaultPropTypes, HLayoutItemPropTypes, VLayoutPropTypes, VLayoutDefaultPropTypes, VLayoutItemPropTypes)); var cleanProps = function cleanProps(props) { return (0, _lodashOmit2['default'])(props, proprietaryProps); }; exports.cleanProps = cleanProps;