@magmamath/students-features 1.3.26-rc.7 → 1.3.26-rc.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/dist/commonjs/features/fluency/components/fluency-solving/components/EquationContent.js +39 -18
  2. package/dist/commonjs/features/fluency/components/fluency-solving/components/EquationContent.js.map +1 -1
  3. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencyCardDeck.js +113 -0
  4. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencyCardDeck.js.map +1 -0
  5. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencyEquationCard.js +22 -81
  6. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencyEquationCard.js.map +1 -1
  7. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingCard.js +32 -15
  8. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingCard.js.map +1 -1
  9. package/dist/commonjs/features/fluency/components/start-banner/StartBanner.js +15 -29
  10. package/dist/commonjs/features/fluency/components/start-banner/StartBanner.js.map +1 -1
  11. package/dist/commonjs/features/fluency/hooks/useCardSnapAnimation.js +33 -22
  12. package/dist/commonjs/features/fluency/hooks/useCardSnapAnimation.js.map +1 -1
  13. package/dist/commonjs/features/fluency/hooks/useFluencyCardDeckAnimation.js +44 -0
  14. package/dist/commonjs/features/fluency/hooks/useFluencyCardDeckAnimation.js.map +1 -0
  15. package/dist/commonjs/features/fluency/hooks/useFluencySolvingPreset.js +2 -2
  16. package/dist/commonjs/features/fluency/hooks/useFluencySolvingPreset.js.map +1 -1
  17. package/dist/commonjs/lib/components/GradientView.js +57 -0
  18. package/dist/commonjs/lib/components/GradientView.js.map +1 -0
  19. package/dist/module/features/fluency/components/fluency-solving/components/EquationContent.js +40 -19
  20. package/dist/module/features/fluency/components/fluency-solving/components/EquationContent.js.map +1 -1
  21. package/dist/module/features/fluency/components/fluency-solving/components/FluencyCardDeck.js +107 -0
  22. package/dist/module/features/fluency/components/fluency-solving/components/FluencyCardDeck.js.map +1 -0
  23. package/dist/module/features/fluency/components/fluency-solving/components/FluencyEquationCard.js +23 -82
  24. package/dist/module/features/fluency/components/fluency-solving/components/FluencyEquationCard.js.map +1 -1
  25. package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingCard.js +32 -15
  26. package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingCard.js.map +1 -1
  27. package/dist/module/features/fluency/components/start-banner/StartBanner.js +16 -30
  28. package/dist/module/features/fluency/components/start-banner/StartBanner.js.map +1 -1
  29. package/dist/module/features/fluency/hooks/useCardSnapAnimation.js +33 -22
  30. package/dist/module/features/fluency/hooks/useCardSnapAnimation.js.map +1 -1
  31. package/dist/module/features/fluency/hooks/useFluencyCardDeckAnimation.js +39 -0
  32. package/dist/module/features/fluency/hooks/useFluencyCardDeckAnimation.js.map +1 -0
  33. package/dist/module/features/fluency/hooks/useFluencySolvingPreset.js +2 -2
  34. package/dist/module/features/fluency/hooks/useFluencySolvingPreset.js.map +1 -1
  35. package/dist/module/lib/components/GradientView.js +51 -0
  36. package/dist/module/lib/components/GradientView.js.map +1 -0
  37. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/EquationContent.d.ts +5 -1
  38. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/EquationContent.d.ts.map +1 -1
  39. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencyCardDeck.d.ts +14 -0
  40. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencyCardDeck.d.ts.map +1 -0
  41. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencyEquationCard.d.ts +7 -3
  42. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencyEquationCard.d.ts.map +1 -1
  43. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingCard.d.ts.map +1 -1
  44. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.types.d.ts +4 -0
  45. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.types.d.ts.map +1 -1
  46. package/dist/typescript/commonjs/features/fluency/components/start-banner/StartBanner.d.ts.map +1 -1
  47. package/dist/typescript/commonjs/features/fluency/hooks/useCardSnapAnimation.d.ts +7 -2
  48. package/dist/typescript/commonjs/features/fluency/hooks/useCardSnapAnimation.d.ts.map +1 -1
  49. package/dist/typescript/commonjs/features/fluency/hooks/useFluencyCardDeckAnimation.d.ts +16 -0
  50. package/dist/typescript/commonjs/features/fluency/hooks/useFluencyCardDeckAnimation.d.ts.map +1 -0
  51. package/dist/typescript/commonjs/features/fluency/hooks/useFluencySolvingPreset.d.ts +5 -2
  52. package/dist/typescript/commonjs/features/fluency/hooks/useFluencySolvingPreset.d.ts.map +1 -1
  53. package/dist/typescript/commonjs/lib/components/GradientView.d.ts +18 -0
  54. package/dist/typescript/commonjs/lib/components/GradientView.d.ts.map +1 -0
  55. package/dist/typescript/module/features/fluency/components/fluency-solving/components/EquationContent.d.ts +5 -1
  56. package/dist/typescript/module/features/fluency/components/fluency-solving/components/EquationContent.d.ts.map +1 -1
  57. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencyCardDeck.d.ts +14 -0
  58. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencyCardDeck.d.ts.map +1 -0
  59. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencyEquationCard.d.ts +7 -3
  60. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencyEquationCard.d.ts.map +1 -1
  61. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencySolvingCard.d.ts.map +1 -1
  62. package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.types.d.ts +4 -0
  63. package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.types.d.ts.map +1 -1
  64. package/dist/typescript/module/features/fluency/components/start-banner/StartBanner.d.ts.map +1 -1
  65. package/dist/typescript/module/features/fluency/hooks/useCardSnapAnimation.d.ts +7 -2
  66. package/dist/typescript/module/features/fluency/hooks/useCardSnapAnimation.d.ts.map +1 -1
  67. package/dist/typescript/module/features/fluency/hooks/useFluencyCardDeckAnimation.d.ts +16 -0
  68. package/dist/typescript/module/features/fluency/hooks/useFluencyCardDeckAnimation.d.ts.map +1 -0
  69. package/dist/typescript/module/features/fluency/hooks/useFluencySolvingPreset.d.ts +5 -2
  70. package/dist/typescript/module/features/fluency/hooks/useFluencySolvingPreset.d.ts.map +1 -1
  71. package/dist/typescript/module/lib/components/GradientView.d.ts +18 -0
  72. package/dist/typescript/module/lib/components/GradientView.d.ts.map +1 -0
  73. package/package.json +1 -1
  74. package/src/features/fluency/components/fluency-solving/components/EquationContent.tsx +41 -25
  75. package/src/features/fluency/components/fluency-solving/components/FluencyCardDeck.tsx +128 -0
  76. package/src/features/fluency/components/fluency-solving/components/FluencyEquationCard.tsx +37 -72
  77. package/src/features/fluency/components/fluency-solving/components/FluencySolvingCard.tsx +32 -13
  78. package/src/features/fluency/components/fluency-solving/fluencySolving.types.ts +5 -0
  79. package/src/features/fluency/components/start-banner/StartBanner.tsx +10 -28
  80. package/src/features/fluency/hooks/useCardSnapAnimation.ts +41 -21
  81. package/src/features/fluency/hooks/useFluencyCardDeckAnimation.ts +49 -0
  82. package/src/features/fluency/hooks/useFluencySolvingPreset.ts +25 -7
  83. package/src/lib/components/GradientView.tsx +63 -0
@@ -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 { useFluency } from "../../../context/FluencyContext.js";
10
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
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
- const updateAnswer = text => {
27
- const digits = text.replace(/\D/g, '');
28
- model.solving.setAnswer(digits || null);
9
+ return {
10
+ leftOperand: left,
11
+ rightOperand: right,
12
+ mode: fact?.mode
29
13
  };
30
- return /*#__PURE__*/_jsxs(View, {
31
- style: styles.stack,
32
- children: [/*#__PURE__*/_jsx(Animated.View, {
33
- style: [styles.card, styles.cardFar, animationStyles.far]
34
- }), /*#__PURE__*/_jsx(Animated.View, {
35
- style: [styles.card, styles.cardMid, animationStyles.mid]
36
- }), /*#__PURE__*/_jsx(Animated.View, {
37
- style: [styles.card, styles.cardNear, animationStyles.near],
38
- children: /*#__PURE__*/_jsx(EquationContent, {
39
- leftOperand: left,
40
- rightOperand: right,
41
- readOnly: true
42
- })
43
- }), /*#__PURE__*/_jsx(Animated.View, {
44
- style: [styles.card, styles.cardFront, animationStyles.front],
45
- children: /*#__PURE__*/_jsx(EquationContent, {
46
- leftOperand: left,
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","useUnit","View","StyleSheet","Animated","BORDER_RADIUS","COLORS","SHADOWS","EquationContent","useFluency","jsx","_jsx","jsxs","_jsxs","FluencyEquationCard","animationStyles","model","answer","fact","solving","$answer","$current","left","numbers","right","updateAnswer","text","digits","replace","setAnswer","style","styles","stack","children","card","cardFar","far","cardMid","mid","cardNear","near","leftOperand","rightOperand","readOnly","cardFront","front","value","onChange","create","width","maxWidth","height","borderRadius","backgroundColor","NEUTRAL_1","position","top","opacity","alignItems","justifyContent"],"sourceRoot":"../../../../../../../src","sources":["features/fluency/components/fluency-solving/components/FluencyEquationCard.tsx"],"mappings":"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","ignoreList":[]}
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":[]}
@@ -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 { FluencyEquationCard } from "./FluencyEquationCard.js";
8
+ import { FluencyCardDeck } from "./FluencyCardDeck.js";
9
9
  import { useFluency } from "../../../context/FluencyContext.js";
10
- import { useCardSnapAnimation } from "../../../hooks/useCardSnapAnimation.js";
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
- answer,
19
- fact
19
+ currentAnswer,
20
+ currentFact
20
21
  } = useUnit({
21
- answer: model.solving.$answer,
22
- fact: model.solving.$current
22
+ currentAnswer: model.solving.$answer,
23
+ currentFact: model.solving.$current
23
24
  });
24
- const animation = useCardSnapAnimation();
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 (!fact) return;
28
- const isCorrect = answer !== null && Number(answer) === fact.answer;
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(FluencyEquationCard, {
41
- animationStyles: animation.snapStyles
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
@@ -1 +1 @@
1
- {"version":3,"names":["React","View","StyleSheet","SPACING","useUnit","FluencyNumpad","FluencyEquationCard","useFluency","useCardSnapAnimation","useSuccessSound","jsx","_jsx","jsxs","_jsxs","FluencySolvingCard","model","answer","fact","solving","$answer","$current","animation","successSound","submit","isCorrect","Number","play","trigger","children","style","styles","wrapper","animationStyles","snapStyles","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,4BAA4B;AACpD,SAASC,OAAO,QAAQ,mCAAmC;AAC3D,SAASC,aAAa,QAAQ,oBAAiB;AAC/C,SAASC,mBAAmB,QAAQ,0BAAuB;AAC3D,SAASC,UAAU,QAAQ,oCAAiC;AAC5D,SAASC,oBAAoB,QAAQ,wCAAqC;AAC1E,SAASC,eAAe,QAAQ,mCAAgC;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEhE,OAAO,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;EACtC,MAAM;IAAEC;EAAM,CAAC,GAAGR,UAAU,CAAC,CAAC;EAC9B,MAAM;IAAES,MAAM;IAAEC;EAAK,CAAC,GAAGb,OAAO,CAAC;IAC/BY,MAAM,EAAED,KAAK,CAACG,OAAO,CAACC,OAAO;IAC7BF,IAAI,EAAEF,KAAK,CAACG,OAAO,CAACE;EACtB,CAAC,CAAC;EACF,MAAMC,SAAS,GAAGb,oBAAoB,CAAC,CAAC;EACxC,MAAMc,YAAY,GAAGb,eAAe,CAAC,CAAC;EAEtC,MAAMc,MAAM,GAAGA,CAAA,KAAM;IACnB,IAAI,CAACN,IAAI,EAAE;IAEX,MAAMO,SAAS,GAAGR,MAAM,KAAK,IAAI,IAAIS,MAAM,CAACT,MAAM,CAAC,KAAKC,IAAI,CAACD,MAAM;IACnE,IAAIQ,SAAS,EAAE;MACbF,YAAY,CAACI,IAAI,CAAC,CAAC;MACnBL,SAAS,CAACM,OAAO,CAAC,OAAO,CAAC;IAC5B,CAAC,MAAM;MACLN,SAAS,CAACM,OAAO,CAAC,MAAM,CAAC;IAC3B;IAEAZ,KAAK,CAACG,OAAO,CAACK,MAAM,CAAC,CAAC;EACxB,CAAC;EAED,oBACEV,KAAA,CAACZ,IAAI;IAAA2B,QAAA,gBACHjB,IAAA,CAACV,IAAI;MAAC4B,KAAK,EAAEC,MAAM,CAACC,OAAQ;MAAAH,QAAA,eAC1BjB,IAAA,CAACL,mBAAmB;QAAC0B,eAAe,EAAEX,SAAS,CAACY;MAAW,CAAE;IAAC,CAC1D,CAAC,eACPtB,IAAA,CAACN,aAAa;MAAC6B,QAAQ,EAAEX;IAAO,CAAE,CAAC;EAAA,CAC/B,CAAC;AAEX,CAAC;AAED,MAAMO,MAAM,GAAG5B,UAAU,CAACiC,MAAM,CAAC;EAC/BJ,OAAO,EAAE;IACPK,UAAU,EAAE,QAAQ;IACpBC,eAAe,EAAElC,OAAO,CAAC,GAAG,CAAC;IAC7BmC,iBAAiB,EAAEnC,OAAO,CAAC,GAAG,CAAC;IAC/BoC,SAAS,EAAEpC,OAAO,CAAC,GAAG;EACxB;AACF,CAAC,CAAC","ignoreList":[]}
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":"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","ignoreList":[]}
@@ -1,41 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  import React from 'react';
4
- import { View, StyleSheet, Platform } from 'react-native';
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(GradientBackground, {})
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","Platform","Button","ButtonColor","ButtonSize","ButtonVariant","Typography","COLORS","SHADOWS","SPACING","FONT_FAMILY","BORDER_RADIUS","BannerFlashcards","useFluency","useText","FlashIcon","jsx","_jsx","jsxs","_jsxs","GradientBackground","select","web","style","absoluteFill","backgroundImage","pointerEvents","default","LinearGradient","require","colors","locations","start","x","y","end","StartBanner","t","model","onStartPress","styles","container","children","gradientClip","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
+ {"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":[]}
@@ -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 reset = () => {
73
- translateX.value = 0;
74
- translateY.value = 0;
75
- rotate.value = 0;
76
- scale.value = 1;
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 snap = (toX, toRotate) => {
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: SNAP.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(reset)()));
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: 60
129
+ duration: SHAKE_STEP_DURATION
121
130
  }), withTiming(10, {
122
- duration: 60
131
+ duration: SHAKE_STEP_DURATION
123
132
  }), withTiming(-6, {
124
- duration: 60
133
+ duration: SHAKE_STEP_DURATION
125
134
  }), withTiming(6, {
126
- duration: 60
135
+ duration: SHAKE_STEP_DURATION
127
136
  }), withTiming(0, {
128
- duration: 60
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","reset","current","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":[]}
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":";;AAAA,SAASA,MAAM,QAAQ,OAAO;AAC9B,SAASC,UAAU,QAAQ,cAAc;AACzC,SACEC,cAAc,EACdC,gBAAgB,EAChBC,UAAU,EACVC,SAAS,EACTC,YAAY,EACZC,MAAM,EACNC,OAAO,QACF,yBAAyB;AAiBhC,MAAMC,mBAAmB,GAAG,EAAE;AAE9B,MAAMC,qBAAqB,GAAG,GAAG;AAEjC,MAAMC,IAAI,GAAG;EACXC,QAAQ,EAAE,GAAG;EACbC,MAAM,EAAEN,MAAM,CAACO,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EACrCC,MAAM,EAAE,EAAE;EACVC,KAAK,EAAE,IAAI;EACXC,CAAC,EAAE,CAAC;AACN,CAAU;AAEV,MAAMC,OAAO,GAAG;EACdC,KAAK,EAAE,EAAE;EACTP,QAAQ,EAAE,GAAG;EACbC,MAAM,EAAEN,MAAM,CAACO,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACxC,CAAU;AAEV,MAAMM,CAAC,GAAG,CACR;EAAEC,GAAG,EAAE,EAAE;EAAEC,IAAI,EAAE;AAAG,CAAC,EACrB;EAAED,GAAG,EAAE,EAAE;EAAEC,IAAI,EAAE;AAAG,CAAC,EACrB;EAAED,GAAG,EAAE,EAAE;EAAEC,IAAI,EAAE;AAAG,CAAC,CACtB;AAED,OAAO,MAAMC,oBAAoB,GAAGA,CAACC,MAAkC,GAAG,CAAC,CAAC,KAAK;EAC/E,MAAMC,WAAW,GAAGzB,MAAM,CAAC,KAAK,CAAC;EACjC,MAAM0B,aAAa,GAAG1B,MAAM,CAACwB,MAAM,CAACG,UAAU,CAAC;EAC/CD,aAAa,CAACE,OAAO,GAAGJ,MAAM,CAACG,UAAU;EAEzC,MAAME,UAAU,GAAG3B,cAAc,CAAC,CAAC,CAAC;EACpC,MAAM4B,UAAU,GAAG5B,cAAc,CAAC,CAAC,CAAC;EACpC,MAAMa,MAAM,GAAGb,cAAc,CAAC,CAAC,CAAC;EAChC,MAAMc,KAAK,GAAGd,cAAc,CAAC,CAAC,CAAC;EAC/B,MAAM6B,OAAO,GAAG7B,cAAc,CAAC,CAAC,CAAC;EAEjC,MAAM8B,KAAK,GAAG9B,cAAc,CAACkB,CAAC,CAAC,CAAC,CAAC,CAACC,GAAG,CAAC;EACtC,MAAMY,MAAM,GAAG/B,cAAc,CAACkB,CAAC,CAAC,CAAC,CAAC,CAACE,IAAI,CAAC;EACxC,MAAMY,KAAK,GAAGhC,cAAc,CAACkB,CAAC,CAAC,CAAC,CAAC,CAACC,GAAG,CAAC;EACtC,MAAMc,MAAM,GAAGjC,cAAc,CAACkB,CAAC,CAAC,CAAC,CAAC,CAACE,IAAI,CAAC;EACxC,MAAMc,KAAK,GAAGlC,cAAc,CAACkB,CAAC,CAAC,CAAC,CAAC,CAACC,GAAG,CAAC;EACtC,MAAMgB,MAAM,GAAGnC,cAAc,CAACkB,CAAC,CAAC,CAAC,CAAC,CAACE,IAAI,CAAC;EACxC,MAAMgB,SAAS,GAAGpC,cAAc,CAAC,CAAC,CAAC;EAEnC,MAAMqC,KAAK,GAAGpC,gBAAgB,CAC5B,OAAO;IACLqC,SAAS,EAAE,CACT;MAAEX,UAAU,EAAEA,UAAU,CAACY;IAAM,CAAC,EAChC;MAAEX,UAAU,EAAEA,UAAU,CAACW;IAAM,CAAC,EAChC;MAAE1B,MAAM,EAAE,GAAGA,MAAM,CAAC0B,KAAK;IAAM,CAAC,EAChC;MAAEzB,KAAK,EAAEA,KAAK,CAACyB;IAAM,CAAC,CACvB;IACDV,OAAO,EAAEA,OAAO,CAACU;EACnB,CAAC,CAAC,EACF,CAACZ,UAAU,EAAEC,UAAU,EAAEf,MAAM,EAAEC,KAAK,EAAEe,OAAO,CACjD,CAAC;EAED,MAAMW,IAAI,GAAGvC,gBAAgB,CAC3B,OAAO;IAAEkB,GAAG,EAAEW,KAAK,CAACS,KAAK;IAAEE,IAAI,EAAEV,MAAM,CAACQ,KAAK;IAAEG,KAAK,EAAEX,MAAM,CAACQ;EAAM,CAAC,CAAC,EACrE,CAACT,KAAK,EAAEC,MAAM,CAChB,CAAC;EAED,MAAMY,GAAG,GAAG1C,gBAAgB,CAC1B,OAAO;IAAEkB,GAAG,EAAEa,KAAK,CAACO,KAAK;IAAEE,IAAI,EAAER,MAAM,CAACM,KAAK;IAAEG,KAAK,EAAET,MAAM,CAACM;EAAM,CAAC,CAAC,EACrE,CAACP,KAAK,EAAEC,MAAM,CAChB,CAAC;EAED,MAAMW,GAAG,GAAG3C,gBAAgB,CAC1B,OAAO;IAAEkB,GAAG,EAAEe,KAAK,CAACK,KAAK;IAAEE,IAAI,EAAEN,MAAM,CAACI,KAAK;IAAEG,KAAK,EAAEP,MAAM,CAACI,KAAK;IAAEV,OAAO,EAAEO,SAAS,CAACG;EAAM,CAAC,CAAC,EAC/F,CAACL,KAAK,EAAEC,MAAM,EAAEC,SAAS,CAC3B,CAAC;EAED,MAAMS,QAAQ,GAAGA,CAAA,KAAM;IACrBtB,WAAW,CAACG,OAAO,GAAG,KAAK;IAC3BF,aAAa,CAACE,OAAO,GAAG,CAAC;EAC3B,CAAC;EAED,MAAMoB,iBAAiB,GAAGA,CAAA,KAAM;IAC9BhB,KAAK,CAACS,KAAK,GAAGrB,CAAC,CAAC,CAAC,CAAC,CAACC,GAAG;IACtBY,MAAM,CAACQ,KAAK,GAAGrB,CAAC,CAAC,CAAC,CAAC,CAACE,IAAI;IACxBY,KAAK,CAACO,KAAK,GAAGrB,CAAC,CAAC,CAAC,CAAC,CAACC,GAAG;IACtBc,MAAM,CAACM,KAAK,GAAGrB,CAAC,CAAC,CAAC,CAAC,CAACE,IAAI;IACxBc,KAAK,CAACK,KAAK,GAAGrB,CAAC,CAAC,CAAC,CAAC,CAACC,GAAG;IACtBgB,MAAM,CAACI,KAAK,GAAGrB,CAAC,CAAC,CAAC,CAAC,CAACE,IAAI;IACxBgB,SAAS,CAACG,KAAK,GAAG,CAAC;EACrB,CAAC;EAED,MAAMQ,cAAc,GAAGA,CAAA,KAAM;IAC3BpB,UAAU,CAACY,KAAK,GAAG,CAAC;IACpBX,UAAU,CAACW,KAAK,GAAG,CAAC;IACpB1B,MAAM,CAAC0B,KAAK,GAAG,CAAC;IAChBzB,KAAK,CAACyB,KAAK,GAAG,CAAC;IACfV,OAAO,CAACU,KAAK,GAAG,CAAC;EACnB,CAAC;EAED,MAAMS,IAAI,GAAGA,CAACC,GAAW,EAAEC,QAAgB,EAAExC,QAAgB,GAAGD,IAAI,CAACC,QAAQ,KAAK;IAChF,MAAMyC,UAAU,GAAG;MAAEzC,QAAQ;MAAEC,MAAM,EAAEF,IAAI,CAACE;IAAO,CAAC;IACpD,MAAMyC,UAAU,GAAG;MAAE1C,QAAQ,EAAEM,OAAO,CAACN,QAAQ;MAAEC,MAAM,EAAEK,OAAO,CAACL;IAAO,CAAC;IAEzEgB,UAAU,CAACY,KAAK,GAAGrC,UAAU,CAAC+C,GAAG,EAAEE,UAAU,CAAC;IAC9CvB,UAAU,CAACW,KAAK,GAAGrC,UAAU,CAACO,IAAI,CAACM,CAAC,EAAEoC,UAAU,CAAC;IACjDtC,MAAM,CAAC0B,KAAK,GAAGrC,UAAU,CAACgD,QAAQ,EAAEC,UAAU,CAAC;IAC/CrC,KAAK,CAACyB,KAAK,GAAGrC,UAAU,CAACO,IAAI,CAACK,KAAK,EAAEqC,UAAU,CAAC;IAChDtB,OAAO,CAACU,KAAK,GAAGrC,UAAU,CAAC,CAAC,EAAEiD,UAAU,CAAC;IAEzCrB,KAAK,CAACS,KAAK,GAAGpC,SAAS,CACrBa,OAAO,CAACC,KAAK,EACbf,UAAU,CAAC,CAAC,EAAEkD,UAAU,EAAE,MAAM9C,OAAO,CAACuC,QAAQ,CAAC,CAAC,CAAC,CACrD,CAAC;IACDd,MAAM,CAACQ,KAAK,GAAGpC,SAAS,CAACa,OAAO,CAACC,KAAK,EAAEf,UAAU,CAAC,CAAC,EAAEkD,UAAU,CAAC,CAAC;IAClEpB,KAAK,CAACO,KAAK,GAAGpC,SAAS,CAACa,OAAO,CAACC,KAAK,EAAEf,UAAU,CAACgB,CAAC,CAAC,CAAC,CAAC,CAACC,GAAG,EAAEiC,UAAU,CAAC,CAAC;IACxEnB,MAAM,CAACM,KAAK,GAAGpC,SAAS,CAACa,OAAO,CAACC,KAAK,EAAEf,UAAU,CAACgB,CAAC,CAAC,CAAC,CAAC,CAACE,IAAI,EAAEgC,UAAU,CAAC,CAAC;IAC1ElB,KAAK,CAACK,KAAK,GAAGpC,SAAS,CAACa,OAAO,CAACC,KAAK,EAAEf,UAAU,CAACgB,CAAC,CAAC,CAAC,CAAC,CAACC,GAAG,EAAEiC,UAAU,CAAC,CAAC;IACxEjB,MAAM,CAACI,KAAK,GAAGpC,SAAS,CAACa,OAAO,CAACC,KAAK,EAAEf,UAAU,CAACgB,CAAC,CAAC,CAAC,CAAC,CAACE,IAAI,EAAEgC,UAAU,CAAC,CAAC;IAC1EhB,SAAS,CAACG,KAAK,GAAGpC,SAAS,CAACa,OAAO,CAACC,KAAK,EAAEf,UAAU,CAAC,CAAC,EAAEkD,UAAU,CAAC,CAAC;EACvE,CAAC;EAED,MAAMC,OAAO,GAAIC,SAAwB,IAAK;IAC5C,IAAI/B,WAAW,CAACG,OAAO,EAAE,OAAO,KAAK;IACrCH,WAAW,CAACG,OAAO,GAAG,IAAI;IAC1BqB,cAAc,CAAC,CAAC;IAChBD,iBAAiB,CAAC,CAAC;IAEnB,MAAMS,WAAW,GAAGxD,UAAU,CAACyD,GAAG,CAAC,QAAQ,CAAC,CAACC,KAAK;IAClD,MAAMR,GAAG,GAAGK,SAAS,KAAK,OAAO,GAAGC,WAAW,GAAG,GAAG,GAAG,CAACA,WAAW,GAAG,GAAG;IAC1E,MAAML,QAAQ,GAAGI,SAAS,KAAK,OAAO,GAAG7C,IAAI,CAACI,MAAM,GAAG,CAACJ,IAAI,CAACI,MAAM;IAEnE,IAAIyC,SAAS,KAAK,OAAO,EAAE;MACzBN,IAAI,CAACC,GAAG,EAAEC,QAAQ,EAAE1C,qBAAqB,CAAC;MAC1C,OAAO,IAAI;IACb;IAEAmB,UAAU,CAACY,KAAK,GAAGnC,YAAY,CAC7BF,UAAU,CAAC,CAAC,EAAE,EAAE;MAAEQ,QAAQ,EAAEH;IAAoB,CAAC,CAAC,EAClDL,UAAU,CAAC,EAAE,EAAE;MAAEQ,QAAQ,EAAEH;IAAoB,CAAC,CAAC,EACjDL,UAAU,CAAC,CAAC,CAAC,EAAE;MAAEQ,QAAQ,EAAEH;IAAoB,CAAC,CAAC,EACjDL,UAAU,CAAC,CAAC,EAAE;MAAEQ,QAAQ,EAAEH;IAAoB,CAAC,CAAC,EAChDL,UAAU,CAAC,CAAC,EAAE;MAAEQ,QAAQ,EAAEH;IAAoB,CAAC,EAAE,MAAMD,OAAO,CAAC0C,IAAI,CAAC,CAACC,GAAG,EAAEC,QAAQ,CAAC,CACrF,CAAC;IACD,OAAO,IAAI;EACb,CAAC;EAED,OAAO;IAAEQ,UAAU,EAAE;MAAErB,KAAK;MAAEG,IAAI;MAAEG,GAAG;MAAEC;IAAI,CAAe;IAAES,OAAO;IAAEP;EAAkB,CAAC;AAC5F,CAAC","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,QAAQ,yBAAsB;AAEhF,SAASC,UAAU,QAAQ,8BAA2B;AACtD,SAASC,OAAO,QAAQ,uBAAoB;AAc5C,OAAO,MAAMC,uBAAuB,GAAGA,CAAA,KAAqC;EAC1E,MAAMC,CAAC,GAAGF,OAAO,CAAC,CAAC;EACnB,MAAM;IAAEG;EAAM,CAAC,GAAGJ,UAAU,CAAC,CAAC;EAC9B,MAAM;IAAEK,UAAU;IAAEC;EAAQ,CAAC,GAAGV,OAAO,CAAC;IACtCS,UAAU,EAAED,KAAK,CAACG,MAAM,CAACC,KAAK;IAC9BF,OAAO,EAAEF,KAAK,CAACK,OAAO,CAACC;EACzB,CAAC,CAAC;EACF,MAAMC,MAAM,GAAGb,oBAAoB,CAACQ,OAAO,EAAEM,IAAI,IAAIP,UAAU,CAAC;EAEhE,MAAMQ,WAAyB,GAAG,CAChC;IAAEC,KAAK,EAAEX,CAAC,CAAC,4BAA4B,CAAC;IAAEY,KAAK,EAAElB,MAAM,CAACmB,SAAS;IAAEC,UAAU,EAAE;EAAK,CAAC,EACrF;IAAEH,KAAK,EAAEX,CAAC,CAAC,iCAAiC,CAAC;IAAEY,KAAK,EAAEJ,MAAM,CAACJ,MAAM,CAACW,WAAW,CAACnB,mBAAmB,CAACoB,QAAQ;EAAE,CAAC,EAC/G;IAAEL,KAAK,EAAEX,CAAC,CAAC,gCAAgC,CAAC;IAAEY,KAAK,EAAEJ,MAAM,CAACJ,MAAM,CAACW,WAAW,CAACnB,mBAAmB,CAACqB,OAAO;EAAE,CAAC,EAC7G;IAAEN,KAAK,EAAEX,CAAC,CAAC,+BAA+B,CAAC;IAAEY,KAAK,EAAEJ,MAAM,CAACJ,MAAM,CAACW,WAAW,CAACnB,mBAAmB,CAACsB,MAAM;EAAE,CAAC,EAC3G;IAAEP,KAAK,EAAEX,CAAC,CAAC,iCAAiC,CAAC;IAAEY,KAAK,EAAEJ,MAAM,CAACJ,MAAM,CAACW,WAAW,CAACnB,mBAAmB,CAACuB,QAAQ;EAAE,CAAC,CAChH;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":[]}
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":[]}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { View, Platform } from 'react-native';
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ const buildCssGradient = (colors, start, end, locations) => {
7
+ const angle = Math.round(Math.atan2(end.x - start.x, -(end.y - start.y)) * (180 / Math.PI));
8
+ const stops = colors.map((color, i) => {
9
+ const pct = locations ? `${Math.round(locations[i] * 100)}%` : `${Math.round(i / (colors.length - 1) * 100)}%`;
10
+ return `${color} ${pct}`;
11
+ }).join(', ');
12
+ return `linear-gradient(${angle}deg, ${stops})`;
13
+ };
14
+ export const GradientView = ({
15
+ colors,
16
+ start = {
17
+ x: 0,
18
+ y: 0
19
+ },
20
+ end = {
21
+ x: 0,
22
+ y: 1
23
+ },
24
+ locations,
25
+ style,
26
+ pointerEvents,
27
+ children
28
+ }) => {
29
+ if (Platform.OS === 'web') {
30
+ return /*#__PURE__*/_jsx(View, {
31
+ pointerEvents: pointerEvents,
32
+ style: [style, {
33
+ backgroundImage: buildCssGradient(colors, start, end, locations)
34
+ }],
35
+ children: children
36
+ });
37
+ }
38
+ const {
39
+ LinearGradient
40
+ } = require('expo-linear-gradient');
41
+ return /*#__PURE__*/_jsx(LinearGradient, {
42
+ colors: colors,
43
+ start: start,
44
+ end: end,
45
+ locations: locations,
46
+ style: style,
47
+ pointerEvents: pointerEvents,
48
+ children: children
49
+ });
50
+ };
51
+ //# sourceMappingURL=GradientView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","Platform","jsx","_jsx","buildCssGradient","colors","start","end","locations","angle","Math","round","atan2","x","y","PI","stops","map","color","i","pct","length","join","GradientView","style","pointerEvents","children","OS","backgroundImage","LinearGradient","require"],"sourceRoot":"../../../../src","sources":["lib/components/GradientView.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,QAAQ,QAAQ,cAAc;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAe7C,MAAMC,gBAAgB,GAAGA,CAACC,MAAgB,EAAEC,KAAY,EAAEC,GAAU,EAAEC,SAAoB,KAAa;EACrG,MAAMC,KAAK,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,KAAK,CAACL,GAAG,CAACM,CAAC,GAAGP,KAAK,CAACO,CAAC,EAAE,EAAEN,GAAG,CAACO,CAAC,GAAGR,KAAK,CAACQ,CAAC,CAAC,CAAC,IAAI,GAAG,GAAGJ,IAAI,CAACK,EAAE,CAAC,CAAC;EAC3F,MAAMC,KAAK,GAAGX,MAAM,CACjBY,GAAG,CAAC,CAACC,KAAK,EAAEC,CAAC,KAAK;IACjB,MAAMC,GAAG,GAAGZ,SAAS,GACjB,GAAGE,IAAI,CAACC,KAAK,CAACH,SAAS,CAACW,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GACpC,GAAGT,IAAI,CAACC,KAAK,CAAEQ,CAAC,IAAId,MAAM,CAACgB,MAAM,GAAG,CAAC,CAAC,GAAI,GAAG,CAAC,GAAG;IACrD,OAAO,GAAGH,KAAK,IAAIE,GAAG,EAAE;EAC1B,CAAC,CAAC,CACDE,IAAI,CAAC,IAAI,CAAC;EACb,OAAO,mBAAmBb,KAAK,QAAQO,KAAK,GAAG;AACjD,CAAC;AAED,OAAO,MAAMO,YAAY,GAAGA,CAAC;EAC3BlB,MAAM;EACNC,KAAK,GAAG;IAAEO,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC;EACtBP,GAAG,GAAG;IAAEM,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC;EACpBN,SAAS;EACTgB,KAAK;EACLC,aAAa;EACbC;AACiB,CAAC,KAAK;EACvB,IAAIzB,QAAQ,CAAC0B,EAAE,KAAK,KAAK,EAAE;IACzB,oBACExB,IAAA,CAACH,IAAI;MACHyB,aAAa,EAAEA,aAAc;MAC7BD,KAAK,EAAE,CAACA,KAAK,EAAE;QAAEI,eAAe,EAAExB,gBAAgB,CAACC,MAAM,EAAEC,KAAK,EAAEC,GAAG,EAAEC,SAAS;MAAE,CAAC,CAAS;MAAAkB,QAAA,EAE3FA;IAAQ,CACL,CAAC;EAEX;EAEA,MAAM;IAAEG;EAAe,CAAC,GAAGC,OAAO,CAAC,sBAAsB,CAAC;EAC1D,oBACE3B,IAAA,CAAC0B,cAAc;IACbxB,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAEA,KAAM;IACbC,GAAG,EAAEA,GAAI;IACTC,SAAS,EAAEA,SAAU;IACrBgB,KAAK,EAAEA,KAAM;IACbC,aAAa,EAAEA,aAAc;IAAAC,QAAA,EAE5BA;EAAQ,CACK,CAAC;AAErB,CAAC","ignoreList":[]}