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.
Files changed (109) hide show
  1. package/lib/commonjs/board-annotations.js +131 -0
  2. package/lib/commonjs/board-annotations.js.map +1 -0
  3. package/lib/commonjs/board-arrows.js +164 -0
  4. package/lib/commonjs/board-arrows.js.map +1 -0
  5. package/lib/commonjs/board-highlights.js +212 -0
  6. package/lib/commonjs/board-highlights.js.map +1 -0
  7. package/lib/commonjs/board-piece.js +41 -12
  8. package/lib/commonjs/board-piece.js.map +1 -1
  9. package/lib/commonjs/board-pieces.js +2 -0
  10. package/lib/commonjs/board-pieces.js.map +1 -1
  11. package/lib/commonjs/board.js +392 -42
  12. package/lib/commonjs/board.js.map +1 -1
  13. package/lib/commonjs/constants.js +104 -0
  14. package/lib/commonjs/constants.js.map +1 -0
  15. package/lib/commonjs/index.js +128 -0
  16. package/lib/commonjs/index.js.map +1 -1
  17. package/lib/commonjs/pieces/default-pieces.js +536 -0
  18. package/lib/commonjs/pieces/default-pieces.js.map +1 -0
  19. package/lib/commonjs/pieces/index.js +13 -0
  20. package/lib/commonjs/pieces/index.js.map +1 -0
  21. package/lib/commonjs/promotion-picker.js +129 -0
  22. package/lib/commonjs/promotion-picker.js.map +1 -0
  23. package/lib/commonjs/static-board.js +150 -0
  24. package/lib/commonjs/static-board.js.map +1 -0
  25. package/lib/commonjs/themes.js +175 -0
  26. package/lib/commonjs/themes.js.map +1 -0
  27. package/lib/commonjs/use-board-gesture.js +184 -11
  28. package/lib/commonjs/use-board-gesture.js.map +1 -1
  29. package/lib/commonjs/use-premove.js +44 -0
  30. package/lib/commonjs/use-premove.js.map +1 -0
  31. package/lib/module/board-annotations.js +126 -0
  32. package/lib/module/board-annotations.js.map +1 -0
  33. package/lib/module/board-arrows.js +161 -0
  34. package/lib/module/board-arrows.js.map +1 -0
  35. package/lib/module/board-highlights.js +206 -0
  36. package/lib/module/board-highlights.js.map +1 -0
  37. package/lib/module/board-piece.js +42 -13
  38. package/lib/module/board-piece.js.map +1 -1
  39. package/lib/module/board-pieces.js +2 -0
  40. package/lib/module/board-pieces.js.map +1 -1
  41. package/lib/module/board.js +395 -44
  42. package/lib/module/board.js.map +1 -1
  43. package/lib/module/constants.js +100 -0
  44. package/lib/module/constants.js.map +1 -0
  45. package/lib/module/index.js +29 -1
  46. package/lib/module/index.js.map +1 -1
  47. package/lib/module/pieces/default-pieces.js +530 -0
  48. package/lib/module/pieces/default-pieces.js.map +1 -0
  49. package/lib/module/pieces/index.js +4 -0
  50. package/lib/module/pieces/index.js.map +1 -0
  51. package/lib/module/promotion-picker.js +124 -0
  52. package/lib/module/promotion-picker.js.map +1 -0
  53. package/lib/module/static-board.js +146 -0
  54. package/lib/module/static-board.js.map +1 -0
  55. package/lib/module/themes.js +171 -0
  56. package/lib/module/themes.js.map +1 -0
  57. package/lib/module/use-board-gesture.js +185 -11
  58. package/lib/module/use-board-gesture.js.map +1 -1
  59. package/lib/module/use-premove.js +40 -0
  60. package/lib/module/use-premove.js.map +1 -0
  61. package/lib/typescript/board-annotations.d.ts +30 -0
  62. package/lib/typescript/board-annotations.d.ts.map +1 -0
  63. package/lib/typescript/board-arrows.d.ts +27 -0
  64. package/lib/typescript/board-arrows.d.ts.map +1 -0
  65. package/lib/typescript/board-highlights.d.ts +65 -0
  66. package/lib/typescript/board-highlights.d.ts.map +1 -0
  67. package/lib/typescript/board-piece.d.ts +10 -4
  68. package/lib/typescript/board-piece.d.ts.map +1 -1
  69. package/lib/typescript/board-pieces.d.ts +2 -1
  70. package/lib/typescript/board-pieces.d.ts.map +1 -1
  71. package/lib/typescript/board.d.ts +11 -2
  72. package/lib/typescript/board.d.ts.map +1 -1
  73. package/lib/typescript/constants.d.ts +54 -0
  74. package/lib/typescript/constants.d.ts.map +1 -0
  75. package/lib/typescript/index.d.ts +9 -1
  76. package/lib/typescript/index.d.ts.map +1 -1
  77. package/lib/typescript/pieces/default-pieces.d.ts +3 -0
  78. package/lib/typescript/pieces/default-pieces.d.ts.map +1 -0
  79. package/lib/typescript/pieces/index.d.ts +2 -0
  80. package/lib/typescript/pieces/index.d.ts.map +1 -0
  81. package/lib/typescript/promotion-picker.d.ts +30 -0
  82. package/lib/typescript/promotion-picker.d.ts.map +1 -0
  83. package/lib/typescript/static-board.d.ts +12 -0
  84. package/lib/typescript/static-board.d.ts.map +1 -0
  85. package/lib/typescript/themes.d.ts +15 -0
  86. package/lib/typescript/themes.d.ts.map +1 -0
  87. package/lib/typescript/types.d.ts +194 -24
  88. package/lib/typescript/types.d.ts.map +1 -1
  89. package/lib/typescript/use-board-gesture.d.ts +28 -2
  90. package/lib/typescript/use-board-gesture.d.ts.map +1 -1
  91. package/lib/typescript/use-premove.d.ts +31 -0
  92. package/lib/typescript/use-premove.d.ts.map +1 -0
  93. package/package.json +4 -2
  94. package/src/board-annotations.tsx +147 -0
  95. package/src/board-arrows.tsx +197 -0
  96. package/src/board-highlights.tsx +226 -0
  97. package/src/board-piece.tsx +50 -12
  98. package/src/board-pieces.tsx +4 -1
  99. package/src/board.tsx +462 -46
  100. package/src/constants.ts +100 -0
  101. package/src/index.ts +62 -1
  102. package/src/pieces/default-pieces.tsx +383 -0
  103. package/src/pieces/index.ts +1 -0
  104. package/src/promotion-picker.tsx +147 -0
  105. package/src/static-board.tsx +150 -0
  106. package/src/themes.ts +129 -0
  107. package/src/types.ts +251 -25
  108. package/src/use-board-gesture.ts +219 -8
  109. 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;AAYhD;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,WAAW;EACXC,YAAY;EACZC;AACgB,CAAC,EAAE;EACnB,oBACE,IAAAd,WAAA,CAAAe,GAAA,EAAAf,WAAA,CAAAgB,QAAA;IAAAC,QAAA,EACGT,MAAM,CAACU,GAAG,CAAEC,KAAK,IAAK;MACrB,MAAM;QAAEC,CAAC;QAAEC;MAAE,CAAC,GAAG,IAAAC,0BAAU,EAACH,KAAK,CAACI,MAAM,EAAEd,UAAU,EAAEC,WAAW,CAAC;MAElE,oBACE,IAAAV,WAAA,CAAAe,GAAA,EAACjB,WAAA,CAAA0B,cAAc;QAEbC,OAAO,EAAEL,CAAE;QACXM,OAAO,EAAEL,CAAE;QACXZ,UAAU,EAAEA,UAAW;QACvBE,YAAY,EAAEA,YAAa;QAC3BE,YAAY,EAAEA,YAAa;QAC3BC,UAAU,EAAEA,UAAW;QACvBS,MAAM,EAAEJ,KAAK,CAACI,MAAO;QAAAN,QAAA,EAEpBL,WAAW,CAACO,KAAK,CAACQ,IAAI,EAAElB,UAAU;MAAC,GAT/BU,KAAK,CAACS,EAUG,CAAC;IAErB,CAAC;EAAC,CACF,CAAC;AAEP,CAAC,CAAC","ignoreList":[]}
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":[]}
@@ -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
- * Follows chess.com/lichess pattern: single gesture receiver on the board,
31
- * coordinate math to determine touched piece, shared values for drag state.
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
- boardSize,
37
- gestureEnabled,
38
- player,
39
- onMove,
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
- moveDuration,
42
- withLetters,
43
- withNumbers,
98
+ withLetters = true,
99
+ withNumbers = true,
44
100
  renderPiece,
45
- showLegalMoves,
46
- moveMethod
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 (puzzle reset, opponent move, etc.)
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
- // --- Selection state (triggers legal dots display) ---
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
- // Default piece renderer (no-op if parent provides renderPiece)
68
- const defaultRenderPiece = (0, _react.useCallback)((code, size) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
69
- style: {
70
- width: size,
71
- height: size,
72
- backgroundColor: 'rgba(0,0,0,0.3)'
73
- }
74
- }), []);
75
- const pieceRenderer = renderPiece ?? defaultRenderPiece;
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 for parent (move, highlight, reset, undo) ---
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: (_square, _color) => {
129
- // Highlights are handled by overlay layers in the consuming app,
130
- // not internally this is a no-op stub for API compatibility.
131
- // Use the Board's overlay API or render your own highlight layer.
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
- // Same as highlight — handled by overlay layer
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: colors.light,
157
- darkColor: colors.dark
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: colors.light,
162
- darkColor: colors.dark,
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
- renderPiece: pieceRenderer,
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: pieceRenderer
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":[]}