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:
@@ -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,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user