cm-chessboard 5.2.7 → 5.3.0
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/extensions/chessboard-promotion-extension.html +35 -0
- package/examples/styles/examples.css +3 -0
- package/examples/styles/examples.css.map +1 -1
- package/examples/styles/examples.scss +4 -0
- package/package.json +2 -1
- package/src/cm-chessboard/extensions/promotion/Promotion.js +22 -0
- package/src/cm-chessboard/model/ChessboardState.js +4 -6
- package/src/cm-chessboard/view/ChessboardView.js +1 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport"
|
|
6
|
+
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
|
7
|
+
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
8
|
+
<link rel="stylesheet" href="../styles/examples.css"/>
|
|
9
|
+
<link rel="stylesheet" href="../../assets/styles/cm-chessboard.css">
|
|
10
|
+
<title>cm-chessboard promotion extension</title>
|
|
11
|
+
</head>
|
|
12
|
+
<body>
|
|
13
|
+
<h1>Example of the cm-chessboard Promotion extension</h1>
|
|
14
|
+
<p>Try to move the pawn to the c8</p>
|
|
15
|
+
<div id="chessboard" class="board-max-width">
|
|
16
|
+
</div>
|
|
17
|
+
<script type="module">
|
|
18
|
+
import {Chessboard} from "../../src/cm-chessboard/Chessboard.js"
|
|
19
|
+
import {Promotion} from "../../src/cm-chessboard/extensions/promotion/Promotion.js"
|
|
20
|
+
|
|
21
|
+
const chessboard = new Chessboard(document.getElementById("chessboard"), {
|
|
22
|
+
position: "4k3/2P5/8/8/8/8/3Q1Q2/4K2R w K - 0 1",
|
|
23
|
+
sprite: {
|
|
24
|
+
url: "../../assets/images/chessboard-sprite.svg", // pieces and markers are stored in a sprite file
|
|
25
|
+
},
|
|
26
|
+
extensions: [
|
|
27
|
+
{class: Promotion, props: {}}
|
|
28
|
+
]
|
|
29
|
+
})
|
|
30
|
+
chessboard.enableMoveInput((move) => {
|
|
31
|
+
return true
|
|
32
|
+
})
|
|
33
|
+
</script>
|
|
34
|
+
</body>
|
|
35
|
+
</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,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,GACpB;;AAED,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"
|
|
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,GACpB;;AAED,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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cm-chessboard",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.3.0",
|
|
4
4
|
"description": "A JavaScript chessboard which is lightweight, ES6 module based, responsive, SVG rendered and without dependencies.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"chess",
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"widget"
|
|
14
14
|
],
|
|
15
15
|
"type": "module",
|
|
16
|
+
"module": "./src/cm-chessboard/Chessboard.js",
|
|
16
17
|
"browser": "./src/cm-chessboard/Chessboard.js",
|
|
17
18
|
"scripts": {
|
|
18
19
|
"test": "tput setaf 4;echo 'Run test/index.html in your browser for unit testing.'; echo ''; exit 0"
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
import {INPUT_EVENT_TYPE} from "../../Chessboard.js"
|
|
8
|
+
|
|
9
|
+
export class Promotion extends Extension {
|
|
10
|
+
|
|
11
|
+
constructor(chessboard, props) {
|
|
12
|
+
super(chessboard, props)
|
|
13
|
+
this.registerExtensionPoint(EXTENSION_POINT.moveInput, this.onMoveInput)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
onMoveInput(event) {
|
|
17
|
+
if(event.type === INPUT_EVENT_TYPE.validateMoveInput) {
|
|
18
|
+
console.log("976000", event)
|
|
19
|
+
return false // todo show flashing marker and return move
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -38,7 +38,7 @@ export class ChessboardState {
|
|
|
38
38
|
const position = this._position.clone()
|
|
39
39
|
position.animated = animated
|
|
40
40
|
const piece = position.getPiece(fromSquare)
|
|
41
|
-
if(!piece) {
|
|
41
|
+
if (!piece) {
|
|
42
42
|
console.error("no piece on", fromSquare)
|
|
43
43
|
}
|
|
44
44
|
position.setPiece(fromSquare, undefined)
|
|
@@ -80,13 +80,11 @@ export class ChessboardState {
|
|
|
80
80
|
|
|
81
81
|
invokeExtensionPoints(name, data = {}) {
|
|
82
82
|
const extensionPoints = this.extensionPoints[name]
|
|
83
|
-
const dataCloned = Object.assign({}, data)
|
|
83
|
+
const dataCloned = Object.assign({}, data)
|
|
84
84
|
dataCloned.extensionPoint = name
|
|
85
|
-
if(extensionPoints) {
|
|
85
|
+
if (extensionPoints) {
|
|
86
86
|
for (const extensionPoint of extensionPoints) {
|
|
87
|
-
|
|
88
|
-
extensionPoint(dataCloned)
|
|
89
|
-
})
|
|
87
|
+
extensionPoint(dataCloned)
|
|
90
88
|
}
|
|
91
89
|
}
|
|
92
90
|
}
|
|
@@ -412,7 +412,7 @@ export class ChessboardView {
|
|
|
412
412
|
squareFrom: squareFrom,
|
|
413
413
|
squareTo: squareTo
|
|
414
414
|
}
|
|
415
|
-
this.chessboard.state.invokeExtensionPoints(EXTENSION_POINT.moveInput, data) // TODO use the return value of this EP
|
|
415
|
+
const result = this.chessboard.state.invokeExtensionPoints(EXTENSION_POINT.moveInput, data) // TODO use the return value of this EP
|
|
416
416
|
if (this.moveInputCallback) {
|
|
417
417
|
return this.moveInputCallback(data)
|
|
418
418
|
} else {
|