kokopu-react 3.0.2 → 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 (253) hide show
  1. package/.eslintrc.yml +1 -1
  2. package/CHANGELOG.md +13 -1
  3. package/dist/lib/chessboard/BoardProperties.d.ts +91 -0
  4. package/dist/lib/chessboard/BoardProperties.js +43 -0
  5. package/dist/lib/chessboard/BoardProperties.js.map +1 -0
  6. package/dist/lib/chessboard/Chessboard.css +13 -13
  7. package/dist/lib/chessboard/Chessboard.d.ts +14 -58
  8. package/dist/lib/chessboard/Chessboard.js +26 -92
  9. package/dist/lib/chessboard/Chessboard.js.map +1 -1
  10. package/dist/lib/chessboard/ChessboardImpl.js.map +1 -1
  11. package/dist/lib/chessboard/Draggable.js.map +1 -1
  12. package/dist/lib/chessboard/Motion.js.map +1 -1
  13. package/dist/lib/chessboard/colorsets.js.map +1 -1
  14. package/dist/lib/chessboard/piecesets.js.map +1 -1
  15. package/dist/lib/errorbox/ErrorBox.css +18 -18
  16. package/dist/lib/errorbox/ErrorBox.js.map +1 -1
  17. package/dist/lib/errorbox/parsing.d.ts +57 -0
  18. package/dist/lib/errorbox/parsing.js +140 -0
  19. package/dist/lib/errorbox/parsing.js.map +1 -0
  20. package/dist/lib/exception.js.map +1 -1
  21. package/dist/lib/i18n.d.ts +6 -0
  22. package/dist/lib/i18n.js +7 -0
  23. package/dist/lib/i18n.js.map +1 -1
  24. package/dist/lib/icons/AnnotationSymbolShape.css +6 -6
  25. package/dist/lib/icons/AnnotationSymbolShape.js.map +1 -1
  26. package/dist/lib/icons/ArrowMarkerIcon.js.map +1 -1
  27. package/dist/lib/icons/ArrowTip.js.map +1 -1
  28. package/dist/lib/icons/ChessPieceIcon.js.map +1 -1
  29. package/dist/lib/icons/SquareMarkerIcon.js.map +1 -1
  30. package/dist/lib/icons/TextMarkerIcon.js.map +1 -1
  31. package/dist/lib/icons/arrow.css +1 -1
  32. package/dist/lib/index.d.ts +5 -1
  33. package/dist/lib/index.js +3 -0
  34. package/dist/lib/index.js.map +1 -1
  35. package/dist/lib/movetext/Movetext.css +27 -40
  36. package/dist/lib/movetext/Movetext.d.ts +9 -43
  37. package/dist/lib/movetext/Movetext.js +15 -67
  38. package/dist/lib/movetext/Movetext.js.map +1 -1
  39. package/dist/lib/movetext/MovetextImpl.d.ts +7 -28
  40. package/dist/lib/movetext/MovetextImpl.js +15 -94
  41. package/dist/lib/movetext/MovetextImpl.js.map +1 -1
  42. package/dist/lib/movetext/fonts.css +7 -7
  43. package/dist/lib/movetext/htmlFilter.js.map +1 -1
  44. package/dist/lib/movetext/moveFormatter.js.map +1 -1
  45. package/dist/lib/navigationboard/NavigationBoard.d.ts +156 -0
  46. package/dist/lib/navigationboard/NavigationBoard.js +195 -0
  47. package/dist/lib/navigationboard/NavigationBoard.js.map +1 -0
  48. package/dist/lib/navigationboard/NavigationButton.d.ts +54 -0
  49. package/dist/lib/navigationboard/NavigationButton.js +35 -0
  50. package/dist/lib/navigationboard/NavigationButton.js.map +1 -0
  51. package/dist/lib/navigationboard/NavigationField.css +36 -0
  52. package/dist/lib/navigationboard/NavigationField.d.ts +81 -0
  53. package/dist/lib/navigationboard/NavigationField.js +154 -0
  54. package/dist/lib/navigationboard/NavigationField.js.map +1 -0
  55. package/dist/lib/navigationboard/NavigationToolbar.css +54 -0
  56. package/dist/lib/navigationboard/NavigationToolbar.d.ts +34 -0
  57. package/dist/lib/navigationboard/NavigationToolbar.js +73 -0
  58. package/dist/lib/navigationboard/NavigationToolbar.js.map +1 -0
  59. package/dist/lib/navigationboard/iconPaths.d.ts +29 -0
  60. package/dist/lib/navigationboard/iconPaths.js +91 -0
  61. package/dist/lib/navigationboard/iconPaths.js.map +1 -0
  62. package/dist/lib/sanitization.js.map +1 -1
  63. package/dist/lib/types.js.map +1 -1
  64. package/dist/lib/util.js.map +1 -1
  65. package/doc_src/demo/PageChessboardBase.tsx +115 -115
  66. package/doc_src/demo/PageChessboardInteraction.tsx +303 -303
  67. package/doc_src/demo/PageChessboardMove.tsx +173 -156
  68. package/doc_src/demo/PageChessboardSmallScreens.tsx +94 -94
  69. package/doc_src/demo/PageMovetextBase.tsx +180 -180
  70. package/doc_src/demo/PageMovetextInteraction.tsx +123 -123
  71. package/doc_src/demo/PageNavigationBoardBase.tsx +201 -0
  72. package/doc_src/demo/PageNavigationBoardUncontrolledVsControlled.tsx +114 -0
  73. package/doc_src/demo/decs.d.ts +4 -4
  74. package/doc_src/demo/demo.css +12 -12
  75. package/doc_src/demo/game-3.pgn +10 -0
  76. package/doc_src/demo/util.ts +1 -1
  77. package/doc_src/examples/Movetext.md +1 -1
  78. package/doc_src/examples/NavigationBoard.md +15 -0
  79. package/doc_src/theming/LogoRenderer.js +13 -13
  80. package/doc_src/theming/theming.css +5 -5
  81. package/package.json +95 -95
  82. package/scripts/doc.styleguide.config.js +133 -123
  83. package/scripts/doc.tsconfig.json +5 -5
  84. package/scripts/docker-compose.yml +1 -1
  85. package/scripts/test-graphic.tsconfig.json +5 -5
  86. package/scripts/test-graphic.webpack.config.js +57 -57
  87. package/scripts/test-headless.webpack.config.js +29 -29
  88. package/src/chessboard/BoardProperties.ts +131 -0
  89. package/src/chessboard/Chessboard.css +13 -13
  90. package/src/chessboard/Chessboard.tsx +389 -518
  91. package/src/chessboard/ChessboardImpl.tsx +557 -557
  92. package/src/chessboard/Draggable.tsx +185 -185
  93. package/src/chessboard/Motion.tsx +67 -67
  94. package/src/chessboard/colorsets.ts +66 -66
  95. package/src/chessboard/piecesets.ts +84 -84
  96. package/src/decs.d.ts +2 -2
  97. package/src/errorbox/ErrorBox.css +18 -18
  98. package/src/errorbox/ErrorBox.tsx +75 -75
  99. package/src/errorbox/parsing.tsx +158 -0
  100. package/src/exception.ts +17 -17
  101. package/src/i18n.ts +8 -0
  102. package/src/icons/AnnotationSymbolShape.css +6 -6
  103. package/src/icons/AnnotationSymbolShape.tsx +31 -31
  104. package/src/icons/ArrowMarkerIcon.tsx +34 -34
  105. package/src/icons/ArrowTip.tsx +14 -14
  106. package/src/icons/ChessPieceIcon.tsx +45 -45
  107. package/src/icons/SquareMarkerIcon.tsx +20 -20
  108. package/src/icons/TextMarkerIcon.tsx +29 -29
  109. package/src/icons/arrow.css +1 -1
  110. package/src/index.ts +8 -3
  111. package/src/movetext/Movetext.css +27 -40
  112. package/src/movetext/Movetext.tsx +163 -228
  113. package/src/movetext/MovetextImpl.tsx +351 -438
  114. package/src/movetext/fonts.css +7 -7
  115. package/src/movetext/htmlFilter.tsx +129 -129
  116. package/src/movetext/moveFormatter.tsx +37 -37
  117. package/src/navigationboard/NavigationBoard.tsx +350 -0
  118. package/src/navigationboard/NavigationButton.ts +72 -0
  119. package/src/navigationboard/NavigationField.css +36 -0
  120. package/src/navigationboard/NavigationField.tsx +185 -0
  121. package/src/navigationboard/NavigationToolbar.css +54 -0
  122. package/src/navigationboard/NavigationToolbar.tsx +117 -0
  123. package/src/navigationboard/iconPaths.ts +98 -0
  124. package/src/sanitization.ts +17 -17
  125. package/src/types.ts +116 -116
  126. package/src/util.ts +11 -11
  127. package/test/01_types.js +167 -167
  128. package/test/02_chessboard_util.js +114 -114
  129. package/test/03_error_box_graphic.js +16 -16
  130. package/test/04_icons_graphic.js +32 -32
  131. package/test/05_chessboard_graphic.js +60 -58
  132. package/test/06_chessboard_animation.js +36 -36
  133. package/test/07_chessboard_interaction.js +101 -101
  134. package/test/08_chessboard_play_moves.js +62 -62
  135. package/test/09_chessboard_small_screens.js +42 -21
  136. package/test/10_movetext_graphic.js +36 -31
  137. package/test/11_movetext_interaction.js +100 -96
  138. package/test/12_navigation_board_base.js +151 -0
  139. package/test/13_navigation_board_graphic.js +68 -0
  140. package/test/14_navigation_board_autoplay.js +100 -0
  141. package/test/common/graphic.js +106 -97
  142. package/test/graphic_references/05_chessboard_graphic/move/illegal_null-move.png +0 -0
  143. package/test/graphic_references/05_chessboard_graphic/move/null-move.png +0 -0
  144. package/test/graphic_references/09_chessboard_small_screens/top_bottom_components/default_bottom_component.png +0 -0
  145. package/test/graphic_references/09_chessboard_small_screens/top_bottom_components/default_top_component.png +0 -0
  146. package/test/graphic_references/09_chessboard_small_screens/top_bottom_components/reduced_bottom_component.png +0 -0
  147. package/test/graphic_references/09_chessboard_small_screens/top_bottom_components/reduced_top_component.png +0 -0
  148. package/test/graphic_references/10_movetext_graphic/format_move/format_text.png +0 -0
  149. package/test/graphic_references/10_movetext_graphic/options/wrong_piece_symbol_value.png +0 -0
  150. package/test/graphic_references/11_movetext_interaction/select_moves/click_on_unselected_without_callback.png +0 -0
  151. package/test/graphic_references/12_navigation_board_base/controlled/default.png +0 -0
  152. package/test/graphic_references/12_navigation_board_base/controlled/forbidden_navigation_0.png +0 -0
  153. package/test/graphic_references/12_navigation_board_base/controlled/forbidden_navigation_1.png +0 -0
  154. package/test/graphic_references/12_navigation_board_base/controlled/invalid_node_id.png +0 -0
  155. package/test/graphic_references/12_navigation_board_base/controlled/no_callback_defined_0.png +0 -0
  156. package/test/graphic_references/12_navigation_board_base/controlled/no_callback_defined_1.png +0 -0
  157. package/test/graphic_references/12_navigation_board_base/controlled/overriding_initial_node_id.png +0 -0
  158. package/test/graphic_references/12_navigation_board_base/controlled/regular_navigation_0.png +0 -0
  159. package/test/graphic_references/12_navigation_board_base/controlled/regular_navigation_1.png +0 -0
  160. package/test/graphic_references/12_navigation_board_base/controlled/regular_navigation_2.png +0 -0
  161. package/test/graphic_references/12_navigation_board_base/controlled/regular_navigation_3.png +0 -0
  162. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_beginning_0.png +0 -0
  163. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_beginning_1.png +0 -0
  164. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_beginning_2.png +0 -0
  165. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_end_0.png +0 -0
  166. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_end_1.png +0 -0
  167. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_end_2.png +0 -0
  168. package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_at_end.png +0 -0
  169. package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_at_specific_id.png +0 -0
  170. package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_default.png +0 -0
  171. package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_default_with_game_index.png +0 -0
  172. package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_on_null-move.png +0 -0
  173. package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_0.png +0 -0
  174. package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_1.png +0 -0
  175. package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_2.png +0 -0
  176. package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_3.png +0 -0
  177. package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_4.png +0 -0
  178. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_flipping_0.png +0 -0
  179. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_flipping_1.png +0 -0
  180. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_0.png +0 -0
  181. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_1.png +0 -0
  182. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_2.png +0 -0
  183. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_3.png +0 -0
  184. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_4.png +0 -0
  185. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_5.png +0 -0
  186. package/test/graphic_references/13_navigation_board_graphic/additional_buttons/error_1.png +0 -0
  187. package/test/graphic_references/13_navigation_board_graphic/additional_buttons/error_2.png +0 -0
  188. package/test/graphic_references/13_navigation_board_graphic/additional_buttons/multiple_buttons.png +0 -0
  189. package/test/graphic_references/13_navigation_board_graphic/additional_buttons/single_button.png +0 -0
  190. package/test/graphic_references/13_navigation_board_graphic/error/pgn_parsing_error.png +0 -0
  191. package/test/graphic_references/13_navigation_board_graphic/error/wrong_game_type.png +0 -0
  192. package/test/graphic_references/13_navigation_board_graphic/theme/custom_1.png +0 -0
  193. package/test/graphic_references/13_navigation_board_graphic/theme/custom_2.png +0 -0
  194. package/test/graphic_references/13_navigation_board_graphic/theme/large.png +0 -0
  195. package/test/graphic_references/13_navigation_board_graphic/theme/small.png +0 -0
  196. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_1_move_acknowledging_is-playing_changes.png +0 -0
  197. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_1_move_not_acknowledging_is-playing_changes.png +0 -0
  198. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_2_moves_acknowledging_node_changes.png +0 -0
  199. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_2_moves_not_acknowledging_node_changes.png +0 -0
  200. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_reaching_the_end.png +0 -0
  201. package/test/graphic_references/14_navigation_board_autoplay/controlled/already_at_the_end.png +0 -0
  202. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_acknowledging_is-playing_changes.png +0 -0
  203. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_acknowledging_node_changes.png +0 -0
  204. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_at_the_end.png +0 -0
  205. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_close_to_end.png +0 -0
  206. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_not_acknowledging_is-playing_changes.png +0 -0
  207. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_not_acknowledging_node_changes.png +0 -0
  208. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_2_moves_from_beginning_after_stop.png +0 -0
  209. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_2_moves_from_beginning_before_stop.png +0 -0
  210. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_reaching_the_end_after_stop.png +0 -0
  211. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_reaching_the_end_before_stop.png +0 -0
  212. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/initial_state_close_to_end.png +0 -0
  213. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/initial_state_default.png +0 -0
  214. package/test/graphic_test_app/03_error_box_graphic/base.tsx +14 -14
  215. package/test/graphic_test_app/03_error_box_graphic/localization.tsx +1 -1
  216. package/test/graphic_test_app/04_icons_graphic/chess_piece.tsx +7 -7
  217. package/test/graphic_test_app/04_icons_graphic/marker.tsx +15 -15
  218. package/test/graphic_test_app/05_chessboard_graphic/annotations.tsx +7 -7
  219. package/test/graphic_test_app/05_chessboard_graphic/base.tsx +6 -6
  220. package/test/graphic_test_app/05_chessboard_graphic/chess_variants.tsx +7 -7
  221. package/test/graphic_test_app/05_chessboard_graphic/flipped.tsx +5 -5
  222. package/test/graphic_test_app/05_chessboard_graphic/move.tsx +12 -10
  223. package/test/graphic_test_app/05_chessboard_graphic/theme.tsx +12 -12
  224. package/test/graphic_test_app/06_chessboard_animation/base_1.tsx +6 -6
  225. package/test/graphic_test_app/06_chessboard_animation/base_2.tsx +6 -6
  226. package/test/graphic_test_app/06_chessboard_animation/base_3.tsx +6 -6
  227. package/test/graphic_test_app/06_chessboard_animation/on_redraw.tsx +16 -16
  228. package/test/graphic_test_app/07_chessboard_interaction/click_squares.tsx +5 -5
  229. package/test/graphic_test_app/07_chessboard_interaction/edit_arrows.tsx +4 -4
  230. package/test/graphic_test_app/07_chessboard_interaction/error.tsx +2 -2
  231. package/test/graphic_test_app/07_chessboard_interaction/move_pieces.tsx +5 -5
  232. package/test/graphic_test_app/08_chessboard_play_moves/base.tsx +8 -8
  233. package/test/graphic_test_app/08_chessboard_play_moves/promotions.tsx +4 -4
  234. package/test/graphic_test_app/09_chessboard_small_screens/base.tsx +9 -9
  235. package/test/graphic_test_app/09_chessboard_small_screens/top_bottom_components.tsx +48 -0
  236. package/test/graphic_test_app/10_movetext_graphic/base.tsx +4 -4
  237. package/test/graphic_test_app/10_movetext_graphic/error.tsx +6 -6
  238. package/test/graphic_test_app/10_movetext_graphic/format_move.tsx +31 -0
  239. package/test/graphic_test_app/10_movetext_graphic/html.tsx +5 -5
  240. package/test/graphic_test_app/10_movetext_graphic/options.tsx +10 -9
  241. package/test/graphic_test_app/11_movetext_interaction/error.tsx +1 -1
  242. package/test/graphic_test_app/11_movetext_interaction/select_moves.tsx +11 -10
  243. package/test/graphic_test_app/12_navigation_board_base/controlled.tsx +43 -0
  244. package/test/graphic_test_app/12_navigation_board_base/uncontrolled.tsx +56 -0
  245. package/test/graphic_test_app/13_navigation_board_graphic/additional_buttons.tsx +49 -0
  246. package/test/graphic_test_app/13_navigation_board_graphic/error.tsx +34 -0
  247. package/test/graphic_test_app/13_navigation_board_graphic/theme.tsx +38 -0
  248. package/test/graphic_test_app/14_navigation_board_autoplay/controlled.tsx +73 -0
  249. package/test/graphic_test_app/14_navigation_board_autoplay/uncontrolled.tsx +34 -0
  250. package/test/graphic_test_app/common/decs.d.ts +2 -2
  251. package/test/graphic_test_app/common/test_app.css +15 -15
  252. package/test/graphic_test_app/common/test_app.tsx +48 -48
  253. package/tsconfig.json +13 -13
package/package.json CHANGED
@@ -1,97 +1,97 @@
1
1
  {
2
- "name": "kokopu-react",
3
- "version": "3.0.2",
4
- "description": "A React-based library to create and display chessboard and chess-related components.",
5
- "keywords": [
6
- "chess",
7
- "react",
8
- "chessboard",
9
- "ui",
10
- "games"
11
- ],
12
- "homepage": "https://www.npmjs.com/package/kokopu-react",
13
- "bugs": "https://github.com/yo35/kokopu-react/issues",
14
- "repository": "github:yo35/kokopu-react",
15
- "license": "LGPL-3.0-or-later",
16
- "author": "Yoann Le Montagner <yo35@melix.net>",
17
- "funding": "https://www.paypal.com/donate?hosted_button_id=4EGWA4YEZSALW",
18
- "main": "dist/lib/index.js",
19
- "files": [
20
- "dist/lib",
21
- "doc_src",
22
- "scripts/doc.styleguide.config.js",
23
- "scripts/doc.tsconfig.json",
24
- "scripts/docker-compose.yml",
25
- "scripts/test-graphic.tsconfig.json",
26
- "scripts/test-graphic.webpack.config.js",
27
- "scripts/test-headless.webpack.config.js",
28
- "src",
29
- "test",
30
- ".eslintrc.yml",
31
- ".nycrc.yml",
32
- "CHANGELOG.md",
33
- "CREDITS.md",
34
- "LICENSE",
35
- "README.md",
36
- "tsconfig.json"
37
- ],
38
- "peerDependencies": {
39
- "kokopu": "^4.3.0",
40
- "react": "17.x.x || 18.x.x"
41
- },
42
- "dependencies": {
43
- "htmlparser2": "^9.1.0"
44
- },
45
- "devDependencies": {
46
- "@babel/preset-env": "^7.23.8",
47
- "@babel/preset-react": "^7.23.3",
48
- "@emotion/react": "^11.11.3",
49
- "@emotion/styled": "^11.11.0",
50
- "@mui/material": "^5.15.5",
51
- "@types/react": "^18.2.48",
52
- "@types/react-dom": "^18.2.18",
53
- "@typescript-eslint/eslint-plugin": "^6.19.0",
54
- "@typescript-eslint/parser": "^6.19.0",
55
- "babel-loader": "^9.1.3",
56
- "copy-webpack-plugin": "^12.0.2",
57
- "copyfiles": "^2.4.1",
58
- "coverage-istanbul-loader": "^3.0.5",
59
- "css-loader": "^6.9.1",
60
- "eslint": "^8.56.0",
61
- "eslint-plugin-react": "^7.33.2",
62
- "html-webpack-plugin": "^5.6.0",
63
- "img-diff-js": "^0.5.2",
64
- "kokopu": "^4.8.1",
65
- "mocha": "^10.2.0",
66
- "null-loader": "^4.0.1",
67
- "nyc": "^15.1.0",
68
- "react": "^18.2.0",
69
- "react-docgen-typescript": "^2.2.2",
70
- "react-dom": "^18.2.0",
71
- "react-styleguidist": "^13.1.2",
72
- "rimraf": "^5.0.5",
73
- "selenium-webdriver": "^4.16.0",
74
- "ssh2-sftp-client": "^10.0.0",
75
- "style-loader": "^3.3.4",
76
- "ts-loader": "^9.5.1",
77
- "typescript": "^5.3.3",
78
- "unit.js": "^2.1.1",
79
- "webpack": "^5.89.0",
80
- "webpack-cli": "^5.1.4"
81
- },
82
- "scripts": {
83
- "lint": "eslint doc_src src test",
84
- "preunit": "npm run build:lib && webpack --config scripts/test-headless.webpack.config.js && webpack --config scripts/test-graphic.webpack.config.js && rimraf build/graphic_output",
85
- "unit": "nyc mocha --enable-source-maps --bail --sort",
86
- "test": "npm run lint && npm run unit",
87
- "test_env:start": "docker-compose -p kokopu-react-test-env -f scripts/docker-compose.yml up -d",
88
- "test_env:stop": "docker-compose -p kokopu-react-test-env -f scripts/docker-compose.yml down",
89
- "build": "npm run build:lib && npm run build:doc",
90
- "build:doc": "rimraf dist/docs && styleguidist build --config scripts/doc.styleguide.config.js && copyfiles -u 2 'doc_src/theming/*.png' dist/docs",
91
- "build:lib": "rimraf dist/lib && tsc --outDir dist/lib && copyfiles -u 1 'src/**/*.{css,png,woff,woff2}' dist/lib",
92
- "start": "styleguidist server --open --config scripts/doc.styleguide.config.js",
93
- "clean": "rimraf build dist",
94
- "predeploy": "npm run test && npm run build",
95
- "deploy": "npm publish && node scripts/deploy.js"
96
- }
2
+ "name": "kokopu-react",
3
+ "version": "3.2.0",
4
+ "description": "A React-based library to create and display chessboard and chess-related components.",
5
+ "keywords": [
6
+ "chess",
7
+ "react",
8
+ "chessboard",
9
+ "ui",
10
+ "games"
11
+ ],
12
+ "homepage": "https://www.npmjs.com/package/kokopu-react",
13
+ "bugs": "https://github.com/yo35/kokopu-react/issues",
14
+ "repository": "github:yo35/kokopu-react",
15
+ "license": "LGPL-3.0-or-later",
16
+ "author": "Yoann Le Montagner <yo35@melix.net>",
17
+ "funding": "https://www.paypal.com/donate?hosted_button_id=4EGWA4YEZSALW",
18
+ "main": "dist/lib/index.js",
19
+ "files": [
20
+ "dist/lib",
21
+ "doc_src",
22
+ "scripts/doc.styleguide.config.js",
23
+ "scripts/doc.tsconfig.json",
24
+ "scripts/docker-compose.yml",
25
+ "scripts/test-graphic.tsconfig.json",
26
+ "scripts/test-graphic.webpack.config.js",
27
+ "scripts/test-headless.webpack.config.js",
28
+ "src",
29
+ "test",
30
+ ".eslintrc.yml",
31
+ ".nycrc.yml",
32
+ "CHANGELOG.md",
33
+ "CREDITS.md",
34
+ "LICENSE",
35
+ "README.md",
36
+ "tsconfig.json"
37
+ ],
38
+ "peerDependencies": {
39
+ "kokopu": "^4.9.1",
40
+ "react": "17.x.x || 18.x.x"
41
+ },
42
+ "dependencies": {
43
+ "htmlparser2": "^9.1.0"
44
+ },
45
+ "devDependencies": {
46
+ "@babel/preset-env": "^7.24.4",
47
+ "@babel/preset-react": "^7.24.1",
48
+ "@emotion/react": "^11.11.4",
49
+ "@emotion/styled": "^11.11.5",
50
+ "@mui/material": "^5.15.15",
51
+ "@types/react": "^18.2.79",
52
+ "@types/react-dom": "^18.2.25",
53
+ "@typescript-eslint/eslint-plugin": "^7.7.0",
54
+ "@typescript-eslint/parser": "^7.7.0",
55
+ "babel-loader": "^9.1.3",
56
+ "copy-webpack-plugin": "^12.0.2",
57
+ "copyfiles": "^2.4.1",
58
+ "coverage-istanbul-loader": "^3.0.5",
59
+ "css-loader": "^7.1.1",
60
+ "eslint": "^8.57.0",
61
+ "eslint-plugin-react": "~7.33.2",
62
+ "html-webpack-plugin": "^5.6.0",
63
+ "img-diff-js": "^0.5.4",
64
+ "kokopu": "^4.10.0",
65
+ "mocha": "^10.4.0",
66
+ "null-loader": "^4.0.1",
67
+ "nyc": "^15.1.0",
68
+ "react": "^18.2.0",
69
+ "react-docgen-typescript": "^2.2.2",
70
+ "react-dom": "^18.2.0",
71
+ "react-styleguidist": "^13.1.2",
72
+ "rimraf": "^5.0.5",
73
+ "selenium-webdriver": "^4.19.0",
74
+ "ssh2-sftp-client": "^10.0.3",
75
+ "style-loader": "^4.0.0",
76
+ "ts-loader": "^9.5.1",
77
+ "typescript": "^5.4.5",
78
+ "unit.js": "^2.1.1",
79
+ "webpack": "^5.91.0",
80
+ "webpack-cli": "^5.1.4"
81
+ },
82
+ "scripts": {
83
+ "lint": "eslint doc_src src test",
84
+ "preunit": "npm run build:lib && webpack --config scripts/test-headless.webpack.config.js && webpack --config scripts/test-graphic.webpack.config.js && rimraf build/graphic_output",
85
+ "unit": "nyc mocha --enable-source-maps --bail --sort",
86
+ "test": "npm run lint && npm run unit",
87
+ "test_env:start": "docker-compose -p kokopu-react-test-env -f scripts/docker-compose.yml up -d",
88
+ "test_env:stop": "docker-compose -p kokopu-react-test-env -f scripts/docker-compose.yml down",
89
+ "build": "npm run build:lib && npm run build:doc",
90
+ "build:doc": "rimraf dist/docs && styleguidist build --config scripts/doc.styleguide.config.js && copyfiles -u 2 'doc_src/theming/*.png' dist/docs",
91
+ "build:lib": "rimraf dist/lib && tsc --outDir dist/lib && copyfiles -u 1 'src/**/*.{css,png,woff,woff2}' dist/lib",
92
+ "start": "styleguidist server --open --config scripts/doc.styleguide.config.js",
93
+ "clean": "rimraf build dist",
94
+ "predeploy": "npm run test && npm run build",
95
+ "deploy": "npm publish && node scripts/deploy.js"
96
+ }
97
97
  }
@@ -39,8 +39,16 @@ fs.mkdirSync(path.resolve(__dirname, tmpDir), { recursive: true });
39
39
  // -------------------------------
40
40
 
41
41
  const componentSectionTitle = 'Components';
42
- const components = [ 'errorbox/ErrorBox', 'icons/SquareMarkerIcon', 'icons/TextMarkerIcon', 'icons/ArrowMarkerIcon', 'icons/ChessPieceIcon',
43
- 'chessboard/Chessboard', 'movetext/Movetext' ];
42
+ const components = [
43
+ 'errorbox/ErrorBox',
44
+ 'icons/SquareMarkerIcon',
45
+ 'icons/TextMarkerIcon',
46
+ 'icons/ArrowMarkerIcon',
47
+ 'icons/ChessPieceIcon',
48
+ 'chessboard/Chessboard',
49
+ 'navigationboard/NavigationBoard',
50
+ 'movetext/Movetext',
51
+ ];
44
52
 
45
53
 
46
54
  // Demo section configuration
@@ -48,12 +56,14 @@ const components = [ 'errorbox/ErrorBox', 'icons/SquareMarkerIcon', 'icons/TextM
48
56
 
49
57
  const demoSectionTitle = 'Live demo';
50
58
  const demoPages = [
51
- { id: 'ChessboardBase', title: 'Chessboard - Basic features' },
52
- { id: 'ChessboardInteraction', title: 'Chessboard - Interactions' },
53
- { id: 'ChessboardMove', title: 'Chessboard - Display moves' },
54
- { id: 'ChessboardSmallScreens', title: 'Chessboard - Small screens' },
55
- { id: 'MovetextBase', title: 'Movetext - Basic features' },
56
- { id: 'MovetextInteraction', title: 'Movetext - Interactions' },
59
+ { id: 'ChessboardBase', title: 'Chessboard - Basic features' },
60
+ { id: 'ChessboardInteraction', title: 'Chessboard - Interactions' },
61
+ { id: 'ChessboardMove', title: 'Chessboard - Display moves' },
62
+ { id: 'ChessboardSmallScreens', title: 'Chessboard - Small screens' },
63
+ { id: 'NavigationBoardBase', title: 'NavigationBoard - Basic features' },
64
+ { id: 'NavigationBoardUncontrolledVsControlled', title: 'NavigationBoard - Uncontrolled vs. controlled' },
65
+ { id: 'MovetextBase', title: 'Movetext - Basic features' },
66
+ { id: 'MovetextInteraction', title: 'Movetext - Interactions' },
57
67
  ];
58
68
 
59
69
 
@@ -62,11 +72,11 @@ const demoPages = [
62
72
 
63
73
  // Generate the Markdown file corresponding to each demo page.
64
74
  demoPages.forEach(demoPage => {
65
- fs.writeFileSync(path.resolve(__dirname, `${tmpDir}/${demoPage.id}.md`),
66
- '```js\n' +
67
- `<Page${demoPage.id} />\n` +
68
- '```\n'
69
- );
75
+ fs.writeFileSync(path.resolve(__dirname, `${tmpDir}/${demoPage.id}.md`),
76
+ '```js\n' +
77
+ `<Page${demoPage.id} />\n` +
78
+ '```\n'
79
+ );
70
80
  });
71
81
 
72
82
  // Generate the changelog page.
@@ -77,14 +87,14 @@ fs.writeFileSync(path.resolve(__dirname, `${tmpDir}/changelog.md`), changelog.jo
77
87
 
78
88
  // Generate the table of contents for each sections with sub-sections.
79
89
  function generateTableOfContents(parentName, itemNames) {
80
- const text = itemNames.map(itemName => {
81
- itemName = path.basename(itemName);
82
- const link = `#/${parentName}/${itemName}`.replace(/ /g, '%20');
83
- return `- [${itemName}](${link})\n`;
84
- }).join('');
85
- const filename = `${tmpDir}/Header_${parentName.replace(/ /g, '_')}.md`;
86
- fs.writeFileSync(path.resolve(__dirname, filename), text);
87
- return filename;
90
+ const text = itemNames.map(itemName => {
91
+ itemName = path.basename(itemName);
92
+ const link = `#/${parentName}/${itemName}`.replace(/ /g, '%20');
93
+ return `- [${itemName}](${link})\n`;
94
+ }).join('');
95
+ const filename = `${tmpDir}/Header_${parentName.replace(/ /g, '_')}.md`;
96
+ fs.writeFileSync(path.resolve(__dirname, filename), text);
97
+ return filename;
88
98
  }
89
99
  const componentsTocFilename = generateTableOfContents(componentSectionTitle, components);
90
100
  const demoTocFilename = generateTableOfContents(demoSectionTitle, demoPages.map(demoPage => demoPage.title));
@@ -96,106 +106,106 @@ const demoContext = Object.fromEntries(demoPages.map(demoPage => [ 'Page' + demo
96
106
 
97
107
  // Styleguidist config.
98
108
  module.exports = {
99
- styleguideDir: '../dist/docs',
100
- webpackConfig: {
101
- module: {
102
- rules: [
103
- {
104
- test: /\.js$/i,
105
- use: {
106
- loader: 'babel-loader',
107
- options: {
108
- presets: [ '@babel/preset-env', '@babel/preset-react' ],
109
- },
110
- }
111
- },
112
- {
113
- test: /\.tsx?$/i,
114
- use: {
115
- loader: 'ts-loader',
116
- options: {
117
- configFile: path.resolve(__dirname, 'doc.tsconfig.json'),
118
- },
119
- },
120
- },
121
- {
122
- test: /\.css$/i,
123
- use: [ 'style-loader', 'css-loader' ],
124
- },
125
- {
126
- test: /\.(png|woff|woff2)$/i,
127
- type: 'asset/resource',
128
- },
129
- {
130
- test: /\.pgn$/i,
131
- type: 'asset/source',
132
- },
133
- ],
134
- },
135
- resolve: {
136
- extensions: [ '*.js', '*.ts', '*.tsx' ],
137
- },
138
- },
139
- propsParser: (filePath, source, resolver, handlers) => reactDocgenTypescript.parse(filePath, source, resolver, handlers),
140
- usageMode: 'expand',
141
- exampleMode: 'expand',
142
- context: Object.assign({}, componentContext, demoContext),
143
- getComponentPathLine: componentPath => `import { ${path.basename(componentPath, '.tsx')} } from 'kokopu-react';`,
144
- getExampleFilename: componentPath => path.resolve(__dirname, `${docSrcDir}/examples/${path.basename(componentPath, '.tsx')}.md`),
145
- pagePerSection: true,
146
- sections: [
147
- {
148
- name: 'Home',
149
- content: `${docSrcDir}/home.md`,
150
- },
151
- {
152
- name: componentSectionTitle,
153
- content: componentsTocFilename,
154
- components: components.map(componentName => `${srcDir}/${componentName}.tsx`),
155
- sectionDepth: 1,
156
- },
157
- {
158
- name: demoSectionTitle,
159
- content: demoTocFilename,
160
- sectionDepth: 1,
161
- sections: demoPages.map(demoPage => {
162
- return {
163
- name: demoPage.title,
164
- content: `${tmpDir}/${demoPage.id}.md`,
165
- exampleMode: 'hide',
166
- };
167
- }),
168
- },
169
- {
170
- name: 'Webpack configuration',
171
- content: `${docSrcDir}/webpack_configuration.md`,
172
- },
173
- {
174
- name: 'Kokopu core library documentation',
175
- href: 'https://kokopu.yo35.org/',
176
- },
177
- {
178
- name: 'ChangeLog',
179
- content: `${tmpDir}/changelog.md`,
180
- },
181
- {
182
- name: 'Migrate to 2.x',
183
- content: `${docSrcDir}/migrate_to_2.md`,
184
- },
185
- {
186
- name: 'Migrate to 3.x',
187
- content: `${docSrcDir}/migrate_to_3.md`,
188
- },
189
- ],
190
- styleguideComponents: {
191
- LogoRenderer: path.resolve(__dirname, `${docSrcDir}/theming/LogoRenderer`),
192
- },
193
- template: {
194
- favicon: 'kokopu-react-favicon.png',
195
- },
196
- theme: {
197
- sidebarWidth: 300,
198
- },
199
- title: 'Kokopu-React documentation',
200
- version: version,
109
+ styleguideDir: '../dist/docs',
110
+ webpackConfig: {
111
+ module: {
112
+ rules: [
113
+ {
114
+ test: /\.js$/i,
115
+ use: {
116
+ loader: 'babel-loader',
117
+ options: {
118
+ presets: [ '@babel/preset-env', '@babel/preset-react' ],
119
+ },
120
+ }
121
+ },
122
+ {
123
+ test: /\.tsx?$/i,
124
+ use: {
125
+ loader: 'ts-loader',
126
+ options: {
127
+ configFile: path.resolve(__dirname, 'doc.tsconfig.json'),
128
+ },
129
+ },
130
+ },
131
+ {
132
+ test: /\.css$/i,
133
+ use: [ 'style-loader', 'css-loader' ],
134
+ },
135
+ {
136
+ test: /\.(png|woff|woff2)$/i,
137
+ type: 'asset/resource',
138
+ },
139
+ {
140
+ test: /\.pgn$/i,
141
+ type: 'asset/source',
142
+ },
143
+ ],
144
+ },
145
+ resolve: {
146
+ extensions: [ '*.js', '*.ts', '*.tsx' ],
147
+ },
148
+ },
149
+ propsParser: (filePath, source, resolver, handlers) => reactDocgenTypescript.parse(filePath, source, resolver, handlers),
150
+ usageMode: 'expand',
151
+ exampleMode: 'expand',
152
+ context: Object.assign({}, componentContext, demoContext),
153
+ getComponentPathLine: componentPath => `import { ${path.basename(componentPath, '.tsx')} } from 'kokopu-react';`,
154
+ getExampleFilename: componentPath => path.resolve(__dirname, `${docSrcDir}/examples/${path.basename(componentPath, '.tsx')}.md`),
155
+ pagePerSection: true,
156
+ sections: [
157
+ {
158
+ name: 'Home',
159
+ content: `${docSrcDir}/home.md`,
160
+ },
161
+ {
162
+ name: componentSectionTitle,
163
+ content: componentsTocFilename,
164
+ components: components.map(componentName => `${srcDir}/${componentName}.tsx`),
165
+ sectionDepth: 1,
166
+ },
167
+ {
168
+ name: demoSectionTitle,
169
+ content: demoTocFilename,
170
+ sectionDepth: 1,
171
+ sections: demoPages.map(demoPage => {
172
+ return {
173
+ name: demoPage.title,
174
+ content: `${tmpDir}/${demoPage.id}.md`,
175
+ exampleMode: 'hide',
176
+ };
177
+ }),
178
+ },
179
+ {
180
+ name: 'Webpack configuration',
181
+ content: `${docSrcDir}/webpack_configuration.md`,
182
+ },
183
+ {
184
+ name: 'Kokopu core library documentation',
185
+ href: 'https://kokopu.yo35.org/',
186
+ },
187
+ {
188
+ name: 'ChangeLog',
189
+ content: `${tmpDir}/changelog.md`,
190
+ },
191
+ {
192
+ name: 'Migrate to 2.x',
193
+ content: `${docSrcDir}/migrate_to_2.md`,
194
+ },
195
+ {
196
+ name: 'Migrate to 3.x',
197
+ content: `${docSrcDir}/migrate_to_3.md`,
198
+ },
199
+ ],
200
+ styleguideComponents: {
201
+ LogoRenderer: path.resolve(__dirname, `${docSrcDir}/theming/LogoRenderer`),
202
+ },
203
+ template: {
204
+ favicon: 'kokopu-react-favicon.png',
205
+ },
206
+ theme: {
207
+ sidebarWidth: 300,
208
+ },
209
+ title: 'Kokopu-React documentation',
210
+ version: version,
201
211
  };
@@ -1,7 +1,7 @@
1
1
  {
2
- "extends": "../tsconfig.json",
3
- "include": [ "../doc_src/demo/**/*" ],
4
- "compilerOptions": {
5
- "declaration": false
6
- }
2
+ "extends": "../tsconfig.json",
3
+ "include": [ "../doc_src/demo/**/*" ],
4
+ "compilerOptions": {
5
+ "declaration": false
6
+ }
7
7
  }
@@ -2,7 +2,7 @@ version: "3.7"
2
2
 
3
3
  services:
4
4
  web-client:
5
- image: selenium/standalone-firefox:4.16.1-20231219 # https://github.com/SeleniumHQ/docker-selenium to get the latest version
5
+ image: selenium/standalone-firefox:4.19.1-20240402 # https://github.com/SeleniumHQ/docker-selenium to get the latest version
6
6
  shm_size: '2gb'
7
7
  ports:
8
8
  - 4444:4444 # http://localhost:4444/ (driver)
@@ -1,7 +1,7 @@
1
1
  {
2
- "extends": "../tsconfig.json",
3
- "include": [ "../test/graphic_test_app/**/*" ],
4
- "compilerOptions": {
5
- "declaration": false
6
- }
2
+ "extends": "../tsconfig.json",
3
+ "include": [ "../test/graphic_test_app/**/*" ],
4
+ "compilerOptions": {
5
+ "declaration": false
6
+ }
7
7
  }