@magmamath/students-features 1.3.26-rc.7 → 1.3.26-rc.9
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-solving/components/EquationContent.js +39 -18
- package/dist/commonjs/features/fluency/components/fluency-solving/components/EquationContent.js.map +1 -1
- package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencyCardDeck.js +113 -0
- package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencyCardDeck.js.map +1 -0
- package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencyEquationCard.js +22 -81
- package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencyEquationCard.js.map +1 -1
- package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingCard.js +32 -15
- package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingCard.js.map +1 -1
- package/dist/commonjs/features/fluency/components/start-banner/StartBanner.js +15 -29
- package/dist/commonjs/features/fluency/components/start-banner/StartBanner.js.map +1 -1
- package/dist/commonjs/features/fluency/fluency.helpers.js +5 -5
- package/dist/commonjs/features/fluency/fluency.helpers.js.map +1 -1
- package/dist/commonjs/features/fluency/hooks/useCardSnapAnimation.js +33 -22
- package/dist/commonjs/features/fluency/hooks/useCardSnapAnimation.js.map +1 -1
- package/dist/commonjs/features/fluency/hooks/useFluencyCardDeckAnimation.js +44 -0
- package/dist/commonjs/features/fluency/hooks/useFluencyCardDeckAnimation.js.map +1 -0
- package/dist/commonjs/features/fluency/hooks/useFluencySolvingPreset.js +2 -2
- package/dist/commonjs/features/fluency/hooks/useFluencySolvingPreset.js.map +1 -1
- package/dist/commonjs/lib/components/GradientView.js +57 -0
- package/dist/commonjs/lib/components/GradientView.js.map +1 -0
- package/dist/module/features/fluency/components/fluency-solving/components/EquationContent.js +40 -19
- package/dist/module/features/fluency/components/fluency-solving/components/EquationContent.js.map +1 -1
- package/dist/module/features/fluency/components/fluency-solving/components/FluencyCardDeck.js +107 -0
- package/dist/module/features/fluency/components/fluency-solving/components/FluencyCardDeck.js.map +1 -0
- package/dist/module/features/fluency/components/fluency-solving/components/FluencyEquationCard.js +23 -82
- package/dist/module/features/fluency/components/fluency-solving/components/FluencyEquationCard.js.map +1 -1
- package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingCard.js +32 -15
- package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingCard.js.map +1 -1
- package/dist/module/features/fluency/components/start-banner/StartBanner.js +16 -30
- package/dist/module/features/fluency/components/start-banner/StartBanner.js.map +1 -1
- package/dist/module/features/fluency/fluency.helpers.js +5 -5
- package/dist/module/features/fluency/fluency.helpers.js.map +1 -1
- package/dist/module/features/fluency/hooks/useCardSnapAnimation.js +33 -22
- package/dist/module/features/fluency/hooks/useCardSnapAnimation.js.map +1 -1
- package/dist/module/features/fluency/hooks/useFluencyCardDeckAnimation.js +39 -0
- package/dist/module/features/fluency/hooks/useFluencyCardDeckAnimation.js.map +1 -0
- package/dist/module/features/fluency/hooks/useFluencySolvingPreset.js +2 -2
- package/dist/module/features/fluency/hooks/useFluencySolvingPreset.js.map +1 -1
- package/dist/module/lib/components/GradientView.js +51 -0
- package/dist/module/lib/components/GradientView.js.map +1 -0
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/EquationContent.d.ts +5 -1
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/EquationContent.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencyCardDeck.d.ts +14 -0
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencyCardDeck.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencyEquationCard.d.ts +7 -3
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencyEquationCard.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingCard.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.types.d.ts +4 -0
- package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.types.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/components/start-banner/StartBanner.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/fluency.helpers.d.ts +1 -1
- package/dist/typescript/commonjs/features/fluency/fluency.helpers.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/hooks/useCardSnapAnimation.d.ts +7 -2
- package/dist/typescript/commonjs/features/fluency/hooks/useCardSnapAnimation.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/fluency/hooks/useFluencyCardDeckAnimation.d.ts +16 -0
- package/dist/typescript/commonjs/features/fluency/hooks/useFluencyCardDeckAnimation.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/fluency/hooks/useFluencySolvingPreset.d.ts +5 -2
- package/dist/typescript/commonjs/features/fluency/hooks/useFluencySolvingPreset.d.ts.map +1 -1
- package/dist/typescript/commonjs/lib/components/GradientView.d.ts +18 -0
- package/dist/typescript/commonjs/lib/components/GradientView.d.ts.map +1 -0
- package/dist/typescript/module/features/fluency/components/fluency-solving/components/EquationContent.d.ts +5 -1
- package/dist/typescript/module/features/fluency/components/fluency-solving/components/EquationContent.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencyCardDeck.d.ts +14 -0
- package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencyCardDeck.d.ts.map +1 -0
- package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencyEquationCard.d.ts +7 -3
- package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencyEquationCard.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencySolvingCard.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.types.d.ts +4 -0
- package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.types.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/components/start-banner/StartBanner.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/fluency.helpers.d.ts +1 -1
- package/dist/typescript/module/features/fluency/fluency.helpers.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/hooks/useCardSnapAnimation.d.ts +7 -2
- package/dist/typescript/module/features/fluency/hooks/useCardSnapAnimation.d.ts.map +1 -1
- package/dist/typescript/module/features/fluency/hooks/useFluencyCardDeckAnimation.d.ts +16 -0
- package/dist/typescript/module/features/fluency/hooks/useFluencyCardDeckAnimation.d.ts.map +1 -0
- package/dist/typescript/module/features/fluency/hooks/useFluencySolvingPreset.d.ts +5 -2
- package/dist/typescript/module/features/fluency/hooks/useFluencySolvingPreset.d.ts.map +1 -1
- package/dist/typescript/module/lib/components/GradientView.d.ts +18 -0
- package/dist/typescript/module/lib/components/GradientView.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/features/fluency/components/fluency-solving/components/EquationContent.tsx +41 -25
- package/src/features/fluency/components/fluency-solving/components/FluencyCardDeck.tsx +128 -0
- package/src/features/fluency/components/fluency-solving/components/FluencyEquationCard.tsx +37 -72
- package/src/features/fluency/components/fluency-solving/components/FluencySolvingCard.tsx +32 -13
- package/src/features/fluency/components/fluency-solving/fluencySolving.types.ts +5 -0
- package/src/features/fluency/components/start-banner/StartBanner.tsx +10 -28
- package/src/features/fluency/fluency.helpers.ts +6 -6
- package/src/features/fluency/hooks/useCardSnapAnimation.ts +41 -21
- package/src/features/fluency/hooks/useFluencyCardDeckAnimation.ts +49 -0
- package/src/features/fluency/hooks/useFluencySolvingPreset.ts +25 -7
- package/src/lib/components/GradientView.tsx +63 -0
package/dist/module/features/fluency/components/fluency-solving/components/FluencyEquationCard.js
CHANGED
|
@@ -1,92 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import React from 'react';
|
|
4
|
-
import { useUnit } from 'effector-react';
|
|
5
|
-
import { View, StyleSheet } from 'react-native';
|
|
6
|
-
import Animated from 'react-native-reanimated';
|
|
7
|
-
import { BORDER_RADIUS, COLORS, SHADOWS } from '@magmamath/react-native-ui';
|
|
8
4
|
import { EquationContent } from "./EquationContent.js";
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
export const FluencyEquationCard = ({
|
|
12
|
-
animationStyles
|
|
13
|
-
}) => {
|
|
14
|
-
const {
|
|
15
|
-
model
|
|
16
|
-
} = useFluency();
|
|
17
|
-
const {
|
|
18
|
-
answer,
|
|
19
|
-
fact
|
|
20
|
-
} = useUnit({
|
|
21
|
-
answer: model.solving.$answer,
|
|
22
|
-
fact: model.solving.$current
|
|
23
|
-
});
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
const getDisplayedEquation = fact => {
|
|
24
7
|
const left = fact?.numbers[0] ?? 0;
|
|
25
8
|
const right = fact?.numbers[1] ?? 0;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
9
|
+
return {
|
|
10
|
+
leftOperand: left,
|
|
11
|
+
rightOperand: right,
|
|
12
|
+
mode: fact?.mode
|
|
29
13
|
};
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
rightOperand: right,
|
|
48
|
-
value: answer ?? '',
|
|
49
|
-
onChange: updateAnswer
|
|
50
|
-
})
|
|
51
|
-
})]
|
|
14
|
+
};
|
|
15
|
+
export const FluencyEquationCard = ({
|
|
16
|
+
cardContent,
|
|
17
|
+
readOnly = false,
|
|
18
|
+
status,
|
|
19
|
+
onAnswerChange
|
|
20
|
+
}) => {
|
|
21
|
+
const equation = getDisplayedEquation(cardContent.fact);
|
|
22
|
+
return /*#__PURE__*/_jsx(EquationContent, {
|
|
23
|
+
leftOperand: equation.leftOperand,
|
|
24
|
+
rightOperand: equation.rightOperand,
|
|
25
|
+
mode: equation.mode,
|
|
26
|
+
value: cardContent.answer,
|
|
27
|
+
readOnly: readOnly,
|
|
28
|
+
status: status,
|
|
29
|
+
correctAnswer: cardContent.fact?.answer,
|
|
30
|
+
onChange: onAnswerChange
|
|
52
31
|
});
|
|
53
32
|
};
|
|
54
|
-
const styles = StyleSheet.create({
|
|
55
|
-
stack: {
|
|
56
|
-
width: '100%',
|
|
57
|
-
maxWidth: 560
|
|
58
|
-
},
|
|
59
|
-
card: {
|
|
60
|
-
height: 260,
|
|
61
|
-
borderRadius: BORDER_RADIUS[400],
|
|
62
|
-
backgroundColor: COLORS.NEUTRAL_1,
|
|
63
|
-
...SHADOWS[5]
|
|
64
|
-
},
|
|
65
|
-
cardFar: {
|
|
66
|
-
position: 'absolute',
|
|
67
|
-
top: 36,
|
|
68
|
-
left: 60,
|
|
69
|
-
right: 60,
|
|
70
|
-
opacity: 0
|
|
71
|
-
},
|
|
72
|
-
cardMid: {
|
|
73
|
-
position: 'absolute',
|
|
74
|
-
top: 24,
|
|
75
|
-
left: 40,
|
|
76
|
-
right: 40
|
|
77
|
-
},
|
|
78
|
-
cardNear: {
|
|
79
|
-
position: 'absolute',
|
|
80
|
-
top: 12,
|
|
81
|
-
left: 20,
|
|
82
|
-
right: 20,
|
|
83
|
-
alignItems: 'center',
|
|
84
|
-
justifyContent: 'center',
|
|
85
|
-
...SHADOWS[5]
|
|
86
|
-
},
|
|
87
|
-
cardFront: {
|
|
88
|
-
alignItems: 'center',
|
|
89
|
-
justifyContent: 'center'
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
33
|
//# sourceMappingURL=FluencyEquationCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","
|
|
1
|
+
{"version":3,"names":["React","EquationContent","jsx","_jsx","getDisplayedEquation","fact","left","numbers","right","leftOperand","rightOperand","mode","FluencyEquationCard","cardContent","readOnly","status","onAnswerChange","equation","value","answer","correctAnswer","onChange"],"sourceRoot":"../../../../../../../src","sources":["features/fluency/components/fluency-solving/components/FluencyEquationCard.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,eAAe,QAAQ,sBAAmB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAiBnD,MAAMC,oBAAoB,GAAIC,IAAwB,IAAwB;EAC5E,MAAMC,IAAI,GAAGD,IAAI,EAAEE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;EAClC,MAAMC,KAAK,GAAGH,IAAI,EAAEE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;EAEnC,OAAO;IACLE,WAAW,EAAEH,IAAI;IACjBI,YAAY,EAAEF,KAAK;IACnBG,IAAI,EAAEN,IAAI,EAAEM;EACd,CAAC;AACH,CAAC;AAED,OAAO,MAAMC,mBAAmB,GAAGA,CAAC;EAClCC,WAAW;EACXC,QAAQ,GAAG,KAAK;EAChBC,MAAM;EACNC;AACwB,CAAC,KAAK;EAC9B,MAAMC,QAAQ,GAAGb,oBAAoB,CAACS,WAAW,CAACR,IAAI,CAAC;EAEvD,oBACEF,IAAA,CAACF,eAAe;IACdQ,WAAW,EAAEQ,QAAQ,CAACR,WAAY;IAClCC,YAAY,EAAEO,QAAQ,CAACP,YAAa;IACpCC,IAAI,EAAEM,QAAQ,CAACN,IAAK;IACpBO,KAAK,EAAEL,WAAW,CAACM,MAAO;IAC1BL,QAAQ,EAAEA,QAAS;IACnBC,MAAM,EAAEA,MAAO;IACfK,aAAa,EAAEP,WAAW,CAACR,IAAI,EAAEc,MAAO;IACxCE,QAAQ,EAAEL;EAAe,CAC1B,CAAC;AAEN,CAAC","ignoreList":[]}
|
package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingCard.js
CHANGED
|
@@ -2,43 +2,60 @@
|
|
|
2
2
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { View, StyleSheet } from 'react-native';
|
|
5
|
-
import { SPACING } from '@magmamath/react-native-ui';
|
|
6
5
|
import { useUnit } from 'effector-react/effector-react.mjs';
|
|
6
|
+
import { SPACING } from '@magmamath/react-native-ui';
|
|
7
7
|
import { FluencyNumpad } from "./FluencyNumpad.js";
|
|
8
|
-
import {
|
|
8
|
+
import { FluencyCardDeck } from "./FluencyCardDeck.js";
|
|
9
9
|
import { useFluency } from "../../../context/FluencyContext.js";
|
|
10
|
-
import {
|
|
10
|
+
import { useFluencyCardDeckAnimation } from "../../../hooks/useFluencyCardDeckAnimation.js";
|
|
11
11
|
import { useSuccessSound } from "../../../hooks/useSuccessSound.js";
|
|
12
|
+
import { AttemptStatus } from "../../../fluency.constants.js";
|
|
12
13
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
14
|
export const FluencySolvingCard = () => {
|
|
14
15
|
const {
|
|
15
16
|
model
|
|
16
17
|
} = useFluency();
|
|
17
18
|
const {
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
currentAnswer,
|
|
20
|
+
currentFact
|
|
20
21
|
} = useUnit({
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
currentAnswer: model.solving.$answer,
|
|
23
|
+
currentFact: model.solving.$current
|
|
23
24
|
});
|
|
24
|
-
const
|
|
25
|
+
const cardDeckAnimation = useFluencyCardDeckAnimation();
|
|
25
26
|
const successSound = useSuccessSound();
|
|
27
|
+
const currentCardContent = {
|
|
28
|
+
fact: currentFact,
|
|
29
|
+
answer: currentAnswer ?? ''
|
|
30
|
+
};
|
|
31
|
+
const updateAnswer = text => {
|
|
32
|
+
const digits = text.replace(/\D/g, '');
|
|
33
|
+
model.solving.setAnswer(digits || null);
|
|
34
|
+
};
|
|
26
35
|
const submit = () => {
|
|
27
|
-
if (!
|
|
28
|
-
const isCorrect =
|
|
36
|
+
if (!currentFact) return;
|
|
37
|
+
const isCorrect = currentAnswer !== null && Number(currentAnswer) === currentFact.answer;
|
|
38
|
+
const direction = isCorrect ? 'right' : 'left';
|
|
39
|
+
const status = isCorrect ? AttemptStatus.CORRECT : AttemptStatus.INCORRECT;
|
|
40
|
+
if (!cardDeckAnimation.startCardExit({
|
|
41
|
+
cardContent: currentCardContent,
|
|
42
|
+
direction,
|
|
43
|
+
status
|
|
44
|
+
})) return;
|
|
29
45
|
if (isCorrect) {
|
|
30
46
|
successSound.play();
|
|
31
|
-
animation.trigger('right');
|
|
32
|
-
} else {
|
|
33
|
-
animation.trigger('left');
|
|
34
47
|
}
|
|
35
48
|
model.solving.submit();
|
|
36
49
|
};
|
|
37
50
|
return /*#__PURE__*/_jsxs(View, {
|
|
38
51
|
children: [/*#__PURE__*/_jsx(View, {
|
|
39
52
|
style: styles.wrapper,
|
|
40
|
-
children: /*#__PURE__*/_jsx(
|
|
41
|
-
|
|
53
|
+
children: /*#__PURE__*/_jsx(FluencyCardDeck, {
|
|
54
|
+
currentCardContent: currentCardContent,
|
|
55
|
+
exitingCardContent: cardDeckAnimation.exitingCardContent,
|
|
56
|
+
exitingCardStatus: cardDeckAnimation.exitingCardStatus,
|
|
57
|
+
snapStyles: cardDeckAnimation.snapStyles,
|
|
58
|
+
onAnswerChange: updateAnswer
|
|
42
59
|
})
|
|
43
60
|
}), /*#__PURE__*/_jsx(FluencyNumpad, {
|
|
44
61
|
onSubmit: submit
|
package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingCard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","StyleSheet","
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","useUnit","SPACING","FluencyNumpad","FluencyCardDeck","useFluency","useFluencyCardDeckAnimation","useSuccessSound","AttemptStatus","jsx","_jsx","jsxs","_jsxs","FluencySolvingCard","model","currentAnswer","currentFact","solving","$answer","$current","cardDeckAnimation","successSound","currentCardContent","fact","answer","updateAnswer","text","digits","replace","setAnswer","submit","isCorrect","Number","direction","status","CORRECT","INCORRECT","startCardExit","cardContent","play","children","style","styles","wrapper","exitingCardContent","exitingCardStatus","snapStyles","onAnswerChange","onSubmit","create","alignItems","paddingVertical","paddingHorizontal","marginTop"],"sourceRoot":"../../../../../../../src","sources":["features/fluency/components/fluency-solving/components/FluencySolvingCard.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAC/C,SAASC,OAAO,QAAQ,mCAAmC;AAC3D,SAASC,OAAO,QAAQ,4BAA4B;AAEpD,SAASC,aAAa,QAAQ,oBAAiB;AAC/C,SAASC,eAAe,QAAQ,sBAAmB;AACnD,SAASC,UAAU,QAAQ,oCAAiC;AAC5D,SAASC,2BAA2B,QAAQ,+CAA4C;AACxF,SAASC,eAAe,QAAQ,mCAAgC;AAChE,SAASC,aAAa,QAAQ,+BAA4B;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAG1D,OAAO,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;EACtC,MAAM;IAAEC;EAAM,CAAC,GAAGT,UAAU,CAAC,CAAC;EAC9B,MAAM;IAAEU,aAAa;IAAEC;EAAY,CAAC,GAAGf,OAAO,CAAC;IAC7Cc,aAAa,EAAED,KAAK,CAACG,OAAO,CAACC,OAAO;IACpCF,WAAW,EAAEF,KAAK,CAACG,OAAO,CAACE;EAC7B,CAAC,CAAC;EACF,MAAMC,iBAAiB,GAAGd,2BAA2B,CAAC,CAAC;EACvD,MAAMe,YAAY,GAAGd,eAAe,CAAC,CAAC;EAEtC,MAAMe,kBAAkB,GAAG;IAAEC,IAAI,EAAEP,WAAW;IAAEQ,MAAM,EAAET,aAAa,IAAI;EAAG,CAAC;EAE7E,MAAMU,YAAY,GAAIC,IAAY,IAAK;IACrC,MAAMC,MAAM,GAAGD,IAAI,CAACE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IACtCd,KAAK,CAACG,OAAO,CAACY,SAAS,CAACF,MAAM,IAAI,IAAI,CAAC;EACzC,CAAC;EAED,MAAMG,MAAM,GAAGA,CAAA,KAAM;IACnB,IAAI,CAACd,WAAW,EAAE;IAElB,MAAMe,SAAS,GAAGhB,aAAa,KAAK,IAAI,IAAIiB,MAAM,CAACjB,aAAa,CAAC,KAAKC,WAAW,CAACQ,MAAM;IACxF,MAAMS,SAAwB,GAAGF,SAAS,GAAG,OAAO,GAAG,MAAM;IAC7D,MAAMG,MAAM,GAAGH,SAAS,GAAGvB,aAAa,CAAC2B,OAAO,GAAG3B,aAAa,CAAC4B,SAAS;IAE1E,IAAI,CAAChB,iBAAiB,CAACiB,aAAa,CAAC;MAAEC,WAAW,EAAEhB,kBAAkB;MAAEW,SAAS;MAAEC;IAAO,CAAC,CAAC,EAC1F;IAEF,IAAIH,SAAS,EAAE;MACbV,YAAY,CAACkB,IAAI,CAAC,CAAC;IACrB;IAEAzB,KAAK,CAACG,OAAO,CAACa,MAAM,CAAC,CAAC;EACxB,CAAC;EAED,oBACElB,KAAA,CAACb,IAAI;IAAAyC,QAAA,gBACH9B,IAAA,CAACX,IAAI;MAAC0C,KAAK,EAAEC,MAAM,CAACC,OAAQ;MAAAH,QAAA,eAC1B9B,IAAA,CAACN,eAAe;QACdkB,kBAAkB,EAAEA,kBAAmB;QACvCsB,kBAAkB,EAAExB,iBAAiB,CAACwB,kBAAmB;QACzDC,iBAAiB,EAAEzB,iBAAiB,CAACyB,iBAAkB;QACvDC,UAAU,EAAE1B,iBAAiB,CAAC0B,UAAW;QACzCC,cAAc,EAAEtB;MAAa,CAC9B;IAAC,CACE,CAAC,eACPf,IAAA,CAACP,aAAa;MAAC6C,QAAQ,EAAElB;IAAO,CAAE,CAAC;EAAA,CAC/B,CAAC;AAEX,CAAC;AAED,MAAMY,MAAM,GAAG1C,UAAU,CAACiD,MAAM,CAAC;EAC/BN,OAAO,EAAE;IACPO,UAAU,EAAE,QAAQ;IACpBC,eAAe,EAAEjD,OAAO,CAAC,GAAG,CAAC;IAC7BkD,iBAAiB,EAAElD,OAAO,CAAC,GAAG,CAAC;IAC/BmD,SAAS,EAAEnD,OAAO,CAAC,GAAG;EACxB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,41 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import React from 'react';
|
|
4
|
-
import { View, StyleSheet
|
|
4
|
+
import { View, StyleSheet } from 'react-native';
|
|
5
5
|
import { Button, ButtonColor, ButtonSize, ButtonVariant, Typography, COLORS, SHADOWS, SPACING, FONT_FAMILY, BORDER_RADIUS } from '@magmamath/react-native-ui';
|
|
6
|
+
import { GradientView } from "../../../../lib/components/GradientView.js";
|
|
6
7
|
import { BannerFlashcards } from "./BannerFlashcards.js";
|
|
7
8
|
import { useFluency } from "../../context/FluencyContext.js";
|
|
8
9
|
import { useText } from "../../../../i18n/i18n.js";
|
|
9
10
|
import { FlashIcon } from "../../assets/FlashIcon.js";
|
|
10
11
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
-
const GradientBackground = Platform.select({
|
|
12
|
-
web: () => /*#__PURE__*/_jsx(View, {
|
|
13
|
-
style: [StyleSheet.absoluteFill, {
|
|
14
|
-
backgroundImage: 'linear-gradient(90deg, #FFFFFF 23.1%, #FFF7E9 81.73%)',
|
|
15
|
-
pointerEvents: 'none'
|
|
16
|
-
}]
|
|
17
|
-
}),
|
|
18
|
-
default: () => {
|
|
19
|
-
const {
|
|
20
|
-
LinearGradient
|
|
21
|
-
} = require('expo-linear-gradient');
|
|
22
|
-
return /*#__PURE__*/_jsx(LinearGradient, {
|
|
23
|
-
colors: ['#FFFFFF', '#FFF7E9'],
|
|
24
|
-
locations: [0.231, 0.8173],
|
|
25
|
-
start: {
|
|
26
|
-
x: 0,
|
|
27
|
-
y: 0
|
|
28
|
-
},
|
|
29
|
-
end: {
|
|
30
|
-
x: 1,
|
|
31
|
-
y: 0
|
|
32
|
-
},
|
|
33
|
-
style: [StyleSheet.absoluteFill, {
|
|
34
|
-
pointerEvents: 'none'
|
|
35
|
-
}]
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
12
|
export const StartBanner = () => {
|
|
40
13
|
const t = useText();
|
|
41
14
|
const {
|
|
@@ -46,7 +19,20 @@ export const StartBanner = () => {
|
|
|
46
19
|
style: styles.container,
|
|
47
20
|
children: [/*#__PURE__*/_jsx(View, {
|
|
48
21
|
style: styles.gradientClip,
|
|
49
|
-
children: /*#__PURE__*/_jsx(
|
|
22
|
+
children: /*#__PURE__*/_jsx(GradientView, {
|
|
23
|
+
colors: ['#FFFFFF', '#FFF7E9'],
|
|
24
|
+
locations: [0.231, 0.8173],
|
|
25
|
+
start: {
|
|
26
|
+
x: 0,
|
|
27
|
+
y: 0
|
|
28
|
+
},
|
|
29
|
+
end: {
|
|
30
|
+
x: 1,
|
|
31
|
+
y: 0
|
|
32
|
+
},
|
|
33
|
+
style: StyleSheet.absoluteFill,
|
|
34
|
+
pointerEvents: "none"
|
|
35
|
+
})
|
|
50
36
|
}), /*#__PURE__*/_jsx(View, {
|
|
51
37
|
style: styles.buttonContainer,
|
|
52
38
|
children: /*#__PURE__*/_jsxs(View, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","StyleSheet","
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","Button","ButtonColor","ButtonSize","ButtonVariant","Typography","COLORS","SHADOWS","SPACING","FONT_FAMILY","BORDER_RADIUS","GradientView","BannerFlashcards","useFluency","useText","FlashIcon","jsx","_jsx","jsxs","_jsxs","StartBanner","t","model","onStartPress","style","styles","container","children","gradientClip","colors","locations","start","x","y","end","absoluteFill","pointerEvents","buttonContainer","buttonGroup","onPress","solving","disabled","isLoading","isActive","icon","color","NEUTRAL_1","variant","PRIMARY","size","LARGE","colorScheme","YELLOW","raiseLevel","button","buttonSubtitle","examples","left","right","create","flex","height","justifyContent","paddingVertical","paddingHorizontal","borderRadius","absoluteFillObject","overflow","alignItems","zIndex","gap","minWidth","maxWidth","textTransform","fontSize","fontWeight","BLACK","fontFamily","buenosAires","flashcard","position","backgroundColor","springIcon","bottom","marginTop","alignSelf"],"sourceRoot":"../../../../../../src","sources":["features/fluency/components/start-banner/StartBanner.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { FluencyMasteryLevel, FluencyMode, COLOR_FAMILY_PALETTES } from "./fluency.constants.js";
|
|
4
|
-
// TODO: Align box-to-mastery mapping with BE response schema.
|
|
5
4
|
export const getMasteryLevelByBox = box => {
|
|
6
|
-
if (box
|
|
7
|
-
if (box
|
|
8
|
-
if (box
|
|
9
|
-
return FluencyMasteryLevel.LEARNING;
|
|
5
|
+
if (box === 5) return FluencyMasteryLevel.MASTERED;
|
|
6
|
+
if (box === 4) return FluencyMasteryLevel.STRONG;
|
|
7
|
+
if (box === 3) return FluencyMasteryLevel.GROWING;
|
|
8
|
+
if (box === 2) return FluencyMasteryLevel.LEARNING;
|
|
9
|
+
return null;
|
|
10
10
|
};
|
|
11
11
|
export const createFluencyMode = ({
|
|
12
12
|
mode,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["FluencyMasteryLevel","FluencyMode","COLOR_FAMILY_PALETTES","getMasteryLevelByBox","box","MASTERED","STRONG","GROWING","LEARNING","createFluencyMode","mode","label","symbol","colorFamily","palette","learning","growing","strong","mastered","shades","select","preset","buttonColor","button","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","isCommutative","ADDITION","MULTIPLICATION","factAt","col","find","rowNumbers","Array","from","length","_","i","columnNumbers","headerRow","isHeader","numbers","dataRows","fact","mirrorFact","primaryBox","mirrorBox","effectiveBox"],"sourceRoot":"../../../../src","sources":["features/fluency/fluency.helpers.ts"],"mappings":";;AAAA,SAEEA,mBAAmB,EACnBC,WAAW,EACXC,qBAAqB,QAChB,wBAAqB;AAI5B
|
|
1
|
+
{"version":3,"names":["FluencyMasteryLevel","FluencyMode","COLOR_FAMILY_PALETTES","getMasteryLevelByBox","box","MASTERED","STRONG","GROWING","LEARNING","createFluencyMode","mode","label","symbol","colorFamily","palette","learning","growing","strong","mastered","shades","select","preset","buttonColor","button","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","isCommutative","ADDITION","MULTIPLICATION","factAt","col","find","rowNumbers","Array","from","length","_","i","columnNumbers","headerRow","isHeader","numbers","dataRows","fact","mirrorFact","primaryBox","mirrorBox","effectiveBox"],"sourceRoot":"../../../../src","sources":["features/fluency/fluency.helpers.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
import { useRef } from 'react';
|
|
4
4
|
import { Dimensions } from 'react-native';
|
|
5
5
|
import { useSharedValue, useAnimatedStyle, withTiming, withDelay, withSequence, Easing, runOnJS } from 'react-native-reanimated';
|
|
6
|
+
const SHAKE_STEP_DURATION = 60;
|
|
7
|
+
const SNAP_SUCCESS_DURATION = 300;
|
|
6
8
|
const SNAP = {
|
|
7
9
|
duration: 240,
|
|
8
10
|
easing: Easing.bezier(0.6, 0, 0.4, 1),
|
|
@@ -15,8 +17,6 @@ const STEP_UP = {
|
|
|
15
17
|
duration: 320,
|
|
16
18
|
easing: Easing.bezier(0.3, 0.9, 0.2, 1)
|
|
17
19
|
};
|
|
18
|
-
|
|
19
|
-
// Initial positions of each backing layer: [top, side]
|
|
20
20
|
const L = [{
|
|
21
21
|
top: 12,
|
|
22
22
|
side: 20
|
|
@@ -27,8 +27,10 @@ const L = [{
|
|
|
27
27
|
top: 36,
|
|
28
28
|
side: 60
|
|
29
29
|
}];
|
|
30
|
-
export const useCardSnapAnimation = () => {
|
|
30
|
+
export const useCardSnapAnimation = (params = {}) => {
|
|
31
31
|
const isAnimating = useRef(false);
|
|
32
|
+
const onCompleteRef = useRef(params.onComplete);
|
|
33
|
+
onCompleteRef.current = params.onComplete;
|
|
32
34
|
const translateX = useSharedValue(0);
|
|
33
35
|
const translateY = useSharedValue(0);
|
|
34
36
|
const rotate = useSharedValue(0);
|
|
@@ -69,12 +71,11 @@ export const useCardSnapAnimation = () => {
|
|
|
69
71
|
right: l3Side.value,
|
|
70
72
|
opacity: l3Opacity.value
|
|
71
73
|
}), [l3Top, l3Side, l3Opacity]);
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
opacity.value = 1;
|
|
74
|
+
const complete = () => {
|
|
75
|
+
isAnimating.current = false;
|
|
76
|
+
onCompleteRef.current?.();
|
|
77
|
+
};
|
|
78
|
+
const resetBackingCards = () => {
|
|
78
79
|
l1Top.value = L[0].top;
|
|
79
80
|
l1Side.value = L[0].side;
|
|
80
81
|
l2Top.value = L[1].top;
|
|
@@ -82,11 +83,17 @@ export const useCardSnapAnimation = () => {
|
|
|
82
83
|
l3Top.value = L[2].top;
|
|
83
84
|
l3Side.value = L[2].side;
|
|
84
85
|
l3Opacity.value = 0;
|
|
85
|
-
isAnimating.current = false;
|
|
86
86
|
};
|
|
87
|
-
const
|
|
87
|
+
const resetFrontCard = () => {
|
|
88
|
+
translateX.value = 0;
|
|
89
|
+
translateY.value = 0;
|
|
90
|
+
rotate.value = 0;
|
|
91
|
+
scale.value = 1;
|
|
92
|
+
opacity.value = 1;
|
|
93
|
+
};
|
|
94
|
+
const snap = (toX, toRotate, duration = SNAP.duration) => {
|
|
88
95
|
const snapConfig = {
|
|
89
|
-
duration
|
|
96
|
+
duration,
|
|
90
97
|
easing: SNAP.easing
|
|
91
98
|
};
|
|
92
99
|
const stepConfig = {
|
|
@@ -98,7 +105,7 @@ export const useCardSnapAnimation = () => {
|
|
|
98
105
|
rotate.value = withTiming(toRotate, snapConfig);
|
|
99
106
|
scale.value = withTiming(SNAP.scale, snapConfig);
|
|
100
107
|
opacity.value = withTiming(0, snapConfig);
|
|
101
|
-
l1Top.value = withDelay(STEP_UP.delay, withTiming(0, stepConfig, () => runOnJS(
|
|
108
|
+
l1Top.value = withDelay(STEP_UP.delay, withTiming(0, stepConfig, () => runOnJS(complete)()));
|
|
102
109
|
l1Side.value = withDelay(STEP_UP.delay, withTiming(0, stepConfig));
|
|
103
110
|
l2Top.value = withDelay(STEP_UP.delay, withTiming(L[0].top, stepConfig));
|
|
104
111
|
l2Side.value = withDelay(STEP_UP.delay, withTiming(L[0].side, stepConfig));
|
|
@@ -107,26 +114,29 @@ export const useCardSnapAnimation = () => {
|
|
|
107
114
|
l3Opacity.value = withDelay(STEP_UP.delay, withTiming(1, stepConfig));
|
|
108
115
|
};
|
|
109
116
|
const trigger = direction => {
|
|
110
|
-
if (isAnimating.current) return;
|
|
117
|
+
if (isAnimating.current) return false;
|
|
111
118
|
isAnimating.current = true;
|
|
119
|
+
resetFrontCard();
|
|
120
|
+
resetBackingCards();
|
|
112
121
|
const screenWidth = Dimensions.get('window').width;
|
|
113
122
|
const toX = direction === 'right' ? screenWidth * 1.6 : -screenWidth * 1.6;
|
|
114
123
|
const toRotate = direction === 'right' ? SNAP.rotate : -SNAP.rotate;
|
|
115
124
|
if (direction === 'right') {
|
|
116
|
-
snap(toX, toRotate);
|
|
117
|
-
return;
|
|
125
|
+
snap(toX, toRotate, SNAP_SUCCESS_DURATION);
|
|
126
|
+
return true;
|
|
118
127
|
}
|
|
119
128
|
translateX.value = withSequence(withTiming(-10, {
|
|
120
|
-
duration:
|
|
129
|
+
duration: SHAKE_STEP_DURATION
|
|
121
130
|
}), withTiming(10, {
|
|
122
|
-
duration:
|
|
131
|
+
duration: SHAKE_STEP_DURATION
|
|
123
132
|
}), withTiming(-6, {
|
|
124
|
-
duration:
|
|
133
|
+
duration: SHAKE_STEP_DURATION
|
|
125
134
|
}), withTiming(6, {
|
|
126
|
-
duration:
|
|
135
|
+
duration: SHAKE_STEP_DURATION
|
|
127
136
|
}), withTiming(0, {
|
|
128
|
-
duration:
|
|
137
|
+
duration: SHAKE_STEP_DURATION
|
|
129
138
|
}, () => runOnJS(snap)(toX, toRotate)));
|
|
139
|
+
return true;
|
|
130
140
|
};
|
|
131
141
|
return {
|
|
132
142
|
snapStyles: {
|
|
@@ -135,7 +145,8 @@ export const useCardSnapAnimation = () => {
|
|
|
135
145
|
mid,
|
|
136
146
|
far
|
|
137
147
|
},
|
|
138
|
-
trigger
|
|
148
|
+
trigger,
|
|
149
|
+
resetBackingCards
|
|
139
150
|
};
|
|
140
151
|
};
|
|
141
152
|
//# sourceMappingURL=useCardSnapAnimation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useRef","Dimensions","useSharedValue","useAnimatedStyle","withTiming","withDelay","withSequence","Easing","runOnJS","SNAP","duration","easing","bezier","rotate","scale","y","STEP_UP","delay","L","top","side","useCardSnapAnimation","isAnimating","translateX","translateY","opacity","l1Top","l1Side","l2Top","l2Side","l3Top","l3Side","l3Opacity","front","transform","value","near","left","right","mid","far","
|
|
1
|
+
{"version":3,"names":["useRef","Dimensions","useSharedValue","useAnimatedStyle","withTiming","withDelay","withSequence","Easing","runOnJS","SHAKE_STEP_DURATION","SNAP_SUCCESS_DURATION","SNAP","duration","easing","bezier","rotate","scale","y","STEP_UP","delay","L","top","side","useCardSnapAnimation","params","isAnimating","onCompleteRef","onComplete","current","translateX","translateY","opacity","l1Top","l1Side","l2Top","l2Side","l3Top","l3Side","l3Opacity","front","transform","value","near","left","right","mid","far","complete","resetBackingCards","resetFrontCard","snap","toX","toRotate","snapConfig","stepConfig","trigger","direction","screenWidth","get","width","snapStyles"],"sourceRoot":"../../../../../src","sources":["features/fluency/hooks/useCardSnapAnimation.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useLayoutEffect, useState } from 'react';
|
|
4
|
+
import { useCardSnapAnimation } from "./useCardSnapAnimation.js";
|
|
5
|
+
export const useFluencyCardDeckAnimation = () => {
|
|
6
|
+
const [exitingCardContent, setExitingCardContent] = useState(null);
|
|
7
|
+
const [exitingCardStatus, setExitingCardStatus] = useState(null);
|
|
8
|
+
const [shouldResetBackingCards, setShouldResetBackingCards] = useState(false);
|
|
9
|
+
const clearExitingCard = useCallback(() => {
|
|
10
|
+
setExitingCardContent(null);
|
|
11
|
+
setExitingCardStatus(null);
|
|
12
|
+
setShouldResetBackingCards(true);
|
|
13
|
+
}, []);
|
|
14
|
+
const animation = useCardSnapAnimation({
|
|
15
|
+
onComplete: clearExitingCard
|
|
16
|
+
});
|
|
17
|
+
useLayoutEffect(() => {
|
|
18
|
+
if (!shouldResetBackingCards || exitingCardContent) return;
|
|
19
|
+
animation.resetBackingCards();
|
|
20
|
+
setShouldResetBackingCards(false);
|
|
21
|
+
});
|
|
22
|
+
const startCardExit = ({
|
|
23
|
+
cardContent,
|
|
24
|
+
direction,
|
|
25
|
+
status
|
|
26
|
+
}) => {
|
|
27
|
+
if (!animation.trigger(direction)) return false;
|
|
28
|
+
setExitingCardContent(cardContent);
|
|
29
|
+
setExitingCardStatus(status);
|
|
30
|
+
return true;
|
|
31
|
+
};
|
|
32
|
+
return {
|
|
33
|
+
exitingCardContent,
|
|
34
|
+
exitingCardStatus,
|
|
35
|
+
snapStyles: animation.snapStyles,
|
|
36
|
+
startCardExit
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=useFluencyCardDeckAnimation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useLayoutEffect","useState","useCardSnapAnimation","useFluencyCardDeckAnimation","exitingCardContent","setExitingCardContent","exitingCardStatus","setExitingCardStatus","shouldResetBackingCards","setShouldResetBackingCards","clearExitingCard","animation","onComplete","resetBackingCards","startCardExit","cardContent","direction","status","trigger","snapStyles"],"sourceRoot":"../../../../../src","sources":["features/fluency/hooks/useFluencyCardDeckAnimation.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,eAAe,EAAEC,QAAQ,QAAQ,OAAO;AAE9D,SAASC,oBAAoB,QAA4B,2BAAwB;AAUjF,OAAO,MAAMC,2BAA2B,GAAGA,CAAA,KAAM;EAC/C,MAAM,CAACC,kBAAkB,EAAEC,qBAAqB,CAAC,GAAGJ,QAAQ,CAC1D,IACF,CAAC;EACD,MAAM,CAACK,iBAAiB,EAAEC,oBAAoB,CAAC,GAAGN,QAAQ,CAAuB,IAAI,CAAC;EACtF,MAAM,CAACO,uBAAuB,EAAEC,0BAA0B,CAAC,GAAGR,QAAQ,CAAC,KAAK,CAAC;EAE7E,MAAMS,gBAAgB,GAAGX,WAAW,CAAC,MAAM;IACzCM,qBAAqB,CAAC,IAAI,CAAC;IAC3BE,oBAAoB,CAAC,IAAI,CAAC;IAC1BE,0BAA0B,CAAC,IAAI,CAAC;EAClC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,SAAS,GAAGT,oBAAoB,CAAC;IAAEU,UAAU,EAAEF;EAAiB,CAAC,CAAC;EAExEV,eAAe,CAAC,MAAM;IACpB,IAAI,CAACQ,uBAAuB,IAAIJ,kBAAkB,EAAE;IAEpDO,SAAS,CAACE,iBAAiB,CAAC,CAAC;IAC7BJ,0BAA0B,CAAC,KAAK,CAAC;EACnC,CAAC,CAAC;EAEF,MAAMK,aAAa,GAAGA,CAAC;IAAEC,WAAW;IAAEC,SAAS;IAAEC;EAA4B,CAAC,KAAK;IACjF,IAAI,CAACN,SAAS,CAACO,OAAO,CAACF,SAAS,CAAC,EAAE,OAAO,KAAK;IAE/CX,qBAAqB,CAACU,WAAW,CAAC;IAClCR,oBAAoB,CAACU,MAAM,CAAC;IAC5B,OAAO,IAAI;EACb,CAAC;EAED,OAAO;IACLb,kBAAkB;IAClBE,iBAAiB;IACjBa,UAAU,EAAER,SAAS,CAACQ,UAAU;IAChCL;EACF,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -5,7 +5,7 @@ import { COLORS } from '@magmamath/react-native-ui';
|
|
|
5
5
|
import { FLUENCY_MODE_PRESETS, FluencyMasteryLevel } from "../fluency.constants.js";
|
|
6
6
|
import { useFluency } from "../context/FluencyContext.js";
|
|
7
7
|
import { useText } from "../../../i18n/i18n.js";
|
|
8
|
-
export const useFluencySolvingPreset =
|
|
8
|
+
export const useFluencySolvingPreset = params => {
|
|
9
9
|
const t = useText();
|
|
10
10
|
const {
|
|
11
11
|
model
|
|
@@ -17,7 +17,7 @@ export const useFluencySolvingPreset = () => {
|
|
|
17
17
|
matrixMode: model.matrix.$mode,
|
|
18
18
|
current: model.solving.$current
|
|
19
19
|
});
|
|
20
|
-
const preset = FLUENCY_MODE_PRESETS[current?.mode ?? matrixMode];
|
|
20
|
+
const preset = FLUENCY_MODE_PRESETS[params?.mode ?? current?.mode ?? matrixMode];
|
|
21
21
|
const legendItems = [{
|
|
22
22
|
label: t('student.fluency.notStarted'),
|
|
23
23
|
color: COLORS.NEUTRAL_2,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useUnit","COLORS","FLUENCY_MODE_PRESETS","FluencyMasteryLevel","useFluency","useText","useFluencySolvingPreset","t","model","matrixMode","current","matrix","$mode","solving","$current","preset","mode","legendItems","label","color","NEUTRAL_2","withBorder","levelColors","LEARNING","GROWING","STRONG","MASTERED","symbol","operatorLabel","colors","level","accent","accentColor","streak","header","streakColor","button","buttonColor","legend","items"],"sourceRoot":"../../../../../src","sources":["features/fluency/hooks/useFluencySolvingPreset.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,gBAAgB;AACxC,SAASC,MAAM,QAAQ,4BAA4B;AAEnD,SAASC,oBAAoB,EAAEC,mBAAmB,
|
|
1
|
+
{"version":3,"names":["useUnit","COLORS","FLUENCY_MODE_PRESETS","FluencyMasteryLevel","useFluency","useText","useFluencySolvingPreset","params","t","model","matrixMode","current","matrix","$mode","solving","$current","preset","mode","legendItems","label","color","NEUTRAL_2","withBorder","levelColors","LEARNING","GROWING","STRONG","MASTERED","symbol","operatorLabel","colors","level","accent","accentColor","streak","header","streakColor","button","buttonColor","legend","items"],"sourceRoot":"../../../../../src","sources":["features/fluency/hooks/useFluencySolvingPreset.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,gBAAgB;AACxC,SAASC,MAAM,QAAQ,4BAA4B;AAEnD,SAASC,oBAAoB,EAAEC,mBAAmB,QAA0B,yBAAsB;AAElG,SAASC,UAAU,QAAQ,8BAA2B;AACtD,SAASC,OAAO,QAAQ,uBAAoB;AAkB5C,OAAO,MAAMC,uBAAuB,GAClCC,MAAsC,IACJ;EAClC,MAAMC,CAAC,GAAGH,OAAO,CAAC,CAAC;EACnB,MAAM;IAAEI;EAAM,CAAC,GAAGL,UAAU,CAAC,CAAC;EAC9B,MAAM;IAAEM,UAAU;IAAEC;EAAQ,CAAC,GAAGX,OAAO,CAAC;IACtCU,UAAU,EAAED,KAAK,CAACG,MAAM,CAACC,KAAK;IAC9BF,OAAO,EAAEF,KAAK,CAACK,OAAO,CAACC;EACzB,CAAC,CAAC;EACF,MAAMC,MAAM,GAAGd,oBAAoB,CAACK,MAAM,EAAEU,IAAI,IAAIN,OAAO,EAAEM,IAAI,IAAIP,UAAU,CAAC;EAEhF,MAAMQ,WAAyB,GAAG,CAChC;IAAEC,KAAK,EAAEX,CAAC,CAAC,4BAA4B,CAAC;IAAEY,KAAK,EAAEnB,MAAM,CAACoB,SAAS;IAAEC,UAAU,EAAE;EAAK,CAAC,EACrF;IACEH,KAAK,EAAEX,CAAC,CAAC,iCAAiC,CAAC;IAC3CY,KAAK,EAAEJ,MAAM,CAACJ,MAAM,CAACW,WAAW,CAACpB,mBAAmB,CAACqB,QAAQ;EAC/D,CAAC,EACD;IACEL,KAAK,EAAEX,CAAC,CAAC,gCAAgC,CAAC;IAC1CY,KAAK,EAAEJ,MAAM,CAACJ,MAAM,CAACW,WAAW,CAACpB,mBAAmB,CAACsB,OAAO;EAC9D,CAAC,EACD;IACEN,KAAK,EAAEX,CAAC,CAAC,+BAA+B,CAAC;IACzCY,KAAK,EAAEJ,MAAM,CAACJ,MAAM,CAACW,WAAW,CAACpB,mBAAmB,CAACuB,MAAM;EAC7D,CAAC,EACD;IACEP,KAAK,EAAEX,CAAC,CAAC,iCAAiC,CAAC;IAC3CY,KAAK,EAAEJ,MAAM,CAACJ,MAAM,CAACW,WAAW,CAACpB,mBAAmB,CAACwB,QAAQ;EAC/D,CAAC,CACF;EAED,OAAO;IACLC,MAAM,EAAEZ,MAAM,CAACY,MAAM;IACrBT,KAAK,EAAEX,CAAC,CAACQ,MAAM,CAACJ,MAAM,CAACiB,aAAa,CAAC;IACrCC,MAAM,EAAE;MACNC,KAAK,EAAEf,MAAM,CAACJ,MAAM,CAACW,WAAW;MAChCS,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,EAAEtB;IAAY;EAC/B,CAAC;AACH,CAAC","ignoreList":[]}
|