import React from "react"; import { Line, Group, RegularPolygon } from "react-konva"; import { getCellLocation, gridClipFunction, shouldClipCell, } from "../helpers/grid"; import { useGrid } from "../contexts/GridContext"; function Grid({ strokeWidth, stroke }) { const { grid, gridStrokeWidth, gridPixelSize, gridOffset, gridCellPixelSize, } = useGrid(); if (!grid?.size.x || !grid?.size.y) { return null; } const shapes = []; if (grid.type === "square") { for (let x = 1; x < grid.size.x; x++) { shapes.push( ); } for (let y = 1; y < grid.size.y; y++) { shapes.push( ); } } else if (grid.type === "hexVertical" || grid.type === "hexHorizontal") { // Start at -1 to overshoot the bounds of the grid to ensure all lines are drawn for (let x = -1; x < grid.size.x; x++) { for (let y = -1; y < grid.size.y; y++) { const cellLocation = getCellLocation(grid, x, y, gridCellPixelSize); shapes.push( gridClipFunction(context, grid, x, y, gridCellPixelSize)) } x={cellLocation.x} y={cellLocation.y} offset={gridOffset} > ); } } } return {shapes}; } Grid.defaultProps = { strokeWidth: 0.1, stroke: "white", }; export default Grid;