UNPKG

react-stonecutter

Version:
71 lines (58 loc) 1.77 kB
import React from 'react'; import isEqualWith from 'lodash.isequalwith'; import reactBrickwork, { SpringGrid, CSSGrid, makeResponsive, measureItems } from '../../../src/index'; export default React.createClass({ componentWillMount() { this.createGrid(this.props); }, componentWillReceiveProps(nextProps) { if (!isEqualWith(nextProps, this.props, (a, b, key) => { if (key === 'children') return true; })) { this.createGrid(nextProps); } }, createGrid({ useCSS, measured, responsive }) { let Grid = useCSS ? CSSGrid : SpringGrid; if (measured) { Grid = measureItems(Grid); } if (responsive) { Grid = makeResponsive(Grid, { maxWidth: 1920, minPadding: 100 }); } this.setState({ Grid }); }, render() { const { children, useCSS, responsive, layout, enterExitStyle, duration, easing, stiffness, damping, gutters, columns, ...rest } = this.props; const { Grid } = this.state; const gridLayout = reactBrickwork.layout[layout]; const gridEnterExitStyle = reactBrickwork.enterExitStyle[enterExitStyle]; return ( <Grid {...rest} className="grid" component="ul" columns={!responsive ? columns : null} columnWidth={150} gutterWidth={gutters} gutterHeight={gutters} layout={gridLayout} enter={gridEnterExitStyle.enter} entered={gridEnterExitStyle.entered} exit={gridEnterExitStyle.exit} perspective={600} duration={useCSS ? duration : null} easing={useCSS ? easing : null} springConfig={!useCSS && stiffness && damping ? { stiffness, damping } : null} > {children} </Grid> ); } });