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.
@@ -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;
@@ -38,7 +40,16 @@ export declare const useChessBoardInteractive: (props: UseChessBoardInteractiveP
38
40
  startRenderArrow: (pos: CellPos) => void;
39
41
  reverseChessBoard: () => void;
40
42
  handleGrabbingCell: (cellPos: CellPos) => void;
43
+ moveFigureByChange: (change: ChangeMove) => void;
41
44
  getHasCheckByCellPos: ([x, y]: CellPos) => boolean;
42
45
  handleSelectFigurePicker: (figure: Figure) => void;
46
+ handleChangeFromExternal: (moveData: MoveData) => void;
47
+ moveFigureByExternalChange: (from: CellPos, to: CellPos, figure: Figure) => {
48
+ moveData?: undefined;
49
+ attackedPos?: undefined;
50
+ } | {
51
+ moveData: MoveData;
52
+ attackedPos: CellPos;
53
+ };
43
54
  };
44
55
  export {};
package/dist/index.js CHANGED
@@ -128,7 +128,8 @@ JSChessEngine.reverseMove = function (moveData, boardSize) {
128
128
  figure: figure,
129
129
  from: [boardSize - (from[0] + 1), boardSize - (from[1] + 1)],
130
130
  to: [boardSize - (to[0] + 1), boardSize - (to[1] + 1)],
131
- type: type
131
+ type: type,
132
+ FEN: moveData.FEN
132
133
  };
133
134
  return reversedMove;
134
135
  };
@@ -2139,7 +2140,7 @@ var ChessBoardFiguresLayout = function ChessBoardFiguresLayout(props) {
2139
2140
  width: boardConfig.cellSize,
2140
2141
  height: boardConfig.cellSize
2141
2142
  }
2142
- }, boardConfig.piecesMap[getFigureCSS(figure)]('80%'));
2143
+ }, boardConfig.piecesMap[getFigureCSS(figure)] && boardConfig.piecesMap[getFigureCSS(figure)]('80%'));
2143
2144
  }));
2144
2145
  };
2145
2146
 
@@ -2297,6 +2298,9 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2297
2298
  var _useState21 = React.useState([-1, -1]),
2298
2299
  targetPos = _useState21[0],
2299
2300
  setTargetPos = _useState21[1];
2301
+ var _useState22 = React.useState(false),
2302
+ animated = _useState22[0],
2303
+ setAnimated = _useState22[1];
2300
2304
  var clearFromPos = function clearFromPos() {
2301
2305
  return setFromPos([-1, -1]);
2302
2306
  };
@@ -2441,6 +2445,20 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2441
2445
  attackedPos: attackedPos
2442
2446
  };
2443
2447
  };
2448
+ var moveFigureByChange = function moveFigureByChange(change) {
2449
+ var _change$move = change.move,
2450
+ from = _change$move.from,
2451
+ to = _change$move.to,
2452
+ figure = _change$move.figure;
2453
+ var _JSChessEngine$change2 = JSChessEngine.changeState(actualState, figure, to, from, boardReversed),
2454
+ updatedCells = _JSChessEngine$change2.updatedCells;
2455
+ var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
2456
+ setLinesWithCheck(linesCheck);
2457
+ var updatedChange = _extends({}, change, {
2458
+ move: boardReversed ? JSChessEngine.reverseMove(change.move) : change.move
2459
+ });
2460
+ setNewMove(updatedChange);
2461
+ };
2444
2462
  var moveFigureByClick = function moveFigureByClick(from, to, figure) {
2445
2463
  if (!!playerColor && currentColor !== playerColor) {
2446
2464
  cleanAllForFigure();
@@ -2452,9 +2470,40 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2452
2470
  var inNextMoves = checkPositionsHas(clickPossibleMoves, to);
2453
2471
  var conditionForDoMove = (to[0] !== from[0] || to[1] !== from[1]) && inNextMoves;
2454
2472
  if (!conditionForDoMove) return {};
2455
- var _JSChessEngine$change2 = JSChessEngine.changeState(actualState, figure, to, from, boardReversed),
2456
- updatedCells = _JSChessEngine$change2.updatedCells,
2457
- attackedPos = _JSChessEngine$change2.attackedPos;
2473
+ var _JSChessEngine$change3 = JSChessEngine.changeState(actualState, figure, to, from, boardReversed),
2474
+ updatedCells = _JSChessEngine$change3.updatedCells,
2475
+ attackedPos = _JSChessEngine$change3.attackedPos;
2476
+ var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
2477
+ setLinesWithCheck(linesCheck);
2478
+ setActualState(updatedCells);
2479
+ if (figure.type === 'pawn' && (to[1] === 0 || to[1] === actualState.length - 1)) {
2480
+ setTargetPos(to);
2481
+ setShowFigurePicker(true);
2482
+ return {};
2483
+ }
2484
+ var colorFEN = currentColor === 'white' ? 'black' : 'white';
2485
+ var FEN = stateToFEN(updatedCells, colorFEN);
2486
+ var moveData = {
2487
+ figure: figure,
2488
+ from: from,
2489
+ to: to,
2490
+ FEN: FEN
2491
+ };
2492
+ toggleCurrentColor();
2493
+ setClickedFigure(undefined);
2494
+ clearClickedPos();
2495
+ clearGrabbingPos();
2496
+ clearArrows();
2497
+ clearMarkedCells();
2498
+ return {
2499
+ moveData: moveData,
2500
+ attackedPos: attackedPos
2501
+ };
2502
+ };
2503
+ var moveFigureByExternalChange = function moveFigureByExternalChange(from, to, figure) {
2504
+ var _JSChessEngine$change4 = JSChessEngine.changeState(actualState, figure, to, from, boardReversed),
2505
+ updatedCells = _JSChessEngine$change4.updatedCells,
2506
+ attackedPos = _JSChessEngine$change4.attackedPos;
2458
2507
  var linesCheck = JSChessEngine.getLinesWithCheck(updatedCells, currentColor, boardReversed);
2459
2508
  setLinesWithCheck(linesCheck);
2460
2509
  setActualState(updatedCells);
@@ -2513,6 +2562,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2513
2562
  return;
2514
2563
  }
2515
2564
  onChange(moveData);
2565
+ setAnimated(withTransition);
2516
2566
  setNewMove({
2517
2567
  move: moveData,
2518
2568
  withTransition: withTransition,
@@ -2521,6 +2571,21 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2521
2571
  clearGrabbingPos();
2522
2572
  clearPossibleMoves();
2523
2573
  };
2574
+ var handleChangeFromExternal = function handleChangeFromExternal(moveData) {
2575
+ var _moveFigureByExternal = moveFigureByExternalChange(moveData.from, moveData.to, moveData.figure),
2576
+ attackedPos = _moveFigureByExternal.attackedPos;
2577
+ onChange(moveData);
2578
+ setAnimated(true);
2579
+ var change = {
2580
+ move: moveData,
2581
+ withTransition: true,
2582
+ attackedPos: attackedPos,
2583
+ transformTo: moveData.type === 'transform' ? moveData.figure : undefined
2584
+ };
2585
+ setNewMove(change);
2586
+ clearClickedPos();
2587
+ clearClickPossibleMoves();
2588
+ };
2524
2589
  var handleClickForTargetCell = function handleClickForTargetCell(cellPos, withTransition) {
2525
2590
  if (withTransition === void 0) {
2526
2591
  withTransition = false;
@@ -2536,6 +2601,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2536
2601
  attackedPos = _moveFigureByClick.attackedPos;
2537
2602
  if (!moveData) return;
2538
2603
  onChange(moveData);
2604
+ setAnimated(withTransition);
2539
2605
  setNewMove({
2540
2606
  move: moveData,
2541
2607
  withTransition: withTransition,
@@ -2633,6 +2699,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2633
2699
  return {
2634
2700
  fromPos: fromPos,
2635
2701
  newMove: newMove,
2702
+ animated: animated,
2636
2703
  boardConfig: boardConfig,
2637
2704
  markedCells: markedCells,
2638
2705
  grabbingPos: grabbingPos,
@@ -2648,6 +2715,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2648
2715
  showFigurePicker: showFigurePicker,
2649
2716
  markCell: markCell,
2650
2717
  setNewMove: setNewMove,
2718
+ setAnimated: setAnimated,
2651
2719
  handleClick: handleClick,
2652
2720
  clearFromPos: clearFromPos,
2653
2721
  handleGrabEnd: handleGrabEnd,
@@ -2662,8 +2730,11 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2662
2730
  startRenderArrow: startRenderArrow,
2663
2731
  reverseChessBoard: reverseChessBoard,
2664
2732
  handleGrabbingCell: handleGrabbingCell,
2733
+ moveFigureByChange: moveFigureByChange,
2665
2734
  getHasCheckByCellPos: getHasCheckByCellPos,
2666
- handleSelectFigurePicker: handleSelectFigurePicker
2735
+ handleSelectFigurePicker: handleSelectFigurePicker,
2736
+ handleChangeFromExternal: handleChangeFromExternal,
2737
+ moveFigureByExternalChange: moveFigureByExternalChange
2667
2738
  };
2668
2739
  };
2669
2740
 
@@ -2819,9 +2890,6 @@ var ChessBoard = function ChessBoard(props) {
2819
2890
  reversed = props.reversed,
2820
2891
  config = props.config,
2821
2892
  playerColor = props.playerColor;
2822
- var _useState = React.useState(false),
2823
- animated = _useState[0],
2824
- setAnimated = _useState[1];
2825
2893
  var _useChessBoardInterac = useChessBoardInteractive({
2826
2894
  onChange: onChange,
2827
2895
  onEndGame: onEndGame,
@@ -2829,6 +2897,7 @@ var ChessBoard = function ChessBoard(props) {
2829
2897
  }),
2830
2898
  fromPos = _useChessBoardInterac.fromPos,
2831
2899
  newMove = _useChessBoardInterac.newMove,
2900
+ animated = _useChessBoardInterac.animated,
2832
2901
  boardConfig = _useChessBoardInterac.boardConfig,
2833
2902
  markedCells = _useChessBoardInterac.markedCells,
2834
2903
  grabbingPos = _useChessBoardInterac.grabbingPos,
@@ -2841,7 +2910,6 @@ var ChessBoard = function ChessBoard(props) {
2841
2910
  startArrowCoord = _useChessBoardInterac.startArrowCoord,
2842
2911
  showFigurePicker = _useChessBoardInterac.showFigurePicker,
2843
2912
  markCell = _useChessBoardInterac.markCell,
2844
- setNewMove = _useChessBoardInterac.setNewMove,
2845
2913
  handleClick = _useChessBoardInterac.handleClick,
2846
2914
  handleGrabEnd = _useChessBoardInterac.handleGrabEnd,
2847
2915
  handleGrabbing = _useChessBoardInterac.handleGrabbing,
@@ -2855,7 +2923,8 @@ var ChessBoard = function ChessBoard(props) {
2855
2923
  reverseChessBoard = _useChessBoardInterac.reverseChessBoard,
2856
2924
  handleGrabbingCell = _useChessBoardInterac.handleGrabbingCell,
2857
2925
  getHasCheckByCellPos = _useChessBoardInterac.getHasCheckByCellPos,
2858
- handleSelectFigurePicker = _useChessBoardInterac.handleSelectFigurePicker;
2926
+ handleSelectFigurePicker = _useChessBoardInterac.handleSelectFigurePicker,
2927
+ handleChangeFromExternal = _useChessBoardInterac.handleChangeFromExternal;
2859
2928
  var handleUpdateFEN = function handleUpdateFEN(FEN) {
2860
2929
  var _FENtoGameState = FENtoGameState(FEN),
2861
2930
  boardState = _FENtoGameState.boardState,
@@ -2875,24 +2944,8 @@ var ChessBoard = function ChessBoard(props) {
2875
2944
  }, [reversed]);
2876
2945
  React.useEffect(function () {
2877
2946
  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
- }
2947
+ var reversedChange = reversed ? JSChessEngine.reverseMove(change.move) : change.move;
2948
+ handleChangeFromExternal(reversedChange);
2896
2949
  }, [change]);
2897
2950
  return React__default.createElement("div", {
2898
2951
  className: styles.chessBoard