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.
@@ -15,6 +15,7 @@ export declare type CellColor = 'white' | 'black';
15
15
  export interface Cell {
16
16
  figure?: Figure;
17
17
  beated?: boolean;
18
+ beatedFor?: FigureColor;
18
19
  }
19
20
  export interface ChessBoardConfig {
20
21
  cellWhiteBg: string;
package/dist/index.js CHANGED
@@ -587,7 +587,7 @@ JSChessEngine.checkPossiblePawnMoveToPos = function (state, pos, target, pawnCol
587
587
  case 'default':
588
588
  return !JSChessEngine.hasFigure(state, target.pos);
589
589
  case 'attack':
590
- 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);
590
+ 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;
591
591
  }
592
592
  };
593
593
  JSChessEngine.calcPawnMoves = function (state, figurePos, revese, onCheckPossible) {
@@ -969,7 +969,8 @@ JSChessEngine.changeState = function (state, currentFigure, targetPos, prevPos,
969
969
  attackedPos = [i, j];
970
970
  return {
971
971
  figure: undefined,
972
- beated: false
972
+ beated: false,
973
+ beatedFor: undefined
973
974
  };
974
975
  }
975
976
  if (currentFigure.type === 'pawn') {
@@ -978,13 +979,15 @@ JSChessEngine.changeState = function (state, currentFigure, targetPos, prevPos,
978
979
  if (diff > 0 && j === targetPos[1] - 1 && targetPos[0] === i || diff < 0 && j === targetPos[1] + 1 && targetPos[0] === i) {
979
980
  return {
980
981
  figure: undefined,
981
- beated: true
982
+ beated: true,
983
+ beatedFor: currentFigure.color
982
984
  };
983
985
  }
984
986
  }
985
987
  }
986
988
  return _extends({}, cell, {
987
- beated: cell.beated ? false : cell.beated
989
+ beated: cell.beated ? false : cell.beated,
990
+ beatedFor: cell.beated ? undefined : cell.beatedFor
988
991
  });
989
992
  });
990
993
  });
@@ -2591,8 +2594,14 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2591
2594
  var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
2592
2595
  setLinesWithCheck(linesCheck);
2593
2596
  if (fromPos[0] !== -1) {
2594
- var nextMoves = JSChessEngine.getNextMoves(updatedCells, fromPos, linesCheck, boardReversed);
2595
- setPossibleMoves(nextMoves);
2597
+ var figureFromPos = updatedCells[fromPos[1]][fromPos[0]].figure;
2598
+ if (!figureFromPos || figureFromPos.type !== holdedFigure.type || figureFromPos.color !== holdedFigure.color) {
2599
+ clearFromPos();
2600
+ setHoldedFigure(undefined);
2601
+ } else {
2602
+ var nextMoves = JSChessEngine.getNextMoves(updatedCells, fromPos, linesCheck, boardReversed);
2603
+ setPossibleMoves(nextMoves);
2604
+ }
2596
2605
  }
2597
2606
  setActualState(updatedCells);
2598
2607
  if (figure.type === 'pawn' && (to[1] === 0 || to[1] === actualState.length - 1)) {