@cuemath/leap 3.0.27-beta-0.4 → 3.0.27-beta-0.5

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.
@@ -1,10 +1,10 @@
1
1
  import { jsx as X } from "react/jsx-runtime";
2
- import { memo as Y, useContext as Z, useMemo as y, useCallback as b } from "react";
2
+ import { memo as Y, useContext as Z, useMemo as C, useCallback as i } from "react";
3
3
  import { convertToTitleCase as M } from "../../../../../helpers/label-text.js";
4
4
  import { useUIContext as $ } from "../../../../ui/context/context.js";
5
- import { WARNING_MESSAGES as i } from "../../../constants.js";
5
+ import { WARNING_MESSAGES as I } from "../../../constants.js";
6
6
  import h from "../../milestone-create-context.js";
7
- import { getGradesBasedOnGoalAvailability as n, appendPrimaryGoalCategoryToFormState as I } from "../../milestone-create-helpers.js";
7
+ import { getGradesBasedOnGoalAvailability as n, appendPrimaryGoalCategoryToFormState as v } from "../../milestone-create-helpers.js";
8
8
  import { computeChangeDetection as T, getCountriesWhereCurrentGradeNCategoryIsAvailable as E } from "../chapters-selection-step/utils.js";
9
9
  import { getTestTypeBasedCategory as x } from "../test-type-step/test-type-utils.js";
10
10
  import W from "./class-details-selectors.js";
@@ -15,129 +15,133 @@ const ye = Y(
15
15
  formData: g,
16
16
  currentStep: j,
17
17
  courseStream: r,
18
- classRatio: v,
18
+ classRatio: U,
19
19
  onChapterExitWarning: o,
20
- onFormDataChange: U,
20
+ onFormDataChange: _,
21
21
  enrollmentType: a
22
22
  }) => {
23
- const { onEvent: _ } = $(), { flow: D } = Z(h), {
24
- testType: c,
23
+ const { onEvent: D } = $(), { flow: c } = Z(h), {
24
+ testType: u,
25
25
  grade: d,
26
- board: u,
26
+ board: m,
27
27
  schoolInfo: B,
28
28
  region: H,
29
29
  primaryChaptersList: P,
30
30
  chapterGoalCategory: R = {}
31
- } = g, { primaryGoalCategory: k } = R, m = x(c), { countryCode: F } = B || {}, t = H || F, { name: L } = j, G = T(P, k), O = y(
31
+ } = g, { primaryGoalCategory: k } = R, G = x(u), { countryCode: F } = B || {}, t = H || F, { name: L } = j, y = T(P, k), O = C(
32
32
  () => ({
33
33
  step: L
34
34
  }),
35
35
  [L]
36
- ), S = y(
36
+ ), S = C(
37
37
  () => ee(s, {
38
38
  grade: d ?? "",
39
39
  countryCode: t ?? "",
40
- goalCategory: m,
40
+ goalCategory: G,
41
41
  courseStream: r,
42
- classRatio: v,
42
+ classRatio: U,
43
43
  enrollmentType: a,
44
- flow: D
44
+ flow: c
45
45
  }),
46
46
  [
47
- v,
47
+ U,
48
48
  s,
49
49
  r,
50
50
  t,
51
51
  d,
52
52
  a,
53
- m,
54
- D
53
+ G,
54
+ c
55
55
  ]
56
- ), C = y(
56
+ ), f = C(
57
57
  () => E(
58
58
  r,
59
59
  s,
60
- m,
60
+ G,
61
61
  a,
62
62
  d,
63
63
  t
64
64
  ),
65
- [r, s, m, a, d, t]
66
- ), w = y(() => n(
65
+ [r, s, G, a, d, t]
66
+ ), w = C(() => n(
67
67
  s,
68
- m,
68
+ G,
69
69
  r,
70
70
  a
71
- ), [s, r, a, m]), z = y(() => {
71
+ ), [s, r, a, G]), z = C(() => {
72
72
  var e;
73
- return (e = Object.entries(C)) == null ? void 0 : e.map(([f, p]) => ({
74
- id: f,
75
- label: M(p)
76
- })).sort((f, p) => f.label.localeCompare(p.label));
77
- }, [C]), q = y(() => t && C[t] ? M(C[t] ?? "") : "", [C, t]), l = b(
73
+ return (e = Object.entries(f)) == null ? void 0 : e.map(([p, A]) => ({
74
+ id: p,
75
+ label: M(A)
76
+ })).sort((p, A) => p.label.localeCompare(A.label));
77
+ }, [f]), q = C(() => t && f[t] ? M(f[t] ?? "") : "", [f, t]), l = i(
78
78
  ({
79
79
  updatedData: e,
80
- gradeUpdated: f,
81
- boardUpdated: p,
80
+ gradeUpdated: p,
81
+ boardUpdated: A,
82
82
  countryUpdated: V
83
83
  }) => {
84
- let A, N;
85
- f ? (A = I(
84
+ let N, b;
85
+ p ? (N = v(
86
86
  s,
87
- c,
87
+ u,
88
88
  e,
89
89
  r,
90
90
  a,
91
- u,
92
- t
93
- ), N = {
91
+ m,
92
+ t,
93
+ c
94
+ ), b = {
94
95
  grade: e
95
- }) : p ? (A = I(
96
+ }) : A ? (N = v(
96
97
  s,
97
- c,
98
+ u,
98
99
  d,
99
100
  r,
100
101
  a,
101
102
  e,
102
- t
103
- ), N = {
103
+ t,
104
+ c
105
+ ), b = {
104
106
  board: e,
105
107
  major: void 0
106
- }) : V && (A = I(
108
+ }) : V && (N = v(
107
109
  s,
108
- c,
110
+ u,
109
111
  d,
110
112
  r,
111
113
  a,
112
- u,
113
- e
114
- ), N = {
114
+ m,
115
+ e,
116
+ c
117
+ ), b = {
115
118
  region: e
116
- }), _("onchange", O), U({
117
- ...N,
119
+ }), D("onchange", O), _({
120
+ ...b,
118
121
  chapterGoalCategory: {
119
- primaryGoalCategory: A
122
+ primaryGoalCategory: N
120
123
  },
121
124
  primaryChaptersList: void 0
122
125
  });
123
126
  },
124
127
  [
125
128
  O,
126
- u,
129
+ m,
127
130
  s,
128
131
  r,
129
132
  t,
130
133
  a,
131
134
  d,
132
- U,
133
- c,
134
- _
135
+ _,
136
+ u,
137
+ D,
138
+ c
135
139
  ]
136
- ), J = b(
140
+ ), J = i(
137
141
  (e) => {
138
142
  if (e === d) return null;
139
- G ? o == null || o({
140
- description: i.GOAL_CHANGE_WARNING,
143
+ y ? o == null || o({
144
+ description: I.GOAL_CHANGE_WARNING,
141
145
  onSuccess: () => {
142
146
  l({
143
147
  updatedData: e,
@@ -149,12 +153,12 @@ const ye = Y(
149
153
  gradeUpdated: !0
150
154
  });
151
155
  },
152
- [o, l, d, G]
153
- ), K = b(
156
+ [o, l, d, y]
157
+ ), K = i(
154
158
  (e) => {
155
- if (e === u) return null;
156
- G ? o == null || o({
157
- description: i.GOAL_CHANGE_WARNING,
159
+ if (e === m) return null;
160
+ y ? o == null || o({
161
+ description: I.GOAL_CHANGE_WARNING,
158
162
  onSuccess: () => {
159
163
  l({
160
164
  updatedData: e,
@@ -166,12 +170,12 @@ const ye = Y(
166
170
  boardUpdated: !0
167
171
  });
168
172
  },
169
- [o, l, u, G]
170
- ), Q = b(
173
+ [o, l, m, y]
174
+ ), Q = i(
171
175
  (e) => {
172
176
  if (e === t) return null;
173
- G ? o == null || o({
174
- description: i.GOAL_CHANGE_WARNING,
177
+ y ? o == null || o({
178
+ description: I.GOAL_CHANGE_WARNING,
175
179
  onSuccess: () => {
176
180
  l({
177
181
  updatedData: e,
@@ -183,15 +187,15 @@ const ye = Y(
183
187
  countryUpdated: !0
184
188
  });
185
189
  },
186
- [o, l, t, G]
190
+ [o, l, t, y]
187
191
  );
188
192
  return /* @__PURE__ */ X(
189
193
  W,
190
194
  {
191
- testType: c,
195
+ testType: u,
192
196
  grade: d,
193
197
  grades: w,
194
- board: u,
198
+ board: m,
195
199
  boards: S,
196
200
  countryLabel: q,
197
201
  countries: z,
@@ -1 +1 @@
1
- {"version":3,"file":"class-details-step.js","sources":["../../../../../../src/features/milestone/create/comps/class-details-step/class-details-step.tsx"],"sourcesContent":["import type { IFormStepProps } from '../../milestone-create-types';\n\nimport React, { memo, useCallback, useContext, useMemo } from 'react';\n\nimport { convertToTitleCase } from '../../../../../helpers/label-text';\nimport { useUIContext } from '../../../../ui/context/context';\nimport { WARNING_MESSAGES } from '../../../constants';\nimport MilestoneCreateContext from '../../milestone-create-context';\nimport {\n appendPrimaryGoalCategoryToFormState,\n getGradesBasedOnGoalAvailability,\n} from '../../milestone-create-helpers';\nimport {\n computeChangeDetection,\n getCountriesWhereCurrentGradeNCategoryIsAvailable,\n} from '../chapters-selection-step/utils';\nimport { getTestTypeBasedCategory } from '../test-type-step/test-type-utils';\nimport ClassDetailsSelectors from './class-details-selectors';\nimport { getCategorizedCurriculumStandards } from './class-details-utils';\n\nconst ClassDetailsStep: React.FC<IFormStepProps> = memo(\n ({\n config,\n formData,\n currentStep,\n courseStream,\n classRatio,\n onChapterExitWarning,\n onFormDataChange,\n enrollmentType,\n }) => {\n const { onEvent: trackEvent } = useUIContext();\n const { flow } = useContext(MilestoneCreateContext);\n\n const {\n testType,\n grade,\n board,\n schoolInfo,\n region,\n primaryChaptersList,\n chapterGoalCategory = {},\n } = formData;\n\n const { primaryGoalCategory } = chapterGoalCategory;\n\n const selectedGoalCategory = getTestTypeBasedCategory(testType);\n const { countryCode: schoolInfoCountryCode } = schoolInfo || {};\n const currentCountryCode = region || schoolInfoCountryCode; //TODO: remove all school related code, this might lead to some drafts (which were created earlier) asking user to fill country/board again but if they carry on with same details data will be prefilled\n const { name } = currentStep;\n\n const changesDetected = computeChangeDetection(primaryChaptersList, primaryGoalCategory);\n\n const analyticsProps = useMemo(\n () => ({\n step: name,\n }),\n [name],\n );\n\n const boards = useMemo(\n () =>\n getCategorizedCurriculumStandards(config, {\n grade: grade ?? '',\n countryCode: currentCountryCode ?? '',\n goalCategory: selectedGoalCategory,\n courseStream,\n classRatio,\n enrollmentType,\n flow,\n }),\n [\n classRatio,\n config,\n courseStream,\n currentCountryCode,\n grade,\n enrollmentType,\n selectedGoalCategory,\n flow,\n ],\n );\n\n const filteredCountryCodeToNameMap = useMemo(\n () =>\n getCountriesWhereCurrentGradeNCategoryIsAvailable(\n courseStream,\n config,\n selectedGoalCategory,\n enrollmentType,\n grade,\n currentCountryCode,\n ),\n [courseStream, config, selectedGoalCategory, enrollmentType, grade, currentCountryCode],\n );\n\n const grades = useMemo(() => {\n return getGradesBasedOnGoalAvailability(\n config,\n selectedGoalCategory,\n courseStream,\n enrollmentType,\n );\n }, [config, courseStream, enrollmentType, selectedGoalCategory]);\n\n const countries = useMemo(() => {\n return Object.entries(filteredCountryCodeToNameMap)\n ?.map(([countryCode, countryName]) => ({\n id: countryCode,\n label: convertToTitleCase(countryName),\n }))\n .sort((a, b) => {\n return a.label.localeCompare(b.label);\n });\n }, [filteredCountryCodeToNameMap]);\n\n const countryLabel = useMemo(() => {\n return currentCountryCode && filteredCountryCodeToNameMap[currentCountryCode]\n ? convertToTitleCase(filteredCountryCodeToNameMap[currentCountryCode] ?? '')\n : '';\n }, [filteredCountryCodeToNameMap, currentCountryCode]);\n\n const handleOnFormDataChange = useCallback(\n ({\n updatedData,\n gradeUpdated,\n boardUpdated,\n countryUpdated,\n }: {\n updatedData: string;\n gradeUpdated?: boolean;\n boardUpdated?: boolean;\n countryUpdated?: boolean;\n majorUpdated?: boolean;\n }) => {\n let updatedPrimaryGoalCategory;\n let updatedFormData;\n\n if (gradeUpdated) {\n updatedPrimaryGoalCategory = appendPrimaryGoalCategoryToFormState(\n config,\n testType,\n updatedData,\n courseStream,\n enrollmentType,\n board,\n currentCountryCode,\n );\n\n updatedFormData = {\n grade: updatedData,\n };\n } else if (boardUpdated) {\n updatedPrimaryGoalCategory = appendPrimaryGoalCategoryToFormState(\n config,\n testType,\n grade,\n courseStream,\n enrollmentType,\n updatedData,\n currentCountryCode,\n );\n\n updatedFormData = {\n board: updatedData,\n major: undefined,\n };\n } else if (countryUpdated) {\n updatedPrimaryGoalCategory = appendPrimaryGoalCategoryToFormState(\n config,\n testType,\n grade,\n courseStream,\n enrollmentType,\n board,\n updatedData,\n );\n\n updatedFormData = {\n region: updatedData,\n };\n }\n\n trackEvent('onchange', analyticsProps);\n\n onFormDataChange({\n ...updatedFormData,\n chapterGoalCategory: {\n primaryGoalCategory: updatedPrimaryGoalCategory,\n },\n primaryChaptersList: undefined,\n });\n },\n [\n analyticsProps,\n board,\n config,\n courseStream,\n currentCountryCode,\n enrollmentType,\n grade,\n onFormDataChange,\n testType,\n trackEvent,\n ],\n );\n\n const handleGradeSelect = useCallback(\n (selectedGrade: string) => {\n if (selectedGrade === grade) return null;\n\n if (!changesDetected) {\n handleOnFormDataChange({\n updatedData: selectedGrade,\n gradeUpdated: true,\n });\n } else {\n onChapterExitWarning?.({\n description: WARNING_MESSAGES.GOAL_CHANGE_WARNING,\n onSuccess: () => {\n handleOnFormDataChange({\n updatedData: selectedGrade,\n gradeUpdated: true,\n });\n },\n });\n }\n },\n [onChapterExitWarning, handleOnFormDataChange, grade, changesDetected],\n );\n\n const handleBoardChange = useCallback(\n (boardCode: string) => {\n if (boardCode === board) return null;\n\n if (!changesDetected) {\n handleOnFormDataChange({\n updatedData: boardCode,\n boardUpdated: true,\n });\n } else {\n onChapterExitWarning?.({\n description: WARNING_MESSAGES.GOAL_CHANGE_WARNING,\n onSuccess: () => {\n handleOnFormDataChange({\n updatedData: boardCode,\n boardUpdated: true,\n });\n },\n });\n }\n },\n [onChapterExitWarning, handleOnFormDataChange, board, changesDetected],\n );\n\n const handleCountryChange = useCallback(\n (updatedCountryCode: string) => {\n if (updatedCountryCode === currentCountryCode) return null;\n\n if (!changesDetected) {\n handleOnFormDataChange({\n updatedData: updatedCountryCode,\n countryUpdated: true,\n });\n } else {\n onChapterExitWarning?.({\n description: WARNING_MESSAGES.GOAL_CHANGE_WARNING,\n onSuccess: () => {\n handleOnFormDataChange({\n updatedData: updatedCountryCode,\n countryUpdated: true,\n });\n },\n });\n }\n },\n [onChapterExitWarning, handleOnFormDataChange, currentCountryCode, changesDetected],\n );\n\n return (\n <ClassDetailsSelectors\n testType={testType}\n grade={grade}\n grades={grades}\n board={board}\n boards={boards}\n countryLabel={countryLabel}\n countries={countries}\n currentCountryCode={currentCountryCode}\n handleCountryChange={handleCountryChange}\n handleBoardChange={handleBoardChange}\n handleGradeSelect={handleGradeSelect}\n />\n );\n },\n);\n\nexport default ClassDetailsStep;\n"],"names":["ClassDetailsStep","memo","config","formData","currentStep","courseStream","classRatio","onChapterExitWarning","onFormDataChange","enrollmentType","trackEvent","useUIContext","flow","useContext","MilestoneCreateContext","testType","grade","board","schoolInfo","region","primaryChaptersList","chapterGoalCategory","primaryGoalCategory","selectedGoalCategory","getTestTypeBasedCategory","schoolInfoCountryCode","currentCountryCode","name","changesDetected","computeChangeDetection","analyticsProps","useMemo","boards","getCategorizedCurriculumStandards","filteredCountryCodeToNameMap","getCountriesWhereCurrentGradeNCategoryIsAvailable","grades","getGradesBasedOnGoalAvailability","countries","_a","countryCode","countryName","convertToTitleCase","a","b","countryLabel","handleOnFormDataChange","useCallback","updatedData","gradeUpdated","boardUpdated","countryUpdated","updatedPrimaryGoalCategory","updatedFormData","appendPrimaryGoalCategoryToFormState","handleGradeSelect","selectedGrade","WARNING_MESSAGES","handleBoardChange","boardCode","handleCountryChange","updatedCountryCode","jsx","ClassDetailsSelectors"],"mappings":";;;;;;;;;;;AAoBA,MAAMA,KAA6CC;AAAA,EACjD,CAAC;AAAA,IACC,QAAAC;AAAA,IACA,UAAAC;AAAA,IACA,aAAAC;AAAA,IACA,cAAAC;AAAA,IACA,YAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,gBAAAC;AAAA,EAAA,MACI;AACJ,UAAM,EAAE,SAASC,EAAW,IAAIC,EAAa,GACvC,EAAE,MAAAC,EAAA,IAASC,EAAWC,CAAsB,GAE5C;AAAA,MACJ,UAAAC;AAAA,MACA,OAAAC;AAAA,MACA,OAAAC;AAAA,MACA,YAAAC;AAAA,MACA,QAAAC;AAAA,MACA,qBAAAC;AAAA,MACA,qBAAAC,IAAsB,CAAC;AAAA,IACrB,IAAAlB,GAEE,EAAE,qBAAAmB,EAAwB,IAAAD,GAE1BE,IAAuBC,EAAyBT,CAAQ,GACxD,EAAE,aAAaU,MAA0BP,KAAc,CAAA,GACvDQ,IAAqBP,KAAUM,GAC/B,EAAE,MAAAE,EAAS,IAAAvB,GAEXwB,IAAkBC,EAAuBT,GAAqBE,CAAmB,GAEjFQ,IAAiBC;AAAA,MACrB,OAAO;AAAA,QACL,MAAMJ;AAAA,MAAA;AAAA,MAER,CAACA,CAAI;AAAA,IAAA,GAGDK,IAASD;AAAA,MACb,MACEE,GAAkC/B,GAAQ;AAAA,QACxC,OAAOc,KAAS;AAAA,QAChB,aAAaU,KAAsB;AAAA,QACnC,cAAcH;AAAA,QACd,cAAAlB;AAAA,QACA,YAAAC;AAAA,QACA,gBAAAG;AAAA,QACA,MAAAG;AAAA,MAAA,CACD;AAAA,MACH;AAAA,QACEN;AAAA,QACAJ;AAAA,QACAG;AAAA,QACAqB;AAAA,QACAV;AAAA,QACAP;AAAA,QACAc;AAAA,QACAX;AAAA,MACF;AAAA,IAAA,GAGIsB,IAA+BH;AAAA,MACnC,MACEI;AAAA,QACE9B;AAAA,QACAH;AAAA,QACAqB;AAAA,QACAd;AAAA,QACAO;AAAA,QACAU;AAAA,MACF;AAAA,MACF,CAACrB,GAAcH,GAAQqB,GAAsBd,GAAgBO,GAAOU,CAAkB;AAAA,IAAA,GAGlFU,IAASL,EAAQ,MACdM;AAAA,MACLnC;AAAA,MACAqB;AAAA,MACAlB;AAAA,MACAI;AAAA,IAAA,GAED,CAACP,GAAQG,GAAcI,GAAgBc,CAAoB,CAAC,GAEzDe,IAAYP,EAAQ,MAAM;;AACvB,cAAAQ,IAAA,OAAO,QAAQL,CAA4B,MAA3C,gBAAAK,EACH,IAAI,CAAC,CAACC,GAAaC,CAAW,OAAO;AAAA,QACrC,IAAID;AAAA,QACJ,OAAOE,EAAmBD,CAAW;AAAA,MACrC,IACD,KAAK,CAACE,GAAGC,MACDD,EAAE,MAAM,cAAcC,EAAE,KAAK;AAAA,IACrC,GACF,CAACV,CAA4B,CAAC,GAE3BW,IAAed,EAAQ,MACpBL,KAAsBQ,EAA6BR,CAAkB,IACxEgB,EAAmBR,EAA6BR,CAAkB,KAAK,EAAE,IACzE,IACH,CAACQ,GAA8BR,CAAkB,CAAC,GAE/CoB,IAAyBC;AAAA,MAC7B,CAAC;AAAA,QACC,aAAAC;AAAA,QACA,cAAAC;AAAA,QACA,cAAAC;AAAA,QACA,gBAAAC;AAAA,MAAA,MAOI;AACA,YAAAC,GACAC;AAEJ,QAAIJ,KAC2BG,IAAAE;AAAA,UAC3BpD;AAAA,UACAa;AAAA,UACAiC;AAAA,UACA3C;AAAA,UACAI;AAAA,UACAQ;AAAA,UACAS;AAAA,QAAA,GAGgB2B,IAAA;AAAA,UAChB,OAAOL;AAAA,QAAA,KAEAE,KACoBE,IAAAE;AAAA,UAC3BpD;AAAA,UACAa;AAAA,UACAC;AAAA,UACAX;AAAA,UACAI;AAAA,UACAuC;AAAA,UACAtB;AAAA,QAAA,GAGgB2B,IAAA;AAAA,UAChB,OAAOL;AAAA,UACP,OAAO;AAAA,QAAA,KAEAG,MACoBC,IAAAE;AAAA,UAC3BpD;AAAA,UACAa;AAAA,UACAC;AAAA,UACAX;AAAA,UACAI;AAAA,UACAQ;AAAA,UACA+B;AAAA,QAAA,GAGgBK,IAAA;AAAA,UAChB,QAAQL;AAAA,QAAA,IAIZtC,EAAW,YAAYoB,CAAc,GAEpBtB,EAAA;AAAA,UACf,GAAG6C;AAAA,UACH,qBAAqB;AAAA,YACnB,qBAAqBD;AAAA,UACvB;AAAA,UACA,qBAAqB;AAAA,QAAA,CACtB;AAAA,MACH;AAAA,MACA;AAAA,QACEtB;AAAA,QACAb;AAAA,QACAf;AAAA,QACAG;AAAA,QACAqB;AAAA,QACAjB;AAAA,QACAO;AAAA,QACAR;AAAA,QACAO;AAAA,QACAL;AAAA,MACF;AAAA,IAAA,GAGI6C,IAAoBR;AAAA,MACxB,CAACS,MAA0B;AACrB,YAAAA,MAAkBxC,EAAc,QAAA;AAEpC,QAAKY,IAMoBrB,KAAA,QAAAA,EAAA;AAAA,UACrB,aAAakD,EAAiB;AAAA,UAC9B,WAAW,MAAM;AACQ,YAAAX,EAAA;AAAA,cACrB,aAAaU;AAAA,cACb,cAAc;AAAA,YAAA,CACf;AAAA,UACH;AAAA,QAAA,KAZqBV,EAAA;AAAA,UACrB,aAAaU;AAAA,UACb,cAAc;AAAA,QAAA,CACf;AAAA,MAYL;AAAA,MACA,CAACjD,GAAsBuC,GAAwB9B,GAAOY,CAAe;AAAA,IAAA,GAGjE8B,IAAoBX;AAAA,MACxB,CAACY,MAAsB;AACjB,YAAAA,MAAc1C,EAAc,QAAA;AAEhC,QAAKW,IAMoBrB,KAAA,QAAAA,EAAA;AAAA,UACrB,aAAakD,EAAiB;AAAA,UAC9B,WAAW,MAAM;AACQ,YAAAX,EAAA;AAAA,cACrB,aAAaa;AAAA,cACb,cAAc;AAAA,YAAA,CACf;AAAA,UACH;AAAA,QAAA,KAZqBb,EAAA;AAAA,UACrB,aAAaa;AAAA,UACb,cAAc;AAAA,QAAA,CACf;AAAA,MAYL;AAAA,MACA,CAACpD,GAAsBuC,GAAwB7B,GAAOW,CAAe;AAAA,IAAA,GAGjEgC,IAAsBb;AAAA,MAC1B,CAACc,MAA+B;AAC1B,YAAAA,MAAuBnC,EAA2B,QAAA;AAEtD,QAAKE,IAMoBrB,KAAA,QAAAA,EAAA;AAAA,UACrB,aAAakD,EAAiB;AAAA,UAC9B,WAAW,MAAM;AACQ,YAAAX,EAAA;AAAA,cACrB,aAAae;AAAA,cACb,gBAAgB;AAAA,YAAA,CACjB;AAAA,UACH;AAAA,QAAA,KAZqBf,EAAA;AAAA,UACrB,aAAae;AAAA,UACb,gBAAgB;AAAA,QAAA,CACjB;AAAA,MAYL;AAAA,MACA,CAACtD,GAAsBuC,GAAwBpB,GAAoBE,CAAe;AAAA,IAAA;AAIlF,WAAA,gBAAAkC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,UAAAhD;AAAA,QACA,OAAAC;AAAA,QACA,QAAAoB;AAAA,QACA,OAAAnB;AAAA,QACA,QAAAe;AAAA,QACA,cAAAa;AAAA,QACA,WAAAP;AAAA,QACA,oBAAAZ;AAAA,QACA,qBAAAkC;AAAA,QACA,mBAAAF;AAAA,QACA,mBAAAH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;"}
1
+ {"version":3,"file":"class-details-step.js","sources":["../../../../../../src/features/milestone/create/comps/class-details-step/class-details-step.tsx"],"sourcesContent":["import type { IFormStepProps } from '../../milestone-create-types';\n\nimport React, { memo, useCallback, useContext, useMemo } from 'react';\n\nimport { convertToTitleCase } from '../../../../../helpers/label-text';\nimport { useUIContext } from '../../../../ui/context/context';\nimport { WARNING_MESSAGES } from '../../../constants';\nimport MilestoneCreateContext from '../../milestone-create-context';\nimport {\n appendPrimaryGoalCategoryToFormState,\n getGradesBasedOnGoalAvailability,\n} from '../../milestone-create-helpers';\nimport {\n computeChangeDetection,\n getCountriesWhereCurrentGradeNCategoryIsAvailable,\n} from '../chapters-selection-step/utils';\nimport { getTestTypeBasedCategory } from '../test-type-step/test-type-utils';\nimport ClassDetailsSelectors from './class-details-selectors';\nimport { getCategorizedCurriculumStandards } from './class-details-utils';\n\nconst ClassDetailsStep: React.FC<IFormStepProps> = memo(\n ({\n config,\n formData,\n currentStep,\n courseStream,\n classRatio,\n onChapterExitWarning,\n onFormDataChange,\n enrollmentType,\n }) => {\n const { onEvent: trackEvent } = useUIContext();\n const { flow } = useContext(MilestoneCreateContext);\n\n const {\n testType,\n grade,\n board,\n schoolInfo,\n region,\n primaryChaptersList,\n chapterGoalCategory = {},\n } = formData;\n\n const { primaryGoalCategory } = chapterGoalCategory;\n\n const selectedGoalCategory = getTestTypeBasedCategory(testType);\n const { countryCode: schoolInfoCountryCode } = schoolInfo || {};\n const currentCountryCode = region || schoolInfoCountryCode; //TODO: remove all school related code, this might lead to some drafts (which were created earlier) asking user to fill country/board again but if they carry on with same details data will be prefilled\n const { name } = currentStep;\n\n const changesDetected = computeChangeDetection(primaryChaptersList, primaryGoalCategory);\n\n const analyticsProps = useMemo(\n () => ({\n step: name,\n }),\n [name],\n );\n\n const boards = useMemo(\n () =>\n getCategorizedCurriculumStandards(config, {\n grade: grade ?? '',\n countryCode: currentCountryCode ?? '',\n goalCategory: selectedGoalCategory,\n courseStream,\n classRatio,\n enrollmentType,\n flow,\n }),\n [\n classRatio,\n config,\n courseStream,\n currentCountryCode,\n grade,\n enrollmentType,\n selectedGoalCategory,\n flow,\n ],\n );\n\n const filteredCountryCodeToNameMap = useMemo(\n () =>\n getCountriesWhereCurrentGradeNCategoryIsAvailable(\n courseStream,\n config,\n selectedGoalCategory,\n enrollmentType,\n grade,\n currentCountryCode,\n ),\n [courseStream, config, selectedGoalCategory, enrollmentType, grade, currentCountryCode],\n );\n\n const grades = useMemo(() => {\n return getGradesBasedOnGoalAvailability(\n config,\n selectedGoalCategory,\n courseStream,\n enrollmentType,\n );\n }, [config, courseStream, enrollmentType, selectedGoalCategory]);\n\n const countries = useMemo(() => {\n return Object.entries(filteredCountryCodeToNameMap)\n ?.map(([countryCode, countryName]) => ({\n id: countryCode,\n label: convertToTitleCase(countryName),\n }))\n .sort((a, b) => {\n return a.label.localeCompare(b.label);\n });\n }, [filteredCountryCodeToNameMap]);\n\n const countryLabel = useMemo(() => {\n return currentCountryCode && filteredCountryCodeToNameMap[currentCountryCode]\n ? convertToTitleCase(filteredCountryCodeToNameMap[currentCountryCode] ?? '')\n : '';\n }, [filteredCountryCodeToNameMap, currentCountryCode]);\n\n const handleOnFormDataChange = useCallback(\n ({\n updatedData,\n gradeUpdated,\n boardUpdated,\n countryUpdated,\n }: {\n updatedData: string;\n gradeUpdated?: boolean;\n boardUpdated?: boolean;\n countryUpdated?: boolean;\n majorUpdated?: boolean;\n }) => {\n let updatedPrimaryGoalCategory;\n let updatedFormData;\n\n if (gradeUpdated) {\n updatedPrimaryGoalCategory = appendPrimaryGoalCategoryToFormState(\n config,\n testType,\n updatedData,\n courseStream,\n enrollmentType,\n board,\n currentCountryCode,\n flow,\n );\n\n updatedFormData = {\n grade: updatedData,\n };\n } else if (boardUpdated) {\n updatedPrimaryGoalCategory = appendPrimaryGoalCategoryToFormState(\n config,\n testType,\n grade,\n courseStream,\n enrollmentType,\n updatedData,\n currentCountryCode,\n flow,\n );\n\n updatedFormData = {\n board: updatedData,\n major: undefined,\n };\n } else if (countryUpdated) {\n updatedPrimaryGoalCategory = appendPrimaryGoalCategoryToFormState(\n config,\n testType,\n grade,\n courseStream,\n enrollmentType,\n board,\n updatedData,\n flow,\n );\n\n updatedFormData = {\n region: updatedData,\n };\n }\n\n trackEvent('onchange', analyticsProps);\n\n onFormDataChange({\n ...updatedFormData,\n chapterGoalCategory: {\n primaryGoalCategory: updatedPrimaryGoalCategory,\n },\n primaryChaptersList: undefined,\n });\n },\n [\n analyticsProps,\n board,\n config,\n courseStream,\n currentCountryCode,\n enrollmentType,\n grade,\n onFormDataChange,\n testType,\n trackEvent,\n flow,\n ],\n );\n\n const handleGradeSelect = useCallback(\n (selectedGrade: string) => {\n if (selectedGrade === grade) return null;\n\n if (!changesDetected) {\n handleOnFormDataChange({\n updatedData: selectedGrade,\n gradeUpdated: true,\n });\n } else {\n onChapterExitWarning?.({\n description: WARNING_MESSAGES.GOAL_CHANGE_WARNING,\n onSuccess: () => {\n handleOnFormDataChange({\n updatedData: selectedGrade,\n gradeUpdated: true,\n });\n },\n });\n }\n },\n [onChapterExitWarning, handleOnFormDataChange, grade, changesDetected],\n );\n\n const handleBoardChange = useCallback(\n (boardCode: string) => {\n if (boardCode === board) return null;\n\n if (!changesDetected) {\n handleOnFormDataChange({\n updatedData: boardCode,\n boardUpdated: true,\n });\n } else {\n onChapterExitWarning?.({\n description: WARNING_MESSAGES.GOAL_CHANGE_WARNING,\n onSuccess: () => {\n handleOnFormDataChange({\n updatedData: boardCode,\n boardUpdated: true,\n });\n },\n });\n }\n },\n [onChapterExitWarning, handleOnFormDataChange, board, changesDetected],\n );\n\n const handleCountryChange = useCallback(\n (updatedCountryCode: string) => {\n if (updatedCountryCode === currentCountryCode) return null;\n\n if (!changesDetected) {\n handleOnFormDataChange({\n updatedData: updatedCountryCode,\n countryUpdated: true,\n });\n } else {\n onChapterExitWarning?.({\n description: WARNING_MESSAGES.GOAL_CHANGE_WARNING,\n onSuccess: () => {\n handleOnFormDataChange({\n updatedData: updatedCountryCode,\n countryUpdated: true,\n });\n },\n });\n }\n },\n [onChapterExitWarning, handleOnFormDataChange, currentCountryCode, changesDetected],\n );\n\n return (\n <ClassDetailsSelectors\n testType={testType}\n grade={grade}\n grades={grades}\n board={board}\n boards={boards}\n countryLabel={countryLabel}\n countries={countries}\n currentCountryCode={currentCountryCode}\n handleCountryChange={handleCountryChange}\n handleBoardChange={handleBoardChange}\n handleGradeSelect={handleGradeSelect}\n />\n );\n },\n);\n\nexport default ClassDetailsStep;\n"],"names":["ClassDetailsStep","memo","config","formData","currentStep","courseStream","classRatio","onChapterExitWarning","onFormDataChange","enrollmentType","trackEvent","useUIContext","flow","useContext","MilestoneCreateContext","testType","grade","board","schoolInfo","region","primaryChaptersList","chapterGoalCategory","primaryGoalCategory","selectedGoalCategory","getTestTypeBasedCategory","schoolInfoCountryCode","currentCountryCode","name","changesDetected","computeChangeDetection","analyticsProps","useMemo","boards","getCategorizedCurriculumStandards","filteredCountryCodeToNameMap","getCountriesWhereCurrentGradeNCategoryIsAvailable","grades","getGradesBasedOnGoalAvailability","countries","_a","countryCode","countryName","convertToTitleCase","a","b","countryLabel","handleOnFormDataChange","useCallback","updatedData","gradeUpdated","boardUpdated","countryUpdated","updatedPrimaryGoalCategory","updatedFormData","appendPrimaryGoalCategoryToFormState","handleGradeSelect","selectedGrade","WARNING_MESSAGES","handleBoardChange","boardCode","handleCountryChange","updatedCountryCode","jsx","ClassDetailsSelectors"],"mappings":"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"}
@@ -1,91 +1,91 @@
1
- import { COUNTRY_MAP as p } from "../../../constants/country.js";
2
- import { getStudentEnrollmentSupported as y, getIfGoalCurriculumStandardIsAccessible as S } from "./comps/chapters-selection-step/utils.js";
3
- import { checkEnrollmentAvailable as b, getTestTypeBasedCategory as h } from "./comps/test-type-step/test-type-utils.js";
4
- import { GOAL_EDIT_FLOWS as G } from "./milestone-create-constants.js";
5
- const A = (n, r) => {
1
+ import { COUNTRY_MAP as y } from "../../../constants/country.js";
2
+ import { getStudentEnrollmentSupported as S, getIfGoalCurriculumStandardIsAccessible as h } from "./comps/chapters-selection-step/utils.js";
3
+ import { checkEnrollmentAvailable as C, getTestTypeBasedCategory as G } from "./comps/test-type-step/test-type-utils.js";
4
+ import { GOAL_EDIT_FLOWS as A } from "./milestone-create-constants.js";
5
+ const E = (t, r) => {
6
6
  r.forEach((e) => {
7
- n[e] = void 0;
7
+ t[e] = void 0;
8
8
  });
9
- }, E = (n, r, e, l, a = []) => {
10
- const { isLeafNode: i, next: o, reset: c } = n, s = { ...r };
9
+ }, F = (t, r, e, l, n = []) => {
10
+ const { isLeafNode: i, next: o, reset: c } = t, s = { ...r };
11
11
  if (i)
12
- return A(s, [...c, ...a]), s;
12
+ return E(s, [...c, ...n]), s;
13
13
  if (o) {
14
14
  let f = l, m;
15
- if (o.every((t) => {
15
+ if (o.every((a) => {
16
16
  var u;
17
17
  let d = !1;
18
- return t.when !== void 0 ? d = t.when.every(([_, g]) => s[_] === g) : d = !0, d ? (f ? (u = t == null ? void 0 : t.reset) == null || u.forEach((_) => {
19
- a.push(_);
20
- }) : e === (t == null ? void 0 : t.name) && (f = !0), m = t, !1) : !0;
18
+ return a.when !== void 0 ? d = a.when.every(([_, g]) => s[_] === g) : d = !0, d ? (f ? (u = a == null ? void 0 : a.reset) == null || u.forEach((_) => {
19
+ n.push(_);
20
+ }) : e === (a == null ? void 0 : a.name) && (f = !0), m = a, !1) : !0;
21
21
  }), m)
22
- return E(
22
+ return F(
23
23
  m,
24
24
  s,
25
25
  e,
26
26
  f,
27
- a
27
+ n
28
28
  );
29
29
  }
30
- }, F = (n, r, e) => {
31
- const { isLeafNode: l, required: a, next: i } = n;
30
+ }, T = (t, r, e) => {
31
+ const { isLeafNode: l, required: n, next: i } = t;
32
32
  if (l)
33
- return n;
34
- const o = a.every((c) => r[c] !== void 0);
35
- if (G.includes(e)) {
36
- const c = a.every(
33
+ return t;
34
+ const o = n.every((c) => r[c] !== void 0);
35
+ if (A.includes(e)) {
36
+ const c = n.every(
37
37
  (s) => r.reviewed[s] === !0
38
38
  );
39
39
  if (!o || !c)
40
40
  return {
41
- ...n,
41
+ ...t,
42
42
  next: void 0
43
43
  };
44
44
  } else {
45
- const c = a.every(
45
+ const c = n.every(
46
46
  (s) => r.committed[s] === !0
47
47
  );
48
48
  if (!o || !c)
49
49
  return {
50
- ...n,
50
+ ...t,
51
51
  next: void 0
52
52
  };
53
53
  }
54
54
  if (i) {
55
55
  let c;
56
56
  if (i.every((s) => s.when === void 0 || s.when.every(
57
- ([m, t]) => r[m] === t
57
+ ([m, a]) => r[m] === a
58
58
  ) ? (c = s, !1) : !0), c)
59
- return F(c, r, e);
59
+ return T(c, r, e);
60
60
  }
61
- }, L = (n) => n.academic_events.reduce((r, e) => {
62
- const { id: l, event_name: a, event_type: i } = e;
61
+ }, R = (t) => t.academic_events.reduce((r, e) => {
62
+ const { id: l, event_name: n, event_type: i } = e;
63
63
  return i === "SCHOOL_TEST" && r.push({
64
64
  id: l,
65
- label: a
65
+ label: n
66
66
  }), r;
67
- }, []), T = (n) => {
68
- const { currentGoalData: r, enrollmentType: e, currentCountryCode: l, grade: a, selectedCategory: i } = n, {
67
+ }, []), B = (t) => {
68
+ const { currentGoalData: r, enrollmentType: e, currentCountryCode: l, grade: n, selectedCategory: i } = t, {
69
69
  blocked_countries: o,
70
70
  available_countries: c,
71
71
  available_grades: s,
72
72
  goal_category: f,
73
73
  available_enrollment_types: m,
74
- blocked_enrollment_types: t
75
- } = r, d = y(
76
- t,
74
+ blocked_enrollment_types: a
75
+ } = r, d = S(
76
+ a,
77
77
  m,
78
78
  e
79
79
  ), u = o.some(
80
80
  (v) => v === l
81
- ), _ = c.length > 0 ? c.some((v) => v === l) : !0, g = s.some((v) => v === a);
81
+ ), _ = c.length > 0 ? c.some((v) => v === l) : !0, g = s.some((v) => v === n);
82
82
  return d && !u && _ && g && i === f;
83
- }, R = (n, { grade: r, countryCode: e, goalCategory: l, courseStream: a, classRatio: i, enrollmentType: o, flow: c }) => {
84
- const { goal_curriculum_map: s, curriculum_standards: f } = n, m = s.filter((d) => {
85
- const u = d.course_stream === a;
83
+ }, N = (t, { grade: r, countryCode: e, goalCategory: l, courseStream: n, classRatio: i, enrollmentType: o, flow: c }) => {
84
+ const { goal_curriculum_map: s, curriculum_standards: f } = t, m = s.filter((d) => {
85
+ const u = d.course_stream === n;
86
86
  return c === "CREATE" ? u && d.is_live : u;
87
- }), t = (d) => m.some((u) => u.goal_category !== l || i && u.available_class_ratios.length > 0 && !u.available_class_ratios.includes(i) || u.goal_curriculum_standard && u.goal_curriculum_standard !== d.code || l === "SCHOOL_SUCCESS" && !u.goal_curriculum_standard || u.available_countries.length > 0 && !u.available_countries.includes(e) || u.available_countries.length === 0 && u.blocked_countries.includes(e) || !u.available_grades.includes(r) ? !1 : b(u, o));
88
- return f.filter(t).map(
87
+ }), a = (d) => m.some((u) => u.goal_category !== l || i && u.available_class_ratios.length > 0 && !u.available_class_ratios.includes(i) || u.goal_curriculum_standard && u.goal_curriculum_standard !== d.code || l === "SCHOOL_SUCCESS" && !u.goal_curriculum_standard || u.available_countries.length > 0 && !u.available_countries.includes(e) || u.available_countries.length === 0 && u.blocked_countries.includes(e) || !u.available_grades.includes(r) ? !1 : C(u, o));
88
+ return f.filter(a).map(
89
89
  ({
90
90
  code: d,
91
91
  name: u,
@@ -98,62 +98,62 @@ const A = (n, r) => {
98
98
  isRecommended: g.includes(e)
99
99
  })
100
100
  ).sort((d, u) => d.label.toUpperCase() > u.label.toUpperCase() ? 1 : -1);
101
- }, N = (n, r) => {
102
- const { goal_curriculum_map: e } = n, { grade: l, countryCode: a, goalCategory: i, curriculumStandard: o, courseStream: c, enrollmentType: s } = r, f = e.filter((t) => t.course_stream === c), m = (t) => t.goal_category !== i || o && t.goal_curriculum_standard !== o || t.available_countries.length > 0 && !t.available_countries.includes(a) || t.available_countries.length === 0 && t.blocked_countries.includes(a) || !t.available_grades.includes(l) ? !1 : b(t, s);
103
- return f == null ? void 0 : f.filter(m).map(({ goal_code: t, goal_name: d }) => ({
104
- id: t,
101
+ }, P = (t, r) => {
102
+ const { goal_curriculum_map: e } = t, { grade: l, countryCode: n, goalCategory: i, curriculumStandard: o, courseStream: c, enrollmentType: s } = r, f = e.filter((a) => a.course_stream === c), m = (a) => a.goal_category !== i || o && a.goal_curriculum_standard !== o || 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) ? !1 : C(a, s);
103
+ return f == null ? void 0 : f.filter(m).map(({ goal_code: a, goal_name: d }) => ({
104
+ id: a,
105
105
  label: d
106
- })).sort((t, d) => t.label.toUpperCase() > d.label.toUpperCase() ? 1 : -1);
107
- }, B = (n) => n.grades.reduce((r, e) => (e === "-1" || e === "0" ? r.push({
106
+ })).sort((a, d) => a.label.toUpperCase() > d.label.toUpperCase() ? 1 : -1);
107
+ }, O = (t) => t.grades.reduce((r, e) => (e === "-1" || e === "0" ? r.push({
108
108
  id: e,
109
109
  label: e === "-1" ? "Pre-K" : "KG"
110
110
  }) : r.push({
111
111
  id: e,
112
112
  label: `Grade ${e}`
113
- }), r), []), P = (n, r) => {
114
- const { preference_config: e } = n, l = (a) => {
113
+ }), r), []), U = (t, r) => {
114
+ const { preference_config: e } = t, l = (n) => {
115
115
  const { grade: i, courseStream: o, preferenceCategory: c } = r;
116
- return !(a.course_stream !== o || a.preference_category !== c || a.preference_grades.length > 0 && !a.preference_grades.includes(i) || !a.is_live);
116
+ return !(n.course_stream !== o || n.preference_category !== c || n.preference_grades.length > 0 && !n.preference_grades.includes(i) || !n.is_live);
117
117
  };
118
118
  return e == null ? void 0 : e.filter(l).map(
119
- ({ preference_code: a, preference_name: i, preference_description: o }) => ({
120
- id: a,
119
+ ({ preference_code: n, preference_name: i, preference_description: o }) => ({
120
+ id: n,
121
121
  label: i,
122
122
  description: o
123
123
  })
124
124
  );
125
- }, U = (n, r, e, l) => {
126
- const { goal_curriculum_map: a } = n, i = B(n), o = ({ id: c }) => a.filter((s) => s.course_stream === e).some((s) => {
125
+ }, q = (t, r, e, l) => {
126
+ const { goal_curriculum_map: n } = t, i = O(t), o = ({ id: c }) => n.filter((s) => s.course_stream === e).some((s) => {
127
127
  const {
128
128
  available_grades: f,
129
129
  goal_category: m,
130
- available_enrollment_types: t,
130
+ available_enrollment_types: a,
131
131
  blocked_enrollment_types: d
132
132
  } = s;
133
- return t.length > 0 && !t.includes(l) || t.length === 0 && d.includes(l) ? !1 : m === r && f.includes(c);
133
+ return a.length > 0 && !a.includes(l) || a.length === 0 && d.includes(l) ? !1 : m === r && f.includes(c);
134
134
  });
135
135
  return i.filter(o);
136
- }, q = (n, r, e, l, a) => {
136
+ }, M = (t, r, e, l, n) => {
137
137
  if (e === "KG" || Number(e) < 7) return [];
138
- const { goal_curriculum_map: i } = n, o = (s) => s.course_stream !== l ? !1 : b(s, a);
138
+ const { goal_curriculum_map: i } = t, o = (s) => s.course_stream !== l ? !1 : C(s, n);
139
139
  return i.filter(o).reduce((s, f) => {
140
140
  const {
141
141
  available_grades: m,
142
- goal_curriculum_standard: t,
142
+ goal_curriculum_standard: a,
143
143
  program_name: d,
144
144
  program_code: u
145
145
  } = f;
146
- return m.some((C) => C === e) && t === r && s.push({
146
+ return m.some((b) => b === e) && a === r && s.push({
147
147
  id: u,
148
148
  label: d
149
149
  }), s;
150
150
  }, []);
151
- }, O = (n) => {
151
+ }, k = (t) => {
152
152
  var e;
153
- return (e = p.find((l) => l.country_code === n)) == null ? void 0 : e.region_code;
154
- }, M = (n, r, e, l) => {
155
- if (n && e) {
156
- const { country_code: i, place_id: o } = n;
153
+ return (e = y.find((l) => l.country_code === t)) == null ? void 0 : e.region_code;
154
+ }, W = (t, r, e, l) => {
155
+ if (t && e) {
156
+ const { country_code: i, place_id: o } = t;
157
157
  return {
158
158
  committed: {},
159
159
  reviewed: {},
@@ -167,74 +167,74 @@ const A = (n, r) => {
167
167
  board: r ?? void 0
168
168
  };
169
169
  }
170
- const a = l ? O(l) : void 0;
170
+ const n = l ? k(l) : void 0;
171
171
  return e ? {
172
172
  committed: {},
173
173
  reviewed: {},
174
174
  grade: e,
175
- region: a,
175
+ region: n,
176
176
  board: r ?? void 0
177
177
  } : {
178
178
  committed: {},
179
179
  reviewed: {}
180
180
  };
181
- }, W = (n, r, e, l) => {
181
+ }, j = (t, r, e, l) => {
182
182
  if (r && l) {
183
- const { country_code: a, place_id: i } = r;
183
+ const { country_code: n, place_id: i } = r;
184
184
  return {
185
- ...n,
185
+ ...t,
186
186
  grade: l,
187
187
  schoolInfo: {
188
- countryCode: a,
188
+ countryCode: n,
189
189
  stateCode: "",
190
190
  id: i
191
191
  },
192
- board: n.board ?? e ?? void 0
192
+ board: t.board ?? e ?? void 0
193
193
  };
194
194
  }
195
- return n;
196
- }, j = (n, r, e, l, a, i, o) => {
197
- const { goal_curriculum_map: c } = n, s = r === "no-test", f = h(r);
198
- return c.find((t) => {
199
- const d = T({
200
- currentGoalData: t,
195
+ return t;
196
+ }, K = (t, r, e, l, n, i, o, c) => {
197
+ const { goal_curriculum_map: s } = t, f = r === "no-test", m = G(r);
198
+ return s.find((d) => {
199
+ const u = B({
200
+ currentGoalData: d,
201
201
  grade: e,
202
202
  currentCountryCode: o,
203
- selectedCategory: f,
204
- enrollmentType: a
205
- }), { goal_curriculum_standard: u } = t, _ = S({
206
- goalCurriculumStandard: u,
203
+ selectedCategory: m,
204
+ enrollmentType: n
205
+ }), { goal_curriculum_standard: _, is_live: g } = d, b = h({
206
+ goalCurriculumStandard: _,
207
207
  referenceStandard: i
208
- }), g = t.course_stream === l;
209
- return s ? g && d && _ : g && d;
208
+ }), v = d.course_stream === l, p = c === "CREATE" ? g : !0;
209
+ return f ? v && u && b && p : v && u && p;
210
210
  });
211
- }, K = (n) => {
212
- var a, i;
211
+ }, H = (t) => {
212
+ var n, i;
213
213
  let r = [], e = [];
214
- for (const o of n)
214
+ for (const o of t)
215
215
  o.title === "recommended" ? r = o.data : o.title === "others" && (e = o.data);
216
216
  const l = r.find((o) => o.isDefault && o.isRecommended);
217
217
  if (l)
218
218
  return l.id;
219
219
  if (r.length > 0)
220
- return (a = r[0]) == null ? void 0 : a.id;
220
+ return (n = r[0]) == null ? void 0 : n.id;
221
221
  if (e.length > 0)
222
222
  return (i = e[0]) == null ? void 0 : i.id;
223
223
  };
224
224
  export {
225
- j as appendPrimaryGoalCategoryToFormState,
226
- W as appendSchoolDataToFormState,
227
- E as clearNextFields,
228
- M as generateFormStateWithPrefilledSchoolData,
229
- F as getCurrenStep,
230
- R as getCurriculumStandardsFromConfig,
231
- K as getDefaultBoard,
232
- N as getGoalsFromConfig,
233
- U as getGradesBasedOnGoalAvailability,
234
- B as getGradesFromConfig,
235
- q as getMajorsFromConfigBasedOnBoardAndGrade,
236
- P as getPreferencesFromConfig,
237
- O as getRegionCodeBasedOnCountryCode,
238
- L as getSchoolTestsFromConfig
225
+ K as appendPrimaryGoalCategoryToFormState,
226
+ j as appendSchoolDataToFormState,
227
+ F as clearNextFields,
228
+ W as generateFormStateWithPrefilledSchoolData,
229
+ T as getCurrenStep,
230
+ N as getCurriculumStandardsFromConfig,
231
+ H as getDefaultBoard,
232
+ P as getGoalsFromConfig,
233
+ q as getGradesBasedOnGoalAvailability,
234
+ O as getGradesFromConfig,
235
+ M as getMajorsFromConfigBasedOnBoardAndGrade,
236
+ U as getPreferencesFromConfig,
237
+ k as getRegionCodeBasedOnCountryCode,
238
+ R as getSchoolTestsFromConfig
239
239
  };
240
240
  //# sourceMappingURL=milestone-create-helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"milestone-create-helpers.js","sources":["../../../../src/features/milestone/create/milestone-create-helpers.ts"],"sourcesContent":["import type IStudentSchool from '../../../types/models/school';\nimport type { ISectionOption } from '../../ui/section-list/section-list-types';\nimport type { TTestType } from '../types';\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 TMilestoneFormFlow,\n TPreferenceCategory,\n} from './milestone-create-types';\n\nimport { COUNTRY_MAP } from '../../../constants/country';\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';\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\ntype TOptions = {\n id: string;\n label: string;\n description?: string;\n};\n\ninterface IGetSchoolTestsFromConfig {\n (config: IMilestoneConfig): TOptions[];\n}\n\nconst getSchoolTestsFromConfig: IGetSchoolTestsFromConfig = config => {\n return config.academic_events.reduce<TOptions[]>((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): TOptions[];\n}\n\nconst computeCanIncludeCurrentGoal = (props: {\n currentGoalData: IGoalCurriculumMap;\n enrollmentType: TEnrollmentTypes;\n currentCountryCode?: string;\n grade?: string;\n selectedCategory?: string;\n}) => {\n const { currentGoalData, enrollmentType, currentCountryCode, grade, selectedCategory } = 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 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 },\n ): TCurriculumStandardOption[];\n}\n\nconst getCurriculumStandardsFromConfig: IGetCurriculumStandardsFromConfig = (\n config,\n { grade, countryCode, goalCategory, courseStream, classRatio, enrollmentType, flow },\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 if (\n classRatio &&\n goal.available_class_ratios.length > 0 &&\n !goal.available_class_ratios.includes(classRatio)\n )\n 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 // 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 // check grade availability\n if (!goal.available_grades.includes(grade)) 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 ): TOptions[];\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 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<TOptions[]>((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 ): TOptions[];\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 ({ preference_code: id, preference_name: label, preference_description: description }) => ({\n id,\n label,\n description,\n }),\n );\n};\n\ninterface IGetGradeBasedOnGoalAvailability {\n (\n config: IMilestoneConfig,\n selectedGoalCategory: string,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n ): TOptions[];\n}\n\n//* Grades where goals are available for selected goal category.\nconst getGradesBasedOnGoalAvailability: IGetGradeBasedOnGoalAvailability = (\n config,\n selectedGoalCategory,\n courseStream,\n enrollmentType,\n) => {\n const { goal_curriculum_map: goals } = config;\n\n const grades = getGradesFromConfig(config);\n\n const gradeAvailableGoals = ({ id }: TOptions) => {\n return goals\n .filter(item => item.course_stream === courseStream)\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 // 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 goalCategory === selectedGoalCategory && availableGrades.includes(id);\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 ): TOptions[];\n}\n\nconst getMajorsFromConfigBasedOnBoardAndGrade: IGetMajorsFromConfigBasedOnBoardAndGrade = (\n config,\n boardCode,\n grade,\n courseStream,\n enrollmentType,\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) return false;\n\n return checkEnrollmentAvailable(goalData, enrollmentType);\n };\n\n const majorsWithLabelId = goalCurriculumMap\n .filter(filterOnCourseStreamAndEnrollmentType)\n .reduce<TOptions[]>((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) => {\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 });\n const { goal_curriculum_standard: goalCurriculumStandard } = goalInfo;\n\n const currentBoardAvailable = getIfGoalCurriculumStandardIsAccessible({\n goalCurriculumStandard,\n referenceStandard: board,\n });\n\n const isSameCourse = goalInfo.course_stream === courseStream;\n\n if (isSchoolSuccessCategory) {\n return isSameCourse && isCurrentGoalAvailable && currentBoardAvailable;\n }\n\n return isSameCourse && isCurrentGoalAvailable;\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","blockedCountries","availableCountries","availableGrades","goalCategory","availableEnrollmentTypes","blockedEnrollmentTypes","isStudentEnrollmentTypeSupported","getStudentEnrollmentSupported","isStudentRegionBlocked","blockedCountry","isStudentRegionAvailable","availableCountry","isCurrentGradeAvailable","gradeInfo","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","getGradesBasedOnGoalAvailability","selectedGoalCategory","grades","gradeAvailableGoals","goalData","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","currentBoardAvailable","getIfGoalCurriculumStandardIsAccessible","isSameCourse","getDefaultBoard","data","recommendedBoards","otherBoards","category","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 IStudentSchool from '../../../types/models/school';\nimport type { ISectionOption } from '../../ui/section-list/section-list-types';\nimport type { TTestType } from '../types';\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 TMilestoneFormFlow,\n TPreferenceCategory,\n} from './milestone-create-types';\n\nimport { COUNTRY_MAP } from '../../../constants/country';\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';\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\ntype TOptions = {\n id: string;\n label: string;\n description?: string;\n};\n\ninterface IGetSchoolTestsFromConfig {\n (config: IMilestoneConfig): TOptions[];\n}\n\nconst getSchoolTestsFromConfig: IGetSchoolTestsFromConfig = config => {\n return config.academic_events.reduce<TOptions[]>((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): TOptions[];\n}\n\nconst computeCanIncludeCurrentGoal = (props: {\n currentGoalData: IGoalCurriculumMap;\n enrollmentType: TEnrollmentTypes;\n currentCountryCode?: string;\n grade?: string;\n selectedCategory?: string;\n}) => {\n const { currentGoalData, enrollmentType, currentCountryCode, grade, selectedCategory } = 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 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 },\n ): TCurriculumStandardOption[];\n}\n\nconst getCurriculumStandardsFromConfig: IGetCurriculumStandardsFromConfig = (\n config,\n { grade, countryCode, goalCategory, courseStream, classRatio, enrollmentType, flow },\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 if (\n classRatio &&\n goal.available_class_ratios.length > 0 &&\n !goal.available_class_ratios.includes(classRatio)\n )\n 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 // 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 // check grade availability\n if (!goal.available_grades.includes(grade)) 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 ): TOptions[];\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 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<TOptions[]>((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 ): TOptions[];\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 ({ preference_code: id, preference_name: label, preference_description: description }) => ({\n id,\n label,\n description,\n }),\n );\n};\n\ninterface IGetGradeBasedOnGoalAvailability {\n (\n config: IMilestoneConfig,\n selectedGoalCategory: string,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n ): TOptions[];\n}\n\n//* Grades where goals are available for selected goal category.\nconst getGradesBasedOnGoalAvailability: IGetGradeBasedOnGoalAvailability = (\n config,\n selectedGoalCategory,\n courseStream,\n enrollmentType,\n) => {\n const { goal_curriculum_map: goals } = config;\n\n const grades = getGradesFromConfig(config);\n\n const gradeAvailableGoals = ({ id }: TOptions) => {\n return goals\n .filter(item => item.course_stream === courseStream)\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 // 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 goalCategory === selectedGoalCategory && availableGrades.includes(id);\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 ): TOptions[];\n}\n\nconst getMajorsFromConfigBasedOnBoardAndGrade: IGetMajorsFromConfigBasedOnBoardAndGrade = (\n config,\n boardCode,\n grade,\n courseStream,\n enrollmentType,\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) return false;\n\n return checkEnrollmentAvailable(goalData, enrollmentType);\n };\n\n const majorsWithLabelId = goalCurriculumMap\n .filter(filterOnCourseStreamAndEnrollmentType)\n .reduce<TOptions[]>((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) => {\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 });\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 if (isSchoolSuccessCategory) {\n return (\n isSameCourse && isCurrentGoalAvailable && currentBoardAvailable && canIncludeCurrentGoal\n );\n }\n\n return isSameCourse && isCurrentGoalAvailable && canIncludeCurrentGoal;\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","blockedCountries","availableCountries","availableGrades","goalCategory","availableEnrollmentTypes","blockedEnrollmentTypes","isStudentEnrollmentTypeSupported","getStudentEnrollmentSupported","isStudentRegionBlocked","blockedCountry","isStudentRegionAvailable","availableCountry","isCurrentGradeAvailable","gradeInfo","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","getGradesBasedOnGoalAvailability","selectedGoalCategory","grades","gradeAvailableGoals","goalData","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","canIncludeCurrentGoal","getDefaultBoard","data","recommendedBoards","otherBoards","category","defaultBoard","_b"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuemath/leap",
3
- "version": "3.0.27-beta-0.4",
3
+ "version": "3.0.27-beta-0.5",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"