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.
@@ -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>
@@ -71,4 +71,7 @@ input[type=text] {
71
71
  li {
72
72
  padding: 0.05rem; }
73
73
 
74
+ .board-max-width {
75
+ max-width: 640px; }
76
+
74
77
  /*# sourceMappingURL=examples.css.map */
@@ -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
  }
@@ -99,3 +99,7 @@ li {
99
99
  padding: 0.05rem;
100
100
 
101
101
  }
102
+
103
+ .board-max-width {
104
+ max-width: 640px;
105
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cm-chessboard",
3
- "version": "5.2.7",
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
- setTimeout(() => {
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 {