react-chessboard-ui 2.7.0 → 2.9.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,9 @@ declare type ArrowLayoutType = {
5
5
  startArrowCoord: CellPos;
6
6
  arrowsCoords: ArrowCoords[];
7
7
  externalArrowsCoords?: ArrowCoords[];
8
+ externalArrows?: (ArrowCoords & {
9
+ color?: string;
10
+ })[];
8
11
  grabbingPos: CellPos;
9
12
  boardConfig: ChessBoardConfig;
10
13
  };
@@ -1,10 +1,11 @@
1
1
  import { PieceColor, GameResult, MoveData, SquarePos } from "../JSChessEngine";
2
2
  import { FC } from "react";
3
- import { ArrowCoords, ChangeMove, ChessBoardConfig } from "./models";
3
+ import { ArrowCoords, ChangeMove, ChessBoardConfig, ClickData } from "./models";
4
4
  declare type ChessBoardProps = {
5
5
  FEN: string;
6
6
  onChange: (moveData: MoveData) => void;
7
7
  onEndGame: (result: GameResult) => void;
8
+ onClick?: (data: ClickData) => void;
8
9
  change?: ChangeMove;
9
10
  reversed?: boolean;
10
11
  config?: Partial<ChessBoardConfig>;
@@ -12,6 +13,9 @@ declare type ChessBoardProps = {
12
13
  viewOnly?: boolean;
13
14
  moveHighlight?: [SquarePos, SquarePos];
14
15
  moveArrows?: ArrowCoords[];
16
+ arrows?: (ArrowCoords & {
17
+ color?: string;
18
+ })[];
15
19
  };
16
20
  export declare const ChessBoard: FC<ChessBoardProps>;
17
21
  export {};
@@ -1,10 +1,11 @@
1
1
  /// <reference types="react" />
2
2
  import { Cell, CellPos, Figure, FigureColor, GameResult, MoveData } from "../JSChessEngine";
3
- import { ArrowCoords, ChangeMove, ChessBoardConfig } from "./models";
3
+ import { ArrowCoords, ChangeMove, ChessBoardConfig, ClickData } from "./models";
4
4
  declare type UseChessBoardInteractiveProps = {
5
5
  config?: Partial<ChessBoardConfig>;
6
6
  onChange: (moveData: MoveData) => void;
7
7
  onEndGame: (result: GameResult) => void;
8
+ onClickByChessBoard?: (data: ClickData) => void;
8
9
  };
9
10
  export declare const useChessBoardInteractive: (props: UseChessBoardInteractiveProps) => {
10
11
  fromPos: CellPos;
package/dist/index.js CHANGED
@@ -1518,7 +1518,7 @@ var prepareCastlingByFEN = function prepareCastlingByFEN(castlingNotation, state
1518
1518
  }
1519
1519
  if (castlingNotation.includes('q')) {
1520
1520
  if (!!preparedState[0][0].figure) {
1521
- preparedState[0][0].figure = _extends({}, preparedState[0][preparedState.length - 1].figure, {
1521
+ preparedState[0][0].figure = _extends({}, preparedState[0][0].figure, {
1522
1522
  touched: false
1523
1523
  });
1524
1524
  preparedState[0][4].figure = _extends({}, preparedState[0][4].figure, {
@@ -2311,7 +2311,8 @@ var ChessBoardControlLayout = function ChessBoardControlLayout(props) {
2311
2311
  var useChessBoardInteractive = function useChessBoardInteractive(props) {
2312
2312
  var config = props.config,
2313
2313
  onChange = props.onChange,
2314
- onEndGame = props.onEndGame;
2314
+ onEndGame = props.onEndGame,
2315
+ onClickByChessBoard = props.onClickByChessBoard;
2315
2316
  var _useState = React.useState(DEFAULT_CHESSBORD_CONFIG),
2316
2317
  boardConfig = _useState[0],
2317
2318
  setBoardConfig = _useState[1];
@@ -2439,6 +2440,13 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2439
2440
  return !prevReversed;
2440
2441
  });
2441
2442
  };
2443
+ var handleClickByChessBoard = function handleClickByChessBoard(cellData, pos) {
2444
+ if (!onClickByChessBoard) return;
2445
+ onClickByChessBoard({
2446
+ cellData: cellData,
2447
+ pos: pos
2448
+ });
2449
+ };
2442
2450
  var selectFigureFrom = function selectFigureFrom(cellPos, extActualState) {
2443
2451
  var nowState = extActualState || actualState;
2444
2452
  var cell = nowState[cellPos[1]][cellPos[0]];
@@ -2713,6 +2721,7 @@ var useChessBoardInteractive = function useChessBoardInteractive(props) {
2713
2721
  if (viewOnly === void 0) {
2714
2722
  viewOnly = false;
2715
2723
  }
2724
+ handleClickByChessBoard(actualState[cellPos[1]][cellPos[0]], cellPos);
2716
2725
  clearMarkedCells();
2717
2726
  clearArrows();
2718
2727
  if (viewOnly) return;
@@ -2963,7 +2972,9 @@ var ArrowLayout = function ArrowLayout(props) {
2963
2972
  grabbingPos = props.grabbingPos,
2964
2973
  boardConfig = props.boardConfig,
2965
2974
  _props$externalArrows = props.externalArrowsCoords,
2966
- externalArrowsCoords = _props$externalArrows === void 0 ? [] : _props$externalArrows;
2975
+ externalArrowsCoords = _props$externalArrows === void 0 ? [] : _props$externalArrows,
2976
+ _props$externalArrows2 = props.externalArrows,
2977
+ externalArrows = _props$externalArrows2 === void 0 ? [] : _props$externalArrows2;
2967
2978
  return React__default.createElement("div", {
2968
2979
  className: styles.arrowsLayer
2969
2980
  }, startArrowCoord[0] > -1 && grabbingPos[0] > -1 && React__default.createElement(Arrow, {
@@ -2982,6 +2993,12 @@ var ArrowLayout = function ArrowLayout(props) {
2982
2993
  }, coords, {
2983
2994
  color: boardConfig.arrowColor
2984
2995
  }));
2996
+ }), externalArrows.map(function (arrow, i) {
2997
+ return React__default.createElement(Arrow, Object.assign({
2998
+ key: "extArrow_" + i
2999
+ }, arrow, {
3000
+ color: arrow.color || boardConfig.arrowColor
3001
+ }));
2985
3002
  }));
2986
3003
  };
2987
3004
 
@@ -3015,6 +3032,7 @@ var ChessBoard = function ChessBoard(props) {
3015
3032
  var FEN = props.FEN,
3016
3033
  onChange = props.onChange,
3017
3034
  onEndGame = props.onEndGame,
3035
+ onClick = props.onClick,
3018
3036
  change = props.change,
3019
3037
  reversed = props.reversed,
3020
3038
  config = props.config,
@@ -3022,10 +3040,13 @@ var ChessBoard = function ChessBoard(props) {
3022
3040
  viewOnly = props.viewOnly,
3023
3041
  moveHighlight = props.moveHighlight,
3024
3042
  _props$moveArrows = props.moveArrows,
3025
- moveArrows = _props$moveArrows === void 0 ? [] : _props$moveArrows;
3043
+ moveArrows = _props$moveArrows === void 0 ? [] : _props$moveArrows,
3044
+ _props$arrows = props.arrows,
3045
+ arrows = _props$arrows === void 0 ? [] : _props$arrows;
3026
3046
  var _useChessBoardInterac = useChessBoardInteractive({
3027
3047
  onChange: onChange,
3028
3048
  onEndGame: onEndGame,
3049
+ onClickByChessBoard: onClick,
3029
3050
  config: config
3030
3051
  }),
3031
3052
  fromPos = _useChessBoardInterac.fromPos,
@@ -3071,12 +3092,19 @@ var ChessBoard = function ChessBoard(props) {
3071
3092
  var reversedChange = reversed ? JSChessEngine.reverseMove(change.move) : change.move;
3072
3093
  handleChangeFromExternal(reversedChange, change.withTransition);
3073
3094
  }, [change]);
3074
- var externalArrows = moveArrows.map(function (arrow) {
3095
+ var DEPRECATED_externalArrows = moveArrows.map(function (arrow) {
3075
3096
  return {
3076
3097
  start: correctGrabbingPosForArrow(arrow.start, boardConfig),
3077
3098
  end: correctGrabbingPosForArrow(arrow.end, boardConfig)
3078
3099
  };
3079
3100
  });
3101
+ var externalArrows = arrows.map(function (arrow) {
3102
+ return {
3103
+ start: correctGrabbingPosForArrow(arrow.start, boardConfig),
3104
+ end: correctGrabbingPosForArrow(arrow.end, boardConfig),
3105
+ color: arrow.color
3106
+ };
3107
+ });
3080
3108
  return React__default.createElement("div", {
3081
3109
  className: styles.chessBoard
3082
3110
  }, React__default.createElement(ChessBoardCellsLayout, {
@@ -3098,7 +3126,8 @@ var ChessBoard = function ChessBoard(props) {
3098
3126
  onHasCheck: getHasCheckByCellPos
3099
3127
  }), React__default.createElement(ArrowLayout, {
3100
3128
  arrowsCoords: arrowsCoords,
3101
- externalArrowsCoords: externalArrows,
3129
+ externalArrowsCoords: DEPRECATED_externalArrows,
3130
+ externalArrows: externalArrows,
3102
3131
  startArrowCoord: startArrowCoord,
3103
3132
  grabbingPos: correctGrabbingPosForArrow(grabbingCell, boardConfig),
3104
3133
  boardConfig: boardConfig