@cuemath/leap 3.5.37 → 3.5.38

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 (24) hide show
  1. package/dist/features/milestone/constants.js +28 -15
  2. package/dist/features/milestone/constants.js.map +1 -1
  3. package/dist/features/milestone/create/milestone-create-helpers.js +43 -42
  4. package/dist/features/milestone/create/milestone-create-helpers.js.map +1 -1
  5. package/dist/features/trial-session/comps/school-goals/school-goals.js +87 -83
  6. package/dist/features/trial-session/comps/school-goals/school-goals.js.map +1 -1
  7. package/dist/features/trial-session/comps/worksheet/worksheet.js +42 -33
  8. package/dist/features/trial-session/comps/worksheet/worksheet.js.map +1 -1
  9. package/dist/features/trial-session/helper.js +69 -66
  10. package/dist/features/trial-session/helper.js.map +1 -1
  11. package/dist/features/trial-session/hooks/use-slide-config-update.js +61 -39
  12. package/dist/features/trial-session/hooks/use-slide-config-update.js.map +1 -1
  13. package/dist/features/trial-session/hooks/use-trial-session-navigation.js +141 -129
  14. package/dist/features/trial-session/hooks/use-trial-session-navigation.js.map +1 -1
  15. package/dist/features/trial-session/left-panel/index.js.map +1 -1
  16. package/dist/features/trial-session/trial-session-constants.js +16 -9
  17. package/dist/features/trial-session/trial-session-constants.js.map +1 -1
  18. package/dist/features/trial-session/trial-session-types.js.map +1 -1
  19. package/dist/features/trial-session/trial-session-view.js +17 -16
  20. package/dist/features/trial-session/trial-session-view.js.map +1 -1
  21. package/dist/features/trial-session/trial-session.js +68 -66
  22. package/dist/features/trial-session/trial-session.js.map +1 -1
  23. package/dist/index.d.ts +3 -0
  24. package/package.json +1 -1
@@ -1,110 +1,114 @@
1
- import { jsx as Y } from "react/jsx-runtime";
2
- import { memo as j, useMemo as p, useCallback as l, useEffect as h } from "react";
3
- import { GOAL_CATEGORY as m } from "../../../milestone/constants.js";
1
+ import { jsx as w } from "react/jsx-runtime";
2
+ import { memo as B, useMemo as h, useCallback as g, useEffect as E } from "react";
3
+ import { GOAL_CATEGORY as n, ENROLLMENT_TYPES as y } from "../../../milestone/constants.js";
4
4
  import { getCategorizedCurriculumStandards as q } from "../../../milestone/create/comps/class-details-step/class-details-utils.js";
5
- import { getGradesFromConfig as v, getGoalsFromConfig as z } from "../../../milestone/create/milestone-create-helpers.js";
6
- import { epochTimestampAfterOneYear as L } from "../../../utils/utils.js";
7
- import { useTrialSessionContext as M } from "../../context/use-trial-session-context.js";
8
- import { isPLASource as V, updateGoalInFormData as b } from "../../helper.js";
9
- import J from "./school-goals-view.js";
10
- const to = j(function() {
5
+ import { getGradesFromConfig as z, getGoalsFromConfig as V } from "../../../milestone/create/milestone-create-helpers.js";
6
+ import { epochTimestampAfterOneYear as H } from "../../../utils/utils.js";
7
+ import { useTrialSessionContext as J } from "../../context/use-trial-session-context.js";
8
+ import { isPLASource as K, updateGoalInFormData as b } from "../../helper.js";
9
+ import Q from "./school-goals-view.js";
10
+ import { HIGH_ENROLLMENT_PROGRAMS_MAP as W } from "../../trial-session-constants.js";
11
+ const mo = B(function() {
11
12
  const {
12
- milestoneConfig: n,
13
+ milestoneConfig: a,
13
14
  formData: U,
14
- updateSlideConfig: a,
15
- updateButtonState: _,
16
- onRemoveOptionalSlides: S,
17
- trialHomeData: y
18
- } = M(), { name: G, grade: e, goals: t, curriculum: u, numberInNameError: A } = U || {}, { demo_info: H, intel_student: f, student: T } = y, { enrollment_type: c } = T || {}, { stream: i, region_data: D } = H || {}, { opportunity_country: d = "US" } = D || {}, I = v(n), g = V(f == null ? void 0 : f.source), F = p(
19
- () => q(n, {
20
- countryCode: d,
21
- grade: e ?? "",
22
- goalCategory: m.SCHOOL_SUCCESS,
23
- courseStream: i,
24
- enrollmentType: c,
15
+ updateSlideConfig: e,
16
+ updateButtonState: G,
17
+ onRemoveOptionalSlides: C,
18
+ trialHomeData: A
19
+ } = J(), { name: O, grade: r, goals: t, curriculum: l, numberInNameError: N } = U || {}, { demo_info: I, intel_student: p, student: P } = A, { enrollment_type: s } = P || {}, { stream: m, region_data: R } = I || {}, { opportunity_country: i = "US" } = R || {}, v = z(a), c = K(p == null ? void 0 : p.source), S = Object.keys(W), D = h(
20
+ () => q(a, {
21
+ countryCode: i,
22
+ grade: r ?? "",
23
+ goalCategory: n.SCHOOL_SUCCESS,
24
+ courseStream: m,
25
+ enrollmentType: s,
25
26
  flow: "CREATE"
26
27
  }),
27
- [n, d, e, i, c]
28
- ), C = p(
29
- () => z(n, {
30
- countryCode: d,
31
- grade: e ?? "",
32
- goalCategory: m.SCHOOL_SUCCESS,
33
- courseStream: i,
34
- curriculumStandard: u,
35
- enrollmentType: c
28
+ [a, i, r, m, s]
29
+ ), d = h(
30
+ () => V(a, {
31
+ countryCode: i,
32
+ grade: r ?? "",
33
+ goalCategory: n.SCHOOL_SUCCESS,
34
+ courseStream: m,
35
+ curriculumStandard: l,
36
+ enrollmentType: s
36
37
  }),
37
- [n, d, e, i, u, c]
38
- ), { goal_code: O } = p(
39
- () => (t == null ? void 0 : t.find((o) => o.goal_category === m.SCHOOL_SUCCESS)) ?? {},
38
+ [a, i, r, m, l, s]
39
+ ), { goal_code: u } = h(
40
+ () => (t == null ? void 0 : t.find((o) => o.goal_category === n.SCHOOL_SUCCESS)) ?? {},
40
41
  [t]
41
- ), E = !!(G && e && u && O), r = l(
42
- (o, s) => {
43
- a({
44
- [o]: s,
45
- ...o === "grade" || o === "curriculum" ? { goals: [] } : {}
46
- });
47
- },
48
- [a]
49
- ), N = l(
42
+ ), T = !!(O && r && l && u), M = g(
50
43
  (o) => {
51
- a({ numberInNameError: !1 }), r("name", o.target.value);
44
+ e({
45
+ name: o.target.value,
46
+ numberInNameError: !1
47
+ });
52
48
  },
53
- [a, r]
54
- ), x = l(
55
- (o, s) => {
56
- const { label: P } = s, R = b(t, m.SCHOOL_SUCCESS, {
49
+ [e]
50
+ ), F = g(
51
+ (o, f) => {
52
+ const { label: _, programCode: L = "" } = f, j = b(t, n.SCHOOL_SUCCESS, {
57
53
  goal_code: o,
58
- milestone_name: P,
59
- milestone_date_ts: L(),
60
- publish: g
54
+ milestone_name: _,
55
+ milestone_date_ts: H(),
56
+ publish: c,
57
+ program_code: L
58
+ }), k = S.includes(L) ? y.HIGH : void 0;
59
+ e({
60
+ goals: j,
61
+ enrollmentType: k
61
62
  });
62
- a({ goals: R });
63
63
  },
64
- [t, g, a]
65
- ), w = l(
66
- (o) => r("curriculum", o),
67
- [r]
68
- ), B = l(
64
+ [t, c, e, S]
65
+ ), x = g(
66
+ (o) => e({ curriculum: o, goals: [], enrollmentType: void 0 }),
67
+ [e]
68
+ ), Y = g(
69
69
  (o) => {
70
- r("grade", o), r("curriculum", "");
70
+ e({ grade: o, curriculum: "", goals: [], enrollmentType: void 0 });
71
71
  },
72
- [r]
72
+ [e]
73
73
  );
74
- return h(() => {
75
- _("right", { isDisabled: !E, isLoading: !1 });
76
- }, [E, _]), h(() => {
77
- e && (S == null || S(e));
78
- }, [e]), h(() => {
79
- const o = C.length === 1 ? C[0] : void 0;
74
+ return E(() => {
75
+ G("right", { isDisabled: !T, isLoading: !1 });
76
+ }, [T, G]), E(() => {
77
+ r && (C == null || C(r, u));
78
+ }, [r, u]), E(() => {
79
+ const o = d.length === 1 ? d[0] : void 0;
80
80
  if (o) {
81
- const s = b(t, m.SCHOOL_SUCCESS, {
81
+ const f = b(t, n.SCHOOL_SUCCESS, {
82
82
  goal_code: o.id ?? "",
83
83
  milestone_name: o.label ?? "",
84
- milestone_date_ts: L(),
85
- publish: g
84
+ milestone_date_ts: H(),
85
+ publish: c,
86
+ program_code: o.programCode
87
+ }), _ = S.includes((o == null ? void 0 : o.programCode) ?? "") ? y.HIGH : void 0;
88
+ e({
89
+ goals: f,
90
+ enrollmentType: _
86
91
  });
87
- a({ goals: s });
88
92
  }
89
- }, [C, g]), /* @__PURE__ */ Y(
90
- J,
93
+ }, [d, c]), /* @__PURE__ */ w(
94
+ Q,
91
95
  {
92
- name: G,
93
- grade: e,
94
- grades: I,
95
- goalsList: C,
96
- curriculum: u,
97
- selectedGoal: O,
98
- numberInNameError: A,
99
- curriculumStandards: F,
100
- onNameChange: N,
101
- onGoalChange: x,
102
- onGradeChange: B,
103
- onCurriculumChange: w
96
+ name: O,
97
+ grade: r,
98
+ grades: v,
99
+ goalsList: d,
100
+ curriculum: l,
101
+ selectedGoal: u,
102
+ numberInNameError: N,
103
+ curriculumStandards: D,
104
+ onNameChange: M,
105
+ onGoalChange: F,
106
+ onGradeChange: Y,
107
+ onCurriculumChange: x
104
108
  }
105
109
  );
106
110
  });
107
111
  export {
108
- to as default
112
+ mo as default
109
113
  };
110
114
  //# sourceMappingURL=school-goals.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"school-goals.js","sources":["../../../../../src/features/trial-session/comps/school-goals/school-goals.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useMemo, type InputHTMLAttributes } from 'react';\n\nimport { GOAL_CATEGORY } from '../../../milestone/constants';\nimport { getCategorizedCurriculumStandards } from '../../../milestone/create/comps/class-details-step/class-details-utils';\nimport {\n getGoalsFromConfig,\n getGradesFromConfig,\n} from '../../../milestone/create/milestone-create-helpers';\nimport type { ISelectOption } from '../../../ui/inputs/base-select-input/base-select-input-types';\nimport { epochTimestampAfterOneYear } from '../../../utils/utils';\nimport { useTrialSessionContext } from '../../context/use-trial-session-context';\nimport { isPLASource, updateGoalInFormData } from '../../helper';\nimport SchoolGoalsView from './school-goals-view';\n\nconst SchoolGoals = memo(function SchoolGoals() {\n const {\n milestoneConfig,\n formData,\n updateSlideConfig,\n updateButtonState,\n onRemoveOptionalSlides,\n trialHomeData,\n } = useTrialSessionContext();\n const { name, grade, goals, curriculum, numberInNameError } = formData || {};\n\n const { demo_info: demoInfo, intel_student: intelStudent, student } = trialHomeData;\n const { enrollment_type: enrollmentType } = student || {};\n const { stream, region_data: regionData } = demoInfo || {};\n const { opportunity_country: countryCode = 'US' } = regionData || {};\n const grades = getGradesFromConfig(milestoneConfig);\n const isPLA = isPLASource(intelStudent?.source);\n\n const curriculumStandards = useMemo(\n () =>\n getCategorizedCurriculumStandards(milestoneConfig, {\n countryCode,\n grade: grade ?? '',\n goalCategory: GOAL_CATEGORY.SCHOOL_SUCCESS,\n courseStream: stream,\n enrollmentType: enrollmentType,\n flow: 'CREATE',\n }),\n [milestoneConfig, countryCode, grade, stream, enrollmentType],\n );\n\n const goalsList = useMemo(\n () =>\n getGoalsFromConfig(milestoneConfig, {\n countryCode,\n grade: grade ?? '',\n goalCategory: GOAL_CATEGORY.SCHOOL_SUCCESS,\n courseStream: stream,\n curriculumStandard: curriculum,\n enrollmentType: enrollmentType,\n }),\n [milestoneConfig, countryCode, grade, stream, curriculum, enrollmentType],\n );\n\n const { goal_code: selectedGoal } = useMemo(\n () => goals?.find(goal => goal.goal_category === GOAL_CATEGORY.SCHOOL_SUCCESS) ?? {},\n [goals],\n );\n\n const hasRequiredFields = Boolean(name && grade && curriculum && selectedGoal);\n\n const updateStudentInformation = useCallback(\n (key: string, value: string) => {\n updateSlideConfig({\n [key]: value,\n ...(key === 'grade' || key === 'curriculum' ? { goals: [] } : {}),\n });\n },\n [updateSlideConfig],\n );\n\n const handleNameChange = useCallback<\n NonNullable<InputHTMLAttributes<HTMLInputElement>['onChange']>\n >(\n event => {\n updateSlideConfig({ numberInNameError: false });\n updateStudentInformation('name', event.target.value);\n },\n [updateSlideConfig, updateStudentInformation],\n );\n\n const handleGoalChange = useCallback(\n (value: string, option: ISelectOption<string | number>) => {\n const { label } = option;\n\n const updatedGoals = updateGoalInFormData(goals, GOAL_CATEGORY.SCHOOL_SUCCESS, {\n goal_code: value,\n milestone_name: label,\n milestone_date_ts: epochTimestampAfterOneYear(),\n publish: isPLA,\n });\n\n updateSlideConfig({ goals: updatedGoals });\n },\n [goals, isPLA, updateSlideConfig],\n );\n\n const handleCurriculumChange = useCallback(\n (value: string) => updateStudentInformation('curriculum', value),\n [updateStudentInformation],\n );\n\n const handleGradeChange = useCallback(\n (value: string) => {\n updateStudentInformation('grade', value);\n updateStudentInformation('curriculum', '');\n },\n [updateStudentInformation],\n );\n\n useEffect(() => {\n updateButtonState('right', { isDisabled: !hasRequiredFields, isLoading: false });\n }, [hasRequiredFields, updateButtonState]);\n\n useEffect(() => {\n if (grade) {\n onRemoveOptionalSlides?.(grade);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [grade]);\n\n useEffect(() => {\n // If there is only one goal in the list, set it as the selected goal\n // and update the form data with the goal code, milestone name, and date\n const defaultGoal = goalsList.length === 1 ? goalsList[0] : undefined;\n\n if (defaultGoal) {\n const goalToUpdate = updateGoalInFormData(goals, GOAL_CATEGORY.SCHOOL_SUCCESS, {\n goal_code: defaultGoal.id ?? '',\n milestone_name: defaultGoal.label ?? '',\n milestone_date_ts: epochTimestampAfterOneYear(),\n publish: isPLA,\n });\n\n updateSlideConfig({ goals: goalToUpdate });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [goalsList, isPLA]);\n\n return (\n <SchoolGoalsView\n name={name}\n grade={grade}\n grades={grades}\n goalsList={goalsList}\n curriculum={curriculum}\n selectedGoal={selectedGoal}\n numberInNameError={numberInNameError}\n curriculumStandards={curriculumStandards}\n onNameChange={handleNameChange}\n onGoalChange={handleGoalChange}\n onGradeChange={handleGradeChange}\n onCurriculumChange={handleCurriculumChange}\n />\n );\n});\n\nexport default SchoolGoals;\n"],"names":["SchoolGoals","memo","milestoneConfig","formData","updateSlideConfig","updateButtonState","onRemoveOptionalSlides","trialHomeData","useTrialSessionContext","name","grade","goals","curriculum","numberInNameError","demoInfo","intelStudent","student","enrollmentType","stream","regionData","countryCode","grades","getGradesFromConfig","isPLA","isPLASource","curriculumStandards","useMemo","getCategorizedCurriculumStandards","GOAL_CATEGORY","goalsList","getGoalsFromConfig","selectedGoal","goal","hasRequiredFields","updateStudentInformation","useCallback","key","value","handleNameChange","event","handleGoalChange","option","label","updatedGoals","updateGoalInFormData","epochTimestampAfterOneYear","handleCurriculumChange","handleGradeChange","useEffect","defaultGoal","goalToUpdate","jsx","SchoolGoalsView"],"mappings":";;;;;;;;;AAcM,MAAAA,KAAcC,EAAK,WAAuB;AACxC,QAAA;AAAA,IACJ,iBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,wBAAAC;AAAA,IACA,eAAAC;AAAA,MACEC,EAAuB,GACrB,EAAE,MAAAC,GAAM,OAAAC,GAAO,OAAAC,GAAO,YAAAC,GAAY,mBAAAC,EAAkB,IAAIV,KAAY,IAEpE,EAAE,WAAWW,GAAU,eAAeC,GAAc,SAAAC,EAAY,IAAAT,GAChE,EAAE,iBAAiBU,MAAmBD,KAAW,CAAA,GACjD,EAAE,QAAAE,GAAQ,aAAaC,EAAW,IAAIL,KAAY,CAAA,GAClD,EAAE,qBAAqBM,IAAc,KAAK,IAAID,KAAc,CAAA,GAC5DE,IAASC,EAAoBpB,CAAe,GAC5CqB,IAAQC,EAAYT,KAAA,gBAAAA,EAAc,MAAM,GAExCU,IAAsBC;AAAA,IAC1B,MACEC,EAAkCzB,GAAiB;AAAA,MACjD,aAAAkB;AAAA,MACA,OAAOV,KAAS;AAAA,MAChB,cAAckB,EAAc;AAAA,MAC5B,cAAcV;AAAA,MACd,gBAAAD;AAAA,MACA,MAAM;AAAA,IAAA,CACP;AAAA,IACH,CAACf,GAAiBkB,GAAaV,GAAOQ,GAAQD,CAAc;AAAA,EAAA,GAGxDY,IAAYH;AAAA,IAChB,MACEI,EAAmB5B,GAAiB;AAAA,MAClC,aAAAkB;AAAA,MACA,OAAOV,KAAS;AAAA,MAChB,cAAckB,EAAc;AAAA,MAC5B,cAAcV;AAAA,MACd,oBAAoBN;AAAA,MACpB,gBAAAK;AAAA,IAAA,CACD;AAAA,IACH,CAACf,GAAiBkB,GAAaV,GAAOQ,GAAQN,GAAYK,CAAc;AAAA,EAAA,GAGpE,EAAE,WAAWc,EAAA,IAAiBL;AAAA,IAClC,OAAMf,KAAA,gBAAAA,EAAO,KAAK,CAAAqB,MAAQA,EAAK,kBAAkBJ,EAAc,oBAAmB,CAAC;AAAA,IACnF,CAACjB,CAAK;AAAA,EAAA,GAGFsB,IAAoB,GAAQxB,KAAQC,KAASE,KAAcmB,IAE3DG,IAA2BC;AAAA,IAC/B,CAACC,GAAaC,MAAkB;AACZ,MAAAjC,EAAA;AAAA,QAChB,CAACgC,CAAG,GAAGC;AAAA,QACP,GAAID,MAAQ,WAAWA,MAAQ,eAAe,EAAE,OAAO,CAAG,EAAA,IAAI,CAAC;AAAA,MAAA,CAChE;AAAA,IACH;AAAA,IACA,CAAChC,CAAiB;AAAA,EAAA,GAGdkC,IAAmBH;AAAA,IAGvB,CAASI,MAAA;AACW,MAAAnC,EAAA,EAAE,mBAAmB,GAAA,CAAO,GACrB8B,EAAA,QAAQK,EAAM,OAAO,KAAK;AAAA,IACrD;AAAA,IACA,CAACnC,GAAmB8B,CAAwB;AAAA,EAAA,GAGxCM,IAAmBL;AAAA,IACvB,CAACE,GAAeI,MAA2C;AACnD,YAAA,EAAE,OAAAC,EAAU,IAAAD,GAEZE,IAAeC,EAAqBjC,GAAOiB,EAAc,gBAAgB;AAAA,QAC7E,WAAWS;AAAA,QACX,gBAAgBK;AAAA,QAChB,mBAAmBG,EAA2B;AAAA,QAC9C,SAAStB;AAAA,MAAA,CACV;AAEiB,MAAAnB,EAAA,EAAE,OAAOuC,EAAA,CAAc;AAAA,IAC3C;AAAA,IACA,CAAChC,GAAOY,GAAOnB,CAAiB;AAAA,EAAA,GAG5B0C,IAAyBX;AAAA,IAC7B,CAACE,MAAkBH,EAAyB,cAAcG,CAAK;AAAA,IAC/D,CAACH,CAAwB;AAAA,EAAA,GAGrBa,IAAoBZ;AAAA,IACxB,CAACE,MAAkB;AACjB,MAAAH,EAAyB,SAASG,CAAK,GACvCH,EAAyB,cAAc,EAAE;AAAA,IAC3C;AAAA,IACA,CAACA,CAAwB;AAAA,EAAA;AAG3B,SAAAc,EAAU,MAAM;AACd,IAAA3C,EAAkB,SAAS,EAAE,YAAY,CAAC4B,GAAmB,WAAW,IAAO;AAAA,EAAA,GAC9E,CAACA,GAAmB5B,CAAiB,CAAC,GAEzC2C,EAAU,MAAM;AACd,IAAItC,MACFJ,KAAA,QAAAA,EAAyBI;AAAA,EAC3B,GAEC,CAACA,CAAK,CAAC,GAEVsC,EAAU,MAAM;AAGd,UAAMC,IAAcpB,EAAU,WAAW,IAAIA,EAAU,CAAC,IAAI;AAE5D,QAAIoB,GAAa;AACf,YAAMC,IAAeN,EAAqBjC,GAAOiB,EAAc,gBAAgB;AAAA,QAC7E,WAAWqB,EAAY,MAAM;AAAA,QAC7B,gBAAgBA,EAAY,SAAS;AAAA,QACrC,mBAAmBJ,EAA2B;AAAA,QAC9C,SAAStB;AAAA,MAAA,CACV;AAEiB,MAAAnB,EAAA,EAAE,OAAO8C,EAAA,CAAc;AAAA,IAC3C;AAAA,EAAA,GAEC,CAACrB,GAAWN,CAAK,CAAC,GAGnB,gBAAA4B;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAA3C;AAAA,MACA,OAAAC;AAAA,MACA,QAAAW;AAAA,MACA,WAAAQ;AAAA,MACA,YAAAjB;AAAA,MACA,cAAAmB;AAAA,MACA,mBAAAlB;AAAA,MACA,qBAAAY;AAAA,MACA,cAAca;AAAA,MACd,cAAcE;AAAA,MACd,eAAeO;AAAA,MACf,oBAAoBD;AAAA,IAAA;AAAA,EAAA;AAG1B,CAAC;"}
1
+ {"version":3,"file":"school-goals.js","sources":["../../../../../src/features/trial-session/comps/school-goals/school-goals.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useMemo, type InputHTMLAttributes } from 'react';\n\nimport { ENROLLMENT_TYPES, GOAL_CATEGORY } from '../../../milestone/constants';\nimport { getCategorizedCurriculumStandards } from '../../../milestone/create/comps/class-details-step/class-details-utils';\nimport {\n getGoalsFromConfig,\n getGradesFromConfig,\n} from '../../../milestone/create/milestone-create-helpers';\nimport type { ISelectOption } from '../../../ui/inputs/base-select-input/base-select-input-types';\nimport { epochTimestampAfterOneYear } from '../../../utils/utils';\nimport { useTrialSessionContext } from '../../context/use-trial-session-context';\nimport { isPLASource, updateGoalInFormData } from '../../helper';\nimport SchoolGoalsView from './school-goals-view';\nimport { HIGH_ENROLLMENT_PROGRAMS_MAP } from '../../trial-session-constants';\n\nconst SchoolGoals = memo(function SchoolGoals() {\n const {\n milestoneConfig,\n formData,\n updateSlideConfig,\n updateButtonState,\n onRemoveOptionalSlides,\n trialHomeData,\n } = useTrialSessionContext();\n const { name, grade, goals, curriculum, numberInNameError } = formData || {};\n\n const { demo_info: demoInfo, intel_student: intelStudent, student } = trialHomeData;\n const { enrollment_type: enrollmentType } = student || {};\n const { stream, region_data: regionData } = demoInfo || {};\n const { opportunity_country: countryCode = 'US' } = regionData || {};\n const grades = getGradesFromConfig(milestoneConfig);\n const isPLA = isPLASource(intelStudent?.source);\n const highEnrollmentPrograms = Object.keys(HIGH_ENROLLMENT_PROGRAMS_MAP);\n\n const curriculumStandards = useMemo(\n () =>\n getCategorizedCurriculumStandards(milestoneConfig, {\n countryCode,\n grade: grade ?? '',\n goalCategory: GOAL_CATEGORY.SCHOOL_SUCCESS,\n courseStream: stream,\n enrollmentType: enrollmentType,\n flow: 'CREATE',\n }),\n [milestoneConfig, countryCode, grade, stream, enrollmentType],\n );\n\n const goalsList = useMemo(\n () =>\n getGoalsFromConfig(milestoneConfig, {\n countryCode,\n grade: grade ?? '',\n goalCategory: GOAL_CATEGORY.SCHOOL_SUCCESS,\n courseStream: stream,\n curriculumStandard: curriculum,\n enrollmentType: enrollmentType,\n }),\n [milestoneConfig, countryCode, grade, stream, curriculum, enrollmentType],\n );\n\n const { goal_code: selectedGoal } = useMemo(\n () => goals?.find(goal => goal.goal_category === GOAL_CATEGORY.SCHOOL_SUCCESS) ?? {},\n [goals],\n );\n\n const hasRequiredFields = Boolean(name && grade && curriculum && selectedGoal);\n\n const handleNameChange = useCallback<\n NonNullable<InputHTMLAttributes<HTMLInputElement>['onChange']>\n >(\n event => {\n updateSlideConfig({\n name: event.target.value,\n numberInNameError: false,\n });\n },\n [updateSlideConfig],\n );\n\n const handleGoalChange = useCallback(\n (value: string, option: ISelectOption<string | number>) => {\n const { label, programCode = '' } = option;\n\n const updatedGoals = updateGoalInFormData(goals, GOAL_CATEGORY.SCHOOL_SUCCESS, {\n goal_code: value,\n milestone_name: label,\n milestone_date_ts: epochTimestampAfterOneYear(),\n publish: isPLA,\n program_code: programCode as string,\n });\n\n const enrollmentToUpdate = highEnrollmentPrograms.includes(programCode as string)\n ? ENROLLMENT_TYPES.HIGH\n : undefined;\n\n updateSlideConfig({\n goals: updatedGoals,\n enrollmentType: enrollmentToUpdate,\n });\n },\n [goals, isPLA, updateSlideConfig, highEnrollmentPrograms],\n );\n\n const handleCurriculumChange = useCallback(\n (value: string) =>\n updateSlideConfig({ curriculum: value, goals: [], enrollmentType: undefined }),\n [updateSlideConfig],\n );\n\n const handleGradeChange = useCallback(\n (value: string) => {\n updateSlideConfig({ grade: value, curriculum: '', goals: [], enrollmentType: undefined });\n },\n [updateSlideConfig],\n );\n\n useEffect(() => {\n updateButtonState('right', { isDisabled: !hasRequiredFields, isLoading: false });\n }, [hasRequiredFields, updateButtonState]);\n\n useEffect(() => {\n if (grade) {\n onRemoveOptionalSlides?.(grade, selectedGoal);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [grade, selectedGoal]);\n\n useEffect(() => {\n // If there is only one goal in the list, set it as the selected goal\n // and update the form data with the goal code, milestone name, and date\n const defaultGoal = goalsList.length === 1 ? goalsList[0] : undefined;\n\n if (defaultGoal) {\n const goalToUpdate = updateGoalInFormData(goals, GOAL_CATEGORY.SCHOOL_SUCCESS, {\n goal_code: defaultGoal.id ?? '',\n milestone_name: defaultGoal.label ?? '',\n milestone_date_ts: epochTimestampAfterOneYear(),\n publish: isPLA,\n program_code: defaultGoal.programCode,\n });\n\n const enrollmentToUpdate = highEnrollmentPrograms.includes(defaultGoal?.programCode ?? '')\n ? ENROLLMENT_TYPES.HIGH\n : undefined;\n\n updateSlideConfig({\n goals: goalToUpdate,\n enrollmentType: enrollmentToUpdate,\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [goalsList, isPLA]);\n\n return (\n <SchoolGoalsView\n name={name}\n grade={grade}\n grades={grades}\n goalsList={goalsList}\n curriculum={curriculum}\n selectedGoal={selectedGoal}\n numberInNameError={numberInNameError}\n curriculumStandards={curriculumStandards}\n onNameChange={handleNameChange}\n onGoalChange={handleGoalChange}\n onGradeChange={handleGradeChange}\n onCurriculumChange={handleCurriculumChange}\n />\n );\n});\n\nexport default SchoolGoals;\n"],"names":["SchoolGoals","memo","milestoneConfig","formData","updateSlideConfig","updateButtonState","onRemoveOptionalSlides","trialHomeData","useTrialSessionContext","name","grade","goals","curriculum","numberInNameError","demoInfo","intelStudent","student","enrollmentType","stream","regionData","countryCode","grades","getGradesFromConfig","isPLA","isPLASource","highEnrollmentPrograms","HIGH_ENROLLMENT_PROGRAMS_MAP","curriculumStandards","useMemo","getCategorizedCurriculumStandards","GOAL_CATEGORY","goalsList","getGoalsFromConfig","selectedGoal","goal","hasRequiredFields","handleNameChange","useCallback","event","handleGoalChange","value","option","label","programCode","updatedGoals","updateGoalInFormData","epochTimestampAfterOneYear","enrollmentToUpdate","ENROLLMENT_TYPES","handleCurriculumChange","handleGradeChange","useEffect","defaultGoal","goalToUpdate","jsx","SchoolGoalsView"],"mappings":"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"}
@@ -1,43 +1,52 @@
1
- import { jsx as u } from "react/jsx-runtime";
2
- import { useState as p, useCallback as D, useEffect as E } from "react";
3
- import N from "../../../ui/error/error.js";
4
- import W from "../../../ui/loader/app-loader/app-loader.js";
5
- import { useResumeTrialWorksheet as b } from "../../api/trial-nodes.js";
6
- import { useTrialSessionContext as j } from "../../context/use-trial-session-context.js";
7
- const q = () => {
8
- const { isTeacher: r, studentId: s, worksheet: n, formData: l, updateSlideConfig: h, trialHomeData: _ } = j(), [g, i] = p(!1), [a, y] = p(!1), { resetAttempt: e } = l || {}, { demo_info: I } = _, { region_data: C, course: c } = I || {}, { opportunity_country: d = "US" } = C || {}, P = (S, f) => {
9
- if (S && i(!0), f) {
1
+ import { jsx as l } from "react/jsx-runtime";
2
+ import { useState as h, useMemo as k, useCallback as G, useEffect as H } from "react";
3
+ import M from "../../../ui/error/error.js";
4
+ import N from "../../../ui/loader/app-loader/app-loader.js";
5
+ import { useResumeTrialWorksheet as x } from "../../api/trial-nodes.js";
6
+ import { useTrialSessionContext as D } from "../../context/use-trial-session-context.js";
7
+ import { GOAL_CATEGORY as U } from "../../../milestone/constants.js";
8
+ import { HIGH_ENROLLMENT_PROGRAMS_MAP as W } from "../../trial-session-constants.js";
9
+ const F = () => {
10
+ const { isTeacher: n, studentId: i, worksheet: a, formData: S, updateSlideConfig: g, trialHomeData: C } = D(), [y, c] = h(!1), [d, A] = h(!1), { goals: o, resetAttempt: t } = S || {}, { demo_info: I } = C, { region_data: T, course: m } = I || {}, { opportunity_country: f = "US" } = T || {}, { program_code: u = "" } = k(
11
+ () => (o == null ? void 0 : o.find((e) => e.goal_category === U.SCHOOL_SUCCESS)) ?? {},
12
+ [o]
13
+ ), E = (e, _) => {
14
+ if (e && c(!0), _) {
10
15
  const {
11
- user_node_id: T,
12
- node_id: k,
13
- user_attempt_id: A,
14
- node_type: x
15
- } = f;
16
- y(!0), h({ userNodeId: T, nodeId: k, attemptId: A, nodeType: x, resetAttempt: !1 });
16
+ user_node_id: P,
17
+ node_id: O,
18
+ user_attempt_id: L,
19
+ node_type: R
20
+ } = _;
21
+ A(!0), g({ userNodeId: P, nodeId: O, attemptId: L, nodeType: R, resetAttempt: !1 });
22
+ }
23
+ }, { patch: p, isProcessing: r } = x({
24
+ onComplete: E
25
+ }), s = G(() => {
26
+ if (n && !r && !d) {
27
+ const e = W[u] || m;
28
+ c(!1), p(i, {
29
+ course: e,
30
+ country_code: f,
31
+ reset_attempt: t === void 0 || t
32
+ });
17
33
  }
18
- }, { patch: m, isProcessing: t } = b({
19
- onComplete: P
20
- }), o = D(() => {
21
- r && !t && !a && (i(!1), m(s, {
22
- country_code: d,
23
- course: c,
24
- reset_attempt: e === void 0 || e
25
- }));
26
34
  }, [
27
- d,
28
- c,
29
- r,
35
+ f,
30
36
  m,
31
- s,
32
- e,
37
+ u,
38
+ n,
39
+ p,
40
+ i,
33
41
  t,
34
- a
42
+ r,
43
+ d
35
44
  ]);
36
- return E(() => {
37
- o();
38
- }, [o]), g ? /* @__PURE__ */ u(N, { height: "100%", onTryAgain: o }) : t || !n ? /* @__PURE__ */ u(W, { height: "100%" }) : n;
45
+ return H(() => {
46
+ s();
47
+ }, [s]), y ? /* @__PURE__ */ l(M, { height: "100%", onTryAgain: s }) : r || !a ? /* @__PURE__ */ l(N, { height: "100%" }) : a;
39
48
  };
40
49
  export {
41
- q as default
50
+ F as default
42
51
  };
43
52
  //# sourceMappingURL=worksheet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worksheet.js","sources":["../../../../../src/features/trial-session/comps/worksheet/worksheet.tsx"],"sourcesContent":["import { useCallback, useEffect, useState, type FC } from 'react';\n\nimport type { IResumeWorksheetModel } from '../../../../types/models/worksheet';\nimport Error from '../../../ui/error/error';\nimport AppLoader from '../../../ui/loader/app-loader/app-loader';\nimport { useResumeTrialWorksheet } from '../../api/trial-nodes';\nimport { useTrialSessionContext } from '../../context/use-trial-session-context';\n\nconst SessionWorksheet: FC = () => {\n const { isTeacher, studentId, worksheet, formData, updateSlideConfig, trialHomeData } =\n useTrialSessionContext();\n const [isError, setIserror] = useState<boolean>(false);\n const [isPatchProcessed, setIsPatchProcessed] = useState(false);\n\n const { resetAttempt } = formData || {};\n const { demo_info: demoInfo } = trialHomeData;\n const { region_data: regionData, course } = demoInfo || {};\n const { opportunity_country: countryCode = 'US' } = regionData || {};\n\n const onComplete = (error: string | null, sheetData?: IResumeWorksheetModel) => {\n if (error) {\n setIserror(true);\n }\n\n if (sheetData) {\n const {\n user_node_id: userNodeId,\n node_id: nodeId,\n user_attempt_id: attemptId,\n node_type: nodeType,\n } = sheetData;\n\n setIsPatchProcessed(true);\n updateSlideConfig({ userNodeId, nodeId, attemptId, nodeType, resetAttempt: false });\n }\n };\n\n const { patch: resumeNode, isProcessing } = useResumeTrialWorksheet({\n onComplete,\n });\n\n const fetchData = useCallback(() => {\n if (isTeacher && !isProcessing && !isPatchProcessed) {\n setIserror(false);\n resumeNode(studentId, {\n country_code: countryCode,\n course,\n reset_attempt: resetAttempt === undefined || resetAttempt,\n });\n }\n }, [\n countryCode,\n course,\n isTeacher,\n resumeNode,\n studentId,\n resetAttempt,\n isProcessing,\n isPatchProcessed,\n ]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n if (isError) {\n return <Error height=\"100%\" onTryAgain={fetchData} />;\n }\n\n if (isProcessing || !worksheet) {\n return <AppLoader height=\"100%\" />;\n }\n\n return worksheet;\n};\n\nexport default SessionWorksheet;\n"],"names":["SessionWorksheet","isTeacher","studentId","worksheet","formData","updateSlideConfig","trialHomeData","useTrialSessionContext","isError","setIserror","useState","isPatchProcessed","setIsPatchProcessed","resetAttempt","demoInfo","regionData","course","countryCode","onComplete","error","sheetData","userNodeId","nodeId","attemptId","nodeType","resumeNode","isProcessing","useResumeTrialWorksheet","fetchData","useCallback","useEffect","jsx","Error","AppLoader"],"mappings":";;;;;;AAQA,MAAMA,IAAuB,MAAM;AAC3B,QAAA,EAAE,WAAAC,GAAW,WAAAC,GAAW,WAAAC,GAAW,UAAAC,GAAU,mBAAAC,GAAmB,eAAAC,MACpEC,KACI,CAACC,GAASC,CAAU,IAAIC,EAAkB,EAAK,GAC/C,CAACC,GAAkBC,CAAmB,IAAIF,EAAS,EAAK,GAExD,EAAE,cAAAG,EAAA,IAAiBT,KAAY,IAC/B,EAAE,WAAWU,EAAa,IAAAR,GAC1B,EAAE,aAAaS,GAAY,QAAAC,EAAO,IAAIF,KAAY,CAAA,GAClD,EAAE,qBAAqBG,IAAc,KAAK,IAAIF,KAAc,CAAA,GAE5DG,IAAa,CAACC,GAAsBC,MAAsC;AAK9E,QAJID,KACFV,EAAW,EAAI,GAGbW,GAAW;AACP,YAAA;AAAA,QACJ,cAAcC;AAAA,QACd,SAASC;AAAA,QACT,iBAAiBC;AAAA,QACjB,WAAWC;AAAA,MACT,IAAAJ;AAEJ,MAAAR,EAAoB,EAAI,GACxBP,EAAkB,EAAE,YAAAgB,GAAY,QAAAC,GAAQ,WAAAC,GAAW,UAAAC,GAAU,cAAc,IAAO;AAAA,IACpF;AAAA,EAAA,GAGI,EAAE,OAAOC,GAAY,cAAAC,EAAA,IAAiBC,EAAwB;AAAA,IAClE,YAAAT;AAAA,EAAA,CACD,GAEKU,IAAYC,EAAY,MAAM;AAClC,IAAI5B,KAAa,CAACyB,KAAgB,CAACf,MACjCF,EAAW,EAAK,GAChBgB,EAAWvB,GAAW;AAAA,MACpB,cAAce;AAAA,MACd,QAAAD;AAAA,MACA,eAAeH,MAAiB,UAAaA;AAAA,IAAA,CAC9C;AAAA,EACH,GACC;AAAA,IACDI;AAAA,IACAD;AAAA,IACAf;AAAA,IACAwB;AAAA,IACAvB;AAAA,IACAW;AAAA,IACAa;AAAA,IACAf;AAAA,EAAA,CACD;AAMD,SAJAmB,EAAU,MAAM;AACJ,IAAAF;EAAA,GACT,CAACA,CAAS,CAAC,GAEVpB,IACM,gBAAAuB,EAAAC,GAAA,EAAM,QAAO,QAAO,YAAYJ,EAAW,CAAA,IAGjDF,KAAgB,CAACvB,IACZ,gBAAA4B,EAACE,GAAU,EAAA,QAAO,OAAO,CAAA,IAG3B9B;AACT;"}
1
+ {"version":3,"file":"worksheet.js","sources":["../../../../../src/features/trial-session/comps/worksheet/worksheet.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState, type FC } from 'react';\n\nimport type { IResumeWorksheetModel } from '../../../../types/models/worksheet';\nimport Error from '../../../ui/error/error';\nimport AppLoader from '../../../ui/loader/app-loader/app-loader';\nimport { useResumeTrialWorksheet } from '../../api/trial-nodes';\nimport { useTrialSessionContext } from '../../context/use-trial-session-context';\nimport { GOAL_CATEGORY } from '../../../milestone/constants';\nimport { HIGH_ENROLLMENT_PROGRAMS_MAP } from '../../trial-session-constants';\n\nconst SessionWorksheet: FC = () => {\n const { isTeacher, studentId, worksheet, formData, updateSlideConfig, trialHomeData } =\n useTrialSessionContext();\n const [isError, setIserror] = useState<boolean>(false);\n const [isPatchProcessed, setIsPatchProcessed] = useState(false);\n\n const { goals, resetAttempt } = formData || {};\n const { demo_info: demoInfo } = trialHomeData;\n const { region_data: regionData, course } = demoInfo || {};\n const { opportunity_country: countryCode = 'US' } = regionData || {};\n\n const { program_code: programCode = '' } = useMemo(\n () => goals?.find(goal => goal.goal_category === GOAL_CATEGORY.SCHOOL_SUCCESS) ?? {},\n [goals],\n );\n\n const onComplete = (error: string | null, sheetData?: IResumeWorksheetModel) => {\n if (error) {\n setIserror(true);\n }\n\n if (sheetData) {\n const {\n user_node_id: userNodeId,\n node_id: nodeId,\n user_attempt_id: attemptId,\n node_type: nodeType,\n } = sheetData;\n\n setIsPatchProcessed(true);\n updateSlideConfig({ userNodeId, nodeId, attemptId, nodeType, resetAttempt: false });\n }\n };\n\n const { patch: resumeNode, isProcessing } = useResumeTrialWorksheet({\n onComplete,\n });\n\n const fetchData = useCallback(() => {\n if (isTeacher && !isProcessing && !isPatchProcessed) {\n const courseToSend =\n HIGH_ENROLLMENT_PROGRAMS_MAP[programCode as keyof typeof HIGH_ENROLLMENT_PROGRAMS_MAP] ||\n course;\n\n setIserror(false);\n resumeNode(studentId, {\n course: courseToSend,\n country_code: countryCode,\n reset_attempt: resetAttempt === undefined || resetAttempt,\n });\n }\n }, [\n countryCode,\n course,\n programCode,\n isTeacher,\n resumeNode,\n studentId,\n resetAttempt,\n isProcessing,\n isPatchProcessed,\n ]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n if (isError) {\n return <Error height=\"100%\" onTryAgain={fetchData} />;\n }\n\n if (isProcessing || !worksheet) {\n return <AppLoader height=\"100%\" />;\n }\n\n return worksheet;\n};\n\nexport default SessionWorksheet;\n"],"names":["SessionWorksheet","isTeacher","studentId","worksheet","formData","updateSlideConfig","trialHomeData","useTrialSessionContext","isError","setIserror","useState","isPatchProcessed","setIsPatchProcessed","goals","resetAttempt","demoInfo","regionData","course","countryCode","programCode","useMemo","goal","GOAL_CATEGORY","onComplete","error","sheetData","userNodeId","nodeId","attemptId","nodeType","resumeNode","isProcessing","useResumeTrialWorksheet","fetchData","useCallback","courseToSend","HIGH_ENROLLMENT_PROGRAMS_MAP","useEffect","jsx","Error","AppLoader"],"mappings":";;;;;;;;AAUA,MAAMA,IAAuB,MAAM;AAC3B,QAAA,EAAE,WAAAC,GAAW,WAAAC,GAAW,WAAAC,GAAW,UAAAC,GAAU,mBAAAC,GAAmB,eAAAC,MACpEC,KACI,CAACC,GAASC,CAAU,IAAIC,EAAkB,EAAK,GAC/C,CAACC,GAAkBC,CAAmB,IAAIF,EAAS,EAAK,GAExD,EAAE,OAAAG,GAAO,cAAAC,MAAiBV,KAAY,CAAA,GACtC,EAAE,WAAWW,EAAa,IAAAT,GAC1B,EAAE,aAAaU,GAAY,QAAAC,EAAO,IAAIF,KAAY,CAAA,GAClD,EAAE,qBAAqBG,IAAc,KAAK,IAAIF,KAAc,CAAA,GAE5D,EAAE,cAAcG,IAAc,GAAO,IAAAC;AAAA,IACzC,OAAMP,KAAA,gBAAAA,EAAO,KAAK,CAAAQ,MAAQA,EAAK,kBAAkBC,EAAc,oBAAmB,CAAC;AAAA,IACnF,CAACT,CAAK;AAAA,EAAA,GAGFU,IAAa,CAACC,GAAsBC,MAAsC;AAK9E,QAJID,KACFf,EAAW,EAAI,GAGbgB,GAAW;AACP,YAAA;AAAA,QACJ,cAAcC;AAAA,QACd,SAASC;AAAA,QACT,iBAAiBC;AAAA,QACjB,WAAWC;AAAA,MACT,IAAAJ;AAEJ,MAAAb,EAAoB,EAAI,GACxBP,EAAkB,EAAE,YAAAqB,GAAY,QAAAC,GAAQ,WAAAC,GAAW,UAAAC,GAAU,cAAc,IAAO;AAAA,IACpF;AAAA,EAAA,GAGI,EAAE,OAAOC,GAAY,cAAAC,EAAA,IAAiBC,EAAwB;AAAA,IAClE,YAAAT;AAAA,EAAA,CACD,GAEKU,IAAYC,EAAY,MAAM;AAClC,QAAIjC,KAAa,CAAC8B,KAAgB,CAACpB,GAAkB;AAC7C,YAAAwB,IACJC,EAA6BjB,CAAwD,KACrFF;AAEF,MAAAR,EAAW,EAAK,GAChBqB,EAAW5B,GAAW;AAAA,QACpB,QAAQiC;AAAA,QACR,cAAcjB;AAAA,QACd,eAAeJ,MAAiB,UAAaA;AAAA,MAAA,CAC9C;AAAA,IACH;AAAA,EAAA,GACC;AAAA,IACDI;AAAA,IACAD;AAAA,IACAE;AAAA,IACAlB;AAAA,IACA6B;AAAA,IACA5B;AAAA,IACAY;AAAA,IACAiB;AAAA,IACApB;AAAA,EAAA,CACD;AAMD,SAJA0B,EAAU,MAAM;AACJ,IAAAJ;EAAA,GACT,CAACA,CAAS,CAAC,GAEVzB,IACM,gBAAA8B,EAAAC,GAAA,EAAM,QAAO,QAAO,YAAYN,EAAW,CAAA,IAGjDF,KAAgB,CAAC5B,IACZ,gBAAAmC,EAACE,GAAU,EAAA,QAAO,OAAO,CAAA,IAG3BrC;AACT;"}
@@ -1,95 +1,98 @@
1
- import { DAYS as I } from "../../constants/date-time.js";
2
- import { getOffsetBetweenTimezone as D, convertEpochToDateTime as O, getTimeUnits as R, convertToMilliseconds as x } from "../../helpers/date-time.js";
3
- import { GOAL_CATEGORY as N } from "../milestone/constants.js";
4
- import { getGoalsFromConfig as A } from "../milestone/create/milestone-create-helpers.js";
5
- import { TrialPageId as u, TEACHER_TIMEZONE as C } from "./trial-session-constants.js";
6
- const v = (n) => n === "PLA", U = (n, e, o) => {
7
- const t = n ? [...n] : [], r = t == null ? void 0 : t.findIndex((s) => s.goal_category === e);
1
+ import { DAYS as R } from "../../constants/date-time.js";
2
+ import { getOffsetBetweenTimezone as x, convertEpochToDateTime as C, getTimeUnits as H, convertToMilliseconds as M } from "../../helpers/date-time.js";
3
+ import { GOAL_CATEGORY as L } from "../milestone/constants.js";
4
+ import { getGoalsFromConfig as G } from "../milestone/create/milestone-create-helpers.js";
5
+ import { HIGH_ENROLLMENT_PROGRAMS_MAP as v, TrialPageId as s, TEACHER_TIMEZONE as w } from "./trial-session-constants.js";
6
+ const V = (n) => n === "PLA", j = (n, t, o) => {
7
+ const e = n ? [...n] : [], r = e == null ? void 0 : e.findIndex((c) => c.goal_category === t);
8
8
  if (r === -1) {
9
- const s = {
9
+ const c = {
10
10
  ...o,
11
- goal_category: e
11
+ goal_category: t
12
12
  };
13
- t.push(s);
13
+ e.push(c);
14
14
  } else
15
- t[r] = {
16
- ...t[r],
15
+ e[r] = {
16
+ ...e[r],
17
17
  ...o
18
18
  };
19
- return t;
20
- }, b = (n, e) => {
21
- if (!e) return [];
22
- const o = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0), t = D(C, e), r = o + t, { day: s = "" } = O(r, e), l = I.indexOf(s);
23
- return n.length > 0 ? n.filter((i) => i.selectedDay && i.selectedTime).map((i) => {
24
- const { selectedDay: _, selectedTime: p } = i, { hours: f, minutes: c, period: d } = R(p), m = (I.indexOf(_) - l + 7) % 7;
19
+ return e;
20
+ }, B = (n, t) => {
21
+ if (!t) return [];
22
+ const o = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0), e = x(w, t), r = o + e, { day: c = "" } = C(r, t), u = R.indexOf(c);
23
+ return n.length > 0 ? n.filter((d) => d.selectedDay && d.selectedTime).map((d) => {
24
+ const { selectedDay: P, selectedTime: p } = d, { hours: y, minutes: m, period: l } = H(p), E = (R.indexOf(P) - u + 7) % 7;
25
25
  return {
26
- id: o + t + x({ days: m, hours: f, minutes: c }),
27
- value: `${_}, ${p} - ${f + 1}:${c < 10 ? "0" : ""}${c} ${d}`
26
+ id: o + e + M({ days: E, hours: y, minutes: m }),
27
+ value: `${P}, ${p} - ${y + 1}:${m < 10 ? "0" : ""}${m} ${l}`
28
28
  // Formatted the value string as required
29
29
  };
30
30
  }) : [];
31
- }, F = (n) => n.filter((e) => typeof e.id == "number" && !isNaN(e.id)).map((e) => {
32
- const o = new Date(e.id), t = I[o.getDay()], r = t ? t.toLowerCase() : "unknown", s = o.getHours(), l = o.getMinutes(), i = `${s.toString().padStart(2, "0")}:${l.toString().padStart(2, "0")}:00`;
33
- return { weekday: r, start_time: i };
34
- }), k = ({
31
+ }, Y = (n) => n.filter((t) => typeof t.id == "number" && !isNaN(t.id)).map((t) => {
32
+ const o = new Date(t.id), e = R[o.getDay()], r = e ? e.toLowerCase() : "unknown", c = o.getHours(), u = o.getMinutes(), d = `${c.toString().padStart(2, "0")}:${u.toString().padStart(2, "0")}:00`;
33
+ return { weekday: r, start_time: d };
34
+ }), W = ({
35
35
  milestoneConfigData: n,
36
- trialHomeData: e,
37
- grade: o
36
+ trialHomeData: t,
37
+ grade: o,
38
+ goal: e
38
39
  }) => {
39
- var h;
40
- const { student: t, demo_info: r } = e, { grade: s, enrollment_type: l } = t || {}, { stream: i, region_data: _ } = r || {}, { opportunity_country: p = "US" } = _ || {}, f = (g) => A(n, {
41
- countryCode: p,
42
- grade: o || s || "",
43
- goalCategory: g,
44
- courseStream: i,
45
- enrollmentType: l
46
- }), c = f(N.TEST_PREP), d = f(N.ENRICHMENT);
47
- if ((c == null ? void 0 : c.length) > 0 && (d == null ? void 0 : d.length) > 0)
48
- return e;
49
- const E = { ...e }, m = Object.fromEntries(E.pages.map((g) => [g.id, g])), T = (() => {
50
- var g, P, a, S;
51
- return ((P = (g = m[u.SCHOOL_GOALS]) == null ? void 0 : g.nextPage) == null ? void 0 : P.pageId) === u.TEST_PREP && c.length === 0 ? u.SCHOOL_GOALS : c.length > 0 && ((S = (a = m[u.TEST_PREP]) == null ? void 0 : a.nextPage) == null ? void 0 : S.pageId) === u.STUDENT_ENRICHMENT && d.length === 0 ? u.TEST_PREP : null;
52
- })(), y = T ? (h = m[(d == null ? void 0 : d.length) === 0 ? u.STUDENT_ENRICHMENT : u.TEST_PREP]) == null ? void 0 : h.nextPage : null;
53
- if (y && T) {
54
- const g = (a) => c.length === 0 && a === u.TEST_PREP || d.length === 0 && a === u.STUDENT_ENRICHMENT, P = E.pages.filter((a) => !g(a.id));
55
- E.pages = P.map((a) => {
56
- var S;
57
- return a.id === T ? { ...a, nextPage: y } : a.id === y.pageId ? {
40
+ var O, h;
41
+ const { student: r, demo_info: c } = t, { grade: u, enrollment_type: d } = r || {}, { stream: P, region_data: p } = c || {}, { opportunity_country: y = "US" } = p || {}, m = (i) => G(n, {
42
+ countryCode: y,
43
+ grade: o || u || "",
44
+ goalCategory: i,
45
+ courseStream: P,
46
+ enrollmentType: d
47
+ }), l = m(L.TEST_PREP), g = m(L.ENRICHMENT), E = m(L.SCHOOL_SUCCESS).some(
48
+ (i) => i.id === e && Object.keys(v).includes(i.programCode ?? "")
49
+ );
50
+ if ((l == null ? void 0 : l.length) > 0 && (g == null ? void 0 : g.length) > 0 && !E)
51
+ return t;
52
+ const f = { ...t }, T = Object.fromEntries(f.pages.map((i) => [i.id, i])), S = (() => {
53
+ var i, N, a, _, A, D;
54
+ return ((N = (i = T[s.SCHOOL_GOALS]) == null ? void 0 : i.nextPage) == null ? void 0 : N.pageId) === s.TEST_PREP && l.length === 0 ? s.SCHOOL_GOALS : l.length > 0 && ((_ = (a = T[s.TEST_PREP]) == null ? void 0 : a.nextPage) == null ? void 0 : _.pageId) === s.STUDENT_ENRICHMENT && g.length === 0 ? s.TEST_PREP : E ? ((D = (A = T[s.LEARNING_LEVEL]) == null ? void 0 : A.prevPage) == null ? void 0 : D.pageId) ?? null : null;
55
+ })(), I = S ? E ? (O = T[s.LEARNING_LEVEL]) == null ? void 0 : O.nextPage : (h = T[(g == null ? void 0 : g.length) === 0 ? s.STUDENT_ENRICHMENT : s.TEST_PREP]) == null ? void 0 : h.nextPage : null;
56
+ if (I && S) {
57
+ const i = (a) => l.length === 0 && a === s.TEST_PREP || g.length === 0 && a === s.STUDENT_ENRICHMENT || E && a === s.LEARNING_LEVEL, N = f.pages.filter((a) => !i(a.id));
58
+ f.pages = N.map((a) => {
59
+ var _;
60
+ return a.id === S ? { ...a, nextPage: I } : a.id === I.pageId ? {
58
61
  ...a,
59
62
  prevPage: {
60
- buttonLabel: ((S = m[T]) == null ? void 0 : S.navigationLabel) ?? "",
61
- pageId: T
63
+ buttonLabel: ((_ = T[S]) == null ? void 0 : _.navigationLabel) ?? "",
64
+ pageId: S
62
65
  }
63
66
  } : a;
64
67
  });
65
68
  }
66
- return E;
67
- }, G = (n, e) => {
68
- var t;
69
+ return f;
70
+ }, Z = (n, t) => {
71
+ var e;
69
72
  const { preference_config: o } = n;
70
- return e.length > 0 ? ((t = o == null ? void 0 : o.filter((r) => e.includes(r.preference_code))) == null ? void 0 : t.map(
71
- ({ preference_code: r, preference_name: s, preference_category: l, preference_description: i }) => ({
73
+ return t.length > 0 ? ((e = o == null ? void 0 : o.filter((r) => t.includes(r.preference_code))) == null ? void 0 : e.map(
74
+ ({ preference_code: r, preference_name: c, preference_category: u, preference_description: d }) => ({
72
75
  preference_code: r,
73
- preference_name: s,
74
- preference_category: l,
75
- preference_description: i
76
+ preference_name: c,
77
+ preference_category: u,
78
+ preference_description: d
76
79
  })
77
80
  )) || [] : [];
78
- }, B = (n, e, o = !1) => {
81
+ }, q = (n, t, o = !1) => {
79
82
  if (!(n != null && n.length)) return [];
80
83
  if (o) {
81
- const t = n.find((r) => (r == null ? void 0 : r.preference_category) === e);
82
- return t ? [t.preference_code] : [];
84
+ const e = n.find((r) => (r == null ? void 0 : r.preference_category) === t);
85
+ return e ? [e.preference_code] : [];
83
86
  }
84
- return n.filter((t) => (t == null ? void 0 : t.preference_category) === e).map((t) => t.preference_code);
87
+ return n.filter((e) => (e == null ? void 0 : e.preference_category) === t).map((e) => e.preference_code);
85
88
  };
86
89
  export {
87
- k as filterAndUpdateSlideNavigation,
88
- b as getFormattedPreferences,
89
- G as getFormattedStudentPersonalizedPreference,
90
- B as getPreferenceCodesByCategory,
91
- F as getWeekdayAndStartTimeFromPreference,
92
- v as isPLASource,
93
- U as updateGoalInFormData
90
+ W as filterAndUpdateSlideNavigation,
91
+ B as getFormattedPreferences,
92
+ Z as getFormattedStudentPersonalizedPreference,
93
+ q as getPreferenceCodesByCategory,
94
+ Y as getWeekdayAndStartTimeFromPreference,
95
+ V as isPLASource,
96
+ j as updateGoalInFormData
94
97
  };
95
98
  //# sourceMappingURL=helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helper.js","sources":["../../../src/features/trial-session/helper.ts"],"sourcesContent":["import { DAYS } from '../../constants/date-time';\nimport {\n convertEpochToDateTime,\n convertToMilliseconds,\n getOffsetBetweenTimezone,\n getTimeUnits,\n} from '../../helpers/date-time';\nimport { GOAL_CATEGORY } from '../milestone/constants';\nimport { getGoalsFromConfig } from '../milestone/create/milestone-create-helpers';\nimport type { IMilestoneConfig } from '../milestone/create/milestone-create-types';\nimport type { TPreference } from './comps/class-preference/class-preference-types';\nimport { TEACHER_TIMEZONE, TrialPageId } from './trial-session-constants';\nimport type { ITrialHomeData, TGoals, TPreferenceSchema } from './trial-session-types';\n\nconst isPLASource = (source?: string): boolean => {\n return source === 'PLA';\n};\n\nconst updateGoalInFormData = (goals: TGoals[] | undefined, goalCategory: string, data: TGoals) => {\n const updateGoals = goals ? [...goals] : [];\n const goalIndex = updateGoals?.findIndex(goal => goal.goal_category === goalCategory);\n\n if (goalIndex === -1) {\n const schoolSuccessGoal = {\n ...data,\n goal_category: goalCategory,\n };\n\n updateGoals.push(schoolSuccessGoal);\n } else {\n updateGoals[goalIndex] = {\n ...updateGoals[goalIndex],\n ...data,\n };\n }\n\n return updateGoals;\n};\n\nconst getFormattedPreferences = (preferences: TPreference[], studentTimezone?: string) => {\n if (!studentTimezone) return [];\n\n const todayTimestamp = new Date().setHours(0, 0, 0, 0); // Set the current date to midnight.\n const timestampOffset = getOffsetBetweenTimezone(TEACHER_TIMEZONE, studentTimezone); // Offset between the teacher's and student's timezone.\n const studentTimestamp = todayTimestamp + timestampOffset; // Adjusting the current date to the student's timezone.\n const { day: today = '' } = convertEpochToDateTime(studentTimestamp, studentTimezone); // Current day at student's timezone.\n const currentDayIndex = DAYS.indexOf(today); // Current day index.\n\n return preferences.length > 0\n ? preferences\n .filter(preference => preference.selectedDay && preference.selectedTime)\n .map(preference => {\n const { selectedDay, selectedTime } = preference;\n // Extracting hours, minutes, and period from the selected time.\n const { hours, minutes, period } = getTimeUnits(selectedTime);\n\n // Calculating the index of the selected day in the DAYS array.\n const selectedDayIndex = DAYS.indexOf(selectedDay);\n const dayDifference = (selectedDayIndex - currentDayIndex + 7) % 7;\n\n // Calculate the epoch timestamp for the selected day and time in the student's timezone.\n const epochTimestamp =\n todayTimestamp +\n timestampOffset +\n convertToMilliseconds({ days: dayDifference, hours, minutes });\n\n return {\n id: epochTimestamp,\n value: `${selectedDay}, ${selectedTime} - ${hours + 1}:${\n minutes < 10 ? '0' : ''\n }${minutes} ${period}`, // Formatted the value string as required\n };\n })\n : [];\n};\n\n/**\n * Converts a list of epoch timestamps to normalized weekday and start_time.\n * @param epochs Array of epoch timestamps (number)\n * @returns Array of { weekday, start_time }\n */\nconst getWeekdayAndStartTimeFromPreference = (\n preference: Array<{ id: number; value: string }>,\n): Array<{ weekday: string; start_time: string }> => {\n return preference\n .filter(pref => typeof pref.id === 'number' && !isNaN(pref.id))\n .map(pref => {\n const date = new Date(pref.id);\n // Get weekday in lowercase\n const weekdayRaw = DAYS[date.getDay()];\n const weekday = weekdayRaw ? weekdayRaw.toLowerCase() : 'unknown';\n // Get time in HH:MM:SS format\n const hour = date.getHours();\n const minute = date.getMinutes();\n const start_time = `${hour.toString().padStart(2, '0')}:${minute\n .toString()\n .padStart(2, '0')}:00`;\n\n return { weekday, start_time };\n });\n};\n\nconst filterAndUpdateSlideNavigation = ({\n milestoneConfigData,\n trialHomeData,\n grade,\n}: {\n milestoneConfigData: IMilestoneConfig;\n trialHomeData: ITrialHomeData;\n grade?: string;\n}) => {\n const { student, demo_info: demoInfo } = trialHomeData;\n const { grade: studentGrade, enrollment_type: enrollmentType } = student || {};\n const { stream, region_data: regionData } = demoInfo || {};\n const { opportunity_country: countryCode = 'US' } = regionData || {};\n\n const getGoals = (goalCategory: keyof typeof GOAL_CATEGORY) =>\n getGoalsFromConfig(milestoneConfigData, {\n countryCode,\n grade: grade || studentGrade || '',\n goalCategory,\n courseStream: stream,\n enrollmentType: enrollmentType,\n });\n\n const testPrepGoals = getGoals(GOAL_CATEGORY.TEST_PREP);\n const enrichmentGoals = getGoals(GOAL_CATEGORY.ENRICHMENT);\n\n if (testPrepGoals?.length > 0 && enrichmentGoals?.length > 0) {\n return trialHomeData;\n }\n\n const updatedTrialHomeData = { ...trialHomeData };\n\n const pagesMap = Object.fromEntries(updatedTrialHomeData.pages.map(page => [page.id, page]));\n\n //slide whose nextPage reference needs to be updated\n const slideIdToUpdate = (() => {\n if (\n pagesMap[TrialPageId.SCHOOL_GOALS]?.nextPage?.pageId === TrialPageId.TEST_PREP &&\n testPrepGoals.length === 0\n ) {\n return TrialPageId.SCHOOL_GOALS;\n }\n\n if (\n testPrepGoals.length > 0 &&\n pagesMap[TrialPageId.TEST_PREP]?.nextPage?.pageId === TrialPageId.STUDENT_ENRICHMENT &&\n enrichmentGoals.length === 0\n ) {\n return TrialPageId.TEST_PREP;\n }\n\n return null;\n })();\n\n // the new next page reference for slideIdToUpdate\n const updatedNextPageInfo = slideIdToUpdate\n ? pagesMap[\n enrichmentGoals?.length === 0 ? TrialPageId.STUDENT_ENRICHMENT : TrialPageId.TEST_PREP\n ]?.nextPage\n : null;\n\n // updating the nextPage and prevPage references\n if (updatedNextPageInfo && slideIdToUpdate) {\n const shouldRemoveSlide = (slideId: TrialPageId) =>\n (testPrepGoals.length === 0 && slideId === TrialPageId.TEST_PREP) ||\n (enrichmentGoals.length === 0 && slideId === TrialPageId.STUDENT_ENRICHMENT);\n\n const filteredSlides = updatedTrialHomeData.pages.filter(page => !shouldRemoveSlide(page.id));\n\n updatedTrialHomeData.pages = filteredSlides.map(page => {\n if (page.id === slideIdToUpdate) {\n return { ...page, nextPage: updatedNextPageInfo };\n }\n\n if (page.id === updatedNextPageInfo.pageId) {\n return {\n ...page,\n prevPage: {\n buttonLabel: pagesMap[slideIdToUpdate]?.navigationLabel ?? '',\n pageId: slideIdToUpdate,\n },\n };\n }\n\n return page;\n });\n }\n\n return updatedTrialHomeData;\n};\n\nconst getFormattedStudentPersonalizedPreference = (\n config: IMilestoneConfig,\n selectedCodes: string[],\n) => {\n const { preference_config: preferenceConfig } = config;\n\n if (selectedCodes.length > 0) {\n return (\n preferenceConfig\n ?.filter(pref => selectedCodes.includes(pref.preference_code))\n ?.map(\n ({ preference_code, preference_name, preference_category, preference_description }) => ({\n preference_code,\n preference_name,\n preference_category,\n preference_description,\n }),\n ) || []\n );\n }\n\n return [];\n};\n\nconst getPreferenceCodesByCategory = (\n preferences: TPreferenceSchema[],\n category: string,\n returnFirstOnly: boolean = false,\n): string[] => {\n if (!preferences?.length) return [];\n\n if (returnFirstOnly) {\n const firstMatch = preferences.find(pref => pref?.preference_category === category);\n\n return firstMatch ? [firstMatch.preference_code] : [];\n }\n\n return preferences\n .filter(pref => pref?.preference_category === category)\n .map(pref => pref.preference_code);\n};\n\nexport {\n isPLASource,\n filterAndUpdateSlideNavigation,\n updateGoalInFormData,\n getFormattedPreferences,\n getWeekdayAndStartTimeFromPreference,\n getFormattedStudentPersonalizedPreference,\n getPreferenceCodesByCategory,\n};\n"],"names":["isPLASource","source","updateGoalInFormData","goals","goalCategory","data","updateGoals","goalIndex","goal","schoolSuccessGoal","getFormattedPreferences","preferences","studentTimezone","todayTimestamp","timestampOffset","getOffsetBetweenTimezone","TEACHER_TIMEZONE","studentTimestamp","today","convertEpochToDateTime","currentDayIndex","DAYS","preference","selectedDay","selectedTime","hours","minutes","period","getTimeUnits","dayDifference","convertToMilliseconds","getWeekdayAndStartTimeFromPreference","pref","date","weekdayRaw","weekday","hour","minute","start_time","filterAndUpdateSlideNavigation","milestoneConfigData","trialHomeData","grade","student","demoInfo","studentGrade","enrollmentType","stream","regionData","countryCode","getGoals","getGoalsFromConfig","testPrepGoals","GOAL_CATEGORY","enrichmentGoals","updatedTrialHomeData","pagesMap","page","slideIdToUpdate","_b","_a","TrialPageId","_d","_c","updatedNextPageInfo","shouldRemoveSlide","slideId","filteredSlides","getFormattedStudentPersonalizedPreference","config","selectedCodes","preferenceConfig","preference_code","preference_name","preference_category","preference_description","getPreferenceCodesByCategory","category","returnFirstOnly","firstMatch"],"mappings":"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"}
1
+ {"version":3,"file":"helper.js","sources":["../../../src/features/trial-session/helper.ts"],"sourcesContent":["import { DAYS } from '../../constants/date-time';\nimport {\n convertEpochToDateTime,\n convertToMilliseconds,\n getOffsetBetweenTimezone,\n getTimeUnits,\n} from '../../helpers/date-time';\nimport { GOAL_CATEGORY } from '../milestone/constants';\nimport { getGoalsFromConfig } from '../milestone/create/milestone-create-helpers';\nimport type { IMilestoneConfig } from '../milestone/create/milestone-create-types';\nimport type { TPreference } from './comps/class-preference/class-preference-types';\nimport {\n TrialPageId,\n TEACHER_TIMEZONE,\n HIGH_ENROLLMENT_PROGRAMS_MAP,\n} from './trial-session-constants';\nimport type { ITrialHomeData, TGoals, TPreferenceSchema } from './trial-session-types';\n\nconst isPLASource = (source?: string): boolean => {\n return source === 'PLA';\n};\n\nconst updateGoalInFormData = (goals: TGoals[] | undefined, goalCategory: string, data: TGoals) => {\n const updateGoals = goals ? [...goals] : [];\n const goalIndex = updateGoals?.findIndex(goal => goal.goal_category === goalCategory);\n\n if (goalIndex === -1) {\n const schoolSuccessGoal = {\n ...data,\n goal_category: goalCategory,\n };\n\n updateGoals.push(schoolSuccessGoal);\n } else {\n updateGoals[goalIndex] = {\n ...updateGoals[goalIndex],\n ...data,\n };\n }\n\n return updateGoals;\n};\n\nconst getFormattedPreferences = (preferences: TPreference[], studentTimezone?: string) => {\n if (!studentTimezone) return [];\n\n const todayTimestamp = new Date().setHours(0, 0, 0, 0); // Set the current date to midnight.\n const timestampOffset = getOffsetBetweenTimezone(TEACHER_TIMEZONE, studentTimezone); // Offset between the teacher's and student's timezone.\n const studentTimestamp = todayTimestamp + timestampOffset; // Adjusting the current date to the student's timezone.\n const { day: today = '' } = convertEpochToDateTime(studentTimestamp, studentTimezone); // Current day at student's timezone.\n const currentDayIndex = DAYS.indexOf(today); // Current day index.\n\n return preferences.length > 0\n ? preferences\n .filter(preference => preference.selectedDay && preference.selectedTime)\n .map(preference => {\n const { selectedDay, selectedTime } = preference;\n // Extracting hours, minutes, and period from the selected time.\n const { hours, minutes, period } = getTimeUnits(selectedTime);\n\n // Calculating the index of the selected day in the DAYS array.\n const selectedDayIndex = DAYS.indexOf(selectedDay);\n const dayDifference = (selectedDayIndex - currentDayIndex + 7) % 7;\n\n // Calculate the epoch timestamp for the selected day and time in the student's timezone.\n const epochTimestamp =\n todayTimestamp +\n timestampOffset +\n convertToMilliseconds({ days: dayDifference, hours, minutes });\n\n return {\n id: epochTimestamp,\n value: `${selectedDay}, ${selectedTime} - ${hours + 1}:${\n minutes < 10 ? '0' : ''\n }${minutes} ${period}`, // Formatted the value string as required\n };\n })\n : [];\n};\n\n/**\n * Converts a list of epoch timestamps to normalized weekday and start_time.\n * @param epochs Array of epoch timestamps (number)\n * @returns Array of { weekday, start_time }\n */\nconst getWeekdayAndStartTimeFromPreference = (\n preference: Array<{ id: number; value: string }>,\n): Array<{ weekday: string; start_time: string }> => {\n return preference\n .filter(pref => typeof pref.id === 'number' && !isNaN(pref.id))\n .map(pref => {\n const date = new Date(pref.id);\n // Get weekday in lowercase\n const weekdayRaw = DAYS[date.getDay()];\n const weekday = weekdayRaw ? weekdayRaw.toLowerCase() : 'unknown';\n // Get time in HH:MM:SS format\n const hour = date.getHours();\n const minute = date.getMinutes();\n const start_time = `${hour.toString().padStart(2, '0')}:${minute\n .toString()\n .padStart(2, '0')}:00`;\n\n return { weekday, start_time };\n });\n};\n\nconst filterAndUpdateSlideNavigation = ({\n milestoneConfigData,\n trialHomeData,\n grade,\n goal,\n}: {\n milestoneConfigData: IMilestoneConfig;\n trialHomeData: ITrialHomeData;\n grade?: string;\n goal?: string;\n}) => {\n const { student, demo_info: demoInfo } = trialHomeData;\n const { grade: studentGrade, enrollment_type: enrollmentType } = student || {};\n const { stream, region_data: regionData } = demoInfo || {};\n const { opportunity_country: countryCode = 'US' } = regionData || {};\n\n const getGoals = (goalCategory: keyof typeof GOAL_CATEGORY) =>\n getGoalsFromConfig(milestoneConfigData, {\n countryCode,\n grade: grade || studentGrade || '',\n goalCategory,\n courseStream: stream,\n enrollmentType: enrollmentType,\n });\n\n const testPrepGoals = getGoals(GOAL_CATEGORY.TEST_PREP);\n const enrichmentGoals = getGoals(GOAL_CATEGORY.ENRICHMENT);\n const isHighEnrollmentProgramSelected = getGoals(GOAL_CATEGORY.SCHOOL_SUCCESS).some(\n g => g.id === goal && Object.keys(HIGH_ENROLLMENT_PROGRAMS_MAP).includes(g.programCode ?? ''),\n );\n\n if (\n testPrepGoals?.length > 0 &&\n enrichmentGoals?.length > 0 &&\n !isHighEnrollmentProgramSelected\n ) {\n return trialHomeData;\n }\n\n const updatedTrialHomeData = { ...trialHomeData };\n\n const pagesMap = Object.fromEntries(updatedTrialHomeData.pages.map(page => [page.id, page]));\n\n //slide whose nextPage reference needs to be updated\n const slideIdToUpdate = (() => {\n if (\n pagesMap[TrialPageId.SCHOOL_GOALS]?.nextPage?.pageId === TrialPageId.TEST_PREP &&\n testPrepGoals.length === 0\n ) {\n return TrialPageId.SCHOOL_GOALS;\n }\n\n if (\n testPrepGoals.length > 0 &&\n pagesMap[TrialPageId.TEST_PREP]?.nextPage?.pageId === TrialPageId.STUDENT_ENRICHMENT &&\n enrichmentGoals.length === 0\n ) {\n return TrialPageId.TEST_PREP;\n }\n\n if (isHighEnrollmentProgramSelected) {\n return pagesMap[TrialPageId.LEARNING_LEVEL]?.prevPage?.pageId ?? null;\n }\n\n return null;\n })();\n\n // the new next page reference for slideIdToUpdate\n const updatedNextPageInfo = slideIdToUpdate\n ? isHighEnrollmentProgramSelected\n ? pagesMap[TrialPageId.LEARNING_LEVEL]?.nextPage\n : pagesMap[\n enrichmentGoals?.length === 0 ? TrialPageId.STUDENT_ENRICHMENT : TrialPageId.TEST_PREP\n ]?.nextPage\n : null;\n\n // updating the nextPage and prevPage references\n if (updatedNextPageInfo && slideIdToUpdate) {\n const shouldRemoveSlide = (slideId: TrialPageId) =>\n (testPrepGoals.length === 0 && slideId === TrialPageId.TEST_PREP) ||\n (enrichmentGoals.length === 0 && slideId === TrialPageId.STUDENT_ENRICHMENT) ||\n (isHighEnrollmentProgramSelected && slideId === TrialPageId.LEARNING_LEVEL);\n\n const filteredSlides = updatedTrialHomeData.pages.filter(page => !shouldRemoveSlide(page.id));\n\n updatedTrialHomeData.pages = filteredSlides.map(page => {\n if (page.id === slideIdToUpdate) {\n return { ...page, nextPage: updatedNextPageInfo };\n }\n\n if (page.id === updatedNextPageInfo.pageId) {\n return {\n ...page,\n prevPage: {\n buttonLabel: pagesMap[slideIdToUpdate]?.navigationLabel ?? '',\n pageId: slideIdToUpdate,\n },\n };\n }\n\n return page;\n });\n }\n\n return updatedTrialHomeData;\n};\n\nconst getFormattedStudentPersonalizedPreference = (\n config: IMilestoneConfig,\n selectedCodes: string[],\n) => {\n const { preference_config: preferenceConfig } = config;\n\n if (selectedCodes.length > 0) {\n return (\n preferenceConfig\n ?.filter(pref => selectedCodes.includes(pref.preference_code))\n ?.map(\n ({ preference_code, preference_name, preference_category, preference_description }) => ({\n preference_code,\n preference_name,\n preference_category,\n preference_description,\n }),\n ) || []\n );\n }\n\n return [];\n};\n\nconst getPreferenceCodesByCategory = (\n preferences: TPreferenceSchema[],\n category: string,\n returnFirstOnly: boolean = false,\n): string[] => {\n if (!preferences?.length) return [];\n\n if (returnFirstOnly) {\n const firstMatch = preferences.find(pref => pref?.preference_category === category);\n\n return firstMatch ? [firstMatch.preference_code] : [];\n }\n\n return preferences\n .filter(pref => pref?.preference_category === category)\n .map(pref => pref.preference_code);\n};\n\nexport {\n isPLASource,\n filterAndUpdateSlideNavigation,\n updateGoalInFormData,\n getFormattedPreferences,\n getWeekdayAndStartTimeFromPreference,\n getFormattedStudentPersonalizedPreference,\n getPreferenceCodesByCategory,\n};\n"],"names":["isPLASource","source","updateGoalInFormData","goals","goalCategory","data","updateGoals","goalIndex","goal","schoolSuccessGoal","getFormattedPreferences","preferences","studentTimezone","todayTimestamp","timestampOffset","getOffsetBetweenTimezone","TEACHER_TIMEZONE","studentTimestamp","today","convertEpochToDateTime","currentDayIndex","DAYS","preference","selectedDay","selectedTime","hours","minutes","period","getTimeUnits","dayDifference","convertToMilliseconds","getWeekdayAndStartTimeFromPreference","pref","date","weekdayRaw","weekday","hour","minute","start_time","filterAndUpdateSlideNavigation","milestoneConfigData","trialHomeData","grade","student","demoInfo","studentGrade","enrollmentType","stream","regionData","countryCode","getGoals","getGoalsFromConfig","testPrepGoals","GOAL_CATEGORY","enrichmentGoals","isHighEnrollmentProgramSelected","g","HIGH_ENROLLMENT_PROGRAMS_MAP","updatedTrialHomeData","pagesMap","page","slideIdToUpdate","_b","_a","TrialPageId","_d","_c","_f","_e","updatedNextPageInfo","shouldRemoveSlide","slideId","filteredSlides","getFormattedStudentPersonalizedPreference","config","selectedCodes","preferenceConfig","preference_code","preference_name","preference_category","preference_description","getPreferenceCodesByCategory","category","returnFirstOnly","firstMatch"],"mappings":"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"}