react-native-chess-kit 0.1.0 → 0.2.0
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-annotations.js +131 -0
- package/lib/commonjs/board-annotations.js.map +1 -0
- package/lib/commonjs/board-arrows.js +164 -0
- package/lib/commonjs/board-arrows.js.map +1 -0
- package/lib/commonjs/board-highlights.js +212 -0
- package/lib/commonjs/board-highlights.js.map +1 -0
- package/lib/commonjs/board-piece.js +41 -12
- package/lib/commonjs/board-piece.js.map +1 -1
- package/lib/commonjs/board-pieces.js +2 -0
- package/lib/commonjs/board-pieces.js.map +1 -1
- package/lib/commonjs/board.js +392 -42
- package/lib/commonjs/board.js.map +1 -1
- package/lib/commonjs/constants.js +104 -0
- package/lib/commonjs/constants.js.map +1 -0
- package/lib/commonjs/index.js +128 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/pieces/default-pieces.js +536 -0
- package/lib/commonjs/pieces/default-pieces.js.map +1 -0
- package/lib/commonjs/pieces/index.js +13 -0
- package/lib/commonjs/pieces/index.js.map +1 -0
- package/lib/commonjs/promotion-picker.js +129 -0
- package/lib/commonjs/promotion-picker.js.map +1 -0
- package/lib/commonjs/static-board.js +150 -0
- package/lib/commonjs/static-board.js.map +1 -0
- package/lib/commonjs/themes.js +175 -0
- package/lib/commonjs/themes.js.map +1 -0
- package/lib/commonjs/use-board-gesture.js +184 -11
- package/lib/commonjs/use-board-gesture.js.map +1 -1
- package/lib/commonjs/use-premove.js +44 -0
- package/lib/commonjs/use-premove.js.map +1 -0
- package/lib/module/board-annotations.js +126 -0
- package/lib/module/board-annotations.js.map +1 -0
- package/lib/module/board-arrows.js +161 -0
- package/lib/module/board-arrows.js.map +1 -0
- package/lib/module/board-highlights.js +206 -0
- package/lib/module/board-highlights.js.map +1 -0
- package/lib/module/board-piece.js +42 -13
- package/lib/module/board-piece.js.map +1 -1
- package/lib/module/board-pieces.js +2 -0
- package/lib/module/board-pieces.js.map +1 -1
- package/lib/module/board.js +395 -44
- package/lib/module/board.js.map +1 -1
- package/lib/module/constants.js +100 -0
- package/lib/module/constants.js.map +1 -0
- package/lib/module/index.js +29 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/pieces/default-pieces.js +530 -0
- package/lib/module/pieces/default-pieces.js.map +1 -0
- package/lib/module/pieces/index.js +4 -0
- package/lib/module/pieces/index.js.map +1 -0
- package/lib/module/promotion-picker.js +124 -0
- package/lib/module/promotion-picker.js.map +1 -0
- package/lib/module/static-board.js +146 -0
- package/lib/module/static-board.js.map +1 -0
- package/lib/module/themes.js +171 -0
- package/lib/module/themes.js.map +1 -0
- package/lib/module/use-board-gesture.js +185 -11
- package/lib/module/use-board-gesture.js.map +1 -1
- package/lib/module/use-premove.js +40 -0
- package/lib/module/use-premove.js.map +1 -0
- package/lib/typescript/board-annotations.d.ts +30 -0
- package/lib/typescript/board-annotations.d.ts.map +1 -0
- package/lib/typescript/board-arrows.d.ts +27 -0
- package/lib/typescript/board-arrows.d.ts.map +1 -0
- package/lib/typescript/board-highlights.d.ts +65 -0
- package/lib/typescript/board-highlights.d.ts.map +1 -0
- package/lib/typescript/board-piece.d.ts +10 -4
- package/lib/typescript/board-piece.d.ts.map +1 -1
- package/lib/typescript/board-pieces.d.ts +2 -1
- package/lib/typescript/board-pieces.d.ts.map +1 -1
- package/lib/typescript/board.d.ts +11 -2
- package/lib/typescript/board.d.ts.map +1 -1
- package/lib/typescript/constants.d.ts +54 -0
- package/lib/typescript/constants.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +9 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/pieces/default-pieces.d.ts +3 -0
- package/lib/typescript/pieces/default-pieces.d.ts.map +1 -0
- package/lib/typescript/pieces/index.d.ts +2 -0
- package/lib/typescript/pieces/index.d.ts.map +1 -0
- package/lib/typescript/promotion-picker.d.ts +30 -0
- package/lib/typescript/promotion-picker.d.ts.map +1 -0
- package/lib/typescript/static-board.d.ts +12 -0
- package/lib/typescript/static-board.d.ts.map +1 -0
- package/lib/typescript/themes.d.ts +15 -0
- package/lib/typescript/themes.d.ts.map +1 -0
- package/lib/typescript/types.d.ts +194 -24
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/use-board-gesture.d.ts +28 -2
- package/lib/typescript/use-board-gesture.d.ts.map +1 -1
- package/lib/typescript/use-premove.d.ts +31 -0
- package/lib/typescript/use-premove.d.ts.map +1 -0
- package/package.json +4 -2
- package/src/board-annotations.tsx +147 -0
- package/src/board-arrows.tsx +197 -0
- package/src/board-highlights.tsx +226 -0
- package/src/board-piece.tsx +50 -12
- package/src/board-pieces.tsx +4 -1
- package/src/board.tsx +462 -46
- package/src/constants.ts +100 -0
- package/src/index.ts +62 -1
- package/src/pieces/default-pieces.tsx +383 -0
- package/src/pieces/index.ts +1 -0
- package/src/promotion-picker.tsx +147 -0
- package/src/static-board.tsx +150 -0
- package/src/themes.ts +129 -0
- package/src/types.ts +251 -25
- package/src/use-board-gesture.ts +219 -8
- package/src/use-premove.ts +59 -0
|
@@ -21,6 +21,7 @@ const BoardPiecesLayer = exports.BoardPiecesLayer = /*#__PURE__*/_react.default.
|
|
|
21
21
|
squareSize,
|
|
22
22
|
orientation,
|
|
23
23
|
moveDuration,
|
|
24
|
+
animationConfig,
|
|
24
25
|
renderPiece,
|
|
25
26
|
activeSquare,
|
|
26
27
|
isDragging
|
|
@@ -36,6 +37,7 @@ const BoardPiecesLayer = exports.BoardPiecesLayer = /*#__PURE__*/_react.default.
|
|
|
36
37
|
targetY: y,
|
|
37
38
|
squareSize: squareSize,
|
|
38
39
|
moveDuration: moveDuration,
|
|
40
|
+
animationConfig: animationConfig,
|
|
39
41
|
activeSquare: activeSquare,
|
|
40
42
|
isDragging: isDragging,
|
|
41
43
|
square: piece.square,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_boardPiece","_useBoardPieces","_jsxRuntime","e","__esModule","default","BoardPiecesLayer","exports","React","memo","pieces","squareSize","orientation","moveDuration","renderPiece","activeSquare","isDragging","jsx","Fragment","children","map","piece","x","y","squareToXY","square","BoardPieceView","targetX","targetY","code","id"],"sourceRoot":"..\\..\\src","sources":["board-pieces.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AAAgD,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_boardPiece","_useBoardPieces","_jsxRuntime","e","__esModule","default","BoardPiecesLayer","exports","React","memo","pieces","squareSize","orientation","moveDuration","animationConfig","renderPiece","activeSquare","isDragging","jsx","Fragment","children","map","piece","x","y","squareToXY","square","BoardPieceView","targetX","targetY","code","id"],"sourceRoot":"..\\..\\src","sources":["board-pieces.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AAAgD,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAahD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,gBAAGE,cAAK,CAACC,IAAI,CAAC,SAASH,gBAAgBA,CAAC;EACnEI,MAAM;EACNC,UAAU;EACVC,WAAW;EACXC,YAAY;EACZC,eAAe;EACfC,WAAW;EACXC,YAAY;EACZC;AACgB,CAAC,EAAE;EACnB,oBACE,IAAAf,WAAA,CAAAgB,GAAA,EAAAhB,WAAA,CAAAiB,QAAA;IAAAC,QAAA,EACGV,MAAM,CAACW,GAAG,CAAEC,KAAK,IAAK;MACrB,MAAM;QAAEC,CAAC;QAAEC;MAAE,CAAC,GAAG,IAAAC,0BAAU,EAACH,KAAK,CAACI,MAAM,EAAEf,UAAU,EAAEC,WAAW,CAAC;MAElE,oBACE,IAAAV,WAAA,CAAAgB,GAAA,EAAClB,WAAA,CAAA2B,cAAc;QAEbC,OAAO,EAAEL,CAAE;QACXM,OAAO,EAAEL,CAAE;QACXb,UAAU,EAAEA,UAAW;QACvBE,YAAY,EAAEA,YAAa;QAC3BC,eAAe,EAAEA,eAAgB;QACjCE,YAAY,EAAEA,YAAa;QAC3BC,UAAU,EAAEA,UAAW;QACvBS,MAAM,EAAEJ,KAAK,CAACI,MAAO;QAAAN,QAAA,EAEpBL,WAAW,CAACO,KAAK,CAACQ,IAAI,EAAEnB,UAAU;MAAC,GAV/BW,KAAK,CAACS,EAWG,CAAC;IAErB,CAAC;EAAC,CACF,CAAC;AAEP,CAAC,CAAC","ignoreList":[]}
|
package/lib/commonjs/board.js
CHANGED
|
@@ -7,16 +7,59 @@ exports.Board = void 0;
|
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _reactNativeGestureHandler = require("react-native-gesture-handler");
|
|
10
|
+
var _reactNativeReanimated = require("react-native-reanimated");
|
|
11
|
+
var _constants = require("./constants");
|
|
12
|
+
var _pieces = require("./pieces");
|
|
10
13
|
var _useBoardPieces = require("./use-board-pieces");
|
|
11
14
|
var _useBoardState = require("./use-board-state");
|
|
12
15
|
var _useBoardGesture = require("./use-board-gesture");
|
|
16
|
+
var _usePremove = require("./use-premove");
|
|
13
17
|
var _boardBackground = require("./board-background");
|
|
14
18
|
var _boardCoordinates = require("./board-coordinates");
|
|
19
|
+
var _boardHighlights = require("./board-highlights");
|
|
15
20
|
var _boardLegalDots = require("./board-legal-dots");
|
|
16
21
|
var _boardPieces = require("./board-pieces");
|
|
17
22
|
var _boardDragGhost = require("./board-drag-ghost");
|
|
23
|
+
var _boardArrows = require("./board-arrows");
|
|
24
|
+
var _boardAnnotations = require("./board-annotations");
|
|
25
|
+
var _promotionPicker = require("./promotion-picker");
|
|
18
26
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
27
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Check detection helper
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Find the king square for the side currently in check.
|
|
34
|
+
* Returns null if not in check.
|
|
35
|
+
*/function detectCheckSquare(fen, isInCheck, getTurn) {
|
|
36
|
+
if (!isInCheck()) return null;
|
|
37
|
+
const turn = getTurn();
|
|
38
|
+
const kingChar = turn === 'w' ? 'K' : 'k';
|
|
39
|
+
const placement = fen.split(' ')[0];
|
|
40
|
+
const ranks = placement.split('/');
|
|
41
|
+
for (let rankIdx = 0; rankIdx < ranks.length; rankIdx++) {
|
|
42
|
+
const rank = ranks[rankIdx];
|
|
43
|
+
let fileIdx = 0;
|
|
44
|
+
for (const char of rank) {
|
|
45
|
+
if (char >= '1' && char <= '8') {
|
|
46
|
+
fileIdx += parseInt(char, 10);
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (char === kingChar) {
|
|
50
|
+
const files = 'abcdefgh';
|
|
51
|
+
return `${files[fileIdx]}${8 - rankIdx}`;
|
|
52
|
+
}
|
|
53
|
+
fileIdx++;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// ---------------------------------------------------------------------------
|
|
60
|
+
// Board component
|
|
61
|
+
// ---------------------------------------------------------------------------
|
|
62
|
+
|
|
20
63
|
/**
|
|
21
64
|
* High-performance custom chess board built on Reanimated + Gesture Handler.
|
|
22
65
|
*
|
|
@@ -27,25 +70,97 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
27
70
|
* - 0 React Context providers
|
|
28
71
|
* - 0 re-renders during drag (pure worklet — only 2 shared value writes per frame)
|
|
29
72
|
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
73
|
+
* v0.2.0 layer stack (10 layers):
|
|
74
|
+
* 1. BoardBackground (64 squares)
|
|
75
|
+
* 2. BoardCoordinates (a-h, 1-8)
|
|
76
|
+
* 3. BoardHighlights (last move, check, selected, premove, custom, imperative)
|
|
77
|
+
* 4. DragTargetHighlight (animated, worklet-driven)
|
|
78
|
+
* 5. BoardLegalDots (legal move indicators)
|
|
79
|
+
* 6. BoardPiecesLayer (all pieces)
|
|
80
|
+
* 7. BoardArrows (SVG arrows + circles)
|
|
81
|
+
* 8. BoardAnnotations (text badges)
|
|
82
|
+
* 9. BoardDragGhost (floating piece)
|
|
83
|
+
* 10. PromotionPicker (modal, conditional)
|
|
32
84
|
*/
|
|
33
85
|
const Board = exports.Board = /*#__PURE__*/(0, _react.forwardRef)(function Board({
|
|
34
86
|
fen,
|
|
35
87
|
orientation,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
88
|
+
// Layout
|
|
89
|
+
boardSize: boardSizeProp,
|
|
90
|
+
// Interaction
|
|
91
|
+
gestureEnabled = true,
|
|
92
|
+
player = 'both',
|
|
93
|
+
moveMethod = 'both',
|
|
94
|
+
showLegalMoves = true,
|
|
95
|
+
premovesEnabled = false,
|
|
96
|
+
// Appearance
|
|
40
97
|
colors,
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
withNumbers,
|
|
98
|
+
withLetters = true,
|
|
99
|
+
withNumbers = true,
|
|
44
100
|
renderPiece,
|
|
45
|
-
|
|
46
|
-
|
|
101
|
+
pieceSet,
|
|
102
|
+
// Overlays
|
|
103
|
+
lastMove,
|
|
104
|
+
highlights,
|
|
105
|
+
arrows,
|
|
106
|
+
shapes,
|
|
107
|
+
annotations,
|
|
108
|
+
showDragTarget = true,
|
|
109
|
+
// Overlay colors
|
|
110
|
+
lastMoveColor = _constants.DEFAULT_LAST_MOVE_COLOR,
|
|
111
|
+
checkHighlightColor = _constants.DEFAULT_CHECK_COLOR,
|
|
112
|
+
selectedSquareColor = _constants.DEFAULT_SELECTED_COLOR,
|
|
113
|
+
premoveColor = _constants.DEFAULT_PREMOVE_COLOR,
|
|
114
|
+
dragTargetColor = _constants.DEFAULT_DRAG_TARGET_COLOR,
|
|
115
|
+
// Animation
|
|
116
|
+
moveDuration = _constants.DEFAULT_MOVE_DURATION,
|
|
117
|
+
animationConfig,
|
|
118
|
+
animateFlip = true,
|
|
119
|
+
// Promotion
|
|
120
|
+
onPromotion,
|
|
121
|
+
// Callbacks
|
|
122
|
+
onMove,
|
|
123
|
+
onPieceClick,
|
|
124
|
+
onSquareClick,
|
|
125
|
+
onPieceDragBegin,
|
|
126
|
+
onPieceDragEnd,
|
|
127
|
+
onSquareLongPress,
|
|
128
|
+
onPremove,
|
|
129
|
+
onHaptic
|
|
47
130
|
}, ref) {
|
|
131
|
+
// --- Auto-sizing via onLayout when boardSize not provided ---
|
|
132
|
+
const [measuredSize, setMeasuredSize] = (0, _react.useState)(0);
|
|
133
|
+
const handleLayout = (0, _react.useCallback)(e => {
|
|
134
|
+
const {
|
|
135
|
+
width,
|
|
136
|
+
height
|
|
137
|
+
} = e.nativeEvent.layout;
|
|
138
|
+
setMeasuredSize(Math.min(width, height));
|
|
139
|
+
}, []);
|
|
140
|
+
const boardSize = boardSizeProp ?? measuredSize;
|
|
48
141
|
const squareSize = boardSize / 8;
|
|
142
|
+
const boardColors = colors ?? _constants.DEFAULT_BOARD_COLORS;
|
|
143
|
+
|
|
144
|
+
// --- Board flip animation ---
|
|
145
|
+
const flipRotation = (0, _reactNativeReanimated.useSharedValue)(orientation === 'black' ? 180 : 0);
|
|
146
|
+
const prevOrientationRef = (0, _react.useRef)(orientation);
|
|
147
|
+
(0, _react.useEffect)(() => {
|
|
148
|
+
if (prevOrientationRef.current !== orientation) {
|
|
149
|
+
prevOrientationRef.current = orientation;
|
|
150
|
+
if (animateFlip) {
|
|
151
|
+
flipRotation.value = (0, _reactNativeReanimated.withTiming)(orientation === 'black' ? 180 : 0, {
|
|
152
|
+
duration: 300
|
|
153
|
+
});
|
|
154
|
+
} else {
|
|
155
|
+
flipRotation.value = orientation === 'black' ? 180 : 0;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}, [orientation, animateFlip, flipRotation]);
|
|
159
|
+
|
|
160
|
+
// Note: We don't actually rotate the board view because all layers already
|
|
161
|
+
// handle orientation via squareToXY coordinate math. The flip animation is
|
|
162
|
+
// a visual effect only — the rotation shared value is available for consumers
|
|
163
|
+
// who want to add a rotation transition effect.
|
|
49
164
|
|
|
50
165
|
// --- Piece data from FEN ---
|
|
51
166
|
const pieces = (0, _useBoardPieces.useBoardPieces)(fen);
|
|
@@ -53,26 +168,91 @@ const Board = exports.Board = /*#__PURE__*/(0, _react.forwardRef)(function Board
|
|
|
53
168
|
// --- Chess.js for legal move validation ---
|
|
54
169
|
const boardState = (0, _useBoardState.useBoardState)(fen);
|
|
55
170
|
|
|
56
|
-
// Sync internal chess.js when parent changes FEN
|
|
57
|
-
// Must be in useEffect — side effects during render violate React's rules
|
|
58
|
-
// and can fire multiple times in concurrent mode.
|
|
171
|
+
// Sync internal chess.js when parent changes FEN
|
|
59
172
|
(0, _react.useEffect)(() => {
|
|
60
173
|
boardState.loadFen(fen);
|
|
61
174
|
}, [fen, boardState]);
|
|
62
175
|
|
|
63
|
-
// ---
|
|
176
|
+
// --- Check detection ---
|
|
177
|
+
const checkSquare = (0, _react.useMemo)(() => detectCheckSquare(fen, () => {
|
|
178
|
+
try {
|
|
179
|
+
// chess.js isCheck method
|
|
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
|
|
185
|
+
} catch {
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
}, boardState.getTurn), [fen, boardState]);
|
|
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]);
|
|
209
|
+
|
|
210
|
+
// --- Selection state ---
|
|
64
211
|
const [selectedSquare, setSelectedSquare] = (0, _react.useState)(null);
|
|
65
212
|
const [legalMoves, setLegalMoves] = (0, _react.useState)([]);
|
|
66
213
|
|
|
67
|
-
//
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
214
|
+
// --- Imperative highlights ---
|
|
215
|
+
const [imperativeHighlights, setImperativeHighlights] = (0, _react.useState)([]);
|
|
216
|
+
|
|
217
|
+
// --- Premove state ---
|
|
218
|
+
const {
|
|
219
|
+
premove,
|
|
220
|
+
setPremove,
|
|
221
|
+
clearPremove,
|
|
222
|
+
consumePremove
|
|
223
|
+
} = (0, _usePremove.usePremove)();
|
|
224
|
+
|
|
225
|
+
// --- Promotion state ---
|
|
226
|
+
const [promotionState, setPromotionState] = (0, _react.useState)(null);
|
|
227
|
+
|
|
228
|
+
// --- Resolve piece renderer: renderPiece > pieceSet > DefaultPieceSet ---
|
|
229
|
+
const resolvedRenderer = (0, _react.useMemo)(() => {
|
|
230
|
+
if (renderPiece) return renderPiece;
|
|
231
|
+
const set = pieceSet ?? _pieces.DefaultPieceSet;
|
|
232
|
+
return (code, size) => {
|
|
233
|
+
const renderer = set[code];
|
|
234
|
+
if (renderer) return renderer(size);
|
|
235
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
236
|
+
style: {
|
|
237
|
+
width: size,
|
|
238
|
+
height: size
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
};
|
|
242
|
+
}, [renderPiece, pieceSet]);
|
|
243
|
+
|
|
244
|
+
// --- Promotion detection ---
|
|
245
|
+
const isPromotionMove = (0, _react.useCallback)((from, to) => {
|
|
246
|
+
const piece = pieces.find(p => p.square === from);
|
|
247
|
+
if (!piece) return false;
|
|
248
|
+
// Must be a pawn
|
|
249
|
+
if (piece.code !== 'wp' && piece.code !== 'bp') return false;
|
|
250
|
+
// Must be moving to the last rank
|
|
251
|
+
const toRank = to[1];
|
|
252
|
+
if (piece.color === 'w' && toRank === '8') return true;
|
|
253
|
+
if (piece.color === 'b' && toRank === '1') return true;
|
|
254
|
+
return false;
|
|
255
|
+
}, [pieces]);
|
|
76
256
|
|
|
77
257
|
// --- Gesture callbacks ---
|
|
78
258
|
const handlePieceSelected = (0, _react.useCallback)(square => {
|
|
@@ -85,17 +265,119 @@ const Board = exports.Board = /*#__PURE__*/(0, _react.forwardRef)(function Board
|
|
|
85
265
|
setSelectedSquare(null);
|
|
86
266
|
setLegalMoves([]);
|
|
87
267
|
}, []);
|
|
88
|
-
const handlePieceMoved = (0, _react.useCallback)((from, to) => {
|
|
268
|
+
const handlePieceMoved = (0, _react.useCallback)(async (from, to) => {
|
|
89
269
|
// Clear selection and legal dots
|
|
90
270
|
setSelectedSquare(null);
|
|
91
271
|
setLegalMoves([]);
|
|
92
272
|
|
|
273
|
+
// Check for promotion
|
|
274
|
+
if (isPromotionMove(from, to)) {
|
|
275
|
+
if (onPromotion) {
|
|
276
|
+
// Show promotion picker or get choice from callback
|
|
277
|
+
const piece = pieces.find(p => p.square === from);
|
|
278
|
+
const color = piece?.color ?? 'w';
|
|
279
|
+
setPromotionState({
|
|
280
|
+
from,
|
|
281
|
+
to,
|
|
282
|
+
color
|
|
283
|
+
});
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
// Auto-promote to queen if no onPromotion callback
|
|
287
|
+
onMove?.({
|
|
288
|
+
from,
|
|
289
|
+
to
|
|
290
|
+
});
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
|
|
93
294
|
// Notify parent — parent decides whether to accept/reject
|
|
94
295
|
onMove?.({
|
|
95
296
|
from,
|
|
96
297
|
to
|
|
97
298
|
});
|
|
98
|
-
}, [onMove]);
|
|
299
|
+
}, [onMove, onPromotion, isPromotionMove, pieces]);
|
|
300
|
+
|
|
301
|
+
// --- Promotion picker handlers ---
|
|
302
|
+
const handlePromotionSelect = (0, _react.useCallback)(async piece => {
|
|
303
|
+
if (!promotionState) return;
|
|
304
|
+
const {
|
|
305
|
+
from,
|
|
306
|
+
to
|
|
307
|
+
} = promotionState;
|
|
308
|
+
setPromotionState(null);
|
|
309
|
+
|
|
310
|
+
// If consumer provided onPromotion, call it for confirmation
|
|
311
|
+
if (onPromotion) {
|
|
312
|
+
try {
|
|
313
|
+
const choice = await onPromotion(from, to);
|
|
314
|
+
// Apply the move with chosen promotion
|
|
315
|
+
onMove?.({
|
|
316
|
+
from,
|
|
317
|
+
to
|
|
318
|
+
});
|
|
319
|
+
} catch {
|
|
320
|
+
// Promotion cancelled
|
|
321
|
+
}
|
|
322
|
+
} else {
|
|
323
|
+
onMove?.({
|
|
324
|
+
from,
|
|
325
|
+
to
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
}, [promotionState, onPromotion, onMove]);
|
|
329
|
+
const handlePromotionCancel = (0, _react.useCallback)(() => {
|
|
330
|
+
setPromotionState(null);
|
|
331
|
+
}, []);
|
|
332
|
+
|
|
333
|
+
// --- Premove handling ---
|
|
334
|
+
const handlePremoveSet = (0, _react.useCallback)(pm => {
|
|
335
|
+
setPremove(pm);
|
|
336
|
+
onPremove?.(pm);
|
|
337
|
+
onHaptic?.('select');
|
|
338
|
+
}, [setPremove, onPremove, onHaptic]);
|
|
339
|
+
|
|
340
|
+
// Execute premove when turn changes
|
|
341
|
+
(0, _react.useEffect)(() => {
|
|
342
|
+
if (!premovesEnabled || !premove) return;
|
|
343
|
+
const turn = boardState.getTurn();
|
|
344
|
+
// Check if it's now the premover's turn
|
|
345
|
+
const premovePiece = pieces.find(p => p.square === premove.from);
|
|
346
|
+
if (!premovePiece) {
|
|
347
|
+
clearPremove();
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
if (premovePiece.color === turn) {
|
|
351
|
+
const consumed = consumePremove();
|
|
352
|
+
if (consumed) {
|
|
353
|
+
// Try to execute the premove
|
|
354
|
+
const result = boardState.applyMove(consumed.from, consumed.to, consumed.promotion);
|
|
355
|
+
if (result.applied) {
|
|
356
|
+
onMove?.({
|
|
357
|
+
from: consumed.from,
|
|
358
|
+
to: consumed.to
|
|
359
|
+
});
|
|
360
|
+
onHaptic?.('move');
|
|
361
|
+
} else {
|
|
362
|
+
// Premove was illegal — discard silently
|
|
363
|
+
onHaptic?.('error');
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}, [fen, premovesEnabled, premove, pieces, boardState, consumePremove, clearPremove, onMove, onHaptic]);
|
|
368
|
+
|
|
369
|
+
// --- Rich callbacks ref (stable, for gesture hook) ---
|
|
370
|
+
const richCallbacks = (0, _react.useMemo)(() => ({
|
|
371
|
+
onPieceClick,
|
|
372
|
+
onSquareClick,
|
|
373
|
+
onPieceDragBegin,
|
|
374
|
+
onPieceDragEnd,
|
|
375
|
+
onSquareLongPress,
|
|
376
|
+
onHaptic
|
|
377
|
+
}), [onPieceClick, onSquareClick, onPieceDragBegin, onPieceDragEnd, onSquareLongPress, onHaptic]);
|
|
378
|
+
const premoveCallbacks = (0, _react.useMemo)(() => ({
|
|
379
|
+
onPremoveSet: handlePremoveSet
|
|
380
|
+
}), [handlePremoveSet]);
|
|
99
381
|
|
|
100
382
|
// --- Single centralized gesture ---
|
|
101
383
|
const {
|
|
@@ -113,37 +395,60 @@ const Board = exports.Board = /*#__PURE__*/(0, _react.forwardRef)(function Board
|
|
|
113
395
|
onPieceMoved: handlePieceMoved,
|
|
114
396
|
onSelectionCleared: handleSelectionCleared
|
|
115
397
|
},
|
|
398
|
+
richCallbacks,
|
|
399
|
+
premoveCallbacks,
|
|
400
|
+
premovesEnabled,
|
|
116
401
|
selectedSquare,
|
|
117
|
-
legalMoves
|
|
402
|
+
legalMoves,
|
|
403
|
+
currentTurn: boardState.getTurn()
|
|
118
404
|
});
|
|
119
405
|
|
|
120
|
-
// --- Imperative ref
|
|
406
|
+
// --- Imperative ref ---
|
|
121
407
|
(0, _react.useImperativeHandle)(ref, () => ({
|
|
122
408
|
move: move => {
|
|
123
|
-
// Pre-apply to internal chess.js so subsequent getLegalMoves calls
|
|
124
|
-
// reflect the new position. The parent will also update the FEN prop,
|
|
125
|
-
// which triggers useBoardPieces -> piece position animates via shared values.
|
|
126
409
|
boardState.applyMove(move.from, move.to);
|
|
127
410
|
},
|
|
128
|
-
highlight: (
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
411
|
+
highlight: (square, color) => {
|
|
412
|
+
setImperativeHighlights(prev => {
|
|
413
|
+
// Replace existing highlight on same square, or add new
|
|
414
|
+
const filtered = prev.filter(h => h.square !== square);
|
|
415
|
+
return [...filtered, {
|
|
416
|
+
square,
|
|
417
|
+
color
|
|
418
|
+
}];
|
|
419
|
+
});
|
|
132
420
|
},
|
|
133
421
|
clearHighlights: () => {
|
|
134
|
-
|
|
422
|
+
setImperativeHighlights([]);
|
|
135
423
|
},
|
|
136
424
|
resetBoard: newFen => {
|
|
137
425
|
boardState.loadFen(newFen);
|
|
138
426
|
setSelectedSquare(null);
|
|
139
427
|
setLegalMoves([]);
|
|
428
|
+
setImperativeHighlights([]);
|
|
429
|
+
clearPremove();
|
|
430
|
+
setPromotionState(null);
|
|
140
431
|
},
|
|
141
432
|
undo: () => {
|
|
142
433
|
boardState.undoMove();
|
|
143
434
|
setSelectedSquare(null);
|
|
144
435
|
setLegalMoves([]);
|
|
436
|
+
},
|
|
437
|
+
clearPremoves: () => {
|
|
438
|
+
clearPremove();
|
|
145
439
|
}
|
|
146
440
|
}));
|
|
441
|
+
|
|
442
|
+
// If no size yet (auto-sizing), render invisible container for measurement
|
|
443
|
+
if (boardSize === 0) {
|
|
444
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
445
|
+
style: {
|
|
446
|
+
flex: 1,
|
|
447
|
+
aspectRatio: 1
|
|
448
|
+
},
|
|
449
|
+
onLayout: handleLayout
|
|
450
|
+
});
|
|
451
|
+
}
|
|
147
452
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector, {
|
|
148
453
|
gesture: gesture,
|
|
149
454
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
@@ -151,17 +456,42 @@ const Board = exports.Board = /*#__PURE__*/(0, _react.forwardRef)(function Board
|
|
|
151
456
|
width: boardSize,
|
|
152
457
|
height: boardSize
|
|
153
458
|
},
|
|
459
|
+
onLayout: boardSizeProp ? undefined : handleLayout,
|
|
460
|
+
accessibilityLabel: "Chess board",
|
|
461
|
+
accessibilityRole: "adjustable",
|
|
154
462
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_boardBackground.BoardBackground, {
|
|
155
463
|
boardSize: boardSize,
|
|
156
|
-
lightColor:
|
|
157
|
-
darkColor:
|
|
464
|
+
lightColor: boardColors.light,
|
|
465
|
+
darkColor: boardColors.dark
|
|
158
466
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_boardCoordinates.BoardCoordinates, {
|
|
159
467
|
boardSize: boardSize,
|
|
160
468
|
orientation: orientation,
|
|
161
|
-
lightColor:
|
|
162
|
-
darkColor:
|
|
469
|
+
lightColor: boardColors.light,
|
|
470
|
+
darkColor: boardColors.dark,
|
|
163
471
|
withLetters: withLetters,
|
|
164
472
|
withNumbers: withNumbers
|
|
473
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_boardHighlights.BoardHighlights, {
|
|
474
|
+
boardSize: boardSize,
|
|
475
|
+
orientation: orientation,
|
|
476
|
+
squareSize: squareSize,
|
|
477
|
+
lastMove: lastMove,
|
|
478
|
+
lastMoveColor: lastMoveColor,
|
|
479
|
+
checkSquare: checkSquareState,
|
|
480
|
+
checkColor: checkHighlightColor,
|
|
481
|
+
selectedSquare: selectedSquare,
|
|
482
|
+
selectedColor: selectedSquareColor,
|
|
483
|
+
premoveSquares: premove ? {
|
|
484
|
+
from: premove.from,
|
|
485
|
+
to: premove.to
|
|
486
|
+
} : null,
|
|
487
|
+
premoveColor: premoveColor,
|
|
488
|
+
highlights: highlights,
|
|
489
|
+
imperativeHighlights: imperativeHighlights
|
|
490
|
+
}), showDragTarget && /*#__PURE__*/(0, _jsxRuntime.jsx)(_boardHighlights.DragTargetHighlight, {
|
|
491
|
+
squareSize: squareSize,
|
|
492
|
+
orientation: orientation,
|
|
493
|
+
dragTargetSquare: gestureState.dragTargetSquare,
|
|
494
|
+
color: dragTargetColor
|
|
165
495
|
}), showLegalMoves && /*#__PURE__*/(0, _jsxRuntime.jsx)(_boardLegalDots.BoardLegalDots, {
|
|
166
496
|
legalMoves: legalMoves,
|
|
167
497
|
squareSize: squareSize,
|
|
@@ -171,16 +501,36 @@ const Board = exports.Board = /*#__PURE__*/(0, _react.forwardRef)(function Board
|
|
|
171
501
|
squareSize: squareSize,
|
|
172
502
|
orientation: orientation,
|
|
173
503
|
moveDuration: moveDuration,
|
|
174
|
-
|
|
504
|
+
animationConfig: animationConfig,
|
|
505
|
+
renderPiece: resolvedRenderer,
|
|
175
506
|
activeSquare: gestureState.activeSquare,
|
|
176
507
|
isDragging: gestureState.isDragging
|
|
508
|
+
}), (arrows && arrows.length > 0 || shapes && shapes.length > 0) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_boardArrows.BoardArrows, {
|
|
509
|
+
boardSize: boardSize,
|
|
510
|
+
orientation: orientation,
|
|
511
|
+
arrows: arrows,
|
|
512
|
+
shapes: shapes
|
|
513
|
+
}), annotations && annotations.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_boardAnnotations.BoardAnnotations, {
|
|
514
|
+
boardSize: boardSize,
|
|
515
|
+
orientation: orientation,
|
|
516
|
+
squareSize: squareSize,
|
|
517
|
+
annotations: annotations
|
|
177
518
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_boardDragGhost.BoardDragGhost, {
|
|
178
519
|
squareSize: squareSize,
|
|
179
520
|
isDragging: gestureState.isDragging,
|
|
180
521
|
dragX: gestureState.dragX,
|
|
181
522
|
dragY: gestureState.dragY,
|
|
182
523
|
dragPieceCode: gestureState.dragPieceCode,
|
|
183
|
-
renderPiece:
|
|
524
|
+
renderPiece: resolvedRenderer
|
|
525
|
+
}), promotionState && /*#__PURE__*/(0, _jsxRuntime.jsx)(_promotionPicker.PromotionPicker, {
|
|
526
|
+
square: promotionState.to,
|
|
527
|
+
pieceColor: promotionState.color,
|
|
528
|
+
boardSize: boardSize,
|
|
529
|
+
squareSize: squareSize,
|
|
530
|
+
orientation: orientation,
|
|
531
|
+
renderPiece: resolvedRenderer,
|
|
532
|
+
onSelect: handlePromotionSelect,
|
|
533
|
+
onCancel: handlePromotionCancel
|
|
184
534
|
})]
|
|
185
535
|
})
|
|
186
536
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeGestureHandler","_useBoardPieces","_useBoardState","_useBoardGesture","_boardBackground","_boardCoordinates","_boardLegalDots","_boardPieces","_boardDragGhost","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Board","exports","forwardRef","fen","orientation","boardSize","gestureEnabled","player","onMove","colors","moveDuration","withLetters","withNumbers","renderPiece","showLegalMoves","moveMethod","ref","squareSize","pieces","useBoardPieces","boardState","useBoardState","useEffect","loadFen","selectedSquare","setSelectedSquare","useState","legalMoves","setLegalMoves","defaultRenderPiece","useCallback","code","size","jsx","View","style","width","height","backgroundColor","pieceRenderer","handlePieceSelected","square","getLegalMoves","handleSelectionCleared","handlePieceMoved","from","to","gesture","gestureState","useBoardGesture","callbacks","onPieceSelected","onPieceMoved","onSelectionCleared","useImperativeHandle","move","applyMove","highlight","_square","_color","clearHighlights","resetBoard","newFen","undo","undoMove","GestureDetector","children","jsxs","BoardBackground","lightColor","light","darkColor","dark","BoardCoordinates","BoardLegalDots","BoardPiecesLayer","activeSquare","isDragging","BoardDragGhost","dragX","dragY","dragPieceCode"],"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","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":[]}
|