@magmamath/students-features 1.3.26-rc.3 → 1.3.26-rc.4

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 (336) hide show
  1. package/dist/commonjs/features/fluency/components/Fluency.js +15 -32
  2. package/dist/commonjs/features/fluency/components/Fluency.js.map +1 -1
  3. package/dist/commonjs/features/fluency/components/FluencySolving.js +29 -9
  4. package/dist/commonjs/features/fluency/components/FluencySolving.js.map +1 -1
  5. package/dist/commonjs/features/fluency/components/day-streak-counter/DayStreak.js +17 -18
  6. package/dist/commonjs/features/fluency/components/day-streak-counter/DayStreak.js.map +1 -1
  7. package/dist/commonjs/features/fluency/components/day-streak-counter/DayStreakCounter.js +26 -24
  8. package/dist/commonjs/features/fluency/components/day-streak-counter/DayStreakCounter.js.map +1 -1
  9. package/dist/commonjs/features/fluency/components/fluency-solving/{EquationContent.js → components/EquationContent.js} +5 -5
  10. package/dist/commonjs/features/fluency/components/fluency-solving/components/EquationContent.js.map +1 -0
  11. package/dist/commonjs/features/fluency/components/fluency-solving/{FluencyEquationCard.js → components/FluencyEquationCard.js} +16 -8
  12. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencyEquationCard.js.map +1 -0
  13. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencyNumpad.js +62 -0
  14. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencyNumpad.js.map +1 -0
  15. package/dist/commonjs/features/fluency/components/fluency-solving/{FluencySolvingCard.js → components/FluencySolvingCard.js} +40 -22
  16. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingCard.js.map +1 -0
  17. package/dist/commonjs/features/fluency/components/fluency-solving/{FluencySolvingHeader.js → components/FluencySolvingHeader.js} +6 -8
  18. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingHeader.js.map +1 -0
  19. package/dist/commonjs/features/fluency/components/fluency-solving/{FluencySolvingProgress.js → components/FluencySolvingProgress.js} +32 -4
  20. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingProgress.js.map +1 -0
  21. package/dist/commonjs/features/fluency/components/fluency-solving/fluencySolving.constants.js +29 -0
  22. package/dist/commonjs/features/fluency/components/fluency-solving/fluencySolving.constants.js.map +1 -0
  23. package/dist/commonjs/features/fluency/components/fluency-solving/fluencySolving.helpers.js +58 -0
  24. package/dist/commonjs/features/fluency/components/fluency-solving/fluencySolving.helpers.js.map +1 -0
  25. package/dist/commonjs/features/fluency/components/fluency-solving/fluencySolving.types.js +2 -0
  26. package/dist/commonjs/features/fluency/components/fluency-solving/fluencySolving.types.js.map +1 -0
  27. package/dist/commonjs/features/fluency/components/matrix/FluencyMatrix.js +2 -2
  28. package/dist/commonjs/features/fluency/components/matrix/FluencyMatrix.js.map +1 -1
  29. package/dist/commonjs/features/fluency/components/matrix/components/MatrixCell.js +41 -12
  30. package/dist/commonjs/features/fluency/components/matrix/components/MatrixCell.js.map +1 -1
  31. package/dist/commonjs/features/fluency/components/matrix/components/MatrixFill.js +16 -26
  32. package/dist/commonjs/features/fluency/components/matrix/components/MatrixFill.js.map +1 -1
  33. package/dist/commonjs/features/fluency/components/matrix/components/MatrixLegend.js +4 -8
  34. package/dist/commonjs/features/fluency/components/matrix/components/MatrixLegend.js.map +1 -1
  35. package/dist/commonjs/features/fluency/components/mobile-menu/MobileMenu.js +38 -0
  36. package/dist/commonjs/features/fluency/components/mobile-menu/MobileMenu.js.map +1 -0
  37. package/dist/commonjs/features/fluency/components/select-math-operator/SelectMathOperator.js +6 -3
  38. package/dist/commonjs/features/fluency/components/select-math-operator/SelectMathOperator.js.map +1 -1
  39. package/dist/commonjs/features/fluency/components/session-results/FluencySessionResults.js +178 -0
  40. package/dist/commonjs/features/fluency/components/session-results/FluencySessionResults.js.map +1 -0
  41. package/dist/commonjs/features/fluency/components/session-results/SessionStatCard.js +99 -0
  42. package/dist/commonjs/features/fluency/components/session-results/SessionStatCard.js.map +1 -0
  43. package/dist/commonjs/features/fluency/components/session-results/SkillProgressionRow.js +113 -0
  44. package/dist/commonjs/features/fluency/components/session-results/SkillProgressionRow.js.map +1 -0
  45. package/dist/commonjs/features/fluency/fluency.constants.js +14 -6
  46. package/dist/commonjs/features/fluency/fluency.constants.js.map +1 -1
  47. package/dist/commonjs/features/fluency/fluency.helpers.js +53 -25
  48. package/dist/commonjs/features/fluency/fluency.helpers.js.map +1 -1
  49. package/dist/commonjs/features/fluency/hooks/useFluencyModePreset.js +16 -7
  50. package/dist/commonjs/features/fluency/hooks/useFluencyModePreset.js.map +1 -1
  51. package/dist/commonjs/features/fluency/{components/fluency-solving/FluencyNumpad.js → hooks/useFluencyNumpad.js} +58 -82
  52. package/dist/commonjs/features/fluency/hooks/useFluencyNumpad.js.map +1 -0
  53. package/dist/commonjs/features/fluency/hooks/useSuccessSound.js +0 -2
  54. package/dist/commonjs/features/fluency/hooks/useSuccessSound.js.map +1 -1
  55. package/dist/commonjs/features/fluency/model/FluencyApiModel.js +6 -1
  56. package/dist/commonjs/features/fluency/model/FluencyApiModel.js.map +1 -1
  57. package/dist/commonjs/features/fluency/model/FluencyDaysStreakModel.js +8 -1
  58. package/dist/commonjs/features/fluency/model/FluencyDaysStreakModel.js.map +1 -1
  59. package/dist/commonjs/features/fluency/model/FluencyMatrixModel.js +16 -1
  60. package/dist/commonjs/features/fluency/model/FluencyMatrixModel.js.map +1 -1
  61. package/dist/commonjs/features/fluency/model/FluencyModel.js +12 -28
  62. package/dist/commonjs/features/fluency/model/FluencyModel.js.map +1 -1
  63. package/dist/commonjs/features/fluency/model/FluencySolvingModel.js +57 -5
  64. package/dist/commonjs/features/fluency/model/FluencySolvingModel.js.map +1 -1
  65. package/dist/commonjs/lib/constants.js +1 -0
  66. package/dist/commonjs/lib/constants.js.map +1 -1
  67. package/dist/module/features/fluency/components/Fluency.js +17 -34
  68. package/dist/module/features/fluency/components/Fluency.js.map +1 -1
  69. package/dist/module/features/fluency/components/FluencySolving.js +29 -9
  70. package/dist/module/features/fluency/components/FluencySolving.js.map +1 -1
  71. package/dist/module/features/fluency/components/day-streak-counter/DayStreak.js +17 -18
  72. package/dist/module/features/fluency/components/day-streak-counter/DayStreak.js.map +1 -1
  73. package/dist/module/features/fluency/components/day-streak-counter/DayStreakCounter.js +26 -24
  74. package/dist/module/features/fluency/components/day-streak-counter/DayStreakCounter.js.map +1 -1
  75. package/dist/module/features/fluency/components/fluency-solving/{EquationContent.js → components/EquationContent.js} +5 -5
  76. package/dist/module/features/fluency/components/fluency-solving/components/EquationContent.js.map +1 -0
  77. package/dist/module/features/fluency/components/fluency-solving/{FluencyEquationCard.js → components/FluencyEquationCard.js} +16 -8
  78. package/dist/module/features/fluency/components/fluency-solving/components/FluencyEquationCard.js.map +1 -0
  79. package/dist/module/features/fluency/components/fluency-solving/components/FluencyNumpad.js +56 -0
  80. package/dist/module/features/fluency/components/fluency-solving/components/FluencyNumpad.js.map +1 -0
  81. package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingCard.js +84 -0
  82. package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingCard.js.map +1 -0
  83. package/dist/module/features/fluency/components/fluency-solving/{FluencySolvingHeader.js → components/FluencySolvingHeader.js} +6 -8
  84. package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingHeader.js.map +1 -0
  85. package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingProgress.js +69 -0
  86. package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingProgress.js.map +1 -0
  87. package/dist/module/features/fluency/components/fluency-solving/fluencySolving.constants.js +25 -0
  88. package/dist/module/features/fluency/components/fluency-solving/fluencySolving.constants.js.map +1 -0
  89. package/dist/module/features/fluency/components/fluency-solving/fluencySolving.helpers.js +52 -0
  90. package/dist/module/features/fluency/components/fluency-solving/fluencySolving.helpers.js.map +1 -0
  91. package/dist/module/features/fluency/components/fluency-solving/fluencySolving.types.js +2 -0
  92. package/dist/module/features/fluency/components/fluency-solving/fluencySolving.types.js.map +1 -0
  93. package/dist/module/features/fluency/components/matrix/FluencyMatrix.js +2 -2
  94. package/dist/module/features/fluency/components/matrix/FluencyMatrix.js.map +1 -1
  95. package/dist/module/features/fluency/components/matrix/components/MatrixCell.js +44 -15
  96. package/dist/module/features/fluency/components/matrix/components/MatrixCell.js.map +1 -1
  97. package/dist/module/features/fluency/components/matrix/components/MatrixFill.js +16 -26
  98. package/dist/module/features/fluency/components/matrix/components/MatrixFill.js.map +1 -1
  99. package/dist/module/features/fluency/components/matrix/components/MatrixLegend.js +4 -8
  100. package/dist/module/features/fluency/components/matrix/components/MatrixLegend.js.map +1 -1
  101. package/dist/module/features/fluency/components/mobile-menu/MobileMenu.js +32 -0
  102. package/dist/module/features/fluency/components/mobile-menu/MobileMenu.js.map +1 -0
  103. package/dist/module/features/fluency/components/select-math-operator/SelectMathOperator.js +6 -3
  104. package/dist/module/features/fluency/components/select-math-operator/SelectMathOperator.js.map +1 -1
  105. package/dist/module/features/fluency/components/session-results/FluencySessionResults.js +172 -0
  106. package/dist/module/features/fluency/components/session-results/FluencySessionResults.js.map +1 -0
  107. package/dist/module/features/fluency/components/session-results/SessionStatCard.js +93 -0
  108. package/dist/module/features/fluency/components/session-results/SessionStatCard.js.map +1 -0
  109. package/dist/module/features/fluency/components/session-results/SkillProgressionRow.js +107 -0
  110. package/dist/module/features/fluency/components/session-results/SkillProgressionRow.js.map +1 -0
  111. package/dist/module/features/fluency/fluency.constants.js +13 -5
  112. package/dist/module/features/fluency/fluency.constants.js.map +1 -1
  113. package/dist/module/features/fluency/fluency.helpers.js +51 -21
  114. package/dist/module/features/fluency/fluency.helpers.js.map +1 -1
  115. package/dist/module/features/fluency/hooks/useFluencyModePreset.js +16 -7
  116. package/dist/module/features/fluency/hooks/useFluencyModePreset.js.map +1 -1
  117. package/dist/module/features/fluency/{components/fluency-solving/FluencyNumpad.js → hooks/useFluencyNumpad.js} +58 -82
  118. package/dist/module/features/fluency/hooks/useFluencyNumpad.js.map +1 -0
  119. package/dist/module/features/fluency/hooks/useSuccessSound.js +0 -1
  120. package/dist/module/features/fluency/hooks/useSuccessSound.js.map +1 -1
  121. package/dist/module/features/fluency/model/FluencyApiModel.js +6 -1
  122. package/dist/module/features/fluency/model/FluencyApiModel.js.map +1 -1
  123. package/dist/module/features/fluency/model/FluencyDaysStreakModel.js +8 -1
  124. package/dist/module/features/fluency/model/FluencyDaysStreakModel.js.map +1 -1
  125. package/dist/module/features/fluency/model/FluencyMatrixModel.js +16 -1
  126. package/dist/module/features/fluency/model/FluencyMatrixModel.js.map +1 -1
  127. package/dist/module/features/fluency/model/FluencyModel.js +13 -29
  128. package/dist/module/features/fluency/model/FluencyModel.js.map +1 -1
  129. package/dist/module/features/fluency/model/FluencySolvingModel.js +58 -6
  130. package/dist/module/features/fluency/model/FluencySolvingModel.js.map +1 -1
  131. package/dist/module/lib/constants.js +1 -0
  132. package/dist/module/lib/constants.js.map +1 -1
  133. package/dist/typescript/commonjs/features/fluency/components/Fluency.d.ts +2 -1
  134. package/dist/typescript/commonjs/features/fluency/components/Fluency.d.ts.map +1 -1
  135. package/dist/typescript/commonjs/features/fluency/components/FluencySolving.d.ts +2 -1
  136. package/dist/typescript/commonjs/features/fluency/components/FluencySolving.d.ts.map +1 -1
  137. package/dist/typescript/commonjs/features/fluency/components/day-streak-counter/DayStreak.d.ts +5 -3
  138. package/dist/typescript/commonjs/features/fluency/components/day-streak-counter/DayStreak.d.ts.map +1 -1
  139. package/dist/typescript/commonjs/features/fluency/components/day-streak-counter/DayStreakCounter.d.ts.map +1 -1
  140. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/EquationContent.d.ts.map +1 -0
  141. package/dist/typescript/{module/features/fluency/components/fluency-solving → commonjs/features/fluency/components/fluency-solving/components}/FluencyEquationCard.d.ts +1 -1
  142. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencyEquationCard.d.ts.map +1 -0
  143. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencyNumpad.d.ts.map +1 -0
  144. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingCard.d.ts.map +1 -0
  145. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingHeader.d.ts.map +1 -0
  146. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingProgress.d.ts +10 -0
  147. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingProgress.d.ts.map +1 -0
  148. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.constants.d.ts +5 -0
  149. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.constants.d.ts.map +1 -0
  150. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.helpers.d.ts +15 -0
  151. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.helpers.d.ts.map +1 -0
  152. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.types.d.ts +20 -0
  153. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.types.d.ts.map +1 -0
  154. package/dist/typescript/commonjs/features/fluency/components/matrix/FluencyMatrix.d.ts.map +1 -1
  155. package/dist/typescript/commonjs/features/fluency/components/matrix/components/MatrixCell.d.ts +5 -7
  156. package/dist/typescript/commonjs/features/fluency/components/matrix/components/MatrixCell.d.ts.map +1 -1
  157. package/dist/typescript/commonjs/features/fluency/components/matrix/components/MatrixFill.d.ts +1 -1
  158. package/dist/typescript/commonjs/features/fluency/components/matrix/components/MatrixFill.d.ts.map +1 -1
  159. package/dist/typescript/commonjs/features/fluency/components/mobile-menu/MobileMenu.d.ts +7 -0
  160. package/dist/typescript/commonjs/features/fluency/components/mobile-menu/MobileMenu.d.ts.map +1 -0
  161. package/dist/typescript/commonjs/features/fluency/components/select-math-operator/SelectMathOperator.d.ts.map +1 -1
  162. package/dist/typescript/commonjs/features/fluency/components/session-results/FluencySessionResults.d.ts +11 -0
  163. package/dist/typescript/commonjs/features/fluency/components/session-results/FluencySessionResults.d.ts.map +1 -0
  164. package/dist/typescript/commonjs/features/fluency/components/session-results/SessionStatCard.d.ts +9 -0
  165. package/dist/typescript/commonjs/features/fluency/components/session-results/SessionStatCard.d.ts.map +1 -0
  166. package/dist/typescript/commonjs/features/fluency/components/session-results/SkillProgressionRow.d.ts +15 -0
  167. package/dist/typescript/commonjs/features/fluency/components/session-results/SkillProgressionRow.d.ts.map +1 -0
  168. package/dist/typescript/commonjs/features/fluency/fluency.constants.d.ts +12 -5
  169. package/dist/typescript/commonjs/features/fluency/fluency.constants.d.ts.map +1 -1
  170. package/dist/typescript/commonjs/features/fluency/fluency.helpers.d.ts +3 -5
  171. package/dist/typescript/commonjs/features/fluency/fluency.helpers.d.ts.map +1 -1
  172. package/dist/typescript/commonjs/features/fluency/fluency.types.d.ts +58 -8
  173. package/dist/typescript/commonjs/features/fluency/fluency.types.d.ts.map +1 -1
  174. package/dist/typescript/commonjs/features/fluency/hooks/useFluencyModePreset.d.ts +22 -3
  175. package/dist/typescript/commonjs/features/fluency/hooks/useFluencyModePreset.d.ts.map +1 -1
  176. package/dist/typescript/commonjs/features/fluency/hooks/useFluencyNumpad.d.ts +53 -0
  177. package/dist/typescript/commonjs/features/fluency/hooks/useFluencyNumpad.d.ts.map +1 -0
  178. package/dist/typescript/commonjs/features/fluency/hooks/useSuccessSound.d.ts.map +1 -1
  179. package/dist/typescript/commonjs/features/fluency/model/FluencyApiModel.d.ts +6 -3
  180. package/dist/typescript/commonjs/features/fluency/model/FluencyApiModel.d.ts.map +1 -1
  181. package/dist/typescript/commonjs/features/fluency/model/FluencyDaysStreakModel.d.ts +5 -0
  182. package/dist/typescript/commonjs/features/fluency/model/FluencyDaysStreakModel.d.ts.map +1 -1
  183. package/dist/typescript/commonjs/features/fluency/model/FluencyMatrixModel.d.ts +9 -0
  184. package/dist/typescript/commonjs/features/fluency/model/FluencyMatrixModel.d.ts.map +1 -1
  185. package/dist/typescript/commonjs/features/fluency/model/FluencyModel.d.ts +3 -15
  186. package/dist/typescript/commonjs/features/fluency/model/FluencyModel.d.ts.map +1 -1
  187. package/dist/typescript/commonjs/features/fluency/model/FluencySolvingModel.d.ts +20 -7
  188. package/dist/typescript/commonjs/features/fluency/model/FluencySolvingModel.d.ts.map +1 -1
  189. package/dist/typescript/commonjs/lib/constants.d.ts +2 -1
  190. package/dist/typescript/commonjs/lib/constants.d.ts.map +1 -1
  191. package/dist/typescript/module/features/fluency/components/Fluency.d.ts +2 -1
  192. package/dist/typescript/module/features/fluency/components/Fluency.d.ts.map +1 -1
  193. package/dist/typescript/module/features/fluency/components/FluencySolving.d.ts +2 -1
  194. package/dist/typescript/module/features/fluency/components/FluencySolving.d.ts.map +1 -1
  195. package/dist/typescript/module/features/fluency/components/day-streak-counter/DayStreak.d.ts +5 -3
  196. package/dist/typescript/module/features/fluency/components/day-streak-counter/DayStreak.d.ts.map +1 -1
  197. package/dist/typescript/module/features/fluency/components/day-streak-counter/DayStreakCounter.d.ts.map +1 -1
  198. package/dist/typescript/module/features/fluency/components/fluency-solving/components/EquationContent.d.ts.map +1 -0
  199. package/dist/typescript/{commonjs/features/fluency/components/fluency-solving → module/features/fluency/components/fluency-solving/components}/FluencyEquationCard.d.ts +1 -1
  200. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencyEquationCard.d.ts.map +1 -0
  201. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencyNumpad.d.ts.map +1 -0
  202. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencySolvingCard.d.ts.map +1 -0
  203. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencySolvingHeader.d.ts.map +1 -0
  204. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencySolvingProgress.d.ts +10 -0
  205. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencySolvingProgress.d.ts.map +1 -0
  206. package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.constants.d.ts +5 -0
  207. package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.constants.d.ts.map +1 -0
  208. package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.helpers.d.ts +15 -0
  209. package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.helpers.d.ts.map +1 -0
  210. package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.types.d.ts +20 -0
  211. package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.types.d.ts.map +1 -0
  212. package/dist/typescript/module/features/fluency/components/matrix/FluencyMatrix.d.ts.map +1 -1
  213. package/dist/typescript/module/features/fluency/components/matrix/components/MatrixCell.d.ts +5 -7
  214. package/dist/typescript/module/features/fluency/components/matrix/components/MatrixCell.d.ts.map +1 -1
  215. package/dist/typescript/module/features/fluency/components/matrix/components/MatrixFill.d.ts +1 -1
  216. package/dist/typescript/module/features/fluency/components/matrix/components/MatrixFill.d.ts.map +1 -1
  217. package/dist/typescript/module/features/fluency/components/mobile-menu/MobileMenu.d.ts +7 -0
  218. package/dist/typescript/module/features/fluency/components/mobile-menu/MobileMenu.d.ts.map +1 -0
  219. package/dist/typescript/module/features/fluency/components/select-math-operator/SelectMathOperator.d.ts.map +1 -1
  220. package/dist/typescript/module/features/fluency/components/session-results/FluencySessionResults.d.ts +11 -0
  221. package/dist/typescript/module/features/fluency/components/session-results/FluencySessionResults.d.ts.map +1 -0
  222. package/dist/typescript/module/features/fluency/components/session-results/SessionStatCard.d.ts +9 -0
  223. package/dist/typescript/module/features/fluency/components/session-results/SessionStatCard.d.ts.map +1 -0
  224. package/dist/typescript/module/features/fluency/components/session-results/SkillProgressionRow.d.ts +15 -0
  225. package/dist/typescript/module/features/fluency/components/session-results/SkillProgressionRow.d.ts.map +1 -0
  226. package/dist/typescript/module/features/fluency/fluency.constants.d.ts +12 -5
  227. package/dist/typescript/module/features/fluency/fluency.constants.d.ts.map +1 -1
  228. package/dist/typescript/module/features/fluency/fluency.helpers.d.ts +3 -5
  229. package/dist/typescript/module/features/fluency/fluency.helpers.d.ts.map +1 -1
  230. package/dist/typescript/module/features/fluency/fluency.types.d.ts +58 -8
  231. package/dist/typescript/module/features/fluency/fluency.types.d.ts.map +1 -1
  232. package/dist/typescript/module/features/fluency/hooks/useFluencyModePreset.d.ts +22 -3
  233. package/dist/typescript/module/features/fluency/hooks/useFluencyModePreset.d.ts.map +1 -1
  234. package/dist/typescript/module/features/fluency/hooks/useFluencyNumpad.d.ts +53 -0
  235. package/dist/typescript/module/features/fluency/hooks/useFluencyNumpad.d.ts.map +1 -0
  236. package/dist/typescript/module/features/fluency/hooks/useSuccessSound.d.ts.map +1 -1
  237. package/dist/typescript/module/features/fluency/model/FluencyApiModel.d.ts +6 -3
  238. package/dist/typescript/module/features/fluency/model/FluencyApiModel.d.ts.map +1 -1
  239. package/dist/typescript/module/features/fluency/model/FluencyDaysStreakModel.d.ts +5 -0
  240. package/dist/typescript/module/features/fluency/model/FluencyDaysStreakModel.d.ts.map +1 -1
  241. package/dist/typescript/module/features/fluency/model/FluencyMatrixModel.d.ts +9 -0
  242. package/dist/typescript/module/features/fluency/model/FluencyMatrixModel.d.ts.map +1 -1
  243. package/dist/typescript/module/features/fluency/model/FluencyModel.d.ts +3 -15
  244. package/dist/typescript/module/features/fluency/model/FluencyModel.d.ts.map +1 -1
  245. package/dist/typescript/module/features/fluency/model/FluencySolvingModel.d.ts +20 -7
  246. package/dist/typescript/module/features/fluency/model/FluencySolvingModel.d.ts.map +1 -1
  247. package/dist/typescript/module/lib/constants.d.ts +2 -1
  248. package/dist/typescript/module/lib/constants.d.ts.map +1 -1
  249. package/package.json +1 -1
  250. package/src/features/fluency/components/Fluency.tsx +17 -41
  251. package/src/features/fluency/components/FluencySolving.tsx +30 -5
  252. package/src/features/fluency/components/day-streak-counter/DayStreak.tsx +24 -20
  253. package/src/features/fluency/components/day-streak-counter/DayStreakCounter.tsx +41 -28
  254. package/src/features/fluency/components/fluency-solving/{EquationContent.tsx → components/EquationContent.tsx} +5 -5
  255. package/src/features/fluency/components/fluency-solving/{FluencyEquationCard.tsx → components/FluencyEquationCard.tsx} +12 -6
  256. package/src/features/fluency/components/fluency-solving/components/FluencyNumpad.tsx +54 -0
  257. package/src/features/fluency/components/fluency-solving/components/FluencySolvingCard.tsx +84 -0
  258. package/src/features/fluency/components/fluency-solving/{FluencySolvingHeader.tsx → components/FluencySolvingHeader.tsx} +6 -8
  259. package/src/features/fluency/components/fluency-solving/components/FluencySolvingProgress.tsx +68 -0
  260. package/src/features/fluency/components/fluency-solving/fluencySolving.constants.ts +25 -0
  261. package/src/features/fluency/components/fluency-solving/fluencySolving.helpers.ts +78 -0
  262. package/src/features/fluency/components/fluency-solving/fluencySolving.types.ts +21 -0
  263. package/src/features/fluency/components/matrix/FluencyMatrix.tsx +3 -2
  264. package/src/features/fluency/components/matrix/components/MatrixCell.tsx +46 -23
  265. package/src/features/fluency/components/matrix/components/MatrixFill.tsx +14 -24
  266. package/src/features/fluency/components/matrix/components/MatrixLegend.tsx +4 -4
  267. package/src/features/fluency/components/mobile-menu/MobileMenu.tsx +29 -0
  268. package/src/features/fluency/components/select-math-operator/SelectMathOperator.tsx +7 -3
  269. package/src/features/fluency/components/session-results/FluencySessionResults.tsx +204 -0
  270. package/src/features/fluency/components/session-results/SessionStatCard.tsx +100 -0
  271. package/src/features/fluency/components/session-results/SkillProgressionRow.tsx +100 -0
  272. package/src/features/fluency/fluency.constants.ts +13 -5
  273. package/src/features/fluency/fluency.helpers.ts +46 -27
  274. package/src/features/fluency/fluency.types.ts +70 -8
  275. package/src/features/fluency/hooks/useFluencyModePreset.ts +30 -20
  276. package/src/features/fluency/{components/fluency-solving/FluencyNumpad.tsx → hooks/useFluencyNumpad.tsx} +68 -94
  277. package/src/features/fluency/hooks/useSuccessSound.ts +0 -1
  278. package/src/features/fluency/model/FluencyApiModel.ts +18 -2
  279. package/src/features/fluency/model/FluencyDaysStreakModel.ts +11 -1
  280. package/src/features/fluency/model/FluencyMatrixModel.ts +20 -1
  281. package/src/features/fluency/model/FluencyModel.ts +15 -30
  282. package/src/features/fluency/model/FluencySolvingModel.ts +70 -8
  283. package/src/lib/constants.ts +3 -2
  284. package/src/types/types.d.ts +5 -0
  285. package/dist/commonjs/features/fluency/components/fluency-solving/EquationContent.js.map +0 -1
  286. package/dist/commonjs/features/fluency/components/fluency-solving/FluencyEquationCard.js.map +0 -1
  287. package/dist/commonjs/features/fluency/components/fluency-solving/FluencyNumpad.js.map +0 -1
  288. package/dist/commonjs/features/fluency/components/fluency-solving/FluencySolvingCard.js.map +0 -1
  289. package/dist/commonjs/features/fluency/components/fluency-solving/FluencySolvingHeader.js.map +0 -1
  290. package/dist/commonjs/features/fluency/components/fluency-solving/FluencySolvingProgress.js.map +0 -1
  291. package/dist/commonjs/features/fluency/model/FluencyInputModel.js +0 -20
  292. package/dist/commonjs/features/fluency/model/FluencyInputModel.js.map +0 -1
  293. package/dist/module/features/fluency/components/fluency-solving/EquationContent.js.map +0 -1
  294. package/dist/module/features/fluency/components/fluency-solving/FluencyEquationCard.js.map +0 -1
  295. package/dist/module/features/fluency/components/fluency-solving/FluencyNumpad.js.map +0 -1
  296. package/dist/module/features/fluency/components/fluency-solving/FluencySolvingCard.js +0 -66
  297. package/dist/module/features/fluency/components/fluency-solving/FluencySolvingCard.js.map +0 -1
  298. package/dist/module/features/fluency/components/fluency-solving/FluencySolvingHeader.js.map +0 -1
  299. package/dist/module/features/fluency/components/fluency-solving/FluencySolvingProgress.js +0 -41
  300. package/dist/module/features/fluency/components/fluency-solving/FluencySolvingProgress.js.map +0 -1
  301. package/dist/module/features/fluency/model/FluencyInputModel.js +0 -15
  302. package/dist/module/features/fluency/model/FluencyInputModel.js.map +0 -1
  303. package/dist/typescript/commonjs/features/fluency/__tests__/FluencyModel.test.d.ts +0 -2
  304. package/dist/typescript/commonjs/features/fluency/__tests__/FluencyModel.test.d.ts.map +0 -1
  305. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/EquationContent.d.ts.map +0 -1
  306. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/FluencyEquationCard.d.ts.map +0 -1
  307. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/FluencyNumpad.d.ts.map +0 -1
  308. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/FluencySolvingCard.d.ts.map +0 -1
  309. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/FluencySolvingHeader.d.ts.map +0 -1
  310. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/FluencySolvingProgress.d.ts +0 -8
  311. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/FluencySolvingProgress.d.ts.map +0 -1
  312. package/dist/typescript/commonjs/features/fluency/model/FluencyInputModel.d.ts +0 -11
  313. package/dist/typescript/commonjs/features/fluency/model/FluencyInputModel.d.ts.map +0 -1
  314. package/dist/typescript/module/features/fluency/__tests__/FluencyModel.test.d.ts +0 -2
  315. package/dist/typescript/module/features/fluency/__tests__/FluencyModel.test.d.ts.map +0 -1
  316. package/dist/typescript/module/features/fluency/components/fluency-solving/EquationContent.d.ts.map +0 -1
  317. package/dist/typescript/module/features/fluency/components/fluency-solving/FluencyEquationCard.d.ts.map +0 -1
  318. package/dist/typescript/module/features/fluency/components/fluency-solving/FluencyNumpad.d.ts.map +0 -1
  319. package/dist/typescript/module/features/fluency/components/fluency-solving/FluencySolvingCard.d.ts.map +0 -1
  320. package/dist/typescript/module/features/fluency/components/fluency-solving/FluencySolvingHeader.d.ts.map +0 -1
  321. package/dist/typescript/module/features/fluency/components/fluency-solving/FluencySolvingProgress.d.ts +0 -8
  322. package/dist/typescript/module/features/fluency/components/fluency-solving/FluencySolvingProgress.d.ts.map +0 -1
  323. package/dist/typescript/module/features/fluency/model/FluencyInputModel.d.ts +0 -11
  324. package/dist/typescript/module/features/fluency/model/FluencyInputModel.d.ts.map +0 -1
  325. package/src/features/fluency/__tests__/FluencyModel.test.ts +0 -28
  326. package/src/features/fluency/components/fluency-solving/FluencySolvingCard.tsx +0 -59
  327. package/src/features/fluency/components/fluency-solving/FluencySolvingProgress.tsx +0 -40
  328. package/src/features/fluency/model/FluencyInputModel.ts +0 -17
  329. /package/dist/typescript/commonjs/features/fluency/components/fluency-solving/{EquationContent.d.ts → components/EquationContent.d.ts} +0 -0
  330. /package/dist/typescript/commonjs/features/fluency/components/fluency-solving/{FluencyNumpad.d.ts → components/FluencyNumpad.d.ts} +0 -0
  331. /package/dist/typescript/commonjs/features/fluency/components/fluency-solving/{FluencySolvingCard.d.ts → components/FluencySolvingCard.d.ts} +0 -0
  332. /package/dist/typescript/commonjs/features/fluency/components/fluency-solving/{FluencySolvingHeader.d.ts → components/FluencySolvingHeader.d.ts} +0 -0
  333. /package/dist/typescript/module/features/fluency/components/fluency-solving/{EquationContent.d.ts → components/EquationContent.d.ts} +0 -0
  334. /package/dist/typescript/module/features/fluency/components/fluency-solving/{FluencyNumpad.d.ts → components/FluencyNumpad.d.ts} +0 -0
  335. /package/dist/typescript/module/features/fluency/components/fluency-solving/{FluencySolvingCard.d.ts → components/FluencySolvingCard.d.ts} +0 -0
  336. /package/dist/typescript/module/features/fluency/components/fluency-solving/{FluencySolvingHeader.d.ts → components/FluencySolvingHeader.d.ts} +0 -0
@@ -3,32 +3,16 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getMasteryLevel = exports.getCellLabel = exports.getCellColorByScore = exports.getCellBackground = exports.createFluencyMode = void 0;
7
- var _reactNativeUi = require("@magmamath/react-native-ui");
6
+ exports.getMasteryLevelByBox = exports.createFluencyMode = exports.buildMatrixGrid = void 0;
8
7
  var _fluencyConstants = require("./fluency.constants.js");
9
- // TODO: Threshold values to be aligned with BE response schema.
10
- const getMasteryLevel = score => {
11
- if (score >= 80) return _fluencyConstants.FluencyMasteryLevel.MASTERED;
12
- if (score >= 60) return _fluencyConstants.FluencyMasteryLevel.STRONG;
13
- if (score >= 40) return _fluencyConstants.FluencyMasteryLevel.GROWING;
8
+ // TODO: Align box-to-mastery mapping with BE response schema.
9
+ const getMasteryLevelByBox = box => {
10
+ if (box >= 4) return _fluencyConstants.FluencyMasteryLevel.MASTERED;
11
+ if (box >= 3) return _fluencyConstants.FluencyMasteryLevel.STRONG;
12
+ if (box >= 2) return _fluencyConstants.FluencyMasteryLevel.GROWING;
14
13
  return _fluencyConstants.FluencyMasteryLevel.LEARNING;
15
14
  };
16
- exports.getMasteryLevel = getMasteryLevel;
17
- const getCellColorByScore = (score, mastery) => mastery[getMasteryLevel(score)];
18
- exports.getCellColorByScore = getCellColorByScore;
19
- const getCellBackground = (row, col) => {
20
- if (row === 0 && col === 0) return _reactNativeUi.COLORS.NEUTRAL_2;
21
- if (row === 0 || col === 0) return _reactNativeUi.COLORS.NEUTRAL_5;
22
- return _reactNativeUi.COLORS.NEUTRAL_2;
23
- };
24
- exports.getCellBackground = getCellBackground;
25
- const getCellLabel = (row, col) => {
26
- if (row === 0 && col === 0) return null;
27
- if (row === 0) return col;
28
- if (col === 0) return row;
29
- return null;
30
- };
31
- exports.getCellLabel = getCellLabel;
15
+ exports.getMasteryLevelByBox = getMasteryLevelByBox;
32
16
  const createFluencyMode = ({
33
17
  mode,
34
18
  label,
@@ -54,8 +38,8 @@ const createFluencyMode = ({
54
38
  }
55
39
  },
56
40
  matrix: {
57
- operatorName: label,
58
- mastery: {
41
+ operatorLabel: label,
42
+ levelColors: {
59
43
  learning,
60
44
  growing,
61
45
  strong,
@@ -66,4 +50,48 @@ const createFluencyMode = ({
66
50
  };
67
51
  };
68
52
  exports.createFluencyMode = createFluencyMode;
53
+ const buildMatrixGrid = (data, mode) => {
54
+ const facts = Object.values(data.operations[mode].facts);
55
+ const maxRow = Math.max(0, ...facts.map(f => f.position.row));
56
+ const maxColumn = Math.max(0, ...facts.map(f => f.position.column));
57
+ const isDivision = mode === _fluencyConstants.FluencyMode.DIVISION;
58
+ const factAt = (row, col) => facts.find(f => f.position.row === row && f.position.column === col);
59
+
60
+ // Division columns are 1-indexed in the API (÷1, ÷2...); all others are 0-indexed
61
+ const rowNumbers = Array.from({
62
+ length: maxRow + 1
63
+ }, (_, i) => i);
64
+ const columnNumbers = isDivision ? Array.from({
65
+ length: maxColumn
66
+ }, (_, i) => i + 1) : Array.from({
67
+ length: maxColumn + 1
68
+ }, (_, i) => i);
69
+ const headerRow = [{
70
+ isHeader: false,
71
+ label: null,
72
+ box: null,
73
+ divisor: null
74
+ }, ...columnNumbers.map(col => ({
75
+ isHeader: true,
76
+ label: col,
77
+ box: null,
78
+ divisor: null
79
+ }))];
80
+ const dataRows = rowNumbers.map(row => [{
81
+ isHeader: true,
82
+ label: row,
83
+ box: null,
84
+ divisor: null
85
+ }, ...columnNumbers.map(col => {
86
+ const fact = factAt(row, col);
87
+ return {
88
+ isHeader: false,
89
+ label: isDivision ? fact?.numbers[0] ?? null : null,
90
+ box: fact?.box ?? null,
91
+ divisor: isDivision ? col : null
92
+ };
93
+ })]);
94
+ return [headerRow, ...dataRows];
95
+ };
96
+ exports.buildMatrixGrid = buildMatrixGrid;
69
97
  //# sourceMappingURL=fluency.helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeUi","require","_fluencyConstants","getMasteryLevel","score","FluencyMasteryLevel","MASTERED","STRONG","GROWING","LEARNING","exports","getCellColorByScore","mastery","getCellBackground","row","col","COLORS","NEUTRAL_2","NEUTRAL_5","getCellLabel","createFluencyMode","mode","label","icon","colorFamily","palette","COLOR_FAMILY_PALETTES","learning","growing","strong","mastered","shades","select","preset","buttonColor","button","operatorIcon","accentColor","header","streakColor","gained","todayBorder","matrix","operatorName"],"sourceRoot":"../../../../src","sources":["features/fluency/fluency.helpers.ts"],"mappings":";;;;;;AACA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AASA;AACO,MAAME,eAAe,GAAIC,KAAa,IAA0B;EACrE,IAAIA,KAAK,IAAI,EAAE,EAAE,OAAOC,qCAAmB,CAACC,QAAQ;EACpD,IAAIF,KAAK,IAAI,EAAE,EAAE,OAAOC,qCAAmB,CAACE,MAAM;EAClD,IAAIH,KAAK,IAAI,EAAE,EAAE,OAAOC,qCAAmB,CAACG,OAAO;EACnD,OAAOH,qCAAmB,CAACI,QAAQ;AACrC,CAAC;AAAAC,OAAA,CAAAP,eAAA,GAAAA,eAAA;AAEM,MAAMQ,mBAAmB,GAAGA,CACjCP,KAAa,EACbQ,OAA+C,KACpCA,OAAO,CAACT,eAAe,CAACC,KAAK,CAAC,CAAC;AAAAM,OAAA,CAAAC,mBAAA,GAAAA,mBAAA;AAErC,MAAME,iBAAiB,GAAGA,CAACC,GAAW,EAAEC,GAAW,KAAa;EACrE,IAAID,GAAG,KAAK,CAAC,IAAIC,GAAG,KAAK,CAAC,EAAE,OAAOC,qBAAM,CAACC,SAAS;EACnD,IAAIH,GAAG,KAAK,CAAC,IAAIC,GAAG,KAAK,CAAC,EAAE,OAAOC,qBAAM,CAACE,SAAS;EACnD,OAAOF,qBAAM,CAACC,SAAS;AACzB,CAAC;AAAAP,OAAA,CAAAG,iBAAA,GAAAA,iBAAA;AAEM,MAAMM,YAAY,GAAGA,CAACL,GAAW,EAAEC,GAAW,KAAoB;EACvE,IAAID,GAAG,KAAK,CAAC,IAAIC,GAAG,KAAK,CAAC,EAAE,OAAO,IAAI;EACvC,IAAID,GAAG,KAAK,CAAC,EAAE,OAAOC,GAAG;EACzB,IAAIA,GAAG,KAAK,CAAC,EAAE,OAAOD,GAAG;EACzB,OAAO,IAAI;AACb,CAAC;AAAAJ,OAAA,CAAAS,YAAA,GAAAA,YAAA;AASM,MAAMC,iBAAiB,GAAGA,CAAC;EAChCC,IAAI;EACJC,KAAK;EACLC,IAAI;EACJC;AACuB,CAAC,KAAwB;EAChD,MAAMC,OAAO,GAAGC,uCAAqB,CAACF,WAAW,CAAC;EAClD,MAAM,CAACG,QAAQ,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,CAAC,GAAGL,OAAO,CAACM,MAAM;EAE5D,OAAO;IACLV,IAAI;IACJC,KAAK;IACLC,IAAI;IACJS,MAAM,EAAEP,OAAO,CAACO,MAAM;IACtBC,MAAM,EAAE;MACNC,WAAW,EAAET,OAAO,CAACU,MAAM;MAC3BC,YAAY,EAAEb,IAAI;MAClBc,WAAW,EAAER,MAAM;MAAE;MACrBS,MAAM,EAAE;QACNC,WAAW,EAAE;UAAEC,MAAM,EAAEZ,OAAO;UAAEa,WAAW,EAAEZ;QAAO;MACtD,CAAC;MACDa,MAAM,EAAE;QACNC,YAAY,EAAErB,KAAK;QACnBV,OAAO,EAAE;UAAEe,QAAQ;UAAEC,OAAO;UAAEC,MAAM;UAAEC;QAAS;MACjD;IACF;EACF,CAAC;AACH,CAAC;AAAApB,OAAA,CAAAU,iBAAA,GAAAA,iBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_fluencyConstants","require","getMasteryLevelByBox","box","FluencyMasteryLevel","MASTERED","STRONG","GROWING","LEARNING","exports","createFluencyMode","mode","label","icon","colorFamily","palette","COLOR_FAMILY_PALETTES","learning","growing","strong","mastered","shades","select","preset","buttonColor","button","operatorIcon","accentColor","header","streakColor","gained","todayBorder","matrix","operatorLabel","levelColors","buildMatrixGrid","data","facts","Object","values","operations","maxRow","Math","max","map","f","position","row","maxColumn","column","isDivision","FluencyMode","DIVISION","factAt","col","find","rowNumbers","Array","from","length","_","i","columnNumbers","headerRow","isHeader","divisor","dataRows","fact","numbers"],"sourceRoot":"../../../../src","sources":["features/fluency/fluency.helpers.ts"],"mappings":";;;;;;AACA,IAAAA,iBAAA,GAAAC,OAAA;AASA;AACO,MAAMC,oBAAoB,GAAIC,GAAW,IAA0B;EACxE,IAAIA,GAAG,IAAI,CAAC,EAAE,OAAOC,qCAAmB,CAACC,QAAQ;EACjD,IAAIF,GAAG,IAAI,CAAC,EAAE,OAAOC,qCAAmB,CAACE,MAAM;EAC/C,IAAIH,GAAG,IAAI,CAAC,EAAE,OAAOC,qCAAmB,CAACG,OAAO;EAChD,OAAOH,qCAAmB,CAACI,QAAQ;AACrC,CAAC;AAAAC,OAAA,CAAAP,oBAAA,GAAAA,oBAAA;AASM,MAAMQ,iBAAiB,GAAGA,CAAC;EAChCC,IAAI;EACJC,KAAK;EACLC,IAAI;EACJC;AACuB,CAAC,KAAwB;EAChD,MAAMC,OAAO,GAAGC,uCAAqB,CAACF,WAAW,CAAC;EAClD,MAAM,CAACG,QAAQ,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,CAAC,GAAGL,OAAO,CAACM,MAAM;EAE5D,OAAO;IACLV,IAAI;IACJC,KAAK;IACLC,IAAI;IACJS,MAAM,EAAEP,OAAO,CAACO,MAAM;IACtBC,MAAM,EAAE;MACNC,WAAW,EAAET,OAAO,CAACU,MAAM;MAC3BC,YAAY,EAAEb,IAAI;MAClBc,WAAW,EAAER,MAAM;MAAE;MACrBS,MAAM,EAAE;QACNC,WAAW,EAAE;UAAEC,MAAM,EAAEZ,OAAO;UAAEa,WAAW,EAAEZ;QAAO;MACtD,CAAC;MACDa,MAAM,EAAE;QACNC,aAAa,EAAErB,KAAK;QACpBsB,WAAW,EAAE;UAAEjB,QAAQ;UAAEC,OAAO;UAAEC,MAAM;UAAEC;QAAS;MACrD;IACF;EACF,CAAC;AACH,CAAC;AAAAX,OAAA,CAAAC,iBAAA,GAAAA,iBAAA;AAEM,MAAMyB,eAAe,GAAGA,CAACC,IAAuB,EAAEzB,IAAiB,KAAiB;EACzF,MAAM0B,KAAK,GAAGC,MAAM,CAACC,MAAM,CAACH,IAAI,CAACI,UAAU,CAAC7B,IAAI,CAAC,CAAC0B,KAAK,CAAC;EACxD,MAAMI,MAAM,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,GAAGN,KAAK,CAACO,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,QAAQ,CAACC,GAAG,CAAC,CAAC;EAC/D,MAAMC,SAAS,GAAGN,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,GAAGN,KAAK,CAACO,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,QAAQ,CAACG,MAAM,CAAC,CAAC;EACrE,MAAMC,UAAU,GAAGvC,IAAI,KAAKwC,6BAAW,CAACC,QAAQ;EAEhD,MAAMC,MAAM,GAAGA,CAACN,GAAW,EAAEO,GAAW,KACtCjB,KAAK,CAACkB,IAAI,CAAEV,CAAC,IAAKA,CAAC,CAACC,QAAQ,CAACC,GAAG,KAAKA,GAAG,IAAIF,CAAC,CAACC,QAAQ,CAACG,MAAM,KAAKK,GAAG,CAAC;;EAExE;EACA,MAAME,UAAU,GAAGC,KAAK,CAACC,IAAI,CAAC;IAAEC,MAAM,EAAElB,MAAM,GAAG;EAAE,CAAC,EAAE,CAACmB,CAAC,EAAEC,CAAC,KAAKA,CAAC,CAAC;EAClE,MAAMC,aAAa,GAAGZ,UAAU,GAC5BO,KAAK,CAACC,IAAI,CAAC;IAAEC,MAAM,EAAEX;EAAU,CAAC,EAAE,CAACY,CAAC,EAAEC,CAAC,KAAKA,CAAC,GAAG,CAAC,CAAC,GAClDJ,KAAK,CAACC,IAAI,CAAC;IAAEC,MAAM,EAAEX,SAAS,GAAG;EAAE,CAAC,EAAE,CAACY,CAAC,EAAEC,CAAC,KAAKA,CAAC,CAAC;EAEtD,MAAME,SAAqB,GAAG,CAC5B;IAAEC,QAAQ,EAAE,KAAK;IAAEpD,KAAK,EAAE,IAAI;IAAET,GAAG,EAAE,IAAI;IAAE8D,OAAO,EAAE;EAAK,CAAC,EAC1D,GAAGH,aAAa,CAAClB,GAAG,CACjBU,GAAG,KAAgB;IAAEU,QAAQ,EAAE,IAAI;IAAEpD,KAAK,EAAE0C,GAAG;IAAEnD,GAAG,EAAE,IAAI;IAAE8D,OAAO,EAAE;EAAK,CAAC,CAC9E,CAAC,CACF;EAED,MAAMC,QAAsB,GAAGV,UAAU,CAACZ,GAAG,CAAEG,GAAG,IAAK,CACrD;IAAEiB,QAAQ,EAAE,IAAI;IAAEpD,KAAK,EAAEmC,GAAG;IAAE5C,GAAG,EAAE,IAAI;IAAE8D,OAAO,EAAE;EAAK,CAAC,EACxD,GAAGH,aAAa,CAAClB,GAAG,CAAEU,GAAG,IAAe;IACtC,MAAMa,IAAI,GAAGd,MAAM,CAACN,GAAG,EAAEO,GAAG,CAAC;IAC7B,OAAO;MACLU,QAAQ,EAAE,KAAK;MACfpD,KAAK,EAAEsC,UAAU,GAAIiB,IAAI,EAAEC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,GAAI,IAAI;MACrDjE,GAAG,EAAEgE,IAAI,EAAEhE,GAAG,IAAI,IAAI;MACtB8D,OAAO,EAAEf,UAAU,GAAGI,GAAG,GAAG;IAC9B,CAAC;EACH,CAAC,CAAC,CACH,CAAC;EAEF,OAAO,CAACS,SAAS,EAAE,GAAGG,QAAQ,CAAC;AACjC,CAAC;AAAAzD,OAAA,CAAA0B,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -14,7 +14,7 @@ const useFluencyModePreset = () => {
14
14
  const {
15
15
  model
16
16
  } = (0, _FluencyContext.useFluency)();
17
- const mode = (0, _effectorReact.useUnit)(model.$mode);
17
+ const mode = (0, _effectorReact.useUnit)(model.matrix.$mode);
18
18
  const preset = _fluencyConstants.FLUENCY_MODE_PRESETS[mode];
19
19
  const legendItems = [{
20
20
  label: t('student.fluency.notStarted'),
@@ -22,20 +22,29 @@ const useFluencyModePreset = () => {
22
22
  withBorder: true
23
23
  }, {
24
24
  label: t('student.fluency.masteryLearning'),
25
- color: preset.matrix.mastery[_fluencyConstants.FluencyMasteryLevel.LEARNING]
25
+ color: preset.matrix.levelColors[_fluencyConstants.FluencyMasteryLevel.LEARNING]
26
26
  }, {
27
27
  label: t('student.fluency.masteryGrowing'),
28
- color: preset.matrix.mastery[_fluencyConstants.FluencyMasteryLevel.GROWING]
28
+ color: preset.matrix.levelColors[_fluencyConstants.FluencyMasteryLevel.GROWING]
29
29
  }, {
30
30
  label: t('student.fluency.masteryStrong'),
31
- color: preset.matrix.mastery[_fluencyConstants.FluencyMasteryLevel.STRONG]
31
+ color: preset.matrix.levelColors[_fluencyConstants.FluencyMasteryLevel.STRONG]
32
32
  }, {
33
33
  label: t('student.fluency.masteryMastered'),
34
- color: preset.matrix.mastery[_fluencyConstants.FluencyMasteryLevel.MASTERED]
34
+ color: preset.matrix.levelColors[_fluencyConstants.FluencyMasteryLevel.MASTERED]
35
35
  }];
36
36
  return {
37
- ...preset,
38
- legendItems
37
+ icon: preset.operatorIcon,
38
+ label: t(preset.matrix.operatorLabel),
39
+ colors: {
40
+ level: preset.matrix.levelColors,
41
+ accent: preset.accentColor,
42
+ streak: preset.header.streakColor,
43
+ button: preset.buttonColor
44
+ },
45
+ legend: {
46
+ items: legendItems
47
+ }
39
48
  };
40
49
  };
41
50
  exports.useFluencyModePreset = useFluencyModePreset;
@@ -1 +1 @@
1
- {"version":3,"names":["_effectorReact","require","_reactNativeUi","_fluencyConstants","_FluencyContext","_i18n","useFluencyModePreset","t","useText","model","useFluency","mode","useUnit","$mode","preset","FLUENCY_MODE_PRESETS","legendItems","label","color","COLORS","NEUTRAL_2","withBorder","matrix","mastery","FluencyMasteryLevel","LEARNING","GROWING","STRONG","MASTERED","exports"],"sourceRoot":"../../../../../src","sources":["features/fluency/hooks/useFluencyModePreset.ts"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AAEA,IAAAG,eAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AAIO,MAAMK,oBAAoB,GAAGA,CAAA,KAAkC;EACpE,MAAMC,CAAC,GAAG,IAAAC,aAAO,EAAC,CAAC;EACnB,MAAM;IAAEC;EAAM,CAAC,GAAG,IAAAC,0BAAU,EAAC,CAAC;EAC9B,MAAMC,IAAI,GAAG,IAAAC,sBAAO,EAACH,KAAK,CAACI,KAAK,CAAC;EACjC,MAAMC,MAAM,GAAGC,sCAAoB,CAACJ,IAAI,CAAC;EAEzC,MAAMK,WAAyB,GAAG,CAChC;IAAEC,KAAK,EAAEV,CAAC,CAAC,4BAA4B,CAAC;IAAEW,KAAK,EAAEC,qBAAM,CAACC,SAAS;IAAEC,UAAU,EAAE;EAAK,CAAC,EACrF;IACEJ,KAAK,EAAEV,CAAC,CAAC,iCAAiC,CAAC;IAC3CW,KAAK,EAAEJ,MAAM,CAACQ,MAAM,CAACC,OAAO,CAACC,qCAAmB,CAACC,QAAQ;EAC3D,CAAC,EACD;IACER,KAAK,EAAEV,CAAC,CAAC,gCAAgC,CAAC;IAC1CW,KAAK,EAAEJ,MAAM,CAACQ,MAAM,CAACC,OAAO,CAACC,qCAAmB,CAACE,OAAO;EAC1D,CAAC,EACD;IACET,KAAK,EAAEV,CAAC,CAAC,+BAA+B,CAAC;IACzCW,KAAK,EAAEJ,MAAM,CAACQ,MAAM,CAACC,OAAO,CAACC,qCAAmB,CAACG,MAAM;EACzD,CAAC,EACD;IACEV,KAAK,EAAEV,CAAC,CAAC,iCAAiC,CAAC;IAC3CW,KAAK,EAAEJ,MAAM,CAACQ,MAAM,CAACC,OAAO,CAACC,qCAAmB,CAACI,QAAQ;EAC3D,CAAC,CACF;EAED,OAAO;IAAE,GAAGd,MAAM;IAAEE;EAAY,CAAC;AACnC,CAAC;AAAAa,OAAA,CAAAvB,oBAAA,GAAAA,oBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_effectorReact","require","_reactNativeUi","_fluencyConstants","_FluencyContext","_i18n","useFluencyModePreset","t","useText","model","useFluency","mode","useUnit","matrix","$mode","preset","FLUENCY_MODE_PRESETS","legendItems","label","color","COLORS","NEUTRAL_2","withBorder","levelColors","FluencyMasteryLevel","LEARNING","GROWING","STRONG","MASTERED","icon","operatorIcon","operatorLabel","colors","level","accent","accentColor","streak","header","streakColor","button","buttonColor","legend","items","exports"],"sourceRoot":"../../../../../src","sources":["features/fluency/hooks/useFluencyModePreset.ts"],"mappings":";;;;;;AACA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAEA,IAAAE,iBAAA,GAAAF,OAAA;AAEA,IAAAG,eAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AAcO,MAAMK,oBAAoB,GAAGA,CAAA,KAAkC;EACpE,MAAMC,CAAC,GAAG,IAAAC,aAAO,EAAC,CAAC;EACnB,MAAM;IAAEC;EAAM,CAAC,GAAG,IAAAC,0BAAU,EAAC,CAAC;EAC9B,MAAMC,IAAI,GAAG,IAAAC,sBAAO,EAACH,KAAK,CAACI,MAAM,CAACC,KAAK,CAAC;EACxC,MAAMC,MAAM,GAAGC,sCAAoB,CAACL,IAAI,CAAC;EAEzC,MAAMM,WAAyB,GAAG,CAChC;IAAEC,KAAK,EAAEX,CAAC,CAAC,4BAA4B,CAAC;IAAEY,KAAK,EAAEC,qBAAM,CAACC,SAAS;IAAEC,UAAU,EAAE;EAAK,CAAC,EACrF;IAAEJ,KAAK,EAAEX,CAAC,CAAC,iCAAiC,CAAC;IAAEY,KAAK,EAAEJ,MAAM,CAACF,MAAM,CAACU,WAAW,CAACC,qCAAmB,CAACC,QAAQ;EAAE,CAAC,EAC/G;IAAEP,KAAK,EAAEX,CAAC,CAAC,gCAAgC,CAAC;IAAEY,KAAK,EAAEJ,MAAM,CAACF,MAAM,CAACU,WAAW,CAACC,qCAAmB,CAACE,OAAO;EAAE,CAAC,EAC7G;IAAER,KAAK,EAAEX,CAAC,CAAC,+BAA+B,CAAC;IAAEY,KAAK,EAAEJ,MAAM,CAACF,MAAM,CAACU,WAAW,CAACC,qCAAmB,CAACG,MAAM;EAAE,CAAC,EAC3G;IAAET,KAAK,EAAEX,CAAC,CAAC,iCAAiC,CAAC;IAAEY,KAAK,EAAEJ,MAAM,CAACF,MAAM,CAACU,WAAW,CAACC,qCAAmB,CAACI,QAAQ;EAAE,CAAC,CAChH;EAED,OAAO;IACLC,IAAI,EAAEd,MAAM,CAACe,YAAY;IACzBZ,KAAK,EAAEX,CAAC,CAACQ,MAAM,CAACF,MAAM,CAACkB,aAAa,CAAC;IACrCC,MAAM,EAAE;MACNC,KAAK,EAAElB,MAAM,CAACF,MAAM,CAACU,WAAW;MAChCW,MAAM,EAAEnB,MAAM,CAACoB,WAAW;MAC1BC,MAAM,EAAErB,MAAM,CAACsB,MAAM,CAACC,WAAW;MACjCC,MAAM,EAAExB,MAAM,CAACyB;IACjB,CAAC;IACDC,MAAM,EAAE;MAAEC,KAAK,EAAEzB;IAAY;EAC/B,CAAC;AACH,CAAC;AAAA0B,OAAA,CAAArC,oBAAA,GAAAA,oBAAA","ignoreList":[]}
@@ -3,15 +3,16 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.FluencyNumpad = void 0;
6
+ exports.useFluencyNumpad = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
- var _reactNative = require("react-native");
9
8
  var _effectorReact = require("effector-react");
10
9
  var _reactNativeUi = require("@magmamath/react-native-ui");
11
- var _BackspaceIcon = require("../../../../shared/icons/keyboard/BackspaceIcon.js");
12
- var _FluencyContext = require("../../context/FluencyContext.js");
13
- var _useFluencyModePreset = require("../../hooks/useFluencyModePreset.js");
14
- var _commonConstants = require("../../../../shared/common.constants.js");
10
+ var _BackspaceIcon = require("../../../shared/icons/keyboard/BackspaceIcon.js");
11
+ var _FluencyContext = require("../context/FluencyContext.js");
12
+ var _useFluencyModePreset = require("./useFluencyModePreset.js");
13
+ var _commonConstants = require("../../../shared/common.constants.js");
14
+ var _constants = require("../../../lib/constants.js");
15
+ var _fluencyConstants = require("../fluency.constants.js");
15
16
  var _jsxRuntime = require("react/jsx-runtime");
16
17
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
17
18
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -66,51 +67,36 @@ const NUMPAD_KEYS = [{
66
67
  title: '9',
67
68
  value: 9
68
69
  }, {
69
- key: 'backspace',
70
+ key: _constants.KeyboardKeys.BACKSPACE,
70
71
  title: /*#__PURE__*/(0, _jsxRuntime.jsx)(_BackspaceIcon.BackspaceIcon, {
71
72
  size: 20,
72
73
  color: _reactNativeUi.COLORS.NEUTRAL_9
73
74
  }),
74
- value: 'backspace',
75
+ value: _constants.KeyboardKeys.BACKSPACE,
75
76
  customColorScheme: ACTION_KEY_COLOR_SCHEME
76
77
  }, {
77
78
  key: '0',
78
79
  title: '0',
79
80
  value: 0
80
81
  }, {
81
- key: 'enter',
82
+ key: _constants.KeyboardKeys.ENTER,
82
83
  title: 'Enter',
83
- value: 'enter',
84
+ value: _constants.KeyboardKeys.ENTER,
84
85
  customColorScheme: ACTION_KEY_COLOR_SCHEME
85
86
  }];
86
- const FluencyNumpad = ({
87
+ const useFluencyNumpad = ({
87
88
  onEnterPress
88
89
  }) => {
89
90
  const {
90
91
  model
91
92
  } = (0, _FluencyContext.useFluency)();
92
- const uiMode = (0, _useFluencyModePreset.useFluencyModePreset)();
93
- const input = (0, _effectorReact.useUnit)(model.input.$state);
93
+ const modePreset = (0, _useFluencyModePreset.useFluencyModePreset)();
94
+ const answer = (0, _effectorReact.useUnit)(model.solving.$answer);
94
95
  const [pressedKey, setPressedKey] = (0, _react.useState)(null);
95
- (0, _react.useEffect)(() => {
96
- if (!_commonConstants.isWeb) return;
97
- let timeoutId;
98
- const handleKeyDown = event => {
99
- let numpadKey = null;
100
- if (/^\d$/.test(event.key)) numpadKey = event.key;else if (event.key === 'Backspace') numpadKey = 'backspace';else if (event.key === 'Enter') numpadKey = 'enter';
101
- if (!numpadKey) return;
102
- clearTimeout(timeoutId);
103
- setPressedKey(numpadKey);
104
- timeoutId = setTimeout(() => setPressedKey(null), 175);
105
- };
106
- window.addEventListener('keydown', handleKeyDown);
107
- return () => {
108
- window.removeEventListener('keydown', handleKeyDown);
109
- clearTimeout(timeoutId);
110
- };
111
- }, []);
112
- const accentColor = uiMode.accentColor;
113
- const accentBorderColor = uiMode.matrix.mastery.mastered;
96
+ const answerRef = (0, _react.useRef)(answer);
97
+ answerRef.current = answer;
98
+ const accentColor = modePreset.colors.accent;
99
+ const accentBorderColor = modePreset.colors.level.mastered;
114
100
  const enterAccentScheme = {
115
101
  [_reactNativeUi.ButtonStates.DEFAULT]: {
116
102
  backgroundColor: accentColor,
@@ -142,62 +128,52 @@ const FluencyNumpad = ({
142
128
  customColorScheme,
143
129
  ...props
144
130
  }) => {
145
- const isEnterKey = value === 'enter';
146
- const colorScheme = isEnterKey && input ? enterAccentScheme : customColorScheme;
131
+ const isEnterKey = value === _constants.KeyboardKeys.ENTER;
132
+ const colorScheme = isEnterKey && answer ? enterAccentScheme : customColorScheme;
147
133
  return {
148
134
  ...props,
149
135
  selected: pressedKey === props.key,
150
136
  customColorScheme: colorScheme,
151
137
  onPressIn: () => {
152
- if (value === 'backspace') return model.input.set({
153
- erase: 'latest'
154
- });
155
- if (value === 'enter') return onEnterPress();
156
- model.input.set({
157
- value
158
- });
159
- }
160
- };
161
- });
162
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
163
- style: styles.container,
164
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeUi.SelectGroup, {
165
- numOfRows: 4,
166
- color: _reactNativeUi.SelectOptionColor.GREY,
167
- size: _reactNativeUi.SelectOptionSize.SMALL,
168
- options: options,
169
- style: {
170
- container: styles.grid,
171
- row: styles.row,
172
- option: {
173
- button: styles.optionButton,
174
- text: styles.optionText
138
+ if (value === _constants.KeyboardKeys.ENTER) {
139
+ onEnterPress();
140
+ return;
141
+ }
142
+ if (value === _constants.KeyboardKeys.BACKSPACE) {
143
+ const currentStr = answerRef.current !== null ? answerRef.current.toString() : '';
144
+ const newStr = currentStr.slice(0, -1);
145
+ model.solving.setAnswer(newStr ? parseInt(newStr, 10) : null);
146
+ return;
175
147
  }
148
+ const currentStr = answerRef.current !== null ? answerRef.current.toString() : '';
149
+ if (currentStr.length >= _fluencyConstants.MAX_INPUT_LENGTH) return;
150
+ model.solving.setAnswer(parseInt(currentStr + value.toString(), 10));
176
151
  }
177
- })
152
+ };
178
153
  });
154
+ (0, _react.useEffect)(() => {
155
+ if (!_commonConstants.isWeb) return;
156
+ let timeoutId;
157
+ const handleKeyDown = event => {
158
+ let numpadKey = null;
159
+ const isEnterKey = event.key === _constants.KeyboardKeys.ENTER;
160
+ const isBackspaceKey = event.key === _constants.KeyboardKeys.BACKSPACE;
161
+ const isDigit = /^\d$/.test(event.key);
162
+ if (isDigit || isEnterKey || isBackspaceKey) numpadKey = event.key;
163
+ if (!numpadKey) return;
164
+ clearTimeout(timeoutId);
165
+ setPressedKey(numpadKey);
166
+ timeoutId = setTimeout(() => setPressedKey(null), 175);
167
+ };
168
+ window.addEventListener('keydown', handleKeyDown);
169
+ return () => {
170
+ window.removeEventListener('keydown', handleKeyDown);
171
+ clearTimeout(timeoutId);
172
+ };
173
+ }, []);
174
+ return {
175
+ options
176
+ };
179
177
  };
180
- exports.FluencyNumpad = FluencyNumpad;
181
- const styles = _reactNative.StyleSheet.create({
182
- container: {
183
- alignItems: 'center',
184
- paddingVertical: _reactNativeUi.SPACING[400],
185
- marginTop: _reactNativeUi.SPACING[200]
186
- },
187
- grid: {
188
- width: 360,
189
- gap: _reactNativeUi.SPACING[200]
190
- },
191
- row: {
192
- gap: _reactNativeUi.SPACING[200]
193
- },
194
- optionButton: {
195
- height: 60
196
- },
197
- optionText: {
198
- fontSize: 24,
199
- fontWeight: '700',
200
- fontFamily: _reactNativeUi.FONT_FAMILY.buenosAires
201
- }
202
- });
203
- //# sourceMappingURL=FluencyNumpad.js.map
178
+ exports.useFluencyNumpad = useFluencyNumpad;
179
+ //# sourceMappingURL=useFluencyNumpad.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_effectorReact","_reactNativeUi","_BackspaceIcon","_FluencyContext","_useFluencyModePreset","_commonConstants","_constants","_fluencyConstants","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ACTION_KEY_COLOR_SCHEME","ButtonStates","DEFAULT","backgroundColor","COLORS","NEUTRAL_3","borderColor","NEUTRAL_5","raiseColor","color","NEUTRAL_9","HOVER","NEUTRAL_2","NEUTRAL_4","NUMPAD_KEYS","key","title","value","KeyboardKeys","BACKSPACE","jsx","BackspaceIcon","size","customColorScheme","ENTER","useFluencyNumpad","onEnterPress","model","useFluency","modePreset","useFluencyModePreset","answer","useUnit","solving","$answer","pressedKey","setPressedKey","useState","answerRef","useRef","current","accentColor","colors","accent","accentBorderColor","level","mastered","enterAccentScheme","NEUTRAL_1","PRESSED","ACTIVE","options","map","props","isEnterKey","colorScheme","selected","onPressIn","currentStr","toString","newStr","slice","setAnswer","parseInt","length","MAX_INPUT_LENGTH","useEffect","isWeb","timeoutId","handleKeyDown","event","numpadKey","isBackspaceKey","isDigit","test","clearTimeout","setTimeout","window","addEventListener","removeEventListener","exports"],"sourceRoot":"../../../../../src","sources":["features/fluency/hooks/useFluencyNumpad.tsx"],"mappings":"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","ignoreList":[]}
@@ -8,8 +8,6 @@ var _react = require("react");
8
8
  var _expoAudio = require("expo-audio");
9
9
  var _success = _interopRequireDefault(require("../assets/success.mp3"));
10
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
- // @ts-ignore
12
-
13
11
  const useSuccessSound = () => {
14
12
  const playerRef = (0, _react.useRef)(null);
15
13
  (0, _react.useEffect)(() => {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_expoAudio","_success","_interopRequireDefault","e","__esModule","default","useSuccessSound","playerRef","useRef","useEffect","player","createAudioPlayer","SUCCESS_SOUND","current","remove","play","seekTo","exports"],"sourceRoot":"../../../../../src","sources":["features/fluency/hooks/useSuccessSound.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAEA,IAAAE,QAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAiD,SAAAG,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AADjD;;AAGO,MAAMG,eAAe,GAAGA,CAAA,KAAM;EACnC,MAAMC,SAAS,GAAG,IAAAC,aAAM,EAAqB,IAAI,CAAC;EAElD,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,MAAM,GAAG,IAAAC,4BAAiB,EAACC,gBAAa,CAAC;IAC/CL,SAAS,CAACM,OAAO,GAAGH,MAAM;IAC1B,OAAO,MAAMA,MAAM,CAACI,MAAM,CAAC,CAAC;EAC9B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,IAAI,GAAGA,CAAA,KAAM;IACjBR,SAAS,CAACM,OAAO,EAAEG,MAAM,CAAC,CAAC,CAAC;IAC5BT,SAAS,CAACM,OAAO,EAAEE,IAAI,CAAC,CAAC;EAC3B,CAAC;EAED,OAAO;IAAEA;EAAK,CAAC;AACjB,CAAC;AAAAE,OAAA,CAAAX,eAAA,GAAAA,eAAA","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_expoAudio","_success","_interopRequireDefault","e","__esModule","default","useSuccessSound","playerRef","useRef","useEffect","player","createAudioPlayer","SUCCESS_SOUND","current","remove","play","seekTo","exports"],"sourceRoot":"../../../../../src","sources":["features/fluency/hooks/useSuccessSound.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAiD,SAAAG,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE1C,MAAMG,eAAe,GAAGA,CAAA,KAAM;EACnC,MAAMC,SAAS,GAAG,IAAAC,aAAM,EAAqB,IAAI,CAAC;EAElD,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,MAAM,GAAG,IAAAC,4BAAiB,EAACC,gBAAa,CAAC;IAC/CL,SAAS,CAACM,OAAO,GAAGH,MAAM;IAC1B,OAAO,MAAMA,MAAM,CAACI,MAAM,CAAC,CAAC;EAC9B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,IAAI,GAAGA,CAAA,KAAM;IACjBR,SAAS,CAACM,OAAO,EAAEG,MAAM,CAAC,CAAC,CAAC;IAC5BT,SAAS,CAACM,OAAO,EAAEE,IAAI,CAAC,CAAC;EAC3B,CAAC;EAED,OAAO;IAAEA;EAAK,CAAC;AACjB,CAAC;AAAAE,OAAA,CAAAX,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -4,8 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.FluencyApiModel = void 0;
7
+ var _effector = require("effector");
7
8
  class FluencyApiModel {
8
- constructor({}) {}
9
+ constructor(api) {
10
+ this.getMatrixFx = (0, _effector.createEffect)(api.getMatrix);
11
+ this.getWeeklyStatsFx = (0, _effector.createEffect)(() => api.getWeeklyStats());
12
+ this.postAttemptFx = (0, _effector.createEffect)(api.postAttempt);
13
+ }
9
14
  }
10
15
  exports.FluencyApiModel = FluencyApiModel;
11
16
  //# sourceMappingURL=FluencyApiModel.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["FluencyApiModel","constructor","exports"],"sourceRoot":"../../../../../src","sources":["features/fluency/model/FluencyApiModel.ts"],"mappings":";;;;;;AAEO,MAAMA,eAAe,CAAC;EAC3BC,WAAWA,CAAC,CAAkB,CAAC,EAAE,CAAC;AACpC;AAACC,OAAA,CAAAF,eAAA,GAAAA,eAAA","ignoreList":[]}
1
+ {"version":3,"names":["_effector","require","FluencyApiModel","constructor","api","getMatrixFx","createEffect","getMatrix","getWeeklyStatsFx","getWeeklyStats","postAttemptFx","postAttempt","exports"],"sourceRoot":"../../../../../src","sources":["features/fluency/model/FluencyApiModel.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAUO,MAAMC,eAAe,CAAC;EAK3BC,WAAWA,CAACC,GAA6B,EAAE;IACzC,IAAI,CAACC,WAAW,GAAG,IAAAC,sBAAY,EAACF,GAAG,CAACG,SAAS,CAAC;IAC9C,IAAI,CAACC,gBAAgB,GAAG,IAAAF,sBAAY,EAAC,MAAMF,GAAG,CAACK,cAAc,CAAC,CAAC,CAAC;IAChE,IAAI,CAACC,aAAa,GAAG,IAAAJ,sBAAY,EAACF,GAAG,CAACO,WAAW,CAAC;EACpD;AACF;AAACC,OAAA,CAAAV,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -4,6 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.FluencyDaysStreakModel = void 0;
7
- class FluencyDaysStreakModel {}
7
+ var _effector = require("effector");
8
+ class FluencyDaysStreakModel {
9
+ $stats = (0, _effector.createStore)(null);
10
+ constructor(api) {
11
+ this.api = api;
12
+ this.$stats.on(this.api.getWeeklyStatsFx.doneData, (_, data) => data);
13
+ }
14
+ }
8
15
  exports.FluencyDaysStreakModel = FluencyDaysStreakModel;
9
16
  //# sourceMappingURL=FluencyDaysStreakModel.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["FluencyDaysStreakModel","exports"],"sourceRoot":"../../../../../src","sources":["features/fluency/model/FluencyDaysStreakModel.ts"],"mappings":";;;;;;AAAO,MAAMA,sBAAsB,CAAC;AAAEC,OAAA,CAAAD,sBAAA,GAAAA,sBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_effector","require","FluencyDaysStreakModel","$stats","createStore","constructor","api","on","getWeeklyStatsFx","doneData","_","data","exports"],"sourceRoot":"../../../../../src","sources":["features/fluency/model/FluencyDaysStreakModel.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAIO,MAAMC,sBAAsB,CAAC;EAClBC,MAAM,GAAG,IAAAC,qBAAW,EAAgC,IAAI,CAAC;EAEzEC,WAAWA,CAAkBC,GAAoB,EAAE;IAAA,KAAtBA,GAAoB,GAApBA,GAAoB;IAC/C,IAAI,CAACH,MAAM,CAACI,EAAE,CAAC,IAAI,CAACD,GAAG,CAACE,gBAAgB,CAACC,QAAQ,EAAE,CAACC,CAAC,EAAEC,IAAI,KAAKA,IAAI,CAAC;EACvE;AACF;AAACC,OAAA,CAAAV,sBAAA,GAAAA,sBAAA","ignoreList":[]}
@@ -4,6 +4,21 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.FluencyMatrixModel = void 0;
7
- class FluencyMatrixModel {}
7
+ var _effector = require("effector");
8
+ var _fluencyConstants = require("../fluency.constants.js");
9
+ var _fluencyHelpers = require("../fluency.helpers.js");
10
+ class FluencyMatrixModel {
11
+ setMode = (0, _effector.createEvent)();
12
+ $mode = (0, _effector.restore)(this.setMode, _fluencyConstants.FluencyMode.ADDITION);
13
+ $data = (0, _effector.createStore)(null);
14
+ $matrix = (0, _effector.combine)(this.$data, this.$mode, (data, mode) => {
15
+ if (!data) return null;
16
+ return (0, _fluencyHelpers.buildMatrixGrid)(data, mode);
17
+ });
18
+ constructor(api) {
19
+ this.api = api;
20
+ this.$data.on(api.getMatrixFx.doneData, (_, data) => data);
21
+ }
22
+ }
8
23
  exports.FluencyMatrixModel = FluencyMatrixModel;
9
24
  //# sourceMappingURL=FluencyMatrixModel.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["FluencyMatrixModel","exports"],"sourceRoot":"../../../../../src","sources":["features/fluency/model/FluencyMatrixModel.ts"],"mappings":";;;;;;AAAO,MAAMA,kBAAkB,CAAC;AAAEC,OAAA,CAAAD,kBAAA,GAAAA,kBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_effector","require","_fluencyConstants","_fluencyHelpers","FluencyMatrixModel","setMode","createEvent","$mode","restore","FluencyMode","ADDITION","$data","createStore","$matrix","combine","data","mode","buildMatrixGrid","constructor","api","on","getMatrixFx","doneData","_","exports"],"sourceRoot":"../../../../../src","sources":["features/fluency/model/FluencyMatrixModel.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AAIO,MAAMG,kBAAkB,CAAC;EACdC,OAAO,GAAG,IAAAC,qBAAW,EAAc,CAAC;EACpCC,KAAK,GAAG,IAAAC,iBAAO,EAAC,IAAI,CAACH,OAAO,EAAEI,6BAAW,CAACC,QAAQ,CAAC;EAEnDC,KAAK,GAAG,IAAAC,qBAAW,EAA2B,IAAI,CAAC;EACnDC,OAAO,GAAG,IAAAC,iBAAO,EAAC,IAAI,CAACH,KAAK,EAAE,IAAI,CAACJ,KAAK,EAAE,CAACQ,IAAI,EAAEC,IAAI,KAAwB;IAC3F,IAAI,CAACD,IAAI,EAAE,OAAO,IAAI;IACtB,OAAO,IAAAE,+BAAe,EAACF,IAAI,EAAEC,IAAI,CAAC;EACpC,CAAC,CAAC;EAEFE,WAAWA,CAAkBC,GAAoB,EAAE;IAAA,KAAtBA,GAAoB,GAApBA,GAAoB;IAC/C,IAAI,CAACR,KAAK,CAACS,EAAE,CAACD,GAAG,CAACE,WAAW,CAACC,QAAQ,EAAE,CAACC,CAAC,EAAER,IAAI,KAAKA,IAAI,CAAC;EAC5D;AACF;AAACS,OAAA,CAAApB,kBAAA,GAAAA,kBAAA","ignoreList":[]}
@@ -5,44 +5,28 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.FluencyModel = void 0;
7
7
  var _effector = require("effector");
8
- var _fluencyConstants = require("../fluency.constants.js");
8
+ var _effectorReact = require("effector-react");
9
+ var _not = require("patronum/not");
9
10
  var _FluencyDaysStreakModel = require("./FluencyDaysStreakModel.js");
10
11
  var _FluencyMatrixModel = require("./FluencyMatrixModel.js");
11
12
  var _FluencyApiModel = require("./FluencyApiModel.js");
12
13
  var _FluencySolvingModel = require("./FluencySolvingModel.js");
13
- var _FluencyInputModel = require("./FluencyInputModel.js");
14
14
  class FluencyModel {
15
- setMode = (0, _effector.createEvent)();
16
- $mode = (0, _effector.restore)(this.setMode, _fluencyConstants.FluencyMode.ADDITION);
17
- checkAnswer() {
18
- return Number(this.input.$state.getState()) === this.solving.$problem.getState().answer;
19
- }
15
+ gate = (0, _effectorReact.createGate)();
20
16
  constructor({
21
17
  api
22
18
  }) {
23
19
  this.api = new _FluencyApiModel.FluencyApiModel(api);
24
- this.streak = new _FluencyDaysStreakModel.FluencyDaysStreakModel();
25
- this.matrix = new _FluencyMatrixModel.FluencyMatrixModel();
26
- this.solving = new _FluencySolvingModel.FluencySolvingModel();
27
- this.input = new _FluencyInputModel.FluencyInputModel();
28
- this.submitFx = (0, _effector.attach)({
29
- source: {
30
- input: this.input.$state,
31
- problem: this.solving.$problem
32
- },
33
- effect: ({
34
- input,
35
- problem
36
- }) => ({
37
- isCorrect: Number(input) === problem.answer
38
- })
39
- });
20
+ this.streak = new _FluencyDaysStreakModel.FluencyDaysStreakModel(this.api);
21
+ this.matrix = new _FluencyMatrixModel.FluencyMatrixModel(this.api);
22
+ this.solving = new _FluencySolvingModel.FluencySolvingModel(this.matrix);
23
+ this.init();
24
+ }
25
+ init() {
40
26
  (0, _effector.sample)({
41
- clock: this.submitFx.done,
42
- fn: () => ({
43
- erase: 'all'
44
- }),
45
- target: this.input.set
27
+ clock: this.gate.open,
28
+ filter: (0, _not.not)(this.api.getMatrixFx.pending),
29
+ target: [this.api.getMatrixFx, this.api.getWeeklyStatsFx]
46
30
  });
47
31
  }
48
32
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_effector","require","_fluencyConstants","_FluencyDaysStreakModel","_FluencyMatrixModel","_FluencyApiModel","_FluencySolvingModel","_FluencyInputModel","FluencyModel","setMode","createEvent","$mode","restore","FluencyMode","ADDITION","checkAnswer","Number","input","$state","getState","solving","$problem","answer","constructor","api","FluencyApiModel","streak","FluencyDaysStreakModel","matrix","FluencyMatrixModel","FluencySolvingModel","FluencyInputModel","submitFx","attach","source","problem","effect","isCorrect","sample","clock","done","fn","erase","target","set","exports"],"sourceRoot":"../../../../../src","sources":["features/fluency/model/FluencyModel.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAEA,IAAAC,iBAAA,GAAAD,OAAA;AACA,IAAAE,uBAAA,GAAAF,OAAA;AACA,IAAAG,mBAAA,GAAAH,OAAA;AACA,IAAAI,gBAAA,GAAAJ,OAAA;AACA,IAAAK,oBAAA,GAAAL,OAAA;AACA,IAAAM,kBAAA,GAAAN,OAAA;AAQO,MAAMO,YAAY,CAAC;EAQRC,OAAO,GAAG,IAAAC,qBAAW,EAAc,CAAC;EACpCC,KAAK,GAAG,IAAAC,iBAAO,EAAC,IAAI,CAACH,OAAO,EAAEI,6BAAW,CAACC,QAAQ,CAAC;EAE5DC,WAAWA,CAAA,EAAY;IAC5B,OAAOC,MAAM,CAAC,IAAI,CAACC,KAAK,CAACC,MAAM,CAACC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAACC,OAAO,CAACC,QAAQ,CAACF,QAAQ,CAAC,CAAC,CAACG,MAAM;EACzF;EAEAC,WAAWA,CAAC;IAAEC;EAAuB,CAAC,EAAE;IACtC,IAAI,CAACA,GAAG,GAAG,IAAIC,gCAAe,CAACD,GAAG,CAAC;IACnC,IAAI,CAACE,MAAM,GAAG,IAAIC,8CAAsB,CAAC,CAAC;IAC1C,IAAI,CAACC,MAAM,GAAG,IAAIC,sCAAkB,CAAC,CAAC;IACtC,IAAI,CAACT,OAAO,GAAG,IAAIU,wCAAmB,CAAC,CAAC;IACxC,IAAI,CAACb,KAAK,GAAG,IAAIc,oCAAiB,CAAC,CAAC;IAEpC,IAAI,CAACC,QAAQ,GAAG,IAAAC,gBAAM,EAAC;MACrBC,MAAM,EAAE;QAAEjB,KAAK,EAAE,IAAI,CAACA,KAAK,CAACC,MAAM;QAAEiB,OAAO,EAAE,IAAI,CAACf,OAAO,CAACC;MAAS,CAAC;MACpEe,MAAM,EAAEA,CAAC;QAAEnB,KAAK;QAAEkB;MAAQ,CAAC,MAAM;QAAEE,SAAS,EAAErB,MAAM,CAACC,KAAK,CAAC,KAAKkB,OAAO,CAACb;MAAO,CAAC;IAClF,CAAC,CAAC;IAEF,IAAAgB,gBAAM,EAAC;MACLC,KAAK,EAAE,IAAI,CAACP,QAAQ,CAACQ,IAAI;MACzBC,EAAE,EAAEA,CAAA,MAAO;QAAEC,KAAK,EAAE;MAAe,CAAC,CAAC;MACrCC,MAAM,EAAE,IAAI,CAAC1B,KAAK,CAAC2B;IACrB,CAAC,CAAC;EACJ;AACF;AAACC,OAAA,CAAArC,YAAA,GAAAA,YAAA","ignoreList":[]}
1
+ {"version":3,"names":["_effector","require","_effectorReact","_not","_FluencyDaysStreakModel","_FluencyMatrixModel","_FluencyApiModel","_FluencySolvingModel","FluencyModel","gate","createGate","constructor","api","FluencyApiModel","streak","FluencyDaysStreakModel","matrix","FluencyMatrixModel","solving","FluencySolvingModel","init","sample","clock","open","filter","not","getMatrixFx","pending","target","getWeeklyStatsFx","exports"],"sourceRoot":"../../../../../src","sources":["features/fluency/model/FluencyModel.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,IAAA,GAAAF,OAAA;AACA,IAAAG,uBAAA,GAAAH,OAAA;AACA,IAAAI,mBAAA,GAAAJ,OAAA;AACA,IAAAK,gBAAA,GAAAL,OAAA;AACA,IAAAM,oBAAA,GAAAN,OAAA;AAGO,MAAMO,YAAY,CAAC;EACRC,IAAI,GAAG,IAAAC,yBAAU,EAAwB,CAAC;EAO1DC,WAAWA,CAAC;IAAEC;EAAuB,CAAC,EAAE;IACtC,IAAI,CAACA,GAAG,GAAG,IAAIC,gCAAe,CAACD,GAAG,CAAC;IACnC,IAAI,CAACE,MAAM,GAAG,IAAIC,8CAAsB,CAAC,IAAI,CAACH,GAAG,CAAC;IAClD,IAAI,CAACI,MAAM,GAAG,IAAIC,sCAAkB,CAAC,IAAI,CAACL,GAAG,CAAC;IAC9C,IAAI,CAACM,OAAO,GAAG,IAAIC,wCAAmB,CAAC,IAAI,CAACH,MAAM,CAAC;IAEnD,IAAI,CAACI,IAAI,CAAC,CAAC;EACb;EAEQA,IAAIA,CAAA,EAAG;IACb,IAAAC,gBAAM,EAAC;MACLC,KAAK,EAAE,IAAI,CAACb,IAAI,CAACc,IAAI;MACrBC,MAAM,EAAE,IAAAC,QAAG,EAAC,IAAI,CAACb,GAAG,CAACc,WAAW,CAACC,OAAO,CAAC;MACzCC,MAAM,EAAE,CAAC,IAAI,CAAChB,GAAG,CAACc,WAAW,EAAE,IAAI,CAACd,GAAG,CAACiB,gBAAgB;IAC1D,CAAC,CAAC;EACJ;AACF;AAACC,OAAA,CAAAtB,YAAA,GAAAA,YAAA","ignoreList":[]}
@@ -5,12 +5,64 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.FluencySolvingModel = void 0;
7
7
  var _effector = require("effector");
8
+ var _fluencyConstants = require("../fluency.constants.js");
9
+ var _fluencySolvingHelpers = require("../components/fluency-solving/fluencySolving.helpers.js");
8
10
  class FluencySolvingModel {
9
- $problem = (0, _effector.createStore)({
10
- left: 6,
11
- right: 6,
12
- answer: 36
13
- });
11
+ reset = (0, _effector.createEvent)();
12
+ setAnswer = (0, _effector.createEvent)();
13
+ setFacts = (0, _effector.createEvent)();
14
+ setCurrent = (0, _effector.createEvent)();
15
+ setOutcomes = (0, _effector.createEvent)();
16
+ setSessionStartTime = (0, _effector.createEvent)();
17
+ setQuestionStartTime = (0, _effector.createEvent)();
18
+ $answer = (0, _effector.restore)(this.setAnswer, null).reset(this.reset);
19
+ $facts = (0, _effector.restore)(this.setFacts, []).reset(this.reset);
20
+ $current = (0, _effector.restore)(this.setCurrent, null).reset(this.reset);
21
+ $outcomes = (0, _effector.restore)(this.setOutcomes, []).reset(this.reset);
22
+ $sessionStartTime = (0, _effector.restore)(this.setSessionStartTime, 0).reset(this.reset);
23
+ $questionStartTime = (0, _effector.restore)(this.setQuestionStartTime, 0).reset(this.reset);
24
+ constructor(matrixModel) {
25
+ this.matrixModel = matrixModel;
26
+ }
27
+ start(mode) {
28
+ const data = this.matrixModel.$data.getState();
29
+ if (!data) return;
30
+ const facts = mode ? (0, _fluencySolvingHelpers.toSolvingFacts)(data.operations[mode].facts, mode) : Object.entries(data.operations).flatMap(([op, operation]) => (0, _fluencySolvingHelpers.toSolvingFacts)(operation.facts, op));
31
+ this.setFacts(facts);
32
+ this.setCurrent((0, _fluencySolvingHelpers.selectNextFact)(facts, Date.now()));
33
+ this.setOutcomes([]);
34
+ this.setSessionStartTime(Date.now());
35
+ this.setQuestionStartTime(Date.now());
36
+ }
37
+ submit() {
38
+ const facts = this.$facts.getState();
39
+ const current = this.$current.getState();
40
+ const answer = this.$answer.getState();
41
+ const outcomes = this.$outcomes.getState();
42
+ if (!current || outcomes.length >= _fluencyConstants.SESSION_LENGTH) return;
43
+ const timeTakenMs = Date.now() - this.$questionStartTime.getState();
44
+ const isCorrect = answer !== null && answer === current.answer;
45
+ const isFast = timeTakenMs < _fluencyConstants.TIME_THRESHOLD_MS;
46
+ const newBox = (0, _fluencySolvingHelpers.calculateNextBox)({
47
+ currentBox: current.box,
48
+ isCorrect,
49
+ isFast,
50
+ sessionStartBox: current.sessionStartBox,
51
+ hasFailedThisSession: current.hasFailedThisSession
52
+ });
53
+ const updatedFact = {
54
+ ...current,
55
+ box: newBox,
56
+ lastSeenMs: Date.now(),
57
+ hasFailedThisSession: current.hasFailedThisSession || !isCorrect
58
+ };
59
+ const updatedFacts = facts.map(f => f.id === current.id ? updatedFact : f);
60
+ this.setFacts(updatedFacts);
61
+ this.setCurrent((0, _fluencySolvingHelpers.selectNextFact)(updatedFacts, Date.now()));
62
+ this.setQuestionStartTime(Date.now());
63
+ this.setOutcomes([...outcomes, isCorrect ? 'correct' : 'wrong']);
64
+ this.setAnswer(null);
65
+ }
14
66
  }
15
67
  exports.FluencySolvingModel = FluencySolvingModel;
16
68
  //# sourceMappingURL=FluencySolvingModel.js.map