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.
@@ -275,22 +275,24 @@ JSChessEngine.correctionPossibleMoves = function (state, figurePos, possibleMove
275
275
  DIRECTIONS_D.forEach(function (direction) {
276
276
  if (!kingBehidFigure) {
277
277
  var attackedLine = JSChessEngine.getFullAttackedLine(state, enemyPos, direction);
278
- var foundIndexKingPos = attackedLine.findIndex(function (pos) {
279
- return pos[0] === kingPos[0] && pos[1] === kingPos[1];
280
- });
281
- var foundIndexFigurePos = attackedLine.findIndex(function (pos) {
282
- return pos[0] === figurePos[0] && pos[1] === figurePos[1];
283
- });
284
- var countFiguresBehindKing = JSChessEngine.getCountEnemys(state, enemyPos, attackedLine);
285
- kingBehidFigure = foundIndexKingPos > -1 && foundIndexFigurePos > -1 && foundIndexKingPos > foundIndexFigurePos && countFiguresBehindKing === 1;
286
- if (kingBehidFigure) {
287
- possibleMoves.forEach(function (possibleMove) {
288
- [].concat(attackedLine, [enemyPos]).forEach(function (attackedPos) {
289
- if (attackedPos[0] === possibleMove[0] && attackedPos[1] === possibleMove[1]) {
290
- correctedPossibleMoves.push(possibleMove);
291
- }
292
- });
278
+ if (!!kingPos) {
279
+ var foundIndexKingPos = attackedLine.findIndex(function (pos) {
280
+ return pos[0] === kingPos[0] && pos[1] === kingPos[1];
293
281
  });
282
+ var foundIndexFigurePos = attackedLine.findIndex(function (pos) {
283
+ return pos[0] === figurePos[0] && pos[1] === figurePos[1];
284
+ });
285
+ var countFiguresBehindKing = JSChessEngine.getCountEnemys(state, enemyPos, attackedLine);
286
+ kingBehidFigure = foundIndexKingPos > -1 && foundIndexFigurePos > -1 && foundIndexKingPos > foundIndexFigurePos && countFiguresBehindKing === 1;
287
+ if (kingBehidFigure) {
288
+ possibleMoves.forEach(function (possibleMove) {
289
+ [].concat(attackedLine, [enemyPos]).forEach(function (attackedPos) {
290
+ if (attackedPos[0] === possibleMove[0] && attackedPos[1] === possibleMove[1]) {
291
+ correctedPossibleMoves.push(possibleMove);
292
+ }
293
+ });
294
+ });
295
+ }
294
296
  }
295
297
  }
296
298
  });
@@ -302,22 +304,24 @@ JSChessEngine.correctionPossibleMoves = function (state, figurePos, possibleMove
302
304
  DIRECTIONS_VH.forEach(function (direction) {
303
305
  if (!kingBehidFigure) {
304
306
  var attackedLine = JSChessEngine.getFullAttackedLine(state, enemyPos, direction);
305
- var foundIndexKingPos = attackedLine.findIndex(function (pos) {
306
- return pos[0] === kingPos[0] && pos[1] === kingPos[1];
307
- });
308
- var foundIndexFigurePos = attackedLine.findIndex(function (pos) {
309
- return pos[0] === figurePos[0] && pos[1] === figurePos[1];
310
- });
311
- var countFiguresBehindKing = JSChessEngine.getCountEnemys(state, enemyPos, attackedLine);
312
- kingBehidFigure = foundIndexKingPos > -1 && foundIndexFigurePos > -1 && foundIndexKingPos > foundIndexFigurePos && countFiguresBehindKing === 1;
313
- if (kingBehidFigure) {
314
- possibleMoves.forEach(function (possibleMove) {
315
- [].concat(attackedLine, [enemyPos]).forEach(function (attackedPos) {
316
- if (attackedPos[0] === possibleMove[0] && attackedPos[1] === possibleMove[1]) {
317
- correctedPossibleMoves.push(possibleMove);
318
- }
319
- });
307
+ if (!!kingPos) {
308
+ var foundIndexKingPos = attackedLine.findIndex(function (pos) {
309
+ return pos[0] === kingPos[0] && pos[1] === kingPos[1];
320
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
+ });
323
+ });
324
+ }
321
325
  }
322
326
  }
323
327
  });
@@ -329,22 +333,24 @@ JSChessEngine.correctionPossibleMoves = function (state, figurePos, possibleMove
329
333
  [].concat(DIRECTIONS_D, DIRECTIONS_VH).forEach(function (direction) {
330
334
  if (!kingBehidFigure) {
331
335
  var attackedLine = JSChessEngine.getFullAttackedLine(state, enemyPos, direction);
332
- var foundIndexKingPos = attackedLine.findIndex(function (pos) {
333
- return pos[0] === kingPos[0] && pos[1] === kingPos[1];
334
- });
335
- var foundIndexFigurePos = attackedLine.findIndex(function (pos) {
336
- return pos[0] === figurePos[0] && pos[1] === figurePos[1];
337
- });
338
- var countFiguresBehindKing = JSChessEngine.getCountEnemys(state, enemyPos, attackedLine);
339
- kingBehidFigure = foundIndexKingPos > -1 && foundIndexFigurePos > -1 && foundIndexKingPos > foundIndexFigurePos && countFiguresBehindKing === 1;
340
- if (kingBehidFigure) {
341
- possibleMoves.forEach(function (possibleMove) {
342
- [].concat(attackedLine, [enemyPos]).forEach(function (attackedPos) {
343
- if (attackedPos[0] === possibleMove[0] && attackedPos[1] === possibleMove[1]) {
344
- correctedPossibleMoves.push(possibleMove);
345
- }
346
- });
336
+ if (!!kingPos) {
337
+ var foundIndexKingPos = attackedLine.findIndex(function (pos) {
338
+ return pos[0] === kingPos[0] && pos[1] === kingPos[1];
339
+ });
340
+ var foundIndexFigurePos = attackedLine.findIndex(function (pos) {
341
+ return pos[0] === figurePos[0] && pos[1] === figurePos[1];
347
342
  });
343
+ var countFiguresBehindKing = JSChessEngine.getCountEnemys(state, enemyPos, attackedLine);
344
+ kingBehidFigure = foundIndexKingPos > -1 && foundIndexFigurePos > -1 && foundIndexKingPos > foundIndexFigurePos && countFiguresBehindKing === 1;
345
+ if (kingBehidFigure) {
346
+ possibleMoves.forEach(function (possibleMove) {
347
+ [].concat(attackedLine, [enemyPos]).forEach(function (attackedPos) {
348
+ if (attackedPos[0] === possibleMove[0] && attackedPos[1] === possibleMove[1]) {
349
+ correctedPossibleMoves.push(possibleMove);
350
+ }
351
+ });
352
+ });
353
+ }
348
354
  }
349
355
  }
350
356
  });
@@ -1488,6 +1494,8 @@ var prepareCastlingByFEN = function prepareCastlingByFEN(castlingNotation, state
1488
1494
  preparedState[preparedState.length - 1][preparedState.length - 1].figure = _extends({}, preparedState[preparedState.length - 1][preparedState.length - 1].figure, {
1489
1495
  touched: false
1490
1496
  });
1497
+ }
1498
+ if (!!preparedState[preparedState.length - 1][4].figure) {
1491
1499
  preparedState[preparedState.length - 1][4].figure = _extends({}, preparedState[preparedState.length - 1][4].figure, {
1492
1500
  touched: false
1493
1501
  });
@@ -1498,6 +1506,8 @@ var prepareCastlingByFEN = function prepareCastlingByFEN(castlingNotation, state
1498
1506
  preparedState[preparedState.length - 1][0].figure = _extends({}, preparedState[preparedState.length - 1][0].figure, {
1499
1507
  touched: false
1500
1508
  });
1509
+ }
1510
+ if (!!preparedState[preparedState.length - 1][4].figure) {
1501
1511
  preparedState[preparedState.length - 1][4].figure = _extends({}, preparedState[preparedState.length - 1][4].figure, {
1502
1512
  touched: false
1503
1513
  });
@@ -1508,6 +1518,8 @@ var prepareCastlingByFEN = function prepareCastlingByFEN(castlingNotation, state
1508
1518
  preparedState[0][preparedState.length - 1].figure = _extends({}, preparedState[0][preparedState.length - 1].figure, {
1509
1519
  touched: false
1510
1520
  });
1521
+ }
1522
+ if (!!preparedState[0][4].figure) {
1511
1523
  preparedState[0][4].figure = _extends({}, preparedState[0][4].figure, {
1512
1524
  touched: false
1513
1525
  });
@@ -1518,6 +1530,8 @@ var prepareCastlingByFEN = function prepareCastlingByFEN(castlingNotation, state
1518
1530
  preparedState[0][0].figure = _extends({}, preparedState[0][0].figure, {
1519
1531
  touched: false
1520
1532
  });
1533
+ }
1534
+ if (!!preparedState[0][4].figure) {
1521
1535
  preparedState[0][4].figure = _extends({}, preparedState[0][4].figure, {
1522
1536
  touched: false
1523
1537
  });
@@ -1552,39 +1566,47 @@ var partFENtoState = function partFENtoState(notation) {
1552
1566
  });
1553
1567
  };
1554
1568
  var FENtoGameState = function FENtoGameState(FEN, reversed) {
1555
- var gameState = {
1556
- boardState: [],
1557
- currentColor: 'white'
1558
- };
1559
- var _FEN$split = FEN.split(' '),
1560
- stateNotaion = _FEN$split[0],
1561
- currentColor = _FEN$split[1],
1562
- FENcastling = _FEN$split[2],
1563
- beatedField = _FEN$split[3],
1564
- _ = _FEN$split.slice(4);
1565
- var preparedStateNotation = '';
1566
- for (var i = 0; i < stateNotaion.length; i++) {
1567
- if (!isNaN(parseInt(stateNotaion[i]))) {
1568
- var dotsCount = parseInt(stateNotaion[i]);
1569
- for (var dotI = 0; dotI < dotsCount; dotI++) preparedStateNotation += '.';
1570
- continue;
1571
- }
1572
- preparedStateNotation += stateNotaion[i];
1573
- }
1574
- gameState.boardState = partFENtoState(preparedStateNotation);
1575
- gameState.currentColor = currentColor === 'w' ? 'white' : 'black';
1576
- gameState.boardState = prepareCastlingByFEN(FENcastling, gameState.boardState);
1577
- if (beatedField !== '-') {
1578
- var posBeatedCell = getPositionByFEN(beatedField);
1579
- gameState.boardState[posBeatedCell[0]][posBeatedCell[1]] = _extends({}, gameState.boardState[posBeatedCell[0]][posBeatedCell[1]], {
1580
- beated: true
1581
- });
1569
+ try {
1570
+ var gameState = {
1571
+ boardState: [],
1572
+ currentColor: 'white'
1573
+ };
1574
+ var _FEN$split = FEN.split(' '),
1575
+ stateNotaion = _FEN$split[0],
1576
+ currentColor = _FEN$split[1],
1577
+ FENcastling = _FEN$split[2],
1578
+ beatedField = _FEN$split[3],
1579
+ _ = _FEN$split.slice(4);
1580
+ var preparedStateNotation = '';
1581
+ for (var i = 0; i < stateNotaion.length; i++) {
1582
+ if (!isNaN(parseInt(stateNotaion[i]))) {
1583
+ var dotsCount = parseInt(stateNotaion[i]);
1584
+ for (var dotI = 0; dotI < dotsCount; dotI++) preparedStateNotation += '.';
1585
+ continue;
1586
+ }
1587
+ preparedStateNotation += stateNotaion[i];
1588
+ }
1589
+ gameState.boardState = partFENtoState(preparedStateNotation);
1590
+ gameState.currentColor = currentColor === 'w' ? 'white' : 'black';
1591
+ gameState.boardState = prepareCastlingByFEN(FENcastling, gameState.boardState);
1592
+ if (beatedField !== '-') {
1593
+ var posBeatedCell = getPositionByFEN(beatedField);
1594
+ gameState.boardState[posBeatedCell[0]][posBeatedCell[1]] = _extends({}, gameState.boardState[posBeatedCell[0]][posBeatedCell[1]], {
1595
+ beated: true
1596
+ });
1597
+ }
1598
+ if (reversed) return {
1599
+ boardState: JSChessEngine.reverseChessBoard(gameState.boardState),
1600
+ currentColor: gameState.currentColor
1601
+ };
1602
+ return gameState;
1603
+ } catch (_unused) {
1604
+ return {
1605
+ boardState: INITIAL_CELLS,
1606
+ currentColor: 'white',
1607
+ invalidFEN: true
1608
+ };
1582
1609
  }
1583
- if (reversed) return {
1584
- boardState: JSChessEngine.reverseChessBoard(gameState.boardState),
1585
- currentColor: gameState.currentColor
1586
- };
1587
- return gameState;
1588
1610
  };
1589
1611
  var getBeatedCellFENfromState = function getBeatedCellFENfromState(state) {
1590
1612
  var beatedFieldFEN = '-';
@@ -1676,7 +1698,7 @@ var stateToFEN = function stateToFEN(state, currentColor, countMoves) {
1676
1698
  return positionsFEN + " " + colorFEN + " " + casttlingFEN + " " + beatedFieldFEN + " " + blackMoves + " " + countMoves;
1677
1699
  };
1678
1700
 
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"};
1701
+ 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
1702
 
1681
1703
  var CHESS_PIECES_MAP = {
1682
1704
  'pawn-white': function pawnWhite(size) {
@@ -2309,7 +2331,9 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2309
2331
  var config = props.config,
2310
2332
  onChange = props.onChange,
2311
2333
  onEndGame = props.onEndGame,
2312
- onClickByChessBoard = props.onClickByChessBoard;
2334
+ onClickByChessBoard = props.onClickByChessBoard,
2335
+ _props$toggleTurn = props.toggleTurn,
2336
+ toggleTurn = _props$toggleTurn === void 0 ? true : _props$toggleTurn;
2313
2337
  var _useState = useState(DEFAULT_CHESSBORD_CONFIG),
2314
2338
  boardConfig = _useState[0],
2315
2339
  setBoardConfig = _useState[1];
@@ -2379,6 +2403,9 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2379
2403
  var _useState23 = useState(false),
2380
2404
  animated = _useState23[0],
2381
2405
  setAnimated = _useState23[1];
2406
+ var _useState24 = useState(false),
2407
+ invalidFEN = _useState24[0],
2408
+ setInvalidFEN = _useState24[1];
2382
2409
  var clearFromPos = function clearFromPos() {
2383
2410
  return setFromPos([-1, -1]);
2384
2411
  };
@@ -2392,7 +2419,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2392
2419
  return setClickPossibleMoves([]);
2393
2420
  };
2394
2421
  var toggleCurrentColor = function toggleCurrentColor() {
2395
- return setCurrentColor(function (prevColor) {
2422
+ if (toggleTurn) setCurrentColor(function (prevColor) {
2396
2423
  return prevColor === 'white' ? 'black' : 'white';
2397
2424
  });
2398
2425
  };
@@ -2508,8 +2535,10 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2508
2535
  var _JSChessEngine$change = JSChessEngine.changeState(actualState, figure, to, from, boardReversed),
2509
2536
  updatedCells = _JSChessEngine$change.updatedCells,
2510
2537
  attackedPos = _JSChessEngine$change.attackedPos;
2511
- var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
2512
- setLinesWithCheck(linesCheck);
2538
+ if (toggleTurn) {
2539
+ var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
2540
+ setLinesWithCheck(linesCheck);
2541
+ }
2513
2542
  setActualState(updatedCells);
2514
2543
  if (figure.type === 'pawn' && (to[1] === 0 || to[1] === actualState.length - 1)) {
2515
2544
  setTargetPos(to);
@@ -2543,8 +2572,10 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2543
2572
  figure = _change$move.figure;
2544
2573
  var _JSChessEngine$change2 = JSChessEngine.changeState(actualState, figure, to, from, boardReversed),
2545
2574
  updatedCells = _JSChessEngine$change2.updatedCells;
2546
- var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
2547
- setLinesWithCheck(linesCheck);
2575
+ if (toggleTurn) {
2576
+ var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
2577
+ setLinesWithCheck(linesCheck);
2578
+ }
2548
2579
  var updatedChange = _extends({}, change, {
2549
2580
  move: boardReversed ? JSChessEngine.reverseMove(change.move) : change.move
2550
2581
  });
@@ -2565,8 +2596,10 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2565
2596
  var _JSChessEngine$change3 = JSChessEngine.changeState(actualState, figure, to, from, boardReversed),
2566
2597
  updatedCells = _JSChessEngine$change3.updatedCells,
2567
2598
  attackedPos = _JSChessEngine$change3.attackedPos;
2568
- var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
2569
- setLinesWithCheck(linesCheck);
2599
+ if (toggleTurn) {
2600
+ var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
2601
+ setLinesWithCheck(linesCheck);
2602
+ }
2570
2603
  setActualState(updatedCells);
2571
2604
  if (figure.type === 'pawn' && (to[1] === 0 || to[1] === actualState.length - 1)) {
2572
2605
  setTargetPos(to);
@@ -2597,8 +2630,11 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2597
2630
  var _JSChessEngine$change4 = JSChessEngine.changeState(actualState, figure, to, from, boardReversed),
2598
2631
  updatedCells = _JSChessEngine$change4.updatedCells,
2599
2632
  attackedPos = _JSChessEngine$change4.attackedPos;
2600
- var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
2601
- setLinesWithCheck(linesCheck);
2633
+ var linesCheck = [];
2634
+ if (toggleTurn) {
2635
+ linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
2636
+ setLinesWithCheck(linesCheck);
2637
+ }
2602
2638
  if (fromPos[0] !== -1) {
2603
2639
  var figureFromPos = updatedCells[fromPos[1]][fromPos[0]].figure;
2604
2640
  if (!figureFromPos || figureFromPos.type !== holdedFigure.type || figureFromPos.color !== holdedFigure.color) {
@@ -2813,7 +2849,9 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2813
2849
  var handleUpdateFEN = function handleUpdateFEN(FEN, reversed) {
2814
2850
  var _FENtoGameState = FENtoGameState(FEN, reversed),
2815
2851
  boardState = _FENtoGameState.boardState,
2816
- currentColor = _FENtoGameState.currentColor;
2852
+ currentColor = _FENtoGameState.currentColor,
2853
+ invalidFEN = _FENtoGameState.invalidFEN;
2854
+ setInvalidFEN(invalidFEN);
2817
2855
  cleanAllForFigure();
2818
2856
  setAnimated(false);
2819
2857
  setInitialState(boardState);
@@ -2828,6 +2866,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2828
2866
  newMove: newMove,
2829
2867
  animated: animated,
2830
2868
  movesTrail: movesTrail,
2869
+ invalidFEN: invalidFEN,
2831
2870
  boardConfig: boardConfig,
2832
2871
  markedCells: markedCells,
2833
2872
  grabbingPos: grabbingPos,
@@ -2847,6 +2886,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2847
2886
  handleClick: handleClick,
2848
2887
  clearFromPos: clearFromPos,
2849
2888
  handleGrabEnd: handleGrabEnd,
2889
+ setInvalidFEN: setInvalidFEN,
2850
2890
  handleGrabbing: handleGrabbing,
2851
2891
  endRenderArrow: endRenderArrow,
2852
2892
  setActualState: setActualState,
@@ -3040,17 +3080,21 @@ var ChessBoard = function ChessBoard(props) {
3040
3080
  _props$moveArrows = props.moveArrows,
3041
3081
  moveArrows = _props$moveArrows === void 0 ? [] : _props$moveArrows,
3042
3082
  _props$arrows = props.arrows,
3043
- arrows = _props$arrows === void 0 ? [] : _props$arrows;
3083
+ arrows = _props$arrows === void 0 ? [] : _props$arrows,
3084
+ _props$toggleTurn = props.toggleTurn,
3085
+ toggleTurn = _props$toggleTurn === void 0 ? true : _props$toggleTurn;
3044
3086
  var _useChessBoardInterac = useChessBoardInteractive({
3045
3087
  onChange: onChange,
3046
3088
  onEndGame: onEndGame,
3047
3089
  onClickByChessBoard: onClick,
3048
- config: config
3090
+ config: config,
3091
+ toggleTurn: toggleTurn
3049
3092
  }),
3050
3093
  fromPos = _useChessBoardInterac.fromPos,
3051
3094
  newMove = _useChessBoardInterac.newMove,
3052
3095
  animated = _useChessBoardInterac.animated,
3053
3096
  movesTrail = _useChessBoardInterac.movesTrail,
3097
+ invalidFEN = _useChessBoardInterac.invalidFEN,
3054
3098
  boardConfig = _useChessBoardInterac.boardConfig,
3055
3099
  markedCells = _useChessBoardInterac.markedCells,
3056
3100
  grabbingPos = _useChessBoardInterac.grabbingPos,
@@ -3065,6 +3109,7 @@ var ChessBoard = function ChessBoard(props) {
3065
3109
  markCell = _useChessBoardInterac.markCell,
3066
3110
  handleClick = _useChessBoardInterac.handleClick,
3067
3111
  handleGrabEnd = _useChessBoardInterac.handleGrabEnd,
3112
+ setInvalidFEN = _useChessBoardInterac.setInvalidFEN,
3068
3113
  handleGrabbing = _useChessBoardInterac.handleGrabbing,
3069
3114
  endRenderArrow = _useChessBoardInterac.endRenderArrow,
3070
3115
  setPlayerColor = _useChessBoardInterac.setPlayerColor,
@@ -3103,6 +3148,10 @@ var ChessBoard = function ChessBoard(props) {
3103
3148
  color: arrow.color
3104
3149
  };
3105
3150
  });
3151
+ var handleHideInvalidFENmessage = function handleHideInvalidFENmessage(event) {
3152
+ event.preventDefault();
3153
+ setInvalidFEN(false);
3154
+ };
3106
3155
  return React.createElement("div", {
3107
3156
  className: styles.chessBoard
3108
3157
  }, React.createElement(ChessBoardCellsLayout, {
@@ -3148,7 +3197,17 @@ var ChessBoard = function ChessBoard(props) {
3148
3197
  color: currentColor,
3149
3198
  forPawnTransform: true,
3150
3199
  onSelect: handleSelectFigurePicker
3151
- })));
3200
+ })), invalidFEN && React.createElement("div", {
3201
+ className: styles.chessBoardInvalidFenMessage
3202
+ }, React.createElement("div", {
3203
+ className: styles.fenErrorMessage,
3204
+ role: "alert"
3205
+ }, React.createElement("div", null, "Invalid FEN notation. The default board position was used instead.", " ", React.createElement("a", {
3206
+ href: "/docs/fen-errors"
3207
+ }, "See common FEN problems"), "."), React.createElement("div", null, React.createElement("a", {
3208
+ className: styles.fenErrorMessageClose,
3209
+ onClick: handleHideInvalidFENmessage
3210
+ }, "Hide this message")))));
3152
3211
  };
3153
3212
 
3154
3213
  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 };