kokopu-react 3.3.0 → 3.3.1

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 (337) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/lib/chessboard/Chessboard.js +3 -2
  3. package/dist/lib/chessboard/Chessboard.js.map +1 -1
  4. package/dist/lib/chessboard/ChessboardImpl.js +1 -1
  5. package/dist/lib/chessboard/ChessboardImpl.js.map +1 -1
  6. package/dist/lib/chessboard/Motion.js +1 -1
  7. package/dist/lib/chessboard/Motion.js.map +1 -1
  8. package/dist/lib/i18n.js +2 -2
  9. package/dist/lib/i18n.js.map +1 -1
  10. package/dist/lib/icons/ArrowMarkerIcon.js.map +1 -1
  11. package/dist/lib/icons/ChessPieceIcon.d.ts +1 -4
  12. package/dist/lib/icons/ChessPieceIcon.js +1 -5
  13. package/dist/lib/icons/ChessPieceIcon.js.map +1 -1
  14. package/dist/lib/icons/SquareMarkerIcon.d.ts +1 -4
  15. package/dist/lib/icons/SquareMarkerIcon.js +1 -5
  16. package/dist/lib/icons/SquareMarkerIcon.js.map +1 -1
  17. package/dist/lib/icons/TextMarkerIcon.d.ts +1 -4
  18. package/dist/lib/icons/TextMarkerIcon.js +1 -5
  19. package/dist/lib/icons/TextMarkerIcon.js.map +1 -1
  20. package/dist/lib/movetext/Movetext.js.map +1 -1
  21. package/dist/lib/movetext/MovetextImpl.js +4 -3
  22. package/dist/lib/movetext/MovetextImpl.js.map +1 -1
  23. package/dist/lib/movetext/htmlFilter.js +1 -1
  24. package/dist/lib/movetext/htmlFilter.js.map +1 -1
  25. package/dist/lib/navigationboard/NavigationBoard.d.ts +1 -1
  26. package/dist/lib/navigationboard/NavigationBoard.js +2 -2
  27. package/dist/lib/navigationboard/NavigationBoard.js.map +1 -1
  28. package/dist/lib/navigationboard/NavigationField.js +1 -1
  29. package/dist/lib/navigationboard/NavigationField.js.map +1 -1
  30. package/dist/lib/navigationboard/NavigationToolbar.js.map +1 -1
  31. package/dist/lib/util.js +2 -2
  32. package/dist/lib/util.js.map +1 -1
  33. package/doc_src/demo/PageChessboardBase.tsx +57 -51
  34. package/doc_src/demo/PageChessboardInteraction.tsx +78 -63
  35. package/doc_src/demo/PageChessboardMove.tsx +35 -30
  36. package/doc_src/demo/PageChessboardSmallScreens.tsx +3 -3
  37. package/doc_src/demo/PageMovetextBase.tsx +91 -81
  38. package/doc_src/demo/PageMovetextInteraction.tsx +23 -21
  39. package/doc_src/demo/PageNavigationBoardBase.tsx +62 -54
  40. package/doc_src/demo/PageNavigationBoardUncontrolledVsControlled.tsx +24 -18
  41. package/doc_src/theming/LogoRenderer.js +8 -9
  42. package/package.json +30 -28
  43. package/scripts/docker-compose.yml +1 -3
  44. package/src/chessboard/BoardProperties.ts +13 -13
  45. package/src/chessboard/Chessboard.tsx +43 -39
  46. package/src/chessboard/ChessboardImpl.tsx +58 -41
  47. package/src/chessboard/Draggable.tsx +15 -15
  48. package/src/chessboard/Motion.tsx +4 -4
  49. package/src/errorbox/ErrorBox.tsx +5 -5
  50. package/src/errorbox/parsing.tsx +6 -6
  51. package/src/i18n.ts +2 -2
  52. package/src/icons/AnnotationSymbolShape.tsx +5 -5
  53. package/src/icons/ArrowMarkerIcon.tsx +8 -4
  54. package/src/icons/ArrowTip.tsx +2 -2
  55. package/src/icons/ChessPieceIcon.tsx +4 -11
  56. package/src/icons/SquareMarkerIcon.tsx +3 -10
  57. package/src/icons/TextMarkerIcon.tsx +4 -11
  58. package/src/movetext/Movetext.tsx +11 -10
  59. package/src/movetext/MovetextImpl.tsx +34 -28
  60. package/src/movetext/htmlFilter.tsx +4 -4
  61. package/src/navigationboard/NavigationBoard.tsx +55 -50
  62. package/src/navigationboard/NavigationButton.ts +4 -4
  63. package/src/navigationboard/NavigationField.tsx +6 -6
  64. package/src/navigationboard/NavigationToolbar.tsx +17 -13
  65. package/src/types.ts +26 -26
  66. package/src/util.ts +2 -2
  67. package/test/01_types.js +83 -61
  68. package/test/02_chessboard_util.js +2 -0
  69. package/test/03_error_box_graphic.js +1 -1
  70. package/test/07_chessboard_interaction.js +1 -2
  71. package/test/13_navigation_board_graphic.js +3 -3
  72. package/test/common/graphic.js +11 -11
  73. package/test/graphic_references/03_error_box_graphic/base/cut_beginning_of_text.png +0 -0
  74. package/test/graphic_references/03_error_box_graphic/base/cut_end_of_text.png +0 -0
  75. package/test/graphic_references/03_error_box_graphic/base/cut_on_line_breaks.png +0 -0
  76. package/test/graphic_references/03_error_box_graphic/base/error_index_not_integer.png +0 -0
  77. package/test/graphic_references/03_error_box_graphic/base/full.png +0 -0
  78. package/test/graphic_references/03_error_box_graphic/base/minimal.png +0 -0
  79. package/test/graphic_references/03_error_box_graphic/base/missing_error_index.png +0 -0
  80. package/test/graphic_references/03_error_box_graphic/base/missing_error_text.png +0 -0
  81. package/test/graphic_references/03_error_box_graphic/base/negative_error_index.png +0 -0
  82. package/test/graphic_references/03_error_box_graphic/base/single_character_text.png +0 -0
  83. package/test/graphic_references/03_error_box_graphic/base/too_large_error_index.png +0 -0
  84. package/test/graphic_references/03_error_box_graphic/localization/default.png +0 -0
  85. package/test/graphic_references/04_icons_graphic/chess_piece/customized_pieceset.png +0 -0
  86. package/test/graphic_references/04_icons_graphic/chess_piece/invalid_multiple_pieces.png +0 -0
  87. package/test/graphic_references/04_icons_graphic/chess_piece/invalid_pieceset.png +0 -0
  88. package/test/graphic_references/04_icons_graphic/chess_piece/invalid_single_piece.png +0 -0
  89. package/test/graphic_references/04_icons_graphic/chess_piece/invalid_size.png +0 -0
  90. package/test/graphic_references/04_icons_graphic/chess_piece/multiple_pieces.png +0 -0
  91. package/test/graphic_references/04_icons_graphic/chess_piece/single_piece.png +0 -0
  92. package/test/graphic_references/04_icons_graphic/marker/colorized_arrow.png +0 -0
  93. package/test/graphic_references/04_icons_graphic/marker/colorized_square.png +0 -0
  94. package/test/graphic_references/04_icons_graphic/marker/colorized_symbol.png +0 -0
  95. package/test/graphic_references/04_icons_graphic/marker/colorized_text.png +0 -0
  96. package/test/graphic_references/04_icons_graphic/marker/default_arrow.png +0 -0
  97. package/test/graphic_references/04_icons_graphic/marker/default_square.png +0 -0
  98. package/test/graphic_references/04_icons_graphic/marker/default_text.png +0 -0
  99. package/test/graphic_references/04_icons_graphic/marker/invalid_arrow_size.png +0 -0
  100. package/test/graphic_references/04_icons_graphic/marker/invalid_square_size.png +0 -0
  101. package/test/graphic_references/04_icons_graphic/marker/invalid_symbol.png +0 -0
  102. package/test/graphic_references/04_icons_graphic/marker/invalid_text_size.png +0 -0
  103. package/test/graphic_references/04_icons_graphic/marker/wrapped_arrow.png +0 -0
  104. package/test/graphic_references/04_icons_graphic/marker/wrapped_square.png +0 -0
  105. package/test/graphic_references/04_icons_graphic/marker/wrapped_symbol.png +0 -0
  106. package/test/graphic_references/04_icons_graphic/marker/wrapped_text.png +0 -0
  107. package/test/graphic_references/05_chessboard_graphic/annotations/overlap.png +0 -0
  108. package/test/graphic_references/05_chessboard_graphic/annotations/overlap_and_flip.png +0 -0
  109. package/test/graphic_references/05_chessboard_graphic/annotations/with_coordinates.png +0 -0
  110. package/test/graphic_references/05_chessboard_graphic/annotations/with_coordinates_and_flip.png +0 -0
  111. package/test/graphic_references/05_chessboard_graphic/annotations/without_coordinates.png +0 -0
  112. package/test/graphic_references/05_chessboard_graphic/annotations/without_coordinates_and_flip.png +0 -0
  113. package/test/graphic_references/05_chessboard_graphic/base/default.png +0 -0
  114. package/test/graphic_references/05_chessboard_graphic/base/empty.png +0 -0
  115. package/test/graphic_references/05_chessboard_graphic/base/from_fen.png +0 -0
  116. package/test/graphic_references/05_chessboard_graphic/base/from_kokopu_object.png +0 -0
  117. package/test/graphic_references/05_chessboard_graphic/base/parsing_error.png +0 -0
  118. package/test/graphic_references/05_chessboard_graphic/base/wrong_position_type.png +0 -0
  119. package/test/graphic_references/05_chessboard_graphic/chess_variants/chess960.png +0 -0
  120. package/test/graphic_references/05_chessboard_graphic/chess_variants/chess960_with_move.png +0 -0
  121. package/test/graphic_references/05_chessboard_graphic/chess_variants/invalid_variant.png +0 -0
  122. package/test/graphic_references/05_chessboard_graphic/chess_variants/invalid_variant_with_fen.png +0 -0
  123. package/test/graphic_references/05_chessboard_graphic/chess_variants/special_code.png +0 -0
  124. package/test/graphic_references/05_chessboard_graphic/chess_variants/variant_with_std_initial_position.png +0 -0
  125. package/test/graphic_references/05_chessboard_graphic/chess_variants/variant_without_std_initial_position.png +0 -0
  126. package/test/graphic_references/05_chessboard_graphic/flipped/default.png +0 -0
  127. package/test/graphic_references/05_chessboard_graphic/flipped/empty.png +0 -0
  128. package/test/graphic_references/05_chessboard_graphic/flipped/from_fen.png +0 -0
  129. package/test/graphic_references/05_chessboard_graphic/flipped/from_kokopu_object.png +0 -0
  130. package/test/graphic_references/05_chessboard_graphic/flipped/parsing_error.png +0 -0
  131. package/test/graphic_references/05_chessboard_graphic/move/capture.png +0 -0
  132. package/test/graphic_references/05_chessboard_graphic/move/castling_move.png +0 -0
  133. package/test/graphic_references/05_chessboard_graphic/move/default.png +0 -0
  134. package/test/graphic_references/05_chessboard_graphic/move/en-passant.png +0 -0
  135. package/test/graphic_references/05_chessboard_graphic/move/illegal_null-move.png +0 -0
  136. package/test/graphic_references/05_chessboard_graphic/move/no_move_arrow.png +0 -0
  137. package/test/graphic_references/05_chessboard_graphic/move/null-move.png +0 -0
  138. package/test/graphic_references/05_chessboard_graphic/move/parsing_error.png +0 -0
  139. package/test/graphic_references/05_chessboard_graphic/move/promotion.png +0 -0
  140. package/test/graphic_references/05_chessboard_graphic/move/with_forced_move_arrow_and_flip.png +0 -0
  141. package/test/graphic_references/05_chessboard_graphic/move/wrong_move_arrow_color_type.png +0 -0
  142. package/test/graphic_references/05_chessboard_graphic/move/wrong_move_type.png +0 -0
  143. package/test/graphic_references/05_chessboard_graphic/theme/custom_1.png +0 -0
  144. package/test/graphic_references/05_chessboard_graphic/theme/custom_2.png +0 -0
  145. package/test/graphic_references/05_chessboard_graphic/theme/custom_3.png +0 -0
  146. package/test/graphic_references/05_chessboard_graphic/theme/custom_4.png +0 -0
  147. package/test/graphic_references/05_chessboard_graphic/theme/custom_5.png +0 -0
  148. package/test/graphic_references/05_chessboard_graphic/theme/custom_6.png +0 -0
  149. package/test/graphic_references/05_chessboard_graphic/theme/default.png +0 -0
  150. package/test/graphic_references/05_chessboard_graphic/theme/large.png +0 -0
  151. package/test/graphic_references/05_chessboard_graphic/theme/small.png +0 -0
  152. package/test/graphic_references/05_chessboard_graphic/theme/wrong_colorset.png +0 -0
  153. package/test/graphic_references/05_chessboard_graphic/theme/wrong_pieceset.png +0 -0
  154. package/test/graphic_references/05_chessboard_graphic/theme/wrong_square_size_type.png +0 -0
  155. package/test/graphic_references/06_chessboard_animation/base_1/capture.png +0 -0
  156. package/test/graphic_references/06_chessboard_animation/base_1/castling_move.png +0 -0
  157. package/test/graphic_references/06_chessboard_animation/base_1/en-passant.png +0 -0
  158. package/test/graphic_references/06_chessboard_animation/base_1/move_1.png +0 -0
  159. package/test/graphic_references/06_chessboard_animation/base_1/move_2.png +0 -0
  160. package/test/graphic_references/06_chessboard_animation/base_1/promotion.png +0 -0
  161. package/test/graphic_references/06_chessboard_animation/base_2/capture.png +0 -0
  162. package/test/graphic_references/06_chessboard_animation/base_2/castling_move.png +0 -0
  163. package/test/graphic_references/06_chessboard_animation/base_2/en-passant.png +0 -0
  164. package/test/graphic_references/06_chessboard_animation/base_2/move_1.png +0 -0
  165. package/test/graphic_references/06_chessboard_animation/base_2/move_2.png +0 -0
  166. package/test/graphic_references/06_chessboard_animation/base_2/promotion.png +0 -0
  167. package/test/graphic_references/06_chessboard_animation/base_3/capture.png +0 -0
  168. package/test/graphic_references/06_chessboard_animation/base_3/castling_move.png +0 -0
  169. package/test/graphic_references/06_chessboard_animation/base_3/en-passant.png +0 -0
  170. package/test/graphic_references/06_chessboard_animation/base_3/move_1.png +0 -0
  171. package/test/graphic_references/06_chessboard_animation/base_3/move_2.png +0 -0
  172. package/test/graphic_references/06_chessboard_animation/base_3/promotion.png +0 -0
  173. package/test/graphic_references/06_chessboard_animation/on_redraw/final_state.png +0 -0
  174. package/test/graphic_references/06_chessboard_animation/on_redraw/initial_state.png +0 -0
  175. package/test/graphic_references/07_chessboard_interaction/edit_arrows/base_1.png +0 -0
  176. package/test/graphic_references/07_chessboard_interaction/edit_arrows/base_2.png +0 -0
  177. package/test/graphic_references/07_chessboard_interaction/edit_arrows/from_==_to.png +0 -0
  178. package/test/graphic_references/07_chessboard_interaction/edit_arrows/out_of_board.png +0 -0
  179. package/test/graphic_references/07_chessboard_interaction/edit_arrows/over_arrow_marker.png +0 -0
  180. package/test/graphic_references/07_chessboard_interaction/edit_arrows/over_square_marker.png +0 -0
  181. package/test/graphic_references/07_chessboard_interaction/error/edit_color_not_set.png +0 -0
  182. package/test/graphic_references/07_chessboard_interaction/error/wrong_interaction_mode.png +0 -0
  183. package/test/graphic_references/07_chessboard_interaction/move_pieces/after_move.png +0 -0
  184. package/test/graphic_references/07_chessboard_interaction/move_pieces/from_==_to.png +0 -0
  185. package/test/graphic_references/07_chessboard_interaction/move_pieces/move_empty_square.png +0 -0
  186. package/test/graphic_references/07_chessboard_interaction/move_pieces/out_of_board.png +0 -0
  187. package/test/graphic_references/07_chessboard_interaction/move_pieces/over_arrow_marker.png +0 -0
  188. package/test/graphic_references/07_chessboard_interaction/move_pieces/over_empty.png +0 -0
  189. package/test/graphic_references/07_chessboard_interaction/move_pieces/over_non-empty_1.png +0 -0
  190. package/test/graphic_references/07_chessboard_interaction/move_pieces/over_non-empty_2.png +0 -0
  191. package/test/graphic_references/07_chessboard_interaction/move_pieces/over_square_marker.png +0 -0
  192. package/test/graphic_references/07_chessboard_interaction/move_pieces/over_text_marker.png +0 -0
  193. package/test/graphic_references/08_chessboard_play_moves/base/castling_move.png +0 -0
  194. package/test/graphic_references/08_chessboard_play_moves/base/chess960_ambiguous_king_move.png +0 -0
  195. package/test/graphic_references/08_chessboard_play_moves/base/chess960_castling_move_1.png +0 -0
  196. package/test/graphic_references/08_chessboard_play_moves/base/chess960_castling_move_2.png +0 -0
  197. package/test/graphic_references/08_chessboard_play_moves/base/chess960_non-kxr_castling.png +0 -0
  198. package/test/graphic_references/08_chessboard_play_moves/base/from_==_to.png +0 -0
  199. package/test/graphic_references/08_chessboard_play_moves/base/illegal_move.png +0 -0
  200. package/test/graphic_references/08_chessboard_play_moves/base/illegal_position.png +0 -0
  201. package/test/graphic_references/08_chessboard_play_moves/base/out_of_board.png +0 -0
  202. package/test/graphic_references/08_chessboard_play_moves/base/regular_move_1.png +0 -0
  203. package/test/graphic_references/08_chessboard_play_moves/base/regular_move_2.png +0 -0
  204. package/test/graphic_references/08_chessboard_play_moves/base/wrong_color_moved.png +0 -0
  205. package/test/graphic_references/08_chessboard_play_moves/promotions/antichess_promotion.png +0 -0
  206. package/test/graphic_references/08_chessboard_play_moves/promotions/cancel_promotion.png +0 -0
  207. package/test/graphic_references/08_chessboard_play_moves/promotions/regular_promotion_1.png +0 -0
  208. package/test/graphic_references/08_chessboard_play_moves/promotions/regular_promotion_2.png +0 -0
  209. package/test/graphic_references/09_chessboard_small_screens/base/default.png +0 -0
  210. package/test/graphic_references/09_chessboard_small_screens/base/invalid_limits.png +0 -0
  211. package/test/graphic_references/09_chessboard_small_screens/base/width_690.png +0 -0
  212. package/test/graphic_references/09_chessboard_small_screens/base/width_700.png +0 -0
  213. package/test/graphic_references/09_chessboard_small_screens/base/width_710.png +0 -0
  214. package/test/graphic_references/09_chessboard_small_screens/base/width_720.png +0 -0
  215. package/test/graphic_references/09_chessboard_small_screens/base/width_730.png +0 -0
  216. package/test/graphic_references/09_chessboard_small_screens/base/width_740.png +0 -0
  217. package/test/graphic_references/09_chessboard_small_screens/base/width_750.png +0 -0
  218. package/test/graphic_references/09_chessboard_small_screens/top_bottom_components/default_bottom_component.png +0 -0
  219. package/test/graphic_references/09_chessboard_small_screens/top_bottom_components/default_top_component.png +0 -0
  220. package/test/graphic_references/09_chessboard_small_screens/top_bottom_components/reduced_bottom_component.png +0 -0
  221. package/test/graphic_references/09_chessboard_small_screens/top_bottom_components/reduced_top_component.png +0 -0
  222. package/test/graphic_references/10_movetext_graphic/base/game_1.png +0 -0
  223. package/test/graphic_references/10_movetext_graphic/base/game_2.png +0 -0
  224. package/test/graphic_references/10_movetext_graphic/base/game_3.png +0 -0
  225. package/test/graphic_references/10_movetext_graphic/base/game_4.png +0 -0
  226. package/test/graphic_references/10_movetext_graphic/error/pgn_parsing_error_1.png +0 -0
  227. package/test/graphic_references/10_movetext_graphic/error/pgn_parsing_error_2.png +0 -0
  228. package/test/graphic_references/10_movetext_graphic/error/wrong_game_index_1.png +0 -0
  229. package/test/graphic_references/10_movetext_graphic/error/wrong_game_index_2.png +0 -0
  230. package/test/graphic_references/10_movetext_graphic/error/wrong_game_index_type.png +0 -0
  231. package/test/graphic_references/10_movetext_graphic/error/wrong_game_type.png +0 -0
  232. package/test/graphic_references/10_movetext_graphic/format_move/format_text.png +0 -0
  233. package/test/graphic_references/10_movetext_graphic/html/filtered_tags_and_attributes.png +0 -0
  234. package/test/graphic_references/10_movetext_graphic/html/html_in_comments.png +0 -0
  235. package/test/graphic_references/10_movetext_graphic/html/html_in_headers.png +0 -0
  236. package/test/graphic_references/10_movetext_graphic/options/custom_piece_symbols.png +0 -0
  237. package/test/graphic_references/10_movetext_graphic/options/figurine_piece_symbols_and_diagram_options.png +0 -0
  238. package/test/graphic_references/10_movetext_graphic/options/hidden_diagrams.png +0 -0
  239. package/test/graphic_references/10_movetext_graphic/options/localized_piece_symbols.png +0 -0
  240. package/test/graphic_references/10_movetext_graphic/options/other_diagram_options.png +0 -0
  241. package/test/graphic_references/10_movetext_graphic/options/wrong_diagram_options_1.png +0 -0
  242. package/test/graphic_references/10_movetext_graphic/options/wrong_diagram_options_2.png +0 -0
  243. package/test/graphic_references/10_movetext_graphic/options/wrong_piece_symbol_value.png +0 -0
  244. package/test/graphic_references/11_movetext_interaction/error/wrong_interaction_mode.png +0 -0
  245. package/test/graphic_references/11_movetext_interaction/select_moves/click_on_disabled.png +0 -0
  246. package/test/graphic_references/11_movetext_interaction/select_moves/click_on_unselected.png +0 -0
  247. package/test/graphic_references/11_movetext_interaction/select_moves/click_on_unselected_without_callback.png +0 -0
  248. package/test/graphic_references/11_movetext_interaction/select_moves/click_on_with_variations.png +0 -0
  249. package/test/graphic_references/12_navigation_board_base/controlled/default.png +0 -0
  250. package/test/graphic_references/12_navigation_board_base/controlled/forbidden_navigation_0.png +0 -0
  251. package/test/graphic_references/12_navigation_board_base/controlled/forbidden_navigation_1.png +0 -0
  252. package/test/graphic_references/12_navigation_board_base/controlled/invalid_node_id.png +0 -0
  253. package/test/graphic_references/12_navigation_board_base/controlled/no_callback_defined_0.png +0 -0
  254. package/test/graphic_references/12_navigation_board_base/controlled/no_callback_defined_1.png +0 -0
  255. package/test/graphic_references/12_navigation_board_base/controlled/overriding_initial_node_id.png +0 -0
  256. package/test/graphic_references/12_navigation_board_base/controlled/regular_navigation_0.png +0 -0
  257. package/test/graphic_references/12_navigation_board_base/controlled/regular_navigation_1.png +0 -0
  258. package/test/graphic_references/12_navigation_board_base/controlled/regular_navigation_2.png +0 -0
  259. package/test/graphic_references/12_navigation_board_base/controlled/regular_navigation_3.png +0 -0
  260. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_beginning_0.png +0 -0
  261. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_beginning_1.png +0 -0
  262. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_beginning_2.png +0 -0
  263. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_end_0.png +0 -0
  264. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_end_1.png +0 -0
  265. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_end_2.png +0 -0
  266. package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_at_end.png +0 -0
  267. package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_at_specific_id.png +0 -0
  268. package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_default.png +0 -0
  269. package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_default_with_game_index.png +0 -0
  270. package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_on_null-move.png +0 -0
  271. package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_0.png +0 -0
  272. package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_1.png +0 -0
  273. package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_2.png +0 -0
  274. package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_3.png +0 -0
  275. package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_4.png +0 -0
  276. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_flipping_0.png +0 -0
  277. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_flipping_1.png +0 -0
  278. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_0.png +0 -0
  279. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_1.png +0 -0
  280. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_2.png +0 -0
  281. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_3.png +0 -0
  282. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_4.png +0 -0
  283. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_5.png +0 -0
  284. package/test/graphic_references/13_navigation_board_graphic/additional_buttons/error_1.png +0 -0
  285. package/test/graphic_references/13_navigation_board_graphic/additional_buttons/error_2.png +0 -0
  286. package/test/graphic_references/13_navigation_board_graphic/additional_buttons/multiple_buttons.png +0 -0
  287. package/test/graphic_references/13_navigation_board_graphic/additional_buttons/single_button.png +0 -0
  288. package/test/graphic_references/13_navigation_board_graphic/error/pgn_parsing_error.png +0 -0
  289. package/test/graphic_references/13_navigation_board_graphic/error/wrong_game_type.png +0 -0
  290. package/test/graphic_references/13_navigation_board_graphic/theme/custom_1.png +0 -0
  291. package/test/graphic_references/13_navigation_board_graphic/theme/custom_2.png +0 -0
  292. package/test/graphic_references/13_navigation_board_graphic/theme/large.png +0 -0
  293. package/test/graphic_references/13_navigation_board_graphic/theme/small.png +0 -0
  294. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_1_move_acknowledging_is-playing_changes.png +0 -0
  295. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_1_move_not_acknowledging_is-playing_changes.png +0 -0
  296. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_2_moves_acknowledging_node_changes.png +0 -0
  297. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_2_moves_not_acknowledging_node_changes.png +0 -0
  298. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_reaching_the_end.png +0 -0
  299. package/test/graphic_references/14_navigation_board_autoplay/controlled/already_at_the_end.png +0 -0
  300. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_acknowledging_is-playing_changes.png +0 -0
  301. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_acknowledging_node_changes.png +0 -0
  302. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_at_the_end.png +0 -0
  303. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_close_to_end.png +0 -0
  304. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_not_acknowledging_is-playing_changes.png +0 -0
  305. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_not_acknowledging_node_changes.png +0 -0
  306. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_2_moves_from_beginning_after_stop.png +0 -0
  307. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_2_moves_from_beginning_before_stop.png +0 -0
  308. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_reaching_the_end_after_stop.png +0 -0
  309. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_reaching_the_end_before_stop.png +0 -0
  310. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/initial_state_close_to_end.png +0 -0
  311. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/initial_state_default.png +0 -0
  312. package/test/graphic_test_app/03_error_box_graphic/base.tsx +18 -6
  313. package/test/graphic_test_app/04_icons_graphic/chess_piece.tsx +12 -3
  314. package/test/graphic_test_app/04_icons_graphic/marker.tsx +14 -4
  315. package/test/graphic_test_app/05_chessboard_graphic/annotations.tsx +7 -3
  316. package/test/graphic_test_app/05_chessboard_graphic/base.tsx +1 -1
  317. package/test/graphic_test_app/05_chessboard_graphic/move.tsx +9 -2
  318. package/test/graphic_test_app/05_chessboard_graphic/theme.tsx +1 -1
  319. package/test/graphic_test_app/06_chessboard_animation/on_redraw.tsx +8 -6
  320. package/test/graphic_test_app/07_chessboard_interaction/click_squares.tsx +4 -2
  321. package/test/graphic_test_app/07_chessboard_interaction/edit_arrows.tsx +4 -2
  322. package/test/graphic_test_app/07_chessboard_interaction/error.tsx +3 -1
  323. package/test/graphic_test_app/07_chessboard_interaction/move_pieces.tsx +4 -2
  324. package/test/graphic_test_app/08_chessboard_play_moves/base.tsx +12 -6
  325. package/test/graphic_test_app/08_chessboard_play_moves/promotions.tsx +12 -3
  326. package/test/graphic_test_app/09_chessboard_small_screens/base.tsx +3 -1
  327. package/test/graphic_test_app/09_chessboard_small_screens/top_bottom_components.tsx +8 -6
  328. package/test/graphic_test_app/10_movetext_graphic/error.tsx +1 -1
  329. package/test/graphic_test_app/10_movetext_graphic/options.tsx +16 -6
  330. package/test/graphic_test_app/11_movetext_interaction/error.tsx +4 -1
  331. package/test/graphic_test_app/13_navigation_board_graphic/additional_buttons.tsx +23 -16
  332. package/test/graphic_test_app/13_navigation_board_graphic/error.tsx +1 -1
  333. package/test/graphic_test_app/14_navigation_board_autoplay/controlled.tsx +34 -18
  334. package/test/graphic_test_app/common/test_app.tsx +4 -4
  335. package/.eslintrc.yml +0 -83
  336. package/test/.eslintrc.yml +0 -8
  337. package/test/graphic_test_app/.eslintrc.yml +0 -3
@@ -31,10 +31,10 @@ import { DEFAULT_PIECESET } from './piecesets';
31
31
  * Define a limit applicable to the parameters of a {@link Chessboard} on small-screen devices.
32
32
  */
33
33
  export interface SmallScreenLimit {
34
- width: number;
35
- squareSize?: number;
36
- coordinateVisible?: boolean;
37
- turnVisible?: boolean;
34
+ width: number,
35
+ squareSize?: number,
36
+ coordinateVisible?: boolean,
37
+ turnVisible?: boolean,
38
38
  }
39
39
 
40
40
 
@@ -46,27 +46,27 @@ export interface StaticBoardGraphicProps {
46
46
  /**
47
47
  * Size of the squares (in pixels). Must be an integer between `Chessboard.minSquareSize()` and `Chessboard.maxSquareSize()`.
48
48
  */
49
- squareSize: number;
49
+ squareSize: number,
50
50
 
51
51
  /**
52
52
  * Whether the row and column coordinates are visible or not.
53
53
  */
54
- coordinateVisible: boolean;
54
+ coordinateVisible: boolean,
55
55
 
56
56
  /**
57
57
  * Whether the turn flag is visible or not.
58
58
  */
59
- turnVisible: boolean;
59
+ turnVisible: boolean,
60
60
 
61
61
  /**
62
62
  * Color theme ID. Must be a property of `Chessboard.colorsets()`.
63
63
  */
64
- colorset: string;
64
+ colorset: string,
65
65
 
66
66
  /**
67
67
  * Piece theme ID. Must be a property of `Chessboard.piecesets()`.
68
68
  */
69
- pieceset: string;
69
+ pieceset: string,
70
70
 
71
71
  /**
72
72
  * Limits applicable on small-screen devices. For instance, if set to
@@ -81,7 +81,7 @@ export interface StaticBoardGraphicProps {
81
81
  * will be limited to 24 and the row and column coordinates will always be hidden (whatever the value of the
82
82
  * `coordinateVisible` attribute).
83
83
  */
84
- smallScreenLimits?: SmallScreenLimit[];
84
+ smallScreenLimits?: SmallScreenLimit[],
85
85
  }
86
86
 
87
87
 
@@ -93,17 +93,17 @@ export interface DynamicBoardGraphicProps extends StaticBoardGraphicProps {
93
93
  /**
94
94
  * Whether moves are highlighted with an arrow or not.
95
95
  */
96
- moveArrowVisible: boolean;
96
+ moveArrowVisible: boolean,
97
97
 
98
98
  /**
99
99
  * Color of the move arrow.
100
100
  */
101
- moveArrowColor: AnnotationColor;
101
+ moveArrowColor: AnnotationColor,
102
102
 
103
103
  /**
104
104
  * Whether moves are animated or not.
105
105
  */
106
- animated: boolean;
106
+ animated: boolean,
107
107
  }
108
108
 
109
109
 
@@ -49,36 +49,36 @@ export interface ChessboardProps extends DynamicBoardGraphicProps {
49
49
  * [game variant](https://kokopu.yo35.org/docs/current/types/GameVariant.html) supported by Kokopu. For instance:
50
50
  * `'chess960:nrkbqrbn/pppppppp/8/8/8/8/PPPPPPPP/NRKBQRBN w KQkq - 0 1'`.
51
51
  */
52
- position: Position | string;
52
+ position: Position | string,
53
53
 
54
54
  /**
55
55
  * Displayed move (optional), defined either as a [kokopu.MoveDescriptor](https://kokopu.yo35.org/docs/current/classes/MoveDescriptor.html) object
56
56
  * or as a [SAN string](https://en.wikipedia.org/wiki/Algebraic_notation_(chess)) (e.g. `'Nf3'`). Use `'--'` for a null-move.
57
57
  * In all cases, the move must be a legal move in position defined in attribute `position`.
58
58
  */
59
- move?: MoveDescriptor | string;
59
+ move?: MoveDescriptor | string,
60
60
 
61
61
  /**
62
62
  * Square markers, defined as a {@link SquareMarkerSet} (e.g. `{ e4: 'g', d5: 'r' }`) or as a comma-separated CSL string (e.g. `'Rd5,Ge4'`).
63
63
  */
64
- squareMarkers?: SquareMarkerSet | string;
64
+ squareMarkers?: SquareMarkerSet | string,
65
65
 
66
66
  /**
67
67
  * Text markers, defined as a {@link TextMarkerSet} (e.g. `{ e4: { symbol: 'A', color: 'g' }, d5: { symbol: 'z', color: 'r' }}`)
68
68
  * or as a comma-separated CTL string (e.g. `'Rzd5,GAe4'`).
69
69
  */
70
- textMarkers?: TextMarkerSet | string;
70
+ textMarkers?: TextMarkerSet | string,
71
71
 
72
72
  /**
73
73
  * Arrow markers, defined as a {@link ArrowMarkerSet} (e.g. `{ e2e4: 'g', g8f6: 'r', g8h6: 'y' }`)
74
74
  * or as a comma-separated CAL string (e.g. `'Ge2e4,Rg8f6,Yg8h6'`).
75
75
  */
76
- arrowMarkers?: ArrowMarkerSet | string;
76
+ arrowMarkers?: ArrowMarkerSet | string,
77
77
 
78
78
  /**
79
79
  * Whether the board is flipped (i.e. seen from Black's point of view) or not.
80
80
  */
81
- flipped: boolean;
81
+ flipped: boolean,
82
82
 
83
83
  /**
84
84
  * Type of action allowed with the mouse on the chessboard. If undefined, then the user cannot interact with the component.
@@ -93,39 +93,39 @@ export interface ChessboardProps extends DynamicBoardGraphicProps {
93
93
  /**
94
94
  * Color of the edited arrow. Mandatory if `interactionMode === 'editArrows'`, ignored otherwise.
95
95
  */
96
- editedArrowColor?: AnnotationColor;
96
+ editedArrowColor?: AnnotationColor,
97
97
 
98
98
  /**
99
99
  * Callback invoked when a piece is moved through drag&drop (only if `interactionMode` is set to `'movePieces'`).
100
100
  */
101
- onPieceMoved?: (from: Square, to: Square) => void;
101
+ onPieceMoved?: (from: Square, to: Square) => void,
102
102
 
103
103
  /**
104
104
  * Callback invoked when the user clicks on a square (only if `interactionMode` is set to `'clickSquares'`).
105
105
  */
106
- onSquareClicked?: (square: Square) => void;
106
+ onSquareClicked?: (square: Square) => void,
107
107
 
108
108
  /**
109
109
  * Callback invoked when an arrow is dragged (only if `interactionMode` is set to `'editArrows'`).
110
110
  */
111
- onArrowEdited?: (from: Square, to: Square) => void;
111
+ onArrowEdited?: (from: Square, to: Square) => void,
112
112
 
113
113
  /**
114
114
  * Callback invoked when a move is played (only if `interactionMode` is set to `'playMoves'`).
115
115
  */
116
- onMovePlayed?: (move: string) => void;
116
+ onMovePlayed?: (move: string) => void,
117
117
 
118
118
  /**
119
119
  * Optional component, to be rendered above the chessboard, and customized with the same square-size / coordinate-visible / turn-visible
120
120
  * parameter values as actually used for the chessboard (which may be different from what is defined in props because of small-screen limits).
121
121
  */
122
- topComponent?: (attr: Pick<StaticBoardGraphicProps, 'squareSize' | 'coordinateVisible' | 'turnVisible'>) => JSX.Element;
122
+ topComponent?: (attr: Pick<StaticBoardGraphicProps, 'squareSize' | 'coordinateVisible' | 'turnVisible'>) => JSX.Element,
123
123
 
124
124
  /**
125
125
  * Optional component, to be rendered below the chessboard, and customized with the same square-size / coordinate-visible / turn-visible
126
126
  * parameter values as actually used for the chessboard (which may be different from what is defined in props because of small-screen limits).
127
127
  */
128
- bottomComponent?: (attr: Pick<StaticBoardGraphicProps, 'squareSize' | 'coordinateVisible' | 'turnVisible'>) => JSX.Element;
128
+ bottomComponent?: (attr: Pick<StaticBoardGraphicProps, 'squareSize' | 'coordinateVisible' | 'turnVisible'>) => JSX.Element,
129
129
  }
130
130
 
131
131
 
@@ -136,12 +136,12 @@ type AuxilliaryComponentSizeFunction = (attr: Pick<StaticBoardGraphicProps, 'squ
136
136
  * Attributes for method `Chessboard.size()`.
137
137
  */
138
138
  export interface ChessboardSizeAttr {
139
- squareSize?: ChessboardProps['squareSize'];
140
- coordinateVisible?: ChessboardProps['coordinateVisible'];
141
- turnVisible?: ChessboardProps['turnVisible'];
142
- smallScreenLimits?: ChessboardProps['smallScreenLimits'];
143
- topComponent?: AuxilliaryComponentSizeFunction;
144
- bottomComponent?: AuxilliaryComponentSizeFunction;
139
+ squareSize?: ChessboardProps['squareSize'],
140
+ coordinateVisible?: ChessboardProps['coordinateVisible'],
141
+ turnVisible?: ChessboardProps['turnVisible'],
142
+ smallScreenLimits?: ChessboardProps['smallScreenLimits'],
143
+ topComponent?: AuxilliaryComponentSizeFunction,
144
+ bottomComponent?: AuxilliaryComponentSizeFunction,
145
145
  }
146
146
 
147
147
 
@@ -149,16 +149,16 @@ export interface ChessboardSizeAttr {
149
149
  * Attributes for method `Chessboard.adaptSquareSize()`.
150
150
  */
151
151
  export interface ChessboardAdaptSquareSizeAttr {
152
- coordinateVisible?: ChessboardProps['coordinateVisible'];
153
- turnVisible?: ChessboardProps['turnVisible'];
154
- smallScreenLimits?: ChessboardProps['smallScreenLimits'];
155
- topComponent?: AuxilliaryComponentSizeFunction;
156
- bottomComponent?: AuxilliaryComponentSizeFunction;
152
+ coordinateVisible?: ChessboardProps['coordinateVisible'],
153
+ turnVisible?: ChessboardProps['turnVisible'],
154
+ smallScreenLimits?: ChessboardProps['smallScreenLimits'],
155
+ topComponent?: AuxilliaryComponentSizeFunction,
156
+ bottomComponent?: AuxilliaryComponentSizeFunction,
157
157
  }
158
158
 
159
159
 
160
160
  interface ChessboardState {
161
- windowWidth: number;
161
+ windowWidth: number,
162
162
  }
163
163
 
164
164
 
@@ -256,18 +256,21 @@ export class Chessboard extends React.Component<ChessboardProps, ChessboardState
256
256
  // (mandatory to ensure that the move animation works properly and that the internal state of the component remains consistent).
257
257
  const key = `${position.variant()}|${position.fen()}|${move ? position.notation(move) : ''}`;
258
258
 
259
- return (<>
260
- {this.props.topComponent ? this.props.topComponent(auxilliaryComponentAttr) : undefined}
261
- <ChessboardImpl key={key}
262
- position={position} move={move} squareMarkers={sqm} textMarkers={txtm} arrowMarkers={arm} flipped={flipped}
263
- squareSize={actualSquareSize} coordinateVisible={actualCoordinateVisible} turnVisible={actualTurnVisible}
264
- moveArrowVisible={moveArrowVisible} moveArrowColor={this.props.moveArrowColor} animated={animated}
265
- colorset={colorset} pieceset={pieceset}
266
- interactionMode={interactionMode} editedArrowColor={this.props.editedArrowColor}
267
- onPieceMoved={onPieceMoved} onSquareClicked={onSquareClicked} onArrowEdited={onArrowEdited} onMovePlayed={onMovePlayed}
268
- />
269
- {this.props.bottomComponent ? this.props.bottomComponent(auxilliaryComponentAttr) : undefined}
270
- </>);
259
+ return (
260
+ <>
261
+ {this.props.topComponent ? this.props.topComponent(auxilliaryComponentAttr) : undefined}
262
+ <ChessboardImpl
263
+ key={key}
264
+ position={position} move={move} squareMarkers={sqm} textMarkers={txtm} arrowMarkers={arm} flipped={flipped}
265
+ squareSize={actualSquareSize} coordinateVisible={actualCoordinateVisible} turnVisible={actualTurnVisible}
266
+ moveArrowVisible={moveArrowVisible} moveArrowColor={this.props.moveArrowColor} animated={animated}
267
+ colorset={colorset} pieceset={pieceset}
268
+ interactionMode={interactionMode} editedArrowColor={this.props.editedArrowColor}
269
+ onPieceMoved={onPieceMoved} onSquareClicked={onSquareClicked} onArrowEdited={onArrowEdited} onMovePlayed={onMovePlayed}
270
+ />
271
+ {this.props.bottomComponent ? this.props.bottomComponent(auxilliaryComponentAttr) : undefined}
272
+ </>
273
+ );
271
274
  }
272
275
 
273
276
  private getInteractionModeAndValidateEditedArrowColor() {
@@ -294,7 +297,8 @@ export class Chessboard extends React.Component<ChessboardProps, ChessboardState
294
297
  () => new IllegalArgument('Chessboard.size()', 'attr'));
295
298
 
296
299
  // Sanitize the arguments.
297
- let actualSquareSize = squareSize === undefined ? DEFAULT_SQUARE_SIZE :
300
+ let actualSquareSize = squareSize === undefined ?
301
+ DEFAULT_SQUARE_SIZE :
298
302
  sanitizeBoundedInteger(squareSize, MIN_SQUARE_SIZE, MAX_SQUARE_SIZE, () => new IllegalArgument('Chessboard.size()', 'squareSize'));
299
303
  let actualCoordinateVisible = coordinateVisible === undefined ? true : sanitizeBoolean(coordinateVisible);
300
304
  let actualTurnVisible = turnVisible === undefined ? true : sanitizeBoolean(turnVisible);
@@ -530,7 +534,7 @@ function sanitizeSmallScreenLimits(smallScreenLimits: SmallScreenLimit[] | undef
530
534
  width: sanitizeInteger(smallScreenLimit.width, exceptionBuilder),
531
535
  squareSize: sanitizeOptional(smallScreenLimit.squareSize, val => sanitizeBoundedInteger(val, MIN_SQUARE_SIZE, MAX_SQUARE_SIZE, exceptionBuilder)),
532
536
  coordinateVisible: sanitizeOptional(smallScreenLimit.coordinateVisible, sanitizeBoolean),
533
- turnVisible: sanitizeOptional(smallScreenLimit.turnVisible, sanitizeBoolean)
537
+ turnVisible: sanitizeOptional(smallScreenLimit.turnVisible, sanitizeBoolean),
534
538
  };
535
539
  });
536
540
  }
@@ -52,44 +52,44 @@ const FILE_LABELS = 'abcdefgh';
52
52
 
53
53
  interface ChessboardImplProps {
54
54
 
55
- position: Position;
56
- move?: MoveDescriptor;
57
-
58
- squareMarkers?: SquareMarkerSet;
59
- textMarkers?: TextMarkerSet;
60
- arrowMarkers?: ArrowMarkerSet;
61
-
62
- flipped: boolean;
63
- squareSize: number;
64
- coordinateVisible: boolean;
65
- turnVisible: boolean;
66
- moveArrowVisible: boolean;
67
- moveArrowColor: AnnotationColor;
68
- animated: boolean;
69
- colorset: Colorset;
70
- pieceset: Pieceset;
55
+ position: Position,
56
+ move?: MoveDescriptor,
57
+
58
+ squareMarkers?: SquareMarkerSet,
59
+ textMarkers?: TextMarkerSet,
60
+ arrowMarkers?: ArrowMarkerSet,
61
+
62
+ flipped: boolean,
63
+ squareSize: number,
64
+ coordinateVisible: boolean,
65
+ turnVisible: boolean,
66
+ moveArrowVisible: boolean,
67
+ moveArrowColor: AnnotationColor,
68
+ animated: boolean,
69
+ colorset: Colorset,
70
+ pieceset: Pieceset,
71
71
 
72
72
  interactionMode?: 'movePieces' | 'clickSquares' | 'editArrows' | 'playMoves',
73
- editedArrowColor?: AnnotationColor; // mandatory if `interactionMode === 'editArrows'`
73
+ editedArrowColor?: AnnotationColor, // mandatory if `interactionMode === 'editArrows'`
74
74
 
75
- onPieceMoved?: (from: Square, to: Square) => void;
76
- onSquareClicked?: (square: Square) => void;
77
- onArrowEdited?: (from: Square, to: Square) => void;
78
- onMovePlayed?: (move: string) => void;
75
+ onPieceMoved?: (from: Square, to: Square) => void,
76
+ onSquareClicked?: (square: Square) => void,
77
+ onArrowEdited?: (from: Square, to: Square) => void,
78
+ onMovePlayed?: (move: string) => void,
79
79
  }
80
80
 
81
81
 
82
82
  interface ChessboardImplState {
83
- inhibitedSquare?: Square;
84
- draggedSquare?: Square;
85
- hoveredSquare?: Square;
86
- dragPosition?: { x: number, y: number }; // mandatory if `dragged` is defined
87
- cursorOffset?: { x: number, y: number }; // mandatory if `dragged` is defined
83
+ inhibitedSquare?: Square,
84
+ draggedSquare?: Square,
85
+ hoveredSquare?: Square,
86
+ dragPosition?: { x: number, y: number }, // mandatory if `dragged` is defined
87
+ cursorOffset?: { x: number, y: number }, // mandatory if `dragged` is defined
88
88
  promotionDrawer?: {
89
89
  origin: Square,
90
90
  buttons: Piece[],
91
91
  builder: (promotion: Piece) => string,
92
- };
92
+ },
93
93
  }
94
94
 
95
95
 
@@ -309,12 +309,20 @@ export class ChessboardImpl extends React.Component<ChessboardImplProps, Chessbo
309
309
  });
310
310
  return (
311
311
  <>
312
- <rect className="kokopu-handle" x={0} y={0} width={this.props.squareSize * 8} height={this.props.squareSize * 8}
313
- onClick={() => this.handleDrawerCancelButtonClicked()} />
314
- <rect x={x} y={y0} width={this.props.squareSize} height={this.props.squareSize * this.state.promotionDrawer.buttons.length}
315
- fill={this.props.colorset.b} />
316
- <rect x={x} y={y0} width={this.props.squareSize} height={this.props.squareSize * this.state.promotionDrawer.buttons.length}
317
- className="kokopu-drawerMask" fill={this.props.colorset.w} />
312
+ <rect
313
+ className="kokopu-handle"
314
+ x={0} y={0} width={this.props.squareSize * 8} height={this.props.squareSize * 8}
315
+ onClick={() => this.handleDrawerCancelButtonClicked()}
316
+ />
317
+ <rect
318
+ x={x} y={y0} width={this.props.squareSize} height={this.props.squareSize * this.state.promotionDrawer.buttons.length}
319
+ fill={this.props.colorset.b}
320
+ />
321
+ <rect
322
+ className="kokopu-drawerMask"
323
+ x={x} y={y0} width={this.props.squareSize} height={this.props.squareSize * this.state.promotionDrawer.buttons.length}
324
+ fill={this.props.colorset.w}
325
+ />
318
326
  {buttons}
319
327
  </>
320
328
  );
@@ -329,7 +337,9 @@ export class ChessboardImpl extends React.Component<ChessboardImplProps, Chessbo
329
337
  if (dragEnabledForMovePieces || dragEnabledForEditArrows || dragEnabledForPlayMoves) {
330
338
  return (
331
339
  <Draggable
332
- key={'handle-' + sq} x={x} y={y} width={this.props.squareSize} height={this.props.squareSize} isArrowHandle={dragEnabledForEditArrows}
340
+ key={'handle-' + sq}
341
+ x={x} y={y} width={this.props.squareSize} height={this.props.squareSize}
342
+ isArrowHandle={dragEnabledForEditArrows}
333
343
  onDragStart={(x0, y0) => this.handleDragStart(sq, x0, y0)}
334
344
  onDrag={(dx, dy) => this.handleDrag(sq, dx, dy)}
335
345
  onDragStop={(dx, dy) => this.handleDragStop(sq, dx, dy)}
@@ -340,7 +350,8 @@ export class ChessboardImpl extends React.Component<ChessboardImplProps, Chessbo
340
350
  else if (this.props.interactionMode === 'clickSquares') {
341
351
  return (
342
352
  <rect
343
- key={'handle-' + sq} className="kokopu-handle kokopu-clickable" x={x} y={y} width={this.props.squareSize} height={this.props.squareSize}
353
+ key={'handle-' + sq} className="kokopu-handle kokopu-clickable"
354
+ x={x} y={y} width={this.props.squareSize} height={this.props.squareSize}
344
355
  onClick={() => this.handleSquareClicked(sq)}
345
356
  />
346
357
  );
@@ -357,7 +368,9 @@ export class ChessboardImpl extends React.Component<ChessboardImplProps, Chessbo
357
368
  return Object.entries(this.props.squareMarkers).map(([ sq, color ]) => {
358
369
  const { x, y } = this.getSquareCoordinates(sq as Square);
359
370
  return (
360
- <rect key={'sqm-' + sq} className="kokopu-annotation" x={x} y={y} width={this.props.squareSize} height={this.props.squareSize}
371
+ <rect
372
+ key={'sqm-' + sq} className="kokopu-annotation"
373
+ x={x} y={y} width={this.props.squareSize} height={this.props.squareSize}
361
374
  fill={this.getColorForAnnotation(color)}
362
375
  />
363
376
  );
@@ -401,8 +414,10 @@ export class ChessboardImpl extends React.Component<ChessboardImplProps, Chessbo
401
414
  yTo += Math.sign(yFrom - yTo) * ARROW_TIP_OFFSET_FACTOR * this.props.squareSize;
402
415
  return (
403
416
  <line
404
- key={'arm-' + vect} className="kokopu-annotation kokopu-arrow" x1={xFrom} y1={yFrom} x2={xTo} y2={yTo} strokeWidth={strokeWidth}
405
- stroke={this.getColorForAnnotation(color)} markerEnd={`url(#${this.getArrowTipId(color)})`}
417
+ key={'arm-' + vect} className="kokopu-annotation kokopu-arrow"
418
+ x1={xFrom} y1={yFrom} x2={xTo} y2={yTo}
419
+ strokeWidth={strokeWidth} stroke={this.getColorForAnnotation(color)}
420
+ markerEnd={`url(#${this.getArrowTipId(color)})`}
406
421
  />
407
422
  );
408
423
  });
@@ -425,8 +440,10 @@ export class ChessboardImpl extends React.Component<ChessboardImplProps, Chessbo
425
440
  const y = yTo * motionCursor + yFrom * (1 - motionCursor);
426
441
  return (
427
442
  <line
428
- className="kokopu-annotation kokopu-arrow" x1={xFrom} y1={yFrom} x2={x} y2={y} strokeWidth={strokeWidth}
429
- stroke={this.getColorForAnnotation(this.props.moveArrowColor)} markerEnd={`url(#${this.getArrowTipId(this.props.moveArrowColor)})`}
443
+ className="kokopu-annotation kokopu-arrow"
444
+ x1={xFrom} y1={yFrom} x2={x} y2={y}
445
+ strokeWidth={strokeWidth} stroke={this.getColorForAnnotation(this.props.moveArrowColor)}
446
+ markerEnd={`url(#${this.getArrowTipId(this.props.moveArrowColor)})`}
430
447
  />
431
448
  );
432
449
  }
@@ -478,7 +495,7 @@ export class ChessboardImpl extends React.Component<ChessboardImplProps, Chessbo
478
495
  }
479
496
 
480
497
  private handleDragStop(sq: Square, dx: number, dy: number) {
481
- const { x, y } = this.getSquareCoordinates( sq);
498
+ const { x, y } = this.getSquareCoordinates(sq);
482
499
  const targetSq = this.getSquareAt(x + dx + this.state.cursorOffset!.x, y + dy + this.state.cursorOffset!.y);
483
500
  this.setState({
484
501
  inhibitedSquare: undefined,
@@ -30,65 +30,65 @@ interface DraggableProps {
30
30
  /**
31
31
  * Initial X coordinate of the handle.
32
32
  */
33
- x: number;
33
+ x: number,
34
34
 
35
35
  /**
36
36
  * Initial Y coordinate of the handle.
37
37
  */
38
- y: number;
38
+ y: number,
39
39
 
40
40
  /**
41
41
  * Width of the handle.
42
42
  */
43
- width: number;
43
+ width: number,
44
44
 
45
45
  /**
46
46
  * Height of the handle.
47
47
  */
48
- height: number;
48
+ height: number,
49
49
 
50
50
  /**
51
51
  * `true` if the handle corresponds to a draggable arrow, `false` if it corresponds to a draggable piece.
52
52
  */
53
- isArrowHandle: boolean;
53
+ isArrowHandle: boolean,
54
54
 
55
55
  /**
56
56
  * Callback invoked when the drag starts. `x0` and `y0` correspond to the coordinates (relative to the hande) at which the drag has been initiated.
57
57
  */
58
- onDragStart?: (x0: number, y0: number) => void;
58
+ onDragStart?: (x0: number, y0: number) => void,
59
59
 
60
60
  /**
61
61
  * Callback invoked during the drag. `dx` and `dy` correspond to the coordinates of the drag translation vector.
62
62
  */
63
- onDrag?: (dx: number, dy: number) => void;
63
+ onDrag?: (dx: number, dy: number) => void,
64
64
 
65
65
  /**
66
66
  * Callback invoked when the drag stops. `dx` and `dy` correspond to the coordinates of the drag translation vector.
67
67
  */
68
- onDragStop?: (dx: number, dy: number) => void;
68
+ onDragStop?: (dx: number, dy: number) => void,
69
69
 
70
70
  /**
71
71
  * Callback invoked when the drag is canceled.
72
72
  */
73
- onDragCanceled?: () => void;
73
+ onDragCanceled?: () => void,
74
74
  }
75
75
 
76
76
 
77
77
  interface DragData {
78
- originX: number;
79
- originY: number;
78
+ originX: number,
79
+ originY: number,
80
80
  }
81
81
 
82
82
 
83
83
  interface PageCoordinates {
84
- pageX: number;
85
- pageY: number;
84
+ pageX: number,
85
+ pageY: number,
86
86
  }
87
87
 
88
88
 
89
89
  interface ClientCoordinates {
90
- clientX: number;
91
- clientY: number;
90
+ clientX: number,
91
+ clientY: number,
92
92
  }
93
93
 
94
94
 
@@ -32,17 +32,17 @@ interface MotionProps {
32
32
  /**
33
33
  * Duration of the animation. Must be > 0.
34
34
  */
35
- duration: number;
35
+ duration: number,
36
36
 
37
37
  /**
38
38
  * Factory for the content being animated. The animation cursor is guaranteed to be valued between 0 and 1 inclusive.
39
39
  */
40
- children: (cursor: number) => React.ReactNode;
40
+ children: (cursor: number) => React.ReactNode,
41
41
  }
42
42
 
43
43
 
44
44
  interface MotionState {
45
- cursor: number;
45
+ cursor: number,
46
46
  }
47
47
 
48
48
 
@@ -63,7 +63,7 @@ export class Motion extends React.Component<MotionProps, MotionState> {
63
63
  this.cursorStop = 1;
64
64
 
65
65
  // WARNING: this hack exists only for testing purposes. DO NOT USE IT IN PRODUCTION.
66
- const debugCursorStop = window[ /* eslint-disable @typescript-eslint/no-explicit-any */ DEBUG_KEY as any /* eslint-enable @typescript-eslint/no-explicit-any */ ];
66
+ const debugCursorStop = window[/* eslint-disable @typescript-eslint/no-explicit-any */ DEBUG_KEY as any /* eslint-enable */];
67
67
  if (typeof debugCursorStop === 'number' && debugCursorStop >= 0 && debugCursorStop <= 1) {
68
68
  this.cursorStop = debugCursorStop;
69
69
  }
@@ -40,27 +40,27 @@ export interface ErrorBoxProps {
40
40
  /**
41
41
  * Title of the error box.
42
42
  */
43
- title: string;
43
+ title: string,
44
44
 
45
45
  /**
46
46
  * Additional message providing details about the error.
47
47
  */
48
- message: string;
48
+ message: string,
49
49
 
50
50
  /**
51
51
  * Raw text whose processing results in the error.
52
52
  */
53
- text?: string;
53
+ text?: string,
54
54
 
55
55
  /**
56
56
  * Index of the character within `text` that results in the error.
57
57
  */
58
- errorIndex?: number;
58
+ errorIndex?: number,
59
59
 
60
60
  /**
61
61
  * Index (1-based) of the line in which is the character that results in the error.
62
62
  */
63
- lineNumber?: number;
63
+ lineNumber?: number,
64
64
  }
65
65
 
66
66
 
@@ -36,8 +36,8 @@ import { ErrorBox } from './ErrorBox';
36
36
  * Try to interpret the given object as a chess position.
37
37
  */
38
38
  export function parsePosition(position: Position | string, componentName: string):
39
- { error: true, errorBox: JSX.Element } | { error: false, position: Position }
40
- {
39
+ { error: true, errorBox: JSX.Element } | { error: false, position: Position } {
40
+
41
41
  if (position instanceof Position) {
42
42
  return { error: false, position: position };
43
43
  }
@@ -84,8 +84,8 @@ function splitGameVariantAndFEN(position: string): { variant: GameVariant, fen:
84
84
  * Try to interpret the given object `move` as a move descriptor based on the given position.
85
85
  */
86
86
  export function parseMove(position: Position, move: MoveDescriptor | string | undefined, componentName: string):
87
- { error: true, errorBox: JSX.Element } | { error: false, type: 'none' | 'null-move' } | { error: false, type: 'regular', move: MoveDescriptor }
88
- {
87
+ { error: true, errorBox: JSX.Element } | { error: false, type: 'none' | 'null-move' } | { error: false, type: 'regular', move: MoveDescriptor } {
88
+
89
89
  if (move === undefined || move === null) {
90
90
  return { error: false, type: 'none' };
91
91
  }
@@ -126,8 +126,8 @@ export function parseMove(position: Position, move: MoveDescriptor | string | un
126
126
  * Try to interpret the given object as a chess game.
127
127
  */
128
128
  export function parseGame(game: Game | Database | string, gameIndex: number, componentName: string):
129
- { error: true, errorBox: JSX.Element } | { error: false, game: Game }
130
- {
129
+ { error: true, errorBox: JSX.Element } | { error: false, game: Game } {
130
+
131
131
  if (game instanceof Game) {
132
132
  return { error: false, game: game };
133
133
  }
package/src/i18n.ts CHANGED
@@ -27,7 +27,7 @@
27
27
  */
28
28
  export namespace i18n {
29
29
 
30
- /* eslint-disable prefer-const */
30
+ /* eslint-disable prefer-const, @stylistic/indent */
31
31
  // WARNING: all those constants must be declared with "let" to allow them to be re-defined if necessary by consumer codes.
32
32
 
33
33
  // Error box
@@ -46,7 +46,7 @@ export let TOOLTIP_PLAY_STOP = 'Play/stop the game';
46
46
  export let TOOLTIP_FLIP = 'Flip the board';
47
47
 
48
48
  // Movetext
49
- export let PIECE_SYMBOLS = { 'K':'K', 'Q':'Q', 'R':'R', 'B':'B', 'N':'N', 'P':'P' };
49
+ export let PIECE_SYMBOLS = { K: 'K', Q: 'Q', R: 'R', B: 'B', N: 'N', P: 'P' };
50
50
  export let ANNOTATED_BY = 'Annotated by {0}';
51
51
  export let INVALID_PGN_ERROR_TITLE = 'Invalid PGN string.';
52
52
 
@@ -38,27 +38,27 @@ interface AnnotationSymbolShapeProps {
38
38
  /**
39
39
  * X-coordinate of the center of the symbol.
40
40
  */
41
- x: number;
41
+ x: number,
42
42
 
43
43
  /**
44
44
  * Y-coordinate of the center of the symbol.
45
45
  */
46
- y: number;
46
+ y: number,
47
47
 
48
48
  /**
49
49
  * Size of the symbol (i.e. size of square in which the symbol is rendered).
50
50
  */
51
- size: number;
51
+ size: number,
52
52
 
53
53
  /**
54
54
  * Symbol code.
55
55
  */
56
- symbol: AnnotationSymbol;
56
+ symbol: AnnotationSymbol,
57
57
 
58
58
  /**
59
59
  * [CSS color](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value) to use to colorize the shape (for example: `'green'`, `'#ff0000'`...).
60
60
  */
61
- color: string;
61
+ color: string,
62
62
  }
63
63
 
64
64