@lichess-org/chessground 9.2.3
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/LICENSE +674 -0
- package/README.md +110 -0
- package/assets/chessground.base.css +224 -0
- package/assets/chessground.brown.css +62 -0
- package/assets/chessground.cburnett.css +37 -0
- package/dist/anim.d.ts +17 -0
- package/dist/anim.js +99 -0
- package/dist/anim.js.map +1 -0
- package/dist/api.d.ts +28 -0
- package/dist/api.js +98 -0
- package/dist/api.js.map +1 -0
- package/dist/autoPieces.d.ts +3 -0
- package/dist/autoPieces.js +38 -0
- package/dist/autoPieces.js.map +1 -0
- package/dist/board.d.ts +25 -0
- package/dist/board.js +331 -0
- package/dist/board.js.map +1 -0
- package/dist/chessground.d.ts +7 -0
- package/dist/chessground.js +63 -0
- package/dist/chessground.js.map +1 -0
- package/dist/chessground.min.js +1 -0
- package/dist/config.d.ts +87 -0
- package/dist/config.js +64 -0
- package/dist/config.js.map +1 -0
- package/dist/drag.d.ts +20 -0
- package/dist/drag.js +208 -0
- package/dist/drag.js.map +1 -0
- package/dist/draw.d.ts +65 -0
- package/dist/draw.js +90 -0
- package/dist/draw.js.map +1 -0
- package/dist/drop.d.ts +5 -0
- package/dist/drop.js +31 -0
- package/dist/drop.js.map +1 -0
- package/dist/events.d.ts +4 -0
- package/dist/events.js +72 -0
- package/dist/events.js.map +1 -0
- package/dist/explosion.d.ts +3 -0
- package/dist/explosion.js +18 -0
- package/dist/explosion.js.map +1 -0
- package/dist/fen.d.ts +4 -0
- package/dist/fen.js +79 -0
- package/dist/fen.js.map +1 -0
- package/dist/premove.d.ts +6 -0
- package/dist/premove.js +57 -0
- package/dist/premove.js.map +1 -0
- package/dist/render.d.ts +4 -0
- package/dist/render.js +235 -0
- package/dist/render.js.map +1 -0
- package/dist/state.d.ts +100 -0
- package/dist/state.js +92 -0
- package/dist/state.js.map +1 -0
- package/dist/svg.d.ts +8 -0
- package/dist/svg.js +348 -0
- package/dist/svg.js.map +1 -0
- package/dist/sync.d.ts +8 -0
- package/dist/sync.js +27 -0
- package/dist/sync.js.map +1 -0
- package/dist/types.d.ts +94 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/util.d.ts +20 -0
- package/dist/util.js +89 -0
- package/dist/util.js.map +1 -0
- package/dist/wrap.d.ts +3 -0
- package/dist/wrap.js +90 -0
- package/dist/wrap.js.map +1 -0
- package/package.json +58 -0
- package/src/anim.ts +139 -0
- package/src/api.ts +187 -0
- package/src/autoPieces.ts +47 -0
- package/src/board.ts +371 -0
- package/src/chessground.ts +67 -0
- package/src/config.ts +165 -0
- package/src/drag.ts +223 -0
- package/src/draw.ts +154 -0
- package/src/drop.ts +36 -0
- package/src/events.ts +86 -0
- package/src/explosion.ts +19 -0
- package/src/fen.ts +78 -0
- package/src/premove.ts +76 -0
- package/src/render.ts +262 -0
- package/src/state.ts +199 -0
- package/src/svg.ts +441 -0
- package/src/sync.ts +36 -0
- package/src/types.ts +110 -0
- package/src/util.ts +105 -0
- package/src/wrap.ts +111 -0
package/dist/api.js
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import * as board from './board.js';
|
|
2
|
+
import { write as fenWrite } from './fen.js';
|
|
3
|
+
import { configure, applyAnimation } from './config.js';
|
|
4
|
+
import { anim, render } from './anim.js';
|
|
5
|
+
import { cancel as dragCancel, dragNewPiece } from './drag.js';
|
|
6
|
+
import { explosion } from './explosion.js';
|
|
7
|
+
// see API types and documentations in dts/api.d.ts
|
|
8
|
+
export function start(state, redrawAll) {
|
|
9
|
+
function toggleOrientation() {
|
|
10
|
+
board.toggleOrientation(state);
|
|
11
|
+
redrawAll();
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
set(config) {
|
|
15
|
+
if (config.orientation && config.orientation !== state.orientation)
|
|
16
|
+
toggleOrientation();
|
|
17
|
+
applyAnimation(state, config);
|
|
18
|
+
(config.fen ? anim : render)(state => configure(state, config), state);
|
|
19
|
+
},
|
|
20
|
+
state,
|
|
21
|
+
getFen: () => fenWrite(state.pieces),
|
|
22
|
+
toggleOrientation,
|
|
23
|
+
setPieces(pieces) {
|
|
24
|
+
anim(state => board.setPieces(state, pieces), state);
|
|
25
|
+
},
|
|
26
|
+
selectSquare(key, force) {
|
|
27
|
+
if (key)
|
|
28
|
+
anim(state => board.selectSquare(state, key, force), state);
|
|
29
|
+
else if (state.selected) {
|
|
30
|
+
board.unselect(state);
|
|
31
|
+
state.dom.redraw();
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
move(orig, dest) {
|
|
35
|
+
anim(state => board.baseMove(state, orig, dest), state);
|
|
36
|
+
},
|
|
37
|
+
newPiece(piece, key) {
|
|
38
|
+
anim(state => board.baseNewPiece(state, piece, key), state);
|
|
39
|
+
},
|
|
40
|
+
playPremove() {
|
|
41
|
+
if (state.premovable.current) {
|
|
42
|
+
if (anim(board.playPremove, state))
|
|
43
|
+
return true;
|
|
44
|
+
// if the premove couldn't be played, redraw to clear it up
|
|
45
|
+
state.dom.redraw();
|
|
46
|
+
}
|
|
47
|
+
return false;
|
|
48
|
+
},
|
|
49
|
+
playPredrop(validate) {
|
|
50
|
+
if (state.predroppable.current) {
|
|
51
|
+
const result = board.playPredrop(state, validate);
|
|
52
|
+
state.dom.redraw();
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
},
|
|
57
|
+
cancelPremove() {
|
|
58
|
+
render(board.unsetPremove, state);
|
|
59
|
+
},
|
|
60
|
+
cancelPredrop() {
|
|
61
|
+
render(board.unsetPredrop, state);
|
|
62
|
+
},
|
|
63
|
+
cancelMove() {
|
|
64
|
+
render(state => {
|
|
65
|
+
board.cancelMove(state);
|
|
66
|
+
dragCancel(state);
|
|
67
|
+
}, state);
|
|
68
|
+
},
|
|
69
|
+
stop() {
|
|
70
|
+
render(state => {
|
|
71
|
+
board.stop(state);
|
|
72
|
+
dragCancel(state);
|
|
73
|
+
}, state);
|
|
74
|
+
},
|
|
75
|
+
explode(keys) {
|
|
76
|
+
explosion(state, keys);
|
|
77
|
+
},
|
|
78
|
+
setAutoShapes(shapes) {
|
|
79
|
+
render(state => (state.drawable.autoShapes = shapes), state);
|
|
80
|
+
},
|
|
81
|
+
setShapes(shapes) {
|
|
82
|
+
render(state => (state.drawable.shapes = shapes.slice()), state);
|
|
83
|
+
},
|
|
84
|
+
getKeyAtDomPos(pos) {
|
|
85
|
+
return board.getKeyAtDomPos(pos, board.whitePov(state), state.dom.bounds());
|
|
86
|
+
},
|
|
87
|
+
redrawAll,
|
|
88
|
+
dragNewPiece(piece, event, force) {
|
|
89
|
+
dragNewPiece(state, piece, event, force);
|
|
90
|
+
},
|
|
91
|
+
destroy() {
|
|
92
|
+
board.stop(state);
|
|
93
|
+
state.dom.unbind && state.dom.unbind();
|
|
94
|
+
state.dom.destroyed = true;
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { key2pos, createEl, posToTranslate as posToTranslateFromBounds, translateAndScale } from './util.js';
|
|
2
|
+
import { whitePov } from './board.js';
|
|
3
|
+
import { syncShapes } from './sync.js';
|
|
4
|
+
export function render(state, autoPieceEl) {
|
|
5
|
+
const autoPieces = state.drawable.autoShapes.filter(autoShape => autoShape.piece);
|
|
6
|
+
const autoPieceShapes = autoPieces.map((s) => {
|
|
7
|
+
return {
|
|
8
|
+
shape: s,
|
|
9
|
+
hash: hash(s),
|
|
10
|
+
current: false,
|
|
11
|
+
};
|
|
12
|
+
});
|
|
13
|
+
syncShapes(autoPieceShapes, autoPieceEl, shape => renderShape(state, shape, state.dom.bounds()));
|
|
14
|
+
}
|
|
15
|
+
export function renderResized(state) {
|
|
16
|
+
var _a;
|
|
17
|
+
const asWhite = whitePov(state), posToTranslate = posToTranslateFromBounds(state.dom.bounds());
|
|
18
|
+
let el = (_a = state.dom.elements.autoPieces) === null || _a === void 0 ? void 0 : _a.firstChild;
|
|
19
|
+
while (el) {
|
|
20
|
+
translateAndScale(el, posToTranslate(key2pos(el.cgKey), asWhite), el.cgScale);
|
|
21
|
+
el = el.nextSibling;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function renderShape(state, { shape, hash }, bounds) {
|
|
25
|
+
var _a, _b, _c;
|
|
26
|
+
const orig = shape.orig;
|
|
27
|
+
const role = (_a = shape.piece) === null || _a === void 0 ? void 0 : _a.role;
|
|
28
|
+
const color = (_b = shape.piece) === null || _b === void 0 ? void 0 : _b.color;
|
|
29
|
+
const scale = (_c = shape.piece) === null || _c === void 0 ? void 0 : _c.scale;
|
|
30
|
+
const pieceEl = createEl('piece', `${role} ${color}`);
|
|
31
|
+
pieceEl.setAttribute('cgHash', hash);
|
|
32
|
+
pieceEl.cgKey = orig;
|
|
33
|
+
pieceEl.cgScale = scale;
|
|
34
|
+
translateAndScale(pieceEl, posToTranslateFromBounds(bounds)(key2pos(orig), whitePov(state)), scale);
|
|
35
|
+
return pieceEl;
|
|
36
|
+
}
|
|
37
|
+
const hash = (autoPiece) => { var _a, _b, _c; return [autoPiece.orig, (_a = autoPiece.piece) === null || _a === void 0 ? void 0 : _a.role, (_b = autoPiece.piece) === null || _b === void 0 ? void 0 : _b.color, (_c = autoPiece.piece) === null || _c === void 0 ? void 0 : _c.scale].join(','); };
|
|
38
|
+
//# sourceMappingURL=autoPieces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoPieces.js","sourceRoot":"","sources":["../src/autoPieces.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,IAAI,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC7G,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,EAAuB,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5D,MAAM,UAAU,MAAM,CAAC,KAAY,EAAE,WAAwB;IAC3D,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClF,MAAM,eAAe,GAAoB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAY,EAAE,EAAE;QACvE,OAAO;YACL,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YACb,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,eAAe,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACnG,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAY;;IACxC,MAAM,OAAO,GAAY,QAAQ,CAAC,KAAK,CAAC,EACtC,cAAc,GAAG,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAChE,IAAI,EAAE,GAAG,MAAA,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,0CAAE,UAAsC,CAAC;IAC/E,OAAO,EAAE,EAAE,CAAC;QACV,iBAAiB,CAAC,EAAE,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;QAC9E,EAAE,GAAG,EAAE,CAAC,WAAuC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAiB,EAAE,MAAuB;;IACxF,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,MAAM,IAAI,GAAG,MAAA,KAAK,CAAC,KAAK,0CAAE,IAAI,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAA,KAAK,CAAC,KAAK,0CAAE,KAAK,CAAC;IACjC,MAAM,KAAK,GAAG,MAAA,KAAK,CAAC,KAAK,0CAAE,KAAK,CAAC;IAEjC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,KAAK,EAAE,CAAiB,CAAC;IACtE,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IACrB,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;IACxB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEpG,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,SAAoB,EAAQ,EAAE,mBAC1C,OAAA,CAAC,SAAS,CAAC,IAAI,EAAE,MAAA,SAAS,CAAC,KAAK,0CAAE,IAAI,EAAE,MAAA,SAAS,CAAC,KAAK,0CAAE,KAAK,EAAE,MAAA,SAAS,CAAC,KAAK,0CAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAA,CAAC"}
|
package/dist/board.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { HeadlessState } from './state.js';
|
|
2
|
+
import * as cg from './types.js';
|
|
3
|
+
export declare function callUserFunction<T extends (...args: any[]) => void>(f: T | undefined, ...args: Parameters<T>): void;
|
|
4
|
+
export declare function toggleOrientation(state: HeadlessState): void;
|
|
5
|
+
export declare function reset(state: HeadlessState): void;
|
|
6
|
+
export declare function setPieces(state: HeadlessState, pieces: cg.PiecesDiff): void;
|
|
7
|
+
export declare function setCheck(state: HeadlessState, color: cg.Color | boolean): void;
|
|
8
|
+
export declare function unsetPremove(state: HeadlessState): void;
|
|
9
|
+
export declare function unsetPredrop(state: HeadlessState): void;
|
|
10
|
+
export declare function baseMove(state: HeadlessState, orig: cg.Key, dest: cg.Key): cg.Piece | boolean;
|
|
11
|
+
export declare function baseNewPiece(state: HeadlessState, piece: cg.Piece, key: cg.Key, force?: boolean): boolean;
|
|
12
|
+
export declare function userMove(state: HeadlessState, orig: cg.Key, dest: cg.Key): boolean;
|
|
13
|
+
export declare function dropNewPiece(state: HeadlessState, orig: cg.Key, dest: cg.Key, force?: boolean): void;
|
|
14
|
+
export declare function selectSquare(state: HeadlessState, key: cg.Key, force?: boolean): void;
|
|
15
|
+
export declare function setSelected(state: HeadlessState, key: cg.Key): void;
|
|
16
|
+
export declare function unselect(state: HeadlessState): void;
|
|
17
|
+
export declare const canMove: (state: HeadlessState, orig: cg.Key, dest: cg.Key) => boolean;
|
|
18
|
+
export declare function isDraggable(state: HeadlessState, orig: cg.Key): boolean;
|
|
19
|
+
export declare function playPremove(state: HeadlessState): boolean;
|
|
20
|
+
export declare function playPredrop(state: HeadlessState, validate: (drop: cg.Drop) => boolean): boolean;
|
|
21
|
+
export declare function cancelMove(state: HeadlessState): void;
|
|
22
|
+
export declare function stop(state: HeadlessState): void;
|
|
23
|
+
export declare function getKeyAtDomPos(pos: cg.NumberPair, asWhite: boolean, bounds: DOMRectReadOnly): cg.Key | undefined;
|
|
24
|
+
export declare function getSnappedKeyAtDomPos(orig: cg.Key, pos: cg.NumberPair, asWhite: boolean, bounds: DOMRectReadOnly): cg.Key | undefined;
|
|
25
|
+
export declare const whitePov: (s: HeadlessState) => boolean;
|
package/dist/board.js
ADDED
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
import { pos2key, key2pos, opposite, distanceSq, allPos, computeSquareCenter } from './util.js';
|
|
2
|
+
import { premove, queen, knight } from './premove.js';
|
|
3
|
+
export function callUserFunction(f, ...args) {
|
|
4
|
+
if (f)
|
|
5
|
+
setTimeout(() => f(...args), 1);
|
|
6
|
+
}
|
|
7
|
+
export function toggleOrientation(state) {
|
|
8
|
+
state.orientation = opposite(state.orientation);
|
|
9
|
+
state.animation.current = state.draggable.current = state.selected = undefined;
|
|
10
|
+
}
|
|
11
|
+
export function reset(state) {
|
|
12
|
+
state.lastMove = undefined;
|
|
13
|
+
unselect(state);
|
|
14
|
+
unsetPremove(state);
|
|
15
|
+
unsetPredrop(state);
|
|
16
|
+
}
|
|
17
|
+
export function setPieces(state, pieces) {
|
|
18
|
+
for (const [key, piece] of pieces) {
|
|
19
|
+
if (piece)
|
|
20
|
+
state.pieces.set(key, piece);
|
|
21
|
+
else
|
|
22
|
+
state.pieces.delete(key);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export function setCheck(state, color) {
|
|
26
|
+
state.check = undefined;
|
|
27
|
+
if (color === true)
|
|
28
|
+
color = state.turnColor;
|
|
29
|
+
if (color)
|
|
30
|
+
for (const [k, p] of state.pieces) {
|
|
31
|
+
if (p.role === 'king' && p.color === color) {
|
|
32
|
+
state.check = k;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function setPremove(state, orig, dest, meta) {
|
|
37
|
+
unsetPredrop(state);
|
|
38
|
+
state.premovable.current = [orig, dest];
|
|
39
|
+
callUserFunction(state.premovable.events.set, orig, dest, meta);
|
|
40
|
+
}
|
|
41
|
+
export function unsetPremove(state) {
|
|
42
|
+
if (state.premovable.current) {
|
|
43
|
+
state.premovable.current = undefined;
|
|
44
|
+
callUserFunction(state.premovable.events.unset);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function setPredrop(state, role, key) {
|
|
48
|
+
unsetPremove(state);
|
|
49
|
+
state.predroppable.current = { role, key };
|
|
50
|
+
callUserFunction(state.predroppable.events.set, role, key);
|
|
51
|
+
}
|
|
52
|
+
export function unsetPredrop(state) {
|
|
53
|
+
const pd = state.predroppable;
|
|
54
|
+
if (pd.current) {
|
|
55
|
+
pd.current = undefined;
|
|
56
|
+
callUserFunction(pd.events.unset);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function tryAutoCastle(state, orig, dest) {
|
|
60
|
+
if (!state.autoCastle)
|
|
61
|
+
return false;
|
|
62
|
+
const king = state.pieces.get(orig);
|
|
63
|
+
if (!king || king.role !== 'king')
|
|
64
|
+
return false;
|
|
65
|
+
const origPos = key2pos(orig);
|
|
66
|
+
const destPos = key2pos(dest);
|
|
67
|
+
if ((origPos[1] !== 0 && origPos[1] !== 7) || origPos[1] !== destPos[1])
|
|
68
|
+
return false;
|
|
69
|
+
if (origPos[0] === 4 && !state.pieces.has(dest)) {
|
|
70
|
+
if (destPos[0] === 6)
|
|
71
|
+
dest = pos2key([7, destPos[1]]);
|
|
72
|
+
else if (destPos[0] === 2)
|
|
73
|
+
dest = pos2key([0, destPos[1]]);
|
|
74
|
+
}
|
|
75
|
+
const rook = state.pieces.get(dest);
|
|
76
|
+
if (!rook || rook.color !== king.color || rook.role !== 'rook')
|
|
77
|
+
return false;
|
|
78
|
+
state.pieces.delete(orig);
|
|
79
|
+
state.pieces.delete(dest);
|
|
80
|
+
if (origPos[0] < destPos[0]) {
|
|
81
|
+
state.pieces.set(pos2key([6, destPos[1]]), king);
|
|
82
|
+
state.pieces.set(pos2key([5, destPos[1]]), rook);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
state.pieces.set(pos2key([2, destPos[1]]), king);
|
|
86
|
+
state.pieces.set(pos2key([3, destPos[1]]), rook);
|
|
87
|
+
}
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
export function baseMove(state, orig, dest) {
|
|
91
|
+
const origPiece = state.pieces.get(orig), destPiece = state.pieces.get(dest);
|
|
92
|
+
if (orig === dest || !origPiece)
|
|
93
|
+
return false;
|
|
94
|
+
const captured = destPiece && destPiece.color !== origPiece.color ? destPiece : undefined;
|
|
95
|
+
if (dest === state.selected)
|
|
96
|
+
unselect(state);
|
|
97
|
+
callUserFunction(state.events.move, orig, dest, captured);
|
|
98
|
+
if (!tryAutoCastle(state, orig, dest)) {
|
|
99
|
+
state.pieces.set(dest, origPiece);
|
|
100
|
+
state.pieces.delete(orig);
|
|
101
|
+
}
|
|
102
|
+
state.lastMove = [orig, dest];
|
|
103
|
+
state.check = undefined;
|
|
104
|
+
callUserFunction(state.events.change);
|
|
105
|
+
return captured || true;
|
|
106
|
+
}
|
|
107
|
+
export function baseNewPiece(state, piece, key, force) {
|
|
108
|
+
if (state.pieces.has(key)) {
|
|
109
|
+
if (force)
|
|
110
|
+
state.pieces.delete(key);
|
|
111
|
+
else
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
callUserFunction(state.events.dropNewPiece, piece, key);
|
|
115
|
+
state.pieces.set(key, piece);
|
|
116
|
+
state.lastMove = [key];
|
|
117
|
+
state.check = undefined;
|
|
118
|
+
callUserFunction(state.events.change);
|
|
119
|
+
state.movable.dests = undefined;
|
|
120
|
+
state.turnColor = opposite(state.turnColor);
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
function baseUserMove(state, orig, dest) {
|
|
124
|
+
const result = baseMove(state, orig, dest);
|
|
125
|
+
if (result) {
|
|
126
|
+
state.movable.dests = undefined;
|
|
127
|
+
state.turnColor = opposite(state.turnColor);
|
|
128
|
+
state.animation.current = undefined;
|
|
129
|
+
}
|
|
130
|
+
return result;
|
|
131
|
+
}
|
|
132
|
+
export function userMove(state, orig, dest) {
|
|
133
|
+
if (canMove(state, orig, dest)) {
|
|
134
|
+
const result = baseUserMove(state, orig, dest);
|
|
135
|
+
if (result) {
|
|
136
|
+
const holdTime = state.hold.stop();
|
|
137
|
+
unselect(state);
|
|
138
|
+
const metadata = {
|
|
139
|
+
premove: false,
|
|
140
|
+
ctrlKey: state.stats.ctrlKey,
|
|
141
|
+
holdTime,
|
|
142
|
+
};
|
|
143
|
+
if (result !== true)
|
|
144
|
+
metadata.captured = result;
|
|
145
|
+
callUserFunction(state.movable.events.after, orig, dest, metadata);
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
else if (canPremove(state, orig, dest)) {
|
|
150
|
+
setPremove(state, orig, dest, {
|
|
151
|
+
ctrlKey: state.stats.ctrlKey,
|
|
152
|
+
});
|
|
153
|
+
unselect(state);
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
unselect(state);
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
export function dropNewPiece(state, orig, dest, force) {
|
|
160
|
+
const piece = state.pieces.get(orig);
|
|
161
|
+
if (piece && (canDrop(state, orig, dest) || force)) {
|
|
162
|
+
state.pieces.delete(orig);
|
|
163
|
+
baseNewPiece(state, piece, dest, force);
|
|
164
|
+
callUserFunction(state.movable.events.afterNewPiece, piece.role, dest, {
|
|
165
|
+
premove: false,
|
|
166
|
+
predrop: false,
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
else if (piece && canPredrop(state, orig, dest)) {
|
|
170
|
+
setPredrop(state, piece.role, dest);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
unsetPremove(state);
|
|
174
|
+
unsetPredrop(state);
|
|
175
|
+
}
|
|
176
|
+
state.pieces.delete(orig);
|
|
177
|
+
unselect(state);
|
|
178
|
+
}
|
|
179
|
+
export function selectSquare(state, key, force) {
|
|
180
|
+
callUserFunction(state.events.select, key);
|
|
181
|
+
if (state.selected) {
|
|
182
|
+
if (state.selected === key && !state.draggable.enabled) {
|
|
183
|
+
unselect(state);
|
|
184
|
+
state.hold.cancel();
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
else if ((state.selectable.enabled || force) && state.selected !== key) {
|
|
188
|
+
if (userMove(state, state.selected, key)) {
|
|
189
|
+
state.stats.dragged = false;
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
if ((state.selectable.enabled || state.draggable.enabled) &&
|
|
195
|
+
(isMovable(state, key) || isPremovable(state, key))) {
|
|
196
|
+
setSelected(state, key);
|
|
197
|
+
state.hold.start();
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
export function setSelected(state, key) {
|
|
201
|
+
state.selected = key;
|
|
202
|
+
if (isPremovable(state, key)) {
|
|
203
|
+
// calculate chess premoves if custom premoves are not passed
|
|
204
|
+
if (!state.premovable.customDests) {
|
|
205
|
+
state.premovable.dests = premove(state.pieces, key, state.premovable.castle);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
else
|
|
209
|
+
state.premovable.dests = undefined;
|
|
210
|
+
}
|
|
211
|
+
export function unselect(state) {
|
|
212
|
+
state.selected = undefined;
|
|
213
|
+
state.premovable.dests = undefined;
|
|
214
|
+
state.hold.cancel();
|
|
215
|
+
}
|
|
216
|
+
function isMovable(state, orig) {
|
|
217
|
+
const piece = state.pieces.get(orig);
|
|
218
|
+
return (!!piece &&
|
|
219
|
+
(state.movable.color === 'both' ||
|
|
220
|
+
(state.movable.color === piece.color && state.turnColor === piece.color)));
|
|
221
|
+
}
|
|
222
|
+
export const canMove = (state, orig, dest) => {
|
|
223
|
+
var _a, _b;
|
|
224
|
+
return orig !== dest &&
|
|
225
|
+
isMovable(state, orig) &&
|
|
226
|
+
(state.movable.free || !!((_b = (_a = state.movable.dests) === null || _a === void 0 ? void 0 : _a.get(orig)) === null || _b === void 0 ? void 0 : _b.includes(dest)));
|
|
227
|
+
};
|
|
228
|
+
function canDrop(state, orig, dest) {
|
|
229
|
+
const piece = state.pieces.get(orig);
|
|
230
|
+
return (!!piece &&
|
|
231
|
+
(orig === dest || !state.pieces.has(dest)) &&
|
|
232
|
+
(state.movable.color === 'both' ||
|
|
233
|
+
(state.movable.color === piece.color && state.turnColor === piece.color)));
|
|
234
|
+
}
|
|
235
|
+
function isPremovable(state, orig) {
|
|
236
|
+
const piece = state.pieces.get(orig);
|
|
237
|
+
return (!!piece &&
|
|
238
|
+
state.premovable.enabled &&
|
|
239
|
+
state.movable.color === piece.color &&
|
|
240
|
+
state.turnColor !== piece.color);
|
|
241
|
+
}
|
|
242
|
+
function canPremove(state, orig, dest) {
|
|
243
|
+
var _a, _b;
|
|
244
|
+
const validPremoves = (_b = (_a = state.premovable.customDests) === null || _a === void 0 ? void 0 : _a.get(orig)) !== null && _b !== void 0 ? _b : premove(state.pieces, orig, state.premovable.castle);
|
|
245
|
+
return orig !== dest && isPremovable(state, orig) && validPremoves.includes(dest);
|
|
246
|
+
}
|
|
247
|
+
function canPredrop(state, orig, dest) {
|
|
248
|
+
const piece = state.pieces.get(orig);
|
|
249
|
+
const destPiece = state.pieces.get(dest);
|
|
250
|
+
return (!!piece &&
|
|
251
|
+
(!destPiece || destPiece.color !== state.movable.color) &&
|
|
252
|
+
state.predroppable.enabled &&
|
|
253
|
+
(piece.role !== 'pawn' || (dest[1] !== '1' && dest[1] !== '8')) &&
|
|
254
|
+
state.movable.color === piece.color &&
|
|
255
|
+
state.turnColor !== piece.color);
|
|
256
|
+
}
|
|
257
|
+
export function isDraggable(state, orig) {
|
|
258
|
+
const piece = state.pieces.get(orig);
|
|
259
|
+
return (!!piece &&
|
|
260
|
+
state.draggable.enabled &&
|
|
261
|
+
(state.movable.color === 'both' ||
|
|
262
|
+
(state.movable.color === piece.color && (state.turnColor === piece.color || state.premovable.enabled))));
|
|
263
|
+
}
|
|
264
|
+
export function playPremove(state) {
|
|
265
|
+
const move = state.premovable.current;
|
|
266
|
+
if (!move)
|
|
267
|
+
return false;
|
|
268
|
+
const orig = move[0], dest = move[1];
|
|
269
|
+
let success = false;
|
|
270
|
+
if (canMove(state, orig, dest)) {
|
|
271
|
+
const result = baseUserMove(state, orig, dest);
|
|
272
|
+
if (result) {
|
|
273
|
+
const metadata = { premove: true };
|
|
274
|
+
if (result !== true)
|
|
275
|
+
metadata.captured = result;
|
|
276
|
+
callUserFunction(state.movable.events.after, orig, dest, metadata);
|
|
277
|
+
success = true;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
unsetPremove(state);
|
|
281
|
+
return success;
|
|
282
|
+
}
|
|
283
|
+
export function playPredrop(state, validate) {
|
|
284
|
+
const drop = state.predroppable.current;
|
|
285
|
+
let success = false;
|
|
286
|
+
if (!drop)
|
|
287
|
+
return false;
|
|
288
|
+
if (validate(drop)) {
|
|
289
|
+
const piece = {
|
|
290
|
+
role: drop.role,
|
|
291
|
+
color: state.movable.color,
|
|
292
|
+
};
|
|
293
|
+
if (baseNewPiece(state, piece, drop.key)) {
|
|
294
|
+
callUserFunction(state.movable.events.afterNewPiece, drop.role, drop.key, {
|
|
295
|
+
premove: false,
|
|
296
|
+
predrop: true,
|
|
297
|
+
});
|
|
298
|
+
success = true;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
unsetPredrop(state);
|
|
302
|
+
return success;
|
|
303
|
+
}
|
|
304
|
+
export function cancelMove(state) {
|
|
305
|
+
unsetPremove(state);
|
|
306
|
+
unsetPredrop(state);
|
|
307
|
+
unselect(state);
|
|
308
|
+
}
|
|
309
|
+
export function stop(state) {
|
|
310
|
+
state.movable.color = state.movable.dests = state.animation.current = undefined;
|
|
311
|
+
cancelMove(state);
|
|
312
|
+
}
|
|
313
|
+
export function getKeyAtDomPos(pos, asWhite, bounds) {
|
|
314
|
+
let file = Math.floor((8 * (pos[0] - bounds.left)) / bounds.width);
|
|
315
|
+
if (!asWhite)
|
|
316
|
+
file = 7 - file;
|
|
317
|
+
let rank = 7 - Math.floor((8 * (pos[1] - bounds.top)) / bounds.height);
|
|
318
|
+
if (!asWhite)
|
|
319
|
+
rank = 7 - rank;
|
|
320
|
+
return file >= 0 && file < 8 && rank >= 0 && rank < 8 ? pos2key([file, rank]) : undefined;
|
|
321
|
+
}
|
|
322
|
+
export function getSnappedKeyAtDomPos(orig, pos, asWhite, bounds) {
|
|
323
|
+
const origPos = key2pos(orig);
|
|
324
|
+
const validSnapPos = allPos.filter(pos2 => queen(origPos[0], origPos[1], pos2[0], pos2[1]) || knight(origPos[0], origPos[1], pos2[0], pos2[1]));
|
|
325
|
+
const validSnapCenters = validSnapPos.map(pos2 => computeSquareCenter(pos2key(pos2), asWhite, bounds));
|
|
326
|
+
const validSnapDistances = validSnapCenters.map(pos2 => distanceSq(pos, pos2));
|
|
327
|
+
const [, closestSnapIndex] = validSnapDistances.reduce((a, b, index) => (a[0] < b ? a : [b, index]), [validSnapDistances[0], 0]);
|
|
328
|
+
return pos2key(validSnapPos[closestSnapIndex]);
|
|
329
|
+
}
|
|
330
|
+
export const whitePov = (s) => s.orientation === 'white';
|
|
331
|
+
//# sourceMappingURL=board.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board.js","sourceRoot":"","sources":["../src/board.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { start } from './api.js';
|
|
2
|
+
import { configure } from './config.js';
|
|
3
|
+
import { defaults } from './state.js';
|
|
4
|
+
import { renderWrap } from './wrap.js';
|
|
5
|
+
import * as events from './events.js';
|
|
6
|
+
import { render, renderResized, updateBounds } from './render.js';
|
|
7
|
+
import * as autoPieces from './autoPieces.js';
|
|
8
|
+
import * as svg from './svg.js';
|
|
9
|
+
import * as util from './util.js';
|
|
10
|
+
export function initModule({ el, config }) {
|
|
11
|
+
return Chessground(el, config);
|
|
12
|
+
}
|
|
13
|
+
export function Chessground(element, config) {
|
|
14
|
+
const maybeState = defaults();
|
|
15
|
+
configure(maybeState, config || {});
|
|
16
|
+
function redrawAll() {
|
|
17
|
+
const prevUnbind = 'dom' in maybeState ? maybeState.dom.unbind : undefined;
|
|
18
|
+
// compute bounds from existing board element if possible
|
|
19
|
+
// this allows non-square boards from CSS to be handled (for 3D)
|
|
20
|
+
const elements = renderWrap(element, maybeState), bounds = util.memo(() => elements.board.getBoundingClientRect()), redrawNow = (skipSvg) => {
|
|
21
|
+
render(state);
|
|
22
|
+
if (elements.autoPieces)
|
|
23
|
+
autoPieces.render(state, elements.autoPieces);
|
|
24
|
+
if (!skipSvg && elements.svg)
|
|
25
|
+
svg.renderSvg(state, elements.svg, elements.customSvg);
|
|
26
|
+
}, onResize = () => {
|
|
27
|
+
updateBounds(state);
|
|
28
|
+
renderResized(state);
|
|
29
|
+
if (elements.autoPieces)
|
|
30
|
+
autoPieces.renderResized(state);
|
|
31
|
+
};
|
|
32
|
+
const state = maybeState;
|
|
33
|
+
state.dom = {
|
|
34
|
+
elements,
|
|
35
|
+
bounds,
|
|
36
|
+
redraw: debounceRedraw(redrawNow),
|
|
37
|
+
redrawNow,
|
|
38
|
+
unbind: prevUnbind,
|
|
39
|
+
};
|
|
40
|
+
state.drawable.prevSvgHash = '';
|
|
41
|
+
updateBounds(state);
|
|
42
|
+
redrawNow(false);
|
|
43
|
+
events.bindBoard(state, onResize);
|
|
44
|
+
if (!prevUnbind)
|
|
45
|
+
state.dom.unbind = events.bindDocument(state, onResize);
|
|
46
|
+
state.events.insert && state.events.insert(elements);
|
|
47
|
+
return state;
|
|
48
|
+
}
|
|
49
|
+
return start(redrawAll(), redrawAll);
|
|
50
|
+
}
|
|
51
|
+
function debounceRedraw(redrawNow) {
|
|
52
|
+
let redrawing = false;
|
|
53
|
+
return () => {
|
|
54
|
+
if (redrawing)
|
|
55
|
+
return;
|
|
56
|
+
redrawing = true;
|
|
57
|
+
requestAnimationFrame(() => {
|
|
58
|
+
redrawNow();
|
|
59
|
+
redrawing = false;
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=chessground.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chessground.js","sourceRoot":"","sources":["../src/chessground.ts"],"names":[],"mappings":"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"}
|