react-native-chess-kit 0.5.0 → 0.5.2
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/LICENSE +21 -21
- package/README.md +168 -168
- package/lib/commonjs/board-annotations.js +8 -8
- package/lib/commonjs/board-arrows.js +2 -2
- package/lib/commonjs/board-arrows.js.map +1 -1
- package/lib/commonjs/board-background.js +5 -5
- package/lib/commonjs/board-coordinates.js +8 -8
- package/lib/commonjs/board-drag-ghost.js +10 -10
- package/lib/commonjs/board-highlights.js +15 -15
- package/lib/commonjs/board-legal-dots.js +5 -5
- package/lib/commonjs/board-piece.js +25 -25
- package/lib/commonjs/board-pieces.js +6 -6
- package/lib/commonjs/board.js +24 -24
- package/lib/commonjs/promotion-picker.js +8 -8
- package/lib/commonjs/static-board.js +7 -7
- package/lib/commonjs/use-board-gesture.js +52 -33
- package/lib/commonjs/use-board-gesture.js.map +1 -1
- package/lib/commonjs/use-board-pieces.js +15 -15
- package/lib/commonjs/use-board-state.js +8 -8
- package/lib/commonjs/use-premove.js +12 -12
- package/lib/module/board-annotations.js +8 -8
- package/lib/module/board-arrows.js +2 -2
- package/lib/module/board-arrows.js.map +1 -1
- package/lib/module/board-background.js +5 -5
- package/lib/module/board-coordinates.js +8 -8
- package/lib/module/board-drag-ghost.js +10 -10
- package/lib/module/board-highlights.js +15 -15
- package/lib/module/board-legal-dots.js +5 -5
- package/lib/module/board-piece.js +25 -25
- package/lib/module/board-pieces.js +6 -6
- package/lib/module/board.js +24 -24
- package/lib/module/promotion-picker.js +8 -8
- package/lib/module/static-board.js +7 -7
- package/lib/module/use-board-gesture.js +52 -33
- package/lib/module/use-board-gesture.js.map +1 -1
- package/lib/module/use-board-pieces.js +15 -15
- package/lib/module/use-board-state.js +8 -8
- package/lib/module/use-premove.js +12 -12
- package/lib/typescript/use-board-gesture.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/board-annotations.tsx +147 -147
- package/src/board-arrows.tsx +2 -2
- package/src/board-background.tsx +46 -46
- package/src/board-coordinates.tsx +192 -192
- package/src/board-drag-ghost.tsx +132 -132
- package/src/board-highlights.tsx +226 -226
- package/src/board-legal-dots.tsx +73 -73
- package/src/board-piece.tsx +160 -160
- package/src/board-pieces.tsx +63 -63
- package/src/board.tsx +685 -685
- package/src/constants.ts +103 -103
- package/src/index.ts +101 -101
- package/src/pieces/default-pieces.tsx +383 -383
- package/src/pieces/index.ts +1 -1
- package/src/promotion-picker.tsx +147 -147
- package/src/static-board.tsx +187 -187
- package/src/themes.ts +129 -129
- package/src/types.ts +373 -373
- package/src/use-board-gesture.ts +429 -412
- package/src/use-board-pieces.ts +158 -158
- package/src/use-board-state.ts +111 -111
- package/src/use-premove.ts +59 -59
|
@@ -9,9 +9,9 @@ var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reani
|
|
|
9
9
|
var _constants = require("./constants");
|
|
10
10
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
11
|
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); }
|
|
12
|
-
/**
|
|
13
|
-
* Animate a shared value using the provided AnimationConfig.
|
|
14
|
-
* Falls back to withTiming with moveDuration for backwards compatibility.
|
|
12
|
+
/**
|
|
13
|
+
* Animate a shared value using the provided AnimationConfig.
|
|
14
|
+
* Falls back to withTiming with moveDuration for backwards compatibility.
|
|
15
15
|
*/
|
|
16
16
|
function animateValue(target, config, moveDuration) {
|
|
17
17
|
if (config) {
|
|
@@ -34,28 +34,28 @@ function animateValue(target, config, moveDuration) {
|
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
/**
|
|
38
|
-
* A single animated chess piece.
|
|
39
|
-
*
|
|
40
|
-
* Uses two nested Animated.Views to avoid the Reanimated warning
|
|
41
|
-
* "Property opacity may be overwritten by a layout animation":
|
|
42
|
-
*
|
|
43
|
-
* Outer view: position (transform) + exiting layout animation (FadeOut)
|
|
44
|
-
* Inner view: drag-hide opacity
|
|
45
|
-
*
|
|
46
|
-
* Only `transform` and `opacity` are animated — Reanimated's fast path
|
|
47
|
-
* on Android. No layout properties (top/left/width/height), avoiding
|
|
48
|
-
* costly layout recalculations on low-end devices.
|
|
49
|
-
*
|
|
50
|
-
* During drag:
|
|
51
|
-
* - Inner view hides (opacity: 0) — the drag ghost shows instead
|
|
52
|
-
*
|
|
53
|
-
* After a move:
|
|
54
|
-
* - Outer view snaps to new position via withTiming/withSpring
|
|
55
|
-
*
|
|
56
|
-
* On capture (unmount):
|
|
57
|
-
* - Outer view plays the exitingAnimation (default: FadeOut, no conflict with inner opacity)
|
|
58
|
-
* - Pass exitingAnimation={undefined} to disable (instant disappear on full board remount)
|
|
37
|
+
/**
|
|
38
|
+
* A single animated chess piece.
|
|
39
|
+
*
|
|
40
|
+
* Uses two nested Animated.Views to avoid the Reanimated warning
|
|
41
|
+
* "Property opacity may be overwritten by a layout animation":
|
|
42
|
+
*
|
|
43
|
+
* Outer view: position (transform) + exiting layout animation (FadeOut)
|
|
44
|
+
* Inner view: drag-hide opacity
|
|
45
|
+
*
|
|
46
|
+
* Only `transform` and `opacity` are animated — Reanimated's fast path
|
|
47
|
+
* on Android. No layout properties (top/left/width/height), avoiding
|
|
48
|
+
* costly layout recalculations on low-end devices.
|
|
49
|
+
*
|
|
50
|
+
* During drag:
|
|
51
|
+
* - Inner view hides (opacity: 0) — the drag ghost shows instead
|
|
52
|
+
*
|
|
53
|
+
* After a move:
|
|
54
|
+
* - Outer view snaps to new position via withTiming/withSpring
|
|
55
|
+
*
|
|
56
|
+
* On capture (unmount):
|
|
57
|
+
* - Outer view plays the exitingAnimation (default: FadeOut, no conflict with inner opacity)
|
|
58
|
+
* - Pass exitingAnimation={undefined} to disable (instant disappear on full board remount)
|
|
59
59
|
*/
|
|
60
60
|
const BoardPieceView = exports.BoardPieceView = /*#__PURE__*/_react.default.memo(function BoardPieceView({
|
|
61
61
|
targetX,
|
|
@@ -9,12 +9,12 @@ var _boardPiece = require("./board-piece");
|
|
|
9
9
|
var _useBoardPieces = require("./use-board-pieces");
|
|
10
10
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
11
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
-
/**
|
|
13
|
-
* Renders all pieces on the board.
|
|
14
|
-
*
|
|
15
|
-
* Each piece gets a stable key (from useBoardPieces) so React doesn't
|
|
16
|
-
* unmount/remount pieces that moved — it updates their position props
|
|
17
|
-
* and the BoardPieceView animates the transition.
|
|
12
|
+
/**
|
|
13
|
+
* Renders all pieces on the board.
|
|
14
|
+
*
|
|
15
|
+
* Each piece gets a stable key (from useBoardPieces) so React doesn't
|
|
16
|
+
* unmount/remount pieces that moved — it updates their position props
|
|
17
|
+
* and the BoardPieceView animates the transition.
|
|
18
18
|
*/
|
|
19
19
|
const BoardPiecesLayer = exports.BoardPiecesLayer = /*#__PURE__*/_react.default.memo(function BoardPiecesLayer({
|
|
20
20
|
pieces,
|
package/lib/commonjs/board.js
CHANGED
|
@@ -29,9 +29,9 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
29
29
|
// Check detection helper
|
|
30
30
|
// ---------------------------------------------------------------------------
|
|
31
31
|
|
|
32
|
-
/**
|
|
33
|
-
* Find the king square for the side currently in check.
|
|
34
|
-
* Returns null if not in check.
|
|
32
|
+
/**
|
|
33
|
+
* Find the king square for the side currently in check.
|
|
34
|
+
* Returns null if not in check.
|
|
35
35
|
*/function detectCheckSquare(fen, isInCheck, getTurn) {
|
|
36
36
|
if (!isInCheck()) return null;
|
|
37
37
|
const turn = getTurn();
|
|
@@ -60,27 +60,27 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
60
60
|
// Board component
|
|
61
61
|
// ---------------------------------------------------------------------------
|
|
62
62
|
|
|
63
|
-
/**
|
|
64
|
-
* High-performance custom chess board built on Reanimated + Gesture Handler.
|
|
65
|
-
*
|
|
66
|
-
* Architecture:
|
|
67
|
-
* - 1 gesture handler (vs 32 in typical implementations)
|
|
68
|
-
* - ~40 components mounted (vs ~281)
|
|
69
|
-
* - ~75 native views (vs ~470)
|
|
70
|
-
* - 0 React Context providers
|
|
71
|
-
* - 0 re-renders during drag (pure worklet — only 2 shared value writes per frame)
|
|
72
|
-
*
|
|
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)
|
|
63
|
+
/**
|
|
64
|
+
* High-performance custom chess board built on Reanimated + Gesture Handler.
|
|
65
|
+
*
|
|
66
|
+
* Architecture:
|
|
67
|
+
* - 1 gesture handler (vs 32 in typical implementations)
|
|
68
|
+
* - ~40 components mounted (vs ~281)
|
|
69
|
+
* - ~75 native views (vs ~470)
|
|
70
|
+
* - 0 React Context providers
|
|
71
|
+
* - 0 re-renders during drag (pure worklet — only 2 shared value writes per frame)
|
|
72
|
+
*
|
|
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)
|
|
84
84
|
*/
|
|
85
85
|
const Board = exports.Board = /*#__PURE__*/(0, _react.forwardRef)(function Board({
|
|
86
86
|
fen,
|
|
@@ -27,14 +27,14 @@ function promotionPieceCode(color, piece) {
|
|
|
27
27
|
// Component
|
|
28
28
|
// ---------------------------------------------------------------------------
|
|
29
29
|
|
|
30
|
-
/**
|
|
31
|
-
* Promotion piece picker overlay.
|
|
32
|
-
*
|
|
33
|
-
* Appears as a vertical column of 4 pieces (Q, R, B, N) anchored to the
|
|
34
|
-
* promotion square. Expands downward when promoting on the top edge,
|
|
35
|
-
* upward when promoting on the bottom edge.
|
|
36
|
-
*
|
|
37
|
-
* A semi-transparent backdrop covers the board. Tapping outside cancels.
|
|
30
|
+
/**
|
|
31
|
+
* Promotion piece picker overlay.
|
|
32
|
+
*
|
|
33
|
+
* Appears as a vertical column of 4 pieces (Q, R, B, N) anchored to the
|
|
34
|
+
* promotion square. Expands downward when promoting on the top edge,
|
|
35
|
+
* upward when promoting on the bottom edge.
|
|
36
|
+
*
|
|
37
|
+
* A semi-transparent backdrop covers the board. Tapping outside cancels.
|
|
38
38
|
*/
|
|
39
39
|
const PromotionPicker = exports.PromotionPicker = /*#__PURE__*/_react.default.memo(function PromotionPicker({
|
|
40
40
|
square,
|
|
@@ -16,13 +16,13 @@ var _boardArrows = require("./board-arrows");
|
|
|
16
16
|
var _boardAnnotations = require("./board-annotations");
|
|
17
17
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
18
18
|
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); }
|
|
19
|
-
/**
|
|
20
|
-
* Non-interactive chess board — optimized for lists, thumbnails, and analysis previews.
|
|
21
|
-
*
|
|
22
|
-
* No gesture handler, no drag ghost, no legal move dots.
|
|
23
|
-
* Just: background + coordinates + highlights + pieces + arrows + annotations.
|
|
24
|
-
*
|
|
25
|
-
* Significantly lighter than the full Board component.
|
|
19
|
+
/**
|
|
20
|
+
* Non-interactive chess board — optimized for lists, thumbnails, and analysis previews.
|
|
21
|
+
*
|
|
22
|
+
* No gesture handler, no drag ghost, no legal move dots.
|
|
23
|
+
* Just: background + coordinates + highlights + pieces + arrows + annotations.
|
|
24
|
+
*
|
|
25
|
+
* Significantly lighter than the full Board component.
|
|
26
26
|
*/
|
|
27
27
|
const StaticBoard = exports.StaticBoard = /*#__PURE__*/_react.default.memo(function StaticBoard({
|
|
28
28
|
fen,
|
|
@@ -38,31 +38,31 @@ function pieceColorToPlayer(color) {
|
|
|
38
38
|
// Hook
|
|
39
39
|
// ---------------------------------------------------------------------------
|
|
40
40
|
|
|
41
|
-
/**
|
|
42
|
-
* Single centralized gesture handler for the entire board.
|
|
43
|
-
*
|
|
44
|
-
* Instead of 32 separate Gesture.Pan() handlers (one per piece), we use ONE
|
|
45
|
-
* handler on the board container. Touch -> coordinate math -> which piece.
|
|
46
|
-
*
|
|
47
|
-
* Supports three modes:
|
|
48
|
-
* - 'drag': drag piece to target square
|
|
49
|
-
* - 'click': tap source piece, then tap target square
|
|
50
|
-
* - 'both': drag or click (default)
|
|
51
|
-
*
|
|
52
|
-
* All drag position tracking uses shared values — zero JS bridge calls,
|
|
53
|
-
* zero re-renders during drag. Only the final move triggers JS via runOnJS.
|
|
54
|
-
*
|
|
55
|
-
* The gesture object is STABLE (only recreated when squareSize, orientation,
|
|
56
|
-
* gestureEnabled, player, or moveMethod change). Frequently-changing data
|
|
57
|
-
* (pieces, selectedSquare, legalMoves) is read from refs via runOnJS bridge
|
|
58
|
-
* functions, avoiding costly gesture teardown/rebuild on every move.
|
|
59
|
-
*
|
|
60
|
-
* v0.2.0 additions:
|
|
61
|
-
* - Rich callbacks (onPieceClick, onSquareClick, onPieceDragBegin, onPieceDragEnd)
|
|
62
|
-
* - Drag target square tracking (shared value for DragTargetHighlight)
|
|
63
|
-
* - Premove support (queue move when not your turn)
|
|
64
|
-
* - Haptic feedback via callback
|
|
65
|
-
* - Long press detection for onSquareLongPress
|
|
41
|
+
/**
|
|
42
|
+
* Single centralized gesture handler for the entire board.
|
|
43
|
+
*
|
|
44
|
+
* Instead of 32 separate Gesture.Pan() handlers (one per piece), we use ONE
|
|
45
|
+
* handler on the board container. Touch -> coordinate math -> which piece.
|
|
46
|
+
*
|
|
47
|
+
* Supports three modes:
|
|
48
|
+
* - 'drag': drag piece to target square
|
|
49
|
+
* - 'click': tap source piece, then tap target square
|
|
50
|
+
* - 'both': drag or click (default)
|
|
51
|
+
*
|
|
52
|
+
* All drag position tracking uses shared values — zero JS bridge calls,
|
|
53
|
+
* zero re-renders during drag. Only the final move triggers JS via runOnJS.
|
|
54
|
+
*
|
|
55
|
+
* The gesture object is STABLE (only recreated when squareSize, orientation,
|
|
56
|
+
* gestureEnabled, player, or moveMethod change). Frequently-changing data
|
|
57
|
+
* (pieces, selectedSquare, legalMoves) is read from refs via runOnJS bridge
|
|
58
|
+
* functions, avoiding costly gesture teardown/rebuild on every move.
|
|
59
|
+
*
|
|
60
|
+
* v0.2.0 additions:
|
|
61
|
+
* - Rich callbacks (onPieceClick, onSquareClick, onPieceDragBegin, onPieceDragEnd)
|
|
62
|
+
* - Drag target square tracking (shared value for DragTargetHighlight)
|
|
63
|
+
* - Premove support (queue move when not your turn)
|
|
64
|
+
* - Haptic feedback via callback
|
|
65
|
+
* - Long press detection for onSquareLongPress
|
|
66
66
|
*/
|
|
67
67
|
function useBoardGesture({
|
|
68
68
|
squareSize,
|
|
@@ -139,6 +139,7 @@ function useBoardGesture({
|
|
|
139
139
|
const legalSquares = new Set(currentLegalMoves.map(m => m.square));
|
|
140
140
|
if (canClick && currentSelected && legalSquares.has(square)) {
|
|
141
141
|
cbs.onPieceMoved(currentSelected, square);
|
|
142
|
+
// Clear optimistic worklet value — move is complete
|
|
142
143
|
activeSquare.value = null;
|
|
143
144
|
isDragging.value = false;
|
|
144
145
|
dragPieceCode.value = null;
|
|
@@ -146,6 +147,15 @@ function useBoardGesture({
|
|
|
146
147
|
rich?.onHaptic?.('move');
|
|
147
148
|
return;
|
|
148
149
|
}
|
|
150
|
+
|
|
151
|
+
// Chess.com-style deselect: tapping the already-selected piece toggles it off
|
|
152
|
+
if (canClick && currentSelected === square) {
|
|
153
|
+
cbs.onSelectionCleared();
|
|
154
|
+
activeSquare.value = null;
|
|
155
|
+
dragPieceCode.value = null;
|
|
156
|
+
dragTargetSquare.value = null;
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
149
159
|
if (isPlayerPiece && piece) {
|
|
150
160
|
// Premove: player piece but not their turn
|
|
151
161
|
if (premovesEnabled && !isOwnTurn) {
|
|
@@ -162,9 +172,7 @@ function useBoardGesture({
|
|
|
162
172
|
return;
|
|
163
173
|
}
|
|
164
174
|
// First tap: select the piece for premove
|
|
165
|
-
activeSquare.value
|
|
166
|
-
dragX.value = touchX;
|
|
167
|
-
dragY.value = touchY;
|
|
175
|
+
// activeSquare.value / dragX.value / dragY.value already set by onBegin worklet
|
|
168
176
|
dragPieceCode.value = piece.code;
|
|
169
177
|
cbs.onPieceSelected(square);
|
|
170
178
|
rich?.onPieceClick?.(square, piece.code);
|
|
@@ -173,9 +181,7 @@ function useBoardGesture({
|
|
|
173
181
|
}
|
|
174
182
|
|
|
175
183
|
// Normal case: tapped/started dragging a player piece on their turn
|
|
176
|
-
activeSquare.value
|
|
177
|
-
dragX.value = touchX;
|
|
178
|
-
dragY.value = touchY;
|
|
184
|
+
// activeSquare.value / dragX.value / dragY.value already set by onBegin worklet
|
|
179
185
|
dragPieceCode.value = piece.code;
|
|
180
186
|
draggedPieceRef.current = {
|
|
181
187
|
square,
|
|
@@ -201,6 +207,8 @@ function useBoardGesture({
|
|
|
201
207
|
dragTargetSquare.value = null;
|
|
202
208
|
return;
|
|
203
209
|
}
|
|
210
|
+
|
|
211
|
+
// Clear the optimistic worklet value — no valid piece here
|
|
204
212
|
activeSquare.value = null;
|
|
205
213
|
dragPieceCode.value = null;
|
|
206
214
|
dragTargetSquare.value = null;
|
|
@@ -255,9 +263,13 @@ function useBoardGesture({
|
|
|
255
263
|
} else {
|
|
256
264
|
callbacksRef.current.onPieceMoved(fromSquare, toSquare);
|
|
257
265
|
}
|
|
266
|
+
|
|
267
|
+
// Move completed — clear selection
|
|
268
|
+
activeSquare.value = null;
|
|
269
|
+
dragPieceCode.value = null;
|
|
258
270
|
}
|
|
259
|
-
|
|
260
|
-
|
|
271
|
+
// When fromSquare === toSquare (tap with no movement), keep selection alive
|
|
272
|
+
// so the user can complete a click-to-move on the next tap.
|
|
261
273
|
}, [squareSize, orientation, activeSquare, isDragging, dragPieceCode, dragTargetSquare, premovesEnabled]);
|
|
262
274
|
|
|
263
275
|
// Long press handler (separate gesture, composed with pan)
|
|
@@ -277,6 +289,13 @@ function useBoardGesture({
|
|
|
277
289
|
.onBegin(e => {
|
|
278
290
|
'worklet';
|
|
279
291
|
|
|
292
|
+
// Set shared values IMMEDIATELY on the UI thread so onStart can read them
|
|
293
|
+
// synchronously. xyToSquare is tagged 'worklet' — safe to call here.
|
|
294
|
+
// handleBegin (JS thread) will CLEAR activeSquare if the square is invalid.
|
|
295
|
+
const sq = (0, _useBoardPieces.xyToSquare)(e.x, e.y, squareSize, orientation);
|
|
296
|
+
activeSquare.value = sq;
|
|
297
|
+
dragX.value = e.x;
|
|
298
|
+
dragY.value = e.y;
|
|
280
299
|
// Bridge to JS for piece lookup + selection logic
|
|
281
300
|
(0, _reactNativeReanimated.runOnJS)(handleBegin)(e.x, e.y);
|
|
282
301
|
}).onStart(e => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNativeGestureHandler","_reactNativeReanimated","_useBoardPieces","isPieceTurn","pieceColor","currentTurn","pieceColorToPlayer","color","useBoardGesture","squareSize","orientation","gestureEnabled","player","moveMethod","pieces","callbacks","richCallbacks","premoveCallbacks","premovesEnabled","selectedSquare","legalMoves","activeSquare","useSharedValue","dragX","dragY","isDragging","dragPieceCode","dragTargetSquare","gestureState","piecesRef","useRef","current","selectedSquareRef","legalMovesRef","callbacksRef","richCallbacksRef","premoveCallbacksRef","currentTurnRef","draggedPieceRef","handleBegin","useCallback","touchX","touchY","square","xyToSquare","currentPieces","currentSelected","currentLegalMoves","cbs","rich","canClick","piece","find","p","isPlayerPiece","turn","isOwnTurn","legalSquares","Set","map","m","has","onPieceMoved","value","onHaptic","onPremoveSet","from","to","onSelectionCleared","code","onPieceSelected","onPieceClick","onSquareClick","handleDragStart","dragged","onPieceDragBegin","handleDragUpdate","handleEnd","fromSquare","toSquare","onPieceDragEnd","handleLongPress","onSquareLongPress","canDrag","lastDragTargetCol","lastDragTargetRow","gesture","useMemo","Gesture","Pan","enabled","minDistance","onBegin","e","runOnJS","x","y","onStart","onUpdate","col","Math","max","min","floor","row","onEnd","onFinalize"],"sourceRoot":"..\\..\\src","sources":["use-board-gesture.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNativeGestureHandler","_reactNativeReanimated","_useBoardPieces","isPieceTurn","pieceColor","currentTurn","pieceColorToPlayer","color","useBoardGesture","squareSize","orientation","gestureEnabled","player","moveMethod","pieces","callbacks","richCallbacks","premoveCallbacks","premovesEnabled","selectedSquare","legalMoves","activeSquare","useSharedValue","dragX","dragY","isDragging","dragPieceCode","dragTargetSquare","gestureState","piecesRef","useRef","current","selectedSquareRef","legalMovesRef","callbacksRef","richCallbacksRef","premoveCallbacksRef","currentTurnRef","draggedPieceRef","handleBegin","useCallback","touchX","touchY","square","xyToSquare","currentPieces","currentSelected","currentLegalMoves","cbs","rich","canClick","piece","find","p","isPlayerPiece","turn","isOwnTurn","legalSquares","Set","map","m","has","onPieceMoved","value","onHaptic","onSelectionCleared","onPremoveSet","from","to","code","onPieceSelected","onPieceClick","onSquareClick","handleDragStart","dragged","onPieceDragBegin","handleDragUpdate","handleEnd","fromSquare","toSquare","onPieceDragEnd","handleLongPress","onSquareLongPress","canDrag","lastDragTargetCol","lastDragTargetRow","gesture","useMemo","Gesture","Pan","enabled","minDistance","onBegin","e","sq","x","y","runOnJS","onStart","onUpdate","col","Math","max","min","floor","row","onEnd","onFinalize"],"sourceRoot":"..\\..\\src","sources":["use-board-gesture.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -59,9 +59,9 @@ const FEN_PIECE_MAP = {
|
|
|
59
59
|
};
|
|
60
60
|
const FILES = 'abcdefgh';
|
|
61
61
|
|
|
62
|
-
/**
|
|
63
|
-
* Parse the piece-placement part of a FEN string into an array of pieces.
|
|
64
|
-
* Pure function — no React dependencies, suitable for worklets if needed.
|
|
62
|
+
/**
|
|
63
|
+
* Parse the piece-placement part of a FEN string into an array of pieces.
|
|
64
|
+
* Pure function — no React dependencies, suitable for worklets if needed.
|
|
65
65
|
*/
|
|
66
66
|
function parseFenPieces(fen) {
|
|
67
67
|
const placement = fen.split(' ')[0];
|
|
@@ -91,9 +91,9 @@ function parseFenPieces(fen) {
|
|
|
91
91
|
return pieces;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
/**
|
|
95
|
-
* Convert square notation to pixel coordinates (top-left corner).
|
|
96
|
-
* Orientation-aware: flips the board when playing as black.
|
|
94
|
+
/**
|
|
95
|
+
* Convert square notation to pixel coordinates (top-left corner).
|
|
96
|
+
* Orientation-aware: flips the board when playing as black.
|
|
97
97
|
*/
|
|
98
98
|
function squareToXY(square, squareSize, orientation) {
|
|
99
99
|
'worklet';
|
|
@@ -109,9 +109,9 @@ function squareToXY(square, squareSize, orientation) {
|
|
|
109
109
|
};
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
-
/**
|
|
113
|
-
* Convert pixel coordinates to a square notation string.
|
|
114
|
-
* Clamps to board bounds. Orientation-aware.
|
|
112
|
+
/**
|
|
113
|
+
* Convert pixel coordinates to a square notation string.
|
|
114
|
+
* Clamps to board bounds. Orientation-aware.
|
|
115
115
|
*/
|
|
116
116
|
function xyToSquare(x, y, squareSize, orientation) {
|
|
117
117
|
'worklet';
|
|
@@ -126,12 +126,12 @@ function xyToSquare(x, y, squareSize, orientation) {
|
|
|
126
126
|
return `${files[fileIdx]}${rankIdx + 1}`;
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
/**
|
|
130
|
-
* Manages the piece list derived from FEN, with stable IDs for React keys.
|
|
131
|
-
*
|
|
132
|
-
* Stable IDs prevent unmount/remount cycles when pieces change position.
|
|
133
|
-
* A piece keeps its ID as long as it exists on the board — only capture
|
|
134
|
-
* (removal) or promotion (code change) creates a new ID.
|
|
129
|
+
/**
|
|
130
|
+
* Manages the piece list derived from FEN, with stable IDs for React keys.
|
|
131
|
+
*
|
|
132
|
+
* Stable IDs prevent unmount/remount cycles when pieces change position.
|
|
133
|
+
* A piece keeps its ID as long as it exists on the board — only capture
|
|
134
|
+
* (removal) or promotion (code change) creates a new ID.
|
|
135
135
|
*/
|
|
136
136
|
function useBoardPieces(fen) {
|
|
137
137
|
// Track piece-code counters across renders for stable ID assignment
|
|
@@ -6,14 +6,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.useBoardState = useBoardState;
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var _chess = require("chess.js");
|
|
9
|
-
/**
|
|
10
|
-
* Manages the internal chess.js instance for legal move validation.
|
|
11
|
-
*
|
|
12
|
-
* This mirrors the visual board state. When the parent passes a new FEN,
|
|
13
|
-
* the internal chess.js is synced. Legal move queries and move application
|
|
14
|
-
* happen against this instance.
|
|
15
|
-
*
|
|
16
|
-
* The chess.js instance lives in a ref — no React state, no re-renders.
|
|
9
|
+
/**
|
|
10
|
+
* Manages the internal chess.js instance for legal move validation.
|
|
11
|
+
*
|
|
12
|
+
* This mirrors the visual board state. When the parent passes a new FEN,
|
|
13
|
+
* the internal chess.js is synced. Legal move queries and move application
|
|
14
|
+
* happen against this instance.
|
|
15
|
+
*
|
|
16
|
+
* The chess.js instance lives in a ref — no React state, no re-renders.
|
|
17
17
|
*/
|
|
18
18
|
function useBoardState(initialFen) {
|
|
19
19
|
const chessRef = (0, _react.useRef)(null);
|
|
@@ -5,18 +5,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.usePremove = usePremove;
|
|
7
7
|
var _react = require("react");
|
|
8
|
-
/**
|
|
9
|
-
* Manages a single premove queue (one premove at a time).
|
|
10
|
-
*
|
|
11
|
-
* Premoves work like lichess:
|
|
12
|
-
* 1. When it's not your turn, you can drag/click a move — it queues as a premove
|
|
13
|
-
* 2. The premove squares are highlighted with a distinct color
|
|
14
|
-
* 3. When your turn begins (FEN changes and it's now your turn), the premove
|
|
15
|
-
* is automatically attempted via the board's internal chess.js
|
|
16
|
-
* 4. If the premove is legal, it's applied; if not, it's silently discarded
|
|
17
|
-
*
|
|
18
|
-
* The board.tsx orchestrates this: it calls consumePremove() in a useEffect
|
|
19
|
-
* that watches the FEN (turn change), then attempts the move.
|
|
8
|
+
/**
|
|
9
|
+
* Manages a single premove queue (one premove at a time).
|
|
10
|
+
*
|
|
11
|
+
* Premoves work like lichess:
|
|
12
|
+
* 1. When it's not your turn, you can drag/click a move — it queues as a premove
|
|
13
|
+
* 2. The premove squares are highlighted with a distinct color
|
|
14
|
+
* 3. When your turn begins (FEN changes and it's now your turn), the premove
|
|
15
|
+
* is automatically attempted via the board's internal chess.js
|
|
16
|
+
* 4. If the premove is legal, it's applied; if not, it's silently discarded
|
|
17
|
+
*
|
|
18
|
+
* The board.tsx orchestrates this: it calls consumePremove() in a useEffect
|
|
19
|
+
* that watches the FEN (turn change), then attempts the move.
|
|
20
20
|
*/
|
|
21
21
|
function usePremove() {
|
|
22
22
|
const [premove, setPremoveState] = (0, _react.useState)(null);
|
|
@@ -13,11 +13,11 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
13
13
|
// Annotations layer
|
|
14
14
|
// ---------------------------------------------------------------------------
|
|
15
15
|
|
|
16
|
-
/**
|
|
17
|
-
* Text annotation badges on chess squares (!, ?, !!, ??, etc.).
|
|
18
|
-
*
|
|
19
|
-
* Each annotation appears as a small colored badge at the top-right
|
|
20
|
-
* corner of the target square. Positioned absolutely, pointer-events none.
|
|
16
|
+
/**
|
|
17
|
+
* Text annotation badges on chess squares (!, ?, !!, ??, etc.).
|
|
18
|
+
*
|
|
19
|
+
* Each annotation appears as a small colored badge at the top-right
|
|
20
|
+
* corner of the target square. Positioned absolutely, pointer-events none.
|
|
21
21
|
*/
|
|
22
22
|
export const BoardAnnotations = /*#__PURE__*/React.memo(function BoardAnnotations({
|
|
23
23
|
boardSize,
|
|
@@ -76,9 +76,9 @@ export const BoardAnnotations = /*#__PURE__*/React.memo(function BoardAnnotation
|
|
|
76
76
|
// Standalone export for advanced consumers
|
|
77
77
|
// ---------------------------------------------------------------------------
|
|
78
78
|
|
|
79
|
-
/**
|
|
80
|
-
* Single annotation badge component.
|
|
81
|
-
* Exported for consumers who build their own overlay layers.
|
|
79
|
+
/**
|
|
80
|
+
* Single annotation badge component.
|
|
81
|
+
* Exported for consumers who build their own overlay layers.
|
|
82
82
|
*/
|
|
83
83
|
export const Annotation = /*#__PURE__*/React.memo(function Annotation({
|
|
84
84
|
square,
|
|
@@ -139,8 +139,8 @@ const ArrowSvg = /*#__PURE__*/React.memo(function ArrowSvg({
|
|
|
139
139
|
children: [/*#__PURE__*/_jsx(Line, {
|
|
140
140
|
x1: path.x1,
|
|
141
141
|
y1: path.y1,
|
|
142
|
-
x2: path.x2,
|
|
143
|
-
y2: path.y2,
|
|
142
|
+
x2: path.x2 - ux * headSize * 2,
|
|
143
|
+
y2: path.y2 - uy * headSize * 2,
|
|
144
144
|
stroke: color,
|
|
145
145
|
strokeWidth: width,
|
|
146
146
|
strokeLinecap: "round",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","Svg","Line","Polygon","Circle","SvgCircle","DEFAULT_ARROW_COLOR","DEFAULT_SHAPE_COLOR","ARROW_STROKE_WIDTH","ARROW_HEAD_SIZE","ARROW_SHORTEN_BY","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","squareToViewBoxCenter","square","orientation","fileIdx","charCodeAt","rankIdx","parseInt","col","row","x","y","calculateArrowPath","from","to","shortenBy","dx","dy","len","Math","sqrt","x1","y1","x2","y2","ux","uy","BoardArrows","memo","boardSize","arrows","shapes","hasArrows","length","hasShapes","style","position","width","height","pointerEvents","children","viewBox","map","shape","i","type","center","color","cx","cy","r","fill","stroke","strokeWidth","opacity","arrow","ArrowSvg","fromCoord","toCoord","path","headSize","tip","baseLeft","baseRight","arrowPoints","strokeLinecap","points","Arrow"],"sourceRoot":"..\\..\\src","sources":["board-arrows.tsx"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["React","View","Svg","Line","Polygon","Circle","SvgCircle","DEFAULT_ARROW_COLOR","DEFAULT_SHAPE_COLOR","ARROW_STROKE_WIDTH","ARROW_HEAD_SIZE","ARROW_SHORTEN_BY","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","squareToViewBoxCenter","square","orientation","fileIdx","charCodeAt","rankIdx","parseInt","col","row","x","y","calculateArrowPath","from","to","shortenBy","dx","dy","len","Math","sqrt","x1","y1","x2","y2","ux","uy","BoardArrows","memo","boardSize","arrows","shapes","hasArrows","length","hasShapes","style","position","width","height","pointerEvents","children","viewBox","map","shape","i","type","center","color","cx","cy","r","fill","stroke","strokeWidth","opacity","arrow","ArrowSvg","fromCoord","toCoord","path","headSize","tip","baseLeft","baseRight","arrowPoints","strokeLinecap","points","Arrow"],"sourceRoot":"..\\..\\src","sources":["board-arrows.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { View } from 'react-native';
|
|
5
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
-
/**
|
|
7
|
-
* 64 static colored squares forming the chess board grid.
|
|
8
|
-
*
|
|
9
|
-
* These are plain Views with backgroundColor — no animations, no gesture
|
|
10
|
-
* handlers. They never re-render after mount unless the board theme changes.
|
|
6
|
+
/**
|
|
7
|
+
* 64 static colored squares forming the chess board grid.
|
|
8
|
+
*
|
|
9
|
+
* These are plain Views with backgroundColor — no animations, no gesture
|
|
10
|
+
* handlers. They never re-render after mount unless the board theme changes.
|
|
11
11
|
*/
|
|
12
12
|
export const BoardBackground = /*#__PURE__*/React.memo(function BoardBackground({
|
|
13
13
|
boardSize,
|
|
@@ -8,14 +8,14 @@ const FILES_BLACK = ['h', 'g', 'f', 'e', 'd', 'c', 'b', 'a'];
|
|
|
8
8
|
const RANKS_WHITE = ['8', '7', '6', '5', '4', '3', '2', '1'];
|
|
9
9
|
const RANKS_BLACK = ['1', '2', '3', '4', '5', '6', '7', '8'];
|
|
10
10
|
|
|
11
|
-
/**
|
|
12
|
-
* File letters (a-h) and rank numbers (1-8) drawn on or around the board.
|
|
13
|
-
*
|
|
14
|
-
* Two modes:
|
|
15
|
-
* - **inside** (default): absolute-positioned inside each edge square, colors
|
|
16
|
-
* alternate to contrast with the square behind them.
|
|
17
|
-
* - **outside**: rendered in a gutter area around the board. Rank numbers to
|
|
18
|
-
* the left, file letters along the bottom. Uses the dark square color.
|
|
11
|
+
/**
|
|
12
|
+
* File letters (a-h) and rank numbers (1-8) drawn on or around the board.
|
|
13
|
+
*
|
|
14
|
+
* Two modes:
|
|
15
|
+
* - **inside** (default): absolute-positioned inside each edge square, colors
|
|
16
|
+
* alternate to contrast with the square behind them.
|
|
17
|
+
* - **outside**: rendered in a gutter area around the board. Rank numbers to
|
|
18
|
+
* the left, file letters along the bottom. Uses the dark square color.
|
|
19
19
|
*/
|
|
20
20
|
export const BoardCoordinates = /*#__PURE__*/React.memo(function BoardCoordinates({
|
|
21
21
|
boardSize,
|