@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.
- package/dist/commonjs/features/fluency/components/Fluency.js +15 -32
- package/dist/commonjs/features/fluency/components/Fluency.js.map +1 -1
- package/dist/commonjs/features/fluency/components/FluencySolving.js +29 -9
- package/dist/commonjs/features/fluency/components/FluencySolving.js.map +1 -1
- package/dist/commonjs/features/fluency/components/day-streak-counter/DayStreak.js +17 -18
- package/dist/commonjs/features/fluency/components/day-streak-counter/DayStreak.js.map +1 -1
- package/dist/commonjs/features/fluency/components/day-streak-counter/DayStreakCounter.js +26 -24
- package/dist/commonjs/features/fluency/components/day-streak-counter/DayStreakCounter.js.map +1 -1
- package/dist/commonjs/features/fluency/components/fluency-solving/{EquationContent.js → components/EquationContent.js} +5 -5
- package/dist/commonjs/features/fluency/components/fluency-solving/components/EquationContent.js.map +1 -0
- package/dist/commonjs/features/fluency/components/fluency-solving/{FluencyEquationCard.js → components/FluencyEquationCard.js} +16 -8
- package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencyEquationCard.js.map +1 -0
- package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencyNumpad.js +62 -0
- package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencyNumpad.js.map +1 -0
- package/dist/commonjs/features/fluency/components/fluency-solving/{FluencySolvingCard.js → components/FluencySolvingCard.js} +40 -22
- package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingCard.js.map +1 -0
- package/dist/commonjs/features/fluency/components/fluency-solving/{FluencySolvingHeader.js → components/FluencySolvingHeader.js} +6 -8
- package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingHeader.js.map +1 -0
- package/dist/commonjs/features/fluency/components/fluency-solving/{FluencySolvingProgress.js → components/FluencySolvingProgress.js} +32 -4
- package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingProgress.js.map +1 -0
- package/dist/commonjs/features/fluency/components/fluency-solving/fluencySolving.constants.js +29 -0
- package/dist/commonjs/features/fluency/components/fluency-solving/fluencySolving.constants.js.map +1 -0
- package/dist/commonjs/features/fluency/components/fluency-solving/fluencySolving.helpers.js +58 -0
- package/dist/commonjs/features/fluency/components/fluency-solving/fluencySolving.helpers.js.map +1 -0
- package/dist/commonjs/features/fluency/components/fluency-solving/fluencySolving.types.js +2 -0
- package/dist/commonjs/features/fluency/components/fluency-solving/fluencySolving.types.js.map +1 -0
- package/dist/commonjs/features/fluency/components/matrix/FluencyMatrix.js +2 -2
- package/dist/commonjs/features/fluency/components/matrix/FluencyMatrix.js.map +1 -1
- package/dist/commonjs/features/fluency/components/matrix/components/MatrixCell.js +41 -12
- package/dist/commonjs/features/fluency/components/matrix/components/MatrixCell.js.map +1 -1
- package/dist/commonjs/features/fluency/components/matrix/components/MatrixFill.js +16 -26
- package/dist/commonjs/features/fluency/components/matrix/components/MatrixFill.js.map +1 -1
- package/dist/commonjs/features/fluency/components/matrix/components/MatrixLegend.js +4 -8
- package/dist/commonjs/features/fluency/components/matrix/components/MatrixLegend.js.map +1 -1
- package/dist/commonjs/features/fluency/components/mobile-menu/MobileMenu.js +38 -0
- package/dist/commonjs/features/fluency/components/mobile-menu/MobileMenu.js.map +1 -0
- package/dist/commonjs/features/fluency/components/select-math-operator/SelectMathOperator.js +6 -3
- package/dist/commonjs/features/fluency/components/select-math-operator/SelectMathOperator.js.map +1 -1
- package/dist/commonjs/features/fluency/components/session-results/FluencySessionResults.js +178 -0
- package/dist/commonjs/features/fluency/components/session-results/FluencySessionResults.js.map +1 -0
- package/dist/commonjs/features/fluency/components/session-results/SessionStatCard.js +99 -0
- package/dist/commonjs/features/fluency/components/session-results/SessionStatCard.js.map +1 -0
- package/dist/commonjs/features/fluency/components/session-results/SkillProgressionRow.js +113 -0
- package/dist/commonjs/features/fluency/components/session-results/SkillProgressionRow.js.map +1 -0
- package/dist/commonjs/features/fluency/fluency.constants.js +14 -6
- package/dist/commonjs/features/fluency/fluency.constants.js.map +1 -1
- package/dist/commonjs/features/fluency/fluency.helpers.js +53 -25
- package/dist/commonjs/features/fluency/fluency.helpers.js.map +1 -1
- package/dist/commonjs/features/fluency/hooks/useFluencyModePreset.js +16 -7
- package/dist/commonjs/features/fluency/hooks/useFluencyModePreset.js.map +1 -1
- package/dist/commonjs/features/fluency/{components/fluency-solving/FluencyNumpad.js → hooks/useFluencyNumpad.js} +58 -82
- package/dist/commonjs/features/fluency/hooks/useFluencyNumpad.js.map +1 -0
- package/dist/commonjs/features/fluency/hooks/useSuccessSound.js +0 -2
- package/dist/commonjs/features/fluency/hooks/useSuccessSound.js.map +1 -1
- package/dist/commonjs/features/fluency/model/FluencyApiModel.js +6 -1
- package/dist/commonjs/features/fluency/model/FluencyApiModel.js.map +1 -1
- package/dist/commonjs/features/fluency/model/FluencyDaysStreakModel.js +8 -1
- package/dist/commonjs/features/fluency/model/FluencyDaysStreakModel.js.map +1 -1
- package/dist/commonjs/features/fluency/model/FluencyMatrixModel.js +16 -1
- package/dist/commonjs/features/fluency/model/FluencyMatrixModel.js.map +1 -1
- package/dist/commonjs/features/fluency/model/FluencyModel.js +12 -28
- package/dist/commonjs/features/fluency/model/FluencyModel.js.map +1 -1
- package/dist/commonjs/features/fluency/model/FluencySolvingModel.js +57 -5
- package/dist/commonjs/features/fluency/model/FluencySolvingModel.js.map +1 -1
- package/dist/commonjs/lib/constants.js +1 -0
- package/dist/commonjs/lib/constants.js.map +1 -1
- package/dist/module/features/fluency/components/Fluency.js +17 -34
- package/dist/module/features/fluency/components/Fluency.js.map +1 -1
- package/dist/module/features/fluency/components/FluencySolving.js +29 -9
- package/dist/module/features/fluency/components/FluencySolving.js.map +1 -1
- package/dist/module/features/fluency/components/day-streak-counter/DayStreak.js +17 -18
- package/dist/module/features/fluency/components/day-streak-counter/DayStreak.js.map +1 -1
- package/dist/module/features/fluency/components/day-streak-counter/DayStreakCounter.js +26 -24
- package/dist/module/features/fluency/components/day-streak-counter/DayStreakCounter.js.map +1 -1
- package/dist/module/features/fluency/components/fluency-solving/{EquationContent.js → components/EquationContent.js} +5 -5
- package/dist/module/features/fluency/components/fluency-solving/components/EquationContent.js.map +1 -0
- package/dist/module/features/fluency/components/fluency-solving/{FluencyEquationCard.js → components/FluencyEquationCard.js} +16 -8
- package/dist/module/features/fluency/components/fluency-solving/components/FluencyEquationCard.js.map +1 -0
- package/dist/module/features/fluency/components/fluency-solving/components/FluencyNumpad.js +56 -0
- package/dist/module/features/fluency/components/fluency-solving/components/FluencyNumpad.js.map +1 -0
- package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingCard.js +84 -0
- package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingCard.js.map +1 -0
- package/dist/module/features/fluency/components/fluency-solving/{FluencySolvingHeader.js → components/FluencySolvingHeader.js} +6 -8
- package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingHeader.js.map +1 -0
- package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingProgress.js +69 -0
- package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingProgress.js.map +1 -0
- package/dist/module/features/fluency/components/fluency-solving/fluencySolving.constants.js +25 -0
- package/dist/module/features/fluency/components/fluency-solving/fluencySolving.constants.js.map +1 -0
- package/dist/module/features/fluency/components/fluency-solving/fluencySolving.helpers.js +52 -0
- package/dist/module/features/fluency/components/fluency-solving/fluencySolving.helpers.js.map +1 -0
- package/dist/module/features/fluency/components/fluency-solving/fluencySolving.types.js +2 -0
- package/dist/module/features/fluency/components/fluency-solving/fluencySolving.types.js.map +1 -0
- package/dist/module/features/fluency/components/matrix/FluencyMatrix.js +2 -2
- package/dist/module/features/fluency/components/matrix/FluencyMatrix.js.map +1 -1
- package/dist/module/features/fluency/components/matrix/components/MatrixCell.js +44 -15
- package/dist/module/features/fluency/components/matrix/components/MatrixCell.js.map +1 -1
- package/dist/module/features/fluency/components/matrix/components/MatrixFill.js +16 -26
- package/dist/module/features/fluency/components/matrix/components/MatrixFill.js.map +1 -1
- package/dist/module/features/fluency/components/matrix/components/MatrixLegend.js +4 -8
- package/dist/module/features/fluency/components/matrix/components/MatrixLegend.js.map +1 -1
- package/dist/module/features/fluency/components/mobile-menu/MobileMenu.js +32 -0
- package/dist/module/features/fluency/components/mobile-menu/MobileMenu.js.map +1 -0
- package/dist/module/features/fluency/components/select-math-operator/SelectMathOperator.js +6 -3
- package/dist/module/features/fluency/components/select-math-operator/SelectMathOperator.js.map +1 -1
- package/dist/module/features/fluency/components/session-results/FluencySessionResults.js +172 -0
- package/dist/module/features/fluency/components/session-results/FluencySessionResults.js.map +1 -0
- package/dist/module/features/fluency/components/session-results/SessionStatCard.js +93 -0
- package/dist/module/features/fluency/components/session-results/SessionStatCard.js.map +1 -0
- package/dist/module/features/fluency/components/session-results/SkillProgressionRow.js +107 -0
- package/dist/module/features/fluency/components/session-results/SkillProgressionRow.js.map +1 -0
- package/dist/module/features/fluency/fluency.constants.js +13 -5
- package/dist/module/features/fluency/fluency.constants.js.map +1 -1
- package/dist/module/features/fluency/fluency.helpers.js +51 -21
- package/dist/module/features/fluency/fluency.helpers.js.map +1 -1
- package/dist/module/features/fluency/hooks/useFluencyModePreset.js +16 -7
- package/dist/module/features/fluency/hooks/useFluencyModePreset.js.map +1 -1
- package/dist/module/features/fluency/{components/fluency-solving/FluencyNumpad.js → hooks/useFluencyNumpad.js} +58 -82
- package/dist/module/features/fluency/hooks/useFluencyNumpad.js.map +1 -0
- package/dist/module/features/fluency/hooks/useSuccessSound.js +0 -1
- package/dist/module/features/fluency/hooks/useSuccessSound.js.map +1 -1
- package/dist/module/features/fluency/model/FluencyApiModel.js +6 -1
- package/dist/module/features/fluency/model/FluencyApiModel.js.map +1 -1
- package/dist/module/features/fluency/model/FluencyDaysStreakModel.js +8 -1
- package/dist/module/features/fluency/model/FluencyDaysStreakModel.js.map +1 -1
- package/dist/module/features/fluency/model/FluencyMatrixModel.js +16 -1
- package/dist/module/features/fluency/model/FluencyMatrixModel.js.map +1 -1
- package/dist/module/features/fluency/model/FluencyModel.js +13 -29
- package/dist/module/features/fluency/model/FluencyModel.js.map +1 -1
- package/dist/module/features/fluency/model/FluencySolvingModel.js +58 -6
- package/dist/module/features/fluency/model/FluencySolvingModel.js.map +1 -1
- package/dist/module/lib/constants.js +1 -0
- package/dist/module/lib/constants.js.map +1 -1
- package/dist/typescript/commonjs/features/fluency/components/Fluency.d.ts +2 -1
- package/dist/typescript/commonjs/features/fluency/components/Fluency.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/components/FluencySolving.d.ts +2 -1
- package/dist/typescript/commonjs/features/fluency/components/FluencySolving.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/components/day-streak-counter/DayStreak.d.ts +5 -3
- package/dist/typescript/commonjs/features/fluency/components/day-streak-counter/DayStreak.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/components/day-streak-counter/DayStreakCounter.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/EquationContent.d.ts.map +1 -0
- package/dist/typescript/{module/features/fluency/components/fluency-solving → commonjs/features/fluency/components/fluency-solving/components}/FluencyEquationCard.d.ts +1 -1
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencyEquationCard.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencyNumpad.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingCard.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingHeader.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingProgress.d.ts +10 -0
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingProgress.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.constants.d.ts +5 -0
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.constants.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.helpers.d.ts +15 -0
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.helpers.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.types.d.ts +20 -0
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.types.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/fluency/components/matrix/FluencyMatrix.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/components/matrix/components/MatrixCell.d.ts +5 -7
- package/dist/typescript/commonjs/features/fluency/components/matrix/components/MatrixCell.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/components/matrix/components/MatrixFill.d.ts +1 -1
- package/dist/typescript/commonjs/features/fluency/components/matrix/components/MatrixFill.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/components/mobile-menu/MobileMenu.d.ts +7 -0
- package/dist/typescript/commonjs/features/fluency/components/mobile-menu/MobileMenu.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/fluency/components/select-math-operator/SelectMathOperator.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/components/session-results/FluencySessionResults.d.ts +11 -0
- package/dist/typescript/commonjs/features/fluency/components/session-results/FluencySessionResults.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/fluency/components/session-results/SessionStatCard.d.ts +9 -0
- package/dist/typescript/commonjs/features/fluency/components/session-results/SessionStatCard.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/fluency/components/session-results/SkillProgressionRow.d.ts +15 -0
- package/dist/typescript/commonjs/features/fluency/components/session-results/SkillProgressionRow.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/fluency/fluency.constants.d.ts +12 -5
- package/dist/typescript/commonjs/features/fluency/fluency.constants.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/fluency.helpers.d.ts +3 -5
- package/dist/typescript/commonjs/features/fluency/fluency.helpers.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/fluency.types.d.ts +58 -8
- package/dist/typescript/commonjs/features/fluency/fluency.types.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/hooks/useFluencyModePreset.d.ts +22 -3
- package/dist/typescript/commonjs/features/fluency/hooks/useFluencyModePreset.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/hooks/useFluencyNumpad.d.ts +53 -0
- package/dist/typescript/commonjs/features/fluency/hooks/useFluencyNumpad.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/fluency/hooks/useSuccessSound.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/model/FluencyApiModel.d.ts +6 -3
- package/dist/typescript/commonjs/features/fluency/model/FluencyApiModel.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/model/FluencyDaysStreakModel.d.ts +5 -0
- package/dist/typescript/commonjs/features/fluency/model/FluencyDaysStreakModel.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/model/FluencyMatrixModel.d.ts +9 -0
- package/dist/typescript/commonjs/features/fluency/model/FluencyMatrixModel.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/model/FluencyModel.d.ts +3 -15
- package/dist/typescript/commonjs/features/fluency/model/FluencyModel.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/model/FluencySolvingModel.d.ts +20 -7
- package/dist/typescript/commonjs/features/fluency/model/FluencySolvingModel.d.ts.map +1 -1
- package/dist/typescript/commonjs/lib/constants.d.ts +2 -1
- package/dist/typescript/commonjs/lib/constants.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/components/Fluency.d.ts +2 -1
- package/dist/typescript/module/features/fluency/components/Fluency.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/components/FluencySolving.d.ts +2 -1
- package/dist/typescript/module/features/fluency/components/FluencySolving.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/components/day-streak-counter/DayStreak.d.ts +5 -3
- package/dist/typescript/module/features/fluency/components/day-streak-counter/DayStreak.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/components/day-streak-counter/DayStreakCounter.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/components/fluency-solving/components/EquationContent.d.ts.map +1 -0
- package/dist/typescript/{commonjs/features/fluency/components/fluency-solving → module/features/fluency/components/fluency-solving/components}/FluencyEquationCard.d.ts +1 -1
- package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencyEquationCard.d.ts.map +1 -0
- package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencyNumpad.d.ts.map +1 -0
- package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencySolvingCard.d.ts.map +1 -0
- package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencySolvingHeader.d.ts.map +1 -0
- package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencySolvingProgress.d.ts +10 -0
- package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencySolvingProgress.d.ts.map +1 -0
- package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.constants.d.ts +5 -0
- package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.constants.d.ts.map +1 -0
- package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.helpers.d.ts +15 -0
- package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.helpers.d.ts.map +1 -0
- package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.types.d.ts +20 -0
- package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.types.d.ts.map +1 -0
- package/dist/typescript/module/features/fluency/components/matrix/FluencyMatrix.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/components/matrix/components/MatrixCell.d.ts +5 -7
- package/dist/typescript/module/features/fluency/components/matrix/components/MatrixCell.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/components/matrix/components/MatrixFill.d.ts +1 -1
- package/dist/typescript/module/features/fluency/components/matrix/components/MatrixFill.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/components/mobile-menu/MobileMenu.d.ts +7 -0
- package/dist/typescript/module/features/fluency/components/mobile-menu/MobileMenu.d.ts.map +1 -0
- package/dist/typescript/module/features/fluency/components/select-math-operator/SelectMathOperator.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/components/session-results/FluencySessionResults.d.ts +11 -0
- package/dist/typescript/module/features/fluency/components/session-results/FluencySessionResults.d.ts.map +1 -0
- package/dist/typescript/module/features/fluency/components/session-results/SessionStatCard.d.ts +9 -0
- package/dist/typescript/module/features/fluency/components/session-results/SessionStatCard.d.ts.map +1 -0
- package/dist/typescript/module/features/fluency/components/session-results/SkillProgressionRow.d.ts +15 -0
- package/dist/typescript/module/features/fluency/components/session-results/SkillProgressionRow.d.ts.map +1 -0
- package/dist/typescript/module/features/fluency/fluency.constants.d.ts +12 -5
- package/dist/typescript/module/features/fluency/fluency.constants.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/fluency.helpers.d.ts +3 -5
- package/dist/typescript/module/features/fluency/fluency.helpers.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/fluency.types.d.ts +58 -8
- package/dist/typescript/module/features/fluency/fluency.types.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/hooks/useFluencyModePreset.d.ts +22 -3
- package/dist/typescript/module/features/fluency/hooks/useFluencyModePreset.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/hooks/useFluencyNumpad.d.ts +53 -0
- package/dist/typescript/module/features/fluency/hooks/useFluencyNumpad.d.ts.map +1 -0
- package/dist/typescript/module/features/fluency/hooks/useSuccessSound.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/model/FluencyApiModel.d.ts +6 -3
- package/dist/typescript/module/features/fluency/model/FluencyApiModel.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/model/FluencyDaysStreakModel.d.ts +5 -0
- package/dist/typescript/module/features/fluency/model/FluencyDaysStreakModel.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/model/FluencyMatrixModel.d.ts +9 -0
- package/dist/typescript/module/features/fluency/model/FluencyMatrixModel.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/model/FluencyModel.d.ts +3 -15
- package/dist/typescript/module/features/fluency/model/FluencyModel.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/model/FluencySolvingModel.d.ts +20 -7
- package/dist/typescript/module/features/fluency/model/FluencySolvingModel.d.ts.map +1 -1
- package/dist/typescript/module/lib/constants.d.ts +2 -1
- package/dist/typescript/module/lib/constants.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/features/fluency/components/Fluency.tsx +17 -41
- package/src/features/fluency/components/FluencySolving.tsx +30 -5
- package/src/features/fluency/components/day-streak-counter/DayStreak.tsx +24 -20
- package/src/features/fluency/components/day-streak-counter/DayStreakCounter.tsx +41 -28
- package/src/features/fluency/components/fluency-solving/{EquationContent.tsx → components/EquationContent.tsx} +5 -5
- package/src/features/fluency/components/fluency-solving/{FluencyEquationCard.tsx → components/FluencyEquationCard.tsx} +12 -6
- package/src/features/fluency/components/fluency-solving/components/FluencyNumpad.tsx +54 -0
- package/src/features/fluency/components/fluency-solving/components/FluencySolvingCard.tsx +84 -0
- package/src/features/fluency/components/fluency-solving/{FluencySolvingHeader.tsx → components/FluencySolvingHeader.tsx} +6 -8
- package/src/features/fluency/components/fluency-solving/components/FluencySolvingProgress.tsx +68 -0
- package/src/features/fluency/components/fluency-solving/fluencySolving.constants.ts +25 -0
- package/src/features/fluency/components/fluency-solving/fluencySolving.helpers.ts +78 -0
- package/src/features/fluency/components/fluency-solving/fluencySolving.types.ts +21 -0
- package/src/features/fluency/components/matrix/FluencyMatrix.tsx +3 -2
- package/src/features/fluency/components/matrix/components/MatrixCell.tsx +46 -23
- package/src/features/fluency/components/matrix/components/MatrixFill.tsx +14 -24
- package/src/features/fluency/components/matrix/components/MatrixLegend.tsx +4 -4
- package/src/features/fluency/components/mobile-menu/MobileMenu.tsx +29 -0
- package/src/features/fluency/components/select-math-operator/SelectMathOperator.tsx +7 -3
- package/src/features/fluency/components/session-results/FluencySessionResults.tsx +204 -0
- package/src/features/fluency/components/session-results/SessionStatCard.tsx +100 -0
- package/src/features/fluency/components/session-results/SkillProgressionRow.tsx +100 -0
- package/src/features/fluency/fluency.constants.ts +13 -5
- package/src/features/fluency/fluency.helpers.ts +46 -27
- package/src/features/fluency/fluency.types.ts +70 -8
- package/src/features/fluency/hooks/useFluencyModePreset.ts +30 -20
- package/src/features/fluency/{components/fluency-solving/FluencyNumpad.tsx → hooks/useFluencyNumpad.tsx} +68 -94
- package/src/features/fluency/hooks/useSuccessSound.ts +0 -1
- package/src/features/fluency/model/FluencyApiModel.ts +18 -2
- package/src/features/fluency/model/FluencyDaysStreakModel.ts +11 -1
- package/src/features/fluency/model/FluencyMatrixModel.ts +20 -1
- package/src/features/fluency/model/FluencyModel.ts +15 -30
- package/src/features/fluency/model/FluencySolvingModel.ts +70 -8
- package/src/lib/constants.ts +3 -2
- package/src/types/types.d.ts +5 -0
- package/dist/commonjs/features/fluency/components/fluency-solving/EquationContent.js.map +0 -1
- package/dist/commonjs/features/fluency/components/fluency-solving/FluencyEquationCard.js.map +0 -1
- package/dist/commonjs/features/fluency/components/fluency-solving/FluencyNumpad.js.map +0 -1
- package/dist/commonjs/features/fluency/components/fluency-solving/FluencySolvingCard.js.map +0 -1
- package/dist/commonjs/features/fluency/components/fluency-solving/FluencySolvingHeader.js.map +0 -1
- package/dist/commonjs/features/fluency/components/fluency-solving/FluencySolvingProgress.js.map +0 -1
- package/dist/commonjs/features/fluency/model/FluencyInputModel.js +0 -20
- package/dist/commonjs/features/fluency/model/FluencyInputModel.js.map +0 -1
- package/dist/module/features/fluency/components/fluency-solving/EquationContent.js.map +0 -1
- package/dist/module/features/fluency/components/fluency-solving/FluencyEquationCard.js.map +0 -1
- package/dist/module/features/fluency/components/fluency-solving/FluencyNumpad.js.map +0 -1
- package/dist/module/features/fluency/components/fluency-solving/FluencySolvingCard.js +0 -66
- package/dist/module/features/fluency/components/fluency-solving/FluencySolvingCard.js.map +0 -1
- package/dist/module/features/fluency/components/fluency-solving/FluencySolvingHeader.js.map +0 -1
- package/dist/module/features/fluency/components/fluency-solving/FluencySolvingProgress.js +0 -41
- package/dist/module/features/fluency/components/fluency-solving/FluencySolvingProgress.js.map +0 -1
- package/dist/module/features/fluency/model/FluencyInputModel.js +0 -15
- package/dist/module/features/fluency/model/FluencyInputModel.js.map +0 -1
- package/dist/typescript/commonjs/features/fluency/__tests__/FluencyModel.test.d.ts +0 -2
- package/dist/typescript/commonjs/features/fluency/__tests__/FluencyModel.test.d.ts.map +0 -1
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/EquationContent.d.ts.map +0 -1
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/FluencyEquationCard.d.ts.map +0 -1
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/FluencyNumpad.d.ts.map +0 -1
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/FluencySolvingCard.d.ts.map +0 -1
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/FluencySolvingHeader.d.ts.map +0 -1
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/FluencySolvingProgress.d.ts +0 -8
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/FluencySolvingProgress.d.ts.map +0 -1
- package/dist/typescript/commonjs/features/fluency/model/FluencyInputModel.d.ts +0 -11
- package/dist/typescript/commonjs/features/fluency/model/FluencyInputModel.d.ts.map +0 -1
- package/dist/typescript/module/features/fluency/__tests__/FluencyModel.test.d.ts +0 -2
- package/dist/typescript/module/features/fluency/__tests__/FluencyModel.test.d.ts.map +0 -1
- package/dist/typescript/module/features/fluency/components/fluency-solving/EquationContent.d.ts.map +0 -1
- package/dist/typescript/module/features/fluency/components/fluency-solving/FluencyEquationCard.d.ts.map +0 -1
- package/dist/typescript/module/features/fluency/components/fluency-solving/FluencyNumpad.d.ts.map +0 -1
- package/dist/typescript/module/features/fluency/components/fluency-solving/FluencySolvingCard.d.ts.map +0 -1
- package/dist/typescript/module/features/fluency/components/fluency-solving/FluencySolvingHeader.d.ts.map +0 -1
- package/dist/typescript/module/features/fluency/components/fluency-solving/FluencySolvingProgress.d.ts +0 -8
- package/dist/typescript/module/features/fluency/components/fluency-solving/FluencySolvingProgress.d.ts.map +0 -1
- package/dist/typescript/module/features/fluency/model/FluencyInputModel.d.ts +0 -11
- package/dist/typescript/module/features/fluency/model/FluencyInputModel.d.ts.map +0 -1
- package/src/features/fluency/__tests__/FluencyModel.test.ts +0 -28
- package/src/features/fluency/components/fluency-solving/FluencySolvingCard.tsx +0 -59
- package/src/features/fluency/components/fluency-solving/FluencySolvingProgress.tsx +0 -40
- package/src/features/fluency/model/FluencyInputModel.ts +0 -17
- /package/dist/typescript/commonjs/features/fluency/components/fluency-solving/{EquationContent.d.ts → components/EquationContent.d.ts} +0 -0
- /package/dist/typescript/commonjs/features/fluency/components/fluency-solving/{FluencyNumpad.d.ts → components/FluencyNumpad.d.ts} +0 -0
- /package/dist/typescript/commonjs/features/fluency/components/fluency-solving/{FluencySolvingCard.d.ts → components/FluencySolvingCard.d.ts} +0 -0
- /package/dist/typescript/commonjs/features/fluency/components/fluency-solving/{FluencySolvingHeader.d.ts → components/FluencySolvingHeader.d.ts} +0 -0
- /package/dist/typescript/module/features/fluency/components/fluency-solving/{EquationContent.d.ts → components/EquationContent.d.ts} +0 -0
- /package/dist/typescript/module/features/fluency/components/fluency-solving/{FluencyNumpad.d.ts → components/FluencyNumpad.d.ts} +0 -0
- /package/dist/typescript/module/features/fluency/components/fluency-solving/{FluencySolvingCard.d.ts → components/FluencySolvingCard.d.ts} +0 -0
- /package/dist/typescript/module/features/fluency/components/fluency-solving/{FluencySolvingHeader.d.ts → components/FluencySolvingHeader.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","useWindowDimensions","Button","ButtonVariant","SPACING","MenuIcon","isWeb","BURGER_MENU_BREAKPOINT","jsx","_jsx","MobileMenu","onPress","dimensions","isVisible","width","style","styles","container","children","variant","TERTIARY","icon","size","create","marginRight"],"sourceRoot":"../../../../../../src","sources":["features/fluency/components/mobile-menu/MobileMenu.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,UAAU,EAAEC,mBAAmB,QAAQ,cAAc;AACpE,SAASC,MAAM,EAAEC,aAAa,EAAEC,OAAO,QAAQ,4BAA4B;AAC3E,SAASC,QAAQ,QAAQ,sCAAmC;AAC5D,SAASC,KAAK,QAAQ,wCAAqC;AAC3D,SAASC,sBAAsB,QAAQ,8BAA8B;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAMrE,OAAO,MAAMC,UAAU,GAAGA,CAAC;EAAEC;AAAyB,CAAC,KAAK;EAC1D,MAAMC,UAAU,GAAGX,mBAAmB,CAAC,CAAC;EACxC,MAAMY,SAAS,GAAGP,KAAK,IAAIM,UAAU,CAACE,KAAK,IAAIP,sBAAsB;EAErE,IAAI,CAACM,SAAS,EAAE,OAAO,IAAI;EAE3B,oBACEJ,IAAA,CAACV,IAAI;IAACgB,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,eAC5BT,IAAA,CAACP,MAAM;MAACS,OAAO,EAAEA,OAAQ;MAACQ,OAAO,EAAEhB,aAAa,CAACiB,QAAS;MAACC,IAAI,eAAEZ,IAAA,CAACJ,QAAQ;QAACiB,IAAI,EAAE;MAAG,CAAE;IAAE,CAAE;EAAC,CACvF,CAAC;AAEX,CAAC;AAED,MAAMN,MAAM,GAAGhB,UAAU,CAACuB,MAAM,CAAC;EAC/BN,SAAS,EAAE;IACTO,WAAW,EAAEpB,OAAO,CAAC,GAAG;EAC1B;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -15,7 +15,8 @@ export const SelectMathOperator = () => {
|
|
|
15
15
|
model,
|
|
16
16
|
onModeSelectPress
|
|
17
17
|
} = useFluency();
|
|
18
|
-
const fluencyMode = useUnit(model.$mode);
|
|
18
|
+
const fluencyMode = useUnit(model.matrix.$mode);
|
|
19
|
+
const matrix = useUnit(model.matrix.$data);
|
|
19
20
|
return /*#__PURE__*/_jsx(View, {
|
|
20
21
|
style: styles.container,
|
|
21
22
|
children: FLUENCY_MODES.map(({
|
|
@@ -25,16 +26,17 @@ export const SelectMathOperator = () => {
|
|
|
25
26
|
select
|
|
26
27
|
}, index) => {
|
|
27
28
|
const isSelectedMode = mode === fluencyMode;
|
|
29
|
+
const progress = (matrix?.operations[mode].completionRate ?? 0) * 100;
|
|
28
30
|
return /*#__PURE__*/_jsx(MathOperatorRow, {
|
|
29
31
|
title: t(label),
|
|
30
32
|
icon: /*#__PURE__*/_jsx(Icon, {
|
|
31
33
|
color: isSelectedMode ? COLORS.NEUTRAL_1 : undefined
|
|
32
34
|
}),
|
|
33
|
-
progress:
|
|
35
|
+
progress: progress,
|
|
34
36
|
color: select,
|
|
35
37
|
selected: isSelectedMode,
|
|
36
38
|
onSelect: () => {
|
|
37
|
-
model.setMode(mode);
|
|
39
|
+
model.matrix.setMode(mode);
|
|
38
40
|
onModeSelectPress?.(mode);
|
|
39
41
|
},
|
|
40
42
|
showDivider: index < FLUENCY_MODES.length - 1
|
|
@@ -44,6 +46,7 @@ export const SelectMathOperator = () => {
|
|
|
44
46
|
};
|
|
45
47
|
const styles = StyleSheet.create({
|
|
46
48
|
container: {
|
|
49
|
+
alignSelf: 'flex-start',
|
|
47
50
|
width: 270,
|
|
48
51
|
paddingVertical: SPACING[400],
|
|
49
52
|
paddingHorizontal: SPACING[200],
|
package/dist/module/features/fluency/components/select-math-operator/SelectMathOperator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","StyleSheet","View","BORDER_RADIUS","COLORS","SHADOWS","SPACING","useUnit","FLUENCY_MODES","MathOperatorRow","useFluency","useText","jsx","_jsx","SelectMathOperator","t","model","onModeSelectPress","fluencyMode","$mode","style","styles","container","children","map","mode","label","icon","Icon","select","index","isSelectedMode","title","color","NEUTRAL_1","undefined","
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","View","BORDER_RADIUS","COLORS","SHADOWS","SPACING","useUnit","FLUENCY_MODES","MathOperatorRow","useFluency","useText","jsx","_jsx","SelectMathOperator","t","model","onModeSelectPress","fluencyMode","matrix","$mode","$data","style","styles","container","children","map","mode","label","icon","Icon","select","index","isSelectedMode","progress","operations","completionRate","title","color","NEUTRAL_1","undefined","selected","onSelect","setMode","showDivider","length","create","alignSelf","width","paddingVertical","paddingHorizontal","borderRadius","backgroundColor"],"sourceRoot":"../../../../../../src","sources":["features/fluency/components/select-math-operator/SelectMathOperator.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAASC,aAAa,EAAEC,MAAM,EAAEC,OAAO,EAAEC,OAAO,QAAQ,4BAA4B;AACpF,SAASC,OAAO,QAAQ,gBAAgB;AACxC,SAASC,aAAa,QAAQ,4BAAyB;AACvD,SAASC,eAAe,QAAQ,sBAAmB;AACnD,SAASC,UAAU,QAAQ,iCAA8B;AACzD,SAASC,OAAO,QAAQ,0BAAuB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAE/C,OAAO,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;EACtC,MAAMC,CAAC,GAAGJ,OAAO,CAAC,CAAC;EACnB,MAAM;IAAEK,KAAK;IAAEC;EAAkB,CAAC,GAAGP,UAAU,CAAC,CAAC;EACjD,MAAMQ,WAAW,GAAGX,OAAO,CAACS,KAAK,CAACG,MAAM,CAACC,KAAK,CAAC;EAC/C,MAAMD,MAAM,GAAGZ,OAAO,CAACS,KAAK,CAACG,MAAM,CAACE,KAAK,CAAC;EAE1C,oBACER,IAAA,CAACX,IAAI;IAACoB,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,EAC3BjB,aAAa,CAACkB,GAAG,CAAC,CAAC;MAAEC,IAAI;MAAEC,KAAK;MAAEC,IAAI,EAAEC,IAAI;MAAEC;IAAO,CAAC,EAAEC,KAAK,KAAK;MACjE,MAAMC,cAAc,GAAGN,IAAI,KAAKT,WAAW;MAC3C,MAAMgB,QAAQ,GAAG,CAACf,MAAM,EAAEgB,UAAU,CAACR,IAAI,CAAC,CAACS,cAAc,IAAI,CAAC,IAAI,GAAG;MAErE,oBACEvB,IAAA,CAACJ,eAAe;QAEd4B,KAAK,EAAEtB,CAAC,CAACa,KAAK,CAAE;QAChBC,IAAI,eAAEhB,IAAA,CAACiB,IAAI;UAACQ,KAAK,EAAEL,cAAc,GAAG7B,MAAM,CAACmC,SAAS,GAAGC;QAAU,CAAE,CAAE;QACrEN,QAAQ,EAAEA,QAAS;QACnBI,KAAK,EAAEP,MAAO;QACdU,QAAQ,EAAER,cAAe;QACzBS,QAAQ,EAAEA,CAAA,KAAM;UACd1B,KAAK,CAACG,MAAM,CAACwB,OAAO,CAAChB,IAAI,CAAC;UAC1BV,iBAAiB,GAAGU,IAAI,CAAC;QAC3B,CAAE;QACFiB,WAAW,EAAEZ,KAAK,GAAGxB,aAAa,CAACqC,MAAM,GAAG;MAAE,GAVzClB,IAWN,CAAC;IAEN,CAAC;EAAC,CACE,CAAC;AAEX,CAAC;AAED,MAAMJ,MAAM,GAAGtB,UAAU,CAAC6C,MAAM,CAAC;EAC/BtB,SAAS,EAAE;IACTuB,SAAS,EAAE,YAAY;IACvBC,KAAK,EAAE,GAAG;IACVC,eAAe,EAAE3C,OAAO,CAAC,GAAG,CAAC;IAC7B4C,iBAAiB,EAAE5C,OAAO,CAAC,GAAG,CAAC;IAC/B6C,YAAY,EAAEhD,aAAa,CAAC,GAAG,CAAC;IAChCiD,eAAe,EAAEhD,MAAM,CAACmC,SAAS;IACjC,GAAGlC,OAAO,CAAC,CAAC;EACd;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { View, StyleSheet, ScrollView } from 'react-native';
|
|
5
|
+
import { BORDER_RADIUS, Button, ButtonColor, ButtonSize, ButtonVariant, COLORS, FONT_FAMILY, SHADOWS, SPACING, Typography } from '@magmamath/react-native-ui';
|
|
6
|
+
import { DEFAULT_PICKER_PARAMS } from "../fluency-solving/fluencySolving.constants.js";
|
|
7
|
+
import { SESSION_LENGTH } from "../../fluency.constants.js";
|
|
8
|
+
import { SessionStatCard } from "./SessionStatCard.js";
|
|
9
|
+
import { SkillProgressionRow } from "./SkillProgressionRow.js";
|
|
10
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
const STATIC_OPERATION_ROWS = [{
|
|
12
|
+
symbol: '−',
|
|
13
|
+
symbolColor: COLORS.PRIMARY_BLUE,
|
|
14
|
+
symbolBackground: COLORS.BLUE_1,
|
|
15
|
+
operationName: 'Subtraction',
|
|
16
|
+
levelLabel: 'Strong ↑',
|
|
17
|
+
levelColor: COLORS.PRIMARY_BLUE,
|
|
18
|
+
progressRate: 0.6,
|
|
19
|
+
progressColor: COLORS.PRIMARY_BLUE
|
|
20
|
+
}, {
|
|
21
|
+
symbol: '×',
|
|
22
|
+
symbolColor: COLORS.PRIMARY_ORANGE,
|
|
23
|
+
symbolBackground: COLORS.ORANGE_1,
|
|
24
|
+
operationName: 'Multiplication',
|
|
25
|
+
levelLabel: 'Growing ↑',
|
|
26
|
+
levelColor: COLORS.PRIMARY_ORANGE,
|
|
27
|
+
progressRate: 0.4,
|
|
28
|
+
progressColor: COLORS.PRIMARY_ORANGE
|
|
29
|
+
}, {
|
|
30
|
+
symbol: '÷',
|
|
31
|
+
symbolColor: COLORS.PRIMARY_PURPLE,
|
|
32
|
+
symbolBackground: COLORS.PURPLE_1,
|
|
33
|
+
operationName: 'Division',
|
|
34
|
+
levelLabel: 'Learning ↑',
|
|
35
|
+
levelColor: COLORS.PRIMARY_PURPLE,
|
|
36
|
+
progressRate: 0.2,
|
|
37
|
+
progressColor: COLORS.PRIMARY_PURPLE
|
|
38
|
+
}];
|
|
39
|
+
function computeMaxStreak(outcomes) {
|
|
40
|
+
let max = 0;
|
|
41
|
+
let current = 0;
|
|
42
|
+
for (const outcome of outcomes) {
|
|
43
|
+
current = outcome === 'correct' ? current + 1 : 0;
|
|
44
|
+
max = Math.max(max, current);
|
|
45
|
+
}
|
|
46
|
+
return max;
|
|
47
|
+
}
|
|
48
|
+
function levelLabelFromRate(rate) {
|
|
49
|
+
if (rate >= 0.85) return 'Mastered ↑';
|
|
50
|
+
if (rate >= 0.65) return 'Confident ↑';
|
|
51
|
+
if (rate >= 0.45) return 'Strong ↑';
|
|
52
|
+
if (rate >= 0.25) return 'Growing ↑';
|
|
53
|
+
return 'Learning ↑';
|
|
54
|
+
}
|
|
55
|
+
export const FluencySessionResults = ({
|
|
56
|
+
outcomes,
|
|
57
|
+
sessionDurationMs,
|
|
58
|
+
facts,
|
|
59
|
+
onEndModalPress
|
|
60
|
+
}) => {
|
|
61
|
+
const correctCount = outcomes.filter(o => o === 'correct').length;
|
|
62
|
+
const streak = computeMaxStreak(outcomes);
|
|
63
|
+
const sessionSecs = Math.round(sessionDurationMs / 1000);
|
|
64
|
+
const additionRate = facts.length > 0 ? facts.reduce((sum, f) => sum + f.box, 0) / (facts.length * DEFAULT_PICKER_PARAMS.numBoxes) : 0;
|
|
65
|
+
return /*#__PURE__*/_jsx(View, {
|
|
66
|
+
style: styles.overlay,
|
|
67
|
+
children: /*#__PURE__*/_jsx(ScrollView, {
|
|
68
|
+
contentContainerStyle: styles.scroll,
|
|
69
|
+
showsVerticalScrollIndicator: false,
|
|
70
|
+
children: /*#__PURE__*/_jsxs(View, {
|
|
71
|
+
style: styles.card,
|
|
72
|
+
children: [/*#__PURE__*/_jsx(Typography, {
|
|
73
|
+
style: styles.title,
|
|
74
|
+
children: "You leveled up!"
|
|
75
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
76
|
+
style: styles.statsRow,
|
|
77
|
+
children: [/*#__PURE__*/_jsx(SessionStatCard, {
|
|
78
|
+
variant: "on-fire",
|
|
79
|
+
value: String(streak)
|
|
80
|
+
}), /*#__PURE__*/_jsx(SessionStatCard, {
|
|
81
|
+
variant: "speedy",
|
|
82
|
+
value: `${sessionSecs}s`
|
|
83
|
+
}), /*#__PURE__*/_jsx(SessionStatCard, {
|
|
84
|
+
variant: "amazing",
|
|
85
|
+
value: `${correctCount}/${SESSION_LENGTH}`
|
|
86
|
+
})]
|
|
87
|
+
}), /*#__PURE__*/_jsx(Typography, {
|
|
88
|
+
style: styles.progressionHeader,
|
|
89
|
+
children: "Skill progression"
|
|
90
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
91
|
+
style: styles.progressionList,
|
|
92
|
+
children: [/*#__PURE__*/_jsx(SkillProgressionRow, {
|
|
93
|
+
symbol: "+",
|
|
94
|
+
symbolColor: COLORS.PRIMARY_GREEN,
|
|
95
|
+
symbolBackground: COLORS.GREEN_1,
|
|
96
|
+
operationName: "Addition",
|
|
97
|
+
levelLabel: levelLabelFromRate(additionRate),
|
|
98
|
+
levelColor: COLORS.PRIMARY_GREEN,
|
|
99
|
+
progressRate: additionRate,
|
|
100
|
+
progressColor: COLORS.PRIMARY_GREEN,
|
|
101
|
+
isActive: true
|
|
102
|
+
}), STATIC_OPERATION_ROWS.map(row => /*#__PURE__*/_jsx(SkillProgressionRow, {
|
|
103
|
+
...row
|
|
104
|
+
}, row.operationName))]
|
|
105
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
106
|
+
style: styles.homeButtonWrapper,
|
|
107
|
+
children: /*#__PURE__*/_jsx(Button, {
|
|
108
|
+
onPress: onEndModalPress,
|
|
109
|
+
variant: ButtonVariant.PRIMARY,
|
|
110
|
+
colorScheme: ButtonColor.YELLOW,
|
|
111
|
+
size: ButtonSize.LARGE,
|
|
112
|
+
raiseLevel: 6,
|
|
113
|
+
children: "HOME"
|
|
114
|
+
})
|
|
115
|
+
})]
|
|
116
|
+
})
|
|
117
|
+
})
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
const styles = StyleSheet.create({
|
|
121
|
+
overlay: {
|
|
122
|
+
position: 'absolute',
|
|
123
|
+
top: 0,
|
|
124
|
+
left: 0,
|
|
125
|
+
right: 0,
|
|
126
|
+
bottom: 0,
|
|
127
|
+
backgroundColor: 'rgba(242, 242, 244, 0.85)',
|
|
128
|
+
justifyContent: 'center',
|
|
129
|
+
padding: SPACING[400]
|
|
130
|
+
},
|
|
131
|
+
scroll: {
|
|
132
|
+
flexGrow: 1,
|
|
133
|
+
justifyContent: 'center',
|
|
134
|
+
alignItems: 'center'
|
|
135
|
+
},
|
|
136
|
+
card: {
|
|
137
|
+
width: '100%',
|
|
138
|
+
maxWidth: 560,
|
|
139
|
+
backgroundColor: COLORS.NEUTRAL_1,
|
|
140
|
+
borderRadius: BORDER_RADIUS[450],
|
|
141
|
+
padding: SPACING[500],
|
|
142
|
+
gap: SPACING[400],
|
|
143
|
+
...SHADOWS[5]
|
|
144
|
+
},
|
|
145
|
+
title: {
|
|
146
|
+
fontSize: 32,
|
|
147
|
+
fontWeight: '700',
|
|
148
|
+
fontFamily: FONT_FAMILY.buenosAires,
|
|
149
|
+
color: COLORS.NEUTRAL_9,
|
|
150
|
+
textAlign: 'center',
|
|
151
|
+
marginBottom: SPACING[200]
|
|
152
|
+
},
|
|
153
|
+
statsRow: {
|
|
154
|
+
flexDirection: 'row',
|
|
155
|
+
gap: SPACING[200]
|
|
156
|
+
},
|
|
157
|
+
progressionHeader: {
|
|
158
|
+
fontSize: 13,
|
|
159
|
+
color: COLORS.NEUTRAL_7,
|
|
160
|
+
textAlign: 'center'
|
|
161
|
+
},
|
|
162
|
+
progressionList: {
|
|
163
|
+
gap: SPACING[100]
|
|
164
|
+
},
|
|
165
|
+
homeButtonWrapper: {
|
|
166
|
+
maxWidth: 320,
|
|
167
|
+
width: '100%',
|
|
168
|
+
alignSelf: 'center',
|
|
169
|
+
marginTop: SPACING[200]
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
//# sourceMappingURL=FluencySessionResults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","ScrollView","BORDER_RADIUS","Button","ButtonColor","ButtonSize","ButtonVariant","COLORS","FONT_FAMILY","SHADOWS","SPACING","Typography","DEFAULT_PICKER_PARAMS","SESSION_LENGTH","SessionStatCard","SkillProgressionRow","jsx","_jsx","jsxs","_jsxs","STATIC_OPERATION_ROWS","symbol","symbolColor","PRIMARY_BLUE","symbolBackground","BLUE_1","operationName","levelLabel","levelColor","progressRate","progressColor","PRIMARY_ORANGE","ORANGE_1","PRIMARY_PURPLE","PURPLE_1","computeMaxStreak","outcomes","max","current","outcome","Math","levelLabelFromRate","rate","FluencySessionResults","sessionDurationMs","facts","onEndModalPress","correctCount","filter","o","length","streak","sessionSecs","round","additionRate","reduce","sum","f","box","numBoxes","style","styles","overlay","children","contentContainerStyle","scroll","showsVerticalScrollIndicator","card","title","statsRow","variant","value","String","progressionHeader","progressionList","PRIMARY_GREEN","GREEN_1","isActive","map","row","homeButtonWrapper","onPress","PRIMARY","colorScheme","YELLOW","size","LARGE","raiseLevel","create","position","top","left","right","bottom","backgroundColor","justifyContent","padding","flexGrow","alignItems","width","maxWidth","NEUTRAL_1","borderRadius","gap","fontSize","fontWeight","fontFamily","buenosAires","color","NEUTRAL_9","textAlign","marginBottom","flexDirection","NEUTRAL_7","alignSelf","marginTop"],"sourceRoot":"../../../../../../src","sources":["features/fluency/components/session-results/FluencySessionResults.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,UAAU,EAAEC,UAAU,QAAQ,cAAc;AAC3D,SACEC,aAAa,EACbC,MAAM,EACNC,WAAW,EACXC,UAAU,EACVC,aAAa,EACbC,MAAM,EACNC,WAAW,EACXC,OAAO,EACPC,OAAO,EACPC,UAAU,QACL,4BAA4B;AAEnC,SAASC,qBAAqB,QAAQ,gDAA6C;AACnF,SAASC,cAAc,QAAQ,4BAAyB;AACxD,SAASC,eAAe,QAAQ,sBAAmB;AACnD,SAASC,mBAAmB,QAAQ,0BAAuB;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAoB3D,MAAMC,qBAA2C,GAAG,CAClD;EACEC,MAAM,EAAE,GAAG;EACXC,WAAW,EAAEf,MAAM,CAACgB,YAAY;EAChCC,gBAAgB,EAAEjB,MAAM,CAACkB,MAAM;EAC/BC,aAAa,EAAE,aAAa;EAC5BC,UAAU,EAAE,UAAU;EACtBC,UAAU,EAAErB,MAAM,CAACgB,YAAY;EAC/BM,YAAY,EAAE,GAAG;EACjBC,aAAa,EAAEvB,MAAM,CAACgB;AACxB,CAAC,EACD;EACEF,MAAM,EAAE,GAAG;EACXC,WAAW,EAAEf,MAAM,CAACwB,cAAc;EAClCP,gBAAgB,EAAEjB,MAAM,CAACyB,QAAQ;EACjCN,aAAa,EAAE,gBAAgB;EAC/BC,UAAU,EAAE,WAAW;EACvBC,UAAU,EAAErB,MAAM,CAACwB,cAAc;EACjCF,YAAY,EAAE,GAAG;EACjBC,aAAa,EAAEvB,MAAM,CAACwB;AACxB,CAAC,EACD;EACEV,MAAM,EAAE,GAAG;EACXC,WAAW,EAAEf,MAAM,CAAC0B,cAAc;EAClCT,gBAAgB,EAAEjB,MAAM,CAAC2B,QAAQ;EACjCR,aAAa,EAAE,UAAU;EACzBC,UAAU,EAAE,YAAY;EACxBC,UAAU,EAAErB,MAAM,CAAC0B,cAAc;EACjCJ,YAAY,EAAE,GAAG;EACjBC,aAAa,EAAEvB,MAAM,CAAC0B;AACxB,CAAC,CACF;AAED,SAASE,gBAAgBA,CAACC,QAA2B,EAAU;EAC7D,IAAIC,GAAG,GAAG,CAAC;EACX,IAAIC,OAAO,GAAG,CAAC;EACf,KAAK,MAAMC,OAAO,IAAIH,QAAQ,EAAE;IAC9BE,OAAO,GAAGC,OAAO,KAAK,SAAS,GAAGD,OAAO,GAAG,CAAC,GAAG,CAAC;IACjDD,GAAG,GAAGG,IAAI,CAACH,GAAG,CAACA,GAAG,EAAEC,OAAO,CAAC;EAC9B;EACA,OAAOD,GAAG;AACZ;AAEA,SAASI,kBAAkBA,CAACC,IAAY,EAAU;EAChD,IAAIA,IAAI,IAAI,IAAI,EAAE,OAAO,YAAY;EACrC,IAAIA,IAAI,IAAI,IAAI,EAAE,OAAO,aAAa;EACtC,IAAIA,IAAI,IAAI,IAAI,EAAE,OAAO,UAAU;EACnC,IAAIA,IAAI,IAAI,IAAI,EAAE,OAAO,WAAW;EACpC,OAAO,YAAY;AACrB;AAEA,OAAO,MAAMC,qBAAqB,GAAGA,CAAC;EACpCP,QAAQ;EACRQ,iBAAiB;EACjBC,KAAK;EACLC;AAC0B,CAAC,KAAK;EAChC,MAAMC,YAAY,GAAGX,QAAQ,CAACY,MAAM,CAAEC,CAAC,IAAKA,CAAC,KAAK,SAAS,CAAC,CAACC,MAAM;EACnE,MAAMC,MAAM,GAAGhB,gBAAgB,CAACC,QAAQ,CAAC;EACzC,MAAMgB,WAAW,GAAGZ,IAAI,CAACa,KAAK,CAACT,iBAAiB,GAAG,IAAI,CAAC;EAExD,MAAMU,YAAY,GAChBT,KAAK,CAACK,MAAM,GAAG,CAAC,GACZL,KAAK,CAACU,MAAM,CAAC,CAACC,GAAG,EAAEC,CAAC,KAAKD,GAAG,GAAGC,CAAC,CAACC,GAAG,EAAE,CAAC,CAAC,IAAIb,KAAK,CAACK,MAAM,GAAGtC,qBAAqB,CAAC+C,QAAQ,CAAC,GAC1F,CAAC;EAEP,oBACE1C,IAAA,CAAClB,IAAI;IAAC6D,KAAK,EAAEC,MAAM,CAACC,OAAQ;IAAAC,QAAA,eAC1B9C,IAAA,CAAChB,UAAU;MAAC+D,qBAAqB,EAAEH,MAAM,CAACI,MAAO;MAACC,4BAA4B,EAAE,KAAM;MAAAH,QAAA,eACpF5C,KAAA,CAACpB,IAAI;QAAC6D,KAAK,EAAEC,MAAM,CAACM,IAAK;QAAAJ,QAAA,gBACvB9C,IAAA,CAACN,UAAU;UAACiD,KAAK,EAAEC,MAAM,CAACO,KAAM;UAAAL,QAAA,EAAC;QAAe,CAAY,CAAC,eAE7D5C,KAAA,CAACpB,IAAI;UAAC6D,KAAK,EAAEC,MAAM,CAACQ,QAAS;UAAAN,QAAA,gBAC3B9C,IAAA,CAACH,eAAe;YAACwD,OAAO,EAAC,SAAS;YAACC,KAAK,EAAEC,MAAM,CAACrB,MAAM;UAAE,CAAE,CAAC,eAC5DlC,IAAA,CAACH,eAAe;YAACwD,OAAO,EAAC,QAAQ;YAACC,KAAK,EAAE,GAAGnB,WAAW;UAAI,CAAE,CAAC,eAC9DnC,IAAA,CAACH,eAAe;YAACwD,OAAO,EAAC,SAAS;YAACC,KAAK,EAAE,GAAGxB,YAAY,IAAIlC,cAAc;UAAG,CAAE,CAAC;QAAA,CAC7E,CAAC,eAEPI,IAAA,CAACN,UAAU;UAACiD,KAAK,EAAEC,MAAM,CAACY,iBAAkB;UAAAV,QAAA,EAAC;QAAiB,CAAY,CAAC,eAE3E5C,KAAA,CAACpB,IAAI;UAAC6D,KAAK,EAAEC,MAAM,CAACa,eAAgB;UAAAX,QAAA,gBAClC9C,IAAA,CAACF,mBAAmB;YAClBM,MAAM,EAAC,GAAG;YACVC,WAAW,EAAEf,MAAM,CAACoE,aAAc;YAClCnD,gBAAgB,EAAEjB,MAAM,CAACqE,OAAQ;YACjClD,aAAa,EAAC,UAAU;YACxBC,UAAU,EAAEc,kBAAkB,CAACa,YAAY,CAAE;YAC7C1B,UAAU,EAAErB,MAAM,CAACoE,aAAc;YACjC9C,YAAY,EAAEyB,YAAa;YAC3BxB,aAAa,EAAEvB,MAAM,CAACoE,aAAc;YACpCE,QAAQ;UAAA,CACT,CAAC,EACDzD,qBAAqB,CAAC0D,GAAG,CAAEC,GAAG,iBAC7B9D,IAAA,CAACF,mBAAmB;YAAA,GAA6BgE;UAAG,GAA1BA,GAAG,CAACrD,aAAyB,CACxD,CAAC;QAAA,CACE,CAAC,eAEPT,IAAA,CAAClB,IAAI;UAAC6D,KAAK,EAAEC,MAAM,CAACmB,iBAAkB;UAAAjB,QAAA,eACpC9C,IAAA,CAACd,MAAM;YACL8E,OAAO,EAAEnC,eAAgB;YACzBwB,OAAO,EAAEhE,aAAa,CAAC4E,OAAQ;YAC/BC,WAAW,EAAE/E,WAAW,CAACgF,MAAO;YAChCC,IAAI,EAAEhF,UAAU,CAACiF,KAAM;YACvBC,UAAU,EAAE,CAAE;YAAAxB,QAAA,EACf;UAED,CAAQ;QAAC,CACL,CAAC;MAAA,CACH;IAAC,CACG;EAAC,CACT,CAAC;AAEX,CAAC;AAED,MAAMF,MAAM,GAAG7D,UAAU,CAACwF,MAAM,CAAC;EAC/B1B,OAAO,EAAE;IACP2B,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTC,eAAe,EAAE,2BAA2B;IAC5CC,cAAc,EAAE,QAAQ;IACxBC,OAAO,EAAEtF,OAAO,CAAC,GAAG;EACtB,CAAC;EACDuD,MAAM,EAAE;IACNgC,QAAQ,EAAE,CAAC;IACXF,cAAc,EAAE,QAAQ;IACxBG,UAAU,EAAE;EACd,CAAC;EACD/B,IAAI,EAAE;IACJgC,KAAK,EAAE,MAAM;IACbC,QAAQ,EAAE,GAAG;IACbN,eAAe,EAAEvF,MAAM,CAAC8F,SAAS;IACjCC,YAAY,EAAEpG,aAAa,CAAC,GAAG,CAAC;IAChC8F,OAAO,EAAEtF,OAAO,CAAC,GAAG,CAAC;IACrB6F,GAAG,EAAE7F,OAAO,CAAC,GAAG,CAAC;IACjB,GAAGD,OAAO,CAAC,CAAC;EACd,CAAC;EACD2D,KAAK,EAAE;IACLoC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,KAAK;IACjBC,UAAU,EAAElG,WAAW,CAACmG,WAAW;IACnCC,KAAK,EAAErG,MAAM,CAACsG,SAAS;IACvBC,SAAS,EAAE,QAAQ;IACnBC,YAAY,EAAErG,OAAO,CAAC,GAAG;EAC3B,CAAC;EACD2D,QAAQ,EAAE;IACR2C,aAAa,EAAE,KAAK;IACpBT,GAAG,EAAE7F,OAAO,CAAC,GAAG;EAClB,CAAC;EACD+D,iBAAiB,EAAE;IACjB+B,QAAQ,EAAE,EAAE;IACZI,KAAK,EAAErG,MAAM,CAAC0G,SAAS;IACvBH,SAAS,EAAE;EACb,CAAC;EACDpC,eAAe,EAAE;IACf6B,GAAG,EAAE7F,OAAO,CAAC,GAAG;EAClB,CAAC;EACDsE,iBAAiB,EAAE;IACjBoB,QAAQ,EAAE,GAAG;IACbD,KAAK,EAAE,MAAM;IACbe,SAAS,EAAE,QAAQ;IACnBC,SAAS,EAAEzG,OAAO,CAAC,GAAG;EACxB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { View, StyleSheet } from 'react-native';
|
|
5
|
+
import { BORDER_RADIUS, COLORS, CorrectIcon, FONT_FAMILY, SPACING, TimeIcon, Typography } from '@magmamath/react-native-ui';
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
const STAT_CARD_CONFIGS = {
|
|
8
|
+
'on-fire': {
|
|
9
|
+
kicker: 'ON FIRE',
|
|
10
|
+
icon: '🔥',
|
|
11
|
+
color: COLORS.PRIMARY_ORANGE,
|
|
12
|
+
background: COLORS.ORANGE_1
|
|
13
|
+
},
|
|
14
|
+
speedy: {
|
|
15
|
+
kicker: 'SPEEDY',
|
|
16
|
+
icon: /*#__PURE__*/_jsx(TimeIcon, {
|
|
17
|
+
color: COLORS.PRIMARY_BLUE,
|
|
18
|
+
size: 20
|
|
19
|
+
}),
|
|
20
|
+
color: COLORS.PRIMARY_BLUE,
|
|
21
|
+
background: COLORS.BLUE_1
|
|
22
|
+
},
|
|
23
|
+
amazing: {
|
|
24
|
+
kicker: 'AMAZING',
|
|
25
|
+
icon: /*#__PURE__*/_jsx(CorrectIcon, {
|
|
26
|
+
color: COLORS.PRIMARY_GREEN,
|
|
27
|
+
size: 20
|
|
28
|
+
}),
|
|
29
|
+
color: COLORS.PRIMARY_GREEN,
|
|
30
|
+
background: COLORS.GREEN_1
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
export const SessionStatCard = ({
|
|
34
|
+
variant,
|
|
35
|
+
value
|
|
36
|
+
}) => {
|
|
37
|
+
const config = STAT_CARD_CONFIGS[variant];
|
|
38
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
39
|
+
style: [styles.card, {
|
|
40
|
+
borderColor: config.color,
|
|
41
|
+
backgroundColor: config.background
|
|
42
|
+
}],
|
|
43
|
+
children: [/*#__PURE__*/_jsx(Typography, {
|
|
44
|
+
style: [styles.kicker, {
|
|
45
|
+
color: config.color
|
|
46
|
+
}],
|
|
47
|
+
children: config.kicker
|
|
48
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
49
|
+
style: styles.body,
|
|
50
|
+
children: [typeof config.icon === 'string' ? /*#__PURE__*/_jsx(Typography, {
|
|
51
|
+
style: styles.iconEmoji,
|
|
52
|
+
children: config.icon
|
|
53
|
+
}) : config.icon, /*#__PURE__*/_jsx(Typography, {
|
|
54
|
+
style: styles.value,
|
|
55
|
+
children: value
|
|
56
|
+
})]
|
|
57
|
+
})]
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
const styles = StyleSheet.create({
|
|
61
|
+
card: {
|
|
62
|
+
flex: 1,
|
|
63
|
+
maxWidth: 180,
|
|
64
|
+
borderWidth: 2,
|
|
65
|
+
borderRadius: BORDER_RADIUS[400],
|
|
66
|
+
paddingVertical: 10,
|
|
67
|
+
paddingHorizontal: 14,
|
|
68
|
+
gap: SPACING[200]
|
|
69
|
+
},
|
|
70
|
+
kicker: {
|
|
71
|
+
fontSize: 11,
|
|
72
|
+
fontWeight: '800',
|
|
73
|
+
letterSpacing: 1.1,
|
|
74
|
+
textAlign: 'center',
|
|
75
|
+
fontFamily: FONT_FAMILY.buenosAires
|
|
76
|
+
},
|
|
77
|
+
body: {
|
|
78
|
+
flexDirection: 'row',
|
|
79
|
+
alignItems: 'center',
|
|
80
|
+
gap: SPACING[200]
|
|
81
|
+
},
|
|
82
|
+
iconEmoji: {
|
|
83
|
+
fontSize: 18
|
|
84
|
+
},
|
|
85
|
+
value: {
|
|
86
|
+
fontSize: 24,
|
|
87
|
+
fontWeight: '900',
|
|
88
|
+
letterSpacing: -0.48,
|
|
89
|
+
fontFamily: FONT_FAMILY.buenosAires,
|
|
90
|
+
color: COLORS.NEUTRAL_10
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
//# sourceMappingURL=SessionStatCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","BORDER_RADIUS","COLORS","CorrectIcon","FONT_FAMILY","SPACING","TimeIcon","Typography","jsx","_jsx","jsxs","_jsxs","STAT_CARD_CONFIGS","kicker","icon","color","PRIMARY_ORANGE","background","ORANGE_1","speedy","PRIMARY_BLUE","size","BLUE_1","amazing","PRIMARY_GREEN","GREEN_1","SessionStatCard","variant","value","config","style","styles","card","borderColor","backgroundColor","children","body","iconEmoji","create","flex","maxWidth","borderWidth","borderRadius","paddingVertical","paddingHorizontal","gap","fontSize","fontWeight","letterSpacing","textAlign","fontFamily","buenosAires","flexDirection","alignItems","NEUTRAL_10"],"sourceRoot":"../../../../../../src","sources":["features/fluency/components/session-results/SessionStatCard.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { View, StyleSheet } from 'react-native';
|
|
5
|
+
import { BORDER_RADIUS, COLORS, FONT_FAMILY, SPACING, Typography } from '@magmamath/react-native-ui';
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
const BAR_WIDTH = 80;
|
|
8
|
+
export const SkillProgressionRow = ({
|
|
9
|
+
symbol,
|
|
10
|
+
symbolColor,
|
|
11
|
+
symbolBackground,
|
|
12
|
+
operationName,
|
|
13
|
+
levelLabel,
|
|
14
|
+
levelColor,
|
|
15
|
+
progressRate,
|
|
16
|
+
progressColor,
|
|
17
|
+
isActive
|
|
18
|
+
}) => {
|
|
19
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
20
|
+
style: [styles.row, isActive && {
|
|
21
|
+
borderWidth: 1.5,
|
|
22
|
+
borderColor: progressColor,
|
|
23
|
+
backgroundColor: symbolBackground
|
|
24
|
+
}],
|
|
25
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
26
|
+
style: [styles.symbolCircle, {
|
|
27
|
+
backgroundColor: symbolBackground
|
|
28
|
+
}],
|
|
29
|
+
children: /*#__PURE__*/_jsx(Typography, {
|
|
30
|
+
style: [styles.symbol, {
|
|
31
|
+
color: symbolColor
|
|
32
|
+
}],
|
|
33
|
+
children: symbol
|
|
34
|
+
})
|
|
35
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
36
|
+
style: styles.col,
|
|
37
|
+
children: [/*#__PURE__*/_jsx(Typography, {
|
|
38
|
+
style: styles.name,
|
|
39
|
+
children: operationName
|
|
40
|
+
}), /*#__PURE__*/_jsx(Typography, {
|
|
41
|
+
style: [styles.level, {
|
|
42
|
+
color: levelColor
|
|
43
|
+
}],
|
|
44
|
+
children: levelLabel
|
|
45
|
+
})]
|
|
46
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
47
|
+
style: styles.barTrack,
|
|
48
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
49
|
+
style: [styles.barFill, {
|
|
50
|
+
width: BAR_WIDTH * progressRate,
|
|
51
|
+
backgroundColor: progressColor
|
|
52
|
+
}]
|
|
53
|
+
})
|
|
54
|
+
})]
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
const styles = StyleSheet.create({
|
|
58
|
+
row: {
|
|
59
|
+
flexDirection: 'row',
|
|
60
|
+
alignItems: 'center',
|
|
61
|
+
gap: SPACING[300],
|
|
62
|
+
paddingVertical: 10,
|
|
63
|
+
paddingHorizontal: 14,
|
|
64
|
+
backgroundColor: COLORS.NEUTRAL_2,
|
|
65
|
+
borderRadius: 14
|
|
66
|
+
},
|
|
67
|
+
symbolCircle: {
|
|
68
|
+
width: 36,
|
|
69
|
+
height: 36,
|
|
70
|
+
borderRadius: BORDER_RADIUS[250],
|
|
71
|
+
alignItems: 'center',
|
|
72
|
+
justifyContent: 'center',
|
|
73
|
+
flexShrink: 0
|
|
74
|
+
},
|
|
75
|
+
symbol: {
|
|
76
|
+
fontSize: 18,
|
|
77
|
+
fontWeight: '900',
|
|
78
|
+
fontFamily: FONT_FAMILY.buenosAires
|
|
79
|
+
},
|
|
80
|
+
col: {
|
|
81
|
+
flex: 1,
|
|
82
|
+
gap: 2
|
|
83
|
+
},
|
|
84
|
+
name: {
|
|
85
|
+
fontSize: 14,
|
|
86
|
+
fontWeight: '700',
|
|
87
|
+
color: COLORS.NEUTRAL_10,
|
|
88
|
+
textAlign: 'center'
|
|
89
|
+
},
|
|
90
|
+
level: {
|
|
91
|
+
fontSize: 12,
|
|
92
|
+
fontWeight: '600',
|
|
93
|
+
textAlign: 'center'
|
|
94
|
+
},
|
|
95
|
+
barTrack: {
|
|
96
|
+
width: BAR_WIDTH,
|
|
97
|
+
height: 6,
|
|
98
|
+
backgroundColor: COLORS.NEUTRAL_4,
|
|
99
|
+
borderRadius: BORDER_RADIUS[100],
|
|
100
|
+
overflow: 'hidden'
|
|
101
|
+
},
|
|
102
|
+
barFill: {
|
|
103
|
+
height: 6,
|
|
104
|
+
borderRadius: BORDER_RADIUS[100]
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
//# sourceMappingURL=SkillProgressionRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","BORDER_RADIUS","COLORS","FONT_FAMILY","SPACING","Typography","jsx","_jsx","jsxs","_jsxs","BAR_WIDTH","SkillProgressionRow","symbol","symbolColor","symbolBackground","operationName","levelLabel","levelColor","progressRate","progressColor","isActive","style","styles","row","borderWidth","borderColor","backgroundColor","children","symbolCircle","color","col","name","level","barTrack","barFill","width","create","flexDirection","alignItems","gap","paddingVertical","paddingHorizontal","NEUTRAL_2","borderRadius","height","justifyContent","flexShrink","fontSize","fontWeight","fontFamily","buenosAires","flex","NEUTRAL_10","textAlign","NEUTRAL_4","overflow"],"sourceRoot":"../../../../../../src","sources":["features/fluency/components/session-results/SkillProgressionRow.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,13 +4,15 @@ import { CrossIcon, MinusIcon, PlusIcon } from '@magmamath/react-native-ui';
|
|
|
4
4
|
import { ButtonColor, COLORS, SelectOptionColor } from '@magmamath/react-native-ui';
|
|
5
5
|
import { createFluencyMode } from "./fluency.helpers.js";
|
|
6
6
|
import { DivideIcon } from "./assets/DivideIcon.js";
|
|
7
|
-
export const
|
|
7
|
+
export const FALLBACK_MATRIX_SIZE = 21;
|
|
8
8
|
export const MAX_INPUT_LENGTH = 3;
|
|
9
|
+
export const SESSION_LENGTH = 20;
|
|
10
|
+
export const TIME_THRESHOLD_MS = 4000;
|
|
9
11
|
export let FluencyMode = /*#__PURE__*/function (FluencyMode) {
|
|
10
|
-
FluencyMode["ADDITION"] = "
|
|
11
|
-
FluencyMode["SUBTRACTION"] = "
|
|
12
|
-
FluencyMode["MULTIPLICATION"] = "
|
|
13
|
-
FluencyMode["DIVISION"] = "
|
|
12
|
+
FluencyMode["ADDITION"] = "addition";
|
|
13
|
+
FluencyMode["SUBTRACTION"] = "subtraction";
|
|
14
|
+
FluencyMode["MULTIPLICATION"] = "multiplication";
|
|
15
|
+
FluencyMode["DIVISION"] = "division";
|
|
14
16
|
return FluencyMode;
|
|
15
17
|
}({});
|
|
16
18
|
export let FluencyMasteryLevel = /*#__PURE__*/function (FluencyMasteryLevel) {
|
|
@@ -27,6 +29,12 @@ export let FluencyColorFamily = /*#__PURE__*/function (FluencyColorFamily) {
|
|
|
27
29
|
FluencyColorFamily["PURPLE"] = "PURPLE";
|
|
28
30
|
return FluencyColorFamily;
|
|
29
31
|
}({});
|
|
32
|
+
export let StreakStatus = /*#__PURE__*/function (StreakStatus) {
|
|
33
|
+
StreakStatus["MISSED"] = "missed";
|
|
34
|
+
StreakStatus["GAINED"] = "gained";
|
|
35
|
+
StreakStatus["TODAY"] = "today";
|
|
36
|
+
return StreakStatus;
|
|
37
|
+
}({});
|
|
30
38
|
export const COLOR_FAMILY_PALETTES = {
|
|
31
39
|
[FluencyColorFamily.GREEN]: {
|
|
32
40
|
shades: [COLORS.GREEN_2, COLORS.GREEN_3, COLORS.PRIMARY_GREEN, COLORS.GREEN_6],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CrossIcon","MinusIcon","PlusIcon","ButtonColor","COLORS","SelectOptionColor","createFluencyMode","DivideIcon","
|
|
1
|
+
{"version":3,"names":["CrossIcon","MinusIcon","PlusIcon","ButtonColor","COLORS","SelectOptionColor","createFluencyMode","DivideIcon","FALLBACK_MATRIX_SIZE","MAX_INPUT_LENGTH","SESSION_LENGTH","TIME_THRESHOLD_MS","FluencyMode","FluencyMasteryLevel","FluencyColorFamily","StreakStatus","COLOR_FAMILY_PALETTES","GREEN","shades","GREEN_2","GREEN_3","PRIMARY_GREEN","GREEN_6","button","select","ORANGE","ORANGE_2","ORANGE_3","PRIMARY_ORANGE","ORANGE_6","BLUE","BLUE_2","BLUE_3","PRIMARY_BLUE","BLUE_6","PURPLE","PURPLE_2","PURPLE_3","PRIMARY_PURPLE","PURPLE_6","FLUENCY_MODES","mode","ADDITION","label","icon","colorFamily","SUBTRACTION","MULTIPLICATION","DIVISION","FLUENCY_MODE_PRESETS","Object","fromEntries","map","preset"],"sourceRoot":"../../../../src","sources":["features/fluency/fluency.constants.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,26 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
if (
|
|
8
|
-
if (
|
|
9
|
-
if (score >= 40) return FluencyMasteryLevel.GROWING;
|
|
3
|
+
import { FluencyMasteryLevel, FluencyMode, COLOR_FAMILY_PALETTES } from "./fluency.constants.js";
|
|
4
|
+
// TODO: Align box-to-mastery mapping with BE response schema.
|
|
5
|
+
export const getMasteryLevelByBox = box => {
|
|
6
|
+
if (box >= 4) return FluencyMasteryLevel.MASTERED;
|
|
7
|
+
if (box >= 3) return FluencyMasteryLevel.STRONG;
|
|
8
|
+
if (box >= 2) return FluencyMasteryLevel.GROWING;
|
|
10
9
|
return FluencyMasteryLevel.LEARNING;
|
|
11
10
|
};
|
|
12
|
-
export const getCellColorByScore = (score, mastery) => mastery[getMasteryLevel(score)];
|
|
13
|
-
export const getCellBackground = (row, col) => {
|
|
14
|
-
if (row === 0 && col === 0) return COLORS.NEUTRAL_2;
|
|
15
|
-
if (row === 0 || col === 0) return COLORS.NEUTRAL_5;
|
|
16
|
-
return COLORS.NEUTRAL_2;
|
|
17
|
-
};
|
|
18
|
-
export const getCellLabel = (row, col) => {
|
|
19
|
-
if (row === 0 && col === 0) return null;
|
|
20
|
-
if (row === 0) return col;
|
|
21
|
-
if (col === 0) return row;
|
|
22
|
-
return null;
|
|
23
|
-
};
|
|
24
11
|
export const createFluencyMode = ({
|
|
25
12
|
mode,
|
|
26
13
|
label,
|
|
@@ -46,8 +33,8 @@ export const createFluencyMode = ({
|
|
|
46
33
|
}
|
|
47
34
|
},
|
|
48
35
|
matrix: {
|
|
49
|
-
|
|
50
|
-
|
|
36
|
+
operatorLabel: label,
|
|
37
|
+
levelColors: {
|
|
51
38
|
learning,
|
|
52
39
|
growing,
|
|
53
40
|
strong,
|
|
@@ -57,4 +44,47 @@ export const createFluencyMode = ({
|
|
|
57
44
|
}
|
|
58
45
|
};
|
|
59
46
|
};
|
|
47
|
+
export const buildMatrixGrid = (data, mode) => {
|
|
48
|
+
const facts = Object.values(data.operations[mode].facts);
|
|
49
|
+
const maxRow = Math.max(0, ...facts.map(f => f.position.row));
|
|
50
|
+
const maxColumn = Math.max(0, ...facts.map(f => f.position.column));
|
|
51
|
+
const isDivision = mode === FluencyMode.DIVISION;
|
|
52
|
+
const factAt = (row, col) => facts.find(f => f.position.row === row && f.position.column === col);
|
|
53
|
+
|
|
54
|
+
// Division columns are 1-indexed in the API (÷1, ÷2...); all others are 0-indexed
|
|
55
|
+
const rowNumbers = Array.from({
|
|
56
|
+
length: maxRow + 1
|
|
57
|
+
}, (_, i) => i);
|
|
58
|
+
const columnNumbers = isDivision ? Array.from({
|
|
59
|
+
length: maxColumn
|
|
60
|
+
}, (_, i) => i + 1) : Array.from({
|
|
61
|
+
length: maxColumn + 1
|
|
62
|
+
}, (_, i) => i);
|
|
63
|
+
const headerRow = [{
|
|
64
|
+
isHeader: false,
|
|
65
|
+
label: null,
|
|
66
|
+
box: null,
|
|
67
|
+
divisor: null
|
|
68
|
+
}, ...columnNumbers.map(col => ({
|
|
69
|
+
isHeader: true,
|
|
70
|
+
label: col,
|
|
71
|
+
box: null,
|
|
72
|
+
divisor: null
|
|
73
|
+
}))];
|
|
74
|
+
const dataRows = rowNumbers.map(row => [{
|
|
75
|
+
isHeader: true,
|
|
76
|
+
label: row,
|
|
77
|
+
box: null,
|
|
78
|
+
divisor: null
|
|
79
|
+
}, ...columnNumbers.map(col => {
|
|
80
|
+
const fact = factAt(row, col);
|
|
81
|
+
return {
|
|
82
|
+
isHeader: false,
|
|
83
|
+
label: isDivision ? fact?.numbers[0] ?? null : null,
|
|
84
|
+
box: fact?.box ?? null,
|
|
85
|
+
divisor: isDivision ? col : null
|
|
86
|
+
};
|
|
87
|
+
})]);
|
|
88
|
+
return [headerRow, ...dataRows];
|
|
89
|
+
};
|
|
60
90
|
//# sourceMappingURL=fluency.helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["FluencyMasteryLevel","FluencyMode","COLOR_FAMILY_PALETTES","getMasteryLevelByBox","box","MASTERED","STRONG","GROWING","LEARNING","createFluencyMode","mode","label","icon","colorFamily","palette","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","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":"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","ignoreList":[]}
|