kokopu-react 3.1.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/.eslintrc.yml +1 -1
  2. package/CHANGELOG.md +6 -0
  3. package/dist/lib/chessboard/BoardProperties.js.map +1 -1
  4. package/dist/lib/chessboard/Chessboard.css +13 -13
  5. package/dist/lib/chessboard/Chessboard.js.map +1 -1
  6. package/dist/lib/chessboard/ChessboardImpl.js.map +1 -1
  7. package/dist/lib/chessboard/Draggable.js.map +1 -1
  8. package/dist/lib/chessboard/Motion.js.map +1 -1
  9. package/dist/lib/chessboard/colorsets.js.map +1 -1
  10. package/dist/lib/chessboard/piecesets.js.map +1 -1
  11. package/dist/lib/errorbox/ErrorBox.css +18 -18
  12. package/dist/lib/errorbox/ErrorBox.js.map +1 -1
  13. package/dist/lib/errorbox/parsing.js.map +1 -1
  14. package/dist/lib/exception.js.map +1 -1
  15. package/dist/lib/i18n.d.ts +1 -0
  16. package/dist/lib/i18n.js +1 -0
  17. package/dist/lib/i18n.js.map +1 -1
  18. package/dist/lib/icons/AnnotationSymbolShape.css +6 -6
  19. package/dist/lib/icons/AnnotationSymbolShape.js.map +1 -1
  20. package/dist/lib/icons/ArrowMarkerIcon.js.map +1 -1
  21. package/dist/lib/icons/ArrowTip.js.map +1 -1
  22. package/dist/lib/icons/ChessPieceIcon.js.map +1 -1
  23. package/dist/lib/icons/SquareMarkerIcon.js.map +1 -1
  24. package/dist/lib/icons/TextMarkerIcon.js.map +1 -1
  25. package/dist/lib/icons/arrow.css +1 -1
  26. package/dist/lib/index.d.ts +1 -0
  27. package/dist/lib/index.js +1 -0
  28. package/dist/lib/index.js.map +1 -1
  29. package/dist/lib/movetext/Movetext.css +27 -27
  30. package/dist/lib/movetext/Movetext.js.map +1 -1
  31. package/dist/lib/movetext/MovetextImpl.js.map +1 -1
  32. package/dist/lib/movetext/fonts.css +7 -7
  33. package/dist/lib/movetext/htmlFilter.js.map +1 -1
  34. package/dist/lib/movetext/moveFormatter.js.map +1 -1
  35. package/dist/lib/navigationboard/NavigationBoard.d.ts +39 -1
  36. package/dist/lib/navigationboard/NavigationBoard.js +94 -11
  37. package/dist/lib/navigationboard/NavigationBoard.js.map +1 -1
  38. package/dist/lib/navigationboard/NavigationButton.d.ts +54 -0
  39. package/dist/lib/navigationboard/NavigationButton.js +35 -0
  40. package/dist/lib/navigationboard/NavigationButton.js.map +1 -0
  41. package/dist/lib/navigationboard/NavigationField.css +7 -7
  42. package/dist/lib/navigationboard/NavigationField.js.map +1 -1
  43. package/dist/lib/navigationboard/NavigationToolbar.css +16 -13
  44. package/dist/lib/navigationboard/NavigationToolbar.d.ts +3 -10
  45. package/dist/lib/navigationboard/NavigationToolbar.js +31 -82
  46. package/dist/lib/navigationboard/NavigationToolbar.js.map +1 -1
  47. package/dist/lib/navigationboard/iconPaths.d.ts +29 -0
  48. package/dist/lib/navigationboard/iconPaths.js +91 -0
  49. package/dist/lib/navigationboard/iconPaths.js.map +1 -0
  50. package/dist/lib/sanitization.js.map +1 -1
  51. package/dist/lib/types.js.map +1 -1
  52. package/dist/lib/util.js.map +1 -1
  53. package/doc_src/demo/PageChessboardBase.tsx +115 -115
  54. package/doc_src/demo/PageChessboardInteraction.tsx +303 -303
  55. package/doc_src/demo/PageChessboardMove.tsx +173 -173
  56. package/doc_src/demo/PageChessboardSmallScreens.tsx +94 -94
  57. package/doc_src/demo/PageMovetextBase.tsx +180 -180
  58. package/doc_src/demo/PageMovetextInteraction.tsx +123 -123
  59. package/doc_src/demo/PageNavigationBoardBase.tsx +144 -137
  60. package/doc_src/demo/PageNavigationBoardUncontrolledVsControlled.tsx +69 -69
  61. package/doc_src/demo/decs.d.ts +4 -4
  62. package/doc_src/demo/demo.css +12 -12
  63. package/doc_src/demo/util.ts +1 -1
  64. package/doc_src/examples/NavigationBoard.md +1 -1
  65. package/doc_src/theming/LogoRenderer.js +13 -13
  66. package/doc_src/theming/theming.css +5 -5
  67. package/package.json +95 -95
  68. package/scripts/doc.styleguide.config.js +131 -131
  69. package/scripts/doc.tsconfig.json +5 -5
  70. package/scripts/docker-compose.yml +1 -1
  71. package/scripts/test-graphic.tsconfig.json +5 -5
  72. package/scripts/test-graphic.webpack.config.js +57 -57
  73. package/scripts/test-headless.webpack.config.js +29 -29
  74. package/src/chessboard/BoardProperties.ts +68 -68
  75. package/src/chessboard/Chessboard.css +13 -13
  76. package/src/chessboard/Chessboard.tsx +380 -380
  77. package/src/chessboard/ChessboardImpl.tsx +557 -557
  78. package/src/chessboard/Draggable.tsx +185 -185
  79. package/src/chessboard/Motion.tsx +67 -67
  80. package/src/chessboard/colorsets.ts +66 -66
  81. package/src/chessboard/piecesets.ts +84 -84
  82. package/src/decs.d.ts +2 -2
  83. package/src/errorbox/ErrorBox.css +18 -18
  84. package/src/errorbox/ErrorBox.tsx +75 -75
  85. package/src/errorbox/parsing.tsx +95 -95
  86. package/src/exception.ts +17 -17
  87. package/src/i18n.ts +1 -0
  88. package/src/icons/AnnotationSymbolShape.css +6 -6
  89. package/src/icons/AnnotationSymbolShape.tsx +31 -31
  90. package/src/icons/ArrowMarkerIcon.tsx +34 -34
  91. package/src/icons/ArrowTip.tsx +14 -14
  92. package/src/icons/ChessPieceIcon.tsx +45 -45
  93. package/src/icons/SquareMarkerIcon.tsx +20 -20
  94. package/src/icons/TextMarkerIcon.tsx +29 -29
  95. package/src/icons/arrow.css +1 -1
  96. package/src/index.ts +3 -2
  97. package/src/movetext/Movetext.css +27 -27
  98. package/src/movetext/Movetext.tsx +158 -158
  99. package/src/movetext/MovetextImpl.tsx +345 -345
  100. package/src/movetext/fonts.css +7 -7
  101. package/src/movetext/htmlFilter.tsx +129 -129
  102. package/src/movetext/moveFormatter.tsx +37 -37
  103. package/src/navigationboard/NavigationBoard.tsx +297 -178
  104. package/src/navigationboard/NavigationButton.ts +72 -0
  105. package/src/navigationboard/NavigationField.css +7 -7
  106. package/src/navigationboard/NavigationField.tsx +90 -90
  107. package/src/navigationboard/NavigationToolbar.css +16 -13
  108. package/src/navigationboard/NavigationToolbar.tsx +60 -117
  109. package/src/navigationboard/iconPaths.ts +98 -0
  110. package/src/sanitization.ts +17 -17
  111. package/src/types.ts +116 -116
  112. package/src/util.ts +11 -11
  113. package/test/01_types.js +167 -167
  114. package/test/02_chessboard_util.js +114 -114
  115. package/test/03_error_box_graphic.js +16 -16
  116. package/test/04_icons_graphic.js +32 -32
  117. package/test/05_chessboard_graphic.js +60 -60
  118. package/test/06_chessboard_animation.js +36 -36
  119. package/test/07_chessboard_interaction.js +101 -101
  120. package/test/08_chessboard_play_moves.js +62 -62
  121. package/test/09_chessboard_small_screens.js +32 -32
  122. package/test/10_movetext_graphic.js +32 -32
  123. package/test/11_movetext_interaction.js +100 -100
  124. package/test/12_navigation_board_base.js +151 -0
  125. package/test/13_navigation_board_graphic.js +68 -0
  126. package/test/14_navigation_board_autoplay.js +100 -0
  127. package/test/common/graphic.js +106 -97
  128. package/test/graphic_references/12_navigation_board_base/controlled/default.png +0 -0
  129. package/test/graphic_references/{12_navigation_board/controlled/forbidden_navigation_1.png → 12_navigation_board_base/controlled/forbidden_navigation_0.png} +0 -0
  130. package/test/graphic_references/{12_navigation_board/controlled/invalid_node_id.png → 12_navigation_board_base/controlled/forbidden_navigation_1.png} +0 -0
  131. package/test/graphic_references/{12_navigation_board/controlled/forbidden_navigation_0.png → 12_navigation_board_base/controlled/invalid_node_id.png} +0 -0
  132. package/test/graphic_references/12_navigation_board_base/controlled/no_callback_defined_0.png +0 -0
  133. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/controlled/no_callback_defined_1.png +0 -0
  134. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/controlled/overriding_initial_node_id.png +0 -0
  135. package/test/graphic_references/{12_navigation_board/controlled/regular_navigation_1.png → 12_navigation_board_base/controlled/regular_navigation_0.png} +0 -0
  136. package/test/graphic_references/{12_navigation_board/uncontrolled/initial_state_at_specific_id.png → 12_navigation_board_base/controlled/regular_navigation_1.png} +0 -0
  137. package/test/graphic_references/{12_navigation_board/controlled/regular_navigation_3.png → 12_navigation_board_base/controlled/regular_navigation_2.png} +0 -0
  138. package/test/graphic_references/{12_navigation_board/controlled/regular_navigation_0.png → 12_navigation_board_base/controlled/regular_navigation_3.png} +0 -0
  139. package/test/graphic_references/{12_navigation_board/uncontrolled/forbidden_navigation_at_beginning_2.png → 12_navigation_board_base/uncontrolled/forbidden_navigation_at_beginning_0.png} +0 -0
  140. package/test/graphic_references/{12_navigation_board/uncontrolled/forbidden_navigation_at_beginning_0.png → 12_navigation_board_base/uncontrolled/forbidden_navigation_at_beginning_1.png} +0 -0
  141. package/test/graphic_references/{12_navigation_board/uncontrolled/forbidden_navigation_at_beginning_1.png → 12_navigation_board_base/uncontrolled/forbidden_navigation_at_beginning_2.png} +0 -0
  142. package/test/graphic_references/{12_navigation_board/controlled/no_callback_defined_0.png → 12_navigation_board_base/uncontrolled/forbidden_navigation_at_end_0.png} +0 -0
  143. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_end_1.png +0 -0
  144. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_end_2.png +0 -0
  145. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/initial_state_at_end.png +0 -0
  146. package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_at_specific_id.png +0 -0
  147. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/initial_state_default.png +0 -0
  148. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/initial_state_default_with_game_index.png +0 -0
  149. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/initial_state_on_null-move.png +0 -0
  150. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/navigation_with_keys_0.png +0 -0
  151. package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_1.png +0 -0
  152. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/navigation_with_keys_2.png +0 -0
  153. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/navigation_with_keys_3.png +0 -0
  154. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/navigation_with_keys_4.png +0 -0
  155. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/regular_flipping_0.png +0 -0
  156. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/regular_flipping_1.png +0 -0
  157. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/regular_navigation_0.png +0 -0
  158. package/test/graphic_references/{12_navigation_board/controlled/default.png → 12_navigation_board_base/uncontrolled/regular_navigation_1.png} +0 -0
  159. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/regular_navigation_2.png +0 -0
  160. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_3.png +0 -0
  161. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/regular_navigation_4.png +0 -0
  162. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/regular_navigation_5.png +0 -0
  163. package/test/graphic_references/13_navigation_board_graphic/additional_buttons/error_1.png +0 -0
  164. package/test/graphic_references/13_navigation_board_graphic/additional_buttons/error_2.png +0 -0
  165. package/test/graphic_references/13_navigation_board_graphic/additional_buttons/multiple_buttons.png +0 -0
  166. package/test/graphic_references/{12_navigation_board/uncontrolled/regular_navigation_3.png → 13_navigation_board_graphic/additional_buttons/single_button.png} +0 -0
  167. package/test/graphic_references/{12_navigation_board → 13_navigation_board_graphic}/theme/custom_1.png +0 -0
  168. package/test/graphic_references/{12_navigation_board → 13_navigation_board_graphic}/theme/custom_2.png +0 -0
  169. package/test/graphic_references/{12_navigation_board → 13_navigation_board_graphic}/theme/large.png +0 -0
  170. package/test/graphic_references/13_navigation_board_graphic/theme/small.png +0 -0
  171. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_1_move_acknowledging_is-playing_changes.png +0 -0
  172. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_1_move_not_acknowledging_is-playing_changes.png +0 -0
  173. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_2_moves_acknowledging_node_changes.png +0 -0
  174. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_2_moves_not_acknowledging_node_changes.png +0 -0
  175. package/test/graphic_references/{12_navigation_board/uncontrolled/forbidden_navigation_at_end_1.png → 14_navigation_board_autoplay/controlled/after_reaching_the_end.png} +0 -0
  176. package/test/graphic_references/{12_navigation_board/uncontrolled/forbidden_navigation_at_end_2.png → 14_navigation_board_autoplay/controlled/already_at_the_end.png} +0 -0
  177. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_acknowledging_is-playing_changes.png +0 -0
  178. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_acknowledging_node_changes.png +0 -0
  179. package/test/graphic_references/{12_navigation_board/uncontrolled/forbidden_navigation_at_end_0.png → 14_navigation_board_autoplay/controlled/initial_state_at_the_end.png} +0 -0
  180. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_close_to_end.png +0 -0
  181. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_not_acknowledging_is-playing_changes.png +0 -0
  182. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_not_acknowledging_node_changes.png +0 -0
  183. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_2_moves_from_beginning_after_stop.png +0 -0
  184. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_2_moves_from_beginning_before_stop.png +0 -0
  185. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_reaching_the_end_after_stop.png +0 -0
  186. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_reaching_the_end_before_stop.png +0 -0
  187. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/initial_state_close_to_end.png +0 -0
  188. package/test/graphic_references/{12_navigation_board/uncontrolled/navigation_with_keys_1.png → 14_navigation_board_autoplay/uncontrolled/initial_state_default.png} +0 -0
  189. package/test/graphic_test_app/03_error_box_graphic/base.tsx +14 -14
  190. package/test/graphic_test_app/03_error_box_graphic/localization.tsx +1 -1
  191. package/test/graphic_test_app/04_icons_graphic/chess_piece.tsx +7 -7
  192. package/test/graphic_test_app/04_icons_graphic/marker.tsx +15 -15
  193. package/test/graphic_test_app/05_chessboard_graphic/annotations.tsx +7 -7
  194. package/test/graphic_test_app/05_chessboard_graphic/base.tsx +6 -6
  195. package/test/graphic_test_app/05_chessboard_graphic/chess_variants.tsx +7 -7
  196. package/test/graphic_test_app/05_chessboard_graphic/flipped.tsx +5 -5
  197. package/test/graphic_test_app/05_chessboard_graphic/move.tsx +12 -12
  198. package/test/graphic_test_app/05_chessboard_graphic/theme.tsx +12 -12
  199. package/test/graphic_test_app/06_chessboard_animation/base_1.tsx +6 -6
  200. package/test/graphic_test_app/06_chessboard_animation/base_2.tsx +6 -6
  201. package/test/graphic_test_app/06_chessboard_animation/base_3.tsx +6 -6
  202. package/test/graphic_test_app/06_chessboard_animation/on_redraw.tsx +16 -16
  203. package/test/graphic_test_app/07_chessboard_interaction/click_squares.tsx +5 -5
  204. package/test/graphic_test_app/07_chessboard_interaction/edit_arrows.tsx +4 -4
  205. package/test/graphic_test_app/07_chessboard_interaction/error.tsx +2 -2
  206. package/test/graphic_test_app/07_chessboard_interaction/move_pieces.tsx +5 -5
  207. package/test/graphic_test_app/08_chessboard_play_moves/base.tsx +8 -8
  208. package/test/graphic_test_app/08_chessboard_play_moves/promotions.tsx +4 -4
  209. package/test/graphic_test_app/09_chessboard_small_screens/base.tsx +9 -9
  210. package/test/graphic_test_app/09_chessboard_small_screens/top_bottom_components.tsx +9 -9
  211. package/test/graphic_test_app/10_movetext_graphic/base.tsx +4 -4
  212. package/test/graphic_test_app/10_movetext_graphic/error.tsx +6 -6
  213. package/test/graphic_test_app/10_movetext_graphic/format_move.tsx +1 -1
  214. package/test/graphic_test_app/10_movetext_graphic/html.tsx +5 -5
  215. package/test/graphic_test_app/10_movetext_graphic/options.tsx +10 -10
  216. package/test/graphic_test_app/11_movetext_interaction/error.tsx +1 -1
  217. package/test/graphic_test_app/11_movetext_interaction/select_moves.tsx +11 -11
  218. package/test/graphic_test_app/{12_navigation_board → 12_navigation_board_base}/controlled.tsx +5 -5
  219. package/test/graphic_test_app/{12_navigation_board → 12_navigation_board_base}/uncontrolled.tsx +7 -7
  220. package/test/graphic_test_app/13_navigation_board_graphic/additional_buttons.tsx +49 -0
  221. package/test/graphic_test_app/{12_navigation_board → 13_navigation_board_graphic}/error.tsx +2 -2
  222. package/test/graphic_test_app/{12_navigation_board → 13_navigation_board_graphic}/theme.tsx +4 -4
  223. package/test/graphic_test_app/14_navigation_board_autoplay/controlled.tsx +73 -0
  224. package/test/graphic_test_app/14_navigation_board_autoplay/uncontrolled.tsx +34 -0
  225. package/test/graphic_test_app/common/decs.d.ts +2 -2
  226. package/test/graphic_test_app/common/test_app.css +15 -15
  227. package/test/graphic_test_app/common/test_app.tsx +48 -48
  228. package/tsconfig.json +13 -13
  229. package/test/12_navigation_board.js +0 -168
  230. package/test/graphic_references/12_navigation_board/controlled/regular_navigation_2.png +0 -0
  231. package/test/graphic_references/12_navigation_board/theme/small.png +0 -0
  232. package/test/graphic_references/12_navigation_board/uncontrolled/regular_navigation_1.png +0 -0
  233. /package/test/graphic_references/{12_navigation_board → 13_navigation_board_graphic}/error/pgn_parsing_error.png +0 -0
  234. /package/test/graphic_references/{12_navigation_board → 13_navigation_board_graphic}/error/wrong_game_type.png +0 -0
package/package.json CHANGED
@@ -1,97 +1,97 @@
1
1
  {
2
- "name": "kokopu-react",
3
- "version": "3.1.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.0",
47
- "@babel/preset-react": "^7.23.3",
48
- "@emotion/react": "^11.11.4",
49
- "@emotion/styled": "^11.11.0",
50
- "@mui/material": "^5.15.11",
51
- "@types/react": "^18.2.61",
52
- "@types/react-dom": "^18.2.19",
53
- "@typescript-eslint/eslint-plugin": "^7.1.0",
54
- "@typescript-eslint/parser": "^7.1.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.10.0",
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.2",
64
- "kokopu": "^4.9.1",
65
- "mocha": "^10.3.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.18.1",
74
- "ssh2-sftp-client": "^10.0.3",
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.90.3",
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
  }
@@ -40,14 +40,14 @@ fs.mkdirSync(path.resolve(__dirname, tmpDir), { recursive: true });
40
40
 
41
41
  const componentSectionTitle = 'Components';
42
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',
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
51
  ];
52
52
 
53
53
 
@@ -56,14 +56,14 @@ const components = [
56
56
 
57
57
  const demoSectionTitle = 'Live demo';
58
58
  const demoPages = [
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' },
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' },
67
67
  ];
68
68
 
69
69
 
@@ -72,11 +72,11 @@ const demoPages = [
72
72
 
73
73
  // Generate the Markdown file corresponding to each demo page.
74
74
  demoPages.forEach(demoPage => {
75
- fs.writeFileSync(path.resolve(__dirname, `${tmpDir}/${demoPage.id}.md`),
76
- '```js\n' +
77
- `<Page${demoPage.id} />\n` +
78
- '```\n'
79
- );
75
+ fs.writeFileSync(path.resolve(__dirname, `${tmpDir}/${demoPage.id}.md`),
76
+ '```js\n' +
77
+ `<Page${demoPage.id} />\n` +
78
+ '```\n'
79
+ );
80
80
  });
81
81
 
82
82
  // Generate the changelog page.
@@ -87,14 +87,14 @@ fs.writeFileSync(path.resolve(__dirname, `${tmpDir}/changelog.md`), changelog.jo
87
87
 
88
88
  // Generate the table of contents for each sections with sub-sections.
89
89
  function generateTableOfContents(parentName, itemNames) {
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;
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;
98
98
  }
99
99
  const componentsTocFilename = generateTableOfContents(componentSectionTitle, components);
100
100
  const demoTocFilename = generateTableOfContents(demoSectionTitle, demoPages.map(demoPage => demoPage.title));
@@ -106,106 +106,106 @@ const demoContext = Object.fromEntries(demoPages.map(demoPage => [ 'Page' + demo
106
106
 
107
107
  // Styleguidist config.
108
108
  module.exports = {
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,
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,
211
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.18.1-20240224 # 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
  }