react-stonecutter
Version:
Animated grid layout component for React
22 lines (15 loc) • 626 B
JavaScript
export default function(items, props) {
const { columnWidth, itemHeight = 150, columns,
gutterWidth, gutterHeight } = props;
const positions = items.map((itemProps, i) => {
const column = i % columns;
const row = Math.floor(i / columns);
const x = column * columnWidth + column * gutterWidth;
const y = row * itemHeight + row * gutterHeight;
return [x, y];
});
const gridWidth = columns * columnWidth + ((columns - 1) * gutterWidth);
const gridHeight = Math.ceil(items.length / columns) *
(itemHeight + gutterHeight) - gutterHeight;
return { positions, gridWidth, gridHeight };
}