cm-chessboard 7.7.7 → 7.7.8

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.
@@ -26,7 +26,7 @@
26
26
  </head>
27
27
  <body>
28
28
  <h1><a href="../">cm-chessboard</a></h1>
29
- <h2>Stress Test: Create and destroy 5,000 responsive boards</h2>
29
+ <h2>Stress Test: Create and destroy 5,000 boards // <span id="counter"></span></h2>
30
30
  <div id="boards"></div>
31
31
  <script type="module">
32
32
  import {Chessboard} from "../src/Chessboard.js"
@@ -43,8 +43,11 @@
43
43
  style: {pieces: {file: "pieces/staunty.svg"}}
44
44
  })
45
45
  const chess = new Chess()
46
+ let count = 0;
46
47
  for (let i = 0; i < 5000; i++) {
47
48
  setTimeout(() => {
49
+ count++
50
+ document.getElementById("counter").innerText = "" + count
48
51
  const boardDiv = document.createElement("div")
49
52
  boardDiv.setAttribute("class", "board")
50
53
  boardsDiv.appendChild(boardDiv)
@@ -61,11 +64,15 @@
61
64
  }, 10000)
62
65
  }, i * 100)
63
66
  }
67
+
64
68
  function makeRandomMove() {
65
- const possibleMoves = chess.moves();
66
- if (possibleMoves.length === 0) return;
67
- const randomIndex = Math.floor(Math.random() * possibleMoves.length);
68
- chess.move(possibleMoves[randomIndex]);
69
+ if(chess.game_over()) {
70
+ chess.reset()
71
+ }
72
+ const possibleMoves = chess.moves()
73
+ if (possibleMoves.length === 0) return
74
+ const randomIndex = Math.floor(Math.random() * possibleMoves.length)
75
+ chess.move(possibleMoves[randomIndex])
69
76
  }
70
77
 
71
78
  </script>
@@ -0,0 +1,27 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>cm-chessboard</title>
6
+ <meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0"/>
7
+ <link rel="stylesheet" href="../styles/examples.css"/>
8
+ <link rel="stylesheet" href="../../assets/chessboard.css"/>
9
+ <link rel="stylesheet" href="../../assets/extensions/markers/markers.css"/>
10
+ </head>
11
+ <body>
12
+ <h1><a href="../../">cm-chessboard</a></h1>
13
+ <h2>Example: Persistence Extension</h2>
14
+ <p>This extension stores the board position in localStorage and automatically loads the board on creation.</p>
15
+ <div class="board" id="board"></div>
16
+ <script type="module">
17
+ import {Chessboard, FEN} from "../../src/Chessboard.js"
18
+ import {Persistence} from "../../src/extensions/persistence/Persistence.js"
19
+
20
+ const board = new Chessboard(document.getElementById("board"), {
21
+ assetsUrl: "../../assets/",
22
+ extensions: [{class: Persistence, props: {initialPosition: FEN.start}}]
23
+ })
24
+ board.enableMoveInput(() => true)
25
+ </script>
26
+ </body>
27
+ </html>
@@ -6,8 +6,6 @@ body {
6
6
  font-family: "Helvetica Neue", sans-serif;
7
7
  line-height: 1.3;
8
8
  font-size: 18px; }
9
- body * {
10
- font-size: 18px; }
11
9
 
12
10
  a {
13
11
  color: #516CD4; }
@@ -5,5 +5,5 @@
5
5
  "examples.scss"
6
6
  ],
7
7
  "names": [],
8
- "mappings": "AASA,AAAA,IAAI,CAAC;EACH,KAAK,EAPG,IAAI;EAQZ,gBAAgB,EATL,IAAI;EAUf,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,CAAC;EACT,WAAW,EAAE,4BAA4B;EACzC,WAAW,EAAE,GAAG;EAChB,SAAS,EATC,IAAI,GAcf;EAZD,AASE,IATE,CASF,CAAC,CAAC;IACA,SAAS,EAZD,IAAI,GAab;;AAGH,AAAA,CAAC,CAAC;EACA,KAAK,EAxBA,OAAO,GAiCb;EAVD,AAGE,CAHD,CAGG,OAAO,CAAC;IACR,KAAK,EAAE,OAAO,GACf;EALH,AAOE,CAPD,CAOG,KAAK,CAAC;IACN,KAAK,EA9BI,OAAO,GA+BjB;;AAGH,AAAA,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;EACP,UAAU,EAAE,CAAC;EACb,SAAS,EAAE,MAAgB;EAC3B,KAAK,EAlCE,OAAO,GAmCf;;AAED,AAAA,EAAE,CAAC;EACD,aAAa,EAAE,IAAI,GACpB;;AAED,AAAA,EAAE,CAAC;EACD,aAAa,EAAE,IAAI;EACnB,SAAS,EAAE,MAAgB;EAC3B,KAAK,EA5CE,OAAO,GA6Cf;;AAED,AAAA,GAAG,CAAC;EACF,WAAW,EAAE,wBAAwB;EACrC,SAAS,EAAE,GAAG;EACd,gBAAgB,EAjDA,IAAI;EAkDpB,KAAK,EAjDA,IAAI;EAkDT,OAAO,EAAE,GAAG;EACZ,QAAQ,EAAE,IAAI,GACf;;AAED,AAAA,GAAG,AAAA,MAAM,CAAC;EACR,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,KAAK;EAChB,KAAK,EAAE,kBAAkB;EACzB,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,IAAI,GAOpB;EAZD,AAME,GANC,AAAA,MAAM,AAMN,YAAY,CAAC;IACZ,SAAS,EAAE,KAAK,GACjB;EARH,AASE,GATC,AAAA,MAAM,AASN,YAAY,CAAC;IACZ,SAAS,EAAE,KAAK,GACjB;;AAGH,AAAA,SAAS,EAAE,KAAK,CAAC;EACf,OAAO,EAAE,EAAE;EACX,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,KAAK,GACf;;AAED,AAAA,MAAM,CAAC;EACL,OAAO,EAAE,QAAQ;EACjB,SAAS,EAAE,GAAG;EACd,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,IAAI;EACnB,gBAAgB,EAAE,IAAI;EACtB,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,GAAG;EAClB,MAAM,EAAE,OAAO,GAKhB;EAdD,AAWE,MAXI,CAWF,KAAK,CAAC;IACN,gBAAgB,EAAE,IAAI,GACvB;;AAGH,AAAA,KAAK,CAAA,AAAA,IAAC,CAAD,IAAC,AAAA,EAAW;EACf,SAAS,EAAE,GAAG;EACd,OAAO,EAAE,GAAG;EACZ,aAAa,EAAE,GAAG;EAClB,MAAM,EAAE,IAAI,GACb;;AAED,AAAA,EAAE,CAAC;EACD,OAAO,EAAE,OAAO,GAEjB;;AAED,AAAA,gBAAgB,CAAC;EACf,SAAS,EAAE,KAAK,GACjB"
8
+ "mappings": "AASA,AAAA,IAAI,CAAC;EACH,KAAK,EAPG,IAAI;EAQZ,gBAAgB,EATL,IAAI;EAUf,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,CAAC;EACT,WAAW,EAAE,4BAA4B;EACzC,WAAW,EAAE,GAAG;EAChB,SAAS,EATC,IAAI,GAUf;;AAED,AAAA,CAAC,CAAC;EACA,KAAK,EApBA,OAAO,GA6Bb;EAVD,AAGE,CAHD,CAGG,OAAO,CAAC;IACR,KAAK,EAAE,OAAO,GACf;EALH,AAOE,CAPD,CAOG,KAAK,CAAC;IACN,KAAK,EA1BI,OAAO,GA2BjB;;AAGH,AAAA,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;EACP,UAAU,EAAE,CAAC;EACb,SAAS,EAAE,MAAgB;EAC3B,KAAK,EA9BE,OAAO,GA+Bf;;AAED,AAAA,EAAE,CAAC;EACD,aAAa,EAAE,IAAI,GACpB;;AAED,AAAA,EAAE,CAAC;EACD,aAAa,EAAE,IAAI;EACnB,SAAS,EAAE,MAAgB;EAC3B,KAAK,EAxCE,OAAO,GAyCf;;AAED,AAAA,GAAG,CAAC;EACF,WAAW,EAAE,wBAAwB;EACrC,SAAS,EAAE,GAAG;EACd,gBAAgB,EA7CA,IAAI;EA8CpB,KAAK,EA7CA,IAAI;EA8CT,OAAO,EAAE,GAAG;EACZ,QAAQ,EAAE,IAAI,GACf;;AAED,AAAA,GAAG,AAAA,MAAM,CAAC;EACR,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,KAAK;EAChB,KAAK,EAAE,kBAAkB;EACzB,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,IAAI,GAOpB;EAZD,AAME,GANC,AAAA,MAAM,AAMN,YAAY,CAAC;IACZ,SAAS,EAAE,KAAK,GACjB;EARH,AASE,GATC,AAAA,MAAM,AASN,YAAY,CAAC;IACZ,SAAS,EAAE,KAAK,GACjB;;AAGH,AAAA,SAAS,EAAE,KAAK,CAAC;EACf,OAAO,EAAE,EAAE;EACX,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,KAAK,GACf;;AAED,AAAA,MAAM,CAAC;EACL,OAAO,EAAE,QAAQ;EACjB,SAAS,EAAE,GAAG;EACd,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,IAAI;EACnB,gBAAgB,EAAE,IAAI;EACtB,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,GAAG;EAClB,MAAM,EAAE,OAAO,GAKhB;EAdD,AAWE,MAXI,CAWF,KAAK,CAAC;IACN,gBAAgB,EAAE,IAAI,GACvB;;AAGH,AAAA,KAAK,CAAA,AAAA,IAAC,CAAD,IAAC,AAAA,EAAW;EACf,SAAS,EAAE,GAAG;EACd,OAAO,EAAE,GAAG;EACZ,aAAa,EAAE,GAAG;EAClB,MAAM,EAAE,IAAI,GACb;;AAED,AAAA,EAAE,CAAC;EACD,OAAO,EAAE,OAAO,GAEjB;;AAED,AAAA,gBAAgB,CAAC;EACf,SAAS,EAAE,KAAK,GACjB"
9
9
  }
@@ -15,10 +15,6 @@ body {
15
15
  font-family: "Helvetica Neue", sans-serif;
16
16
  line-height: 1.3;
17
17
  font-size: $font-size;
18
-
19
- * {
20
- font-size: $font-size;
21
- }
22
18
  }
23
19
 
24
20
  a {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cm-chessboard",
3
- "version": "7.7.7",
3
+ "version": "7.7.8",
4
4
  "description": "A JavaScript chessboard which is lightweight, ES6 module based, responsive, SVG rendered and without dependencies.",
5
5
  "keywords": [
6
6
  "chess",
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Author and copyright: Stefan Haack (https://shaack.com)
3
+ * Repository: https://github.com/shaack/cm-chessboard
4
+ * License: MIT, see file 'LICENSE'
5
+ */
6
+ import {Extension, EXTENSION_POINT} from "../../model/Extension.js";
7
+
8
+ export class Persistence extends Extension {
9
+ constructor(chessboard, props) {
10
+ super(chessboard)
11
+ console.warn("The Persistence extension is work in progress, don't use it in production.")
12
+ this.props = props
13
+ this.registerExtensionPoint(EXTENSION_POINT.positionChanged, this.savePosition.bind(this))
14
+ chessboard.initialized.then(() => {
15
+ this.loadPosition()
16
+ })
17
+ }
18
+
19
+ savePosition() {
20
+ localStorage.setItem("chessboard", JSON.stringify(this.chessboard.getPosition()))
21
+ }
22
+
23
+ loadPosition() {
24
+ const position = localStorage.getItem("chessboard")
25
+ if (position) {
26
+ this.chessboard.setPosition(JSON.parse(position))
27
+ } else {
28
+ this.chessboard.setPosition(this.props.initialPosition)
29
+ }
30
+ }
31
+ }