kokopu-react 1.11.1 → 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 -277
  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 -235
  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
@@ -0,0 +1,20 @@
1
+ import * as React from 'react';
2
+ import { PieceSymbolMapping } from '../types';
3
+ import './fonts.css';
4
+ /**
5
+ * Render the given SAN notation according to the given piece symbol style.
6
+ *
7
+ * @param pieceSymbols - See {@link moveFormatter}.
8
+ * @param notation - SAN notation.
9
+ */
10
+ export declare function formatMove(pieceSymbols: 'native' | 'localized' | 'figurines' | PieceSymbolMapping, notation: string): React.ReactNode;
11
+ /**
12
+ * Return a callback capable of rendering a SAN notation using the given piece symbol style.
13
+ *
14
+ * @param pieceSymbols - One of the following piece symbol style:
15
+ * - `'native'`: use the English chess piece initials (i.e. K, Q, R, B, N, P).
16
+ * - `'localized'`: use the piece symbols defined in {@link i18n.PIECE_SYMBOLS}.
17
+ * - `'figurines'`: use a figurine font.
18
+ * - {@link PieceSymbolMapping}: use the given custom set of chess piece symbols.
19
+ */
20
+ export declare function moveFormatter(pieceSymbols: 'native' | 'localized' | 'figurines' | PieceSymbolMapping): (notation: string) => React.ReactNode;
@@ -0,0 +1,93 @@
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 { IllegalArgument } from '../exception';
23
+ import { i18n } from '../i18n';
24
+ import { isPieceSymbolMapping } from '../types';
25
+ import './fonts.css';
26
+ /**
27
+ * Render the given SAN notation according to the given piece symbol style.
28
+ *
29
+ * @param pieceSymbols - See {@link moveFormatter}.
30
+ * @param notation - SAN notation.
31
+ */
32
+ export function formatMove(pieceSymbols, notation) {
33
+ const formatter = moveFormatter(pieceSymbols);
34
+ return formatter(notation);
35
+ }
36
+ /**
37
+ * Return a callback capable of rendering a SAN notation using the given piece symbol style.
38
+ *
39
+ * @param pieceSymbols - One of the following piece symbol style:
40
+ * - `'native'`: use the English chess piece initials (i.e. K, Q, R, B, N, P).
41
+ * - `'localized'`: use the piece symbols defined in {@link i18n.PIECE_SYMBOLS}.
42
+ * - `'figurines'`: use a figurine font.
43
+ * - {@link PieceSymbolMapping}: use the given custom set of chess piece symbols.
44
+ */
45
+ export function moveFormatter(pieceSymbols) {
46
+ if (pieceSymbols === 'native') {
47
+ return notation => notation;
48
+ }
49
+ else if (pieceSymbols === 'localized') {
50
+ const mapping = i18n.PIECE_SYMBOLS;
51
+ return notation => pieceMappingNotation(mapping, notation);
52
+ }
53
+ else if (pieceSymbols === 'figurines') {
54
+ return notation => figurineNotation('alpha', notation);
55
+ }
56
+ else if (isPieceSymbolMapping(pieceSymbols)) {
57
+ return notation => pieceMappingNotation(pieceSymbols, notation);
58
+ }
59
+ else {
60
+ throw new IllegalArgument('moveFormatter', 'pieceSymbols');
61
+ }
62
+ }
63
+ /**
64
+ * Replace the native piece symbols by those defined by the given {@link PieceSymbolMapping}.
65
+ */
66
+ function pieceMappingNotation(mapping, text) {
67
+ return text.replace(/[KQRBNP]/g, match => mapping[match]);
68
+ }
69
+ /**
70
+ * Decompose the given string into piece symbol characters and sections of non piece symbol characters, and transform the piece symbols into
71
+ * React objects represented with the given chess font.
72
+ */
73
+ function figurineNotation(fontName, text) {
74
+ const result = [];
75
+ let beginOfText = 0;
76
+ let pieceSymbolIndex = 0;
77
+ for (let pos = 0; pos < text.length; ++pos) {
78
+ const currentChar = text.charAt(pos);
79
+ if (currentChar === 'K' || currentChar === 'Q' || currentChar === 'R' || currentChar === 'B' || currentChar === 'N' || currentChar === 'P') {
80
+ if (pos > beginOfText) {
81
+ result.push(text.substring(beginOfText, pos));
82
+ }
83
+ beginOfText = pos + 1;
84
+ const key = 'symbol-' + (pieceSymbolIndex++);
85
+ result.push(React.createElement("span", { className: 'kokopu-font-' + fontName, key: key }, currentChar));
86
+ }
87
+ }
88
+ if (beginOfText < text.length) {
89
+ result.push(text.substring(beginOfText));
90
+ }
91
+ return React.createElement(React.Fragment, null, result);
92
+ }
93
+ //# sourceMappingURL=moveFormatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moveFormatter.js","sourceRoot":"","sources":["../../../src/movetext/moveFormatter.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;gFAmBgF;AAGhF,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAsB,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEpE,OAAO,aAAa,CAAC;AAGrB;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,YAAuE,EAAE,QAAgB;IACnH,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IAC9C,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAGD;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,YAAuE;IACpG,IAAI,YAAY,KAAK,QAAQ,EAAE;QAC9B,OAAO,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC;KAC5B;SACI,IAAI,YAAY,KAAK,WAAW,EAAE;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QACnC,OAAO,QAAQ,CAAC,EAAE,CAAC,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KAC3D;SACI,IAAI,YAAY,KAAK,WAAW,EAAE;QACtC,OAAO,QAAQ,CAAC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KACvD;SACI,IAAI,oBAAoB,CAAC,YAAY,CAAC,EAAE;QAC5C,OAAO,QAAQ,CAAC,EAAE,CAAC,oBAAoB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;KAChE;SACI;QACJ,MAAM,IAAI,eAAe,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;KAC3D;AACF,CAAC;AAGD;;GAEG;AACH,SAAS,oBAAoB,CAAC,OAA2B,EAAE,IAAY;IACtE,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAiC,CAAC,CAAC,CAAC;AACvF,CAAC;AAGD;;;GAGG;AACH,SAAS,gBAAgB,CAAC,QAAgB,EAAE,IAAY;IACvD,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,WAAW,KAAK,GAAG,IAAI,WAAW,KAAK,GAAG,IAAI,WAAW,KAAK,GAAG,IAAI,WAAW,KAAK,GAAG,IAAI,WAAW,KAAK,GAAG,IAAI,WAAW,KAAK,GAAG,EAAE;YAC3I,IAAI,GAAG,GAAG,WAAW,EAAE;gBACtB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;aAC9C;YACD,WAAW,GAAG,GAAG,GAAG,CAAC,CAAC;YACtB,MAAM,GAAG,GAAG,SAAS,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,8BAAM,SAAS,EAAE,cAAc,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAG,WAAW,CAAQ,CAAC,CAAC;SACxF;KACD;IACD,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE;QAC9B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;KACzC;IACD,OAAO,0CAAG,MAAM,CAAI,CAAC;AACtB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { IllegalArgument } from './exception';
2
+ export declare function sanitizeString(input: string): string;
3
+ export declare function sanitizeBoolean(input: boolean): boolean;
4
+ export declare function sanitizeInteger(input: number, exceptionBuilder: () => IllegalArgument): number;
5
+ export declare function sanitizeBoundedInteger(input: number, min: number, max: number, exceptionBuilder: () => IllegalArgument): number;
6
+ export declare function sanitizeOptional<T>(input: T | undefined, sanitizationFunction: (val: T) => T): T | undefined;
@@ -0,0 +1,39 @@
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
+ export function sanitizeString(input) {
22
+ return String(input);
23
+ }
24
+ export function sanitizeBoolean(input) {
25
+ return Boolean(input);
26
+ }
27
+ export function sanitizeInteger(input, exceptionBuilder) {
28
+ if (typeof input !== 'number' || !Number.isFinite(input)) {
29
+ throw exceptionBuilder();
30
+ }
31
+ return Math.round(input);
32
+ }
33
+ export function sanitizeBoundedInteger(input, min, max, exceptionBuilder) {
34
+ return Math.min(Math.max(sanitizeInteger(input, exceptionBuilder), min), max);
35
+ }
36
+ export function sanitizeOptional(input, sanitizationFunction) {
37
+ return input === undefined || input === null ? undefined : sanitizationFunction(input);
38
+ }
39
+ //# sourceMappingURL=sanitization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitization.js","sourceRoot":"","sources":["../../src/sanitization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;gFAmBgF;AAMhF,MAAM,UAAU,cAAc,CAAC,KAAa;IAC3C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAGD,MAAM,UAAU,eAAe,CAAC,KAAc;IAC7C,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAGD,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,gBAAuC;IACrF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QACzD,MAAM,gBAAgB,EAAE,CAAC;KACzB;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAGD,MAAM,UAAU,sBAAsB,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW,EAAE,gBAAuC;IACtH,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/E,CAAC;AAGD,MAAM,UAAU,gBAAgB,CAAI,KAAoB,EAAE,oBAAmC;IAC5F,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACxF,CAAC"}
@@ -0,0 +1,151 @@
1
+ import { Square, SquareCouple } from 'kokopu';
2
+ /**
3
+ * Minimum square size in a {@link Chessboard} component.
4
+ */
5
+ export declare const MIN_SQUARE_SIZE = 12;
6
+ /**
7
+ * Maximum square size in a {@link Chessboard} component.
8
+ */
9
+ export declare const MAX_SQUARE_SIZE = 96;
10
+ /**
11
+ * Set of parameters describing the colors to use to render a {@link Chessboard} component.
12
+ *
13
+ * Each color is defined as string, that must be interpreted as a [CSS color](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value).
14
+ */
15
+ export type Colorset = {
16
+ /** Color of the black squares. */
17
+ b: string;
18
+ /** Color of the white squares. */
19
+ w: string;
20
+ /** Color of the blue markers. */
21
+ cb: string;
22
+ /** Color of the green markers. */
23
+ cg: string;
24
+ /** Color of the red markers. */
25
+ cr: string;
26
+ /** Color of the yellow markers. */
27
+ cy: string;
28
+ };
29
+ /**
30
+ * Set of parameters describing the chess pieces to use to render a {@link Chessboard} component.
31
+ *
32
+ * Each field is a string corresponding to the URL of the image of the corresponding chess piece.
33
+ */
34
+ export type Pieceset = {
35
+ /** Image for the black bishops. */
36
+ bb: string;
37
+ /** Image for the black kings. */
38
+ bk: string;
39
+ /** Image for the black knights. */
40
+ bn: string;
41
+ /** Image for the black pawns. */
42
+ bp: string;
43
+ /** Image for the black queens. */
44
+ bq: string;
45
+ /** Image for the black rooks. */
46
+ br: string;
47
+ /** Image for the black turn flags. */
48
+ bx: string;
49
+ /** Image for the white bishops. */
50
+ wb: string;
51
+ /** Image for the white kings. */
52
+ wk: string;
53
+ /** Image for the white knights. */
54
+ wn: string;
55
+ /** Image for the white pawns. */
56
+ wp: string;
57
+ /** Image for the white queens. */
58
+ wq: string;
59
+ /** Image for the white rooks. */
60
+ wr: string;
61
+ /** Image for the white turn flags. */
62
+ wx: string;
63
+ };
64
+ /**
65
+ * Set of aliases for chess pieces symbols.
66
+ */
67
+ export type PieceSymbolMapping = {
68
+ K: string;
69
+ Q: string;
70
+ R: string;
71
+ B: string;
72
+ N: string;
73
+ P: string;
74
+ };
75
+ /**
76
+ * Whether the given object is a {@link PieceSymbolMapping} or not.
77
+ */
78
+ export declare function isPieceSymbolMapping(mapping: unknown): mapping is PieceSymbolMapping;
79
+ /**
80
+ * Symbol that can be chosen to decorate a square in a {@link Chessboard}.
81
+ */
82
+ export type AnnotationSymbol = 'plus' | 'times' | 'dot' | 'circle' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z' | 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z' | '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
83
+ /**
84
+ * Whether the given object is a {@link AnnotationSymbol} or not.
85
+ */
86
+ export declare function isAnnotationSymbol(symbol: unknown): symbol is AnnotationSymbol;
87
+ /**
88
+ * Color that can be chosen to decorate a square or draw an arrow in a {@link Chessboard}.
89
+ */
90
+ export type AnnotationColor = 'b' | 'g' | 'r' | 'y';
91
+ /**
92
+ * Whether the given object is a {@link AnnotationSymbol} or not.
93
+ */
94
+ export declare function isAnnotationColor(color: unknown): color is AnnotationColor;
95
+ /**
96
+ * Set of square markers (i.e. colorized squares in a {@link Chessboard}).
97
+ */
98
+ export type SquareMarkerSet = Partial<Record<Square, AnnotationColor>>;
99
+ /**
100
+ * Set of text markers (i.e. colorized symbols that can decorate the squares of a {@link Chessboard}).
101
+ */
102
+ export type TextMarkerSet = Partial<Record<Square, {
103
+ symbol: AnnotationSymbol;
104
+ color: AnnotationColor;
105
+ }>>;
106
+ /**
107
+ * Set of arrow markers (i.e. colorized arrows between two squares in a {@link Chessboard}).
108
+ */
109
+ export type ArrowMarkerSet = Partial<Record<SquareCouple, AnnotationColor>>;
110
+ /**
111
+ * Transform a {@link SquareMarkerSet} into a comma-separated string.
112
+ *
113
+ * @param markers - For example: `{ e4: 'g', d5: 'r' }`
114
+ * @returns For example: `'Gd5,Ge4'`
115
+ */
116
+ export declare function flattenSquareMarkers(markers: SquareMarkerSet): string;
117
+ /**
118
+ * Transform a {@link TextMarkerSet} into a comma-separated string.
119
+ *
120
+ * @param markers - For example: `{ e4: { symbol: 'A', color: 'g' }, d5: { symbol: 'z', color: 'r' }, h3: { symbol: 'plus', color: 'y' } }`
121
+ * @returns For example: `'Rzd5,GAe4,Y(plus)h3'`
122
+ */
123
+ export declare function flattenTextMarkers(markers: TextMarkerSet): string;
124
+ /**
125
+ * Transform a {@link ArrowMarkerSet} into a comma-separated string.
126
+ *
127
+ * @param markers - For example: `{ e2e4: 'g', g8f6: 'r', g8h6: 'b' }`
128
+ * @returns For example: `'Ge2e4,Rg8f6,Bg8h6'`
129
+ */
130
+ export declare function flattenArrowMarkers(markers: ArrowMarkerSet): string;
131
+ /**
132
+ * Parse a comma-separated string representing a {@link SquareMarkerSet}.
133
+ *
134
+ * @param markers - For example: `'Gd5,Ge4'`
135
+ * @returns For example: `{ e4: 'g', d5: 'r' }`
136
+ */
137
+ export declare function parseSquareMarkers(markers: string): SquareMarkerSet;
138
+ /**
139
+ * Parse a comma-separated string representing a {@link TextMarkerSet}.
140
+ *
141
+ * @param markers - For example: `'Rzd5,GAe4,Y(plus)h3'`
142
+ * @returns For example: `{ e4: { symbol: 'A', color: 'g' }, d5: { symbol: 'z', color: 'r' }, h3: { symbol: 'plus', color: 'y' } }`
143
+ */
144
+ export declare function parseTextMarkers(markers: string): TextMarkerSet;
145
+ /**
146
+ * Parse a comma-separated string representing a {@link ArrowMarkerSet}.
147
+ *
148
+ * @param markers - For example: `'Ge2e4,Rg8f6,Bg8h6'`
149
+ * @returns For example: `{ e2e4: 'g', g8f6: 'r', g8h6: 'b' }`
150
+ */
151
+ export declare function parseArrowMarkers(markers: string): ArrowMarkerSet;
@@ -0,0 +1,162 @@
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 { isSquare, isSquareCouple } from 'kokopu';
22
+ import { IllegalArgument } from './exception';
23
+ /**
24
+ * Minimum square size in a {@link Chessboard} component.
25
+ */
26
+ export const MIN_SQUARE_SIZE = 12;
27
+ /**
28
+ * Maximum square size in a {@link Chessboard} component.
29
+ */
30
+ export const MAX_SQUARE_SIZE = 96;
31
+ /**
32
+ * Whether the given object is a {@link PieceSymbolMapping} or not.
33
+ */
34
+ export function isPieceSymbolMapping(mapping) {
35
+ if (typeof mapping !== 'object' || mapping === null) {
36
+ return false;
37
+ }
38
+ return typeof mapping.K === 'string' &&
39
+ typeof mapping.Q === 'string' &&
40
+ typeof mapping.R === 'string' &&
41
+ typeof mapping.B === 'string' &&
42
+ typeof mapping.N === 'string' &&
43
+ typeof mapping.P === 'string';
44
+ }
45
+ /**
46
+ * Whether the given object is a {@link AnnotationSymbol} or not.
47
+ */
48
+ export function isAnnotationSymbol(symbol) {
49
+ return typeof symbol === 'string' && /^(?:[A-Za-z0-9]|plus|times|dot|circle)$/.test(symbol);
50
+ }
51
+ /**
52
+ * Whether the given object is a {@link AnnotationSymbol} or not.
53
+ */
54
+ export function isAnnotationColor(color) {
55
+ return color === 'b' || color === 'g' || color === 'r' || color === 'y';
56
+ }
57
+ /**
58
+ * Transform a {@link SquareMarkerSet} into a comma-separated string.
59
+ *
60
+ * @param markers - For example: `{ e4: 'g', d5: 'r' }`
61
+ * @returns For example: `'Gd5,Ge4'`
62
+ */
63
+ export function flattenSquareMarkers(markers) {
64
+ if (typeof markers !== 'object' || markers === null) {
65
+ throw new IllegalArgument('flattenSquareMarkers()', 'markers');
66
+ }
67
+ return Object.entries(markers)
68
+ .filter(([sq, color]) => isSquare(sq) && isAnnotationColor(color))
69
+ .sort((a, b) => a[0].localeCompare(b[0]))
70
+ .map(([sq, color]) => color.toUpperCase() + sq)
71
+ .join(',');
72
+ }
73
+ /**
74
+ * Transform a {@link TextMarkerSet} into a comma-separated string.
75
+ *
76
+ * @param markers - For example: `{ e4: { symbol: 'A', color: 'g' }, d5: { symbol: 'z', color: 'r' }, h3: { symbol: 'plus', color: 'y' } }`
77
+ * @returns For example: `'Rzd5,GAe4,Y(plus)h3'`
78
+ */
79
+ export function flattenTextMarkers(markers) {
80
+ if (typeof markers !== 'object' || markers === null) {
81
+ throw new IllegalArgument('flattenTextMarkers()', 'markers');
82
+ }
83
+ return Object.entries(markers)
84
+ .filter(([sq, desc]) => isSquare(sq) && desc && isAnnotationColor(desc.color) && isAnnotationSymbol(desc.symbol))
85
+ .sort((a, b) => a[0].localeCompare(b[0]))
86
+ .map(([sq, desc]) => desc.color.toUpperCase() + (desc.symbol.length === 1 ? desc.symbol : `(${desc.symbol})`) + sq)
87
+ .join(',');
88
+ }
89
+ /**
90
+ * Transform a {@link ArrowMarkerSet} into a comma-separated string.
91
+ *
92
+ * @param markers - For example: `{ e2e4: 'g', g8f6: 'r', g8h6: 'b' }`
93
+ * @returns For example: `'Ge2e4,Rg8f6,Bg8h6'`
94
+ */
95
+ export function flattenArrowMarkers(markers) {
96
+ if (typeof markers !== 'object' || markers === null) {
97
+ throw new IllegalArgument('flattenArrowMarkers()', 'markers');
98
+ }
99
+ return Object.entries(markers)
100
+ .filter(([vect, color]) => isSquareCouple(vect) && isAnnotationColor(color))
101
+ .sort((a, b) => a[0].localeCompare(b[0]))
102
+ .map(([vect, color]) => color.toUpperCase() + vect)
103
+ .join(',');
104
+ }
105
+ /**
106
+ * Parse a comma-separated string representing a {@link SquareMarkerSet}.
107
+ *
108
+ * @param markers - For example: `'Gd5,Ge4'`
109
+ * @returns For example: `{ e4: 'g', d5: 'r' }`
110
+ */
111
+ export function parseSquareMarkers(markers) {
112
+ if (typeof markers !== 'string') {
113
+ throw new IllegalArgument('parseSquareMarkers()', 'markers');
114
+ }
115
+ return parseMarkers(markers, token => {
116
+ return /^([BGRY])([a-h][1-8])$/.test(token) ?
117
+ { key: RegExp.$2, value: RegExp.$1.toLowerCase() } :
118
+ undefined;
119
+ });
120
+ }
121
+ /**
122
+ * Parse a comma-separated string representing a {@link TextMarkerSet}.
123
+ *
124
+ * @param markers - For example: `'Rzd5,GAe4,Y(plus)h3'`
125
+ * @returns For example: `{ e4: { symbol: 'A', color: 'g' }, d5: { symbol: 'z', color: 'r' }, h3: { symbol: 'plus', color: 'y' } }`
126
+ */
127
+ export function parseTextMarkers(markers) {
128
+ if (typeof markers !== 'string') {
129
+ throw new IllegalArgument('parseTextMarkers()', 'markers');
130
+ }
131
+ return parseMarkers(markers, token => {
132
+ return /^([BGRY])(?:([A-Za-z0-9])|\((plus|times|dot|circle)\))([a-h][1-8])$/.test(token) ?
133
+ { key: RegExp.$4, value: { symbol: (RegExp.$2 || RegExp.$3), color: RegExp.$1.toLowerCase() } } :
134
+ undefined;
135
+ });
136
+ }
137
+ /**
138
+ * Parse a comma-separated string representing a {@link ArrowMarkerSet}.
139
+ *
140
+ * @param markers - For example: `'Ge2e4,Rg8f6,Bg8h6'`
141
+ * @returns For example: `{ e2e4: 'g', g8f6: 'r', g8h6: 'b' }`
142
+ */
143
+ export function parseArrowMarkers(markers) {
144
+ if (typeof markers !== 'string') {
145
+ throw new IllegalArgument('parseArrowMarkers()', 'markers');
146
+ }
147
+ return parseMarkers(markers, token => {
148
+ return /^([BGRY])([a-h][1-8][a-h][1-8])$/.test(token) ?
149
+ { key: RegExp.$2, value: RegExp.$1.toLowerCase() } :
150
+ undefined;
151
+ });
152
+ }
153
+ function parseMarkers(markers, tokenParser) {
154
+ const result = {};
155
+ markers.split(',').map(token => tokenParser(token.trim())).forEach(marker => {
156
+ if (marker) {
157
+ result[marker.key] = marker.value;
158
+ }
159
+ });
160
+ return result;
161
+ }
162
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function generateRandomId(): string;
2
+ export declare function fillPlaceholder(message: string, ...placeholderValues: unknown[]): string;
@@ -0,0 +1,36 @@
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
+ export function generateRandomId() {
22
+ const buffer = new Uint32Array(8);
23
+ crypto.getRandomValues(buffer);
24
+ let result = '';
25
+ for (let i = 0; i < buffer.length; ++i) {
26
+ result += buffer[i].toString(16);
27
+ }
28
+ return result;
29
+ }
30
+ export function fillPlaceholder(message, ...placeholderValues) {
31
+ return message.replace(/{(\d+)}/g, (match, placeholder) => {
32
+ const placeholderIndex = Number(placeholder);
33
+ return placeholderIndex < placeholderValues.length ? String(placeholderValues[placeholderIndex]) : match;
34
+ });
35
+ }
36
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;gFAmBgF;AAGhF,MAAM,UAAU,gBAAgB;IAC/B,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;QACvC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KACjC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAGD,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,GAAG,iBAA4B;IAC/E,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;QACzD,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,gBAAgB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1G,CAAC,CAAC,CAAC;AACJ,CAAC"}