react-toolbox-build4server
Version:
Builds react-toolbox in such a way that it's components can be required and used in node - most likely for server-side rendered webapps - without having to depend on webpack to build your entire server-side project
66 lines (49 loc) • 1.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _style = require('./style');
var _style2 = _interopRequireDefault(_style);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Layout = function Layout(_ref) {
var className = _ref.className;
var children = _ref.children;
return _react2.default.createElement(
'div',
{ 'data-react-toolbox': 'layout', className: (0, _classnames2.default)(_style2.default.root, className) },
children
);
};
var ALLOWED = ['Panel', 'NavDrawer|Panel', 'NavDrawer|Panel|Sidebar', 'Panel|Sidebar'];
function getChildName(child) {
if (child.type) {
return child.type.name || child.type;
}
if (!child.constructor || !child.constructor.name) {
return 'UNKNOWN';
}
return child.constructor.name;
}
Layout.propTypes = {
children: function children(props, propName, componentName) {
// Accept only [NavDrawer]Pane[Sidebar]
var children = props[propName];
if (_react2.default.Children.count(children) > 3) {
return new Error('`' + componentName + '` ' + 'should have a Pane for a child, optionally preceded and/or followed by a Drawer.');
}
var names = _react2.default.Children.map(children, getChildName).join('|');
if (! ~ALLOWED.indexOf(names)) {
return new Error('`' + componentName + '` ' + 'should have a Panel for a child, optionally preceded by a NavDrawer and/or followed by a Sidebar.');
}
},
className: _react2.default.PropTypes.string
};
Layout.defaultProps = {
className: ''
};
exports.default = Layout;
//# sourceMappingURL=Layout.js.map