@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.
Files changed (87) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +110 -0
  3. package/assets/chessground.base.css +224 -0
  4. package/assets/chessground.brown.css +62 -0
  5. package/assets/chessground.cburnett.css +37 -0
  6. package/dist/anim.d.ts +17 -0
  7. package/dist/anim.js +99 -0
  8. package/dist/anim.js.map +1 -0
  9. package/dist/api.d.ts +28 -0
  10. package/dist/api.js +98 -0
  11. package/dist/api.js.map +1 -0
  12. package/dist/autoPieces.d.ts +3 -0
  13. package/dist/autoPieces.js +38 -0
  14. package/dist/autoPieces.js.map +1 -0
  15. package/dist/board.d.ts +25 -0
  16. package/dist/board.js +331 -0
  17. package/dist/board.js.map +1 -0
  18. package/dist/chessground.d.ts +7 -0
  19. package/dist/chessground.js +63 -0
  20. package/dist/chessground.js.map +1 -0
  21. package/dist/chessground.min.js +1 -0
  22. package/dist/config.d.ts +87 -0
  23. package/dist/config.js +64 -0
  24. package/dist/config.js.map +1 -0
  25. package/dist/drag.d.ts +20 -0
  26. package/dist/drag.js +208 -0
  27. package/dist/drag.js.map +1 -0
  28. package/dist/draw.d.ts +65 -0
  29. package/dist/draw.js +90 -0
  30. package/dist/draw.js.map +1 -0
  31. package/dist/drop.d.ts +5 -0
  32. package/dist/drop.js +31 -0
  33. package/dist/drop.js.map +1 -0
  34. package/dist/events.d.ts +4 -0
  35. package/dist/events.js +72 -0
  36. package/dist/events.js.map +1 -0
  37. package/dist/explosion.d.ts +3 -0
  38. package/dist/explosion.js +18 -0
  39. package/dist/explosion.js.map +1 -0
  40. package/dist/fen.d.ts +4 -0
  41. package/dist/fen.js +79 -0
  42. package/dist/fen.js.map +1 -0
  43. package/dist/premove.d.ts +6 -0
  44. package/dist/premove.js +57 -0
  45. package/dist/premove.js.map +1 -0
  46. package/dist/render.d.ts +4 -0
  47. package/dist/render.js +235 -0
  48. package/dist/render.js.map +1 -0
  49. package/dist/state.d.ts +100 -0
  50. package/dist/state.js +92 -0
  51. package/dist/state.js.map +1 -0
  52. package/dist/svg.d.ts +8 -0
  53. package/dist/svg.js +348 -0
  54. package/dist/svg.js.map +1 -0
  55. package/dist/sync.d.ts +8 -0
  56. package/dist/sync.js +27 -0
  57. package/dist/sync.js.map +1 -0
  58. package/dist/types.d.ts +94 -0
  59. package/dist/types.js +5 -0
  60. package/dist/types.js.map +1 -0
  61. package/dist/util.d.ts +20 -0
  62. package/dist/util.js +89 -0
  63. package/dist/util.js.map +1 -0
  64. package/dist/wrap.d.ts +3 -0
  65. package/dist/wrap.js +90 -0
  66. package/dist/wrap.js.map +1 -0
  67. package/package.json +58 -0
  68. package/src/anim.ts +139 -0
  69. package/src/api.ts +187 -0
  70. package/src/autoPieces.ts +47 -0
  71. package/src/board.ts +371 -0
  72. package/src/chessground.ts +67 -0
  73. package/src/config.ts +165 -0
  74. package/src/drag.ts +223 -0
  75. package/src/draw.ts +154 -0
  76. package/src/drop.ts +36 -0
  77. package/src/events.ts +86 -0
  78. package/src/explosion.ts +19 -0
  79. package/src/fen.ts +78 -0
  80. package/src/premove.ts +76 -0
  81. package/src/render.ts +262 -0
  82. package/src/state.ts +199 -0
  83. package/src/svg.ts +441 -0
  84. package/src/sync.ts +36 -0
  85. package/src/types.ts +110 -0
  86. package/src/util.ts +105 -0
  87. 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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { State } from './state.js';
2
+ export declare function render(state: State, autoPieceEl: HTMLElement): void;
3
+ export declare function renderResized(state: State): void;
@@ -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"}
@@ -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":"AACA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChG,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtD,MAAM,UAAU,gBAAgB,CAC9B,CAAgB,EAChB,GAAG,IAAmB;IAEtB,IAAI,CAAC;QAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAoB;IACpD,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAChD,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,KAAoB;IACxC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChB,YAAY,CAAC,KAAK,CAAC,CAAC;IACpB,YAAY,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAoB,EAAE,MAAqB;IACnE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QAClC,IAAI,KAAK;YAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;;YACnC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAoB,EAAE,KAAyB;IACtE,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;IACxB,IAAI,KAAK,KAAK,IAAI;QAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;IAC5C,IAAI,KAAK;QACP,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;gBAC3C,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,KAAoB,EAAE,IAAY,EAAE,IAAY,EAAE,IAA2B;IAC/F,YAAY,CAAC,KAAK,CAAC,CAAC;IACpB,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACxC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAoB;IAC/C,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC7B,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;QACrC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAoB,EAAE,IAAa,EAAE,GAAW;IAClE,YAAY,CAAC,KAAK,CAAC,CAAC;IACpB,KAAK,CAAC,YAAY,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAC3C,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAoB;IAC/C,MAAM,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC;IAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QACf,EAAE,CAAC,OAAO,GAAG,SAAS,CAAC;QACvB,gBAAgB,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAoB,EAAE,IAAY,EAAE,IAAY;IACrE,IAAI,CAAC,KAAK,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAEpC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAEhD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACjD,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAE7E,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE1B,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACjD,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACjD,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAoB,EAAE,IAAY,EAAE,IAAY;IACvE,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EACtC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,QAAQ,GAAG,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,IAAI,IAAI,KAAK,KAAK,CAAC,QAAQ;QAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7C,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1D,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;IACxB,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,OAAO,QAAQ,IAAI,IAAI,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAoB,EAAE,KAAe,EAAE,GAAW,EAAE,KAAe;IAC9F,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,KAAK;YAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;;YAC/B,OAAO,KAAK,CAAC;IACpB,CAAC;IACD,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACxD,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,KAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;IACxB,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAChC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,KAAoB,EAAE,IAAY,EAAE,IAAY;IACpE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3C,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;QAChC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5C,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAoB,EAAE,IAAY,EAAE,IAAY;IACvE,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACnC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChB,MAAM,QAAQ,GAAoB;gBAChC,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO;gBAC5B,QAAQ;aACT,CAAC;YACF,IAAI,MAAM,KAAK,IAAI;gBAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC;YAChD,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;SAAM,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACzC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;YAC5B,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO;SAC7B,CAAC,CAAC;QACH,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAoB,EAAE,IAAY,EAAE,IAAY,EAAE,KAAe;IAC5F,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACnD,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACxC,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE;YACrE,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,KAAK,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAClD,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAoB,EAAE,GAAW,EAAE,KAAe;IAC7E,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,IAAI,KAAK,CAAC,QAAQ,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACvD,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;aAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;YACzE,IAAI,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;gBACzC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;gBAC5B,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;IACD,IACE,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC;QACrD,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EACnD,CAAC;QACD,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAoB,EAAE,GAAW;IAC3D,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC;IACrB,IAAI,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;QAC7B,6DAA6D;QAC7D,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAClC,KAAK,CAAC,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;;QAAM,KAAK,CAAC,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,SAAS,CAAC,KAAoB,EAAE,IAAY;IACnD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CACL,CAAC,CAAC,KAAK;QACP,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,MAAM;YAC7B,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAC5E,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAoB,EAAE,IAAY,EAAE,IAAY,EAAW,EAAE;;IACnF,OAAA,IAAI,KAAK,IAAI;QACb,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC;QACtB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA,MAAA,MAAA,KAAK,CAAC,OAAO,CAAC,KAAK,0CAAE,GAAG,CAAC,IAAI,CAAC,0CAAE,QAAQ,CAAC,IAAI,CAAC,CAAA,CAAC,CAAA;CAAA,CAAC;AAE3E,SAAS,OAAO,CAAC,KAAoB,EAAE,IAAY,EAAE,IAAY;IAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CACL,CAAC,CAAC,KAAK;QACP,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,MAAM;YAC7B,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAC5E,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAoB,EAAE,IAAY;IACtD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CACL,CAAC,CAAC,KAAK;QACP,KAAK,CAAC,UAAU,CAAC,OAAO;QACxB,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;QACnC,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,KAAK,CAChC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAoB,EAAE,IAAY,EAAE,IAAY;;IAClE,MAAM,aAAa,GACjB,MAAA,MAAA,KAAK,CAAC,UAAU,CAAC,WAAW,0CAAE,GAAG,CAAC,IAAI,CAAC,mCAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAClG,OAAO,IAAI,KAAK,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,UAAU,CAAC,KAAoB,EAAE,IAAY,EAAE,IAAY;IAClE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,CACL,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACvD,KAAK,CAAC,YAAY,CAAC,OAAO;QAC1B,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QAC/D,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;QACnC,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,KAAK,CAChC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAoB,EAAE,IAAY;IAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CACL,CAAC,CAAC,KAAK;QACP,KAAK,CAAC,SAAS,CAAC,OAAO;QACvB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,MAAM;YAC7B,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAC1G,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAoB;IAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;IACtC,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAClB,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,QAAQ,GAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACpD,IAAI,MAAM,KAAK,IAAI;gBAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC;YAChD,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YACnE,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IACD,YAAY,CAAC,KAAK,CAAC,CAAC;IACpB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAoB,EAAE,QAAoC;IACpF,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC;IACxC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;SACf,CAAC;QACd,IAAI,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACzC,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;gBACxE,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IACD,YAAY,CAAC,KAAK,CAAC,CAAC;IACpB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAoB;IAC7C,YAAY,CAAC,KAAK,CAAC,CAAC;IACpB,YAAY,CAAC,KAAK,CAAC,CAAC;IACpB,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,KAAoB;IACvC,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;IAChF,UAAU,CAAC,KAAK,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,GAAkB,EAClB,OAAgB,EAChB,MAAuB;IAEvB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACnE,IAAI,CAAC,OAAO;QAAE,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;IAC9B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACvE,IAAI,CAAC,OAAO;QAAE,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;IAC9B,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,GAAkB,EAClB,OAAgB,EAChB,MAAuB;IAEvB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAChC,IAAI,CAAC,EAAE,CACL,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CACtG,CAAC;IACF,MAAM,gBAAgB,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACvG,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/E,MAAM,CAAC,EAAE,gBAAgB,CAAC,GAAG,kBAAkB,CAAC,MAAM,CACpD,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAC5C,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAC3B,CAAC;IACF,OAAO,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAgB,EAAW,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Api } from './api.js';
2
+ import { Config } from './config.js';
3
+ export declare function initModule({ el, config }: {
4
+ el: HTMLElement;
5
+ config?: Config;
6
+ }): Api;
7
+ export declare function Chessground(element: HTMLElement, config?: Config): Api;
@@ -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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"}