react-chessboard-ui 2.2.1 → 2.4.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.
@@ -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
  });
@@ -2436,8 +2439,9 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2436
2439
  return !prevReversed;
2437
2440
  });
2438
2441
  };
2439
- var selectFigureFrom = function selectFigureFrom(cellPos) {
2440
- var cell = actualState[cellPos[1]][cellPos[0]];
2442
+ var selectFigureFrom = function selectFigureFrom(cellPos, extActualState) {
2443
+ var nowState = extActualState || actualState;
2444
+ var cell = nowState[cellPos[1]][cellPos[0]];
2441
2445
  if (!cell.figure) {
2442
2446
  cleanAllForFigure();
2443
2447
  return {
@@ -2460,7 +2464,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2460
2464
  nextMoves: []
2461
2465
  };
2462
2466
  }
2463
- var nextMoves = JSChessEngine.getNextMoves(actualState, cellPos, linesWithCheck, boardReversed);
2467
+ var nextMoves = JSChessEngine.getNextMoves(nowState, cellPos, linesWithCheck, boardReversed);
2464
2468
  return {
2465
2469
  figure: cell.figure,
2466
2470
  nextMoves: nextMoves
@@ -2589,6 +2593,10 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2589
2593
  attackedPos = _JSChessEngine$change4.attackedPos;
2590
2594
  var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
2591
2595
  setLinesWithCheck(linesCheck);
2596
+ if (fromPos[0] !== -1) {
2597
+ var nextMoves = JSChessEngine.getNextMoves(updatedCells, fromPos, linesCheck, boardReversed);
2598
+ setPossibleMoves(nextMoves);
2599
+ }
2592
2600
  setActualState(updatedCells);
2593
2601
  if (figure.type === 'pawn' && (to[1] === 0 || to[1] === actualState.length - 1)) {
2594
2602
  setTargetPos(to);
@@ -2606,7 +2614,6 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2606
2614
  toggleCurrentColor();
2607
2615
  setClickedFigure(undefined);
2608
2616
  clearClickedPos();
2609
- clearGrabbingPos();
2610
2617
  clearArrows();
2611
2618
  clearMarkedCells();
2612
2619
  return {
@@ -2671,9 +2678,6 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2671
2678
  setNewMove(change);
2672
2679
  setMovesTrail([moveData.from, moveData.to]);
2673
2680
  clearClickedPos();
2674
- setHoldedFigure(undefined);
2675
- clearFromPos();
2676
- clearPossibleMoves();
2677
2681
  clearClickPossibleMoves();
2678
2682
  };
2679
2683
  var handleClickForTargetCell = function handleClickForTargetCell(cellPos, withTransition) {