react-native-games 0.7.0 → 0.8.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 (341) hide show
  1. package/README.md +148 -23
  2. package/lib/module/games/balloon-blaster/BalloonBlaster.js +5 -8
  3. package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -1
  4. package/lib/module/games/candy-crush/CandyCrush.js +121 -0
  5. package/lib/module/games/candy-crush/CandyCrush.js.map +1 -0
  6. package/lib/module/games/candy-crush/CandyCrushConstants.js +125 -0
  7. package/lib/module/games/candy-crush/CandyCrushConstants.js.map +1 -0
  8. package/lib/module/games/candy-crush/CandyCrushService.js +370 -0
  9. package/lib/module/games/candy-crush/CandyCrushService.js.map +1 -0
  10. package/lib/module/games/candy-crush/CandyCrushStore.js +305 -0
  11. package/lib/module/games/candy-crush/CandyCrushStore.js.map +1 -0
  12. package/lib/module/games/candy-crush/components/CandyItem.js +191 -0
  13. package/lib/module/games/candy-crush/components/CandyItem.js.map +1 -0
  14. package/lib/module/games/candy-crush/components/GameBackground.js +85 -0
  15. package/lib/module/games/candy-crush/components/GameBackground.js.map +1 -0
  16. package/lib/module/games/candy-crush/components/GameGrid.js +314 -0
  17. package/lib/module/games/candy-crush/components/GameGrid.js.map +1 -0
  18. package/lib/module/games/candy-crush/components/ScoreBoard.js +112 -0
  19. package/lib/module/games/candy-crush/components/ScoreBoard.js.map +1 -0
  20. package/lib/module/games/candy-crush/components/index.js +7 -0
  21. package/lib/module/games/candy-crush/components/index.js.map +1 -0
  22. package/lib/module/games/candy-crush/index.js +6 -0
  23. package/lib/module/games/candy-crush/index.js.map +1 -0
  24. package/lib/module/games/color-sort/ColorSort.js +130 -0
  25. package/lib/module/games/color-sort/ColorSort.js.map +1 -0
  26. package/lib/module/games/color-sort/ColorSortConstants.js +68 -0
  27. package/lib/module/games/color-sort/ColorSortConstants.js.map +1 -0
  28. package/lib/module/games/color-sort/ColorSortService.js +255 -0
  29. package/lib/module/games/color-sort/ColorSortService.js.map +1 -0
  30. package/lib/module/games/color-sort/ColorSortStore.js +258 -0
  31. package/lib/module/games/color-sort/ColorSortStore.js.map +1 -0
  32. package/lib/module/games/color-sort/components/ColorContainer.js +140 -0
  33. package/lib/module/games/color-sort/components/ColorContainer.js.map +1 -0
  34. package/lib/module/games/color-sort/components/GameBackground.js +135 -0
  35. package/lib/module/games/color-sort/components/GameBackground.js.map +1 -0
  36. package/lib/module/games/color-sort/components/ScoreBoard.js +78 -0
  37. package/lib/module/games/color-sort/components/ScoreBoard.js.map +1 -0
  38. package/lib/module/games/color-sort/components/index.js +6 -0
  39. package/lib/module/games/color-sort/components/index.js.map +1 -0
  40. package/lib/module/games/dino-jump/DinoJump.js +209 -0
  41. package/lib/module/games/dino-jump/DinoJump.js.map +1 -0
  42. package/lib/module/games/dino-jump/DinoJumpConstants.js +179 -0
  43. package/lib/module/games/dino-jump/DinoJumpConstants.js.map +1 -0
  44. package/lib/module/games/dino-jump/DinoJumpService.js +268 -0
  45. package/lib/module/games/dino-jump/DinoJumpService.js.map +1 -0
  46. package/lib/module/games/dino-jump/DinoJumpStore.js +387 -0
  47. package/lib/module/games/dino-jump/DinoJumpStore.js.map +1 -0
  48. package/lib/module/games/dino-jump/components/DinoSprite.js +409 -0
  49. package/lib/module/games/dino-jump/components/DinoSprite.js.map +1 -0
  50. package/lib/module/games/dino-jump/components/GameArea.js +68 -0
  51. package/lib/module/games/dino-jump/components/GameArea.js.map +1 -0
  52. package/lib/module/games/dino-jump/components/GameBackground.js +421 -0
  53. package/lib/module/games/dino-jump/components/GameBackground.js.map +1 -0
  54. package/lib/module/games/dino-jump/components/ObstacleSprite.js +306 -0
  55. package/lib/module/games/dino-jump/components/ObstacleSprite.js.map +1 -0
  56. package/lib/module/games/dino-jump/components/ScoreBoard.js +107 -0
  57. package/lib/module/games/dino-jump/components/ScoreBoard.js.map +1 -0
  58. package/lib/module/games/dino-jump/components/StarSprite.js +45 -0
  59. package/lib/module/games/dino-jump/components/StarSprite.js.map +1 -0
  60. package/lib/module/games/dino-jump/components/index.js +9 -0
  61. package/lib/module/games/dino-jump/components/index.js.map +1 -0
  62. package/lib/module/games/flappy-bird/FlappyBird.js +131 -0
  63. package/lib/module/games/flappy-bird/FlappyBird.js.map +1 -0
  64. package/lib/module/games/flappy-bird/FlappyBirdConstants.js +90 -0
  65. package/lib/module/games/flappy-bird/FlappyBirdConstants.js.map +1 -0
  66. package/lib/module/games/flappy-bird/FlappyBirdStore.js +276 -0
  67. package/lib/module/games/flappy-bird/FlappyBirdStore.js.map +1 -0
  68. package/lib/module/games/flappy-bird/components/Bird.js +87 -0
  69. package/lib/module/games/flappy-bird/components/Bird.js.map +1 -0
  70. package/lib/module/games/flappy-bird/components/GameArea.js +86 -0
  71. package/lib/module/games/flappy-bird/components/GameArea.js.map +1 -0
  72. package/lib/module/games/flappy-bird/components/GameBackground.js +112 -0
  73. package/lib/module/games/flappy-bird/components/GameBackground.js.map +1 -0
  74. package/lib/module/games/flappy-bird/components/Pipes.js +175 -0
  75. package/lib/module/games/flappy-bird/components/Pipes.js.map +1 -0
  76. package/lib/module/games/flappy-bird/components/ScoreBoard.js +72 -0
  77. package/lib/module/games/flappy-bird/components/ScoreBoard.js.map +1 -0
  78. package/lib/module/games/flappy-bird/components/index.js +8 -0
  79. package/lib/module/games/flappy-bird/components/index.js.map +1 -0
  80. package/lib/module/games/fruit-merger/FruitMerger.js +112 -0
  81. package/lib/module/games/fruit-merger/FruitMerger.js.map +1 -0
  82. package/lib/module/games/fruit-merger/FruitMergerConstants.js +119 -0
  83. package/lib/module/games/fruit-merger/FruitMergerConstants.js.map +1 -0
  84. package/lib/module/games/fruit-merger/FruitMergerService.js +13 -0
  85. package/lib/module/games/fruit-merger/FruitMergerService.js.map +1 -0
  86. package/lib/module/games/fruit-merger/FruitMergerStore.js +318 -0
  87. package/lib/module/games/fruit-merger/FruitMergerStore.js.map +1 -0
  88. package/lib/module/games/fruit-merger/components/FruitItem.js +102 -0
  89. package/lib/module/games/fruit-merger/components/FruitItem.js.map +1 -0
  90. package/lib/module/games/fruit-merger/components/GameArea.js +123 -0
  91. package/lib/module/games/fruit-merger/components/GameArea.js.map +1 -0
  92. package/lib/module/games/fruit-merger/components/GameBackground.js +477 -0
  93. package/lib/module/games/fruit-merger/components/GameBackground.js.map +1 -0
  94. package/lib/module/games/fruit-merger/components/ScoreBoard.js +66 -0
  95. package/lib/module/games/fruit-merger/components/ScoreBoard.js.map +1 -0
  96. package/lib/module/games/fruit-merger/components/index.js +7 -0
  97. package/lib/module/games/fruit-merger/components/index.js.map +1 -0
  98. package/lib/module/games/fruit-ninja/FruitNinja.js +6 -9
  99. package/lib/module/games/fruit-ninja/FruitNinja.js.map +1 -1
  100. package/lib/module/games/game-2048/Game2048.js +120 -0
  101. package/lib/module/games/game-2048/Game2048.js.map +1 -0
  102. package/lib/module/games/game-2048/Game2048Constants.js +263 -0
  103. package/lib/module/games/game-2048/Game2048Constants.js.map +1 -0
  104. package/lib/module/games/game-2048/Game2048Service.js +457 -0
  105. package/lib/module/games/game-2048/Game2048Service.js.map +1 -0
  106. package/lib/module/games/game-2048/Game2048Store.js +238 -0
  107. package/lib/module/games/game-2048/Game2048Store.js.map +1 -0
  108. package/lib/module/games/game-2048/components/GameBackground.js +247 -0
  109. package/lib/module/games/game-2048/components/GameBackground.js.map +1 -0
  110. package/lib/module/games/game-2048/components/GameGrid.js +139 -0
  111. package/lib/module/games/game-2048/components/GameGrid.js.map +1 -0
  112. package/lib/module/games/game-2048/components/GameTile.js +72 -0
  113. package/lib/module/games/game-2048/components/GameTile.js.map +1 -0
  114. package/lib/module/games/game-2048/components/ScoreBoard.js +70 -0
  115. package/lib/module/games/game-2048/components/ScoreBoard.js.map +1 -0
  116. package/lib/module/games/game-2048/components/index.js +7 -0
  117. package/lib/module/games/game-2048/components/index.js.map +1 -0
  118. package/lib/module/games/maze-runner/MazeRunner.js +33 -31
  119. package/lib/module/games/maze-runner/MazeRunner.js.map +1 -1
  120. package/lib/module/games/popit-fidget/PopitFidget.js +34 -32
  121. package/lib/module/games/popit-fidget/PopitFidget.js.map +1 -1
  122. package/lib/module/games/sliding-numbers/SlidingNumbers.js +161 -0
  123. package/lib/module/games/sliding-numbers/SlidingNumbers.js.map +1 -0
  124. package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js +207 -0
  125. package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js.map +1 -0
  126. package/lib/module/games/sliding-numbers/SlidingNumbersService.js +248 -0
  127. package/lib/module/games/sliding-numbers/SlidingNumbersService.js.map +1 -0
  128. package/lib/module/games/sliding-numbers/SlidingNumbersStore.js +275 -0
  129. package/lib/module/games/sliding-numbers/SlidingNumbersStore.js.map +1 -0
  130. package/lib/module/games/sliding-numbers/components/GameBackground.js +259 -0
  131. package/lib/module/games/sliding-numbers/components/GameBackground.js.map +1 -0
  132. package/lib/module/games/sliding-numbers/components/NumbersGrid.js +174 -0
  133. package/lib/module/games/sliding-numbers/components/NumbersGrid.js.map +1 -0
  134. package/lib/module/games/sliding-numbers/components/NumbersTile.js +116 -0
  135. package/lib/module/games/sliding-numbers/components/NumbersTile.js.map +1 -0
  136. package/lib/module/games/sliding-numbers/components/ScoreBoard.js +66 -0
  137. package/lib/module/games/sliding-numbers/components/ScoreBoard.js.map +1 -0
  138. package/lib/module/games/sliding-numbers/components/index.js +7 -0
  139. package/lib/module/games/sliding-numbers/components/index.js.map +1 -0
  140. package/lib/module/games/snake/Snake.js +192 -0
  141. package/lib/module/games/snake/Snake.js.map +1 -0
  142. package/lib/module/games/snake/SnakeConstants.js +138 -0
  143. package/lib/module/games/snake/SnakeConstants.js.map +1 -0
  144. package/lib/module/games/snake/SnakeService.js +148 -0
  145. package/lib/module/games/snake/SnakeService.js.map +1 -0
  146. package/lib/module/games/snake/SnakeStore.js +184 -0
  147. package/lib/module/games/snake/SnakeStore.js.map +1 -0
  148. package/lib/module/games/snake/components/GameBackground.js +221 -0
  149. package/lib/module/games/snake/components/GameBackground.js.map +1 -0
  150. package/lib/module/games/snake/components/GameGrid.js +153 -0
  151. package/lib/module/games/snake/components/GameGrid.js.map +1 -0
  152. package/lib/module/games/snake/components/ScoreBoard.js +57 -0
  153. package/lib/module/games/snake/components/ScoreBoard.js.map +1 -0
  154. package/lib/module/games/snake/components/index.js +6 -0
  155. package/lib/module/games/snake/components/index.js.map +1 -0
  156. package/lib/module/games/snake/index.js +6 -0
  157. package/lib/module/games/snake/index.js.map +1 -0
  158. package/lib/module/games/space-fighter/SpaceFighter.js +7 -10
  159. package/lib/module/games/space-fighter/SpaceFighter.js.map +1 -1
  160. package/lib/module/games/whack-a-mole/WhackAMole.js +6 -6
  161. package/lib/module/games/whack-a-mole/WhackAMole.js.map +1 -1
  162. package/lib/module/index.js +8 -0
  163. package/lib/module/index.js.map +1 -1
  164. package/lib/module/services/GamesConstants.js +58 -2
  165. package/lib/module/services/GamesConstants.js.map +1 -1
  166. package/lib/module/services/GamesService.js +40 -0
  167. package/lib/module/services/GamesService.js.map +1 -1
  168. package/lib/module/services/SoundsService.js +132 -1
  169. package/lib/module/services/SoundsService.js.map +1 -1
  170. package/lib/module/shared/helpers/GameOverModal.js +6 -3
  171. package/lib/module/shared/helpers/GameOverModal.js.map +1 -1
  172. package/lib/module/shared/helpers/GameSettingsModal.js +3 -3
  173. package/lib/module/shared/helpers/GameSettingsModal.js.map +1 -1
  174. package/lib/module/shared/helpers/ParticleBlast.js +3 -2
  175. package/lib/module/shared/helpers/ParticleBlast.js.map +1 -1
  176. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -1
  177. package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts +4 -0
  178. package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts.map +1 -0
  179. package/lib/typescript/src/games/candy-crush/CandyCrushConstants.d.ts +104 -0
  180. package/lib/typescript/src/games/candy-crush/CandyCrushConstants.d.ts.map +1 -0
  181. package/lib/typescript/src/games/candy-crush/CandyCrushService.d.ts +40 -0
  182. package/lib/typescript/src/games/candy-crush/CandyCrushService.d.ts.map +1 -0
  183. package/lib/typescript/src/games/candy-crush/CandyCrushStore.d.ts +48 -0
  184. package/lib/typescript/src/games/candy-crush/CandyCrushStore.d.ts.map +1 -0
  185. package/lib/typescript/src/games/candy-crush/components/CandyItem.d.ts +13 -0
  186. package/lib/typescript/src/games/candy-crush/components/CandyItem.d.ts.map +1 -0
  187. package/lib/typescript/src/games/candy-crush/components/GameBackground.d.ts +5 -0
  188. package/lib/typescript/src/games/candy-crush/components/GameBackground.d.ts.map +1 -0
  189. package/lib/typescript/src/games/candy-crush/components/GameGrid.d.ts +3 -0
  190. package/lib/typescript/src/games/candy-crush/components/GameGrid.d.ts.map +1 -0
  191. package/lib/typescript/src/games/candy-crush/components/ScoreBoard.d.ts +3 -0
  192. package/lib/typescript/src/games/candy-crush/components/ScoreBoard.d.ts.map +1 -0
  193. package/lib/typescript/src/games/candy-crush/components/index.d.ts +5 -0
  194. package/lib/typescript/src/games/candy-crush/components/index.d.ts.map +1 -0
  195. package/lib/typescript/src/games/candy-crush/index.d.ts +4 -0
  196. package/lib/typescript/src/games/candy-crush/index.d.ts.map +1 -0
  197. package/lib/typescript/src/games/color-sort/ColorSort.d.ts +4 -0
  198. package/lib/typescript/src/games/color-sort/ColorSort.d.ts.map +1 -0
  199. package/lib/typescript/src/games/color-sort/ColorSortConstants.d.ts +52 -0
  200. package/lib/typescript/src/games/color-sort/ColorSortConstants.d.ts.map +1 -0
  201. package/lib/typescript/src/games/color-sort/ColorSortService.d.ts +66 -0
  202. package/lib/typescript/src/games/color-sort/ColorSortService.d.ts.map +1 -0
  203. package/lib/typescript/src/games/color-sort/ColorSortStore.d.ts +48 -0
  204. package/lib/typescript/src/games/color-sort/ColorSortStore.d.ts.map +1 -0
  205. package/lib/typescript/src/games/color-sort/components/ColorContainer.d.ts +11 -0
  206. package/lib/typescript/src/games/color-sort/components/ColorContainer.d.ts.map +1 -0
  207. package/lib/typescript/src/games/color-sort/components/GameBackground.d.ts +7 -0
  208. package/lib/typescript/src/games/color-sort/components/GameBackground.d.ts.map +1 -0
  209. package/lib/typescript/src/games/color-sort/components/ScoreBoard.d.ts +3 -0
  210. package/lib/typescript/src/games/color-sort/components/ScoreBoard.d.ts.map +1 -0
  211. package/lib/typescript/src/games/color-sort/components/index.d.ts +4 -0
  212. package/lib/typescript/src/games/color-sort/components/index.d.ts.map +1 -0
  213. package/lib/typescript/src/games/dino-jump/DinoJump.d.ts +4 -0
  214. package/lib/typescript/src/games/dino-jump/DinoJump.d.ts.map +1 -0
  215. package/lib/typescript/src/games/dino-jump/DinoJumpConstants.d.ts +95 -0
  216. package/lib/typescript/src/games/dino-jump/DinoJumpConstants.d.ts.map +1 -0
  217. package/lib/typescript/src/games/dino-jump/DinoJumpService.d.ts +40 -0
  218. package/lib/typescript/src/games/dino-jump/DinoJumpService.d.ts.map +1 -0
  219. package/lib/typescript/src/games/dino-jump/DinoJumpStore.d.ts +103 -0
  220. package/lib/typescript/src/games/dino-jump/DinoJumpStore.d.ts.map +1 -0
  221. package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts +3 -0
  222. package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts.map +1 -0
  223. package/lib/typescript/src/games/dino-jump/components/GameArea.d.ts +8 -0
  224. package/lib/typescript/src/games/dino-jump/components/GameArea.d.ts.map +1 -0
  225. package/lib/typescript/src/games/dino-jump/components/GameBackground.d.ts +7 -0
  226. package/lib/typescript/src/games/dino-jump/components/GameBackground.d.ts.map +1 -0
  227. package/lib/typescript/src/games/dino-jump/components/ObstacleSprite.d.ts +3 -0
  228. package/lib/typescript/src/games/dino-jump/components/ObstacleSprite.d.ts.map +1 -0
  229. package/lib/typescript/src/games/dino-jump/components/ScoreBoard.d.ts +3 -0
  230. package/lib/typescript/src/games/dino-jump/components/ScoreBoard.d.ts.map +1 -0
  231. package/lib/typescript/src/games/dino-jump/components/StarSprite.d.ts +3 -0
  232. package/lib/typescript/src/games/dino-jump/components/StarSprite.d.ts.map +1 -0
  233. package/lib/typescript/src/games/dino-jump/components/index.d.ts +7 -0
  234. package/lib/typescript/src/games/dino-jump/components/index.d.ts.map +1 -0
  235. package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts +4 -0
  236. package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts.map +1 -0
  237. package/lib/typescript/src/games/flappy-bird/FlappyBirdConstants.d.ts +83 -0
  238. package/lib/typescript/src/games/flappy-bird/FlappyBirdConstants.d.ts.map +1 -0
  239. package/lib/typescript/src/games/flappy-bird/FlappyBirdStore.d.ts +53 -0
  240. package/lib/typescript/src/games/flappy-bird/FlappyBirdStore.d.ts.map +1 -0
  241. package/lib/typescript/src/games/flappy-bird/components/Bird.d.ts +8 -0
  242. package/lib/typescript/src/games/flappy-bird/components/Bird.d.ts.map +1 -0
  243. package/lib/typescript/src/games/flappy-bird/components/GameArea.d.ts +8 -0
  244. package/lib/typescript/src/games/flappy-bird/components/GameArea.d.ts.map +1 -0
  245. package/lib/typescript/src/games/flappy-bird/components/GameBackground.d.ts +7 -0
  246. package/lib/typescript/src/games/flappy-bird/components/GameBackground.d.ts.map +1 -0
  247. package/lib/typescript/src/games/flappy-bird/components/Pipes.d.ts +8 -0
  248. package/lib/typescript/src/games/flappy-bird/components/Pipes.d.ts.map +1 -0
  249. package/lib/typescript/src/games/flappy-bird/components/ScoreBoard.d.ts +3 -0
  250. package/lib/typescript/src/games/flappy-bird/components/ScoreBoard.d.ts.map +1 -0
  251. package/lib/typescript/src/games/flappy-bird/components/index.d.ts +6 -0
  252. package/lib/typescript/src/games/flappy-bird/components/index.d.ts.map +1 -0
  253. package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts +4 -0
  254. package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts.map +1 -0
  255. package/lib/typescript/src/games/fruit-merger/FruitMergerConstants.d.ts +115 -0
  256. package/lib/typescript/src/games/fruit-merger/FruitMergerConstants.d.ts.map +1 -0
  257. package/lib/typescript/src/games/fruit-merger/FruitMergerService.d.ts +5 -0
  258. package/lib/typescript/src/games/fruit-merger/FruitMergerService.d.ts.map +1 -0
  259. package/lib/typescript/src/games/fruit-merger/FruitMergerStore.d.ts +43 -0
  260. package/lib/typescript/src/games/fruit-merger/FruitMergerStore.d.ts.map +1 -0
  261. package/lib/typescript/src/games/fruit-merger/components/FruitItem.d.ts +10 -0
  262. package/lib/typescript/src/games/fruit-merger/components/FruitItem.d.ts.map +1 -0
  263. package/lib/typescript/src/games/fruit-merger/components/GameArea.d.ts +8 -0
  264. package/lib/typescript/src/games/fruit-merger/components/GameArea.d.ts.map +1 -0
  265. package/lib/typescript/src/games/fruit-merger/components/GameBackground.d.ts +7 -0
  266. package/lib/typescript/src/games/fruit-merger/components/GameBackground.d.ts.map +1 -0
  267. package/lib/typescript/src/games/fruit-merger/components/ScoreBoard.d.ts +3 -0
  268. package/lib/typescript/src/games/fruit-merger/components/ScoreBoard.d.ts.map +1 -0
  269. package/lib/typescript/src/games/fruit-merger/components/index.d.ts +5 -0
  270. package/lib/typescript/src/games/fruit-merger/components/index.d.ts.map +1 -0
  271. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts.map +1 -1
  272. package/lib/typescript/src/games/game-2048/Game2048.d.ts +4 -0
  273. package/lib/typescript/src/games/game-2048/Game2048.d.ts.map +1 -0
  274. package/lib/typescript/src/games/game-2048/Game2048Constants.d.ts +163 -0
  275. package/lib/typescript/src/games/game-2048/Game2048Constants.d.ts.map +1 -0
  276. package/lib/typescript/src/games/game-2048/Game2048Service.d.ts +113 -0
  277. package/lib/typescript/src/games/game-2048/Game2048Service.d.ts.map +1 -0
  278. package/lib/typescript/src/games/game-2048/Game2048Store.d.ts +48 -0
  279. package/lib/typescript/src/games/game-2048/Game2048Store.d.ts.map +1 -0
  280. package/lib/typescript/src/games/game-2048/components/GameBackground.d.ts +7 -0
  281. package/lib/typescript/src/games/game-2048/components/GameBackground.d.ts.map +1 -0
  282. package/lib/typescript/src/games/game-2048/components/GameGrid.d.ts +7 -0
  283. package/lib/typescript/src/games/game-2048/components/GameGrid.d.ts.map +1 -0
  284. package/lib/typescript/src/games/game-2048/components/GameTile.d.ts +13 -0
  285. package/lib/typescript/src/games/game-2048/components/GameTile.d.ts.map +1 -0
  286. package/lib/typescript/src/games/game-2048/components/ScoreBoard.d.ts +3 -0
  287. package/lib/typescript/src/games/game-2048/components/ScoreBoard.d.ts.map +1 -0
  288. package/lib/typescript/src/games/game-2048/components/index.d.ts +5 -0
  289. package/lib/typescript/src/games/game-2048/components/index.d.ts.map +1 -0
  290. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -1
  291. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts.map +1 -1
  292. package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts +4 -0
  293. package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts.map +1 -0
  294. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersConstants.d.ts +108 -0
  295. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersConstants.d.ts.map +1 -0
  296. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersService.d.ts +34 -0
  297. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersService.d.ts.map +1 -0
  298. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersStore.d.ts +56 -0
  299. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersStore.d.ts.map +1 -0
  300. package/lib/typescript/src/games/sliding-numbers/components/GameBackground.d.ts +7 -0
  301. package/lib/typescript/src/games/sliding-numbers/components/GameBackground.d.ts.map +1 -0
  302. package/lib/typescript/src/games/sliding-numbers/components/NumbersGrid.d.ts +7 -0
  303. package/lib/typescript/src/games/sliding-numbers/components/NumbersGrid.d.ts.map +1 -0
  304. package/lib/typescript/src/games/sliding-numbers/components/NumbersTile.d.ts +11 -0
  305. package/lib/typescript/src/games/sliding-numbers/components/NumbersTile.d.ts.map +1 -0
  306. package/lib/typescript/src/games/sliding-numbers/components/ScoreBoard.d.ts +3 -0
  307. package/lib/typescript/src/games/sliding-numbers/components/ScoreBoard.d.ts.map +1 -0
  308. package/lib/typescript/src/games/sliding-numbers/components/index.d.ts +5 -0
  309. package/lib/typescript/src/games/sliding-numbers/components/index.d.ts.map +1 -0
  310. package/lib/typescript/src/games/snake/Snake.d.ts +4 -0
  311. package/lib/typescript/src/games/snake/Snake.d.ts.map +1 -0
  312. package/lib/typescript/src/games/snake/SnakeConstants.d.ts +93 -0
  313. package/lib/typescript/src/games/snake/SnakeConstants.d.ts.map +1 -0
  314. package/lib/typescript/src/games/snake/SnakeService.d.ts +30 -0
  315. package/lib/typescript/src/games/snake/SnakeService.d.ts.map +1 -0
  316. package/lib/typescript/src/games/snake/SnakeStore.d.ts +43 -0
  317. package/lib/typescript/src/games/snake/SnakeStore.d.ts.map +1 -0
  318. package/lib/typescript/src/games/snake/components/GameBackground.d.ts +5 -0
  319. package/lib/typescript/src/games/snake/components/GameBackground.d.ts.map +1 -0
  320. package/lib/typescript/src/games/snake/components/GameGrid.d.ts +3 -0
  321. package/lib/typescript/src/games/snake/components/GameGrid.d.ts.map +1 -0
  322. package/lib/typescript/src/games/snake/components/ScoreBoard.d.ts +3 -0
  323. package/lib/typescript/src/games/snake/components/ScoreBoard.d.ts.map +1 -0
  324. package/lib/typescript/src/games/snake/components/index.d.ts +4 -0
  325. package/lib/typescript/src/games/snake/components/index.d.ts.map +1 -0
  326. package/lib/typescript/src/games/snake/index.d.ts +4 -0
  327. package/lib/typescript/src/games/snake/index.d.ts.map +1 -0
  328. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts.map +1 -1
  329. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts.map +1 -1
  330. package/lib/typescript/src/index.d.ts +8 -0
  331. package/lib/typescript/src/index.d.ts.map +1 -1
  332. package/lib/typescript/src/services/GamesConstants.d.ts +156 -0
  333. package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -1
  334. package/lib/typescript/src/services/GamesService.d.ts +10 -2
  335. package/lib/typescript/src/services/GamesService.d.ts.map +1 -1
  336. package/lib/typescript/src/services/SoundsService.d.ts +103 -0
  337. package/lib/typescript/src/services/SoundsService.d.ts.map +1 -1
  338. package/lib/typescript/src/shared/helpers/GameOverModal.d.ts +2 -0
  339. package/lib/typescript/src/shared/helpers/GameOverModal.d.ts.map +1 -1
  340. package/lib/typescript/src/shared/helpers/ParticleBlast.d.ts.map +1 -1
  341. package/package.json +1 -1
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+
3
+ import React, { useMemo } from 'react';
4
+ import { View, StyleSheet, Dimensions } from 'react-native';
5
+ import Animated, { useAnimatedStyle, withSpring, useSharedValue, withSequence } from 'react-native-reanimated';
6
+ import { NumbersTile } from "./NumbersTile.js";
7
+ import { useTiles, useGridSize, useEmptyPosition, useSlidingNumbersStore } from "../SlidingNumbersStore.js";
8
+ import { SLIDING_NUMBERS_GAME_CONFIG, SLIDING_NUMBERS_ANIMATION_CONFIG } from "../SlidingNumbersConstants.js";
9
+ import { jsx as _jsx } from "react/jsx-runtime";
10
+ export const NumbersGrid = /*#__PURE__*/React.memo(({
11
+ difficulty
12
+ }) => {
13
+ const tiles = useTiles();
14
+ const gridSize = useGridSize();
15
+ const emptyPosition = useEmptyPosition();
16
+ const isPlaying = useSlidingNumbersStore(state => state.isPlaying);
17
+ const isCompleted = useSlidingNumbersStore(state => state.isCompleted);
18
+ const moveTile = useSlidingNumbersStore(state => state.moveTile);
19
+ const checkCompletion = useSlidingNumbersStore(state => state.checkCompletion);
20
+ const completionScale = useSharedValue(1);
21
+
22
+ // Calculate grid dimensions
23
+ const gridDimensions = useMemo(() => {
24
+ const gap = SLIDING_NUMBERS_GAME_CONFIG.TILE_GAP;
25
+ const padding = (gap + 8) * 2; // padding from grid container
26
+
27
+ // Calculate available space for the grid content
28
+ const {
29
+ width: screenWidth
30
+ } = Dimensions.get('window');
31
+ const maxAvailableWidth = screenWidth - padding - 40; // Leave margin for screen edges
32
+
33
+ // Calculate optimal tile size based on grid size
34
+ const availableForTiles = maxAvailableWidth - gap * (gridSize - 1);
35
+ const optimalTileSize = Math.floor(availableForTiles / gridSize);
36
+
37
+ // Ensure minimum tile size for usability
38
+ const minTileSize = 45;
39
+ const maxTileSize = 80;
40
+ const tileSize = Math.max(minTileSize, Math.min(maxTileSize, optimalTileSize));
41
+
42
+ // Calculate actual content size: tiles + gaps between them
43
+ const tilesWidth = tileSize * gridSize;
44
+ const gapsWidth = gap * (gridSize - 1);
45
+ const contentSize = tilesWidth + gapsWidth;
46
+ const totalSize = contentSize + padding;
47
+ return {
48
+ width: totalSize,
49
+ height: totalSize,
50
+ contentWidth: contentSize,
51
+ contentHeight: contentSize,
52
+ tileSize,
53
+ gap
54
+ };
55
+ }, [gridSize]);
56
+
57
+ // Create grid layout
58
+ const gridLayout = useMemo(() => {
59
+ const layout = [];
60
+
61
+ // Initialize empty grid
62
+ for (let row = 0; row < gridSize; row++) {
63
+ layout[row] = [];
64
+ for (let col = 0; col < gridSize; col++) {
65
+ const rowArray = layout[row];
66
+ if (rowArray) {
67
+ rowArray[col] = null;
68
+ }
69
+ }
70
+ }
71
+
72
+ // Place tiles in their current positions
73
+ tiles.forEach(tile => {
74
+ const {
75
+ row,
76
+ col
77
+ } = tile.position;
78
+ if (row >= 0 && row < gridSize && col >= 0 && col < gridSize && layout[row]) {
79
+ layout[row][col] = tile;
80
+ }
81
+ });
82
+ return layout;
83
+ }, [tiles, gridSize]);
84
+
85
+ // Memoized tile press handler with useCallback
86
+ const handleTilePress = React.useCallback(tileId => {
87
+ if (!isPlaying || isCompleted) return;
88
+ const success = moveTile(tileId);
89
+ if (success) {
90
+ // Check completion after successful move
91
+ checkCompletion(difficulty);
92
+ }
93
+ }, [isPlaying, isCompleted, moveTile, checkCompletion, difficulty]);
94
+
95
+ // Memoized tile movability checker with useCallback
96
+ const isTileMovable = React.useCallback(tile => {
97
+ if (!tile || tile.value === 0 || !isPlaying || isCompleted) return false;
98
+ const emptyPos = emptyPosition;
99
+ const rowDiff = Math.abs(tile.position.row - emptyPos.row);
100
+ const colDiff = Math.abs(tile.position.col - emptyPos.col);
101
+ return rowDiff === 1 && colDiff === 0 || rowDiff === 0 && colDiff === 1;
102
+ }, [emptyPosition, isPlaying, isCompleted]);
103
+
104
+ // Animated style for completion celebration
105
+ const animatedGridStyle = useAnimatedStyle(() => ({
106
+ transform: [{
107
+ scale: completionScale.value
108
+ }]
109
+ }));
110
+
111
+ // Trigger completion animation
112
+ React.useEffect(() => {
113
+ if (isCompleted) {
114
+ completionScale.value = withSequence(withSpring(1.1, SLIDING_NUMBERS_ANIMATION_CONFIG.COMPLETION_CELEBRATION), withSpring(1, SLIDING_NUMBERS_ANIMATION_CONFIG.COMPLETION_CELEBRATION));
115
+ }
116
+ }, [isCompleted]);
117
+
118
+ // Memoize grid container style
119
+ const gridContainerStyle = useMemo(() => [styles.gridContainer, {
120
+ width: gridDimensions.width,
121
+ height: gridDimensions.height
122
+ }, animatedGridStyle], [gridDimensions.width, gridDimensions.height, animatedGridStyle]);
123
+
124
+ // Memoize tile slot style factory
125
+ const getTileSlotStyle = React.useCallback(tileSize => [styles.tileSlot, {
126
+ width: tileSize,
127
+ height: tileSize
128
+ }], []);
129
+ return /*#__PURE__*/_jsx(Animated.View, {
130
+ style: gridContainerStyle,
131
+ children: gridLayout.map((row, rowIndex) => /*#__PURE__*/_jsx(View, {
132
+ style: styles.row,
133
+ children: row.map((tile, colIndex) => /*#__PURE__*/_jsx(View, {
134
+ style: getTileSlotStyle(gridDimensions.tileSize),
135
+ children: tile && tile.value !== 0 && /*#__PURE__*/_jsx(NumbersTile, {
136
+ tile: tile,
137
+ onPress: handleTilePress,
138
+ isMovable: isTileMovable(tile),
139
+ tileSize: gridDimensions.tileSize
140
+ })
141
+ }, `${rowIndex}-${colIndex}`))
142
+ }, rowIndex))
143
+ });
144
+ });
145
+ const styles = StyleSheet.create({
146
+ gridContainer: {
147
+ backgroundColor: '#FFFFFF',
148
+ borderRadius: 20,
149
+ padding: SLIDING_NUMBERS_GAME_CONFIG.TILE_GAP + 8,
150
+ // Clean shadow like the physical puzzle frame
151
+ shadowColor: '#000',
152
+ shadowOffset: {
153
+ width: 0,
154
+ height: 4
155
+ },
156
+ shadowOpacity: 0.1,
157
+ shadowRadius: 8,
158
+ elevation: 8,
159
+ // Ensure the container fits its content properly
160
+ alignSelf: 'center'
161
+ },
162
+ row: {
163
+ flexDirection: 'row',
164
+ justifyContent: 'center',
165
+ alignItems: 'center'
166
+ },
167
+ tileSlot: {
168
+ justifyContent: 'center',
169
+ alignItems: 'center',
170
+ margin: SLIDING_NUMBERS_GAME_CONFIG.TILE_GAP / 2
171
+ }
172
+ });
173
+ NumbersGrid.displayName = 'NumbersGrid';
174
+ //# sourceMappingURL=NumbersGrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useMemo","View","StyleSheet","Dimensions","Animated","useAnimatedStyle","withSpring","useSharedValue","withSequence","NumbersTile","useTiles","useGridSize","useEmptyPosition","useSlidingNumbersStore","SLIDING_NUMBERS_GAME_CONFIG","SLIDING_NUMBERS_ANIMATION_CONFIG","jsx","_jsx","NumbersGrid","memo","difficulty","tiles","gridSize","emptyPosition","isPlaying","state","isCompleted","moveTile","checkCompletion","completionScale","gridDimensions","gap","TILE_GAP","padding","width","screenWidth","get","maxAvailableWidth","availableForTiles","optimalTileSize","Math","floor","minTileSize","maxTileSize","tileSize","max","min","tilesWidth","gapsWidth","contentSize","totalSize","height","contentWidth","contentHeight","gridLayout","layout","row","col","rowArray","forEach","tile","position","handleTilePress","useCallback","tileId","success","isTileMovable","value","emptyPos","rowDiff","abs","colDiff","animatedGridStyle","transform","scale","useEffect","COMPLETION_CELEBRATION","gridContainerStyle","styles","gridContainer","getTileSlotStyle","tileSlot","style","children","map","rowIndex","colIndex","onPress","isMovable","create","backgroundColor","borderRadius","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","alignSelf","flexDirection","justifyContent","alignItems","margin","displayName"],"sourceRoot":"../../../../../src","sources":["games/sliding-numbers/components/NumbersGrid.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { StyleSheet, TouchableOpacity, Text } from 'react-native';
5
+ import Animated, { useSharedValue, useAnimatedStyle, withSpring, runOnJS } from 'react-native-reanimated';
6
+ import { SLIDING_NUMBERS_COLORS, SLIDING_NUMBERS_GAME_CONFIG, SLIDING_NUMBERS_ANIMATION_CONFIG, NUMBER_WORDS } from "../SlidingNumbersConstants.js";
7
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
+ const AnimatedTouchableOpacity = Animated.createAnimatedComponent(TouchableOpacity);
9
+ export const NumbersTile = /*#__PURE__*/React.memo(({
10
+ tile,
11
+ onPress,
12
+ isMovable,
13
+ tileSize
14
+ }) => {
15
+ const scale = useSharedValue(1);
16
+ const opacity = useSharedValue(tile.value === 0 ? 0 : 1);
17
+ const handlePress = React.useCallback(() => {
18
+ if (tile.value !== 0 && isMovable) {
19
+ // Animate press feedback
20
+ scale.value = withSpring(0.95, SLIDING_NUMBERS_ANIMATION_CONFIG.TILE_PRESS, () => {
21
+ scale.value = withSpring(1, SLIDING_NUMBERS_ANIMATION_CONFIG.TILE_PRESS);
22
+ });
23
+ runOnJS(onPress)(tile.id);
24
+ }
25
+ }, [tile.value, tile.id, isMovable, onPress, scale]);
26
+ const animatedStyle = useAnimatedStyle(() => ({
27
+ transform: [{
28
+ scale: scale.value
29
+ }],
30
+ opacity: opacity.value
31
+ }));
32
+
33
+ // Don't render empty tile
34
+ if (tile.value === 0) {
35
+ return null;
36
+ }
37
+
38
+ // Memoized tile color and word
39
+ const {
40
+ tileColor,
41
+ numberWord
42
+ } = React.useMemo(() => {
43
+ const colorIndex = (tile.value - 1) % SLIDING_NUMBERS_COLORS.TILE_COLORS.length;
44
+ const color = SLIDING_NUMBERS_COLORS.TILE_COLORS[colorIndex] || SLIDING_NUMBERS_COLORS.TILE_COLORS[0];
45
+ const word = NUMBER_WORDS[tile.value] || '';
46
+ return {
47
+ tileColor: color,
48
+ numberWord: word
49
+ };
50
+ }, [tile.value]);
51
+
52
+ // Memoized font sizes
53
+ const {
54
+ numberFontSize,
55
+ wordFontSize
56
+ } = React.useMemo(() => ({
57
+ numberFontSize: Math.max(16, tileSize * 0.4),
58
+ wordFontSize: Math.max(8, tileSize * 0.15)
59
+ }), [tileSize]);
60
+ return /*#__PURE__*/_jsxs(AnimatedTouchableOpacity, {
61
+ style: [styles.tile, {
62
+ width: tileSize,
63
+ height: tileSize,
64
+ backgroundColor: tileColor,
65
+ borderColor: tile.isCorrect ? 'transparent' : '#FF4444',
66
+ borderWidth: tile.isCorrect ? 0 : 2
67
+ }, animatedStyle],
68
+ onPress: handlePress,
69
+ activeOpacity: 0.8,
70
+ disabled: !isMovable || tile.value === 0,
71
+ children: [/*#__PURE__*/_jsx(Text, {
72
+ style: [styles.number, {
73
+ fontSize: numberFontSize
74
+ }],
75
+ children: tile.value
76
+ }), /*#__PURE__*/_jsx(Text, {
77
+ style: [styles.word, {
78
+ fontSize: wordFontSize
79
+ }],
80
+ children: numberWord
81
+ })]
82
+ });
83
+ }, (prevProps, nextProps) => {
84
+ // Custom comparison for better memoization
85
+ return prevProps.tile.id === nextProps.tile.id && prevProps.tile.value === nextProps.tile.value && prevProps.tile.isCorrect === nextProps.tile.isCorrect && prevProps.tile.position.row === nextProps.tile.position.row && prevProps.tile.position.col === nextProps.tile.position.col && prevProps.isMovable === nextProps.isMovable && prevProps.tileSize === nextProps.tileSize;
86
+ });
87
+ const styles = StyleSheet.create({
88
+ tile: {
89
+ margin: SLIDING_NUMBERS_GAME_CONFIG.TILE_GAP / 2,
90
+ justifyContent: 'center',
91
+ alignItems: 'center',
92
+ borderRadius: 16,
93
+ // Soft shadow like in the image
94
+ shadowColor: '#000',
95
+ shadowOffset: {
96
+ width: 0,
97
+ height: 3
98
+ },
99
+ shadowOpacity: 0.15,
100
+ shadowRadius: 6,
101
+ elevation: 6
102
+ },
103
+ number: {
104
+ fontWeight: 'bold',
105
+ color: '#000000',
106
+ textAlign: 'center',
107
+ marginBottom: 2
108
+ },
109
+ word: {
110
+ fontWeight: 'normal',
111
+ color: '#000000',
112
+ textAlign: 'center'
113
+ }
114
+ });
115
+ NumbersTile.displayName = 'NumbersTile';
116
+ //# sourceMappingURL=NumbersTile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","StyleSheet","TouchableOpacity","Text","Animated","useSharedValue","useAnimatedStyle","withSpring","runOnJS","SLIDING_NUMBERS_COLORS","SLIDING_NUMBERS_GAME_CONFIG","SLIDING_NUMBERS_ANIMATION_CONFIG","NUMBER_WORDS","jsx","_jsx","jsxs","_jsxs","AnimatedTouchableOpacity","createAnimatedComponent","NumbersTile","memo","tile","onPress","isMovable","tileSize","scale","opacity","value","handlePress","useCallback","TILE_PRESS","id","animatedStyle","transform","tileColor","numberWord","useMemo","colorIndex","TILE_COLORS","length","color","word","numberFontSize","wordFontSize","Math","max","style","styles","width","height","backgroundColor","borderColor","isCorrect","borderWidth","activeOpacity","disabled","children","number","fontSize","prevProps","nextProps","position","row","col","create","margin","TILE_GAP","justifyContent","alignItems","borderRadius","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","fontWeight","textAlign","marginBottom","displayName"],"sourceRoot":"../../../../../src","sources":["games/sliding-numbers/components/NumbersTile.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ import React, { useMemo } from 'react';
4
+ import { View, Text, StyleSheet } from 'react-native';
5
+ import { useTimeElapsed } from "../SlidingNumbersStore.js";
6
+ import { SlidingNumbersService } from "../SlidingNumbersService.js";
7
+ import { RESPONSIVE_SCOREBOARD_CONTAINER, RESPONSIVE_SCOREBOARD_FONTS } from "../../../shared/helpers/index.js";
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ export const ScoreBoard = /*#__PURE__*/React.memo(() => {
10
+ const gameService = useMemo(() => new SlidingNumbersService(), []);
11
+ const timeElapsed = useTimeElapsed();
12
+ const formattedTime = useMemo(() => gameService.formatTime(timeElapsed), [gameService, timeElapsed]);
13
+ return /*#__PURE__*/_jsx(View, {
14
+ style: styles.scoreBoard,
15
+ children: /*#__PURE__*/_jsxs(View, {
16
+ style: styles.scoreSection,
17
+ children: [/*#__PURE__*/_jsx(Text, {
18
+ style: styles.scoreLabel,
19
+ children: "Time Elapsed"
20
+ }), /*#__PURE__*/_jsx(Text, {
21
+ style: [styles.timeValue, {
22
+ color: '#3b82f6'
23
+ }],
24
+ children: formattedTime
25
+ })]
26
+ })
27
+ });
28
+ });
29
+ const styles = StyleSheet.create({
30
+ scoreBoard: {
31
+ ...RESPONSIVE_SCOREBOARD_CONTAINER,
32
+ marginHorizontal: 20,
33
+ marginTop: 20,
34
+ flexDirection: 'row',
35
+ justifyContent: 'space-between',
36
+ alignItems: 'center',
37
+ backgroundColor: 'rgba(245, 245, 220, 0.6)',
38
+ // Semi-transparent beige matching puzzle theme
39
+ borderRadius: 16,
40
+ padding: 20,
41
+ borderWidth: 1,
42
+ borderColor: 'rgba(255, 255, 255, 0.3)' // Subtle white border
43
+ },
44
+ scoreSection: {
45
+ alignItems: 'center',
46
+ flex: 1
47
+ },
48
+ scoreLabel: {
49
+ fontSize: RESPONSIVE_SCOREBOARD_FONTS.labelSize,
50
+ fontWeight: 'bold',
51
+ color: '#4a5568',
52
+ // Dark gray for better contrast
53
+ marginBottom: 4
54
+ },
55
+ timeValue: {
56
+ fontSize: RESPONSIVE_SCOREBOARD_FONTS.timeSize,
57
+ fontWeight: 'bold'
58
+ },
59
+ hintText: {
60
+ fontSize: RESPONSIVE_SCOREBOARD_FONTS.labelSize,
61
+ fontWeight: '600',
62
+ color: '#10b981' // Green color for motivation
63
+ }
64
+ });
65
+ ScoreBoard.displayName = 'ScoreBoard';
66
+ //# sourceMappingURL=ScoreBoard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useMemo","View","Text","StyleSheet","useTimeElapsed","SlidingNumbersService","RESPONSIVE_SCOREBOARD_CONTAINER","RESPONSIVE_SCOREBOARD_FONTS","jsx","_jsx","jsxs","_jsxs","ScoreBoard","memo","gameService","timeElapsed","formattedTime","formatTime","style","styles","scoreBoard","children","scoreSection","scoreLabel","timeValue","color","create","marginHorizontal","marginTop","flexDirection","justifyContent","alignItems","backgroundColor","borderRadius","padding","borderWidth","borderColor","flex","fontSize","labelSize","fontWeight","marginBottom","timeSize","hintText","displayName"],"sourceRoot":"../../../../../src","sources":["games/sliding-numbers/components/ScoreBoard.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AACtC,SAASC,IAAI,EAAEC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AACrD,SAASC,cAAc,QAAQ,2BAAwB;AACvD,SAASC,qBAAqB,QAAQ,6BAA0B;AAChE,SAASC,+BAA+B,EAAEC,2BAA2B,QAAQ,kCAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEvG,OAAO,MAAMC,UAAoB,gBAAGb,KAAK,CAACc,IAAI,CAAC,MAAM;EACnD,MAAMC,WAAW,GAAGd,OAAO,CAAC,MAAM,IAAIK,qBAAqB,CAAC,CAAC,EAAE,EAAE,CAAC;EAClE,MAAMU,WAAW,GAAGX,cAAc,CAAC,CAAC;EAEpC,MAAMY,aAAa,GAAGhB,OAAO,CAAC,MAAMc,WAAW,CAACG,UAAU,CAACF,WAAW,CAAC,EAAE,CAACD,WAAW,EAAEC,WAAW,CAAC,CAAC;EAEpG,oBACEN,IAAA,CAACR,IAAI;IAACiB,KAAK,EAAEC,MAAM,CAACC,UAAW;IAAAC,QAAA,eAC7BV,KAAA,CAACV,IAAI;MAACiB,KAAK,EAAEC,MAAM,CAACG,YAAa;MAAAD,QAAA,gBAC/BZ,IAAA,CAACP,IAAI;QAACgB,KAAK,EAAEC,MAAM,CAACI,UAAW;QAAAF,QAAA,EAAC;MAAY,CAAM,CAAC,eACnDZ,IAAA,CAACP,IAAI;QAACgB,KAAK,EAAE,CAACC,MAAM,CAACK,SAAS,EAAE;UAAEC,KAAK,EAAE;QAAU,CAAC,CAAE;QAAAJ,QAAA,EACnDL;MAAa,CACV,CAAC;IAAA,CACH;EAAC,CACH,CAAC;AAEX,CAAC,CAAC;AAEF,MAAMG,MAAM,GAAGhB,UAAU,CAACuB,MAAM,CAAC;EAC/BN,UAAU,EAAE;IACV,GAAGd,+BAA+B;IAClCqB,gBAAgB,EAAE,EAAE;IACpBC,SAAS,EAAE,EAAE;IACbC,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE,eAAe;IAC/BC,UAAU,EAAE,QAAQ;IACpBC,eAAe,EAAE,0BAA0B;IAAE;IAC7CC,YAAY,EAAE,EAAE;IAChBC,OAAO,EAAE,EAAE;IACXC,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE,0BAA0B,CAAE;EAC3C,CAAC;EACDd,YAAY,EAAE;IACZS,UAAU,EAAE,QAAQ;IACpBM,IAAI,EAAE;EACR,CAAC;EACDd,UAAU,EAAE;IACVe,QAAQ,EAAE/B,2BAA2B,CAACgC,SAAS;IAC/CC,UAAU,EAAE,MAAM;IAClBf,KAAK,EAAE,SAAS;IAAE;IAClBgB,YAAY,EAAE;EAChB,CAAC;EACDjB,SAAS,EAAE;IACTc,QAAQ,EAAE/B,2BAA2B,CAACmC,QAAQ;IAC9CF,UAAU,EAAE;EACd,CAAC;EACDG,QAAQ,EAAE;IACRL,QAAQ,EAAE/B,2BAA2B,CAACgC,SAAS;IAC/CC,UAAU,EAAE,KAAK;IACjBf,KAAK,EAAE,SAAS,CAAE;EACpB;AACF,CAAC,CAAC;AAEFb,UAAU,CAACgC,WAAW,GAAG,YAAY","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ export { NumbersTile } from "./NumbersTile.js";
4
+ export { NumbersGrid } from "./NumbersGrid.js";
5
+ export { ScoreBoard } from "./ScoreBoard.js";
6
+ export { GameBackground } from "./GameBackground.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NumbersTile","NumbersGrid","ScoreBoard","GameBackground"],"sourceRoot":"../../../../../src","sources":["games/sliding-numbers/components/index.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,kBAAe;AAC3C,SAASC,WAAW,QAAQ,kBAAe;AAC3C,SAASC,UAAU,QAAQ,iBAAc;AACzC,SAASC,cAAc,QAAQ,qBAAkB","ignoreList":[]}
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { View, StyleSheet } from 'react-native';
5
+ import { GestureHandlerRootView, Gesture, GestureDetector } from 'react-native-gesture-handler';
6
+ import { runOnJS } from 'react-native-reanimated';
7
+ import { GameControlButton, GameOverModal, GameSettingsModal } from "../../shared/helpers/index.js";
8
+ import { GAME_IDS, DEFAULT_GAME_SETTINGS } from "../../services/GamesService.js";
9
+ import { GameBackground, GameGrid, ScoreBoard } from "./components/index.js";
10
+ import { useSnakeStore, useScore, useIsPlaying, useIsGameOver } from "./SnakeStore.js";
11
+ import { SNAKE_COLORS } from "./SnakeConstants.js";
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ export const Snake = /*#__PURE__*/React.memo(({
14
+ settings,
15
+ onSettingsChange
16
+ }) => {
17
+ // Zustand store selectors for optimal re-renders
18
+ const score = useScore();
19
+ const isPlaying = useIsPlaying();
20
+ const isGameOver = useIsGameOver();
21
+
22
+ // Store actions - use stable references to prevent re-renders
23
+ const startGame = useSnakeStore(state => state.startGame);
24
+ const stopGame = useSnakeStore(state => state.stopGame);
25
+ const resetGame = useSnakeStore(state => state.resetGame);
26
+ const initializeGame = useSnakeStore(state => state.initializeGame);
27
+ const updateSettings = useSnakeStore(state => state.updateSettings);
28
+ const changeDirection = useSnakeStore(state => state.changeDirection);
29
+
30
+ // Track previous values to prevent unnecessary updates
31
+ const prevSettingsRef = React.useRef({
32
+ enableSounds: true,
33
+ enableHaptics: true
34
+ });
35
+ const prevDifficultyRef = React.useRef('easy');
36
+
37
+ // Update settings when they change
38
+ React.useEffect(() => {
39
+ const enableSounds = settings?.enableSounds ?? true;
40
+ const enableHaptics = settings?.enableHaptics ?? true;
41
+
42
+ // Only update if values actually changed
43
+ if (prevSettingsRef.current.enableSounds !== enableSounds || prevSettingsRef.current.enableHaptics !== enableHaptics) {
44
+ prevSettingsRef.current = {
45
+ enableSounds,
46
+ enableHaptics
47
+ };
48
+ updateSettings(enableSounds, enableHaptics);
49
+ }
50
+ }, [updateSettings, settings?.enableSounds, settings?.enableHaptics]);
51
+
52
+ // Initialize on mount and when difficulty changes
53
+ React.useEffect(() => {
54
+ const difficulty = settings?.difficulty || 'easy';
55
+
56
+ // Only initialize if difficulty actually changed
57
+ if (prevDifficultyRef.current !== difficulty) {
58
+ prevDifficultyRef.current = difficulty;
59
+ initializeGame(difficulty);
60
+ }
61
+ }, [initializeGame, settings?.difficulty]);
62
+
63
+ // Game control handlers
64
+ const handleStartGame = React.useCallback(() => {
65
+ startGame();
66
+ }, [startGame]);
67
+ const handleResetGame = React.useCallback(() => {
68
+ resetGame();
69
+ }, [resetGame]);
70
+ const handleStopGame = React.useCallback(() => {
71
+ stopGame();
72
+ }, [stopGame]);
73
+
74
+ // Gesture handler for swipe controls with safe state updates
75
+ const handleSwipe = React.useCallback(direction => {
76
+ try {
77
+ if (!isPlaying) return;
78
+
79
+ // Use requestAnimationFrame for safer state updates
80
+ requestAnimationFrame(() => {
81
+ try {
82
+ changeDirection(direction);
83
+ } catch (error) {
84
+ console.error('Direction change error:', error);
85
+ }
86
+ });
87
+ } catch (error) {
88
+ console.error('Swipe handler error:', error);
89
+ }
90
+ }, [isPlaying, changeDirection]);
91
+
92
+ // Pan gesture for swipe detection
93
+ const panGesture = React.useMemo(() => Gesture.Pan().onEnd(event => {
94
+ const threshold = 30; // Minimum swipe distance
95
+ const absX = Math.abs(event.translationX);
96
+ const absY = Math.abs(event.translationY);
97
+ if (absX > threshold || absY > threshold) {
98
+ if (absX > absY) {
99
+ // Horizontal swipe
100
+ if (event.translationX > 0) {
101
+ runOnJS(handleSwipe)('RIGHT');
102
+ } else {
103
+ runOnJS(handleSwipe)('LEFT');
104
+ }
105
+ } else {
106
+ // Vertical swipe
107
+ if (event.translationY > 0) {
108
+ runOnJS(handleSwipe)('DOWN');
109
+ } else {
110
+ runOnJS(handleSwipe)('UP');
111
+ }
112
+ }
113
+ }
114
+ }), [handleSwipe]);
115
+
116
+ // Memoized GameControlButton props
117
+ const gameControlButtonProps = React.useMemo(() => ({
118
+ isPlaying,
119
+ gameOver: isGameOver,
120
+ onStartGame: handleStartGame,
121
+ onStopGame: handleStopGame,
122
+ onResetGame: handleResetGame,
123
+ startButtonText: 'Start Slithering!',
124
+ startButtonSubtext: 'Swipe to move',
125
+ startButtonColor: SNAKE_COLORS.BUTTON_PRIMARY,
126
+ startButtonBorderColor: SNAKE_COLORS.BUTTON_SECONDARY
127
+ }), [isPlaying, isGameOver, handleStartGame, handleStopGame, handleResetGame]);
128
+
129
+ // Memoized GameOverModal props
130
+ const gameOverModalProps = React.useMemo(() => ({
131
+ isVisible: isGameOver,
132
+ score,
133
+ onPlayAgain: handleResetGame,
134
+ buttonText: 'Play Again!',
135
+ primaryColor: SNAKE_COLORS.MODAL_PRIMARY,
136
+ borderColor: SNAKE_COLORS.MODAL_BORDER,
137
+ buttonColor: SNAKE_COLORS.MODAL_BUTTON,
138
+ buttonBorderColor: SNAKE_COLORS.MODAL_BUTTON_BORDER,
139
+ scoreFormatter: s => `${s}`,
140
+ additionalInfo: 'Great slithering!'
141
+ }), [isGameOver, score, handleResetGame]);
142
+
143
+ // Memoized GameSettingsModal props
144
+ const gameSettingsModalProps = React.useMemo(() => ({
145
+ gameId: GAME_IDS.SNAKE,
146
+ settings: settings || DEFAULT_GAME_SETTINGS,
147
+ onSettingsChange
148
+ }), [settings, onSettingsChange]);
149
+ return /*#__PURE__*/_jsx(GameBackground, {
150
+ children: /*#__PURE__*/_jsx(GestureHandlerRootView, {
151
+ style: styles.container,
152
+ children: /*#__PURE__*/_jsx(GestureDetector, {
153
+ gesture: panGesture,
154
+ children: /*#__PURE__*/_jsxs(View, {
155
+ style: styles.container,
156
+ children: [/*#__PURE__*/_jsx(View, {
157
+ style: styles.gridContainer,
158
+ children: /*#__PURE__*/_jsx(GameGrid, {})
159
+ }), /*#__PURE__*/_jsx(View, {
160
+ style: styles.scoreboardContainer,
161
+ children: /*#__PURE__*/_jsx(ScoreBoard, {})
162
+ }), /*#__PURE__*/_jsx(GameControlButton, {
163
+ ...gameControlButtonProps
164
+ }), /*#__PURE__*/_jsx(GameOverModal, {
165
+ ...gameOverModalProps
166
+ }), /*#__PURE__*/_jsx(GameSettingsModal, {
167
+ ...gameSettingsModalProps
168
+ })]
169
+ })
170
+ })
171
+ })
172
+ });
173
+ });
174
+ Snake.displayName = 'Snake';
175
+ const styles = StyleSheet.create({
176
+ container: {
177
+ flex: 1
178
+ },
179
+ gridContainer: {
180
+ flex: 1,
181
+ justifyContent: 'center',
182
+ alignItems: 'center'
183
+ },
184
+ scoreboardContainer: {
185
+ position: 'absolute',
186
+ top: 0,
187
+ left: 0,
188
+ right: 0,
189
+ zIndex: 10
190
+ }
191
+ });
192
+ //# sourceMappingURL=Snake.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","StyleSheet","GestureHandlerRootView","Gesture","GestureDetector","runOnJS","GameControlButton","GameOverModal","GameSettingsModal","GAME_IDS","DEFAULT_GAME_SETTINGS","GameBackground","GameGrid","ScoreBoard","useSnakeStore","useScore","useIsPlaying","useIsGameOver","SNAKE_COLORS","jsx","_jsx","jsxs","_jsxs","Snake","memo","settings","onSettingsChange","score","isPlaying","isGameOver","startGame","state","stopGame","resetGame","initializeGame","updateSettings","changeDirection","prevSettingsRef","useRef","enableSounds","enableHaptics","prevDifficultyRef","useEffect","current","difficulty","handleStartGame","useCallback","handleResetGame","handleStopGame","handleSwipe","direction","requestAnimationFrame","error","console","panGesture","useMemo","Pan","onEnd","event","threshold","absX","Math","abs","translationX","absY","translationY","gameControlButtonProps","gameOver","onStartGame","onStopGame","onResetGame","startButtonText","startButtonSubtext","startButtonColor","BUTTON_PRIMARY","startButtonBorderColor","BUTTON_SECONDARY","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","MODAL_PRIMARY","borderColor","MODAL_BORDER","buttonColor","MODAL_BUTTON","buttonBorderColor","MODAL_BUTTON_BORDER","scoreFormatter","s","additionalInfo","gameSettingsModalProps","gameId","SNAKE","children","style","styles","container","gesture","gridContainer","scoreboardContainer","displayName","create","flex","justifyContent","alignItems","position","top","left","right","zIndex"],"sourceRoot":"../../../../src","sources":["games/snake/Snake.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAC/C,SAASC,sBAAsB,EAAEC,OAAO,EAAEC,eAAe,QAAQ,8BAA8B;AAC/F,SAASC,OAAO,QAAQ,yBAAyB;AACjD,SAASC,iBAAiB,EAAEC,aAAa,EAAEC,iBAAiB,QAAQ,+BAAsB;AAC1F,SAASC,QAAQ,EAAkBC,qBAAqB,QAAQ,gCAA6B;AAC7F,SAASC,cAAc,EAAEC,QAAQ,EAAEC,UAAU,QAAQ,uBAAc;AACnE,SACEC,aAAa,EACbC,QAAQ,EACRC,YAAY,EACZC,aAAa,QACR,iBAAc;AACrB,SAASC,YAAY,QAAwB,qBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGhE,OAAO,MAAMC,KAA0B,gBAAGxB,KAAK,CAACyB,IAAI,CAAC,CAAC;EAAEC,QAAQ;EAAEC;AAAiB,CAAC,KAAK;EACvF;EACA,MAAMC,KAAK,GAAGZ,QAAQ,CAAC,CAAC;EACxB,MAAMa,SAAS,GAAGZ,YAAY,CAAC,CAAC;EAChC,MAAMa,UAAU,GAAGZ,aAAa,CAAC,CAAC;;EAElC;EACA,MAAMa,SAAS,GAAGhB,aAAa,CAACiB,KAAK,IAAIA,KAAK,CAACD,SAAS,CAAC;EACzD,MAAME,QAAQ,GAAGlB,aAAa,CAACiB,KAAK,IAAIA,KAAK,CAACC,QAAQ,CAAC;EACvD,MAAMC,SAAS,GAAGnB,aAAa,CAACiB,KAAK,IAAIA,KAAK,CAACE,SAAS,CAAC;EACzD,MAAMC,cAAc,GAAGpB,aAAa,CAACiB,KAAK,IAAIA,KAAK,CAACG,cAAc,CAAC;EACnE,MAAMC,cAAc,GAAGrB,aAAa,CAACiB,KAAK,IAAIA,KAAK,CAACI,cAAc,CAAC;EACnE,MAAMC,eAAe,GAAGtB,aAAa,CAACiB,KAAK,IAAIA,KAAK,CAACK,eAAe,CAAC;;EAErE;EACA,MAAMC,eAAe,GAAGtC,KAAK,CAACuC,MAAM,CAAC;IAAEC,YAAY,EAAE,IAAI;IAAEC,aAAa,EAAE;EAAK,CAAC,CAAC;EACjF,MAAMC,iBAAiB,GAAG1C,KAAK,CAACuC,MAAM,CAAS,MAAM,CAAC;;EAEtD;EACAvC,KAAK,CAAC2C,SAAS,CAAC,MAAM;IACpB,MAAMH,YAAY,GAAGd,QAAQ,EAAEc,YAAY,IAAI,IAAI;IACnD,MAAMC,aAAa,GAAGf,QAAQ,EAAEe,aAAa,IAAI,IAAI;;IAErD;IACA,IAAIH,eAAe,CAACM,OAAO,CAACJ,YAAY,KAAKA,YAAY,IACrDF,eAAe,CAACM,OAAO,CAACH,aAAa,KAAKA,aAAa,EAAE;MAC3DH,eAAe,CAACM,OAAO,GAAG;QAAEJ,YAAY;QAAEC;MAAc,CAAC;MACzDL,cAAc,CAACI,YAAY,EAAEC,aAAa,CAAC;IAC7C;EACF,CAAC,EAAE,CAACL,cAAc,EAAEV,QAAQ,EAAEc,YAAY,EAAEd,QAAQ,EAAEe,aAAa,CAAC,CAAC;;EAErE;EACAzC,KAAK,CAAC2C,SAAS,CAAC,MAAM;IACpB,MAAME,UAAU,GAAGnB,QAAQ,EAAEmB,UAAU,IAAI,MAAM;;IAEjD;IACA,IAAIH,iBAAiB,CAACE,OAAO,KAAKC,UAAU,EAAE;MAC5CH,iBAAiB,CAACE,OAAO,GAAGC,UAAU;MACtCV,cAAc,CAACU,UAAU,CAAC;IAC5B;EACF,CAAC,EAAE,CAACV,cAAc,EAAET,QAAQ,EAAEmB,UAAU,CAAC,CAAC;;EAE1C;EACA,MAAMC,eAAe,GAAG9C,KAAK,CAAC+C,WAAW,CAAC,MAAM;IAC9ChB,SAAS,CAAC,CAAC;EACb,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EAEf,MAAMiB,eAAe,GAAGhD,KAAK,CAAC+C,WAAW,CAAC,MAAM;IAC9Cb,SAAS,CAAC,CAAC;EACb,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EAEf,MAAMe,cAAc,GAAGjD,KAAK,CAAC+C,WAAW,CAAC,MAAM;IAC7Cd,QAAQ,CAAC,CAAC;EACZ,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;;EAEd;EACA,MAAMiB,WAAW,GAAGlD,KAAK,CAAC+C,WAAW,CAAEI,SAAoB,IAAK;IAC9D,IAAI;MACF,IAAI,CAACtB,SAAS,EAAE;;MAEhB;MACAuB,qBAAqB,CAAC,MAAM;QAC1B,IAAI;UACFf,eAAe,CAACc,SAAS,CAAC;QAC5B,CAAC,CAAC,OAAOE,KAAK,EAAE;UACdC,OAAO,CAACD,KAAK,CAAC,yBAAyB,EAAEA,KAAK,CAAC;QACjD;MACF,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOA,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,sBAAsB,EAAEA,KAAK,CAAC;IAC9C;EACF,CAAC,EAAE,CAACxB,SAAS,EAAEQ,eAAe,CAAC,CAAC;;EAEhC;EACA,MAAMkB,UAAU,GAAGvD,KAAK,CAACwD,OAAO,CAAC,MAC/BpD,OAAO,CAACqD,GAAG,CAAC,CAAC,CACVC,KAAK,CAAEC,KAAK,IAAK;IAChB,MAAMC,SAAS,GAAG,EAAE,CAAC,CAAC;IACtB,MAAMC,IAAI,GAAGC,IAAI,CAACC,GAAG,CAACJ,KAAK,CAACK,YAAY,CAAC;IACzC,MAAMC,IAAI,GAAGH,IAAI,CAACC,GAAG,CAACJ,KAAK,CAACO,YAAY,CAAC;IAEzC,IAAIL,IAAI,GAAGD,SAAS,IAAIK,IAAI,GAAGL,SAAS,EAAE;MACxC,IAAIC,IAAI,GAAGI,IAAI,EAAE;QACf;QACA,IAAIN,KAAK,CAACK,YAAY,GAAG,CAAC,EAAE;UAC1B1D,OAAO,CAAC4C,WAAW,CAAC,CAAC,OAAO,CAAC;QAC/B,CAAC,MAAM;UACL5C,OAAO,CAAC4C,WAAW,CAAC,CAAC,MAAM,CAAC;QAC9B;MACF,CAAC,MAAM;QACL;QACA,IAAIS,KAAK,CAACO,YAAY,GAAG,CAAC,EAAE;UAC1B5D,OAAO,CAAC4C,WAAW,CAAC,CAAC,MAAM,CAAC;QAC9B,CAAC,MAAM;UACL5C,OAAO,CAAC4C,WAAW,CAAC,CAAC,IAAI,CAAC;QAC5B;MACF;IACF;EACF,CAAC,CAAC,EACJ,CAACA,WAAW,CACd,CAAC;;EAED;EACA,MAAMiB,sBAAsB,GAAGnE,KAAK,CAACwD,OAAO,CAAC,OAAO;IAClD3B,SAAS;IACTuC,QAAQ,EAAEtC,UAAU;IACpBuC,WAAW,EAAEvB,eAAe;IAC5BwB,UAAU,EAAErB,cAAc;IAC1BsB,WAAW,EAAEvB,eAAe;IAC5BwB,eAAe,EAAE,mBAAmB;IACpCC,kBAAkB,EAAE,eAAe;IACnCC,gBAAgB,EAAEvD,YAAY,CAACwD,cAAc;IAC7CC,sBAAsB,EAAEzD,YAAY,CAAC0D;EACvC,CAAC,CAAC,EAAE,CAAChD,SAAS,EAAEC,UAAU,EAAEgB,eAAe,EAAEG,cAAc,EAAED,eAAe,CAAC,CAAC;;EAE9E;EACA,MAAM8B,kBAAkB,GAAG9E,KAAK,CAACwD,OAAO,CAAC,OAAO;IAC9CuB,SAAS,EAAEjD,UAAU;IACrBF,KAAK;IACLoD,WAAW,EAAEhC,eAAe;IAC5BiC,UAAU,EAAE,aAAa;IACzBC,YAAY,EAAE/D,YAAY,CAACgE,aAAa;IACxCC,WAAW,EAAEjE,YAAY,CAACkE,YAAY;IACtCC,WAAW,EAAEnE,YAAY,CAACoE,YAAY;IACtCC,iBAAiB,EAAErE,YAAY,CAACsE,mBAAmB;IACnDC,cAAc,EAAGC,CAAS,IAAK,GAAGA,CAAC,EAAE;IACrCC,cAAc,EAAE;EAClB,CAAC,CAAC,EAAE,CAAC9D,UAAU,EAAEF,KAAK,EAAEoB,eAAe,CAAC,CAAC;;EAEzC;EACA,MAAM6C,sBAAsB,GAAG7F,KAAK,CAACwD,OAAO,CAAC,OAAO;IAClDsC,MAAM,EAAEpF,QAAQ,CAACqF,KAAK;IACtBrE,QAAQ,EAAEA,QAAQ,IAAIf,qBAAqB;IAC3CgB;EACF,CAAC,CAAC,EAAE,CAACD,QAAQ,EAAEC,gBAAgB,CAAC,CAAC;EAEjC,oBACEN,IAAA,CAACT,cAAc;IAAAoF,QAAA,eACb3E,IAAA,CAAClB,sBAAsB;MAAC8F,KAAK,EAAEC,MAAM,CAACC,SAAU;MAAAH,QAAA,eAC9C3E,IAAA,CAAChB,eAAe;QAAC+F,OAAO,EAAE7C,UAAW;QAAAyC,QAAA,eACnCzE,KAAA,CAACtB,IAAI;UAACgG,KAAK,EAAEC,MAAM,CAACC,SAAU;UAAAH,QAAA,gBAE5B3E,IAAA,CAACpB,IAAI;YAACgG,KAAK,EAAEC,MAAM,CAACG,aAAc;YAAAL,QAAA,eAChC3E,IAAA,CAACR,QAAQ,IAAE;UAAC,CACR,CAAC,eAGPQ,IAAA,CAACpB,IAAI;YAACgG,KAAK,EAAEC,MAAM,CAACI,mBAAoB;YAAAN,QAAA,eACtC3E,IAAA,CAACP,UAAU,IAAE;UAAC,CACV,CAAC,eAGPO,IAAA,CAACd,iBAAiB;YAAA,GAAK4D;UAAsB,CAAG,CAAC,eAGjD9C,IAAA,CAACb,aAAa;YAAA,GAAKsE;UAAkB,CAAG,CAAC,eAGzCzD,IAAA,CAACZ,iBAAiB;YAAA,GAAKoF;UAAsB,CAAG,CAAC;QAAA,CAC7C;MAAC,CACQ;IAAC,CAGI;EAAC,CACX,CAAC;AAErB,CAAC,CAAC;AAEFrE,KAAK,CAAC+E,WAAW,GAAG,OAAO;AAE3B,MAAML,MAAM,GAAGhG,UAAU,CAACsG,MAAM,CAAC;EAC/BL,SAAS,EAAE;IACTM,IAAI,EAAE;EACR,CAAC;EACDJ,aAAa,EAAE;IACbI,IAAI,EAAE,CAAC;IACPC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACDL,mBAAmB,EAAE;IACnBM,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE;EACV;AACF,CAAC,CAAC","ignoreList":[]}