@cuemath/leap 3.5.35-link.1 → 3.5.36-as1
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/features/milestone/constants.js +15 -28
- package/dist/features/milestone/constants.js.map +1 -1
- package/dist/features/milestone/create/milestone-create-helpers.js +42 -43
- package/dist/features/milestone/create/milestone-create-helpers.js.map +1 -1
- package/dist/features/timeline/monthly-timeline/monthly-report/comps/goals/goals-card/goals-card.js +15 -15
- package/dist/features/timeline/monthly-timeline/monthly-report/comps/goals/goals-card/goals-card.js.map +1 -1
- package/dist/features/trial-session/comps/school-goals/school-goals.js +80 -85
- package/dist/features/trial-session/comps/school-goals/school-goals.js.map +1 -1
- package/dist/features/trial-session/comps/worksheet/worksheet.js +33 -42
- package/dist/features/trial-session/comps/worksheet/worksheet.js.map +1 -1
- package/dist/features/trial-session/helper.js +66 -69
- package/dist/features/trial-session/helper.js.map +1 -1
- package/dist/features/trial-session/hooks/use-slide-config-update.js +39 -53
- package/dist/features/trial-session/hooks/use-slide-config-update.js.map +1 -1
- package/dist/features/trial-session/hooks/use-trial-session-navigation.js +129 -141
- package/dist/features/trial-session/hooks/use-trial-session-navigation.js.map +1 -1
- package/dist/features/trial-session/left-panel/index.js.map +1 -1
- package/dist/features/trial-session/trial-session-constants.js +9 -16
- package/dist/features/trial-session/trial-session-constants.js.map +1 -1
- package/dist/features/trial-session/trial-session-types.js.map +1 -1
- package/dist/features/trial-session/trial-session-view.js +16 -17
- package/dist/features/trial-session/trial-session-view.js.map +1 -1
- package/dist/features/trial-session/trial-session.js +66 -68
- package/dist/features/trial-session/trial-session.js.map +1 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.js +333 -331
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,57 +1,44 @@
|
|
|
1
|
-
const S = 31536e3, T = 31536e6,
|
|
1
|
+
const S = 31536e3, T = 31536e6, _ = 480, E = {
|
|
2
2
|
SAT_DEMO: "SAT-DEMO",
|
|
3
3
|
SAT_MATH: "SAT-MATH",
|
|
4
4
|
SAT_ENGLISH: "SAT-ENGLISH",
|
|
5
5
|
SAT_TESTS: "SAT-TESTS"
|
|
6
|
-
},
|
|
6
|
+
}, o = {
|
|
7
7
|
MATH: "MATH",
|
|
8
8
|
CODING: "CODING",
|
|
9
9
|
SCIENCE: "SCIENCE",
|
|
10
10
|
ELA: "ELA",
|
|
11
11
|
ELP: "ELP",
|
|
12
12
|
...E
|
|
13
|
-
},
|
|
14
|
-
ONLINE: "ONLINE",
|
|
15
|
-
PLUS: "PLUS",
|
|
16
|
-
REGULAR: "REGULAR",
|
|
17
|
-
HYBRID: "HYBRID",
|
|
18
|
-
HYBRID_PLUS: "HYBRID_PLUS",
|
|
19
|
-
ARMY: "ARMY",
|
|
20
|
-
CLASS_K5: "CLASS_K5",
|
|
21
|
-
OLYMPIAD: "OLYMPIAD",
|
|
22
|
-
HIGH: "HIGH",
|
|
23
|
-
GROUP_CLASS: "GROUP_CLASS",
|
|
24
|
-
CUECENTER: "CUECENTER"
|
|
25
|
-
}, O = {
|
|
13
|
+
}, A = {
|
|
26
14
|
SCHOOL_SUCCESS: "SCHOOL_SUCCESS",
|
|
27
15
|
TEST_PREP: "TEST_PREP",
|
|
28
16
|
ENRICHMENT: "ENRICHMENT"
|
|
29
|
-
},
|
|
17
|
+
}, e = {
|
|
30
18
|
LEVEL: "Level",
|
|
31
19
|
FOCUS: "Focus",
|
|
32
20
|
BEHAVIOR: "Behaviors",
|
|
33
21
|
OBJECTIVES: "Objectives",
|
|
34
22
|
POSITION: "Position",
|
|
35
23
|
COURSE: "Course"
|
|
36
|
-
},
|
|
24
|
+
}, O = {
|
|
37
25
|
"no-test": "School Success goals",
|
|
38
26
|
"non-standardized": "Test Prep goals",
|
|
39
27
|
standardized: "Enrichment goals"
|
|
40
|
-
},
|
|
28
|
+
}, s = {
|
|
41
29
|
CHAPTER_EXIT_WARNING: "Going back will clear your currently selected chapters. Do you wish to proceed?",
|
|
42
30
|
GOAL_CHANGE_WARNING: "Choosing a different goal will clear your currently selected chapters. Do you wish to proceed?"
|
|
43
|
-
},
|
|
31
|
+
}, N = 60, I = 88;
|
|
44
32
|
export {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
A as MILESTONE_WIDGET_MIN_HEIGHT,
|
|
33
|
+
o as COURSE_STREAMS,
|
|
34
|
+
A as GOAL_CATEGORY,
|
|
35
|
+
I as GOAL_FOOTER_HEIGHT,
|
|
36
|
+
N as GOAL_HEADER_HEIGHT,
|
|
37
|
+
_ as MILESTONE_WIDGET_MIN_HEIGHT,
|
|
51
38
|
T as ONE_YEAR_TIMESTAMP_IN_MILLISECONDS,
|
|
52
39
|
S as ONE_YEAR_TIMESTAMP_IN_SECONDS,
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
40
|
+
e as PREFERENCE_CATEGORY,
|
|
41
|
+
O as TEST_TYPE_TO_TEST_NAME,
|
|
42
|
+
s as WARNING_MESSAGES
|
|
56
43
|
};
|
|
57
44
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../../src/features/milestone/constants.ts"],"sourcesContent":["const ONE_YEAR_TIMESTAMP_IN_SECONDS = 365 * 24 * 60 * 60;\nconst ONE_YEAR_TIMESTAMP_IN_MILLISECONDS = ONE_YEAR_TIMESTAMP_IN_SECONDS * 1000;\n\nconst MILESTONE_WIDGET_MIN_HEIGHT = 480;\n\nconst SAT_COURSES = {\n SAT_DEMO: 'SAT-DEMO',\n SAT_MATH: 'SAT-MATH',\n SAT_ENGLISH: 'SAT-ENGLISH',\n SAT_TESTS: 'SAT-TESTS',\n} as const;\n\nconst COURSE_STREAMS = {\n MATH: 'MATH',\n CODING: 'CODING',\n SCIENCE: 'SCIENCE',\n ELA: 'ELA',\n ELP: 'ELP',\n ...SAT_COURSES,\n} as const;\n\nconst ENROLLMENT_TYPES = {\n ONLINE: 'ONLINE',\n PLUS: 'PLUS',\n REGULAR: 'REGULAR',\n HYBRID: 'HYBRID',\n HYBRID_PLUS: 'HYBRID_PLUS',\n ARMY: 'ARMY',\n CLASS_K5: 'CLASS_K5',\n OLYMPIAD: 'OLYMPIAD',\n HIGH: 'HIGH',\n GROUP_CLASS: 'GROUP_CLASS',\n CUECENTER: 'CUECENTER',\n} as const;\n\nconst GOAL_CATEGORY = {\n SCHOOL_SUCCESS: 'SCHOOL_SUCCESS',\n TEST_PREP: 'TEST_PREP',\n ENRICHMENT: 'ENRICHMENT',\n} as const;\n\nconst PREFERENCE_CATEGORY = {\n LEVEL: 'Level',\n FOCUS: 'Focus',\n BEHAVIOR: 'Behaviors',\n OBJECTIVES: 'Objectives',\n POSITION: 'Position',\n COURSE: 'Course',\n} as const;\n\nconst TEST_TYPE_TO_TEST_NAME = {\n 'no-test': 'School Success goals',\n 'non-standardized': 'Test Prep goals',\n 'standardized': 'Enrichment goals',\n};\n\nconst WARNING_MESSAGES = {\n CHAPTER_EXIT_WARNING:\n 'Going back will clear your currently selected chapters. Do you wish to proceed?',\n GOAL_CHANGE_WARNING:\n 'Choosing a different goal will clear your currently selected chapters. Do you wish to proceed?',\n};\n\nconst GOAL_HEADER_HEIGHT = 60;\nconst GOAL_FOOTER_HEIGHT = 88;\n\nexport {\n ONE_YEAR_TIMESTAMP_IN_SECONDS,\n ONE_YEAR_TIMESTAMP_IN_MILLISECONDS,\n MILESTONE_WIDGET_MIN_HEIGHT,\n COURSE_STREAMS,\n GOAL_CATEGORY,\n GOAL_HEADER_HEIGHT,\n GOAL_FOOTER_HEIGHT,\n WARNING_MESSAGES,\n TEST_TYPE_TO_TEST_NAME,\n PREFERENCE_CATEGORY,\n ENROLLMENT_TYPES,\n};\n"],"names":["ONE_YEAR_TIMESTAMP_IN_SECONDS","ONE_YEAR_TIMESTAMP_IN_MILLISECONDS","MILESTONE_WIDGET_MIN_HEIGHT","SAT_COURSES","COURSE_STREAMS","
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../src/features/milestone/constants.ts"],"sourcesContent":["const ONE_YEAR_TIMESTAMP_IN_SECONDS = 365 * 24 * 60 * 60;\nconst ONE_YEAR_TIMESTAMP_IN_MILLISECONDS = ONE_YEAR_TIMESTAMP_IN_SECONDS * 1000;\n\nconst MILESTONE_WIDGET_MIN_HEIGHT = 480;\n\nconst SAT_COURSES = {\n SAT_DEMO: 'SAT-DEMO',\n SAT_MATH: 'SAT-MATH',\n SAT_ENGLISH: 'SAT-ENGLISH',\n SAT_TESTS: 'SAT-TESTS',\n} as const;\n\nconst COURSE_STREAMS = {\n MATH: 'MATH',\n CODING: 'CODING',\n SCIENCE: 'SCIENCE',\n ELA: 'ELA',\n ELP: 'ELP',\n ...SAT_COURSES,\n} as const;\n\nconst ENROLLMENT_TYPES = {\n ONLINE: 'ONLINE',\n PLUS: 'PLUS',\n REGULAR: 'REGULAR',\n HYBRID: 'HYBRID',\n HYBRID_PLUS: 'HYBRID_PLUS',\n ARMY: 'ARMY',\n CLASS_K5: 'CLASS_K5',\n OLYMPIAD: 'OLYMPIAD',\n HIGH: 'HIGH',\n GROUP_CLASS: 'GROUP_CLASS',\n CUECENTER: 'CUECENTER',\n} as const;\n\nconst GOAL_CATEGORY = {\n SCHOOL_SUCCESS: 'SCHOOL_SUCCESS',\n TEST_PREP: 'TEST_PREP',\n ENRICHMENT: 'ENRICHMENT',\n} as const;\n\nconst PREFERENCE_CATEGORY = {\n LEVEL: 'Level',\n FOCUS: 'Focus',\n BEHAVIOR: 'Behaviors',\n OBJECTIVES: 'Objectives',\n POSITION: 'Position',\n COURSE: 'Course',\n} as const;\n\nconst TEST_TYPE_TO_TEST_NAME = {\n 'no-test': 'School Success goals',\n 'non-standardized': 'Test Prep goals',\n 'standardized': 'Enrichment goals',\n};\n\nconst WARNING_MESSAGES = {\n CHAPTER_EXIT_WARNING:\n 'Going back will clear your currently selected chapters. Do you wish to proceed?',\n GOAL_CHANGE_WARNING:\n 'Choosing a different goal will clear your currently selected chapters. Do you wish to proceed?',\n};\n\nconst GOAL_HEADER_HEIGHT = 60;\nconst GOAL_FOOTER_HEIGHT = 88;\n\nexport {\n ONE_YEAR_TIMESTAMP_IN_SECONDS,\n ONE_YEAR_TIMESTAMP_IN_MILLISECONDS,\n MILESTONE_WIDGET_MIN_HEIGHT,\n COURSE_STREAMS,\n GOAL_CATEGORY,\n GOAL_HEADER_HEIGHT,\n GOAL_FOOTER_HEIGHT,\n WARNING_MESSAGES,\n TEST_TYPE_TO_TEST_NAME,\n PREFERENCE_CATEGORY,\n ENROLLMENT_TYPES,\n};\n"],"names":["ONE_YEAR_TIMESTAMP_IN_SECONDS","ONE_YEAR_TIMESTAMP_IN_MILLISECONDS","MILESTONE_WIDGET_MIN_HEIGHT","SAT_COURSES","COURSE_STREAMS","GOAL_CATEGORY","PREFERENCE_CATEGORY","TEST_TYPE_TO_TEST_NAME","WARNING_MESSAGES","GOAL_HEADER_HEIGHT","GOAL_FOOTER_HEIGHT"],"mappings":"AAAM,MAAAA,IAAgC,SAChCC,IAAqC,SAErCC,IAA8B,KAE9BC,IAAc;AAAA,EAClB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,aAAa;AAAA,EACb,WAAW;AACb,GAEMC,IAAiB;AAAA,EACrB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,KAAK;AAAA,EACL,KAAK;AAAA,EACL,GAAGD;AACL,GAgBME,IAAgB;AAAA,EACpB,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,YAAY;AACd,GAEMC,IAAsB;AAAA,EAC1B,OAAO;AAAA,EACP,OAAO;AAAA,EACP,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,QAAQ;AACV,GAEMC,IAAyB;AAAA,EAC7B,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,cAAgB;AAClB,GAEMC,IAAmB;AAAA,EACvB,sBACE;AAAA,EACF,qBACE;AACJ,GAEMC,IAAqB,IACrBC,IAAqB;"}
|
|
@@ -7,16 +7,16 @@ const F = (t, r) => {
|
|
|
7
7
|
t[e] = void 0;
|
|
8
8
|
});
|
|
9
9
|
}, T = (t, r, e, l, n = []) => {
|
|
10
|
-
const { isLeafNode: s, next:
|
|
10
|
+
const { isLeafNode: s, next: i, reset: u } = t, c = { ...r };
|
|
11
11
|
if (s)
|
|
12
12
|
return F(c, [...u, ...n]), c;
|
|
13
|
-
if (
|
|
13
|
+
if (i) {
|
|
14
14
|
let d = l, m;
|
|
15
|
-
if (
|
|
15
|
+
if (i.every((a) => {
|
|
16
16
|
var f;
|
|
17
17
|
let _ = !1;
|
|
18
|
-
return a.when !== void 0 ? _ = a.when.every(([
|
|
19
|
-
n.push(
|
|
18
|
+
return a.when !== void 0 ? _ = a.when.every(([o, v]) => c[o] === v) : _ = !0, _ ? (d ? (f = a == null ? void 0 : a.reset) == null || f.forEach((o) => {
|
|
19
|
+
n.push(o);
|
|
20
20
|
}) : e === (a == null ? void 0 : a.name) && (d = !0), m = a, !1) : !0;
|
|
21
21
|
}), m)
|
|
22
22
|
return T(
|
|
@@ -31,12 +31,12 @@ const F = (t, r) => {
|
|
|
31
31
|
const { isLeafNode: l, required: n, next: s } = t;
|
|
32
32
|
if (l)
|
|
33
33
|
return t;
|
|
34
|
-
const
|
|
34
|
+
const i = n.every((u) => r[u] !== void 0);
|
|
35
35
|
if (E.includes(e)) {
|
|
36
36
|
const u = n.every(
|
|
37
37
|
(c) => r.reviewed[c] === !0
|
|
38
38
|
);
|
|
39
|
-
if (!
|
|
39
|
+
if (!i || !u)
|
|
40
40
|
return {
|
|
41
41
|
...t,
|
|
42
42
|
next: void 0
|
|
@@ -45,7 +45,7 @@ const F = (t, r) => {
|
|
|
45
45
|
const u = n.every(
|
|
46
46
|
(c) => r.committed[c] === !0
|
|
47
47
|
);
|
|
48
|
-
if (!
|
|
48
|
+
if (!i || !u)
|
|
49
49
|
return {
|
|
50
50
|
...t,
|
|
51
51
|
next: void 0
|
|
@@ -71,7 +71,7 @@ const F = (t, r) => {
|
|
|
71
71
|
currentCountryCode: l,
|
|
72
72
|
grade: n,
|
|
73
73
|
selectedCategory: s,
|
|
74
|
-
isTeacherTrainingAccount:
|
|
74
|
+
isTeacherTrainingAccount: i
|
|
75
75
|
} = t, {
|
|
76
76
|
blocked_countries: u,
|
|
77
77
|
available_countries: c,
|
|
@@ -83,43 +83,42 @@ const F = (t, r) => {
|
|
|
83
83
|
_,
|
|
84
84
|
a,
|
|
85
85
|
e
|
|
86
|
-
),
|
|
86
|
+
), o = u.some(
|
|
87
87
|
(C) => C === l
|
|
88
88
|
), v = c.length > 0 ? c.some((C) => C === l) : !0, g = d.some((C) => C === n), b = s === m;
|
|
89
|
-
return
|
|
89
|
+
return i ? b && g : f && !o && v && g && b;
|
|
90
90
|
}, U = (t, {
|
|
91
91
|
grade: r,
|
|
92
92
|
countryCode: e,
|
|
93
93
|
goalCategory: l,
|
|
94
94
|
courseStream: n,
|
|
95
95
|
classRatio: s,
|
|
96
|
-
enrollmentType:
|
|
96
|
+
enrollmentType: i,
|
|
97
97
|
flow: u,
|
|
98
98
|
isTeacherTrainingAccount: c
|
|
99
99
|
}) => {
|
|
100
100
|
const { goal_curriculum_map: d, curriculum_standards: m } = t, a = d.filter((f) => {
|
|
101
|
-
const
|
|
102
|
-
return u === "CREATE" ?
|
|
103
|
-
}), _ = (f) => a.some((
|
|
101
|
+
const o = f.course_stream === n;
|
|
102
|
+
return u === "CREATE" ? o && f.is_live : o;
|
|
103
|
+
}), _ = (f) => a.some((o) => o.goal_category !== l || !o.available_grades.includes(r) || o.goal_curriculum_standard && o.goal_curriculum_standard !== f.code || l === "SCHOOL_SUCCESS" && !o.goal_curriculum_standard ? !1 : c ? !0 : s && o.available_class_ratios.length > 0 && !o.available_class_ratios.includes(s) || o.available_countries.length > 0 && !o.available_countries.includes(e) || o.available_countries.length === 0 && o.blocked_countries.includes(e) ? !1 : y(o, i));
|
|
104
104
|
return m.filter(_).map(
|
|
105
105
|
({
|
|
106
106
|
code: f,
|
|
107
|
-
name:
|
|
107
|
+
name: o,
|
|
108
108
|
default_in_countries: v,
|
|
109
109
|
recommended_in_countries: g
|
|
110
110
|
}) => ({
|
|
111
111
|
id: f,
|
|
112
|
-
label:
|
|
112
|
+
label: o,
|
|
113
113
|
isDefault: v.includes(e),
|
|
114
114
|
isRecommended: g.includes(e)
|
|
115
115
|
})
|
|
116
|
-
).sort((f,
|
|
116
|
+
).sort((f, o) => f.label.toUpperCase() > o.label.toUpperCase() ? 1 : -1);
|
|
117
117
|
}, q = (t, r) => {
|
|
118
|
-
const { goal_curriculum_map: e } = t, { grade: l, countryCode: n, goalCategory: s, curriculumStandard:
|
|
119
|
-
return d == null ? void 0 : d.filter(m).map(({ goal_code: a, goal_name: _
|
|
118
|
+
const { goal_curriculum_map: e } = t, { grade: l, countryCode: n, goalCategory: s, curriculumStandard: i, courseStream: u, enrollmentType: c } = r, d = e.filter((a) => a.course_stream === u), m = (a) => a.goal_category !== s || i && a.goal_curriculum_standard !== i || a.available_countries.length > 0 && !a.available_countries.includes(n) || a.available_countries.length === 0 && a.blocked_countries.includes(n) || !a.available_grades.includes(l) || !a.is_live ? !1 : y(a, c);
|
|
119
|
+
return d == null ? void 0 : d.filter(m).map(({ goal_code: a, goal_name: _ }) => ({
|
|
120
120
|
id: a,
|
|
121
|
-
label: _
|
|
122
|
-
programCode: f
|
|
121
|
+
label: _
|
|
123
122
|
})).sort((a, _) => a.label.toUpperCase() > _.label.toUpperCase() ? 1 : -1);
|
|
124
123
|
}, O = (t) => t.grades.reduce((r, e) => (e === "-1" || e === "0" ? r.push({
|
|
125
124
|
id: e,
|
|
@@ -129,49 +128,49 @@ const F = (t, r) => {
|
|
|
129
128
|
label: `Grade ${e}`
|
|
130
129
|
}), r), []), M = (t, r) => {
|
|
131
130
|
const { preference_config: e } = t, l = (n) => {
|
|
132
|
-
const { grade: s, courseStream:
|
|
133
|
-
return !(n.course_stream !==
|
|
131
|
+
const { grade: s, courseStream: i, preferenceCategory: u } = r;
|
|
132
|
+
return !(n.course_stream !== i || n.preference_category !== u || n.preference_grades.length > 0 && !n.preference_grades.includes(s) || !n.is_live);
|
|
134
133
|
};
|
|
135
134
|
return e == null ? void 0 : e.filter(l).map(
|
|
136
135
|
({
|
|
137
136
|
preference_code: n,
|
|
138
137
|
preference_name: s,
|
|
139
|
-
preference_description:
|
|
138
|
+
preference_description: i,
|
|
140
139
|
preference_description_2: u,
|
|
141
140
|
lottie_key: c,
|
|
142
141
|
preference_category: d
|
|
143
142
|
}) => ({
|
|
144
143
|
id: n,
|
|
145
144
|
label: s,
|
|
146
|
-
description:
|
|
145
|
+
description: i,
|
|
147
146
|
lottie: c,
|
|
148
147
|
extendedDescription: u,
|
|
149
148
|
category: d
|
|
150
149
|
})
|
|
151
150
|
);
|
|
152
151
|
}, W = (t, r, e, l, n) => {
|
|
153
|
-
const { goal_curriculum_map: s } = t,
|
|
152
|
+
const { goal_curriculum_map: s } = t, i = O(t), u = ({ id: c }) => s.filter((d) => d.course_stream === e && d.is_live).some((d) => {
|
|
154
153
|
const {
|
|
155
154
|
available_grades: m,
|
|
156
155
|
goal_category: a,
|
|
157
156
|
available_enrollment_types: _,
|
|
158
157
|
blocked_enrollment_types: f
|
|
159
|
-
} = d,
|
|
160
|
-
return n ?
|
|
158
|
+
} = d, o = a === r && m.includes(c);
|
|
159
|
+
return n ? o : _.length > 0 && !_.includes(l) || _.length === 0 && f.includes(l) ? !1 : o;
|
|
161
160
|
});
|
|
162
|
-
return
|
|
161
|
+
return i.filter(u);
|
|
163
162
|
}, j = (t, r, e, l, n, s) => {
|
|
164
163
|
if (e === "KG" || Number(e) < 7) return [];
|
|
165
|
-
const { goal_curriculum_map:
|
|
166
|
-
return
|
|
164
|
+
const { goal_curriculum_map: i } = t, u = (d) => d.course_stream !== l && d.is_live ? !1 : s || y(d, n);
|
|
165
|
+
return i.filter(u).reduce((d, m) => {
|
|
167
166
|
const {
|
|
168
167
|
available_grades: a,
|
|
169
168
|
goal_curriculum_standard: _,
|
|
170
169
|
program_name: f,
|
|
171
|
-
program_code:
|
|
170
|
+
program_code: o
|
|
172
171
|
} = m;
|
|
173
172
|
return a.some((b) => b === e) && _ === r && d.push({
|
|
174
|
-
id:
|
|
173
|
+
id: o,
|
|
175
174
|
label: f
|
|
176
175
|
}), d;
|
|
177
176
|
}, []);
|
|
@@ -180,7 +179,7 @@ const F = (t, r) => {
|
|
|
180
179
|
return (e = S.find((l) => l.country_code === t)) == null ? void 0 : e.region_code;
|
|
181
180
|
}, K = (t, r, e, l) => {
|
|
182
181
|
if (t && e) {
|
|
183
|
-
const { country_code: s, place_id:
|
|
182
|
+
const { country_code: s, place_id: i } = t;
|
|
184
183
|
return {
|
|
185
184
|
committed: {},
|
|
186
185
|
reviewed: {},
|
|
@@ -188,7 +187,7 @@ const F = (t, r) => {
|
|
|
188
187
|
schoolInfo: {
|
|
189
188
|
countryCode: s,
|
|
190
189
|
stateCode: "",
|
|
191
|
-
id:
|
|
190
|
+
id: i
|
|
192
191
|
},
|
|
193
192
|
region: s,
|
|
194
193
|
board: r ?? void 0
|
|
@@ -220,28 +219,28 @@ const F = (t, r) => {
|
|
|
220
219
|
};
|
|
221
220
|
}
|
|
222
221
|
return t;
|
|
223
|
-
}, Y = (t, r, e, l, n, s,
|
|
222
|
+
}, Y = (t, r, e, l, n, s, i, u, c) => {
|
|
224
223
|
const { goal_curriculum_map: d } = t, m = r === "no-test", a = A(r);
|
|
225
224
|
return d.find((f) => {
|
|
226
|
-
const
|
|
225
|
+
const o = k({
|
|
227
226
|
currentGoalData: f,
|
|
228
227
|
grade: e,
|
|
229
|
-
currentCountryCode:
|
|
228
|
+
currentCountryCode: i,
|
|
230
229
|
selectedCategory: a,
|
|
231
230
|
enrollmentType: n,
|
|
232
231
|
isTeacherTrainingAccount: c
|
|
233
232
|
}), { goal_curriculum_standard: v, is_live: g } = f, b = G({
|
|
234
233
|
goalCurriculumStandard: v,
|
|
235
234
|
referenceStandard: s
|
|
236
|
-
}), C = f.course_stream === l, p = (u === "CREATE" ? g : !0) && C &&
|
|
235
|
+
}), C = f.course_stream === l, p = (u === "CREATE" ? g : !0) && C && o;
|
|
237
236
|
return c ? p && (m ? b : !0) : m ? p && b : p;
|
|
238
237
|
});
|
|
239
238
|
}, $ = (t) => {
|
|
240
239
|
var n, s;
|
|
241
240
|
let r = [], e = [];
|
|
242
|
-
for (const
|
|
243
|
-
|
|
244
|
-
const l = r.find((
|
|
241
|
+
for (const i of t)
|
|
242
|
+
i.title === "recommended" ? r = i.data : i.title === "others" && (e = i.data);
|
|
243
|
+
const l = r.find((i) => i.isDefault && i.isRecommended);
|
|
245
244
|
if (l)
|
|
246
245
|
return l.id;
|
|
247
246
|
if (r.length > 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"milestone-create-helpers.js","sources":["../../../../src/features/milestone/create/milestone-create-helpers.ts"],"sourcesContent":["import type { LOTTIE } from '../../../assets/lottie/lottie';\nimport { COUNTRY_MAP } from '../../../constants/country';\nimport type IStudentSchool from '../../../types/models/school';\nimport type { ISectionOption } from '../../ui/section-list/section-list-types';\nimport type { TTestType } from '../types';\nimport {\n getIfGoalCurriculumStandardIsAccessible,\n getStudentEnrollmentSupported,\n} from './comps/chapters-selection-step/utils';\nimport {\n checkEnrollmentAvailable,\n getTestTypeBasedCategory,\n} from './comps/test-type-step/test-type-utils';\nimport { GOAL_EDIT_FLOWS } from './milestone-create-constants';\nimport type {\n ICurriculumStandards,\n IFormStep,\n IGoalCurriculumMap,\n IMileStoneFormFields,\n IMilestoneConfig,\n IMilestoneFormData,\n IPreferencesCurriculumMap,\n TCourseStream,\n TCurriculumStandardOption,\n TEnrollmentTypes,\n TFormStepNames,\n TGoalCategory,\n TMilestoneConfigOption,\n TMilestoneFormFlow,\n TPreferenceCategory,\n} from './milestone-create-types';\n\ninterface IGetCurrenStep {\n (\n formStep: IFormStep,\n milestoneFormData: IMilestoneFormData,\n flow: TMilestoneFormFlow,\n ): IFormStep | undefined;\n}\n\ninterface IClearNextFields {\n (\n formStep: IFormStep,\n milestoneFormData: IMilestoneFormData,\n currentStepName: TFormStepNames | undefined,\n shouldStartClearing: boolean,\n fieldsToClear: (keyof IMileStoneFormFields)[],\n ): IMilestoneFormData | undefined;\n}\n\n/**\n * Impure method that Removes specified fields from an object.\n *\n * @param obj The object from which fields are to be removed.\n * @param fieldsList An array of field names to be removed.\n */\nconst clearFields = (obj: Record<string, unknown>, fieldsList: string[]) => {\n fieldsList.forEach(field => {\n obj[field] = undefined;\n });\n};\n\nconst clearNextFields: IClearNextFields = (\n formStep,\n milestoneFormData,\n currentStepName,\n startClearing,\n fieldsToClear = [],\n) => {\n const { isLeafNode, next, reset } = formStep;\n const updatedFormData = { ...milestoneFormData };\n\n if (isLeafNode) {\n clearFields(updatedFormData, [...reset, ...fieldsToClear]);\n\n return updatedFormData;\n }\n\n if (next) {\n let shouldStartClearing = startClearing;\n let nextStep: IFormStep | undefined;\n\n next.every(step => {\n let conditionFulfilled = false;\n\n if (step.when !== undefined) {\n conditionFulfilled = step.when.every(([field, value]) => updatedFormData[field] === value);\n } else conditionFulfilled = true;\n\n if (conditionFulfilled) {\n if (shouldStartClearing) {\n step?.reset?.forEach(field => {\n fieldsToClear.push(field);\n });\n } else if (currentStepName === step?.name) {\n shouldStartClearing = true;\n }\n\n nextStep = step;\n\n return false;\n }\n\n return true;\n });\n if (nextStep) {\n return clearNextFields(\n nextStep,\n updatedFormData,\n currentStepName,\n shouldStartClearing,\n fieldsToClear,\n );\n }\n }\n\n return undefined;\n};\n\nconst getCurrenStep: IGetCurrenStep = (formStep, milestoneFormData, flow) => {\n const { isLeafNode, required, next } = formStep;\n\n if (isLeafNode) {\n return formStep;\n }\n\n const requiredFieldsFilled = required.every(field => milestoneFormData[field] !== undefined);\n\n if (GOAL_EDIT_FLOWS.includes(flow)) {\n const requiredFieldsReviewed = required.every(\n field => milestoneFormData.reviewed[field] === true,\n );\n\n if (!requiredFieldsFilled || !requiredFieldsReviewed) {\n return {\n ...formStep,\n next: undefined,\n };\n }\n } else {\n const requiredFieldsCommitted = required.every(\n field => milestoneFormData.committed[field] === true,\n );\n\n if (!requiredFieldsFilled || !requiredFieldsCommitted) {\n return {\n ...formStep,\n next: undefined,\n };\n }\n }\n\n if (next) {\n let nextStep: IFormStep | undefined;\n\n next.every(step => {\n if (step.when === undefined) {\n nextStep = step;\n\n return false;\n }\n\n const conditionFulfilled = step.when.every(\n ([field, value]) => milestoneFormData[field] === value,\n );\n\n if (conditionFulfilled) {\n nextStep = step;\n\n return false;\n }\n\n return true;\n });\n\n if (nextStep) {\n return getCurrenStep(nextStep, milestoneFormData, flow);\n }\n }\n\n return undefined;\n};\n\ninterface IGetSchoolTestsFromConfig {\n (config: IMilestoneConfig): TMilestoneConfigOption[];\n}\n\nconst getSchoolTestsFromConfig: IGetSchoolTestsFromConfig = config => {\n return config.academic_events.reduce<TMilestoneConfigOption[]>((acc, event) => {\n const { id, event_name: eventName, event_type: eventType } = event;\n\n if (eventType === 'SCHOOL_TEST') {\n acc.push({\n id,\n label: eventName,\n });\n }\n\n return acc;\n }, []);\n};\n\ninterface IGetCountriesFromConfig {\n (config: IMilestoneConfig): TMilestoneConfigOption[];\n}\n\nconst computeCanIncludeCurrentGoal = (props: {\n currentGoalData: IGoalCurriculumMap;\n enrollmentType: TEnrollmentTypes;\n currentCountryCode?: string;\n grade?: string;\n selectedCategory?: string;\n isTeacherTrainingAccount?: boolean;\n}) => {\n const {\n currentGoalData,\n enrollmentType,\n currentCountryCode,\n grade,\n selectedCategory,\n isTeacherTrainingAccount,\n } = props;\n\n const {\n blocked_countries: blockedCountries,\n available_countries: availableCountries,\n available_grades: availableGrades,\n goal_category: goalCategory,\n available_enrollment_types: availableEnrollmentTypes,\n blocked_enrollment_types: blockedEnrollmentTypes,\n } = currentGoalData;\n\n const isStudentEnrollmentTypeSupported = getStudentEnrollmentSupported(\n blockedEnrollmentTypes,\n availableEnrollmentTypes,\n enrollmentType,\n );\n const isStudentRegionBlocked = blockedCountries.some(\n blockedCountry => blockedCountry === currentCountryCode,\n );\n const isStudentRegionAvailable =\n availableCountries.length > 0\n ? availableCountries.some(availableCountry => availableCountry === currentCountryCode)\n : true;\n\n const isCurrentGradeAvailable = availableGrades.some(gradeInfo => gradeInfo === grade);\n const isGoalCategoryAvailable = selectedCategory === goalCategory;\n\n if (isTeacherTrainingAccount) return isGoalCategoryAvailable && isCurrentGradeAvailable;\n\n return (\n isStudentEnrollmentTypeSupported &&\n !isStudentRegionBlocked &&\n isStudentRegionAvailable &&\n isCurrentGradeAvailable &&\n isGoalCategoryAvailable\n );\n};\n\ninterface IGetCurriculumStandardsFromConfig {\n (\n config: IMilestoneConfig,\n options: {\n grade: string;\n countryCode: string;\n goalCategory: TGoalCategory;\n courseStream: TCourseStream;\n enrollmentType: TEnrollmentTypes;\n classRatio?: number;\n flow?: TMilestoneFormFlow | null;\n isTeacherTrainingAccount?: boolean;\n },\n ): TCurriculumStandardOption[];\n}\n\nconst getCurriculumStandardsFromConfig: IGetCurriculumStandardsFromConfig = (\n config,\n {\n grade,\n countryCode,\n goalCategory,\n courseStream,\n classRatio,\n enrollmentType,\n flow,\n isTeacherTrainingAccount,\n },\n) => {\n const { goal_curriculum_map: goals, curriculum_standards: curriculumStandards } = config;\n // check if atleast one goal present for the curriculum standard\n\n const filteredGoalCurriculumMap = goals.filter(item => {\n const isSameCourseStream = item.course_stream === courseStream;\n\n if (flow === 'CREATE') {\n return isSameCourseStream && item.is_live;\n }\n\n return isSameCourseStream;\n });\n\n const hasGoalForCurriculumStandards = (standard: ICurriculumStandards) =>\n filteredGoalCurriculumMap.some(goal => {\n // check goal category\n if (goal.goal_category !== goalCategory) return false;\n\n // check grade availability\n if (!goal.available_grades.includes(grade)) return false;\n\n // check goal curriculum standard\n // if goal_curriculum_standard is undefined then it's available for all standard\n if (goal.goal_curriculum_standard && goal.goal_curriculum_standard !== standard.code)\n return false;\n\n if (goalCategory === 'SCHOOL_SUCCESS' && !goal.goal_curriculum_standard) return false;\n\n if (isTeacherTrainingAccount) return true;\n\n if (\n classRatio &&\n goal.available_class_ratios.length > 0 &&\n !goal.available_class_ratios.includes(classRatio)\n )\n return false;\n\n // check country availability\n if (goal.available_countries.length > 0 && !goal.available_countries.includes(countryCode))\n return false;\n\n if (goal.available_countries.length === 0 && goal.blocked_countries.includes(countryCode))\n return false;\n\n return checkEnrollmentAvailable(goal, enrollmentType);\n });\n\n return curriculumStandards\n .filter(hasGoalForCurriculumStandards)\n .map(\n ({\n code,\n name,\n default_in_countries: defaultInCountries,\n recommended_in_countries: recommendedInCountries,\n }) => ({\n id: code,\n label: name,\n isDefault: defaultInCountries.includes(countryCode),\n isRecommended: recommendedInCountries.includes(countryCode),\n }),\n )\n .sort((a, b) => (a.label.toUpperCase() > b.label.toUpperCase() ? 1 : -1));\n};\n\ninterface IGetGoalsFromConfig {\n (\n config: IMilestoneConfig,\n options: {\n grade: string;\n countryCode: string;\n goalCategory: TGoalCategory;\n curriculumStandard?: string;\n courseStream: TCourseStream;\n enrollmentType?: TEnrollmentTypes;\n },\n ): TMilestoneConfigOption[];\n}\n\nconst getGoalsFromConfig: IGetGoalsFromConfig = (config, options) => {\n const { goal_curriculum_map: goals } = config;\n const { grade, countryCode, goalCategory, curriculumStandard, courseStream, enrollmentType } =\n options;\n const filteredGoalCurriculumMap = goals.filter(item => item.course_stream === courseStream);\n\n const isEligibleGoal = (goal: IGoalCurriculumMap) => {\n if (goal.goal_category !== goalCategory) return false;\n\n if (curriculumStandard && goal.goal_curriculum_standard !== curriculumStandard) return false;\n\n if (goal.available_countries.length > 0 && !goal.available_countries.includes(countryCode))\n return false;\n\n if (goal.available_countries.length === 0 && goal.blocked_countries.includes(countryCode))\n return false;\n\n if (!goal.available_grades.includes(grade)) return false;\n\n if (!goal.is_live) return false;\n\n return checkEnrollmentAvailable(goal, enrollmentType);\n };\n\n return filteredGoalCurriculumMap\n ?.filter(isEligibleGoal)\n .map(({ goal_code: id, goal_name: label, program_code: programCode }) => ({\n id,\n label,\n programCode,\n }))\n .sort((a, b) => (a.label.toUpperCase() > b.label.toUpperCase() ? 1 : -1));\n};\n\nconst getGradesFromConfig: IGetCountriesFromConfig = config => {\n return config.grades.reduce<TMilestoneConfigOption[]>((acc, grade) => {\n if (grade === '-1' || grade === '0') {\n acc.push({\n id: grade,\n label: grade === '-1' ? `Pre-K` : `KG`,\n });\n } else {\n acc.push({\n id: grade,\n label: `Grade ${grade}`,\n });\n }\n\n return acc;\n }, []);\n};\n\ninterface IGetPreferencesFromConfig {\n (\n config: IMilestoneConfig,\n options: {\n grade: string;\n preferenceCategory: TPreferenceCategory;\n courseStream: TCourseStream;\n },\n ): TMilestoneConfigOption[];\n}\n\nconst getPreferencesFromConfig: IGetPreferencesFromConfig = (config, options) => {\n const { preference_config: preferenceConfig } = config;\n\n const isEligiblePreferences = (preference: IPreferencesCurriculumMap) => {\n const { grade, courseStream, preferenceCategory } = options;\n\n if (preference.course_stream !== courseStream) return false;\n\n if (preference.preference_category !== preferenceCategory) return false;\n\n if (preference.preference_grades.length > 0 && !preference.preference_grades.includes(grade))\n return false;\n\n if (!preference.is_live) return false;\n\n return true;\n };\n\n return preferenceConfig\n ?.filter(isEligiblePreferences)\n .map(\n ({\n preference_code: id,\n preference_name: label,\n preference_description: description,\n preference_description_2: extendedDescription,\n lottie_key: lottie,\n preference_category: category,\n }) => ({\n id,\n label,\n description,\n lottie: lottie as keyof typeof LOTTIE,\n extendedDescription,\n category,\n }),\n );\n};\n\ninterface IGetGradeBasedOnGoalAvailability {\n (\n config: IMilestoneConfig,\n selectedGoalCategory: string,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n isTeacherTrainingAccount?: boolean,\n ): TMilestoneConfigOption[];\n}\n\n//* Grades where goals are available for selected goal category.\nconst getGradesBasedOnGoalAvailability: IGetGradeBasedOnGoalAvailability = (\n config,\n selectedGoalCategory,\n courseStream,\n enrollmentType,\n isTeacherTrainingAccount,\n) => {\n const { goal_curriculum_map: goals } = config;\n\n const grades = getGradesFromConfig(config);\n\n const gradeAvailableGoals = ({ id }: TMilestoneConfigOption) => {\n return goals\n .filter(item => item.course_stream === courseStream && item.is_live)\n .some((goalData: IGoalCurriculumMap) => {\n const {\n available_grades: availableGrades,\n goal_category: goalCategory,\n available_enrollment_types: availableEnrollmentTypes,\n blocked_enrollment_types: blockedEnrollmentTypes,\n } = goalData;\n\n const isGoalCategoryAndGradeAvailable =\n goalCategory === selectedGoalCategory && availableGrades.includes(id);\n\n if (isTeacherTrainingAccount) return isGoalCategoryAndGradeAvailable;\n\n // check enrollment type availability\n if (\n availableEnrollmentTypes.length > 0 &&\n !availableEnrollmentTypes.includes(enrollmentType)\n )\n return false;\n\n if (\n availableEnrollmentTypes.length === 0 &&\n blockedEnrollmentTypes.includes(enrollmentType)\n )\n return false;\n\n //* Check for grade availability only for selected goal category\n return isGoalCategoryAndGradeAvailable;\n });\n };\n\n return grades.filter(gradeAvailableGoals);\n};\n\ninterface IGetMajorsFromConfigBasedOnBoardAndGrade {\n (\n config: IMilestoneConfig,\n boardCode: string,\n grade: string,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n isTeacherTrainingAccount?: boolean,\n ): TMilestoneConfigOption[];\n}\n\nconst getMajorsFromConfigBasedOnBoardAndGrade: IGetMajorsFromConfigBasedOnBoardAndGrade = (\n config,\n boardCode,\n grade,\n courseStream,\n enrollmentType,\n isTeacherTrainingAccount,\n) => {\n //* We have US courses for grade 7 & above\n if (grade === 'KG' || Number(grade) < 7) return [];\n\n const { goal_curriculum_map: goalCurriculumMap } = config;\n const filterOnCourseStreamAndEnrollmentType = (goalData: IGoalCurriculumMap) => {\n if (goalData.course_stream !== courseStream && goalData.is_live) return false;\n\n return isTeacherTrainingAccount || checkEnrollmentAvailable(goalData, enrollmentType);\n };\n\n const majorsWithLabelId = goalCurriculumMap\n .filter(filterOnCourseStreamAndEnrollmentType)\n .reduce<TMilestoneConfigOption[]>((acc, goalData) => {\n const {\n available_grades: availableGrades,\n goal_curriculum_standard: goalCurriculumStandard,\n program_name: programName,\n program_code: programCode,\n } = goalData;\n\n const isGradeAvailable = availableGrades.some(availableGrade => availableGrade === grade);\n const isBoardAvailable = goalCurriculumStandard === boardCode;\n\n if (isGradeAvailable && isBoardAvailable) {\n acc.push({\n id: programCode,\n label: programName,\n });\n }\n\n return acc;\n }, []);\n\n return majorsWithLabelId;\n};\n\nconst getRegionCodeBasedOnCountryCode = (countryCode: string) => {\n const regionCode = COUNTRY_MAP.find(countryInfo => countryInfo.country_code === countryCode)\n ?.region_code;\n\n return regionCode;\n};\n\nconst generateFormStateWithPrefilledSchoolData = (\n schoolData: IStudentSchool | undefined,\n board: string | undefined,\n grade: string | undefined,\n currentCountryCode: string | undefined,\n): IMilestoneFormData => {\n if (schoolData && grade) {\n const { country_code: countryCode, place_id: placeId } = schoolData;\n\n return {\n committed: {},\n reviewed: {},\n grade: grade,\n schoolInfo: {\n countryCode: countryCode,\n stateCode: '',\n id: placeId,\n },\n region: countryCode,\n board: board ?? undefined,\n };\n }\n\n const regionCode = currentCountryCode\n ? getRegionCodeBasedOnCountryCode(currentCountryCode)\n : undefined;\n\n if (grade) {\n return {\n committed: {},\n reviewed: {},\n grade: grade,\n region: regionCode,\n board: board ?? undefined,\n };\n }\n\n return {\n committed: {},\n reviewed: {},\n };\n};\n\nconst appendSchoolDataToFormState = (\n formData: IMilestoneFormData,\n schoolData: IStudentSchool | undefined,\n board: string | undefined,\n grade: string | undefined,\n): IMilestoneFormData => {\n if (schoolData && grade) {\n const { country_code: countryCode, place_id: placeId } = schoolData;\n\n return {\n ...formData,\n grade: grade,\n schoolInfo: {\n countryCode: countryCode,\n stateCode: '',\n id: placeId,\n },\n board: formData.board ?? board ?? undefined,\n };\n }\n\n return formData;\n};\n\nconst appendPrimaryGoalCategoryToFormState = (\n config: IMilestoneConfig,\n testType: TTestType,\n grade: string | undefined,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n board?: string | undefined,\n country?: string | undefined,\n flow?: TMilestoneFormFlow | null,\n isTeacherTrainingAccount?: boolean,\n) => {\n const { goal_curriculum_map: goalCurriculumMap } = config;\n const isSchoolSuccessCategory = testType === 'no-test';\n const selectedGoalCategory = getTestTypeBasedCategory(testType);\n\n //TODO: This needs to compensate the course selection for US curriculum grade 8 & above\n const primaryGoalCurriculum = goalCurriculumMap.find(goalInfo => {\n const isCurrentGoalAvailable = computeCanIncludeCurrentGoal({\n currentGoalData: goalInfo,\n grade,\n currentCountryCode: country,\n selectedCategory: selectedGoalCategory,\n enrollmentType,\n isTeacherTrainingAccount,\n });\n\n const { goal_curriculum_standard: goalCurriculumStandard, is_live: isLive } = goalInfo;\n\n const currentBoardAvailable = getIfGoalCurriculumStandardIsAccessible({\n goalCurriculumStandard,\n referenceStandard: board,\n });\n\n const isSameCourse = goalInfo.course_stream === courseStream;\n const canIncludeCurrentGoal = flow === 'CREATE' ? isLive : true;\n\n const isEligiblePrimaryGoal = canIncludeCurrentGoal && isSameCourse && isCurrentGoalAvailable;\n\n if (isTeacherTrainingAccount)\n return isEligiblePrimaryGoal && (isSchoolSuccessCategory ? currentBoardAvailable : true);\n\n if (isSchoolSuccessCategory) {\n return isEligiblePrimaryGoal && currentBoardAvailable;\n }\n\n return isEligiblePrimaryGoal;\n });\n\n return primaryGoalCurriculum;\n};\n\nconst getDefaultBoard = (data: ISectionOption<TCurriculumStandardOption>[]) => {\n let recommendedBoards: TCurriculumStandardOption[] = [];\n let otherBoards: TCurriculumStandardOption[] = [];\n\n // Iterate through the data categories\n for (const category of data) {\n if (category.title === 'recommended') {\n recommendedBoards = category.data;\n } else if (category.title === 'others') {\n otherBoards = category.data;\n }\n }\n\n // 1. Check if any recommended board has isDefault: true\n const defaultBoard = recommendedBoards.find(board => board.isDefault && board.isRecommended);\n\n if (defaultBoard) {\n return defaultBoard.id;\n }\n\n // 2. If no default, return the first recommended board\n if (recommendedBoards.length > 0) {\n return recommendedBoards[0]?.id;\n }\n\n // 3. If no recommended, return the first board from others\n if (otherBoards.length > 0) {\n return otherBoards[0]?.id;\n }\n\n // 4. Return null if no boards are found\n return undefined;\n};\n\nexport {\n appendSchoolDataToFormState,\n appendPrimaryGoalCategoryToFormState,\n clearNextFields,\n generateFormStateWithPrefilledSchoolData,\n getCurrenStep,\n getGradesFromConfig,\n getCurriculumStandardsFromConfig,\n getGoalsFromConfig,\n getGradesBasedOnGoalAvailability,\n getMajorsFromConfigBasedOnBoardAndGrade,\n getSchoolTestsFromConfig,\n getRegionCodeBasedOnCountryCode,\n getDefaultBoard,\n getPreferencesFromConfig,\n};\n"],"names":["clearFields","obj","fieldsList","field","clearNextFields","formStep","milestoneFormData","currentStepName","startClearing","fieldsToClear","isLeafNode","next","reset","updatedFormData","shouldStartClearing","nextStep","step","conditionFulfilled","value","_a","getCurrenStep","flow","required","requiredFieldsFilled","GOAL_EDIT_FLOWS","requiredFieldsReviewed","requiredFieldsCommitted","getSchoolTestsFromConfig","config","acc","event","id","eventName","eventType","computeCanIncludeCurrentGoal","props","currentGoalData","enrollmentType","currentCountryCode","grade","selectedCategory","isTeacherTrainingAccount","blockedCountries","availableCountries","availableGrades","goalCategory","availableEnrollmentTypes","blockedEnrollmentTypes","isStudentEnrollmentTypeSupported","getStudentEnrollmentSupported","isStudentRegionBlocked","blockedCountry","isStudentRegionAvailable","availableCountry","isCurrentGradeAvailable","gradeInfo","isGoalCategoryAvailable","getCurriculumStandardsFromConfig","countryCode","courseStream","classRatio","goals","curriculumStandards","filteredGoalCurriculumMap","item","isSameCourseStream","hasGoalForCurriculumStandards","standard","goal","checkEnrollmentAvailable","code","name","defaultInCountries","recommendedInCountries","a","b","getGoalsFromConfig","options","curriculumStandard","isEligibleGoal","label","programCode","getGradesFromConfig","getPreferencesFromConfig","preferenceConfig","isEligiblePreferences","preference","preferenceCategory","description","extendedDescription","lottie","category","getGradesBasedOnGoalAvailability","selectedGoalCategory","grades","gradeAvailableGoals","goalData","isGoalCategoryAndGradeAvailable","getMajorsFromConfigBasedOnBoardAndGrade","boardCode","goalCurriculumMap","filterOnCourseStreamAndEnrollmentType","goalCurriculumStandard","programName","availableGrade","getRegionCodeBasedOnCountryCode","COUNTRY_MAP","countryInfo","generateFormStateWithPrefilledSchoolData","schoolData","board","placeId","regionCode","appendSchoolDataToFormState","formData","appendPrimaryGoalCategoryToFormState","testType","country","isSchoolSuccessCategory","getTestTypeBasedCategory","goalInfo","isCurrentGoalAvailable","isLive","currentBoardAvailable","getIfGoalCurriculumStandardIsAccessible","isSameCourse","isEligiblePrimaryGoal","getDefaultBoard","data","recommendedBoards","otherBoards","defaultBoard","_b"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"milestone-create-helpers.js","sources":["../../../../src/features/milestone/create/milestone-create-helpers.ts"],"sourcesContent":["import type { LOTTIE } from '../../../assets/lottie/lottie';\nimport { COUNTRY_MAP } from '../../../constants/country';\nimport type IStudentSchool from '../../../types/models/school';\nimport type { ISectionOption } from '../../ui/section-list/section-list-types';\nimport type { TTestType } from '../types';\nimport {\n getIfGoalCurriculumStandardIsAccessible,\n getStudentEnrollmentSupported,\n} from './comps/chapters-selection-step/utils';\nimport {\n checkEnrollmentAvailable,\n getTestTypeBasedCategory,\n} from './comps/test-type-step/test-type-utils';\nimport { GOAL_EDIT_FLOWS } from './milestone-create-constants';\nimport type {\n ICurriculumStandards,\n IFormStep,\n IGoalCurriculumMap,\n IMileStoneFormFields,\n IMilestoneConfig,\n IMilestoneFormData,\n IPreferencesCurriculumMap,\n TCourseStream,\n TCurriculumStandardOption,\n TEnrollmentTypes,\n TFormStepNames,\n TGoalCategory,\n TMilestoneConfigOption,\n TMilestoneFormFlow,\n TPreferenceCategory,\n} from './milestone-create-types';\n\ninterface IGetCurrenStep {\n (\n formStep: IFormStep,\n milestoneFormData: IMilestoneFormData,\n flow: TMilestoneFormFlow,\n ): IFormStep | undefined;\n}\n\ninterface IClearNextFields {\n (\n formStep: IFormStep,\n milestoneFormData: IMilestoneFormData,\n currentStepName: TFormStepNames | undefined,\n shouldStartClearing: boolean,\n fieldsToClear: (keyof IMileStoneFormFields)[],\n ): IMilestoneFormData | undefined;\n}\n\n/**\n * Impure method that Removes specified fields from an object.\n *\n * @param obj The object from which fields are to be removed.\n * @param fieldsList An array of field names to be removed.\n */\nconst clearFields = (obj: Record<string, unknown>, fieldsList: string[]) => {\n fieldsList.forEach(field => {\n obj[field] = undefined;\n });\n};\n\nconst clearNextFields: IClearNextFields = (\n formStep,\n milestoneFormData,\n currentStepName,\n startClearing,\n fieldsToClear = [],\n) => {\n const { isLeafNode, next, reset } = formStep;\n const updatedFormData = { ...milestoneFormData };\n\n if (isLeafNode) {\n clearFields(updatedFormData, [...reset, ...fieldsToClear]);\n\n return updatedFormData;\n }\n\n if (next) {\n let shouldStartClearing = startClearing;\n let nextStep: IFormStep | undefined;\n\n next.every(step => {\n let conditionFulfilled = false;\n\n if (step.when !== undefined) {\n conditionFulfilled = step.when.every(([field, value]) => updatedFormData[field] === value);\n } else conditionFulfilled = true;\n\n if (conditionFulfilled) {\n if (shouldStartClearing) {\n step?.reset?.forEach(field => {\n fieldsToClear.push(field);\n });\n } else if (currentStepName === step?.name) {\n shouldStartClearing = true;\n }\n\n nextStep = step;\n\n return false;\n }\n\n return true;\n });\n if (nextStep) {\n return clearNextFields(\n nextStep,\n updatedFormData,\n currentStepName,\n shouldStartClearing,\n fieldsToClear,\n );\n }\n }\n\n return undefined;\n};\n\nconst getCurrenStep: IGetCurrenStep = (formStep, milestoneFormData, flow) => {\n const { isLeafNode, required, next } = formStep;\n\n if (isLeafNode) {\n return formStep;\n }\n\n const requiredFieldsFilled = required.every(field => milestoneFormData[field] !== undefined);\n\n if (GOAL_EDIT_FLOWS.includes(flow)) {\n const requiredFieldsReviewed = required.every(\n field => milestoneFormData.reviewed[field] === true,\n );\n\n if (!requiredFieldsFilled || !requiredFieldsReviewed) {\n return {\n ...formStep,\n next: undefined,\n };\n }\n } else {\n const requiredFieldsCommitted = required.every(\n field => milestoneFormData.committed[field] === true,\n );\n\n if (!requiredFieldsFilled || !requiredFieldsCommitted) {\n return {\n ...formStep,\n next: undefined,\n };\n }\n }\n\n if (next) {\n let nextStep: IFormStep | undefined;\n\n next.every(step => {\n if (step.when === undefined) {\n nextStep = step;\n\n return false;\n }\n\n const conditionFulfilled = step.when.every(\n ([field, value]) => milestoneFormData[field] === value,\n );\n\n if (conditionFulfilled) {\n nextStep = step;\n\n return false;\n }\n\n return true;\n });\n\n if (nextStep) {\n return getCurrenStep(nextStep, milestoneFormData, flow);\n }\n }\n\n return undefined;\n};\n\ninterface IGetSchoolTestsFromConfig {\n (config: IMilestoneConfig): TMilestoneConfigOption[];\n}\n\nconst getSchoolTestsFromConfig: IGetSchoolTestsFromConfig = config => {\n return config.academic_events.reduce<TMilestoneConfigOption[]>((acc, event) => {\n const { id, event_name: eventName, event_type: eventType } = event;\n\n if (eventType === 'SCHOOL_TEST') {\n acc.push({\n id,\n label: eventName,\n });\n }\n\n return acc;\n }, []);\n};\n\ninterface IGetCountriesFromConfig {\n (config: IMilestoneConfig): TMilestoneConfigOption[];\n}\n\nconst computeCanIncludeCurrentGoal = (props: {\n currentGoalData: IGoalCurriculumMap;\n enrollmentType: TEnrollmentTypes;\n currentCountryCode?: string;\n grade?: string;\n selectedCategory?: string;\n isTeacherTrainingAccount?: boolean;\n}) => {\n const {\n currentGoalData,\n enrollmentType,\n currentCountryCode,\n grade,\n selectedCategory,\n isTeacherTrainingAccount,\n } = props;\n\n const {\n blocked_countries: blockedCountries,\n available_countries: availableCountries,\n available_grades: availableGrades,\n goal_category: goalCategory,\n available_enrollment_types: availableEnrollmentTypes,\n blocked_enrollment_types: blockedEnrollmentTypes,\n } = currentGoalData;\n\n const isStudentEnrollmentTypeSupported = getStudentEnrollmentSupported(\n blockedEnrollmentTypes,\n availableEnrollmentTypes,\n enrollmentType,\n );\n const isStudentRegionBlocked = blockedCountries.some(\n blockedCountry => blockedCountry === currentCountryCode,\n );\n const isStudentRegionAvailable =\n availableCountries.length > 0\n ? availableCountries.some(availableCountry => availableCountry === currentCountryCode)\n : true;\n\n const isCurrentGradeAvailable = availableGrades.some(gradeInfo => gradeInfo === grade);\n const isGoalCategoryAvailable = selectedCategory === goalCategory;\n\n if (isTeacherTrainingAccount) return isGoalCategoryAvailable && isCurrentGradeAvailable;\n\n return (\n isStudentEnrollmentTypeSupported &&\n !isStudentRegionBlocked &&\n isStudentRegionAvailable &&\n isCurrentGradeAvailable &&\n isGoalCategoryAvailable\n );\n};\n\ninterface IGetCurriculumStandardsFromConfig {\n (\n config: IMilestoneConfig,\n options: {\n grade: string;\n countryCode: string;\n goalCategory: TGoalCategory;\n courseStream: TCourseStream;\n enrollmentType: TEnrollmentTypes;\n classRatio?: number;\n flow?: TMilestoneFormFlow | null;\n isTeacherTrainingAccount?: boolean;\n },\n ): TCurriculumStandardOption[];\n}\n\nconst getCurriculumStandardsFromConfig: IGetCurriculumStandardsFromConfig = (\n config,\n {\n grade,\n countryCode,\n goalCategory,\n courseStream,\n classRatio,\n enrollmentType,\n flow,\n isTeacherTrainingAccount,\n },\n) => {\n const { goal_curriculum_map: goals, curriculum_standards: curriculumStandards } = config;\n // check if atleast one goal present for the curriculum standard\n\n const filteredGoalCurriculumMap = goals.filter(item => {\n const isSameCourseStream = item.course_stream === courseStream;\n\n if (flow === 'CREATE') {\n return isSameCourseStream && item.is_live;\n }\n\n return isSameCourseStream;\n });\n\n const hasGoalForCurriculumStandards = (standard: ICurriculumStandards) =>\n filteredGoalCurriculumMap.some(goal => {\n // check goal category\n if (goal.goal_category !== goalCategory) return false;\n\n // check grade availability\n if (!goal.available_grades.includes(grade)) return false;\n\n // check goal curriculum standard\n // if goal_curriculum_standard is undefined then it's available for all standard\n if (goal.goal_curriculum_standard && goal.goal_curriculum_standard !== standard.code)\n return false;\n\n if (goalCategory === 'SCHOOL_SUCCESS' && !goal.goal_curriculum_standard) return false;\n\n if (isTeacherTrainingAccount) return true;\n\n if (\n classRatio &&\n goal.available_class_ratios.length > 0 &&\n !goal.available_class_ratios.includes(classRatio)\n )\n return false;\n\n // check country availability\n if (goal.available_countries.length > 0 && !goal.available_countries.includes(countryCode))\n return false;\n\n if (goal.available_countries.length === 0 && goal.blocked_countries.includes(countryCode))\n return false;\n\n return checkEnrollmentAvailable(goal, enrollmentType);\n });\n\n return curriculumStandards\n .filter(hasGoalForCurriculumStandards)\n .map(\n ({\n code,\n name,\n default_in_countries: defaultInCountries,\n recommended_in_countries: recommendedInCountries,\n }) => ({\n id: code,\n label: name,\n isDefault: defaultInCountries.includes(countryCode),\n isRecommended: recommendedInCountries.includes(countryCode),\n }),\n )\n .sort((a, b) => (a.label.toUpperCase() > b.label.toUpperCase() ? 1 : -1));\n};\n\ninterface IGetGoalsFromConfig {\n (\n config: IMilestoneConfig,\n options: {\n grade: string;\n countryCode: string;\n goalCategory: TGoalCategory;\n curriculumStandard?: string;\n courseStream: TCourseStream;\n enrollmentType: TEnrollmentTypes;\n },\n ): TMilestoneConfigOption[];\n}\n\nconst getGoalsFromConfig: IGetGoalsFromConfig = (config, options) => {\n const { goal_curriculum_map: goals } = config;\n const { grade, countryCode, goalCategory, curriculumStandard, courseStream, enrollmentType } =\n options;\n const filteredGoalCurriculumMap = goals.filter(item => item.course_stream === courseStream);\n\n const isEligibleGoal = (goal: IGoalCurriculumMap) => {\n if (goal.goal_category !== goalCategory) return false;\n\n if (curriculumStandard && goal.goal_curriculum_standard !== curriculumStandard) return false;\n\n if (goal.available_countries.length > 0 && !goal.available_countries.includes(countryCode))\n return false;\n\n if (goal.available_countries.length === 0 && goal.blocked_countries.includes(countryCode))\n return false;\n\n if (!goal.available_grades.includes(grade)) return false;\n\n if (!goal.is_live) return false;\n\n return checkEnrollmentAvailable(goal, enrollmentType);\n };\n\n return filteredGoalCurriculumMap\n ?.filter(isEligibleGoal)\n .map(({ goal_code: id, goal_name: label }) => ({\n id,\n label,\n }))\n .sort((a, b) => (a.label.toUpperCase() > b.label.toUpperCase() ? 1 : -1));\n};\n\nconst getGradesFromConfig: IGetCountriesFromConfig = config => {\n return config.grades.reduce<TMilestoneConfigOption[]>((acc, grade) => {\n if (grade === '-1' || grade === '0') {\n acc.push({\n id: grade,\n label: grade === '-1' ? `Pre-K` : `KG`,\n });\n } else {\n acc.push({\n id: grade,\n label: `Grade ${grade}`,\n });\n }\n\n return acc;\n }, []);\n};\n\ninterface IGetPreferencesFromConfig {\n (\n config: IMilestoneConfig,\n options: {\n grade: string;\n preferenceCategory: TPreferenceCategory;\n courseStream: TCourseStream;\n },\n ): TMilestoneConfigOption[];\n}\n\nconst getPreferencesFromConfig: IGetPreferencesFromConfig = (config, options) => {\n const { preference_config: preferenceConfig } = config;\n\n const isEligiblePreferences = (preference: IPreferencesCurriculumMap) => {\n const { grade, courseStream, preferenceCategory } = options;\n\n if (preference.course_stream !== courseStream) return false;\n\n if (preference.preference_category !== preferenceCategory) return false;\n\n if (preference.preference_grades.length > 0 && !preference.preference_grades.includes(grade))\n return false;\n\n if (!preference.is_live) return false;\n\n return true;\n };\n\n return preferenceConfig\n ?.filter(isEligiblePreferences)\n .map(\n ({\n preference_code: id,\n preference_name: label,\n preference_description: description,\n preference_description_2: extendedDescription,\n lottie_key: lottie,\n preference_category: category,\n }) => ({\n id,\n label,\n description,\n lottie: lottie as keyof typeof LOTTIE,\n extendedDescription,\n category,\n }),\n );\n};\n\ninterface IGetGradeBasedOnGoalAvailability {\n (\n config: IMilestoneConfig,\n selectedGoalCategory: string,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n isTeacherTrainingAccount?: boolean,\n ): TMilestoneConfigOption[];\n}\n\n//* Grades where goals are available for selected goal category.\nconst getGradesBasedOnGoalAvailability: IGetGradeBasedOnGoalAvailability = (\n config,\n selectedGoalCategory,\n courseStream,\n enrollmentType,\n isTeacherTrainingAccount,\n) => {\n const { goal_curriculum_map: goals } = config;\n\n const grades = getGradesFromConfig(config);\n\n const gradeAvailableGoals = ({ id }: TMilestoneConfigOption) => {\n return goals\n .filter(item => item.course_stream === courseStream && item.is_live)\n .some((goalData: IGoalCurriculumMap) => {\n const {\n available_grades: availableGrades,\n goal_category: goalCategory,\n available_enrollment_types: availableEnrollmentTypes,\n blocked_enrollment_types: blockedEnrollmentTypes,\n } = goalData;\n\n const isGoalCategoryAndGradeAvailable =\n goalCategory === selectedGoalCategory && availableGrades.includes(id);\n\n if (isTeacherTrainingAccount) return isGoalCategoryAndGradeAvailable;\n\n // check enrollment type availability\n if (\n availableEnrollmentTypes.length > 0 &&\n !availableEnrollmentTypes.includes(enrollmentType)\n )\n return false;\n\n if (\n availableEnrollmentTypes.length === 0 &&\n blockedEnrollmentTypes.includes(enrollmentType)\n )\n return false;\n\n //* Check for grade availability only for selected goal category\n return isGoalCategoryAndGradeAvailable;\n });\n };\n\n return grades.filter(gradeAvailableGoals);\n};\n\ninterface IGetMajorsFromConfigBasedOnBoardAndGrade {\n (\n config: IMilestoneConfig,\n boardCode: string,\n grade: string,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n isTeacherTrainingAccount?: boolean,\n ): TMilestoneConfigOption[];\n}\n\nconst getMajorsFromConfigBasedOnBoardAndGrade: IGetMajorsFromConfigBasedOnBoardAndGrade = (\n config,\n boardCode,\n grade,\n courseStream,\n enrollmentType,\n isTeacherTrainingAccount,\n) => {\n //* We have US courses for grade 7 & above\n if (grade === 'KG' || Number(grade) < 7) return [];\n\n const { goal_curriculum_map: goalCurriculumMap } = config;\n const filterOnCourseStreamAndEnrollmentType = (goalData: IGoalCurriculumMap) => {\n if (goalData.course_stream !== courseStream && goalData.is_live) return false;\n\n return isTeacherTrainingAccount || checkEnrollmentAvailable(goalData, enrollmentType);\n };\n\n const majorsWithLabelId = goalCurriculumMap\n .filter(filterOnCourseStreamAndEnrollmentType)\n .reduce<TMilestoneConfigOption[]>((acc, goalData) => {\n const {\n available_grades: availableGrades,\n goal_curriculum_standard: goalCurriculumStandard,\n program_name: programName,\n program_code: programCode,\n } = goalData;\n\n const isGradeAvailable = availableGrades.some(availableGrade => availableGrade === grade);\n const isBoardAvailable = goalCurriculumStandard === boardCode;\n\n if (isGradeAvailable && isBoardAvailable) {\n acc.push({\n id: programCode,\n label: programName,\n });\n }\n\n return acc;\n }, []);\n\n return majorsWithLabelId;\n};\n\nconst getRegionCodeBasedOnCountryCode = (countryCode: string) => {\n const regionCode = COUNTRY_MAP.find(countryInfo => countryInfo.country_code === countryCode)\n ?.region_code;\n\n return regionCode;\n};\n\nconst generateFormStateWithPrefilledSchoolData = (\n schoolData: IStudentSchool | undefined,\n board: string | undefined,\n grade: string | undefined,\n currentCountryCode: string | undefined,\n): IMilestoneFormData => {\n if (schoolData && grade) {\n const { country_code: countryCode, place_id: placeId } = schoolData;\n\n return {\n committed: {},\n reviewed: {},\n grade: grade,\n schoolInfo: {\n countryCode: countryCode,\n stateCode: '',\n id: placeId,\n },\n region: countryCode,\n board: board ?? undefined,\n };\n }\n\n const regionCode = currentCountryCode\n ? getRegionCodeBasedOnCountryCode(currentCountryCode)\n : undefined;\n\n if (grade) {\n return {\n committed: {},\n reviewed: {},\n grade: grade,\n region: regionCode,\n board: board ?? undefined,\n };\n }\n\n return {\n committed: {},\n reviewed: {},\n };\n};\n\nconst appendSchoolDataToFormState = (\n formData: IMilestoneFormData,\n schoolData: IStudentSchool | undefined,\n board: string | undefined,\n grade: string | undefined,\n): IMilestoneFormData => {\n if (schoolData && grade) {\n const { country_code: countryCode, place_id: placeId } = schoolData;\n\n return {\n ...formData,\n grade: grade,\n schoolInfo: {\n countryCode: countryCode,\n stateCode: '',\n id: placeId,\n },\n board: formData.board ?? board ?? undefined,\n };\n }\n\n return formData;\n};\n\nconst appendPrimaryGoalCategoryToFormState = (\n config: IMilestoneConfig,\n testType: TTestType,\n grade: string | undefined,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n board?: string | undefined,\n country?: string | undefined,\n flow?: TMilestoneFormFlow | null,\n isTeacherTrainingAccount?: boolean,\n) => {\n const { goal_curriculum_map: goalCurriculumMap } = config;\n const isSchoolSuccessCategory = testType === 'no-test';\n const selectedGoalCategory = getTestTypeBasedCategory(testType);\n\n //TODO: This needs to compensate the course selection for US curriculum grade 8 & above\n const primaryGoalCurriculum = goalCurriculumMap.find(goalInfo => {\n const isCurrentGoalAvailable = computeCanIncludeCurrentGoal({\n currentGoalData: goalInfo,\n grade,\n currentCountryCode: country,\n selectedCategory: selectedGoalCategory,\n enrollmentType,\n isTeacherTrainingAccount,\n });\n\n const { goal_curriculum_standard: goalCurriculumStandard, is_live: isLive } = goalInfo;\n\n const currentBoardAvailable = getIfGoalCurriculumStandardIsAccessible({\n goalCurriculumStandard,\n referenceStandard: board,\n });\n\n const isSameCourse = goalInfo.course_stream === courseStream;\n const canIncludeCurrentGoal = flow === 'CREATE' ? isLive : true;\n\n const isEligiblePrimaryGoal = canIncludeCurrentGoal && isSameCourse && isCurrentGoalAvailable;\n\n if (isTeacherTrainingAccount)\n return isEligiblePrimaryGoal && (isSchoolSuccessCategory ? currentBoardAvailable : true);\n\n if (isSchoolSuccessCategory) {\n return isEligiblePrimaryGoal && currentBoardAvailable;\n }\n\n return isEligiblePrimaryGoal;\n });\n\n return primaryGoalCurriculum;\n};\n\nconst getDefaultBoard = (data: ISectionOption<TCurriculumStandardOption>[]) => {\n let recommendedBoards: TCurriculumStandardOption[] = [];\n let otherBoards: TCurriculumStandardOption[] = [];\n\n // Iterate through the data categories\n for (const category of data) {\n if (category.title === 'recommended') {\n recommendedBoards = category.data;\n } else if (category.title === 'others') {\n otherBoards = category.data;\n }\n }\n\n // 1. Check if any recommended board has isDefault: true\n const defaultBoard = recommendedBoards.find(board => board.isDefault && board.isRecommended);\n\n if (defaultBoard) {\n return defaultBoard.id;\n }\n\n // 2. If no default, return the first recommended board\n if (recommendedBoards.length > 0) {\n return recommendedBoards[0]?.id;\n }\n\n // 3. If no recommended, return the first board from others\n if (otherBoards.length > 0) {\n return otherBoards[0]?.id;\n }\n\n // 4. Return null if no boards are found\n return undefined;\n};\n\nexport {\n appendSchoolDataToFormState,\n appendPrimaryGoalCategoryToFormState,\n clearNextFields,\n generateFormStateWithPrefilledSchoolData,\n getCurrenStep,\n getGradesFromConfig,\n getCurriculumStandardsFromConfig,\n getGoalsFromConfig,\n getGradesBasedOnGoalAvailability,\n getMajorsFromConfigBasedOnBoardAndGrade,\n getSchoolTestsFromConfig,\n getRegionCodeBasedOnCountryCode,\n getDefaultBoard,\n getPreferencesFromConfig,\n};\n"],"names":["clearFields","obj","fieldsList","field","clearNextFields","formStep","milestoneFormData","currentStepName","startClearing","fieldsToClear","isLeafNode","next","reset","updatedFormData","shouldStartClearing","nextStep","step","conditionFulfilled","value","_a","getCurrenStep","flow","required","requiredFieldsFilled","GOAL_EDIT_FLOWS","requiredFieldsReviewed","requiredFieldsCommitted","getSchoolTestsFromConfig","config","acc","event","id","eventName","eventType","computeCanIncludeCurrentGoal","props","currentGoalData","enrollmentType","currentCountryCode","grade","selectedCategory","isTeacherTrainingAccount","blockedCountries","availableCountries","availableGrades","goalCategory","availableEnrollmentTypes","blockedEnrollmentTypes","isStudentEnrollmentTypeSupported","getStudentEnrollmentSupported","isStudentRegionBlocked","blockedCountry","isStudentRegionAvailable","availableCountry","isCurrentGradeAvailable","gradeInfo","isGoalCategoryAvailable","getCurriculumStandardsFromConfig","countryCode","courseStream","classRatio","goals","curriculumStandards","filteredGoalCurriculumMap","item","isSameCourseStream","hasGoalForCurriculumStandards","standard","goal","checkEnrollmentAvailable","code","name","defaultInCountries","recommendedInCountries","a","b","getGoalsFromConfig","options","curriculumStandard","isEligibleGoal","label","getGradesFromConfig","getPreferencesFromConfig","preferenceConfig","isEligiblePreferences","preference","preferenceCategory","description","extendedDescription","lottie","category","getGradesBasedOnGoalAvailability","selectedGoalCategory","grades","gradeAvailableGoals","goalData","isGoalCategoryAndGradeAvailable","getMajorsFromConfigBasedOnBoardAndGrade","boardCode","goalCurriculumMap","filterOnCourseStreamAndEnrollmentType","goalCurriculumStandard","programName","programCode","availableGrade","getRegionCodeBasedOnCountryCode","COUNTRY_MAP","countryInfo","generateFormStateWithPrefilledSchoolData","schoolData","board","placeId","regionCode","appendSchoolDataToFormState","formData","appendPrimaryGoalCategoryToFormState","testType","country","isSchoolSuccessCategory","getTestTypeBasedCategory","goalInfo","isCurrentGoalAvailable","isLive","currentBoardAvailable","getIfGoalCurriculumStandardIsAccessible","isSameCourse","isEligiblePrimaryGoal","getDefaultBoard","data","recommendedBoards","otherBoards","defaultBoard","_b"],"mappings":"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"}
|
package/dist/features/timeline/monthly-timeline/monthly-report/comps/goals/goals-card/goals-card.js
CHANGED
|
@@ -2,20 +2,20 @@ import { jsxs as e, jsx as r, Fragment as h } from "react/jsx-runtime";
|
|
|
2
2
|
import { memo as F, useState as H, useMemo as O, useCallback as W } from "react";
|
|
3
3
|
import { GOAL_CATEGORY_CONFIG as j, calculateProgress as B } from "../goals-constants.js";
|
|
4
4
|
import { ProgressBarContainer as z, TagContainer as E, ChaptersContainer as y } from "./goals-card-styled.js";
|
|
5
|
-
import
|
|
5
|
+
import s from "../../../../../../ui/text/text.js";
|
|
6
6
|
import t from "../../../../../../ui/layout/flex-view.js";
|
|
7
|
-
import
|
|
7
|
+
import C from "../../../../../../ui/separator/separator.js";
|
|
8
8
|
import V from "../../../../../../ui/image/image.js";
|
|
9
9
|
import G from "./goal-chapter-card.js";
|
|
10
10
|
import Y from "../../../../../../ui/linear-progress-bar/linear-progress-bar.js";
|
|
11
11
|
import T from "../../../../../../ui/buttons/text-button/text-button.js";
|
|
12
|
-
const q = ({ category:
|
|
12
|
+
const q = ({ category: $, milestone: L, isExpended: o = !1 }) => {
|
|
13
13
|
const [p, v] = H(!1), {
|
|
14
14
|
milestone_name: P,
|
|
15
15
|
user_chapters: d,
|
|
16
16
|
progress_stat: k,
|
|
17
|
-
previous_progress_stat:
|
|
18
|
-
} = L, { completed: x, total:
|
|
17
|
+
previous_progress_stat: a
|
|
18
|
+
} = L, { completed: x, total: g } = k, { completed: u, total: n } = a ?? {}, c = B(x, g), f = a && u && n ? B(u, n) : 0, i = c - f, m = !!(a && i > 0 && g === n), I = !!(a && (i < 0 || g !== n)), _ = c === 100, K = Math.round(c), S = Math.round(i), b = d.length, D = d.slice(0, 2), A = Math.max(0, b - 2), M = p ? d.slice(2) : [], N = A > 0, l = O(() => j[$], [$]), X = l.icon, w = W(() => {
|
|
19
19
|
v((R) => !R);
|
|
20
20
|
}, []);
|
|
21
21
|
return /* @__PURE__ */ e(t, { children: [
|
|
@@ -41,14 +41,14 @@ const q = ({ category: C, milestone: L, isExpended: o = !1 }) => {
|
|
|
41
41
|
),
|
|
42
42
|
/* @__PURE__ */ e(t, { children: [
|
|
43
43
|
o && /* @__PURE__ */ e(h, { children: [
|
|
44
|
-
/* @__PURE__ */ r(
|
|
45
|
-
/* @__PURE__ */ r(
|
|
44
|
+
/* @__PURE__ */ r(s, { $renderAs: "ac5", $color: l.labelColor, children: l.label }),
|
|
45
|
+
/* @__PURE__ */ r(C, { heightX: 0.25 })
|
|
46
46
|
] }),
|
|
47
|
-
/* @__PURE__ */ r(
|
|
48
|
-
/* @__PURE__ */ r(
|
|
47
|
+
/* @__PURE__ */ r(s, { $renderAs: "ab2", $color: "BLACK_1", children: P }),
|
|
48
|
+
/* @__PURE__ */ r(C, { heightX: o ? 0.5 : 0.125 }),
|
|
49
49
|
/* @__PURE__ */ e(t, { $flexDirection: "row", $alignItems: "center", $flexGapX: 0.25, children: [
|
|
50
|
-
/* @__PURE__ */ r(
|
|
51
|
-
|
|
50
|
+
/* @__PURE__ */ r(s, { $renderAs: "ab3", $color: "BLACK_T_60", children: _ ? "Completed" : `${K}% complete` }),
|
|
51
|
+
m && !_ && /* @__PURE__ */ e(s, { $renderAs: "ab3", $color: "GREEN_6", children: [
|
|
52
52
|
"(+",
|
|
53
53
|
S,
|
|
54
54
|
"%)"
|
|
@@ -58,8 +58,8 @@ const q = ({ category: C, milestone: L, isExpended: o = !1 }) => {
|
|
|
58
58
|
/* @__PURE__ */ r(z, { children: /* @__PURE__ */ r(
|
|
59
59
|
Y,
|
|
60
60
|
{
|
|
61
|
-
percentage:
|
|
62
|
-
delta:
|
|
61
|
+
percentage: m ? f : c,
|
|
62
|
+
delta: m ? i : 0,
|
|
63
63
|
height: 4,
|
|
64
64
|
backgroundColor: "WHITE_5",
|
|
65
65
|
fillColor: "BLACK_1",
|
|
@@ -68,8 +68,8 @@ const q = ({ category: C, milestone: L, isExpended: o = !1 }) => {
|
|
|
68
68
|
) })
|
|
69
69
|
] }),
|
|
70
70
|
I && /* @__PURE__ */ e(h, { children: [
|
|
71
|
-
/* @__PURE__ */ r(
|
|
72
|
-
/* @__PURE__ */ r(E, { $gapX: 0.5, $gutterX: 1, $background: l.tagColor, children: /* @__PURE__ */ r(
|
|
71
|
+
/* @__PURE__ */ r(C, { heightX: 0.875 }),
|
|
72
|
+
/* @__PURE__ */ r(E, { $gapX: 0.5, $gutterX: 1, $background: l.tagColor, children: /* @__PURE__ */ r(s, { $renderAs: "ub3", $color: "BLACK_1", children: "Learning plan was modified — progress updated accordingly." }) })
|
|
73
73
|
] })
|
|
74
74
|
]
|
|
75
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goals-card.js","sources":["../../../../../../../../src/features/timeline/monthly-timeline/monthly-report/comps/goals/goals-card/goals-card.tsx"],"sourcesContent":["import { type FC, memo, useCallback, useMemo, useState } from 'react';\n\nimport { type IGoalsCardProps } from '../goals-types';\nimport { calculateProgress, GOAL_CATEGORY_CONFIG } from '../goals-constants';\nimport * as Styled from './goals-card-styled';\nimport Text from '../../../../../../ui/text/text';\nimport FlexView from '../../../../../../ui/layout/flex-view';\nimport Separator from '../../../../../../ui/separator/separator';\nimport Image from '../../../../../../ui/image/image';\nimport GoalsCardChapters from './goal-chapter-card';\nimport LinearProgressBar from '../../../../../../ui/linear-progress-bar/linear-progress-bar';\nimport TextButton from '../../../../../../ui/buttons/text-button/text-button';\n\nconst GoalsCard: FC<IGoalsCardProps> = ({ category, milestone, isExpended = false }) => {\n const [showAllChapters, setShowAllChapters] = useState(false);\n const {\n milestone_name: milestoneName,\n user_chapters: userChapters,\n progress_stat: progressStat,\n previous_progress_stat: prevProgressStat,\n } = milestone;\n const { completed, total } = progressStat;\n const { completed: prevCompleted, total: prevTotal } = prevProgressStat ?? {};\n const currentProgress = calculateProgress(completed, total);\n const previousProgress =\n prevProgressStat && prevCompleted && prevTotal\n ? calculateProgress(prevCompleted, prevTotal)\n : 0;\n\n const progressDifference = currentProgress - previousProgress;\n const showIndicator = Boolean(prevProgressStat && progressDifference > 0 && total === total);\n const showTag = Boolean(prevProgressStat && progressDifference <= 0 && total !== total);\n const isCompleted = currentProgress === 100;\n const roundedProgress = Math.round(currentProgress);\n const roundedDifference = Math.round(progressDifference);\n\n const totalChapters = userChapters.length;\n const visibleChapters = userChapters.slice(0, 2);\n const remainingChapters = Math.max(0, totalChapters - 2);\n const hiddenChapters = showAllChapters ? userChapters.slice(2) : [];\n const hasRemainingChapters = remainingChapters > 0;\n\n const categoryConfig = useMemo(() => GOAL_CATEGORY_CONFIG[category], [category]);\n const icon = categoryConfig.icon;\n\n const handleToggleChapters = useCallback(() => {\n setShowAllChapters(prev => !prev);\n }, []);\n\n return (\n <FlexView>\n <FlexView\n $position=\"relative\"\n $background={categoryConfig.backgroundColor}\n $borderColor={isExpended ? 'WHITE_5' : undefined}\n $gutterX={1}\n $gapX={1}\n >\n <FlexView $flexDirection=\"row\" $flexGapX={isExpended ? 1 : 0.5}>\n {icon && (\n <Image\n src={icon}\n withLoader\n width={isExpended ? 40 : 32}\n height={isExpended ? 40 : 32}\n alt={categoryConfig.label}\n />\n )}\n <FlexView>\n {isExpended && (\n <>\n <Text $renderAs=\"ac5\" $color={categoryConfig.labelColor}>\n {categoryConfig.label}\n </Text>\n <Separator heightX={0.25} />\n </>\n )}\n <Text $renderAs=\"ab2\" $color=\"BLACK_1\">\n {milestoneName}\n </Text>\n <Separator heightX={isExpended ? 0.5 : 0.125} />\n <FlexView $flexDirection=\"row\" $alignItems=\"center\" $flexGapX={0.25}>\n <Text $renderAs=\"ab3\" $color=\"BLACK_T_60\">\n {isCompleted ? 'Completed' : `${roundedProgress}% complete`}\n </Text>\n {showIndicator && !isCompleted && (\n <Text $renderAs=\"ab3\" $color=\"GREEN_6\">\n (+{roundedDifference}%)\n </Text>\n )}\n </FlexView>\n </FlexView>\n <Styled.ProgressBarContainer>\n <LinearProgressBar\n percentage={showIndicator ? previousProgress : currentProgress}\n delta={showIndicator ? progressDifference : 0}\n height={4}\n backgroundColor=\"WHITE_5\"\n fillColor=\"BLACK_1\"\n deltaProgressColor=\"GREEN_5\"\n />\n </Styled.ProgressBarContainer>\n </FlexView>\n {showTag && (\n <>\n <Separator heightX={0.875} />\n <Styled.TagContainer $gapX={0.5} $gutterX={1} $background={categoryConfig.tagColor}>\n <Text $renderAs=\"ub3\" $color=\"BLACK_1\">\n Learning plan was modified — progress updated accordingly.\n </Text>\n </Styled.TagContainer>\n </>\n )}\n </FlexView>\n {isExpended && totalChapters > 0 && (\n <Styled.ChaptersContainer\n $gapX={1}\n $flexDirection=\"column\"\n $flexGapX={1.25}\n $borderColor=\"WHITE_5\"\n >\n <GoalsCardChapters chapters={visibleChapters} />\n {hasRemainingChapters && (\n <>\n {!showAllChapters && (\n <FlexView $gutterX={4.5}>\n <TextButton\n label={`+${remainingChapters} chapters`}\n size=\"regular\"\n color=\"BLACK_1\"\n onClick={handleToggleChapters}\n />\n </FlexView>\n )}\n {showAllChapters && (\n <>\n <GoalsCardChapters chapters={hiddenChapters} />\n <FlexView $gutterX={4.5}>\n <TextButton\n label=\"Show less\"\n size=\"regular\"\n color=\"BLACK_1\"\n onClick={handleToggleChapters}\n />\n </FlexView>\n </>\n )}\n </>\n )}\n </Styled.ChaptersContainer>\n )}\n </FlexView>\n );\n};\n\nexport default memo(GoalsCard);\n"],"names":["GoalsCard","category","milestone","isExpended","showAllChapters","setShowAllChapters","useState","milestoneName","userChapters","progressStat","prevProgressStat","completed","total","prevCompleted","prevTotal","currentProgress","calculateProgress","previousProgress","progressDifference","showIndicator","showTag","isCompleted","roundedProgress","roundedDifference","totalChapters","visibleChapters","remainingChapters","hiddenChapters","hasRemainingChapters","categoryConfig","useMemo","GOAL_CATEGORY_CONFIG","icon","handleToggleChapters","useCallback","prev","FlexView","jsxs","jsx","Image","Fragment","Text","Separator","Styled.ProgressBarContainer","LinearProgressBar","Styled.TagContainer","Styled.ChaptersContainer","GoalsCardChapters","TextButton","GoalsCard$1","memo"],"mappings":";;;;;;;;;;;AAaA,MAAMA,IAAiC,CAAC,EAAE,UAAAC,GAAU,WAAAC,GAAW,YAAAC,IAAa,SAAY;AACtF,QAAM,CAACC,GAAiBC,CAAkB,IAAIC,EAAS,EAAK,GACtD;AAAA,IACJ,gBAAgBC;AAAA,IAChB,eAAeC;AAAA,IACf,eAAeC;AAAA,IACf,wBAAwBC;AAAA,EACtB,IAAAR,GACE,EAAE,WAAAS,GAAW,OAAAC,EAAU,IAAAH,GACvB,EAAE,WAAWI,GAAe,OAAOC,EAAU,IAAIJ,KAAoB,IACrEK,IAAkBC,EAAkBL,GAAWC,CAAK,GACpDK,IACJP,KAAoBG,KAAiBC,IACjCE,EAAkBH,GAAeC,CAAS,IAC1C,GAEAI,IAAqBH,IAAkBE,GACvCE,IAAgB,GAAQT,KAAoBQ,IAAqB,KAAKN,MAAUA,IAChFQ,IAAU,GAAQV,KAAoBQ,KAAsB,KAAKN,MAAUA,IAC3ES,IAAcN,MAAoB,KAClCO,IAAkB,KAAK,MAAMP,CAAe,GAC5CQ,IAAoB,KAAK,MAAML,CAAkB,GAEjDM,IAAgBhB,EAAa,QAC7BiB,IAAkBjB,EAAa,MAAM,GAAG,CAAC,GACzCkB,IAAoB,KAAK,IAAI,GAAGF,IAAgB,CAAC,GACjDG,IAAiBvB,IAAkBI,EAAa,MAAM,CAAC,IAAI,IAC3DoB,IAAuBF,IAAoB,GAE3CG,IAAiBC,EAAQ,MAAMC,EAAqB9B,CAAQ,GAAG,CAACA,CAAQ,CAAC,GACzE+B,IAAOH,EAAe,MAEtBI,IAAuBC,EAAY,MAAM;AAC1B,IAAA7B,EAAA,CAAA8B,MAAQ,CAACA,CAAI;AAAA,EAClC,GAAG,CAAE,CAAA;AAEL,2BACGC,GACC,EAAA,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACD;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,aAAaP,EAAe;AAAA,QAC5B,cAAc1B,IAAa,YAAY;AAAA,QACvC,UAAU;AAAA,QACV,OAAO;AAAA,QAEP,UAAA;AAAA,UAAA,gBAAAkC,EAACD,KAAS,gBAAe,OAAM,WAAWjC,IAAa,IAAI,KACxD,UAAA;AAAA,YACC6B,KAAA,gBAAAM;AAAA,cAACC;AAAA,cAAA;AAAA,gBACC,KAAKP;AAAA,gBACL,YAAU;AAAA,gBACV,OAAO7B,IAAa,KAAK;AAAA,gBACzB,QAAQA,IAAa,KAAK;AAAA,gBAC1B,KAAK0B,EAAe;AAAA,cAAA;AAAA,YACtB;AAAA,8BAEDO,GACE,EAAA,UAAA;AAAA,cAAAjC,KAEG,gBAAAkC,EAAAG,GAAA,EAAA,UAAA;AAAA,gBAAA,gBAAAF,EAACG,KAAK,WAAU,OAAM,QAAQZ,EAAe,YAC1C,YAAe,MAClB,CAAA;AAAA,gBACA,gBAAAS,EAACI,GAAU,EAAA,SAAS,KAAM,CAAA;AAAA,cAAA,GAC5B;AAAA,gCAEDD,GAAK,EAAA,WAAU,OAAM,QAAO,WAC1B,UACHlC,GAAA;AAAA,cACC,gBAAA+B,EAAAI,GAAA,EAAU,SAASvC,IAAa,MAAM,OAAO;AAAA,gCAC7CiC,GAAS,EAAA,gBAAe,OAAM,aAAY,UAAS,WAAW,MAC7D,UAAA;AAAA,gBAAC,gBAAAE,EAAAG,GAAA,EAAK,WAAU,OAAM,QAAO,cAC1B,UAAcpB,IAAA,cAAc,GAAGC,CAAe,aACjD,CAAA;AAAA,gBACCH,KAAiB,CAACE,KACjB,gBAAAgB,EAACI,KAAK,WAAU,OAAM,QAAO,WAAU,UAAA;AAAA,kBAAA;AAAA,kBAClClB;AAAA,kBAAkB;AAAA,gBAAA,GACvB;AAAA,cAAA,GAEJ;AAAA,YAAA,GACF;AAAA,YACA,gBAAAe,EAACK,GAAA,EACC,UAAA,gBAAAL;AAAA,cAACM;AAAA,cAAA;AAAA,gBACC,YAAYzB,IAAgBF,IAAmBF;AAAA,gBAC/C,OAAOI,IAAgBD,IAAqB;AAAA,gBAC5C,QAAQ;AAAA,gBACR,iBAAgB;AAAA,gBAChB,WAAU;AAAA,gBACV,oBAAmB;AAAA,cAAA;AAAA,YAAA,GAEvB;AAAA,UAAA,GACF;AAAA,UACCE,KAEG,gBAAAiB,EAAAG,GAAA,EAAA,UAAA;AAAA,YAAC,gBAAAF,EAAAI,GAAA,EAAU,SAAS,MAAO,CAAA;AAAA,8BAC1BG,GAAA,EAAoB,OAAO,KAAK,UAAU,GAAG,aAAahB,EAAe,UACxE,4BAACY,GAAK,EAAA,WAAU,OAAM,QAAO,WAAU,uEAEvC,CAAA,GACF;AAAA,UAAA,GACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAEJ;AAAA,IACCtC,KAAcqB,IAAgB,KAC7B,gBAAAa;AAAA,MAACS;AAAAA,MAAA;AAAA,QACC,OAAO;AAAA,QACP,gBAAe;AAAA,QACf,WAAW;AAAA,QACX,cAAa;AAAA,QAEb,UAAA;AAAA,UAAC,gBAAAR,EAAAS,GAAA,EAAkB,UAAUtB,EAAiB,CAAA;AAAA,UAC7CG,KAEI,gBAAAS,EAAAG,GAAA,EAAA,UAAA;AAAA,YAAA,CAACpC,KACA,gBAAAkC,EAACF,GAAS,EAAA,UAAU,KAClB,UAAA,gBAAAE;AAAA,cAACU;AAAA,cAAA;AAAA,gBACC,OAAO,IAAItB,CAAiB;AAAA,gBAC5B,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,SAASO;AAAA,cAAA;AAAA,YAAA,GAEb;AAAA,YAED7B,KAEG,gBAAAiC,EAAAG,GAAA,EAAA,UAAA;AAAA,cAAC,gBAAAF,EAAAS,GAAA,EAAkB,UAAUpB,EAAgB,CAAA;AAAA,cAC7C,gBAAAW,EAACF,GAAS,EAAA,UAAU,KAClB,UAAA,gBAAAE;AAAA,gBAACU;AAAA,gBAAA;AAAA,kBACC,OAAM;AAAA,kBACN,MAAK;AAAA,kBACL,OAAM;AAAA,kBACN,SAASf;AAAA,gBAAA;AAAA,cAAA,GAEb;AAAA,YAAA,GACF;AAAA,UAAA,GAEJ;AAAA,QAAA;AAAA,MAAA;AAAA,IAEJ;AAAA,EAEJ,EAAA,CAAA;AAEJ,GAEegB,KAAAC,EAAKlD,CAAS;"}
|
|
1
|
+
{"version":3,"file":"goals-card.js","sources":["../../../../../../../../src/features/timeline/monthly-timeline/monthly-report/comps/goals/goals-card/goals-card.tsx"],"sourcesContent":["import { type FC, memo, useCallback, useMemo, useState } from 'react';\n\nimport { type IGoalsCardProps } from '../goals-types';\nimport { calculateProgress, GOAL_CATEGORY_CONFIG } from '../goals-constants';\nimport * as Styled from './goals-card-styled';\nimport Text from '../../../../../../ui/text/text';\nimport FlexView from '../../../../../../ui/layout/flex-view';\nimport Separator from '../../../../../../ui/separator/separator';\nimport Image from '../../../../../../ui/image/image';\nimport GoalsCardChapters from './goal-chapter-card';\nimport LinearProgressBar from '../../../../../../ui/linear-progress-bar/linear-progress-bar';\nimport TextButton from '../../../../../../ui/buttons/text-button/text-button';\n\nconst GoalsCard: FC<IGoalsCardProps> = ({ category, milestone, isExpended = false }) => {\n const [showAllChapters, setShowAllChapters] = useState(false);\n const {\n milestone_name: milestoneName,\n user_chapters: userChapters,\n progress_stat: progressStat,\n previous_progress_stat: prevProgressStat,\n } = milestone;\n const { completed, total } = progressStat;\n const { completed: prevCompleted, total: prevTotal } = prevProgressStat ?? {};\n const currentProgress = calculateProgress(completed, total);\n const previousProgress =\n prevProgressStat && prevCompleted && prevTotal\n ? calculateProgress(prevCompleted, prevTotal)\n : 0;\n\n const progressDifference = currentProgress - previousProgress;\n const showIndicator = Boolean(prevProgressStat && progressDifference > 0 && total === prevTotal);\n const showTag = Boolean(prevProgressStat && (progressDifference < 0 || total !== prevTotal));\n const isCompleted = currentProgress === 100;\n const roundedProgress = Math.round(currentProgress);\n const roundedDifference = Math.round(progressDifference);\n\n const totalChapters = userChapters.length;\n const visibleChapters = userChapters.slice(0, 2);\n const remainingChapters = Math.max(0, totalChapters - 2);\n const hiddenChapters = showAllChapters ? userChapters.slice(2) : [];\n const hasRemainingChapters = remainingChapters > 0;\n\n const categoryConfig = useMemo(() => GOAL_CATEGORY_CONFIG[category], [category]);\n const icon = categoryConfig.icon;\n\n const handleToggleChapters = useCallback(() => {\n setShowAllChapters(prev => !prev);\n }, []);\n\n return (\n <FlexView>\n <FlexView\n $position=\"relative\"\n $background={categoryConfig.backgroundColor}\n $borderColor={isExpended ? 'WHITE_5' : undefined}\n $gutterX={1}\n $gapX={1}\n >\n <FlexView $flexDirection=\"row\" $flexGapX={isExpended ? 1 : 0.5}>\n {icon && (\n <Image\n src={icon}\n withLoader\n width={isExpended ? 40 : 32}\n height={isExpended ? 40 : 32}\n alt={categoryConfig.label}\n />\n )}\n <FlexView>\n {isExpended && (\n <>\n <Text $renderAs=\"ac5\" $color={categoryConfig.labelColor}>\n {categoryConfig.label}\n </Text>\n <Separator heightX={0.25} />\n </>\n )}\n <Text $renderAs=\"ab2\" $color=\"BLACK_1\">\n {milestoneName}\n </Text>\n <Separator heightX={isExpended ? 0.5 : 0.125} />\n <FlexView $flexDirection=\"row\" $alignItems=\"center\" $flexGapX={0.25}>\n <Text $renderAs=\"ab3\" $color=\"BLACK_T_60\">\n {isCompleted ? 'Completed' : `${roundedProgress}% complete`}\n </Text>\n {showIndicator && !isCompleted && (\n <Text $renderAs=\"ab3\" $color=\"GREEN_6\">\n (+{roundedDifference}%)\n </Text>\n )}\n </FlexView>\n </FlexView>\n <Styled.ProgressBarContainer>\n <LinearProgressBar\n percentage={showIndicator ? previousProgress : currentProgress}\n delta={showIndicator ? progressDifference : 0}\n height={4}\n backgroundColor=\"WHITE_5\"\n fillColor=\"BLACK_1\"\n deltaProgressColor=\"GREEN_5\"\n />\n </Styled.ProgressBarContainer>\n </FlexView>\n {showTag && (\n <>\n <Separator heightX={0.875} />\n <Styled.TagContainer $gapX={0.5} $gutterX={1} $background={categoryConfig.tagColor}>\n <Text $renderAs=\"ub3\" $color=\"BLACK_1\">\n Learning plan was modified — progress updated accordingly.\n </Text>\n </Styled.TagContainer>\n </>\n )}\n </FlexView>\n {isExpended && totalChapters > 0 && (\n <Styled.ChaptersContainer\n $gapX={1}\n $flexDirection=\"column\"\n $flexGapX={1.25}\n $borderColor=\"WHITE_5\"\n >\n <GoalsCardChapters chapters={visibleChapters} />\n {hasRemainingChapters && (\n <>\n {!showAllChapters && (\n <FlexView $gutterX={4.5}>\n <TextButton\n label={`+${remainingChapters} chapters`}\n size=\"regular\"\n color=\"BLACK_1\"\n onClick={handleToggleChapters}\n />\n </FlexView>\n )}\n {showAllChapters && (\n <>\n <GoalsCardChapters chapters={hiddenChapters} />\n <FlexView $gutterX={4.5}>\n <TextButton\n label=\"Show less\"\n size=\"regular\"\n color=\"BLACK_1\"\n onClick={handleToggleChapters}\n />\n </FlexView>\n </>\n )}\n </>\n )}\n </Styled.ChaptersContainer>\n )}\n </FlexView>\n );\n};\n\nexport default memo(GoalsCard);\n"],"names":["GoalsCard","category","milestone","isExpended","showAllChapters","setShowAllChapters","useState","milestoneName","userChapters","progressStat","prevProgressStat","completed","total","prevCompleted","prevTotal","currentProgress","calculateProgress","previousProgress","progressDifference","showIndicator","showTag","isCompleted","roundedProgress","roundedDifference","totalChapters","visibleChapters","remainingChapters","hiddenChapters","hasRemainingChapters","categoryConfig","useMemo","GOAL_CATEGORY_CONFIG","icon","handleToggleChapters","useCallback","prev","FlexView","jsxs","jsx","Image","Fragment","Text","Separator","Styled.ProgressBarContainer","LinearProgressBar","Styled.TagContainer","Styled.ChaptersContainer","GoalsCardChapters","TextButton","GoalsCard$1","memo"],"mappings":"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"}
|