react-chessboard-ui 1.2.0 → 1.3.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.
@@ -125,7 +125,8 @@ JSChessEngine.reverseMove = function (moveData, boardSize) {
125
125
  figure: figure,
126
126
  from: [boardSize - (from[0] + 1), boardSize - (from[1] + 1)],
127
127
  to: [boardSize - (to[0] + 1), boardSize - (to[1] + 1)],
128
- type: type
128
+ type: type,
129
+ FEN: moveData.FEN
129
130
  };
130
131
  return reversedMove;
131
132
  };
@@ -2136,7 +2137,7 @@ var ChessBoardFiguresLayout = function ChessBoardFiguresLayout(props) {
2136
2137
  width: boardConfig.cellSize,
2137
2138
  height: boardConfig.cellSize
2138
2139
  }
2139
- }, boardConfig.piecesMap[getFigureCSS(figure)]('80%'));
2140
+ }, boardConfig.piecesMap[getFigureCSS(figure)] && boardConfig.piecesMap[getFigureCSS(figure)]('80%'));
2140
2141
  }));
2141
2142
  };
2142
2143
 
@@ -2294,6 +2295,9 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2294
2295
  var _useState21 = useState([-1, -1]),
2295
2296
  targetPos = _useState21[0],
2296
2297
  setTargetPos = _useState21[1];
2298
+ var _useState22 = useState(false),
2299
+ animated = _useState22[0],
2300
+ setAnimated = _useState22[1];
2297
2301
  var clearFromPos = function clearFromPos() {
2298
2302
  return setFromPos([-1, -1]);
2299
2303
  };
@@ -2438,6 +2442,20 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2438
2442
  attackedPos: attackedPos
2439
2443
  };
2440
2444
  };
2445
+ var moveFigureByChange = function moveFigureByChange(change) {
2446
+ var _change$move = change.move,
2447
+ from = _change$move.from,
2448
+ to = _change$move.to,
2449
+ figure = _change$move.figure;
2450
+ var _JSChessEngine$change2 = JSChessEngine.changeState(actualState, figure, to, from, boardReversed),
2451
+ updatedCells = _JSChessEngine$change2.updatedCells;
2452
+ var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
2453
+ setLinesWithCheck(linesCheck);
2454
+ var updatedChange = _extends({}, change, {
2455
+ move: boardReversed ? JSChessEngine.reverseMove(change.move) : change.move
2456
+ });
2457
+ setNewMove(updatedChange);
2458
+ };
2441
2459
  var moveFigureByClick = function moveFigureByClick(from, to, figure) {
2442
2460
  if (!!playerColor && currentColor !== playerColor) {
2443
2461
  cleanAllForFigure();
@@ -2449,9 +2467,40 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2449
2467
  var inNextMoves = checkPositionsHas(clickPossibleMoves, to);
2450
2468
  var conditionForDoMove = (to[0] !== from[0] || to[1] !== from[1]) && inNextMoves;
2451
2469
  if (!conditionForDoMove) return {};
2452
- var _JSChessEngine$change2 = JSChessEngine.changeState(actualState, figure, to, from, boardReversed),
2453
- updatedCells = _JSChessEngine$change2.updatedCells,
2454
- attackedPos = _JSChessEngine$change2.attackedPos;
2470
+ var _JSChessEngine$change3 = JSChessEngine.changeState(actualState, figure, to, from, boardReversed),
2471
+ updatedCells = _JSChessEngine$change3.updatedCells,
2472
+ attackedPos = _JSChessEngine$change3.attackedPos;
2473
+ var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
2474
+ setLinesWithCheck(linesCheck);
2475
+ setActualState(updatedCells);
2476
+ if (figure.type === 'pawn' && (to[1] === 0 || to[1] === actualState.length - 1)) {
2477
+ setTargetPos(to);
2478
+ setShowFigurePicker(true);
2479
+ return {};
2480
+ }
2481
+ var colorFEN = currentColor === 'white' ? 'black' : 'white';
2482
+ var FEN = stateToFEN(updatedCells, colorFEN);
2483
+ var moveData = {
2484
+ figure: figure,
2485
+ from: from,
2486
+ to: to,
2487
+ FEN: FEN
2488
+ };
2489
+ toggleCurrentColor();
2490
+ setClickedFigure(undefined);
2491
+ clearClickedPos();
2492
+ clearGrabbingPos();
2493
+ clearArrows();
2494
+ clearMarkedCells();
2495
+ return {
2496
+ moveData: moveData,
2497
+ attackedPos: attackedPos
2498
+ };
2499
+ };
2500
+ var moveFigureByExternalChange = function moveFigureByExternalChange(from, to, figure) {
2501
+ var _JSChessEngine$change4 = JSChessEngine.changeState(actualState, figure, to, from, boardReversed),
2502
+ updatedCells = _JSChessEngine$change4.updatedCells,
2503
+ attackedPos = _JSChessEngine$change4.attackedPos;
2455
2504
  var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
2456
2505
  setLinesWithCheck(linesCheck);
2457
2506
  setActualState(updatedCells);
@@ -2510,6 +2559,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2510
2559
  return;
2511
2560
  }
2512
2561
  onChange(moveData);
2562
+ setAnimated(withTransition);
2513
2563
  setNewMove({
2514
2564
  move: moveData,
2515
2565
  withTransition: withTransition,
@@ -2518,6 +2568,21 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2518
2568
  clearGrabbingPos();
2519
2569
  clearPossibleMoves();
2520
2570
  };
2571
+ var handleChangeFromExternal = function handleChangeFromExternal(moveData) {
2572
+ var _moveFigureByExternal = moveFigureByExternalChange(moveData.from, moveData.to, moveData.figure),
2573
+ attackedPos = _moveFigureByExternal.attackedPos;
2574
+ onChange(moveData);
2575
+ setAnimated(true);
2576
+ var change = {
2577
+ move: moveData,
2578
+ withTransition: true,
2579
+ attackedPos: attackedPos,
2580
+ transformTo: moveData.type === 'transform' ? moveData.figure : undefined
2581
+ };
2582
+ setNewMove(change);
2583
+ clearClickedPos();
2584
+ clearClickPossibleMoves();
2585
+ };
2521
2586
  var handleClickForTargetCell = function handleClickForTargetCell(cellPos, withTransition) {
2522
2587
  if (withTransition === void 0) {
2523
2588
  withTransition = false;
@@ -2533,6 +2598,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2533
2598
  attackedPos = _moveFigureByClick.attackedPos;
2534
2599
  if (!moveData) return;
2535
2600
  onChange(moveData);
2601
+ setAnimated(withTransition);
2536
2602
  setNewMove({
2537
2603
  move: moveData,
2538
2604
  withTransition: withTransition,
@@ -2630,6 +2696,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2630
2696
  return {
2631
2697
  fromPos: fromPos,
2632
2698
  newMove: newMove,
2699
+ animated: animated,
2633
2700
  boardConfig: boardConfig,
2634
2701
  markedCells: markedCells,
2635
2702
  grabbingPos: grabbingPos,
@@ -2645,6 +2712,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2645
2712
  showFigurePicker: showFigurePicker,
2646
2713
  markCell: markCell,
2647
2714
  setNewMove: setNewMove,
2715
+ setAnimated: setAnimated,
2648
2716
  handleClick: handleClick,
2649
2717
  clearFromPos: clearFromPos,
2650
2718
  handleGrabEnd: handleGrabEnd,
@@ -2659,8 +2727,11 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2659
2727
  startRenderArrow: startRenderArrow,
2660
2728
  reverseChessBoard: reverseChessBoard,
2661
2729
  handleGrabbingCell: handleGrabbingCell,
2730
+ moveFigureByChange: moveFigureByChange,
2662
2731
  getHasCheckByCellPos: getHasCheckByCellPos,
2663
- handleSelectFigurePicker: handleSelectFigurePicker
2732
+ handleSelectFigurePicker: handleSelectFigurePicker,
2733
+ handleChangeFromExternal: handleChangeFromExternal,
2734
+ moveFigureByExternalChange: moveFigureByExternalChange
2664
2735
  };
2665
2736
  };
2666
2737
 
@@ -2816,9 +2887,6 @@ var ChessBoard = function ChessBoard(props) {
2816
2887
  reversed = props.reversed,
2817
2888
  config = props.config,
2818
2889
  playerColor = props.playerColor;
2819
- var _useState = useState(false),
2820
- animated = _useState[0],
2821
- setAnimated = _useState[1];
2822
2890
  var _useChessBoardInterac = useChessBoardInteractive({
2823
2891
  onChange: onChange,
2824
2892
  onEndGame: onEndGame,
@@ -2826,6 +2894,7 @@ var ChessBoard = function ChessBoard(props) {
2826
2894
  }),
2827
2895
  fromPos = _useChessBoardInterac.fromPos,
2828
2896
  newMove = _useChessBoardInterac.newMove,
2897
+ animated = _useChessBoardInterac.animated,
2829
2898
  boardConfig = _useChessBoardInterac.boardConfig,
2830
2899
  markedCells = _useChessBoardInterac.markedCells,
2831
2900
  grabbingPos = _useChessBoardInterac.grabbingPos,
@@ -2838,7 +2907,6 @@ var ChessBoard = function ChessBoard(props) {
2838
2907
  startArrowCoord = _useChessBoardInterac.startArrowCoord,
2839
2908
  showFigurePicker = _useChessBoardInterac.showFigurePicker,
2840
2909
  markCell = _useChessBoardInterac.markCell,
2841
- setNewMove = _useChessBoardInterac.setNewMove,
2842
2910
  handleClick = _useChessBoardInterac.handleClick,
2843
2911
  handleGrabEnd = _useChessBoardInterac.handleGrabEnd,
2844
2912
  handleGrabbing = _useChessBoardInterac.handleGrabbing,
@@ -2852,7 +2920,8 @@ var ChessBoard = function ChessBoard(props) {
2852
2920
  reverseChessBoard = _useChessBoardInterac.reverseChessBoard,
2853
2921
  handleGrabbingCell = _useChessBoardInterac.handleGrabbingCell,
2854
2922
  getHasCheckByCellPos = _useChessBoardInterac.getHasCheckByCellPos,
2855
- handleSelectFigurePicker = _useChessBoardInterac.handleSelectFigurePicker;
2923
+ handleSelectFigurePicker = _useChessBoardInterac.handleSelectFigurePicker,
2924
+ handleChangeFromExternal = _useChessBoardInterac.handleChangeFromExternal;
2856
2925
  var handleUpdateFEN = function handleUpdateFEN(FEN) {
2857
2926
  var _FENtoGameState = FENtoGameState(FEN),
2858
2927
  boardState = _FENtoGameState.boardState,
@@ -2872,24 +2941,8 @@ var ChessBoard = function ChessBoard(props) {
2872
2941
  }, [reversed]);
2873
2942
  useEffect(function () {
2874
2943
  if (!change) return;
2875
- var updatedChange = _extends({}, change, {
2876
- move: reversed ? JSChessEngine.reverseMove(change.move) : change.move
2877
- });
2878
- if (change.withTransition) {
2879
- setAnimated(true);
2880
- setTimeout(function () {
2881
- setNewMove(updatedChange);
2882
- }, 10);
2883
- setTimeout(function () {
2884
- setAnimated(false);
2885
- }, 160);
2886
- setTimeout(function () {
2887
- handleUpdateFEN(updatedChange.move.FEN);
2888
- }, 170);
2889
- } else {
2890
- setNewMove(updatedChange);
2891
- handleUpdateFEN(updatedChange.move.FEN);
2892
- }
2944
+ var reversedChange = reversed ? JSChessEngine.reverseMove(change.move) : change.move;
2945
+ handleChangeFromExternal(reversedChange);
2893
2946
  }, [change]);
2894
2947
  return React.createElement("div", {
2895
2948
  className: styles.chessBoard