kokopu-react 3.1.0 → 3.2.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.
Files changed (234) hide show
  1. package/.eslintrc.yml +1 -1
  2. package/CHANGELOG.md +6 -0
  3. package/dist/lib/chessboard/BoardProperties.js.map +1 -1
  4. package/dist/lib/chessboard/Chessboard.css +13 -13
  5. package/dist/lib/chessboard/Chessboard.js.map +1 -1
  6. package/dist/lib/chessboard/ChessboardImpl.js.map +1 -1
  7. package/dist/lib/chessboard/Draggable.js.map +1 -1
  8. package/dist/lib/chessboard/Motion.js.map +1 -1
  9. package/dist/lib/chessboard/colorsets.js.map +1 -1
  10. package/dist/lib/chessboard/piecesets.js.map +1 -1
  11. package/dist/lib/errorbox/ErrorBox.css +18 -18
  12. package/dist/lib/errorbox/ErrorBox.js.map +1 -1
  13. package/dist/lib/errorbox/parsing.js.map +1 -1
  14. package/dist/lib/exception.js.map +1 -1
  15. package/dist/lib/i18n.d.ts +1 -0
  16. package/dist/lib/i18n.js +1 -0
  17. package/dist/lib/i18n.js.map +1 -1
  18. package/dist/lib/icons/AnnotationSymbolShape.css +6 -6
  19. package/dist/lib/icons/AnnotationSymbolShape.js.map +1 -1
  20. package/dist/lib/icons/ArrowMarkerIcon.js.map +1 -1
  21. package/dist/lib/icons/ArrowTip.js.map +1 -1
  22. package/dist/lib/icons/ChessPieceIcon.js.map +1 -1
  23. package/dist/lib/icons/SquareMarkerIcon.js.map +1 -1
  24. package/dist/lib/icons/TextMarkerIcon.js.map +1 -1
  25. package/dist/lib/icons/arrow.css +1 -1
  26. package/dist/lib/index.d.ts +1 -0
  27. package/dist/lib/index.js +1 -0
  28. package/dist/lib/index.js.map +1 -1
  29. package/dist/lib/movetext/Movetext.css +27 -27
  30. package/dist/lib/movetext/Movetext.js.map +1 -1
  31. package/dist/lib/movetext/MovetextImpl.js.map +1 -1
  32. package/dist/lib/movetext/fonts.css +7 -7
  33. package/dist/lib/movetext/htmlFilter.js.map +1 -1
  34. package/dist/lib/movetext/moveFormatter.js.map +1 -1
  35. package/dist/lib/navigationboard/NavigationBoard.d.ts +39 -1
  36. package/dist/lib/navigationboard/NavigationBoard.js +94 -11
  37. package/dist/lib/navigationboard/NavigationBoard.js.map +1 -1
  38. package/dist/lib/navigationboard/NavigationButton.d.ts +54 -0
  39. package/dist/lib/navigationboard/NavigationButton.js +35 -0
  40. package/dist/lib/navigationboard/NavigationButton.js.map +1 -0
  41. package/dist/lib/navigationboard/NavigationField.css +7 -7
  42. package/dist/lib/navigationboard/NavigationField.js.map +1 -1
  43. package/dist/lib/navigationboard/NavigationToolbar.css +16 -13
  44. package/dist/lib/navigationboard/NavigationToolbar.d.ts +3 -10
  45. package/dist/lib/navigationboard/NavigationToolbar.js +31 -82
  46. package/dist/lib/navigationboard/NavigationToolbar.js.map +1 -1
  47. package/dist/lib/navigationboard/iconPaths.d.ts +29 -0
  48. package/dist/lib/navigationboard/iconPaths.js +91 -0
  49. package/dist/lib/navigationboard/iconPaths.js.map +1 -0
  50. package/dist/lib/sanitization.js.map +1 -1
  51. package/dist/lib/types.js.map +1 -1
  52. package/dist/lib/util.js.map +1 -1
  53. package/doc_src/demo/PageChessboardBase.tsx +115 -115
  54. package/doc_src/demo/PageChessboardInteraction.tsx +303 -303
  55. package/doc_src/demo/PageChessboardMove.tsx +173 -173
  56. package/doc_src/demo/PageChessboardSmallScreens.tsx +94 -94
  57. package/doc_src/demo/PageMovetextBase.tsx +180 -180
  58. package/doc_src/demo/PageMovetextInteraction.tsx +123 -123
  59. package/doc_src/demo/PageNavigationBoardBase.tsx +144 -137
  60. package/doc_src/demo/PageNavigationBoardUncontrolledVsControlled.tsx +69 -69
  61. package/doc_src/demo/decs.d.ts +4 -4
  62. package/doc_src/demo/demo.css +12 -12
  63. package/doc_src/demo/util.ts +1 -1
  64. package/doc_src/examples/NavigationBoard.md +1 -1
  65. package/doc_src/theming/LogoRenderer.js +13 -13
  66. package/doc_src/theming/theming.css +5 -5
  67. package/package.json +95 -95
  68. package/scripts/doc.styleguide.config.js +131 -131
  69. package/scripts/doc.tsconfig.json +5 -5
  70. package/scripts/docker-compose.yml +1 -1
  71. package/scripts/test-graphic.tsconfig.json +5 -5
  72. package/scripts/test-graphic.webpack.config.js +57 -57
  73. package/scripts/test-headless.webpack.config.js +29 -29
  74. package/src/chessboard/BoardProperties.ts +68 -68
  75. package/src/chessboard/Chessboard.css +13 -13
  76. package/src/chessboard/Chessboard.tsx +380 -380
  77. package/src/chessboard/ChessboardImpl.tsx +557 -557
  78. package/src/chessboard/Draggable.tsx +185 -185
  79. package/src/chessboard/Motion.tsx +67 -67
  80. package/src/chessboard/colorsets.ts +66 -66
  81. package/src/chessboard/piecesets.ts +84 -84
  82. package/src/decs.d.ts +2 -2
  83. package/src/errorbox/ErrorBox.css +18 -18
  84. package/src/errorbox/ErrorBox.tsx +75 -75
  85. package/src/errorbox/parsing.tsx +95 -95
  86. package/src/exception.ts +17 -17
  87. package/src/i18n.ts +1 -0
  88. package/src/icons/AnnotationSymbolShape.css +6 -6
  89. package/src/icons/AnnotationSymbolShape.tsx +31 -31
  90. package/src/icons/ArrowMarkerIcon.tsx +34 -34
  91. package/src/icons/ArrowTip.tsx +14 -14
  92. package/src/icons/ChessPieceIcon.tsx +45 -45
  93. package/src/icons/SquareMarkerIcon.tsx +20 -20
  94. package/src/icons/TextMarkerIcon.tsx +29 -29
  95. package/src/icons/arrow.css +1 -1
  96. package/src/index.ts +3 -2
  97. package/src/movetext/Movetext.css +27 -27
  98. package/src/movetext/Movetext.tsx +158 -158
  99. package/src/movetext/MovetextImpl.tsx +345 -345
  100. package/src/movetext/fonts.css +7 -7
  101. package/src/movetext/htmlFilter.tsx +129 -129
  102. package/src/movetext/moveFormatter.tsx +37 -37
  103. package/src/navigationboard/NavigationBoard.tsx +297 -178
  104. package/src/navigationboard/NavigationButton.ts +72 -0
  105. package/src/navigationboard/NavigationField.css +7 -7
  106. package/src/navigationboard/NavigationField.tsx +90 -90
  107. package/src/navigationboard/NavigationToolbar.css +16 -13
  108. package/src/navigationboard/NavigationToolbar.tsx +60 -117
  109. package/src/navigationboard/iconPaths.ts +98 -0
  110. package/src/sanitization.ts +17 -17
  111. package/src/types.ts +116 -116
  112. package/src/util.ts +11 -11
  113. package/test/01_types.js +167 -167
  114. package/test/02_chessboard_util.js +114 -114
  115. package/test/03_error_box_graphic.js +16 -16
  116. package/test/04_icons_graphic.js +32 -32
  117. package/test/05_chessboard_graphic.js +60 -60
  118. package/test/06_chessboard_animation.js +36 -36
  119. package/test/07_chessboard_interaction.js +101 -101
  120. package/test/08_chessboard_play_moves.js +62 -62
  121. package/test/09_chessboard_small_screens.js +32 -32
  122. package/test/10_movetext_graphic.js +32 -32
  123. package/test/11_movetext_interaction.js +100 -100
  124. package/test/12_navigation_board_base.js +151 -0
  125. package/test/13_navigation_board_graphic.js +68 -0
  126. package/test/14_navigation_board_autoplay.js +100 -0
  127. package/test/common/graphic.js +106 -97
  128. package/test/graphic_references/12_navigation_board_base/controlled/default.png +0 -0
  129. package/test/graphic_references/{12_navigation_board/controlled/forbidden_navigation_1.png → 12_navigation_board_base/controlled/forbidden_navigation_0.png} +0 -0
  130. package/test/graphic_references/{12_navigation_board/controlled/invalid_node_id.png → 12_navigation_board_base/controlled/forbidden_navigation_1.png} +0 -0
  131. package/test/graphic_references/{12_navigation_board/controlled/forbidden_navigation_0.png → 12_navigation_board_base/controlled/invalid_node_id.png} +0 -0
  132. package/test/graphic_references/12_navigation_board_base/controlled/no_callback_defined_0.png +0 -0
  133. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/controlled/no_callback_defined_1.png +0 -0
  134. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/controlled/overriding_initial_node_id.png +0 -0
  135. package/test/graphic_references/{12_navigation_board/controlled/regular_navigation_1.png → 12_navigation_board_base/controlled/regular_navigation_0.png} +0 -0
  136. package/test/graphic_references/{12_navigation_board/uncontrolled/initial_state_at_specific_id.png → 12_navigation_board_base/controlled/regular_navigation_1.png} +0 -0
  137. package/test/graphic_references/{12_navigation_board/controlled/regular_navigation_3.png → 12_navigation_board_base/controlled/regular_navigation_2.png} +0 -0
  138. package/test/graphic_references/{12_navigation_board/controlled/regular_navigation_0.png → 12_navigation_board_base/controlled/regular_navigation_3.png} +0 -0
  139. package/test/graphic_references/{12_navigation_board/uncontrolled/forbidden_navigation_at_beginning_2.png → 12_navigation_board_base/uncontrolled/forbidden_navigation_at_beginning_0.png} +0 -0
  140. package/test/graphic_references/{12_navigation_board/uncontrolled/forbidden_navigation_at_beginning_0.png → 12_navigation_board_base/uncontrolled/forbidden_navigation_at_beginning_1.png} +0 -0
  141. package/test/graphic_references/{12_navigation_board/uncontrolled/forbidden_navigation_at_beginning_1.png → 12_navigation_board_base/uncontrolled/forbidden_navigation_at_beginning_2.png} +0 -0
  142. package/test/graphic_references/{12_navigation_board/controlled/no_callback_defined_0.png → 12_navigation_board_base/uncontrolled/forbidden_navigation_at_end_0.png} +0 -0
  143. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_end_1.png +0 -0
  144. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_end_2.png +0 -0
  145. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/initial_state_at_end.png +0 -0
  146. package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_at_specific_id.png +0 -0
  147. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/initial_state_default.png +0 -0
  148. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/initial_state_default_with_game_index.png +0 -0
  149. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/initial_state_on_null-move.png +0 -0
  150. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/navigation_with_keys_0.png +0 -0
  151. package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_1.png +0 -0
  152. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/navigation_with_keys_2.png +0 -0
  153. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/navigation_with_keys_3.png +0 -0
  154. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/navigation_with_keys_4.png +0 -0
  155. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/regular_flipping_0.png +0 -0
  156. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/regular_flipping_1.png +0 -0
  157. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/regular_navigation_0.png +0 -0
  158. package/test/graphic_references/{12_navigation_board/controlled/default.png → 12_navigation_board_base/uncontrolled/regular_navigation_1.png} +0 -0
  159. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/regular_navigation_2.png +0 -0
  160. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_3.png +0 -0
  161. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/regular_navigation_4.png +0 -0
  162. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/regular_navigation_5.png +0 -0
  163. package/test/graphic_references/13_navigation_board_graphic/additional_buttons/error_1.png +0 -0
  164. package/test/graphic_references/13_navigation_board_graphic/additional_buttons/error_2.png +0 -0
  165. package/test/graphic_references/13_navigation_board_graphic/additional_buttons/multiple_buttons.png +0 -0
  166. package/test/graphic_references/{12_navigation_board/uncontrolled/regular_navigation_3.png → 13_navigation_board_graphic/additional_buttons/single_button.png} +0 -0
  167. package/test/graphic_references/{12_navigation_board → 13_navigation_board_graphic}/theme/custom_1.png +0 -0
  168. package/test/graphic_references/{12_navigation_board → 13_navigation_board_graphic}/theme/custom_2.png +0 -0
  169. package/test/graphic_references/{12_navigation_board → 13_navigation_board_graphic}/theme/large.png +0 -0
  170. package/test/graphic_references/13_navigation_board_graphic/theme/small.png +0 -0
  171. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_1_move_acknowledging_is-playing_changes.png +0 -0
  172. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_1_move_not_acknowledging_is-playing_changes.png +0 -0
  173. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_2_moves_acknowledging_node_changes.png +0 -0
  174. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_2_moves_not_acknowledging_node_changes.png +0 -0
  175. package/test/graphic_references/{12_navigation_board/uncontrolled/forbidden_navigation_at_end_1.png → 14_navigation_board_autoplay/controlled/after_reaching_the_end.png} +0 -0
  176. package/test/graphic_references/{12_navigation_board/uncontrolled/forbidden_navigation_at_end_2.png → 14_navigation_board_autoplay/controlled/already_at_the_end.png} +0 -0
  177. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_acknowledging_is-playing_changes.png +0 -0
  178. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_acknowledging_node_changes.png +0 -0
  179. package/test/graphic_references/{12_navigation_board/uncontrolled/forbidden_navigation_at_end_0.png → 14_navigation_board_autoplay/controlled/initial_state_at_the_end.png} +0 -0
  180. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_close_to_end.png +0 -0
  181. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_not_acknowledging_is-playing_changes.png +0 -0
  182. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_not_acknowledging_node_changes.png +0 -0
  183. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_2_moves_from_beginning_after_stop.png +0 -0
  184. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_2_moves_from_beginning_before_stop.png +0 -0
  185. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_reaching_the_end_after_stop.png +0 -0
  186. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_reaching_the_end_before_stop.png +0 -0
  187. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/initial_state_close_to_end.png +0 -0
  188. package/test/graphic_references/{12_navigation_board/uncontrolled/navigation_with_keys_1.png → 14_navigation_board_autoplay/uncontrolled/initial_state_default.png} +0 -0
  189. package/test/graphic_test_app/03_error_box_graphic/base.tsx +14 -14
  190. package/test/graphic_test_app/03_error_box_graphic/localization.tsx +1 -1
  191. package/test/graphic_test_app/04_icons_graphic/chess_piece.tsx +7 -7
  192. package/test/graphic_test_app/04_icons_graphic/marker.tsx +15 -15
  193. package/test/graphic_test_app/05_chessboard_graphic/annotations.tsx +7 -7
  194. package/test/graphic_test_app/05_chessboard_graphic/base.tsx +6 -6
  195. package/test/graphic_test_app/05_chessboard_graphic/chess_variants.tsx +7 -7
  196. package/test/graphic_test_app/05_chessboard_graphic/flipped.tsx +5 -5
  197. package/test/graphic_test_app/05_chessboard_graphic/move.tsx +12 -12
  198. package/test/graphic_test_app/05_chessboard_graphic/theme.tsx +12 -12
  199. package/test/graphic_test_app/06_chessboard_animation/base_1.tsx +6 -6
  200. package/test/graphic_test_app/06_chessboard_animation/base_2.tsx +6 -6
  201. package/test/graphic_test_app/06_chessboard_animation/base_3.tsx +6 -6
  202. package/test/graphic_test_app/06_chessboard_animation/on_redraw.tsx +16 -16
  203. package/test/graphic_test_app/07_chessboard_interaction/click_squares.tsx +5 -5
  204. package/test/graphic_test_app/07_chessboard_interaction/edit_arrows.tsx +4 -4
  205. package/test/graphic_test_app/07_chessboard_interaction/error.tsx +2 -2
  206. package/test/graphic_test_app/07_chessboard_interaction/move_pieces.tsx +5 -5
  207. package/test/graphic_test_app/08_chessboard_play_moves/base.tsx +8 -8
  208. package/test/graphic_test_app/08_chessboard_play_moves/promotions.tsx +4 -4
  209. package/test/graphic_test_app/09_chessboard_small_screens/base.tsx +9 -9
  210. package/test/graphic_test_app/09_chessboard_small_screens/top_bottom_components.tsx +9 -9
  211. package/test/graphic_test_app/10_movetext_graphic/base.tsx +4 -4
  212. package/test/graphic_test_app/10_movetext_graphic/error.tsx +6 -6
  213. package/test/graphic_test_app/10_movetext_graphic/format_move.tsx +1 -1
  214. package/test/graphic_test_app/10_movetext_graphic/html.tsx +5 -5
  215. package/test/graphic_test_app/10_movetext_graphic/options.tsx +10 -10
  216. package/test/graphic_test_app/11_movetext_interaction/error.tsx +1 -1
  217. package/test/graphic_test_app/11_movetext_interaction/select_moves.tsx +11 -11
  218. package/test/graphic_test_app/{12_navigation_board → 12_navigation_board_base}/controlled.tsx +5 -5
  219. package/test/graphic_test_app/{12_navigation_board → 12_navigation_board_base}/uncontrolled.tsx +7 -7
  220. package/test/graphic_test_app/13_navigation_board_graphic/additional_buttons.tsx +49 -0
  221. package/test/graphic_test_app/{12_navigation_board → 13_navigation_board_graphic}/error.tsx +2 -2
  222. package/test/graphic_test_app/{12_navigation_board → 13_navigation_board_graphic}/theme.tsx +4 -4
  223. package/test/graphic_test_app/14_navigation_board_autoplay/controlled.tsx +73 -0
  224. package/test/graphic_test_app/14_navigation_board_autoplay/uncontrolled.tsx +34 -0
  225. package/test/graphic_test_app/common/decs.d.ts +2 -2
  226. package/test/graphic_test_app/common/test_app.css +15 -15
  227. package/test/graphic_test_app/common/test_app.tsx +48 -48
  228. package/tsconfig.json +13 -13
  229. package/test/12_navigation_board.js +0 -168
  230. package/test/graphic_references/12_navigation_board/controlled/regular_navigation_2.png +0 -0
  231. package/test/graphic_references/12_navigation_board/theme/small.png +0 -0
  232. package/test/graphic_references/12_navigation_board/uncontrolled/regular_navigation_1.png +0 -0
  233. /package/test/graphic_references/{12_navigation_board → 13_navigation_board_graphic}/error/pgn_parsing_error.png +0 -0
  234. /package/test/graphic_references/{12_navigation_board → 13_navigation_board_graphic}/error/wrong_game_type.png +0 -0
@@ -27,142 +27,142 @@ const test = require('unit.js');
27
27
 
28
28
 
29
29
  function itInvalidArgument(label, action) {
30
- it(label, () => { test.exception(action).isInstanceOf(exception.IllegalArgument); });
30
+ it(label, () => { test.exception(action).isInstanceOf(exception.IllegalArgument); });
31
31
  }
32
32
 
33
33
 
34
34
  describe('Chessboard.size()', () => {
35
35
 
36
- function itChessboardSize(label, expectedWidth, expectedHeight, attr) {
37
- it(label, () => {
38
- test.value(Chessboard.size(attr)).is({ width: expectedWidth, height: expectedHeight });
39
- });
40
- }
41
-
42
- itChessboardSize('Default', 374, 333);
43
- itChessboardSize('Square size 50', 467, 416, { squareSize: 50 });
44
- itChessboardSize('Default without coordinates', 364, 320, { coordinateVisible: false });
45
- itChessboardSize('Default without turn', 330, 333, { turnVisible: false });
46
- itChessboardSize('Default board only', 320, 320, { coordinateVisible: false, turnVisible: false });
47
-
48
- itInvalidArgument('Attribute not an object', () => Chessboard.size('not-an-object'));
49
- itInvalidArgument('Square size not an integer', () => Chessboard.size({ squareSize: 'not-an-integer' }));
50
- itInvalidArgument('Small-screen limits not an array', () => Chessboard.size({ smallScreenLimits: 'not-an-array' }));
51
- itInvalidArgument('Small-screen limit undefined', () => Chessboard.size({ smallScreenLimits: [ undefined ] }));
52
- itInvalidArgument('Small-screen limit null', () => Chessboard.size({ smallScreenLimits: [ null ] }));
53
- itInvalidArgument('Small-screen limit not-an-object', () => Chessboard.size({ smallScreenLimits: [ 'not-an-object' ] }));
36
+ function itChessboardSize(label, expectedWidth, expectedHeight, attr) {
37
+ it(label, () => {
38
+ test.value(Chessboard.size(attr)).is({ width: expectedWidth, height: expectedHeight });
39
+ });
40
+ }
41
+
42
+ itChessboardSize('Default', 374, 333);
43
+ itChessboardSize('Square size 50', 467, 416, { squareSize: 50 });
44
+ itChessboardSize('Default without coordinates', 364, 320, { coordinateVisible: false });
45
+ itChessboardSize('Default without turn', 330, 333, { turnVisible: false });
46
+ itChessboardSize('Default board only', 320, 320, { coordinateVisible: false, turnVisible: false });
47
+
48
+ itInvalidArgument('Attribute not an object', () => Chessboard.size('not-an-object'));
49
+ itInvalidArgument('Square size not an integer', () => Chessboard.size({ squareSize: 'not-an-integer' }));
50
+ itInvalidArgument('Small-screen limits not an array', () => Chessboard.size({ smallScreenLimits: 'not-an-array' }));
51
+ itInvalidArgument('Small-screen limit undefined', () => Chessboard.size({ smallScreenLimits: [ undefined ] }));
52
+ itInvalidArgument('Small-screen limit null', () => Chessboard.size({ smallScreenLimits: [ null ] }));
53
+ itInvalidArgument('Small-screen limit not-an-object', () => Chessboard.size({ smallScreenLimits: [ 'not-an-object' ] }));
54
54
  });
55
55
 
56
56
 
57
57
  function testAdaptSquareSize(expectedSquareSize, width, height, coordinateVisible, turnVisible, smallScreenLimits) {
58
58
 
59
- test.value(Chessboard.adaptSquareSize(width, height, {
60
- coordinateVisible: coordinateVisible,
61
- turnVisible: turnVisible,
62
- smallScreenLimits: smallScreenLimits,
63
- })).is(expectedSquareSize);
64
-
65
- const actualSize = Chessboard.size({
66
- squareSize: expectedSquareSize,
67
- coordinateVisible: coordinateVisible,
68
- turnVisible: turnVisible,
69
- smallScreenLimits: smallScreenLimits,
70
- });
71
- test.value(actualSize.width <= width && actualSize.height <= height).isTrue();
59
+ test.value(Chessboard.adaptSquareSize(width, height, {
60
+ coordinateVisible: coordinateVisible,
61
+ turnVisible: turnVisible,
62
+ smallScreenLimits: smallScreenLimits,
63
+ })).is(expectedSquareSize);
64
+
65
+ const actualSize = Chessboard.size({
66
+ squareSize: expectedSquareSize,
67
+ coordinateVisible: coordinateVisible,
68
+ turnVisible: turnVisible,
69
+ smallScreenLimits: smallScreenLimits,
70
+ });
71
+ test.value(actualSize.width <= width && actualSize.height <= height).isTrue();
72
72
  }
73
73
 
74
74
 
75
75
  function testAdaptSquareSizeWithIncrement(expectedSquareSize, width, height, coordinateVisible, turnVisible, smallScreenLimits) {
76
- testAdaptSquareSize(expectedSquareSize, width, height, coordinateVisible, turnVisible, smallScreenLimits);
77
-
78
- const actualSizeIncremented = Chessboard.size({
79
- squareSize: expectedSquareSize + 1,
80
- coordinateVisible: coordinateVisible,
81
- turnVisible: turnVisible,
82
- smallScreenLimits: smallScreenLimits,
83
- });
84
- test.value(actualSizeIncremented.width > width || actualSizeIncremented.height > height).isTrue();
76
+ testAdaptSquareSize(expectedSquareSize, width, height, coordinateVisible, turnVisible, smallScreenLimits);
77
+
78
+ const actualSizeIncremented = Chessboard.size({
79
+ squareSize: expectedSquareSize + 1,
80
+ coordinateVisible: coordinateVisible,
81
+ turnVisible: turnVisible,
82
+ smallScreenLimits: smallScreenLimits,
83
+ });
84
+ test.value(actualSizeIncremented.width > width || actualSizeIncremented.height > height).isTrue();
85
85
  }
86
86
 
87
87
 
88
88
  describe('Adapt square-size', () => {
89
89
 
90
- it('Very small', () => { test.value(Chessboard.adaptSquareSize(10, 10, { coordinateVisible: false, turnVisible: false })).is(Chessboard.minSquareSize()); });
91
- it('Very large', () => { test.value(Chessboard.adaptSquareSize(9999, 9999)).is(Chessboard.maxSquareSize()); });
92
-
93
- it('Size 185x300 with coordinates & turn', () => testAdaptSquareSizeWithIncrement(19, 185, 300, true, true));
94
- it('Size 185x300 without coordinates', () => testAdaptSquareSizeWithIncrement(20, 185, 300, false, true));
95
- it('Size 185x300 without turn', () => testAdaptSquareSizeWithIncrement(22, 185, 300, true, false));
96
- it('Size 185x300 board only', () => testAdaptSquareSizeWithIncrement(23, 185, 300, false, false));
97
-
98
- it('Size 300x200 with coordinates & turn', () => testAdaptSquareSizeWithIncrement(23, 300, 200, true, true));
99
- it('Size 300x200 without coordinates', () => testAdaptSquareSizeWithIncrement(25, 300, 200, false, true));
100
- it('Size 300x200 without turn', () => testAdaptSquareSizeWithIncrement(23, 300, 200, true, false));
101
- it('Size 300x200 board only', () => testAdaptSquareSizeWithIncrement(25, 300, 200, false, false));
102
-
103
- it('Size 375x500 with coordinates & turn', () => testAdaptSquareSizeWithIncrement(40, 375, 500, true, true));
104
- it('Size 375x500 without coordinates', () => testAdaptSquareSizeWithIncrement(41, 375, 500, false, true));
105
- it('Size 375x500 without turn', () => testAdaptSquareSizeWithIncrement(45, 375, 500, true, false));
106
- it('Size 375x500 board only', () => testAdaptSquareSizeWithIncrement(46, 375, 500, false, false));
107
-
108
- it('Size 600x450 with coordinates & turn', () => testAdaptSquareSizeWithIncrement(54, 600, 450, true, true));
109
- it('Size 600x450 without coordinates', () => testAdaptSquareSizeWithIncrement(56, 600, 450, false, true));
110
- it('Size 600x450 without turn', () => testAdaptSquareSizeWithIncrement(54, 600, 450, true, false));
111
- it('Size 600x450 board only', () => testAdaptSquareSizeWithIncrement(56, 600, 450, false, false));
112
-
113
- itInvalidArgument('Width <null>', () => Chessboard.adaptSquareSize(null, 400));
114
- itInvalidArgument('Width not-a-number', () => Chessboard.adaptSquareSize('500', 400));
115
- itInvalidArgument('Height <undefined>', () => Chessboard.adaptSquareSize(500, undefined));
116
- itInvalidArgument('Height object', () => Chessboard.adaptSquareSize(500, {}));
117
- itInvalidArgument('Attribute not-an-object', () => Chessboard.adaptSquareSize(500, 400, 'not-an-object'));
118
- itInvalidArgument('Small-screen limits not-an-array', () => Chessboard.adaptSquareSize(500, 400, { smallScreenLimits: 'not-an-array' }));
90
+ it('Very small', () => { test.value(Chessboard.adaptSquareSize(10, 10, { coordinateVisible: false, turnVisible: false })).is(Chessboard.minSquareSize()); });
91
+ it('Very large', () => { test.value(Chessboard.adaptSquareSize(9999, 9999)).is(Chessboard.maxSquareSize()); });
92
+
93
+ it('Size 185x300 with coordinates & turn', () => testAdaptSquareSizeWithIncrement(19, 185, 300, true, true));
94
+ it('Size 185x300 without coordinates', () => testAdaptSquareSizeWithIncrement(20, 185, 300, false, true));
95
+ it('Size 185x300 without turn', () => testAdaptSquareSizeWithIncrement(22, 185, 300, true, false));
96
+ it('Size 185x300 board only', () => testAdaptSquareSizeWithIncrement(23, 185, 300, false, false));
97
+
98
+ it('Size 300x200 with coordinates & turn', () => testAdaptSquareSizeWithIncrement(23, 300, 200, true, true));
99
+ it('Size 300x200 without coordinates', () => testAdaptSquareSizeWithIncrement(25, 300, 200, false, true));
100
+ it('Size 300x200 without turn', () => testAdaptSquareSizeWithIncrement(23, 300, 200, true, false));
101
+ it('Size 300x200 board only', () => testAdaptSquareSizeWithIncrement(25, 300, 200, false, false));
102
+
103
+ it('Size 375x500 with coordinates & turn', () => testAdaptSquareSizeWithIncrement(40, 375, 500, true, true));
104
+ it('Size 375x500 without coordinates', () => testAdaptSquareSizeWithIncrement(41, 375, 500, false, true));
105
+ it('Size 375x500 without turn', () => testAdaptSquareSizeWithIncrement(45, 375, 500, true, false));
106
+ it('Size 375x500 board only', () => testAdaptSquareSizeWithIncrement(46, 375, 500, false, false));
107
+
108
+ it('Size 600x450 with coordinates & turn', () => testAdaptSquareSizeWithIncrement(54, 600, 450, true, true));
109
+ it('Size 600x450 without coordinates', () => testAdaptSquareSizeWithIncrement(56, 600, 450, false, true));
110
+ it('Size 600x450 without turn', () => testAdaptSquareSizeWithIncrement(54, 600, 450, true, false));
111
+ it('Size 600x450 board only', () => testAdaptSquareSizeWithIncrement(56, 600, 450, false, false));
112
+
113
+ itInvalidArgument('Width <null>', () => Chessboard.adaptSquareSize(null, 400));
114
+ itInvalidArgument('Width not-a-number', () => Chessboard.adaptSquareSize('500', 400));
115
+ itInvalidArgument('Height <undefined>', () => Chessboard.adaptSquareSize(500, undefined));
116
+ itInvalidArgument('Height object', () => Chessboard.adaptSquareSize(500, {}));
117
+ itInvalidArgument('Attribute not-an-object', () => Chessboard.adaptSquareSize(500, 400, 'not-an-object'));
118
+ itInvalidArgument('Small-screen limits not-an-array', () => Chessboard.adaptSquareSize(500, 400, { smallScreenLimits: 'not-an-array' }));
119
119
  });
120
120
 
121
121
 
122
122
  describe('Adapt square-size with small-screen limits', () => {
123
123
 
124
- const limits = [
125
- { width: 540, squareSize: 24, turnVisible: false },
126
- { width: 620, squareSize: 28, coordinateVisible: false },
127
- { width: 730, squareSize: 32 },
128
- { width: 860, squareSize: 48 },
129
- ];
130
-
131
- before(() => {
132
- global.window = {};
133
- });
134
- after(() => {
135
- delete global.window;
136
- });
137
-
138
- it('Window-limited', () => {
139
- window.innerWidth = 640;
140
- testAdaptSquareSize(32, 9999, 9999, true, true, limits);
141
- });
142
-
143
- it('Available-space-limited with coordinates & turn', () => {
144
- window.innerWidth = 800;
145
- testAdaptSquareSize(40, 375, 500, true, true, limits);
146
- });
147
- it('Available-space-limited without coordinates', () => {
148
- window.innerWidth = 800;
149
- testAdaptSquareSize(41, 375, 500, false, true, limits);
150
- });
151
- it('Available-space-limited without turn', () => {
152
- window.innerWidth = 800;
153
- testAdaptSquareSize(45, 375, 500, true, false, limits);
154
- });
155
- it('Available-space-limited board only', () => {
156
- window.innerWidth = 800;
157
- testAdaptSquareSize(46, 375, 500, false, false, limits);
158
- });
159
-
160
- it('Force hidden coordinates', () => {
161
- window.innerWidth = 600;
162
- testAdaptSquareSize(20, 185, 300, true, true, limits);
163
- });
164
- it('Force hidden coordinates & turn', () => {
165
- window.innerWidth = 500;
166
- testAdaptSquareSize(23, 185, 300, true, true, limits);
167
- });
124
+ const limits = [
125
+ { width: 540, squareSize: 24, turnVisible: false },
126
+ { width: 620, squareSize: 28, coordinateVisible: false },
127
+ { width: 730, squareSize: 32 },
128
+ { width: 860, squareSize: 48 },
129
+ ];
130
+
131
+ before(() => {
132
+ global.window = {};
133
+ });
134
+ after(() => {
135
+ delete global.window;
136
+ });
137
+
138
+ it('Window-limited', () => {
139
+ window.innerWidth = 640;
140
+ testAdaptSquareSize(32, 9999, 9999, true, true, limits);
141
+ });
142
+
143
+ it('Available-space-limited with coordinates & turn', () => {
144
+ window.innerWidth = 800;
145
+ testAdaptSquareSize(40, 375, 500, true, true, limits);
146
+ });
147
+ it('Available-space-limited without coordinates', () => {
148
+ window.innerWidth = 800;
149
+ testAdaptSquareSize(41, 375, 500, false, true, limits);
150
+ });
151
+ it('Available-space-limited without turn', () => {
152
+ window.innerWidth = 800;
153
+ testAdaptSquareSize(45, 375, 500, true, false, limits);
154
+ });
155
+ it('Available-space-limited board only', () => {
156
+ window.innerWidth = 800;
157
+ testAdaptSquareSize(46, 375, 500, false, false, limits);
158
+ });
159
+
160
+ it('Force hidden coordinates', () => {
161
+ window.innerWidth = 600;
162
+ testAdaptSquareSize(20, 185, 300, true, true, limits);
163
+ });
164
+ it('Force hidden coordinates & turn', () => {
165
+ window.innerWidth = 500;
166
+ testAdaptSquareSize(23, 185, 300, true, true, limits);
167
+ });
168
168
  });
@@ -27,22 +27,22 @@ const { describeWithBrowser, itChecksScreenshots } = require('./common/graphic')
27
27
 
28
28
  describeWithBrowser('Error box graphic', browserContext => {
29
29
 
30
- itChecksScreenshots(browserContext, '03_error_box_graphic/base', [
31
- 'minimal',
32
- 'full',
33
- 'missing error index',
34
- 'missing error text',
35
- 'negative error index',
36
- 'too large error index',
37
- 'error index not integer',
38
- 'cut end of text',
39
- 'cut beginning of text',
40
- 'cut on line breaks',
41
- 'single character text',
42
- ]);
30
+ itChecksScreenshots(browserContext, '03_error_box_graphic/base', [
31
+ 'minimal',
32
+ 'full',
33
+ 'missing error index',
34
+ 'missing error text',
35
+ 'negative error index',
36
+ 'too large error index',
37
+ 'error index not integer',
38
+ 'cut end of text',
39
+ 'cut beginning of text',
40
+ 'cut on line breaks',
41
+ 'single character text',
42
+ ]);
43
43
 
44
- itChecksScreenshots(browserContext, '03_error_box_graphic/localization', [
45
- 'default'
46
- ]);
44
+ itChecksScreenshots(browserContext, '03_error_box_graphic/localization', [
45
+ 'default'
46
+ ]);
47
47
 
48
48
  });
@@ -27,37 +27,37 @@ const { describeWithBrowser, itChecksScreenshots } = require('./common/graphic')
27
27
 
28
28
  describeWithBrowser('Icons graphic', browserContext => {
29
29
 
30
- itChecksScreenshots(browserContext, '04_icons_graphic/marker', [
31
-
32
- 'default square',
33
- 'colorized square',
34
- 'wrapped square',
35
- 'invalid square size',
36
-
37
- 'default text',
38
- 'colorized text',
39
- 'wrapped text',
40
- 'colorized symbol',
41
- 'wrapped symbol',
42
- 'invalid text size',
43
- 'invalid symbol',
44
-
45
- 'default arrow',
46
- 'colorized arrow',
47
- 'wrapped arrow',
48
- 'invalid arrow size',
49
- ]);
50
-
51
- itChecksScreenshots(browserContext, '04_icons_graphic/chess_piece', [
52
-
53
- 'single piece',
54
- 'multiple pieces',
55
- 'customized pieceset',
56
-
57
- 'invalid size',
58
- 'invalid single piece',
59
- 'invalid multiple pieces',
60
- 'invalid pieceset',
61
- ]);
30
+ itChecksScreenshots(browserContext, '04_icons_graphic/marker', [
31
+
32
+ 'default square',
33
+ 'colorized square',
34
+ 'wrapped square',
35
+ 'invalid square size',
36
+
37
+ 'default text',
38
+ 'colorized text',
39
+ 'wrapped text',
40
+ 'colorized symbol',
41
+ 'wrapped symbol',
42
+ 'invalid text size',
43
+ 'invalid symbol',
44
+
45
+ 'default arrow',
46
+ 'colorized arrow',
47
+ 'wrapped arrow',
48
+ 'invalid arrow size',
49
+ ]);
50
+
51
+ itChecksScreenshots(browserContext, '04_icons_graphic/chess_piece', [
52
+
53
+ 'single piece',
54
+ 'multiple pieces',
55
+ 'customized pieceset',
56
+
57
+ 'invalid size',
58
+ 'invalid single piece',
59
+ 'invalid multiple pieces',
60
+ 'invalid pieceset',
61
+ ]);
62
62
 
63
63
  });
@@ -27,70 +27,70 @@ const { describeWithBrowser, itChecksScreenshots } = require('./common/graphic')
27
27
 
28
28
  describeWithBrowser('Chessboard graphic', browserContext => {
29
29
 
30
- itChecksScreenshots(browserContext, '05_chessboard_graphic/base', [
31
- 'default',
32
- 'empty',
33
- 'parsing error',
34
- 'from FEN',
35
- 'from Kokopu object',
36
- 'wrong position type',
37
- ]);
30
+ itChecksScreenshots(browserContext, '05_chessboard_graphic/base', [
31
+ 'default',
32
+ 'empty',
33
+ 'parsing error',
34
+ 'from FEN',
35
+ 'from Kokopu object',
36
+ 'wrong position type',
37
+ ]);
38
38
 
39
- itChecksScreenshots(browserContext, '05_chessboard_graphic/flipped', [
40
- 'default',
41
- 'empty',
42
- 'parsing error',
43
- 'from FEN',
44
- 'from Kokopu object',
45
- ]);
39
+ itChecksScreenshots(browserContext, '05_chessboard_graphic/flipped', [
40
+ 'default',
41
+ 'empty',
42
+ 'parsing error',
43
+ 'from FEN',
44
+ 'from Kokopu object',
45
+ ]);
46
46
 
47
- itChecksScreenshots(browserContext, '05_chessboard_graphic/annotations', [
48
- 'with coordinates',
49
- 'with coordinates and flip',
50
- 'without coordinates',
51
- 'without coordinates and flip',
52
- 'overlap',
53
- 'overlap and flip',
54
- ]);
47
+ itChecksScreenshots(browserContext, '05_chessboard_graphic/annotations', [
48
+ 'with coordinates',
49
+ 'with coordinates and flip',
50
+ 'without coordinates',
51
+ 'without coordinates and flip',
52
+ 'overlap',
53
+ 'overlap and flip',
54
+ ]);
55
55
 
56
- itChecksScreenshots(browserContext, '05_chessboard_graphic/move', [
57
- 'default',
58
- 'no move arrow',
59
- 'parsing error',
60
- 'with forced move arrow and flip',
61
- 'capture',
62
- 'castling move',
63
- 'en-passant',
64
- 'promotion',
65
- 'wrong move type',
66
- 'wrong move arrow color type',
67
- 'null-move',
68
- 'illegal null-move',
69
- ]);
56
+ itChecksScreenshots(browserContext, '05_chessboard_graphic/move', [
57
+ 'default',
58
+ 'no move arrow',
59
+ 'parsing error',
60
+ 'with forced move arrow and flip',
61
+ 'capture',
62
+ 'castling move',
63
+ 'en-passant',
64
+ 'promotion',
65
+ 'wrong move type',
66
+ 'wrong move arrow color type',
67
+ 'null-move',
68
+ 'illegal null-move',
69
+ ]);
70
70
 
71
- itChecksScreenshots(browserContext, '05_chessboard_graphic/theme', [
72
- 'default',
73
- 'large',
74
- 'small',
75
- 'custom 1',
76
- 'custom 2',
77
- 'custom 3',
78
- 'custom 4',
79
- 'custom 5',
80
- 'custom 6',
81
- 'wrong square size type',
82
- 'wrong colorset',
83
- 'wrong pieceset',
84
- ]);
71
+ itChecksScreenshots(browserContext, '05_chessboard_graphic/theme', [
72
+ 'default',
73
+ 'large',
74
+ 'small',
75
+ 'custom 1',
76
+ 'custom 2',
77
+ 'custom 3',
78
+ 'custom 4',
79
+ 'custom 5',
80
+ 'custom 6',
81
+ 'wrong square size type',
82
+ 'wrong colorset',
83
+ 'wrong pieceset',
84
+ ]);
85
85
 
86
- itChecksScreenshots(browserContext, '05_chessboard_graphic/chess_variants', [
87
- 'chess960',
88
- 'chess960 with move',
89
- 'variant without std initial position',
90
- 'variant with std initial position',
91
- 'special code',
92
- 'invalid variant',
93
- 'invalid variant with FEN',
94
- ]);
86
+ itChecksScreenshots(browserContext, '05_chessboard_graphic/chess_variants', [
87
+ 'chess960',
88
+ 'chess960 with move',
89
+ 'variant without std initial position',
90
+ 'variant with std initial position',
91
+ 'special code',
92
+ 'invalid variant',
93
+ 'invalid variant with FEN',
94
+ ]);
95
95
 
96
96
  });
@@ -28,46 +28,46 @@ const { By } = require('selenium-webdriver');
28
28
 
29
29
  describeWithBrowser('Chessboard animation', browserContext => {
30
30
 
31
- itChecksScreenshots(browserContext, '06_chessboard_animation/base_1', [
32
- 'move 1',
33
- 'move 2',
34
- 'capture',
35
- 'castling move',
36
- 'en-passant',
37
- 'promotion',
38
- ]);
31
+ itChecksScreenshots(browserContext, '06_chessboard_animation/base_1', [
32
+ 'move 1',
33
+ 'move 2',
34
+ 'capture',
35
+ 'castling move',
36
+ 'en-passant',
37
+ 'promotion',
38
+ ]);
39
39
 
40
- itChecksScreenshots(browserContext, '06_chessboard_animation/base_2', [
41
- 'move 1',
42
- 'move 2',
43
- 'capture',
44
- 'castling move',
45
- 'en-passant',
46
- 'promotion',
47
- ]);
40
+ itChecksScreenshots(browserContext, '06_chessboard_animation/base_2', [
41
+ 'move 1',
42
+ 'move 2',
43
+ 'capture',
44
+ 'castling move',
45
+ 'en-passant',
46
+ 'promotion',
47
+ ]);
48
48
 
49
- itChecksScreenshots(browserContext, '06_chessboard_animation/base_3', [
50
- 'move 1',
51
- 'move 2',
52
- 'capture',
53
- 'castling move',
54
- 'en-passant',
55
- 'promotion',
56
- ]);
49
+ itChecksScreenshots(browserContext, '06_chessboard_animation/base_3', [
50
+ 'move 1',
51
+ 'move 2',
52
+ 'capture',
53
+ 'castling move',
54
+ 'en-passant',
55
+ 'promotion',
56
+ ]);
57
57
 
58
- itCustom(browserContext, '06_chessboard_animation/on_redraw', 0, 'default', async element => {
58
+ itCustom(browserContext, '06_chessboard_animation/on_redraw', 0, 'default', async element => {
59
59
 
60
- // Run the scenario.
61
- await takeScreenshot(browserContext, 'initial state', element);
62
- const actions = browserContext.driver.actions({ async: true });
63
- const button = await element.findElement(By.id('chessboard-action-button'));
64
- await actions.move({ origin: button }).click().perform();
65
- await waitForAnimation();
66
- await takeScreenshot(browserContext, 'final state', element);
60
+ // Run the scenario.
61
+ await takeScreenshot(browserContext, 'initial state', element);
62
+ const actions = browserContext.driver.actions({ async: true });
63
+ const button = await element.findElement(By.id('chessboard-action-button'));
64
+ await actions.move({ origin: button }).click().perform();
65
+ await waitForAnimation();
66
+ await takeScreenshot(browserContext, 'final state', element);
67
67
 
68
- // Check the screenshots.
69
- await compareScreenshot(browserContext, 'initial state');
70
- await compareScreenshot(browserContext, 'final state');
71
- });
68
+ // Check the screenshots.
69
+ await compareScreenshot(browserContext, 'initial state');
70
+ await compareScreenshot(browserContext, 'final state');
71
+ });
72
72
 
73
73
  });