cm-chessboard 5.0.2 → 5.1.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/README.md CHANGED
@@ -132,7 +132,9 @@ Sets the position as `fen`. Special values are "start", sets the chess start pos
132
132
 
133
133
  Returns the board position as `fen`.
134
134
 
135
- ### addMarker(square, type)
135
+ ### addMarker(type, square)
136
+
137
+ > signature changed with V5.1 from (square, type) to (type, square)
136
138
 
137
139
  Adds a marker on a square.
138
140
 
@@ -149,19 +151,23 @@ below.
149
151
  [Example for **addMarker**, **getMarkers** and
150
152
  **removeMarkers**](https://shaack.com/projekte/cm-chessboard/examples/context-input.html)
151
153
 
152
- ### getMarkers(square = undefined, type = undefined)
154
+ ### getMarkers(type = undefined, square = undefined)
155
+
156
+ > signature changed with V5.1 from (square, type) to (type, square)
153
157
 
154
158
  Returns the board's markers as an array.
155
159
 
156
- Set square to `undefined`, to get all markers of a type on the board. Set type to `undefined`, to get all types.
157
- Set `both` to undefined to get all markers on the board.
160
+ Only set type, to get all markers of a type on the board. Set type to `undefined`, to get markers of all types on a square.
161
+ Set `both` to `undefined` to get all markers on the board.
162
+
163
+ ### removeMarkers(type = undefined, square = undefined)
158
164
 
159
- ### removeMarkers(square = undefined, type = undefined)
165
+ > signature changed with V5.1 from (square, type) to (type, square)
160
166
 
161
167
  Removes markers from the board.
162
168
 
163
- Set `square` to `undefined` to remove markers of `type` from all squares. Set `type` to `undefined`, to remove all types
164
- from a square. Set both to `undefined` to remove all markers from the board.
169
+ Only set `type` to remove all markers of `type` from the board. Set `type` to `undefined`, to remove all types
170
+ of markers from a square. Call without parameters to remove all markers from the board.
165
171
 
166
172
  ### setOrientation(color)
167
173
 
@@ -31,10 +31,10 @@ const chessboard = new Chessboard(document.getElementById("board"), {
31
31
 
32
32
  }]
33
33
  })
34
- chessboard.addArrow("f3", "d5", ARROW_TYPE.default);
35
- chessboard.addArrow("b8", "c6", ARROW_TYPE.default);
36
- chessboard.addArrow("d2", "d3", ARROW_TYPE.pointy);
37
- chessboard.addArrow("g5", "e6", ARROW_TYPE.danger);
34
+ chessboard.addArrow(ARROW_TYPE.default, "f3", "d5");
35
+ chessboard.addArrow(ARROW_TYPE.default, "b8", "c6");
36
+ chessboard.addArrow(ARROW_TYPE.pointy, "d2", "d3");
37
+ chessboard.addArrow(ARROW_TYPE.danger, "g5", "e6");
38
38
  </pre>
39
39
 
40
40
  <script type="module">
@@ -55,10 +55,10 @@ chessboard.addArrow("g5", "e6", ARROW_TYPE.danger);
55
55
 
56
56
  }]
57
57
  })
58
- chessboard.addArrow("f3", "d5", ARROW_TYPE.default);
59
- chessboard.addArrow("b8", "c6", ARROW_TYPE.default);
60
- chessboard.addArrow("d2", "d3", ARROW_TYPE.pointy);
61
- chessboard.addArrow("g5", "e6", ARROW_TYPE.danger);
58
+ chessboard.addArrow(ARROW_TYPE.default, "f3", "d5");
59
+ chessboard.addArrow(ARROW_TYPE.default, "b8", "c6");
60
+ chessboard.addArrow(ARROW_TYPE.pointy, "d2", "d3");
61
+ chessboard.addArrow(ARROW_TYPE.danger, "g5", "e6");
62
62
  </script>
63
63
  </body>
64
64
  </html>
@@ -22,11 +22,11 @@
22
22
  } else {
23
23
  markerType = MARKER_TYPE.circle
24
24
  }
25
- const markersOnSquare = board1.getMarkers(event.square, markerType)
25
+ const markersOnSquare = board1.getMarkers(markerType, event.square)
26
26
  if (markersOnSquare.length > 0) {
27
- board1.removeMarkers(event.square, markerType)
27
+ board1.removeMarkers(markerType, event.square)
28
28
  } else {
29
- board1.addMarker(event.square, markerType)
29
+ board1.addMarker(markerType, event.square)
30
30
  }
31
31
  })
32
32
  </pre>
@@ -45,11 +45,11 @@
45
45
  } else {
46
46
  markerType = MARKER_TYPE.circle
47
47
  }
48
- const markersOnSquare = board1.getMarkers(event.square, markerType)
48
+ const markersOnSquare = board1.getMarkers(markerType, event.square)
49
49
  if (markersOnSquare.length > 0) {
50
- board1.removeMarkers(event.square, markerType)
50
+ board1.removeMarkers(markerType, event.square)
51
51
  } else {
52
- board1.addMarker(event.square, markerType)
52
+ board1.addMarker(markerType, event.square)
53
53
  }
54
54
  })
55
55
 
@@ -65,11 +65,11 @@
65
65
  const marker = {class: "markerCircleRed", slice: "markerCircle"}
66
66
  board2.enableSquareSelect((event) => {
67
67
  if(event.type === SQUARE_SELECT_TYPE.secondary) {
68
- const markersOnSquare = board2.getMarkers(event.square, marker)
68
+ const markersOnSquare = board2.getMarkers(marker, event.square)
69
69
  if (markersOnSquare.length > 0) {
70
- board2.removeMarkers(event.square, marker)
70
+ board2.removeMarkers(marker, event.square)
71
71
  } else {
72
- board2.addMarker(event.square, marker)
72
+ board2.addMarker(marker, event.square)
73
73
  }
74
74
  }
75
75
  })
@@ -33,13 +33,13 @@ const chess = new Chess()
33
33
 
34
34
  function inputHandler(event) {
35
35
  console.log("event", event)
36
- event.chessboard.removeMarkers(undefined, MARKER_TYPE.dot)
37
- event.chessboard.removeMarkers(undefined, MARKER_TYPE.square)
36
+ event.chessboard.removeMarkers(MARKER_TYPE.dot)
37
+ event.chessboard.removeMarkers(MARKER_TYPE.square)
38
38
  if (event.type === INPUT_EVENT_TYPE.moveStart) {
39
39
  const moves = chess.moves({square: event.square, verbose: true});
40
- event.chessboard.addMarker(event.square, MARKER_TYPE.square)
40
+ event.chessboard.addMarker(MARKER_TYPE.square, event.square)
41
41
  for (const move of moves) { // draw dots on possible moves
42
- event.chessboard.addMarker(move.to, MARKER_TYPE.dot)
42
+ event.chessboard.addMarker(MARKER_TYPE.dot, move.to)
43
43
  }
44
44
  return moves.length > 0
45
45
  } else if (event.type === INPUT_EVENT_TYPE.moveDone) {
@@ -81,11 +81,11 @@ board.enableMoveInput(inputHandler, COLOR.white)
81
81
 
82
82
  function inputHandler(event) {
83
83
  console.log("event", event)
84
- event.chessboard.removeMarkers(undefined, MARKER_TYPE.dot)
84
+ event.chessboard.removeMarkers(MARKER_TYPE.dot)
85
85
  if (event.type === INPUT_EVENT_TYPE.moveStart) {
86
86
  const moves = chess.moves({square: event.square, verbose: true});
87
87
  for (const move of moves) { // draw dots on possible squares
88
- event.chessboard.addMarker(move.to, MARKER_TYPE.dot)
88
+ event.chessboard.addMarker(MARKER_TYPE.dot, move.to)
89
89
  }
90
90
  return moves.length > 0
91
91
  } else if (event.type === INPUT_EVENT_TYPE.moveDone) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cm-chessboard",
3
- "version": "5.0.2",
3
+ "version": "5.1.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",
@@ -67,7 +67,7 @@ export class Chessboard {
67
67
  size: 40, // the sprite tiles size, defaults to 40x40px
68
68
  cache: true // cache the sprite
69
69
  },
70
- extensions: [ /* {class: ExtensionClass, props: { ... }} */ ] // add extensions here
70
+ extensions: [ /* {class: ExtensionClass, props: { ... }} */] // add extensions here
71
71
  }
72
72
  this.props = {}
73
73
  Object.assign(this.props, defaultProps)
@@ -149,15 +149,20 @@ export class Chessboard {
149
149
  return this.state.orientation
150
150
  }
151
151
 
152
- addMarker(square, type) {
153
- if (!type) {
154
- console.error("Error addMarker(), type is " + type)
152
+ addMarker(type, square) {
153
+ if (typeof type === "string" || typeof square === "object") { // todo remove 2022-12-01
154
+ console.error("changed the signature of `addMarker` to `(type, square)` with v5.1.x")
155
+ return
155
156
  }
156
157
  this.state.addMarker(square, type)
157
158
  this.view.drawMarkers()
158
159
  }
159
160
 
160
- getMarkers(square = undefined, type = undefined) {
161
+ getMarkers(type = undefined, square = undefined) {
162
+ if (typeof type === "string" || typeof square === "object") { // todo remove 2022-12-01
163
+ console.error("changed the signature of `getMarkers` to `(type, square)` with v5.1.x")
164
+ return
165
+ }
161
166
  const markersFound = []
162
167
  this.state.markers.forEach((marker) => {
163
168
  const markerSquare = marker.square
@@ -170,7 +175,11 @@ export class Chessboard {
170
175
  return markersFound
171
176
  }
172
177
 
173
- removeMarkers(square = undefined, type = undefined) {
178
+ removeMarkers(type = undefined, square = undefined) {
179
+ if (typeof type === "string" || typeof square === "object") { // todo remove 2022-12-01
180
+ console.error("changed the signature of `removeMarkers` to `(type, square)` with v5.1.x")
181
+ return
182
+ }
174
183
  this.state.removeMarkers(square, type)
175
184
  this.view.drawMarkers()
176
185
  }
@@ -97,12 +97,20 @@ export class Arrows extends Extension {
97
97
 
98
98
  }
99
99
 
100
- addArrow(from, to, type) {
100
+ addArrow(type, from, to) {
101
+ if (typeof type === "string" || typeof from === "object" || typeof to === "object") { // todo remove 2022-12-01
102
+ console.error("changed the signature of `addArrow` to `(type, from, to)` with v5.1.x")
103
+ return
104
+ }
101
105
  this.arrows.push(new Arrow(from, to, type))
102
106
  this.chessboard.view.redrawBoard()
103
107
  }
104
108
 
105
- getArrows(from = undefined, to = undefined, type = undefined) {
109
+ getArrows(type = undefined, from = undefined, to = undefined) {
110
+ if (typeof type === "string" || typeof from === "object" || typeof to === "object") { // todo remove 2022-12-01
111
+ console.error("changed the signature of `getArrows` to `(type, from, to)` with v5.1.x")
112
+ return
113
+ }
106
114
  let arrows = []
107
115
  this.arrows.forEach((arrow) => {
108
116
  if (arrow.matches(from, to, type)) {
@@ -112,7 +120,11 @@ export class Arrows extends Extension {
112
120
  return arrows
113
121
  }
114
122
 
115
- removeArrows(from = undefined, to = undefined, type = undefined) {
123
+ removeArrows(type = undefined, from = undefined, to = undefined) {
124
+ if (typeof type === "string" || typeof from === "object" || typeof to === "object") { // todo remove 2022-12-01
125
+ console.error("changed the signature of `removeArrows` to `(type, from, to)` with v5.1.x")
126
+ return
127
+ }
116
128
  this.arrows = this.arrows.filter((arrow) => !arrow.matches(from, to, type))
117
129
  this.chessboard.view.redrawBoard()
118
130
  }
@@ -132,6 +144,6 @@ class Arrow {
132
144
  if (to && to !== this.to) {
133
145
  return false
134
146
  }
135
- return !(type && type !== this.type);
147
+ return !(type && type !== this.type)
136
148
  }
137
149
  }
@@ -14,27 +14,27 @@ describe("TestMarkers", () => {
14
14
  sprite: {url: "../assets/images/chessboard-sprite.svg"},
15
15
  position: "empty"
16
16
  })
17
- chessboard.addMarker("e5", MARKER_TYPE.square)
18
- chessboard.addMarker("b6", MARKER_TYPE.frame)
19
- chessboard.addMarker("h6", MARKER_TYPE.frame)
20
- assert.equal(chessboard.getMarkers().length,3)
21
- const markersE5 = chessboard.getMarkers("e5")
17
+ chessboard.addMarker(MARKER_TYPE.square, "e5")
18
+ chessboard.addMarker(MARKER_TYPE.frame, "b6")
19
+ chessboard.addMarker(MARKER_TYPE.frame, "h6")
20
+ assert.equal(chessboard.getMarkers().length, 3)
21
+ const markersE5 = chessboard.getMarkers(undefined,"e5")
22
22
  assert.equal(markersE5.length, 1)
23
23
  assert.equal(markersE5[0].square, "e5")
24
24
  assert.equal(markersE5[0].type.slice, "markerSquare")
25
- assert.equal(chessboard.getMarkers(undefined, MARKER_TYPE.square).length, 1)
26
- assert.equal(chessboard.getMarkers("a4").length, 0)
27
- assert.equal(chessboard.getMarkers(undefined, MARKER_TYPE.frame).length, 2)
28
- assert.equal(chessboard.getMarkers("b6", MARKER_TYPE.frame).length, 1)
29
- assert.equal(chessboard.getMarkers("h6", MARKER_TYPE.frame).length, 1)
30
- chessboard.removeMarkers("h6")
31
- assert.equal(chessboard.getMarkers("h6", MARKER_TYPE.frame).length, 0)
32
- chessboard.addMarker("h6", MARKER_TYPE.frame)
33
- assert.equal(chessboard.getMarkers("h6", MARKER_TYPE.frame).length, 1)
34
- chessboard.removeMarkers("h6", MARKER_TYPE.square)
35
- assert.equal(chessboard.getMarkers("h6", MARKER_TYPE.frame).length, 1)
36
- chessboard.removeMarkers("h6", MARKER_TYPE.frame)
37
- assert.equal(chessboard.getMarkers("h6", MARKER_TYPE.frame).length, 0)
25
+ assert.equal(chessboard.getMarkers(MARKER_TYPE.square).length, 1)
26
+ assert.equal(chessboard.getMarkers(undefined, "a4").length, 0)
27
+ assert.equal(chessboard.getMarkers(MARKER_TYPE.frame).length, 2)
28
+ assert.equal(chessboard.getMarkers(MARKER_TYPE.frame, "b6").length, 1)
29
+ assert.equal(chessboard.getMarkers(MARKER_TYPE.frame, "h6").length, 1)
30
+ chessboard.removeMarkers(undefined, "h6")
31
+ assert.equal(chessboard.getMarkers(MARKER_TYPE.frame, "h6").length, 0)
32
+ chessboard.addMarker(MARKER_TYPE.frame, "h6")
33
+ assert.equal(chessboard.getMarkers(MARKER_TYPE.frame, "h6").length, 1)
34
+ chessboard.removeMarkers(MARKER_TYPE.square, "h6")
35
+ assert.equal(chessboard.getMarkers(MARKER_TYPE.frame, "h6").length, 1)
36
+ chessboard.removeMarkers(MARKER_TYPE.frame, "h6")
37
+ assert.equal(chessboard.getMarkers(MARKER_TYPE.frame, "h6").length, 0)
38
38
  chessboard.destroy()
39
39
  })
40
40