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
@@ -29,72 +29,72 @@ const HtmlWebpackPlugin = require('html-webpack-plugin');
29
29
 
30
30
  // List all the files corresponding to /test/graphic_test_app/{number}_*/*.tsx, each of them corresponding to a entry.
31
31
  const items = fs.readdirSync('./test/graphic_test_app', { withFileTypes: true })
32
- .filter(file => file.isDirectory() && /^\d+_/.test(file.name))
33
- .flatMap(file => fs.readdirSync(`./test/graphic_test_app/${file.name}`)
34
- .filter(subFile => path.extname(subFile) === '.tsx')
35
- .map(subFile => `${file.name}/${path.basename(subFile, '.tsx')}`)
36
- );
32
+ .filter(file => file.isDirectory() && /^\d+_/.test(file.name))
33
+ .flatMap(file => fs.readdirSync(`./test/graphic_test_app/${file.name}`)
34
+ .filter(subFile => path.extname(subFile) === '.tsx')
35
+ .map(subFile => `${file.name}/${path.basename(subFile, '.tsx')}`)
36
+ );
37
37
  const entries = {};
38
38
  items.forEach(item => {
39
- entries[item] = `./test/graphic_test_app/${item}`;
39
+ entries[item] = `./test/graphic_test_app/${item}`;
40
40
  });
41
41
 
42
42
  // Define the outputs.
43
43
  const plugins = items.map(item => new HtmlWebpackPlugin({
44
- title: 'Test ' + item,
45
- chunks: [ item ],
46
- filename: item + '/index.html',
44
+ title: 'Test ' + item,
45
+ chunks: [ item ],
46
+ filename: item + '/index.html',
47
47
  }));
48
48
  plugins.push(new CopyWebpackPlugin({
49
- patterns: [
50
- { from: './test/graphic_test_app/common/heartbeat.txt', to: 'heartbeat.txt' },
51
- { from: './test/graphic_test_app/common/smiley.png', to: 'smiley.png' },
52
- ],
49
+ patterns: [
50
+ { from: './test/graphic_test_app/common/heartbeat.txt', to: 'heartbeat.txt' },
51
+ { from: './test/graphic_test_app/common/smiley.png', to: 'smiley.png' },
52
+ ],
53
53
  }));
54
54
 
55
55
  module.exports = {
56
- mode: 'development',
57
- devtool: 'inline-source-map',
58
- entry: entries,
59
- output: {
60
- path: path.resolve(__dirname, '../build/test_graphic'),
61
- hashFunction: "xxhash64", // FIXME The default hash function used by Webpack has been removed from OpenSSL.
62
- clean: true,
63
- },
64
- plugins: plugins,
65
- module: {
66
- rules: [
67
- {
68
- test: /\.js$/i,
69
- use: 'coverage-istanbul-loader',
70
- },
71
- {
72
- test: /\.tsx?$/i,
73
- use: [
74
- 'coverage-istanbul-loader',
75
- {
76
- loader: 'ts-loader',
77
- options: {
78
- configFile: path.resolve(__dirname, 'test-graphic.tsconfig.json'),
79
- },
80
- },
81
- ],
82
- },
83
- {
84
- test: /\.css$/i,
85
- use: [ 'style-loader', 'css-loader' ],
86
- },
87
- {
88
- test: /\.(png|woff|woff2)$/i,
89
- type: 'asset/resource',
90
- },
91
- {
92
- test: /\.pgn$/i,
93
- type: 'asset/source',
94
- },
95
- ],
96
- },
97
- resolve: {
98
- extensions: [ '.js', '.ts', '.tsx' ],
99
- },
56
+ mode: 'development',
57
+ devtool: 'inline-source-map',
58
+ entry: entries,
59
+ output: {
60
+ path: path.resolve(__dirname, '../build/test_graphic'),
61
+ hashFunction: "xxhash64", // FIXME The default hash function used by Webpack has been removed from OpenSSL.
62
+ clean: true,
63
+ },
64
+ plugins: plugins,
65
+ module: {
66
+ rules: [
67
+ {
68
+ test: /\.js$/i,
69
+ use: 'coverage-istanbul-loader',
70
+ },
71
+ {
72
+ test: /\.tsx?$/i,
73
+ use: [
74
+ 'coverage-istanbul-loader',
75
+ {
76
+ loader: 'ts-loader',
77
+ options: {
78
+ configFile: path.resolve(__dirname, 'test-graphic.tsconfig.json'),
79
+ },
80
+ },
81
+ ],
82
+ },
83
+ {
84
+ test: /\.css$/i,
85
+ use: [ 'style-loader', 'css-loader' ],
86
+ },
87
+ {
88
+ test: /\.(png|woff|woff2)$/i,
89
+ type: 'asset/resource',
90
+ },
91
+ {
92
+ test: /\.pgn$/i,
93
+ type: 'asset/source',
94
+ },
95
+ ],
96
+ },
97
+ resolve: {
98
+ extensions: [ '.js', '.ts', '.tsx' ],
99
+ },
100
100
  };
@@ -25,33 +25,33 @@
25
25
  const path = require('path');
26
26
 
27
27
  module.exports = {
28
- mode: 'development',
29
- devtool: 'inline-source-map',
30
- entry: {
31
- index: './dist/lib/index',
32
- },
33
- output: {
34
- path: path.resolve(__dirname, '../build/test_headless'),
35
- library: {
36
- type: 'commonjs2',
37
- },
38
- hashFunction: "xxhash64", // FIXME The default hash function used by Webpack has been removed from OpenSSL.
39
- clean: true,
40
- },
41
- module: {
42
- rules: [
43
- {
44
- test: /\.js$/i,
45
- use: 'coverage-istanbul-loader',
46
- },
47
- {
48
- test: /\.css$/i,
49
- use: 'null-loader',
50
- },
51
- {
52
- test: /\.(png|woff|woff2)$/i,
53
- use: 'null-loader',
54
- },
55
- ],
56
- },
28
+ mode: 'development',
29
+ devtool: 'inline-source-map',
30
+ entry: {
31
+ index: './dist/lib/index',
32
+ },
33
+ output: {
34
+ path: path.resolve(__dirname, '../build/test_headless'),
35
+ library: {
36
+ type: 'commonjs2',
37
+ },
38
+ hashFunction: "xxhash64", // FIXME The default hash function used by Webpack has been removed from OpenSSL.
39
+ clean: true,
40
+ },
41
+ module: {
42
+ rules: [
43
+ {
44
+ test: /\.js$/i,
45
+ use: 'coverage-istanbul-loader',
46
+ },
47
+ {
48
+ test: /\.css$/i,
49
+ use: 'null-loader',
50
+ },
51
+ {
52
+ test: /\.(png|woff|woff2)$/i,
53
+ use: 'null-loader',
54
+ },
55
+ ],
56
+ },
57
57
  };
@@ -0,0 +1,131 @@
1
+ /*!
2
+ * -------------------------------------------------------------------------- *
3
+ * *
4
+ * Kokopu-React - A React-based library of chess-related components. *
5
+ * <https://www.npmjs.com/package/kokopu-react> *
6
+ * Copyright (C) 2021-2024 Yoann Le Montagner <yo35 -at- melix.net> *
7
+ * *
8
+ * Kokopu-React is free software: you can redistribute it and/or *
9
+ * modify it under the terms of the GNU Lesser General Public License *
10
+ * as published by the Free Software Foundation, either version 3 of *
11
+ * the License, or (at your option) any later version. *
12
+ * *
13
+ * Kokopu-React is distributed in the hope that it will be useful, *
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
16
+ * GNU Lesser General Public License for more details. *
17
+ * *
18
+ * You should have received a copy of the GNU Lesser General *
19
+ * Public License along with this program. If not, see *
20
+ * <http://www.gnu.org/licenses/>. *
21
+ * *
22
+ * -------------------------------------------------------------------------- */
23
+
24
+
25
+ import { AnnotationColor } from '../types';
26
+ import { DEFAULT_COLORSET } from './colorsets';
27
+ import { DEFAULT_PIECESET } from './piecesets';
28
+
29
+
30
+ /**
31
+ * Define a limit applicable to the parameters of a {@link Chessboard} on small-screen devices.
32
+ */
33
+ export interface SmallScreenLimit {
34
+ width: number;
35
+ squareSize?: number;
36
+ coordinateVisible?: boolean;
37
+ turnVisible?: boolean;
38
+ }
39
+
40
+
41
+ /**
42
+ * Properties in relation to the appearance of a `Chessboard` component (excluding properties related to move display).
43
+ */
44
+ export interface StaticBoardGraphicProps {
45
+
46
+ /**
47
+ * Size of the squares (in pixels). Must be an integer between `Chessboard.minSquareSize()` and `Chessboard.maxSquareSize()`.
48
+ */
49
+ squareSize: number;
50
+
51
+ /**
52
+ * Whether the row and column coordinates are visible or not.
53
+ */
54
+ coordinateVisible: boolean;
55
+
56
+ /**
57
+ * Whether the turn flag is visible or not.
58
+ */
59
+ turnVisible: boolean;
60
+
61
+ /**
62
+ * Color theme ID. Must be a property of `Chessboard.colorsets()`.
63
+ */
64
+ colorset: string;
65
+
66
+ /**
67
+ * Piece theme ID. Must be a property of `Chessboard.piecesets()`.
68
+ */
69
+ pieceset: string;
70
+
71
+ /**
72
+ * Limits applicable on small-screen devices. For instance, if set to
73
+ * ```
74
+ * [
75
+ * { width: 768, squareSize: 40 },
76
+ * { width: 375, squareSize: 24, coordinateVisible: false }
77
+ * ]
78
+ * ```
79
+ * then on screens with resolution ≤768 pixels, the square size will be limited to 40 (whatever the value
80
+ * of the `squareSize` attribute); in addition, on screens with resolution ≤375 pixels, the square size
81
+ * will be limited to 24 and the row and column coordinates will always be hidden (whatever the value of the
82
+ * `coordinateVisible` attribute).
83
+ */
84
+ smallScreenLimits?: SmallScreenLimit[];
85
+ }
86
+
87
+
88
+ /**
89
+ * Properties in relation to the appearance of a `Chessboard` component (including properties related to move display).
90
+ */
91
+ export interface DynamicBoardGraphicProps extends StaticBoardGraphicProps {
92
+
93
+ /**
94
+ * Whether moves are highlighted with an arrow or not.
95
+ */
96
+ moveArrowVisible: boolean;
97
+
98
+ /**
99
+ * Color of the move arrow.
100
+ */
101
+ moveArrowColor: AnnotationColor;
102
+
103
+ /**
104
+ * Whether moves are animated or not.
105
+ */
106
+ animated: boolean;
107
+ }
108
+
109
+
110
+ export const DEFAULT_SQUARE_SIZE = 40;
111
+
112
+
113
+ export function defaultStaticBoardProps(): StaticBoardGraphicProps {
114
+ return {
115
+ squareSize: DEFAULT_SQUARE_SIZE,
116
+ coordinateVisible: true,
117
+ turnVisible: true,
118
+ colorset: DEFAULT_COLORSET,
119
+ pieceset: DEFAULT_PIECESET,
120
+ };
121
+ }
122
+
123
+
124
+ export function defaultDynamicBoardProps(): DynamicBoardGraphicProps {
125
+ return {
126
+ ...defaultStaticBoardProps(),
127
+ moveArrowVisible: true,
128
+ moveArrowColor: 'b',
129
+ animated: false,
130
+ };
131
+ }
@@ -23,39 +23,39 @@
23
23
 
24
24
 
25
25
  .kokopu-coordinate {
26
- fill: currentcolor;
27
- font-style: normal;
28
- font-family: sans-serif;
29
- text-anchor: middle;
30
- dominant-baseline: central;
31
- letter-spacing: 0px;
26
+ fill: currentcolor;
27
+ font-style: normal;
28
+ font-family: sans-serif;
29
+ text-anchor: middle;
30
+ dominant-baseline: central;
31
+ letter-spacing: 0px;
32
32
  }
33
33
 
34
34
  .kokopu-annotation {
35
- opacity: 0.8;
35
+ opacity: 0.8;
36
36
  }
37
37
 
38
38
  .kokopu-hoveredSquare,
39
39
  .kokopu-handle {
40
- fill: transparent;
40
+ fill: transparent;
41
41
  }
42
42
 
43
43
  .kokopu-clickable {
44
- cursor: pointer;
44
+ cursor: pointer;
45
45
  }
46
46
 
47
47
  .kokopu-pieceDraggable {
48
- cursor: grab;
48
+ cursor: grab;
49
49
  }
50
50
 
51
51
  .kokopu-pieceDraggable.kokopu-dragging {
52
- cursor: grabbing;
52
+ cursor: grabbing;
53
53
  }
54
54
 
55
55
  .kokopu-arrowDraggable {
56
- cursor: crosshair;
56
+ cursor: crosshair;
57
57
  }
58
58
 
59
59
  .kokopu-drawerMask {
60
- opacity: 0.5;
60
+ opacity: 0.5;
61
61
  }