@cuemath/leap 3.5.47-gg6 → 3.5.48-link.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/dist/assets/line-icons/icons/bulb.js +10 -10
  2. package/dist/assets/line-icons/icons/bulb.js.map +1 -1
  3. package/dist/assets/line-icons/icons/hand.js.map +1 -1
  4. package/dist/assets/line-icons/icons/scribble.js +36 -13
  5. package/dist/assets/line-icons/icons/scribble.js.map +1 -1
  6. package/dist/assets/line-icons/icons/sticker.js +9 -9
  7. package/dist/assets/line-icons/icons/sticker.js.map +1 -1
  8. package/dist/features/analytics-events/whitelist-events.js +14 -16
  9. package/dist/features/analytics-events/whitelist-events.js.map +1 -1
  10. package/dist/features/circle-games/games/web-view/web-view-analytics-events.js.map +1 -1
  11. package/dist/features/cue-canvas/sidebar/puzzles/api/get-puzzles.js.map +1 -1
  12. package/dist/features/journey/hooks/use-home-page-journey/home-page-homeworks-mock.js +6 -6
  13. package/dist/features/journey/hooks/use-home-page-journey/home-page-homeworks-mock.js.map +1 -1
  14. package/dist/features/journey/hooks/use-home-page-journey/recent-chapters-mock.js +2 -2
  15. package/dist/features/journey/hooks/use-home-page-journey/recent-chapters-mock.js.map +1 -1
  16. package/dist/features/journey/mocks/chapter-page-journey-mock-data.js +29 -64
  17. package/dist/features/journey/mocks/chapter-page-journey-mock-data.js.map +1 -1
  18. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js +9 -9
  19. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js.map +1 -1
  20. package/dist/features/trial-session/comps/school-goals/school-goals-styled.js +8 -5
  21. package/dist/features/trial-session/comps/school-goals/school-goals-styled.js.map +1 -1
  22. package/dist/features/trial-session/comps/school-goals/school-goals-view.js +35 -32
  23. package/dist/features/trial-session/comps/school-goals/school-goals-view.js.map +1 -1
  24. package/dist/features/trial-session/comps/school-goals/school-goals.js +47 -45
  25. package/dist/features/trial-session/comps/school-goals/school-goals.js.map +1 -1
  26. package/dist/features/trial-session/comps/student-enrichment/student-enrichment.js +44 -51
  27. package/dist/features/trial-session/comps/student-enrichment/student-enrichment.js.map +1 -1
  28. package/dist/features/trial-session/comps/test-prep/test-prep.js +39 -46
  29. package/dist/features/trial-session/comps/test-prep/test-prep.js.map +1 -1
  30. package/dist/features/trial-session/comps/trial-circle-game/trial-circle-game.js +120 -144
  31. package/dist/features/trial-session/comps/trial-circle-game/trial-circle-game.js.map +1 -1
  32. package/dist/features/trial-session/helper.js +49 -54
  33. package/dist/features/trial-session/helper.js.map +1 -1
  34. package/dist/features/trial-session/hooks/use-slide-config-update.js +65 -62
  35. package/dist/features/trial-session/hooks/use-slide-config-update.js.map +1 -1
  36. package/dist/features/trial-session/trial-session-view.js +45 -48
  37. package/dist/features/trial-session/trial-session-view.js.map +1 -1
  38. package/dist/features/ui/tabs/tabs.js +15 -15
  39. package/dist/features/ui/tabs/tabs.js.map +1 -1
  40. package/dist/features/worksheet/learnosity-preloader/learnosity-preloader.js +1 -0
  41. package/dist/features/worksheet/learnosity-preloader/learnosity-preloader.js.map +1 -1
  42. package/dist/features/worksheet/worksheet/constants.js +13 -12
  43. package/dist/features/worksheet/worksheet/constants.js.map +1 -1
  44. package/dist/features/worksheet/worksheet/question-tips.js +100 -0
  45. package/dist/features/worksheet/worksheet/question-tips.js.map +1 -0
  46. package/dist/features/worksheet/worksheet/worksheet-action-bar/worksheet-action-bar.js +109 -40
  47. package/dist/features/worksheet/worksheet/worksheet-action-bar/worksheet-action-bar.js.map +1 -1
  48. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js +7 -7
  49. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js.map +1 -1
  50. package/dist/features/worksheet/worksheet/worksheet-calculator/worksheet-calculator.js +4 -4
  51. package/dist/features/worksheet/worksheet/worksheet-calculator/worksheet-calculator.js.map +1 -1
  52. package/dist/features/worksheet/worksheet/worksheet-helpers.js.map +1 -1
  53. package/dist/features/worksheet/worksheet/worksheet-question/subjective-styled.js +22 -17
  54. package/dist/features/worksheet/worksheet/worksheet-question/subjective-styled.js.map +1 -1
  55. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question-styled.js +24 -23
  56. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question-styled.js.map +1 -1
  57. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js +220 -192
  58. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js.map +1 -1
  59. package/dist/features/worksheet/worksheet/worksheet-questions-controller/scribble-switch.js +53 -0
  60. package/dist/features/worksheet/worksheet/worksheet-questions-controller/scribble-switch.js.map +1 -0
  61. package/dist/features/worksheet/worksheet/worksheet-questions-controller/use-handler-callbacks.js +103 -73
  62. package/dist/features/worksheet/worksheet/worksheet-questions-controller/use-handler-callbacks.js.map +1 -1
  63. package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.js +251 -213
  64. package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.js.map +1 -1
  65. package/dist/features/worksheet/worksheet/worksheet-sidebar/navigator.js +20 -33
  66. package/dist/features/worksheet/worksheet/worksheet-sidebar/navigator.js.map +1 -1
  67. package/dist/features/worksheet/worksheet/worksheet-sidebar/question-guide.js +112 -0
  68. package/dist/features/worksheet/worksheet/worksheet-sidebar/question-guide.js.map +1 -0
  69. package/dist/features/worksheet/worksheet/worksheet-sidebar/sidebar.js +61 -0
  70. package/dist/features/worksheet/worksheet/worksheet-sidebar/sidebar.js.map +1 -0
  71. package/dist/features/worksheet/worksheet/worksheet-sidebar/worksheet-sidebar-styled.js +91 -0
  72. package/dist/features/worksheet/worksheet/worksheet-sidebar/worksheet-sidebar-styled.js.map +1 -0
  73. package/dist/features/worksheet/worksheet/worksheet-store.js +132 -138
  74. package/dist/features/worksheet/worksheet/worksheet-store.js.map +1 -1
  75. package/dist/features/worksheet/worksheet/worksheet-styled.js +83 -29
  76. package/dist/features/worksheet/worksheet/worksheet-styled.js.map +1 -1
  77. package/dist/features/worksheet/worksheet/worksheet-summary-controller/worksheet-summary-controller.js +24 -45
  78. package/dist/features/worksheet/worksheet/worksheet-summary-controller/worksheet-summary-controller.js.map +1 -1
  79. package/dist/features/worksheet/worksheet/worksheet-types.js +2 -3
  80. package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
  81. package/dist/features/worksheet/worksheet/worksheet-view.js +99 -88
  82. package/dist/features/worksheet/worksheet/worksheet-view.js.map +1 -1
  83. package/dist/features/worksheet/worksheet/worksheet.js +95 -96
  84. package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
  85. package/dist/features/worksheet/worksheet-preview/dynamic-worksheet-preview/dynamic-worksheet-preview.js +29 -29
  86. package/dist/features/worksheet/worksheet-preview/dynamic-worksheet-preview/dynamic-worksheet-preview.js.map +1 -1
  87. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js +1 -1
  88. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
  89. package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js +24 -24
  90. package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js.map +1 -1
  91. package/dist/index.d.ts +14 -32
  92. package/dist/index.js +745 -760
  93. package/dist/index.js.map +1 -1
  94. package/dist/types/models/worksheet.js +1 -2
  95. package/dist/types/models/worksheet.js.map +1 -1
  96. package/package.json +1 -1
  97. package/dist/assets/line-icons/icons/chevron-up.js +0 -28
  98. package/dist/assets/line-icons/icons/chevron-up.js.map +0 -1
  99. package/dist/assets/line-icons/icons/close.js +0 -28
  100. package/dist/assets/line-icons/icons/close.js.map +0 -1
  101. package/dist/assets/line-icons/icons/cursor2.js +0 -24
  102. package/dist/assets/line-icons/icons/cursor2.js.map +0 -1
  103. package/dist/assets/line-icons/icons/hints.js +0 -25
  104. package/dist/assets/line-icons/icons/hints.js.map +0 -1
  105. package/dist/assets/line-icons/icons/question-feedback.js +0 -30
  106. package/dist/assets/line-icons/icons/question-feedback.js.map +0 -1
  107. package/dist/assets/line-icons/icons/teaching-tools.js +0 -40
  108. package/dist/assets/line-icons/icons/teaching-tools.js.map +0 -1
  109. package/dist/assets/line-icons/icons/tval-question.js +0 -32
  110. package/dist/assets/line-icons/icons/tval-question.js.map +0 -1
  111. package/dist/features/trial-session/comps/trial-circle-game/trial-circle-game-analytics-events.js +0 -11
  112. package/dist/features/trial-session/comps/trial-circle-game/trial-circle-game-analytics-events.js.map +0 -1
  113. package/dist/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar-styled.js +0 -49
  114. package/dist/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar-styled.js.map +0 -1
  115. package/dist/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar.js +0 -184
  116. package/dist/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar.js.map +0 -1
  117. package/dist/features/worksheet/worksheet/worksheet-questions-tools/scribble-switch.js +0 -65
  118. package/dist/features/worksheet/worksheet/worksheet-questions-tools/scribble-switch.js.map +0 -1
  119. package/dist/features/worksheet/worksheet/worksheet-questions-tools/worksheet-questions-styled.js +0 -9
  120. package/dist/features/worksheet/worksheet/worksheet-questions-tools/worksheet-questions-styled.js.map +0 -1
  121. package/dist/features/worksheet/worksheet/worksheet-questions-tools/worksheet-questions-tools.js +0 -38
  122. package/dist/features/worksheet/worksheet/worksheet-questions-tools/worksheet-questions-tools.js.map +0 -1
  123. package/dist/features/worksheet/worksheet/worksheet-teaching-tools/worksheet-teaching-tools-styled.js +0 -19
  124. package/dist/features/worksheet/worksheet/worksheet-teaching-tools/worksheet-teaching-tools-styled.js.map +0 -1
  125. package/dist/features/worksheet/worksheet/worksheet-teaching-tools/worksheet-teaching-tools.js +0 -66
  126. package/dist/features/worksheet/worksheet/worksheet-teaching-tools/worksheet-teaching-tools.js.map +0 -1
@@ -1,67 +1,62 @@
1
1
  import { DAYS as R } from "../../constants/date-time.js";
2
- import { getOffsetBetweenTimezone as x, convertEpochToDateTime as C, getTimeUnits as H, convertToMilliseconds as M } from "../../helpers/date-time.js";
2
+ import { getOffsetBetweenTimezone as D, convertEpochToDateTime as x, getTimeUnits as H, convertToMilliseconds as M } from "../../helpers/date-time.js";
3
3
  import { GOAL_CATEGORY as L } from "../milestone/constants.js";
4
4
  import { getGoalsFromConfig as G } from "../milestone/create/milestone-create-helpers.js";
5
5
  import { HIGH_ENROLLMENT_PROGRAMS_MAP as v, TrialPageId as s, TEACHER_TIMEZONE as w } from "./trial-session-constants.js";
6
- const V = (n) => n === "PLA", j = (n, t, o) => {
7
- const e = n ? [...n] : [], r = e == null ? void 0 : e.findIndex((c) => c.goal_category === t);
8
- if (r === -1) {
9
- const c = {
10
- ...o,
11
- goal_category: t
12
- };
13
- e.push(c);
14
- } else
15
- e[r] = {
16
- ...e[r],
17
- ...o
18
- };
19
- return e;
6
+ const V = (n) => n === "PLA", j = (n, t, r) => {
7
+ const e = n ? [...n] : [], o = e.findIndex((i) => i.goal_category === t), c = {
8
+ ...r,
9
+ goal_category: t
10
+ };
11
+ return o === -1 ? e.push(c) : e[o] = {
12
+ ...e[o],
13
+ ...c
14
+ }, e.filter((i) => i.goal_code);
20
15
  }, B = (n, t) => {
21
16
  if (!t) return [];
22
- const o = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0), e = x(w, t), r = o + e, { day: c = "" } = C(r, t), u = R.indexOf(c);
23
- return n.length > 0 ? n.filter((d) => d.selectedDay && d.selectedTime).map((d) => {
24
- const { selectedDay: P, selectedTime: p } = d, { hours: y, minutes: m, period: l } = H(p), E = (R.indexOf(P) - u + 7) % 7;
17
+ const r = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0), e = D(w, t), o = r + e, { day: c = "" } = x(o, t), i = R.indexOf(c);
18
+ return n.length > 0 ? n.filter((g) => g.selectedDay && g.selectedTime).map((g) => {
19
+ const { selectedDay: p, selectedTime: P } = g, { hours: y, minutes: m, period: u } = H(P), E = (R.indexOf(p) - i + 7) % 7;
25
20
  return {
26
- id: o + e + M({ days: E, hours: y, minutes: m }),
27
- value: `${P}, ${p} - ${y + 1}:${m < 10 ? "0" : ""}${m} ${l}`
21
+ id: r + e + M({ days: E, hours: y, minutes: m }),
22
+ value: `${p}, ${P} - ${y + 1}:${m < 10 ? "0" : ""}${m} ${u}`
28
23
  // Formatted the value string as required
29
24
  };
30
25
  }) : [];
31
- }, Y = (n) => n.filter((t) => typeof t.id == "number" && !isNaN(t.id)).map((t) => {
32
- const o = new Date(t.id), e = R[o.getDay()], r = e ? e.toLowerCase() : "unknown", c = o.getHours(), u = o.getMinutes(), d = `${c.toString().padStart(2, "0")}:${u.toString().padStart(2, "0")}:00`;
33
- return { weekday: r, start_time: d };
34
- }), W = ({
26
+ }, W = (n) => n.filter((t) => typeof t.id == "number" && !isNaN(t.id)).map((t) => {
27
+ const r = new Date(t.id), e = R[r.getDay()], o = e ? e.toLowerCase() : "unknown", c = r.getHours(), i = r.getMinutes(), g = `${c.toString().padStart(2, "0")}:${i.toString().padStart(2, "0")}:00`;
28
+ return { weekday: o, start_time: g };
29
+ }), Y = ({
35
30
  milestoneConfigData: n,
36
31
  trialHomeData: t,
37
- grade: o,
32
+ grade: r,
38
33
  goal: e
39
34
  }) => {
40
35
  var O, h;
41
- const { student: r, demo_info: c } = t, { grade: u, enrollment_type: d } = r || {}, { stream: P, region_data: p } = c || {}, { opportunity_country: y = "US" } = p || {}, m = (i) => G(n, {
36
+ const { student: o, demo_info: c } = t, { grade: i, enrollment_type: g } = o || {}, { stream: p, region_data: P } = c || {}, { opportunity_country: y = "US" } = P || {}, m = (d) => G(n, {
42
37
  countryCode: y,
43
- grade: o || u || "",
44
- goalCategory: i,
45
- courseStream: P,
46
- enrollmentType: d
47
- }), l = m(L.TEST_PREP), g = m(L.ENRICHMENT), E = m(L.SCHOOL_SUCCESS).some(
48
- (i) => i.id === e && Object.keys(v).includes(i.programCode ?? "")
38
+ grade: r || i || "",
39
+ goalCategory: d,
40
+ courseStream: p,
41
+ enrollmentType: g
42
+ }), u = m(L.TEST_PREP), l = m(L.ENRICHMENT), E = m(L.SCHOOL_SUCCESS).some(
43
+ (d) => d.id === e && Object.keys(v).includes(d.programCode ?? "")
49
44
  );
50
- if ((l == null ? void 0 : l.length) > 0 && (g == null ? void 0 : g.length) > 0 && !E)
45
+ if ((u == null ? void 0 : u.length) > 0 && (l == null ? void 0 : l.length) > 0 && !E)
51
46
  return t;
52
- const f = { ...t }, T = Object.fromEntries(f.pages.map((i) => [i.id, i])), S = (() => {
53
- var i, N, a, _, A, D;
54
- return ((N = (i = T[s.SCHOOL_GOALS]) == null ? void 0 : i.nextPage) == null ? void 0 : N.pageId) === s.TEST_PREP && l.length === 0 ? s.SCHOOL_GOALS : l.length > 0 && ((_ = (a = T[s.TEST_PREP]) == null ? void 0 : a.nextPage) == null ? void 0 : _.pageId) === s.STUDENT_ENRICHMENT && g.length === 0 ? s.TEST_PREP : E ? ((D = (A = T[s.LEARNING_LEVEL]) == null ? void 0 : A.prevPage) == null ? void 0 : D.pageId) ?? null : null;
55
- })(), I = S ? E ? (O = T[s.LEARNING_LEVEL]) == null ? void 0 : O.nextPage : (h = T[(g == null ? void 0 : g.length) === 0 ? s.STUDENT_ENRICHMENT : s.TEST_PREP]) == null ? void 0 : h.nextPage : null;
56
- if (I && S) {
57
- const i = (a) => l.length === 0 && a === s.TEST_PREP || g.length === 0 && a === s.STUDENT_ENRICHMENT || E && a === s.LEARNING_LEVEL, N = f.pages.filter((a) => !i(a.id));
47
+ const f = { ...t }, T = Object.fromEntries(f.pages.map((d) => [d.id, d])), _ = (() => {
48
+ var d, N, a, S, A, C;
49
+ return ((N = (d = T[s.SCHOOL_GOALS]) == null ? void 0 : d.nextPage) == null ? void 0 : N.pageId) === s.TEST_PREP && u.length === 0 ? s.SCHOOL_GOALS : u.length > 0 && ((S = (a = T[s.TEST_PREP]) == null ? void 0 : a.nextPage) == null ? void 0 : S.pageId) === s.STUDENT_ENRICHMENT && l.length === 0 ? s.TEST_PREP : E ? ((C = (A = T[s.LEARNING_LEVEL]) == null ? void 0 : A.prevPage) == null ? void 0 : C.pageId) ?? null : null;
50
+ })(), I = _ ? E ? (O = T[s.LEARNING_LEVEL]) == null ? void 0 : O.nextPage : (h = T[(l == null ? void 0 : l.length) === 0 ? s.STUDENT_ENRICHMENT : s.TEST_PREP]) == null ? void 0 : h.nextPage : null;
51
+ if (I && _) {
52
+ const d = (a) => u.length === 0 && a === s.TEST_PREP || l.length === 0 && a === s.STUDENT_ENRICHMENT || E && a === s.LEARNING_LEVEL, N = f.pages.filter((a) => !d(a.id));
58
53
  f.pages = N.map((a) => {
59
- var _;
60
- return a.id === S ? { ...a, nextPage: I } : a.id === I.pageId ? {
54
+ var S;
55
+ return a.id === _ ? { ...a, nextPage: I } : a.id === I.pageId ? {
61
56
  ...a,
62
57
  prevPage: {
63
- buttonLabel: ((_ = T[S]) == null ? void 0 : _.navigationLabel) ?? "",
64
- pageId: S
58
+ buttonLabel: ((S = T[_]) == null ? void 0 : S.navigationLabel) ?? "",
59
+ pageId: _
65
60
  }
66
61
  } : a;
67
62
  });
@@ -69,29 +64,29 @@ const V = (n) => n === "PLA", j = (n, t, o) => {
69
64
  return f;
70
65
  }, Z = (n, t) => {
71
66
  var e;
72
- const { preference_config: o } = n;
73
- return t.length > 0 ? ((e = o == null ? void 0 : o.filter((r) => t.includes(r.preference_code))) == null ? void 0 : e.map(
74
- ({ preference_code: r, preference_name: c, preference_category: u, preference_description: d }) => ({
75
- preference_code: r,
67
+ const { preference_config: r } = n;
68
+ return t.length > 0 ? ((e = r == null ? void 0 : r.filter((o) => t.includes(o.preference_code))) == null ? void 0 : e.map(
69
+ ({ preference_code: o, preference_name: c, preference_category: i, preference_description: g }) => ({
70
+ preference_code: o,
76
71
  preference_name: c,
77
- preference_category: u,
78
- preference_description: d
72
+ preference_category: i,
73
+ preference_description: g
79
74
  })
80
75
  )) || [] : [];
81
- }, q = (n, t, o = !1) => {
76
+ }, q = (n, t, r = !1) => {
82
77
  if (!(n != null && n.length)) return [];
83
- if (o) {
84
- const e = n.find((r) => (r == null ? void 0 : r.preference_category) === t);
78
+ if (r) {
79
+ const e = n.find((o) => (o == null ? void 0 : o.preference_category) === t);
85
80
  return e ? [e.preference_code] : [];
86
81
  }
87
82
  return n.filter((e) => (e == null ? void 0 : e.preference_category) === t).map((e) => e.preference_code);
88
83
  };
89
84
  export {
90
- W as filterAndUpdateSlideNavigation,
85
+ Y as filterAndUpdateSlideNavigation,
91
86
  B as getFormattedPreferences,
92
87
  Z as getFormattedStudentPersonalizedPreference,
93
88
  q as getPreferenceCodesByCategory,
94
- Y as getWeekdayAndStartTimeFromPreference,
89
+ W as getWeekdayAndStartTimeFromPreference,
95
90
  V as isPLASource,
96
91
  j as updateGoalInFormData
97
92
  };
@@ -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 updateGoals = goals ? [...goals] : [];\n const goalIndex = updateGoals?.findIndex(goal => goal.goal_category === goalCategory);\n\n if (goalIndex === -1) {\n const schoolSuccessGoal = {\n ...data,\n goal_category: goalCategory,\n };\n\n updateGoals.push(schoolSuccessGoal);\n } else {\n updateGoals[goalIndex] = {\n ...updateGoals[goalIndex],\n ...data,\n };\n }\n\n return updateGoals;\n};\n\nconst getFormattedPreferences = (preferences: TPreference[], studentTimezone?: string) => {\n if (!studentTimezone) return [];\n\n const todayTimestamp = new Date().setHours(0, 0, 0, 0); // Set the current date to midnight.\n const timestampOffset = getOffsetBetweenTimezone(TEACHER_TIMEZONE, studentTimezone); // Offset between the teacher's and student's timezone.\n const studentTimestamp = todayTimestamp + timestampOffset; // Adjusting the current date to the student's timezone.\n const { day: today = '' } = convertEpochToDateTime(studentTimestamp, studentTimezone); // Current day at student's timezone.\n const currentDayIndex = DAYS.indexOf(today); // Current day index.\n\n return preferences.length > 0\n ? preferences\n .filter(preference => preference.selectedDay && preference.selectedTime)\n .map(preference => {\n const { selectedDay, selectedTime } = preference;\n // Extracting hours, minutes, and period from the selected time.\n const { hours, minutes, period } = getTimeUnits(selectedTime);\n\n // Calculating the index of the selected day in the DAYS array.\n const selectedDayIndex = DAYS.indexOf(selectedDay);\n const dayDifference = (selectedDayIndex - currentDayIndex + 7) % 7;\n\n // Calculate the epoch timestamp for the selected day and time in the student's timezone.\n const epochTimestamp =\n todayTimestamp +\n timestampOffset +\n convertToMilliseconds({ days: dayDifference, hours, minutes });\n\n return {\n id: epochTimestamp,\n value: `${selectedDay}, ${selectedTime} - ${hours + 1}:${\n minutes < 10 ? '0' : ''\n }${minutes} ${period}`, // Formatted the value string as required\n };\n })\n : [];\n};\n\n/**\n * Converts a list of epoch timestamps to normalized weekday and start_time.\n * @param epochs Array of epoch timestamps (number)\n * @returns Array of { weekday, start_time }\n */\nconst getWeekdayAndStartTimeFromPreference = (\n preference: Array<{ id: number; value: string }>,\n): Array<{ weekday: string; start_time: string }> => {\n return preference\n .filter(pref => typeof pref.id === 'number' && !isNaN(pref.id))\n .map(pref => {\n const date = new Date(pref.id);\n // Get weekday in lowercase\n const weekdayRaw = DAYS[date.getDay()];\n const weekday = weekdayRaw ? weekdayRaw.toLowerCase() : 'unknown';\n // Get time in HH:MM:SS format\n const hour = date.getHours();\n const minute = date.getMinutes();\n const start_time = `${hour.toString().padStart(2, '0')}:${minute\n .toString()\n .padStart(2, '0')}:00`;\n\n return { weekday, start_time };\n });\n};\n\nconst filterAndUpdateSlideNavigation = ({\n milestoneConfigData,\n trialHomeData,\n grade,\n goal,\n}: {\n milestoneConfigData: IMilestoneConfig;\n trialHomeData: ITrialHomeData;\n grade?: string;\n goal?: string;\n}) => {\n const { student, demo_info: demoInfo } = trialHomeData;\n const { grade: studentGrade, enrollment_type: enrollmentType } = student || {};\n const { stream, region_data: regionData } = demoInfo || {};\n const { opportunity_country: countryCode = 'US' } = regionData || {};\n\n const getGoals = (goalCategory: keyof typeof GOAL_CATEGORY) =>\n getGoalsFromConfig(milestoneConfigData, {\n countryCode,\n grade: grade || studentGrade || '',\n goalCategory,\n courseStream: stream,\n enrollmentType: enrollmentType,\n });\n\n const testPrepGoals = getGoals(GOAL_CATEGORY.TEST_PREP);\n const enrichmentGoals = getGoals(GOAL_CATEGORY.ENRICHMENT);\n const isHighEnrollmentProgramSelected = getGoals(GOAL_CATEGORY.SCHOOL_SUCCESS).some(\n g => g.id === goal && Object.keys(HIGH_ENROLLMENT_PROGRAMS_MAP).includes(g.programCode ?? ''),\n );\n\n if (\n testPrepGoals?.length > 0 &&\n enrichmentGoals?.length > 0 &&\n !isHighEnrollmentProgramSelected\n ) {\n return trialHomeData;\n }\n\n const updatedTrialHomeData = { ...trialHomeData };\n\n const pagesMap = Object.fromEntries(updatedTrialHomeData.pages.map(page => [page.id, page]));\n\n //slide whose nextPage reference needs to be updated\n const slideIdToUpdate = (() => {\n if (\n pagesMap[TrialPageId.SCHOOL_GOALS]?.nextPage?.pageId === TrialPageId.TEST_PREP &&\n testPrepGoals.length === 0\n ) {\n return TrialPageId.SCHOOL_GOALS;\n }\n\n if (\n testPrepGoals.length > 0 &&\n pagesMap[TrialPageId.TEST_PREP]?.nextPage?.pageId === TrialPageId.STUDENT_ENRICHMENT &&\n enrichmentGoals.length === 0\n ) {\n return TrialPageId.TEST_PREP;\n }\n\n if (isHighEnrollmentProgramSelected) {\n return pagesMap[TrialPageId.LEARNING_LEVEL]?.prevPage?.pageId ?? null;\n }\n\n return null;\n })();\n\n // the new next page reference for slideIdToUpdate\n const updatedNextPageInfo = slideIdToUpdate\n ? isHighEnrollmentProgramSelected\n ? pagesMap[TrialPageId.LEARNING_LEVEL]?.nextPage\n : pagesMap[\n enrichmentGoals?.length === 0 ? TrialPageId.STUDENT_ENRICHMENT : TrialPageId.TEST_PREP\n ]?.nextPage\n : null;\n\n // updating the nextPage and prevPage references\n if (updatedNextPageInfo && slideIdToUpdate) {\n const shouldRemoveSlide = (slideId: TrialPageId) =>\n (testPrepGoals.length === 0 && slideId === TrialPageId.TEST_PREP) ||\n (enrichmentGoals.length === 0 && slideId === TrialPageId.STUDENT_ENRICHMENT) ||\n (isHighEnrollmentProgramSelected && slideId === TrialPageId.LEARNING_LEVEL);\n\n const filteredSlides = updatedTrialHomeData.pages.filter(page => !shouldRemoveSlide(page.id));\n\n updatedTrialHomeData.pages = filteredSlides.map(page => {\n if (page.id === slideIdToUpdate) {\n return { ...page, nextPage: updatedNextPageInfo };\n }\n\n if (page.id === updatedNextPageInfo.pageId) {\n return {\n ...page,\n prevPage: {\n buttonLabel: pagesMap[slideIdToUpdate]?.navigationLabel ?? '',\n pageId: slideIdToUpdate,\n },\n };\n }\n\n return page;\n });\n }\n\n return updatedTrialHomeData;\n};\n\nconst getFormattedStudentPersonalizedPreference = (\n config: IMilestoneConfig,\n selectedCodes: string[],\n) => {\n const { preference_config: preferenceConfig } = config;\n\n if (selectedCodes.length > 0) {\n return (\n preferenceConfig\n ?.filter(pref => selectedCodes.includes(pref.preference_code))\n ?.map(\n ({ preference_code, preference_name, preference_category, preference_description }) => ({\n preference_code,\n preference_name,\n preference_category,\n preference_description,\n }),\n ) || []\n );\n }\n\n return [];\n};\n\nconst getPreferenceCodesByCategory = (\n preferences: TPreferenceSchema[],\n category: string,\n returnFirstOnly: boolean = false,\n): string[] => {\n if (!preferences?.length) return [];\n\n if (returnFirstOnly) {\n const firstMatch = preferences.find(pref => pref?.preference_category === category);\n\n return firstMatch ? [firstMatch.preference_code] : [];\n }\n\n return preferences\n .filter(pref => pref?.preference_category === category)\n .map(pref => pref.preference_code);\n};\n\nexport {\n isPLASource,\n filterAndUpdateSlideNavigation,\n updateGoalInFormData,\n getFormattedPreferences,\n getWeekdayAndStartTimeFromPreference,\n getFormattedStudentPersonalizedPreference,\n getPreferenceCodesByCategory,\n};\n"],"names":["isPLASource","source","updateGoalInFormData","goals","goalCategory","data","updateGoals","goalIndex","goal","schoolSuccessGoal","getFormattedPreferences","preferences","studentTimezone","todayTimestamp","timestampOffset","getOffsetBetweenTimezone","TEACHER_TIMEZONE","studentTimestamp","today","convertEpochToDateTime","currentDayIndex","DAYS","preference","selectedDay","selectedTime","hours","minutes","period","getTimeUnits","dayDifference","convertToMilliseconds","getWeekdayAndStartTimeFromPreference","pref","date","weekdayRaw","weekday","hour","minute","start_time","filterAndUpdateSlideNavigation","milestoneConfigData","trialHomeData","grade","student","demoInfo","studentGrade","enrollmentType","stream","regionData","countryCode","getGoals","getGoalsFromConfig","testPrepGoals","GOAL_CATEGORY","enrichmentGoals","isHighEnrollmentProgramSelected","g","HIGH_ENROLLMENT_PROGRAMS_MAP","updatedTrialHomeData","pagesMap","page","slideIdToUpdate","_b","_a","TrialPageId","_d","_c","_f","_e","updatedNextPageInfo","shouldRemoveSlide","slideId","filteredSlides","getFormattedStudentPersonalizedPreference","config","selectedCodes","preferenceConfig","preference_code","preference_name","preference_category","preference_description","getPreferenceCodesByCategory","category","returnFirstOnly","firstMatch"],"mappings":"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"}
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}: {\n milestoneConfigData: IMilestoneConfig;\n trialHomeData: ITrialHomeData;\n grade?: string;\n goal?: string;\n}) => {\n const { student, demo_info: demoInfo } = trialHomeData;\n const { grade: studentGrade, enrollment_type: enrollmentType } = student || {};\n const { stream, region_data: regionData } = demoInfo || {};\n const { opportunity_country: countryCode = 'US' } = regionData || {};\n\n const getGoals = (goalCategory: keyof typeof GOAL_CATEGORY) =>\n getGoalsFromConfig(milestoneConfigData, {\n countryCode,\n grade: grade || studentGrade || '',\n goalCategory,\n courseStream: stream,\n enrollmentType: enrollmentType,\n });\n\n const testPrepGoals = getGoals(GOAL_CATEGORY.TEST_PREP);\n const enrichmentGoals = getGoals(GOAL_CATEGORY.ENRICHMENT);\n const isHighEnrollmentProgramSelected = getGoals(GOAL_CATEGORY.SCHOOL_SUCCESS).some(\n g => g.id === goal && Object.keys(HIGH_ENROLLMENT_PROGRAMS_MAP).includes(g.programCode ?? ''),\n );\n\n if (\n testPrepGoals?.length > 0 &&\n enrichmentGoals?.length > 0 &&\n !isHighEnrollmentProgramSelected\n ) {\n return trialHomeData;\n }\n\n const updatedTrialHomeData = { ...trialHomeData };\n\n const pagesMap = Object.fromEntries(updatedTrialHomeData.pages.map(page => [page.id, page]));\n\n //slide whose nextPage reference needs to be updated\n const slideIdToUpdate = (() => {\n if (\n pagesMap[TrialPageId.SCHOOL_GOALS]?.nextPage?.pageId === TrialPageId.TEST_PREP &&\n testPrepGoals.length === 0\n ) {\n return TrialPageId.SCHOOL_GOALS;\n }\n\n if (\n testPrepGoals.length > 0 &&\n pagesMap[TrialPageId.TEST_PREP]?.nextPage?.pageId === TrialPageId.STUDENT_ENRICHMENT &&\n enrichmentGoals.length === 0\n ) {\n return TrialPageId.TEST_PREP;\n }\n\n if (isHighEnrollmentProgramSelected) {\n return pagesMap[TrialPageId.LEARNING_LEVEL]?.prevPage?.pageId ?? null;\n }\n\n return null;\n })();\n\n // the new next page reference for slideIdToUpdate\n const updatedNextPageInfo = slideIdToUpdate\n ? isHighEnrollmentProgramSelected\n ? pagesMap[TrialPageId.LEARNING_LEVEL]?.nextPage\n : pagesMap[\n enrichmentGoals?.length === 0 ? TrialPageId.STUDENT_ENRICHMENT : TrialPageId.TEST_PREP\n ]?.nextPage\n : null;\n\n // updating the nextPage and prevPage references\n if (updatedNextPageInfo && slideIdToUpdate) {\n const shouldRemoveSlide = (slideId: TrialPageId) =>\n (testPrepGoals.length === 0 && slideId === TrialPageId.TEST_PREP) ||\n (enrichmentGoals.length === 0 && slideId === TrialPageId.STUDENT_ENRICHMENT) ||\n (isHighEnrollmentProgramSelected && slideId === TrialPageId.LEARNING_LEVEL);\n\n const filteredSlides = updatedTrialHomeData.pages.filter(page => !shouldRemoveSlide(page.id));\n\n updatedTrialHomeData.pages = filteredSlides.map(page => {\n if (page.id === slideIdToUpdate) {\n return { ...page, nextPage: updatedNextPageInfo };\n }\n\n if (page.id === updatedNextPageInfo.pageId) {\n return {\n ...page,\n prevPage: {\n buttonLabel: pagesMap[slideIdToUpdate]?.navigationLabel ?? '',\n pageId: slideIdToUpdate,\n },\n };\n }\n\n return page;\n });\n }\n\n return updatedTrialHomeData;\n};\n\nconst getFormattedStudentPersonalizedPreference = (\n config: IMilestoneConfig,\n selectedCodes: string[],\n) => {\n const { preference_config: preferenceConfig } = config;\n\n if (selectedCodes.length > 0) {\n return (\n preferenceConfig\n ?.filter(pref => selectedCodes.includes(pref.preference_code))\n ?.map(\n ({ preference_code, preference_name, preference_category, preference_description }) => ({\n preference_code,\n preference_name,\n preference_category,\n preference_description,\n }),\n ) || []\n );\n }\n\n return [];\n};\n\nconst getPreferenceCodesByCategory = (\n preferences: TPreferenceSchema[],\n category: string,\n returnFirstOnly: boolean = false,\n): string[] => {\n if (!preferences?.length) return [];\n\n if (returnFirstOnly) {\n const firstMatch = preferences.find(pref => pref?.preference_category === category);\n\n return firstMatch ? [firstMatch.preference_code] : [];\n }\n\n return preferences\n .filter(pref => pref?.preference_category === category)\n .map(pref => pref.preference_code);\n};\n\nexport {\n isPLASource,\n filterAndUpdateSlideNavigation,\n updateGoalInFormData,\n getFormattedPreferences,\n getWeekdayAndStartTimeFromPreference,\n getFormattedStudentPersonalizedPreference,\n getPreferenceCodesByCategory,\n};\n"],"names":["isPLASource","source","updateGoalInFormData","goals","goalCategory","data","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","student","demoInfo","studentGrade","enrollmentType","stream","regionData","countryCode","getGoals","getGoalsFromConfig","testPrepGoals","GOAL_CATEGORY","enrichmentGoals","isHighEnrollmentProgramSelected","g","HIGH_ENROLLMENT_PROGRAMS_MAP","updatedTrialHomeData","pagesMap","page","slideIdToUpdate","_b","_a","TrialPageId","_d","_c","_f","_e","updatedNextPageInfo","shouldRemoveSlide","slideId","filteredSlides","getFormattedStudentPersonalizedPreference","config","selectedCodes","preferenceConfig","preference_code","preference_name","preference_category","preference_description","getPreferenceCodesByCategory","category","returnFirstOnly","firstMatch"],"mappings":"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"}
@@ -1,69 +1,72 @@
1
- import { useState as Y, useCallback as j } from "react";
2
- import { PREFERENCE_CATEGORY as C, GOAL_CATEGORY as w, ENROLLMENT_TYPES as F } from "../../milestone/constants.js";
3
- import { getGradesFromConfig as k } from "../../milestone/create/milestone-create-helpers.js";
4
- import { PREFERENCE_CODE_MAP as x } from "../comps/student-feedback/student-feedback-constants.js";
5
- import { isPLASource as z, getPreferenceCodesByCategory as E, updateGoalInFormData as B } from "../helper.js";
6
- import { epochTimestampAfterOneYear as D } from "../../utils/utils.js";
7
- import { HIGH_ENROLLMENT_PROGRAMS_MAP as J } from "../trial-session-constants.js";
1
+ import { useRef as j, useCallback as E } from "react";
2
+ import { PREFERENCE_CATEGORY as T, GOAL_CATEGORY as Y, ENROLLMENT_TYPES as w } from "../../milestone/constants.js";
3
+ import { getGradesFromConfig as F } from "../../milestone/create/milestone-create-helpers.js";
4
+ import { PREFERENCE_CODE_MAP as k } from "../comps/student-feedback/student-feedback-constants.js";
5
+ import { getPreferenceCodesByCategory as S, isPLASource as x, updateGoalInFormData as z } from "../helper.js";
6
+ import { epochTimestampAfterOneYear as B } from "../../utils/utils.js";
7
+ import { HIGH_ENROLLMENT_PROGRAMS_MAP as D } from "../trial-session-constants.js";
8
8
  const ee = ({
9
- teacherClassroomId: S,
10
- trialHomeData: s,
11
- milestoneConfig: t,
9
+ teacherClassroomId: O,
12
10
  studentTimezone: a,
13
- updateSlideConfig: c
11
+ updateSlideConfig: l
14
12
  }) => {
15
- const l = Object.keys(J), n = `trialSessionConfigCache_${S}`, [d, T] = Y(() => {
16
- try {
17
- return window.localStorage.getItem(n) === "true";
18
- } catch {
19
- return !1;
20
- }
21
- });
22
- return { onRenderUpdateSlideConfig: j(() => {
23
- if (d)
24
- return;
25
- const { demo_info: O, student: P, intel_student: o } = s, { goal_code: I } = O || {}, { student_preference: R } = o || {}, { preferences: i = [] } = R || {}, {
26
- name: G,
27
- grade: m,
28
- enrollment_type: h
29
- } = P || {}, A = z(o == null ? void 0 : o.source), L = !!k(t).find(
30
- (r) => r.id === m
31
- ), N = t.goal_curriculum_map.find((r) => r.goal_code === I), u = E(i, C.OBJECTIVES), e = E(i, C.POSITION, !0), g = u.length > 0 ? u : null, p = e.length > 0 ? e : null, _ = e.length > 0 && e[0] ? [x[e[0]]] : null, {
32
- goal_curriculum_standard: U,
33
- goal_code: y,
34
- goal_name: v,
35
- program_code: f
36
- } = N || {}, b = B(void 0, w.SCHOOL_SUCCESS, {
37
- goal_code: y ?? "",
38
- milestone_name: v ?? "",
39
- milestone_date_ts: D(),
40
- publish: A,
41
- program_code: f
42
- }), M = l.includes(f) ? F.HIGH : void 0, H = {
43
- studentTimezone: a,
44
- name: G,
45
- goals: b,
46
- curriculum: U,
47
- grade: L ? m : "",
48
- enrollmentType: M ?? h,
49
- ..._ && { personalizedLevel: _ },
50
- ...p && { personalizedPosition: p },
51
- ...g && { personalizedObjectives: g }
13
+ const c = Object.keys(D), n = `trialSessionConfigCache_${O}`, d = j(
14
+ (() => {
15
+ try {
16
+ return window.localStorage.getItem(n) === "true";
17
+ } catch {
18
+ return !1;
19
+ }
20
+ })()
21
+ ), i = E((t) => {
22
+ const o = S(t, T.OBJECTIVES), e = S(t, T.POSITION, !0);
23
+ return {
24
+ objectivesToUpdate: o.length > 0 ? o : null,
25
+ positionToUpdate: e.length > 0 ? e : null,
26
+ levelToUpdate: e.length > 0 && e[0] ? [k[e[0]]] : null
52
27
  };
53
- try {
54
- window.localStorage.setItem(n, "true"), T(!0);
55
- } catch {
56
- }
57
- c(H);
58
- }, [
59
- n,
60
- d,
61
- s,
62
- t,
63
- a,
64
- c,
65
- l
66
- ]) };
28
+ }, []);
29
+ return { onRenderUpdateSlideConfig: E(
30
+ ({ trialHomeData: t, milestoneConfig: o }) => {
31
+ var C;
32
+ if (d.current)
33
+ return;
34
+ const { demo_info: e, student: P, intel_student: r } = t, { goal_code: R } = e || {}, { student_preference: U } = r || {}, { preferences: h = [] } = U || {}, {
35
+ name: G,
36
+ grade: m,
37
+ enrollment_type: I
38
+ } = P || {}, A = x(r == null ? void 0 : r.source), L = F(o).some((s) => s.id === m), N = (C = o.goal_curriculum_map) == null ? void 0 : C.find(
39
+ (s) => s.goal_code === R
40
+ ), { objectivesToUpdate: u, positionToUpdate: g, levelToUpdate: p } = i(h), {
41
+ goal_curriculum_standard: v,
42
+ goal_code: y,
43
+ goal_name: b,
44
+ program_code: _
45
+ } = N || {}, f = z(void 0, Y.SCHOOL_SUCCESS, {
46
+ goal_code: y,
47
+ milestone_name: b,
48
+ milestone_date_ts: B(),
49
+ publish: A,
50
+ program_code: _
51
+ }), H = c.includes(_) ? w.HIGH : I, M = {
52
+ studentTimezone: a,
53
+ name: G,
54
+ curriculum: v,
55
+ grade: L ? m : "",
56
+ enrollmentType: H,
57
+ ...f.length > 0 && { goals: f },
58
+ ...p && { personalizedLevel: p },
59
+ ...g && { personalizedPosition: g },
60
+ ...u && { personalizedObjectives: u }
61
+ };
62
+ try {
63
+ window.localStorage.setItem(n, "true"), d.current = !0;
64
+ } catch {
65
+ }
66
+ l(M);
67
+ },
68
+ [n, a, l, c, i]
69
+ ) };
67
70
  };
68
71
  export {
69
72
  ee as useSlideConfigUpdate
@@ -1 +1 @@
1
- {"version":3,"file":"use-slide-config-update.js","sources":["../../../../src/features/trial-session/hooks/use-slide-config-update.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\nimport { ENROLLMENT_TYPES, GOAL_CATEGORY, PREFERENCE_CATEGORY } from '../../milestone/constants';\nimport { getGradesFromConfig } from '../../milestone/create/milestone-create-helpers';\nimport type { IMilestoneConfig } from '../../milestone/create/milestone-create-types';\nimport { PREFERENCE_CODE_MAP } from '../comps/student-feedback/student-feedback-constants';\nimport { getPreferenceCodesByCategory, isPLASource, updateGoalInFormData } from '../helper';\nimport type { ITrialHomeData, ITrialSessionFormFields } from '../trial-session-types';\nimport { epochTimestampAfterOneYear } from '../../utils/utils';\nimport { HIGH_ENROLLMENT_PROGRAMS_MAP } from '../trial-session-constants';\n\ninterface UseSlideConfigUpdateProps {\n teacherClassroomId: string;\n trialHomeData: ITrialHomeData;\n milestoneConfig: IMilestoneConfig;\n studentTimezone?: string;\n updateSlideConfig: (config: Partial<ITrialSessionFormFields>) => void;\n}\n\nexport const useSlideConfigUpdate = ({\n teacherClassroomId,\n trialHomeData,\n milestoneConfig,\n studentTimezone,\n updateSlideConfig,\n}: UseSlideConfigUpdateProps) => {\n const highEnrollmentPrograms = Object.keys(HIGH_ENROLLMENT_PROGRAMS_MAP);\n const CACHE_KEY = `trialSessionConfigCache_${teacherClassroomId}`;\n\n // Check if config was already set for this student in localStorage\n const [isConfigSet, setIsConfigSet] = useState<boolean>(() => {\n try {\n return window.localStorage.getItem(CACHE_KEY) === 'true';\n } catch {\n return false;\n }\n });\n\n const onRenderUpdateSlideConfig = useCallback(() => {\n // If config was already set for this student in this session, skip update\n if (isConfigSet) {\n return;\n }\n\n const { demo_info: demoInfo, student, intel_student: intelStudent } = trialHomeData;\n const { goal_code: goalCode } = demoInfo || {};\n const { student_preference: studentPreference } = intelStudent || {};\n const { preferences = [] } = studentPreference || {};\n const {\n name: studentName,\n grade: studentGrade,\n enrollment_type: studentEnrollmentType,\n } = student || {};\n\n const isPLA = isPLASource(intelStudent?.source);\n const IsGradeExistInMilestoneConfig = !!getGradesFromConfig(milestoneConfig).find(\n element => element.id === studentGrade,\n );\n const goalToPreSelect = milestoneConfig.goal_curriculum_map.find(g => g.goal_code === goalCode);\n\n const objectives = getPreferenceCodesByCategory(preferences, PREFERENCE_CATEGORY.OBJECTIVES);\n const position = getPreferenceCodesByCategory(preferences, PREFERENCE_CATEGORY.POSITION, true);\n\n const objectivesToUpdate = objectives.length > 0 ? objectives : null;\n const positionToUpdate = position.length > 0 ? position : null;\n const levelToUpdate =\n position.length > 0 && position[0]\n ? [PREFERENCE_CODE_MAP[position[0] as keyof typeof PREFERENCE_CODE_MAP]]\n : null;\n\n const {\n goal_curriculum_standard: goalCurriculumStandard,\n goal_code: goalCodeToSelect,\n goal_name: goalNameToSelect,\n program_code: programCodeToSelect,\n } = goalToPreSelect || {};\n\n const updatedGoals = updateGoalInFormData(undefined, GOAL_CATEGORY.SCHOOL_SUCCESS, {\n goal_code: goalCodeToSelect ?? '',\n milestone_name: goalNameToSelect ?? '',\n milestone_date_ts: epochTimestampAfterOneYear(),\n publish: isPLA,\n program_code: programCodeToSelect as string,\n });\n const enrollmentToUpdate = highEnrollmentPrograms.includes(programCodeToSelect as string)\n ? ENROLLMENT_TYPES.HIGH\n : undefined;\n\n const configToUpdate: Partial<ITrialSessionFormFields> = {\n studentTimezone,\n name: studentName,\n goals: updatedGoals,\n curriculum: goalCurriculumStandard,\n grade: IsGradeExistInMilestoneConfig ? studentGrade : '',\n enrollmentType: enrollmentToUpdate ?? studentEnrollmentType,\n ...(levelToUpdate && { personalizedLevel: levelToUpdate }),\n ...(positionToUpdate && { personalizedPosition: positionToUpdate }),\n ...(objectivesToUpdate && { personalizedObjectives: objectivesToUpdate }),\n };\n\n // Mark config as set in window. and state\n try {\n window.localStorage.setItem(CACHE_KEY, 'true');\n setIsConfigSet(true);\n } catch {\n // Silent catch\n }\n\n updateSlideConfig(configToUpdate);\n }, [\n CACHE_KEY,\n isConfigSet,\n trialHomeData,\n milestoneConfig,\n studentTimezone,\n updateSlideConfig,\n highEnrollmentPrograms,\n ]);\n\n return { onRenderUpdateSlideConfig };\n};\n"],"names":["useSlideConfigUpdate","teacherClassroomId","trialHomeData","milestoneConfig","studentTimezone","updateSlideConfig","highEnrollmentPrograms","HIGH_ENROLLMENT_PROGRAMS_MAP","CACHE_KEY","isConfigSet","setIsConfigSet","useState","useCallback","demoInfo","student","intelStudent","goalCode","studentPreference","preferences","studentName","studentGrade","studentEnrollmentType","isPLA","isPLASource","IsGradeExistInMilestoneConfig","getGradesFromConfig","element","goalToPreSelect","g","objectives","getPreferenceCodesByCategory","PREFERENCE_CATEGORY","position","objectivesToUpdate","positionToUpdate","levelToUpdate","PREFERENCE_CODE_MAP","goalCurriculumStandard","goalCodeToSelect","goalNameToSelect","programCodeToSelect","updatedGoals","updateGoalInFormData","GOAL_CATEGORY","epochTimestampAfterOneYear","enrollmentToUpdate","ENROLLMENT_TYPES","configToUpdate"],"mappings":";;;;;;;AAmBO,MAAMA,KAAuB,CAAC;AAAA,EACnC,oBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,mBAAAC;AACF,MAAiC;AACzB,QAAAC,IAAyB,OAAO,KAAKC,CAA4B,GACjEC,IAAY,2BAA2BP,CAAkB,IAGzD,CAACQ,GAAaC,CAAc,IAAIC,EAAkB,MAAM;AACxD,QAAA;AACF,aAAO,OAAO,aAAa,QAAQH,CAAS,MAAM;AAAA,IAAA,QAC5C;AACC,aAAA;AAAA,IACT;AAAA,EAAA,CACD;AAmFD,SAAO,EAAE,2BAjFyBI,EAAY,MAAM;AAElD,QAAIH;AACF;AAGF,UAAM,EAAE,WAAWI,GAAU,SAAAC,GAAS,eAAeC,EAAiB,IAAAb,GAChE,EAAE,WAAWc,MAAaH,KAAY,CAAA,GACtC,EAAE,oBAAoBI,MAAsBF,KAAgB,CAAA,GAC5D,EAAE,aAAAG,IAAc,CAAA,MAAOD,KAAqB,CAAA,GAC5C;AAAA,MACJ,MAAME;AAAA,MACN,OAAOC;AAAA,MACP,iBAAiBC;AAAA,IAAA,IACfP,KAAW,CAAA,GAETQ,IAAQC,EAAYR,KAAA,gBAAAA,EAAc,MAAM,GACxCS,IAAgC,CAAC,CAACC,EAAoBtB,CAAe,EAAE;AAAA,MAC3E,CAAAuB,MAAWA,EAAQ,OAAON;AAAA,IAAA,GAEtBO,IAAkBxB,EAAgB,oBAAoB,KAAK,CAAKyB,MAAAA,EAAE,cAAcZ,CAAQ,GAExFa,IAAaC,EAA6BZ,GAAaa,EAAoB,UAAU,GACrFC,IAAWF,EAA6BZ,GAAaa,EAAoB,UAAU,EAAI,GAEvFE,IAAqBJ,EAAW,SAAS,IAAIA,IAAa,MAC1DK,IAAmBF,EAAS,SAAS,IAAIA,IAAW,MACpDG,IACJH,EAAS,SAAS,KAAKA,EAAS,CAAC,IAC7B,CAACI,EAAoBJ,EAAS,CAAC,CAAqC,CAAC,IACrE,MAEA;AAAA,MACJ,0BAA0BK;AAAA,MAC1B,WAAWC;AAAA,MACX,WAAWC;AAAA,MACX,cAAcC;AAAA,IAAA,IACZb,KAAmB,CAAA,GAEjBc,IAAeC,EAAqB,QAAWC,EAAc,gBAAgB;AAAA,MACjF,WAAWL,KAAoB;AAAA,MAC/B,gBAAgBC,KAAoB;AAAA,MACpC,mBAAmBK,EAA2B;AAAA,MAC9C,SAAStB;AAAA,MACT,cAAckB;AAAA,IAAA,CACf,GACKK,IAAqBvC,EAAuB,SAASkC,CAA6B,IACpFM,EAAiB,OACjB,QAEEC,IAAmD;AAAA,MACvD,iBAAA3C;AAAA,MACA,MAAMe;AAAA,MACN,OAAOsB;AAAA,MACP,YAAYJ;AAAA,MACZ,OAAOb,IAAgCJ,IAAe;AAAA,MACtD,gBAAgByB,KAAsBxB;AAAA,MACtC,GAAIc,KAAiB,EAAE,mBAAmBA,EAAc;AAAA,MACxD,GAAID,KAAoB,EAAE,sBAAsBA,EAAiB;AAAA,MACjE,GAAID,KAAsB,EAAE,wBAAwBA,EAAmB;AAAA,IAAA;AAIrE,QAAA;AACK,aAAA,aAAa,QAAQzB,GAAW,MAAM,GAC7CE,EAAe,EAAI;AAAA,IAAA,QACb;AAAA,IAER;AAEA,IAAAL,EAAkB0C,CAAc;AAAA,EAAA,GAC/B;AAAA,IACDvC;AAAA,IACAC;AAAA,IACAP;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,EAAA,CACD,EAEkC;AACrC;"}
1
+ {"version":3,"file":"use-slide-config-update.js","sources":["../../../../src/features/trial-session/hooks/use-slide-config-update.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\nimport { ENROLLMENT_TYPES, GOAL_CATEGORY, PREFERENCE_CATEGORY } from '../../milestone/constants';\nimport { getGradesFromConfig } from '../../milestone/create/milestone-create-helpers';\nimport type { IMilestoneConfig } from '../../milestone/create/milestone-create-types';\nimport { PREFERENCE_CODE_MAP } from '../comps/student-feedback/student-feedback-constants';\nimport { getPreferenceCodesByCategory, isPLASource, updateGoalInFormData } from '../helper';\nimport type {\n ITrialHomeData,\n ITrialSessionFormFields,\n TPreferenceSchema,\n} from '../trial-session-types';\nimport { epochTimestampAfterOneYear } from '../../utils/utils';\nimport { HIGH_ENROLLMENT_PROGRAMS_MAP } from '../trial-session-constants';\n\ninterface UseSlideConfigUpdateProps {\n teacherClassroomId: string;\n studentTimezone?: string;\n updateSlideConfig: (config: Partial<ITrialSessionFormFields>) => void;\n}\n\ntype TRenderUpdateProps = {\n trialHomeData: ITrialHomeData;\n milestoneConfig: IMilestoneConfig;\n};\n\nexport const useSlideConfigUpdate = ({\n teacherClassroomId,\n studentTimezone,\n updateSlideConfig,\n}: UseSlideConfigUpdateProps) => {\n const highEnrollmentPrograms = Object.keys(HIGH_ENROLLMENT_PROGRAMS_MAP);\n const CACHE_KEY = `trialSessionConfigCache_${teacherClassroomId}`;\n\n // Use useRef to track if config was set without causing re-renders\n const isConfigSetRef = useRef<boolean>(\n (() => {\n try {\n return window.localStorage.getItem(CACHE_KEY) === 'true';\n } catch {\n return false;\n }\n })(),\n );\n\n // Memoize preference processing helper\n const processPreferences = useCallback((preferences: TPreferenceSchema[]) => {\n const objectives = getPreferenceCodesByCategory(preferences, PREFERENCE_CATEGORY.OBJECTIVES);\n const position = getPreferenceCodesByCategory(preferences, PREFERENCE_CATEGORY.POSITION, true);\n\n return {\n objectivesToUpdate: objectives.length > 0 ? objectives : null,\n positionToUpdate: position.length > 0 ? position : null,\n levelToUpdate:\n position.length > 0 && position[0]\n ? [PREFERENCE_CODE_MAP[position[0] as keyof typeof PREFERENCE_CODE_MAP]]\n : null,\n };\n }, []);\n\n const onRenderUpdateSlideConfig = useCallback(\n ({ trialHomeData, milestoneConfig }: TRenderUpdateProps) => {\n // If config was already set for this student in this session, skip update\n if (isConfigSetRef.current) {\n return;\n }\n\n const { demo_info: demoInfo, student, intel_student: intelStudent } = trialHomeData;\n const { goal_code: goalCode } = demoInfo || {};\n const { student_preference: studentPreference } = intelStudent || {};\n const { preferences = [] } = studentPreference || {};\n const {\n name: studentName,\n grade: studentGrade,\n enrollment_type: studentEnrollmentType,\n } = student || {};\n\n const isPLA = isPLASource(intelStudent?.source);\n const grades = getGradesFromConfig(milestoneConfig);\n const IsGradeExistInMilestoneConfig = grades.some(element => element.id === studentGrade);\n\n const goalToPreSelect = milestoneConfig.goal_curriculum_map?.find(\n g => g.goal_code === goalCode,\n );\n\n // Process preferences efficiently\n const { objectivesToUpdate, positionToUpdate, levelToUpdate } =\n processPreferences(preferences);\n\n const {\n goal_curriculum_standard: goalCurriculumStandard,\n goal_code: goalCodeToSelect,\n goal_name: goalNameToSelect,\n program_code: programCodeToSelect,\n } = goalToPreSelect || {};\n\n // Create goals data\n const updatedGoals = updateGoalInFormData(undefined, GOAL_CATEGORY.SCHOOL_SUCCESS, {\n goal_code: goalCodeToSelect,\n milestone_name: goalNameToSelect,\n milestone_date_ts: epochTimestampAfterOneYear(),\n publish: isPLA,\n program_code: programCodeToSelect as string,\n });\n\n const enrollmentToUpdate = highEnrollmentPrograms.includes(programCodeToSelect as string)\n ? ENROLLMENT_TYPES.HIGH\n : studentEnrollmentType;\n\n // Build config object efficiently\n const configToUpdate: Partial<ITrialSessionFormFields> = {\n studentTimezone,\n name: studentName,\n curriculum: goalCurriculumStandard,\n grade: IsGradeExistInMilestoneConfig ? studentGrade : '',\n enrollmentType: enrollmentToUpdate,\n ...(updatedGoals.length > 0 && { goals: updatedGoals }),\n ...(levelToUpdate && { personalizedLevel: levelToUpdate }),\n ...(positionToUpdate && { personalizedPosition: positionToUpdate }),\n ...(objectivesToUpdate && { personalizedObjectives: objectivesToUpdate }),\n };\n\n // Mark config as set and update\n try {\n window.localStorage.setItem(CACHE_KEY, 'true');\n isConfigSetRef.current = true;\n } catch {\n // Silent catch for localStorage errors\n }\n\n updateSlideConfig(configToUpdate);\n },\n [CACHE_KEY, studentTimezone, updateSlideConfig, highEnrollmentPrograms, processPreferences],\n );\n\n return { onRenderUpdateSlideConfig };\n};\n"],"names":["useSlideConfigUpdate","teacherClassroomId","studentTimezone","updateSlideConfig","highEnrollmentPrograms","HIGH_ENROLLMENT_PROGRAMS_MAP","CACHE_KEY","isConfigSetRef","useRef","processPreferences","useCallback","preferences","objectives","getPreferenceCodesByCategory","PREFERENCE_CATEGORY","position","PREFERENCE_CODE_MAP","trialHomeData","milestoneConfig","demoInfo","student","intelStudent","goalCode","studentPreference","studentName","studentGrade","studentEnrollmentType","isPLA","isPLASource","IsGradeExistInMilestoneConfig","getGradesFromConfig","element","goalToPreSelect","_a","g","objectivesToUpdate","positionToUpdate","levelToUpdate","goalCurriculumStandard","goalCodeToSelect","goalNameToSelect","programCodeToSelect","updatedGoals","updateGoalInFormData","GOAL_CATEGORY","epochTimestampAfterOneYear","enrollmentToUpdate","ENROLLMENT_TYPES","configToUpdate"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { jsx as C, jsxs as q } from "react/jsx-runtime";
2
- import { memo as z, useState as J, useMemo as S, useCallback as K, useEffect as d } from "react";
1
+ import { jsx as h, jsxs as q } from "react/jsx-runtime";
2
+ import { memo as z, useState as J, useMemo as C, useCallback as K, useEffect as m } from "react";
3
3
  import Q from "../ui/layout/flex-view.js";
4
4
  import W from "./context/trial-session-context.js";
5
5
  import { useButtonStateForLeftPanel as X } from "./hooks/use-left-panel-button-state.js";
@@ -8,14 +8,14 @@ import Z from "./left-panel/index.js";
8
8
  import ee from "./right-panel/index.js";
9
9
  const de = z(function(B) {
10
10
  const {
11
- userType: o,
12
- teacherPanel: D,
13
- studentPanel: T,
14
- trialGameUrl: I,
15
- formData: i,
11
+ userType: i,
12
+ teacherPanel: S,
13
+ studentPanel: D,
14
+ trialGameUrl: T,
15
+ formData: I,
16
16
  height: G = "100vh",
17
- trialHomeData: t,
18
- milestoneConfig: m,
17
+ trialHomeData: e,
18
+ milestoneConfig: n,
19
19
  onFormDataChange: f,
20
20
  worksheet: v,
21
21
  studentId: s,
@@ -34,96 +34,93 @@ const de = z(function(B) {
34
34
  studentTimezone: c,
35
35
  classTimeAlertConfig: M,
36
36
  changeDemoLevel: V
37
- } = B, e = o === "TEACHER", { pages: g = [] } = t, [n, N] = J(i), p = e ? n : i, h = p == null ? void 0 : p.id, $ = S(
38
- () => g.find((a) => a.id === h) ?? g[0],
39
- [h, g]
40
- ), b = S(() => {
37
+ } = B, t = i === "TEACHER", { pages: g = [] } = e, [d, N] = J(I), r = t ? d : I, p = r == null ? void 0 : r.id, $ = C(
38
+ () => g.find((a) => a.id === p) ?? g[0],
39
+ [p, g]
40
+ ), b = C(() => {
41
41
  const a = {
42
- circleConfig: t.circle_trial_game_config,
42
+ circleConfig: e.circle_trial_game_config,
43
43
  playerDetails: {
44
- userId: e ? l : s,
45
- circle_username: t[e ? "teacher" : "student"].circle_username,
46
- user_avatar: t[e ? "teacher" : "student"].user_avatar,
47
- playerType: o
44
+ userId: t ? l : s,
45
+ circle_username: e[t ? "teacher" : "student"].circle_username,
46
+ user_avatar: e[t ? "teacher" : "student"].user_avatar,
47
+ playerType: i
48
48
  }
49
49
  };
50
- return o === "STUDENT" && (a.playerDetails.grade = t.student.grade), a;
51
- }, [e, s, l, t, o]), r = K((a) => {
50
+ return i === "STUDENT" && (a.playerDetails.grade = e.student.grade), a;
51
+ }, [t, s, l, e, i]), o = K((a) => {
52
52
  N((U) => U ? { ...U, ...a } : a);
53
53
  }, []), { buttonState: j, updateButtonState: k } = X(), { onRenderUpdateSlideConfig: L } = Y({
54
- trialHomeData: t,
55
- milestoneConfig: m,
56
54
  studentTimezone: c,
57
55
  teacherClassroomId: H,
58
- updateSlideConfig: r
59
- }), O = S(
56
+ updateSlideConfig: o
57
+ }), O = C(
60
58
  () => ({
61
- teacherPanel: D,
62
- studentPanel: T,
63
- isTeacher: e,
59
+ teacherPanel: S,
60
+ studentPanel: D,
61
+ isTeacher: t,
64
62
  slideConfig: $,
65
- milestoneConfig: m,
66
- formData: e ? n : i,
67
- updateSlideConfig: r,
63
+ milestoneConfig: n,
64
+ formData: r,
65
+ updateSlideConfig: o,
68
66
  worksheet: v,
69
67
  buttonState: j,
70
68
  updateButtonState: k,
71
69
  studentId: s,
72
70
  teacherId: l,
73
71
  classStartedOn: P,
74
- trialHomeData: t,
72
+ trialHomeData: e,
75
73
  worksheetNavigationPanel: x,
76
74
  questionsRatingPanel: _,
77
75
  onTrialInformationUpdate: E,
78
76
  openEndClassModal: y,
79
77
  studentAbsentInClass: w,
80
78
  circleGames: b,
81
- trialGameUrl: I,
79
+ trialGameUrl: T,
82
80
  handleInfoMessage: R,
83
81
  onRemoveOptionalSlides: A,
84
82
  classDuration: F,
85
83
  classTimeAlertConfig: M
86
84
  }),
87
85
  [
86
+ S,
88
87
  D,
89
- T,
90
- e,
88
+ t,
91
89
  $,
92
- m,
93
90
  n,
94
- i,
95
91
  r,
92
+ o,
96
93
  v,
97
94
  j,
98
95
  k,
99
96
  s,
100
97
  l,
101
98
  P,
102
- t,
99
+ e,
103
100
  x,
104
101
  _,
105
102
  E,
106
103
  y,
107
104
  w,
108
105
  b,
109
- I,
106
+ T,
110
107
  R,
111
108
  A,
112
109
  F,
113
110
  M
114
111
  ]
115
112
  );
116
- return d(() => {
117
- n && f && f(n);
118
- }, [f, n]), d(() => {
113
+ return m(() => {
114
+ d && f && f(d);
115
+ }, [f, d]), m(() => {
119
116
  c || u == null || u();
120
- }, [h]), d(() => {
121
- e && c && L();
122
- }, [e, L, c]), d(() => {
123
- V && r({ confirmationModalActive: !0 });
124
- }, [V, r]), /* @__PURE__ */ C(W.Provider, { value: O, children: /* @__PURE__ */ q(Q, { $height: G, $flexDirection: "row", $justifyContent: "center", $alignItems: "center", children: [
125
- /* @__PURE__ */ C(Z, {}),
126
- /* @__PURE__ */ C(ee, {})
117
+ }, [p]), m(() => {
118
+ t && c && e && n && L({ trialHomeData: e, milestoneConfig: n });
119
+ }, [t, n, L, c, e]), m(() => {
120
+ V && o({ confirmationModalActive: !0 });
121
+ }, [V, o]), /* @__PURE__ */ h(W.Provider, { value: O, children: /* @__PURE__ */ q(Q, { $height: G, $flexDirection: "row", $justifyContent: "center", $alignItems: "center", children: [
122
+ /* @__PURE__ */ h(Z, {}),
123
+ /* @__PURE__ */ h(ee, {})
127
124
  ] }) });
128
125
  });
129
126
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"trial-session-view.js","sources":["../../../src/features/trial-session/trial-session-view.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useMemo, useState, type FC } from 'react';\n\nimport FlexView from '../ui/layout/flex-view';\nimport type { ITrialCircleGameParams } from './comps/trial-circle-game/trial-circle-game-types';\nimport TrialSessionContext from './context/trial-session-context';\nimport { useButtonStateForLeftPanel } from './hooks/use-left-panel-button-state';\nimport { useSlideConfigUpdate } from './hooks/use-slide-config-update';\nimport LeftPanel from './left-panel';\nimport RightPanel from './right-panel';\nimport type {\n ITrialSessionContext,\n ITrialSessionViewProps,\n ITrialSessionFormFields,\n} from './trial-session-types';\n\nconst TrialSessionView: FC<ITrialSessionViewProps> = memo(function TrialSessionView(props) {\n const {\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 teacherClassroomId,\n questionsRatingPanel,\n studentAbsentInClass,\n openEndClassModal,\n onTrialInformationUpdate,\n onStudentTimezoneUpdate,\n handleInfoMessage,\n onRemoveOptionalSlides,\n classDuration,\n studentTimezone,\n classTimeAlertConfig,\n changeDemoLevel,\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 },\n } as ITrialCircleGameParams;\n\n if (userType === 'STUDENT') {\n data.playerDetails.grade = trialHomeData.student.grade;\n }\n\n return data;\n }, [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 { onRenderUpdateSlideConfig } = useSlideConfigUpdate({\n trialHomeData,\n milestoneConfig,\n studentTimezone,\n teacherClassroomId,\n updateSlideConfig,\n });\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 useEffect(() => {\n if (isTeacher && studentTimezone) {\n onRenderUpdateSlideConfig();\n }\n }, [isTeacher, onRenderUpdateSlideConfig, studentTimezone]);\n\n useEffect(() => {\n if (changeDemoLevel) updateSlideConfig({ confirmationModalActive: true });\n }, [changeDemoLevel, updateSlideConfig]);\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","userType","teacherPanel","studentPanel","trialGameUrl","formDataProps","height","trialHomeData","milestoneConfig","onFormDataChange","worksheet","studentId","teacherId","classStartedOn","worksheetNavigationPanel","teacherClassroomId","questionsRatingPanel","studentAbsentInClass","openEndClassModal","onTrialInformationUpdate","onStudentTimezoneUpdate","handleInfoMessage","onRemoveOptionalSlides","classDuration","studentTimezone","classTimeAlertConfig","changeDemoLevel","isTeacher","slides","formData","setFormData","useState","formDataToUse","currentSlideId","currentSlideConfig","useMemo","config","circleGames","data","updateSlideConfig","useCallback","previousProps","buttonState","updateButtonState","useButtonStateForLeftPanel","onRenderUpdateSlideConfig","useSlideConfigUpdate","contextValue","useEffect","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 { memo, useCallback, useEffect, useMemo, useState, type FC } from 'react';\n\nimport FlexView from '../ui/layout/flex-view';\nimport type { ITrialCircleGameParams } from './comps/trial-circle-game/trial-circle-game-types';\nimport TrialSessionContext from './context/trial-session-context';\nimport { useButtonStateForLeftPanel } from './hooks/use-left-panel-button-state';\nimport { useSlideConfigUpdate } from './hooks/use-slide-config-update';\nimport LeftPanel from './left-panel';\nimport RightPanel from './right-panel';\nimport type {\n ITrialSessionContext,\n ITrialSessionViewProps,\n ITrialSessionFormFields,\n} from './trial-session-types';\n\nconst TrialSessionView: FC<ITrialSessionViewProps> = memo(function TrialSessionView(props) {\n const {\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 teacherClassroomId,\n questionsRatingPanel,\n studentAbsentInClass,\n openEndClassModal,\n onTrialInformationUpdate,\n onStudentTimezoneUpdate,\n handleInfoMessage,\n onRemoveOptionalSlides,\n classDuration,\n studentTimezone,\n classTimeAlertConfig,\n changeDemoLevel,\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 },\n } as ITrialCircleGameParams;\n\n if (userType === 'STUDENT') {\n data.playerDetails.grade = trialHomeData.student.grade;\n }\n\n return data;\n }, [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 { onRenderUpdateSlideConfig } = useSlideConfigUpdate({\n studentTimezone,\n teacherClassroomId,\n updateSlideConfig,\n });\n\n const contextValue = useMemo<ITrialSessionContext>(\n () => ({\n teacherPanel,\n studentPanel,\n isTeacher,\n slideConfig: currentSlideConfig,\n milestoneConfig,\n formData: formDataToUse,\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 formDataToUse,\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 useEffect(() => {\n if (isTeacher && studentTimezone && trialHomeData && milestoneConfig) {\n onRenderUpdateSlideConfig({ trialHomeData, milestoneConfig });\n }\n }, [isTeacher, milestoneConfig, onRenderUpdateSlideConfig, studentTimezone, trialHomeData]);\n\n useEffect(() => {\n if (changeDemoLevel) updateSlideConfig({ confirmationModalActive: true });\n }, [changeDemoLevel, updateSlideConfig]);\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","userType","teacherPanel","studentPanel","trialGameUrl","formDataProps","height","trialHomeData","milestoneConfig","onFormDataChange","worksheet","studentId","teacherId","classStartedOn","worksheetNavigationPanel","teacherClassroomId","questionsRatingPanel","studentAbsentInClass","openEndClassModal","onTrialInformationUpdate","onStudentTimezoneUpdate","handleInfoMessage","onRemoveOptionalSlides","classDuration","studentTimezone","classTimeAlertConfig","changeDemoLevel","isTeacher","slides","formData","setFormData","useState","formDataToUse","currentSlideId","currentSlideConfig","useMemo","config","circleGames","data","updateSlideConfig","useCallback","previousProps","buttonState","updateButtonState","useButtonStateForLeftPanel","onRenderUpdateSlideConfig","useSlideConfigUpdate","contextValue","useEffect","jsx","TrialSessionContext","jsxs","FlexView","LeftPanel","RightPanel"],"mappings":"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"}