@cuemath/leap 3.3.21 → 3.3.22

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 (44) hide show
  1. package/dist/features/milestone/create/comps/add-custom-chapter/add-custom-chapter.js +42 -40
  2. package/dist/features/milestone/create/comps/add-custom-chapter/add-custom-chapter.js.map +1 -1
  3. package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js +70 -64
  4. package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js.map +1 -1
  5. package/dist/features/milestone/create/comps/add-custom-chapter/hooks/use-catalog-helpers.js +54 -29
  6. package/dist/features/milestone/create/comps/add-custom-chapter/hooks/use-catalog-helpers.js.map +1 -1
  7. package/dist/features/milestone/create/comps/chapters-selection-step/chapter-selection-step-v2/chapter-category/chapter-category-container.js +48 -28
  8. package/dist/features/milestone/create/comps/chapters-selection-step/chapter-selection-step-v2/chapter-category/chapter-category-container.js.map +1 -1
  9. package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js +79 -76
  10. package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js.map +1 -1
  11. package/dist/features/milestone/create/comps/chapters-selection-step/utils.js +97 -94
  12. package/dist/features/milestone/create/comps/chapters-selection-step/utils.js.map +1 -1
  13. package/dist/features/milestone/create/comps/class-details-step/class-details-step.js +160 -143
  14. package/dist/features/milestone/create/comps/class-details-step/class-details-step.js.map +1 -1
  15. package/dist/features/milestone/create/comps/class-details-step/class-details-utils.js +22 -12
  16. package/dist/features/milestone/create/comps/class-details-step/class-details-utils.js.map +1 -1
  17. package/dist/features/milestone/create/comps/test-type-step/test-type-step.js +64 -59
  18. package/dist/features/milestone/create/comps/test-type-step/test-type-step.js.map +1 -1
  19. package/dist/features/milestone/create/milestone-create-container.js +17 -15
  20. package/dist/features/milestone/create/milestone-create-container.js.map +1 -1
  21. package/dist/features/milestone/create/milestone-create-helpers.js +170 -153
  22. package/dist/features/milestone/create/milestone-create-helpers.js.map +1 -1
  23. package/dist/features/milestone/create/milestone-create-styled.js +1 -1
  24. package/dist/features/milestone/create/milestone-create-styled.js.map +1 -1
  25. package/dist/features/milestone/create/milestone-create.js +19 -17
  26. package/dist/features/milestone/create/milestone-create.js.map +1 -1
  27. package/dist/index.d.ts +1 -0
  28. package/dist/node_modules/query-string/base.js +1 -1
  29. package/dist/node_modules/query-string/node_modules/decode-uri-component/index.js.map +1 -0
  30. package/dist/node_modules/uuid/dist/esm-browser/regex.js +5 -0
  31. package/dist/node_modules/uuid/dist/esm-browser/regex.js.map +1 -0
  32. package/dist/node_modules/uuid/dist/esm-browser/rng.js +2 -3
  33. package/dist/node_modules/uuid/dist/esm-browser/rng.js.map +1 -1
  34. package/dist/node_modules/uuid/dist/esm-browser/stringify.js +10 -6
  35. package/dist/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -1
  36. package/dist/node_modules/uuid/dist/esm-browser/v4.js +9 -12
  37. package/dist/node_modules/uuid/dist/esm-browser/v4.js.map +1 -1
  38. package/dist/node_modules/uuid/dist/esm-browser/validate.js +8 -0
  39. package/dist/node_modules/uuid/dist/esm-browser/validate.js.map +1 -0
  40. package/package.json +1 -1
  41. package/dist/node_modules/decode-uri-component/index.js.map +0 -1
  42. package/dist/node_modules/uuid/dist/esm-browser/native.js +0 -7
  43. package/dist/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
  44. /package/dist/node_modules/{decode-uri-component → query-string/node_modules/decode-uri-component}/index.js +0 -0
@@ -1,54 +1,56 @@
1
- import { GOAL_CATEGORY as M } from "../../../constants.js";
2
- import { checkEnrollmentAvailable as h, getTestTypeBasedCategory as R } from "../test-type-step/test-type-utils.js";
3
- const T = (e, t, o) => {
4
- const a = e.some(
1
+ import { GOAL_CATEGORY as N } from "../../../constants.js";
2
+ import { checkEnrollmentAvailable as M, getTestTypeBasedCategory as P } from "../test-type-step/test-type-utils.js";
3
+ const R = (e, r, o) => {
4
+ const t = e.some(
5
5
  (l) => l === o
6
- ), n = t.length > 0 ? t.some(
6
+ ), a = r.length > 0 ? r.some(
7
7
  (l) => l === o
8
8
  ) : !0;
9
- return !a && n;
10
- }, N = ({
9
+ return !t && a;
10
+ }, H = ({
11
11
  goalCode: e,
12
- config: t,
12
+ config: r,
13
13
  courseStream: o,
14
- enrollmentType: a
14
+ enrollmentType: t,
15
+ isTeacherTrainingAccount: a
15
16
  }) => {
16
- const { goal_curriculum_map: n } = t;
17
- return n.find((r) => r.goal_code !== e || r.course_stream !== o ? !1 : h(r, a));
18
- }, B = ({
17
+ const { goal_curriculum_map: l } = r;
18
+ return l.find((s) => s.goal_code !== e || s.course_stream !== o || !s.is_live ? !1 : a || M(s, t));
19
+ }, O = ({
19
20
  goalCurriculumStandard: e,
20
- referenceStandard: t
21
- }) => e ? e === t : !0, j = ({
21
+ referenceStandard: r
22
+ }) => e ? e === r : !0, U = ({
22
23
  config: e,
23
- testType: t,
24
+ testType: r,
24
25
  courseStream: o,
25
- enrollmentType: a,
26
- grade: n,
26
+ enrollmentType: t,
27
+ grade: a,
27
28
  board: l,
28
- region: r,
29
- flow: _
29
+ region: n,
30
+ flow: s,
31
+ isTeacherTrainingAccount: f
30
32
  }) => {
31
- const { goal_curriculum_map: u } = e, c = R(t);
32
- return u.filter((C) => {
33
+ const { goal_curriculum_map: i } = e, u = P(r);
34
+ return i.filter((v) => {
33
35
  const {
34
36
  available_grades: d,
35
- available_countries: g,
36
- goal_curriculum_standard: b,
37
- goal_category: f,
38
- blocked_enrollment_types: v,
39
- available_enrollment_types: s,
40
- is_live: i
41
- } = C, A = _ === "CREATE" ? i : !0, p = d.some((m) => m === n), E = g.some((m) => m === r), k = B({
42
- goalCurriculumStandard: b,
37
+ available_countries: m,
38
+ goal_curriculum_standard: p,
39
+ goal_category: S,
40
+ blocked_enrollment_types: G,
41
+ available_enrollment_types: c,
42
+ is_live: g
43
+ } = v, k = s === "CREATE" ? g : !0, y = d.some((T) => T === a), _ = m.some((T) => T === n), A = O({
44
+ goalCurriculumStandard: p,
43
45
  referenceStandard: l
44
- }), S = f === c, y = C.course_stream === o, G = T(
45
- v,
46
- s,
47
- a
48
- );
49
- return c === M.SCHOOL_SUCCESS ? A && G && y && p && k && S : A && G && y && p && S && (g.length > 0 ? E : !0);
46
+ }), E = S === u, h = v.course_stream === o, C = R(
47
+ G,
48
+ c,
49
+ t
50
+ ), b = u === N.SCHOOL_SUCCESS, B = k && E && h && y;
51
+ return f ? B && (b ? A : m.length > 0 ? _ : !0) : b ? B && C && A : B && C && (m.length > 0 ? _ : !0);
50
52
  });
51
- }, O = (e, t, o) => {
53
+ }, I = (e, r, o) => {
52
54
  if (!e)
53
55
  return {
54
56
  customChaptersList: [],
@@ -56,84 +58,85 @@ const T = (e, t, o) => {
56
58
  };
57
59
  if (!o)
58
60
  return {
59
- customChaptersList: e.filter((r) => r.search_and_added),
60
- recommendedChaptersList: e.filter((r) => !r.search_and_added)
61
+ customChaptersList: e.filter((n) => n.search_and_added),
62
+ recommendedChaptersList: e.filter((n) => !n.search_and_added)
61
63
  };
62
- const { program_id: a } = t || {}, n = e == null ? void 0 : e.filter(
63
- (r) => r.program_id !== a
64
+ const { program_id: t } = r || {}, a = e == null ? void 0 : e.filter(
65
+ (n) => n.program_id !== t
64
66
  ), l = e == null ? void 0 : e.filter(
65
- (r) => r.program_id === a
67
+ (n) => n.program_id === t
66
68
  );
67
69
  return {
68
- customChaptersList: n,
70
+ customChaptersList: a,
69
71
  recommendedChaptersList: l
70
72
  };
71
- }, x = (e, {
72
- grade: t,
73
+ }, W = (e, {
74
+ grade: r,
73
75
  board: o,
74
- major: a,
75
- majorsPresent: n,
76
+ major: t,
77
+ majorsPresent: a,
76
78
  countryCode: l,
77
- selectedCategory: r,
78
- courseStream: _,
79
- enrollmentType: u
79
+ selectedCategory: n,
80
+ courseStream: s,
81
+ enrollmentType: f,
82
+ isTeacherTrainingAccount: i
80
83
  }) => {
81
- const { goal_curriculum_map: c } = e;
82
- return c.find((d) => {
84
+ const { goal_curriculum_map: u } = e;
85
+ return u.find((d) => {
83
86
  const {
84
- goal_curriculum_standard: g,
85
- available_grades: b,
86
- program_code: f,
87
- available_countries: v,
88
- goal_category: s,
89
- available_enrollment_types: i,
90
- blocked_enrollment_types: A
87
+ goal_curriculum_standard: m,
88
+ available_grades: p,
89
+ program_code: S,
90
+ available_countries: G,
91
+ goal_category: c,
92
+ available_enrollment_types: g,
93
+ blocked_enrollment_types: k
91
94
  } = d;
92
- if (s !== r) return;
93
- const p = T(
94
- A,
95
- i,
96
- u
97
- ), E = b.some((m) => m === t), k = v.length > 0 ? v.some((m) => m === l) : !0, S = B({
98
- goalCurriculumStandard: g,
95
+ if (c !== n) return;
96
+ const y = R(
97
+ k,
98
+ g,
99
+ f
100
+ ), _ = p.some((b) => b === r), A = G.length > 0 ? G.some((b) => b === l) : !0, E = O({
101
+ goalCurriculumStandard: m,
99
102
  referenceStandard: o
100
- }), y = a === f, G = d.course_stream === _;
101
- return n ? a ? p && G && k && E && S && y : void 0 : p && G && k && E && S;
103
+ }), h = t === S, C = d.course_stream === s;
104
+ return i ? C && _ && E && (a && t ? h : !0) : a ? t ? y && C && A && _ && E && h : void 0 : y && C && A && _ && E;
102
105
  });
103
- }, D = (e, t, o, a, n, l) => {
104
- if (!n && !o) return {};
105
- const { country_code_to_name_map: r, goal_curriculum_map: _ } = t;
106
- let u = {};
107
- return _.filter((c) => c.course_stream !== e ? !1 : h(c, a)).forEach((c) => {
106
+ }, Y = (e, r, o, t, a, l, n) => {
107
+ if (!a && !o) return {};
108
+ const { country_code_to_name_map: s, goal_curriculum_map: f } = r;
109
+ let i = {};
110
+ return f.filter((u) => u.course_stream !== e || !u.is_live ? !1 : n || M(u, t)).forEach((u) => {
108
111
  const {
109
- available_grades: C,
112
+ available_grades: v,
110
113
  available_countries: d,
111
- blocked_countries: g,
112
- goal_category: b
113
- } = c, f = C.some((s) => s === n);
114
- !g.some(
115
- (s) => s === l
116
- ) && f && b === o && (d.length > 0 ? d.reduce((s, i) => (s[i] || (s[i] = r[i] ?? ""), s), u) : u = {
117
- ...r,
118
- ...u
114
+ blocked_countries: m,
115
+ goal_category: p
116
+ } = u, S = v.some((c) => c === a);
117
+ !m.some(
118
+ (c) => c === l
119
+ ) && S && p === o && (d.length > 0 ? d.reduce((c, g) => (c[g] || (c[g] = s[g] ?? ""), c), i) : i = {
120
+ ...s,
121
+ ...i
119
122
  });
120
- }), u;
121
- }, H = (e, t) => {
122
- const { recommendedChaptersList: o, customChaptersList: a } = O(
123
+ }), i;
124
+ }, q = (e, r) => {
125
+ const { recommendedChaptersList: o, customChaptersList: t } = I(
123
126
  e,
124
- t,
127
+ r,
125
128
  !0
126
129
  );
127
- return a.length > 0 ? !0 : o.some((n) => !n.added);
130
+ return t.length > 0 ? !0 : o.some((a) => !a.added);
128
131
  };
129
132
  export {
130
- H as computeChangeDetection,
131
- j as computeChapterGoalCategoryOnGradeNBoard,
132
- O as computeRecommendedNCustomChapters,
133
- D as getCountriesWhereCurrentGradeNCategoryIsAvailable,
134
- x as getGradeBoardAndMajorBasedProgramCode,
135
- B as getIfGoalCurriculumStandardIsAccessible,
136
- N as getSelectedGoalCategoryData,
137
- T as getStudentEnrollmentSupported
133
+ q as computeChangeDetection,
134
+ U as computeChapterGoalCategoryOnGradeNBoard,
135
+ I as computeRecommendedNCustomChapters,
136
+ Y as getCountriesWhereCurrentGradeNCategoryIsAvailable,
137
+ W as getGradeBoardAndMajorBasedProgramCode,
138
+ O as getIfGoalCurriculumStandardIsAccessible,
139
+ H as getSelectedGoalCategoryData,
140
+ R as getStudentEnrollmentSupported
138
141
  };
139
142
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../../src/features/milestone/create/comps/chapters-selection-step/utils.ts"],"sourcesContent":["import type { TTestType } from '../../../types';\nimport type {\n IGoalCurriculumMap,\n IMilestoneConfig,\n TCourseStream,\n TEnrollmentTypes,\n TGoalCategory,\n TMilestoneFormFlow,\n} from '../../milestone-create-types';\nimport type { IChapter } from '../chapter-item/chapter-item-types';\nimport type { TGradeBasedBoardInfo } from './types';\n\nimport { GOAL_CATEGORY } from '../../../constants';\nimport {\n getTestTypeBasedCategory,\n checkEnrollmentAvailable,\n} from '../test-type-step/test-type-utils';\n\nconst getStudentEnrollmentSupported = (\n blockedEnrollmentTypes: TEnrollmentTypes[],\n availableEnrollmentTypes: TEnrollmentTypes[],\n enrollmentType: TEnrollmentTypes,\n) => {\n const isBlocked = blockedEnrollmentTypes.some(\n blockedEnrollment => blockedEnrollment === enrollmentType,\n );\n\n const isAvailable =\n availableEnrollmentTypes.length > 0\n ? availableEnrollmentTypes.some(\n availableEnrollmentType => availableEnrollmentType === enrollmentType,\n )\n : true;\n\n return !isBlocked && isAvailable;\n};\n\ninterface IgetSelectedGoalCategoryData {\n goalCode: string;\n config: IMilestoneConfig;\n courseStream: TCourseStream;\n enrollmentType: TEnrollmentTypes;\n}\n\nconst getSelectedGoalCategoryData = ({\n goalCode,\n config,\n courseStream,\n enrollmentType,\n}: IgetSelectedGoalCategoryData) => {\n const { goal_curriculum_map: goalCurriculumMap } = config;\n\n const selectedGoalCategoryInfo = goalCurriculumMap.find(goalInfo => {\n if (goalInfo.goal_code !== goalCode) return false;\n\n if (goalInfo.course_stream !== courseStream) return false;\n\n return checkEnrollmentAvailable(goalInfo, enrollmentType);\n });\n\n return selectedGoalCategoryInfo;\n};\n\nconst getIfGoalCurriculumStandardIsAccessible = ({\n goalCurriculumStandard,\n referenceStandard,\n}: {\n goalCurriculumStandard?: string;\n referenceStandard?: string;\n}) => {\n if (!goalCurriculumStandard) return true;\n\n return goalCurriculumStandard === referenceStandard;\n};\n\ninterface IcomputeChapterGoalCategoryOnGradeNBoard {\n config: IMilestoneConfig;\n testType: TTestType;\n courseStream: TCourseStream;\n enrollmentType: TEnrollmentTypes;\n grade?: string;\n board?: string;\n region?: string;\n flow?: TMilestoneFormFlow | null;\n}\n\nconst computeChapterGoalCategoryOnGradeNBoard = ({\n config,\n testType,\n courseStream,\n enrollmentType,\n grade,\n board,\n region,\n flow,\n}: IcomputeChapterGoalCategoryOnGradeNBoard) => {\n const { goal_curriculum_map: goalCurriculumMap } = config;\n const selectedGoalCategory = getTestTypeBasedCategory(testType);\n\n return goalCurriculumMap.filter(goalInfo => {\n const {\n available_grades: availableGrades,\n available_countries: availableCountries,\n goal_curriculum_standard: goalCurriculumStandard,\n goal_category: goalCategory,\n blocked_enrollment_types: blockedEnrollmentTypes,\n available_enrollment_types: availableEnrollmentTypes,\n is_live: isLive,\n } = goalInfo;\n const canIncludeGoal = flow === 'CREATE' ? isLive : true;\n const gradePresent = availableGrades.some(gradeInfo => gradeInfo === grade);\n const regionPresent = availableCountries.some(country => country === region);\n const boardPreset = getIfGoalCurriculumStandardIsAccessible({\n goalCurriculumStandard,\n referenceStandard: board,\n });\n const selectedCategoryIsPresent = goalCategory === selectedGoalCategory;\n const isSameCourse = goalInfo.course_stream === courseStream;\n const isStudentEnrollmentTypeSupported = getStudentEnrollmentSupported(\n blockedEnrollmentTypes,\n availableEnrollmentTypes,\n enrollmentType,\n );\n\n if (selectedGoalCategory === GOAL_CATEGORY.SCHOOL_SUCCESS) {\n return (\n canIncludeGoal &&\n isStudentEnrollmentTypeSupported &&\n isSameCourse &&\n gradePresent &&\n boardPreset &&\n selectedCategoryIsPresent\n );\n }\n\n return (\n canIncludeGoal &&\n isStudentEnrollmentTypeSupported &&\n isSameCourse &&\n gradePresent &&\n selectedCategoryIsPresent &&\n (availableCountries.length > 0 ? regionPresent : true)\n );\n });\n};\n\nconst computeRecommendedNCustomChapters = (\n primaryChaptersList?: IChapter[],\n primaryGoalCategory?: IGoalCurriculumMap,\n isGoalCreation?: boolean,\n) => {\n if (!primaryChaptersList) {\n return {\n customChaptersList: [],\n recommendedChaptersList: [],\n };\n }\n\n //* To compensate old milestone flow during edit stage.\n if (!isGoalCreation) {\n return {\n customChaptersList: primaryChaptersList.filter(chapter => chapter.search_and_added),\n recommendedChaptersList: primaryChaptersList.filter(chapter => !chapter.search_and_added),\n };\n }\n\n const { program_id: programId } = primaryGoalCategory || {};\n\n const customChaptersList = primaryChaptersList?.filter(\n chapter => chapter.program_id !== programId,\n );\n const recommendedChaptersList = primaryChaptersList?.filter(\n chapter => chapter.program_id === programId,\n );\n\n return {\n customChaptersList,\n recommendedChaptersList,\n };\n};\n\ninterface IGetGradeBoardAndMajorBasedProgramCode {\n (\n config: IMilestoneConfig,\n props: {\n grade: string;\n board: string;\n major: string;\n countryCode: string;\n majorsPresent: boolean;\n selectedCategory: TGoalCategory;\n courseStream: TCourseStream;\n enrollmentType: TEnrollmentTypes;\n },\n ): IGoalCurriculumMap | undefined;\n}\n\nconst getGradeBoardAndMajorBasedProgramCode: IGetGradeBoardAndMajorBasedProgramCode = (\n config,\n {\n grade,\n board,\n major,\n majorsPresent,\n countryCode,\n selectedCategory,\n courseStream,\n enrollmentType,\n },\n) => {\n const { goal_curriculum_map: goalCurriculumMap } = config;\n\n const programInfo = goalCurriculumMap.find(goalData => {\n const {\n goal_curriculum_standard: goalCurriculumStandard,\n available_grades: availableGrades,\n program_code: programCode,\n available_countries: availableCountries,\n goal_category: goalCategory,\n available_enrollment_types: availableEnrollmentTypes,\n blocked_enrollment_types: blockedEnrollmentTypes,\n } = goalData;\n\n if (goalCategory !== selectedCategory) return undefined;\n\n const isStudentEnrollmentTypeSupported = getStudentEnrollmentSupported(\n blockedEnrollmentTypes,\n availableEnrollmentTypes,\n enrollmentType,\n );\n\n const isGradeAvailable = availableGrades.some(availableGrade => availableGrade === grade);\n const isRegionAvailable =\n availableCountries.length > 0\n ? availableCountries.some(country => country === countryCode)\n : true;\n const isBoardAvailable = getIfGoalCurriculumStandardIsAccessible({\n goalCurriculumStandard,\n referenceStandard: board,\n });\n const isMajorAvailable = major === programCode;\n const isSameCourse = goalData.course_stream === courseStream;\n\n if (majorsPresent) {\n if (major)\n return (\n isStudentEnrollmentTypeSupported &&\n isSameCourse &&\n isRegionAvailable &&\n isGradeAvailable &&\n isBoardAvailable &&\n isMajorAvailable\n );\n\n return undefined;\n }\n\n return (\n isStudentEnrollmentTypeSupported &&\n isSameCourse &&\n isRegionAvailable &&\n isGradeAvailable &&\n isBoardAvailable\n );\n });\n\n return programInfo;\n};\n\nconst getProgramCodeBasedOnGradeAndBoard = (\n gradeBasedBoardInfo: TGradeBasedBoardInfo,\n grade: string,\n board: string,\n course?: string,\n) => {\n const { gradeSyllabusMap } = gradeBasedBoardInfo[board] || {};\n\n if (gradeSyllabusMap) {\n const programInfo = gradeSyllabusMap[grade];\n\n if (programInfo) {\n if (programInfo.majors) {\n return course;\n }\n\n return programInfo.program_code;\n }\n }\n\n return undefined;\n};\n\nconst getCountriesWhereCurrentGradeNCategoryIsAvailable = (\n courseStream: TCourseStream,\n config: IMilestoneConfig,\n selectedGoalCategory: string | undefined,\n enrollmentType: TEnrollmentTypes,\n grade?: string,\n currentCountryCode?: string,\n) => {\n if (!grade && !selectedGoalCategory) return {};\n\n const { country_code_to_name_map: countryCodeToNameMap, goal_curriculum_map: goalCurriculumMap } =\n config;\n let countries: Record<string, string> = {};\n\n goalCurriculumMap\n .filter(goalInfo => {\n if (goalInfo.course_stream !== courseStream) return false;\n\n return checkEnrollmentAvailable(goalInfo, enrollmentType);\n })\n .forEach(goalData => {\n const {\n available_grades: availableGrades,\n available_countries: availableCountries,\n blocked_countries: blockedCountries,\n goal_category: goalCategory,\n } = goalData;\n const isGradeAvailable = availableGrades.some(availableGrade => availableGrade === grade);\n const isStudentRegionBlocked = blockedCountries.some(\n country => country === currentCountryCode,\n );\n\n if (!isStudentRegionBlocked && isGradeAvailable && goalCategory === selectedGoalCategory) {\n if (availableCountries.length > 0) {\n availableCountries.reduce((acc, countryInfo) => {\n if (!acc[countryInfo]) {\n acc[countryInfo] = countryCodeToNameMap[countryInfo] ?? '';\n }\n\n return acc;\n }, countries);\n } else {\n countries = {\n ...countryCodeToNameMap,\n ...countries,\n };\n }\n }\n });\n\n return countries;\n};\n\nconst computeChangeDetection = (\n primaryProgramList?: IChapter[],\n primaryGoalCategory?: IGoalCurriculumMap,\n) => {\n const { recommendedChaptersList, customChaptersList } = computeRecommendedNCustomChapters(\n primaryProgramList,\n primaryGoalCategory,\n true,\n );\n\n //* This will compensate if any new chapter was added.\n if (customChaptersList.length > 0) return true;\n\n //* This will compensate if any chapter was deselected.\n return recommendedChaptersList.some(chapter => !chapter.added);\n};\n\nexport {\n getSelectedGoalCategoryData,\n computeChapterGoalCategoryOnGradeNBoard,\n computeRecommendedNCustomChapters,\n getGradeBoardAndMajorBasedProgramCode,\n getProgramCodeBasedOnGradeAndBoard,\n getCountriesWhereCurrentGradeNCategoryIsAvailable,\n computeChangeDetection,\n getIfGoalCurriculumStandardIsAccessible,\n getStudentEnrollmentSupported,\n};\n"],"names":["getStudentEnrollmentSupported","blockedEnrollmentTypes","availableEnrollmentTypes","enrollmentType","isBlocked","blockedEnrollment","isAvailable","availableEnrollmentType","getSelectedGoalCategoryData","goalCode","config","courseStream","goalCurriculumMap","goalInfo","checkEnrollmentAvailable","getIfGoalCurriculumStandardIsAccessible","goalCurriculumStandard","referenceStandard","computeChapterGoalCategoryOnGradeNBoard","testType","grade","board","region","flow","selectedGoalCategory","getTestTypeBasedCategory","availableGrades","availableCountries","goalCategory","isLive","canIncludeGoal","gradePresent","gradeInfo","regionPresent","country","boardPreset","selectedCategoryIsPresent","isSameCourse","isStudentEnrollmentTypeSupported","GOAL_CATEGORY","computeRecommendedNCustomChapters","primaryChaptersList","primaryGoalCategory","isGoalCreation","chapter","programId","customChaptersList","recommendedChaptersList","getGradeBoardAndMajorBasedProgramCode","major","majorsPresent","countryCode","selectedCategory","goalData","programCode","isGradeAvailable","availableGrade","isRegionAvailable","isBoardAvailable","isMajorAvailable","getCountriesWhereCurrentGradeNCategoryIsAvailable","currentCountryCode","countryCodeToNameMap","countries","blockedCountries","acc","countryInfo","computeChangeDetection","primaryProgramList"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../../src/features/milestone/create/comps/chapters-selection-step/utils.ts"],"sourcesContent":["import type { TTestType } from '../../../types';\nimport type {\n IGoalCurriculumMap,\n IMilestoneConfig,\n TCourseStream,\n TEnrollmentTypes,\n TGoalCategory,\n TMilestoneFormFlow,\n} from '../../milestone-create-types';\nimport type { IChapter } from '../chapter-item/chapter-item-types';\nimport type { TGradeBasedBoardInfo } from './types';\n\nimport { GOAL_CATEGORY } from '../../../constants';\nimport {\n getTestTypeBasedCategory,\n checkEnrollmentAvailable,\n} from '../test-type-step/test-type-utils';\n\nconst getStudentEnrollmentSupported = (\n blockedEnrollmentTypes: TEnrollmentTypes[],\n availableEnrollmentTypes: TEnrollmentTypes[],\n enrollmentType: TEnrollmentTypes,\n) => {\n const isBlocked = blockedEnrollmentTypes.some(\n blockedEnrollment => blockedEnrollment === enrollmentType,\n );\n\n const isAvailable =\n availableEnrollmentTypes.length > 0\n ? availableEnrollmentTypes.some(\n availableEnrollmentType => availableEnrollmentType === enrollmentType,\n )\n : true;\n\n return !isBlocked && isAvailable;\n};\n\ninterface IgetSelectedGoalCategoryData {\n goalCode: string;\n config: IMilestoneConfig;\n courseStream: TCourseStream;\n enrollmentType: TEnrollmentTypes;\n isTeacherTrainingAccount?: boolean;\n}\n\nconst getSelectedGoalCategoryData = ({\n goalCode,\n config,\n courseStream,\n enrollmentType,\n isTeacherTrainingAccount,\n}: IgetSelectedGoalCategoryData) => {\n const { goal_curriculum_map: goalCurriculumMap } = config;\n\n const selectedGoalCategoryInfo = goalCurriculumMap.find(goalInfo => {\n if (goalInfo.goal_code !== goalCode) return false;\n\n if (goalInfo.course_stream !== courseStream || !goalInfo.is_live) return false;\n\n return isTeacherTrainingAccount || checkEnrollmentAvailable(goalInfo, enrollmentType);\n });\n\n return selectedGoalCategoryInfo;\n};\n\nconst getIfGoalCurriculumStandardIsAccessible = ({\n goalCurriculumStandard,\n referenceStandard,\n}: {\n goalCurriculumStandard?: string;\n referenceStandard?: string;\n}) => {\n if (!goalCurriculumStandard) return true;\n\n return goalCurriculumStandard === referenceStandard;\n};\n\ninterface IcomputeChapterGoalCategoryOnGradeNBoard {\n config: IMilestoneConfig;\n testType: TTestType;\n courseStream: TCourseStream;\n enrollmentType: TEnrollmentTypes;\n grade?: string;\n board?: string;\n region?: string;\n flow?: TMilestoneFormFlow | null;\n isTeacherTrainingAccount?: boolean;\n}\n\nconst computeChapterGoalCategoryOnGradeNBoard = ({\n config,\n testType,\n courseStream,\n enrollmentType,\n grade,\n board,\n region,\n flow,\n isTeacherTrainingAccount,\n}: IcomputeChapterGoalCategoryOnGradeNBoard) => {\n const { goal_curriculum_map: goalCurriculumMap } = config;\n const selectedGoalCategory = getTestTypeBasedCategory(testType);\n\n return goalCurriculumMap.filter(goalInfo => {\n const {\n available_grades: availableGrades,\n available_countries: availableCountries,\n goal_curriculum_standard: goalCurriculumStandard,\n goal_category: goalCategory,\n blocked_enrollment_types: blockedEnrollmentTypes,\n available_enrollment_types: availableEnrollmentTypes,\n is_live: isLive,\n } = goalInfo;\n const canIncludeGoal = flow === 'CREATE' ? isLive : true;\n const gradePresent = availableGrades.some(gradeInfo => gradeInfo === grade);\n const regionPresent = availableCountries.some(country => country === region);\n const boardPresent = getIfGoalCurriculumStandardIsAccessible({\n goalCurriculumStandard,\n referenceStandard: board,\n });\n const selectedCategoryIsPresent = goalCategory === selectedGoalCategory;\n const isSameCourse = goalInfo.course_stream === courseStream;\n const isStudentEnrollmentTypeSupported = getStudentEnrollmentSupported(\n blockedEnrollmentTypes,\n availableEnrollmentTypes,\n enrollmentType,\n );\n const isSchoolSuccessCategory = selectedGoalCategory === GOAL_CATEGORY.SCHOOL_SUCCESS;\n\n const isBasicEligibilityMet =\n canIncludeGoal && selectedCategoryIsPresent && isSameCourse && gradePresent;\n\n if (isTeacherTrainingAccount)\n return (\n isBasicEligibilityMet &&\n (isSchoolSuccessCategory\n ? boardPresent\n : availableCountries.length > 0\n ? regionPresent\n : true)\n );\n\n if (isSchoolSuccessCategory) {\n return isBasicEligibilityMet && isStudentEnrollmentTypeSupported && boardPresent;\n }\n\n return (\n isBasicEligibilityMet &&\n isStudentEnrollmentTypeSupported &&\n (availableCountries.length > 0 ? regionPresent : true)\n );\n });\n};\n\nconst computeRecommendedNCustomChapters = (\n primaryChaptersList?: IChapter[],\n primaryGoalCategory?: IGoalCurriculumMap,\n isGoalCreation?: boolean,\n) => {\n if (!primaryChaptersList) {\n return {\n customChaptersList: [],\n recommendedChaptersList: [],\n };\n }\n\n //* To compensate old milestone flow during edit stage.\n if (!isGoalCreation) {\n return {\n customChaptersList: primaryChaptersList.filter(chapter => chapter.search_and_added),\n recommendedChaptersList: primaryChaptersList.filter(chapter => !chapter.search_and_added),\n };\n }\n\n const { program_id: programId } = primaryGoalCategory || {};\n\n const customChaptersList = primaryChaptersList?.filter(\n chapter => chapter.program_id !== programId,\n );\n const recommendedChaptersList = primaryChaptersList?.filter(\n chapter => chapter.program_id === programId,\n );\n\n return {\n customChaptersList,\n recommendedChaptersList,\n };\n};\n\ninterface IGetGradeBoardAndMajorBasedProgramCode {\n (\n config: IMilestoneConfig,\n props: {\n grade: string;\n board: string;\n major: string;\n countryCode: string;\n majorsPresent: boolean;\n selectedCategory: TGoalCategory;\n courseStream: TCourseStream;\n enrollmentType: TEnrollmentTypes;\n isTeacherTrainingAccount?: boolean;\n },\n ): IGoalCurriculumMap | undefined;\n}\n\nconst getGradeBoardAndMajorBasedProgramCode: IGetGradeBoardAndMajorBasedProgramCode = (\n config,\n {\n grade,\n board,\n major,\n majorsPresent,\n countryCode,\n selectedCategory,\n courseStream,\n enrollmentType,\n isTeacherTrainingAccount,\n },\n) => {\n const { goal_curriculum_map: goalCurriculumMap } = config;\n\n const programInfo = goalCurriculumMap.find(goalData => {\n const {\n goal_curriculum_standard: goalCurriculumStandard,\n available_grades: availableGrades,\n program_code: programCode,\n available_countries: availableCountries,\n goal_category: goalCategory,\n available_enrollment_types: availableEnrollmentTypes,\n blocked_enrollment_types: blockedEnrollmentTypes,\n } = goalData;\n\n if (goalCategory !== selectedCategory) return undefined;\n\n const isStudentEnrollmentTypeSupported = getStudentEnrollmentSupported(\n blockedEnrollmentTypes,\n availableEnrollmentTypes,\n enrollmentType,\n );\n\n const isGradeAvailable = availableGrades.some(availableGrade => availableGrade === grade);\n const isRegionAvailable =\n availableCountries.length > 0\n ? availableCountries.some(country => country === countryCode)\n : true;\n const isBoardAvailable = getIfGoalCurriculumStandardIsAccessible({\n goalCurriculumStandard,\n referenceStandard: board,\n });\n const isMajorAvailable = major === programCode;\n const isSameCourse = goalData.course_stream === courseStream;\n\n if (isTeacherTrainingAccount)\n return (\n isSameCourse &&\n isGradeAvailable &&\n isBoardAvailable &&\n (majorsPresent && major ? isMajorAvailable : true)\n );\n\n if (majorsPresent) {\n if (major)\n return (\n isStudentEnrollmentTypeSupported &&\n isSameCourse &&\n isRegionAvailable &&\n isGradeAvailable &&\n isBoardAvailable &&\n isMajorAvailable\n );\n\n return undefined;\n }\n\n return (\n isStudentEnrollmentTypeSupported &&\n isSameCourse &&\n isRegionAvailable &&\n isGradeAvailable &&\n isBoardAvailable\n );\n });\n\n return programInfo;\n};\n\nconst getProgramCodeBasedOnGradeAndBoard = (\n gradeBasedBoardInfo: TGradeBasedBoardInfo,\n grade: string,\n board: string,\n course?: string,\n) => {\n const { gradeSyllabusMap } = gradeBasedBoardInfo[board] || {};\n\n if (gradeSyllabusMap) {\n const programInfo = gradeSyllabusMap[grade];\n\n if (programInfo) {\n if (programInfo.majors) {\n return course;\n }\n\n return programInfo.program_code;\n }\n }\n\n return undefined;\n};\n\nconst getCountriesWhereCurrentGradeNCategoryIsAvailable = (\n courseStream: TCourseStream,\n config: IMilestoneConfig,\n selectedGoalCategory: string | undefined,\n enrollmentType: TEnrollmentTypes,\n grade?: string,\n currentCountryCode?: string,\n isTeacherTrainingAccount?: boolean,\n) => {\n if (!grade && !selectedGoalCategory) return {};\n\n const { country_code_to_name_map: countryCodeToNameMap, goal_curriculum_map: goalCurriculumMap } =\n config;\n let countries: Record<string, string> = {};\n\n goalCurriculumMap\n .filter(goalInfo => {\n if (goalInfo.course_stream !== courseStream || !goalInfo.is_live) return false;\n\n return isTeacherTrainingAccount || checkEnrollmentAvailable(goalInfo, enrollmentType);\n })\n .forEach(goalData => {\n const {\n available_grades: availableGrades,\n available_countries: availableCountries,\n blocked_countries: blockedCountries,\n goal_category: goalCategory,\n } = goalData;\n const isGradeAvailable = availableGrades.some(availableGrade => availableGrade === grade);\n const isStudentRegionBlocked = blockedCountries.some(\n country => country === currentCountryCode,\n );\n\n if (!isStudentRegionBlocked && isGradeAvailable && goalCategory === selectedGoalCategory) {\n if (availableCountries.length > 0) {\n availableCountries.reduce((acc, countryInfo) => {\n if (!acc[countryInfo]) {\n acc[countryInfo] = countryCodeToNameMap[countryInfo] ?? '';\n }\n\n return acc;\n }, countries);\n } else {\n countries = {\n ...countryCodeToNameMap,\n ...countries,\n };\n }\n }\n });\n\n return countries;\n};\n\nconst computeChangeDetection = (\n primaryProgramList?: IChapter[],\n primaryGoalCategory?: IGoalCurriculumMap,\n) => {\n const { recommendedChaptersList, customChaptersList } = computeRecommendedNCustomChapters(\n primaryProgramList,\n primaryGoalCategory,\n true,\n );\n\n //* This will compensate if any new chapter was added.\n if (customChaptersList.length > 0) return true;\n\n //* This will compensate if any chapter was deselected.\n return recommendedChaptersList.some(chapter => !chapter.added);\n};\n\nexport {\n getSelectedGoalCategoryData,\n computeChapterGoalCategoryOnGradeNBoard,\n computeRecommendedNCustomChapters,\n getGradeBoardAndMajorBasedProgramCode,\n getProgramCodeBasedOnGradeAndBoard,\n getCountriesWhereCurrentGradeNCategoryIsAvailable,\n computeChangeDetection,\n getIfGoalCurriculumStandardIsAccessible,\n getStudentEnrollmentSupported,\n};\n"],"names":["getStudentEnrollmentSupported","blockedEnrollmentTypes","availableEnrollmentTypes","enrollmentType","isBlocked","blockedEnrollment","isAvailable","availableEnrollmentType","getSelectedGoalCategoryData","goalCode","config","courseStream","isTeacherTrainingAccount","goalCurriculumMap","goalInfo","checkEnrollmentAvailable","getIfGoalCurriculumStandardIsAccessible","goalCurriculumStandard","referenceStandard","computeChapterGoalCategoryOnGradeNBoard","testType","grade","board","region","flow","selectedGoalCategory","getTestTypeBasedCategory","availableGrades","availableCountries","goalCategory","isLive","canIncludeGoal","gradePresent","gradeInfo","regionPresent","country","boardPresent","selectedCategoryIsPresent","isSameCourse","isStudentEnrollmentTypeSupported","isSchoolSuccessCategory","GOAL_CATEGORY","isBasicEligibilityMet","computeRecommendedNCustomChapters","primaryChaptersList","primaryGoalCategory","isGoalCreation","chapter","programId","customChaptersList","recommendedChaptersList","getGradeBoardAndMajorBasedProgramCode","major","majorsPresent","countryCode","selectedCategory","goalData","programCode","isGradeAvailable","availableGrade","isRegionAvailable","isBoardAvailable","isMajorAvailable","getCountriesWhereCurrentGradeNCategoryIsAvailable","currentCountryCode","countryCodeToNameMap","countries","blockedCountries","acc","countryInfo","computeChangeDetection","primaryProgramList"],"mappings":"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"}