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.
- package/examples/destroy-many-boards.html +12 -5
- package/examples/extensions/persistence-extension.html +27 -0
- package/examples/styles/examples.css +0 -2
- package/examples/styles/examples.css.map +1 -1
- package/examples/styles/examples.scss +0 -4
- package/package.json +1 -1
- package/src/extensions/persistence/Persistence.js +31 -0
|
@@ -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
|
|
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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
chess.
|
|
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>
|
|
@@ -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,
|
|
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
|
}
|
package/package.json
CHANGED
|
@@ -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
|
+
}
|