react-native-chess-kit 0.3.0 → 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/use-board-state.js +5 -2
- package/lib/commonjs/use-board-state.js.map +1 -1
- package/lib/module/use-board-state.js +6 -3
- package/lib/module/use-board-state.js.map +1 -1
- package/lib/typescript/use-board-state.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/use-board-state.ts +5 -3
|
@@ -66,7 +66,10 @@ function useBoardState(initialFen) {
|
|
|
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
|
-
|
|
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)(() => ({
|
|
70
73
|
getLegalMoves,
|
|
71
74
|
isPlayerPiece,
|
|
72
75
|
applyMove,
|
|
@@ -75,6 +78,6 @@ function useBoardState(initialFen) {
|
|
|
75
78
|
getFen,
|
|
76
79
|
getTurn,
|
|
77
80
|
isInCheck
|
|
78
|
-
};
|
|
81
|
+
}), [getLegalMoves, isPlayerPiece, applyMove, undoMove, loadFen, getFen, getTurn, isInCheck]);
|
|
79
82
|
}
|
|
80
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","isInCheck","isCheck"],"sourceRoot":"..\\..\\src","sources":["use-board-state.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AA+BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,aAAaA,CAACC,UAAkB,EAAoB;EAClE,MAAMC,QAAQ,GAAG,IAAAC,aAAM,EAAQ,IAAK,CAAC;EACrC,IAAI,CAACD,QAAQ,CAACE,OAAO,EAAEF,QAAQ,CAACE,OAAO,GAAG,IAAIC,YAAK,CAACJ,UAAU,CAAC;EAE/D,MAAMK,aAAa,GAAG,IAAAC,kBAAW,EAAEC,MAAc,IAAwB;IACvE,IAAI;MACF,MAAMC,KAAK,GAAGP,QAAQ,CAACE,OAAO,CAACK,KAAK,CAAC;QAAED,MAAM,EAAEA,MAAgB;QAAEE,OAAO,EAAE;MAAK,CAAC,CAAC;MACjF,OAAOD,KAAK,CAACE,GAAG,CAAEC,CAAC,KAAM;QACvBJ,MAAM,EAAEI,CAAC,CAACC,EAAE;QACZC,SAAS,EAAEF,CAAC,CAACG,QAAQ,KAAKC;MAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,MAAM;MACN,OAAO,EAAE;IACX;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,aAAa,GAAG,IAAAV,kBAAW,EAC/B,CAACC,MAAc,EAAEU,MAAoB,EAAEC,MAA2B,KAAc;IAC9E,MAAMC,KAAK,GAAGF,MAAM,CAACG,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACd,MAAM,KAAKA,MAAM,CAAC;IACrD,IAAI,CAACY,KAAK,EAAE,OAAO,KAAK;IAExB,IAAID,MAAM,KAAK,MAAM,EAAE,OAAO,IAAI;IAElC,MAAMI,UAAsB,GAAGH,KAAK,CAACI,KAAK,KAAK,GAAG,GAAG,OAAO,GAAG,OAAO;IACtE,OAAOD,UAAU,KAAKJ,MAAM;EAC9B,CAAC,EACD,EACF,CAAC;EAED,MAAMM,SAAS,GAAG,IAAAlB,kBAAW,EAAC,CAACmB,IAAY,EAAEb,EAAU,EAAEc,SAAkB,KAAiB;IAC1F,IAAI;MACFzB,QAAQ,CAACE,OAAO,CAACwB,IAAI,CAAC;QACpBF,IAAI,EAAEA,IAAc;QACpBb,EAAE,EAAEA,EAAY;QAChBc,SAAS,EAAEA;MACb,CAAC,CAAC;MACF,OAAO;QAAEE,OAAO,EAAE,IAAI;QAAEC,GAAG,EAAE5B,QAAQ,CAACE,OAAO,CAAC0B,GAAG,CAAC;MAAE,CAAC;IACvD,CAAC,CAAC,MAAM;MACN,OAAO;QAAED,OAAO,EAAE;MAAM,CAAC;IAC3B;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,QAAQ,GAAG,IAAAxB,kBAAW,EAAC,MAAqB;IAChD,MAAMyB,MAAM,GAAG9B,QAAQ,CAACE,OAAO,CAAC6B,IAAI,CAAC,CAAC;IACtC,OAAOD,MAAM,GAAG9B,QAAQ,CAACE,OAAO,CAAC0B,GAAG,CAAC,CAAC,GAAG,IAAI;EAC/C,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMI,OAAO,GAAG,IAAA3B,kBAAW,EAAEuB,GAAW,IAAK;IAC3C5B,QAAQ,CAACE,OAAO,CAAC+B,IAAI,CAACL,GAAG,CAAC;EAC5B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMM,MAAM,GAAG,IAAA7B,kBAAW,EAAC,MAAML,QAAQ,CAACE,OAAO,CAAC0B,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;EAE5D,MAAMO,OAAO,GAAG,IAAA9B,kBAAW,EAAC,MAAML,QAAQ,CAACE,OAAO,CAACkC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;EAE9D,MAAMC,SAAS,GAAG,IAAAhC,kBAAW,EAAC,MAAML,QAAQ,CAACE,OAAO,CAACoC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC;
|
|
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":[]}
|
|
@@ -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.
|
|
@@ -62,7 +62,10 @@ export function useBoardState(initialFen) {
|
|
|
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
|
-
|
|
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(() => ({
|
|
66
69
|
getLegalMoves,
|
|
67
70
|
isPlayerPiece,
|
|
68
71
|
applyMove,
|
|
@@ -71,6 +74,6 @@ export function useBoardState(initialFen) {
|
|
|
71
74
|
getFen,
|
|
72
75
|
getTurn,
|
|
73
76
|
isInCheck
|
|
74
|
-
};
|
|
77
|
+
}), [getLegalMoves, isPlayerPiece, applyMove, undoMove, loadFen, getFen, getTurn, isInCheck]);
|
|
75
78
|
}
|
|
76
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","isInCheck","isCheck"],"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":"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,
|
|
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.
|
|
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/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
|
|
|
@@ -96,7 +96,9 @@ export function useBoardState(initialFen: string): BoardStateReturn {
|
|
|
96
96
|
|
|
97
97
|
const isInCheck = useCallback(() => chessRef.current.isCheck(), []);
|
|
98
98
|
|
|
99
|
-
|
|
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(() => ({
|
|
100
102
|
getLegalMoves,
|
|
101
103
|
isPlayerPiece,
|
|
102
104
|
applyMove,
|
|
@@ -105,5 +107,5 @@ export function useBoardState(initialFen: string): BoardStateReturn {
|
|
|
105
107
|
getFen,
|
|
106
108
|
getTurn,
|
|
107
109
|
isInCheck,
|
|
108
|
-
};
|
|
110
|
+
}), [getLegalMoves, isPlayerPiece, applyMove, undoMove, loadFen, getFen, getTurn, isInCheck]);
|
|
109
111
|
}
|