@cuemath/leap 3.3.11-link.1 → 3.3.11-link.3

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.
@@ -13,35 +13,35 @@ import { studentLevels as M } from "../student-feedback/student-feedback-constan
13
13
  import N from "./report-information/report-information.js";
14
14
  import { Container as j, ContentWrapper as w } from "./session-report-styled.js";
15
15
  const D = E(() => {
16
- const { formData: g, milestoneConfig: o } = v(), { name: s = "", grade: f, attemptId: i = "shg", personalizedLevel: e = [] } = g || {}, {
16
+ const { formData: u, milestoneConfig: o } = v(), { name: s = "", grade: f, attemptId: n = "shg", personalizedLevel: e = [] } = u || {}, {
17
17
  data: p,
18
18
  get: d,
19
- isProcessing: l,
20
- isProcessingFailed: u
21
- } = b(), m = R(() => {
19
+ isProcessing: g,
20
+ isProcessingFailed: l
21
+ } = b(), i = R(() => {
22
22
  var r, c;
23
- const n = ((c = (r = A(o, {
23
+ const a = ((c = (r = A(o, {
24
24
  grade: f ?? "",
25
25
  courseStream: T.MATH,
26
26
  preferenceCategory: x.LEVEL
27
27
  })) == null ? void 0 : r.find((h) => h.id === (e == null ? void 0 : e[0]))) == null ? void 0 : c.label) ?? "";
28
- return M[n.toLowerCase()];
29
- }, [f, o, e]), a = S(() => {
28
+ return M[a.toLowerCase()];
29
+ }, [f, o, e]), m = S(() => {
30
30
  var r;
31
- const n = y(
31
+ const a = y(
32
32
  o,
33
33
  e
34
34
  );
35
- i && s && n.length > 0 && d(i, {
36
- student_level: ((r = n[0]) == null ? void 0 : r.preference_name) ?? "",
37
- student_name: s
35
+ n && d(n, {
36
+ student_level: ((r = a[0]) == null ? void 0 : r.preference_name) ?? "",
37
+ student_name: s ?? ""
38
38
  });
39
- }, [i, d, o, s, e]);
39
+ }, [n, d, o, s, e]);
40
40
  return P(() => {
41
- a();
42
- }, [a]), u ? /* @__PURE__ */ t(L, { height: "70vh", onTryAgain: a }) : l || !p ? /* @__PURE__ */ t(_, { height: "100vh" }) : /* @__PURE__ */ C(j, { children: [
41
+ m();
42
+ }, [m]), l ? /* @__PURE__ */ t(L, { height: "70vh", onTryAgain: m }) : g || !p ? /* @__PURE__ */ t(_, { height: "100vh" }) : /* @__PURE__ */ C(j, { children: [
43
43
  /* @__PURE__ */ t(F, { height: 60 }),
44
- /* @__PURE__ */ t(I, { textToInsert: (m == null ? void 0 : m.title) ?? "" }),
44
+ /* @__PURE__ */ t(I, { textToInsert: (i == null ? void 0 : i.title) ?? "" }),
45
45
  /* @__PURE__ */ t(w, { $width: 750, children: /* @__PURE__ */ t(N, { sessionReports: p, studentName: s }) })
46
46
  ] });
47
47
  });
@@ -1 +1 @@
1
- {"version":3,"file":"session-report.js","sources":["../../../../../src/features/trial-session/comps/session-report/session-report.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useMemo } from 'react';\n\nimport { COURSE_STREAMS, PREFERENCE_CATEGORY } from '../../../milestone/constants';\nimport { getPreferencesFromConfig } from '../../../milestone/create/milestone-create-helpers';\nimport Error from '../../../ui/error/error';\nimport AppLoader from '../../../ui/loader/app-loader/app-loader';\nimport Separator from '../../../ui/separator/separator';\nimport { useGetSessionReports } from '../../api/trial-home';\nimport { useTrialSessionContext } from '../../context/use-trial-session-context';\nimport { getFormattedStudentPersonalizedPreference } from '../../helper';\nimport SlideHeader from '../slide-header';\nimport { studentLevels } from '../student-feedback/student-feedback-constants';\nimport ReportInformation from './report-information/report-information';\nimport * as Styled from './session-report-styled';\n\nconst SessionReport = memo(() => {\n const { formData, milestoneConfig } = useTrialSessionContext();\n const { name = '', grade, attemptId = 'shg', personalizedLevel = [] } = formData || {};\n\n const {\n data: sessionReports,\n get: getSessionReports,\n isProcessing,\n isProcessingFailed,\n } = useGetSessionReports();\n\n const selectedSessionLevel = useMemo(() => {\n const selectedLabel =\n getPreferencesFromConfig(milestoneConfig, {\n grade: grade ?? '',\n courseStream: COURSE_STREAMS.MATH,\n preferenceCategory: PREFERENCE_CATEGORY.LEVEL,\n })?.find(sessionLevel => sessionLevel.id === personalizedLevel?.[0])?.label ?? '';\n\n return studentLevels[selectedLabel.toLowerCase()];\n }, [grade, milestoneConfig, personalizedLevel]);\n\n const fetchData = useCallback(() => {\n const studentLevel = getFormattedStudentPersonalizedPreference(\n milestoneConfig,\n personalizedLevel,\n );\n\n if (attemptId && name && studentLevel.length > 0) {\n getSessionReports(attemptId, {\n student_level: studentLevel[0]?.preference_name ?? '',\n student_name: name,\n });\n }\n }, [attemptId, getSessionReports, milestoneConfig, name, personalizedLevel]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n if (isProcessingFailed) {\n return <Error height=\"70vh\" onTryAgain={fetchData} />;\n }\n\n if (isProcessing || !sessionReports) {\n return <AppLoader height=\"100vh\" />;\n }\n\n return (\n <Styled.Container>\n <Separator height={60} />\n <SlideHeader textToInsert={selectedSessionLevel?.title ?? ''} />\n <Styled.ContentWrapper $width={750}>\n <ReportInformation sessionReports={sessionReports} studentName={name} />\n </Styled.ContentWrapper>\n </Styled.Container>\n );\n});\n\nSessionReport.displayName = 'SessionReport';\n\nexport default SessionReport;\n"],"names":["SessionReport","memo","formData","milestoneConfig","useTrialSessionContext","name","grade","attemptId","personalizedLevel","sessionReports","getSessionReports","isProcessing","isProcessingFailed","useGetSessionReports","selectedSessionLevel","useMemo","selectedLabel","_b","_a","getPreferencesFromConfig","COURSE_STREAMS","PREFERENCE_CATEGORY","sessionLevel","studentLevels","fetchData","useCallback","studentLevel","getFormattedStudentPersonalizedPreference","useEffect","jsx","Error","AppLoader","jsxs","Styled.Container","Separator","SlideHeader","Styled.ContentWrapper","ReportInformation"],"mappings":";;;;;;;;;;;;;;AAeM,MAAAA,IAAgBC,EAAK,MAAM;AAC/B,QAAM,EAAE,UAAAC,GAAU,iBAAAC,EAAgB,IAAIC,EAAuB,GACvD,EAAE,MAAAC,IAAO,IAAI,OAAAC,GAAO,WAAAC,IAAY,OAAO,mBAAAC,IAAoB,CAAC,EAAA,IAAMN,KAAY,IAE9E;AAAA,IACJ,MAAMO;AAAA,IACN,KAAKC;AAAA,IACL,cAAAC;AAAA,IACA,oBAAAC;AAAA,MACEC,EAAqB,GAEnBC,IAAuBC,EAAQ,MAAM;;AACnC,UAAAC,MACJC,KAAAC,IAAAC,EAAyBhB,GAAiB;AAAA,MACxC,OAAOG,KAAS;AAAA,MAChB,cAAcc,EAAe;AAAA,MAC7B,oBAAoBC,EAAoB;AAAA,IACzC,CAAA,MAJD,gBAAAH,EAII,KAAK,CAAgBI,MAAAA,EAAa,QAAOd,KAAA,gBAAAA,EAAoB,SAJjE,gBAAAS,EAIsE,UAAS;AAE1E,WAAAM,EAAcP,EAAc,YAAA,CAAa;AAAA,EAC/C,GAAA,CAACV,GAAOH,GAAiBK,CAAiB,CAAC,GAExCgB,IAAYC,EAAY,MAAM;;AAClC,UAAMC,IAAeC;AAAA,MACnBxB;AAAA,MACAK;AAAA,IAAA;AAGF,IAAID,KAAaF,KAAQqB,EAAa,SAAS,KAC7ChB,EAAkBH,GAAW;AAAA,MAC3B,iBAAeW,IAAAQ,EAAa,CAAC,MAAd,gBAAAR,EAAiB,oBAAmB;AAAA,MACnD,cAAcb;AAAA,IAAA,CACf;AAAA,EACH,GACC,CAACE,GAAWG,GAAmBP,GAAiBE,GAAMG,CAAiB,CAAC;AAM3E,SAJAoB,EAAU,MAAM;AACJ,IAAAJ;EAAA,GACT,CAACA,CAAS,CAAC,GAEVZ,IACM,gBAAAiB,EAAAC,GAAA,EAAM,QAAO,QAAO,YAAYN,EAAW,CAAA,IAGjDb,KAAgB,CAACF,IACZ,gBAAAoB,EAACE,GAAU,EAAA,QAAO,QAAQ,CAAA,IAIjC,gBAAAC,EAACC,GAAA,EACC,UAAA;AAAA,IAAC,gBAAAJ,EAAAK,GAAA,EAAU,QAAQ,GAAI,CAAA;AAAA,IACtB,gBAAAL,EAAAM,GAAA,EAAY,eAAcrB,KAAA,gBAAAA,EAAsB,UAAS,IAAI;AAAA,IAC9D,gBAAAe,EAACO,GAAA,EAAsB,QAAQ,KAC7B,UAAA,gBAAAP,EAACQ,GAAkB,EAAA,gBAAA5B,GAAgC,aAAaJ,EAAA,CAAM,EACxE,CAAA;AAAA,EACF,EAAA,CAAA;AAEJ,CAAC;AAEDL,EAAc,cAAc;"}
1
+ {"version":3,"file":"session-report.js","sources":["../../../../../src/features/trial-session/comps/session-report/session-report.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useMemo } from 'react';\n\nimport { COURSE_STREAMS, PREFERENCE_CATEGORY } from '../../../milestone/constants';\nimport { getPreferencesFromConfig } from '../../../milestone/create/milestone-create-helpers';\nimport Error from '../../../ui/error/error';\nimport AppLoader from '../../../ui/loader/app-loader/app-loader';\nimport Separator from '../../../ui/separator/separator';\nimport { useGetSessionReports } from '../../api/trial-home';\nimport { useTrialSessionContext } from '../../context/use-trial-session-context';\nimport { getFormattedStudentPersonalizedPreference } from '../../helper';\nimport SlideHeader from '../slide-header';\nimport { studentLevels } from '../student-feedback/student-feedback-constants';\nimport ReportInformation from './report-information/report-information';\nimport * as Styled from './session-report-styled';\n\nconst SessionReport = memo(() => {\n const { formData, milestoneConfig } = useTrialSessionContext();\n const { name = '', grade, attemptId = 'shg', personalizedLevel = [] } = formData || {};\n\n const {\n data: sessionReports,\n get: getSessionReports,\n isProcessing,\n isProcessingFailed,\n } = useGetSessionReports();\n\n const selectedSessionLevel = useMemo(() => {\n const selectedLabel =\n getPreferencesFromConfig(milestoneConfig, {\n grade: grade ?? '',\n courseStream: COURSE_STREAMS.MATH,\n preferenceCategory: PREFERENCE_CATEGORY.LEVEL,\n })?.find(sessionLevel => sessionLevel.id === personalizedLevel?.[0])?.label ?? '';\n\n return studentLevels[selectedLabel.toLowerCase()];\n }, [grade, milestoneConfig, personalizedLevel]);\n\n const fetchData = useCallback(() => {\n const studentLevel = getFormattedStudentPersonalizedPreference(\n milestoneConfig,\n personalizedLevel,\n );\n\n if (attemptId) {\n getSessionReports(attemptId, {\n student_level: studentLevel[0]?.preference_name ?? '',\n student_name: name ?? '',\n });\n }\n }, [attemptId, getSessionReports, milestoneConfig, name, personalizedLevel]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n if (isProcessingFailed) {\n return <Error height=\"70vh\" onTryAgain={fetchData} />;\n }\n\n if (isProcessing || !sessionReports) {\n return <AppLoader height=\"100vh\" />;\n }\n\n return (\n <Styled.Container>\n <Separator height={60} />\n <SlideHeader textToInsert={selectedSessionLevel?.title ?? ''} />\n <Styled.ContentWrapper $width={750}>\n <ReportInformation sessionReports={sessionReports} studentName={name} />\n </Styled.ContentWrapper>\n </Styled.Container>\n );\n});\n\nSessionReport.displayName = 'SessionReport';\n\nexport default SessionReport;\n"],"names":["SessionReport","memo","formData","milestoneConfig","useTrialSessionContext","name","grade","attemptId","personalizedLevel","sessionReports","getSessionReports","isProcessing","isProcessingFailed","useGetSessionReports","selectedSessionLevel","useMemo","selectedLabel","_b","_a","getPreferencesFromConfig","COURSE_STREAMS","PREFERENCE_CATEGORY","sessionLevel","studentLevels","fetchData","useCallback","studentLevel","getFormattedStudentPersonalizedPreference","useEffect","jsx","Error","AppLoader","jsxs","Styled.Container","Separator","SlideHeader","Styled.ContentWrapper","ReportInformation"],"mappings":";;;;;;;;;;;;;;AAeM,MAAAA,IAAgBC,EAAK,MAAM;AAC/B,QAAM,EAAE,UAAAC,GAAU,iBAAAC,EAAgB,IAAIC,EAAuB,GACvD,EAAE,MAAAC,IAAO,IAAI,OAAAC,GAAO,WAAAC,IAAY,OAAO,mBAAAC,IAAoB,CAAC,EAAA,IAAMN,KAAY,IAE9E;AAAA,IACJ,MAAMO;AAAA,IACN,KAAKC;AAAA,IACL,cAAAC;AAAA,IACA,oBAAAC;AAAA,MACEC,EAAqB,GAEnBC,IAAuBC,EAAQ,MAAM;;AACnC,UAAAC,MACJC,KAAAC,IAAAC,EAAyBhB,GAAiB;AAAA,MACxC,OAAOG,KAAS;AAAA,MAChB,cAAcc,EAAe;AAAA,MAC7B,oBAAoBC,EAAoB;AAAA,IACzC,CAAA,MAJD,gBAAAH,EAII,KAAK,CAAgBI,MAAAA,EAAa,QAAOd,KAAA,gBAAAA,EAAoB,SAJjE,gBAAAS,EAIsE,UAAS;AAE1E,WAAAM,EAAcP,EAAc,YAAA,CAAa;AAAA,EAC/C,GAAA,CAACV,GAAOH,GAAiBK,CAAiB,CAAC,GAExCgB,IAAYC,EAAY,MAAM;;AAClC,UAAMC,IAAeC;AAAA,MACnBxB;AAAA,MACAK;AAAA,IAAA;AAGF,IAAID,KACFG,EAAkBH,GAAW;AAAA,MAC3B,iBAAeW,IAAAQ,EAAa,CAAC,MAAd,gBAAAR,EAAiB,oBAAmB;AAAA,MACnD,cAAcb,KAAQ;AAAA,IAAA,CACvB;AAAA,EACH,GACC,CAACE,GAAWG,GAAmBP,GAAiBE,GAAMG,CAAiB,CAAC;AAM3E,SAJAoB,EAAU,MAAM;AACJ,IAAAJ;EAAA,GACT,CAACA,CAAS,CAAC,GAEVZ,IACM,gBAAAiB,EAAAC,GAAA,EAAM,QAAO,QAAO,YAAYN,EAAW,CAAA,IAGjDb,KAAgB,CAACF,IACZ,gBAAAoB,EAACE,GAAU,EAAA,QAAO,QAAQ,CAAA,IAIjC,gBAAAC,EAACC,GAAA,EACC,UAAA;AAAA,IAAC,gBAAAJ,EAAAK,GAAA,EAAU,QAAQ,GAAI,CAAA;AAAA,IACtB,gBAAAL,EAAAM,GAAA,EAAY,eAAcrB,KAAA,gBAAAA,EAAsB,UAAS,IAAI;AAAA,IAC9D,gBAAAe,EAACO,GAAA,EAAsB,QAAQ,KAC7B,UAAA,gBAAAP,EAACQ,GAAkB,EAAA,gBAAA5B,GAAgC,aAAaJ,EAAA,CAAM,EACxE,CAAA;AAAA,EACF,EAAA,CAAA;AAEJ,CAAC;AAEDL,EAAc,cAAc;"}
@@ -58,7 +58,7 @@ const he = N(() => {
58
58
  const k = C(
59
59
  () => [
60
60
  {
61
- title: "Studnet Level",
61
+ title: "Student Level",
62
62
  description: `Catching up: ${y(
63
63
  m,
64
64
  _
@@ -1 +1 @@
1
- {"version":3,"file":"student-profile.js","sources":["../../../../../src/features/trial-session/comps/student-profile/student-profile.tsx"],"sourcesContent":["import type { TGoalCategory } from '../../../milestone/create/milestone-create-types';\nimport type { TColorNames } from '../../../ui/types';\nimport type { IGetStudentProfileSummaryQuery } from '../../api/student-profile-summary';\n\nimport { memo, useCallback, useEffect, useMemo } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../../assets/illustrations/illustrations';\nimport { GOAL_CATEGORY } from '../../../milestone/constants';\nimport Error from '../../../ui/error/error';\nimport Image from '../../../ui/image/image';\nimport FlexView from '../../../ui/layout/flex-view';\nimport AppLoader from '../../../ui/loader/app-loader/app-loader';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport { useGetStudentProfileSummary } from '../../api/student-profile-summary';\nimport { useTrialSessionContext } from '../../context/use-trial-session-context';\nimport { getFormattedStudentPersonalizedPreference } from '../../helper';\nimport SlideHeader from '../slide-header';\nimport { GOAL_MAPPING } from './constant';\nimport StudentProfileHighlights from './student-profile-highlights/student-profile-highlights';\nimport * as Styled from './student-profile-styled';\nimport { getDummyProfileImage, getMilestoneGoalName } from './student-profile-utils';\n\ntype TProfileHighlight = {\n illustration: string;\n background: TColorNames;\n title: string;\n description: string | string[];\n};\n\nconst StudentProfile = memo(() => {\n const {\n isTeacher,\n studentId,\n formData,\n slideConfig,\n milestoneConfig,\n updateSlideConfig,\n updateButtonState,\n } = useTrialSessionContext();\n const { showProfileHighlights } = slideConfig;\n\n const {\n name,\n goals = [],\n studentProfile,\n personalizedObjectives = [],\n personalizedPosition = [],\n } = formData || {};\n const { dummyProfileImageIndex, profileSummary } = studentProfile || {};\n const dummyProfileImage = getDummyProfileImage(dummyProfileImageIndex);\n\n const payload = useMemo<IGetStudentProfileSummaryQuery | null>(() => {\n if (goals && goals.length > 0) {\n return {\n school_success_goal: getMilestoneGoalName(goals, GOAL_CATEGORY.SCHOOL_SUCCESS),\n test_prep_goal: getMilestoneGoalName(goals, GOAL_CATEGORY.TEST_PREP),\n };\n }\n\n return null;\n }, [goals]);\n\n const {\n get: getStudentProfileSummary,\n data,\n isProcessing,\n isProcessed,\n isProcessingFailed,\n } = useGetStudentProfileSummary();\n const { profile_summary: studentProfileSummary } = data || {};\n\n const fetchData = useCallback(() => {\n if (payload) {\n getStudentProfileSummary(studentId, payload);\n }\n }, [getStudentProfileSummary, payload, studentId]);\n\n useEffect(() => {\n updateButtonState('right', { isDisabled: isProcessing, isLoading: false });\n }, [isProcessing, updateButtonState]);\n\n useEffect(() => {\n if (isTeacher && !studentProfile && !showProfileHighlights) {\n fetchData();\n }\n }, [fetchData, isTeacher, studentProfile, showProfileHighlights]);\n\n useEffect(() => {\n if (isTeacher && isProcessed && !showProfileHighlights) {\n updateSlideConfig({\n studentProfile: {\n profileSummary: studentProfileSummary || '',\n dummyProfileImageIndex: Math.floor(Math.random() * 6),\n },\n });\n }\n }, [isProcessed, isTeacher, showProfileHighlights, studentProfileSummary, updateSlideConfig]);\n\n const profileHighlights: TProfileHighlight[] = useMemo(\n () => [\n {\n title: 'Studnet Level',\n description: `Catching up: ${getFormattedStudentPersonalizedPreference(\n milestoneConfig,\n personalizedPosition,\n ).map(objectives => objectives.preference_description)}`,\n illustration: ILLUSTRATIONS.KNOWLEDGE_BLUE,\n background: 'BLUE_1',\n },\n {\n illustration: ILLUSTRATIONS.ARROW_BOARD_GREEN,\n background: 'GREEN_1',\n title: 'Goals',\n description: getFormattedStudentPersonalizedPreference(\n milestoneConfig,\n personalizedObjectives,\n ).map(objectives => objectives.preference_name),\n },\n {\n illustration: ILLUSTRATIONS.BOOK_CHECKED_PURPLE,\n background: 'PURPLE_1',\n title: 'Learning Plan',\n description: goals.map(\n goal => `${GOAL_MAPPING[goal.goal_category as TGoalCategory]}: ${goal.milestone_name}`,\n ),\n },\n ],\n [goals, milestoneConfig, personalizedObjectives, personalizedPosition],\n );\n\n if (isProcessingFailed) {\n return <Error height=\"70vh\" onTryAgain={fetchData} />;\n }\n\n if (isProcessing || (!studentProfile && !showProfileHighlights)) {\n return <AppLoader height=\"100vh\" />;\n }\n\n return (\n <Styled.Container>\n <Separator height={60} />\n <SlideHeader marginBottom={showProfileHighlights ? 50 : 100} />\n {showProfileHighlights ? (\n <Styled.ContentWrapper $width={650}>\n <StudentProfileHighlights profileHighlights={profileHighlights} />\n <Separator height={16} />\n <Text $renderAs=\"ub3\" $color=\"BLACK_T_60\" $align=\"center\">\n We can always revisit this later\n </Text>\n </Styled.ContentWrapper>\n ) : (\n <Styled.ContentWrapper $widthX={46.875}>\n <Styled.AbsoluteImage />\n <FlexView\n $width=\"100%\"\n $heightX={21.875}\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $flexGapX={1.5}\n $gutterX={1.5}\n $background=\"WHITE_2\"\n $borderColor=\"BLACK_T_87\"\n $borderRadiusX={0.5}\n >\n <Styled.ImageWrapper>\n <Image withLoader height={200} width={200} src={dummyProfileImage} />\n </Styled.ImageWrapper>\n <FlexView $flexGap={16}>\n <Text $renderAs=\"ac2-black\">{name}</Text>\n <Text $renderAs=\"ab1\">{profileSummary || ''}</Text>\n </FlexView>\n </FlexView>\n </Styled.ContentWrapper>\n )}\n </Styled.Container>\n );\n});\n\nexport default StudentProfile;\n"],"names":["StudentProfile","memo","isTeacher","studentId","formData","slideConfig","milestoneConfig","updateSlideConfig","updateButtonState","useTrialSessionContext","showProfileHighlights","name","goals","studentProfile","personalizedObjectives","personalizedPosition","dummyProfileImageIndex","profileSummary","dummyProfileImage","getDummyProfileImage","payload","useMemo","getMilestoneGoalName","GOAL_CATEGORY","getStudentProfileSummary","data","isProcessing","isProcessed","isProcessingFailed","useGetStudentProfileSummary","studentProfileSummary","fetchData","useCallback","useEffect","profileHighlights","getFormattedStudentPersonalizedPreference","objectives","ILLUSTRATIONS","goal","GOAL_MAPPING","jsx","Error","AppLoader","jsxs","Styled.Container","Separator","SlideHeader","Styled.ContentWrapper","StudentProfileHighlights","Text","Styled.AbsoluteImage","FlexView","Styled.ImageWrapper","Image"],"mappings":"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"}
1
+ {"version":3,"file":"student-profile.js","sources":["../../../../../src/features/trial-session/comps/student-profile/student-profile.tsx"],"sourcesContent":["import type { TGoalCategory } from '../../../milestone/create/milestone-create-types';\nimport type { TColorNames } from '../../../ui/types';\nimport type { IGetStudentProfileSummaryQuery } from '../../api/student-profile-summary';\n\nimport { memo, useCallback, useEffect, useMemo } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../../assets/illustrations/illustrations';\nimport { GOAL_CATEGORY } from '../../../milestone/constants';\nimport Error from '../../../ui/error/error';\nimport Image from '../../../ui/image/image';\nimport FlexView from '../../../ui/layout/flex-view';\nimport AppLoader from '../../../ui/loader/app-loader/app-loader';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport { useGetStudentProfileSummary } from '../../api/student-profile-summary';\nimport { useTrialSessionContext } from '../../context/use-trial-session-context';\nimport { getFormattedStudentPersonalizedPreference } from '../../helper';\nimport SlideHeader from '../slide-header';\nimport { GOAL_MAPPING } from './constant';\nimport StudentProfileHighlights from './student-profile-highlights/student-profile-highlights';\nimport * as Styled from './student-profile-styled';\nimport { getDummyProfileImage, getMilestoneGoalName } from './student-profile-utils';\n\ntype TProfileHighlight = {\n illustration: string;\n background: TColorNames;\n title: string;\n description: string | string[];\n};\n\nconst StudentProfile = memo(() => {\n const {\n isTeacher,\n studentId,\n formData,\n slideConfig,\n milestoneConfig,\n updateSlideConfig,\n updateButtonState,\n } = useTrialSessionContext();\n const { showProfileHighlights } = slideConfig;\n\n const {\n name,\n goals = [],\n studentProfile,\n personalizedObjectives = [],\n personalizedPosition = [],\n } = formData || {};\n const { dummyProfileImageIndex, profileSummary } = studentProfile || {};\n const dummyProfileImage = getDummyProfileImage(dummyProfileImageIndex);\n\n const payload = useMemo<IGetStudentProfileSummaryQuery | null>(() => {\n if (goals && goals.length > 0) {\n return {\n school_success_goal: getMilestoneGoalName(goals, GOAL_CATEGORY.SCHOOL_SUCCESS),\n test_prep_goal: getMilestoneGoalName(goals, GOAL_CATEGORY.TEST_PREP),\n };\n }\n\n return null;\n }, [goals]);\n\n const {\n get: getStudentProfileSummary,\n data,\n isProcessing,\n isProcessed,\n isProcessingFailed,\n } = useGetStudentProfileSummary();\n const { profile_summary: studentProfileSummary } = data || {};\n\n const fetchData = useCallback(() => {\n if (payload) {\n getStudentProfileSummary(studentId, payload);\n }\n }, [getStudentProfileSummary, payload, studentId]);\n\n useEffect(() => {\n updateButtonState('right', { isDisabled: isProcessing, isLoading: false });\n }, [isProcessing, updateButtonState]);\n\n useEffect(() => {\n if (isTeacher && !studentProfile && !showProfileHighlights) {\n fetchData();\n }\n }, [fetchData, isTeacher, studentProfile, showProfileHighlights]);\n\n useEffect(() => {\n if (isTeacher && isProcessed && !showProfileHighlights) {\n updateSlideConfig({\n studentProfile: {\n profileSummary: studentProfileSummary || '',\n dummyProfileImageIndex: Math.floor(Math.random() * 6),\n },\n });\n }\n }, [isProcessed, isTeacher, showProfileHighlights, studentProfileSummary, updateSlideConfig]);\n\n const profileHighlights: TProfileHighlight[] = useMemo(\n () => [\n {\n title: 'Student Level',\n description: `Catching up: ${getFormattedStudentPersonalizedPreference(\n milestoneConfig,\n personalizedPosition,\n ).map(objectives => objectives.preference_description)}`,\n illustration: ILLUSTRATIONS.KNOWLEDGE_BLUE,\n background: 'BLUE_1',\n },\n {\n illustration: ILLUSTRATIONS.ARROW_BOARD_GREEN,\n background: 'GREEN_1',\n title: 'Goals',\n description: getFormattedStudentPersonalizedPreference(\n milestoneConfig,\n personalizedObjectives,\n ).map(objectives => objectives.preference_name),\n },\n {\n illustration: ILLUSTRATIONS.BOOK_CHECKED_PURPLE,\n background: 'PURPLE_1',\n title: 'Learning Plan',\n description: goals.map(\n goal => `${GOAL_MAPPING[goal.goal_category as TGoalCategory]}: ${goal.milestone_name}`,\n ),\n },\n ],\n [goals, milestoneConfig, personalizedObjectives, personalizedPosition],\n );\n\n if (isProcessingFailed) {\n return <Error height=\"70vh\" onTryAgain={fetchData} />;\n }\n\n if (isProcessing || (!studentProfile && !showProfileHighlights)) {\n return <AppLoader height=\"100vh\" />;\n }\n\n return (\n <Styled.Container>\n <Separator height={60} />\n <SlideHeader marginBottom={showProfileHighlights ? 50 : 100} />\n {showProfileHighlights ? (\n <Styled.ContentWrapper $width={650}>\n <StudentProfileHighlights profileHighlights={profileHighlights} />\n <Separator height={16} />\n <Text $renderAs=\"ub3\" $color=\"BLACK_T_60\" $align=\"center\">\n We can always revisit this later\n </Text>\n </Styled.ContentWrapper>\n ) : (\n <Styled.ContentWrapper $widthX={46.875}>\n <Styled.AbsoluteImage />\n <FlexView\n $width=\"100%\"\n $heightX={21.875}\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $flexGapX={1.5}\n $gutterX={1.5}\n $background=\"WHITE_2\"\n $borderColor=\"BLACK_T_87\"\n $borderRadiusX={0.5}\n >\n <Styled.ImageWrapper>\n <Image withLoader height={200} width={200} src={dummyProfileImage} />\n </Styled.ImageWrapper>\n <FlexView $flexGap={16}>\n <Text $renderAs=\"ac2-black\">{name}</Text>\n <Text $renderAs=\"ab1\">{profileSummary || ''}</Text>\n </FlexView>\n </FlexView>\n </Styled.ContentWrapper>\n )}\n </Styled.Container>\n );\n});\n\nexport default StudentProfile;\n"],"names":["StudentProfile","memo","isTeacher","studentId","formData","slideConfig","milestoneConfig","updateSlideConfig","updateButtonState","useTrialSessionContext","showProfileHighlights","name","goals","studentProfile","personalizedObjectives","personalizedPosition","dummyProfileImageIndex","profileSummary","dummyProfileImage","getDummyProfileImage","payload","useMemo","getMilestoneGoalName","GOAL_CATEGORY","getStudentProfileSummary","data","isProcessing","isProcessed","isProcessingFailed","useGetStudentProfileSummary","studentProfileSummary","fetchData","useCallback","useEffect","profileHighlights","getFormattedStudentPersonalizedPreference","objectives","ILLUSTRATIONS","goal","GOAL_MAPPING","jsx","Error","AppLoader","jsxs","Styled.Container","Separator","SlideHeader","Styled.ContentWrapper","StudentProfileHighlights","Text","Styled.AbsoluteImage","FlexView","Styled.ImageWrapper","Image"],"mappings":"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"}
@@ -1,29 +1,29 @@
1
- import { useCallback as u, useEffect as $ } from "react";
2
- import { COURSE_STREAMS as ee } from "../../milestone/constants.js";
3
- import { useMilestoneBulkPost as te } from "../../milestone/create/api/milestone-bulk.js";
4
- import { usePostStudentPreferences as oe } from "../api/course-stream.js";
5
- import { usePatchStudentInformation as se } from "../api/student-information.js";
6
- import { usePostTeacherAvailability as ae } from "../api/teacher-availability.js";
7
- import { usePatchTrialHome as ne } from "../api/trial-home.js";
8
- import { useTrialSessionContext as re } from "../context/use-trial-session-context.js";
9
- import { getFormattedPreferences as H, getWeekdayAndStartTimeFromPreference as ie, getFormattedStudentPersonalizedPreference as ce } from "../helper.js";
10
- import { DEFAULT_BUTTON_STATE as f, TrialPageId as t } from "../trial-session-constants.js";
11
- import w from "../../../node_modules/uuid/dist/esm-browser/v4.js";
12
- const Pe = () => {
1
+ import { useCallback as u, useEffect as ee } from "react";
2
+ import { COURSE_STREAMS as te } from "../../milestone/constants.js";
3
+ import { useMilestoneBulkPost as oe } from "../../milestone/create/api/milestone-bulk.js";
4
+ import { usePostStudentPreferences as se } from "../api/course-stream.js";
5
+ import { usePatchStudentInformation as ae } from "../api/student-information.js";
6
+ import { usePostTeacherAvailability as ne } from "../api/teacher-availability.js";
7
+ import { usePatchTrialHome as re } from "../api/trial-home.js";
8
+ import { useTrialSessionContext as ie } from "../context/use-trial-session-context.js";
9
+ import { getFormattedPreferences as w, getWeekdayAndStartTimeFromPreference as ce, getFormattedStudentPersonalizedPreference as le } from "../helper.js";
10
+ import { DEFAULT_BUTTON_STATE as p, TrialPageId as t } from "../trial-session-constants.js";
11
+ import K from "../../../node_modules/uuid/dist/esm-browser/v4.js";
12
+ const ge = () => {
13
13
  const {
14
14
  updateSlideConfig: s,
15
- slideConfig: K,
16
- formData: V,
15
+ slideConfig: V,
16
+ formData: W,
17
17
  updateButtonState: a,
18
18
  teacherId: l,
19
19
  studentId: d,
20
20
  milestoneConfig: b,
21
- handleInfoMessage: S,
22
- onTrialInformationUpdate: P,
23
- trialHomeData: W,
21
+ handleInfoMessage: P,
22
+ onTrialInformationUpdate: S,
23
+ trialHomeData: Z,
24
24
  worksheetNavigationPanel: g
25
- } = re(), { nextPage: Z, id: m } = K || {}, { demo_info: j } = W, { stream: A, region_data: q } = j, { opportunity_country: T = "US" } = q || {}, { pageId: i } = Z || {}, {
26
- name: p,
25
+ } = ie(), { nextPage: j, id: m } = V || {}, { demo_info: q } = Z, { stream: A, region_data: J } = q, { opportunity_country: T = "US" } = J || {}, { pageId: i } = j || {}, {
26
+ name: f,
27
27
  grade: _,
28
28
  goals: R,
29
29
  curriculum: E,
@@ -32,8 +32,9 @@ const Pe = () => {
32
32
  personalizedLevel: v = [],
33
33
  personalizedFocus: k = [],
34
34
  personalizedBehaviors: y = [],
35
- personalizedObjectives: D = []
36
- } = V || {}, c = u(() => {
35
+ personalizedObjectives: D = [],
36
+ personalizedPosition: O = []
37
+ } = W || {}, c = u(() => {
37
38
  a("both", {
38
39
  left: { isDisabled: !0, isLoading: !1 },
39
40
  right: { isDisabled: !0, isLoading: !0 }
@@ -41,25 +42,25 @@ const Pe = () => {
41
42
  }, [a]), L = (o) => {
42
43
  if (!o) {
43
44
  const e = {};
44
- (i === t.CIRCLE_GAME || i === t.CIRCLE_PUZZLE || i === t.CIRCLE_SKILL) && (e.matchmakingId = w(), e.showCircleGameScreen = !0), s({ id: i, ...e });
45
+ (i === t.CIRCLE_GAME || i === t.CIRCLE_PUZZLE || i === t.CIRCLE_SKILL) && (e.matchmakingId = K(), e.showCircleGameScreen = !0), s({ id: i, ...e });
45
46
  }
46
- a("both", f), m === t.LEARNING_LEVEL && (P == null || P());
47
- }, { patch: J } = ne({ onComplete: L }), { patch: O } = se({
47
+ a("both", p), m === t.LEARNING_LEVEL && (S == null || S());
48
+ }, { patch: Q } = re({ onComplete: L }), { patch: G } = ae({
48
49
  onComplete: L
49
- }), { post: G } = te({
50
+ }), { post: z } = oe({
50
51
  onComplete: L
51
- }), { post: x } = oe({
52
+ }), { post: x } = se({
52
53
  onComplete: L
53
- }), Q = (o, e) => {
54
+ }), X = (o, e) => {
54
55
  const n = (e == null ? void 0 : e.filter((r) => !r.is_available)) ?? [];
55
56
  if (n.length > 0) {
56
- const r = n.map((Y) => Y.reason).join(`
57
+ const r = n.map(($) => $.reason).join(`
57
58
  `);
58
- S == null || S({ message: r, position: "bottom" }), a("both", f);
59
+ P == null || P({ message: r, position: "bottom" }), a("both", p);
59
60
  return;
60
61
  }
61
- const h = H(N, I);
62
- h.length > 0 ? J("trial-v3-patch", {
62
+ const h = w(N, I);
63
+ h.length > 0 ? Q("trial-v3-patch", {
63
64
  action: "UPDATE_DEMO",
64
65
  action_data: {
65
66
  trial_details: {
@@ -68,11 +69,11 @@ const Pe = () => {
68
69
  },
69
70
  teacher_id: l,
70
71
  student_id: d
71
- }) : a("both", f);
72
- }, { post: z } = ae({
73
- onComplete: Q
74
- }), F = u(() => {
75
- const [o, e] = (p == null ? void 0 : p.split(" ")) || [], n = {
72
+ }) : a("both", p);
73
+ }, { post: F } = ne({
74
+ onComplete: X
75
+ }), M = u(() => {
76
+ const [o, e] = (f == null ? void 0 : f.split(" ")) || [], n = {
76
77
  first_name: o,
77
78
  last_name: e,
78
79
  grade: _,
@@ -81,37 +82,37 @@ const Pe = () => {
81
82
  teacher_id: l,
82
83
  country_alpha_2: T
83
84
  };
84
- /\d/.test(p || "") ? s({ numberInNameError: !0 }) : (c(), O(d, n));
85
+ /\d/.test(f || "") ? s({ numberInNameError: !0 }) : (c(), G(d, n));
85
86
  }, [
86
- p,
87
+ f,
87
88
  _,
88
89
  E,
89
90
  l,
90
91
  T,
91
92
  c,
92
93
  s,
93
- O,
94
+ G,
94
95
  d
95
- ]), M = u(() => {
96
- const o = H(N, I), e = ie(o);
96
+ ]), U = u(() => {
97
+ const o = w(N, I), e = ce(o);
97
98
  if (o.length > 0) {
98
99
  const n = {
99
100
  teacher_id: l,
100
101
  session_list: e
101
102
  };
102
- c(), z(n);
103
+ c(), F(n);
103
104
  } else
104
- s({ id: i }), a("both", f);
105
+ s({ id: i }), a("both", p);
105
106
  }, [
106
107
  N,
107
108
  I,
108
109
  l,
109
- z,
110
+ F,
110
111
  c,
111
112
  s,
112
113
  i,
113
114
  a
114
- ]), U = u(() => {
115
+ ]), B = u(() => {
115
116
  const o = {
116
117
  course_stream: A,
117
118
  grade: _,
@@ -119,7 +120,7 @@ const Pe = () => {
119
120
  board: E,
120
121
  goals: R
121
122
  };
122
- c(), G(o, {
123
+ c(), z(o, {
123
124
  studentId: d
124
125
  });
125
126
  }, [
@@ -127,77 +128,79 @@ const Pe = () => {
127
128
  c,
128
129
  R,
129
130
  _,
130
- G,
131
+ z,
131
132
  A,
132
133
  d,
133
134
  l
134
- ]), B = u(() => {
135
- const e = { preferences: ce(b, [
135
+ ]), H = u(() => {
136
+ const e = { preferences: le(b, [
136
137
  ...v,
137
138
  ...k,
138
139
  ...y,
139
- ...D
140
- ]) }, n = { stream: ee.MATH, studentId: d };
140
+ ...D,
141
+ ...O
142
+ ]) }, n = { stream: te.MATH, studentId: d };
141
143
  c(), x(e, n);
142
144
  }, [
143
- c,
144
145
  b,
145
- y,
146
- k,
147
146
  v,
148
- x,
147
+ k,
148
+ y,
149
149
  D,
150
- d
150
+ O,
151
+ d,
152
+ c,
153
+ x
151
154
  ]), C = u(
152
155
  (o, e) => {
153
156
  if (!s) return;
154
157
  const n = m === t.STUDENT_PROFILE, h = m === t.LEARNING_PLAN, r = {};
155
- if ((e === t.CIRCLE_GAME || e === t.CIRCLE_PUZZLE || e === t.CIRCLE_SKILL) && (r.matchmakingId = w(), r.showCircleGameScreen = !0), o === "prev" && (s({
158
+ if ((e === t.CIRCLE_GAME || e === t.CIRCLE_PUZZLE || e === t.CIRCLE_SKILL) && (r.matchmakingId = K(), r.showCircleGameScreen = !0), o === "prev" && (s({
156
159
  id: e,
157
160
  ...n && { studentProfile: void 0 },
158
161
  ...h && {
159
162
  chapterId: void 0
160
163
  },
161
164
  ...r
162
- }), a("both", f)), o === "next")
165
+ }), a("both", p)), o === "next")
163
166
  switch (m) {
164
167
  case t.STUDENT_INFORMATION:
165
168
  case t.SCHOOL_GOALS:
166
- F();
169
+ M();
167
170
  break;
168
171
  case t.LEARNING_WORKSHEET:
169
- U();
172
+ B();
170
173
  break;
171
174
  case t.CLASS_PREFERENCE:
172
- M();
175
+ U();
173
176
  break;
174
177
  case t.LEARNING_LEVEL:
175
- B();
178
+ H();
176
179
  break;
177
180
  case t.LEARNING_PLAN:
178
181
  s({ id: e, chapterId: void 0, ...r });
179
182
  break;
180
183
  default:
181
- s({ id: e, ...r }), a("both", f);
184
+ s({ id: e, ...r }), a("both", p);
182
185
  }
183
186
  },
184
187
  [
185
188
  s,
186
189
  m,
187
190
  a,
188
- F,
189
- U,
190
191
  M,
191
- B
192
+ B,
193
+ U,
194
+ H
192
195
  ]
193
- ), X = u(() => {
196
+ ), Y = u(() => {
194
197
  !g && m === t.LEARNING_WORKSHEET && C("next", i);
195
198
  }, [m, C, i, g]);
196
- return $(() => {
197
- X();
199
+ return ee(() => {
200
+ Y();
198
201
  }, [g]), { handleNavigation: C };
199
202
  };
200
203
  export {
201
- Pe as useTrialSessionNavigation
204
+ ge as useTrialSessionNavigation
202
205
  };
203
206
  //# sourceMappingURL=use-trial-session-navigation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-trial-session-navigation.js","sources":["../../../../src/features/trial-session/hooks/use-trial-session-navigation.ts"],"sourcesContent":["import type { TTeacherAvailabilityResponse } from '../api/teacher-availability';\nimport type { ITrialSessionFormFields } from '../trial-session-types';\n\nimport { useCallback, useEffect } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { COURSE_STREAMS } from '../../milestone/constants';\nimport { useMilestoneBulkPost } from '../../milestone/create/api/milestone-bulk';\nimport { usePostStudentPreferences } from '../api/course-stream';\nimport { usePatchStudentInformation } from '../api/student-information';\nimport { usePostTeacherAvailability } from '../api/teacher-availability';\nimport { usePatchTrialHome } from '../api/trial-home';\nimport { useTrialSessionContext } from '../context/use-trial-session-context';\nimport {\n getFormattedPreferences,\n getFormattedStudentPersonalizedPreference,\n getWeekdayAndStartTimeFromPreference,\n} from '../helper';\nimport { DEFAULT_BUTTON_STATE, TrialPageId } from '../trial-session-constants';\n\nconst useTrialSessionNavigation = () => {\n const {\n updateSlideConfig,\n slideConfig,\n formData,\n updateButtonState,\n teacherId,\n studentId,\n milestoneConfig,\n handleInfoMessage,\n onTrialInformationUpdate,\n trialHomeData,\n worksheetNavigationPanel,\n } = useTrialSessionContext();\n const { nextPage, id: currentPageId } = slideConfig || {};\n const { demo_info: demoInfo } = trialHomeData;\n const { stream, region_data: regionData } = demoInfo;\n const { opportunity_country: countryCode = 'US' } = regionData || {};\n const { pageId: nextPageId } = nextPage || {};\n const {\n name,\n grade,\n goals,\n curriculum,\n studentTimezone = 'Asia/Calcutta',\n preferences = [],\n personalizedLevel = [],\n personalizedFocus = [],\n personalizedBehaviors = [],\n personalizedObjectives = [],\n } = formData || {};\n\n const disableNavButtons = useCallback(() => {\n updateButtonState('both', {\n left: { isDisabled: true, isLoading: false },\n right: { isDisabled: true, isLoading: true },\n });\n }, [updateButtonState]);\n\n const onAcknowledge = (errorMessage: string | null) => {\n if (!errorMessage) {\n const overrides: Partial<ITrialSessionFormFields> = {};\n\n if (\n nextPageId === TrialPageId.CIRCLE_GAME ||\n nextPageId === TrialPageId.CIRCLE_PUZZLE ||\n nextPageId === TrialPageId.CIRCLE_SKILL\n ) {\n overrides.matchmakingId = uuidv4();\n overrides.showCircleGameScreen = true;\n }\n\n updateSlideConfig({ id: nextPageId, ...overrides });\n }\n updateButtonState('both', DEFAULT_BUTTON_STATE);\n\n if (currentPageId === TrialPageId.LEARNING_LEVEL) {\n onTrialInformationUpdate?.();\n }\n };\n\n // API specifications\n const { patch: patchTrialSession } = usePatchTrialHome({ onComplete: onAcknowledge });\n const { patch: patchStudentInformation } = usePatchStudentInformation({\n onComplete: onAcknowledge,\n });\n const { post: postMilestoneBulk } = useMilestoneBulkPost({\n onComplete: onAcknowledge,\n });\n const { post: postStudentPreferences } = usePostStudentPreferences({\n onComplete: onAcknowledge,\n });\n\n const onTeacherAvailabilityValidate = (_: string | null, data?: TTeacherAvailabilityResponse) => {\n const notAvailable = data?.filter(item => !item.is_available) ?? [];\n\n if (notAvailable.length > 0) {\n const reason = notAvailable.map(item => item.reason).join('\\n');\n\n handleInfoMessage?.({ message: reason, position: 'bottom' });\n updateButtonState('both', DEFAULT_BUTTON_STATE);\n\n return;\n }\n\n const selectedRegularSlots = getFormattedPreferences(preferences, studentTimezone);\n\n if (selectedRegularSlots.length > 0) {\n const actionData = {\n trial_details: {\n selected_regular_slots: selectedRegularSlots,\n },\n };\n\n patchTrialSession('trial-v3-patch', {\n action: 'UPDATE_DEMO',\n action_data: actionData,\n teacher_id: teacherId,\n student_id: studentId,\n });\n } else updateButtonState('both', DEFAULT_BUTTON_STATE);\n };\n\n const { post: postTeacherAvailability } = usePostTeacherAvailability({\n onComplete: onTeacherAvailabilityValidate,\n });\n\n // Function to call API and updates states\n const handleStudentInformation = useCallback(() => {\n const [firstName, lastName] = name?.split(' ') || [];\n const payload = {\n first_name: firstName,\n last_name: lastName,\n grade,\n board: curriculum,\n demo_type: 'TRIAL_V3',\n teacher_id: teacherId,\n country_alpha_2: countryCode,\n };\n const isNumberExistsInName = /\\d/.test(name || '');\n\n if (isNumberExistsInName) {\n updateSlideConfig({ numberInNameError: true });\n } else {\n disableNavButtons();\n patchStudentInformation(studentId, payload);\n }\n }, [\n name,\n grade,\n curriculum,\n teacherId,\n countryCode,\n disableNavButtons,\n updateSlideConfig,\n patchStudentInformation,\n studentId,\n ]);\n\n const handleClassPreferences = useCallback(() => {\n const selectedRegularSlots = getFormattedPreferences(preferences, studentTimezone);\n const sessionList = getWeekdayAndStartTimeFromPreference(selectedRegularSlots);\n\n if (selectedRegularSlots.length > 0) {\n const availabilityPayload = {\n teacher_id: teacherId,\n session_list: sessionList,\n };\n\n disableNavButtons();\n postTeacherAvailability(availabilityPayload);\n } else {\n updateSlideConfig({ id: nextPageId });\n updateButtonState('both', DEFAULT_BUTTON_STATE);\n }\n }, [\n preferences,\n studentTimezone,\n teacherId,\n postTeacherAvailability,\n disableNavButtons,\n updateSlideConfig,\n nextPageId,\n updateButtonState,\n ]);\n\n const handleMileStoneBulkPost = useCallback(() => {\n const payload = {\n course_stream: stream,\n grade,\n teacher_id: teacherId,\n board: curriculum,\n goals,\n };\n\n disableNavButtons();\n postMilestoneBulk(payload, {\n studentId,\n });\n }, [\n curriculum,\n disableNavButtons,\n goals,\n grade,\n postMilestoneBulk,\n stream,\n studentId,\n teacherId,\n ]);\n\n const handleStudentPreferencesPatch = useCallback(() => {\n const personalizedPreferences = getFormattedStudentPersonalizedPreference(milestoneConfig, [\n ...personalizedLevel,\n ...personalizedFocus,\n ...personalizedBehaviors,\n ...personalizedObjectives,\n ]);\n\n const payload = { preferences: personalizedPreferences };\n const meta = { stream: COURSE_STREAMS.MATH, studentId };\n\n disableNavButtons();\n postStudentPreferences(payload, meta);\n }, [\n disableNavButtons,\n milestoneConfig,\n personalizedBehaviors,\n personalizedFocus,\n personalizedLevel,\n postStudentPreferences,\n personalizedObjectives,\n studentId,\n ]);\n\n // Navigation logic\n const handleNavigation = useCallback(\n (dir: string, id?: string) => {\n if (!updateSlideConfig) return;\n\n const isStudentProfilePage = currentPageId === TrialPageId.STUDENT_PROFILE;\n const isLearningPlanSlide = currentPageId === TrialPageId.LEARNING_PLAN;\n const overrides: Partial<ITrialSessionFormFields> = {};\n\n if (\n id === TrialPageId.CIRCLE_GAME ||\n id === TrialPageId.CIRCLE_PUZZLE ||\n id === TrialPageId.CIRCLE_SKILL\n ) {\n overrides.matchmakingId = uuidv4();\n overrides.showCircleGameScreen = true;\n }\n\n if (dir === 'prev') {\n updateSlideConfig({\n id,\n ...(isStudentProfilePage && { studentProfile: undefined }),\n ...(isLearningPlanSlide && {\n chapterId: undefined,\n }),\n ...overrides,\n });\n updateButtonState('both', DEFAULT_BUTTON_STATE);\n }\n\n if (dir === 'next') {\n switch (currentPageId) {\n //TODO: remove STUDENT_INFORMATION\n case TrialPageId.STUDENT_INFORMATION:\n case TrialPageId.SCHOOL_GOALS:\n handleStudentInformation();\n break;\n case TrialPageId.LEARNING_WORKSHEET:\n handleMileStoneBulkPost();\n break;\n case TrialPageId.CLASS_PREFERENCE:\n handleClassPreferences();\n break;\n case TrialPageId.LEARNING_LEVEL:\n handleStudentPreferencesPatch();\n break;\n case TrialPageId.LEARNING_PLAN:\n updateSlideConfig({ id, chapterId: undefined, ...overrides });\n break;\n default: {\n updateSlideConfig({ id, ...overrides });\n updateButtonState('both', DEFAULT_BUTTON_STATE);\n }\n }\n }\n },\n [\n updateSlideConfig,\n currentPageId,\n updateButtonState,\n handleStudentInformation,\n handleMileStoneBulkPost,\n handleClassPreferences,\n handleStudentPreferencesPatch,\n ],\n );\n\n const sessionWorksheetNavigation = useCallback(() => {\n if (!worksheetNavigationPanel && currentPageId === TrialPageId.LEARNING_WORKSHEET) {\n handleNavigation('next', nextPageId);\n }\n }, [currentPageId, handleNavigation, nextPageId, worksheetNavigationPanel]);\n\n useEffect(() => {\n sessionWorksheetNavigation();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [worksheetNavigationPanel]);\n\n return { handleNavigation };\n};\n\nexport { useTrialSessionNavigation };\n"],"names":["useTrialSessionNavigation","updateSlideConfig","slideConfig","formData","updateButtonState","teacherId","studentId","milestoneConfig","handleInfoMessage","onTrialInformationUpdate","trialHomeData","worksheetNavigationPanel","useTrialSessionContext","nextPage","currentPageId","demoInfo","stream","regionData","countryCode","nextPageId","name","grade","goals","curriculum","studentTimezone","preferences","personalizedLevel","personalizedFocus","personalizedBehaviors","personalizedObjectives","disableNavButtons","useCallback","onAcknowledge","errorMessage","overrides","TrialPageId","uuidv4","DEFAULT_BUTTON_STATE","patchTrialSession","usePatchTrialHome","patchStudentInformation","usePatchStudentInformation","postMilestoneBulk","useMilestoneBulkPost","postStudentPreferences","usePostStudentPreferences","onTeacherAvailabilityValidate","_","data","notAvailable","item","reason","selectedRegularSlots","getFormattedPreferences","postTeacherAvailability","usePostTeacherAvailability","handleStudentInformation","firstName","lastName","payload","handleClassPreferences","sessionList","getWeekdayAndStartTimeFromPreference","availabilityPayload","handleMileStoneBulkPost","handleStudentPreferencesPatch","getFormattedStudentPersonalizedPreference","meta","COURSE_STREAMS","handleNavigation","dir","id","isStudentProfilePage","isLearningPlanSlide","sessionWorksheetNavigation","useEffect"],"mappings":"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"}
1
+ {"version":3,"file":"use-trial-session-navigation.js","sources":["../../../../src/features/trial-session/hooks/use-trial-session-navigation.ts"],"sourcesContent":["import type { TTeacherAvailabilityResponse } from '../api/teacher-availability';\nimport type { ITrialSessionFormFields } from '../trial-session-types';\n\nimport { useCallback, useEffect } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { COURSE_STREAMS } from '../../milestone/constants';\nimport { useMilestoneBulkPost } from '../../milestone/create/api/milestone-bulk';\nimport { usePostStudentPreferences } from '../api/course-stream';\nimport { usePatchStudentInformation } from '../api/student-information';\nimport { usePostTeacherAvailability } from '../api/teacher-availability';\nimport { usePatchTrialHome } from '../api/trial-home';\nimport { useTrialSessionContext } from '../context/use-trial-session-context';\nimport {\n getFormattedPreferences,\n getFormattedStudentPersonalizedPreference,\n getWeekdayAndStartTimeFromPreference,\n} from '../helper';\nimport { DEFAULT_BUTTON_STATE, TrialPageId } from '../trial-session-constants';\n\nconst useTrialSessionNavigation = () => {\n const {\n updateSlideConfig,\n slideConfig,\n formData,\n updateButtonState,\n teacherId,\n studentId,\n milestoneConfig,\n handleInfoMessage,\n onTrialInformationUpdate,\n trialHomeData,\n worksheetNavigationPanel,\n } = useTrialSessionContext();\n const { nextPage, id: currentPageId } = slideConfig || {};\n const { demo_info: demoInfo } = trialHomeData;\n const { stream, region_data: regionData } = demoInfo;\n const { opportunity_country: countryCode = 'US' } = regionData || {};\n const { pageId: nextPageId } = nextPage || {};\n const {\n name,\n grade,\n goals,\n curriculum,\n studentTimezone = 'Asia/Calcutta',\n preferences = [],\n personalizedLevel = [],\n personalizedFocus = [],\n personalizedBehaviors = [],\n personalizedObjectives = [],\n personalizedPosition = [],\n } = formData || {};\n\n const disableNavButtons = useCallback(() => {\n updateButtonState('both', {\n left: { isDisabled: true, isLoading: false },\n right: { isDisabled: true, isLoading: true },\n });\n }, [updateButtonState]);\n\n const onAcknowledge = (errorMessage: string | null) => {\n if (!errorMessage) {\n const overrides: Partial<ITrialSessionFormFields> = {};\n\n if (\n nextPageId === TrialPageId.CIRCLE_GAME ||\n nextPageId === TrialPageId.CIRCLE_PUZZLE ||\n nextPageId === TrialPageId.CIRCLE_SKILL\n ) {\n overrides.matchmakingId = uuidv4();\n overrides.showCircleGameScreen = true;\n }\n\n updateSlideConfig({ id: nextPageId, ...overrides });\n }\n updateButtonState('both', DEFAULT_BUTTON_STATE);\n\n if (currentPageId === TrialPageId.LEARNING_LEVEL) {\n onTrialInformationUpdate?.();\n }\n };\n\n // API specifications\n const { patch: patchTrialSession } = usePatchTrialHome({ onComplete: onAcknowledge });\n const { patch: patchStudentInformation } = usePatchStudentInformation({\n onComplete: onAcknowledge,\n });\n const { post: postMilestoneBulk } = useMilestoneBulkPost({\n onComplete: onAcknowledge,\n });\n const { post: postStudentPreferences } = usePostStudentPreferences({\n onComplete: onAcknowledge,\n });\n\n const onTeacherAvailabilityValidate = (_: string | null, data?: TTeacherAvailabilityResponse) => {\n const notAvailable = data?.filter(item => !item.is_available) ?? [];\n\n if (notAvailable.length > 0) {\n const reason = notAvailable.map(item => item.reason).join('\\n');\n\n handleInfoMessage?.({ message: reason, position: 'bottom' });\n updateButtonState('both', DEFAULT_BUTTON_STATE);\n\n return;\n }\n\n const selectedRegularSlots = getFormattedPreferences(preferences, studentTimezone);\n\n if (selectedRegularSlots.length > 0) {\n const actionData = {\n trial_details: {\n selected_regular_slots: selectedRegularSlots,\n },\n };\n\n patchTrialSession('trial-v3-patch', {\n action: 'UPDATE_DEMO',\n action_data: actionData,\n teacher_id: teacherId,\n student_id: studentId,\n });\n } else updateButtonState('both', DEFAULT_BUTTON_STATE);\n };\n\n const { post: postTeacherAvailability } = usePostTeacherAvailability({\n onComplete: onTeacherAvailabilityValidate,\n });\n\n // Function to call API and updates states\n const handleStudentInformation = useCallback(() => {\n const [firstName, lastName] = name?.split(' ') || [];\n const payload = {\n first_name: firstName,\n last_name: lastName,\n grade,\n board: curriculum,\n demo_type: 'TRIAL_V3',\n teacher_id: teacherId,\n country_alpha_2: countryCode,\n };\n const isNumberExistsInName = /\\d/.test(name || '');\n\n if (isNumberExistsInName) {\n updateSlideConfig({ numberInNameError: true });\n } else {\n disableNavButtons();\n patchStudentInformation(studentId, payload);\n }\n }, [\n name,\n grade,\n curriculum,\n teacherId,\n countryCode,\n disableNavButtons,\n updateSlideConfig,\n patchStudentInformation,\n studentId,\n ]);\n\n const handleClassPreferences = useCallback(() => {\n const selectedRegularSlots = getFormattedPreferences(preferences, studentTimezone);\n const sessionList = getWeekdayAndStartTimeFromPreference(selectedRegularSlots);\n\n if (selectedRegularSlots.length > 0) {\n const availabilityPayload = {\n teacher_id: teacherId,\n session_list: sessionList,\n };\n\n disableNavButtons();\n postTeacherAvailability(availabilityPayload);\n } else {\n updateSlideConfig({ id: nextPageId });\n updateButtonState('both', DEFAULT_BUTTON_STATE);\n }\n }, [\n preferences,\n studentTimezone,\n teacherId,\n postTeacherAvailability,\n disableNavButtons,\n updateSlideConfig,\n nextPageId,\n updateButtonState,\n ]);\n\n const handleMileStoneBulkPost = useCallback(() => {\n const payload = {\n course_stream: stream,\n grade,\n teacher_id: teacherId,\n board: curriculum,\n goals,\n };\n\n disableNavButtons();\n postMilestoneBulk(payload, {\n studentId,\n });\n }, [\n curriculum,\n disableNavButtons,\n goals,\n grade,\n postMilestoneBulk,\n stream,\n studentId,\n teacherId,\n ]);\n\n const handleStudentPreferencesPatch = useCallback(() => {\n const personalizedPreferences = getFormattedStudentPersonalizedPreference(milestoneConfig, [\n ...personalizedLevel,\n ...personalizedFocus,\n ...personalizedBehaviors,\n ...personalizedObjectives,\n ...personalizedPosition,\n ]);\n\n const payload = { preferences: personalizedPreferences };\n const meta = { stream: COURSE_STREAMS.MATH, studentId };\n\n disableNavButtons();\n postStudentPreferences(payload, meta);\n }, [\n milestoneConfig,\n personalizedLevel,\n personalizedFocus,\n personalizedBehaviors,\n personalizedObjectives,\n personalizedPosition,\n studentId,\n disableNavButtons,\n postStudentPreferences,\n ]);\n\n // Navigation logic\n const handleNavigation = useCallback(\n (dir: string, id?: string) => {\n if (!updateSlideConfig) return;\n\n const isStudentProfilePage = currentPageId === TrialPageId.STUDENT_PROFILE;\n const isLearningPlanSlide = currentPageId === TrialPageId.LEARNING_PLAN;\n const overrides: Partial<ITrialSessionFormFields> = {};\n\n if (\n id === TrialPageId.CIRCLE_GAME ||\n id === TrialPageId.CIRCLE_PUZZLE ||\n id === TrialPageId.CIRCLE_SKILL\n ) {\n overrides.matchmakingId = uuidv4();\n overrides.showCircleGameScreen = true;\n }\n\n if (dir === 'prev') {\n updateSlideConfig({\n id,\n ...(isStudentProfilePage && { studentProfile: undefined }),\n ...(isLearningPlanSlide && {\n chapterId: undefined,\n }),\n ...overrides,\n });\n updateButtonState('both', DEFAULT_BUTTON_STATE);\n }\n\n if (dir === 'next') {\n switch (currentPageId) {\n //TODO: remove STUDENT_INFORMATION\n case TrialPageId.STUDENT_INFORMATION:\n case TrialPageId.SCHOOL_GOALS:\n handleStudentInformation();\n break;\n case TrialPageId.LEARNING_WORKSHEET:\n handleMileStoneBulkPost();\n break;\n case TrialPageId.CLASS_PREFERENCE:\n handleClassPreferences();\n break;\n case TrialPageId.LEARNING_LEVEL:\n handleStudentPreferencesPatch();\n break;\n case TrialPageId.LEARNING_PLAN:\n updateSlideConfig({ id, chapterId: undefined, ...overrides });\n break;\n default: {\n updateSlideConfig({ id, ...overrides });\n updateButtonState('both', DEFAULT_BUTTON_STATE);\n }\n }\n }\n },\n [\n updateSlideConfig,\n currentPageId,\n updateButtonState,\n handleStudentInformation,\n handleMileStoneBulkPost,\n handleClassPreferences,\n handleStudentPreferencesPatch,\n ],\n );\n\n const sessionWorksheetNavigation = useCallback(() => {\n if (!worksheetNavigationPanel && currentPageId === TrialPageId.LEARNING_WORKSHEET) {\n handleNavigation('next', nextPageId);\n }\n }, [currentPageId, handleNavigation, nextPageId, worksheetNavigationPanel]);\n\n useEffect(() => {\n sessionWorksheetNavigation();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [worksheetNavigationPanel]);\n\n return { handleNavigation };\n};\n\nexport { useTrialSessionNavigation };\n"],"names":["useTrialSessionNavigation","updateSlideConfig","slideConfig","formData","updateButtonState","teacherId","studentId","milestoneConfig","handleInfoMessage","onTrialInformationUpdate","trialHomeData","worksheetNavigationPanel","useTrialSessionContext","nextPage","currentPageId","demoInfo","stream","regionData","countryCode","nextPageId","name","grade","goals","curriculum","studentTimezone","preferences","personalizedLevel","personalizedFocus","personalizedBehaviors","personalizedObjectives","personalizedPosition","disableNavButtons","useCallback","onAcknowledge","errorMessage","overrides","TrialPageId","uuidv4","DEFAULT_BUTTON_STATE","patchTrialSession","usePatchTrialHome","patchStudentInformation","usePatchStudentInformation","postMilestoneBulk","useMilestoneBulkPost","postStudentPreferences","usePostStudentPreferences","onTeacherAvailabilityValidate","_","data","notAvailable","item","reason","selectedRegularSlots","getFormattedPreferences","postTeacherAvailability","usePostTeacherAvailability","handleStudentInformation","firstName","lastName","payload","handleClassPreferences","sessionList","getWeekdayAndStartTimeFromPreference","availabilityPayload","handleMileStoneBulkPost","handleStudentPreferencesPatch","getFormattedStudentPersonalizedPreference","meta","COURSE_STREAMS","handleNavigation","dir","id","isStudentProfilePage","isLearningPlanSlide","sessionWorksheetNavigation","useEffect"],"mappings":"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"}
@@ -1,154 +1,148 @@
1
- import { jsx as S, jsxs as ee } from "react/jsx-runtime";
2
- import { memo as te, useState as ne, useMemo as a, useCallback as re, useEffect as I } from "react";
3
- import { PREFERENCE_CATEGORY as q } from "../milestone/constants.js";
4
- import { getGradesFromConfig as oe } from "../milestone/create/milestone-create-helpers.js";
1
+ import { jsx as E, jsxs as ne } from "react/jsx-runtime";
2
+ import { memo as re, useState as oe, useMemo as P, useCallback as L, useEffect as S } from "react";
3
+ import { PREFERENCE_CATEGORY as H } from "../milestone/constants.js";
4
+ import { getGradesFromConfig as se } from "../milestone/create/milestone-create-helpers.js";
5
5
  import ae from "../ui/layout/flex-view.js";
6
- import { PREFERENCE_CODE_MAP as se } from "./comps/student-feedback/student-feedback-constants.js";
7
- import ie from "./context/trial-session-context.js";
8
- import { getPreferenceCodesByCategory as J } from "./helper.js";
9
- import { useButtonStateForLeftPanel as le } from "./hooks/use-left-panel-button-state.js";
10
- import ce from "./left-panel/index.js";
11
- import de from "./right-panel/index.js";
12
- const De = te((U) => {
6
+ import { PREFERENCE_CODE_MAP as ie } from "./comps/student-feedback/student-feedback-constants.js";
7
+ import le from "./context/trial-session-context.js";
8
+ import { getPreferenceCodesByCategory as U } from "./helper.js";
9
+ import { useButtonStateForLeftPanel as ce } from "./hooks/use-left-panel-button-state.js";
10
+ import de from "./left-panel/index.js";
11
+ import me from "./right-panel/index.js";
12
+ const Te = re((q) => {
13
13
  const {
14
- countryCode: D,
15
- userType: s,
16
- teacherPanel: T,
17
- studentPanel: _,
18
- trialGameUrl: v,
19
- formData: i,
20
- height: Y = "100vh",
21
- trialHomeData: n,
22
- milestoneConfig: l,
23
- onFormDataChange: g,
24
- worksheet: y,
25
- studentId: c,
26
- teacherId: d,
27
- classStartedOn: R,
28
- worksheetNavigationPanel: x,
29
- questionsRatingPanel: O,
30
- studentAbsentInClass: F,
31
- openEndClassModal: G,
32
- onTrialInformationUpdate: N,
14
+ countryCode: I,
15
+ userType: o,
16
+ teacherPanel: D,
17
+ studentPanel: T,
18
+ trialGameUrl: _,
19
+ formData: s,
20
+ height: J = "100vh",
21
+ trialHomeData: e,
22
+ milestoneConfig: a,
23
+ onFormDataChange: u,
24
+ worksheet: R,
25
+ studentId: i,
26
+ teacherId: l,
27
+ classStartedOn: v,
28
+ worksheetNavigationPanel: y,
29
+ questionsRatingPanel: x,
30
+ studentAbsentInClass: O,
31
+ openEndClassModal: F,
32
+ onTrialInformationUpdate: G,
33
33
  onStudentTimezoneUpdate: p,
34
- handleInfoMessage: b,
35
- onRemoveOptionalSlides: j,
36
- classDuration: w,
37
- studentTimezone: C,
38
- classTimeAlertConfig: A
39
- } = U, e = s === "TEACHER", { pages: E = [], student: K, intel_student: Q } = n, { student_preference: W } = Q || {}, { preferences: m = [] } = W || {}, { name: M, grade: f } = K || {}, [r, X] = ne(i), h = e ? r : i, P = h == null ? void 0 : h.id, B = a(
40
- () => E.find((t) => t.id === P) ?? E[0],
41
- [P, E]
42
- ), V = a(
43
- () => J(m, q.OBJECTIVES),
44
- [m]
45
- ), o = a(
46
- () => J(m, q.POSITION, !0),
47
- [m]
48
- ), $ = a(() => {
49
- const t = {
50
- circleConfig: n.circle_trial_game_config,
34
+ handleInfoMessage: N,
35
+ onRemoveOptionalSlides: b,
36
+ classDuration: j,
37
+ studentTimezone: c,
38
+ classTimeAlertConfig: w
39
+ } = q, t = o === "TEACHER", { pages: g = [] } = e, [r, Y] = oe(s), C = t ? r : s, h = C == null ? void 0 : C.id, A = P(
40
+ () => g.find((n) => n.id === h) ?? g[0],
41
+ [h, g]
42
+ ), M = P(() => {
43
+ const n = {
44
+ circleConfig: e.circle_trial_game_config,
51
45
  playerDetails: {
52
- userId: e ? d : c,
53
- circle_username: n[e ? "teacher" : "student"].circle_username,
54
- user_avatar: n[e ? "teacher" : "student"].user_avatar,
55
- playerType: s,
56
- countryCode: D
46
+ userId: t ? l : i,
47
+ circle_username: e[t ? "teacher" : "student"].circle_username,
48
+ user_avatar: e[t ? "teacher" : "student"].user_avatar,
49
+ playerType: o,
50
+ countryCode: I
57
51
  }
58
52
  };
59
- return s === "STUDENT" && (t.playerDetails.grade = n.student.grade), t;
60
- }, [D, e, c, d, n, s]), u = re((t) => {
61
- X((H) => H ? { ...H, ...t } : t);
62
- }, []), { buttonState: k, updateButtonState: z } = le(), Z = a(
53
+ return o === "STUDENT" && (n.playerDetails.grade = e.student.grade), n;
54
+ }, [I, t, i, l, e, o]), d = L((n) => {
55
+ Y((m) => m ? { ...m, ...n } : n);
56
+ }, []), { buttonState: B, updateButtonState: V } = ce(), K = P(
63
57
  () => ({
64
- teacherPanel: T,
65
- studentPanel: _,
66
- isTeacher: e,
67
- slideConfig: B,
68
- milestoneConfig: l,
69
- formData: e ? r : i,
70
- updateSlideConfig: u,
71
- worksheet: y,
72
- buttonState: k,
73
- updateButtonState: z,
74
- studentId: c,
75
- teacherId: d,
76
- classStartedOn: R,
77
- trialHomeData: n,
78
- worksheetNavigationPanel: x,
79
- questionsRatingPanel: O,
80
- onTrialInformationUpdate: N,
81
- openEndClassModal: G,
82
- studentAbsentInClass: F,
83
- circleGames: $,
84
- trialGameUrl: v,
85
- handleInfoMessage: b,
86
- onRemoveOptionalSlides: j,
87
- classDuration: w,
88
- classTimeAlertConfig: A
58
+ teacherPanel: D,
59
+ studentPanel: T,
60
+ isTeacher: t,
61
+ slideConfig: A,
62
+ milestoneConfig: a,
63
+ formData: t ? r : s,
64
+ updateSlideConfig: d,
65
+ worksheet: R,
66
+ buttonState: B,
67
+ updateButtonState: V,
68
+ studentId: i,
69
+ teacherId: l,
70
+ classStartedOn: v,
71
+ trialHomeData: e,
72
+ worksheetNavigationPanel: y,
73
+ questionsRatingPanel: x,
74
+ onTrialInformationUpdate: G,
75
+ openEndClassModal: F,
76
+ studentAbsentInClass: O,
77
+ circleGames: M,
78
+ trialGameUrl: _,
79
+ handleInfoMessage: N,
80
+ onRemoveOptionalSlides: b,
81
+ classDuration: j,
82
+ classTimeAlertConfig: w
89
83
  }),
90
84
  [
85
+ D,
91
86
  T,
92
- _,
93
- e,
94
- B,
95
- l,
87
+ t,
88
+ A,
89
+ a,
96
90
  r,
97
- i,
98
- u,
99
- y,
100
- k,
101
- z,
102
- c,
91
+ s,
103
92
  d,
104
93
  R,
105
- n,
94
+ B,
95
+ V,
96
+ i,
97
+ l,
98
+ v,
99
+ e,
100
+ y,
106
101
  x,
107
- O,
108
- N,
109
102
  G,
110
103
  F,
111
- $,
112
- v,
104
+ O,
105
+ M,
106
+ _,
107
+ N,
113
108
  b,
114
109
  j,
115
- w,
116
- A
110
+ w
117
111
  ]
118
112
  );
119
- I(() => {
120
- r && g && g(r);
121
- }, [g, r]), I(() => {
122
- C || p == null || p();
123
- }, [P]);
124
- const L = a(
125
- () => !!oe(l).find((t) => t.id === f),
126
- [l, f]
113
+ S(() => {
114
+ r && u && u(r);
115
+ }, [u, r]), S(() => {
116
+ c || p == null || p();
117
+ }, [h]);
118
+ const $ = L(
119
+ (n) => {
120
+ const { student: m, intel_student: Q } = n, { student_preference: W } = Q || {}, { preferences: k = [] } = W || {}, { name: X, grade: z } = m || {}, Z = !!se(a).find(
121
+ (te) => te.id === z
122
+ ), ee = U(k, H.OBJECTIVES), f = U(
123
+ k,
124
+ H.POSITION,
125
+ !0
126
+ );
127
+ d({
128
+ studentTimezone: c,
129
+ name: X,
130
+ grade: Z ? z : "",
131
+ personalizedObjectives: ee,
132
+ personalizedPosition: f,
133
+ personalizedLevel: f.length > 0 && f[0] ? [ie[f[0]]] : []
134
+ });
135
+ },
136
+ [a, c, d]
127
137
  );
128
- return I(() => {
129
- e && u({
130
- studentTimezone: C,
131
- name: M,
132
- grade: L ? f : "",
133
- personalizedObjectives: V,
134
- personalizedPosition: o,
135
- personalizedLevel: o != null && o[0] ? [se[o[0]]] : []
136
- });
137
- }, [
138
- M,
139
- f,
140
- u,
141
- C,
142
- L,
143
- V,
144
- o,
145
- e
146
- ]), /* @__PURE__ */ S(ie.Provider, { value: Z, children: /* @__PURE__ */ ee(ae, { $height: Y, $flexDirection: "row", $justifyContent: "center", $alignItems: "center", children: [
147
- /* @__PURE__ */ S(ce, {}),
148
- /* @__PURE__ */ S(de, {})
138
+ return S(() => {
139
+ t && e && $(e);
140
+ }, [c, $, e, t]), /* @__PURE__ */ E(le.Provider, { value: K, children: /* @__PURE__ */ ne(ae, { $height: J, $flexDirection: "row", $justifyContent: "center", $alignItems: "center", children: [
141
+ /* @__PURE__ */ E(de, {}),
142
+ /* @__PURE__ */ E(me, {})
149
143
  ] }) });
150
144
  });
151
145
  export {
152
- De as default
146
+ Te as default
153
147
  };
154
148
  //# sourceMappingURL=trial-session-view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"trial-session-view.js","sources":["../../../src/features/trial-session/trial-session-view.tsx"],"sourcesContent":["import type { ITrialCircleGameParams } from './comps/trial-circle-game/trial-circle-game-types';\nimport type {\n ITrialSessionContext,\n ITrialSessionViewProps,\n ITrialSessionFormFields,\n} from './trial-session-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { PREFERENCE_CATEGORY } from '../milestone/constants';\nimport { getGradesFromConfig } from '../milestone/create/milestone-create-helpers';\nimport FlexView from '../ui/layout/flex-view';\nimport { PREFERENCE_CODE_MAP } from './comps/student-feedback/student-feedback-constants';\nimport TrialSessionContext from './context/trial-session-context';\nimport { getPreferenceCodesByCategory } from './helper';\nimport { useButtonStateForLeftPanel } from './hooks/use-left-panel-button-state';\nimport LeftPanel from './left-panel';\nimport RightPanel from './right-panel';\n\nconst TrialSessionView: FC<ITrialSessionViewProps> = memo(props => {\n const {\n countryCode,\n userType,\n teacherPanel,\n studentPanel,\n trialGameUrl,\n formData: formDataProps,\n height = '100vh',\n trialHomeData,\n milestoneConfig,\n onFormDataChange,\n worksheet,\n studentId,\n teacherId,\n classStartedOn,\n worksheetNavigationPanel,\n questionsRatingPanel,\n studentAbsentInClass,\n openEndClassModal,\n onTrialInformationUpdate,\n onStudentTimezoneUpdate,\n handleInfoMessage,\n onRemoveOptionalSlides,\n classDuration,\n studentTimezone,\n classTimeAlertConfig,\n } = props;\n const isTeacher = userType === 'TEACHER';\n const { pages: slides = [], student, intel_student: intelStudent } = trialHomeData;\n const { student_preference: studentPreference } = intelStudent || {};\n const { preferences = [] } = studentPreference || {};\n const { name: studentName, grade: studentGrade } = student || {};\n\n const [formData, setFormData] = useState<ITrialSessionFormFields | undefined>(formDataProps);\n const formDataToUse = isTeacher ? formData : formDataProps;\n const currentSlideId = formDataToUse?.id;\n\n const currentSlideConfig = useMemo(\n () => slides.find(config => config.id === currentSlideId) ?? slides[0]!,\n [currentSlideId, slides],\n );\n\n const objectives = useMemo(\n () => getPreferenceCodesByCategory(preferences, PREFERENCE_CATEGORY.OBJECTIVES),\n [preferences],\n );\n\n const positions = useMemo(\n () => getPreferenceCodesByCategory(preferences, PREFERENCE_CATEGORY.POSITION, true),\n [preferences],\n );\n\n const circleGames = useMemo(() => {\n const data = {\n circleConfig: trialHomeData.circle_trial_game_config,\n playerDetails: {\n userId: isTeacher ? teacherId : studentId,\n circle_username: trialHomeData[isTeacher ? 'teacher' : 'student'].circle_username,\n user_avatar: trialHomeData[isTeacher ? 'teacher' : 'student'].user_avatar,\n playerType: userType,\n countryCode: countryCode,\n },\n } as ITrialCircleGameParams;\n\n if (userType === 'STUDENT') {\n data.playerDetails.grade = trialHomeData.student.grade;\n }\n\n return data;\n }, [countryCode, isTeacher, studentId, teacherId, trialHomeData, userType]);\n\n const updateSlideConfig = useCallback((config: Partial<ITrialSessionFormFields>) => {\n setFormData(previousProps => {\n if (!previousProps) return config as ITrialSessionFormFields;\n\n return { ...previousProps, ...config };\n });\n }, []);\n const { buttonState, updateButtonState } = useButtonStateForLeftPanel();\n\n const contextValue = useMemo<ITrialSessionContext>(\n () => ({\n teacherPanel,\n studentPanel,\n isTeacher,\n slideConfig: currentSlideConfig,\n milestoneConfig,\n formData: isTeacher ? formData : formDataProps,\n updateSlideConfig,\n worksheet,\n buttonState,\n updateButtonState,\n studentId,\n teacherId,\n classStartedOn,\n trialHomeData,\n worksheetNavigationPanel,\n questionsRatingPanel,\n onTrialInformationUpdate,\n openEndClassModal,\n studentAbsentInClass,\n circleGames,\n trialGameUrl,\n handleInfoMessage,\n onRemoveOptionalSlides,\n classDuration,\n classTimeAlertConfig,\n }),\n [\n teacherPanel,\n studentPanel,\n isTeacher,\n currentSlideConfig,\n milestoneConfig,\n formData,\n formDataProps,\n updateSlideConfig,\n worksheet,\n buttonState,\n updateButtonState,\n studentId,\n teacherId,\n classStartedOn,\n trialHomeData,\n worksheetNavigationPanel,\n questionsRatingPanel,\n onTrialInformationUpdate,\n openEndClassModal,\n studentAbsentInClass,\n circleGames,\n trialGameUrl,\n handleInfoMessage,\n onRemoveOptionalSlides,\n classDuration,\n classTimeAlertConfig,\n ],\n );\n\n useEffect(() => {\n if (formData && onFormDataChange) {\n onFormDataChange(formData);\n }\n }, [onFormDataChange, formData]);\n\n useEffect(() => {\n if (!studentTimezone) onStudentTimezoneUpdate?.();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentSlideId]);\n\n const IsGradeExistInMilestoneConfig = useMemo(\n () => !!getGradesFromConfig(milestoneConfig).find(element => element.id === studentGrade),\n [milestoneConfig, studentGrade],\n );\n\n useEffect(() => {\n if (isTeacher) {\n updateSlideConfig({\n studentTimezone,\n name: studentName,\n grade: IsGradeExistInMilestoneConfig ? studentGrade : '',\n personalizedObjectives: objectives,\n personalizedPosition: positions,\n personalizedLevel: positions?.[0]\n ? [PREFERENCE_CODE_MAP[positions[0] as keyof typeof PREFERENCE_CODE_MAP]]\n : [],\n });\n }\n }, [\n studentName,\n studentGrade,\n updateSlideConfig,\n studentTimezone,\n IsGradeExistInMilestoneConfig,\n objectives,\n positions,\n isTeacher,\n ]);\n\n return (\n <TrialSessionContext.Provider value={contextValue}>\n <FlexView $height={height} $flexDirection=\"row\" $justifyContent=\"center\" $alignItems=\"center\">\n <LeftPanel />\n <RightPanel />\n </FlexView>\n </TrialSessionContext.Provider>\n );\n});\n\nexport default TrialSessionView;\n"],"names":["TrialSessionView","memo","props","countryCode","userType","teacherPanel","studentPanel","trialGameUrl","formDataProps","height","trialHomeData","milestoneConfig","onFormDataChange","worksheet","studentId","teacherId","classStartedOn","worksheetNavigationPanel","questionsRatingPanel","studentAbsentInClass","openEndClassModal","onTrialInformationUpdate","onStudentTimezoneUpdate","handleInfoMessage","onRemoveOptionalSlides","classDuration","studentTimezone","classTimeAlertConfig","isTeacher","slides","student","intelStudent","studentPreference","preferences","studentName","studentGrade","formData","setFormData","useState","formDataToUse","currentSlideId","currentSlideConfig","useMemo","config","objectives","getPreferenceCodesByCategory","PREFERENCE_CATEGORY","positions","circleGames","data","updateSlideConfig","useCallback","previousProps","buttonState","updateButtonState","useButtonStateForLeftPanel","contextValue","useEffect","IsGradeExistInMilestoneConfig","getGradesFromConfig","element","PREFERENCE_CODE_MAP","jsx","TrialSessionContext","jsxs","FlexView","LeftPanel","RightPanel"],"mappings":"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"}
1
+ {"version":3,"file":"trial-session-view.js","sources":["../../../src/features/trial-session/trial-session-view.tsx"],"sourcesContent":["import type { ITrialCircleGameParams } from './comps/trial-circle-game/trial-circle-game-types';\nimport type {\n ITrialSessionContext,\n ITrialSessionViewProps,\n ITrialSessionFormFields,\n ITrialHomeData,\n} from './trial-session-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { PREFERENCE_CATEGORY } from '../milestone/constants';\nimport { getGradesFromConfig } from '../milestone/create/milestone-create-helpers';\nimport FlexView from '../ui/layout/flex-view';\nimport { PREFERENCE_CODE_MAP } from './comps/student-feedback/student-feedback-constants';\nimport TrialSessionContext from './context/trial-session-context';\nimport { getPreferenceCodesByCategory } from './helper';\nimport { useButtonStateForLeftPanel } from './hooks/use-left-panel-button-state';\nimport LeftPanel from './left-panel';\nimport RightPanel from './right-panel';\n\nconst TrialSessionView: FC<ITrialSessionViewProps> = memo(props => {\n const {\n countryCode,\n userType,\n teacherPanel,\n studentPanel,\n trialGameUrl,\n formData: formDataProps,\n height = '100vh',\n trialHomeData,\n milestoneConfig,\n onFormDataChange,\n worksheet,\n studentId,\n teacherId,\n classStartedOn,\n worksheetNavigationPanel,\n questionsRatingPanel,\n studentAbsentInClass,\n openEndClassModal,\n onTrialInformationUpdate,\n onStudentTimezoneUpdate,\n handleInfoMessage,\n onRemoveOptionalSlides,\n classDuration,\n studentTimezone,\n classTimeAlertConfig,\n } = props;\n const isTeacher = userType === 'TEACHER';\n const { pages: slides = [] } = trialHomeData;\n\n const [formData, setFormData] = useState<ITrialSessionFormFields | undefined>(formDataProps);\n const formDataToUse = isTeacher ? formData : formDataProps;\n const currentSlideId = formDataToUse?.id;\n\n const currentSlideConfig = useMemo(\n () => slides.find(config => config.id === currentSlideId) ?? slides[0]!,\n [currentSlideId, slides],\n );\n\n const circleGames = useMemo(() => {\n const data = {\n circleConfig: trialHomeData.circle_trial_game_config,\n playerDetails: {\n userId: isTeacher ? teacherId : studentId,\n circle_username: trialHomeData[isTeacher ? 'teacher' : 'student'].circle_username,\n user_avatar: trialHomeData[isTeacher ? 'teacher' : 'student'].user_avatar,\n playerType: userType,\n countryCode: countryCode,\n },\n } as ITrialCircleGameParams;\n\n if (userType === 'STUDENT') {\n data.playerDetails.grade = trialHomeData.student.grade;\n }\n\n return data;\n }, [countryCode, isTeacher, studentId, teacherId, trialHomeData, userType]);\n\n const updateSlideConfig = useCallback((config: Partial<ITrialSessionFormFields>) => {\n setFormData(previousProps => {\n if (!previousProps) return config as ITrialSessionFormFields;\n\n return { ...previousProps, ...config };\n });\n }, []);\n const { buttonState, updateButtonState } = useButtonStateForLeftPanel();\n\n const contextValue = useMemo<ITrialSessionContext>(\n () => ({\n teacherPanel,\n studentPanel,\n isTeacher,\n slideConfig: currentSlideConfig,\n milestoneConfig,\n formData: isTeacher ? formData : formDataProps,\n updateSlideConfig,\n worksheet,\n buttonState,\n updateButtonState,\n studentId,\n teacherId,\n classStartedOn,\n trialHomeData,\n worksheetNavigationPanel,\n questionsRatingPanel,\n onTrialInformationUpdate,\n openEndClassModal,\n studentAbsentInClass,\n circleGames,\n trialGameUrl,\n handleInfoMessage,\n onRemoveOptionalSlides,\n classDuration,\n classTimeAlertConfig,\n }),\n [\n teacherPanel,\n studentPanel,\n isTeacher,\n currentSlideConfig,\n milestoneConfig,\n formData,\n formDataProps,\n updateSlideConfig,\n worksheet,\n buttonState,\n updateButtonState,\n studentId,\n teacherId,\n classStartedOn,\n trialHomeData,\n worksheetNavigationPanel,\n questionsRatingPanel,\n onTrialInformationUpdate,\n openEndClassModal,\n studentAbsentInClass,\n circleGames,\n trialGameUrl,\n handleInfoMessage,\n onRemoveOptionalSlides,\n classDuration,\n classTimeAlertConfig,\n ],\n );\n\n useEffect(() => {\n if (formData && onFormDataChange) {\n onFormDataChange(formData);\n }\n }, [onFormDataChange, formData]);\n\n useEffect(() => {\n if (!studentTimezone) onStudentTimezoneUpdate?.();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentSlideId]);\n\n const onRenderUpdateSlideConfig = useCallback(\n (homeData: ITrialHomeData) => {\n const { student, intel_student: intelStudent } = homeData;\n const { student_preference: studentPreference } = intelStudent || {};\n const { preferences = [] } = studentPreference || {};\n const { name: studentName, grade: studentGrade } = student || {};\n\n const IsGradeExistInMilestoneConfig = !!getGradesFromConfig(milestoneConfig).find(\n element => element.id === studentGrade,\n );\n\n const objectives = getPreferenceCodesByCategory(preferences, PREFERENCE_CATEGORY.OBJECTIVES);\n const position = getPreferenceCodesByCategory(\n preferences,\n PREFERENCE_CATEGORY.POSITION,\n true,\n );\n\n updateSlideConfig({\n studentTimezone,\n name: studentName,\n grade: IsGradeExistInMilestoneConfig ? studentGrade : '',\n personalizedObjectives: objectives,\n personalizedPosition: position,\n personalizedLevel:\n position.length > 0 && position[0]\n ? [PREFERENCE_CODE_MAP[position[0] as keyof typeof PREFERENCE_CODE_MAP]]\n : [],\n });\n },\n [milestoneConfig, studentTimezone, updateSlideConfig],\n );\n\n useEffect(() => {\n if (isTeacher && trialHomeData) {\n onRenderUpdateSlideConfig(trialHomeData);\n }\n }, [studentTimezone, onRenderUpdateSlideConfig, trialHomeData, isTeacher]);\n\n return (\n <TrialSessionContext.Provider value={contextValue}>\n <FlexView $height={height} $flexDirection=\"row\" $justifyContent=\"center\" $alignItems=\"center\">\n <LeftPanel />\n <RightPanel />\n </FlexView>\n </TrialSessionContext.Provider>\n );\n});\n\nexport default TrialSessionView;\n"],"names":["TrialSessionView","memo","props","countryCode","userType","teacherPanel","studentPanel","trialGameUrl","formDataProps","height","trialHomeData","milestoneConfig","onFormDataChange","worksheet","studentId","teacherId","classStartedOn","worksheetNavigationPanel","questionsRatingPanel","studentAbsentInClass","openEndClassModal","onTrialInformationUpdate","onStudentTimezoneUpdate","handleInfoMessage","onRemoveOptionalSlides","classDuration","studentTimezone","classTimeAlertConfig","isTeacher","slides","formData","setFormData","useState","formDataToUse","currentSlideId","currentSlideConfig","useMemo","config","circleGames","data","updateSlideConfig","useCallback","previousProps","buttonState","updateButtonState","useButtonStateForLeftPanel","contextValue","useEffect","onRenderUpdateSlideConfig","homeData","student","intelStudent","studentPreference","preferences","studentName","studentGrade","IsGradeExistInMilestoneConfig","getGradesFromConfig","element","objectives","getPreferenceCodesByCategory","PREFERENCE_CATEGORY","position","PREFERENCE_CODE_MAP","jsx","TrialSessionContext","jsxs","FlexView","LeftPanel","RightPanel"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuemath/leap",
3
- "version": "3.3.11-link.1",
3
+ "version": "3.3.11-link.3",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"