react-chessboard-ui 2.10.0 → 2.12.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/dist/ChessBoard/ChessBoard.d.ts +1 -0
- package/dist/ChessBoard/useChessBoardInteractive.d.ts +3 -0
- package/dist/JSChessEngine/FEN.utils.d.ts +1 -0
- package/dist/index.css +41 -0
- package/dist/index.js +151 -92
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +151 -92
- package/dist/index.modern.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,12 +6,14 @@ declare type UseChessBoardInteractiveProps = {
|
|
|
6
6
|
onChange: (moveData: MoveData) => void;
|
|
7
7
|
onEndGame: (result: GameResult) => void;
|
|
8
8
|
onClickByChessBoard?: (data: ClickData) => void;
|
|
9
|
+
toggleTurn?: boolean;
|
|
9
10
|
};
|
|
10
11
|
export declare const useChessBoardInteractive: (props: UseChessBoardInteractiveProps) => {
|
|
11
12
|
fromPos: CellPos;
|
|
12
13
|
newMove: ChangeMove;
|
|
13
14
|
animated: boolean;
|
|
14
15
|
movesTrail: [CellPos, CellPos];
|
|
16
|
+
invalidFEN: boolean;
|
|
15
17
|
boardConfig: ChessBoardConfig;
|
|
16
18
|
markedCells: CellPos[];
|
|
17
19
|
grabbingPos: CellPos;
|
|
@@ -31,6 +33,7 @@ export declare const useChessBoardInteractive: (props: UseChessBoardInteractiveP
|
|
|
31
33
|
handleClick: (cellPos: CellPos, viewOnly?: boolean) => void;
|
|
32
34
|
clearFromPos: () => void;
|
|
33
35
|
handleGrabEnd: (cellPos: CellPos, withTransition?: boolean) => void;
|
|
36
|
+
setInvalidFEN: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
34
37
|
handleGrabbing: (x: number, y: number) => void;
|
|
35
38
|
endRenderArrow: ([x, y]: CellPos) => void;
|
|
36
39
|
setActualState: import("react").Dispatch<import("react").SetStateAction<Cell[][]>>;
|
|
@@ -27,6 +27,7 @@ export declare const partFENtoState: (notation: string) => Cell[][];
|
|
|
27
27
|
export declare const FENtoGameState: (FEN: string, reversed?: boolean) => {
|
|
28
28
|
boardState: Cell[][];
|
|
29
29
|
currentColor: FigureColor;
|
|
30
|
+
invalidFEN?: boolean;
|
|
30
31
|
};
|
|
31
32
|
/**
|
|
32
33
|
* Возвращает FEN битое поле из состояние доски
|
package/dist/index.css
CHANGED
|
@@ -148,6 +148,47 @@
|
|
|
148
148
|
align-items: center;
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
+
._jyC3- {
|
|
152
|
+
z-index: 102;
|
|
153
|
+
position: absolute;
|
|
154
|
+
top: 0;
|
|
155
|
+
right: 0;
|
|
156
|
+
bottom: 0;
|
|
157
|
+
left: 0;
|
|
158
|
+
-webkit-backdrop-filter: blur(4px);
|
|
159
|
+
backdrop-filter: blur(4px);
|
|
160
|
+
display: flex;
|
|
161
|
+
justify-content: center;
|
|
162
|
+
align-items: center;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
._8urIN {
|
|
166
|
+
padding: 12px 14px;
|
|
167
|
+
border: 1px solid #f4b8b8;
|
|
168
|
+
border-radius: 6px;
|
|
169
|
+
background: #fff1f1;
|
|
170
|
+
color: #8a1f1f;
|
|
171
|
+
font-size: 14px;
|
|
172
|
+
line-height: 1.5;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
._8urIN a {
|
|
176
|
+
color: #b42318;
|
|
177
|
+
font-weight: 600;
|
|
178
|
+
text-decoration: underline;
|
|
179
|
+
text-underline-offset: 2px;
|
|
180
|
+
cursor: pointer;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
._8urIN a:hover {
|
|
184
|
+
color: #7a1712;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
._3p5AF {
|
|
188
|
+
color: #6b6b6b !important;
|
|
189
|
+
font-size: 12px;
|
|
190
|
+
}
|
|
191
|
+
|
|
151
192
|
._1RqCc {
|
|
152
193
|
width: 100%;
|
|
153
194
|
height: 100%;
|
package/dist/index.js
CHANGED
|
@@ -278,22 +278,24 @@ JSChessEngine.correctionPossibleMoves = function (state, figurePos, possibleMove
|
|
|
278
278
|
DIRECTIONS_D.forEach(function (direction) {
|
|
279
279
|
if (!kingBehidFigure) {
|
|
280
280
|
var attackedLine = JSChessEngine.getFullAttackedLine(state, enemyPos, direction);
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
var foundIndexFigurePos = attackedLine.findIndex(function (pos) {
|
|
285
|
-
return pos[0] === figurePos[0] && pos[1] === figurePos[1];
|
|
286
|
-
});
|
|
287
|
-
var countFiguresBehindKing = JSChessEngine.getCountEnemys(state, enemyPos, attackedLine);
|
|
288
|
-
kingBehidFigure = foundIndexKingPos > -1 && foundIndexFigurePos > -1 && foundIndexKingPos > foundIndexFigurePos && countFiguresBehindKing === 1;
|
|
289
|
-
if (kingBehidFigure) {
|
|
290
|
-
possibleMoves.forEach(function (possibleMove) {
|
|
291
|
-
[].concat(attackedLine, [enemyPos]).forEach(function (attackedPos) {
|
|
292
|
-
if (attackedPos[0] === possibleMove[0] && attackedPos[1] === possibleMove[1]) {
|
|
293
|
-
correctedPossibleMoves.push(possibleMove);
|
|
294
|
-
}
|
|
295
|
-
});
|
|
281
|
+
if (!!kingPos) {
|
|
282
|
+
var foundIndexKingPos = attackedLine.findIndex(function (pos) {
|
|
283
|
+
return pos[0] === kingPos[0] && pos[1] === kingPos[1];
|
|
296
284
|
});
|
|
285
|
+
var foundIndexFigurePos = attackedLine.findIndex(function (pos) {
|
|
286
|
+
return pos[0] === figurePos[0] && pos[1] === figurePos[1];
|
|
287
|
+
});
|
|
288
|
+
var countFiguresBehindKing = JSChessEngine.getCountEnemys(state, enemyPos, attackedLine);
|
|
289
|
+
kingBehidFigure = foundIndexKingPos > -1 && foundIndexFigurePos > -1 && foundIndexKingPos > foundIndexFigurePos && countFiguresBehindKing === 1;
|
|
290
|
+
if (kingBehidFigure) {
|
|
291
|
+
possibleMoves.forEach(function (possibleMove) {
|
|
292
|
+
[].concat(attackedLine, [enemyPos]).forEach(function (attackedPos) {
|
|
293
|
+
if (attackedPos[0] === possibleMove[0] && attackedPos[1] === possibleMove[1]) {
|
|
294
|
+
correctedPossibleMoves.push(possibleMove);
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
}
|
|
297
299
|
}
|
|
298
300
|
}
|
|
299
301
|
});
|
|
@@ -305,22 +307,24 @@ JSChessEngine.correctionPossibleMoves = function (state, figurePos, possibleMove
|
|
|
305
307
|
DIRECTIONS_VH.forEach(function (direction) {
|
|
306
308
|
if (!kingBehidFigure) {
|
|
307
309
|
var attackedLine = JSChessEngine.getFullAttackedLine(state, enemyPos, direction);
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
var foundIndexFigurePos = attackedLine.findIndex(function (pos) {
|
|
312
|
-
return pos[0] === figurePos[0] && pos[1] === figurePos[1];
|
|
313
|
-
});
|
|
314
|
-
var countFiguresBehindKing = JSChessEngine.getCountEnemys(state, enemyPos, attackedLine);
|
|
315
|
-
kingBehidFigure = foundIndexKingPos > -1 && foundIndexFigurePos > -1 && foundIndexKingPos > foundIndexFigurePos && countFiguresBehindKing === 1;
|
|
316
|
-
if (kingBehidFigure) {
|
|
317
|
-
possibleMoves.forEach(function (possibleMove) {
|
|
318
|
-
[].concat(attackedLine, [enemyPos]).forEach(function (attackedPos) {
|
|
319
|
-
if (attackedPos[0] === possibleMove[0] && attackedPos[1] === possibleMove[1]) {
|
|
320
|
-
correctedPossibleMoves.push(possibleMove);
|
|
321
|
-
}
|
|
322
|
-
});
|
|
310
|
+
if (!!kingPos) {
|
|
311
|
+
var foundIndexKingPos = attackedLine.findIndex(function (pos) {
|
|
312
|
+
return pos[0] === kingPos[0] && pos[1] === kingPos[1];
|
|
323
313
|
});
|
|
314
|
+
var foundIndexFigurePos = attackedLine.findIndex(function (pos) {
|
|
315
|
+
return pos[0] === figurePos[0] && pos[1] === figurePos[1];
|
|
316
|
+
});
|
|
317
|
+
var countFiguresBehindKing = JSChessEngine.getCountEnemys(state, enemyPos, attackedLine);
|
|
318
|
+
kingBehidFigure = foundIndexKingPos > -1 && foundIndexFigurePos > -1 && foundIndexKingPos > foundIndexFigurePos && countFiguresBehindKing === 1;
|
|
319
|
+
if (kingBehidFigure) {
|
|
320
|
+
possibleMoves.forEach(function (possibleMove) {
|
|
321
|
+
[].concat(attackedLine, [enemyPos]).forEach(function (attackedPos) {
|
|
322
|
+
if (attackedPos[0] === possibleMove[0] && attackedPos[1] === possibleMove[1]) {
|
|
323
|
+
correctedPossibleMoves.push(possibleMove);
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
});
|
|
327
|
+
}
|
|
324
328
|
}
|
|
325
329
|
}
|
|
326
330
|
});
|
|
@@ -332,22 +336,24 @@ JSChessEngine.correctionPossibleMoves = function (state, figurePos, possibleMove
|
|
|
332
336
|
[].concat(DIRECTIONS_D, DIRECTIONS_VH).forEach(function (direction) {
|
|
333
337
|
if (!kingBehidFigure) {
|
|
334
338
|
var attackedLine = JSChessEngine.getFullAttackedLine(state, enemyPos, direction);
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
var countFiguresBehindKing = JSChessEngine.getCountEnemys(state, enemyPos, attackedLine);
|
|
342
|
-
kingBehidFigure = foundIndexKingPos > -1 && foundIndexFigurePos > -1 && foundIndexKingPos > foundIndexFigurePos && countFiguresBehindKing === 1;
|
|
343
|
-
if (kingBehidFigure) {
|
|
344
|
-
possibleMoves.forEach(function (possibleMove) {
|
|
345
|
-
[].concat(attackedLine, [enemyPos]).forEach(function (attackedPos) {
|
|
346
|
-
if (attackedPos[0] === possibleMove[0] && attackedPos[1] === possibleMove[1]) {
|
|
347
|
-
correctedPossibleMoves.push(possibleMove);
|
|
348
|
-
}
|
|
349
|
-
});
|
|
339
|
+
if (!!kingPos) {
|
|
340
|
+
var foundIndexKingPos = attackedLine.findIndex(function (pos) {
|
|
341
|
+
return pos[0] === kingPos[0] && pos[1] === kingPos[1];
|
|
342
|
+
});
|
|
343
|
+
var foundIndexFigurePos = attackedLine.findIndex(function (pos) {
|
|
344
|
+
return pos[0] === figurePos[0] && pos[1] === figurePos[1];
|
|
350
345
|
});
|
|
346
|
+
var countFiguresBehindKing = JSChessEngine.getCountEnemys(state, enemyPos, attackedLine);
|
|
347
|
+
kingBehidFigure = foundIndexKingPos > -1 && foundIndexFigurePos > -1 && foundIndexKingPos > foundIndexFigurePos && countFiguresBehindKing === 1;
|
|
348
|
+
if (kingBehidFigure) {
|
|
349
|
+
possibleMoves.forEach(function (possibleMove) {
|
|
350
|
+
[].concat(attackedLine, [enemyPos]).forEach(function (attackedPos) {
|
|
351
|
+
if (attackedPos[0] === possibleMove[0] && attackedPos[1] === possibleMove[1]) {
|
|
352
|
+
correctedPossibleMoves.push(possibleMove);
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
});
|
|
356
|
+
}
|
|
351
357
|
}
|
|
352
358
|
}
|
|
353
359
|
});
|
|
@@ -1491,6 +1497,8 @@ var prepareCastlingByFEN = function prepareCastlingByFEN(castlingNotation, state
|
|
|
1491
1497
|
preparedState[preparedState.length - 1][preparedState.length - 1].figure = _extends({}, preparedState[preparedState.length - 1][preparedState.length - 1].figure, {
|
|
1492
1498
|
touched: false
|
|
1493
1499
|
});
|
|
1500
|
+
}
|
|
1501
|
+
if (!!preparedState[preparedState.length - 1][4].figure) {
|
|
1494
1502
|
preparedState[preparedState.length - 1][4].figure = _extends({}, preparedState[preparedState.length - 1][4].figure, {
|
|
1495
1503
|
touched: false
|
|
1496
1504
|
});
|
|
@@ -1501,6 +1509,8 @@ var prepareCastlingByFEN = function prepareCastlingByFEN(castlingNotation, state
|
|
|
1501
1509
|
preparedState[preparedState.length - 1][0].figure = _extends({}, preparedState[preparedState.length - 1][0].figure, {
|
|
1502
1510
|
touched: false
|
|
1503
1511
|
});
|
|
1512
|
+
}
|
|
1513
|
+
if (!!preparedState[preparedState.length - 1][4].figure) {
|
|
1504
1514
|
preparedState[preparedState.length - 1][4].figure = _extends({}, preparedState[preparedState.length - 1][4].figure, {
|
|
1505
1515
|
touched: false
|
|
1506
1516
|
});
|
|
@@ -1511,6 +1521,8 @@ var prepareCastlingByFEN = function prepareCastlingByFEN(castlingNotation, state
|
|
|
1511
1521
|
preparedState[0][preparedState.length - 1].figure = _extends({}, preparedState[0][preparedState.length - 1].figure, {
|
|
1512
1522
|
touched: false
|
|
1513
1523
|
});
|
|
1524
|
+
}
|
|
1525
|
+
if (!!preparedState[0][4].figure) {
|
|
1514
1526
|
preparedState[0][4].figure = _extends({}, preparedState[0][4].figure, {
|
|
1515
1527
|
touched: false
|
|
1516
1528
|
});
|
|
@@ -1521,6 +1533,8 @@ var prepareCastlingByFEN = function prepareCastlingByFEN(castlingNotation, state
|
|
|
1521
1533
|
preparedState[0][0].figure = _extends({}, preparedState[0][0].figure, {
|
|
1522
1534
|
touched: false
|
|
1523
1535
|
});
|
|
1536
|
+
}
|
|
1537
|
+
if (!!preparedState[0][4].figure) {
|
|
1524
1538
|
preparedState[0][4].figure = _extends({}, preparedState[0][4].figure, {
|
|
1525
1539
|
touched: false
|
|
1526
1540
|
});
|
|
@@ -1555,39 +1569,47 @@ var partFENtoState = function partFENtoState(notation) {
|
|
|
1555
1569
|
});
|
|
1556
1570
|
};
|
|
1557
1571
|
var FENtoGameState = function FENtoGameState(FEN, reversed) {
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1572
|
+
try {
|
|
1573
|
+
var gameState = {
|
|
1574
|
+
boardState: [],
|
|
1575
|
+
currentColor: 'white'
|
|
1576
|
+
};
|
|
1577
|
+
var _FEN$split = FEN.split(' '),
|
|
1578
|
+
stateNotaion = _FEN$split[0],
|
|
1579
|
+
currentColor = _FEN$split[1],
|
|
1580
|
+
FENcastling = _FEN$split[2],
|
|
1581
|
+
beatedField = _FEN$split[3],
|
|
1582
|
+
_ = _FEN$split.slice(4);
|
|
1583
|
+
var preparedStateNotation = '';
|
|
1584
|
+
for (var i = 0; i < stateNotaion.length; i++) {
|
|
1585
|
+
if (!isNaN(parseInt(stateNotaion[i]))) {
|
|
1586
|
+
var dotsCount = parseInt(stateNotaion[i]);
|
|
1587
|
+
for (var dotI = 0; dotI < dotsCount; dotI++) preparedStateNotation += '.';
|
|
1588
|
+
continue;
|
|
1589
|
+
}
|
|
1590
|
+
preparedStateNotation += stateNotaion[i];
|
|
1591
|
+
}
|
|
1592
|
+
gameState.boardState = partFENtoState(preparedStateNotation);
|
|
1593
|
+
gameState.currentColor = currentColor === 'w' ? 'white' : 'black';
|
|
1594
|
+
gameState.boardState = prepareCastlingByFEN(FENcastling, gameState.boardState);
|
|
1595
|
+
if (beatedField !== '-') {
|
|
1596
|
+
var posBeatedCell = getPositionByFEN(beatedField);
|
|
1597
|
+
gameState.boardState[posBeatedCell[0]][posBeatedCell[1]] = _extends({}, gameState.boardState[posBeatedCell[0]][posBeatedCell[1]], {
|
|
1598
|
+
beated: true
|
|
1599
|
+
});
|
|
1600
|
+
}
|
|
1601
|
+
if (reversed) return {
|
|
1602
|
+
boardState: JSChessEngine.reverseChessBoard(gameState.boardState),
|
|
1603
|
+
currentColor: gameState.currentColor
|
|
1604
|
+
};
|
|
1605
|
+
return gameState;
|
|
1606
|
+
} catch (_unused) {
|
|
1607
|
+
return {
|
|
1608
|
+
boardState: INITIAL_CELLS,
|
|
1609
|
+
currentColor: 'white',
|
|
1610
|
+
invalidFEN: true
|
|
1611
|
+
};
|
|
1585
1612
|
}
|
|
1586
|
-
if (reversed) return {
|
|
1587
|
-
boardState: JSChessEngine.reverseChessBoard(gameState.boardState),
|
|
1588
|
-
currentColor: gameState.currentColor
|
|
1589
|
-
};
|
|
1590
|
-
return gameState;
|
|
1591
1613
|
};
|
|
1592
1614
|
var getBeatedCellFENfromState = function getBeatedCellFENfromState(state) {
|
|
1593
1615
|
var beatedFieldFEN = '-';
|
|
@@ -1679,7 +1701,7 @@ var stateToFEN = function stateToFEN(state, currentColor, countMoves) {
|
|
|
1679
1701
|
return positionsFEN + " " + colorFEN + " " + casttlingFEN + " " + beatedFieldFEN + " " + blackMoves + " " + countMoves;
|
|
1680
1702
|
};
|
|
1681
1703
|
|
|
1682
|
-
var styles = {"chessBoard":"_3XI6H","figuresLayout":"_2SyRK","controlLayout":"_3OVc8","controlLayoutGrabbing":"_G0IIl","interactiveLayout":"_3THn5","selectedSquare":"_1YsOr","pickedSquare":"_3MMcp","checkedSquare":"_KLkVN","interactiveCell":"_27yHq","possibleMoveMark":"_UYGA_","row":"_2XKSc","piece":"_2QHnf","holdedPiece":"_3z25q","bluredPiece":"_10meo","hiddenFigureEffect":"_2YKzU","arrow":"_12Bbd","arrowEnd":"_1BC3I","piecePicker":"_3gVhA","piecePickerItem":"_3EtmA","chessBoardPiecePicker":"_2xZM1","movesTrail":"_1RqCc","lightSquare":"_1B0qo","darkSquare":"_1NBqS"};
|
|
1704
|
+
var styles = {"chessBoard":"_3XI6H","figuresLayout":"_2SyRK","controlLayout":"_3OVc8","controlLayoutGrabbing":"_G0IIl","interactiveLayout":"_3THn5","selectedSquare":"_1YsOr","pickedSquare":"_3MMcp","checkedSquare":"_KLkVN","interactiveCell":"_27yHq","possibleMoveMark":"_UYGA_","row":"_2XKSc","piece":"_2QHnf","holdedPiece":"_3z25q","bluredPiece":"_10meo","hiddenFigureEffect":"_2YKzU","arrow":"_12Bbd","arrowEnd":"_1BC3I","piecePicker":"_3gVhA","piecePickerItem":"_3EtmA","chessBoardPiecePicker":"_2xZM1","chessBoardInvalidFenMessage":"_jyC3-","fenErrorMessage":"_8urIN","fenErrorMessageClose":"_3p5AF","movesTrail":"_1RqCc","lightSquare":"_1B0qo","darkSquare":"_1NBqS"};
|
|
1683
1705
|
|
|
1684
1706
|
var CHESS_PIECES_MAP = {
|
|
1685
1707
|
'pawn-white': function pawnWhite(size) {
|
|
@@ -2312,7 +2334,9 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
|
|
|
2312
2334
|
var config = props.config,
|
|
2313
2335
|
onChange = props.onChange,
|
|
2314
2336
|
onEndGame = props.onEndGame,
|
|
2315
|
-
onClickByChessBoard = props.onClickByChessBoard
|
|
2337
|
+
onClickByChessBoard = props.onClickByChessBoard,
|
|
2338
|
+
_props$toggleTurn = props.toggleTurn,
|
|
2339
|
+
toggleTurn = _props$toggleTurn === void 0 ? true : _props$toggleTurn;
|
|
2316
2340
|
var _useState = React.useState(DEFAULT_CHESSBORD_CONFIG),
|
|
2317
2341
|
boardConfig = _useState[0],
|
|
2318
2342
|
setBoardConfig = _useState[1];
|
|
@@ -2382,6 +2406,9 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
|
|
|
2382
2406
|
var _useState23 = React.useState(false),
|
|
2383
2407
|
animated = _useState23[0],
|
|
2384
2408
|
setAnimated = _useState23[1];
|
|
2409
|
+
var _useState24 = React.useState(false),
|
|
2410
|
+
invalidFEN = _useState24[0],
|
|
2411
|
+
setInvalidFEN = _useState24[1];
|
|
2385
2412
|
var clearFromPos = function clearFromPos() {
|
|
2386
2413
|
return setFromPos([-1, -1]);
|
|
2387
2414
|
};
|
|
@@ -2395,7 +2422,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
|
|
|
2395
2422
|
return setClickPossibleMoves([]);
|
|
2396
2423
|
};
|
|
2397
2424
|
var toggleCurrentColor = function toggleCurrentColor() {
|
|
2398
|
-
|
|
2425
|
+
if (toggleTurn) setCurrentColor(function (prevColor) {
|
|
2399
2426
|
return prevColor === 'white' ? 'black' : 'white';
|
|
2400
2427
|
});
|
|
2401
2428
|
};
|
|
@@ -2511,8 +2538,10 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
|
|
|
2511
2538
|
var _JSChessEngine$change = JSChessEngine.changeState(actualState, figure, to, from, boardReversed),
|
|
2512
2539
|
updatedCells = _JSChessEngine$change.updatedCells,
|
|
2513
2540
|
attackedPos = _JSChessEngine$change.attackedPos;
|
|
2514
|
-
|
|
2515
|
-
|
|
2541
|
+
if (toggleTurn) {
|
|
2542
|
+
var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
|
|
2543
|
+
setLinesWithCheck(linesCheck);
|
|
2544
|
+
}
|
|
2516
2545
|
setActualState(updatedCells);
|
|
2517
2546
|
if (figure.type === 'pawn' && (to[1] === 0 || to[1] === actualState.length - 1)) {
|
|
2518
2547
|
setTargetPos(to);
|
|
@@ -2546,8 +2575,10 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
|
|
|
2546
2575
|
figure = _change$move.figure;
|
|
2547
2576
|
var _JSChessEngine$change2 = JSChessEngine.changeState(actualState, figure, to, from, boardReversed),
|
|
2548
2577
|
updatedCells = _JSChessEngine$change2.updatedCells;
|
|
2549
|
-
|
|
2550
|
-
|
|
2578
|
+
if (toggleTurn) {
|
|
2579
|
+
var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
|
|
2580
|
+
setLinesWithCheck(linesCheck);
|
|
2581
|
+
}
|
|
2551
2582
|
var updatedChange = _extends({}, change, {
|
|
2552
2583
|
move: boardReversed ? JSChessEngine.reverseMove(change.move) : change.move
|
|
2553
2584
|
});
|
|
@@ -2568,8 +2599,10 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
|
|
|
2568
2599
|
var _JSChessEngine$change3 = JSChessEngine.changeState(actualState, figure, to, from, boardReversed),
|
|
2569
2600
|
updatedCells = _JSChessEngine$change3.updatedCells,
|
|
2570
2601
|
attackedPos = _JSChessEngine$change3.attackedPos;
|
|
2571
|
-
|
|
2572
|
-
|
|
2602
|
+
if (toggleTurn) {
|
|
2603
|
+
var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
|
|
2604
|
+
setLinesWithCheck(linesCheck);
|
|
2605
|
+
}
|
|
2573
2606
|
setActualState(updatedCells);
|
|
2574
2607
|
if (figure.type === 'pawn' && (to[1] === 0 || to[1] === actualState.length - 1)) {
|
|
2575
2608
|
setTargetPos(to);
|
|
@@ -2600,8 +2633,11 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
|
|
|
2600
2633
|
var _JSChessEngine$change4 = JSChessEngine.changeState(actualState, figure, to, from, boardReversed),
|
|
2601
2634
|
updatedCells = _JSChessEngine$change4.updatedCells,
|
|
2602
2635
|
attackedPos = _JSChessEngine$change4.attackedPos;
|
|
2603
|
-
var linesCheck =
|
|
2604
|
-
|
|
2636
|
+
var linesCheck = [];
|
|
2637
|
+
if (toggleTurn) {
|
|
2638
|
+
linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
|
|
2639
|
+
setLinesWithCheck(linesCheck);
|
|
2640
|
+
}
|
|
2605
2641
|
if (fromPos[0] !== -1) {
|
|
2606
2642
|
var figureFromPos = updatedCells[fromPos[1]][fromPos[0]].figure;
|
|
2607
2643
|
if (!figureFromPos || figureFromPos.type !== holdedFigure.type || figureFromPos.color !== holdedFigure.color) {
|
|
@@ -2816,7 +2852,9 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
|
|
|
2816
2852
|
var handleUpdateFEN = function handleUpdateFEN(FEN, reversed) {
|
|
2817
2853
|
var _FENtoGameState = FENtoGameState(FEN, reversed),
|
|
2818
2854
|
boardState = _FENtoGameState.boardState,
|
|
2819
|
-
currentColor = _FENtoGameState.currentColor
|
|
2855
|
+
currentColor = _FENtoGameState.currentColor,
|
|
2856
|
+
invalidFEN = _FENtoGameState.invalidFEN;
|
|
2857
|
+
setInvalidFEN(invalidFEN);
|
|
2820
2858
|
cleanAllForFigure();
|
|
2821
2859
|
setAnimated(false);
|
|
2822
2860
|
setInitialState(boardState);
|
|
@@ -2831,6 +2869,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
|
|
|
2831
2869
|
newMove: newMove,
|
|
2832
2870
|
animated: animated,
|
|
2833
2871
|
movesTrail: movesTrail,
|
|
2872
|
+
invalidFEN: invalidFEN,
|
|
2834
2873
|
boardConfig: boardConfig,
|
|
2835
2874
|
markedCells: markedCells,
|
|
2836
2875
|
grabbingPos: grabbingPos,
|
|
@@ -2850,6 +2889,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
|
|
|
2850
2889
|
handleClick: handleClick,
|
|
2851
2890
|
clearFromPos: clearFromPos,
|
|
2852
2891
|
handleGrabEnd: handleGrabEnd,
|
|
2892
|
+
setInvalidFEN: setInvalidFEN,
|
|
2853
2893
|
handleGrabbing: handleGrabbing,
|
|
2854
2894
|
endRenderArrow: endRenderArrow,
|
|
2855
2895
|
setActualState: setActualState,
|
|
@@ -3043,17 +3083,21 @@ var ChessBoard = function ChessBoard(props) {
|
|
|
3043
3083
|
_props$moveArrows = props.moveArrows,
|
|
3044
3084
|
moveArrows = _props$moveArrows === void 0 ? [] : _props$moveArrows,
|
|
3045
3085
|
_props$arrows = props.arrows,
|
|
3046
|
-
arrows = _props$arrows === void 0 ? [] : _props$arrows
|
|
3086
|
+
arrows = _props$arrows === void 0 ? [] : _props$arrows,
|
|
3087
|
+
_props$toggleTurn = props.toggleTurn,
|
|
3088
|
+
toggleTurn = _props$toggleTurn === void 0 ? true : _props$toggleTurn;
|
|
3047
3089
|
var _useChessBoardInterac = useChessBoardInteractive({
|
|
3048
3090
|
onChange: onChange,
|
|
3049
3091
|
onEndGame: onEndGame,
|
|
3050
3092
|
onClickByChessBoard: onClick,
|
|
3051
|
-
config: config
|
|
3093
|
+
config: config,
|
|
3094
|
+
toggleTurn: toggleTurn
|
|
3052
3095
|
}),
|
|
3053
3096
|
fromPos = _useChessBoardInterac.fromPos,
|
|
3054
3097
|
newMove = _useChessBoardInterac.newMove,
|
|
3055
3098
|
animated = _useChessBoardInterac.animated,
|
|
3056
3099
|
movesTrail = _useChessBoardInterac.movesTrail,
|
|
3100
|
+
invalidFEN = _useChessBoardInterac.invalidFEN,
|
|
3057
3101
|
boardConfig = _useChessBoardInterac.boardConfig,
|
|
3058
3102
|
markedCells = _useChessBoardInterac.markedCells,
|
|
3059
3103
|
grabbingPos = _useChessBoardInterac.grabbingPos,
|
|
@@ -3068,6 +3112,7 @@ var ChessBoard = function ChessBoard(props) {
|
|
|
3068
3112
|
markCell = _useChessBoardInterac.markCell,
|
|
3069
3113
|
handleClick = _useChessBoardInterac.handleClick,
|
|
3070
3114
|
handleGrabEnd = _useChessBoardInterac.handleGrabEnd,
|
|
3115
|
+
setInvalidFEN = _useChessBoardInterac.setInvalidFEN,
|
|
3071
3116
|
handleGrabbing = _useChessBoardInterac.handleGrabbing,
|
|
3072
3117
|
endRenderArrow = _useChessBoardInterac.endRenderArrow,
|
|
3073
3118
|
setPlayerColor = _useChessBoardInterac.setPlayerColor,
|
|
@@ -3106,6 +3151,10 @@ var ChessBoard = function ChessBoard(props) {
|
|
|
3106
3151
|
color: arrow.color
|
|
3107
3152
|
};
|
|
3108
3153
|
});
|
|
3154
|
+
var handleHideInvalidFENmessage = function handleHideInvalidFENmessage(event) {
|
|
3155
|
+
event.preventDefault();
|
|
3156
|
+
setInvalidFEN(false);
|
|
3157
|
+
};
|
|
3109
3158
|
return React__default.createElement("div", {
|
|
3110
3159
|
className: styles.chessBoard
|
|
3111
3160
|
}, React__default.createElement(ChessBoardCellsLayout, {
|
|
@@ -3151,7 +3200,17 @@ var ChessBoard = function ChessBoard(props) {
|
|
|
3151
3200
|
color: currentColor,
|
|
3152
3201
|
forPawnTransform: true,
|
|
3153
3202
|
onSelect: handleSelectFigurePicker
|
|
3154
|
-
}))
|
|
3203
|
+
})), invalidFEN && React__default.createElement("div", {
|
|
3204
|
+
className: styles.chessBoardInvalidFenMessage
|
|
3205
|
+
}, React__default.createElement("div", {
|
|
3206
|
+
className: styles.fenErrorMessage,
|
|
3207
|
+
role: "alert"
|
|
3208
|
+
}, React__default.createElement("div", null, "Invalid FEN notation. The default board position was used instead.", " ", React__default.createElement("a", {
|
|
3209
|
+
href: "/docs/fen-errors"
|
|
3210
|
+
}, "See common FEN problems"), "."), React__default.createElement("div", null, React__default.createElement("a", {
|
|
3211
|
+
className: styles.fenErrorMessageClose,
|
|
3212
|
+
onClick: handleHideInvalidFENmessage
|
|
3213
|
+
}, "Hide this message")))));
|
|
3155
3214
|
};
|
|
3156
3215
|
|
|
3157
3216
|
exports.ALL_FIGURES = ALL_FIGURES;
|