@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/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
+ }