@lichess-org/chessground 9.7.2 → 9.8.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.
package/dist/premove.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as util from './util.js';
2
- const isDestOccupiedByFriendly = (ctx) => ctx.friendlies.has(util.pos2key(ctx.pos2));
3
- const isDestOccupiedByEnemy = (ctx) => ctx.enemies.has(util.pos2key(ctx.pos2));
4
- const anyPieceBetween = (pos1, pos2, pieces) => util.squaresBetween(...pos1, ...pos2).some(s => pieces.has(s));
2
+ const isDestOccupiedByFriendly = (ctx) => ctx.friendlies.has(ctx.dest.key);
3
+ const isDestOccupiedByEnemy = (ctx) => ctx.enemies.has(ctx.dest.key);
4
+ const anyPieceBetween = (orig, dest, pieces) => util.squaresBetween(...orig, ...dest).some(s => pieces.has(s));
5
5
  const canEnemyPawnAdvanceToSquare = (pawnStart, dest, ctx) => {
6
6
  const piece = ctx.enemies.get(pawnStart);
7
7
  if (piece?.role !== 'pawn')
@@ -19,9 +19,9 @@ const canEnemyPawnCaptureOnSquare = (pawnStart, dest, ctx) => {
19
19
  (ctx.friendlies.has(dest) ||
20
20
  canBeCapturedBySomeEnemyEnPassant(util.squareShiftedVertically(dest, enemyPawn.color === 'white' ? -1 : 1), ctx.friendlies, ctx.enemies, ctx.lastMove)));
21
21
  };
22
- const canSomeEnemyPawnAdvanceToDest = (ctx) => [...ctx.enemies.keys()].some(key => canEnemyPawnAdvanceToSquare(key, util.pos2key(ctx.pos2), ctx));
22
+ const canSomeEnemyPawnAdvanceToDest = (ctx) => [...ctx.enemies.keys()].some(key => canEnemyPawnAdvanceToSquare(key, ctx.dest.key, ctx));
23
23
  const isDestControlledByEnemy = (ctx, pieceRolesExclude) => {
24
- const square = ctx.pos2;
24
+ const square = ctx.dest.pos;
25
25
  return [...ctx.enemies].some(([key, piece]) => {
26
26
  const piecePos = util.key2pos(key);
27
27
  return (!pieceRolesExclude?.includes(piece.role) &&
@@ -35,32 +35,43 @@ const isDestControlledByEnemy = (ctx, pieceRolesExclude) => {
35
35
  });
36
36
  };
37
37
  const isFriendlyOnDestAndAttacked = (ctx) => isDestOccupiedByFriendly(ctx) &&
38
- (canBeCapturedBySomeEnemyEnPassant(util.pos2key(ctx.pos2), ctx.friendlies, ctx.enemies, ctx.lastMove) ||
38
+ (canBeCapturedBySomeEnemyEnPassant(ctx.dest.key, ctx.friendlies, ctx.enemies, ctx.lastMove) ||
39
39
  isDestControlledByEnemy(ctx));
40
40
  const canBeCapturedBySomeEnemyEnPassant = (potentialSquareOfFriendlyPawn, friendlies, enemies, lastMove) => {
41
- if (lastMove && potentialSquareOfFriendlyPawn !== lastMove[1])
41
+ if (!potentialSquareOfFriendlyPawn || (lastMove && potentialSquareOfFriendlyPawn !== lastMove[1]))
42
42
  return false;
43
43
  const pos = util.key2pos(potentialSquareOfFriendlyPawn);
44
44
  const friendly = friendlies.get(potentialSquareOfFriendlyPawn);
45
45
  return (friendly?.role === 'pawn' &&
46
46
  pos[1] === (friendly.color === 'white' ? 3 : 4) &&
47
47
  (!lastMove || util.diff(util.key2pos(lastMove[0])[1], pos[1]) === 2) &&
48
- [1, -1].some(delta => enemies.get(util.pos2key([pos[0] + delta, pos[1]]))?.role === 'pawn'));
48
+ [1, -1].some(delta => {
49
+ const k = util.pos2key([pos[0] + delta, pos[1]]);
50
+ return !!k && enemies.get(k)?.role === 'pawn';
51
+ }));
49
52
  };
50
- const isPathClearEnoughOfFriendliesForPremove = (ctx) => {
53
+ const isPathClearEnoughOfFriendliesForPremove = (ctx, isPawnAdvance) => {
51
54
  if (ctx.unrestrictedPremoves)
52
55
  return true;
53
- const squaresBetween = util.squaresBetween(...ctx.pos1, ...ctx.pos2);
56
+ const squaresBetween = util.squaresBetween(...ctx.orig.pos, ...ctx.dest.pos);
57
+ if (isPawnAdvance)
58
+ squaresBetween.push(ctx.dest.key);
54
59
  const squaresOfFriendliesBetween = squaresBetween.filter(s => ctx.friendlies.has(s));
55
- return (!squaresOfFriendliesBetween.length ||
56
- (squaresOfFriendliesBetween.length === 1 &&
57
- canBeCapturedBySomeEnemyEnPassant(squaresOfFriendliesBetween[0], ctx.friendlies, ctx.enemies, ctx.lastMove) &&
58
- !squaresBetween.includes(util.squareShiftedVertically(squaresOfFriendliesBetween[0], ctx.color === 'white' ? -1 : 1))));
60
+ if (!squaresOfFriendliesBetween.length)
61
+ return true;
62
+ const firstSquareOfFriendliesBetween = squaresOfFriendliesBetween[0];
63
+ const nextSquare = util.squareShiftedVertically(firstSquareOfFriendliesBetween, ctx.color === 'white' ? -1 : 1);
64
+ return (squaresOfFriendliesBetween.length === 1 &&
65
+ canBeCapturedBySomeEnemyEnPassant(firstSquareOfFriendliesBetween, ctx.friendlies, ctx.enemies, ctx.lastMove) &&
66
+ !!nextSquare &&
67
+ !squaresBetween.includes(nextSquare));
59
68
  };
60
- const isPathClearEnoughOfEnemiesForPremove = (ctx) => {
69
+ const isPathClearEnoughOfEnemiesForPremove = (ctx, isPawnAdvance) => {
61
70
  if (ctx.unrestrictedPremoves)
62
71
  return true;
63
- const squaresBetween = util.squaresBetween(...ctx.pos1, ...ctx.pos2);
72
+ const squaresBetween = util.squaresBetween(...ctx.orig.pos, ...ctx.dest.pos);
73
+ if (isPawnAdvance)
74
+ squaresBetween.push(ctx.dest.key);
64
75
  const squaresOfEnemiesBetween = squaresBetween.filter(s => ctx.enemies.has(s));
65
76
  if (squaresOfEnemiesBetween.length > 1)
66
77
  return false;
@@ -72,23 +83,27 @@ const isPathClearEnoughOfEnemiesForPremove = (ctx) => {
72
83
  return true;
73
84
  const enemyStep = enemy.color === 'white' ? 1 : -1;
74
85
  const squareAbove = util.squareShiftedVertically(enemySquare, enemyStep);
75
- const enemyPawnDests = [
76
- ...util.adjacentSquares(squareAbove).filter(s => canEnemyPawnCaptureOnSquare(enemySquare, s, ctx)),
77
- ...[squareAbove, util.squareShiftedVertically(squareAbove, enemyStep)].filter(s => s && canEnemyPawnAdvanceToSquare(enemySquare, s, ctx)),
78
- ];
79
- const badSquares = [...squaresBetween, util.pos2key(ctx.pos1)];
86
+ const enemyPawnDests = squareAbove
87
+ ? [
88
+ ...util.adjacentSquares(squareAbove).filter(s => canEnemyPawnCaptureOnSquare(enemySquare, s, ctx)),
89
+ ...[squareAbove, util.squareShiftedVertically(squareAbove, enemyStep)]
90
+ .filter(s => !!s)
91
+ .filter(s => canEnemyPawnAdvanceToSquare(enemySquare, s, ctx)),
92
+ ]
93
+ : [];
94
+ const badSquares = [...squaresBetween, ctx.orig.key];
80
95
  return enemyPawnDests.some(square => !badSquares.includes(square));
81
96
  };
82
- const isPathClearEnoughForPremove = (ctx) => isPathClearEnoughOfFriendliesForPremove(ctx) && isPathClearEnoughOfEnemiesForPremove(ctx);
97
+ const isPathClearEnoughForPremove = (ctx, isPawnAdvance) => isPathClearEnoughOfFriendliesForPremove(ctx, isPawnAdvance) &&
98
+ isPathClearEnoughOfEnemiesForPremove(ctx, isPawnAdvance);
83
99
  const pawn = (ctx) => {
84
100
  const step = ctx.color === 'white' ? 1 : -1;
85
- if (util.diff(ctx.pos1[0], ctx.pos2[0]) > 1)
101
+ if (util.diff(ctx.orig.pos[0], ctx.dest.pos[0]) > 1)
86
102
  return false;
87
- if (!util.diff(ctx.pos1[0], ctx.pos2[0])) {
88
- return (util.pawnDirAdvance(...ctx.pos1, ...ctx.pos2, ctx.color === 'white') &&
89
- isPathClearEnoughForPremove({ ...ctx, pos2: [ctx.pos2[0], ctx.pos2[1] + step] }));
90
- }
91
- if (ctx.pos2[1] !== ctx.pos1[1] + step)
103
+ if (!util.diff(ctx.orig.pos[0], ctx.dest.pos[0]))
104
+ return (util.pawnDirAdvance(...ctx.orig.pos, ...ctx.dest.pos, ctx.color === 'white') &&
105
+ isPathClearEnoughForPremove(ctx, true));
106
+ if (ctx.dest.pos[1] !== ctx.orig.pos[1] + step)
92
107
  return false;
93
108
  if (ctx.unrestrictedPremoves || isDestOccupiedByEnemy(ctx))
94
109
  return true;
@@ -96,33 +111,33 @@ const pawn = (ctx) => {
96
111
  return isDestControlledByEnemy(ctx);
97
112
  else
98
113
  return (canSomeEnemyPawnAdvanceToDest(ctx) ||
99
- canBeCapturedBySomeEnemyEnPassant(util.pos2key([ctx.pos2[0], ctx.pos2[1] + step]), ctx.friendlies, ctx.enemies, ctx.lastMove) ||
114
+ canBeCapturedBySomeEnemyEnPassant(util.pos2key([ctx.dest.pos[0], ctx.dest.pos[1] + step]), ctx.friendlies, ctx.enemies, ctx.lastMove) ||
100
115
  isDestControlledByEnemy(ctx, ['pawn']));
101
116
  };
102
- const knight = (ctx) => util.knightDir(...ctx.pos1, ...ctx.pos2) &&
117
+ const knight = (ctx) => util.knightDir(...ctx.orig.pos, ...ctx.dest.pos) &&
103
118
  (ctx.unrestrictedPremoves || !isDestOccupiedByFriendly(ctx) || isFriendlyOnDestAndAttacked(ctx));
104
- const bishop = (ctx) => util.bishopDir(...ctx.pos1, ...ctx.pos2) &&
105
- isPathClearEnoughForPremove(ctx) &&
119
+ const bishop = (ctx) => util.bishopDir(...ctx.orig.pos, ...ctx.dest.pos) &&
120
+ isPathClearEnoughForPremove(ctx, false) &&
106
121
  (ctx.unrestrictedPremoves || !isDestOccupiedByFriendly(ctx) || isFriendlyOnDestAndAttacked(ctx));
107
- const rook = (ctx) => util.rookDir(...ctx.pos1, ...ctx.pos2) &&
108
- isPathClearEnoughForPremove(ctx) &&
122
+ const rook = (ctx) => util.rookDir(...ctx.orig.pos, ...ctx.dest.pos) &&
123
+ isPathClearEnoughForPremove(ctx, false) &&
109
124
  (ctx.unrestrictedPremoves || !isDestOccupiedByFriendly(ctx) || isFriendlyOnDestAndAttacked(ctx));
110
125
  const queen = (ctx) => bishop(ctx) || rook(ctx);
111
- const king = (ctx) => (util.kingDirNonCastling(...ctx.pos1, ...ctx.pos2) &&
126
+ const king = (ctx) => (util.kingDirNonCastling(...ctx.orig.pos, ...ctx.dest.pos) &&
112
127
  (ctx.unrestrictedPremoves || !isDestOccupiedByFriendly(ctx) || isFriendlyOnDestAndAttacked(ctx))) ||
113
128
  (ctx.canCastle &&
114
- ctx.pos1[1] === ctx.pos2[1] &&
115
- ctx.pos1[1] === (ctx.color === 'white' ? 0 : 7) &&
116
- ((ctx.pos1[0] === 4 &&
117
- ((ctx.pos2[0] === 2 && ctx.rookFilesFriendlies.includes(0)) ||
118
- (ctx.pos2[0] === 6 && ctx.rookFilesFriendlies.includes(7)))) ||
119
- ctx.rookFilesFriendlies.includes(ctx.pos2[0])) &&
129
+ ctx.orig.pos[1] === ctx.dest.pos[1] &&
130
+ ctx.orig.pos[1] === (ctx.color === 'white' ? 0 : 7) &&
131
+ ((ctx.orig.pos[0] === 4 &&
132
+ ((ctx.dest.pos[0] === 2 && ctx.rookFilesFriendlies.includes(0)) ||
133
+ (ctx.dest.pos[0] === 6 && ctx.rookFilesFriendlies.includes(7)))) ||
134
+ ctx.rookFilesFriendlies.includes(ctx.dest.pos[0])) &&
120
135
  (ctx.unrestrictedPremoves ||
121
136
  /* The following checks if no non-rook friendly piece is in the way between the king and its castling destination.
122
137
  Note that for the Chess960 edge case of Kb1 "long castling", the check passes even if there is a piece in the way
123
138
  on c1. But this is fine, since premoving from b1 to a1 as a normal move would have already returned true. */
124
139
  util
125
- .squaresBetween(...ctx.pos1, ctx.pos2[0] > ctx.pos1[0] ? 7 : 1, ctx.pos2[1])
140
+ .squaresBetween(...ctx.orig.pos, ctx.dest.pos[0] > ctx.orig.pos[0] ? 7 : 1, ctx.dest.pos[1])
126
141
  .map(s => ctx.allPieces.get(s))
127
142
  .every(p => !p || util.samePiece(p, { role: 'rook', color: ctx.color }))));
128
143
  const mobilityByRole = { pawn, knight, bishop, rook, queen, king };
@@ -131,8 +146,9 @@ export function premove(state, key) {
131
146
  const piece = pieces.get(key);
132
147
  if (!piece || piece.color === state.turnColor)
133
148
  return [];
134
- const color = piece.color, friendlies = new Map([...pieces].filter(([_, p]) => p.color === color)), enemies = new Map([...pieces].filter(([_, p]) => p.color === util.opposite(color))), pos = util.key2pos(key), mobility = mobilityByRole[piece.role], ctx = {
135
- pos1: pos,
149
+ const color = piece.color, friendlies = new Map([...pieces].filter(([_, p]) => p.color === color)), enemies = new Map([...pieces].filter(([_, p]) => p.color === util.opposite(color))), orig = { key, pos: util.key2pos(key) }, mobility = (ctx) => mobilityByRole[piece.role](ctx) && state.premovable.additionalPremoveRequirements(ctx), partialCtx = {
150
+ orig,
151
+ role: piece.role,
136
152
  allPieces: pieces,
137
153
  friendlies: friendlies,
138
154
  enemies: enemies,
@@ -144,6 +160,6 @@ export function premove(state, key) {
144
160
  .map(([k]) => util.key2pos(k)[0]),
145
161
  lastMove: state.lastMove,
146
162
  };
147
- return util.allPos.filter(pos2 => mobility({ ...ctx, pos2 })).map(util.pos2key);
163
+ return util.allPosAndKey.filter(dest => mobility({ ...partialCtx, dest })).map(pk => pk.key);
148
164
  }
149
165
  //# sourceMappingURL=premove.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"premove.js","sourceRoot":"","sources":["../src/premove.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"premove.js","sourceRoot":"","sources":["../src/premove.ts"],"names":[],"mappings":"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"}
package/dist/state.d.ts CHANGED
@@ -20,6 +20,7 @@ export interface HeadlessState {
20
20
  blockTouchScroll: boolean;
21
21
  touchIgnoreRadius: number;
22
22
  pieceKey: boolean;
23
+ pixelCoordsOfMouchDownToMaybeClearShapes?: cg.NumberPair;
23
24
  trustAllEvents?: boolean;
24
25
  highlight: {
25
26
  lastMove: boolean;
@@ -50,6 +51,7 @@ export interface HeadlessState {
50
51
  customDests?: cg.Dests;
51
52
  current?: cg.KeyPair;
52
53
  unrestrictedPremoves?: boolean;
54
+ additionalPremoveRequirements: cg.Mobility;
53
55
  events: {
54
56
  set?: (orig: cg.Key, dest: cg.Key, metadata?: cg.SetPremoveMetadata) => void;
55
57
  unset?: () => void;
package/dist/state.js CHANGED
@@ -35,6 +35,7 @@ export function defaults() {
35
35
  enabled: true,
36
36
  showDests: true,
37
37
  castle: true,
38
+ additionalPremoveRequirements: _ => true,
38
39
  events: {},
39
40
  },
40
41
  predroppable: {
@@ -64,7 +65,7 @@ export function defaults() {
64
65
  enabled: true, // can draw
65
66
  visible: true, // can view
66
67
  defaultSnapToValidMove: true,
67
- eraseOnClick: true,
68
+ eraseOnMovablePieceClick: true,
68
69
  shapes: [],
69
70
  autoShapes: [],
70
71
  brushes: {
package/dist/state.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -5,6 +5,10 @@ export type Rank = (typeof ranks)[number];
5
5
  export type Key = 'a0' | `${File}${Rank}`;
6
6
  export type FEN = string;
7
7
  export type Pos = [number, number];
8
+ export interface PosAndKey {
9
+ pos: Pos;
10
+ key: Key;
11
+ }
8
12
  export interface Piece {
9
13
  role: Role;
10
14
  color: Color;
@@ -95,3 +99,17 @@ export type RanksPosition = 'left' | 'right';
95
99
  export type BrushColor = 'green' | 'red' | 'blue' | 'yellow';
96
100
  export type SquareClasses = Map<Key, string>;
97
101
  export type DirectionalCheck = (x1: number, y1: number, x2: number, y2: number) => boolean;
102
+ export type MobilityContext = {
103
+ orig: PosAndKey;
104
+ dest: PosAndKey;
105
+ role: Role;
106
+ allPieces: Pieces;
107
+ friendlies: Pieces;
108
+ enemies: Pieces;
109
+ unrestrictedPremoves: boolean;
110
+ color: Color;
111
+ canCastle: boolean;
112
+ rookFilesFriendlies: number[];
113
+ lastMove: Key[] | undefined;
114
+ };
115
+ export type Mobility = (ctx: MobilityContext) => boolean;
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAsGA,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,OAAO,CAAU,CAAC;AAClD,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AACpF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AACvE,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA0GA,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,OAAO,CAAU,CAAC;AAClD,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AACpF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AACvE,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC"}
package/dist/util.d.ts CHANGED
@@ -1,10 +1,12 @@
1
1
  import * as cg from './types.js';
2
2
  export declare const invRanks: readonly cg.Rank[];
3
3
  export declare const allKeys: readonly cg.Key[];
4
- export declare const pos2key: (pos: cg.Pos) => cg.Key;
4
+ export declare const pos2key: (pos: cg.Pos) => cg.Key | undefined;
5
+ export declare const pos2keyUnsafe: (pos: cg.Pos) => cg.Key;
5
6
  export declare const key2pos: (k: cg.Key) => cg.Pos;
6
7
  export declare const uciToMove: (uci: string | undefined) => cg.Key[] | undefined;
7
8
  export declare const allPos: readonly cg.Pos[];
9
+ export declare const allPosAndKey: readonly cg.PosAndKey[];
8
10
  export declare function memo<A>(f: () => A): cg.Memo<A>;
9
11
  export declare const timer: () => cg.Timer;
10
12
  export declare const opposite: (c: cg.Color) => cg.Color;
@@ -32,4 +34,4 @@ export declare const pawnDirAdvance: (x1: number, y1: number, x2: number, y2: nu
32
34
  */
33
35
  export declare const squaresBetween: (x1: number, y1: number, x2: number, y2: number) => cg.Key[];
34
36
  export declare const adjacentSquares: (square: cg.Key) => cg.Key[];
35
- export declare const squareShiftedVertically: (square: cg.Key, delta: number) => cg.Key;
37
+ export declare const squareShiftedVertically: (square: cg.Key, delta: number) => cg.Key | undefined;
package/dist/util.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import * as cg from './types.js';
2
2
  export const invRanks = [...cg.ranks].reverse();
3
3
  export const allKeys = cg.files.flatMap(f => cg.ranks.map(r => (f + r)));
4
- export const pos2key = (pos) => allKeys[8 * pos[0] + pos[1]];
4
+ export const pos2key = (pos) => pos.every(x => x >= 0 && x <= 7) ? allKeys[8 * pos[0] + pos[1]] : undefined;
5
+ export const pos2keyUnsafe = (pos) => pos2key(pos);
5
6
  export const key2pos = (k) => [k.charCodeAt(0) - 97, k.charCodeAt(1) - 49];
6
7
  export const uciToMove = (uci) => {
7
8
  if (!uci)
@@ -11,6 +12,7 @@ export const uciToMove = (uci) => {
11
12
  return [uci.slice(0, 2), uci.slice(2, 4)];
12
13
  };
13
14
  export const allPos = allKeys.map(key2pos);
15
+ export const allPosAndKey = allKeys.map((key, i) => ({ key, pos: allPos[i] }));
14
16
  export function memo(f) {
15
17
  let v;
16
18
  const ret = () => {
@@ -114,7 +116,7 @@ export const squaresBetween = (x1, y1, x2, y2) => {
114
116
  x += stepX;
115
117
  y += stepY;
116
118
  }
117
- return squares.map(sq => pos2key(sq));
119
+ return squares.map(pos2key).filter(k => k !== undefined);
118
120
  };
119
121
  export const adjacentSquares = (square) => {
120
122
  const pos = key2pos(square);
@@ -123,7 +125,7 @@ export const adjacentSquares = (square) => {
123
125
  adjacentSquares.push([pos[0] - 1, pos[1]]);
124
126
  if (pos[0] < 7)
125
127
  adjacentSquares.push([pos[0] + 1, pos[1]]);
126
- return adjacentSquares.map(pos2key);
128
+ return adjacentSquares.map(pos2key).filter(k => k !== undefined);
127
129
  };
128
130
  export const squareShiftedVertically = (square, delta) => {
129
131
  const pos = key2pos(square);
package/dist/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lichess-org/chessground",
3
- "version": "9.7.2",
3
+ "version": "9.8.0",
4
4
  "//": "version is managed by the build system",
5
5
  "description": "lichess.org chess ui",
6
6
  "type": "module",
package/src/board.ts CHANGED
@@ -9,6 +9,7 @@ import {
9
9
  queenDir,
10
10
  knightDir,
11
11
  samePos,
12
+ pos2keyUnsafe,
12
13
  } from './util.js';
13
14
  import { premove } from './premove.js';
14
15
  import * as cg from './types.js';
@@ -87,8 +88,8 @@ function tryAutoCastle(state: HeadlessState, orig: cg.Key, dest: cg.Key): boolea
87
88
  const destPos = key2pos(dest);
88
89
  if ((origPos[1] !== 0 && origPos[1] !== 7) || origPos[1] !== destPos[1]) return false;
89
90
  if (origPos[0] === 4 && !state.pieces.has(dest)) {
90
- if (destPos[0] === 6) dest = pos2key([7, destPos[1]]);
91
- else if (destPos[0] === 2) dest = pos2key([0, destPos[1]]);
91
+ if (destPos[0] === 6) dest = pos2keyUnsafe([7, destPos[1]]);
92
+ else if (destPos[0] === 2) dest = pos2keyUnsafe([0, destPos[1]]);
92
93
  }
93
94
  const rook = state.pieces.get(dest);
94
95
  if (!rook || rook.color !== king.color || rook.role !== 'rook') return false;
@@ -97,11 +98,11 @@ function tryAutoCastle(state: HeadlessState, orig: cg.Key, dest: cg.Key): boolea
97
98
  state.pieces.delete(dest);
98
99
 
99
100
  if (origPos[0] < destPos[0]) {
100
- state.pieces.set(pos2key([6, destPos[1]]), king);
101
- state.pieces.set(pos2key([5, destPos[1]]), rook);
101
+ state.pieces.set(pos2keyUnsafe([6, destPos[1]]), king);
102
+ state.pieces.set(pos2keyUnsafe([5, destPos[1]]), rook);
102
103
  } else {
103
- state.pieces.set(pos2key([2, destPos[1]]), king);
104
- state.pieces.set(pos2key([3, destPos[1]]), rook);
104
+ state.pieces.set(pos2keyUnsafe([2, destPos[1]]), king);
105
+ state.pieces.set(pos2keyUnsafe([3, destPos[1]]), rook);
105
106
  }
106
107
  return true;
107
108
  }
@@ -367,7 +368,9 @@ export function getSnappedKeyAtDomPos(
367
368
  queenDir(origPos[0], origPos[1], pos2[0], pos2[1]) ||
368
369
  knightDir(origPos[0], origPos[1], pos2[0], pos2[1]),
369
370
  );
370
- const validSnapCenters = validSnapPos.map(pos2 => computeSquareCenter(pos2key(pos2), asWhite, bounds));
371
+ const validSnapCenters = validSnapPos.map(pos2 =>
372
+ computeSquareCenter(pos2keyUnsafe(pos2), asWhite, bounds),
373
+ );
371
374
  const validSnapDistances = validSnapCenters.map(pos2 => distanceSq(pos, pos2));
372
375
  const [, closestSnapIndex] = validSnapDistances.reduce(
373
376
  (a, b, index) => (a[0] < b ? a : [b, index]),
package/src/config.ts CHANGED
@@ -48,6 +48,7 @@ export interface Config {
48
48
  dests?: cg.Key[]; // premove destinations for the current selection
49
49
  customDests?: cg.Dests; // use custom valid premoves. {"a2" ["a3" "a4"] "b1" ["a3" "c3"]}
50
50
  unrestrictedPremoves?: boolean; // if falsy, the positions of friendly pieces will be used to trim premove options
51
+ additionalPremoveRequirements?: Partial<Record<cg.Role, cg.Mobility>>;
51
52
  events?: {
52
53
  set?: (orig: cg.Key, dest: cg.Key, metadata?: cg.SetPremoveMetadata) => void; // called after the premove has been set
53
54
  unset?: () => void; // called after the premove has been unset
@@ -84,9 +85,9 @@ export interface Config {
84
85
  enabled?: boolean; // can draw
85
86
  visible?: boolean; // can view
86
87
  defaultSnapToValidMove?: boolean;
87
- // false to keep the drawing if a movable piece is clicked.
88
- // Clicking an empty square or immovable piece will clear the drawing regardless.
89
- eraseOnClick?: boolean;
88
+ // Clicking an empty square or immovable piece will clear the drawing regardless, but when this property is true,
89
+ // clicking on a (currently unselected) movable piece will also clear the drawing.
90
+ eraseOnMovablePieceClick?: boolean;
90
91
  shapes?: DrawShape[];
91
92
  autoShapes?: DrawShape[];
92
93
  brushes?: DrawBrushes;
package/src/drag.ts CHANGED
@@ -32,9 +32,9 @@ export function start(s: State, e: cg.MouchEvent): void {
32
32
  if (
33
33
  !previouslySelected &&
34
34
  s.drawable.enabled &&
35
- (s.drawable.eraseOnClick || !piece || piece.color !== s.turnColor)
35
+ (s.drawable.eraseOnMovablePieceClick || !piece || piece.color !== s.turnColor)
36
36
  )
37
- drawClear(s);
37
+ s.pixelCoordsOfMouchDownToMaybeClearShapes = position;
38
38
  // Prevent touch scroll and create no corresponding mouse event, if there
39
39
  // is an intent to interact with the board.
40
40
  if (
@@ -159,6 +159,14 @@ export function move(s: State, e: cg.MouchEvent): void {
159
159
  }
160
160
 
161
161
  export function end(s: State, e: cg.MouchEvent): void {
162
+ const position = util.eventPosition(e);
163
+ if (
164
+ position &&
165
+ s.pixelCoordsOfMouchDownToMaybeClearShapes &&
166
+ util.samePos(position, s.pixelCoordsOfMouchDownToMaybeClearShapes)
167
+ )
168
+ drawClear(s);
169
+ s.pixelCoordsOfMouchDownToMaybeClearShapes = undefined;
162
170
  const cur = s.draggable.current;
163
171
  if (!cur) return;
164
172
  // create no corresponding mouse event
package/src/draw.ts CHANGED
@@ -44,7 +44,7 @@ export interface Drawable {
44
44
  enabled: boolean; // can draw
45
45
  visible: boolean; // can view
46
46
  defaultSnapToValidMove: boolean;
47
- eraseOnClick: boolean;
47
+ eraseOnMovablePieceClick: boolean;
48
48
  onChange?: (shapes: DrawShape[]) => void;
49
49
  shapes: DrawShape[]; // user shapes
50
50
  autoShapes: DrawShape[]; // computer shapes
package/src/fen.ts CHANGED
@@ -37,7 +37,8 @@ export function read(fen: cg.FEN): cg.Pieces {
37
37
  col = 0;
38
38
  break;
39
39
  case '~': {
40
- const piece = pieces.get(pos2key([col - 1, row]));
40
+ const k = pos2key([col - 1, row]);
41
+ const piece = k && pieces.get(k);
41
42
  if (piece) piece.promoted = true;
42
43
  break;
43
44
  }