@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.
- package/dist/features/homework/homework-card.js +122 -121
- package/dist/features/homework/homework-card.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/add-custom-chapter.js +66 -61
- package/dist/features/milestone/create/comps/add-custom-chapter/add-custom-chapter.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js +56 -55
- package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/search-chapter/search-chapters.js +32 -25
- package/dist/features/milestone/create/comps/add-custom-chapter/search-chapter/search-chapters.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapter-item.js +16 -15
- package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapter-item.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapters.js +17 -10
- package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapters.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/tags-render.js +6 -6
- package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/tags-render.js.map +1 -1
- package/dist/features/milestone/create/comps/body-layout/body-layout.js +30 -29
- package/dist/features/milestone/create/comps/body-layout/body-layout.js.map +1 -1
- package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js +77 -74
- package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js.map +1 -1
- package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.js +82 -79
- package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.js.map +1 -1
- package/dist/features/milestone/create/milestone-create-styled.js +8 -8
- package/dist/features/milestone/create/milestone-create-styled.js.map +1 -1
- package/dist/features/milestone/create/milestone-create.js +48 -46
- package/dist/features/milestone/create/milestone-create.js.map +1 -1
- package/dist/features/milestone/edit/goal-draft-edit-sync.js +26 -0
- package/dist/features/milestone/edit/goal-draft-edit-sync.js.map +1 -0
- package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-container.js +72 -66
- package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-container.js.map +1 -1
- package/dist/features/milestone/edit/hooks/use-milestone-edit-sync.js +82 -0
- package/dist/features/milestone/edit/hooks/use-milestone-edit-sync.js.map +1 -0
- package/dist/features/milestone/milestone-list-container/hooks/use-milestone-list-sync.js +49 -0
- package/dist/features/milestone/milestone-list-container/hooks/use-milestone-list-sync.js.map +1 -0
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js +109 -105
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js +2 -2
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs-styled.js +21 -16
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs-styled.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js +106 -98
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js +136 -117
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list-container.js +96 -92
- package/dist/features/milestone/milestone-list-container/milestone-list-container.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list-sync.js +25 -0
- package/dist/features/milestone/milestone-list-container/milestone-list-sync.js.map +1 -0
- package/dist/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.js +78 -81
- package/dist/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-assign/comps/filter-item/filter-item.js +28 -25
- package/dist/features/milestone/milestone-resources/resources-assign/comps/filter-item/filter-item.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-assign/comps/resource-item/resource-item.js +39 -33
- package/dist/features/milestone/milestone-resources/resources-assign/comps/resource-item/resource-item.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-assign/hooks/use-resource-assign-sync.js +50 -0
- package/dist/features/milestone/milestone-resources/resources-assign/hooks/use-resource-assign-sync.js.map +1 -0
- package/dist/features/milestone/milestone-resources/resources-assign/resource-assign-sync.js +25 -0
- package/dist/features/milestone/milestone-resources/resources-assign/resource-assign-sync.js.map +1 -0
- package/dist/features/milestone/milestone-resources/resources-assign/resource-items/resource-items.js +43 -53
- package/dist/features/milestone/milestone-resources/resources-assign/resource-items/resource-items.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js +218 -174
- package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-assign/store/resource-assign-store.js +198 -0
- package/dist/features/milestone/milestone-resources/resources-assign/store/resource-assign-store.js.map +1 -0
- package/dist/features/milestone/milestone-resources/resources-list/resources-list.js +69 -67
- package/dist/features/milestone/milestone-resources/resources-list/resources-list.js.map +1 -1
- package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js +46 -45
- package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js.map +1 -1
- package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js +34 -32
- package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-creation/hooks/use-tests-creation-sync.js +52 -0
- package/dist/features/milestone/milestone-tests/tests-creation/hooks/use-tests-creation-sync.js.map +1 -0
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/chapter-selection/chapter-selection.js +51 -41
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/chapter-selection/chapter-selection.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/difficulty-and-duration-selection.js +85 -71
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/difficulty-and-duration-selection.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview-styled.js +5 -5
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview-styled.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js +36 -26
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-sync.js +25 -0
- package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-sync.js.map +1 -0
- package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-types.js +5 -0
- package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-types.js.map +1 -0
- package/dist/features/milestone/milestone-tests/tests-creation/tests-creation.js +150 -89
- package/dist/features/milestone/milestone-tests/tests-creation/tests-creation.js.map +1 -1
- package/dist/features/sheet-v2/resource-list/resource-list.js +26 -24
- package/dist/features/sheet-v2/resource-list/resource-list.js.map +1 -1
- package/dist/features/trial-session/comps/learning-plan/index.js +218 -91
- package/dist/features/trial-session/comps/learning-plan/index.js.map +1 -1
- package/dist/features/trial-session/comps/learning-plan/learning-plan-styled.js +7 -6
- package/dist/features/trial-session/comps/learning-plan/learning-plan-styled.js.map +1 -1
- package/dist/features/trial-session/hooks/use-learning-plan-scroll-sync.js +75 -0
- package/dist/features/trial-session/hooks/use-learning-plan-scroll-sync.js.map +1 -0
- package/dist/features/trial-session/hooks/use-trial-session-navigation.js +125 -115
- package/dist/features/trial-session/hooks/use-trial-session-navigation.js.map +1 -1
- package/dist/features/trial-session/trial-session-types.js +3 -2
- package/dist/features/trial-session/trial-session-types.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js +69 -54
- package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet.js +44 -33
- package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js +25 -22
- package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js +48 -44
- package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/worksheet-preview.js +2 -2
- package/dist/features/worksheet/worksheet-preview/worksheet-preview.js.map +1 -1
- package/dist/index.d.ts +138 -2
- package/dist/node_modules/decode-uri-component/index.js.map +1 -0
- package/dist/node_modules/query-string/base.js +1 -1
- package/dist/node_modules/uuid/dist/esm-browser/native.js +7 -0
- package/dist/node_modules/uuid/dist/esm-browser/native.js.map +1 -0
- package/dist/node_modules/uuid/dist/esm-browser/rng.js +3 -2
- package/dist/node_modules/uuid/dist/esm-browser/rng.js.map +1 -1
- package/dist/node_modules/uuid/dist/esm-browser/stringify.js +6 -10
- package/dist/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -1
- package/dist/node_modules/uuid/dist/esm-browser/v4.js +12 -9
- package/dist/node_modules/uuid/dist/esm-browser/v4.js.map +1 -1
- package/package.json +1 -1
- package/dist/features/trial-session/comps/learning-plan/use-learning-plan-scroll-sync.js +0 -37
- package/dist/features/trial-session/comps/learning-plan/use-learning-plan-scroll-sync.js.map +0 -1
- package/dist/node_modules/query-string/node_modules/decode-uri-component/index.js.map +0 -1
- package/dist/node_modules/uuid/dist/esm-browser/regex.js +0 -5
- package/dist/node_modules/uuid/dist/esm-browser/regex.js.map +0 -1
- package/dist/node_modules/uuid/dist/esm-browser/validate.js +0 -8
- package/dist/node_modules/uuid/dist/esm-browser/validate.js.map +0 -1
- /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
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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
|
-
[
|
|
33
|
-
),
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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:
|
|
220
|
+
$clickable: e,
|
|
75
221
|
$gutterX: 2,
|
|
76
|
-
$isScrollable:
|
|
222
|
+
$isScrollable: e,
|
|
77
223
|
id: "milestone-list-element-container",
|
|
78
|
-
|
|
79
|
-
|
|
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
|
-
|
|
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
|
|
2
|
+
import i from "../../../../assets/line-icons/icons/back2.js";
|
|
3
3
|
import r from "../../../ui/layout/flex-view.js";
|
|
4
|
-
const
|
|
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
|
-
|
|
27
|
+
t(r)`
|
|
26
28
|
& > * {
|
|
27
29
|
pointer-events: none;
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
cursor: not-allowed;
|
|
31
33
|
`;
|
|
32
|
-
t(
|
|
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
|
-
|
|
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","
|
|
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;"}
|