kokopu-react 1.11.0 → 2.0.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 (526) hide show
  1. package/.eslintrc.yml +84 -0
  2. package/.nycrc.yml +0 -1
  3. package/README.md +1 -1
  4. package/{src/css/chessboard.css → dist/lib/chessboard/Chessboard.css} +2 -2
  5. package/dist/lib/chessboard/Chessboard.d.ts +171 -0
  6. package/dist/lib/chessboard/Chessboard.js +365 -0
  7. package/dist/lib/chessboard/Chessboard.js.map +1 -0
  8. package/dist/lib/chessboard/ChessboardImpl.d.ts +119 -0
  9. package/dist/lib/chessboard/ChessboardImpl.js +471 -0
  10. package/dist/lib/chessboard/ChessboardImpl.js.map +1 -0
  11. package/dist/lib/chessboard/Draggable.d.ts +62 -0
  12. package/dist/lib/chessboard/Draggable.js +157 -0
  13. package/dist/lib/chessboard/Draggable.js.map +1 -0
  14. package/dist/lib/chessboard/Motion.d.ts +28 -0
  15. package/dist/lib/chessboard/Motion.js +74 -0
  16. package/dist/lib/chessboard/Motion.js.map +1 -0
  17. package/dist/lib/chessboard/colorsets.d.ts +5 -0
  18. package/dist/lib/{impl → chessboard}/colorsets.js +43 -47
  19. package/dist/lib/chessboard/colorsets.js.map +1 -0
  20. package/dist/lib/chessboard/piecesets.d.ts +5 -0
  21. package/dist/lib/chessboard/piecesets.js +214 -0
  22. package/dist/lib/chessboard/piecesets.js.map +1 -0
  23. package/dist/lib/{sprites → chessboard/sprites}/cburnett-bb.png +0 -0
  24. package/dist/lib/{sprites → chessboard/sprites}/cburnett-bk.png +0 -0
  25. package/dist/lib/{sprites → chessboard/sprites}/cburnett-bn.png +0 -0
  26. package/dist/lib/{sprites → chessboard/sprites}/cburnett-bp.png +0 -0
  27. package/dist/lib/{sprites → chessboard/sprites}/cburnett-bq.png +0 -0
  28. package/dist/lib/{sprites → chessboard/sprites}/cburnett-br.png +0 -0
  29. package/dist/lib/{sprites → chessboard/sprites}/cburnett-bx.png +0 -0
  30. package/dist/lib/{sprites → chessboard/sprites}/cburnett-wb.png +0 -0
  31. package/dist/lib/{sprites → chessboard/sprites}/cburnett-wk.png +0 -0
  32. package/dist/lib/{sprites → chessboard/sprites}/cburnett-wn.png +0 -0
  33. package/dist/lib/{sprites → chessboard/sprites}/cburnett-wp.png +0 -0
  34. package/dist/lib/{sprites → chessboard/sprites}/cburnett-wq.png +0 -0
  35. package/dist/lib/{sprites → chessboard/sprites}/cburnett-wr.png +0 -0
  36. package/dist/lib/{sprites → chessboard/sprites}/cburnett-wx.png +0 -0
  37. package/dist/lib/{sprites → chessboard/sprites}/celtic-bb.png +0 -0
  38. package/dist/lib/{sprites → chessboard/sprites}/celtic-bk.png +0 -0
  39. package/dist/lib/{sprites → chessboard/sprites}/celtic-bn.png +0 -0
  40. package/dist/lib/{sprites → chessboard/sprites}/celtic-bp.png +0 -0
  41. package/dist/lib/{sprites → chessboard/sprites}/celtic-bq.png +0 -0
  42. package/dist/lib/{sprites → chessboard/sprites}/celtic-br.png +0 -0
  43. package/dist/lib/{sprites → chessboard/sprites}/celtic-bx.png +0 -0
  44. package/dist/lib/{sprites → chessboard/sprites}/celtic-wb.png +0 -0
  45. package/dist/lib/{sprites → chessboard/sprites}/celtic-wk.png +0 -0
  46. package/dist/lib/{sprites → chessboard/sprites}/celtic-wn.png +0 -0
  47. package/dist/lib/{sprites → chessboard/sprites}/celtic-wp.png +0 -0
  48. package/dist/lib/{sprites → chessboard/sprites}/celtic-wq.png +0 -0
  49. package/dist/lib/{sprites → chessboard/sprites}/celtic-wr.png +0 -0
  50. package/dist/lib/{sprites → chessboard/sprites}/celtic-wx.png +0 -0
  51. package/dist/lib/{sprites → chessboard/sprites}/eyes-bb.png +0 -0
  52. package/dist/lib/{sprites → chessboard/sprites}/eyes-bk.png +0 -0
  53. package/dist/lib/{sprites → chessboard/sprites}/eyes-bn.png +0 -0
  54. package/dist/lib/{sprites → chessboard/sprites}/eyes-bp.png +0 -0
  55. package/dist/lib/{sprites → chessboard/sprites}/eyes-bq.png +0 -0
  56. package/dist/lib/{sprites → chessboard/sprites}/eyes-br.png +0 -0
  57. package/dist/lib/{sprites → chessboard/sprites}/eyes-spatial-bx.png +0 -0
  58. package/dist/lib/{sprites → chessboard/sprites}/eyes-spatial-wx.png +0 -0
  59. package/dist/lib/{sprites → chessboard/sprites}/eyes-wb.png +0 -0
  60. package/dist/lib/{sprites → chessboard/sprites}/eyes-wk.png +0 -0
  61. package/dist/lib/{sprites → chessboard/sprites}/eyes-wn.png +0 -0
  62. package/dist/lib/{sprites → chessboard/sprites}/eyes-wp.png +0 -0
  63. package/dist/lib/{sprites → chessboard/sprites}/eyes-wq.png +0 -0
  64. package/dist/lib/{sprites → chessboard/sprites}/eyes-wr.png +0 -0
  65. package/dist/lib/{sprites → chessboard/sprites}/fantasy-bb.png +0 -0
  66. package/dist/lib/{sprites → chessboard/sprites}/fantasy-bk.png +0 -0
  67. package/dist/lib/{sprites → chessboard/sprites}/fantasy-bn.png +0 -0
  68. package/dist/lib/{sprites → chessboard/sprites}/fantasy-bp.png +0 -0
  69. package/dist/lib/{sprites → chessboard/sprites}/fantasy-bq.png +0 -0
  70. package/dist/lib/{sprites → chessboard/sprites}/fantasy-br.png +0 -0
  71. package/dist/lib/{sprites → chessboard/sprites}/fantasy-bx.png +0 -0
  72. package/dist/lib/{sprites → chessboard/sprites}/fantasy-wb.png +0 -0
  73. package/dist/lib/{sprites → chessboard/sprites}/fantasy-wk.png +0 -0
  74. package/dist/lib/{sprites → chessboard/sprites}/fantasy-wn.png +0 -0
  75. package/dist/lib/{sprites → chessboard/sprites}/fantasy-wp.png +0 -0
  76. package/dist/lib/{sprites → chessboard/sprites}/fantasy-wq.png +0 -0
  77. package/dist/lib/{sprites → chessboard/sprites}/fantasy-wr.png +0 -0
  78. package/dist/lib/{sprites → chessboard/sprites}/fantasy-wx.png +0 -0
  79. package/dist/lib/{sprites → chessboard/sprites}/skulls-bb.png +0 -0
  80. package/dist/lib/{sprites → chessboard/sprites}/skulls-bk.png +0 -0
  81. package/dist/lib/{sprites → chessboard/sprites}/skulls-bn.png +0 -0
  82. package/dist/lib/{sprites → chessboard/sprites}/skulls-bp.png +0 -0
  83. package/dist/lib/{sprites → chessboard/sprites}/skulls-bq.png +0 -0
  84. package/dist/lib/{sprites → chessboard/sprites}/skulls-br.png +0 -0
  85. package/dist/lib/{sprites → chessboard/sprites}/skulls-bx.png +0 -0
  86. package/dist/lib/{sprites → chessboard/sprites}/skulls-wb.png +0 -0
  87. package/dist/lib/{sprites → chessboard/sprites}/skulls-wk.png +0 -0
  88. package/dist/lib/{sprites → chessboard/sprites}/skulls-wn.png +0 -0
  89. package/dist/lib/{sprites → chessboard/sprites}/skulls-wp.png +0 -0
  90. package/dist/lib/{sprites → chessboard/sprites}/skulls-wq.png +0 -0
  91. package/dist/lib/{sprites → chessboard/sprites}/skulls-wr.png +0 -0
  92. package/dist/lib/{sprites → chessboard/sprites}/skulls-wx.png +0 -0
  93. package/dist/lib/{sprites → chessboard/sprites}/spatial-bb.png +0 -0
  94. package/dist/lib/{sprites → chessboard/sprites}/spatial-bk.png +0 -0
  95. package/dist/lib/{sprites → chessboard/sprites}/spatial-bn.png +0 -0
  96. package/dist/lib/{sprites → chessboard/sprites}/spatial-bp.png +0 -0
  97. package/dist/lib/{sprites → chessboard/sprites}/spatial-bq.png +0 -0
  98. package/dist/lib/{sprites → chessboard/sprites}/spatial-br.png +0 -0
  99. package/dist/lib/{sprites → chessboard/sprites}/spatial-wb.png +0 -0
  100. package/dist/lib/{sprites → chessboard/sprites}/spatial-wk.png +0 -0
  101. package/dist/lib/{sprites → chessboard/sprites}/spatial-wn.png +0 -0
  102. package/dist/lib/{sprites → chessboard/sprites}/spatial-wp.png +0 -0
  103. package/dist/lib/{sprites → chessboard/sprites}/spatial-wq.png +0 -0
  104. package/dist/lib/{sprites → chessboard/sprites}/spatial-wr.png +0 -0
  105. package/dist/lib/{css/error_box.css → errorbox/ErrorBox.css} +2 -2
  106. package/dist/lib/errorbox/ErrorBox.d.ts +28 -0
  107. package/dist/lib/errorbox/ErrorBox.js +84 -0
  108. package/dist/lib/errorbox/ErrorBox.js.map +1 -0
  109. package/dist/lib/exception.d.ts +18 -0
  110. package/dist/lib/exception.js +40 -0
  111. package/dist/lib/exception.js.map +1 -0
  112. package/dist/lib/i18n.d.ts +18 -0
  113. package/dist/lib/i18n.js +20 -33
  114. package/dist/lib/i18n.js.map +1 -0
  115. package/{src/css/symbol.css → dist/lib/icons/AnnotationSymbolShape.css} +2 -2
  116. package/dist/lib/icons/AnnotationSymbolShape.d.ts +30 -0
  117. package/dist/lib/{impl/ArrowTip.js → icons/AnnotationSymbolShape.js} +21 -35
  118. package/dist/lib/icons/AnnotationSymbolShape.js.map +1 -0
  119. package/dist/lib/icons/ArrowMarkerIcon.d.ts +20 -0
  120. package/dist/lib/icons/ArrowMarkerIcon.js +53 -0
  121. package/dist/lib/icons/ArrowMarkerIcon.js.map +1 -0
  122. package/dist/lib/icons/ArrowTip.d.ts +16 -0
  123. package/dist/lib/icons/ArrowTip.js +29 -0
  124. package/dist/lib/icons/ArrowTip.js.map +1 -0
  125. package/dist/lib/icons/SquareMarkerIcon.d.ts +18 -0
  126. package/{src/i18n.js → dist/lib/icons/SquareMarkerIcon.js} +24 -23
  127. package/dist/lib/icons/SquareMarkerIcon.js.map +1 -0
  128. package/dist/lib/icons/TextMarkerIcon.d.ts +23 -0
  129. package/dist/lib/icons/TextMarkerIcon.js +45 -0
  130. package/dist/lib/icons/TextMarkerIcon.js.map +1 -0
  131. package/{src/css → dist/lib/icons}/arrow.css +2 -2
  132. package/dist/lib/index.d.ts +10 -0
  133. package/dist/lib/index.js +31 -105
  134. package/dist/lib/index.js.map +1 -0
  135. package/dist/lib/{css/movetext.css → movetext/Movetext.css} +2 -2
  136. package/dist/lib/movetext/Movetext.d.ts +136 -0
  137. package/dist/lib/movetext/Movetext.js +167 -0
  138. package/dist/lib/movetext/Movetext.js.map +1 -0
  139. package/dist/lib/movetext/MovetextImpl.d.ts +85 -0
  140. package/dist/lib/movetext/MovetextImpl.js +411 -0
  141. package/dist/lib/movetext/MovetextImpl.js.map +1 -0
  142. package/dist/lib/{fonts → movetext/fonts}/chessalpha.woff +0 -0
  143. package/dist/lib/{fonts → movetext/fonts}/chessalpha.woff2 +0 -0
  144. package/dist/lib/{css → movetext}/fonts.css +4 -4
  145. package/dist/lib/movetext/htmlFilter.d.ts +7 -0
  146. package/dist/lib/movetext/htmlFilter.js +169 -0
  147. package/dist/lib/movetext/htmlFilter.js.map +1 -0
  148. package/dist/lib/movetext/moveFormatter.d.ts +20 -0
  149. package/dist/lib/movetext/moveFormatter.js +93 -0
  150. package/dist/lib/movetext/moveFormatter.js.map +1 -0
  151. package/dist/lib/sanitization.d.ts +6 -0
  152. package/dist/lib/sanitization.js +39 -0
  153. package/dist/lib/sanitization.js.map +1 -0
  154. package/dist/lib/types.d.ts +151 -0
  155. package/dist/lib/types.js +162 -0
  156. package/dist/lib/types.js.map +1 -0
  157. package/dist/lib/util.d.ts +2 -0
  158. package/dist/lib/util.js +36 -0
  159. package/dist/lib/util.js.map +1 -0
  160. package/doc_src/demo/{PageChessboardBase.js → PageChessboardBase.tsx} +30 -24
  161. package/doc_src/demo/{PageChessboardInteraction.js → PageChessboardInteraction.tsx} +95 -66
  162. package/doc_src/demo/{PageChessboardMove.js → PageChessboardMove.tsx} +66 -54
  163. package/doc_src/demo/{PageChessboardSmallScreens.js → PageChessboardSmallScreens.tsx} +23 -14
  164. package/doc_src/demo/{PageMovetextBase.js → PageMovetextBase.tsx} +62 -49
  165. package/doc_src/demo/{PageMovetextInteraction.js → PageMovetextInteraction.tsx} +58 -43
  166. package/doc_src/demo/decs.d.ts +31 -0
  167. package/doc_src/demo/demo.css +2 -2
  168. package/doc_src/demo/{util.js → util.ts} +3 -3
  169. package/doc_src/migrate_to_2.md +26 -0
  170. package/doc_src/theming/LogoRenderer.js +5 -5
  171. package/doc_src/theming/theming.css +8 -2
  172. package/package.json +31 -24
  173. package/scripts/docker-compose.yml +1 -1
  174. package/scripts/test-graphic.tsconfig.json +7 -0
  175. package/scripts/test-graphic.webpack.config.js +33 -17
  176. package/scripts/test-headless.webpack.config.js +6 -10
  177. package/{dist/lib/css/chessboard.css → src/chessboard/Chessboard.css} +2 -2
  178. package/src/chessboard/Chessboard.tsx +575 -0
  179. package/src/chessboard/ChessboardImpl.tsx +632 -0
  180. package/src/chessboard/Draggable.tsx +252 -0
  181. package/src/{impl/Motion.js → chessboard/Motion.tsx} +37 -27
  182. package/src/chessboard/colorsets.ts +134 -0
  183. package/src/chessboard/piecesets.ts +229 -0
  184. package/src/{sprites → chessboard/sprites}/cburnett-bb.png +0 -0
  185. package/src/{sprites → chessboard/sprites}/cburnett-bk.png +0 -0
  186. package/src/{sprites → chessboard/sprites}/cburnett-bn.png +0 -0
  187. package/src/{sprites → chessboard/sprites}/cburnett-bp.png +0 -0
  188. package/src/{sprites → chessboard/sprites}/cburnett-bq.png +0 -0
  189. package/src/{sprites → chessboard/sprites}/cburnett-br.png +0 -0
  190. package/src/{sprites → chessboard/sprites}/cburnett-bx.png +0 -0
  191. package/src/{sprites → chessboard/sprites}/cburnett-wb.png +0 -0
  192. package/src/{sprites → chessboard/sprites}/cburnett-wk.png +0 -0
  193. package/src/{sprites → chessboard/sprites}/cburnett-wn.png +0 -0
  194. package/src/{sprites → chessboard/sprites}/cburnett-wp.png +0 -0
  195. package/src/{sprites → chessboard/sprites}/cburnett-wq.png +0 -0
  196. package/src/{sprites → chessboard/sprites}/cburnett-wr.png +0 -0
  197. package/src/{sprites → chessboard/sprites}/cburnett-wx.png +0 -0
  198. package/src/{sprites → chessboard/sprites}/celtic-bb.png +0 -0
  199. package/src/{sprites → chessboard/sprites}/celtic-bk.png +0 -0
  200. package/src/{sprites → chessboard/sprites}/celtic-bn.png +0 -0
  201. package/src/{sprites → chessboard/sprites}/celtic-bp.png +0 -0
  202. package/src/{sprites → chessboard/sprites}/celtic-bq.png +0 -0
  203. package/src/{sprites → chessboard/sprites}/celtic-br.png +0 -0
  204. package/src/{sprites → chessboard/sprites}/celtic-bx.png +0 -0
  205. package/src/{sprites → chessboard/sprites}/celtic-wb.png +0 -0
  206. package/src/{sprites → chessboard/sprites}/celtic-wk.png +0 -0
  207. package/src/{sprites → chessboard/sprites}/celtic-wn.png +0 -0
  208. package/src/{sprites → chessboard/sprites}/celtic-wp.png +0 -0
  209. package/src/{sprites → chessboard/sprites}/celtic-wq.png +0 -0
  210. package/src/{sprites → chessboard/sprites}/celtic-wr.png +0 -0
  211. package/src/{sprites → chessboard/sprites}/celtic-wx.png +0 -0
  212. package/src/{sprites → chessboard/sprites}/eyes-bb.png +0 -0
  213. package/src/{sprites → chessboard/sprites}/eyes-bk.png +0 -0
  214. package/src/{sprites → chessboard/sprites}/eyes-bn.png +0 -0
  215. package/src/{sprites → chessboard/sprites}/eyes-bp.png +0 -0
  216. package/src/{sprites → chessboard/sprites}/eyes-bq.png +0 -0
  217. package/src/{sprites → chessboard/sprites}/eyes-br.png +0 -0
  218. package/src/{sprites → chessboard/sprites}/eyes-spatial-bx.png +0 -0
  219. package/src/{sprites → chessboard/sprites}/eyes-spatial-wx.png +0 -0
  220. package/src/{sprites → chessboard/sprites}/eyes-wb.png +0 -0
  221. package/src/{sprites → chessboard/sprites}/eyes-wk.png +0 -0
  222. package/src/{sprites → chessboard/sprites}/eyes-wn.png +0 -0
  223. package/src/{sprites → chessboard/sprites}/eyes-wp.png +0 -0
  224. package/src/{sprites → chessboard/sprites}/eyes-wq.png +0 -0
  225. package/src/{sprites → chessboard/sprites}/eyes-wr.png +0 -0
  226. package/src/{sprites → chessboard/sprites}/fantasy-bb.png +0 -0
  227. package/src/{sprites → chessboard/sprites}/fantasy-bk.png +0 -0
  228. package/src/{sprites → chessboard/sprites}/fantasy-bn.png +0 -0
  229. package/src/{sprites → chessboard/sprites}/fantasy-bp.png +0 -0
  230. package/src/{sprites → chessboard/sprites}/fantasy-bq.png +0 -0
  231. package/src/{sprites → chessboard/sprites}/fantasy-br.png +0 -0
  232. package/src/{sprites → chessboard/sprites}/fantasy-bx.png +0 -0
  233. package/src/{sprites → chessboard/sprites}/fantasy-wb.png +0 -0
  234. package/src/{sprites → chessboard/sprites}/fantasy-wk.png +0 -0
  235. package/src/{sprites → chessboard/sprites}/fantasy-wn.png +0 -0
  236. package/src/{sprites → chessboard/sprites}/fantasy-wp.png +0 -0
  237. package/src/{sprites → chessboard/sprites}/fantasy-wq.png +0 -0
  238. package/src/{sprites → chessboard/sprites}/fantasy-wr.png +0 -0
  239. package/src/{sprites → chessboard/sprites}/fantasy-wx.png +0 -0
  240. package/src/{sprites → chessboard/sprites}/skulls-bb.png +0 -0
  241. package/src/{sprites → chessboard/sprites}/skulls-bk.png +0 -0
  242. package/src/{sprites → chessboard/sprites}/skulls-bn.png +0 -0
  243. package/src/{sprites → chessboard/sprites}/skulls-bp.png +0 -0
  244. package/src/{sprites → chessboard/sprites}/skulls-bq.png +0 -0
  245. package/src/{sprites → chessboard/sprites}/skulls-br.png +0 -0
  246. package/src/{sprites → chessboard/sprites}/skulls-bx.png +0 -0
  247. package/src/{sprites → chessboard/sprites}/skulls-wb.png +0 -0
  248. package/src/{sprites → chessboard/sprites}/skulls-wk.png +0 -0
  249. package/src/{sprites → chessboard/sprites}/skulls-wn.png +0 -0
  250. package/src/{sprites → chessboard/sprites}/skulls-wp.png +0 -0
  251. package/src/{sprites → chessboard/sprites}/skulls-wq.png +0 -0
  252. package/src/{sprites → chessboard/sprites}/skulls-wr.png +0 -0
  253. package/src/{sprites → chessboard/sprites}/skulls-wx.png +0 -0
  254. package/src/{sprites → chessboard/sprites}/spatial-bb.png +0 -0
  255. package/src/{sprites → chessboard/sprites}/spatial-bk.png +0 -0
  256. package/src/{sprites → chessboard/sprites}/spatial-bn.png +0 -0
  257. package/src/{sprites → chessboard/sprites}/spatial-bp.png +0 -0
  258. package/src/{sprites → chessboard/sprites}/spatial-bq.png +0 -0
  259. package/src/{sprites → chessboard/sprites}/spatial-br.png +0 -0
  260. package/src/{sprites → chessboard/sprites}/spatial-wb.png +0 -0
  261. package/src/{sprites → chessboard/sprites}/spatial-wk.png +0 -0
  262. package/src/{sprites → chessboard/sprites}/spatial-wn.png +0 -0
  263. package/src/{sprites → chessboard/sprites}/spatial-wp.png +0 -0
  264. package/src/{sprites → chessboard/sprites}/spatial-wq.png +0 -0
  265. package/src/{sprites → chessboard/sprites}/spatial-wr.png +0 -0
  266. package/src/decs.d.ts +26 -0
  267. package/src/{css/error_box.css → errorbox/ErrorBox.css} +2 -2
  268. package/src/errorbox/ErrorBox.tsx +129 -0
  269. package/src/exception.ts +51 -0
  270. package/src/i18n.ts +43 -0
  271. package/{dist/lib/css/symbol.css → src/icons/AnnotationSymbolShape.css} +2 -2
  272. package/src/{impl/TextSymbol.js → icons/AnnotationSymbolShape.tsx} +32 -30
  273. package/src/{ArrowMarkerIcon.js → icons/ArrowMarkerIcon.tsx} +39 -36
  274. package/src/{impl/ArrowTip.js → icons/ArrowTip.tsx} +20 -20
  275. package/src/{SquareMarkerIcon.js → icons/SquareMarkerIcon.tsx} +35 -28
  276. package/src/{TextMarkerIcon.js → icons/TextMarkerIcon.tsx} +40 -32
  277. package/{dist/lib/css → src/icons}/arrow.css +2 -2
  278. package/src/index.ts +38 -0
  279. package/src/{css/movetext.css → movetext/Movetext.css} +2 -2
  280. package/src/movetext/Movetext.tsx +278 -0
  281. package/src/movetext/MovetextImpl.tsx +493 -0
  282. package/src/{fonts → movetext/fonts}/chessalpha.woff +0 -0
  283. package/src/{fonts → movetext/fonts}/chessalpha.woff2 +0 -0
  284. package/src/{css → movetext}/fonts.css +4 -4
  285. package/src/movetext/htmlFilter.tsx +188 -0
  286. package/src/{formatmove.js → movetext/moveFormatter.tsx} +39 -26
  287. package/src/sanitization.ts +51 -0
  288. package/src/types.ts +311 -0
  289. package/src/util.ts +39 -0
  290. package/test/.eslintrc.yml +3 -3
  291. package/test/{1_markers.js → 01_types.js} +89 -4
  292. package/test/{2_chessboard_util.js → 02_chessboard_util.js} +16 -7
  293. package/test/{3_marker_icons_graphic.js → 03_error_box_graphic.js} +20 -14
  294. package/test/04_marker_icons_graphic.js +49 -0
  295. package/test/05_chessboard_graphic.js +92 -0
  296. package/test/06_chessboard_animation.js +71 -0
  297. package/test/07_chessboard_interaction.js +130 -0
  298. package/test/08_chessboard_play_moves.js +98 -0
  299. package/test/{7_movetext_graphic.js → 09_movetext_graphic.js} +32 -16
  300. package/test/{8_movetext_interaction.js → 10_movetext_interaction.js} +18 -23
  301. package/test/common/graphic.js +67 -33
  302. package/test/graphic_references/03_error_box_graphic/base/cut_beginning_of_text.png +0 -0
  303. package/test/graphic_references/03_error_box_graphic/base/cut_end_of_text.png +0 -0
  304. package/test/graphic_references/03_error_box_graphic/base/cut_on_line_breaks.png +0 -0
  305. package/test/graphic_references/03_error_box_graphic/base/error_index_not_integer.png +0 -0
  306. package/test/graphic_references/03_error_box_graphic/base/full.png +0 -0
  307. package/test/graphic_references/03_error_box_graphic/base/minimal.png +0 -0
  308. package/test/graphic_references/03_error_box_graphic/base/missing_error_index.png +0 -0
  309. package/test/graphic_references/03_error_box_graphic/base/missing_error_text.png +0 -0
  310. package/test/graphic_references/03_error_box_graphic/base/negative_error_index.png +0 -0
  311. package/test/graphic_references/03_error_box_graphic/base/single_character_text.png +0 -0
  312. package/test/graphic_references/03_error_box_graphic/base/too_large_error_index.png +0 -0
  313. package/test/graphic_references/03_error_box_graphic/localization/default.png +0 -0
  314. package/test/graphic_references/04_marker_icons_graphic/base/colorized_arrow.png +0 -0
  315. package/test/{references/01_marker_icons/1.png → graphic_references/04_marker_icons_graphic/base/colorized_square.png} +0 -0
  316. package/test/graphic_references/04_marker_icons_graphic/base/colorized_symbol.png +0 -0
  317. package/test/graphic_references/04_marker_icons_graphic/base/colorized_text.png +0 -0
  318. package/test/graphic_references/04_marker_icons_graphic/base/default_arrow.png +0 -0
  319. package/test/{references/01_marker_icons/0.png → graphic_references/04_marker_icons_graphic/base/default_square.png} +0 -0
  320. package/test/graphic_references/04_marker_icons_graphic/base/default_text.png +0 -0
  321. package/test/graphic_references/04_marker_icons_graphic/base/invalid_arrow_size.png +0 -0
  322. package/test/graphic_references/04_marker_icons_graphic/base/invalid_square_size.png +0 -0
  323. package/test/graphic_references/04_marker_icons_graphic/base/invalid_symbol.png +0 -0
  324. package/test/graphic_references/04_marker_icons_graphic/base/invalid_text_size.png +0 -0
  325. package/test/graphic_references/04_marker_icons_graphic/base/wrapped_arrow.png +0 -0
  326. package/test/{references/01_marker_icons/2.png → graphic_references/04_marker_icons_graphic/base/wrapped_square.png} +0 -0
  327. package/test/graphic_references/04_marker_icons_graphic/base/wrapped_symbol.png +0 -0
  328. package/test/graphic_references/04_marker_icons_graphic/base/wrapped_text.png +0 -0
  329. package/test/{references/04_chessboard_annotations/4.png → graphic_references/05_chessboard_graphic/annotations/overlap.png} +0 -0
  330. package/test/{references/04_chessboard_annotations/5.png → graphic_references/05_chessboard_graphic/annotations/overlap_and_flip.png} +0 -0
  331. package/test/{references/04_chessboard_annotations/0.png → graphic_references/05_chessboard_graphic/annotations/with_coordinates.png} +0 -0
  332. package/test/{references/04_chessboard_annotations/1.png → graphic_references/05_chessboard_graphic/annotations/with_coordinates_and_flip.png} +0 -0
  333. package/test/{references/04_chessboard_annotations/2.png → graphic_references/05_chessboard_graphic/annotations/without_coordinates.png} +0 -0
  334. package/test/{references/04_chessboard_annotations/3.png → graphic_references/05_chessboard_graphic/annotations/without_coordinates_and_flip.png} +0 -0
  335. package/test/{references/02_chessboard_simple/0.png → graphic_references/05_chessboard_graphic/base/default.png} +0 -0
  336. package/test/{references/02_chessboard_simple/1.png → graphic_references/05_chessboard_graphic/base/empty.png} +0 -0
  337. package/test/{references/02_chessboard_simple/3.png → graphic_references/05_chessboard_graphic/base/from_fen.png} +0 -0
  338. package/test/{references/02_chessboard_simple/4.png → graphic_references/05_chessboard_graphic/base/from_kokopu_object.png} +0 -0
  339. package/test/{references/02_chessboard_simple/2.png → graphic_references/05_chessboard_graphic/base/parsing_error.png} +0 -0
  340. package/test/graphic_references/05_chessboard_graphic/base/wrong_position_type.png +0 -0
  341. package/test/graphic_references/05_chessboard_graphic/chess_variants/chess960.png +0 -0
  342. package/test/graphic_references/05_chessboard_graphic/chess_variants/chess960_with_move.png +0 -0
  343. package/test/graphic_references/05_chessboard_graphic/chess_variants/invalid_variant.png +0 -0
  344. package/test/graphic_references/05_chessboard_graphic/chess_variants/invalid_variant_with_fen.png +0 -0
  345. package/test/graphic_references/05_chessboard_graphic/chess_variants/special_code.png +0 -0
  346. package/test/graphic_references/05_chessboard_graphic/chess_variants/variant_with_std_initial_position.png +0 -0
  347. package/test/{references/03_chessboard_flipped/2.png → graphic_references/05_chessboard_graphic/chess_variants/variant_without_std_initial_position.png} +0 -0
  348. package/test/{references/03_chessboard_flipped/0.png → graphic_references/05_chessboard_graphic/flipped/default.png} +0 -0
  349. package/test/{references/03_chessboard_flipped/1.png → graphic_references/05_chessboard_graphic/flipped/empty.png} +0 -0
  350. package/test/{references/03_chessboard_flipped/3.png → graphic_references/05_chessboard_graphic/flipped/from_fen.png} +0 -0
  351. package/test/{references/03_chessboard_flipped/4.png → graphic_references/05_chessboard_graphic/flipped/from_kokopu_object.png} +0 -0
  352. package/test/graphic_references/05_chessboard_graphic/flipped/parsing_error.png +0 -0
  353. package/test/{references/05_chessboard_move/4.png → graphic_references/05_chessboard_graphic/move/capture.png} +0 -0
  354. package/test/{references/05_chessboard_move/5.png → graphic_references/05_chessboard_graphic/move/castling_move.png} +0 -0
  355. package/test/{references/05_chessboard_move/0.png → graphic_references/05_chessboard_graphic/move/default.png} +0 -0
  356. package/test/{references/05_chessboard_move/6.png → graphic_references/05_chessboard_graphic/move/en-passant.png} +0 -0
  357. package/test/{references/05_chessboard_move/1.png → graphic_references/05_chessboard_graphic/move/no_move_arrow.png} +0 -0
  358. package/test/{references/05_chessboard_move/2.png → graphic_references/05_chessboard_graphic/move/parsing_error.png} +0 -0
  359. package/test/{references/05_chessboard_move/7.png → graphic_references/05_chessboard_graphic/move/promotion.png} +0 -0
  360. package/test/{references/05_chessboard_move/3.png → graphic_references/05_chessboard_graphic/move/with_forced_move_arrow_and_flip.png} +0 -0
  361. package/test/graphic_references/05_chessboard_graphic/move/wrong_move_arrow_color_type.png +0 -0
  362. package/test/graphic_references/05_chessboard_graphic/move/wrong_move_type.png +0 -0
  363. package/test/{references/07_chessboard_theme/3.png → graphic_references/05_chessboard_graphic/theme/custom_1.png} +0 -0
  364. package/test/{references/07_chessboard_theme/4.png → graphic_references/05_chessboard_graphic/theme/custom_2.png} +0 -0
  365. package/test/{references/07_chessboard_theme/5.png → graphic_references/05_chessboard_graphic/theme/custom_3.png} +0 -0
  366. package/test/{references/07_chessboard_theme/6.png → graphic_references/05_chessboard_graphic/theme/custom_4.png} +0 -0
  367. package/test/{references/07_chessboard_theme/7.png → graphic_references/05_chessboard_graphic/theme/custom_5.png} +0 -0
  368. package/test/{references/07_chessboard_theme/8.png → graphic_references/05_chessboard_graphic/theme/custom_6.png} +0 -0
  369. package/test/{references/07_chessboard_theme/0.png → graphic_references/05_chessboard_graphic/theme/default.png} +0 -0
  370. package/test/{references/07_chessboard_theme/1.png → graphic_references/05_chessboard_graphic/theme/large.png} +0 -0
  371. package/test/{references/07_chessboard_theme/2.png → graphic_references/05_chessboard_graphic/theme/small.png} +0 -0
  372. package/test/graphic_references/05_chessboard_graphic/theme/wrong_colorset.png +0 -0
  373. package/test/graphic_references/05_chessboard_graphic/theme/wrong_pieceset.png +0 -0
  374. package/test/graphic_references/05_chessboard_graphic/theme/wrong_square_size_type.png +0 -0
  375. package/test/{references/06a_chessboard_animated_move/2.png → graphic_references/06_chessboard_animation/base_1/capture.png} +0 -0
  376. package/test/{references/06a_chessboard_animated_move/3.png → graphic_references/06_chessboard_animation/base_1/castling_move.png} +0 -0
  377. package/test/{references/06a_chessboard_animated_move/4.png → graphic_references/06_chessboard_animation/base_1/en-passant.png} +0 -0
  378. package/test/{references/06a_chessboard_animated_move/0.png → graphic_references/06_chessboard_animation/base_1/move_1.png} +0 -0
  379. package/test/{references/06a_chessboard_animated_move/1.png → graphic_references/06_chessboard_animation/base_1/move_2.png} +0 -0
  380. package/test/{references/06a_chessboard_animated_move/5.png → graphic_references/06_chessboard_animation/base_1/promotion.png} +0 -0
  381. package/test/{references/06b_chessboard_animated_move/2.png → graphic_references/06_chessboard_animation/base_2/capture.png} +0 -0
  382. package/test/{references/06b_chessboard_animated_move/3.png → graphic_references/06_chessboard_animation/base_2/castling_move.png} +0 -0
  383. package/test/{references/06b_chessboard_animated_move/4.png → graphic_references/06_chessboard_animation/base_2/en-passant.png} +0 -0
  384. package/test/{references/06b_chessboard_animated_move/0.png → graphic_references/06_chessboard_animation/base_2/move_1.png} +0 -0
  385. package/test/{references/06b_chessboard_animated_move/1.png → graphic_references/06_chessboard_animation/base_2/move_2.png} +0 -0
  386. package/test/{references/06b_chessboard_animated_move/5.png → graphic_references/06_chessboard_animation/base_2/promotion.png} +0 -0
  387. package/test/{references/06c_chessboard_animated_move/2.png → graphic_references/06_chessboard_animation/base_3/capture.png} +0 -0
  388. package/test/{references/06c_chessboard_animated_move/3.png → graphic_references/06_chessboard_animation/base_3/castling_move.png} +0 -0
  389. package/test/{references/06c_chessboard_animated_move/4.png → graphic_references/06_chessboard_animation/base_3/en-passant.png} +0 -0
  390. package/test/{references/06c_chessboard_animated_move/0.png → graphic_references/06_chessboard_animation/base_3/move_1.png} +0 -0
  391. package/test/{references/06c_chessboard_animated_move/1.png → graphic_references/06_chessboard_animation/base_3/move_2.png} +0 -0
  392. package/test/{references/06c_chessboard_animated_move/5.png → graphic_references/06_chessboard_animation/base_3/promotion.png} +0 -0
  393. package/test/graphic_references/06_chessboard_animation/on_redraw/final_state.png +0 -0
  394. package/test/graphic_references/06_chessboard_animation/on_redraw/initial_state.png +0 -0
  395. package/test/{references/10_chessboard_edit_arrows → graphic_references/07_chessboard_interaction/edit_arrows}/base_1.png +0 -0
  396. package/test/{references/10_chessboard_edit_arrows → graphic_references/07_chessboard_interaction/edit_arrows}/base_2.png +0 -0
  397. package/test/{references/10_chessboard_edit_arrows/null_vector.png → graphic_references/07_chessboard_interaction/edit_arrows/from_==_to.png} +0 -0
  398. package/test/{references/10_chessboard_edit_arrows → graphic_references/07_chessboard_interaction/edit_arrows}/out_of_board.png +0 -0
  399. package/test/{references/10_chessboard_edit_arrows → graphic_references/07_chessboard_interaction/edit_arrows}/over_arrow_marker.png +0 -0
  400. package/test/{references/10_chessboard_edit_arrows → graphic_references/07_chessboard_interaction/edit_arrows}/over_square_marker.png +0 -0
  401. package/test/graphic_references/07_chessboard_interaction/error/edit_color_not_set.png +0 -0
  402. package/test/graphic_references/07_chessboard_interaction/error/wrong_interaction_mode.png +0 -0
  403. package/test/{references/09_chessboard_move_pieces → graphic_references/07_chessboard_interaction/move_pieces}/after_move.png +0 -0
  404. package/test/{references/09_chessboard_move_pieces/null_vector.png → graphic_references/07_chessboard_interaction/move_pieces/from_==_to.png} +0 -0
  405. package/test/{references/09_chessboard_move_pieces/empty_square.png → graphic_references/07_chessboard_interaction/move_pieces/move_empty_square.png} +0 -0
  406. package/test/{references/09_chessboard_move_pieces → graphic_references/07_chessboard_interaction/move_pieces}/out_of_board.png +0 -0
  407. package/test/{references/09_chessboard_move_pieces → graphic_references/07_chessboard_interaction/move_pieces}/over_arrow_marker.png +0 -0
  408. package/test/{references/09_chessboard_move_pieces → graphic_references/07_chessboard_interaction/move_pieces}/over_empty.png +0 -0
  409. package/test/{references/09_chessboard_move_pieces/over_non_empty_1.png → graphic_references/07_chessboard_interaction/move_pieces/over_non-empty_1.png} +0 -0
  410. package/test/{references/09_chessboard_move_pieces/over_non_empty_2.png → graphic_references/07_chessboard_interaction/move_pieces/over_non-empty_2.png} +0 -0
  411. package/test/{references/09_chessboard_move_pieces → graphic_references/07_chessboard_interaction/move_pieces}/over_square_marker.png +0 -0
  412. package/test/{references/09_chessboard_move_pieces → graphic_references/07_chessboard_interaction/move_pieces}/over_text_marker.png +0 -0
  413. package/test/{references/11_chessboard_play_moves → graphic_references/08_chessboard_play_moves/base}/castling_move.png +0 -0
  414. package/test/{references/11_chessboard_play_moves → graphic_references/08_chessboard_play_moves/base}/chess960_ambiguous_king_move.png +0 -0
  415. package/test/{references/11_chessboard_play_moves → graphic_references/08_chessboard_play_moves/base}/chess960_castling_move_1.png +0 -0
  416. package/test/{references/11_chessboard_play_moves → graphic_references/08_chessboard_play_moves/base}/chess960_castling_move_2.png +0 -0
  417. package/test/{references/11_chessboard_play_moves/chess960_non_kxr_castling.png → graphic_references/08_chessboard_play_moves/base/chess960_non-kxr_castling.png} +0 -0
  418. package/test/{references/11_chessboard_play_moves/null_vector.png → graphic_references/08_chessboard_play_moves/base/from_==_to.png} +0 -0
  419. package/test/{references/11_chessboard_play_moves → graphic_references/08_chessboard_play_moves/base}/illegal_move.png +0 -0
  420. package/test/{references/11_chessboard_play_moves → graphic_references/08_chessboard_play_moves/base}/illegal_position.png +0 -0
  421. package/test/{references/11_chessboard_play_moves → graphic_references/08_chessboard_play_moves/base}/out_of_board.png +0 -0
  422. package/test/{references/11_chessboard_play_moves → graphic_references/08_chessboard_play_moves/base}/regular_move_1.png +0 -0
  423. package/test/{references/11_chessboard_play_moves → graphic_references/08_chessboard_play_moves/base}/regular_move_2.png +0 -0
  424. package/test/{references/10_chessboard_edit_arrows/edit_color_not_set.png → graphic_references/08_chessboard_play_moves/base/wrong_color_moved.png} +0 -0
  425. package/test/{references/12_chessboard_play_promotions → graphic_references/08_chessboard_play_moves/promotions}/antichess_promotion.png +0 -0
  426. package/test/{references/12_chessboard_play_promotions → graphic_references/08_chessboard_play_moves/promotions}/cancel_promotion.png +0 -0
  427. package/test/{references/12_chessboard_play_promotions → graphic_references/08_chessboard_play_moves/promotions}/regular_promotion_1.png +0 -0
  428. package/test/{references/12_chessboard_play_promotions → graphic_references/08_chessboard_play_moves/promotions}/regular_promotion_2.png +0 -0
  429. package/test/{references/13_movetext_simple/0.png → graphic_references/09_movetext_graphic/base/game_1.png} +0 -0
  430. package/test/{references/13_movetext_simple/1.png → graphic_references/09_movetext_graphic/base/game_2.png} +0 -0
  431. package/test/{references/13_movetext_simple/2.png → graphic_references/09_movetext_graphic/base/game_3.png} +0 -0
  432. package/test/{references/13_movetext_simple/3.png → graphic_references/09_movetext_graphic/base/game_4.png} +0 -0
  433. package/test/{references/14_movetext_error/2.png → graphic_references/09_movetext_graphic/error/pgn_parsing_error_1.png} +0 -0
  434. package/test/{references/14_movetext_error/3.png → graphic_references/09_movetext_graphic/error/pgn_parsing_error_2.png} +0 -0
  435. package/test/{references/14_movetext_error/0.png → graphic_references/09_movetext_graphic/error/wrong_game_index_1.png} +0 -0
  436. package/test/{references/14_movetext_error/1.png → graphic_references/09_movetext_graphic/error/wrong_game_index_2.png} +0 -0
  437. package/test/graphic_references/09_movetext_graphic/error/wrong_game_index_type.png +0 -0
  438. package/test/graphic_references/09_movetext_graphic/error/wrong_game_type.png +0 -0
  439. package/test/{references/15_movetext_html/2.png → graphic_references/09_movetext_graphic/html/filtered_tags_and_attributes.png} +0 -0
  440. package/test/{references/15_movetext_html/1.png → graphic_references/09_movetext_graphic/html/html_in_comments.png} +0 -0
  441. package/test/{references/15_movetext_html/0.png → graphic_references/09_movetext_graphic/html/html_in_headers.png} +0 -0
  442. package/test/{references/16_movetext_options/1.png → graphic_references/09_movetext_graphic/options/custom_piece_symbols.png} +0 -0
  443. package/test/{references/16_movetext_options/2.png → graphic_references/09_movetext_graphic/options/figurine_piece_symbols_and_diagram_options.png} +0 -0
  444. package/test/{references/16_movetext_options/3.png → graphic_references/09_movetext_graphic/options/hidden_diagrams.png} +0 -0
  445. package/test/{references/16_movetext_options/0.png → graphic_references/09_movetext_graphic/options/localized_piece_symbols.png} +0 -0
  446. package/test/graphic_references/09_movetext_graphic/options/wrong_diagram_options_1.png +0 -0
  447. package/test/graphic_references/09_movetext_graphic/options/wrong_diagram_options_2.png +0 -0
  448. package/test/graphic_references/10_movetext_interaction/error/wrong_interaction_mode.png +0 -0
  449. package/test/{references/17_movetext_interaction/0.png → graphic_references/10_movetext_interaction/select_moves/click_on_disabled.png} +0 -0
  450. package/test/{references/17_movetext_interaction/1.png → graphic_references/10_movetext_interaction/select_moves/click_on_unselected.png} +0 -0
  451. package/test/{references/17_movetext_interaction/2.png → graphic_references/10_movetext_interaction/select_moves/click_on_with_variations.png} +0 -0
  452. package/test/graphic_test_app/.eslintrc.yml +5 -0
  453. package/test/graphic_test_app/03_error_box_graphic/base.tsx +46 -0
  454. package/{scripts/clean-graphic-output.js → test/graphic_test_app/03_error_box_graphic/localization.tsx} +10 -7
  455. package/{graphic_test_src/01_marker_icons.js → test/graphic_test_app/04_marker_icons_graphic/base.tsx} +15 -7
  456. package/{graphic_test_src/04_chessboard_annotations.js → test/graphic_test_app/05_chessboard_graphic/annotations.tsx} +23 -14
  457. package/{graphic_test_src/02_chessboard_simple.js → test/graphic_test_app/05_chessboard_graphic/base.tsx} +6 -6
  458. package/test/graphic_test_app/05_chessboard_graphic/chess_variants.tsx +35 -0
  459. package/{graphic_test_src/03_chessboard_flipped.js → test/graphic_test_app/05_chessboard_graphic/flipped.tsx} +5 -5
  460. package/{graphic_test_src/05_chessboard_move.js → test/graphic_test_app/05_chessboard_graphic/move.tsx} +9 -8
  461. package/{graphic_test_src/07_chessboard_theme.js → test/graphic_test_app/05_chessboard_graphic/theme.tsx} +14 -11
  462. package/{graphic_test_src/06a_chessboard_animated_move.js → test/graphic_test_app/06_chessboard_animation/base_1.tsx} +5 -5
  463. package/{graphic_test_src/06b_chessboard_animated_move.js → test/graphic_test_app/06_chessboard_animation/base_2.tsx} +5 -5
  464. package/{graphic_test_src/06c_chessboard_animated_move.js → test/graphic_test_app/06_chessboard_animation/base_3.tsx} +5 -5
  465. package/test/graphic_test_app/06_chessboard_animation/on_redraw.tsx +49 -0
  466. package/{graphic_test_src/08_chessboard_click_squares.js → test/graphic_test_app/07_chessboard_interaction/click_squares.tsx} +7 -6
  467. package/{graphic_test_src/10_chessboard_edit_arrows.js → test/graphic_test_app/07_chessboard_interaction/edit_arrows.tsx} +7 -7
  468. package/test/graphic_test_app/07_chessboard_interaction/error.tsx +30 -0
  469. package/{graphic_test_src/09_chessboard_move_pieces.js → test/graphic_test_app/07_chessboard_interaction/move_pieces.tsx} +7 -6
  470. package/{graphic_test_src/11_chessboard_play_moves.js → test/graphic_test_app/08_chessboard_play_moves/base.tsx} +6 -6
  471. package/{graphic_test_src/12_chessboard_play_promotions.js → test/graphic_test_app/08_chessboard_play_moves/promotions.tsx} +6 -6
  472. package/{graphic_test_src/13_movetext_simple.js → test/graphic_test_app/09_movetext_graphic/base.tsx} +8 -8
  473. package/{graphic_test_src/14_movetext_error.js → test/graphic_test_app/09_movetext_graphic/error.tsx} +10 -9
  474. package/{graphic_test_src/15_movetext_html.js → test/graphic_test_app/09_movetext_graphic/html.tsx} +7 -7
  475. package/{graphic_test_src/16_movetext_options.js → test/graphic_test_app/09_movetext_graphic/options.tsx} +9 -6
  476. package/test/graphic_test_app/10_movetext_interaction/error.tsx +31 -0
  477. package/{graphic_test_src/17_movetext_interaction.js → test/graphic_test_app/10_movetext_interaction/select_moves.tsx} +7 -7
  478. package/test/graphic_test_app/common/decs.d.ts +26 -0
  479. package/{graphic_test_src → test/graphic_test_app}/common/dummy.pgn +0 -0
  480. package/{graphic_test_src → test/graphic_test_app}/common/games.pgn +1 -1
  481. package/{graphic_test_src → test/graphic_test_app}/common/heartbeat.txt +0 -0
  482. package/{graphic_test_src → test/graphic_test_app}/common/smiley.png +0 -0
  483. package/{graphic_test_src → test/graphic_test_app}/common/test_app.css +11 -2
  484. package/{graphic_test_src/common/test_app.js → test/graphic_test_app/common/test_app.tsx} +62 -14
  485. package/tsconfig.json +15 -0
  486. package/.babelrc +0 -3
  487. package/dist/lib/ArrowMarkerIcon.js +0 -85
  488. package/dist/lib/Chessboard.js +0 -1276
  489. package/dist/lib/ErrorBox.js +0 -125
  490. package/dist/lib/Movetext.js +0 -805
  491. package/dist/lib/SquareMarkerIcon.js +0 -69
  492. package/dist/lib/TextMarkerIcon.js +0 -74
  493. package/dist/lib/formatmove.js +0 -107
  494. package/dist/lib/impl/DraggableHandle.js +0 -268
  495. package/dist/lib/impl/HtmlSanitizer.js +0 -145
  496. package/dist/lib/impl/Motion.js +0 -109
  497. package/dist/lib/impl/TextSymbol.js +0 -89
  498. package/dist/lib/impl/piecesets.js +0 -219
  499. package/dist/lib/impl/util.js +0 -71
  500. package/dist/lib/markers.js +0 -144
  501. package/doc_src/.eslintrc.yml +0 -2
  502. package/src/Chessboard.js +0 -1034
  503. package/src/ErrorBox.js +0 -132
  504. package/src/Movetext.js +0 -671
  505. package/src/impl/DraggableHandle.js +0 -232
  506. package/src/impl/HtmlSanitizer.js +0 -126
  507. package/src/impl/colorsets.js +0 -119
  508. package/src/impl/piecesets.js +0 -218
  509. package/src/impl/util.js +0 -68
  510. package/src/index.js +0 -31
  511. package/src/markers.js +0 -115
  512. package/test/4_chessboard_graphic.js +0 -49
  513. package/test/5_chessboard_interaction.js +0 -135
  514. package/test/6_chessboard_play_moves.js +0 -107
  515. package/test/references/01_marker_icons/10.png +0 -0
  516. package/test/references/01_marker_icons/3.png +0 -0
  517. package/test/references/01_marker_icons/4.png +0 -0
  518. package/test/references/01_marker_icons/5.png +0 -0
  519. package/test/references/01_marker_icons/6.png +0 -0
  520. package/test/references/01_marker_icons/7.png +0 -0
  521. package/test/references/01_marker_icons/8.png +0 -0
  522. package/test/references/01_marker_icons/9.png +0 -0
  523. package/test/references/02_chessboard_simple/5.png +0 -0
  524. package/test/references/05_chessboard_move/8.png +0 -0
  525. package/test/references/11_chessboard_play_moves/wrong_color.png +0 -0
  526. package/test/references/14_movetext_error/4.png +0 -0
package/.eslintrc.yml ADDED
@@ -0,0 +1,84 @@
1
+ env:
2
+ browser: true
3
+ es2021: true
4
+
5
+ plugins:
6
+ - '@typescript-eslint'
7
+ - react
8
+
9
+ settings:
10
+ react:
11
+ version: 18.2.0
12
+
13
+ extends:
14
+ - 'eslint:recommended'
15
+ - 'plugin:@typescript-eslint/recommended'
16
+ - 'plugin:react/recommended'
17
+
18
+ parser: '@typescript-eslint/parser'
19
+
20
+ parserOptions:
21
+ ecmaVersion: 12
22
+ sourceType: module
23
+
24
+ rules:
25
+
26
+ # Style
27
+ indent: [ error, tab, { SwitchCase: 1 }]
28
+ linebreak-style: [ error, unix ]
29
+ quotes: [ error, single ]
30
+ semi: [ error, always ]
31
+ camelcase: [ error ]
32
+ no-trailing-spaces: [ error ]
33
+
34
+ # Additional rules (possible errors)
35
+ no-console: [ error ]
36
+
37
+ # Additional rules (best practices)
38
+ curly: [ error, all ]
39
+ eqeqeq: [ error, always ]
40
+ no-alert: [ error ]
41
+ no-confusing-arrow: [ error ]
42
+ no-constructor-return: [ error ]
43
+ no-duplicate-imports: [ error ]
44
+ no-eval: [ error ]
45
+ no-extend-native: [ error ]
46
+ no-floating-decimal: [ error ]
47
+ no-implicit-coercion: [ error ]
48
+ no-implied-eval: [ error ]
49
+ no-invalid-this: [ error ]
50
+ no-labels: [ error ]
51
+ no-lone-blocks: [ error ]
52
+ no-loop-func: [ error ]
53
+ no-new: [ error ]
54
+ no-new-func: [ error ]
55
+ no-new-wrappers: [ error ]
56
+ no-octal-escape: [ error ]
57
+ no-return-assign: [ error, always ]
58
+ no-script-url: [ error ]
59
+ no-self-compare: [ error ]
60
+ no-throw-literal: [ error ]
61
+ no-unmodified-loop-condition: [ error ]
62
+ no-unused-expressions: [ error ]
63
+ no-useless-computed-key: [ error ]
64
+ no-useless-concat: [ error ]
65
+ no-useless-rename: [ error ]
66
+ no-useless-return: [ error ]
67
+ no-var: [ error ]
68
+ no-warning-comments: [ warn, { location: anywhere, terms: [ TODO ] }]
69
+ prefer-arrow-callback: [ error ]
70
+ prefer-const: [ error ]
71
+ prefer-regex-literals: [ error ]
72
+ prefer-rest-params: [ error ]
73
+ rest-spread-spacing: [ error ]
74
+
75
+ # Additional rules (typescript)
76
+ '@typescript-eslint/no-shadow': [ error, { builtinGlobals: true }]
77
+
78
+ # Relaxed rules
79
+ no-constant-condition: [ error, { checkLoops: false }]
80
+
81
+ # Relaxed rules (typescript)
82
+ '@typescript-eslint/no-non-null-assertion': [ off ]
83
+ '@typescript-eslint/no-namespace': [ off ]
84
+ '@typescript-eslint/no-empty-function': [ error, { allow: [ private-constructors, protected-constructors ] }]
package/.nycrc.yml CHANGED
@@ -10,5 +10,4 @@ check-coverage: true
10
10
 
11
11
  exclude:
12
12
  - build/**
13
- - graphic_test_src/**
14
13
  - test/**
package/README.md CHANGED
@@ -33,6 +33,6 @@ import { Chessboard } from 'kokopu-react';
33
33
  createRoot(document.body).render(<Chessboard />);
34
34
  ```
35
35
 
36
- ![Chessboard component](test/references/02_chessboard_simple/0.png)
36
+ ![Chessboard component](test/graphic_references/05_chessboard_graphic/base/default.png)
37
37
 
38
38
  More examples available in [documentation & live-demo](https://kokopu-react.yo35.org/).
@@ -1,4 +1,4 @@
1
- /******************************************************************************
1
+ /* -------------------------------------------------------------------------- *
2
2
  * *
3
3
  * This file is part of Kokopu-React, a JavaScript chess library. *
4
4
  * Copyright (C) 2021-2023 Yoann Le Montagner <yo35 -at- melix.net> *
@@ -17,7 +17,7 @@
17
17
  * Public License along with this program. If not, see *
18
18
  * <http://www.gnu.org/licenses/>. *
19
19
  * *
20
- ******************************************************************************/
20
+ * -------------------------------------------------------------------------- */
21
21
 
22
22
 
23
23
  .kokopu-coordinate {
@@ -0,0 +1,171 @@
1
+ import * as React from 'react';
2
+ import { MoveDescriptor, Position, Square } from 'kokopu';
3
+ import { Colorset, Pieceset, AnnotationColor, SquareMarkerSet, TextMarkerSet, ArrowMarkerSet } from '../types';
4
+ /**
5
+ * Define a limit applicable to the parameters of a {@link Chessboard} on small-screen devices.
6
+ */
7
+ export interface SmallScreenLimit {
8
+ width: number;
9
+ squareSize?: number;
10
+ coordinateVisible?: boolean;
11
+ }
12
+ export interface ChessboardProps {
13
+ /**
14
+ * Displayed position. Can be a [kokopu.Position](https://kokopu.yo35.org/docs/current/classes/Position.html) object,
15
+ * a [FEN string](https://en.wikipedia.org/wiki/Forsyth%E2%80%93Edwards_Notation),
16
+ * `'start'` (usual starting position), or `'empty'` (empty board).
17
+ *
18
+ * Optionally, the FEN string can be prefixed with `'variant:'`, `variant` corresponding to one of the
19
+ * [game variant](https://kokopu.yo35.org/docs/current/types/GameVariant.html) supported by Kokopu. For instance:
20
+ * `'chess960:nrkbqrbn/pppppppp/8/8/8/8/PPPPPPPP/NRKBQRBN w KQkq - 0 1'`.
21
+ */
22
+ position: Position | string;
23
+ /**
24
+ * Displayed move (optional), defined either as a [kokopu.MoveDescriptor](https://kokopu.yo35.org/docs/current/classes/MoveDescriptor.html) object
25
+ * or as a [SAN string](https://en.wikipedia.org/wiki/Algebraic_notation_(chess)) (e.g. `'Nf3'`). In both cases, it must represent
26
+ * a legal move in position defined in attribute `position`.
27
+ */
28
+ move?: MoveDescriptor | string;
29
+ /**
30
+ * Square markers, defined as a {@link SquareMarkerSet} (e.g. `{ e4: 'g', d5: 'r' }`) or as a comma-separated CSL string (e.g. `'Rd5,Ge4'`).
31
+ */
32
+ squareMarkers?: SquareMarkerSet | string;
33
+ /**
34
+ * Text markers, defined as a {@link TextMarkerSet} (e.g. `{ e4: { symbol: 'A', color: 'g' }, d5: { symbol: 'z', color: 'r' }}`)
35
+ * or as a comma-separated CTL string (e.g. `'Rzd5,GAe4'`).
36
+ */
37
+ textMarkers?: TextMarkerSet | string;
38
+ /**
39
+ * Arrow markers, defined as a {@link ArrowMarkerSet} (e.g. `{ e2e4: 'g', g8f6: 'r', g8h6: 'y' }`)
40
+ * or as a comma-separated CAL string (e.g. `'Ge2e4,Rg8f6,Yg8h6'`).
41
+ */
42
+ arrowMarkers?: ArrowMarkerSet | string;
43
+ /**
44
+ * Whether the board is flipped (i.e. seen from Black's point of view) or not.
45
+ */
46
+ flipped: boolean;
47
+ /**
48
+ * Size of the squares (in pixels). Must be an integer between `Chessboard.minSquareSize()` and `Chessboard.maxSquareSize()`.
49
+ */
50
+ squareSize: number;
51
+ /**
52
+ * Whether the row and column coordinates are visible or not.
53
+ */
54
+ coordinateVisible: boolean;
55
+ /**
56
+ * Whether moves are highlighted with an arrow or not.
57
+ */
58
+ moveArrowVisible: boolean;
59
+ /**
60
+ * Color of the move arrow.
61
+ */
62
+ moveArrowColor: AnnotationColor;
63
+ /**
64
+ * Whether moves are animated or not.
65
+ */
66
+ animated: boolean;
67
+ /**
68
+ * Color theme ID. Must be a property of `Chessboard.colorsets()`.
69
+ */
70
+ colorset: string;
71
+ /**
72
+ * Piece theme ID. Must be a property of `Chessboard.piecesets()`.
73
+ */
74
+ pieceset: string;
75
+ /**
76
+ * Limits applicable on small-screen devices. For instance, if set to
77
+ * ```
78
+ * [
79
+ * { width: 768, squareSize: 40 },
80
+ * { width: 375, squareSize: 24, coordinateVisible: false }
81
+ * ]
82
+ * ```
83
+ * then on screens with resolution ≤768 pixels, the square size will be limited to 40 (whatever the value
84
+ * of the `squareSize` attribute); in addition, on screens with resolution ≤375 pixels, the square size
85
+ * will be limited to 24 and the row and column coordinates will always be hidden (whatever the value of the
86
+ * `coordinateVisible` attribute).
87
+ */
88
+ smallScreenLimits?: SmallScreenLimit[];
89
+ /**
90
+ * Type of action allowed with the mouse on the chessboard. If undefined, then the user cannot interact with the component.
91
+ *
92
+ * - `'movePieces'` allows the user to drag & drop the chess pieces from one square to another (regardless of the chess rules),
93
+ * - `'clickSquares'` allows the user to click on squares,
94
+ * - `'editArrows'` allows the user to draw arrow markers from one square to another (warning: attribute `editedArrowColor` must be set),
95
+ * - `'playMoves'` allows the user to play legal chess moves (thus no interaction is possible if the displayed position is not legal).
96
+ */
97
+ interactionMode?: 'movePieces' | 'clickSquares' | 'editArrows' | 'playMoves';
98
+ /**
99
+ * Color of the edited arrow. Mandatory if `interactionMode === 'editArrows'`, ignored otherwise.
100
+ */
101
+ editedArrowColor?: AnnotationColor;
102
+ /**
103
+ * Callback invoked when a piece is moved through drag&drop (only if `interactionMode` is set to `'movePieces'`).
104
+ */
105
+ onPieceMoved?: (from: Square, to: Square) => void;
106
+ /**
107
+ * Callback invoked when the user clicks on a square (only if `interactionMode` is set to `'clickSquares'`).
108
+ */
109
+ onSquareClicked?: (square: Square) => void;
110
+ /**
111
+ * Callback invoked when an arrow is dragged (only if `interactionMode` is set to `'editArrows'`).
112
+ */
113
+ onArrowEdited?: (from: Square, to: Square) => void;
114
+ /**
115
+ * Callback invoked when a move is played (only if `interactionMode` is set to `'playMoves'`).
116
+ */
117
+ onMovePlayed?: (move: string) => void;
118
+ }
119
+ interface ChessboardState {
120
+ windowWidth: number;
121
+ }
122
+ /**
123
+ * SVG image representing a chessboard diagram. Optionally, the user may interact with the board (move pieces, click on squares...).
124
+ * Annotations such as square markers or arrows can also be added to the board.
125
+ */
126
+ export declare class Chessboard extends React.Component<ChessboardProps, ChessboardState> {
127
+ static defaultProps: Partial<ChessboardProps>;
128
+ private windowResizeListener;
129
+ constructor(props: ChessboardProps);
130
+ componentDidMount(): void;
131
+ componentWillUnmount(): void;
132
+ private handleWindowResize;
133
+ render(): JSX.Element;
134
+ private getInteractionModeAndValidateEditedArrowColor;
135
+ /**
136
+ * Return the size of the chessboard, assuming it is built with the given attributes.
137
+ */
138
+ static size(squareSize: number, coordinateVisible: boolean, smallScreenLimits?: SmallScreenLimit[]): {
139
+ width: number;
140
+ height: number;
141
+ };
142
+ /**
143
+ * Return the maximum square size that would allow the chessboard to fit in a rectangle of size `width x height`.
144
+ */
145
+ static adaptSquareSize(width: number, height: number, coordinateVisible: boolean, smallScreenLimits?: SmallScreenLimit[]): number;
146
+ /**
147
+ * Minimum square size (inclusive).
148
+ *
149
+ * @public
150
+ */
151
+ static minSquareSize(): number;
152
+ /**
153
+ * Maximum square size (inclusive).
154
+ *
155
+ * @public
156
+ */
157
+ static maxSquareSize(): number;
158
+ /**
159
+ * Available colorsets for theming.
160
+ *
161
+ * @public
162
+ */
163
+ static colorsets(): Record<string, Colorset>;
164
+ /**
165
+ * Available piecesets for theming.
166
+ *
167
+ * @public
168
+ */
169
+ static piecesets(): Record<string, Pieceset>;
170
+ }
171
+ export {};
@@ -0,0 +1,365 @@
1
+ /* -------------------------------------------------------------------------- *
2
+ * *
3
+ * This file is part of Kokopu-React, a JavaScript chess library. *
4
+ * Copyright (C) 2021-2023 Yoann Le Montagner <yo35 -at- melix.net> *
5
+ * *
6
+ * This program is free software: you can redistribute it and/or *
7
+ * modify it under the terms of the GNU Lesser General Public License *
8
+ * as published by the Free Software Foundation, either version 3 of *
9
+ * the License, or (at your option) any later version. *
10
+ * *
11
+ * This program is distributed in the hope that it will be useful, *
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14
+ * GNU Lesser General Public License for more details. *
15
+ * *
16
+ * You should have received a copy of the GNU Lesser General *
17
+ * Public License along with this program. If not, see *
18
+ * <http://www.gnu.org/licenses/>. *
19
+ * *
20
+ * -------------------------------------------------------------------------- */
21
+ import * as React from 'react';
22
+ import { exception as kokopuException, MoveDescriptor, Position, isSquare, isSquareCouple, isGameVariant } from 'kokopu';
23
+ import { IllegalArgument } from '../exception';
24
+ import { i18n } from '../i18n';
25
+ import { sanitizeString, sanitizeBoolean, sanitizeInteger, sanitizeBoundedInteger, sanitizeOptional } from '../sanitization';
26
+ import { MIN_SQUARE_SIZE, MAX_SQUARE_SIZE, isAnnotationColor, isAnnotationSymbol, parseSquareMarkers, parseTextMarkers, parseArrowMarkers } from '../types';
27
+ import { colorsets } from './colorsets';
28
+ import { piecesets } from './piecesets';
29
+ import { ChessboardImpl, chessboardSize } from './ChessboardImpl';
30
+ import { ErrorBox } from '../errorbox/ErrorBox';
31
+ /**
32
+ * SVG image representing a chessboard diagram. Optionally, the user may interact with the board (move pieces, click on squares...).
33
+ * Annotations such as square markers or arrows can also be added to the board.
34
+ */
35
+ export class Chessboard extends React.Component {
36
+ constructor(props) {
37
+ super(props);
38
+ this.windowResizeListener = () => this.handleWindowResize();
39
+ this.state = {
40
+ windowWidth: window.innerWidth,
41
+ };
42
+ }
43
+ componentDidMount() {
44
+ window.addEventListener('resize', this.windowResizeListener);
45
+ }
46
+ componentWillUnmount() {
47
+ window.removeEventListener('resize', this.windowResizeListener);
48
+ }
49
+ handleWindowResize() {
50
+ this.setState({ windowWidth: window.innerWidth });
51
+ }
52
+ render() {
53
+ // Validate the position and move attributes.
54
+ const positionInfo = parsePosition(this.props.position);
55
+ if (positionInfo.error) {
56
+ return React.createElement(ErrorBox, { title: i18n.INVALID_FEN_ERROR_TITLE, message: positionInfo.message });
57
+ }
58
+ const position = positionInfo.position;
59
+ const moveInfo = parseMove(position, this.props.move);
60
+ if (moveInfo.error) {
61
+ return React.createElement(ErrorBox, { title: i18n.INVALID_NOTATION_ERROR_TITLE, message: moveInfo.message });
62
+ }
63
+ const move = moveInfo.move;
64
+ // Validate the markers
65
+ const sqm = parseMarkers(this.props.squareMarkers, 'squareMarkers', parseSquareMarkers, isSquare, isAnnotationColor);
66
+ const txtm = parseMarkers(this.props.textMarkers, 'textMarkers', parseTextMarkers, isSquare, isTextMarkerElement);
67
+ const arm = parseMarkers(this.props.arrowMarkers, 'arrowMarkers', parseArrowMarkers, isSquareCouple, isAnnotationColor);
68
+ // Validate the appearance attributes.
69
+ const flipped = sanitizeBoolean(this.props.flipped);
70
+ const squareSize = sanitizeBoundedInteger(this.props.squareSize, MIN_SQUARE_SIZE, MAX_SQUARE_SIZE, () => new IllegalArgument('Chessboard', 'squareSize'));
71
+ const coordinateVisible = sanitizeBoolean(this.props.coordinateVisible);
72
+ const moveArrowVisible = sanitizeBoolean(this.props.moveArrowVisible);
73
+ if (!isAnnotationColor(this.props.moveArrowColor)) {
74
+ throw new IllegalArgument('Chessboard', 'moveArrowColor');
75
+ }
76
+ const animated = sanitizeBoolean(this.props.animated);
77
+ const colorset = colorsets[this.props.colorset];
78
+ if (!colorset) {
79
+ throw new IllegalArgument('Chessboard', 'colorset');
80
+ }
81
+ const pieceset = piecesets[this.props.pieceset];
82
+ if (!pieceset) {
83
+ throw new IllegalArgument('Chessboard', 'pieceset');
84
+ }
85
+ // Validate and enforce the small-screen limits.
86
+ const smallScreenLimits = sanitizeSmallScreenLimits(this.props.smallScreenLimits, () => new IllegalArgument('Chessboard', 'smallScreenLimits'));
87
+ const actualSquareSize = computeSquareSizeForSmallScreens(squareSize, smallScreenLimits, this.state.windowWidth);
88
+ const actualCoordinateVisible = computeCoordinateVisibleForSmallScreens(coordinateVisible, smallScreenLimits, this.state.windowWidth);
89
+ // Validate the interaction attributes and the callbacks.
90
+ const interactionMode = this.getInteractionModeAndValidateEditedArrowColor();
91
+ const { onPieceMoved, onSquareClicked, onArrowEdited, onMovePlayed } = this.props;
92
+ // Build a key so that a new `ChessboardImpl` component is instantiated each time the position or the move changes
93
+ // (mandatory to ensure that the move animation works properly and that the internal state of the component remains consistent).
94
+ const key = `${position.variant()}|${position.fen()}|${move ? position.notation(move) : ''}`;
95
+ return (React.createElement(ChessboardImpl, { key: key, position: position, move: move, squareMarkers: sqm, textMarkers: txtm, arrowMarkers: arm, flipped: flipped, squareSize: actualSquareSize, coordinateVisible: actualCoordinateVisible, moveArrowVisible: moveArrowVisible, moveArrowColor: this.props.moveArrowColor, animated: animated, colorset: colorset, pieceset: pieceset, interactionMode: interactionMode, editedArrowColor: this.props.editedArrowColor, onPieceMoved: onPieceMoved, onSquareClicked: onSquareClicked, onArrowEdited: onArrowEdited, onMovePlayed: onMovePlayed }));
96
+ }
97
+ getInteractionModeAndValidateEditedArrowColor() {
98
+ const interactionMode = sanitizeOptional(this.props.interactionMode, sanitizeString);
99
+ if (interactionMode === undefined || interactionMode === 'movePieces' || interactionMode === 'clickSquares' || interactionMode === 'playMoves') {
100
+ return interactionMode;
101
+ }
102
+ else if (interactionMode === 'editArrows') {
103
+ if (!isAnnotationColor(this.props.editedArrowColor)) {
104
+ throw new IllegalArgument('Chessboard', 'editedArrowColor');
105
+ }
106
+ return interactionMode;
107
+ }
108
+ else {
109
+ throw new IllegalArgument('Chessboard', 'interactionMode');
110
+ }
111
+ }
112
+ /**
113
+ * Return the size of the chessboard, assuming it is built with the given attributes.
114
+ */
115
+ static size(squareSize, coordinateVisible, smallScreenLimits) {
116
+ // Sanitize the arguments.
117
+ squareSize = sanitizeBoundedInteger(squareSize, MIN_SQUARE_SIZE, MAX_SQUARE_SIZE, () => new IllegalArgument('Chessboard.size()', 'squareSize'));
118
+ coordinateVisible = sanitizeBoolean(coordinateVisible);
119
+ const limits = sanitizeSmallScreenLimits(smallScreenLimits, () => new IllegalArgument('Chessboard.size()', 'smallScreenLimits'));
120
+ // Enforce small-screen limits, if any.
121
+ if (typeof window !== 'undefined') {
122
+ squareSize = computeSquareSizeForSmallScreens(squareSize, limits, window.innerWidth);
123
+ coordinateVisible = computeCoordinateVisibleForSmallScreens(coordinateVisible, limits, window.innerWidth);
124
+ }
125
+ // Compute the dimensions.
126
+ return chessboardSize(squareSize, coordinateVisible);
127
+ }
128
+ /**
129
+ * Return the maximum square size that would allow the chessboard to fit in a rectangle of size `width x height`.
130
+ */
131
+ static adaptSquareSize(width, height, coordinateVisible, smallScreenLimits) {
132
+ // Sanitize the arguments.
133
+ width = sanitizeInteger(width, () => new IllegalArgument('Chessboard.adaptSquareSize()', 'width'));
134
+ height = sanitizeInteger(height, () => new IllegalArgument('Chessboard.adaptSquareSize()', 'height'));
135
+ coordinateVisible = sanitizeBoolean(coordinateVisible);
136
+ const limits = sanitizeSmallScreenLimits(smallScreenLimits, () => new IllegalArgument('Chessboard.adaptSquareSize()', 'smallScreenLimits'));
137
+ // Enforce small-screen limits, if any.
138
+ let maxSquareSize = MAX_SQUARE_SIZE;
139
+ if (typeof window !== 'undefined') {
140
+ maxSquareSize = computeSquareSizeForSmallScreens(maxSquareSize, limits, window.innerWidth);
141
+ coordinateVisible = computeCoordinateVisibleForSmallScreens(coordinateVisible, limits, window.innerWidth);
142
+ }
143
+ function isAdapted(squareSize) {
144
+ const { width: actualWidth, height: actualHeight } = chessboardSize(squareSize, coordinateVisible);
145
+ return actualWidth <= width && actualHeight <= height;
146
+ }
147
+ // Check min/max bounds.
148
+ if (isAdapted(maxSquareSize)) {
149
+ return maxSquareSize;
150
+ }
151
+ else if (!isAdapted(MIN_SQUARE_SIZE)) {
152
+ return MIN_SQUARE_SIZE;
153
+ }
154
+ // Dichotomic search, between a (inclusive) and b (exclusive).
155
+ let a = MIN_SQUARE_SIZE;
156
+ let b = maxSquareSize;
157
+ while (a + 1 < b) {
158
+ const mid = Math.floor((a + b) / 2);
159
+ if (isAdapted(mid)) {
160
+ a = mid;
161
+ }
162
+ else {
163
+ b = mid;
164
+ }
165
+ }
166
+ return a;
167
+ }
168
+ /**
169
+ * Minimum square size (inclusive).
170
+ *
171
+ * @public
172
+ */
173
+ static minSquareSize() {
174
+ return MIN_SQUARE_SIZE;
175
+ }
176
+ /**
177
+ * Maximum square size (inclusive).
178
+ *
179
+ * @public
180
+ */
181
+ static maxSquareSize() {
182
+ return MAX_SQUARE_SIZE;
183
+ }
184
+ /**
185
+ * Available colorsets for theming.
186
+ *
187
+ * @public
188
+ */
189
+ static colorsets() {
190
+ return colorsets;
191
+ }
192
+ /**
193
+ * Available piecesets for theming.
194
+ *
195
+ * @public
196
+ */
197
+ static piecesets() {
198
+ return piecesets;
199
+ }
200
+ }
201
+ Chessboard.defaultProps = {
202
+ position: 'start',
203
+ flipped: false,
204
+ squareSize: 40,
205
+ coordinateVisible: true,
206
+ moveArrowVisible: true,
207
+ moveArrowColor: 'b',
208
+ animated: false,
209
+ colorset: 'original',
210
+ pieceset: 'cburnett',
211
+ };
212
+ /**
213
+ * Compute the actual square size taking into account the given small-screen limits and window width.
214
+ */
215
+ function computeSquareSizeForSmallScreens(squareSize, smallScreenLimits, windowWidth) {
216
+ const maximumSquareSize = computeSmallScreenLimits(smallScreenLimits, windowWidth, limit => limit.squareSize);
217
+ return maximumSquareSize === undefined ? squareSize : Math.min(squareSize, maximumSquareSize);
218
+ }
219
+ /**
220
+ * Compute the actual square size taking into account the given small-screen limits and window width.
221
+ */
222
+ function computeCoordinateVisibleForSmallScreens(coordinateVisible, smallScreenLimits, windowWidth) {
223
+ const maximumCoordinateVisible = computeSmallScreenLimits(smallScreenLimits, windowWidth, limit => limit.coordinateVisible);
224
+ return maximumCoordinateVisible === undefined ? coordinateVisible : coordinateVisible && maximumCoordinateVisible;
225
+ }
226
+ /**
227
+ * Compute the limit applicable to the given window width.
228
+ */
229
+ function computeSmallScreenLimits(smallScreenLimits, windowWidth, getter) {
230
+ let bestWidth = Infinity;
231
+ let bestAttributeValue = undefined;
232
+ for (const limit of smallScreenLimits) {
233
+ // Discard the limits not applicable to the current window width (`windowWidth <= limit.width` must hold)
234
+ // and those for which the target attribute is not defined.
235
+ if (windowWidth > limit.width || getter(limit) === undefined) {
236
+ continue;
237
+ }
238
+ // Find the limit with the smallest width among those applicable.
239
+ if (limit.width < bestWidth) {
240
+ bestWidth = limit.width;
241
+ bestAttributeValue = getter(limit);
242
+ }
243
+ }
244
+ return bestAttributeValue;
245
+ }
246
+ /**
247
+ * Try to interpret the given object as a chess position.
248
+ */
249
+ function parsePosition(position) {
250
+ if (position instanceof Position) {
251
+ return { error: false, position: position };
252
+ }
253
+ else if (position === 'start' || position === 'empty') {
254
+ return { error: false, position: new Position(position) };
255
+ }
256
+ else if (typeof position === 'string') {
257
+ try {
258
+ const { variant, fen } = splitGameVariantAndFEN(position);
259
+ const result = new Position(variant, 'empty');
260
+ result.fen(fen);
261
+ return { error: false, position: result };
262
+ }
263
+ catch (e) {
264
+ // istanbul ignore else
265
+ if (e instanceof kokopuException.InvalidFEN) {
266
+ return { error: true, message: e.message };
267
+ }
268
+ else {
269
+ throw e;
270
+ }
271
+ }
272
+ }
273
+ else {
274
+ throw new IllegalArgument('Chessboard', 'position');
275
+ }
276
+ }
277
+ /**
278
+ * Look for an optional 'chess-variant:' prefix in the position attribute.
279
+ */
280
+ function splitGameVariantAndFEN(position) {
281
+ const separatorIndex = position.indexOf(':');
282
+ if (separatorIndex < 0) {
283
+ return { variant: 'regular', fen: position };
284
+ }
285
+ const variant = position.substring(0, separatorIndex);
286
+ return isGameVariant(variant) ? { variant: variant, fen: position.substring(separatorIndex + 1) } : { variant: 'regular', fen: position };
287
+ }
288
+ /**
289
+ * Try to interpret the given object `move` as a move descriptor based on the given position.
290
+ */
291
+ function parseMove(position, move) {
292
+ if (move === undefined || move === null) {
293
+ return { error: false, move: undefined };
294
+ }
295
+ else if (move instanceof MoveDescriptor) {
296
+ return { error: false, move: move };
297
+ }
298
+ else if (typeof move === 'string') {
299
+ try {
300
+ return { error: false, move: position.notation(move) };
301
+ }
302
+ catch (e) {
303
+ // istanbul ignore else
304
+ if (e instanceof kokopuException.InvalidNotation) {
305
+ return { error: true, message: e.message };
306
+ }
307
+ else {
308
+ throw e;
309
+ }
310
+ }
311
+ }
312
+ else {
313
+ throw new IllegalArgument('Chessboard', 'move');
314
+ }
315
+ }
316
+ /**
317
+ * Try to interpret the given object as a list of markers.
318
+ */
319
+ function parseMarkers(markers, argumentName, parse, isValidKey, isValidValue) {
320
+ if (markers === undefined || markers === null) {
321
+ return undefined;
322
+ }
323
+ else if (typeof markers === 'string') {
324
+ return parse(markers);
325
+ }
326
+ else if (typeof markers === 'object') {
327
+ const result = {};
328
+ Object.entries(markers).forEach(([key, value]) => {
329
+ if (isValidKey(key) && isValidValue(value)) {
330
+ result[key] = value;
331
+ }
332
+ });
333
+ return result;
334
+ }
335
+ else {
336
+ throw new IllegalArgument('Chessboard', argumentName);
337
+ }
338
+ }
339
+ function isTextMarkerElement(value) {
340
+ if (typeof value !== 'object' || value === null) {
341
+ return false;
342
+ }
343
+ return isAnnotationSymbol(value.symbol) && isAnnotationColor(value.color);
344
+ }
345
+ /**
346
+ * Sanitization method for the small-screen limits parameter.
347
+ */
348
+ function sanitizeSmallScreenLimits(smallScreenLimits, exceptionBuilder) {
349
+ if (smallScreenLimits === undefined || smallScreenLimits === null) {
350
+ return [];
351
+ }
352
+ else if (!Array.isArray(smallScreenLimits)) {
353
+ throw exceptionBuilder();
354
+ }
355
+ else {
356
+ return smallScreenLimits.map(smallScreenLimit => {
357
+ return {
358
+ width: sanitizeInteger(smallScreenLimit.width, exceptionBuilder),
359
+ squareSize: sanitizeOptional(smallScreenLimit.squareSize, val => sanitizeBoundedInteger(val, MIN_SQUARE_SIZE, MAX_SQUARE_SIZE, exceptionBuilder)),
360
+ coordinateVisible: sanitizeOptional(smallScreenLimit.coordinateVisible, sanitizeBoolean),
361
+ };
362
+ });
363
+ }
364
+ }
365
+ //# sourceMappingURL=Chessboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Chessboard.js","sourceRoot":"","sources":["../../../src/chessboard/Chessboard.tsx"],"names":[],"mappings":"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"}