react-native-chess-kit 0.5.3 → 0.5.4
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 +187 -187
- package/lib/commonjs/board-annotations.js +8 -8
- package/lib/commonjs/board-annotations.js.map +1 -1
- package/lib/commonjs/board-arrows.js +7 -7
- package/lib/commonjs/board-arrows.js.map +1 -1
- package/lib/commonjs/board-background.js +5 -5
- package/lib/commonjs/board-background.js.map +1 -1
- package/lib/commonjs/board-coordinates.js.map +1 -1
- package/lib/commonjs/board-drag-ghost.js +10 -10
- package/lib/commonjs/board-drag-ghost.js.map +1 -1
- package/lib/commonjs/board-highlights.js +15 -15
- package/lib/commonjs/board-highlights.js.map +1 -1
- package/lib/commonjs/board-legal-dots.js +5 -5
- package/lib/commonjs/board-legal-dots.js.map +1 -1
- package/lib/commonjs/board-piece.js +25 -25
- package/lib/commonjs/board-piece.js.map +1 -1
- package/lib/commonjs/board-pieces.js +6 -6
- package/lib/commonjs/board-pieces.js.map +1 -1
- package/lib/commonjs/board.js +32 -28
- package/lib/commonjs/board.js.map +1 -1
- package/lib/commonjs/constants.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/pieces/default-pieces.js.map +1 -1
- package/lib/commonjs/pieces/index.js.map +1 -1
- package/lib/commonjs/promotion-picker.js.map +1 -1
- package/lib/commonjs/static-board.js.map +1 -1
- package/lib/commonjs/themes.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/use-board-gesture.js.map +1 -1
- package/lib/commonjs/use-board-pieces.js +15 -15
- package/lib/commonjs/use-board-pieces.js.map +1 -1
- package/lib/commonjs/use-board-state.js +8 -8
- package/lib/commonjs/use-board-state.js.map +1 -1
- package/lib/commonjs/use-premove.js +12 -12
- package/lib/commonjs/use-premove.js.map +1 -1
- package/lib/module/board-annotations.js +8 -8
- package/lib/module/board-annotations.js.map +1 -1
- package/lib/module/board-arrows.js +7 -7
- package/lib/module/board-arrows.js.map +1 -1
- package/lib/module/board-background.js +5 -5
- package/lib/module/board-background.js.map +1 -1
- package/lib/module/board-coordinates.js.map +1 -1
- package/lib/module/board-drag-ghost.js +10 -10
- package/lib/module/board-drag-ghost.js.map +1 -1
- package/lib/module/board-highlights.js +15 -15
- package/lib/module/board-highlights.js.map +1 -1
- package/lib/module/board-legal-dots.js +5 -5
- package/lib/module/board-legal-dots.js.map +1 -1
- package/lib/module/board-piece.js +25 -25
- package/lib/module/board-piece.js.map +1 -1
- package/lib/module/board-pieces.js +6 -6
- package/lib/module/board-pieces.js.map +1 -1
- package/lib/module/board.js +32 -28
- package/lib/module/board.js.map +1 -1
- package/lib/module/constants.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/pieces/default-pieces.js.map +1 -1
- package/lib/module/pieces/index.js.map +1 -1
- package/lib/module/promotion-picker.js.map +1 -1
- package/lib/module/static-board.js.map +1 -1
- package/lib/module/themes.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/use-board-gesture.js.map +1 -1
- package/lib/module/use-board-pieces.js +15 -15
- package/lib/module/use-board-pieces.js.map +1 -1
- package/lib/module/use-board-state.js +8 -8
- package/lib/module/use-board-state.js.map +1 -1
- package/lib/module/use-premove.js +12 -12
- package/lib/module/use-premove.js.map +1 -1
- package/lib/typescript/types.d.ts +2 -1
- package/lib/typescript/types.d.ts.map +1 -1
- package/package.json +95 -95
- package/src/board-annotations.tsx +147 -147
- package/src/board-arrows.tsx +197 -197
- package/src/board-background.tsx +46 -46
- 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 +688 -688
- 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/themes.ts +129 -129
- package/src/types.ts +394 -394
- package/src/use-board-pieces.ts +158 -158
- package/src/use-board-state.ts +120 -120
- package/src/use-premove.ts +59 -59
package/src/use-premove.ts
CHANGED
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
import { useState, useCallback } from 'react';
|
|
2
|
-
|
|
3
|
-
import type { PremoveData } from './types';
|
|
4
|
-
|
|
5
|
-
type UsePremoveReturn = {
|
|
6
|
-
/** The currently queued premove (only one at a time, like lichess) */
|
|
7
|
-
premove: PremoveData | null;
|
|
8
|
-
/** Queue a premove. Replaces any existing premove. */
|
|
9
|
-
setPremove: (premove: PremoveData) => void;
|
|
10
|
-
/** Clear the queued premove */
|
|
11
|
-
clearPremove: () => void;
|
|
12
|
-
/**
|
|
13
|
-
* Try to execute the queued premove.
|
|
14
|
-
* Returns the premove if one was queued (so the caller can apply it),
|
|
15
|
-
* then clears the queue. Returns null if no premove was queued.
|
|
16
|
-
*/
|
|
17
|
-
consumePremove: () => PremoveData | null;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Manages a single premove queue (one premove at a time).
|
|
22
|
-
*
|
|
23
|
-
* Premoves work like lichess:
|
|
24
|
-
* 1. When it's not your turn, you can drag/click a move — it queues as a premove
|
|
25
|
-
* 2. The premove squares are highlighted with a distinct color
|
|
26
|
-
* 3. When your turn begins (FEN changes and it's now your turn), the premove
|
|
27
|
-
* is automatically attempted via the board's internal chess.js
|
|
28
|
-
* 4. If the premove is legal, it's applied; if not, it's silently discarded
|
|
29
|
-
*
|
|
30
|
-
* The board.tsx orchestrates this: it calls consumePremove() in a useEffect
|
|
31
|
-
* that watches the FEN (turn change), then attempts the move.
|
|
32
|
-
*/
|
|
33
|
-
export function usePremove(): UsePremoveReturn {
|
|
34
|
-
const [premove, setPremoveState] = useState<PremoveData | null>(null);
|
|
35
|
-
|
|
36
|
-
const setPremove = useCallback((pm: PremoveData) => {
|
|
37
|
-
setPremoveState(pm);
|
|
38
|
-
}, []);
|
|
39
|
-
|
|
40
|
-
const clearPremove = useCallback(() => {
|
|
41
|
-
setPremoveState(null);
|
|
42
|
-
}, []);
|
|
43
|
-
|
|
44
|
-
const consumePremove = useCallback((): PremoveData | null => {
|
|
45
|
-
let consumed: PremoveData | null = null;
|
|
46
|
-
setPremoveState((current) => {
|
|
47
|
-
consumed = current;
|
|
48
|
-
return null;
|
|
49
|
-
});
|
|
50
|
-
return consumed;
|
|
51
|
-
}, []);
|
|
52
|
-
|
|
53
|
-
return {
|
|
54
|
-
premove,
|
|
55
|
-
setPremove,
|
|
56
|
-
clearPremove,
|
|
57
|
-
consumePremove,
|
|
58
|
-
};
|
|
59
|
-
}
|
|
1
|
+
import { useState, useCallback } from 'react';
|
|
2
|
+
|
|
3
|
+
import type { PremoveData } from './types';
|
|
4
|
+
|
|
5
|
+
type UsePremoveReturn = {
|
|
6
|
+
/** The currently queued premove (only one at a time, like lichess) */
|
|
7
|
+
premove: PremoveData | null;
|
|
8
|
+
/** Queue a premove. Replaces any existing premove. */
|
|
9
|
+
setPremove: (premove: PremoveData) => void;
|
|
10
|
+
/** Clear the queued premove */
|
|
11
|
+
clearPremove: () => void;
|
|
12
|
+
/**
|
|
13
|
+
* Try to execute the queued premove.
|
|
14
|
+
* Returns the premove if one was queued (so the caller can apply it),
|
|
15
|
+
* then clears the queue. Returns null if no premove was queued.
|
|
16
|
+
*/
|
|
17
|
+
consumePremove: () => PremoveData | null;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Manages a single premove queue (one premove at a time).
|
|
22
|
+
*
|
|
23
|
+
* Premoves work like lichess:
|
|
24
|
+
* 1. When it's not your turn, you can drag/click a move — it queues as a premove
|
|
25
|
+
* 2. The premove squares are highlighted with a distinct color
|
|
26
|
+
* 3. When your turn begins (FEN changes and it's now your turn), the premove
|
|
27
|
+
* is automatically attempted via the board's internal chess.js
|
|
28
|
+
* 4. If the premove is legal, it's applied; if not, it's silently discarded
|
|
29
|
+
*
|
|
30
|
+
* The board.tsx orchestrates this: it calls consumePremove() in a useEffect
|
|
31
|
+
* that watches the FEN (turn change), then attempts the move.
|
|
32
|
+
*/
|
|
33
|
+
export function usePremove(): UsePremoveReturn {
|
|
34
|
+
const [premove, setPremoveState] = useState<PremoveData | null>(null);
|
|
35
|
+
|
|
36
|
+
const setPremove = useCallback((pm: PremoveData) => {
|
|
37
|
+
setPremoveState(pm);
|
|
38
|
+
}, []);
|
|
39
|
+
|
|
40
|
+
const clearPremove = useCallback(() => {
|
|
41
|
+
setPremoveState(null);
|
|
42
|
+
}, []);
|
|
43
|
+
|
|
44
|
+
const consumePremove = useCallback((): PremoveData | null => {
|
|
45
|
+
let consumed: PremoveData | null = null;
|
|
46
|
+
setPremoveState((current) => {
|
|
47
|
+
consumed = current;
|
|
48
|
+
return null;
|
|
49
|
+
});
|
|
50
|
+
return consumed;
|
|
51
|
+
}, []);
|
|
52
|
+
|
|
53
|
+
return {
|
|
54
|
+
premove,
|
|
55
|
+
setPremove,
|
|
56
|
+
clearPremove,
|
|
57
|
+
consumePremove,
|
|
58
|
+
};
|
|
59
|
+
}
|