@cuemath/leap 3.5.67-link.0 → 3.5.67-link2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/features/trial-session/comps/student-info/student-info.js +9 -9
- package/dist/features/trial-session/comps/student-info/student-info.js.map +1 -1
- package/dist/features/trial-session/helper.js +73 -77
- package/dist/features/trial-session/helper.js.map +1 -1
- package/dist/features/trial-session/trial-session-types.js.map +1 -1
- package/package.json +1 -1
|
@@ -22,28 +22,28 @@ const se = D(function() {
|
|
|
22
22
|
updateSlideConfig: r,
|
|
23
23
|
updateButtonState: u,
|
|
24
24
|
onRemoveOptionalSlides: i
|
|
25
|
-
} = H(), { name: p, grade: o, course:
|
|
26
|
-
(
|
|
25
|
+
} = H(), { name: p, grade: o, course: t, studentProfile: $, numberInNameError: x } = b || {}, { dummyProfileImageIndex: y } = $ || {}, { demo_info: _ } = T, { region_data: w } = _, { opportunity_country: c = "US" } = w || {}, S = E(I), L = F(y), s = M(Number(o)), g = !!(p && o && (!(s.length > 0) || t)), h = B(() => a ? q(a, { countryCode: c, grade: o, course: t }) : [], [c, t, o, a]), v = d(
|
|
26
|
+
(n) => {
|
|
27
27
|
r({
|
|
28
|
-
name:
|
|
28
|
+
name: n.target.value,
|
|
29
29
|
numberInNameError: !1
|
|
30
30
|
});
|
|
31
31
|
},
|
|
32
32
|
[r]
|
|
33
33
|
), A = d(
|
|
34
|
-
(
|
|
35
|
-
r({ grade:
|
|
34
|
+
(n) => {
|
|
35
|
+
r({ grade: n, course: "" });
|
|
36
36
|
},
|
|
37
37
|
[r]
|
|
38
38
|
), N = d(
|
|
39
|
-
(
|
|
40
|
-
r({ course:
|
|
39
|
+
(n) => {
|
|
40
|
+
r({ course: n });
|
|
41
41
|
},
|
|
42
42
|
[r]
|
|
43
43
|
);
|
|
44
44
|
return f(() => {
|
|
45
45
|
i == null || i(void 0, void 0, h.length === 0);
|
|
46
|
-
}, [h.length]), f(() => {
|
|
46
|
+
}, [h.length, o, t]), f(() => {
|
|
47
47
|
u("right", { isDisabled: !g, isLoading: !1 });
|
|
48
48
|
}, [g, u]), /* @__PURE__ */ m(l, { $justifyContent: "center", $alignItems: "center", children: [
|
|
49
49
|
/* @__PURE__ */ e(k, { height: 60 }),
|
|
@@ -102,7 +102,7 @@ const se = D(function() {
|
|
|
102
102
|
width: "216px",
|
|
103
103
|
renderAs: "primary",
|
|
104
104
|
label: "Course",
|
|
105
|
-
value:
|
|
105
|
+
value: t,
|
|
106
106
|
options: s,
|
|
107
107
|
shape: "borderLess",
|
|
108
108
|
onChange: N,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"student-info.js","sources":["../../../../../src/features/trial-session/comps/student-info/student-info.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useMemo, type InputHTMLAttributes } from 'react';\n\nimport { getGradesFromConfig } from '../../../milestone/create/milestone-create-helpers';\nimport Image from '../../../ui/image/image';\nimport SelectInput from '../../../ui/inputs/select-input/select-input';\nimport TextInput from '../../../ui/inputs/text-input/text-input';\nimport Separator from '../../../ui/separator/separator';\nimport { useTrialSessionContext } from '../../context/use-trial-session-context';\nimport SlideHeader from '../slide-header';\nimport * as Styled from './student-info-styled';\nimport FlexView from '../../../ui/layout/flex-view';\nimport { getDummyProfileImage } from '../student-profile/student-profile-utils';\nimport { RIGHT_PANEL_CONTENT_WIDTH } from '../../trial-session-constants';\nimport { getCourseOptions } from './student-info-helpers';\nimport { getTopicsToShow } from '../topic-selection/topic-selection-helpers';\n\nconst StudentInformation = memo(function StudentInformation() {\n const {\n formData,\n milestoneConfig,\n trialTopics,\n trialHomeData,\n updateSlideConfig,\n updateButtonState,\n onRemoveOptionalSlides,\n } = useTrialSessionContext();\n\n const { name, grade, course, studentProfile, numberInNameError } = formData || {};\n const { dummyProfileImageIndex } = studentProfile || {};\n const { demo_info: demoInfo } = trialHomeData;\n const { region_data: regionData } = demoInfo;\n const { opportunity_country: countryCode = 'US' } = regionData || {};\n\n const grades = getGradesFromConfig(milestoneConfig);\n const dummyProfileImage = getDummyProfileImage(dummyProfileImageIndex);\n const courses = getCourseOptions(Number(grade));\n const hasRequiredFields = Boolean(name && grade && courses.length > 0 ? course : true);\n\n const topicsToShow = useMemo(() => {\n if (!trialTopics) return [];\n\n return getTopicsToShow(trialTopics, { countryCode, grade, course });\n }, [countryCode, course, grade, trialTopics]);\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 handleGradeChange = useCallback(\n (value: string) => {\n updateSlideConfig({ grade: value, course: '' });\n },\n [updateSlideConfig],\n );\n\n const handleCourseChange = useCallback(\n (value: string) => {\n updateSlideConfig({ course: value });\n },\n [updateSlideConfig],\n );\n\n useEffect(() => {\n onRemoveOptionalSlides?.(undefined, undefined, topicsToShow.length === 0);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [topicsToShow.length]);\n\n useEffect(() => {\n updateButtonState('right', { isDisabled: !hasRequiredFields, isLoading: false });\n }, [hasRequiredFields, updateButtonState]);\n\n return (\n <FlexView $justifyContent=\"center\" $alignItems=\"center\">\n <Separator height={60} />\n <SlideHeader marginBottom={100} />\n <FlexView\n $position=\"relative\"\n $width={RIGHT_PANEL_CONTENT_WIDTH - 100}\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $flexGapX={2}\n $gutterX={1.5}\n $gapX={3.125}\n $background=\"WHITE_2\"\n $borderColor=\"BLACK_T_87\"\n $borderRadiusX={0.5}\n >\n <Styled.AbsoluteImage />\n <Image withLoader height={200} width={200} src={dummyProfileImage} borderColor=\"BLACK_1\" />\n\n <FlexView $flexGap={16}>\n <TextInput\n renderAs=\"primary\"\n label=\"Name\"\n placeholder=\"Student name\"\n value={name}\n type=\"text\"\n name=\"name\"\n shape=\"borderLess\"\n onChange={handleNameChange}\n width=\"216px\"\n isTransparent\n stickyLabel\n errorMessage={numberInNameError ? 'Please enter a valid name' : undefined}\n />\n <SelectInput\n renderAs=\"primary\"\n label=\"Grade\"\n value={grade}\n options={grades}\n shape=\"borderLess\"\n onChange={handleGradeChange}\n theme=\"dark\"\n widthX={10}\n isTransparent\n />\n {courses.length > 0 ? (\n <SelectInput\n width=\"216px\"\n renderAs=\"primary\"\n label=\"Course\"\n value={course}\n options={courses}\n shape=\"borderLess\"\n onChange={handleCourseChange}\n theme=\"dark\"\n isTransparent\n />\n ) : null}\n </FlexView>\n\n <Styled.MetaTextWrapper\n $renderAs=\"ub3-bold\"\n color=\"BLACK_T_60\"\n $align=\"right\"\n $width=\"100%\"\n >\n We’ll solve questions from the selected grade\n </Styled.MetaTextWrapper>\n </FlexView>\n </FlexView>\n );\n});\n\nexport default StudentInformation;\n"],"names":["StudentInformation","memo","formData","milestoneConfig","trialTopics","trialHomeData","updateSlideConfig","updateButtonState","onRemoveOptionalSlides","useTrialSessionContext","name","grade","course","studentProfile","numberInNameError","dummyProfileImageIndex","demoInfo","regionData","countryCode","grades","getGradesFromConfig","dummyProfileImage","getDummyProfileImage","courses","getCourseOptions","hasRequiredFields","topicsToShow","useMemo","getTopicsToShow","handleNameChange","useCallback","event","handleGradeChange","value","handleCourseChange","useEffect","jsxs","FlexView","jsx","Separator","SlideHeader","RIGHT_PANEL_CONTENT_WIDTH","Styled.AbsoluteImage","Image","TextInput","SelectInput","Styled.MetaTextWrapper"],"mappings":";;;;;;;;;;;;;;;AAgBM,MAAAA,KAAqBC,EAAK,WAA8B;AACtD,QAAA;AAAA,IACJ,UAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,wBAAAC;AAAA,MACEC,EAAuB,GAErB,EAAE,MAAAC,GAAM,OAAAC,GAAO,QAAAC,GAAQ,gBAAAC,GAAgB,mBAAAC,EAAkB,IAAIZ,KAAY,IACzE,EAAE,wBAAAa,EAAA,IAA2BF,KAAkB,IAC/C,EAAE,WAAWG,EAAa,IAAAX,GAC1B,EAAE,aAAaY,EAAe,IAAAD,GAC9B,EAAE,qBAAqBE,IAAc,KAAK,IAAID,KAAc,CAAA,GAE5DE,IAASC,EAAoBjB,CAAe,GAC5CkB,IAAoBC,EAAqBP,CAAsB,GAC/DQ,IAAUC,EAAiB,OAAOb,CAAK,CAAC,GACxCc,IAAoB,
|
|
1
|
+
{"version":3,"file":"student-info.js","sources":["../../../../../src/features/trial-session/comps/student-info/student-info.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useMemo, type InputHTMLAttributes } from 'react';\n\nimport { getGradesFromConfig } from '../../../milestone/create/milestone-create-helpers';\nimport Image from '../../../ui/image/image';\nimport SelectInput from '../../../ui/inputs/select-input/select-input';\nimport TextInput from '../../../ui/inputs/text-input/text-input';\nimport Separator from '../../../ui/separator/separator';\nimport { useTrialSessionContext } from '../../context/use-trial-session-context';\nimport SlideHeader from '../slide-header';\nimport * as Styled from './student-info-styled';\nimport FlexView from '../../../ui/layout/flex-view';\nimport { getDummyProfileImage } from '../student-profile/student-profile-utils';\nimport { RIGHT_PANEL_CONTENT_WIDTH } from '../../trial-session-constants';\nimport { getCourseOptions } from './student-info-helpers';\nimport { getTopicsToShow } from '../topic-selection/topic-selection-helpers';\n\nconst StudentInformation = memo(function StudentInformation() {\n const {\n formData,\n milestoneConfig,\n trialTopics,\n trialHomeData,\n updateSlideConfig,\n updateButtonState,\n onRemoveOptionalSlides,\n } = useTrialSessionContext();\n\n const { name, grade, course, studentProfile, numberInNameError } = formData || {};\n const { dummyProfileImageIndex } = studentProfile || {};\n const { demo_info: demoInfo } = trialHomeData;\n const { region_data: regionData } = demoInfo;\n const { opportunity_country: countryCode = 'US' } = regionData || {};\n\n const grades = getGradesFromConfig(milestoneConfig);\n const dummyProfileImage = getDummyProfileImage(dummyProfileImageIndex);\n const courses = getCourseOptions(Number(grade));\n const hasRequiredFields = Boolean(name && grade && (courses.length > 0 ? course : true));\n\n const topicsToShow = useMemo(() => {\n if (!trialTopics) return [];\n\n return getTopicsToShow(trialTopics, { countryCode, grade, course });\n }, [countryCode, course, grade, trialTopics]);\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 handleGradeChange = useCallback(\n (value: string) => {\n updateSlideConfig({ grade: value, course: '' });\n },\n [updateSlideConfig],\n );\n\n const handleCourseChange = useCallback(\n (value: string) => {\n updateSlideConfig({ course: value });\n },\n [updateSlideConfig],\n );\n\n useEffect(() => {\n onRemoveOptionalSlides?.(undefined, undefined, topicsToShow.length === 0);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [topicsToShow.length, grade, course]);\n\n useEffect(() => {\n updateButtonState('right', { isDisabled: !hasRequiredFields, isLoading: false });\n }, [hasRequiredFields, updateButtonState]);\n\n return (\n <FlexView $justifyContent=\"center\" $alignItems=\"center\">\n <Separator height={60} />\n <SlideHeader marginBottom={100} />\n <FlexView\n $position=\"relative\"\n $width={RIGHT_PANEL_CONTENT_WIDTH - 100}\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $flexGapX={2}\n $gutterX={1.5}\n $gapX={3.125}\n $background=\"WHITE_2\"\n $borderColor=\"BLACK_T_87\"\n $borderRadiusX={0.5}\n >\n <Styled.AbsoluteImage />\n <Image withLoader height={200} width={200} src={dummyProfileImage} borderColor=\"BLACK_1\" />\n\n <FlexView $flexGap={16}>\n <TextInput\n renderAs=\"primary\"\n label=\"Name\"\n placeholder=\"Student name\"\n value={name}\n type=\"text\"\n name=\"name\"\n shape=\"borderLess\"\n onChange={handleNameChange}\n width=\"216px\"\n isTransparent\n stickyLabel\n errorMessage={numberInNameError ? 'Please enter a valid name' : undefined}\n />\n <SelectInput\n renderAs=\"primary\"\n label=\"Grade\"\n value={grade}\n options={grades}\n shape=\"borderLess\"\n onChange={handleGradeChange}\n theme=\"dark\"\n widthX={10}\n isTransparent\n />\n {courses.length > 0 ? (\n <SelectInput\n width=\"216px\"\n renderAs=\"primary\"\n label=\"Course\"\n value={course}\n options={courses}\n shape=\"borderLess\"\n onChange={handleCourseChange}\n theme=\"dark\"\n isTransparent\n />\n ) : null}\n </FlexView>\n\n <Styled.MetaTextWrapper\n $renderAs=\"ub3-bold\"\n color=\"BLACK_T_60\"\n $align=\"right\"\n $width=\"100%\"\n >\n We’ll solve questions from the selected grade\n </Styled.MetaTextWrapper>\n </FlexView>\n </FlexView>\n );\n});\n\nexport default StudentInformation;\n"],"names":["StudentInformation","memo","formData","milestoneConfig","trialTopics","trialHomeData","updateSlideConfig","updateButtonState","onRemoveOptionalSlides","useTrialSessionContext","name","grade","course","studentProfile","numberInNameError","dummyProfileImageIndex","demoInfo","regionData","countryCode","grades","getGradesFromConfig","dummyProfileImage","getDummyProfileImage","courses","getCourseOptions","hasRequiredFields","topicsToShow","useMemo","getTopicsToShow","handleNameChange","useCallback","event","handleGradeChange","value","handleCourseChange","useEffect","jsxs","FlexView","jsx","Separator","SlideHeader","RIGHT_PANEL_CONTENT_WIDTH","Styled.AbsoluteImage","Image","TextInput","SelectInput","Styled.MetaTextWrapper"],"mappings":"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"}
|
|
@@ -1,100 +1,96 @@
|
|
|
1
|
-
import { DAYS as
|
|
2
|
-
import { getOffsetBetweenTimezone as
|
|
3
|
-
import { GOAL_CATEGORY as
|
|
4
|
-
import { getGoalsFromConfig as
|
|
5
|
-
import { HIGH_ENROLLMENT_PROGRAMS_MAP as
|
|
6
|
-
const
|
|
7
|
-
const
|
|
1
|
+
import { DAYS as C } from "../../constants/date-time.js";
|
|
2
|
+
import { getOffsetBetweenTimezone as D, convertEpochToDateTime as H, getTimeUnits as M, convertToMilliseconds as G } from "../../helpers/date-time.js";
|
|
3
|
+
import { GOAL_CATEGORY as O } from "../milestone/constants.js";
|
|
4
|
+
import { getGoalsFromConfig as w } from "../milestone/create/milestone-create-helpers.js";
|
|
5
|
+
import { HIGH_ENROLLMENT_PROGRAMS_MAP as U, TrialPageId as s, TEACHER_TIMEZONE as $ } from "./trial-session-constants.js";
|
|
6
|
+
const j = (r) => r === "PLA", B = (r, e, a) => {
|
|
7
|
+
const t = r ? [...r] : [], n = t.findIndex((i) => i.goal_category === e), c = {
|
|
8
8
|
...a,
|
|
9
|
-
goal_category:
|
|
9
|
+
goal_category: e
|
|
10
10
|
};
|
|
11
|
-
return
|
|
12
|
-
...
|
|
13
|
-
...
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
if (!
|
|
17
|
-
const a = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0),
|
|
18
|
-
return
|
|
19
|
-
const { selectedDay:
|
|
11
|
+
return n === -1 ? t.push(c) : t[n] = {
|
|
12
|
+
...t[n],
|
|
13
|
+
...c
|
|
14
|
+
}, t.filter((i) => i.goal_code);
|
|
15
|
+
}, W = (r, e) => {
|
|
16
|
+
if (!e) return [];
|
|
17
|
+
const a = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0), t = D($, e), n = a + t, { day: c = "" } = H(n, e), i = C.indexOf(c);
|
|
18
|
+
return r.length > 0 ? r.filter((u) => u.selectedDay && u.selectedTime).map((u) => {
|
|
19
|
+
const { selectedDay: p, selectedTime: I } = u, { hours: N, minutes: T, period: f } = M(I), g = (C.indexOf(p) - i + 7) % 7;
|
|
20
20
|
return {
|
|
21
|
-
id: a +
|
|
22
|
-
value: `${
|
|
21
|
+
id: a + t + G({ days: g, hours: N, minutes: T }),
|
|
22
|
+
value: `${p}, ${I} - ${N + 1}:${T < 10 ? "0" : ""}${T} ${f}`
|
|
23
23
|
// Formatted the value string as required
|
|
24
24
|
};
|
|
25
25
|
}) : [];
|
|
26
|
-
},
|
|
27
|
-
const a = new Date(
|
|
28
|
-
return { weekday:
|
|
29
|
-
}),
|
|
30
|
-
milestoneConfigData:
|
|
31
|
-
trialHomeData:
|
|
26
|
+
}, Y = (r) => r.filter((e) => typeof e.id == "number" && !isNaN(e.id)).map((e) => {
|
|
27
|
+
const a = new Date(e.id), t = C[a.getDay()], n = t ? t.toLowerCase() : "unknown", c = a.getHours(), i = a.getMinutes(), u = `${c.toString().padStart(2, "0")}:${i.toString().padStart(2, "0")}:00`;
|
|
28
|
+
return { weekday: n, start_time: u };
|
|
29
|
+
}), Z = ({
|
|
30
|
+
milestoneConfigData: r,
|
|
31
|
+
trialHomeData: e,
|
|
32
32
|
grade: a,
|
|
33
|
-
goal:
|
|
34
|
-
removeTopicSelection:
|
|
33
|
+
goal: t,
|
|
34
|
+
removeTopicSelection: n
|
|
35
35
|
}) => {
|
|
36
|
-
const { student:
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return ((m = (s = E[i.SCHOOL_GOALS]) == null ? void 0 : s.nextPage) == null ? void 0 : m.pageId) === i.TEST_PREP && g.length === 0 ? i.SCHOOL_GOALS : g.length > 0 && ((f = (o = E[i.TEST_PREP]) == null ? void 0 : o.nextPage) == null ? void 0 : f.pageId) === i.STUDENT_ENRICHMENT && u.length === 0 ? i.TEST_PREP : N ? ((A = (x = E[i.LEARNING_LEVEL]) == null ? void 0 : x.prevPage) == null ? void 0 : A.pageId) ?? null : y ? ((H = (D = E[i.TOPIC_SELECTION]) == null ? void 0 : D.prevPage) == null ? void 0 : H.pageId) ?? null : null;
|
|
54
|
-
})(), C = (() => {
|
|
55
|
-
var s, m, o;
|
|
56
|
-
return _ ? N ? ((s = E[i.LEARNING_LEVEL]) == null ? void 0 : s.nextPage) ?? null : y ? ((m = E[i.TOPIC_SELECTION]) == null ? void 0 : m.nextPage) ?? null : (o = E[(u == null ? void 0 : u.length) === 0 ? i.STUDENT_ENRICHMENT : i.TEST_PREP]) == null ? void 0 : o.nextPage : null;
|
|
36
|
+
const { student: c, demo_info: i } = e, { grade: u, enrollment_type: p } = c || {}, { stream: I, region_data: N } = i || {}, { opportunity_country: T = "US" } = N || {}, f = (d) => w(r, {
|
|
37
|
+
countryCode: T,
|
|
38
|
+
grade: a || u || "",
|
|
39
|
+
goalCategory: d,
|
|
40
|
+
courseStream: I,
|
|
41
|
+
enrollmentType: p
|
|
42
|
+
}), E = f(O.TEST_PREP), g = f(O.ENRICHMENT), _ = f(O.SCHOOL_SUCCESS).some(
|
|
43
|
+
(d) => d.id === t && Object.keys(U).includes(d.programCode ?? "")
|
|
44
|
+
);
|
|
45
|
+
if ((E == null ? void 0 : E.length) > 0 && (g == null ? void 0 : g.length) > 0 && !_ && !n)
|
|
46
|
+
return e;
|
|
47
|
+
const y = { ...e }, l = Object.fromEntries(y.pages.map((d) => [d.id, d])), P = (() => {
|
|
48
|
+
var d, m, o, S, R, h, x, A;
|
|
49
|
+
return ((m = (d = l[s.SCHOOL_GOALS]) == null ? void 0 : d.nextPage) == null ? void 0 : m.pageId) === s.TEST_PREP && E.length === 0 ? s.SCHOOL_GOALS : E.length > 0 && ((S = (o = l[s.TEST_PREP]) == null ? void 0 : o.nextPage) == null ? void 0 : S.pageId) === s.STUDENT_ENRICHMENT && g.length === 0 ? s.TEST_PREP : _ ? ((h = (R = l[s.LEARNING_LEVEL]) == null ? void 0 : R.prevPage) == null ? void 0 : h.pageId) ?? null : n ? ((A = (x = l[s.TOPIC_SELECTION]) == null ? void 0 : x.prevPage) == null ? void 0 : A.pageId) ?? null : null;
|
|
50
|
+
})(), L = (() => {
|
|
51
|
+
var d, m, o;
|
|
52
|
+
return P ? _ ? ((d = l[s.LEARNING_LEVEL]) == null ? void 0 : d.nextPage) ?? null : n ? ((m = l[s.TOPIC_SELECTION]) == null ? void 0 : m.nextPage) ?? null : (o = l[(g == null ? void 0 : g.length) === 0 ? s.STUDENT_ENRICHMENT : s.TEST_PREP]) == null ? void 0 : o.nextPage : null;
|
|
57
53
|
})();
|
|
58
|
-
if (
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
var
|
|
62
|
-
return o.id ===
|
|
54
|
+
if (L && P) {
|
|
55
|
+
const d = (o) => E.length === 0 && o === s.TEST_PREP || g.length === 0 && o === s.STUDENT_ENRICHMENT || _ && o === s.LEARNING_LEVEL || n && o === s.TOPIC_SELECTION, m = y.pages.filter((o) => !d(o.id));
|
|
56
|
+
y.pages = m.map((o) => {
|
|
57
|
+
var S;
|
|
58
|
+
return o.id === P ? { ...o, nextPage: L } : o.id === L.pageId ? {
|
|
63
59
|
...o,
|
|
64
60
|
prevPage: {
|
|
65
|
-
buttonLabel: ((
|
|
66
|
-
pageId:
|
|
61
|
+
buttonLabel: ((S = l[P]) == null ? void 0 : S.navigationLabel) ?? "",
|
|
62
|
+
pageId: P
|
|
67
63
|
}
|
|
68
64
|
} : o;
|
|
69
65
|
});
|
|
70
66
|
}
|
|
71
|
-
return
|
|
72
|
-
},
|
|
73
|
-
var
|
|
74
|
-
const { preference_config: a } =
|
|
75
|
-
return
|
|
76
|
-
({ preference_code:
|
|
77
|
-
preference_code:
|
|
78
|
-
preference_name:
|
|
79
|
-
preference_category:
|
|
80
|
-
preference_description:
|
|
67
|
+
return y;
|
|
68
|
+
}, q = (r, e) => {
|
|
69
|
+
var t;
|
|
70
|
+
const { preference_config: a } = r;
|
|
71
|
+
return e.length > 0 ? ((t = a == null ? void 0 : a.filter((n) => e.includes(n.preference_code))) == null ? void 0 : t.map(
|
|
72
|
+
({ preference_code: n, preference_name: c, preference_category: i, preference_description: u }) => ({
|
|
73
|
+
preference_code: n,
|
|
74
|
+
preference_name: c,
|
|
75
|
+
preference_category: i,
|
|
76
|
+
preference_description: u
|
|
81
77
|
})
|
|
82
78
|
)) || [] : [];
|
|
83
|
-
},
|
|
84
|
-
if (!(
|
|
79
|
+
}, z = (r, e, a = !1) => {
|
|
80
|
+
if (!(r != null && r.length)) return [];
|
|
85
81
|
if (a) {
|
|
86
|
-
const
|
|
87
|
-
return
|
|
82
|
+
const t = r.find((n) => (n == null ? void 0 : n.preference_category) === e);
|
|
83
|
+
return t ? [t.preference_code] : [];
|
|
88
84
|
}
|
|
89
|
-
return
|
|
85
|
+
return r.filter((t) => (t == null ? void 0 : t.preference_category) === e).map((t) => t.preference_code);
|
|
90
86
|
};
|
|
91
87
|
export {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
88
|
+
Z as filterAndUpdateSlideNavigation,
|
|
89
|
+
W as getFormattedPreferences,
|
|
90
|
+
q as getFormattedStudentPersonalizedPreference,
|
|
91
|
+
z as getPreferenceCodesByCategory,
|
|
92
|
+
Y as getWeekdayAndStartTimeFromPreference,
|
|
93
|
+
j as isPLASource,
|
|
94
|
+
B as updateGoalInFormData
|
|
99
95
|
};
|
|
100
96
|
//# 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 {\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 updatedGoals = goals ? [...goals] : [];\n const goalIndex = updatedGoals.findIndex(goal => goal.goal_category === goalCategory);\n\n const goalWithCategory = {\n ...data,\n goal_category: goalCategory,\n };\n\n if (goalIndex === -1) {\n // Add new goal if it doesn't exist\n updatedGoals.push(goalWithCategory);\n } else {\n // Update existing goal\n updatedGoals[goalIndex] = {\n ...updatedGoals[goalIndex],\n ...goalWithCategory,\n };\n }\n\n // Filter out any goals without goal_code (cleanup existing data)\n return updatedGoals.filter(goal => goal.goal_code);\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 removeTopicSelection,\n}: {\n milestoneConfigData: IMilestoneConfig;\n trialHomeData: ITrialHomeData;\n removeTopicSelection?: boolean;\n grade?: string;\n goal?: string;\n}) => {\n const { student, demo_info: demoInfo } = trialHomeData;\n const {\n grade: studentGrade,\n enrollment_type: enrollmentType,\n can_show_topic_selection: canShowTopicSelection = true,\n } = 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 const isRemovingTopicSelection = !canShowTopicSelection || !!removeTopicSelection;\n\n if (\n testPrepGoals?.length > 0 &&\n enrichmentGoals?.length > 0 &&\n !isHighEnrollmentProgramSelected &&\n !isRemovingTopicSelection\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 if (isRemovingTopicSelection) {\n return pagesMap[TrialPageId.TOPIC_SELECTION]?.prevPage?.pageId ?? null;\n }\n\n return null;\n })();\n\n // the new next page reference for slideIdToUpdate\n const updatedNextPageInfo = (() => {\n if (!slideIdToUpdate) return null;\n\n if (isHighEnrollmentProgramSelected) {\n return pagesMap[TrialPageId.LEARNING_LEVEL]?.nextPage ?? null;\n }\n\n if (isRemovingTopicSelection) {\n return pagesMap[TrialPageId.TOPIC_SELECTION]?.nextPage ?? null;\n }\n\n return pagesMap[\n enrichmentGoals?.length === 0 ? TrialPageId.STUDENT_ENRICHMENT : TrialPageId.TEST_PREP\n ]?.nextPage;\n })();\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 (isRemovingTopicSelection && slideId === TrialPageId.TOPIC_SELECTION);\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","updatedGoals","goalIndex","goal","goalWithCategory","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","removeTopicSelection","student","demoInfo","studentGrade","enrollmentType","canShowTopicSelection","stream","regionData","countryCode","getGoals","getGoalsFromConfig","testPrepGoals","GOAL_CATEGORY","enrichmentGoals","isHighEnrollmentProgramSelected","g","HIGH_ENROLLMENT_PROGRAMS_MAP","isRemovingTopicSelection","updatedTrialHomeData","pagesMap","page","slideIdToUpdate","_b","_a","TrialPageId","_d","_c","_f","_e","_h","_g","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 updatedGoals = goals ? [...goals] : [];\n const goalIndex = updatedGoals.findIndex(goal => goal.goal_category === goalCategory);\n\n const goalWithCategory = {\n ...data,\n goal_category: goalCategory,\n };\n\n if (goalIndex === -1) {\n // Add new goal if it doesn't exist\n updatedGoals.push(goalWithCategory);\n } else {\n // Update existing goal\n updatedGoals[goalIndex] = {\n ...updatedGoals[goalIndex],\n ...goalWithCategory,\n };\n }\n\n // Filter out any goals without goal_code (cleanup existing data)\n return updatedGoals.filter(goal => goal.goal_code);\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 removeTopicSelection,\n}: {\n milestoneConfigData: IMilestoneConfig;\n trialHomeData: ITrialHomeData;\n removeTopicSelection?: boolean;\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 !removeTopicSelection\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 if (removeTopicSelection) {\n return pagesMap[TrialPageId.TOPIC_SELECTION]?.prevPage?.pageId ?? null;\n }\n\n return null;\n })();\n\n // the new next page reference for slideIdToUpdate\n const updatedNextPageInfo = (() => {\n if (!slideIdToUpdate) return null;\n\n if (isHighEnrollmentProgramSelected) {\n return pagesMap[TrialPageId.LEARNING_LEVEL]?.nextPage ?? null;\n }\n\n if (removeTopicSelection) {\n return pagesMap[TrialPageId.TOPIC_SELECTION]?.nextPage ?? null;\n }\n\n return pagesMap[\n enrichmentGoals?.length === 0 ? TrialPageId.STUDENT_ENRICHMENT : TrialPageId.TEST_PREP\n ]?.nextPage;\n })();\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 (removeTopicSelection && slideId === TrialPageId.TOPIC_SELECTION);\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","updatedGoals","goalIndex","goal","goalWithCategory","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","removeTopicSelection","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","_h","_g","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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trial-session-types.js","sources":["../../../src/features/trial-session/trial-session-types.ts"],"sourcesContent":["import type { Dispatch, ReactElement, SetStateAction } from 'react';\n\nimport type { TNodeTypes } from '../../types/models/worksheet';\nimport type { IInfoMessage } from '../circle-games/games/web-view/web-view-types';\nimport type {\n IMilestoneConfig,\n TCourseStream,\n TEnrollmentTypes,\n TPreferenceCategory,\n} from '../milestone/create/milestone-create-types';\nimport type { IAvatarLayer } from '../ui/avatar/avatar-types';\nimport type { TUserTypes } from '../ui/types';\nimport type { TPreference } from './comps/class-preference/class-preference-types';\nimport type {\n ITrialCircleConfig,\n ITrialCircleGameParams,\n} from './comps/trial-circle-game/trial-circle-game-types';\nimport type { TrialPageId } from './trial-session-constants';\nimport { type ITrialTopicsData } from './comps/topic-selection/topic-selection-types';\n\nexport type { TSessionReportData as TSessionReport } from './comps/session-report/session-report-types';\n\nexport type TSlideId = TrialPageId;\n\nexport type TRegionData = {\n opportunity_country: string;\n};\n\nexport type TPreferenceSchema = {\n preference_code: string;\n preference_name: string;\n preference_category: TPreferenceCategory;\n};\n\nexport enum EClassTimeAlertLevel {\n FIVE_MIN = '5min',\n FIFTEEN_MIN = '15min',\n}\ninterface IButtonConfig {\n buttonLabel: string;\n pageId: TrialPageId;\n}\n\nexport interface ISolution {\n media?: string;\n media_type?: 'image' | 'video';\n text?: string;\n}\n\nexport type TDegreeInformation = {\n degree_name?: string;\n field_of_study?: string;\n degree_code?: string;\n};\n\nexport interface ITeacherProfileDetails {\n lower_grade: string;\n higher_grade: string;\n header_image: string;\n years_of_experience: number;\n number_of_students_taught: number;\n countries: string[];\n degree: TDegreeInformation;\n first_name: string;\n last_name: string;\n teacher_profile_url?: string;\n}\n\nexport interface ISlide {\n id: TrialPageId;\n renderAs: 'split' | 'full';\n renderAVIn: 'left' | 'right';\n header: string;\n subHeader?: string;\n prevPage?: IButtonConfig;\n nextPage?: IButtonConfig;\n cues?: string[];\n dos?: string[];\n donts?: string[];\n navigationLabel?: string;\n slideTag?: string;\n teacher_profile?: ITeacherProfileDetails;\n solutions?: ISolution[];\n enableSessionPerk?: boolean;\n showProfileHighlights?: boolean;\n}\n\nexport interface TGoals {\n goal_code?: string;\n milestone_date_ts?: number;\n goal_category?: string;\n milestone_name?: string;\n publish?: boolean;\n program_code?: string;\n}\n\nexport interface ITrialSessionFormFields {\n id: string;\n name?: string;\n grade?: string;\n course?: string;\n curriculum?: string;\n goals?: TGoals[];\n studentProfile?: {\n profileSummary?: string;\n dummyProfileImageIndex?: number;\n summaryFetched?: boolean;\n summaryFetchFailed?: boolean;\n };\n enrollmentType?: TEnrollmentTypes;\n userNodeId?: string;\n nodeId?: string;\n nodeType?: TNodeTypes;\n attemptId?: string;\n preferences?: TPreference[];\n personalizedLevel?: string[];\n personalizedFocus?: string[];\n personalizedBehaviors?: string[];\n personalizedObjectives?: string[];\n personalizedPosition?: string[];\n isCircleGamePlayed?: boolean;\n isCirclePuzzleSolved?: boolean;\n isCircleSkillCompleted?: boolean;\n studentTimezone?: string;\n showCircleGameScreen?: boolean;\n accuracyStr?: string;\n totalTimeTaken?: number;\n chapterId?: string;\n matchmakingId?: string;\n numberInNameError?: boolean;\n confirmationModalActive?: boolean;\n resetAttempt: boolean;\n selectedTopics?: string[];\n}\n\nexport interface IButtonState {\n isDisabled: boolean;\n isLoading: boolean;\n}\n\nexport interface ITrialHomeData {\n pages: ISlide[];\n demo_info: {\n student_classroom_id: string;\n stream: TCourseStream;\n region_data: TRegionData;\n scheduled_start_time: number;\n course?: string;\n goal_code?: string | null;\n };\n parent: {\n name: string;\n };\n student: {\n grade: string;\n name: string;\n circle_username: string;\n user_avatar: IAvatarLayer[];\n enrollment_type: TEnrollmentTypes;\n
|
|
1
|
+
{"version":3,"file":"trial-session-types.js","sources":["../../../src/features/trial-session/trial-session-types.ts"],"sourcesContent":["import type { Dispatch, ReactElement, SetStateAction } from 'react';\n\nimport type { TNodeTypes } from '../../types/models/worksheet';\nimport type { IInfoMessage } from '../circle-games/games/web-view/web-view-types';\nimport type {\n IMilestoneConfig,\n TCourseStream,\n TEnrollmentTypes,\n TPreferenceCategory,\n} from '../milestone/create/milestone-create-types';\nimport type { IAvatarLayer } from '../ui/avatar/avatar-types';\nimport type { TUserTypes } from '../ui/types';\nimport type { TPreference } from './comps/class-preference/class-preference-types';\nimport type {\n ITrialCircleConfig,\n ITrialCircleGameParams,\n} from './comps/trial-circle-game/trial-circle-game-types';\nimport type { TrialPageId } from './trial-session-constants';\nimport { type ITrialTopicsData } from './comps/topic-selection/topic-selection-types';\n\nexport type { TSessionReportData as TSessionReport } from './comps/session-report/session-report-types';\n\nexport type TSlideId = TrialPageId;\n\nexport type TRegionData = {\n opportunity_country: string;\n};\n\nexport type TPreferenceSchema = {\n preference_code: string;\n preference_name: string;\n preference_category: TPreferenceCategory;\n};\n\nexport enum EClassTimeAlertLevel {\n FIVE_MIN = '5min',\n FIFTEEN_MIN = '15min',\n}\ninterface IButtonConfig {\n buttonLabel: string;\n pageId: TrialPageId;\n}\n\nexport interface ISolution {\n media?: string;\n media_type?: 'image' | 'video';\n text?: string;\n}\n\nexport type TDegreeInformation = {\n degree_name?: string;\n field_of_study?: string;\n degree_code?: string;\n};\n\nexport interface ITeacherProfileDetails {\n lower_grade: string;\n higher_grade: string;\n header_image: string;\n years_of_experience: number;\n number_of_students_taught: number;\n countries: string[];\n degree: TDegreeInformation;\n first_name: string;\n last_name: string;\n teacher_profile_url?: string;\n}\n\nexport interface ISlide {\n id: TrialPageId;\n renderAs: 'split' | 'full';\n renderAVIn: 'left' | 'right';\n header: string;\n subHeader?: string;\n prevPage?: IButtonConfig;\n nextPage?: IButtonConfig;\n cues?: string[];\n dos?: string[];\n donts?: string[];\n navigationLabel?: string;\n slideTag?: string;\n teacher_profile?: ITeacherProfileDetails;\n solutions?: ISolution[];\n enableSessionPerk?: boolean;\n showProfileHighlights?: boolean;\n}\n\nexport interface TGoals {\n goal_code?: string;\n milestone_date_ts?: number;\n goal_category?: string;\n milestone_name?: string;\n publish?: boolean;\n program_code?: string;\n}\n\nexport interface ITrialSessionFormFields {\n id: string;\n name?: string;\n grade?: string;\n course?: string;\n curriculum?: string;\n goals?: TGoals[];\n studentProfile?: {\n profileSummary?: string;\n dummyProfileImageIndex?: number;\n summaryFetched?: boolean;\n summaryFetchFailed?: boolean;\n };\n enrollmentType?: TEnrollmentTypes;\n userNodeId?: string;\n nodeId?: string;\n nodeType?: TNodeTypes;\n attemptId?: string;\n preferences?: TPreference[];\n personalizedLevel?: string[];\n personalizedFocus?: string[];\n personalizedBehaviors?: string[];\n personalizedObjectives?: string[];\n personalizedPosition?: string[];\n isCircleGamePlayed?: boolean;\n isCirclePuzzleSolved?: boolean;\n isCircleSkillCompleted?: boolean;\n studentTimezone?: string;\n showCircleGameScreen?: boolean;\n accuracyStr?: string;\n totalTimeTaken?: number;\n chapterId?: string;\n matchmakingId?: string;\n numberInNameError?: boolean;\n confirmationModalActive?: boolean;\n resetAttempt: boolean;\n selectedTopics?: string[];\n}\n\nexport interface IButtonState {\n isDisabled: boolean;\n isLoading: boolean;\n}\n\nexport interface ITrialHomeData {\n pages: ISlide[];\n demo_info: {\n student_classroom_id: string;\n stream: TCourseStream;\n region_data: TRegionData;\n scheduled_start_time: number;\n course?: string;\n goal_code?: string | null;\n };\n parent: {\n name: string;\n };\n student: {\n grade: string;\n name: string;\n circle_username: string;\n user_avatar: IAvatarLayer[];\n enrollment_type: TEnrollmentTypes;\n };\n teacher: {\n name: string;\n circle_username: string;\n user_avatar: IAvatarLayer[];\n };\n intel_student?: {\n source?: string;\n student_preference?: {\n preferences?: TPreferenceSchema[];\n };\n };\n circle_trial_game_config: ITrialCircleConfig;\n}\n\nexport interface IClassTimeAlertConfig {\n alertLevel: EClassTimeAlertLevel | null;\n isVisible: boolean;\n onComplete: () => void;\n}\n\nexport interface ITrialSessionProps {\n classStartedOn?: Date;\n demoType: string;\n height?: string | number;\n userType: TUserTypes;\n studentId: string;\n teacherId: string;\n teacherClassroomId: string;\n teacherPanel?: ReactElement;\n studentPanel?: ReactElement;\n formData?: ITrialSessionFormFields;\n onFormDataChange?: Dispatch<SetStateAction<ITrialSessionFormFields | undefined>>;\n worksheet?: ReactElement;\n worksheetNavigationPanel?: ReactElement;\n questionsRatingPanel?: ReactElement;\n studentAbsentInClass?: boolean;\n openEndClassModal?: () => void;\n trialGameUrl: string;\n handleInfoMessage: (message: IInfoMessage) => void;\n classTimeAlertConfig?: IClassTimeAlertConfig;\n classDuration?: number;\n changeDemoLevel?: boolean;\n}\n\nexport interface ITrialSessionViewProps extends ITrialSessionProps {\n trialHomeData: ITrialHomeData;\n milestoneConfig: IMilestoneConfig;\n studentTimezone?: string;\n onStudentTimezoneUpdate?: () => void;\n onTrialInformationUpdate?: () => void;\n handleInfoMessage: (message: IInfoMessage) => void;\n onRemoveOptionalSlides?: (grade?: string, goal?: string, removeTopicSelection?: boolean) => void;\n trialTopics?: ITrialTopicsData;\n}\n\nexport interface ITrialSessionContext\n extends Pick<\n ITrialSessionProps,\n | 'classStartedOn'\n | 'formData'\n | 'teacherPanel'\n | 'studentId'\n | 'teacherId'\n | 'studentPanel'\n | 'worksheet'\n | 'worksheetNavigationPanel'\n | 'questionsRatingPanel'\n | 'openEndClassModal'\n | 'studentAbsentInClass'\n | 'classDuration'\n | 'classTimeAlertConfig'\n | 'teacherClassroomId'\n | 'demoType'\n | 'trialGameUrl'\n >,\n Pick<\n ITrialSessionViewProps,\n | 'trialTopics'\n | 'onRemoveOptionalSlides'\n | 'handleInfoMessage'\n | 'onTrialInformationUpdate'\n | 'trialHomeData'\n | 'milestoneConfig'\n > {\n buttonState: { left: IButtonState; right: IButtonState };\n isTeacher: boolean;\n milestoneConfig: IMilestoneConfig;\n slideConfig: ISlide;\n updateButtonState: (\n btnNavDir: 'left' | 'right' | 'both',\n currentState: IButtonState | { left: IButtonState; right: IButtonState },\n ) => void;\n updateSlideConfig: (config: Partial<ITrialSessionFormFields>) => void;\n circleGames: ITrialCircleGameParams;\n}\n"],"names":["EClassTimeAlertLevel"],"mappings":"AAkCY,IAAAA,sBAAAA,OACVA,EAAA,WAAW,QACXA,EAAA,cAAc,SAFJA,IAAAA,KAAA,CAAA,CAAA;"}
|