function createGrid()

in src/gemini_95/index.ts [1216:1252]


    function createGrid() {
        boardElement.innerHTML = ''; // Clear previous grid
        grid = []; // Reset internal grid state
        boardElement.style.gridTemplateColumns = `repeat(${minesweeperGridSize.cols}, 20px)`;
        boardElement.style.gridTemplateRows = `repeat(${minesweeperGridSize.rows}, 20px)`;

        for (let r = 0; r < minesweeperGridSize.rows; r++) {
            const row: MinesweeperCell[] = [];
            for (let c = 0; c < minesweeperGridSize.cols; c++) {
                const cellElement = document.createElement('div');
                cellElement.classList.add('minesweeper-cell');

                const cellData: MinesweeperCell = {
                    isMine: false,
                    isRevealed: false,
                    isFlagged: false,
                    adjacentMines: 0,
                    element: cellElement,
                    row: r,
                    col: c,
                };

                cellElement.addEventListener('click', () => handleCellClick(cellData));
                cellElement.addEventListener('contextmenu', (e) => {
                    e.preventDefault();
                    handleCellRightClick(cellData);
                });

                row.push(cellData);
                boardElement.appendChild(cellElement);
            }
            grid.push(row);
        }
        console.log(`Grid created (${minesweeperGridSize.rows}x${minesweeperGridSize.cols})`);

        // Mines will be placed on the first click
    }