@cuemath/leap 3.0.2 → 3.0.3-as2
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/chapters-v2/comps/node-card/node-menu-options/node-menu-option.js +15 -17
- package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-option.js.map +1 -1
- package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-options.js +4 -4
- package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-options.js.map +1 -1
- package/dist/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.js +112 -98
- package/dist/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.js.map +1 -1
- package/dist/features/chapters-v2/constants/node-constants.js +2 -1
- package/dist/features/chapters-v2/constants/node-constants.js.map +1 -1
- package/dist/features/homework/card-menu-option.js +11 -13
- package/dist/features/homework/card-menu-option.js.map +1 -1
- package/dist/features/homework/card-menu-options.js +8 -8
- package/dist/features/homework/card-menu-options.js.map +1 -1
- package/dist/features/homework/homework-card.js +82 -74
- package/dist/features/homework/homework-card.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list-container.js +68 -68
- package/dist/features/milestone/milestone-list-container/milestone-list-container.js.map +1 -1
- package/package.json +1 -1
@@ -1,47 +1,47 @@
|
|
1
|
-
import { jsxs as
|
2
|
-
import { memo as
|
3
|
-
import
|
4
|
-
import
|
5
|
-
import
|
6
|
-
import
|
1
|
+
import { jsxs as T, jsx as r } from "react/jsx-runtime";
|
2
|
+
import { memo as Q, useRef as x, useCallback as w, useMemo as U } from "react";
|
3
|
+
import W from "../../assets/line-icons/icons/eye2.js";
|
4
|
+
import D from "../../assets/line-icons/icons/more-vertical.js";
|
5
|
+
import H from "../../assets/line-icons/icons/redo.js";
|
6
|
+
import A from "../ui/arrow-tooltip/arrow-tooltip.js";
|
7
7
|
import N from "../ui/buttons/clickable/clickable.js";
|
8
|
-
import
|
8
|
+
import X from "../ui/hooks/use-context-menu-click-handler.js";
|
9
9
|
import ee from "../ui/layout/flex-view.js";
|
10
|
-
import
|
10
|
+
import I from "./card-menu-options.js";
|
11
11
|
import re from "./homework-card-view.js";
|
12
12
|
import { CardContainer as te, MenuWrapper as ie, CardKebabMenuWrapper as ne, BlurContainer as oe, BlurFlexView as ce, StyledMinus2Icon as se } from "./styles.js";
|
13
|
-
import { getCardAnalyticProps as
|
14
|
-
const
|
13
|
+
import { getCardAnalyticProps as ae } from "./utils.js";
|
14
|
+
const le = ({
|
15
15
|
// callbacks
|
16
16
|
nodeData: e,
|
17
17
|
onNodeAttempt: b,
|
18
|
-
onNodeReattempt:
|
18
|
+
onNodeReattempt: d,
|
19
19
|
onNodeReview: n,
|
20
20
|
onNodeUnassign: m,
|
21
21
|
onNodeView: C,
|
22
|
-
header:
|
22
|
+
header: j,
|
23
23
|
isInQueue: E,
|
24
|
-
renderAs:
|
25
|
-
shouldOpenOnRight:
|
24
|
+
renderAs: F,
|
25
|
+
shouldOpenOnRight: L,
|
26
26
|
studentId: v,
|
27
|
-
subHeader:
|
27
|
+
subHeader: P,
|
28
28
|
userMilestoneId: t,
|
29
29
|
userType: g
|
30
30
|
}) => {
|
31
|
-
const i =
|
31
|
+
const i = F === "homework", {
|
32
32
|
node_type: k,
|
33
|
-
state:
|
34
|
-
permissions:
|
33
|
+
state: B,
|
34
|
+
permissions: z,
|
35
35
|
user_node_id: o,
|
36
|
-
user_milestone_id:
|
36
|
+
user_milestone_id: a,
|
37
37
|
homework_id: c
|
38
|
-
} = e, y =
|
38
|
+
} = e, y = x(null), $ = x(null), { menuVisible: R, onMenuClick: K } = X(y), { menuVisible: Y, onMenuClick: V } = X($), {
|
39
39
|
can_start: h,
|
40
40
|
can_resume: f,
|
41
41
|
can_review: s,
|
42
|
-
can_unassign:
|
43
|
-
can_reset:
|
44
|
-
} =
|
42
|
+
can_unassign: q,
|
43
|
+
can_reset: S
|
44
|
+
} = z, l = g === "STUDENT", p = w(() => {
|
45
45
|
if (s) {
|
46
46
|
if (typeof n != "function")
|
47
47
|
throw new Error("onReview must be a function");
|
@@ -50,7 +50,7 @@ const ae = ({
|
|
50
50
|
n(e, t);
|
51
51
|
return;
|
52
52
|
}
|
53
|
-
}, [s, n, o, e, t]),
|
53
|
+
}, [s, n, o, e, t]), G = w(() => {
|
54
54
|
if (h || f) {
|
55
55
|
if (typeof b != "function")
|
56
56
|
throw new Error("onNodeAttempt must be a function");
|
@@ -61,12 +61,12 @@ const ae = ({
|
|
61
61
|
V();
|
62
62
|
return;
|
63
63
|
}
|
64
|
-
|
64
|
+
p();
|
65
65
|
}, [
|
66
66
|
h,
|
67
67
|
f,
|
68
68
|
i,
|
69
|
-
|
69
|
+
p,
|
70
70
|
b,
|
71
71
|
e,
|
72
72
|
c,
|
@@ -77,92 +77,100 @@ const ae = ({
|
|
77
77
|
throw new Error("onNodeReview must be a function");
|
78
78
|
if (!o)
|
79
79
|
throw new Error("user node id must be present to review the sheet");
|
80
|
-
n(e, t ||
|
80
|
+
n(e, t || a, c);
|
81
81
|
return;
|
82
82
|
}
|
83
83
|
if (typeof C != "function")
|
84
84
|
throw new Error("onNodeView must be a function");
|
85
|
-
C(e, t ||
|
85
|
+
C(e, t || a);
|
86
86
|
}, [
|
87
87
|
s,
|
88
88
|
C,
|
89
89
|
e,
|
90
90
|
t,
|
91
|
-
|
91
|
+
a,
|
92
92
|
n,
|
93
93
|
o,
|
94
94
|
c
|
95
|
-
]),
|
96
|
-
(
|
97
|
-
switch (
|
95
|
+
]), u = w(
|
96
|
+
(O) => {
|
97
|
+
switch (O) {
|
98
98
|
case "teacher-card-view":
|
99
99
|
_();
|
100
100
|
return;
|
101
101
|
case "student-card-view":
|
102
|
-
|
102
|
+
p();
|
103
103
|
return;
|
104
104
|
case "teacher-card-unassign":
|
105
105
|
m == null || m(e, t);
|
106
106
|
return;
|
107
107
|
case "student-card-reattempt":
|
108
|
-
|
108
|
+
case "teacher-card-redo":
|
109
|
+
d == null || d(e, t);
|
109
110
|
return;
|
110
111
|
default:
|
111
|
-
throw new Error(`No callback function for ${
|
112
|
+
throw new Error(`No callback function for ${O}`);
|
112
113
|
}
|
113
114
|
},
|
114
115
|
[
|
115
116
|
e,
|
116
|
-
u,
|
117
|
-
m,
|
118
117
|
d,
|
118
|
+
m,
|
119
|
+
p,
|
119
120
|
_,
|
120
121
|
t
|
121
122
|
]
|
122
|
-
),
|
123
|
+
), J = [
|
123
124
|
{
|
124
125
|
id: "teacher-card-view",
|
125
126
|
label: s ? "Review" : "View",
|
126
|
-
icon:
|
127
|
+
icon: W,
|
127
128
|
disabled: !1,
|
128
|
-
onClick:
|
129
|
+
onClick: u
|
129
130
|
},
|
130
131
|
{
|
131
132
|
id: "teacher-card-unassign",
|
132
133
|
label: "Unassign",
|
133
134
|
icon: se,
|
134
|
-
disabled: i ? k === "MASTERY" : !
|
135
|
-
onClick:
|
135
|
+
disabled: i ? k === "MASTERY" : !q,
|
136
|
+
onClick: u
|
137
|
+
},
|
138
|
+
{
|
139
|
+
id: "teacher-card-redo",
|
140
|
+
label: "Redo",
|
141
|
+
icon: H,
|
142
|
+
disabled: !S,
|
143
|
+
onClick: u
|
136
144
|
}
|
137
|
-
],
|
145
|
+
], Z = [
|
138
146
|
{
|
139
147
|
id: "student-card-view",
|
140
148
|
label: "Review",
|
141
|
-
icon:
|
149
|
+
icon: W,
|
142
150
|
disabled: !s,
|
143
|
-
onClick:
|
151
|
+
onClick: u
|
144
152
|
},
|
145
153
|
{
|
146
154
|
id: "student-card-reattempt",
|
147
155
|
label: "Reattempt",
|
148
|
-
icon:
|
149
|
-
disabled: !
|
150
|
-
onClick:
|
156
|
+
icon: H,
|
157
|
+
disabled: !S,
|
158
|
+
onClick: u
|
151
159
|
}
|
152
|
-
],
|
153
|
-
() =>
|
160
|
+
], M = U(
|
161
|
+
() => ae({
|
154
162
|
canResume: f,
|
155
163
|
canStart: h,
|
156
164
|
homeworkId: c,
|
157
165
|
isHomeWork: i,
|
158
|
-
isStudent:
|
159
|
-
milestoneId:
|
166
|
+
isStudent: l,
|
167
|
+
milestoneId: a,
|
160
168
|
nodeType: k,
|
161
169
|
studentId: v,
|
162
170
|
userNodeId: o
|
163
171
|
}),
|
164
172
|
[
|
165
|
-
|
173
|
+
l,
|
166
174
|
i,
|
167
175
|
v,
|
168
176
|
k,
|
@@ -170,75 +178,75 @@ const ae = ({
|
|
170
178
|
f,
|
171
179
|
c,
|
172
180
|
o,
|
173
|
-
|
181
|
+
a
|
174
182
|
]
|
175
183
|
);
|
176
|
-
return /* @__PURE__ */
|
184
|
+
return /* @__PURE__ */ T(te, { $position: "relative", $width: "fit-content", children: [
|
177
185
|
/* @__PURE__ */ r(
|
178
186
|
N,
|
179
187
|
{
|
180
|
-
onClick:
|
188
|
+
onClick: l ? G : _,
|
181
189
|
label: "homework-card",
|
182
|
-
analyticsLabel:
|
183
|
-
analyticsProps:
|
190
|
+
analyticsLabel: M.analyticsLabel,
|
191
|
+
analyticsProps: M.analyticsProps,
|
184
192
|
children: /* @__PURE__ */ r(
|
185
193
|
re,
|
186
194
|
{
|
187
|
-
header:
|
195
|
+
header: j,
|
188
196
|
isInQueue: E,
|
189
197
|
nodeData: e,
|
190
198
|
studentContainerRef: $,
|
191
|
-
subHeader:
|
199
|
+
subHeader: P,
|
192
200
|
userType: g
|
193
201
|
}
|
194
202
|
)
|
195
203
|
}
|
196
204
|
),
|
197
|
-
|
198
|
-
|
205
|
+
l && !i && /* @__PURE__ */ r(
|
206
|
+
I,
|
199
207
|
{
|
200
208
|
$width: 200,
|
201
|
-
options:
|
209
|
+
options: Z,
|
202
210
|
triggerRef: $,
|
203
|
-
visible:
|
211
|
+
visible: Y,
|
204
212
|
shouldOpenOnRight: !1
|
205
213
|
}
|
206
214
|
),
|
207
|
-
!
|
215
|
+
!l && /* @__PURE__ */ T(ie, { $position: "absolute", $width: "fit-content", $borderRadiusX: 2, children: [
|
208
216
|
/* @__PURE__ */ r(
|
209
|
-
|
217
|
+
A,
|
210
218
|
{
|
211
219
|
renderAs: "primary",
|
212
220
|
tooltipItem: "Review",
|
213
221
|
position: "bottom",
|
214
222
|
zIndex: 6,
|
215
223
|
parentWidth: "100%",
|
216
|
-
hidden: R ||
|
224
|
+
hidden: R || B !== "WAIT_FOR_REVIEW" && i,
|
217
225
|
children: /* @__PURE__ */ r(
|
218
226
|
ne,
|
219
227
|
{
|
220
228
|
$alignItems: "center",
|
221
229
|
$justifyContent: "center",
|
222
230
|
ref: y,
|
223
|
-
onClick:
|
224
|
-
children: /* @__PURE__ */ r(
|
231
|
+
onClick: K,
|
232
|
+
children: /* @__PURE__ */ r(D, { width: 16, height: 16 })
|
225
233
|
}
|
226
234
|
)
|
227
235
|
}
|
228
236
|
),
|
229
237
|
/* @__PURE__ */ r(
|
230
|
-
|
238
|
+
I,
|
231
239
|
{
|
232
|
-
options:
|
240
|
+
options: J,
|
233
241
|
triggerRef: y,
|
234
242
|
visible: R,
|
235
|
-
shouldOpenOnRight:
|
243
|
+
shouldOpenOnRight: L
|
236
244
|
}
|
237
245
|
)
|
238
246
|
] }),
|
239
|
-
E && /* @__PURE__ */ r(oe, { $background: "WHITE_5", children: /* @__PURE__ */ r(ce, { $heightX: 1, $widthX: 6, children: /* @__PURE__ */ r(
|
247
|
+
E && /* @__PURE__ */ r(oe, { $background: "WHITE_5", children: /* @__PURE__ */ r(ce, { $heightX: 1, $widthX: 6, children: /* @__PURE__ */ r(A, { renderAs: "primary", tooltipItem: "Not visible to student", position: "bottom", children: /* @__PURE__ */ r(ee, { $heightX: 1, $widthX: 6 }) }) }) })
|
240
248
|
] });
|
241
|
-
}, Ee =
|
249
|
+
}, Ee = Q(le);
|
242
250
|
export {
|
243
251
|
Ee as default
|
244
252
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"homework-card.js","sources":["../../../src/features/homework/homework-card.tsx"],"sourcesContent":["import type {\n INodeCardCallbacks,\n INodeDataProps,\n} from '../chapters-v2/comps/node-card/node-card-types';\nimport type { TUserTypes } from '../ui/types';\n\nimport { memo, useCallback, useMemo, useRef } from 'react';\n\nimport Eye2Icon from '../../assets/line-icons/icons/eye2';\nimport MoreVerticalIcon from '../../assets/line-icons/icons/more-vertical';\nimport RedoIcon from '../../assets/line-icons/icons/redo';\nimport ArrowTooltip from '../ui/arrow-tooltip/arrow-tooltip';\nimport Clickable from '../ui/buttons/clickable/clickable';\nimport useContextMenuClickHandler from '../ui/hooks/use-context-menu-click-handler';\nimport FlexView from '../ui/layout/flex-view';\nimport CardMenuOptions from './card-menu-options';\nimport HomeworkView from './homework-card-view';\nimport * as Styled from './styles';\nimport { getCardAnalyticProps } from './utils';\n\ninterface IHomeworkCardProps extends INodeCardCallbacks {\n header: string;\n nodeData: INodeDataProps;\n subHeader: string;\n userType: TUserTypes;\n studentId: string;\n userMilestoneId?: string;\n renderAs: 'homework' | 'milestone';\n shouldOpenOnRight: boolean;\n isInQueue?: boolean;\n}\n\nconst HomeworkCard = ({\n // callbacks\n nodeData,\n onNodeAttempt,\n onNodeReattempt,\n onNodeReview,\n onNodeUnassign,\n onNodeView,\n\n header,\n isInQueue,\n renderAs,\n shouldOpenOnRight,\n studentId,\n subHeader,\n userMilestoneId,\n userType,\n}: IHomeworkCardProps) => {\n const isHomeWork = renderAs === 'homework';\n const {\n node_type: nodeType,\n state,\n permissions,\n user_node_id: userNodeId,\n user_milestone_id: milestoneId,\n homework_id: homeworkId,\n } = nodeData;\n\n const teacherContainerRef = useRef<HTMLDivElement>(null);\n const studentContainerRef = useRef<HTMLDivElement>(null);\n const { menuVisible: teacherMenuVisible, onMenuClick: onTeacherMenuClick } =\n useContextMenuClickHandler(teacherContainerRef);\n const { menuVisible: studentMenuVisible, onMenuClick: onStudentMenuClick } =\n useContextMenuClickHandler(studentContainerRef);\n\n const {\n can_start: canStart,\n can_resume: canResume,\n can_review: canReview,\n can_unassign: canUnassign,\n can_reset: canReset,\n } = permissions;\n const isStudent = userType === 'STUDENT';\n\n const onStudentViewSheet = useCallback(() => {\n if (canReview) {\n if (typeof onNodeReview !== 'function') {\n throw new Error('onReview must be a function');\n }\n\n if (!userNodeId) {\n throw new Error('user node id must be present to review the sheet');\n }\n onNodeReview(nodeData, userMilestoneId);\n\n return;\n }\n }, [canReview, onNodeReview, userNodeId, nodeData, userMilestoneId]);\n\n const onStudentCardClick = useCallback(() => {\n if (canStart || canResume) {\n if (typeof onNodeAttempt !== 'function') {\n throw new Error('onNodeAttempt must be a function');\n }\n\n onNodeAttempt(nodeData, homeworkId);\n\n return;\n }\n\n if (!isHomeWork) {\n onStudentMenuClick();\n\n return;\n }\n onStudentViewSheet();\n }, [\n canStart,\n canResume,\n isHomeWork,\n onStudentViewSheet,\n onNodeAttempt,\n nodeData,\n homeworkId,\n onStudentMenuClick,\n ]);\n\n const onTeacherCardClick = useCallback(() => {\n if (canReview) {\n if (typeof onNodeReview !== 'function') {\n throw new Error('onNodeReview must be a function');\n }\n\n if (!userNodeId) {\n throw new Error('user node id must be present to review the sheet');\n }\n onNodeReview(nodeData, userMilestoneId || milestoneId, homeworkId);\n\n return;\n }\n\n if (typeof onNodeView !== 'function') {\n throw new Error('onNodeView must be a function');\n }\n\n onNodeView(nodeData, userMilestoneId || milestoneId);\n }, [\n canReview,\n onNodeView,\n nodeData,\n userMilestoneId,\n milestoneId,\n onNodeReview,\n userNodeId,\n homeworkId,\n ]);\n\n const handleOnMenuOptionClick = useCallback(\n (optionId: string) => {\n switch (optionId) {\n case 'teacher-card-view':\n onTeacherCardClick();\n\n return;\n case 'student-card-view':\n onStudentViewSheet();\n\n return;\n case 'teacher-card-unassign':\n onNodeUnassign?.(nodeData, userMilestoneId);\n\n return;\n case 'student-card-reattempt':\n onNodeReattempt?.(nodeData, userMilestoneId);\n\n return;\n default:\n throw new Error(`No callback function for ${optionId}`);\n }\n },\n [\n nodeData,\n onNodeReattempt,\n onNodeUnassign,\n onStudentViewSheet,\n onTeacherCardClick,\n userMilestoneId,\n ],\n );\n\n const teacherOptions = [\n {\n id: 'teacher-card-view',\n label: canReview ? 'Review' : 'View',\n icon: Eye2Icon,\n disabled: false,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'teacher-card-unassign',\n label: 'Unassign',\n icon: Styled.StyledMinus2Icon,\n disabled: isHomeWork ? nodeType === 'MASTERY' : !canUnassign,\n onClick: handleOnMenuOptionClick,\n },\n ];\n\n const studentOptions = [\n {\n id: 'student-card-view',\n label: 'Review',\n icon: Eye2Icon,\n disabled: !canReview,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'student-card-reattempt',\n label: 'Reattempt',\n icon: RedoIcon,\n disabled: !canReset,\n onClick: handleOnMenuOptionClick,\n },\n ];\n\n const analyticsLabel = useMemo(\n () =>\n getCardAnalyticProps({\n canResume,\n canStart,\n homeworkId,\n isHomeWork,\n isStudent,\n milestoneId,\n nodeType,\n studentId,\n userNodeId,\n }),\n [\n isStudent,\n isHomeWork,\n studentId,\n nodeType,\n canStart,\n canResume,\n homeworkId,\n userNodeId,\n milestoneId,\n ],\n );\n\n return (\n <Styled.CardContainer $position=\"relative\" $width=\"fit-content\">\n <Clickable\n onClick={isStudent ? onStudentCardClick : onTeacherCardClick}\n label=\"homework-card\"\n analyticsLabel={analyticsLabel.analyticsLabel}\n analyticsProps={analyticsLabel.analyticsProps}\n >\n <HomeworkView\n header={header}\n isInQueue={isInQueue}\n nodeData={nodeData}\n studentContainerRef={studentContainerRef}\n subHeader={subHeader}\n userType={userType}\n />\n </Clickable>\n {isStudent && !isHomeWork && (\n <CardMenuOptions\n $width={200}\n options={studentOptions}\n triggerRef={studentContainerRef}\n visible={studentMenuVisible}\n shouldOpenOnRight={false}\n />\n )}\n {!isStudent && (\n <Styled.MenuWrapper $position=\"absolute\" $width=\"fit-content\" $borderRadiusX={2}>\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem=\"Review\"\n position=\"bottom\"\n zIndex={6}\n parentWidth=\"100%\"\n hidden={teacherMenuVisible || (state !== 'WAIT_FOR_REVIEW' && isHomeWork)}\n >\n <Styled.CardKebabMenuWrapper\n $alignItems=\"center\"\n $justifyContent=\"center\"\n ref={teacherContainerRef}\n onClick={onTeacherMenuClick}\n >\n <MoreVerticalIcon width={16} height={16} />\n </Styled.CardKebabMenuWrapper>\n </ArrowTooltip>\n <CardMenuOptions\n options={teacherOptions}\n triggerRef={teacherContainerRef}\n visible={teacherMenuVisible}\n shouldOpenOnRight={shouldOpenOnRight}\n />\n </Styled.MenuWrapper>\n )}\n {isInQueue && (\n <Styled.BlurContainer $background=\"WHITE_5\">\n <Styled.BlurFlexView $heightX={1} $widthX={6}>\n <ArrowTooltip renderAs=\"primary\" tooltipItem=\"Not visible to student\" position=\"bottom\">\n <FlexView $heightX={1} $widthX={6} />\n </ArrowTooltip>\n </Styled.BlurFlexView>\n </Styled.BlurContainer>\n )}\n </Styled.CardContainer>\n );\n};\n\nexport default memo(HomeworkCard);\n"],"names":["HomeworkCard","nodeData","onNodeAttempt","onNodeReattempt","onNodeReview","onNodeUnassign","onNodeView","header","isInQueue","renderAs","shouldOpenOnRight","studentId","subHeader","userMilestoneId","userType","isHomeWork","nodeType","state","permissions","userNodeId","milestoneId","homeworkId","teacherContainerRef","useRef","studentContainerRef","teacherMenuVisible","onTeacherMenuClick","useContextMenuClickHandler","studentMenuVisible","onStudentMenuClick","canStart","canResume","canReview","canUnassign","canReset","isStudent","onStudentViewSheet","useCallback","onStudentCardClick","onTeacherCardClick","handleOnMenuOptionClick","optionId","teacherOptions","Eye2Icon","Styled.StyledMinus2Icon","studentOptions","RedoIcon","analyticsLabel","useMemo","getCardAnalyticProps","Styled.CardContainer","jsx","Clickable","HomeworkView","CardMenuOptions","jsxs","Styled.MenuWrapper","ArrowTooltip","Styled.CardKebabMenuWrapper","MoreVerticalIcon","Styled.BlurContainer","Styled.BlurFlexView","FlexView","HomeworkCard$1","memo"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"homework-card.js","sources":["../../../src/features/homework/homework-card.tsx"],"sourcesContent":["import type {\n INodeCardCallbacks,\n INodeDataProps,\n} from '../chapters-v2/comps/node-card/node-card-types';\nimport type { TUserTypes } from '../ui/types';\n\nimport { memo, useCallback, useMemo, useRef } from 'react';\n\nimport Eye2Icon from '../../assets/line-icons/icons/eye2';\nimport MoreVerticalIcon from '../../assets/line-icons/icons/more-vertical';\nimport RedoIcon from '../../assets/line-icons/icons/redo';\nimport ArrowTooltip from '../ui/arrow-tooltip/arrow-tooltip';\nimport Clickable from '../ui/buttons/clickable/clickable';\nimport useContextMenuClickHandler from '../ui/hooks/use-context-menu-click-handler';\nimport FlexView from '../ui/layout/flex-view';\nimport CardMenuOptions from './card-menu-options';\nimport HomeworkView from './homework-card-view';\nimport * as Styled from './styles';\nimport { getCardAnalyticProps } from './utils';\n\ninterface IHomeworkCardProps extends INodeCardCallbacks {\n header: string;\n nodeData: INodeDataProps;\n subHeader: string;\n userType: TUserTypes;\n studentId: string;\n userMilestoneId?: string;\n renderAs: 'homework' | 'milestone';\n shouldOpenOnRight: boolean;\n isInQueue?: boolean;\n}\n\nconst HomeworkCard = ({\n // callbacks\n nodeData,\n onNodeAttempt,\n onNodeReattempt,\n onNodeReview,\n onNodeUnassign,\n onNodeView,\n\n header,\n isInQueue,\n renderAs,\n shouldOpenOnRight,\n studentId,\n subHeader,\n userMilestoneId,\n userType,\n}: IHomeworkCardProps) => {\n const isHomeWork = renderAs === 'homework';\n const {\n node_type: nodeType,\n state,\n permissions,\n user_node_id: userNodeId,\n user_milestone_id: milestoneId,\n homework_id: homeworkId,\n } = nodeData;\n\n const teacherContainerRef = useRef<HTMLDivElement>(null);\n const studentContainerRef = useRef<HTMLDivElement>(null);\n const { menuVisible: teacherMenuVisible, onMenuClick: onTeacherMenuClick } =\n useContextMenuClickHandler(teacherContainerRef);\n const { menuVisible: studentMenuVisible, onMenuClick: onStudentMenuClick } =\n useContextMenuClickHandler(studentContainerRef);\n\n const {\n can_start: canStart,\n can_resume: canResume,\n can_review: canReview,\n can_unassign: canUnassign,\n can_reset: canReset,\n } = permissions;\n const isStudent = userType === 'STUDENT';\n\n const onStudentViewSheet = useCallback(() => {\n if (canReview) {\n if (typeof onNodeReview !== 'function') {\n throw new Error('onReview must be a function');\n }\n\n if (!userNodeId) {\n throw new Error('user node id must be present to review the sheet');\n }\n onNodeReview(nodeData, userMilestoneId);\n\n return;\n }\n }, [canReview, onNodeReview, userNodeId, nodeData, userMilestoneId]);\n\n const onStudentCardClick = useCallback(() => {\n if (canStart || canResume) {\n if (typeof onNodeAttempt !== 'function') {\n throw new Error('onNodeAttempt must be a function');\n }\n\n onNodeAttempt(nodeData, homeworkId);\n\n return;\n }\n\n if (!isHomeWork) {\n onStudentMenuClick();\n\n return;\n }\n onStudentViewSheet();\n }, [\n canStart,\n canResume,\n isHomeWork,\n onStudentViewSheet,\n onNodeAttempt,\n nodeData,\n homeworkId,\n onStudentMenuClick,\n ]);\n\n const onTeacherCardClick = useCallback(() => {\n if (canReview) {\n if (typeof onNodeReview !== 'function') {\n throw new Error('onNodeReview must be a function');\n }\n\n if (!userNodeId) {\n throw new Error('user node id must be present to review the sheet');\n }\n onNodeReview(nodeData, userMilestoneId || milestoneId, homeworkId);\n\n return;\n }\n\n if (typeof onNodeView !== 'function') {\n throw new Error('onNodeView must be a function');\n }\n\n onNodeView(nodeData, userMilestoneId || milestoneId);\n }, [\n canReview,\n onNodeView,\n nodeData,\n userMilestoneId,\n milestoneId,\n onNodeReview,\n userNodeId,\n homeworkId,\n ]);\n\n const handleOnMenuOptionClick = useCallback(\n (optionId: string) => {\n switch (optionId) {\n case 'teacher-card-view':\n onTeacherCardClick();\n\n return;\n case 'student-card-view':\n onStudentViewSheet();\n\n return;\n case 'teacher-card-unassign':\n onNodeUnassign?.(nodeData, userMilestoneId);\n\n return;\n case 'student-card-reattempt':\n case 'teacher-card-redo':\n onNodeReattempt?.(nodeData, userMilestoneId);\n\n return;\n\n default:\n throw new Error(`No callback function for ${optionId}`);\n }\n },\n [\n nodeData,\n onNodeReattempt,\n onNodeUnassign,\n onStudentViewSheet,\n onTeacherCardClick,\n userMilestoneId,\n ],\n );\n\n const teacherOptions = [\n {\n id: 'teacher-card-view',\n label: canReview ? 'Review' : 'View',\n icon: Eye2Icon,\n disabled: false,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'teacher-card-unassign',\n label: 'Unassign',\n icon: Styled.StyledMinus2Icon,\n disabled: isHomeWork ? nodeType === 'MASTERY' : !canUnassign,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'teacher-card-redo',\n label: 'Redo',\n icon: RedoIcon,\n disabled: !canReset,\n onClick: handleOnMenuOptionClick,\n },\n ];\n\n const studentOptions = [\n {\n id: 'student-card-view',\n label: 'Review',\n icon: Eye2Icon,\n disabled: !canReview,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'student-card-reattempt',\n label: 'Reattempt',\n icon: RedoIcon,\n disabled: !canReset,\n onClick: handleOnMenuOptionClick,\n },\n ];\n\n const analyticsLabel = useMemo(\n () =>\n getCardAnalyticProps({\n canResume,\n canStart,\n homeworkId,\n isHomeWork,\n isStudent,\n milestoneId,\n nodeType,\n studentId,\n userNodeId,\n }),\n [\n isStudent,\n isHomeWork,\n studentId,\n nodeType,\n canStart,\n canResume,\n homeworkId,\n userNodeId,\n milestoneId,\n ],\n );\n\n return (\n <Styled.CardContainer $position=\"relative\" $width=\"fit-content\">\n <Clickable\n onClick={isStudent ? onStudentCardClick : onTeacherCardClick}\n label=\"homework-card\"\n analyticsLabel={analyticsLabel.analyticsLabel}\n analyticsProps={analyticsLabel.analyticsProps}\n >\n <HomeworkView\n header={header}\n isInQueue={isInQueue}\n nodeData={nodeData}\n studentContainerRef={studentContainerRef}\n subHeader={subHeader}\n userType={userType}\n />\n </Clickable>\n {isStudent && !isHomeWork && (\n <CardMenuOptions\n $width={200}\n options={studentOptions}\n triggerRef={studentContainerRef}\n visible={studentMenuVisible}\n shouldOpenOnRight={false}\n />\n )}\n {!isStudent && (\n <Styled.MenuWrapper $position=\"absolute\" $width=\"fit-content\" $borderRadiusX={2}>\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem=\"Review\"\n position=\"bottom\"\n zIndex={6}\n parentWidth=\"100%\"\n hidden={teacherMenuVisible || (state !== 'WAIT_FOR_REVIEW' && isHomeWork)}\n >\n <Styled.CardKebabMenuWrapper\n $alignItems=\"center\"\n $justifyContent=\"center\"\n ref={teacherContainerRef}\n onClick={onTeacherMenuClick}\n >\n <MoreVerticalIcon width={16} height={16} />\n </Styled.CardKebabMenuWrapper>\n </ArrowTooltip>\n <CardMenuOptions\n options={teacherOptions}\n triggerRef={teacherContainerRef}\n visible={teacherMenuVisible}\n shouldOpenOnRight={shouldOpenOnRight}\n />\n </Styled.MenuWrapper>\n )}\n {isInQueue && (\n <Styled.BlurContainer $background=\"WHITE_5\">\n <Styled.BlurFlexView $heightX={1} $widthX={6}>\n <ArrowTooltip renderAs=\"primary\" tooltipItem=\"Not visible to student\" position=\"bottom\">\n <FlexView $heightX={1} $widthX={6} />\n </ArrowTooltip>\n </Styled.BlurFlexView>\n </Styled.BlurContainer>\n )}\n </Styled.CardContainer>\n );\n};\n\nexport default memo(HomeworkCard);\n"],"names":["HomeworkCard","nodeData","onNodeAttempt","onNodeReattempt","onNodeReview","onNodeUnassign","onNodeView","header","isInQueue","renderAs","shouldOpenOnRight","studentId","subHeader","userMilestoneId","userType","isHomeWork","nodeType","state","permissions","userNodeId","milestoneId","homeworkId","teacherContainerRef","useRef","studentContainerRef","teacherMenuVisible","onTeacherMenuClick","useContextMenuClickHandler","studentMenuVisible","onStudentMenuClick","canStart","canResume","canReview","canUnassign","canReset","isStudent","onStudentViewSheet","useCallback","onStudentCardClick","onTeacherCardClick","handleOnMenuOptionClick","optionId","teacherOptions","Eye2Icon","Styled.StyledMinus2Icon","RedoIcon","studentOptions","analyticsLabel","useMemo","getCardAnalyticProps","Styled.CardContainer","jsx","Clickable","HomeworkView","CardMenuOptions","jsxs","Styled.MenuWrapper","ArrowTooltip","Styled.CardKebabMenuWrapper","MoreVerticalIcon","Styled.BlurContainer","Styled.BlurFlexView","FlexView","HomeworkCard$1","memo"],"mappings":"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"}
|
@@ -1,31 +1,31 @@
|
|
1
|
-
import { jsx as
|
2
|
-
import { h as
|
3
|
-
import { memo as le, useMemo as Se, useState as
|
4
|
-
import { ILLUSTRATIONS as
|
1
|
+
import { jsx as a, jsxs as C, Fragment as re } from "react/jsx-runtime";
|
2
|
+
import { h as ae } from "../../../node_modules/humanize-plus/dist/humanize.js";
|
3
|
+
import { memo as le, useMemo as Se, useState as u, useCallback as me, useEffect as p } from "react";
|
4
|
+
import { ILLUSTRATIONS as Te } from "../../../assets/illustrations/illustrations.js";
|
5
5
|
import { EVENTS as e } from "../../communication/pub-sub/constants.js";
|
6
|
-
import { useInClassActionListener as
|
6
|
+
import { useInClassActionListener as ce } from "../../communication/pub-sub/hooks.js";
|
7
7
|
import { invalidateHomeworks as f } from "../../homework/hw-card-list/api/get-homeworks.js";
|
8
8
|
import de from "../../ui/separator/separator.js";
|
9
|
-
import { invalidateMilestoneResources as
|
10
|
-
import { useGetAllMilestonesdata as
|
11
|
-
import { invalidateTestHelpData as
|
12
|
-
import
|
9
|
+
import { invalidateMilestoneResources as _e } from "./api/get-milestone-resources.js";
|
10
|
+
import { useGetAllMilestonesdata as Ne, invalidateMilestonesData as Ae } from "./api/get-milestones.js";
|
11
|
+
import { invalidateTestHelpData as Me } from "./api/get-tests-list.js";
|
12
|
+
import De from "./filter-milestones.js";
|
13
13
|
import Ie from "./milestone-list/milestone-list.js";
|
14
14
|
import Le from "./milestone-list/milestone-loader/milestone-loader.js";
|
15
|
-
import { ContentWrapper as
|
16
|
-
const
|
17
|
-
|
18
|
-
},
|
19
|
-
({ studentName: d, studentId: l, studentClassroomId: h, ...
|
15
|
+
import { ContentWrapper as Re, LoaderWrapper as Oe } from "./styled.js";
|
16
|
+
const Ce = (d) => {
|
17
|
+
Ae(d);
|
18
|
+
}, ue = le(
|
19
|
+
({ studentName: d, studentId: l, studentClassroomId: h, ...v }) => {
|
20
20
|
const {
|
21
21
|
milestoneType: s,
|
22
|
-
isStudentPresent:
|
23
|
-
isClassOngoing:
|
24
|
-
userType:
|
25
|
-
canCreatePlan:
|
26
|
-
teacherName:
|
22
|
+
isStudentPresent: A,
|
23
|
+
isClassOngoing: P,
|
24
|
+
userType: _,
|
25
|
+
canCreatePlan: U,
|
26
|
+
teacherName: G,
|
27
27
|
parentName: g,
|
28
|
-
courseStream:
|
28
|
+
courseStream: N,
|
29
29
|
activeMilestoneId: F,
|
30
30
|
activeTabId: w,
|
31
31
|
onExpandPastMilestones: V,
|
@@ -48,33 +48,33 @@ const ue = (d) => {
|
|
48
48
|
onTestReview: Z,
|
49
49
|
onTestStart: ee,
|
50
50
|
onWidgetTabSelection: te
|
51
|
-
} =
|
51
|
+
} = v, n = Se(
|
52
52
|
() => ({
|
53
|
-
milestone_state_group: s === "ACTIVE" ?
|
54
|
-
course_stream:
|
53
|
+
milestone_state_group: s === "ACTIVE" ? _ === "TEACHER" ? "LIVE" : "STUDENT_LIVE" : s,
|
54
|
+
course_stream: N,
|
55
55
|
student_id: l
|
56
56
|
}),
|
57
|
-
[s,
|
57
|
+
[s, N, l, _]
|
58
58
|
), {
|
59
59
|
data: o,
|
60
60
|
getAll: m,
|
61
|
-
isStale:
|
61
|
+
isStale: M,
|
62
62
|
isProcessing: S
|
63
|
-
} =
|
64
|
-
(
|
65
|
-
const { searchText: i, selectedBoard:
|
66
|
-
(i ||
|
67
|
-
const
|
68
|
-
const { milestone_name: ne, board: ie, grade:
|
69
|
-
return (i ? ne.toLowerCase().includes(i.toLowerCase()) : !0) && (
|
63
|
+
} = Ne(n), [D, I] = u(), [L, R] = u(!1), oe = me(
|
64
|
+
(T) => {
|
65
|
+
const { searchText: i, selectedBoard: E, selectedGrade: r } = T || {};
|
66
|
+
(i || E || r) && R(!0);
|
67
|
+
const c = o == null ? void 0 : o.filter((t) => {
|
68
|
+
const { milestone_name: ne, board: ie, grade: Ee } = t || {};
|
69
|
+
return (i ? ne.toLowerCase().includes(i.toLowerCase()) : !0) && (E ? ie === E : !0) && (r ? Ee === r : !0);
|
70
70
|
});
|
71
|
-
I(
|
71
|
+
I(c);
|
72
72
|
},
|
73
73
|
[o]
|
74
74
|
), se = () => {
|
75
|
-
|
75
|
+
R(!1), I(void 0);
|
76
76
|
};
|
77
|
-
if (
|
77
|
+
if (ce(
|
78
78
|
{
|
79
79
|
studentClassroomId: h,
|
80
80
|
actions: [
|
@@ -99,56 +99,56 @@ const ue = (d) => {
|
|
99
99
|
[e.PAST_MILESTONE_OUTCOME_ADDED],
|
100
100
|
[e.MILESTONE_TEST_ASSIGNED]
|
101
101
|
],
|
102
|
-
callback: (
|
103
|
-
var
|
104
|
-
const i = (
|
105
|
-
(t) => t.eventName === e.MILESTONE_RESOURCE_ASSIGNED || t.eventName === e.MILESTONE_RESOURCE_UNASSIGNED
|
106
|
-
)) == null ? void 0 :
|
107
|
-
(t) => t.eventName === e.MILESTONE_TEST_ASSIGNED
|
108
|
-
)) == null ? void 0 :
|
102
|
+
callback: (T) => {
|
103
|
+
var r, c;
|
104
|
+
const i = (r = T.find(
|
105
|
+
(t) => t.eventName === e.MILESTONE_RESOURCE_ASSIGNED || t.eventName === e.MILESTONE_RESOURCE_UNASSIGNED || t.eventName === e.MILESTONE_RESOURCE_RESET
|
106
|
+
)) == null ? void 0 : r.eventPayload, E = (c = T.find(
|
107
|
+
(t) => t.eventName === e.MILESTONE_TEST_ASSIGNED || t.eventName === e.MILESTONE_RESOURCE_RESET
|
108
|
+
)) == null ? void 0 : c.eventPayload;
|
109
109
|
if (i) {
|
110
110
|
const { milestoneId: t } = i || {};
|
111
|
-
f(l),
|
111
|
+
f(l), _e(t);
|
112
112
|
}
|
113
|
-
if (
|
114
|
-
const { milestoneId: t } =
|
115
|
-
f(l),
|
113
|
+
if (E) {
|
114
|
+
const { milestoneId: t } = E;
|
115
|
+
f(l), Me(t);
|
116
116
|
}
|
117
|
-
|
117
|
+
Ce(n);
|
118
118
|
}
|
119
119
|
},
|
120
|
-
(s === "ACTIVE" || s === "INACTIVE") &&
|
120
|
+
(s === "ACTIVE" || s === "INACTIVE") && A
|
121
121
|
), p(() => {
|
122
122
|
m(n);
|
123
123
|
}, [m, n]), p(() => {
|
124
|
-
!S &&
|
125
|
-
}, [m, n,
|
126
|
-
return /* @__PURE__ */
|
124
|
+
!S && M && m(n);
|
125
|
+
}, [m, n, M, S]), S && !o)
|
126
|
+
return /* @__PURE__ */ a(Le, { numMilestones: 2 });
|
127
127
|
const O = s === "ACTIVE" && o && o.length > 6;
|
128
|
-
return /* @__PURE__ */
|
129
|
-
S && /* @__PURE__ */
|
130
|
-
O && /* @__PURE__ */
|
131
|
-
/* @__PURE__ */
|
132
|
-
|
128
|
+
return /* @__PURE__ */ C(Re, { $disablePointerEvents: S, children: [
|
129
|
+
S && /* @__PURE__ */ a(Oe, { children: /* @__PURE__ */ a("img", { src: Te.LOADER_1, alt: "loading" }) }),
|
130
|
+
O && /* @__PURE__ */ C(re, { children: [
|
131
|
+
/* @__PURE__ */ a(
|
132
|
+
De,
|
133
133
|
{
|
134
|
-
filteredMilestones:
|
134
|
+
filteredMilestones: D,
|
135
135
|
milestones: o,
|
136
136
|
handleFilterMilestones: oe,
|
137
137
|
handleClearFilter: se
|
138
138
|
}
|
139
139
|
),
|
140
|
-
/* @__PURE__ */
|
140
|
+
/* @__PURE__ */ a(de, { heightX: 1.5 })
|
141
141
|
] }),
|
142
|
-
/* @__PURE__ */
|
142
|
+
/* @__PURE__ */ a(
|
143
143
|
Ie,
|
144
144
|
{
|
145
145
|
showFilters: !!O,
|
146
|
-
canCreatePlan:
|
147
|
-
isClassOngoing:
|
146
|
+
canCreatePlan: U,
|
147
|
+
isClassOngoing: P,
|
148
148
|
isFiltersAdded: L,
|
149
|
-
isStudentPresent:
|
149
|
+
isStudentPresent: A,
|
150
150
|
milestoneType: s,
|
151
|
-
milestones: L ?
|
151
|
+
milestones: L ? D : o,
|
152
152
|
onAddChapter: K,
|
153
153
|
onAddOutcome: x,
|
154
154
|
onChapterClick: b,
|
@@ -172,16 +172,16 @@ const ue = (d) => {
|
|
172
172
|
activeTabId: w,
|
173
173
|
onWidgetTabSelection: te,
|
174
174
|
studentId: l,
|
175
|
-
studentName:
|
176
|
-
teacherName:
|
175
|
+
studentName: ae.titleCase(d),
|
176
|
+
teacherName: G,
|
177
177
|
parentName: g,
|
178
|
-
userType:
|
179
|
-
courseStream:
|
178
|
+
userType: _,
|
179
|
+
courseStream: N
|
180
180
|
}
|
181
181
|
)
|
182
182
|
] });
|
183
183
|
}
|
184
|
-
), je =
|
184
|
+
), je = ue;
|
185
185
|
export {
|
186
186
|
je as default
|
187
187
|
};
|