@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
@@ -10,7 +10,7 @@ export const useFluencyModePreset = () => {
10
10
  const {
11
11
  model
12
12
  } = useFluency();
13
- const mode = useUnit(model.$mode);
13
+ const mode = useUnit(model.matrix.$mode);
14
14
  const preset = FLUENCY_MODE_PRESETS[mode];
15
15
  const legendItems = [{
16
16
  label: t('student.fluency.notStarted'),
@@ -18,20 +18,29 @@ export const useFluencyModePreset = () => {
18
18
  withBorder: true
19
19
  }, {
20
20
  label: t('student.fluency.masteryLearning'),
21
- color: preset.matrix.mastery[FluencyMasteryLevel.LEARNING]
21
+ color: preset.matrix.levelColors[FluencyMasteryLevel.LEARNING]
22
22
  }, {
23
23
  label: t('student.fluency.masteryGrowing'),
24
- color: preset.matrix.mastery[FluencyMasteryLevel.GROWING]
24
+ color: preset.matrix.levelColors[FluencyMasteryLevel.GROWING]
25
25
  }, {
26
26
  label: t('student.fluency.masteryStrong'),
27
- color: preset.matrix.mastery[FluencyMasteryLevel.STRONG]
27
+ color: preset.matrix.levelColors[FluencyMasteryLevel.STRONG]
28
28
  }, {
29
29
  label: t('student.fluency.masteryMastered'),
30
- color: preset.matrix.mastery[FluencyMasteryLevel.MASTERED]
30
+ color: preset.matrix.levelColors[FluencyMasteryLevel.MASTERED]
31
31
  }];
32
32
  return {
33
- ...preset,
34
- legendItems
33
+ icon: preset.operatorIcon,
34
+ label: t(preset.matrix.operatorLabel),
35
+ colors: {
36
+ level: preset.matrix.levelColors,
37
+ accent: preset.accentColor,
38
+ streak: preset.header.streakColor,
39
+ button: preset.buttonColor
40
+ },
41
+ legend: {
42
+ items: legendItems
43
+ }
35
44
  };
36
45
  };
37
46
  //# sourceMappingURL=useFluencyModePreset.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useUnit","COLORS","FLUENCY_MODE_PRESETS","FluencyMasteryLevel","useFluency","useText","useFluencyModePreset","t","model","mode","$mode","preset","legendItems","label","color","NEUTRAL_2","withBorder","matrix","mastery","LEARNING","GROWING","STRONG","MASTERED"],"sourceRoot":"../../../../../src","sources":["features/fluency/hooks/useFluencyModePreset.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,gBAAgB;AACxC,SAASC,MAAM,QAAQ,4BAA4B;AACnD,SAASC,oBAAoB,EAAEC,mBAAmB,QAAQ,yBAAsB;AAEhF,SAASC,UAAU,QAAQ,8BAA2B;AACtD,SAASC,OAAO,QAAQ,uBAAoB;AAI5C,OAAO,MAAMC,oBAAoB,GAAGA,CAAA,KAAkC;EACpE,MAAMC,CAAC,GAAGF,OAAO,CAAC,CAAC;EACnB,MAAM;IAAEG;EAAM,CAAC,GAAGJ,UAAU,CAAC,CAAC;EAC9B,MAAMK,IAAI,GAAGT,OAAO,CAACQ,KAAK,CAACE,KAAK,CAAC;EACjC,MAAMC,MAAM,GAAGT,oBAAoB,CAACO,IAAI,CAAC;EAEzC,MAAMG,WAAyB,GAAG,CAChC;IAAEC,KAAK,EAAEN,CAAC,CAAC,4BAA4B,CAAC;IAAEO,KAAK,EAAEb,MAAM,CAACc,SAAS;IAAEC,UAAU,EAAE;EAAK,CAAC,EACrF;IACEH,KAAK,EAAEN,CAAC,CAAC,iCAAiC,CAAC;IAC3CO,KAAK,EAAEH,MAAM,CAACM,MAAM,CAACC,OAAO,CAACf,mBAAmB,CAACgB,QAAQ;EAC3D,CAAC,EACD;IACEN,KAAK,EAAEN,CAAC,CAAC,gCAAgC,CAAC;IAC1CO,KAAK,EAAEH,MAAM,CAACM,MAAM,CAACC,OAAO,CAACf,mBAAmB,CAACiB,OAAO;EAC1D,CAAC,EACD;IACEP,KAAK,EAAEN,CAAC,CAAC,+BAA+B,CAAC;IACzCO,KAAK,EAAEH,MAAM,CAACM,MAAM,CAACC,OAAO,CAACf,mBAAmB,CAACkB,MAAM;EACzD,CAAC,EACD;IACER,KAAK,EAAEN,CAAC,CAAC,iCAAiC,CAAC;IAC3CO,KAAK,EAAEH,MAAM,CAACM,MAAM,CAACC,OAAO,CAACf,mBAAmB,CAACmB,QAAQ;EAC3D,CAAC,CACF;EAED,OAAO;IAAE,GAAGX,MAAM;IAAEC;EAAY,CAAC;AACnC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useUnit","COLORS","FLUENCY_MODE_PRESETS","FluencyMasteryLevel","useFluency","useText","useFluencyModePreset","t","model","mode","matrix","$mode","preset","legendItems","label","color","NEUTRAL_2","withBorder","levelColors","LEARNING","GROWING","STRONG","MASTERED","icon","operatorIcon","operatorLabel","colors","level","accent","accentColor","streak","header","streakColor","button","buttonColor","legend","items"],"sourceRoot":"../../../../../src","sources":["features/fluency/hooks/useFluencyModePreset.ts"],"mappings":";;AACA,SAASA,OAAO,QAAQ,gBAAgB;AACxC,SAASC,MAAM,QAAQ,4BAA4B;AAEnD,SAASC,oBAAoB,EAAEC,mBAAmB,QAAQ,yBAAsB;AAEhF,SAASC,UAAU,QAAQ,8BAA2B;AACtD,SAASC,OAAO,QAAQ,uBAAoB;AAc5C,OAAO,MAAMC,oBAAoB,GAAGA,CAAA,KAAkC;EACpE,MAAMC,CAAC,GAAGF,OAAO,CAAC,CAAC;EACnB,MAAM;IAAEG;EAAM,CAAC,GAAGJ,UAAU,CAAC,CAAC;EAC9B,MAAMK,IAAI,GAAGT,OAAO,CAACQ,KAAK,CAACE,MAAM,CAACC,KAAK,CAAC;EACxC,MAAMC,MAAM,GAAGV,oBAAoB,CAACO,IAAI,CAAC;EAEzC,MAAMI,WAAyB,GAAG,CAChC;IAAEC,KAAK,EAAEP,CAAC,CAAC,4BAA4B,CAAC;IAAEQ,KAAK,EAAEd,MAAM,CAACe,SAAS;IAAEC,UAAU,EAAE;EAAK,CAAC,EACrF;IAAEH,KAAK,EAAEP,CAAC,CAAC,iCAAiC,CAAC;IAAEQ,KAAK,EAAEH,MAAM,CAACF,MAAM,CAACQ,WAAW,CAACf,mBAAmB,CAACgB,QAAQ;EAAE,CAAC,EAC/G;IAAEL,KAAK,EAAEP,CAAC,CAAC,gCAAgC,CAAC;IAAEQ,KAAK,EAAEH,MAAM,CAACF,MAAM,CAACQ,WAAW,CAACf,mBAAmB,CAACiB,OAAO;EAAE,CAAC,EAC7G;IAAEN,KAAK,EAAEP,CAAC,CAAC,+BAA+B,CAAC;IAAEQ,KAAK,EAAEH,MAAM,CAACF,MAAM,CAACQ,WAAW,CAACf,mBAAmB,CAACkB,MAAM;EAAE,CAAC,EAC3G;IAAEP,KAAK,EAAEP,CAAC,CAAC,iCAAiC,CAAC;IAAEQ,KAAK,EAAEH,MAAM,CAACF,MAAM,CAACQ,WAAW,CAACf,mBAAmB,CAACmB,QAAQ;EAAE,CAAC,CAChH;EAED,OAAO;IACLC,IAAI,EAAEX,MAAM,CAACY,YAAY;IACzBV,KAAK,EAAEP,CAAC,CAACK,MAAM,CAACF,MAAM,CAACe,aAAa,CAAC;IACrCC,MAAM,EAAE;MACNC,KAAK,EAAEf,MAAM,CAACF,MAAM,CAACQ,WAAW;MAChCU,MAAM,EAAEhB,MAAM,CAACiB,WAAW;MAC1BC,MAAM,EAAElB,MAAM,CAACmB,MAAM,CAACC,WAAW;MACjCC,MAAM,EAAErB,MAAM,CAACsB;IACjB,CAAC;IACDC,MAAM,EAAE;MAAEC,KAAK,EAAEvB;IAAY;EAC/B,CAAC;AACH,CAAC","ignoreList":[]}
@@ -1,13 +1,14 @@
1
1
  "use strict";
2
2
 
3
- import React, { useEffect, useState } from 'react';
4
- import { StyleSheet, View } from 'react-native';
3
+ import React, { useEffect, useRef, useState } from 'react';
5
4
  import { useUnit } from 'effector-react';
6
- import { ButtonStates, COLORS, FONT_FAMILY, SelectGroup, SelectOptionColor, SelectOptionSize, SPACING } from '@magmamath/react-native-ui';
7
- import { BackspaceIcon } from "../../../../shared/icons/keyboard/BackspaceIcon.js";
8
- import { useFluency } from "../../context/FluencyContext.js";
9
- import { useFluencyModePreset } from "../../hooks/useFluencyModePreset.js";
10
- import { isWeb } from "../../../../shared/common.constants.js";
5
+ import { ButtonStates, COLORS } from '@magmamath/react-native-ui';
6
+ import { BackspaceIcon } from "../../../shared/icons/keyboard/BackspaceIcon.js";
7
+ import { useFluency } from "../context/FluencyContext.js";
8
+ import { useFluencyModePreset } from "./useFluencyModePreset.js";
9
+ import { isWeb } from "../../../shared/common.constants.js";
10
+ import { KeyboardKeys } from "../../../lib/constants.js";
11
+ import { MAX_INPUT_LENGTH } from "../fluency.constants.js";
11
12
  import { jsx as _jsx } from "react/jsx-runtime";
12
13
  const ACTION_KEY_COLOR_SCHEME = {
13
14
  [ButtonStates.DEFAULT]: {
@@ -60,51 +61,36 @@ const NUMPAD_KEYS = [{
60
61
  title: '9',
61
62
  value: 9
62
63
  }, {
63
- key: 'backspace',
64
+ key: KeyboardKeys.BACKSPACE,
64
65
  title: /*#__PURE__*/_jsx(BackspaceIcon, {
65
66
  size: 20,
66
67
  color: COLORS.NEUTRAL_9
67
68
  }),
68
- value: 'backspace',
69
+ value: KeyboardKeys.BACKSPACE,
69
70
  customColorScheme: ACTION_KEY_COLOR_SCHEME
70
71
  }, {
71
72
  key: '0',
72
73
  title: '0',
73
74
  value: 0
74
75
  }, {
75
- key: 'enter',
76
+ key: KeyboardKeys.ENTER,
76
77
  title: 'Enter',
77
- value: 'enter',
78
+ value: KeyboardKeys.ENTER,
78
79
  customColorScheme: ACTION_KEY_COLOR_SCHEME
79
80
  }];
80
- export const FluencyNumpad = ({
81
+ export const useFluencyNumpad = ({
81
82
  onEnterPress
82
83
  }) => {
83
84
  const {
84
85
  model
85
86
  } = useFluency();
86
- const uiMode = useFluencyModePreset();
87
- const input = useUnit(model.input.$state);
87
+ const modePreset = useFluencyModePreset();
88
+ const answer = useUnit(model.solving.$answer);
88
89
  const [pressedKey, setPressedKey] = useState(null);
89
- useEffect(() => {
90
- if (!isWeb) return;
91
- let timeoutId;
92
- const handleKeyDown = event => {
93
- let numpadKey = null;
94
- if (/^\d$/.test(event.key)) numpadKey = event.key;else if (event.key === 'Backspace') numpadKey = 'backspace';else if (event.key === 'Enter') numpadKey = 'enter';
95
- if (!numpadKey) return;
96
- clearTimeout(timeoutId);
97
- setPressedKey(numpadKey);
98
- timeoutId = setTimeout(() => setPressedKey(null), 175);
99
- };
100
- window.addEventListener('keydown', handleKeyDown);
101
- return () => {
102
- window.removeEventListener('keydown', handleKeyDown);
103
- clearTimeout(timeoutId);
104
- };
105
- }, []);
106
- const accentColor = uiMode.accentColor;
107
- const accentBorderColor = uiMode.matrix.mastery.mastered;
90
+ const answerRef = useRef(answer);
91
+ answerRef.current = answer;
92
+ const accentColor = modePreset.colors.accent;
93
+ const accentBorderColor = modePreset.colors.level.mastered;
108
94
  const enterAccentScheme = {
109
95
  [ButtonStates.DEFAULT]: {
110
96
  backgroundColor: accentColor,
@@ -136,61 +122,51 @@ export const FluencyNumpad = ({
136
122
  customColorScheme,
137
123
  ...props
138
124
  }) => {
139
- const isEnterKey = value === 'enter';
140
- const colorScheme = isEnterKey && input ? enterAccentScheme : customColorScheme;
125
+ const isEnterKey = value === KeyboardKeys.ENTER;
126
+ const colorScheme = isEnterKey && answer ? enterAccentScheme : customColorScheme;
141
127
  return {
142
128
  ...props,
143
129
  selected: pressedKey === props.key,
144
130
  customColorScheme: colorScheme,
145
131
  onPressIn: () => {
146
- if (value === 'backspace') return model.input.set({
147
- erase: 'latest'
148
- });
149
- if (value === 'enter') return onEnterPress();
150
- model.input.set({
151
- value
152
- });
153
- }
154
- };
155
- });
156
- return /*#__PURE__*/_jsx(View, {
157
- style: styles.container,
158
- children: /*#__PURE__*/_jsx(SelectGroup, {
159
- numOfRows: 4,
160
- color: SelectOptionColor.GREY,
161
- size: SelectOptionSize.SMALL,
162
- options: options,
163
- style: {
164
- container: styles.grid,
165
- row: styles.row,
166
- option: {
167
- button: styles.optionButton,
168
- text: styles.optionText
132
+ if (value === KeyboardKeys.ENTER) {
133
+ onEnterPress();
134
+ return;
135
+ }
136
+ if (value === KeyboardKeys.BACKSPACE) {
137
+ const currentStr = answerRef.current !== null ? answerRef.current.toString() : '';
138
+ const newStr = currentStr.slice(0, -1);
139
+ model.solving.setAnswer(newStr ? parseInt(newStr, 10) : null);
140
+ return;
169
141
  }
142
+ const currentStr = answerRef.current !== null ? answerRef.current.toString() : '';
143
+ if (currentStr.length >= MAX_INPUT_LENGTH) return;
144
+ model.solving.setAnswer(parseInt(currentStr + value.toString(), 10));
170
145
  }
171
- })
146
+ };
172
147
  });
148
+ useEffect(() => {
149
+ if (!isWeb) return;
150
+ let timeoutId;
151
+ const handleKeyDown = event => {
152
+ let numpadKey = null;
153
+ const isEnterKey = event.key === KeyboardKeys.ENTER;
154
+ const isBackspaceKey = event.key === KeyboardKeys.BACKSPACE;
155
+ const isDigit = /^\d$/.test(event.key);
156
+ if (isDigit || isEnterKey || isBackspaceKey) numpadKey = event.key;
157
+ if (!numpadKey) return;
158
+ clearTimeout(timeoutId);
159
+ setPressedKey(numpadKey);
160
+ timeoutId = setTimeout(() => setPressedKey(null), 175);
161
+ };
162
+ window.addEventListener('keydown', handleKeyDown);
163
+ return () => {
164
+ window.removeEventListener('keydown', handleKeyDown);
165
+ clearTimeout(timeoutId);
166
+ };
167
+ }, []);
168
+ return {
169
+ options
170
+ };
173
171
  };
174
- const styles = StyleSheet.create({
175
- container: {
176
- alignItems: 'center',
177
- paddingVertical: SPACING[400],
178
- marginTop: SPACING[200]
179
- },
180
- grid: {
181
- width: 360,
182
- gap: SPACING[200]
183
- },
184
- row: {
185
- gap: SPACING[200]
186
- },
187
- optionButton: {
188
- height: 60
189
- },
190
- optionText: {
191
- fontSize: 24,
192
- fontWeight: '700',
193
- fontFamily: FONT_FAMILY.buenosAires
194
- }
195
- });
196
- //# sourceMappingURL=FluencyNumpad.js.map
172
+ //# sourceMappingURL=useFluencyNumpad.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useRef","useState","useUnit","ButtonStates","COLORS","BackspaceIcon","useFluency","useFluencyModePreset","isWeb","KeyboardKeys","MAX_INPUT_LENGTH","jsx","_jsx","ACTION_KEY_COLOR_SCHEME","DEFAULT","backgroundColor","NEUTRAL_3","borderColor","NEUTRAL_5","raiseColor","color","NEUTRAL_9","HOVER","NEUTRAL_2","NEUTRAL_4","NUMPAD_KEYS","key","title","value","BACKSPACE","size","customColorScheme","ENTER","useFluencyNumpad","onEnterPress","model","modePreset","answer","solving","$answer","pressedKey","setPressedKey","answerRef","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","timeoutId","handleKeyDown","event","numpadKey","isBackspaceKey","isDigit","test","clearTimeout","setTimeout","window","addEventListener","removeEventListener"],"sourceRoot":"../../../../../src","sources":["features/fluency/hooks/useFluencyNumpad.tsx"],"mappings":"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","ignoreList":[]}
@@ -2,7 +2,6 @@
2
2
 
3
3
  import { useEffect, useRef } from 'react';
4
4
  import { createAudioPlayer } from 'expo-audio';
5
- // @ts-ignore
6
5
  import SUCCESS_SOUND from '../assets/success.mp3';
7
6
  export const useSuccessSound = () => {
8
7
  const playerRef = useRef(null);
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","createAudioPlayer","SUCCESS_SOUND","useSuccessSound","playerRef","player","current","remove","play","seekTo"],"sourceRoot":"../../../../../src","sources":["features/fluency/hooks/useSuccessSound.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACzC,SAAsBC,iBAAiB,QAAQ,YAAY;AAC3D;AACA,OAAOC,aAAa,MAAM,uBAAuB;AAEjD,OAAO,MAAMC,eAAe,GAAGA,CAAA,KAAM;EACnC,MAAMC,SAAS,GAAGJ,MAAM,CAAqB,IAAI,CAAC;EAElDD,SAAS,CAAC,MAAM;IACd,MAAMM,MAAM,GAAGJ,iBAAiB,CAACC,aAAa,CAAC;IAC/CE,SAAS,CAACE,OAAO,GAAGD,MAAM;IAC1B,OAAO,MAAMA,MAAM,CAACE,MAAM,CAAC,CAAC;EAC9B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,IAAI,GAAGA,CAAA,KAAM;IACjBJ,SAAS,CAACE,OAAO,EAAEG,MAAM,CAAC,CAAC,CAAC;IAC5BL,SAAS,CAACE,OAAO,EAAEE,IAAI,CAAC,CAAC;EAC3B,CAAC;EAED,OAAO;IAAEA;EAAK,CAAC;AACjB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useRef","createAudioPlayer","SUCCESS_SOUND","useSuccessSound","playerRef","player","current","remove","play","seekTo"],"sourceRoot":"../../../../../src","sources":["features/fluency/hooks/useSuccessSound.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACzC,SAAsBC,iBAAiB,QAAQ,YAAY;AAC3D,OAAOC,aAAa,MAAM,uBAAuB;AAEjD,OAAO,MAAMC,eAAe,GAAGA,CAAA,KAAM;EACnC,MAAMC,SAAS,GAAGJ,MAAM,CAAqB,IAAI,CAAC;EAElDD,SAAS,CAAC,MAAM;IACd,MAAMM,MAAM,GAAGJ,iBAAiB,CAACC,aAAa,CAAC;IAC/CE,SAAS,CAACE,OAAO,GAAGD,MAAM;IAC1B,OAAO,MAAMA,MAAM,CAACE,MAAM,CAAC,CAAC;EAC9B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,IAAI,GAAGA,CAAA,KAAM;IACjBJ,SAAS,CAACE,OAAO,EAAEG,MAAM,CAAC,CAAC,CAAC;IAC5BL,SAAS,CAACE,OAAO,EAAEE,IAAI,CAAC,CAAC;EAC3B,CAAC;EAED,OAAO;IAAEA;EAAK,CAAC;AACjB,CAAC","ignoreList":[]}
@@ -1,6 +1,11 @@
1
1
  "use strict";
2
2
 
3
+ import { createEffect } from 'effector';
3
4
  export class FluencyApiModel {
4
- constructor({}) {}
5
+ constructor(api) {
6
+ this.getMatrixFx = createEffect(api.getMatrix);
7
+ this.getWeeklyStatsFx = createEffect(() => api.getWeeklyStats());
8
+ this.postAttemptFx = createEffect(api.postAttempt);
9
+ }
5
10
  }
6
11
  //# sourceMappingURL=FluencyApiModel.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["FluencyApiModel","constructor"],"sourceRoot":"../../../../../src","sources":["features/fluency/model/FluencyApiModel.ts"],"mappings":";;AAEA,OAAO,MAAMA,eAAe,CAAC;EAC3BC,WAAWA,CAAC,CAAkB,CAAC,EAAE,CAAC;AACpC","ignoreList":[]}
1
+ {"version":3,"names":["createEffect","FluencyApiModel","constructor","api","getMatrixFx","getMatrix","getWeeklyStatsFx","getWeeklyStats","postAttemptFx","postAttempt"],"sourceRoot":"../../../../../src","sources":["features/fluency/model/FluencyApiModel.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAgB,UAAU;AAU/C,OAAO,MAAMC,eAAe,CAAC;EAK3BC,WAAWA,CAACC,GAA6B,EAAE;IACzC,IAAI,CAACC,WAAW,GAAGJ,YAAY,CAACG,GAAG,CAACE,SAAS,CAAC;IAC9C,IAAI,CAACC,gBAAgB,GAAGN,YAAY,CAAC,MAAMG,GAAG,CAACI,cAAc,CAAC,CAAC,CAAC;IAChE,IAAI,CAACC,aAAa,GAAGR,YAAY,CAACG,GAAG,CAACM,WAAW,CAAC;EACpD;AACF","ignoreList":[]}
@@ -1,4 +1,11 @@
1
1
  "use strict";
2
2
 
3
- export class FluencyDaysStreakModel {}
3
+ import { createStore } from 'effector';
4
+ export class FluencyDaysStreakModel {
5
+ $stats = createStore(null);
6
+ constructor(api) {
7
+ this.api = api;
8
+ this.$stats.on(this.api.getWeeklyStatsFx.doneData, (_, data) => data);
9
+ }
10
+ }
4
11
  //# sourceMappingURL=FluencyDaysStreakModel.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["FluencyDaysStreakModel"],"sourceRoot":"../../../../../src","sources":["features/fluency/model/FluencyDaysStreakModel.ts"],"mappings":";;AAAA,OAAO,MAAMA,sBAAsB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createStore","FluencyDaysStreakModel","$stats","constructor","api","on","getWeeklyStatsFx","doneData","_","data"],"sourceRoot":"../../../../../src","sources":["features/fluency/model/FluencyDaysStreakModel.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,UAAU;AAItC,OAAO,MAAMC,sBAAsB,CAAC;EAClBC,MAAM,GAAGF,WAAW,CAAgC,IAAI,CAAC;EAEzEG,WAAWA,CAAkBC,GAAoB,EAAE;IAAA,KAAtBA,GAAoB,GAApBA,GAAoB;IAC/C,IAAI,CAACF,MAAM,CAACG,EAAE,CAAC,IAAI,CAACD,GAAG,CAACE,gBAAgB,CAACC,QAAQ,EAAE,CAACC,CAAC,EAAEC,IAAI,KAAKA,IAAI,CAAC;EACvE;AACF","ignoreList":[]}
@@ -1,4 +1,19 @@
1
1
  "use strict";
2
2
 
3
- export class FluencyMatrixModel {}
3
+ import { combine, createEvent, createStore, restore } from 'effector';
4
+ import { FluencyMode } from "../fluency.constants.js";
5
+ import { buildMatrixGrid } from "../fluency.helpers.js";
6
+ export class FluencyMatrixModel {
7
+ setMode = createEvent();
8
+ $mode = restore(this.setMode, FluencyMode.ADDITION);
9
+ $data = createStore(null);
10
+ $matrix = combine(this.$data, this.$mode, (data, mode) => {
11
+ if (!data) return null;
12
+ return buildMatrixGrid(data, mode);
13
+ });
14
+ constructor(api) {
15
+ this.api = api;
16
+ this.$data.on(api.getMatrixFx.doneData, (_, data) => data);
17
+ }
18
+ }
4
19
  //# sourceMappingURL=FluencyMatrixModel.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["FluencyMatrixModel"],"sourceRoot":"../../../../../src","sources":["features/fluency/model/FluencyMatrixModel.ts"],"mappings":";;AAAA,OAAO,MAAMA,kBAAkB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["combine","createEvent","createStore","restore","FluencyMode","buildMatrixGrid","FluencyMatrixModel","setMode","$mode","ADDITION","$data","$matrix","data","mode","constructor","api","on","getMatrixFx","doneData","_"],"sourceRoot":"../../../../../src","sources":["features/fluency/model/FluencyMatrixModel.ts"],"mappings":";;AAAA,SAASA,OAAO,EAAEC,WAAW,EAAEC,WAAW,EAAEC,OAAO,QAAQ,UAAU;AACrE,SAASC,WAAW,QAAQ,yBAAsB;AAClD,SAASC,eAAe,QAAQ,uBAAoB;AAIpD,OAAO,MAAMC,kBAAkB,CAAC;EACdC,OAAO,GAAGN,WAAW,CAAc,CAAC;EACpCO,KAAK,GAAGL,OAAO,CAAC,IAAI,CAACI,OAAO,EAAEH,WAAW,CAACK,QAAQ,CAAC;EAEnDC,KAAK,GAAGR,WAAW,CAA2B,IAAI,CAAC;EACnDS,OAAO,GAAGX,OAAO,CAAC,IAAI,CAACU,KAAK,EAAE,IAAI,CAACF,KAAK,EAAE,CAACI,IAAI,EAAEC,IAAI,KAAwB;IAC3F,IAAI,CAACD,IAAI,EAAE,OAAO,IAAI;IACtB,OAAOP,eAAe,CAACO,IAAI,EAAEC,IAAI,CAAC;EACpC,CAAC,CAAC;EAEFC,WAAWA,CAAkBC,GAAoB,EAAE;IAAA,KAAtBA,GAAoB,GAApBA,GAAoB;IAC/C,IAAI,CAACL,KAAK,CAACM,EAAE,CAACD,GAAG,CAACE,WAAW,CAACC,QAAQ,EAAE,CAACC,CAAC,EAAEP,IAAI,KAAKA,IAAI,CAAC;EAC5D;AACF","ignoreList":[]}
@@ -1,44 +1,28 @@
1
1
  "use strict";
2
2
 
3
- import { attach, createEvent, restore, sample } from 'effector';
4
- import { FluencyMode } from "../fluency.constants.js";
3
+ import { sample } from 'effector';
4
+ import { createGate } from 'effector-react';
5
+ import { not } from 'patronum/not';
5
6
  import { FluencyDaysStreakModel } from "./FluencyDaysStreakModel.js";
6
7
  import { FluencyMatrixModel } from "./FluencyMatrixModel.js";
7
8
  import { FluencyApiModel } from "./FluencyApiModel.js";
8
9
  import { FluencySolvingModel } from "./FluencySolvingModel.js";
9
- import { FluencyInputModel } from "./FluencyInputModel.js";
10
10
  export class FluencyModel {
11
- setMode = createEvent();
12
- $mode = restore(this.setMode, FluencyMode.ADDITION);
13
- checkAnswer() {
14
- return Number(this.input.$state.getState()) === this.solving.$problem.getState().answer;
15
- }
11
+ gate = createGate();
16
12
  constructor({
17
13
  api
18
14
  }) {
19
15
  this.api = new FluencyApiModel(api);
20
- this.streak = new FluencyDaysStreakModel();
21
- this.matrix = new FluencyMatrixModel();
22
- this.solving = new FluencySolvingModel();
23
- this.input = new FluencyInputModel();
24
- this.submitFx = attach({
25
- source: {
26
- input: this.input.$state,
27
- problem: this.solving.$problem
28
- },
29
- effect: ({
30
- input,
31
- problem
32
- }) => ({
33
- isCorrect: Number(input) === problem.answer
34
- })
35
- });
16
+ this.streak = new FluencyDaysStreakModel(this.api);
17
+ this.matrix = new FluencyMatrixModel(this.api);
18
+ this.solving = new FluencySolvingModel(this.matrix);
19
+ this.init();
20
+ }
21
+ init() {
36
22
  sample({
37
- clock: this.submitFx.done,
38
- fn: () => ({
39
- erase: 'all'
40
- }),
41
- target: this.input.set
23
+ clock: this.gate.open,
24
+ filter: not(this.api.getMatrixFx.pending),
25
+ target: [this.api.getMatrixFx, this.api.getWeeklyStatsFx]
42
26
  });
43
27
  }
44
28
  }
@@ -1 +1 @@
1
- {"version":3,"names":["attach","createEvent","restore","sample","FluencyMode","FluencyDaysStreakModel","FluencyMatrixModel","FluencyApiModel","FluencySolvingModel","FluencyInputModel","FluencyModel","setMode","$mode","ADDITION","checkAnswer","Number","input","$state","getState","solving","$problem","answer","constructor","api","streak","matrix","submitFx","source","problem","effect","isCorrect","clock","done","fn","erase","target","set"],"sourceRoot":"../../../../../src","sources":["features/fluency/model/FluencyModel.ts"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,WAAW,EAAEC,OAAO,EAAEC,MAAM,QAAQ,UAAU;AAE/D,SAASC,WAAW,QAAQ,yBAAsB;AAClD,SAASC,sBAAsB,QAAQ,6BAA0B;AACjE,SAASC,kBAAkB,QAAQ,yBAAsB;AACzD,SAASC,eAAe,QAAQ,sBAAmB;AACnD,SAASC,mBAAmB,QAAQ,0BAAuB;AAC3D,SAASC,iBAAiB,QAAQ,wBAAqB;AAQvD,OAAO,MAAMC,YAAY,CAAC;EAQRC,OAAO,GAAGV,WAAW,CAAc,CAAC;EACpCW,KAAK,GAAGV,OAAO,CAAC,IAAI,CAACS,OAAO,EAAEP,WAAW,CAACS,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,IAAIhB,eAAe,CAACgB,GAAG,CAAC;IACnC,IAAI,CAACC,MAAM,GAAG,IAAInB,sBAAsB,CAAC,CAAC;IAC1C,IAAI,CAACoB,MAAM,GAAG,IAAInB,kBAAkB,CAAC,CAAC;IACtC,IAAI,CAACa,OAAO,GAAG,IAAIX,mBAAmB,CAAC,CAAC;IACxC,IAAI,CAACQ,KAAK,GAAG,IAAIP,iBAAiB,CAAC,CAAC;IAEpC,IAAI,CAACiB,QAAQ,GAAG1B,MAAM,CAAC;MACrB2B,MAAM,EAAE;QAAEX,KAAK,EAAE,IAAI,CAACA,KAAK,CAACC,MAAM;QAAEW,OAAO,EAAE,IAAI,CAACT,OAAO,CAACC;MAAS,CAAC;MACpES,MAAM,EAAEA,CAAC;QAAEb,KAAK;QAAEY;MAAQ,CAAC,MAAM;QAAEE,SAAS,EAAEf,MAAM,CAACC,KAAK,CAAC,KAAKY,OAAO,CAACP;MAAO,CAAC;IAClF,CAAC,CAAC;IAEFlB,MAAM,CAAC;MACL4B,KAAK,EAAE,IAAI,CAACL,QAAQ,CAACM,IAAI;MACzBC,EAAE,EAAEA,CAAA,MAAO;QAAEC,KAAK,EAAE;MAAe,CAAC,CAAC;MACrCC,MAAM,EAAE,IAAI,CAACnB,KAAK,CAACoB;IACrB,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
1
+ {"version":3,"names":["sample","createGate","not","FluencyDaysStreakModel","FluencyMatrixModel","FluencyApiModel","FluencySolvingModel","FluencyModel","gate","constructor","api","streak","matrix","solving","init","clock","open","filter","getMatrixFx","pending","target","getWeeklyStatsFx"],"sourceRoot":"../../../../../src","sources":["features/fluency/model/FluencyModel.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,UAAU;AACjC,SAASC,UAAU,QAAQ,gBAAgB;AAC3C,SAASC,GAAG,QAAQ,cAAc;AAClC,SAASC,sBAAsB,QAAQ,6BAA0B;AACjE,SAASC,kBAAkB,QAAQ,yBAAsB;AACzD,SAASC,eAAe,QAAQ,sBAAmB;AACnD,SAASC,mBAAmB,QAAQ,0BAAuB;AAG3D,OAAO,MAAMC,YAAY,CAAC;EACRC,IAAI,GAAGP,UAAU,CAAwB,CAAC;EAO1DQ,WAAWA,CAAC;IAAEC;EAAuB,CAAC,EAAE;IACtC,IAAI,CAACA,GAAG,GAAG,IAAIL,eAAe,CAACK,GAAG,CAAC;IACnC,IAAI,CAACC,MAAM,GAAG,IAAIR,sBAAsB,CAAC,IAAI,CAACO,GAAG,CAAC;IAClD,IAAI,CAACE,MAAM,GAAG,IAAIR,kBAAkB,CAAC,IAAI,CAACM,GAAG,CAAC;IAC9C,IAAI,CAACG,OAAO,GAAG,IAAIP,mBAAmB,CAAC,IAAI,CAACM,MAAM,CAAC;IAEnD,IAAI,CAACE,IAAI,CAAC,CAAC;EACb;EAEQA,IAAIA,CAAA,EAAG;IACbd,MAAM,CAAC;MACLe,KAAK,EAAE,IAAI,CAACP,IAAI,CAACQ,IAAI;MACrBC,MAAM,EAAEf,GAAG,CAAC,IAAI,CAACQ,GAAG,CAACQ,WAAW,CAACC,OAAO,CAAC;MACzCC,MAAM,EAAE,CAAC,IAAI,CAACV,GAAG,CAACQ,WAAW,EAAE,IAAI,CAACR,GAAG,CAACW,gBAAgB;IAC1D,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
@@ -1,11 +1,63 @@
1
1
  "use strict";
2
2
 
3
- import { createStore } from 'effector';
3
+ import { createEvent, restore } from 'effector';
4
+ import { SESSION_LENGTH, TIME_THRESHOLD_MS } from "../fluency.constants.js";
5
+ import { calculateNextBox, selectNextFact, toSolvingFacts } from "../components/fluency-solving/fluencySolving.helpers.js";
4
6
  export class FluencySolvingModel {
5
- $problem = createStore({
6
- left: 6,
7
- right: 6,
8
- answer: 36
9
- });
7
+ reset = createEvent();
8
+ setAnswer = createEvent();
9
+ setFacts = createEvent();
10
+ setCurrent = createEvent();
11
+ setOutcomes = createEvent();
12
+ setSessionStartTime = createEvent();
13
+ setQuestionStartTime = createEvent();
14
+ $answer = restore(this.setAnswer, null).reset(this.reset);
15
+ $facts = restore(this.setFacts, []).reset(this.reset);
16
+ $current = restore(this.setCurrent, null).reset(this.reset);
17
+ $outcomes = restore(this.setOutcomes, []).reset(this.reset);
18
+ $sessionStartTime = restore(this.setSessionStartTime, 0).reset(this.reset);
19
+ $questionStartTime = restore(this.setQuestionStartTime, 0).reset(this.reset);
20
+ constructor(matrixModel) {
21
+ this.matrixModel = matrixModel;
22
+ }
23
+ start(mode) {
24
+ const data = this.matrixModel.$data.getState();
25
+ if (!data) return;
26
+ const facts = mode ? toSolvingFacts(data.operations[mode].facts, mode) : Object.entries(data.operations).flatMap(([op, operation]) => toSolvingFacts(operation.facts, op));
27
+ this.setFacts(facts);
28
+ this.setCurrent(selectNextFact(facts, Date.now()));
29
+ this.setOutcomes([]);
30
+ this.setSessionStartTime(Date.now());
31
+ this.setQuestionStartTime(Date.now());
32
+ }
33
+ submit() {
34
+ const facts = this.$facts.getState();
35
+ const current = this.$current.getState();
36
+ const answer = this.$answer.getState();
37
+ const outcomes = this.$outcomes.getState();
38
+ if (!current || outcomes.length >= SESSION_LENGTH) return;
39
+ const timeTakenMs = Date.now() - this.$questionStartTime.getState();
40
+ const isCorrect = answer !== null && answer === current.answer;
41
+ const isFast = timeTakenMs < TIME_THRESHOLD_MS;
42
+ const newBox = calculateNextBox({
43
+ currentBox: current.box,
44
+ isCorrect,
45
+ isFast,
46
+ sessionStartBox: current.sessionStartBox,
47
+ hasFailedThisSession: current.hasFailedThisSession
48
+ });
49
+ const updatedFact = {
50
+ ...current,
51
+ box: newBox,
52
+ lastSeenMs: Date.now(),
53
+ hasFailedThisSession: current.hasFailedThisSession || !isCorrect
54
+ };
55
+ const updatedFacts = facts.map(f => f.id === current.id ? updatedFact : f);
56
+ this.setFacts(updatedFacts);
57
+ this.setCurrent(selectNextFact(updatedFacts, Date.now()));
58
+ this.setQuestionStartTime(Date.now());
59
+ this.setOutcomes([...outcomes, isCorrect ? 'correct' : 'wrong']);
60
+ this.setAnswer(null);
61
+ }
10
62
  }
11
63
  //# sourceMappingURL=FluencySolvingModel.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createStore","FluencySolvingModel","$problem","left","right","answer"],"sourceRoot":"../../../../../src","sources":["features/fluency/model/FluencySolvingModel.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,UAAU;AAQtC,OAAO,MAAMC,mBAAmB,CAAC;EACfC,QAAQ,GAAGF,WAAW,CAAU;IAAEG,IAAI,EAAE,CAAC;IAAEC,KAAK,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAG,CAAC,CAAC;AACpF","ignoreList":[]}
1
+ {"version":3,"names":["createEvent","restore","SESSION_LENGTH","TIME_THRESHOLD_MS","calculateNextBox","selectNextFact","toSolvingFacts","FluencySolvingModel","reset","setAnswer","setFacts","setCurrent","setOutcomes","setSessionStartTime","setQuestionStartTime","$answer","$facts","$current","$outcomes","$sessionStartTime","$questionStartTime","constructor","matrixModel","start","mode","data","$data","getState","facts","operations","Object","entries","flatMap","op","operation","Date","now","submit","current","answer","outcomes","length","timeTakenMs","isCorrect","isFast","newBox","currentBox","box","sessionStartBox","hasFailedThisSession","updatedFact","lastSeenMs","updatedFacts","map","f","id"],"sourceRoot":"../../../../../src","sources":["features/fluency/model/FluencySolvingModel.ts"],"mappings":"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","ignoreList":[]}
@@ -2,6 +2,7 @@
2
2
 
3
3
  export let KeyboardKeys = /*#__PURE__*/function (KeyboardKeys) {
4
4
  KeyboardKeys["ENTER"] = "Enter";
5
+ KeyboardKeys["BACKSPACE"] = "Backspace";
5
6
  return KeyboardKeys;
6
7
  }({});
7
8
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["KeyboardKeys"],"sourceRoot":"../../../src","sources":["lib/constants.ts"],"mappings":";;AAAA,WAAYA,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["KeyboardKeys"],"sourceRoot":"../../../src","sources":["lib/constants.ts"],"mappings":";;AAAA,WAAYA,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA","ignoreList":[]}
@@ -3,11 +3,12 @@ import type { FluencyModel } from '../model/FluencyModel';
3
3
  import type { FluencyMode } from '../fluency.constants';
4
4
  type FluencyProps = {
5
5
  model: FluencyModel;
6
+ grade: number;
6
7
  onMenuPress?: () => void;
7
8
  onStartPress?: () => void;
8
9
  onPracticePress?: () => void;
9
10
  onModeSelectPress?: (mode: FluencyMode) => void;
10
11
  };
11
- export declare const Fluency: ({ model, onMenuPress, onStartPress, onPracticePress, onModeSelectPress, }: FluencyProps) => React.JSX.Element;
12
+ export declare const Fluency: ({ model, grade, onMenuPress, onStartPress, onPracticePress, onModeSelectPress, }: FluencyProps) => React.JSX.Element;
12
13
  export {};
13
14
  //# sourceMappingURL=Fluency.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Fluency.d.ts","sourceRoot":"","sources":["../../../../../../src/features/fluency/components/Fluency.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAezB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAKvD,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,YAAY,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;IAC5B,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;CAChD,CAAA;AAED,eAAO,MAAM,OAAO,8EAMjB,YAAY,sBAqCd,CAAA"}
1
+ {"version":3,"file":"Fluency.d.ts","sourceRoot":"","sources":["../../../../../../src/features/fluency/components/Fluency.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAWzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAEvD,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,YAAY,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;IAC5B,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;CAChD,CAAA;AAED,eAAO,MAAM,OAAO,qFAOjB,YAAY,sBA0Bd,CAAA"}
@@ -3,7 +3,8 @@ import type { FluencyModel } from '../model/FluencyModel';
3
3
  type FluencySolvingProps = {
4
4
  model: FluencyModel;
5
5
  onClosePress?: () => void;
6
+ onEndModalPress?: () => void;
6
7
  };
7
- export declare const FluencySolving: ({ model, onClosePress }: FluencySolvingProps) => React.JSX.Element;
8
+ export declare const FluencySolving: ({ model, onClosePress, onEndModalPress }: FluencySolvingProps) => React.JSX.Element;
8
9
  export {};
9
10
  //# sourceMappingURL=FluencySolving.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FluencySolving.d.ts","sourceRoot":"","sources":["../../../../../../src/features/fluency/components/FluencySolving.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAMzD,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,YAAY,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,cAAc,4BAA6B,mBAAmB,sBAU1E,CAAA"}
1
+ {"version":3,"file":"FluencySolving.d.ts","sourceRoot":"","sources":["../../../../../../src/features/fluency/components/FluencySolving.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAQzD,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,YAAY,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;CAC7B,CAAA;AAED,eAAO,MAAM,cAAc,6CAA8C,mBAAmB,sBA+B3F,CAAA"}
@@ -1,10 +1,12 @@
1
1
  import React from 'react';
2
- import type { FluencyModePreset } from '../../fluency.types';
3
- type StreakStatus = 'missed' | 'gained' | 'today';
2
+ import { StreakStatus } from '../../fluency.constants';
4
3
  type StreakDayProps = {
5
4
  label: string;
6
5
  status: StreakStatus;
7
- streakColor: FluencyModePreset['header']['streakColor'];
6
+ streakColor: {
7
+ gained: string;
8
+ todayBorder: string;
9
+ };
8
10
  };
9
11
  export declare const StreakDay: ({ label, status, streakColor }: StreakDayProps) => React.JSX.Element;
10
12
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"DayStreak.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/fluency/components/day-streak-counter/DayStreak.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAK5D,KAAK,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAA;AAEjD,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,YAAY,CAAA;IACpB,WAAW,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAA;CACxD,CAAA;AAiCD,eAAO,MAAM,SAAS,mCAAoC,cAAc,sBAavE,CAAA"}
1
+ {"version":3,"file":"DayStreak.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/fluency/components/day-streak-counter/DayStreak.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAKtD,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,YAAY,CAAA;IACpB,WAAW,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;CACrD,CAAA;AAuCD,eAAO,MAAM,SAAS,mCAAoC,cAAc,sBAavE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"DayStreakCounter.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/fluency/components/day-streak-counter/DayStreakCounter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,eAAO,MAAM,gBAAgB,yBAqC5B,CAAA"}
1
+ {"version":3,"file":"DayStreakCounter.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/fluency/components/day-streak-counter/DayStreakCounter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAiCtC,eAAO,MAAM,gBAAgB,yBAwB5B,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EquationContent.d.ts","sourceRoot":"","sources":["../../../../../../../../src/features/fluency/components/fluency-solving/components/EquationContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAWzB,KAAK,oBAAoB,GAAG;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,eAAe,yCAA+C,oBAAoB,sBAsB9F,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { SnapStyles } from '../../hooks/useCardSnapAnimation';
2
+ import type { SnapStyles } from '../../../hooks/useCardSnapAnimation';
3
3
  type FluencyEquationCardProps = {
4
4
  animationStyles: SnapStyles;
5
5
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FluencyEquationCard.d.ts","sourceRoot":"","sources":["../../../../../../../../src/features/fluency/components/fluency-solving/components/FluencyEquationCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAA;AAErE,KAAK,wBAAwB,GAAG;IAC9B,eAAe,EAAE,UAAU,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,mBAAmB,wBAAyB,wBAAwB,sBAuBhF,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FluencyNumpad.d.ts","sourceRoot":"","sources":["../../../../../../../../src/features/fluency/components/fluency-solving/components/FluencyNumpad.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,KAAK,kBAAkB,GAAG;IACxB,YAAY,EAAE,MAAM,IAAI,CAAA;CACzB,CAAA;AAED,eAAO,MAAM,aAAa,qBAAsB,kBAAkB,sBAqBjE,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FluencySolvingCard.d.ts","sourceRoot":"","sources":["../../../../../../../../src/features/fluency/components/fluency-solving/components/FluencySolvingCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAahD,eAAO,MAAM,kBAAkB,yBA6D9B,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FluencySolvingHeader.d.ts","sourceRoot":"","sources":["../../../../../../../../src/features/fluency/components/fluency-solving/components/FluencySolvingHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAgBzB,KAAK,yBAAyB,GAAG;IAC/B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,oBAAoB,qBAAsB,yBAAyB,sBAoB/E,CAAA"}