feat: implement digit entry in edit mode (Phase 40.3.3)

- Add setCell method to useBoard to update board state
- Handle digit keys 1-9 in edit mode in useCursor
- Move boardRendered counter to useBoard for proper cursor re-rendering
- Fix golden glow disappearing after digit entry
- Digits display with .user-entered class via renderer
This commit is contained in:
2025-10-22 19:49:12 +01:00
parent 6a4b72075c
commit bc8eeaf400
5 changed files with 151 additions and 9 deletions
+14 -1
View File
@@ -1,4 +1,4 @@
import { useRef } from 'react';
import { useRef, useState } from 'react';
import { SudokuGenerator } from './SudokuGenerator';
import { SudokuRenderer } from './SudokuRenderer';
import type { Difficulty } from './SudokuGenerator';
@@ -10,6 +10,7 @@ export function useBoard() {
const boardRef = useRef<string>('');
const solutionRef = useRef<string>('');
const initialBoardRef = useRef<string>('');
const [boardRendered, setBoardRendered] = useState(0);
function generateBoard(difficulty: Difficulty = 'easy') {
if (!generatorRef.current) {
@@ -41,6 +42,16 @@ export function useBoard() {
} else {
rendererRef.current.renderEmpty();
}
setBoardRendered(prev => prev + 1);
}
function setCell(row: number, col: number, value: string): void {
const board = boardRef.current.split('');
const index = row * 9 + col;
board[index] = value;
boardRef.current = board.join('');
renderBoard();
}
return {
@@ -50,7 +61,9 @@ export function useBoard() {
boardRef,
solutionRef,
initialBoardRef,
boardRendered,
generateBoard,
renderBoard,
setCell,
};
}