@cuemath/leap 3.5.67-link3 → 3.5.67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  import r from "styled-components";
2
2
  import t from "../../../ui/layout/flex-view.js";
3
3
  import n from "../../../../assets/line-icons/icons/check2.js";
4
- import p from "../../../../assets/line-icons/icons/bulb2.js";
5
- import i from "../../../../assets/line-icons/icons/cross.js";
4
+ import i from "../../../../assets/line-icons/icons/bulb2.js";
5
+ import s from "../../../../assets/line-icons/icons/cross.js";
6
6
  const d = r.div`
7
7
  width: 100%;
8
8
  height: 100%;
@@ -35,26 +35,29 @@ const d = r.div`
35
35
  left: 0;
36
36
  `, g = r(n)(
37
37
  ({ theme: o }) => `
38
+ flex-shrink: 0;
38
39
  border-radius: 14px;
39
40
  background-color: ${o.colors.GREEN_5};
40
41
  `
41
- ), u = r(p)(
42
+ ), h = r(i)(
42
43
  ({ theme: o }) => `
44
+ flex-shrink: 0;
43
45
  border-radius: 14px;
44
46
  background-color: ${o.colors.YELLOW_5};
45
47
  `
46
- ), h = r(i)(
48
+ ), u = r(s)(
47
49
  ({ theme: o }) => `
50
+ flex-shrink: 0;
48
51
  border-radius: 14px;
49
52
  background-color: ${o.colors.RED_4};
50
53
  `
51
54
  );
52
55
  export {
53
56
  b as AbsoluteWrapper,
54
- u as BulbIcon,
57
+ h as BulbIcon,
55
58
  g as CheckIcon,
56
59
  d as Container,
57
- h as CrossIcon,
60
+ u as CrossIcon,
58
61
  m as HorizontalDottedLine,
59
62
  x as SummaryWrapper
60
63
  };
@@ -1 +1 @@
1
- {"version":3,"file":"session-progress-summary-styled.js","sources":["../../../../../src/features/trial-session/comps/session-progress-summary/session-progress-summary-styled.ts"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../ui/layout/flex-view';\nimport Check2Icon from '../../../../assets/line-icons/icons/check2';\nimport Bulb2Icon from '../../../../assets/line-icons/icons/bulb2';\nimport Cross2Icon from '../../../../assets/line-icons/icons/cross';\n\nconst Container = styled.div`\n width: 100%;\n height: 100%;\n overflow: auto;\n`;\n\nconst SummaryWrapper = styled(FlexView)`\n padding: 26px 14px 26px 44px;\n border-right: 1px solid ${({ theme }) => theme.colors.BLACK};\n &:not(:last-child) {\n border-bottom: 1px solid ${({ theme }) => theme.colors.BLACK};\n }\n`;\n\nconst HorizontalDottedLine = styled.div(\n ({ theme }) => `\n height: 1px;\n margin: 24px 0px;\n margin-left: 88px;\n background-image: repeating-linear-gradient(\n to right,\n ${theme.colors.WHITE_5} 0px,\n ${theme.colors.WHITE_5} 15px,\n transparent 15px,\n transparent 20px\n );\n &:last-child {\n display: none;\n }\n`,\n);\n\nconst AbsoluteWrapper = styled(FlexView)`\n position: absolute;\n top: 0;\n left: 0;\n`;\n\nconst CheckIcon = styled(Check2Icon)(\n ({ theme }) => `\n border-radius: 14px;\n background-color: ${theme.colors.GREEN_5};\n`,\n);\n\nconst BulbIcon = styled(Bulb2Icon)(\n ({ theme }) => `\n border-radius: 14px;\n background-color: ${theme.colors.YELLOW_5};\n`,\n);\n\nconst CrossIcon = styled(Cross2Icon)(\n ({ theme }) => `\n border-radius: 14px;\n background-color: ${theme.colors.RED_4};\n`,\n);\n\nexport {\n Container,\n SummaryWrapper,\n HorizontalDottedLine,\n CheckIcon,\n BulbIcon,\n CrossIcon,\n AbsoluteWrapper,\n};\n"],"names":["Container","styled","SummaryWrapper","FlexView","theme","HorizontalDottedLine","AbsoluteWrapper","CheckIcon","Check2Icon","BulbIcon","Bulb2Icon","CrossIcon","Cross2Icon"],"mappings":";;;;;AAOA,MAAMA,IAAYC,EAAO;AAAA;AAAA;AAAA;AAAA,GAMnBC,IAAiBD,EAAOE,CAAQ;AAAA;AAAA,4BAEV,CAAC,EAAE,OAAAC,EAAA,MAAYA,EAAM,OAAO,KAAK;AAAA;AAAA,+BAE9B,CAAC,EAAE,OAAAA,EAAA,MAAYA,EAAM,OAAO,KAAK;AAAA;AAAA,GAI1DC,IAAuBJ,EAAO;AAAA,EAClC,CAAC,EAAE,OAAAG,EAAA,MAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMXA,EAAM,OAAO,OAAO;AAAA,MACpBA,EAAM,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ1B,GAEME,IAAkBL,EAAOE,CAAQ;AAAA;AAAA;AAAA;AAAA,GAMjCI,IAAYN,EAAOO,CAAU;AAAA,EACjC,CAAC,EAAE,OAAAJ,EAAA,MAAY;AAAA;AAAA,sBAEKA,EAAM,OAAO,OAAO;AAAA;AAE1C,GAEMK,IAAWR,EAAOS,CAAS;AAAA,EAC/B,CAAC,EAAE,OAAAN,EAAA,MAAY;AAAA;AAAA,sBAEKA,EAAM,OAAO,QAAQ;AAAA;AAE3C,GAEMO,IAAYV,EAAOW,CAAU;AAAA,EACjC,CAAC,EAAE,OAAAR,EAAA,MAAY;AAAA;AAAA,sBAEKA,EAAM,OAAO,KAAK;AAAA;AAExC;"}
1
+ {"version":3,"file":"session-progress-summary-styled.js","sources":["../../../../../src/features/trial-session/comps/session-progress-summary/session-progress-summary-styled.ts"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../ui/layout/flex-view';\nimport Check2Icon from '../../../../assets/line-icons/icons/check2';\nimport Bulb2Icon from '../../../../assets/line-icons/icons/bulb2';\nimport Cross2Icon from '../../../../assets/line-icons/icons/cross';\n\nconst Container = styled.div`\n width: 100%;\n height: 100%;\n overflow: auto;\n`;\n\nconst SummaryWrapper = styled(FlexView)`\n padding: 26px 14px 26px 44px;\n border-right: 1px solid ${({ theme }) => theme.colors.BLACK};\n &:not(:last-child) {\n border-bottom: 1px solid ${({ theme }) => theme.colors.BLACK};\n }\n`;\n\nconst HorizontalDottedLine = styled.div(\n ({ theme }) => `\n height: 1px;\n margin: 24px 0px;\n margin-left: 88px;\n background-image: repeating-linear-gradient(\n to right,\n ${theme.colors.WHITE_5} 0px,\n ${theme.colors.WHITE_5} 15px,\n transparent 15px,\n transparent 20px\n );\n &:last-child {\n display: none;\n }\n`,\n);\n\nconst AbsoluteWrapper = styled(FlexView)`\n position: absolute;\n top: 0;\n left: 0;\n`;\n\nconst CheckIcon = styled(Check2Icon)(\n ({ theme }) => `\n flex-shrink: 0;\n border-radius: 14px;\n background-color: ${theme.colors.GREEN_5};\n`,\n);\n\nconst BulbIcon = styled(Bulb2Icon)(\n ({ theme }) => `\n flex-shrink: 0;\n border-radius: 14px;\n background-color: ${theme.colors.YELLOW_5};\n`,\n);\n\nconst CrossIcon = styled(Cross2Icon)(\n ({ theme }) => `\n flex-shrink: 0;\n border-radius: 14px;\n background-color: ${theme.colors.RED_4};\n`,\n);\n\nexport {\n Container,\n SummaryWrapper,\n HorizontalDottedLine,\n CheckIcon,\n BulbIcon,\n CrossIcon,\n AbsoluteWrapper,\n};\n"],"names":["Container","styled","SummaryWrapper","FlexView","theme","HorizontalDottedLine","AbsoluteWrapper","CheckIcon","Check2Icon","BulbIcon","Bulb2Icon","CrossIcon","Cross2Icon"],"mappings":";;;;;AAOA,MAAMA,IAAYC,EAAO;AAAA;AAAA;AAAA;AAAA,GAMnBC,IAAiBD,EAAOE,CAAQ;AAAA;AAAA,4BAEV,CAAC,EAAE,OAAAC,EAAA,MAAYA,EAAM,OAAO,KAAK;AAAA;AAAA,+BAE9B,CAAC,EAAE,OAAAA,EAAA,MAAYA,EAAM,OAAO,KAAK;AAAA;AAAA,GAI1DC,IAAuBJ,EAAO;AAAA,EAClC,CAAC,EAAE,OAAAG,EAAA,MAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMXA,EAAM,OAAO,OAAO;AAAA,MACpBA,EAAM,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ1B,GAEME,IAAkBL,EAAOE,CAAQ;AAAA;AAAA;AAAA;AAAA,GAMjCI,IAAYN,EAAOO,CAAU;AAAA,EACjC,CAAC,EAAE,OAAAJ,EAAA,MAAY;AAAA;AAAA;AAAA,sBAGKA,EAAM,OAAO,OAAO;AAAA;AAE1C,GAEMK,IAAWR,EAAOS,CAAS;AAAA,EAC/B,CAAC,EAAE,OAAAN,EAAA,MAAY;AAAA;AAAA;AAAA,sBAGKA,EAAM,OAAO,QAAQ;AAAA;AAE3C,GAEMO,IAAYV,EAAOW,CAAU;AAAA,EACjC,CAAC,EAAE,OAAAR,EAAA,MAAY;AAAA;AAAA;AAAA,sBAGKA,EAAM,OAAO,KAAK;AAAA;AAExC;"}
@@ -1,8 +1,8 @@
1
- import { jsxs as m, jsx as e } from "react/jsx-runtime";
2
- import { memo as D, useMemo as B, useCallback as d, useEffect as h } from "react";
1
+ import { jsxs as m, jsx as r } from "react/jsx-runtime";
2
+ import { memo as D, useMemo as B, useCallback as d, useEffect as f } from "react";
3
3
  import { getGradesFromConfig as E } from "../../../milestone/create/milestone-create-helpers.js";
4
4
  import G from "../../../ui/image/image.js";
5
- import C from "../../../ui/inputs/select-input/select-input.js";
5
+ import h from "../../../ui/inputs/select-input/select-input.js";
6
6
  import P from "../../../ui/inputs/text-input/text-input.js";
7
7
  import k from "../../../ui/separator/separator.js";
8
8
  import { useTrialSessionContext as H } from "../../context/use-trial-session-context.js";
@@ -15,14 +15,14 @@ import { getCourseOptions as M } from "./student-info-helpers.js";
15
15
  import { getTopicsToShow as q } from "../topic-selection/topic-selection-helpers.js";
16
16
  const se = D(function() {
17
17
  const {
18
- formData: b,
19
- milestoneConfig: I,
20
- trialTopics: i,
21
- trialHomeData: T,
18
+ formData: C,
19
+ milestoneConfig: b,
20
+ trialTopics: a,
21
+ trialHomeData: I,
22
22
  updateSlideConfig: o,
23
23
  updateButtonState: u,
24
- onRemoveOptionalSlides: a
25
- } = H(), { name: p, grade: r, 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(r)), g = !!(p && r && (!(s.length > 0) || t)), f = B(() => i ? q(i, { countryCode: c, grade: r, course: t }) : [], [c, t, r, i]), v = d(
24
+ onRemoveOptionalSlides: i
25
+ } = H(), { name: p, grade: e, course: t, studentProfile: T, numberInNameError: $ } = C || {}, { dummyProfileImageIndex: x } = T || {}, { demo_info: y } = I, { region_data: _ } = y, { opportunity_country: c = "US" } = _ || {}, w = E(b), S = F(x), s = M(Number(e)), g = !!(p && e && (!(s.length > 0) || t)), L = B(() => a ? q(a, { countryCode: c, grade: e, course: t }) : [], [c, t, e, a]), A = d(
26
26
  (n) => {
27
27
  o({
28
28
  name: n.target.value,
@@ -30,7 +30,7 @@ const se = D(function() {
30
30
  });
31
31
  },
32
32
  [o]
33
- ), A = d(
33
+ ), v = d(
34
34
  (n) => {
35
35
  o({ grade: n, course: "" });
36
36
  },
@@ -41,13 +41,13 @@ const se = D(function() {
41
41
  },
42
42
  [o]
43
43
  );
44
- return h(() => {
45
- r && t && (a == null || a(void 0, void 0, f.length === 0));
46
- }, [f.length, r, t, a]), h(() => {
44
+ return f(() => {
45
+ e && (i == null || i(e, void 0, t));
46
+ }, [L.length, e, t]), f(() => {
47
47
  u("right", { isDisabled: !g, isLoading: !1 });
48
48
  }, [g, u]), /* @__PURE__ */ m(l, { $justifyContent: "center", $alignItems: "center", children: [
49
- /* @__PURE__ */ e(k, { height: 60 }),
50
- /* @__PURE__ */ e(X, { marginBottom: 100 }),
49
+ /* @__PURE__ */ r(k, { height: 60 }),
50
+ /* @__PURE__ */ r(X, { marginBottom: 100 }),
51
51
  /* @__PURE__ */ m(
52
52
  l,
53
53
  {
@@ -62,10 +62,10 @@ const se = D(function() {
62
62
  $borderColor: "BLACK_T_87",
63
63
  $borderRadiusX: 0.5,
64
64
  children: [
65
- /* @__PURE__ */ e(W, {}),
66
- /* @__PURE__ */ e(G, { withLoader: !0, height: 200, width: 200, src: L, borderColor: "BLACK_1" }),
65
+ /* @__PURE__ */ r(W, {}),
66
+ /* @__PURE__ */ r(G, { withLoader: !0, height: 200, width: 200, src: S, borderColor: "BLACK_1" }),
67
67
  /* @__PURE__ */ m(l, { $flexGap: 16, children: [
68
- /* @__PURE__ */ e(
68
+ /* @__PURE__ */ r(
69
69
  P,
70
70
  {
71
71
  renderAs: "primary",
@@ -75,29 +75,29 @@ const se = D(function() {
75
75
  type: "text",
76
76
  name: "name",
77
77
  shape: "borderLess",
78
- onChange: v,
78
+ onChange: A,
79
79
  width: "216px",
80
80
  isTransparent: !0,
81
81
  stickyLabel: !0,
82
- errorMessage: x ? "Please enter a valid name" : void 0
82
+ errorMessage: $ ? "Please enter a valid name" : void 0
83
83
  }
84
84
  ),
85
- /* @__PURE__ */ e(
86
- C,
85
+ /* @__PURE__ */ r(
86
+ h,
87
87
  {
88
88
  renderAs: "primary",
89
89
  label: "Grade",
90
- value: r,
91
- options: S,
90
+ value: e,
91
+ options: w,
92
92
  shape: "borderLess",
93
- onChange: A,
93
+ onChange: v,
94
94
  theme: "dark",
95
95
  widthX: 10,
96
96
  isTransparent: !0
97
97
  }
98
98
  ),
99
- s.length > 0 ? /* @__PURE__ */ e(
100
- C,
99
+ s.length > 0 ? /* @__PURE__ */ r(
100
+ h,
101
101
  {
102
102
  width: "216px",
103
103
  renderAs: "primary",
@@ -111,7 +111,7 @@ const se = D(function() {
111
111
  }
112
112
  ) : null
113
113
  ] }),
114
- /* @__PURE__ */ e(
114
+ /* @__PURE__ */ r(
115
115
  j,
116
116
  {
117
117
  $renderAs: "ub3-bold",
@@ -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 if (grade && course) {\n onRemoveOptionalSlides?.(undefined, undefined, topicsToShow.length === 0);\n }\n }, [topicsToShow.length, grade, course, onRemoveOptionalSlides]);\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
+ {"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 if (grade) {\n onRemoveOptionalSlides?.(grade, undefined, course);\n }\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,96 +1,135 @@
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
- ...a,
9
- goal_category: e
1
+ import { DAYS as R } from "../../constants/date-time.js";
2
+ import { getOffsetBetweenTimezone as W, convertEpochToDateTime as Y, getTimeUnits as Z, convertToMilliseconds as q } from "../../helpers/date-time.js";
3
+ import { GOAL_CATEGORY as L } from "../milestone/constants.js";
4
+ import { getGoalsFromConfig as z } from "../milestone/create/milestone-create-helpers.js";
5
+ import { getTopicsToShow as J } from "./comps/topic-selection/topic-selection-helpers.js";
6
+ import { HIGH_ENROLLMENT_PROGRAMS_MAP as K, TrialPageId as n, TEACHER_TIMEZONE as Q } from "./trial-session-constants.js";
7
+ const de = (o) => o === "PLA", ae = (o, t, s) => {
8
+ const e = o ? [...o] : [], i = e.findIndex((a) => a.goal_category === t), c = {
9
+ ...s,
10
+ goal_category: t
10
11
  };
11
- return n === -1 ? t.push(c) : t[n] = {
12
- ...t[n],
12
+ return i === -1 ? e.push(c) : e[i] = {
13
+ ...e[i],
13
14
  ...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;
15
+ }, e.filter((a) => a.goal_code);
16
+ }, re = (o, t) => {
17
+ if (!t) return [];
18
+ const s = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0), e = W(Q, t), i = s + e, { day: c = "" } = Y(i, t), a = R.indexOf(c);
19
+ return o.length > 0 ? o.filter((l) => l.selectedDay && l.selectedTime).map((l) => {
20
+ const { selectedDay: u, selectedTime: P } = l, { hours: f, minutes: S, period: p } = Z(P), T = (R.indexOf(u) - a + 7) % 7;
20
21
  return {
21
- id: a + t + G({ days: g, hours: N, minutes: T }),
22
- value: `${p}, ${I} - ${N + 1}:${T < 10 ? "0" : ""}${T} ${f}`
22
+ id: s + e + q({ days: T, hours: f, minutes: S }),
23
+ value: `${u}, ${P} - ${f + 1}:${S < 10 ? "0" : ""}${S} ${p}`
23
24
  // Formatted the value string as required
24
25
  };
25
26
  }) : [];
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
- grade: a,
33
- goal: t,
34
- removeTopicSelection: n
27
+ }, ce = (o) => o.filter((t) => typeof t.id == "number" && !isNaN(t.id)).map((t) => {
28
+ const s = new Date(t.id), e = R[s.getDay()], i = e ? e.toLowerCase() : "unknown", c = s.getHours(), a = s.getMinutes(), l = `${c.toString().padStart(2, "0")}:${a.toString().padStart(2, "0")}:00`;
29
+ return { weekday: i, start_time: l };
30
+ }), le = ({
31
+ milestoneConfigData: o,
32
+ trialHomeData: t,
33
+ grade: s,
34
+ goal: e,
35
+ trialTopics: i,
36
+ course: c
35
37
  }) => {
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 || "",
38
+ var C, v, w, D, A, H, M, G, U, $, b, k, F;
39
+ const { student: a, demo_info: l } = t, { grade: u, enrollment_type: P } = a || {}, { stream: f, region_data: S } = l || {}, { opportunity_country: p = "US" } = S || {}, I = (d) => z(o, {
40
+ countryCode: p,
41
+ grade: s || u || "",
39
42
  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;
53
- })();
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 ? {
59
- ...o,
43
+ courseStream: f,
44
+ enrollmentType: P
45
+ }), T = I(L.TEST_PREP), E = I(L.ENRICHMENT), y = I(L.SCHOOL_SUCCESS).some(
46
+ (d) => d.id === e && Object.keys(K).includes(d.programCode ?? "")
47
+ ), x = (i ? J(i, { countryCode: p, grade: s || u || "", course: c }) : []).length === 0;
48
+ if ((T == null ? void 0 : T.length) > 0 && (E == null ? void 0 : E.length) > 0 && !y && !x)
49
+ return t;
50
+ const N = { ...t }, g = Object.fromEntries(N.pages.map((d) => [d.id, d])), m = [];
51
+ if (((v = (C = g[n.SCHOOL_GOALS]) == null ? void 0 : C.nextPage) == null ? void 0 : v.pageId) === n.TEST_PREP && (T.length === 0 && E.length === 0 ? m.push({
52
+ slideId: n.SCHOOL_GOALS,
53
+ newNextPage: (w = g[n.STUDENT_ENRICHMENT]) == null ? void 0 : w.nextPage,
54
+ shouldRemoveSlide: n.STUDENT_ENRICHMENT
55
+ }) : T.length === 0 && m.push({
56
+ slideId: n.SCHOOL_GOALS,
57
+ newNextPage: (D = g[n.TEST_PREP]) == null ? void 0 : D.nextPage,
58
+ shouldRemoveSlide: n.TEST_PREP
59
+ })), T.length > 0 && ((H = (A = g[n.TEST_PREP]) == null ? void 0 : A.nextPage) == null ? void 0 : H.pageId) === n.STUDENT_ENRICHMENT && E.length === 0 && m.push({
60
+ slideId: n.TEST_PREP,
61
+ newNextPage: (M = g[n.STUDENT_ENRICHMENT]) == null ? void 0 : M.nextPage,
62
+ shouldRemoveSlide: n.STUDENT_ENRICHMENT
63
+ }), y) {
64
+ const d = (U = (G = g[n.LEARNING_LEVEL]) == null ? void 0 : G.prevPage) == null ? void 0 : U.pageId;
65
+ d && m.push({
66
+ slideId: d,
67
+ newNextPage: ($ = g[n.LEARNING_LEVEL]) == null ? void 0 : $.nextPage,
68
+ shouldRemoveSlide: n.LEARNING_LEVEL
69
+ });
70
+ }
71
+ if (x) {
72
+ const d = (k = (b = g[n.TOPIC_SELECTION]) == null ? void 0 : b.prevPage) == null ? void 0 : k.pageId;
73
+ d && m.push({
74
+ slideId: d,
75
+ newNextPage: (F = g[n.TOPIC_SELECTION]) == null ? void 0 : F.nextPage,
76
+ shouldRemoveSlide: n.TOPIC_SELECTION
77
+ });
78
+ }
79
+ if (m.length > 0) {
80
+ const d = new Set(
81
+ m.map((r) => r.shouldRemoveSlide).filter((r) => r !== void 0)
82
+ ), B = N.pages.filter((r) => !d.has(r.id));
83
+ N.pages = B.map((r) => {
84
+ var V;
85
+ const _ = m.find((O) => O.slideId === r.id);
86
+ if (_ != null && _.newNextPage)
87
+ return {
88
+ ...r,
89
+ nextPage: _.newNextPage
90
+ };
91
+ const h = m.find(
92
+ (O) => {
93
+ var j;
94
+ return ((j = O.newNextPage) == null ? void 0 : j.pageId) === r.id;
95
+ }
96
+ );
97
+ return h ? {
98
+ ...r,
60
99
  prevPage: {
61
- buttonLabel: ((S = l[P]) == null ? void 0 : S.navigationLabel) ?? "",
62
- pageId: P
100
+ buttonLabel: ((V = g[h.slideId]) == null ? void 0 : V.navigationLabel) ?? "",
101
+ pageId: h.slideId
63
102
  }
64
- } : o;
103
+ } : r;
65
104
  });
66
105
  }
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,
106
+ return N;
107
+ }, ge = (o, t) => {
108
+ var e;
109
+ const { preference_config: s } = o;
110
+ return t.length > 0 ? ((e = s == null ? void 0 : s.filter((i) => t.includes(i.preference_code))) == null ? void 0 : e.map(
111
+ ({ preference_code: i, preference_name: c, preference_category: a, preference_description: l }) => ({
112
+ preference_code: i,
74
113
  preference_name: c,
75
- preference_category: i,
76
- preference_description: u
114
+ preference_category: a,
115
+ preference_description: l
77
116
  })
78
117
  )) || [] : [];
79
- }, z = (r, e, a = !1) => {
80
- if (!(r != null && r.length)) return [];
81
- if (a) {
82
- const t = r.find((n) => (n == null ? void 0 : n.preference_category) === e);
83
- return t ? [t.preference_code] : [];
118
+ }, me = (o, t, s = !1) => {
119
+ if (!(o != null && o.length)) return [];
120
+ if (s) {
121
+ const e = o.find((i) => (i == null ? void 0 : i.preference_category) === t);
122
+ return e ? [e.preference_code] : [];
84
123
  }
85
- return r.filter((t) => (t == null ? void 0 : t.preference_category) === e).map((t) => t.preference_code);
124
+ return o.filter((e) => (e == null ? void 0 : e.preference_category) === t).map((e) => e.preference_code);
86
125
  };
87
126
  export {
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
127
+ le as filterAndUpdateSlideNavigation,
128
+ re as getFormattedPreferences,
129
+ ge as getFormattedStudentPersonalizedPreference,
130
+ me as getPreferenceCodesByCategory,
131
+ ce as getWeekdayAndStartTimeFromPreference,
132
+ de as isPLASource,
133
+ ae as updateGoalInFormData
95
134
  };
96
135
  //# 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 { 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
+ {"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 { getTopicsToShow } from './comps/topic-selection/topic-selection-helpers';\nimport { type ITrialTopicsData } from './comps/topic-selection/topic-selection-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 trialTopics,\n course,\n}: {\n milestoneConfigData: IMilestoneConfig;\n trialHomeData: ITrialHomeData;\n trialTopics?: ITrialTopicsData;\n course?: string;\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 const trialTopicsToShow = trialTopics\n ? getTopicsToShow(trialTopics, { countryCode, grade: grade || studentGrade || '', course })\n : [];\n const removeTopicSelection = trialTopicsToShow.length === 0;\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 // Collect all slides that need navigation updates\n const slidesToUpdate: Array<{\n slideId: TrialPageId;\n newNextPage: unknown;\n shouldRemoveSlide?: TrialPageId;\n }> = [];\n\n // Check for TEST_PREP removal\n if (pagesMap[TrialPageId.SCHOOL_GOALS]?.nextPage?.pageId === TrialPageId.TEST_PREP) {\n if (testPrepGoals.length === 0 && enrichmentGoals.length === 0) {\n slidesToUpdate.push({\n slideId: TrialPageId.SCHOOL_GOALS,\n newNextPage: pagesMap[TrialPageId.STUDENT_ENRICHMENT]?.nextPage,\n shouldRemoveSlide: TrialPageId.STUDENT_ENRICHMENT,\n });\n } else if (testPrepGoals.length === 0) {\n slidesToUpdate.push({\n slideId: TrialPageId.SCHOOL_GOALS,\n newNextPage: pagesMap[TrialPageId.TEST_PREP]?.nextPage,\n shouldRemoveSlide: TrialPageId.TEST_PREP,\n });\n }\n }\n\n // Check for STUDENT_ENRICHMENT removal\n if (\n testPrepGoals.length > 0 &&\n pagesMap[TrialPageId.TEST_PREP]?.nextPage?.pageId === TrialPageId.STUDENT_ENRICHMENT &&\n enrichmentGoals.length === 0\n ) {\n slidesToUpdate.push({\n slideId: TrialPageId.TEST_PREP,\n newNextPage: pagesMap[TrialPageId.STUDENT_ENRICHMENT]?.nextPage,\n shouldRemoveSlide: TrialPageId.STUDENT_ENRICHMENT,\n });\n }\n\n // Check for LEARNING_LEVEL removal (high enrollment program)\n if (isHighEnrollmentProgramSelected) {\n const learningLevelPrevPageId = pagesMap[TrialPageId.LEARNING_LEVEL]?.prevPage?.pageId;\n\n if (learningLevelPrevPageId) {\n slidesToUpdate.push({\n slideId: learningLevelPrevPageId,\n newNextPage: pagesMap[TrialPageId.LEARNING_LEVEL]?.nextPage,\n shouldRemoveSlide: TrialPageId.LEARNING_LEVEL,\n });\n }\n }\n\n // Check for TOPIC_SELECTION removal\n if (removeTopicSelection) {\n const topicSelectionPrevPageId = pagesMap[TrialPageId.TOPIC_SELECTION]?.prevPage?.pageId;\n\n if (topicSelectionPrevPageId) {\n slidesToUpdate.push({\n slideId: topicSelectionPrevPageId,\n newNextPage: pagesMap[TrialPageId.TOPIC_SELECTION]?.nextPage,\n shouldRemoveSlide: TrialPageId.TOPIC_SELECTION,\n });\n }\n }\n\n // Process all slide updates if we have any\n if (slidesToUpdate.length > 0) {\n // Collect all slides that should be removed\n const slidesToRemove = new Set(\n slidesToUpdate\n .map(update => update.shouldRemoveSlide)\n .filter((slideId): slideId is TrialPageId => slideId !== undefined),\n );\n\n // Filter out slides that should be removed\n const filteredSlides = updatedTrialHomeData.pages.filter(page => !slidesToRemove.has(page.id));\n\n // Update navigation references for each slide that needs updating\n updatedTrialHomeData.pages = filteredSlides.map(page => {\n // Check if this page needs its nextPage updated\n const updateInfo = slidesToUpdate.find(update => update.slideId === page.id);\n\n if (updateInfo?.newNextPage) {\n return {\n ...page,\n nextPage: updateInfo.newNextPage as { pageId: TrialPageId; buttonLabel: string },\n };\n }\n\n // Check if this page needs its prevPage updated (if it's a target of a navigation update)\n const targetOfUpdate = slidesToUpdate.find(\n update => (update.newNextPage as { pageId?: TrialPageId })?.pageId === page.id,\n );\n\n if (targetOfUpdate) {\n return {\n ...page,\n prevPage: {\n buttonLabel: pagesMap[targetOfUpdate.slideId]?.navigationLabel ?? '',\n pageId: targetOfUpdate.slideId,\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","trialTopics","course","student","demoInfo","studentGrade","enrollmentType","stream","regionData","countryCode","getGoals","getGoalsFromConfig","testPrepGoals","GOAL_CATEGORY","enrichmentGoals","isHighEnrollmentProgramSelected","g","HIGH_ENROLLMENT_PROGRAMS_MAP","removeTopicSelection","getTopicsToShow","updatedTrialHomeData","pagesMap","page","slidesToUpdate","_b","_a","TrialPageId","_c","_d","_f","_e","_g","learningLevelPrevPageId","_i","_h","_j","topicSelectionPrevPageId","_l","_k","_m","slidesToRemove","update","slideId","filteredSlides","updateInfo","targetOfUpdate","getFormattedStudentPersonalizedPreference","config","selectedCodes","preferenceConfig","preference_code","preference_name","preference_category","preference_description","getPreferenceCodesByCategory","category","returnFirstOnly","firstMatch"],"mappings":"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"}