react-chessboard-ui 1.1.2 → 1.2.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.
@@ -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>;
@@ -9,6 +9,7 @@ declare type UseChessBoardInteractiveProps = {
9
9
  export declare const useChessBoardInteractive: (props: UseChessBoardInteractiveProps) => {
10
10
  fromPos: CellPos;
11
11
  newMove: ChangeMove;
12
+ animated: boolean;
12
13
  boardConfig: ChessBoardConfig;
13
14
  markedCells: CellPos[];
14
15
  grabbingPos: CellPos;
@@ -24,6 +25,7 @@ export declare const useChessBoardInteractive: (props: UseChessBoardInteractiveP
24
25
  showFigurePicker: boolean;
25
26
  markCell: (cellPos: CellPos) => void;
26
27
  setNewMove: import("react").Dispatch<import("react").SetStateAction<ChangeMove>>;
28
+ setAnimated: import("react").Dispatch<import("react").SetStateAction<boolean>>;
27
29
  handleClick: (cellPos: CellPos) => void;
28
30
  clearFromPos: () => void;
29
31
  handleGrabEnd: (cellPos: CellPos, withTransition?: boolean) => void;
@@ -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,11 +2135,11 @@ 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
  }
2138
- }, boardConfig.piecesMap[getFigureCSS(figure)]('80%'));
2142
+ }, boardConfig.piecesMap[getFigureCSS(figure)] && boardConfig.piecesMap[getFigureCSS(figure)]('80%'));
2139
2143
  }));
2140
2144
  };
2141
2145
 
@@ -2293,6 +2297,9 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2293
2297
  var _useState21 = React.useState([-1, -1]),
2294
2298
  targetPos = _useState21[0],
2295
2299
  setTargetPos = _useState21[1];
2300
+ var _useState22 = React.useState(false),
2301
+ animated = _useState22[0],
2302
+ setAnimated = _useState22[1];
2296
2303
  var clearFromPos = function clearFromPos() {
2297
2304
  return setFromPos([-1, -1]);
2298
2305
  };
@@ -2509,6 +2516,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2509
2516
  return;
2510
2517
  }
2511
2518
  onChange(moveData);
2519
+ setAnimated(withTransition);
2512
2520
  setNewMove({
2513
2521
  move: moveData,
2514
2522
  withTransition: withTransition,
@@ -2532,6 +2540,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2532
2540
  attackedPos = _moveFigureByClick.attackedPos;
2533
2541
  if (!moveData) return;
2534
2542
  onChange(moveData);
2543
+ setAnimated(withTransition);
2535
2544
  setNewMove({
2536
2545
  move: moveData,
2537
2546
  withTransition: withTransition,
@@ -2629,6 +2638,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2629
2638
  return {
2630
2639
  fromPos: fromPos,
2631
2640
  newMove: newMove,
2641
+ animated: animated,
2632
2642
  boardConfig: boardConfig,
2633
2643
  markedCells: markedCells,
2634
2644
  grabbingPos: grabbingPos,
@@ -2644,6 +2654,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2644
2654
  showFigurePicker: showFigurePicker,
2645
2655
  markCell: markCell,
2646
2656
  setNewMove: setNewMove,
2657
+ setAnimated: setAnimated,
2647
2658
  handleClick: handleClick,
2648
2659
  clearFromPos: clearFromPos,
2649
2660
  handleGrabEnd: handleGrabEnd,
@@ -2822,6 +2833,7 @@ var ChessBoard = function ChessBoard(props) {
2822
2833
  }),
2823
2834
  fromPos = _useChessBoardInterac.fromPos,
2824
2835
  newMove = _useChessBoardInterac.newMove,
2836
+ animated = _useChessBoardInterac.animated,
2825
2837
  boardConfig = _useChessBoardInterac.boardConfig,
2826
2838
  markedCells = _useChessBoardInterac.markedCells,
2827
2839
  grabbingPos = _useChessBoardInterac.grabbingPos,
@@ -2835,6 +2847,7 @@ var ChessBoard = function ChessBoard(props) {
2835
2847
  showFigurePicker = _useChessBoardInterac.showFigurePicker,
2836
2848
  markCell = _useChessBoardInterac.markCell,
2837
2849
  setNewMove = _useChessBoardInterac.setNewMove,
2850
+ setAnimated = _useChessBoardInterac.setAnimated,
2838
2851
  handleClick = _useChessBoardInterac.handleClick,
2839
2852
  handleGrabEnd = _useChessBoardInterac.handleGrabEnd,
2840
2853
  handleGrabbing = _useChessBoardInterac.handleGrabbing,
@@ -2849,22 +2862,43 @@ var ChessBoard = function ChessBoard(props) {
2849
2862
  handleGrabbingCell = _useChessBoardInterac.handleGrabbingCell,
2850
2863
  getHasCheckByCellPos = _useChessBoardInterac.getHasCheckByCellPos,
2851
2864
  handleSelectFigurePicker = _useChessBoardInterac.handleSelectFigurePicker;
2852
- React.useEffect(function () {
2853
- setPlayerColor(playerColor);
2854
- }, [playerColor]);
2855
- React.useEffect(function () {
2865
+ var handleUpdateFEN = function handleUpdateFEN(FEN) {
2856
2866
  var _FENtoGameState = FENtoGameState(FEN),
2857
2867
  boardState = _FENtoGameState.boardState,
2858
2868
  currentColor = _FENtoGameState.currentColor;
2859
2869
  setInitialState(boardState);
2860
2870
  setActualState(boardState);
2861
2871
  setCurrentColor(currentColor);
2872
+ };
2873
+ React.useEffect(function () {
2874
+ setPlayerColor(playerColor);
2875
+ }, [playerColor]);
2876
+ React.useEffect(function () {
2877
+ handleUpdateFEN(FEN);
2862
2878
  }, [FEN]);
2863
2879
  React.useEffect(function () {
2864
2880
  if (reversed) reverseChessBoard();
2865
2881
  }, [reversed]);
2866
2882
  React.useEffect(function () {
2867
- setNewMove(change);
2883
+ if (!change) return;
2884
+ var updatedChange = _extends({}, change, {
2885
+ move: reversed ? JSChessEngine.reverseMove(change.move) : change.move
2886
+ });
2887
+ if (change.withTransition) {
2888
+ setAnimated(true);
2889
+ setTimeout(function () {
2890
+ setNewMove(updatedChange);
2891
+ }, 10);
2892
+ setTimeout(function () {
2893
+ setAnimated(false);
2894
+ }, 160);
2895
+ setTimeout(function () {
2896
+ handleUpdateFEN(updatedChange.move.FEN);
2897
+ }, 170);
2898
+ } else {
2899
+ setNewMove(updatedChange);
2900
+ handleUpdateFEN(updatedChange.move.FEN);
2901
+ }
2868
2902
  }, [change]);
2869
2903
  return React__default.createElement("div", {
2870
2904
  className: styles.chessBoard
@@ -2874,7 +2908,8 @@ var ChessBoard = function ChessBoard(props) {
2874
2908
  initialState: initialState,
2875
2909
  change: newMove,
2876
2910
  reversed: reversed,
2877
- boardConfig: boardConfig
2911
+ boardConfig: boardConfig,
2912
+ animated: animated
2878
2913
  }), React__default.createElement(ChessBoardInteractiveLayout, {
2879
2914
  selectedPos: fromPos,
2880
2915
  possibleMoves: possibleMoves,