react-native-chess-kit 0.2.1 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/board.js +65 -51
- package/lib/commonjs/board.js.map +1 -1
- package/lib/commonjs/use-board-state.js +8 -3
- package/lib/commonjs/use-board-state.js.map +1 -1
- package/lib/module/board.js +65 -51
- package/lib/module/board.js.map +1 -1
- package/lib/module/use-board-state.js +9 -4
- package/lib/module/use-board-state.js.map +1 -1
- package/lib/typescript/board.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +2 -1
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/use-board-state.d.ts +2 -0
- package/lib/typescript/use-board-state.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/board.tsx +66 -58
- package/src/types.ts +2 -2
- package/src/use-board-state.ts +10 -3
package/lib/commonjs/board.js
CHANGED
|
@@ -162,50 +162,40 @@ const Board = exports.Board = /*#__PURE__*/(0, _react.forwardRef)(function Board
|
|
|
162
162
|
// a visual effect only — the rotation shared value is available for consumers
|
|
163
163
|
// who want to add a rotation transition effect.
|
|
164
164
|
|
|
165
|
-
// ---
|
|
166
|
-
|
|
165
|
+
// --- Internal FEN state ---
|
|
166
|
+
// The Board owns a private FEN that drives piece rendering.
|
|
167
|
+
// It starts from the parent prop and stays in sync via useEffect,
|
|
168
|
+
// but can temporarily diverge when the library applies a user move
|
|
169
|
+
// before the parent validates it (enables Chess.com-style "show move
|
|
170
|
+
// then revert" behavior via undo()).
|
|
171
|
+
const [internalFen, setInternalFen] = (0, _react.useState)(fen);
|
|
167
172
|
|
|
168
|
-
// --- Chess.js for legal move validation ---
|
|
173
|
+
// --- Chess.js for legal move validation + internal state ---
|
|
169
174
|
const boardState = (0, _useBoardState.useBoardState)(fen);
|
|
170
175
|
|
|
171
|
-
// Sync internal chess.js when parent changes FEN
|
|
176
|
+
// Sync internal FEN + chess.js when parent changes the prop FEN.
|
|
177
|
+
// This covers: accepted moves (parent updates FEN), board reset,
|
|
178
|
+
// and opponent programmatic moves.
|
|
172
179
|
(0, _react.useEffect)(() => {
|
|
180
|
+
setInternalFen(fen);
|
|
173
181
|
boardState.loadFen(fen);
|
|
174
182
|
}, [fen, boardState]);
|
|
175
183
|
|
|
184
|
+
// --- Piece data from internal FEN ---
|
|
185
|
+
const pieces = (0, _useBoardPieces.useBoardPieces)(internalFen);
|
|
186
|
+
|
|
176
187
|
// --- Check detection ---
|
|
177
|
-
|
|
188
|
+
// Detect if the side to move is in check by parsing the FEN.
|
|
189
|
+
// chess.js isInCheck() isn't exposed through boardState, so we use
|
|
190
|
+
// a simple heuristic: if the FEN has the king of the side to move
|
|
191
|
+
// attacked, highlight it.
|
|
192
|
+
const checkSquareState = (0, _react.useMemo)(() => {
|
|
178
193
|
try {
|
|
179
|
-
|
|
180
|
-
const chess = boardState;
|
|
181
|
-
const tempFen = chess.getFen();
|
|
182
|
-
// Use a simple approach: check if the FEN active color king is in check
|
|
183
|
-
// by trying to detect via chess.js internal state
|
|
184
|
-
return false; // Will be properly wired below
|
|
194
|
+
return detectCheckSquare(internalFen, () => boardState.isInCheck(), boardState.getTurn);
|
|
185
195
|
} catch {
|
|
186
|
-
return
|
|
196
|
+
return null;
|
|
187
197
|
}
|
|
188
|
-
},
|
|
189
|
-
|
|
190
|
-
// Better check detection: use chess.js directly
|
|
191
|
-
const [checkSquareState, setCheckSquareState] = (0, _react.useState)(null);
|
|
192
|
-
(0, _react.useEffect)(() => {
|
|
193
|
-
// chess.js exposes isCheck() — we need to detect from the FEN position
|
|
194
|
-
// Since boardState wraps chess.js, we detect check by checking if the
|
|
195
|
-
// current side to move has their king in check
|
|
196
|
-
try {
|
|
197
|
-
const square = detectCheckSquare(fen, () => {
|
|
198
|
-
// Attempt move detection: if the position is in check,
|
|
199
|
-
// chess.js will reflect this. We parse the FEN to find the king.
|
|
200
|
-
// For now, use a simple heuristic: try to detect from the position.
|
|
201
|
-
// The real check is done via board state.
|
|
202
|
-
return boardState.getTurn() !== undefined; // placeholder
|
|
203
|
-
}, boardState.getTurn);
|
|
204
|
-
setCheckSquareState(square);
|
|
205
|
-
} catch {
|
|
206
|
-
setCheckSquareState(null);
|
|
207
|
-
}
|
|
208
|
-
}, [fen, boardState]);
|
|
198
|
+
}, [internalFen, boardState]);
|
|
209
199
|
|
|
210
200
|
// --- Selection state ---
|
|
211
201
|
const [selectedSquare, setSelectedSquare] = (0, _react.useState)(null);
|
|
@@ -273,7 +263,6 @@ const Board = exports.Board = /*#__PURE__*/(0, _react.forwardRef)(function Board
|
|
|
273
263
|
// Check for promotion
|
|
274
264
|
if (isPromotionMove(from, to)) {
|
|
275
265
|
if (onPromotion) {
|
|
276
|
-
// Show promotion picker or get choice from callback
|
|
277
266
|
const piece = pieces.find(p => p.square === from);
|
|
278
267
|
const color = piece?.color ?? 'w';
|
|
279
268
|
setPromotionState({
|
|
@@ -283,7 +272,11 @@ const Board = exports.Board = /*#__PURE__*/(0, _react.forwardRef)(function Board
|
|
|
283
272
|
});
|
|
284
273
|
return;
|
|
285
274
|
}
|
|
286
|
-
// Auto-promote to queen
|
|
275
|
+
// Auto-promote to queen
|
|
276
|
+
const result = boardState.applyMove(from, to, 'q');
|
|
277
|
+
if (result.applied && result.fen) {
|
|
278
|
+
setInternalFen(result.fen);
|
|
279
|
+
}
|
|
287
280
|
onMove?.({
|
|
288
281
|
from,
|
|
289
282
|
to
|
|
@@ -291,12 +284,20 @@ const Board = exports.Board = /*#__PURE__*/(0, _react.forwardRef)(function Board
|
|
|
291
284
|
return;
|
|
292
285
|
}
|
|
293
286
|
|
|
294
|
-
//
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
287
|
+
// Apply the move visually FIRST (Chess.com-style: show the move,
|
|
288
|
+
// then let the parent validate). The parent can call undo() to
|
|
289
|
+
// revert if the move is rejected.
|
|
290
|
+
const result = boardState.applyMove(from, to);
|
|
291
|
+
if (result.applied && result.fen) {
|
|
292
|
+
setInternalFen(result.fen);
|
|
293
|
+
onMove?.({
|
|
294
|
+
from,
|
|
295
|
+
to
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
// If chess.js rejected the move (truly illegal), do nothing —
|
|
299
|
+
// piece stays at its original square.
|
|
300
|
+
}, [onMove, onPromotion, isPromotionMove, pieces, boardState]);
|
|
300
301
|
|
|
301
302
|
// --- Promotion picker handlers ---
|
|
302
303
|
const handlePromotionSelect = (0, _react.useCallback)(async piece => {
|
|
@@ -306,26 +307,32 @@ const Board = exports.Board = /*#__PURE__*/(0, _react.forwardRef)(function Board
|
|
|
306
307
|
to
|
|
307
308
|
} = promotionState;
|
|
308
309
|
setPromotionState(null);
|
|
309
|
-
|
|
310
|
-
// If consumer provided onPromotion, call it for confirmation
|
|
310
|
+
const promo = piece.toLowerCase();
|
|
311
311
|
if (onPromotion) {
|
|
312
312
|
try {
|
|
313
313
|
const choice = await onPromotion(from, to);
|
|
314
|
-
|
|
314
|
+
const result = boardState.applyMove(from, to, choice);
|
|
315
|
+
if (result.applied && result.fen) {
|
|
316
|
+
setInternalFen(result.fen);
|
|
317
|
+
}
|
|
315
318
|
onMove?.({
|
|
316
319
|
from,
|
|
317
320
|
to
|
|
318
321
|
});
|
|
319
322
|
} catch {
|
|
320
|
-
// Promotion cancelled
|
|
323
|
+
// Promotion cancelled — piece stays at origin
|
|
321
324
|
}
|
|
322
325
|
} else {
|
|
326
|
+
const result = boardState.applyMove(from, to, promo);
|
|
327
|
+
if (result.applied && result.fen) {
|
|
328
|
+
setInternalFen(result.fen);
|
|
329
|
+
}
|
|
323
330
|
onMove?.({
|
|
324
331
|
from,
|
|
325
332
|
to
|
|
326
333
|
});
|
|
327
334
|
}
|
|
328
|
-
}, [promotionState, onPromotion, onMove]);
|
|
335
|
+
}, [promotionState, onPromotion, onMove, boardState]);
|
|
329
336
|
const handlePromotionCancel = (0, _react.useCallback)(() => {
|
|
330
337
|
setPromotionState(null);
|
|
331
338
|
}, []);
|
|
@@ -352,7 +359,8 @@ const Board = exports.Board = /*#__PURE__*/(0, _react.forwardRef)(function Board
|
|
|
352
359
|
if (consumed) {
|
|
353
360
|
// Try to execute the premove
|
|
354
361
|
const result = boardState.applyMove(consumed.from, consumed.to, consumed.promotion);
|
|
355
|
-
if (result.applied) {
|
|
362
|
+
if (result.applied && result.fen) {
|
|
363
|
+
setInternalFen(result.fen);
|
|
356
364
|
onMove?.({
|
|
357
365
|
from: consumed.from,
|
|
358
366
|
to: consumed.to
|
|
@@ -405,12 +413,14 @@ const Board = exports.Board = /*#__PURE__*/(0, _react.forwardRef)(function Board
|
|
|
405
413
|
|
|
406
414
|
// --- Imperative ref ---
|
|
407
415
|
(0, _react.useImperativeHandle)(ref, () => ({
|
|
408
|
-
move:
|
|
409
|
-
boardState.applyMove(
|
|
416
|
+
move: moveArg => {
|
|
417
|
+
const result = boardState.applyMove(moveArg.from, moveArg.to, moveArg.promotion);
|
|
418
|
+
if (result.applied && result.fen) {
|
|
419
|
+
setInternalFen(result.fen);
|
|
420
|
+
}
|
|
410
421
|
},
|
|
411
422
|
highlight: (square, color) => {
|
|
412
423
|
setImperativeHighlights(prev => {
|
|
413
|
-
// Replace existing highlight on same square, or add new
|
|
414
424
|
const filtered = prev.filter(h => h.square !== square);
|
|
415
425
|
return [...filtered, {
|
|
416
426
|
square,
|
|
@@ -423,6 +433,7 @@ const Board = exports.Board = /*#__PURE__*/(0, _react.forwardRef)(function Board
|
|
|
423
433
|
},
|
|
424
434
|
resetBoard: newFen => {
|
|
425
435
|
boardState.loadFen(newFen);
|
|
436
|
+
setInternalFen(newFen);
|
|
426
437
|
setSelectedSquare(null);
|
|
427
438
|
setLegalMoves([]);
|
|
428
439
|
setImperativeHighlights([]);
|
|
@@ -430,7 +441,10 @@ const Board = exports.Board = /*#__PURE__*/(0, _react.forwardRef)(function Board
|
|
|
430
441
|
setPromotionState(null);
|
|
431
442
|
},
|
|
432
443
|
undo: () => {
|
|
433
|
-
boardState.undoMove();
|
|
444
|
+
const prevFen = boardState.undoMove();
|
|
445
|
+
if (prevFen) {
|
|
446
|
+
setInternalFen(prevFen);
|
|
447
|
+
}
|
|
434
448
|
setSelectedSquare(null);
|
|
435
449
|
setLegalMoves([]);
|
|
436
450
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeGestureHandler","_reactNativeReanimated","_constants","_pieces","_useBoardPieces","_useBoardState","_useBoardGesture","_usePremove","_boardBackground","_boardCoordinates","_boardHighlights","_boardLegalDots","_boardPieces","_boardDragGhost","_boardArrows","_boardAnnotations","_promotionPicker","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","detectCheckSquare","fen","isInCheck","getTurn","turn","kingChar","placement","split","ranks","rankIdx","length","rank","fileIdx","char","parseInt","files","Board","exports","forwardRef","orientation","boardSize","boardSizeProp","gestureEnabled","player","moveMethod","showLegalMoves","premovesEnabled","colors","withLetters","withNumbers","renderPiece","pieceSet","lastMove","highlights","arrows","shapes","annotations","showDragTarget","lastMoveColor","DEFAULT_LAST_MOVE_COLOR","checkHighlightColor","DEFAULT_CHECK_COLOR","selectedSquareColor","DEFAULT_SELECTED_COLOR","premoveColor","DEFAULT_PREMOVE_COLOR","dragTargetColor","DEFAULT_DRAG_TARGET_COLOR","moveDuration","DEFAULT_MOVE_DURATION","animationConfig","animateFlip","onPromotion","onMove","onPieceClick","onSquareClick","onPieceDragBegin","onPieceDragEnd","onSquareLongPress","onPremove","onHaptic","ref","measuredSize","setMeasuredSize","useState","handleLayout","useCallback","width","height","nativeEvent","layout","Math","min","squareSize","boardColors","DEFAULT_BOARD_COLORS","flipRotation","useSharedValue","prevOrientationRef","useRef","useEffect","current","value","withTiming","duration","pieces","useBoardPieces","boardState","useBoardState","loadFen","checkSquare","useMemo","chess","tempFen","getFen","checkSquareState","setCheckSquareState","square","undefined","selectedSquare","setSelectedSquare","legalMoves","setLegalMoves","imperativeHighlights","setImperativeHighlights","premove","setPremove","clearPremove","consumePremove","usePremove","promotionState","setPromotionState","resolvedRenderer","DefaultPieceSet","code","size","renderer","jsx","View","style","isPromotionMove","from","to","piece","find","p","toRank","color","handlePieceSelected","getLegalMoves","handleSelectionCleared","handlePieceMoved","handlePromotionSelect","choice","handlePromotionCancel","handlePremoveSet","pm","premovePiece","consumed","result","applyMove","promotion","applied","richCallbacks","premoveCallbacks","onPremoveSet","gesture","gestureState","useBoardGesture","callbacks","onPieceSelected","onPieceMoved","onSelectionCleared","currentTurn","useImperativeHandle","move","highlight","prev","filtered","filter","h","clearHighlights","resetBoard","newFen","undo","undoMove","clearPremoves","flex","aspectRatio","onLayout","GestureDetector","children","jsxs","accessibilityLabel","accessibilityRole","BoardBackground","lightColor","light","darkColor","dark","BoardCoordinates","BoardHighlights","checkColor","selectedColor","premoveSquares","DragTargetHighlight","dragTargetSquare","BoardLegalDots","BoardPiecesLayer","activeSquare","isDragging","BoardArrows","BoardAnnotations","BoardDragGhost","dragX","dragY","dragPieceCode","PromotionPicker","pieceColor","onSelect","onCancel"],"sourceRoot":"..\\..\\src","sources":["board.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeGestureHandler","_reactNativeReanimated","_constants","_pieces","_useBoardPieces","_useBoardState","_useBoardGesture","_usePremove","_boardBackground","_boardCoordinates","_boardHighlights","_boardLegalDots","_boardPieces","_boardDragGhost","_boardArrows","_boardAnnotations","_promotionPicker","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","detectCheckSquare","fen","isInCheck","getTurn","turn","kingChar","placement","split","ranks","rankIdx","length","rank","fileIdx","char","parseInt","files","Board","exports","forwardRef","orientation","boardSize","boardSizeProp","gestureEnabled","player","moveMethod","showLegalMoves","premovesEnabled","colors","withLetters","withNumbers","renderPiece","pieceSet","lastMove","highlights","arrows","shapes","annotations","showDragTarget","lastMoveColor","DEFAULT_LAST_MOVE_COLOR","checkHighlightColor","DEFAULT_CHECK_COLOR","selectedSquareColor","DEFAULT_SELECTED_COLOR","premoveColor","DEFAULT_PREMOVE_COLOR","dragTargetColor","DEFAULT_DRAG_TARGET_COLOR","moveDuration","DEFAULT_MOVE_DURATION","animationConfig","animateFlip","onPromotion","onMove","onPieceClick","onSquareClick","onPieceDragBegin","onPieceDragEnd","onSquareLongPress","onPremove","onHaptic","ref","measuredSize","setMeasuredSize","useState","handleLayout","useCallback","width","height","nativeEvent","layout","Math","min","squareSize","boardColors","DEFAULT_BOARD_COLORS","flipRotation","useSharedValue","prevOrientationRef","useRef","useEffect","current","value","withTiming","duration","internalFen","setInternalFen","boardState","useBoardState","loadFen","pieces","useBoardPieces","checkSquareState","useMemo","selectedSquare","setSelectedSquare","legalMoves","setLegalMoves","imperativeHighlights","setImperativeHighlights","premove","setPremove","clearPremove","consumePremove","usePremove","promotionState","setPromotionState","resolvedRenderer","DefaultPieceSet","code","size","renderer","jsx","View","style","isPromotionMove","from","to","piece","find","p","square","toRank","color","handlePieceSelected","getLegalMoves","handleSelectionCleared","handlePieceMoved","result","applyMove","applied","handlePromotionSelect","promo","toLowerCase","choice","handlePromotionCancel","handlePremoveSet","pm","premovePiece","consumed","promotion","richCallbacks","premoveCallbacks","onPremoveSet","gesture","gestureState","useBoardGesture","callbacks","onPieceSelected","onPieceMoved","onSelectionCleared","currentTurn","useImperativeHandle","move","moveArg","highlight","prev","filtered","filter","h","clearHighlights","resetBoard","newFen","undo","prevFen","undoMove","clearPremoves","flex","aspectRatio","onLayout","GestureDetector","children","jsxs","undefined","accessibilityLabel","accessibilityRole","BoardBackground","lightColor","light","darkColor","dark","BoardCoordinates","BoardHighlights","checkSquare","checkColor","selectedColor","premoveSquares","DragTargetHighlight","dragTargetSquare","BoardLegalDots","BoardPiecesLayer","activeSquare","isDragging","BoardArrows","BoardAnnotations","BoardDragGhost","dragX","dragY","dragPieceCode","PromotionPicker","pieceColor","onSelect","onCancel"],"sourceRoot":"..\\..\\src","sources":["board.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -65,14 +65,19 @@ function useBoardState(initialFen) {
|
|
|
65
65
|
}, []);
|
|
66
66
|
const getFen = (0, _react.useCallback)(() => chessRef.current.fen(), []);
|
|
67
67
|
const getTurn = (0, _react.useCallback)(() => chessRef.current.turn(), []);
|
|
68
|
-
|
|
68
|
+
const isInCheck = (0, _react.useCallback)(() => chessRef.current.isCheck(), []);
|
|
69
|
+
|
|
70
|
+
// Stable reference so Board's useEffect([fen, boardState]) only re-runs
|
|
71
|
+
// when the fen prop changes — not on every render.
|
|
72
|
+
return (0, _react.useMemo)(() => ({
|
|
69
73
|
getLegalMoves,
|
|
70
74
|
isPlayerPiece,
|
|
71
75
|
applyMove,
|
|
72
76
|
undoMove,
|
|
73
77
|
loadFen,
|
|
74
78
|
getFen,
|
|
75
|
-
getTurn
|
|
76
|
-
|
|
79
|
+
getTurn,
|
|
80
|
+
isInCheck
|
|
81
|
+
}), [getLegalMoves, isPlayerPiece, applyMove, undoMove, loadFen, getFen, getTurn, isInCheck]);
|
|
77
82
|
}
|
|
78
83
|
//# sourceMappingURL=use-board-state.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_chess","useBoardState","initialFen","chessRef","useRef","current","Chess","getLegalMoves","useCallback","square","moves","verbose","map","m","to","isCapture","captured","undefined","isPlayerPiece","pieces","player","piece","find","p","pieceColor","color","applyMove","from","promotion","move","applied","fen","undoMove","result","undo","loadFen","load","getFen","getTurn","turn"],"sourceRoot":"..\\..\\src","sources":["use-board-state.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;
|
|
1
|
+
{"version":3,"names":["_react","require","_chess","useBoardState","initialFen","chessRef","useRef","current","Chess","getLegalMoves","useCallback","square","moves","verbose","map","m","to","isCapture","captured","undefined","isPlayerPiece","pieces","player","piece","find","p","pieceColor","color","applyMove","from","promotion","move","applied","fen","undoMove","result","undo","loadFen","load","getFen","getTurn","turn","isInCheck","isCheck","useMemo"],"sourceRoot":"..\\..\\src","sources":["use-board-state.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/board.js
CHANGED
|
@@ -159,50 +159,40 @@ export const Board = /*#__PURE__*/forwardRef(function Board({
|
|
|
159
159
|
// a visual effect only — the rotation shared value is available for consumers
|
|
160
160
|
// who want to add a rotation transition effect.
|
|
161
161
|
|
|
162
|
-
// ---
|
|
163
|
-
|
|
162
|
+
// --- Internal FEN state ---
|
|
163
|
+
// The Board owns a private FEN that drives piece rendering.
|
|
164
|
+
// It starts from the parent prop and stays in sync via useEffect,
|
|
165
|
+
// but can temporarily diverge when the library applies a user move
|
|
166
|
+
// before the parent validates it (enables Chess.com-style "show move
|
|
167
|
+
// then revert" behavior via undo()).
|
|
168
|
+
const [internalFen, setInternalFen] = useState(fen);
|
|
164
169
|
|
|
165
|
-
// --- Chess.js for legal move validation ---
|
|
170
|
+
// --- Chess.js for legal move validation + internal state ---
|
|
166
171
|
const boardState = useBoardState(fen);
|
|
167
172
|
|
|
168
|
-
// Sync internal chess.js when parent changes FEN
|
|
173
|
+
// Sync internal FEN + chess.js when parent changes the prop FEN.
|
|
174
|
+
// This covers: accepted moves (parent updates FEN), board reset,
|
|
175
|
+
// and opponent programmatic moves.
|
|
169
176
|
useEffect(() => {
|
|
177
|
+
setInternalFen(fen);
|
|
170
178
|
boardState.loadFen(fen);
|
|
171
179
|
}, [fen, boardState]);
|
|
172
180
|
|
|
181
|
+
// --- Piece data from internal FEN ---
|
|
182
|
+
const pieces = useBoardPieces(internalFen);
|
|
183
|
+
|
|
173
184
|
// --- Check detection ---
|
|
174
|
-
|
|
185
|
+
// Detect if the side to move is in check by parsing the FEN.
|
|
186
|
+
// chess.js isInCheck() isn't exposed through boardState, so we use
|
|
187
|
+
// a simple heuristic: if the FEN has the king of the side to move
|
|
188
|
+
// attacked, highlight it.
|
|
189
|
+
const checkSquareState = useMemo(() => {
|
|
175
190
|
try {
|
|
176
|
-
|
|
177
|
-
const chess = boardState;
|
|
178
|
-
const tempFen = chess.getFen();
|
|
179
|
-
// Use a simple approach: check if the FEN active color king is in check
|
|
180
|
-
// by trying to detect via chess.js internal state
|
|
181
|
-
return false; // Will be properly wired below
|
|
191
|
+
return detectCheckSquare(internalFen, () => boardState.isInCheck(), boardState.getTurn);
|
|
182
192
|
} catch {
|
|
183
|
-
return
|
|
193
|
+
return null;
|
|
184
194
|
}
|
|
185
|
-
},
|
|
186
|
-
|
|
187
|
-
// Better check detection: use chess.js directly
|
|
188
|
-
const [checkSquareState, setCheckSquareState] = useState(null);
|
|
189
|
-
useEffect(() => {
|
|
190
|
-
// chess.js exposes isCheck() — we need to detect from the FEN position
|
|
191
|
-
// Since boardState wraps chess.js, we detect check by checking if the
|
|
192
|
-
// current side to move has their king in check
|
|
193
|
-
try {
|
|
194
|
-
const square = detectCheckSquare(fen, () => {
|
|
195
|
-
// Attempt move detection: if the position is in check,
|
|
196
|
-
// chess.js will reflect this. We parse the FEN to find the king.
|
|
197
|
-
// For now, use a simple heuristic: try to detect from the position.
|
|
198
|
-
// The real check is done via board state.
|
|
199
|
-
return boardState.getTurn() !== undefined; // placeholder
|
|
200
|
-
}, boardState.getTurn);
|
|
201
|
-
setCheckSquareState(square);
|
|
202
|
-
} catch {
|
|
203
|
-
setCheckSquareState(null);
|
|
204
|
-
}
|
|
205
|
-
}, [fen, boardState]);
|
|
195
|
+
}, [internalFen, boardState]);
|
|
206
196
|
|
|
207
197
|
// --- Selection state ---
|
|
208
198
|
const [selectedSquare, setSelectedSquare] = useState(null);
|
|
@@ -270,7 +260,6 @@ export const Board = /*#__PURE__*/forwardRef(function Board({
|
|
|
270
260
|
// Check for promotion
|
|
271
261
|
if (isPromotionMove(from, to)) {
|
|
272
262
|
if (onPromotion) {
|
|
273
|
-
// Show promotion picker or get choice from callback
|
|
274
263
|
const piece = pieces.find(p => p.square === from);
|
|
275
264
|
const color = piece?.color ?? 'w';
|
|
276
265
|
setPromotionState({
|
|
@@ -280,7 +269,11 @@ export const Board = /*#__PURE__*/forwardRef(function Board({
|
|
|
280
269
|
});
|
|
281
270
|
return;
|
|
282
271
|
}
|
|
283
|
-
// Auto-promote to queen
|
|
272
|
+
// Auto-promote to queen
|
|
273
|
+
const result = boardState.applyMove(from, to, 'q');
|
|
274
|
+
if (result.applied && result.fen) {
|
|
275
|
+
setInternalFen(result.fen);
|
|
276
|
+
}
|
|
284
277
|
onMove?.({
|
|
285
278
|
from,
|
|
286
279
|
to
|
|
@@ -288,12 +281,20 @@ export const Board = /*#__PURE__*/forwardRef(function Board({
|
|
|
288
281
|
return;
|
|
289
282
|
}
|
|
290
283
|
|
|
291
|
-
//
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
284
|
+
// Apply the move visually FIRST (Chess.com-style: show the move,
|
|
285
|
+
// then let the parent validate). The parent can call undo() to
|
|
286
|
+
// revert if the move is rejected.
|
|
287
|
+
const result = boardState.applyMove(from, to);
|
|
288
|
+
if (result.applied && result.fen) {
|
|
289
|
+
setInternalFen(result.fen);
|
|
290
|
+
onMove?.({
|
|
291
|
+
from,
|
|
292
|
+
to
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
// If chess.js rejected the move (truly illegal), do nothing —
|
|
296
|
+
// piece stays at its original square.
|
|
297
|
+
}, [onMove, onPromotion, isPromotionMove, pieces, boardState]);
|
|
297
298
|
|
|
298
299
|
// --- Promotion picker handlers ---
|
|
299
300
|
const handlePromotionSelect = useCallback(async piece => {
|
|
@@ -303,26 +304,32 @@ export const Board = /*#__PURE__*/forwardRef(function Board({
|
|
|
303
304
|
to
|
|
304
305
|
} = promotionState;
|
|
305
306
|
setPromotionState(null);
|
|
306
|
-
|
|
307
|
-
// If consumer provided onPromotion, call it for confirmation
|
|
307
|
+
const promo = piece.toLowerCase();
|
|
308
308
|
if (onPromotion) {
|
|
309
309
|
try {
|
|
310
310
|
const choice = await onPromotion(from, to);
|
|
311
|
-
|
|
311
|
+
const result = boardState.applyMove(from, to, choice);
|
|
312
|
+
if (result.applied && result.fen) {
|
|
313
|
+
setInternalFen(result.fen);
|
|
314
|
+
}
|
|
312
315
|
onMove?.({
|
|
313
316
|
from,
|
|
314
317
|
to
|
|
315
318
|
});
|
|
316
319
|
} catch {
|
|
317
|
-
// Promotion cancelled
|
|
320
|
+
// Promotion cancelled — piece stays at origin
|
|
318
321
|
}
|
|
319
322
|
} else {
|
|
323
|
+
const result = boardState.applyMove(from, to, promo);
|
|
324
|
+
if (result.applied && result.fen) {
|
|
325
|
+
setInternalFen(result.fen);
|
|
326
|
+
}
|
|
320
327
|
onMove?.({
|
|
321
328
|
from,
|
|
322
329
|
to
|
|
323
330
|
});
|
|
324
331
|
}
|
|
325
|
-
}, [promotionState, onPromotion, onMove]);
|
|
332
|
+
}, [promotionState, onPromotion, onMove, boardState]);
|
|
326
333
|
const handlePromotionCancel = useCallback(() => {
|
|
327
334
|
setPromotionState(null);
|
|
328
335
|
}, []);
|
|
@@ -349,7 +356,8 @@ export const Board = /*#__PURE__*/forwardRef(function Board({
|
|
|
349
356
|
if (consumed) {
|
|
350
357
|
// Try to execute the premove
|
|
351
358
|
const result = boardState.applyMove(consumed.from, consumed.to, consumed.promotion);
|
|
352
|
-
if (result.applied) {
|
|
359
|
+
if (result.applied && result.fen) {
|
|
360
|
+
setInternalFen(result.fen);
|
|
353
361
|
onMove?.({
|
|
354
362
|
from: consumed.from,
|
|
355
363
|
to: consumed.to
|
|
@@ -402,12 +410,14 @@ export const Board = /*#__PURE__*/forwardRef(function Board({
|
|
|
402
410
|
|
|
403
411
|
// --- Imperative ref ---
|
|
404
412
|
useImperativeHandle(ref, () => ({
|
|
405
|
-
move:
|
|
406
|
-
boardState.applyMove(
|
|
413
|
+
move: moveArg => {
|
|
414
|
+
const result = boardState.applyMove(moveArg.from, moveArg.to, moveArg.promotion);
|
|
415
|
+
if (result.applied && result.fen) {
|
|
416
|
+
setInternalFen(result.fen);
|
|
417
|
+
}
|
|
407
418
|
},
|
|
408
419
|
highlight: (square, color) => {
|
|
409
420
|
setImperativeHighlights(prev => {
|
|
410
|
-
// Replace existing highlight on same square, or add new
|
|
411
421
|
const filtered = prev.filter(h => h.square !== square);
|
|
412
422
|
return [...filtered, {
|
|
413
423
|
square,
|
|
@@ -420,6 +430,7 @@ export const Board = /*#__PURE__*/forwardRef(function Board({
|
|
|
420
430
|
},
|
|
421
431
|
resetBoard: newFen => {
|
|
422
432
|
boardState.loadFen(newFen);
|
|
433
|
+
setInternalFen(newFen);
|
|
423
434
|
setSelectedSquare(null);
|
|
424
435
|
setLegalMoves([]);
|
|
425
436
|
setImperativeHighlights([]);
|
|
@@ -427,7 +438,10 @@ export const Board = /*#__PURE__*/forwardRef(function Board({
|
|
|
427
438
|
setPromotionState(null);
|
|
428
439
|
},
|
|
429
440
|
undo: () => {
|
|
430
|
-
boardState.undoMove();
|
|
441
|
+
const prevFen = boardState.undoMove();
|
|
442
|
+
if (prevFen) {
|
|
443
|
+
setInternalFen(prevFen);
|
|
444
|
+
}
|
|
431
445
|
setSelectedSquare(null);
|
|
432
446
|
setLegalMoves([]);
|
|
433
447
|
},
|
package/lib/module/board.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","forwardRef","useState","useCallback","useImperativeHandle","useEffect","useMemo","useRef","View","GestureDetector","useSharedValue","withTiming","DEFAULT_BOARD_COLORS","DEFAULT_MOVE_DURATION","DEFAULT_LAST_MOVE_COLOR","DEFAULT_CHECK_COLOR","DEFAULT_SELECTED_COLOR","DEFAULT_PREMOVE_COLOR","DEFAULT_DRAG_TARGET_COLOR","DefaultPieceSet","useBoardPieces","useBoardState","useBoardGesture","usePremove","BoardBackground","BoardCoordinates","BoardHighlights","DragTargetHighlight","BoardLegalDots","BoardPiecesLayer","BoardDragGhost","BoardArrows","BoardAnnotations","PromotionPicker","jsx","_jsx","jsxs","_jsxs","detectCheckSquare","fen","isInCheck","getTurn","turn","kingChar","placement","split","ranks","rankIdx","length","rank","fileIdx","char","parseInt","files","Board","orientation","boardSize","boardSizeProp","gestureEnabled","player","moveMethod","showLegalMoves","premovesEnabled","colors","withLetters","withNumbers","renderPiece","pieceSet","lastMove","highlights","arrows","shapes","annotations","showDragTarget","lastMoveColor","checkHighlightColor","selectedSquareColor","premoveColor","dragTargetColor","moveDuration","animationConfig","animateFlip","onPromotion","onMove","onPieceClick","onSquareClick","onPieceDragBegin","onPieceDragEnd","onSquareLongPress","onPremove","onHaptic","ref","measuredSize","setMeasuredSize","handleLayout","e","width","height","nativeEvent","layout","Math","min","squareSize","boardColors","flipRotation","prevOrientationRef","current","value","duration","pieces","boardState","loadFen","checkSquare","chess","tempFen","getFen","checkSquareState","setCheckSquareState","square","undefined","selectedSquare","setSelectedSquare","legalMoves","setLegalMoves","imperativeHighlights","setImperativeHighlights","premove","setPremove","clearPremove","consumePremove","promotionState","setPromotionState","resolvedRenderer","set","code","size","renderer","style","isPromotionMove","from","to","piece","find","p","toRank","color","handlePieceSelected","getLegalMoves","handleSelectionCleared","handlePieceMoved","handlePromotionSelect","choice","handlePromotionCancel","handlePremoveSet","pm","premovePiece","consumed","result","applyMove","promotion","applied","richCallbacks","premoveCallbacks","onPremoveSet","gesture","gestureState","callbacks","onPieceSelected","onPieceMoved","onSelectionCleared","currentTurn","move","highlight","prev","filtered","filter","h","clearHighlights","resetBoard","newFen","undo","undoMove","clearPremoves","flex","aspectRatio","onLayout","children","accessibilityLabel","accessibilityRole","lightColor","light","darkColor","dark","checkColor","selectedColor","premoveSquares","dragTargetSquare","activeSquare","isDragging","dragX","dragY","dragPieceCode","pieceColor","onSelect","onCancel"],"sourceRoot":"..\\..\\src","sources":["board.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","forwardRef","useState","useCallback","useImperativeHandle","useEffect","useMemo","useRef","View","GestureDetector","useSharedValue","withTiming","DEFAULT_BOARD_COLORS","DEFAULT_MOVE_DURATION","DEFAULT_LAST_MOVE_COLOR","DEFAULT_CHECK_COLOR","DEFAULT_SELECTED_COLOR","DEFAULT_PREMOVE_COLOR","DEFAULT_DRAG_TARGET_COLOR","DefaultPieceSet","useBoardPieces","useBoardState","useBoardGesture","usePremove","BoardBackground","BoardCoordinates","BoardHighlights","DragTargetHighlight","BoardLegalDots","BoardPiecesLayer","BoardDragGhost","BoardArrows","BoardAnnotations","PromotionPicker","jsx","_jsx","jsxs","_jsxs","detectCheckSquare","fen","isInCheck","getTurn","turn","kingChar","placement","split","ranks","rankIdx","length","rank","fileIdx","char","parseInt","files","Board","orientation","boardSize","boardSizeProp","gestureEnabled","player","moveMethod","showLegalMoves","premovesEnabled","colors","withLetters","withNumbers","renderPiece","pieceSet","lastMove","highlights","arrows","shapes","annotations","showDragTarget","lastMoveColor","checkHighlightColor","selectedSquareColor","premoveColor","dragTargetColor","moveDuration","animationConfig","animateFlip","onPromotion","onMove","onPieceClick","onSquareClick","onPieceDragBegin","onPieceDragEnd","onSquareLongPress","onPremove","onHaptic","ref","measuredSize","setMeasuredSize","handleLayout","e","width","height","nativeEvent","layout","Math","min","squareSize","boardColors","flipRotation","prevOrientationRef","current","value","duration","internalFen","setInternalFen","boardState","loadFen","pieces","checkSquareState","selectedSquare","setSelectedSquare","legalMoves","setLegalMoves","imperativeHighlights","setImperativeHighlights","premove","setPremove","clearPremove","consumePremove","promotionState","setPromotionState","resolvedRenderer","set","code","size","renderer","style","isPromotionMove","from","to","piece","find","p","square","toRank","color","handlePieceSelected","getLegalMoves","handleSelectionCleared","handlePieceMoved","result","applyMove","applied","handlePromotionSelect","promo","toLowerCase","choice","handlePromotionCancel","handlePremoveSet","pm","premovePiece","consumed","promotion","richCallbacks","premoveCallbacks","onPremoveSet","gesture","gestureState","callbacks","onPieceSelected","onPieceMoved","onSelectionCleared","currentTurn","move","moveArg","highlight","prev","filtered","filter","h","clearHighlights","resetBoard","newFen","undo","prevFen","undoMove","clearPremoves","flex","aspectRatio","onLayout","children","undefined","accessibilityLabel","accessibilityRole","lightColor","light","darkColor","dark","checkSquare","checkColor","selectedColor","premoveSquares","dragTargetSquare","activeSquare","isDragging","dragX","dragY","dragPieceCode","pieceColor","onSelect","onCancel"],"sourceRoot":"..\\..\\src","sources":["board.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useRef, useCallback } from 'react';
|
|
3
|
+
import { useRef, useCallback, useMemo } from 'react';
|
|
4
4
|
import { Chess } from 'chess.js';
|
|
5
5
|
/**
|
|
6
6
|
* Manages the internal chess.js instance for legal move validation.
|
|
@@ -61,14 +61,19 @@ export function useBoardState(initialFen) {
|
|
|
61
61
|
}, []);
|
|
62
62
|
const getFen = useCallback(() => chessRef.current.fen(), []);
|
|
63
63
|
const getTurn = useCallback(() => chessRef.current.turn(), []);
|
|
64
|
-
|
|
64
|
+
const isInCheck = useCallback(() => chessRef.current.isCheck(), []);
|
|
65
|
+
|
|
66
|
+
// Stable reference so Board's useEffect([fen, boardState]) only re-runs
|
|
67
|
+
// when the fen prop changes — not on every render.
|
|
68
|
+
return useMemo(() => ({
|
|
65
69
|
getLegalMoves,
|
|
66
70
|
isPlayerPiece,
|
|
67
71
|
applyMove,
|
|
68
72
|
undoMove,
|
|
69
73
|
loadFen,
|
|
70
74
|
getFen,
|
|
71
|
-
getTurn
|
|
72
|
-
|
|
75
|
+
getTurn,
|
|
76
|
+
isInCheck
|
|
77
|
+
}), [getLegalMoves, isPlayerPiece, applyMove, undoMove, loadFen, getFen, getTurn, isInCheck]);
|
|
73
78
|
}
|
|
74
79
|
//# sourceMappingURL=use-board-state.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useRef","useCallback","Chess","useBoardState","initialFen","chessRef","current","getLegalMoves","square","moves","verbose","map","m","to","isCapture","captured","undefined","isPlayerPiece","pieces","player","piece","find","p","pieceColor","color","applyMove","from","promotion","move","applied","fen","undoMove","result","undo","loadFen","load","getFen","getTurn","turn"],"sourceRoot":"..\\..\\src","sources":["use-board-state.ts"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,WAAW,QAAQ,OAAO;
|
|
1
|
+
{"version":3,"names":["useRef","useCallback","useMemo","Chess","useBoardState","initialFen","chessRef","current","getLegalMoves","square","moves","verbose","map","m","to","isCapture","captured","undefined","isPlayerPiece","pieces","player","piece","find","p","pieceColor","color","applyMove","from","promotion","move","applied","fen","undoMove","result","undo","loadFen","load","getFen","getTurn","turn","isInCheck","isCheck"],"sourceRoot":"..\\..\\src","sources":["use-board-state.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board.d.ts","sourceRoot":"","sources":["../../src/board.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EAKX,MAAM,SAAS,CAAC;AAoEjB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"board.d.ts","sourceRoot":"","sources":["../../src/board.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EAKX,MAAM,SAAS,CAAC;AAoEjB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,KAAK,6EAggBhB,CAAC"}
|
|
@@ -108,10 +108,11 @@ export type BoardTheme = {
|
|
|
108
108
|
};
|
|
109
109
|
};
|
|
110
110
|
export type BoardRef = {
|
|
111
|
-
/**
|
|
111
|
+
/** Programmatically apply a move. Animates the piece to the target square. */
|
|
112
112
|
move: (move: {
|
|
113
113
|
from: string;
|
|
114
114
|
to: string;
|
|
115
|
+
promotion?: string;
|
|
115
116
|
}) => void;
|
|
116
117
|
/** Highlight a square with a color. Adds to existing imperative highlights. */
|
|
117
118
|
highlight: (square: string, color: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,8 @@ type BoardStateReturn = {
|
|
|
20
20
|
getFen: () => string;
|
|
21
21
|
/** Get the current turn from internal state */
|
|
22
22
|
getTurn: () => 'w' | 'b';
|
|
23
|
+
/** Check if the current side to move is in check */
|
|
24
|
+
isInCheck: () => boolean;
|
|
23
25
|
};
|
|
24
26
|
/**
|
|
25
27
|
* Manages the internal chess.js instance for legal move validation.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-board-state.d.ts","sourceRoot":"","sources":["../../src/use-board-state.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAEvE,KAAK,UAAU,GAAG;IAChB,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,sDAAsD;IACtD,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,eAAe,EAAE,CAAC;IACrD,yEAAyE;IACzE,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,KAAK,OAAO,CAAC;IAC9F,8EAA8E;IAC9E,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC;IACxE,qDAAqD;IACrD,QAAQ,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC9B,mDAAmD;IACnD,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,8CAA8C;IAC9C,MAAM,EAAE,MAAM,MAAM,CAAC;IACrB,+CAA+C;IAC/C,OAAO,EAAE,MAAM,GAAG,GAAG,GAAG,CAAC;CAC1B,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"use-board-state.d.ts","sourceRoot":"","sources":["../../src/use-board-state.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAEvE,KAAK,UAAU,GAAG;IAChB,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,sDAAsD;IACtD,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,eAAe,EAAE,CAAC;IACrD,yEAAyE;IACzE,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,KAAK,OAAO,CAAC;IAC9F,8EAA8E;IAC9E,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC;IACxE,qDAAqD;IACrD,QAAQ,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC9B,mDAAmD;IACnD,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,8CAA8C;IAC9C,MAAM,EAAE,MAAM,MAAM,CAAC;IACrB,+CAA+C;IAC/C,OAAO,EAAE,MAAM,GAAG,GAAG,GAAG,CAAC;IACzB,oDAAoD;IACpD,SAAS,EAAE,MAAM,OAAO,CAAC;CAC1B,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAqElE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-chess-kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "High-performance chess board for React Native. Single gesture handler, ~40 components, 0 re-renders during drag. Built on Reanimated + Gesture Handler.",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
package/src/board.tsx
CHANGED
|
@@ -203,61 +203,44 @@ export const Board = forwardRef<BoardRef, BoardProps>(function Board(
|
|
|
203
203
|
// a visual effect only — the rotation shared value is available for consumers
|
|
204
204
|
// who want to add a rotation transition effect.
|
|
205
205
|
|
|
206
|
-
// ---
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
//
|
|
206
|
+
// --- Internal FEN state ---
|
|
207
|
+
// The Board owns a private FEN that drives piece rendering.
|
|
208
|
+
// It starts from the parent prop and stays in sync via useEffect,
|
|
209
|
+
// but can temporarily diverge when the library applies a user move
|
|
210
|
+
// before the parent validates it (enables Chess.com-style "show move
|
|
211
|
+
// then revert" behavior via undo()).
|
|
212
|
+
const [internalFen, setInternalFen] = useState(fen);
|
|
213
|
+
|
|
214
|
+
// --- Chess.js for legal move validation + internal state ---
|
|
210
215
|
const boardState = useBoardState(fen);
|
|
211
216
|
|
|
212
|
-
// Sync internal chess.js when parent changes FEN
|
|
217
|
+
// Sync internal FEN + chess.js when parent changes the prop FEN.
|
|
218
|
+
// This covers: accepted moves (parent updates FEN), board reset,
|
|
219
|
+
// and opponent programmatic moves.
|
|
213
220
|
useEffect(() => {
|
|
221
|
+
setInternalFen(fen);
|
|
214
222
|
boardState.loadFen(fen);
|
|
215
223
|
}, [fen, boardState]);
|
|
216
224
|
|
|
217
|
-
// ---
|
|
218
|
-
const
|
|
219
|
-
() => detectCheckSquare(
|
|
220
|
-
fen,
|
|
221
|
-
() => {
|
|
222
|
-
try {
|
|
223
|
-
// chess.js isCheck method
|
|
224
|
-
const chess = boardState as unknown as { getFen: () => string };
|
|
225
|
-
const tempFen = chess.getFen();
|
|
226
|
-
// Use a simple approach: check if the FEN active color king is in check
|
|
227
|
-
// by trying to detect via chess.js internal state
|
|
228
|
-
return false; // Will be properly wired below
|
|
229
|
-
} catch {
|
|
230
|
-
return false;
|
|
231
|
-
}
|
|
232
|
-
},
|
|
233
|
-
boardState.getTurn,
|
|
234
|
-
),
|
|
235
|
-
[fen, boardState],
|
|
236
|
-
);
|
|
225
|
+
// --- Piece data from internal FEN ---
|
|
226
|
+
const pieces = useBoardPieces(internalFen);
|
|
237
227
|
|
|
238
|
-
//
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
228
|
+
// --- Check detection ---
|
|
229
|
+
// Detect if the side to move is in check by parsing the FEN.
|
|
230
|
+
// chess.js isInCheck() isn't exposed through boardState, so we use
|
|
231
|
+
// a simple heuristic: if the FEN has the king of the side to move
|
|
232
|
+
// attacked, highlight it.
|
|
233
|
+
const checkSquareState = useMemo(() => {
|
|
244
234
|
try {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
() =>
|
|
248
|
-
// Attempt move detection: if the position is in check,
|
|
249
|
-
// chess.js will reflect this. We parse the FEN to find the king.
|
|
250
|
-
// For now, use a simple heuristic: try to detect from the position.
|
|
251
|
-
// The real check is done via board state.
|
|
252
|
-
return boardState.getTurn() !== undefined; // placeholder
|
|
253
|
-
},
|
|
235
|
+
return detectCheckSquare(
|
|
236
|
+
internalFen,
|
|
237
|
+
() => boardState.isInCheck(),
|
|
254
238
|
boardState.getTurn,
|
|
255
239
|
);
|
|
256
|
-
setCheckSquareState(square);
|
|
257
240
|
} catch {
|
|
258
|
-
|
|
241
|
+
return null;
|
|
259
242
|
}
|
|
260
|
-
}, [
|
|
243
|
+
}, [internalFen, boardState]);
|
|
261
244
|
|
|
262
245
|
// --- Selection state ---
|
|
263
246
|
const [selectedSquare, setSelectedSquare] = useState<string | null>(null);
|
|
@@ -328,22 +311,32 @@ export const Board = forwardRef<BoardRef, BoardProps>(function Board(
|
|
|
328
311
|
// Check for promotion
|
|
329
312
|
if (isPromotionMove(from, to)) {
|
|
330
313
|
if (onPromotion) {
|
|
331
|
-
// Show promotion picker or get choice from callback
|
|
332
314
|
const piece = pieces.find((p) => p.square === from);
|
|
333
315
|
const color = piece?.color ?? 'w';
|
|
334
|
-
|
|
335
316
|
setPromotionState({ from, to, color });
|
|
336
317
|
return;
|
|
337
318
|
}
|
|
338
|
-
// Auto-promote to queen
|
|
319
|
+
// Auto-promote to queen
|
|
320
|
+
const result = boardState.applyMove(from, to, 'q');
|
|
321
|
+
if (result.applied && result.fen) {
|
|
322
|
+
setInternalFen(result.fen);
|
|
323
|
+
}
|
|
339
324
|
onMove?.({ from, to });
|
|
340
325
|
return;
|
|
341
326
|
}
|
|
342
327
|
|
|
343
|
-
//
|
|
344
|
-
|
|
328
|
+
// Apply the move visually FIRST (Chess.com-style: show the move,
|
|
329
|
+
// then let the parent validate). The parent can call undo() to
|
|
330
|
+
// revert if the move is rejected.
|
|
331
|
+
const result = boardState.applyMove(from, to);
|
|
332
|
+
if (result.applied && result.fen) {
|
|
333
|
+
setInternalFen(result.fen);
|
|
334
|
+
onMove?.({ from, to });
|
|
335
|
+
}
|
|
336
|
+
// If chess.js rejected the move (truly illegal), do nothing —
|
|
337
|
+
// piece stays at its original square.
|
|
345
338
|
},
|
|
346
|
-
[onMove, onPromotion, isPromotionMove, pieces],
|
|
339
|
+
[onMove, onPromotion, isPromotionMove, pieces, boardState],
|
|
347
340
|
);
|
|
348
341
|
|
|
349
342
|
// --- Promotion picker handlers ---
|
|
@@ -353,20 +346,28 @@ export const Board = forwardRef<BoardRef, BoardProps>(function Board(
|
|
|
353
346
|
const { from, to } = promotionState;
|
|
354
347
|
setPromotionState(null);
|
|
355
348
|
|
|
356
|
-
|
|
349
|
+
const promo = piece.toLowerCase();
|
|
350
|
+
|
|
357
351
|
if (onPromotion) {
|
|
358
352
|
try {
|
|
359
353
|
const choice = await onPromotion(from, to);
|
|
360
|
-
|
|
354
|
+
const result = boardState.applyMove(from, to, choice);
|
|
355
|
+
if (result.applied && result.fen) {
|
|
356
|
+
setInternalFen(result.fen);
|
|
357
|
+
}
|
|
361
358
|
onMove?.({ from, to });
|
|
362
359
|
} catch {
|
|
363
|
-
// Promotion cancelled
|
|
360
|
+
// Promotion cancelled — piece stays at origin
|
|
364
361
|
}
|
|
365
362
|
} else {
|
|
363
|
+
const result = boardState.applyMove(from, to, promo);
|
|
364
|
+
if (result.applied && result.fen) {
|
|
365
|
+
setInternalFen(result.fen);
|
|
366
|
+
}
|
|
366
367
|
onMove?.({ from, to });
|
|
367
368
|
}
|
|
368
369
|
},
|
|
369
|
-
[promotionState, onPromotion, onMove],
|
|
370
|
+
[promotionState, onPromotion, onMove, boardState],
|
|
370
371
|
);
|
|
371
372
|
|
|
372
373
|
const handlePromotionCancel = useCallback(() => {
|
|
@@ -400,7 +401,8 @@ export const Board = forwardRef<BoardRef, BoardProps>(function Board(
|
|
|
400
401
|
if (consumed) {
|
|
401
402
|
// Try to execute the premove
|
|
402
403
|
const result = boardState.applyMove(consumed.from, consumed.to, consumed.promotion);
|
|
403
|
-
if (result.applied) {
|
|
404
|
+
if (result.applied && result.fen) {
|
|
405
|
+
setInternalFen(result.fen);
|
|
404
406
|
onMove?.({ from: consumed.from, to: consumed.to });
|
|
405
407
|
onHaptic?.('move');
|
|
406
408
|
} else {
|
|
@@ -454,13 +456,15 @@ export const Board = forwardRef<BoardRef, BoardProps>(function Board(
|
|
|
454
456
|
|
|
455
457
|
// --- Imperative ref ---
|
|
456
458
|
useImperativeHandle(ref, () => ({
|
|
457
|
-
move: (
|
|
458
|
-
boardState.applyMove(
|
|
459
|
+
move: (moveArg) => {
|
|
460
|
+
const result = boardState.applyMove(moveArg.from, moveArg.to, moveArg.promotion);
|
|
461
|
+
if (result.applied && result.fen) {
|
|
462
|
+
setInternalFen(result.fen);
|
|
463
|
+
}
|
|
459
464
|
},
|
|
460
465
|
|
|
461
466
|
highlight: (square, color) => {
|
|
462
467
|
setImperativeHighlights((prev) => {
|
|
463
|
-
// Replace existing highlight on same square, or add new
|
|
464
468
|
const filtered = prev.filter((h) => h.square !== square);
|
|
465
469
|
return [...filtered, { square, color }];
|
|
466
470
|
});
|
|
@@ -472,6 +476,7 @@ export const Board = forwardRef<BoardRef, BoardProps>(function Board(
|
|
|
472
476
|
|
|
473
477
|
resetBoard: (newFen) => {
|
|
474
478
|
boardState.loadFen(newFen);
|
|
479
|
+
setInternalFen(newFen);
|
|
475
480
|
setSelectedSquare(null);
|
|
476
481
|
setLegalMoves([]);
|
|
477
482
|
setImperativeHighlights([]);
|
|
@@ -480,7 +485,10 @@ export const Board = forwardRef<BoardRef, BoardProps>(function Board(
|
|
|
480
485
|
},
|
|
481
486
|
|
|
482
487
|
undo: () => {
|
|
483
|
-
boardState.undoMove();
|
|
488
|
+
const prevFen = boardState.undoMove();
|
|
489
|
+
if (prevFen) {
|
|
490
|
+
setInternalFen(prevFen);
|
|
491
|
+
}
|
|
484
492
|
setSelectedSquare(null);
|
|
485
493
|
setLegalMoves([]);
|
|
486
494
|
},
|
package/src/types.ts
CHANGED
|
@@ -157,8 +157,8 @@ export type BoardTheme = {
|
|
|
157
157
|
// ---------------------------------------------------------------------------
|
|
158
158
|
|
|
159
159
|
export type BoardRef = {
|
|
160
|
-
/**
|
|
161
|
-
move: (move: { from: string; to: string }) => void;
|
|
160
|
+
/** Programmatically apply a move. Animates the piece to the target square. */
|
|
161
|
+
move: (move: { from: string; to: string; promotion?: string }) => void;
|
|
162
162
|
/** Highlight a square with a color. Adds to existing imperative highlights. */
|
|
163
163
|
highlight: (square: string, color: string) => void;
|
|
164
164
|
/** Clear all imperative highlights */
|
package/src/use-board-state.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useRef, useCallback } from 'react';
|
|
1
|
+
import { useRef, useCallback, useMemo } from 'react';
|
|
2
2
|
import { Chess } from 'chess.js';
|
|
3
3
|
import type { Square } from 'chess.js';
|
|
4
4
|
|
|
@@ -26,6 +26,8 @@ type BoardStateReturn = {
|
|
|
26
26
|
getFen: () => string;
|
|
27
27
|
/** Get the current turn from internal state */
|
|
28
28
|
getTurn: () => 'w' | 'b';
|
|
29
|
+
/** Check if the current side to move is in check */
|
|
30
|
+
isInCheck: () => boolean;
|
|
29
31
|
};
|
|
30
32
|
|
|
31
33
|
/**
|
|
@@ -92,7 +94,11 @@ export function useBoardState(initialFen: string): BoardStateReturn {
|
|
|
92
94
|
|
|
93
95
|
const getTurn = useCallback(() => chessRef.current.turn(), []);
|
|
94
96
|
|
|
95
|
-
|
|
97
|
+
const isInCheck = useCallback(() => chessRef.current.isCheck(), []);
|
|
98
|
+
|
|
99
|
+
// Stable reference so Board's useEffect([fen, boardState]) only re-runs
|
|
100
|
+
// when the fen prop changes — not on every render.
|
|
101
|
+
return useMemo(() => ({
|
|
96
102
|
getLegalMoves,
|
|
97
103
|
isPlayerPiece,
|
|
98
104
|
applyMove,
|
|
@@ -100,5 +106,6 @@ export function useBoardState(initialFen: string): BoardStateReturn {
|
|
|
100
106
|
loadFen,
|
|
101
107
|
getFen,
|
|
102
108
|
getTurn,
|
|
103
|
-
|
|
109
|
+
isInCheck,
|
|
110
|
+
}), [getLegalMoves, isPlayerPiece, applyMove, undoMove, loadFen, getFen, getTurn, isInCheck]);
|
|
104
111
|
}
|