@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/src/wrap.ts
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { HeadlessState } from './state.js';
|
|
2
|
+
import { setVisible, createEl } from './util.js';
|
|
3
|
+
import { colors, files, ranks, Elements } from './types.js';
|
|
4
|
+
import { createElement as createSVG, setAttributes, createDefs } from './svg.js';
|
|
5
|
+
|
|
6
|
+
export function renderWrap(element: HTMLElement, s: HeadlessState): Elements {
|
|
7
|
+
// .cg-wrap (element passed to Chessground)
|
|
8
|
+
// cg-container
|
|
9
|
+
// cg-board
|
|
10
|
+
// svg.cg-shapes
|
|
11
|
+
// defs
|
|
12
|
+
// g
|
|
13
|
+
// svg.cg-custom-svgs
|
|
14
|
+
// g
|
|
15
|
+
// cg-auto-pieces
|
|
16
|
+
// coords.ranks
|
|
17
|
+
// coords.files
|
|
18
|
+
// piece.ghost
|
|
19
|
+
|
|
20
|
+
element.innerHTML = '';
|
|
21
|
+
|
|
22
|
+
// ensure the cg-wrap class is set
|
|
23
|
+
// so bounds calculation can use the CSS width/height values
|
|
24
|
+
// add that class yourself to the element before calling chessground
|
|
25
|
+
// for a slight performance improvement! (avoids recomputing style)
|
|
26
|
+
element.classList.add('cg-wrap');
|
|
27
|
+
|
|
28
|
+
for (const c of colors) element.classList.toggle('orientation-' + c, s.orientation === c);
|
|
29
|
+
element.classList.toggle('manipulable', !s.viewOnly);
|
|
30
|
+
|
|
31
|
+
const container = createEl('cg-container');
|
|
32
|
+
element.appendChild(container);
|
|
33
|
+
|
|
34
|
+
const board = createEl('cg-board');
|
|
35
|
+
container.appendChild(board);
|
|
36
|
+
|
|
37
|
+
let svg: SVGElement | undefined;
|
|
38
|
+
let customSvg: SVGElement | undefined;
|
|
39
|
+
let autoPieces: HTMLElement | undefined;
|
|
40
|
+
|
|
41
|
+
if (s.drawable.visible) {
|
|
42
|
+
svg = setAttributes(createSVG('svg'), {
|
|
43
|
+
class: 'cg-shapes',
|
|
44
|
+
viewBox: '-4 -4 8 8',
|
|
45
|
+
preserveAspectRatio: 'xMidYMid slice',
|
|
46
|
+
});
|
|
47
|
+
svg.appendChild(createDefs());
|
|
48
|
+
svg.appendChild(createSVG('g'));
|
|
49
|
+
|
|
50
|
+
customSvg = setAttributes(createSVG('svg'), {
|
|
51
|
+
class: 'cg-custom-svgs',
|
|
52
|
+
viewBox: '-3.5 -3.5 8 8',
|
|
53
|
+
preserveAspectRatio: 'xMidYMid slice',
|
|
54
|
+
});
|
|
55
|
+
customSvg.appendChild(createSVG('g'));
|
|
56
|
+
|
|
57
|
+
autoPieces = createEl('cg-auto-pieces');
|
|
58
|
+
|
|
59
|
+
container.appendChild(svg);
|
|
60
|
+
container.appendChild(customSvg);
|
|
61
|
+
container.appendChild(autoPieces);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (s.coordinates) {
|
|
65
|
+
const orientClass = s.orientation === 'black' ? ' black' : '';
|
|
66
|
+
const ranksPositionClass = s.ranksPosition === 'left' ? ' left' : '';
|
|
67
|
+
|
|
68
|
+
if (s.coordinatesOnSquares) {
|
|
69
|
+
const rankN: (i: number) => number = s.orientation === 'white' ? i => i + 1 : i => 8 - i;
|
|
70
|
+
files.forEach((f, i) =>
|
|
71
|
+
container.appendChild(
|
|
72
|
+
renderCoords(
|
|
73
|
+
ranks.map(r => f + r),
|
|
74
|
+
'squares rank' + rankN(i) + orientClass + ranksPositionClass,
|
|
75
|
+
),
|
|
76
|
+
),
|
|
77
|
+
);
|
|
78
|
+
} else {
|
|
79
|
+
container.appendChild(renderCoords(ranks, 'ranks' + orientClass + ranksPositionClass));
|
|
80
|
+
container.appendChild(renderCoords(files, 'files' + orientClass));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
let ghost: HTMLElement | undefined;
|
|
85
|
+
if (s.draggable.enabled && s.draggable.showGhost) {
|
|
86
|
+
ghost = createEl('piece', 'ghost');
|
|
87
|
+
setVisible(ghost, false);
|
|
88
|
+
container.appendChild(ghost);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return {
|
|
92
|
+
board,
|
|
93
|
+
container,
|
|
94
|
+
wrap: element,
|
|
95
|
+
ghost,
|
|
96
|
+
svg,
|
|
97
|
+
customSvg,
|
|
98
|
+
autoPieces,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function renderCoords(elems: readonly string[], className: string): HTMLElement {
|
|
103
|
+
const el = createEl('coords', className);
|
|
104
|
+
let f: HTMLElement;
|
|
105
|
+
for (const elem of elems) {
|
|
106
|
+
f = createEl('coord');
|
|
107
|
+
f.textContent = elem;
|
|
108
|
+
el.appendChild(f);
|
|
109
|
+
}
|
|
110
|
+
return el;
|
|
111
|
+
}
|