@cuemath/leap 3.5.52-as1 → 3.5.53-j1

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 (127) hide show
  1. package/dist/features/homework/homework-card.js +122 -121
  2. package/dist/features/homework/homework-card.js.map +1 -1
  3. package/dist/features/milestone/create/comps/add-custom-chapter/add-custom-chapter.js +66 -61
  4. package/dist/features/milestone/create/comps/add-custom-chapter/add-custom-chapter.js.map +1 -1
  5. package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js +56 -55
  6. package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js.map +1 -1
  7. package/dist/features/milestone/create/comps/add-custom-chapter/search-chapter/search-chapters.js +32 -25
  8. package/dist/features/milestone/create/comps/add-custom-chapter/search-chapter/search-chapters.js.map +1 -1
  9. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapter-item.js +16 -15
  10. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapter-item.js.map +1 -1
  11. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapters.js +17 -10
  12. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapters.js.map +1 -1
  13. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/tags-render.js +6 -6
  14. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/tags-render.js.map +1 -1
  15. package/dist/features/milestone/create/comps/body-layout/body-layout.js +30 -29
  16. package/dist/features/milestone/create/comps/body-layout/body-layout.js.map +1 -1
  17. package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js +77 -74
  18. package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js.map +1 -1
  19. package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.js +82 -79
  20. package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.js.map +1 -1
  21. package/dist/features/milestone/create/milestone-create-styled.js +8 -8
  22. package/dist/features/milestone/create/milestone-create-styled.js.map +1 -1
  23. package/dist/features/milestone/create/milestone-create.js +48 -46
  24. package/dist/features/milestone/create/milestone-create.js.map +1 -1
  25. package/dist/features/milestone/edit/goal-draft-edit-sync.js +26 -0
  26. package/dist/features/milestone/edit/goal-draft-edit-sync.js.map +1 -0
  27. package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-container.js +72 -66
  28. package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-container.js.map +1 -1
  29. package/dist/features/milestone/edit/hooks/use-milestone-edit-sync.js +82 -0
  30. package/dist/features/milestone/edit/hooks/use-milestone-edit-sync.js.map +1 -0
  31. package/dist/features/milestone/milestone-list-container/hooks/use-milestone-list-sync.js +49 -0
  32. package/dist/features/milestone/milestone-list-container/hooks/use-milestone-list-sync.js.map +1 -0
  33. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js +109 -105
  34. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js.map +1 -1
  35. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js +2 -2
  36. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js.map +1 -1
  37. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs-styled.js +21 -16
  38. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs-styled.js.map +1 -1
  39. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js +106 -98
  40. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js.map +1 -1
  41. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js +136 -117
  42. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js.map +1 -1
  43. package/dist/features/milestone/milestone-list-container/milestone-list-container.js +96 -92
  44. package/dist/features/milestone/milestone-list-container/milestone-list-container.js.map +1 -1
  45. package/dist/features/milestone/milestone-list-container/milestone-list-sync.js +25 -0
  46. package/dist/features/milestone/milestone-list-container/milestone-list-sync.js.map +1 -0
  47. package/dist/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.js +78 -81
  48. package/dist/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.js.map +1 -1
  49. package/dist/features/milestone/milestone-resources/resources-assign/comps/filter-item/filter-item.js +28 -25
  50. package/dist/features/milestone/milestone-resources/resources-assign/comps/filter-item/filter-item.js.map +1 -1
  51. package/dist/features/milestone/milestone-resources/resources-assign/comps/resource-item/resource-item.js +39 -33
  52. package/dist/features/milestone/milestone-resources/resources-assign/comps/resource-item/resource-item.js.map +1 -1
  53. package/dist/features/milestone/milestone-resources/resources-assign/hooks/use-resource-assign-sync.js +50 -0
  54. package/dist/features/milestone/milestone-resources/resources-assign/hooks/use-resource-assign-sync.js.map +1 -0
  55. package/dist/features/milestone/milestone-resources/resources-assign/resource-assign-sync.js +25 -0
  56. package/dist/features/milestone/milestone-resources/resources-assign/resource-assign-sync.js.map +1 -0
  57. package/dist/features/milestone/milestone-resources/resources-assign/resource-items/resource-items.js +43 -53
  58. package/dist/features/milestone/milestone-resources/resources-assign/resource-items/resource-items.js.map +1 -1
  59. package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js +218 -174
  60. package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js.map +1 -1
  61. package/dist/features/milestone/milestone-resources/resources-assign/store/resource-assign-store.js +198 -0
  62. package/dist/features/milestone/milestone-resources/resources-assign/store/resource-assign-store.js.map +1 -0
  63. package/dist/features/milestone/milestone-resources/resources-list/resources-list.js +69 -67
  64. package/dist/features/milestone/milestone-resources/resources-list/resources-list.js.map +1 -1
  65. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js +46 -45
  66. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js.map +1 -1
  67. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js +34 -32
  68. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js.map +1 -1
  69. package/dist/features/milestone/milestone-tests/tests-creation/hooks/use-tests-creation-sync.js +52 -0
  70. package/dist/features/milestone/milestone-tests/tests-creation/hooks/use-tests-creation-sync.js.map +1 -0
  71. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/chapter-selection/chapter-selection.js +51 -41
  72. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/chapter-selection/chapter-selection.js.map +1 -1
  73. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/difficulty-and-duration-selection.js +85 -71
  74. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/difficulty-and-duration-selection.js.map +1 -1
  75. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview-styled.js +5 -5
  76. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview-styled.js.map +1 -1
  77. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js +36 -26
  78. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js.map +1 -1
  79. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-sync.js +25 -0
  80. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-sync.js.map +1 -0
  81. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-types.js +5 -0
  82. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-types.js.map +1 -0
  83. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation.js +150 -89
  84. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation.js.map +1 -1
  85. package/dist/features/sheet-v2/resource-list/resource-list.js +26 -24
  86. package/dist/features/sheet-v2/resource-list/resource-list.js.map +1 -1
  87. package/dist/features/trial-session/comps/learning-plan/index.js +218 -91
  88. package/dist/features/trial-session/comps/learning-plan/index.js.map +1 -1
  89. package/dist/features/trial-session/comps/learning-plan/learning-plan-styled.js +7 -6
  90. package/dist/features/trial-session/comps/learning-plan/learning-plan-styled.js.map +1 -1
  91. package/dist/features/trial-session/hooks/use-learning-plan-scroll-sync.js +75 -0
  92. package/dist/features/trial-session/hooks/use-learning-plan-scroll-sync.js.map +1 -0
  93. package/dist/features/trial-session/hooks/use-trial-session-navigation.js +125 -115
  94. package/dist/features/trial-session/hooks/use-trial-session-navigation.js.map +1 -1
  95. package/dist/features/trial-session/trial-session-types.js +3 -2
  96. package/dist/features/trial-session/trial-session-types.js.map +1 -1
  97. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js +69 -54
  98. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js.map +1 -1
  99. package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
  100. package/dist/features/worksheet/worksheet/worksheet.js +44 -33
  101. package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
  102. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js +25 -22
  103. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
  104. package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js +48 -44
  105. package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js.map +1 -1
  106. package/dist/features/worksheet/worksheet-preview/worksheet-preview.js +2 -2
  107. package/dist/features/worksheet/worksheet-preview/worksheet-preview.js.map +1 -1
  108. package/dist/index.d.ts +138 -2
  109. package/dist/node_modules/decode-uri-component/index.js.map +1 -0
  110. package/dist/node_modules/query-string/base.js +1 -1
  111. package/dist/node_modules/uuid/dist/esm-browser/native.js +7 -0
  112. package/dist/node_modules/uuid/dist/esm-browser/native.js.map +1 -0
  113. package/dist/node_modules/uuid/dist/esm-browser/rng.js +3 -2
  114. package/dist/node_modules/uuid/dist/esm-browser/rng.js.map +1 -1
  115. package/dist/node_modules/uuid/dist/esm-browser/stringify.js +6 -10
  116. package/dist/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -1
  117. package/dist/node_modules/uuid/dist/esm-browser/v4.js +12 -9
  118. package/dist/node_modules/uuid/dist/esm-browser/v4.js.map +1 -1
  119. package/package.json +1 -1
  120. package/dist/features/trial-session/comps/learning-plan/use-learning-plan-scroll-sync.js +0 -37
  121. package/dist/features/trial-session/comps/learning-plan/use-learning-plan-scroll-sync.js.map +0 -1
  122. package/dist/node_modules/query-string/node_modules/decode-uri-component/index.js.map +0 -1
  123. package/dist/node_modules/uuid/dist/esm-browser/regex.js +0 -5
  124. package/dist/node_modules/uuid/dist/esm-browser/regex.js.map +0 -1
  125. package/dist/node_modules/uuid/dist/esm-browser/validate.js +0 -8
  126. package/dist/node_modules/uuid/dist/esm-browser/validate.js.map +0 -1
  127. /package/dist/node_modules/{query-string/node_modules/decode-uri-component → decode-uri-component}/index.js +0 -0
@@ -1,105 +1,232 @@
1
- import { jsx as o, Fragment as D } from "react/jsx-runtime";
2
- import N from "../../../../node_modules/lodash.throttle/index.js";
3
- import { useRef as S, useCallback as s, useMemo as O, useEffect as m } from "react";
4
- import x from "../../../chapters-v2/chapter-details/chapter-details.js";
5
- import $ from "../../../milestone/milestone-list-container/milestone-list-container.js";
6
- import { useTrialSessionContext as H } from "../../context/use-trial-session-context.js";
7
- import { isPLASource as M } from "../../helper.js";
8
- import { Container as F, Wrapper as U, ChapterWrapper as W } from "./learning-plan-styled.js";
9
- import { useLearningPlanScrollSync as j } from "./use-learning-plan-scroll-sync.js";
10
- const Q = () => {
11
- const { trialHomeData: v, studentId: l, formData: A, isTeacher: r, updateSlideConfig: c } = H(), {
12
- demo_info: { student_classroom_id: C, stream: I },
13
- intel_student: d
14
- } = v || {}, { name: g = "", chapterId: i } = A || {}, t = S(null), a = S([]), p = S(!1), R = M(d == null ? void 0 : d.source), {
15
- publishScrollEvents: f,
16
- closeChannel: T,
17
- scrollPoints: n
18
- } = j(C), E = s(() => {
19
- if (i && l) {
20
- const e = t.current;
21
- e == null || e.scrollTo({
22
- top: 0,
23
- behavior: "smooth"
1
+ import { jsx as l } from "react/jsx-runtime";
2
+ import { useRef as z, useCallback as s, useEffect as U, useMemo as B } from "react";
3
+ import F from "../../../chapters-v2/chapter-details/chapter-details.js";
4
+ import G from "../../../milestone/edit/goal-draft-edit-sync.js";
5
+ import K from "../../../milestone/milestone-list-container/milestone-list-sync.js";
6
+ import Z from "../../../milestone/milestone-resources/resources-assign/resource-assign-sync.js";
7
+ import j from "../../../milestone/milestone-tests/tests-creation/tests-creation-sync.js";
8
+ import J from "../../../worksheet/worksheet-preview/worksheet-preview.js";
9
+ import { NODE_TYPES as X } from "../../../../types/models/worksheet.js";
10
+ import { useTrialSessionContext as Y } from "../../context/use-trial-session-context.js";
11
+ import { isPLASource as q } from "../../helper.js";
12
+ import { useLearningPlanScrollSync as Q } from "../../hooks/use-learning-plan-scroll-sync.js";
13
+ import { ELearningPlanView as r } from "../../trial-session-types.js";
14
+ import { Container as ee, Wrapper as ne } from "./learning-plan-styled.js";
15
+ const pe = () => {
16
+ const { trialHomeData: O, studentId: a, formData: t, isTeacher: e, updateSlideConfig: i } = Y(), {
17
+ demo_info: { student_classroom_id: c, stream: g, region_data: x },
18
+ intel_student: T,
19
+ student: b
20
+ } = O || {}, { opportunity_country: A = "US" } = x || {}, { enrollment_type: _ } = b || {}, { name: h = "", grade: v = "" } = t || {}, R = z(null), V = q(T == null ? void 0 : T.source), m = t == null ? void 0 : t.learningPlanView, P = t == null ? void 0 : t.learningPlanChapterId, o = t == null ? void 0 : t.learningPlanActiveMilestoneId, d = e ? "TEACHER" : "STUDENT", { resetScrollPosition: E, closeScrollChannel: w } = Q({
21
+ studentClassroomId: c,
22
+ containerRef: R,
23
+ isTeacher: e
24
+ }), W = s(
25
+ (n) => {
26
+ e && i({
27
+ learningPlanView: r.VIEW_CHAPTER_DETAILS,
28
+ learningPlanChapterId: n.id
24
29
  });
25
- }
26
- }, [l, i]), _ = s(
27
- (e) => {
28
- c({
29
- chapterId: e.id
30
+ },
31
+ [e, i]
32
+ ), M = s(
33
+ (n) => {
34
+ e && i({
35
+ learningPlanView: r.ADD_RESOURCE,
36
+ learningPlanActiveMilestoneId: n
30
37
  });
31
38
  },
32
- [c]
33
- ), b = s(() => {
34
- c({
35
- chapterId: void 0
36
- });
37
- }, [c]), P = s(() => {
38
- a.current.length === 0 || p.current || (p.current = !0, f && f({
39
- eventName: "TRIAL_SESSION_GOAL_PLAN_SCROLL",
40
- eventPayload: {
41
- scrollPoints: a.current
42
- }
43
- }), a.current = [], p.current = !1);
44
- }, [f]), L = O(() => N(P, 500), [P]), h = s(() => {
45
- var u;
46
- const e = ((u = t.current) == null ? void 0 : u.scrollTop) || 0;
47
- a.current.push(e), L();
48
- }, [L]);
49
- return m(() => {
50
- E();
51
- }, [E]), m(() => {
52
- if (t.current && r) {
53
- const e = t.current;
54
- return e.addEventListener("scroll", h), () => {
55
- e && e.removeEventListener("scroll", h);
56
- };
57
- }
58
- }, [r, h]), m(() => {
59
- const e = t.current;
60
- if (n && Array.isArray(n) && !r && e) {
61
- const u = Math.floor(
62
- n.reduce((y, k) => y + k, 0) / n.length
63
- );
64
- e.scrollTo({
65
- top: u,
66
- behavior: "smooth"
39
+ [e, i]
40
+ ), N = s(
41
+ (n) => {
42
+ e && i({
43
+ learningPlanView: r.ADD_TESTS,
44
+ learningPlanActiveMilestoneId: n
45
+ });
46
+ },
47
+ [e, i]
48
+ ), k = s(
49
+ (n) => {
50
+ e && i({
51
+ learningPlanView: r.EDIT_MILESTONES,
52
+ learningPlanActiveMilestoneId: n.milestoneId
53
+ });
54
+ },
55
+ [e, i]
56
+ ), D = s(() => {
57
+ e && (i({
58
+ learningPlanView: void 0,
59
+ learningPlanChapterId: void 0,
60
+ learningPlanWorksheetData: void 0
61
+ }), E());
62
+ }, [e, i, E]), L = s(() => {
63
+ e && (i({
64
+ learningPlanView: P ? r.VIEW_CHAPTER_DETAILS : void 0,
65
+ learningPlanWorksheetData: void 0
66
+ }), E());
67
+ }, [e, i, P, E]), u = s(() => {
68
+ e && (i({
69
+ learningPlanView: void 0,
70
+ learningPlanActiveMilestoneId: void 0
71
+ }), E());
72
+ }, [e, i, E]);
73
+ U(() => () => {
74
+ w();
75
+ }, [w]);
76
+ const f = B(
77
+ () => t == null ? void 0 : t.learningPlanWorksheetData,
78
+ // eslint-disable-next-line react-hooks/exhaustive-deps
79
+ [JSON.stringify(t == null ? void 0 : t.learningPlanWorksheetData)]
80
+ ), I = s((n) => {
81
+ alert(`Error: ${n || "Unknown error"}`);
82
+ }, []), p = s(
83
+ (n) => {
84
+ var S;
85
+ if (!e) return;
86
+ const C = n.node_type === X.PUZZLE_CARD ? "puzzle" : "test";
87
+ i({
88
+ learningPlanView: r.VIEW_WORKSHEET,
89
+ learningPlanWorksheetData: {
90
+ itemRefs: ((S = n.items) == null ? void 0 : S.map((y) => y.ref)) ?? [],
91
+ activityReference: n.learnosity_activity_ref ?? C,
92
+ nodeType: n.node_type,
93
+ worksheetName: n.title,
94
+ activityType: n.activity_type
95
+ }
67
96
  });
97
+ },
98
+ [e, i]
99
+ ), H = s(() => {
100
+ if (m === r.VIEW_WORKSHEET && f) {
101
+ const { itemRefs: n, activityReference: $, nodeType: C, worksheetName: S, activityType: y } = f;
102
+ return /* @__PURE__ */ l(
103
+ J,
104
+ {
105
+ activityReference: $,
106
+ mode: "preview",
107
+ nodeType: C,
108
+ activityType: y,
109
+ userType: d,
110
+ studentId: a,
111
+ worksheetName: S,
112
+ onBackIconClick: L,
113
+ items: n,
114
+ behaviorOverride: { navigationMode: "OPEN" },
115
+ layoutOverride: { containerWidth: "100%" }
116
+ }
117
+ );
68
118
  }
69
- }, [n, r]), m(() => () => {
70
- T();
71
- }, [T]), /* @__PURE__ */ o(F, { ref: t, $isScrollable: r, children: /* @__PURE__ */ o(
72
- U,
119
+ return m === r.VIEW_CHAPTER_DETAILS && P ? /* @__PURE__ */ l(
120
+ F,
121
+ {
122
+ userChapterId: P,
123
+ studentId: a,
124
+ userType: d,
125
+ onExit: D,
126
+ onNodeView: p
127
+ }
128
+ ) : m === r.ADD_RESOURCE && o ? /* @__PURE__ */ l(
129
+ Z,
130
+ {
131
+ channelId: `a-r-s-${c}-${o}`,
132
+ stream: g,
133
+ studentId: a,
134
+ userMilestoneId: o,
135
+ userType: d,
136
+ onResourceAssign: u,
137
+ onExitResourceAssign: u,
138
+ onViewResource: () => alert("View Resource"),
139
+ onError: I
140
+ }
141
+ ) : m === r.ADD_TESTS && o ? /* @__PURE__ */ l(
142
+ j,
143
+ {
144
+ channelId: `a-t-s-${c}-${o}`,
145
+ courseStream: g,
146
+ milestoneId: o,
147
+ studentId: a,
148
+ testNumber: 1,
149
+ userType: d,
150
+ onTestAssign: u,
151
+ onExit: u,
152
+ onError: I,
153
+ isTrialSession: !0
154
+ }
155
+ ) : m === r.EDIT_MILESTONES && o ? /* @__PURE__ */ l(
156
+ G,
157
+ {
158
+ channelId: `e-m-s-${c}-${o}`,
159
+ studentId: a,
160
+ height: "100%",
161
+ grade: v || "",
162
+ currentCountryCode: A,
163
+ studentName: h,
164
+ onExit: u,
165
+ onPreSubmit: u,
166
+ userType: d,
167
+ milestoneId: o,
168
+ isGoalCreation: !1,
169
+ courseStream: g,
170
+ classRatio: 1,
171
+ enrollmentType: _,
172
+ isTrialSession: !0
173
+ }
174
+ ) : /* @__PURE__ */ l(
175
+ K,
176
+ {
177
+ channelId: `milestone-list-sync-${c}`,
178
+ userType: d,
179
+ studentName: h,
180
+ studentId: a,
181
+ studentClassroomId: c,
182
+ milestoneType: V ? "ACTIVE" : "DRAFT",
183
+ onChapterClick: W,
184
+ onAssignResources: M,
185
+ onCreateMilestoneTest: N,
186
+ onEdit: k,
187
+ courseStream: g,
188
+ isTrialSession: !0,
189
+ onNodeView: p,
190
+ onTestPreview: p
191
+ }
192
+ );
193
+ }, [
194
+ m,
195
+ f,
196
+ P,
197
+ o,
198
+ c,
199
+ d,
200
+ h,
201
+ a,
202
+ V,
203
+ g,
204
+ v,
205
+ A,
206
+ _,
207
+ W,
208
+ M,
209
+ N,
210
+ k,
211
+ p,
212
+ L,
213
+ D,
214
+ u,
215
+ I
216
+ ]);
217
+ return /* @__PURE__ */ l(ee, { ref: R, $isScrollable: e, children: /* @__PURE__ */ l(
218
+ ne,
73
219
  {
74
- $clickable: r,
220
+ $clickable: e,
75
221
  $gutterX: 2,
76
- $isScrollable: r,
222
+ $isScrollable: e,
77
223
  id: "milestone-list-element-container",
78
- children: i ? /* @__PURE__ */ o(D, { children: /* @__PURE__ */ o(W, { children: /* @__PURE__ */ o(
79
- x,
80
- {
81
- userChapterId: i,
82
- studentId: l,
83
- userType: r ? "TEACHER" : "STUDENT",
84
- onExit: b
85
- }
86
- ) }) }) : /* @__PURE__ */ o(
87
- $,
88
- {
89
- userType: r ? "TEACHER" : "STUDENT",
90
- studentName: g,
91
- studentId: l,
92
- studentClassroomId: C,
93
- milestoneType: R ? "ACTIVE" : "DRAFT",
94
- onChapterClick: _,
95
- courseStream: I,
96
- isTrialSession: !0
97
- }
98
- )
224
+ $height: "100%",
225
+ children: H()
99
226
  }
100
227
  ) });
101
228
  };
102
229
  export {
103
- Q as default
230
+ pe as default
104
231
  };
105
232
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/features/trial-session/comps/learning-plan/index.tsx"],"sourcesContent":["import throttle from 'lodash.throttle';\nimport { useCallback, useEffect, useMemo, useRef, type FC } from 'react';\n\nimport ChapterDetails from '../../../chapters-v2/chapter-details/chapter-details';\nimport type { IChapterDataProps } from '../../../chapters/chapter/chapter-types';\nimport MilestoneList from '../../../milestone/milestone-list-container/milestone-list-container';\nimport { useTrialSessionContext } from '../../context/use-trial-session-context';\nimport { isPLASource } from '../../helper';\nimport * as Styled from './learning-plan-styled';\nimport { useLearningPlanScrollSync } from './use-learning-plan-scroll-sync';\n\nconst LearningPlan: FC = () => {\n const { trialHomeData, studentId, formData, isTeacher, updateSlideConfig } =\n useTrialSessionContext();\n const {\n demo_info: { student_classroom_id: studentClassroomId, stream },\n intel_student: intelStudent,\n } = trialHomeData || {};\n const { name = '', chapterId } = formData || {};\n\n const containerRef = useRef<HTMLDivElement>(null);\n const scrollPointsRef = useRef<number[]>([]);\n const isSendingScrollPointsRef = useRef(false);\n const isPLA = isPLASource(intelStudent?.source);\n\n const {\n publishScrollEvents,\n closeChannel,\n scrollPoints: receivedScrollPoints,\n } = useLearningPlanScrollSync(studentClassroomId);\n\n const fetchChapter = useCallback(() => {\n if (chapterId && studentId) {\n const scrollElement = containerRef.current;\n\n scrollElement?.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n }\n }, [studentId, chapterId]);\n\n const handleOnChapterClick = useCallback(\n (chapter: IChapterDataProps) => {\n updateSlideConfig({\n chapterId: chapter.id,\n });\n },\n [updateSlideConfig],\n );\n\n const handleOnBackIconClick = useCallback(() => {\n updateSlideConfig({\n chapterId: undefined,\n });\n }, [updateSlideConfig]);\n\n const sendScrollPoints = useCallback(() => {\n if (scrollPointsRef.current.length === 0 || isSendingScrollPointsRef.current) return;\n\n isSendingScrollPointsRef.current = true;\n\n if (publishScrollEvents) {\n publishScrollEvents({\n eventName: 'TRIAL_SESSION_GOAL_PLAN_SCROLL',\n eventPayload: {\n scrollPoints: scrollPointsRef.current,\n },\n });\n }\n\n scrollPointsRef.current = [];\n isSendingScrollPointsRef.current = false;\n }, [publishScrollEvents]);\n\n const throttleSend = useMemo(() => throttle(sendScrollPoints, 500), [sendScrollPoints]);\n\n const handleScroll = useCallback(() => {\n const scrollPoint = containerRef.current?.scrollTop || 0;\n\n scrollPointsRef.current.push(scrollPoint);\n\n throttleSend();\n }, [throttleSend]);\n\n useEffect(() => {\n fetchChapter();\n }, [fetchChapter]);\n\n useEffect(() => {\n if (containerRef.current) {\n if (isTeacher) {\n const scrollElement = containerRef.current;\n\n scrollElement.addEventListener('scroll', handleScroll);\n\n return () => {\n if (scrollElement) {\n scrollElement.removeEventListener('scroll', handleScroll);\n }\n };\n }\n }\n }, [isTeacher, handleScroll]);\n\n useEffect(() => {\n const scrollElement = containerRef.current;\n\n if (\n receivedScrollPoints &&\n Array.isArray(receivedScrollPoints) &&\n !isTeacher &&\n scrollElement\n ) {\n const averageScroll = Math.floor(\n receivedScrollPoints.reduce((a, b) => a + b, 0) / receivedScrollPoints.length,\n );\n\n scrollElement.scrollTo({\n top: averageScroll,\n behavior: 'smooth',\n });\n }\n }, [receivedScrollPoints, isTeacher]);\n\n useEffect(() => {\n return () => {\n closeChannel();\n };\n }, [closeChannel]);\n\n return (\n <Styled.Container ref={containerRef} $isScrollable={isTeacher}>\n <Styled.Wrapper\n $clickable={isTeacher}\n $gutterX={2}\n $isScrollable={isTeacher}\n id=\"milestone-list-element-container\"\n >\n {chapterId ? (\n <>\n <Styled.ChapterWrapper>\n <ChapterDetails\n userChapterId={chapterId}\n studentId={studentId}\n userType={isTeacher ? 'TEACHER' : 'STUDENT'}\n onExit={handleOnBackIconClick}\n />\n </Styled.ChapterWrapper>\n </>\n ) : (\n <MilestoneList\n userType={isTeacher ? 'TEACHER' : 'STUDENT'}\n studentName={name}\n studentId={studentId}\n studentClassroomId={studentClassroomId}\n milestoneType={isPLA ? 'ACTIVE' : 'DRAFT'}\n onChapterClick={handleOnChapterClick}\n courseStream={stream}\n isTrialSession\n />\n )}\n </Styled.Wrapper>\n </Styled.Container>\n );\n};\n\nexport default LearningPlan;\n"],"names":["LearningPlan","trialHomeData","studentId","formData","isTeacher","updateSlideConfig","useTrialSessionContext","studentClassroomId","stream","intelStudent","name","chapterId","containerRef","useRef","scrollPointsRef","isSendingScrollPointsRef","isPLA","isPLASource","publishScrollEvents","closeChannel","receivedScrollPoints","useLearningPlanScrollSync","fetchChapter","useCallback","scrollElement","handleOnChapterClick","chapter","handleOnBackIconClick","sendScrollPoints","throttleSend","useMemo","throttle","handleScroll","scrollPoint","_a","useEffect","averageScroll","a","b","Styled.Container","jsx","Styled.Wrapper","Fragment","Styled.ChapterWrapper","ChapterDetails","MilestoneList"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/features/trial-session/comps/learning-plan/index.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, type FC } from 'react';\n\nimport type { IChapterDataProps } from '../../../chapters/chapter/chapter-types';\nimport ChapterDetails from '../../../chapters-v2/chapter-details/chapter-details';\nimport type { INodeDataProps } from '../../../chapters-v2/comps/node-card/node-card-types';\nimport GoalDraftEditSync from '../../../milestone/edit/goal-draft-edit-sync';\nimport type { IMilestoneEditProps } from '../../../milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget-types';\nimport MilestoneListSync from '../../../milestone/milestone-list-container/milestone-list-sync';\nimport EPResourceAssignSync from '../../../milestone/milestone-resources/resources-assign/resource-assign-sync';\nimport TestsCreationSync from '../../../milestone/milestone-tests/tests-creation/tests-creation-sync';\nimport PreviewWorksheet from '../../../worksheet/worksheet-preview/worksheet-preview';\nimport { NODE_TYPES, type TNodeTypes } from '../../../../types/models/worksheet';\nimport { useTrialSessionContext } from '../../context/use-trial-session-context';\nimport { isPLASource } from '../../helper';\nimport { useLearningPlanScrollSync } from '../../hooks/use-learning-plan-scroll-sync';\nimport { ELearningPlanView } from '../../trial-session-types';\nimport * as Styled from './learning-plan-styled';\n\nconst LearningPlan: FC = () => {\n const { trialHomeData, studentId, formData, isTeacher, updateSlideConfig } =\n useTrialSessionContext();\n const {\n demo_info: { student_classroom_id: studentClassroomId, stream, region_data: regionData },\n intel_student: intelStudent,\n student,\n } = trialHomeData || {};\n const { opportunity_country: countryCode = 'US' } = regionData || {};\n const { enrollment_type: enrollmentType } = student || {};\n const { name = '', grade = '' } = formData || {};\n const containerRef = useRef<HTMLDivElement>(null);\n const isPLA = isPLASource(intelStudent?.source);\n const learningPlanView = formData?.learningPlanView;\n const learningPlanChapterId = formData?.learningPlanChapterId;\n const learningPlanActiveMilestoneId = formData?.learningPlanActiveMilestoneId;\n const userType = isTeacher ? 'TEACHER' : 'STUDENT';\n const { resetScrollPosition, closeScrollChannel } = useLearningPlanScrollSync({\n studentClassroomId,\n containerRef,\n isTeacher,\n });\n\n const handleChapterClick = useCallback(\n (chapter: IChapterDataProps) => {\n if (!isTeacher) return;\n\n updateSlideConfig({\n learningPlanView: ELearningPlanView.VIEW_CHAPTER_DETAILS,\n learningPlanChapterId: chapter.id,\n });\n },\n [isTeacher, updateSlideConfig],\n );\n\n const handleAssignResources = useCallback(\n (userMilestoneId: string) => {\n if (!isTeacher) return;\n\n updateSlideConfig({\n learningPlanView: ELearningPlanView.ADD_RESOURCE,\n learningPlanActiveMilestoneId: userMilestoneId,\n });\n },\n [isTeacher, updateSlideConfig],\n );\n\n const handleCreateTest = useCallback(\n (userMilestoneId: string) => {\n if (!isTeacher) return;\n\n updateSlideConfig({\n learningPlanView: ELearningPlanView.ADD_TESTS,\n learningPlanActiveMilestoneId: userMilestoneId,\n });\n },\n [isTeacher, updateSlideConfig],\n );\n\n const handleEditMilestone = useCallback(\n (editProps: IMilestoneEditProps) => {\n if (!isTeacher) return;\n\n updateSlideConfig({\n learningPlanView: ELearningPlanView.EDIT_MILESTONES,\n learningPlanActiveMilestoneId: editProps.milestoneId,\n });\n },\n [isTeacher, updateSlideConfig],\n );\n\n const handleBackToList = useCallback(() => {\n if (!isTeacher) return;\n\n updateSlideConfig({\n learningPlanView: undefined,\n learningPlanChapterId: undefined,\n learningPlanWorksheetData: undefined,\n });\n resetScrollPosition();\n }, [isTeacher, updateSlideConfig, resetScrollPosition]);\n\n const handleExitWorksheet = useCallback(() => {\n if (!isTeacher) return;\n\n updateSlideConfig({\n learningPlanView: learningPlanChapterId ? ELearningPlanView.VIEW_CHAPTER_DETAILS : undefined,\n learningPlanWorksheetData: undefined,\n });\n resetScrollPosition();\n }, [isTeacher, updateSlideConfig, learningPlanChapterId, resetScrollPosition]);\n\n const handleExitForm = useCallback(() => {\n if (!isTeacher) return;\n\n updateSlideConfig({\n learningPlanView: undefined,\n learningPlanActiveMilestoneId: undefined,\n });\n resetScrollPosition();\n }, [isTeacher, updateSlideConfig, resetScrollPosition]);\n\n useEffect(() => {\n return () => {\n closeScrollChannel();\n };\n }, [closeScrollChannel]);\n\n const syncedWorksheetData = useMemo(\n () => formData?.learningPlanWorksheetData,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(formData?.learningPlanWorksheetData)],\n );\n\n const handleError = useCallback((errorMessage?: string) => {\n alert(`Error: ${errorMessage || 'Unknown error'}`);\n }, []);\n\n const handleNodeView = useCallback(\n (worksheetData: INodeDataProps) => {\n if (!isTeacher) return;\n\n const isPuzzleSheet = worksheetData.node_type === NODE_TYPES.PUZZLE_CARD;\n const defaultActivityRef = isPuzzleSheet ? 'puzzle' : 'test';\n\n updateSlideConfig({\n learningPlanView: ELearningPlanView.VIEW_WORKSHEET,\n learningPlanWorksheetData: {\n itemRefs: worksheetData.items?.map(item => item.ref) ?? [],\n activityReference: worksheetData.learnosity_activity_ref ?? defaultActivityRef,\n nodeType: worksheetData.node_type,\n worksheetName: worksheetData.title,\n activityType: worksheetData.activity_type,\n },\n });\n },\n [isTeacher, updateSlideConfig],\n );\n\n const renderContent = useCallback(() => {\n if (learningPlanView === ELearningPlanView.VIEW_WORKSHEET && syncedWorksheetData) {\n const { itemRefs, activityReference, nodeType, worksheetName, activityType } =\n syncedWorksheetData;\n\n return (\n <PreviewWorksheet\n activityReference={activityReference!}\n mode=\"preview\"\n nodeType={nodeType as TNodeTypes}\n activityType={activityType}\n userType={userType}\n studentId={studentId}\n worksheetName={worksheetName}\n onBackIconClick={handleExitWorksheet}\n items={itemRefs}\n behaviorOverride={{ navigationMode: 'OPEN' }}\n layoutOverride={{ containerWidth: '100%' }}\n />\n );\n }\n\n if (learningPlanView === ELearningPlanView.VIEW_CHAPTER_DETAILS && learningPlanChapterId) {\n return (\n <ChapterDetails\n userChapterId={learningPlanChapterId}\n studentId={studentId}\n userType={userType}\n onExit={handleBackToList}\n onNodeView={handleNodeView}\n />\n );\n }\n\n if (learningPlanView === ELearningPlanView.ADD_RESOURCE && learningPlanActiveMilestoneId) {\n return (\n <EPResourceAssignSync\n channelId={`a-r-s-${studentClassroomId}-${learningPlanActiveMilestoneId}`}\n stream={stream}\n studentId={studentId}\n userMilestoneId={learningPlanActiveMilestoneId}\n userType={userType}\n onResourceAssign={handleExitForm}\n onExitResourceAssign={handleExitForm}\n onViewResource={() => alert('View Resource')}\n onError={handleError}\n />\n );\n }\n\n if (learningPlanView === ELearningPlanView.ADD_TESTS && learningPlanActiveMilestoneId) {\n return (\n <TestsCreationSync\n channelId={`a-t-s-${studentClassroomId}-${learningPlanActiveMilestoneId}`}\n courseStream={stream}\n milestoneId={learningPlanActiveMilestoneId}\n studentId={studentId}\n testNumber={1}\n userType={userType}\n onTestAssign={handleExitForm}\n onExit={handleExitForm}\n onError={handleError}\n isTrialSession\n />\n );\n }\n\n if (learningPlanView === ELearningPlanView.EDIT_MILESTONES && learningPlanActiveMilestoneId) {\n return (\n <GoalDraftEditSync\n channelId={`e-m-s-${studentClassroomId}-${learningPlanActiveMilestoneId}`}\n studentId={studentId}\n height=\"100%\"\n grade={grade || ''}\n currentCountryCode={countryCode}\n studentName={name}\n onExit={handleExitForm}\n onPreSubmit={handleExitForm}\n userType={userType}\n milestoneId={learningPlanActiveMilestoneId}\n isGoalCreation={false}\n courseStream={stream}\n classRatio={1}\n enrollmentType={enrollmentType}\n isTrialSession\n />\n );\n }\n\n return (\n <MilestoneListSync\n channelId={`milestone-list-sync-${studentClassroomId}`}\n userType={userType}\n studentName={name}\n studentId={studentId}\n studentClassroomId={studentClassroomId}\n milestoneType={isPLA ? 'ACTIVE' : 'DRAFT'}\n onChapterClick={handleChapterClick}\n onAssignResources={handleAssignResources}\n onCreateMilestoneTest={handleCreateTest}\n onEdit={handleEditMilestone}\n courseStream={stream}\n isTrialSession\n onNodeView={handleNodeView}\n onTestPreview={handleNodeView}\n />\n );\n }, [\n learningPlanView,\n syncedWorksheetData,\n learningPlanChapterId,\n learningPlanActiveMilestoneId,\n studentClassroomId,\n userType,\n name,\n studentId,\n isPLA,\n stream,\n grade,\n countryCode,\n enrollmentType,\n handleChapterClick,\n handleAssignResources,\n handleCreateTest,\n handleEditMilestone,\n handleNodeView,\n handleExitWorksheet,\n handleBackToList,\n handleExitForm,\n handleError,\n ]);\n\n return (\n <Styled.Container ref={containerRef} $isScrollable={isTeacher}>\n <Styled.Wrapper\n $clickable={isTeacher}\n $gutterX={2}\n $isScrollable={isTeacher}\n id=\"milestone-list-element-container\"\n $height=\"100%\"\n >\n {renderContent()}\n </Styled.Wrapper>\n </Styled.Container>\n );\n};\n\nexport default LearningPlan;\n"],"names":["LearningPlan","trialHomeData","studentId","formData","isTeacher","updateSlideConfig","useTrialSessionContext","studentClassroomId","stream","regionData","intelStudent","student","countryCode","enrollmentType","name","grade","containerRef","useRef","isPLA","isPLASource","learningPlanView","learningPlanChapterId","learningPlanActiveMilestoneId","userType","resetScrollPosition","closeScrollChannel","useLearningPlanScrollSync","handleChapterClick","useCallback","chapter","ELearningPlanView","handleAssignResources","userMilestoneId","handleCreateTest","handleEditMilestone","editProps","handleBackToList","handleExitWorksheet","handleExitForm","useEffect","syncedWorksheetData","useMemo","handleError","errorMessage","handleNodeView","worksheetData","defaultActivityRef","NODE_TYPES","_a","item","renderContent","itemRefs","activityReference","nodeType","worksheetName","activityType","jsx","PreviewWorksheet","ChapterDetails","EPResourceAssignSync","TestsCreationSync","GoalDraftEditSync","MilestoneListSync","Styled.Container","Styled.Wrapper"],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  import t from "styled-components";
2
- import p from "../../../../assets/line-icons/icons/back2.js";
2
+ import i from "../../../../assets/line-icons/icons/back2.js";
3
3
  import r from "../../../ui/layout/flex-view.js";
4
- const l = t.div(({ $isScrollable: o }) => `
4
+ const s = t.div(({ $isScrollable: o }) => `
5
5
  overflow-y: auto;
6
6
  pointer-events: ${o ? "auto" : "none"};
7
+ height: 100%;
8
+ overflow-x: hidden;
7
9
  `), u = t(r)(({ $clickable: o, $isScrollable: e }) => `
8
10
  & > * {
9
11
  pointer-events: ${e ? "auto" : "none"};
@@ -22,14 +24,14 @@ t(r)`
22
24
  position: relative;
23
25
  overflow: auto;
24
26
  `;
25
- const c = t(r)`
27
+ t(r)`
26
28
  & > * {
27
29
  pointer-events: none;
28
30
  }
29
31
 
30
32
  cursor: not-allowed;
31
33
  `;
32
- t(p)(({ theme: o, $clickable: e }) => {
34
+ t(i)(({ theme: o, $clickable: e }) => {
33
35
  const { gutter: n } = o.layout;
34
36
  return `
35
37
  position: sticky;
@@ -41,8 +43,7 @@ t(p)(({ theme: o, $clickable: e }) => {
41
43
  `;
42
44
  });
43
45
  export {
44
- c as ChapterWrapper,
45
- l as Container,
46
+ s as Container,
46
47
  u as Wrapper
47
48
  };
48
49
  //# sourceMappingURL=learning-plan-styled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"learning-plan-styled.js","sources":["../../../../../src/features/trial-session/comps/learning-plan/learning-plan-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport Back2Icon from '../../../../assets/line-icons/icons/back2';\nimport FlexView from '../../../ui/layout/flex-view';\n\ninterface IStyledContainer {\n $isScrollable?: boolean;\n}\n\nconst Container = styled.div<IStyledContainer>(({ $isScrollable }) => {\n return `\n overflow-y: auto;\n pointer-events: ${$isScrollable ? 'auto' : 'none'};\n `;\n});\n\ninterface IWrapper {\n $clickable: boolean;\n $isScrollable?: boolean;\n}\n\nconst Wrapper = styled(FlexView)<IWrapper>(({ $clickable, $isScrollable }) => {\n return `\n & > * {\n pointer-events: ${$isScrollable ? 'auto' : 'none'};\n }\n \n cursor: not-allowed;\n\n ${\n $clickable &&\n `\n & .goal-widget-chapter-item {\n pointer-events: auto;\n }\n `\n }\n\n `;\n});\n\nconst ChapterContainer = styled(FlexView)`\n position: relative;\n overflow: auto;\n`;\n\nconst ChapterWrapper = styled(FlexView)`\n & > * {\n pointer-events: none;\n }\n\n cursor: not-allowed;\n`;\n\nconst BackIcon = styled(Back2Icon)<IWrapper>(({ theme, $clickable }) => {\n const { gutter } = theme.layout;\n\n return `\n position: sticky;\n top: 16px;\n left: 24px;\n width: ${gutter * 2.5}px;\n height: ${gutter * 2.5}px;\n cursor: ${$clickable ? 'pointer' : 'not-allowed'};\n `;\n});\n\nexport { Container, Wrapper, BackIcon, ChapterContainer, ChapterWrapper };\n"],"names":["Container","styled","$isScrollable","Wrapper","FlexView","$clickable","ChapterWrapper","Back2Icon","theme","gutter"],"mappings":";;;AASA,MAAMA,IAAYC,EAAO,IAAsB,CAAC,EAAE,eAAAC,QACzC;AAAA;AAAA,sBAEaA,IAAgB,SAAS,MAAM;AAAA,GAEpD,GAOKC,IAAUF,EAAOG,CAAQ,EAAY,CAAC,EAAE,YAAAC,GAAY,eAAAH,QACjD;AAAA;AAAA,wBAEeA,IAAgB,SAAS,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,MAMjDG,KACA;AAAA;AAAA;AAAA;AAAA,KAKF;AAAA;AAAA,GAGH;AAEwBJ,EAAOG,CAAQ;AAAA;AAAA;AAAA;AAKlC,MAAAE,IAAiBL,EAAOG,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQrBH,EAAOM,CAAS,EAAY,CAAC,EAAE,OAAAC,GAAO,YAAAH,QAAiB;AAChE,QAAA,EAAE,QAAAI,EAAO,IAAID,EAAM;AAElB,SAAA;AAAA;AAAA;AAAA;AAAA,aAIIC,IAAS,GAAG;AAAA,cACXA,IAAS,GAAG;AAAA,cACZJ,IAAa,YAAY,aAAa;AAAA;AAEpD,CAAC;"}
1
+ {"version":3,"file":"learning-plan-styled.js","sources":["../../../../../src/features/trial-session/comps/learning-plan/learning-plan-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport Back2Icon from '../../../../assets/line-icons/icons/back2';\nimport FlexView from '../../../ui/layout/flex-view';\n\ninterface IStyledContainer {\n $isScrollable?: boolean;\n}\n\nconst Container = styled.div<IStyledContainer>(({ $isScrollable }) => {\n return `\n overflow-y: auto;\n pointer-events: ${$isScrollable ? 'auto' : 'none'};\n height: 100%;\n overflow-x: hidden;\n `;\n});\n\ninterface IWrapper {\n $clickable: boolean;\n $isScrollable?: boolean;\n}\n\nconst Wrapper = styled(FlexView)<IWrapper>(({ $clickable, $isScrollable }) => {\n return `\n & > * {\n pointer-events: ${$isScrollable ? 'auto' : 'none'};\n }\n \n cursor: not-allowed;\n\n ${\n $clickable &&\n `\n & .goal-widget-chapter-item {\n pointer-events: auto;\n }\n `\n }\n\n `;\n});\n\nconst ChapterContainer = styled(FlexView)`\n position: relative;\n overflow: auto;\n`;\n\nconst ChapterWrapper = styled(FlexView)`\n & > * {\n pointer-events: none;\n }\n\n cursor: not-allowed;\n`;\n\nconst BackIcon = styled(Back2Icon)<IWrapper>(({ theme, $clickable }) => {\n const { gutter } = theme.layout;\n\n return `\n position: sticky;\n top: 16px;\n left: 24px;\n width: ${gutter * 2.5}px;\n height: ${gutter * 2.5}px;\n cursor: ${$clickable ? 'pointer' : 'not-allowed'};\n `;\n});\n\nexport { Container, Wrapper, BackIcon, ChapterContainer, ChapterWrapper };\n"],"names":["Container","styled","$isScrollable","Wrapper","FlexView","$clickable","Back2Icon","theme","gutter"],"mappings":";;;AASA,MAAMA,IAAYC,EAAO,IAAsB,CAAC,EAAE,eAAAC,QACzC;AAAA;AAAA,sBAEaA,IAAgB,SAAS,MAAM;AAAA;AAAA;AAAA,GAIpD,GAOKC,IAAUF,EAAOG,CAAQ,EAAY,CAAC,EAAE,YAAAC,GAAY,eAAAH,QACjD;AAAA;AAAA,wBAEeA,IAAgB,SAAS,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,MAMjDG,KACA;AAAA;AAAA;AAAA;AAAA,KAKF;AAAA;AAAA,GAGH;AAEwBJ,EAAOG,CAAQ;AAAA;AAAA;AAAA;AAKjBH,EAAOG,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQrBH,EAAOK,CAAS,EAAY,CAAC,EAAE,OAAAC,GAAO,YAAAF,QAAiB;AAChE,QAAA,EAAE,QAAAG,EAAO,IAAID,EAAM;AAElB,SAAA;AAAA;AAAA;AAAA;AAAA,aAIIC,IAAS,GAAG;AAAA,cACXA,IAAS,GAAG;AAAA,cACZH,IAAa,YAAY,aAAa;AAAA;AAEpD,CAAC;"}
@@ -0,0 +1,75 @@
1
+ import { useMemo as b, useCallback as m, useRef as C, useEffect as a } from "react";
2
+ import E from "../../../node_modules/lodash.throttle/index.js";
3
+ import { useMessageBrokerChannel as H } from "@cuemath/cue-message-broker";
4
+ const k = ({
5
+ studentClassroomId: h,
6
+ containerRef: o,
7
+ isTeacher: s,
8
+ onScroll: c
9
+ }) => {
10
+ const T = `trial-session-goal-plan-${h}`, v = b(
11
+ () => ({
12
+ channelId: T,
13
+ ttl: 1
14
+ }),
15
+ [T]
16
+ ), { channelStatus: f, channel: e, channelMetadata: t, setChannelMetadata: i } = H({
17
+ channelOptions: v,
18
+ metadataRequired: !0,
19
+ enabled: h !== void 0
20
+ }), u = m(
21
+ (r) => {
22
+ i && i({ scrollTop: r });
23
+ },
24
+ [i]
25
+ ), d = m(() => {
26
+ o.current && o.current.scrollTo({ top: 0, behavior: "auto" });
27
+ }, [o]), g = m(() => {
28
+ e && (e.removeChannelMetadata(), setTimeout(() => {
29
+ e.destroyChannel();
30
+ }, 500));
31
+ }, [e]), l = C(null);
32
+ return a(() => {
33
+ if (!o.current || !s) return;
34
+ const r = o.current, n = () => {
35
+ const p = r.scrollTop;
36
+ u(p), c == null || c(p);
37
+ };
38
+ return l.current = E(n, 500, {
39
+ leading: !0,
40
+ trailing: !0
41
+ }), r.addEventListener("scroll", l.current), () => {
42
+ l.current && (r.removeEventListener("scroll", l.current), l.current.cancel());
43
+ };
44
+ }, [o, s, u, c]), a(() => {
45
+ if (s) return;
46
+ const r = o.current, n = t == null ? void 0 : t.scrollTop;
47
+ if (n === void 0 || !r)
48
+ return;
49
+ if (r.scrollHeight > r.clientHeight) {
50
+ r.scrollTo({
51
+ top: n,
52
+ behavior: "auto"
53
+ });
54
+ return;
55
+ }
56
+ const S = setTimeout(() => {
57
+ r.scrollHeight > r.clientHeight && r.scrollTo({
58
+ top: n,
59
+ behavior: "auto"
60
+ });
61
+ }, 500);
62
+ return () => clearTimeout(S);
63
+ }, [t == null ? void 0 : t.scrollTop, o, s]), a(() => {
64
+ !f && e && e.init();
65
+ }, [e, f]), {
66
+ syncScrollPosition: u,
67
+ resetScrollPosition: d,
68
+ receivedScrollTop: t == null ? void 0 : t.scrollTop,
69
+ closeScrollChannel: g
70
+ };
71
+ };
72
+ export {
73
+ k as useLearningPlanScrollSync
74
+ };
75
+ //# sourceMappingURL=use-learning-plan-scroll-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-learning-plan-scroll-sync.js","sources":["../../../../src/features/trial-session/hooks/use-learning-plan-scroll-sync.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, type RefObject } from 'react';\nimport throttle from 'lodash.throttle';\n\nimport { useMessageBrokerChannel } from '@cuemath/cue-message-broker';\n\ninterface ILearningPlanScrollSyncState {\n scrollTop?: number;\n}\n\ninterface IUseLearningPlanScrollSync {\n (options: {\n studentClassroomId?: string;\n containerRef: RefObject<HTMLElement | null>;\n isTeacher: boolean;\n onScroll?: (scrollTop: number) => void;\n }): {\n syncScrollPosition: (scrollTop: number) => void;\n resetScrollPosition: () => void;\n receivedScrollTop: number | undefined;\n closeScrollChannel: () => void;\n };\n}\n\nconst useLearningPlanScrollSync: IUseLearningPlanScrollSync = ({\n studentClassroomId,\n containerRef,\n isTeacher,\n onScroll,\n}) => {\n const channelId = `trial-session-goal-plan-${studentClassroomId}`;\n\n const channelOptions = useMemo(\n () => ({\n channelId,\n ttl: 1,\n }),\n [channelId],\n );\n\n const { channelStatus, channel, channelMetadata, setChannelMetadata } = useMessageBrokerChannel<\n never,\n ILearningPlanScrollSyncState\n >({\n channelOptions,\n metadataRequired: true,\n enabled: studentClassroomId !== undefined,\n });\n\n const syncScrollPosition = useCallback(\n (scrollTop: number) => {\n if (setChannelMetadata) {\n setChannelMetadata({ scrollTop });\n }\n },\n [setChannelMetadata],\n );\n\n const resetScrollPosition = useCallback(() => {\n if (containerRef.current) {\n containerRef.current.scrollTo({ top: 0, behavior: 'auto' });\n }\n }, [containerRef]);\n\n const closeScrollChannel = useCallback(() => {\n if (channel) {\n channel.removeChannelMetadata();\n setTimeout(() => {\n channel.destroyChannel();\n }, 500);\n }\n }, [channel]);\n\n // Teacher: Publish scroll position\n const throttledScrollHandlerRef = useRef<ReturnType<typeof throttle> | null>(null);\n\n useEffect(() => {\n if (!containerRef.current || !isTeacher) return;\n\n const scrollElement = containerRef.current;\n\n const handleScroll = () => {\n const scrollTop = scrollElement.scrollTop;\n\n syncScrollPosition(scrollTop);\n onScroll?.(scrollTop);\n };\n\n // Create throttled handler with 100ms delay\n throttledScrollHandlerRef.current = throttle(handleScroll, 500, {\n leading: true,\n trailing: true,\n });\n\n scrollElement.addEventListener('scroll', throttledScrollHandlerRef.current);\n\n return () => {\n if (throttledScrollHandlerRef.current) {\n scrollElement.removeEventListener('scroll', throttledScrollHandlerRef.current);\n throttledScrollHandlerRef.current.cancel();\n }\n };\n }, [containerRef, isTeacher, syncScrollPosition, onScroll]);\n\n // Student: Receive and apply scroll position\n useEffect(() => {\n if (isTeacher) return;\n\n const scrollElement = containerRef.current;\n const scrollTop = channelMetadata?.scrollTop;\n\n if (scrollTop === undefined || !scrollElement) {\n return;\n }\n\n const canScroll = scrollElement.scrollHeight > scrollElement.clientHeight;\n\n if (canScroll) {\n scrollElement.scrollTo({\n top: scrollTop,\n behavior: 'auto',\n });\n\n return;\n }\n\n // Content not loaded yet, retry after delay\n const retryTimeout = setTimeout(() => {\n if (scrollElement.scrollHeight > scrollElement.clientHeight) {\n scrollElement.scrollTo({\n top: scrollTop,\n behavior: 'auto',\n });\n }\n }, 500);\n\n return () => clearTimeout(retryTimeout);\n }, [channelMetadata?.scrollTop, containerRef, isTeacher]);\n\n useEffect(() => {\n if (!channelStatus && channel) {\n channel.init();\n }\n }, [channel, channelStatus]);\n\n return {\n syncScrollPosition,\n resetScrollPosition,\n receivedScrollTop: channelMetadata?.scrollTop,\n closeScrollChannel,\n };\n};\n\nexport { useLearningPlanScrollSync };\n"],"names":["useLearningPlanScrollSync","studentClassroomId","containerRef","isTeacher","onScroll","channelId","channelOptions","useMemo","channelStatus","channel","channelMetadata","setChannelMetadata","useMessageBrokerChannel","syncScrollPosition","useCallback","scrollTop","resetScrollPosition","closeScrollChannel","throttledScrollHandlerRef","useRef","useEffect","scrollElement","handleScroll","throttle","retryTimeout"],"mappings":";;;AAuBA,MAAMA,IAAwD,CAAC;AAAA,EAC7D,oBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AACF,MAAM;AACE,QAAAC,IAAY,2BAA2BJ,CAAkB,IAEzDK,IAAiBC;AAAA,IACrB,OAAO;AAAA,MACL,WAAAF;AAAA,MACA,KAAK;AAAA,IAAA;AAAA,IAEP,CAACA,CAAS;AAAA,EAAA,GAGN,EAAE,eAAAG,GAAe,SAAAC,GAAS,iBAAAC,GAAiB,oBAAAC,EAAA,IAAuBC,EAGtE;AAAA,IACA,gBAAAN;AAAA,IACA,kBAAkB;AAAA,IAClB,SAASL,MAAuB;AAAA,EAAA,CACjC,GAEKY,IAAqBC;AAAA,IACzB,CAACC,MAAsB;AACrB,MAAIJ,KACiBA,EAAA,EAAE,WAAAI,GAAW;AAAA,IAEpC;AAAA,IACA,CAACJ,CAAkB;AAAA,EAAA,GAGfK,IAAsBF,EAAY,MAAM;AAC5C,IAAIZ,EAAa,WACfA,EAAa,QAAQ,SAAS,EAAE,KAAK,GAAG,UAAU,QAAQ;AAAA,EAC5D,GACC,CAACA,CAAY,CAAC,GAEXe,IAAqBH,EAAY,MAAM;AAC3C,IAAIL,MACFA,EAAQ,sBAAsB,GAC9B,WAAW,MAAM;AACf,MAAAA,EAAQ,eAAe;AAAA,OACtB,GAAG;AAAA,EACR,GACC,CAACA,CAAO,CAAC,GAGNS,IAA4BC,EAA2C,IAAI;AAEjF,SAAAC,EAAU,MAAM;AACd,QAAI,CAAClB,EAAa,WAAW,CAACC,EAAW;AAEzC,UAAMkB,IAAgBnB,EAAa,SAE7BoB,IAAe,MAAM;AACzB,YAAMP,IAAYM,EAAc;AAEhC,MAAAR,EAAmBE,CAAS,GAC5BX,KAAA,QAAAA,EAAWW;AAAA,IAAS;AAII,WAAAG,EAAA,UAAUK,EAASD,GAAc,KAAK;AAAA,MAC9D,SAAS;AAAA,MACT,UAAU;AAAA,IAAA,CACX,GAEaD,EAAA,iBAAiB,UAAUH,EAA0B,OAAO,GAEnE,MAAM;AACX,MAAIA,EAA0B,YACdG,EAAA,oBAAoB,UAAUH,EAA0B,OAAO,GAC7EA,EAA0B,QAAQ;IACpC;AAAA,KAED,CAAChB,GAAcC,GAAWU,GAAoBT,CAAQ,CAAC,GAG1DgB,EAAU,MAAM;AACd,QAAIjB,EAAW;AAEf,UAAMkB,IAAgBnB,EAAa,SAC7Ba,IAAYL,KAAA,gBAAAA,EAAiB;AAE/B,QAAAK,MAAc,UAAa,CAACM;AAC9B;AAKF,QAFkBA,EAAc,eAAeA,EAAc,cAE9C;AACb,MAAAA,EAAc,SAAS;AAAA,QACrB,KAAKN;AAAA,QACL,UAAU;AAAA,MAAA,CACX;AAED;AAAA,IACF;AAGM,UAAAS,IAAe,WAAW,MAAM;AAChC,MAAAH,EAAc,eAAeA,EAAc,gBAC7CA,EAAc,SAAS;AAAA,QACrB,KAAKN;AAAA,QACL,UAAU;AAAA,MAAA,CACX;AAAA,OAEF,GAAG;AAEC,WAAA,MAAM,aAAaS,CAAY;AAAA,KACrC,CAACd,KAAA,gBAAAA,EAAiB,WAAWR,GAAcC,CAAS,CAAC,GAExDiB,EAAU,MAAM;AACV,IAAA,CAACZ,KAAiBC,KACpBA,EAAQ,KAAK;AAAA,EACf,GACC,CAACA,GAASD,CAAa,CAAC,GAEpB;AAAA,IACL,oBAAAK;AAAA,IACA,qBAAAG;AAAA,IACA,mBAAmBN,KAAA,gBAAAA,EAAiB;AAAA,IACpC,oBAAAO;AAAA,EAAA;AAEJ;"}