react-chessboard-ui 1.1.2 → 1.2.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.
@@ -5,6 +5,7 @@ declare type ChessBoardFiguresLayoutProps = {
5
5
  initialState: Cell[][];
6
6
  change?: ChangeMove;
7
7
  reversed?: boolean;
8
+ animated?: boolean;
8
9
  boardConfig: ChessBoardConfig;
9
10
  };
10
11
  export declare const ChessBoardFiguresLayout: FC<ChessBoardFiguresLayoutProps>;
@@ -89,7 +89,7 @@ export declare class JSChessEngine {
89
89
  * @param moveData данные хода
90
90
  * @param boardSize размер доски
91
91
  */
92
- static reverseMove: (moveData: MoveData, boardSize: number) => MoveData;
92
+ static reverseMove: (moveData: MoveData, boardSize?: number) => MoveData;
93
93
  /**
94
94
  * Возвращет перевернутое значение для начала и конца хода фигуры
95
95
  * Использовать при подсветке хода если доска перевернута
package/dist/index.js CHANGED
@@ -117,6 +117,9 @@ JSChessEngine.reverseChessBoard = function (state) {
117
117
  });
118
118
  };
119
119
  JSChessEngine.reverseMove = function (moveData, boardSize) {
120
+ if (boardSize === void 0) {
121
+ boardSize = 8;
122
+ }
120
123
  var from = moveData.from,
121
124
  to = moveData.to,
122
125
  figure = moveData.figure,
@@ -2031,7 +2034,8 @@ var ChessBoardFiguresLayout = function ChessBoardFiguresLayout(props) {
2031
2034
  var initialState = props.initialState,
2032
2035
  change = props.change,
2033
2036
  reversed = props.reversed,
2034
- boardConfig = props.boardConfig;
2037
+ boardConfig = props.boardConfig,
2038
+ animated = props.animated;
2035
2039
  var _useState = React.useState([]),
2036
2040
  actualState = _useState[0],
2037
2041
  setActualState = _useState[1];
@@ -2131,7 +2135,7 @@ var ChessBoardFiguresLayout = function ChessBoardFiguresLayout(props) {
2131
2135
  style: {
2132
2136
  top: boardConfig.cellSize * figure.position[1] + "px",
2133
2137
  left: boardConfig.cellSize * figure.position[0] + "px",
2134
- transition: !!change && change.withTransition ? 'all .15s ease-out' : 'none',
2138
+ transition: !!change && animated ? 'all .15s ease-out' : 'none',
2135
2139
  width: boardConfig.cellSize,
2136
2140
  height: boardConfig.cellSize
2137
2141
  }
@@ -2815,6 +2819,9 @@ var ChessBoard = function ChessBoard(props) {
2815
2819
  reversed = props.reversed,
2816
2820
  config = props.config,
2817
2821
  playerColor = props.playerColor;
2822
+ var _useState = React.useState(false),
2823
+ animated = _useState[0],
2824
+ setAnimated = _useState[1];
2818
2825
  var _useChessBoardInterac = useChessBoardInteractive({
2819
2826
  onChange: onChange,
2820
2827
  onEndGame: onEndGame,
@@ -2849,22 +2856,43 @@ var ChessBoard = function ChessBoard(props) {
2849
2856
  handleGrabbingCell = _useChessBoardInterac.handleGrabbingCell,
2850
2857
  getHasCheckByCellPos = _useChessBoardInterac.getHasCheckByCellPos,
2851
2858
  handleSelectFigurePicker = _useChessBoardInterac.handleSelectFigurePicker;
2852
- React.useEffect(function () {
2853
- setPlayerColor(playerColor);
2854
- }, [playerColor]);
2855
- React.useEffect(function () {
2859
+ var handleUpdateFEN = function handleUpdateFEN(FEN) {
2856
2860
  var _FENtoGameState = FENtoGameState(FEN),
2857
2861
  boardState = _FENtoGameState.boardState,
2858
2862
  currentColor = _FENtoGameState.currentColor;
2859
2863
  setInitialState(boardState);
2860
2864
  setActualState(boardState);
2861
2865
  setCurrentColor(currentColor);
2866
+ };
2867
+ React.useEffect(function () {
2868
+ setPlayerColor(playerColor);
2869
+ }, [playerColor]);
2870
+ React.useEffect(function () {
2871
+ handleUpdateFEN(FEN);
2862
2872
  }, [FEN]);
2863
2873
  React.useEffect(function () {
2864
2874
  if (reversed) reverseChessBoard();
2865
2875
  }, [reversed]);
2866
2876
  React.useEffect(function () {
2867
- setNewMove(change);
2877
+ if (!change) return;
2878
+ var updatedChange = _extends({}, change, {
2879
+ move: reversed ? JSChessEngine.reverseMove(change.move) : change.move
2880
+ });
2881
+ if (change.withTransition) {
2882
+ setAnimated(true);
2883
+ setTimeout(function () {
2884
+ setNewMove(updatedChange);
2885
+ }, 10);
2886
+ setTimeout(function () {
2887
+ setAnimated(false);
2888
+ }, 160);
2889
+ setTimeout(function () {
2890
+ handleUpdateFEN(updatedChange.move.FEN);
2891
+ }, 170);
2892
+ } else {
2893
+ setNewMove(updatedChange);
2894
+ handleUpdateFEN(updatedChange.move.FEN);
2895
+ }
2868
2896
  }, [change]);
2869
2897
  return React__default.createElement("div", {
2870
2898
  className: styles.chessBoard
@@ -2874,7 +2902,8 @@ var ChessBoard = function ChessBoard(props) {
2874
2902
  initialState: initialState,
2875
2903
  change: newMove,
2876
2904
  reversed: reversed,
2877
- boardConfig: boardConfig
2905
+ boardConfig: boardConfig,
2906
+ animated: animated
2878
2907
  }), React__default.createElement(ChessBoardInteractiveLayout, {
2879
2908
  selectedPos: fromPos,
2880
2909
  possibleMoves: possibleMoves,