react-chessboard-ui 2.9.0 → 2.11.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/README.md +22 -12
- 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 +102 -48
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +102 -48
- package/dist/index.modern.js.map +1 -1
- package/package.json +3 -3
package/dist/index.modern.js
CHANGED
|
@@ -1488,6 +1488,8 @@ var prepareCastlingByFEN = function prepareCastlingByFEN(castlingNotation, state
|
|
|
1488
1488
|
preparedState[preparedState.length - 1][preparedState.length - 1].figure = _extends({}, preparedState[preparedState.length - 1][preparedState.length - 1].figure, {
|
|
1489
1489
|
touched: false
|
|
1490
1490
|
});
|
|
1491
|
+
}
|
|
1492
|
+
if (!!preparedState[preparedState.length - 1][4].figure) {
|
|
1491
1493
|
preparedState[preparedState.length - 1][4].figure = _extends({}, preparedState[preparedState.length - 1][4].figure, {
|
|
1492
1494
|
touched: false
|
|
1493
1495
|
});
|
|
@@ -1498,6 +1500,8 @@ var prepareCastlingByFEN = function prepareCastlingByFEN(castlingNotation, state
|
|
|
1498
1500
|
preparedState[preparedState.length - 1][0].figure = _extends({}, preparedState[preparedState.length - 1][0].figure, {
|
|
1499
1501
|
touched: false
|
|
1500
1502
|
});
|
|
1503
|
+
}
|
|
1504
|
+
if (!!preparedState[preparedState.length - 1][4].figure) {
|
|
1501
1505
|
preparedState[preparedState.length - 1][4].figure = _extends({}, preparedState[preparedState.length - 1][4].figure, {
|
|
1502
1506
|
touched: false
|
|
1503
1507
|
});
|
|
@@ -1508,6 +1512,8 @@ var prepareCastlingByFEN = function prepareCastlingByFEN(castlingNotation, state
|
|
|
1508
1512
|
preparedState[0][preparedState.length - 1].figure = _extends({}, preparedState[0][preparedState.length - 1].figure, {
|
|
1509
1513
|
touched: false
|
|
1510
1514
|
});
|
|
1515
|
+
}
|
|
1516
|
+
if (!!preparedState[0][4].figure) {
|
|
1511
1517
|
preparedState[0][4].figure = _extends({}, preparedState[0][4].figure, {
|
|
1512
1518
|
touched: false
|
|
1513
1519
|
});
|
|
@@ -1518,6 +1524,8 @@ var prepareCastlingByFEN = function prepareCastlingByFEN(castlingNotation, state
|
|
|
1518
1524
|
preparedState[0][0].figure = _extends({}, preparedState[0][0].figure, {
|
|
1519
1525
|
touched: false
|
|
1520
1526
|
});
|
|
1527
|
+
}
|
|
1528
|
+
if (!!preparedState[0][4].figure) {
|
|
1521
1529
|
preparedState[0][4].figure = _extends({}, preparedState[0][4].figure, {
|
|
1522
1530
|
touched: false
|
|
1523
1531
|
});
|
|
@@ -1552,39 +1560,47 @@ var partFENtoState = function partFENtoState(notation) {
|
|
|
1552
1560
|
});
|
|
1553
1561
|
};
|
|
1554
1562
|
var FENtoGameState = function FENtoGameState(FEN, reversed) {
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1563
|
+
try {
|
|
1564
|
+
var gameState = {
|
|
1565
|
+
boardState: [],
|
|
1566
|
+
currentColor: 'white'
|
|
1567
|
+
};
|
|
1568
|
+
var _FEN$split = FEN.split(' '),
|
|
1569
|
+
stateNotaion = _FEN$split[0],
|
|
1570
|
+
currentColor = _FEN$split[1],
|
|
1571
|
+
FENcastling = _FEN$split[2],
|
|
1572
|
+
beatedField = _FEN$split[3],
|
|
1573
|
+
_ = _FEN$split.slice(4);
|
|
1574
|
+
var preparedStateNotation = '';
|
|
1575
|
+
for (var i = 0; i < stateNotaion.length; i++) {
|
|
1576
|
+
if (!isNaN(parseInt(stateNotaion[i]))) {
|
|
1577
|
+
var dotsCount = parseInt(stateNotaion[i]);
|
|
1578
|
+
for (var dotI = 0; dotI < dotsCount; dotI++) preparedStateNotation += '.';
|
|
1579
|
+
continue;
|
|
1580
|
+
}
|
|
1581
|
+
preparedStateNotation += stateNotaion[i];
|
|
1582
|
+
}
|
|
1583
|
+
gameState.boardState = partFENtoState(preparedStateNotation);
|
|
1584
|
+
gameState.currentColor = currentColor === 'w' ? 'white' : 'black';
|
|
1585
|
+
gameState.boardState = prepareCastlingByFEN(FENcastling, gameState.boardState);
|
|
1586
|
+
if (beatedField !== '-') {
|
|
1587
|
+
var posBeatedCell = getPositionByFEN(beatedField);
|
|
1588
|
+
gameState.boardState[posBeatedCell[0]][posBeatedCell[1]] = _extends({}, gameState.boardState[posBeatedCell[0]][posBeatedCell[1]], {
|
|
1589
|
+
beated: true
|
|
1590
|
+
});
|
|
1591
|
+
}
|
|
1592
|
+
if (reversed) return {
|
|
1593
|
+
boardState: JSChessEngine.reverseChessBoard(gameState.boardState),
|
|
1594
|
+
currentColor: gameState.currentColor
|
|
1595
|
+
};
|
|
1596
|
+
return gameState;
|
|
1597
|
+
} catch (_unused) {
|
|
1598
|
+
return {
|
|
1599
|
+
boardState: INITIAL_CELLS,
|
|
1600
|
+
currentColor: 'white',
|
|
1601
|
+
invalidFEN: true
|
|
1602
|
+
};
|
|
1582
1603
|
}
|
|
1583
|
-
if (reversed) return {
|
|
1584
|
-
boardState: JSChessEngine.reverseChessBoard(gameState.boardState),
|
|
1585
|
-
currentColor: gameState.currentColor
|
|
1586
|
-
};
|
|
1587
|
-
return gameState;
|
|
1588
1604
|
};
|
|
1589
1605
|
var getBeatedCellFENfromState = function getBeatedCellFENfromState(state) {
|
|
1590
1606
|
var beatedFieldFEN = '-';
|
|
@@ -1676,7 +1692,7 @@ var stateToFEN = function stateToFEN(state, currentColor, countMoves) {
|
|
|
1676
1692
|
return positionsFEN + " " + colorFEN + " " + casttlingFEN + " " + beatedFieldFEN + " " + blackMoves + " " + countMoves;
|
|
1677
1693
|
};
|
|
1678
1694
|
|
|
1679
|
-
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"};
|
|
1695
|
+
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"};
|
|
1680
1696
|
|
|
1681
1697
|
var CHESS_PIECES_MAP = {
|
|
1682
1698
|
'pawn-white': function pawnWhite(size) {
|
|
@@ -2309,7 +2325,9 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
|
|
|
2309
2325
|
var config = props.config,
|
|
2310
2326
|
onChange = props.onChange,
|
|
2311
2327
|
onEndGame = props.onEndGame,
|
|
2312
|
-
onClickByChessBoard = props.onClickByChessBoard
|
|
2328
|
+
onClickByChessBoard = props.onClickByChessBoard,
|
|
2329
|
+
_props$toggleTurn = props.toggleTurn,
|
|
2330
|
+
toggleTurn = _props$toggleTurn === void 0 ? true : _props$toggleTurn;
|
|
2313
2331
|
var _useState = useState(DEFAULT_CHESSBORD_CONFIG),
|
|
2314
2332
|
boardConfig = _useState[0],
|
|
2315
2333
|
setBoardConfig = _useState[1];
|
|
@@ -2379,6 +2397,9 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
|
|
|
2379
2397
|
var _useState23 = useState(false),
|
|
2380
2398
|
animated = _useState23[0],
|
|
2381
2399
|
setAnimated = _useState23[1];
|
|
2400
|
+
var _useState24 = useState(false),
|
|
2401
|
+
invalidFEN = _useState24[0],
|
|
2402
|
+
setInvalidFEN = _useState24[1];
|
|
2382
2403
|
var clearFromPos = function clearFromPos() {
|
|
2383
2404
|
return setFromPos([-1, -1]);
|
|
2384
2405
|
};
|
|
@@ -2392,7 +2413,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
|
|
|
2392
2413
|
return setClickPossibleMoves([]);
|
|
2393
2414
|
};
|
|
2394
2415
|
var toggleCurrentColor = function toggleCurrentColor() {
|
|
2395
|
-
|
|
2416
|
+
if (toggleTurn) setCurrentColor(function (prevColor) {
|
|
2396
2417
|
return prevColor === 'white' ? 'black' : 'white';
|
|
2397
2418
|
});
|
|
2398
2419
|
};
|
|
@@ -2441,7 +2462,8 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
|
|
|
2441
2462
|
if (!onClickByChessBoard) return;
|
|
2442
2463
|
onClickByChessBoard({
|
|
2443
2464
|
cellData: cellData,
|
|
2444
|
-
pos: pos
|
|
2465
|
+
pos: pos,
|
|
2466
|
+
currentColor: currentColor
|
|
2445
2467
|
});
|
|
2446
2468
|
};
|
|
2447
2469
|
var selectFigureFrom = function selectFigureFrom(cellPos, extActualState) {
|
|
@@ -2507,8 +2529,10 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
|
|
|
2507
2529
|
var _JSChessEngine$change = JSChessEngine.changeState(actualState, figure, to, from, boardReversed),
|
|
2508
2530
|
updatedCells = _JSChessEngine$change.updatedCells,
|
|
2509
2531
|
attackedPos = _JSChessEngine$change.attackedPos;
|
|
2510
|
-
|
|
2511
|
-
|
|
2532
|
+
if (toggleTurn) {
|
|
2533
|
+
var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
|
|
2534
|
+
setLinesWithCheck(linesCheck);
|
|
2535
|
+
}
|
|
2512
2536
|
setActualState(updatedCells);
|
|
2513
2537
|
if (figure.type === 'pawn' && (to[1] === 0 || to[1] === actualState.length - 1)) {
|
|
2514
2538
|
setTargetPos(to);
|
|
@@ -2542,8 +2566,10 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
|
|
|
2542
2566
|
figure = _change$move.figure;
|
|
2543
2567
|
var _JSChessEngine$change2 = JSChessEngine.changeState(actualState, figure, to, from, boardReversed),
|
|
2544
2568
|
updatedCells = _JSChessEngine$change2.updatedCells;
|
|
2545
|
-
|
|
2546
|
-
|
|
2569
|
+
if (toggleTurn) {
|
|
2570
|
+
var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
|
|
2571
|
+
setLinesWithCheck(linesCheck);
|
|
2572
|
+
}
|
|
2547
2573
|
var updatedChange = _extends({}, change, {
|
|
2548
2574
|
move: boardReversed ? JSChessEngine.reverseMove(change.move) : change.move
|
|
2549
2575
|
});
|
|
@@ -2564,8 +2590,10 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
|
|
|
2564
2590
|
var _JSChessEngine$change3 = JSChessEngine.changeState(actualState, figure, to, from, boardReversed),
|
|
2565
2591
|
updatedCells = _JSChessEngine$change3.updatedCells,
|
|
2566
2592
|
attackedPos = _JSChessEngine$change3.attackedPos;
|
|
2567
|
-
|
|
2568
|
-
|
|
2593
|
+
if (toggleTurn) {
|
|
2594
|
+
var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
|
|
2595
|
+
setLinesWithCheck(linesCheck);
|
|
2596
|
+
}
|
|
2569
2597
|
setActualState(updatedCells);
|
|
2570
2598
|
if (figure.type === 'pawn' && (to[1] === 0 || to[1] === actualState.length - 1)) {
|
|
2571
2599
|
setTargetPos(to);
|
|
@@ -2596,8 +2624,11 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
|
|
|
2596
2624
|
var _JSChessEngine$change4 = JSChessEngine.changeState(actualState, figure, to, from, boardReversed),
|
|
2597
2625
|
updatedCells = _JSChessEngine$change4.updatedCells,
|
|
2598
2626
|
attackedPos = _JSChessEngine$change4.attackedPos;
|
|
2599
|
-
var linesCheck =
|
|
2600
|
-
|
|
2627
|
+
var linesCheck = [];
|
|
2628
|
+
if (toggleTurn) {
|
|
2629
|
+
linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
|
|
2630
|
+
setLinesWithCheck(linesCheck);
|
|
2631
|
+
}
|
|
2601
2632
|
if (fromPos[0] !== -1) {
|
|
2602
2633
|
var figureFromPos = updatedCells[fromPos[1]][fromPos[0]].figure;
|
|
2603
2634
|
if (!figureFromPos || figureFromPos.type !== holdedFigure.type || figureFromPos.color !== holdedFigure.color) {
|
|
@@ -2812,7 +2843,9 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
|
|
|
2812
2843
|
var handleUpdateFEN = function handleUpdateFEN(FEN, reversed) {
|
|
2813
2844
|
var _FENtoGameState = FENtoGameState(FEN, reversed),
|
|
2814
2845
|
boardState = _FENtoGameState.boardState,
|
|
2815
|
-
currentColor = _FENtoGameState.currentColor
|
|
2846
|
+
currentColor = _FENtoGameState.currentColor,
|
|
2847
|
+
invalidFEN = _FENtoGameState.invalidFEN;
|
|
2848
|
+
setInvalidFEN(invalidFEN);
|
|
2816
2849
|
cleanAllForFigure();
|
|
2817
2850
|
setAnimated(false);
|
|
2818
2851
|
setInitialState(boardState);
|
|
@@ -2827,6 +2860,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
|
|
|
2827
2860
|
newMove: newMove,
|
|
2828
2861
|
animated: animated,
|
|
2829
2862
|
movesTrail: movesTrail,
|
|
2863
|
+
invalidFEN: invalidFEN,
|
|
2830
2864
|
boardConfig: boardConfig,
|
|
2831
2865
|
markedCells: markedCells,
|
|
2832
2866
|
grabbingPos: grabbingPos,
|
|
@@ -2846,6 +2880,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
|
|
|
2846
2880
|
handleClick: handleClick,
|
|
2847
2881
|
clearFromPos: clearFromPos,
|
|
2848
2882
|
handleGrabEnd: handleGrabEnd,
|
|
2883
|
+
setInvalidFEN: setInvalidFEN,
|
|
2849
2884
|
handleGrabbing: handleGrabbing,
|
|
2850
2885
|
endRenderArrow: endRenderArrow,
|
|
2851
2886
|
setActualState: setActualState,
|
|
@@ -3039,17 +3074,21 @@ var ChessBoard = function ChessBoard(props) {
|
|
|
3039
3074
|
_props$moveArrows = props.moveArrows,
|
|
3040
3075
|
moveArrows = _props$moveArrows === void 0 ? [] : _props$moveArrows,
|
|
3041
3076
|
_props$arrows = props.arrows,
|
|
3042
|
-
arrows = _props$arrows === void 0 ? [] : _props$arrows
|
|
3077
|
+
arrows = _props$arrows === void 0 ? [] : _props$arrows,
|
|
3078
|
+
_props$toggleTurn = props.toggleTurn,
|
|
3079
|
+
toggleTurn = _props$toggleTurn === void 0 ? true : _props$toggleTurn;
|
|
3043
3080
|
var _useChessBoardInterac = useChessBoardInteractive({
|
|
3044
3081
|
onChange: onChange,
|
|
3045
3082
|
onEndGame: onEndGame,
|
|
3046
3083
|
onClickByChessBoard: onClick,
|
|
3047
|
-
config: config
|
|
3084
|
+
config: config,
|
|
3085
|
+
toggleTurn: toggleTurn
|
|
3048
3086
|
}),
|
|
3049
3087
|
fromPos = _useChessBoardInterac.fromPos,
|
|
3050
3088
|
newMove = _useChessBoardInterac.newMove,
|
|
3051
3089
|
animated = _useChessBoardInterac.animated,
|
|
3052
3090
|
movesTrail = _useChessBoardInterac.movesTrail,
|
|
3091
|
+
invalidFEN = _useChessBoardInterac.invalidFEN,
|
|
3053
3092
|
boardConfig = _useChessBoardInterac.boardConfig,
|
|
3054
3093
|
markedCells = _useChessBoardInterac.markedCells,
|
|
3055
3094
|
grabbingPos = _useChessBoardInterac.grabbingPos,
|
|
@@ -3064,6 +3103,7 @@ var ChessBoard = function ChessBoard(props) {
|
|
|
3064
3103
|
markCell = _useChessBoardInterac.markCell,
|
|
3065
3104
|
handleClick = _useChessBoardInterac.handleClick,
|
|
3066
3105
|
handleGrabEnd = _useChessBoardInterac.handleGrabEnd,
|
|
3106
|
+
setInvalidFEN = _useChessBoardInterac.setInvalidFEN,
|
|
3067
3107
|
handleGrabbing = _useChessBoardInterac.handleGrabbing,
|
|
3068
3108
|
endRenderArrow = _useChessBoardInterac.endRenderArrow,
|
|
3069
3109
|
setPlayerColor = _useChessBoardInterac.setPlayerColor,
|
|
@@ -3102,6 +3142,10 @@ var ChessBoard = function ChessBoard(props) {
|
|
|
3102
3142
|
color: arrow.color
|
|
3103
3143
|
};
|
|
3104
3144
|
});
|
|
3145
|
+
var handleHideInvalidFENmessage = function handleHideInvalidFENmessage(event) {
|
|
3146
|
+
event.preventDefault();
|
|
3147
|
+
setInvalidFEN(false);
|
|
3148
|
+
};
|
|
3105
3149
|
return React.createElement("div", {
|
|
3106
3150
|
className: styles.chessBoard
|
|
3107
3151
|
}, React.createElement(ChessBoardCellsLayout, {
|
|
@@ -3147,7 +3191,17 @@ var ChessBoard = function ChessBoard(props) {
|
|
|
3147
3191
|
color: currentColor,
|
|
3148
3192
|
forPawnTransform: true,
|
|
3149
3193
|
onSelect: handleSelectFigurePicker
|
|
3150
|
-
}))
|
|
3194
|
+
})), invalidFEN && React.createElement("div", {
|
|
3195
|
+
className: styles.chessBoardInvalidFenMessage
|
|
3196
|
+
}, React.createElement("div", {
|
|
3197
|
+
className: styles.fenErrorMessage,
|
|
3198
|
+
role: "alert"
|
|
3199
|
+
}, React.createElement("div", null, "Invalid FEN notation. The default board position was used instead.", " ", React.createElement("a", {
|
|
3200
|
+
href: "/docs/fen-errors"
|
|
3201
|
+
}, "See common FEN problems"), "."), React.createElement("div", null, React.createElement("a", {
|
|
3202
|
+
className: styles.fenErrorMessageClose,
|
|
3203
|
+
onClick: handleHideInvalidFENmessage
|
|
3204
|
+
}, "Hide this message")))));
|
|
3151
3205
|
};
|
|
3152
3206
|
|
|
3153
3207
|
export { ALL_FIGURES, CHESS_BOARD_CONFIG, ChessBoard, DEFAULT_CHESSBORD_CONFIG, DEFAULT_PIECES_MAP, FENtoGameState, FIGURES_LATTERS_NOTATIONS, INITIAL_CELLS, JSChessEngine, LETTERS, LETTER_TO_FIGURE_MAP, getBeatedCellFENfromState, getFENcastlingFromState, getFENpositionsFromState, getPositionByFEN, partFENtoState, prepareCastlingByFEN, stateToFEN };
|