react-chessboard-ui 2.3.0 → 2.4.1

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.
@@ -584,7 +584,7 @@ JSChessEngine.checkPossiblePawnMoveToPos = function (state, pos, target, pawnCol
584
584
  case 'default':
585
585
  return !JSChessEngine.hasFigure(state, target.pos);
586
586
  case 'attack':
587
- return JSChessEngine.checkInBorderBoard(state, target.pos) && JSChessEngine.hasFigure(state, target.pos) && JSChessEngine.checkEnemy(state, pos, target.pos) && !JSChessEngine.checkEnemyKing(state, pos, target.pos) || JSChessEngine.checkInBorderBoard(state, target.pos) && JSChessEngine.checkBeatedCell(state, target.pos);
587
+ return JSChessEngine.checkInBorderBoard(state, target.pos) && JSChessEngine.hasFigure(state, target.pos) && JSChessEngine.checkEnemy(state, pos, target.pos) && !JSChessEngine.checkEnemyKing(state, pos, target.pos) || JSChessEngine.checkInBorderBoard(state, target.pos) && JSChessEngine.checkBeatedCell(state, target.pos) && state[target.pos[1]][target.pos[0]].beatedFor !== pawnColor;
588
588
  }
589
589
  };
590
590
  JSChessEngine.calcPawnMoves = function (state, figurePos, revese, onCheckPossible) {
@@ -966,7 +966,8 @@ JSChessEngine.changeState = function (state, currentFigure, targetPos, prevPos,
966
966
  attackedPos = [i, j];
967
967
  return {
968
968
  figure: undefined,
969
- beated: false
969
+ beated: false,
970
+ beatedFor: undefined
970
971
  };
971
972
  }
972
973
  if (currentFigure.type === 'pawn') {
@@ -975,13 +976,15 @@ JSChessEngine.changeState = function (state, currentFigure, targetPos, prevPos,
975
976
  if (diff > 0 && j === targetPos[1] - 1 && targetPos[0] === i || diff < 0 && j === targetPos[1] + 1 && targetPos[0] === i) {
976
977
  return {
977
978
  figure: undefined,
978
- beated: true
979
+ beated: true,
980
+ beatedFor: currentFigure.color
979
981
  };
980
982
  }
981
983
  }
982
984
  }
983
985
  return _extends({}, cell, {
984
- beated: cell.beated ? false : cell.beated
986
+ beated: cell.beated ? false : cell.beated,
987
+ beatedFor: cell.beated ? undefined : cell.beatedFor
985
988
  });
986
989
  });
987
990
  });
@@ -2588,8 +2591,14 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2588
2591
  var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
2589
2592
  setLinesWithCheck(linesCheck);
2590
2593
  if (fromPos[0] !== -1) {
2591
- var nextMoves = JSChessEngine.getNextMoves(updatedCells, fromPos, linesCheck, boardReversed);
2592
- setPossibleMoves(nextMoves);
2594
+ var figureFromPos = updatedCells[fromPos[1]][fromPos[0]].figure;
2595
+ if (!figureFromPos || figureFromPos.type !== holdedFigure.type || figureFromPos.color !== holdedFigure.color) {
2596
+ clearFromPos();
2597
+ setHoldedFigure(undefined);
2598
+ } else {
2599
+ var nextMoves = JSChessEngine.getNextMoves(updatedCells, fromPos, linesCheck, boardReversed);
2600
+ setPossibleMoves(nextMoves);
2601
+ }
2593
2602
  }
2594
2603
  setActualState(updatedCells);
2595
2604
  if (figure.type === 'pawn' && (to[1] === 0 || to[1] === actualState.length - 1)) {