@cuemath/leap 3.0.16 → 3.0.17-as1

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.
@@ -6,6 +6,7 @@ const E = {
6
6
  UNLOCK_SHEETS: "UNLOCK_SHEETS",
7
7
  EXTRA_PRACTICE_ASSIGNED: "EXTRA_PRACTICE_ASSIGNED",
8
8
  CHANGE_LOCATION: "CHANGE_LOCATION",
9
+ SHEET_MARKED_AS_REVIEWED: "SHEET_MARKED_AS_REVIEWED",
9
10
  SHEET_STARTED: "SHEET_STARTED",
10
11
  SHEET_UNASSIGNED: "SHEET_UNASSIGNED",
11
12
  SHEET_REATTEMPTED: "SHEET_REATTEMPTED",
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../../src/features/communication/pub-sub/constants.ts"],"sourcesContent":["const CHAPTER_SHEET_EVENTS = {\n CHAPTER_UPDATED: 'CHAPTER_UPDATED',\n LESSONS_MARKED_AS_FAMILIAR: 'LESSONS_MARKED_AS_FAMILIAR',\n LESSONS_MARKED_AS_IRRELEVANT: 'LESSONS_MARKED_AS_IRRELEVANT',\n LESSONS_PROGRESS_RESET: 'LESSONS_PROGRESS_RESET',\n UNLOCK_SHEETS: 'UNLOCK_SHEETS',\n EXTRA_PRACTICE_ASSIGNED: 'EXTRA_PRACTICE_ASSIGNED',\n CHANGE_LOCATION: 'CHANGE_LOCATION',\n SHEET_STARTED: 'SHEET_STARTED',\n SHEET_UNASSIGNED: 'SHEET_UNASSIGNED',\n SHEET_REATTEMPTED: 'SHEET_REATTEMPTED',\n INVALIDATE_CHAPTER_ON_CHANGE_ATTEMPT_LOCATION: 'INVALIDATE_CHAPTER_ON_CHANGE_ATTEMPT_LOCATION',\n} as const;\n\nconst GOAL_EVENTS = {\n GOAL_CREATED: 'GOAL_CREATED',\n GOAL_EDITED: 'GOAL_EDITED',\n GOAL_DELETED: 'GOAL_DELETED',\n GOAL_OUTCOME_ADDED: 'GOAL_OUTCOME_ADDED',\n} as const;\n\nconst MILESTONE_EVENTS = {\n MILESTONE_NAME_UPDATED: 'MILESTONE_NAME_UPDATED',\n MILESTONE_DATE_UPDATED: 'MILESTONE_DATE_UPDATED',\n MILESTONE_DELETED: 'MILESTONE_DELETED',\n MILESTONE_EDITED: 'MILESTONE_EDITED',\n MILESTONE_RESOURCE_ASSIGNED: 'MILESTONE_RESOURCE_ASSIGNED',\n MILESTONE_RESOURCE_UNASSIGNED: 'MILESTONE_RESOURCE_UNASSIGNED',\n MILESTONE_RESOURCE_RESET: 'MILESTONE_RESOURCE_RESET',\n PAST_MILESTONE_OUTCOME_ADDED: 'PAST_MILESTONE_OUTCOME_ADDED',\n MILESTONE_TEST_ASSIGNED: 'MILESTONE_TEST_ASSIGNED',\n} as const;\n\nconst HOMEWORK_EVENTS = {\n HOMEWORK_UNASSIGN: 'HOMEWORK_UNASSIGN',\n INVALIDATE_HOMEWORK: 'INVALIDATE_HOMEWORK',\n} as const;\n\nconst EVENTS = {\n ...CHAPTER_SHEET_EVENTS,\n ...MILESTONE_EVENTS,\n ...GOAL_EVENTS,\n ...HOMEWORK_EVENTS,\n};\n\nexport { EVENTS };\n"],"names":["CHAPTER_SHEET_EVENTS","GOAL_EVENTS","MILESTONE_EVENTS","HOMEWORK_EVENTS","EVENTS"],"mappings":"AAAA,MAAMA,IAAuB;AAAA,EAC3B,iBAAiB;AAAA,EACjB,4BAA4B;AAAA,EAC5B,8BAA8B;AAAA,EAC9B,wBAAwB;AAAA,EACxB,eAAe;AAAA,EACf,yBAAyB;AAAA,EACzB,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,+CAA+C;AACjD,GAEMC,IAAc;AAAA,EAClB,cAAc;AAAA,EACd,aAAa;AAAA,EACb,cAAc;AAAA,EACd,oBAAoB;AACtB,GAEMC,IAAmB;AAAA,EACvB,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,EACxB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,6BAA6B;AAAA,EAC7B,+BAA+B;AAAA,EAC/B,0BAA0B;AAAA,EAC1B,8BAA8B;AAAA,EAC9B,yBAAyB;AAC3B,GAEMC,IAAkB;AAAA,EACtB,mBAAmB;AAAA,EACnB,qBAAqB;AACvB,GAEMC,IAAS;AAAA,EACb,GAAGJ;AAAA,EACH,GAAGE;AAAA,EACH,GAAGD;AAAA,EACH,GAAGE;AACL;"}
1
+ {"version":3,"file":"constants.js","sources":["../../../../src/features/communication/pub-sub/constants.ts"],"sourcesContent":["const CHAPTER_SHEET_EVENTS = {\n CHAPTER_UPDATED: 'CHAPTER_UPDATED',\n LESSONS_MARKED_AS_FAMILIAR: 'LESSONS_MARKED_AS_FAMILIAR',\n LESSONS_MARKED_AS_IRRELEVANT: 'LESSONS_MARKED_AS_IRRELEVANT',\n LESSONS_PROGRESS_RESET: 'LESSONS_PROGRESS_RESET',\n UNLOCK_SHEETS: 'UNLOCK_SHEETS',\n EXTRA_PRACTICE_ASSIGNED: 'EXTRA_PRACTICE_ASSIGNED',\n CHANGE_LOCATION: 'CHANGE_LOCATION',\n SHEET_MARKED_AS_REVIEWED: 'SHEET_MARKED_AS_REVIEWED',\n SHEET_STARTED: 'SHEET_STARTED',\n SHEET_UNASSIGNED: 'SHEET_UNASSIGNED',\n SHEET_REATTEMPTED: 'SHEET_REATTEMPTED',\n INVALIDATE_CHAPTER_ON_CHANGE_ATTEMPT_LOCATION: 'INVALIDATE_CHAPTER_ON_CHANGE_ATTEMPT_LOCATION',\n} as const;\n\nconst GOAL_EVENTS = {\n GOAL_CREATED: 'GOAL_CREATED',\n GOAL_EDITED: 'GOAL_EDITED',\n GOAL_DELETED: 'GOAL_DELETED',\n GOAL_OUTCOME_ADDED: 'GOAL_OUTCOME_ADDED',\n} as const;\n\nconst MILESTONE_EVENTS = {\n MILESTONE_NAME_UPDATED: 'MILESTONE_NAME_UPDATED',\n MILESTONE_DATE_UPDATED: 'MILESTONE_DATE_UPDATED',\n MILESTONE_DELETED: 'MILESTONE_DELETED',\n MILESTONE_EDITED: 'MILESTONE_EDITED',\n MILESTONE_RESOURCE_ASSIGNED: 'MILESTONE_RESOURCE_ASSIGNED',\n MILESTONE_RESOURCE_UNASSIGNED: 'MILESTONE_RESOURCE_UNASSIGNED',\n MILESTONE_RESOURCE_RESET: 'MILESTONE_RESOURCE_RESET',\n PAST_MILESTONE_OUTCOME_ADDED: 'PAST_MILESTONE_OUTCOME_ADDED',\n MILESTONE_TEST_ASSIGNED: 'MILESTONE_TEST_ASSIGNED',\n} as const;\n\nconst HOMEWORK_EVENTS = {\n HOMEWORK_UNASSIGN: 'HOMEWORK_UNASSIGN',\n INVALIDATE_HOMEWORK: 'INVALIDATE_HOMEWORK',\n} as const;\n\nconst EVENTS = {\n ...CHAPTER_SHEET_EVENTS,\n ...MILESTONE_EVENTS,\n ...GOAL_EVENTS,\n ...HOMEWORK_EVENTS,\n};\n\nexport { EVENTS };\n"],"names":["CHAPTER_SHEET_EVENTS","GOAL_EVENTS","MILESTONE_EVENTS","HOMEWORK_EVENTS","EVENTS"],"mappings":"AAAA,MAAMA,IAAuB;AAAA,EAC3B,iBAAiB;AAAA,EACjB,4BAA4B;AAAA,EAC5B,8BAA8B;AAAA,EAC9B,wBAAwB;AAAA,EACxB,eAAe;AAAA,EACf,yBAAyB;AAAA,EACzB,iBAAiB;AAAA,EACjB,0BAA0B;AAAA,EAC1B,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,+CAA+C;AACjD,GAEMC,IAAc;AAAA,EAClB,cAAc;AAAA,EACd,aAAa;AAAA,EACb,cAAc;AAAA,EACd,oBAAoB;AACtB,GAEMC,IAAmB;AAAA,EACvB,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,EACxB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,6BAA6B;AAAA,EAC7B,+BAA+B;AAAA,EAC/B,0BAA0B;AAAA,EAC1B,8BAA8B;AAAA,EAC9B,yBAAyB;AAC3B,GAEMC,IAAkB;AAAA,EACtB,mBAAmB;AAAA,EACnB,qBAAqB;AACvB,GAEMC,IAAS;AAAA,EACb,GAAGJ;AAAA,EACH,GAAGE;AAAA,EACH,GAAGD;AAAA,EACH,GAAGE;AACL;"}
@@ -1,268 +1,260 @@
1
- import { jsxs as x, jsx as r } from "react/jsx-runtime";
2
- import { memo as D, useRef as M, useCallback as b, useMemo as N } from "react";
3
- import X from "../../assets/line-icons/icons/eye2.js";
4
- import ee from "../../assets/line-icons/icons/home2.js";
5
- import re from "../../assets/line-icons/icons/more-vertical.js";
6
- import H from "../../assets/line-icons/icons/redo.js";
7
- import I from "../ui/arrow-tooltip/arrow-tooltip.js";
8
- import te from "../ui/buttons/clickable/clickable.js";
9
- import j from "../ui/hooks/use-context-menu-click-handler.js";
10
- import ie from "../ui/layout/flex-view.js";
11
- import F from "./card-menu-options.js";
12
- import ne from "./homework-card-view.js";
13
- import { CardContainer as ce, MenuWrapper as oe, CardKebabMenuWrapper as ae, BlurContainer as se, BlurFlexView as le, StyledMinus2Icon as ue } from "./styles.js";
1
+ import { jsxs as O, jsx as t } from "react/jsx-runtime";
2
+ import { memo as N, useRef as T, useCallback as w, useMemo as ee } from "react";
3
+ import W from "../../assets/line-icons/icons/eye2.js";
4
+ import re from "../../assets/line-icons/icons/home2.js";
5
+ import te from "../../assets/line-icons/icons/more-vertical.js";
6
+ import x from "../../assets/line-icons/icons/redo.js";
7
+ import X from "../ui/arrow-tooltip/arrow-tooltip.js";
8
+ import ie from "../ui/buttons/clickable/clickable.js";
9
+ import H from "../ui/hooks/use-context-menu-click-handler.js";
10
+ import ne from "../ui/layout/flex-view.js";
11
+ import j from "./card-menu-options.js";
12
+ import ce from "./homework-card-view.js";
13
+ import { CardContainer as oe, MenuWrapper as se, CardKebabMenuWrapper as ae, BlurContainer as le, BlurFlexView as ue, StyledMinus2Icon as de } from "./styles.js";
14
14
  import { getCardAnalyticProps as he } from "./utils.js";
15
- const de = ({
15
+ const me = ({
16
16
  // callbacks
17
17
  nodeData: e,
18
- onNodeAttempt: C,
19
- onNodeReattempt: h,
18
+ onNodeAttempt: b,
19
+ onNodeReattempt: u,
20
20
  onNodeReview: n,
21
21
  onNodeUnassign: d,
22
- onNodeView: k,
23
- onNodeAssignAsHomework: m,
24
- header: L,
25
- isInQueue: v,
26
- renderAs: P,
27
- shouldOpenOnRight: B,
28
- studentId: g,
29
- subHeader: z,
30
- userMilestoneId: t,
31
- userType: R
22
+ onNodeView: C,
23
+ onNodeAssignAsHomework: h,
24
+ header: F,
25
+ isInQueue: $,
26
+ renderAs: L,
27
+ shouldOpenOnRight: P,
28
+ studentId: E,
29
+ subHeader: B,
30
+ userMilestoneId: z,
31
+ userType: I
32
32
  }) => {
33
- const i = P === "homework", {
34
- node_type: _,
33
+ const i = L === "homework", {
34
+ node_type: k,
35
35
  state: K,
36
36
  permissions: Y,
37
37
  user_node_id: c,
38
- user_milestone_id: l,
38
+ user_milestone_id: q,
39
39
  homework_id: o
40
- } = e, y = M(null), $ = M(null), { menuVisible: V, onMenuClick: q } = j(y), { menuVisible: G, onMenuClick: S } = j($), {
41
- can_start: f,
42
- can_resume: p,
43
- can_review: a,
44
- can_unassign: J,
45
- can_reset: O,
46
- can_assign_as_homework: Z
47
- } = Y, u = R === "STUDENT", w = b(() => {
48
- if (a) {
40
+ } = e, r = z || q || "", _ = T(null), y = T(null), { menuVisible: v, onMenuClick: G } = H(_), { menuVisible: J, onMenuClick: g } = H(y), {
41
+ can_start: m,
42
+ can_resume: f,
43
+ can_review: s,
44
+ can_unassign: Z,
45
+ can_reset: R,
46
+ can_assign_as_homework: Q
47
+ } = Y, l = I === "STUDENT", p = w(() => {
48
+ if (s) {
49
49
  if (typeof n != "function")
50
50
  throw new Error("onReview must be a function");
51
51
  if (!c)
52
52
  throw new Error("user node id must be present to review the sheet");
53
- n(e, t);
53
+ n(e, r);
54
54
  return;
55
55
  }
56
- }, [a, n, c, e, t]), Q = b(() => {
57
- if (f || p) {
58
- if (typeof C != "function")
56
+ }, [s, n, c, e, r]), A = w(() => {
57
+ if (m || f) {
58
+ if (typeof b != "function")
59
59
  throw new Error("onNodeAttempt must be a function");
60
- C(e, o);
60
+ b(e, r, o);
61
61
  return;
62
62
  }
63
63
  if (!i) {
64
- S();
64
+ g();
65
65
  return;
66
66
  }
67
- w();
67
+ p();
68
68
  }, [
69
+ m,
69
70
  f,
70
- p,
71
71
  i,
72
- w,
73
- C,
72
+ p,
73
+ b,
74
74
  e,
75
+ r,
75
76
  o,
76
- S
77
- ]), E = b(() => {
78
- if (a) {
77
+ g
78
+ ]), M = w(() => {
79
+ if (s) {
79
80
  if (typeof n != "function")
80
81
  throw new Error("onNodeReview must be a function");
81
82
  if (!c)
82
83
  throw new Error("user node id must be present to review the sheet");
83
- n(e, t || l, o);
84
+ n(e, r, o);
84
85
  return;
85
86
  }
86
- if (typeof k != "function")
87
+ if (typeof C != "function")
87
88
  throw new Error("onNodeView must be a function");
88
- k(e, t || l);
89
- }, [
90
- a,
91
- k,
92
- e,
93
- t,
94
- l,
95
- n,
96
- c,
97
- o
98
- ]), s = b(
99
- (W) => {
100
- switch (W) {
89
+ C(e, r);
90
+ }, [s, C, e, r, n, c, o]), a = w(
91
+ (S) => {
92
+ switch (S) {
101
93
  case "teacher-card-view":
102
- E();
94
+ M();
103
95
  return;
104
96
  case "student-card-view":
105
- w();
97
+ p();
106
98
  return;
107
99
  case "teacher-card-unassign":
108
- d == null || d(e, t);
100
+ d == null || d(e, r);
109
101
  return;
110
102
  case "student-card-reattempt":
111
103
  case "teacher-card-redo":
112
- h == null || h(e, t);
104
+ u == null || u(e, r);
113
105
  return;
114
106
  case "teacher-card-assign-as-hw":
115
- m == null || m(e, t);
107
+ h == null || h(e, r);
116
108
  return;
117
109
  default:
118
- throw new Error(`No callback function for ${W}`);
110
+ throw new Error(`No callback function for ${S}`);
119
111
  }
120
112
  },
121
113
  [
122
114
  e,
123
- m,
124
115
  h,
116
+ u,
125
117
  d,
126
- w,
127
- E,
128
- t
118
+ p,
119
+ M,
120
+ r
129
121
  ]
130
- ), A = [
122
+ ), U = [
131
123
  {
132
124
  id: "teacher-card-view",
133
- label: a ? "Review" : "View",
134
- icon: X,
125
+ label: s ? "Review" : "View",
126
+ icon: W,
135
127
  disabled: !1,
136
- onClick: s
128
+ onClick: a
137
129
  },
138
130
  {
139
131
  id: "teacher-card-unassign",
140
132
  label: "Unassign",
141
- icon: ue,
142
- disabled: i ? _ === "MASTERY" : !J,
143
- onClick: s
133
+ icon: de,
134
+ disabled: i ? k === "MASTERY" : !Z,
135
+ onClick: a
144
136
  },
145
137
  {
146
138
  id: "teacher-card-redo",
147
139
  label: "Redo",
148
- icon: H,
149
- disabled: !O,
150
- onClick: s
140
+ icon: x,
141
+ disabled: !R,
142
+ onClick: a
151
143
  },
152
144
  {
153
145
  id: "teacher-card-assign-as-hw",
154
146
  label: "Assign as HW",
155
- icon: ee,
156
- disabled: !Z,
157
- onClick: s
147
+ icon: re,
148
+ disabled: !Q,
149
+ onClick: a
158
150
  }
159
- ], U = [
151
+ ], D = [
160
152
  {
161
153
  id: "student-card-view",
162
154
  label: "Review",
163
- icon: X,
164
- disabled: !a,
165
- onClick: s
155
+ icon: W,
156
+ disabled: !s,
157
+ onClick: a
166
158
  },
167
159
  {
168
160
  id: "student-card-reattempt",
169
161
  label: "Reattempt",
170
- icon: H,
171
- disabled: !O,
172
- onClick: s
162
+ icon: x,
163
+ disabled: !R,
164
+ onClick: a
173
165
  }
174
- ], T = N(
166
+ ], V = ee(
175
167
  () => he({
176
- canResume: p,
177
- canStart: f,
168
+ canResume: f,
169
+ canStart: m,
178
170
  homeworkId: o,
179
171
  isHomeWork: i,
180
- isStudent: u,
181
- milestoneId: l,
182
- nodeType: _,
183
- studentId: g,
172
+ isStudent: l,
173
+ milestoneId: r,
174
+ nodeType: k,
175
+ studentId: E,
184
176
  userNodeId: c
185
177
  }),
186
178
  [
187
- u,
179
+ l,
188
180
  i,
189
- g,
190
- _,
181
+ E,
182
+ k,
183
+ m,
191
184
  f,
192
- p,
193
185
  o,
194
186
  c,
195
- l
187
+ r
196
188
  ]
197
189
  );
198
- return /* @__PURE__ */ x(ce, { $position: "relative", $width: "fit-content", children: [
199
- /* @__PURE__ */ r(
200
- te,
190
+ return /* @__PURE__ */ O(oe, { $position: "relative", $width: "fit-content", children: [
191
+ /* @__PURE__ */ t(
192
+ ie,
201
193
  {
202
- onClick: u ? Q : E,
194
+ onClick: l ? A : M,
203
195
  label: "homework-card",
204
- analyticsLabel: T.analyticsLabel,
205
- analyticsProps: T.analyticsProps,
206
- children: /* @__PURE__ */ r(
207
- ne,
196
+ analyticsLabel: V.analyticsLabel,
197
+ analyticsProps: V.analyticsProps,
198
+ children: /* @__PURE__ */ t(
199
+ ce,
208
200
  {
209
- header: L,
210
- isInQueue: v,
201
+ header: F,
202
+ isInQueue: $,
211
203
  nodeData: e,
212
- studentContainerRef: $,
213
- subHeader: z,
214
- userType: R
204
+ studentContainerRef: y,
205
+ subHeader: B,
206
+ userType: I
215
207
  }
216
208
  )
217
209
  }
218
210
  ),
219
- u && !i && /* @__PURE__ */ r(
220
- F,
211
+ l && !i && /* @__PURE__ */ t(
212
+ j,
221
213
  {
222
214
  $width: 200,
223
- options: U,
224
- triggerRef: $,
225
- visible: G,
215
+ options: D,
216
+ triggerRef: y,
217
+ visible: J,
226
218
  shouldOpenOnRight: !1
227
219
  }
228
220
  ),
229
- !u && /* @__PURE__ */ x(oe, { $position: "absolute", $width: "fit-content", $borderRadiusX: 2, children: [
230
- /* @__PURE__ */ r(
231
- I,
221
+ !l && /* @__PURE__ */ O(se, { $position: "absolute", $width: "fit-content", $borderRadiusX: 2, children: [
222
+ /* @__PURE__ */ t(
223
+ X,
232
224
  {
233
225
  renderAs: "primary",
234
226
  tooltipItem: "Review",
235
227
  position: "bottom",
236
228
  zIndex: 6,
237
229
  parentWidth: "100%",
238
- hidden: V || K !== "WAIT_FOR_REVIEW" && i,
239
- children: /* @__PURE__ */ r(
230
+ hidden: v || K !== "WAIT_FOR_REVIEW" && i,
231
+ children: /* @__PURE__ */ t(
240
232
  ae,
241
233
  {
242
234
  $alignItems: "center",
243
235
  $justifyContent: "center",
244
- ref: y,
245
- onClick: q,
246
- children: /* @__PURE__ */ r(re, { width: 16, height: 16 })
236
+ ref: _,
237
+ onClick: G,
238
+ children: /* @__PURE__ */ t(te, { width: 16, height: 16 })
247
239
  }
248
240
  )
249
241
  }
250
242
  ),
251
- /* @__PURE__ */ r(
252
- F,
243
+ /* @__PURE__ */ t(
244
+ j,
253
245
  {
254
- options: A,
255
- triggerRef: y,
256
- visible: V,
257
- shouldOpenOnRight: B,
246
+ options: U,
247
+ triggerRef: _,
248
+ visible: v,
249
+ shouldOpenOnRight: P,
258
250
  $width: 144
259
251
  }
260
252
  )
261
253
  ] }),
262
- v && /* @__PURE__ */ r(se, { $background: "WHITE_5", children: /* @__PURE__ */ r(le, { $heightX: 1, $widthX: 6, children: /* @__PURE__ */ r(I, { renderAs: "primary", tooltipItem: "Not visible to student", position: "bottom", children: /* @__PURE__ */ r(ie, { $heightX: 1, $widthX: 6 }) }) }) })
254
+ $ && /* @__PURE__ */ t(le, { $background: "WHITE_5", children: /* @__PURE__ */ t(ue, { $heightX: 1, $widthX: 6, children: /* @__PURE__ */ t(X, { renderAs: "primary", tooltipItem: "Not visible to student", position: "bottom", children: /* @__PURE__ */ t(ne, { $heightX: 1, $widthX: 6 }) }) }) })
263
255
  ] });
264
- }, Ve = D(de);
256
+ }, Re = N(me);
265
257
  export {
266
- Ve as default
258
+ Re as default
267
259
  };
268
260
  //# sourceMappingURL=homework-card.js.map
@@ -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 Home2Icon from '../../assets/line-icons/icons/home2';\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 onNodeAssignAsHomework,\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 can_assign_as_homework: canAssignAsHw,\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 case 'teacher-card-assign-as-hw':\n onNodeAssignAsHomework?.(nodeData, userMilestoneId);\n\n return;\n\n default:\n throw new Error(`No callback function for ${optionId}`);\n }\n },\n [\n nodeData,\n onNodeAssignAsHomework,\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 id: 'teacher-card-assign-as-hw',\n label: 'Assign as HW',\n icon: Home2Icon,\n disabled: !canAssignAsHw,\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 $width={144}\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","onNodeAssignAsHomework","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","canAssignAsHw","isStudent","onStudentViewSheet","useCallback","onStudentCardClick","onTeacherCardClick","handleOnMenuOptionClick","optionId","teacherOptions","Eye2Icon","Styled.StyledMinus2Icon","RedoIcon","Home2Icon","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":";;;;;;;;;;;;;;AAiCA,MAAMA,KAAe,CAAC;AAAA;AAAA,EAEpB,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,wBAAAC;AAAA,EAEA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,UAAAC;AACF,MAA0B;AACxB,QAAMC,IAAaN,MAAa,YAC1B;AAAA,IACJ,WAAWO;AAAA,IACX,OAAAC;AAAA,IACA,aAAAC;AAAA,IACA,cAAcC;AAAA,IACd,mBAAmBC;AAAA,IACnB,aAAaC;AAAA,EACX,IAAArB,GAEEsB,IAAsBC,EAAuB,IAAI,GACjDC,IAAsBD,EAAuB,IAAI,GACjD,EAAE,aAAaE,GAAoB,aAAaC,MACpDC,EAA2BL,CAAmB,GAC1C,EAAE,aAAaM,GAAoB,aAAaC,MACpDF,EAA2BH,CAAmB,GAE1C;AAAA,IACJ,WAAWM;AAAA,IACX,YAAYC;AAAA,IACZ,YAAYC;AAAA,IACZ,cAAcC;AAAA,IACd,WAAWC;AAAA,IACX,wBAAwBC;AAAA,EACtB,IAAAjB,GACEkB,IAAYtB,MAAa,WAEzBuB,IAAqBC,EAAY,MAAM;AAC3C,QAAIN,GAAW;AACT,UAAA,OAAO7B,KAAiB;AACpB,cAAA,IAAI,MAAM,6BAA6B;AAG/C,UAAI,CAACgB;AACG,cAAA,IAAI,MAAM,kDAAkD;AAEpE,MAAAhB,EAAaH,GAAUa,CAAe;AAEtC;AAAA,IACF;AAAA,EAAA,GACC,CAACmB,GAAW7B,GAAcgB,GAAYnB,GAAUa,CAAe,CAAC,GAE7D0B,IAAqBD,EAAY,MAAM;AAC3C,QAAIR,KAAYC,GAAW;AACrB,UAAA,OAAO9B,KAAkB;AACrB,cAAA,IAAI,MAAM,kCAAkC;AAGpD,MAAAA,EAAcD,GAAUqB,CAAU;AAElC;AAAA,IACF;AAEA,QAAI,CAACN,GAAY;AACI,MAAAc;AAEnB;AAAA,IACF;AACmB,IAAAQ;EAAA,GAClB;AAAA,IACDP;AAAA,IACAC;AAAA,IACAhB;AAAA,IACAsB;AAAA,IACApC;AAAA,IACAD;AAAA,IACAqB;AAAA,IACAQ;AAAA,EAAA,CACD,GAEKW,IAAqBF,EAAY,MAAM;AAC3C,QAAIN,GAAW;AACT,UAAA,OAAO7B,KAAiB;AACpB,cAAA,IAAI,MAAM,iCAAiC;AAGnD,UAAI,CAACgB;AACG,cAAA,IAAI,MAAM,kDAAkD;AAEvD,MAAAhB,EAAAH,GAAUa,KAAmBO,GAAaC,CAAU;AAEjE;AAAA,IACF;AAEI,QAAA,OAAOhB,KAAe;AAClB,YAAA,IAAI,MAAM,+BAA+B;AAGtC,IAAAA,EAAAL,GAAUa,KAAmBO,CAAW;AAAA,EAAA,GAClD;AAAA,IACDY;AAAA,IACA3B;AAAA,IACAL;AAAA,IACAa;AAAA,IACAO;AAAA,IACAjB;AAAA,IACAgB;AAAA,IACAE;AAAA,EAAA,CACD,GAEKoB,IAA0BH;AAAA,IAC9B,CAACI,MAAqB;AACpB,cAAQA,GAAU;AAAA,QAChB,KAAK;AACgB,UAAAF;AAEnB;AAAA,QACF,KAAK;AACgB,UAAAH;AAEnB;AAAA,QACF,KAAK;AACH,UAAAjC,KAAA,QAAAA,EAAiBJ,GAAUa;AAE3B;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AACH,UAAAX,KAAA,QAAAA,EAAkBF,GAAUa;AAE5B;AAAA,QAEF,KAAK;AACH,UAAAP,KAAA,QAAAA,EAAyBN,GAAUa;AAEnC;AAAA,QAEF;AACE,gBAAM,IAAI,MAAM,4BAA4B6B,CAAQ,EAAE;AAAA,MAC1D;AAAA,IACF;AAAA,IACA;AAAA,MACE1C;AAAA,MACAM;AAAA,MACAJ;AAAA,MACAE;AAAA,MACAiC;AAAA,MACAG;AAAA,MACA3B;AAAA,IACF;AAAA,EAAA,GAGI8B,IAAiB;AAAA,IACrB;AAAA,MACE,IAAI;AAAA,MACJ,OAAOX,IAAY,WAAW;AAAA,MAC9B,MAAMY;AAAA,MACN,UAAU;AAAA,MACV,SAASH;AAAA,IACX;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAMI;AAAAA,MACN,UAAU9B,IAAaC,MAAa,YAAY,CAACiB;AAAA,MACjD,SAASQ;AAAA,IACX;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAMK;AAAA,MACN,UAAU,CAACZ;AAAA,MACX,SAASO;AAAA,IACX;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAMM;AAAA,MACN,UAAU,CAACZ;AAAA,MACX,SAASM;AAAA,IACX;AAAA,EAAA,GAGIO,IAAiB;AAAA,IACrB;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAMJ;AAAA,MACN,UAAU,CAACZ;AAAA,MACX,SAASS;AAAA,IACX;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAMK;AAAA,MACN,UAAU,CAACZ;AAAA,MACX,SAASO;AAAA,IACX;AAAA,EAAA,GAGIQ,IAAiBC;AAAA,IACrB,MACEC,GAAqB;AAAA,MACnB,WAAApB;AAAA,MACA,UAAAD;AAAA,MACA,YAAAT;AAAA,MACA,YAAAN;AAAA,MACA,WAAAqB;AAAA,MACA,aAAAhB;AAAA,MACA,UAAAJ;AAAA,MACA,WAAAL;AAAA,MACA,YAAAQ;AAAA,IAAA,CACD;AAAA,IACH;AAAA,MACEiB;AAAA,MACArB;AAAA,MACAJ;AAAA,MACAK;AAAA,MACAc;AAAA,MACAC;AAAA,MACAV;AAAA,MACAF;AAAA,MACAC;AAAA,IACF;AAAA,EAAA;AAGF,2BACGgC,IAAA,EAAqB,WAAU,YAAW,QAAO,eAChD,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,SAASlB,IAAYG,IAAqBC;AAAA,QAC1C,OAAM;AAAA,QACN,gBAAgBS,EAAe;AAAA,QAC/B,gBAAgBA,EAAe;AAAA,QAE/B,UAAA,gBAAAI;AAAA,UAACE;AAAA,UAAA;AAAA,YACC,QAAAhD;AAAA,YACA,WAAAC;AAAA,YACA,UAAAR;AAAA,YACA,qBAAAwB;AAAA,YACA,WAAAZ;AAAA,YACA,UAAAE;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IACF;AAAA,IACCsB,KAAa,CAACrB,KACb,gBAAAsC;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,QAAQ;AAAA,QACR,SAASR;AAAA,QACT,YAAYxB;AAAA,QACZ,SAASI;AAAA,QACT,mBAAmB;AAAA,MAAA;AAAA,IACrB;AAAA,IAED,CAACQ,KACA,gBAAAqB,EAACC,IAAA,EAAmB,WAAU,YAAW,QAAO,eAAc,gBAAgB,GAC5E,UAAA;AAAA,MAAA,gBAAAL;AAAA,QAACM;AAAA,QAAA;AAAA,UACC,UAAS;AAAA,UACT,aAAY;AAAA,UACZ,UAAS;AAAA,UACT,QAAQ;AAAA,UACR,aAAY;AAAA,UACZ,QAAQlC,KAAuBR,MAAU,qBAAqBF;AAAA,UAE9D,UAAA,gBAAAsC;AAAA,YAACO;AAAAA,YAAA;AAAA,cACC,aAAY;AAAA,cACZ,iBAAgB;AAAA,cAChB,KAAKtC;AAAA,cACL,SAASI;AAAA,cAET,UAAC,gBAAA2B,EAAAQ,IAAA,EAAiB,OAAO,IAAI,QAAQ,IAAI;AAAA,YAAA;AAAA,UAC3C;AAAA,QAAA;AAAA,MACF;AAAA,MACA,gBAAAR;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,SAASb;AAAA,UACT,YAAYrB;AAAA,UACZ,SAASG;AAAA,UACT,mBAAAf;AAAA,UACA,QAAQ;AAAA,QAAA;AAAA,MACV;AAAA,IAAA,GACF;AAAA,IAEDF,KACC,gBAAA6C,EAACS,IAAA,EAAqB,aAAY,WAChC,UAAA,gBAAAT,EAACU,IAAA,EAAoB,UAAU,GAAG,SAAS,GACzC,UAAC,gBAAAV,EAAAM,GAAA,EAAa,UAAS,WAAU,aAAY,0BAAyB,UAAS,UAC7E,UAAA,gBAAAN,EAACW,IAAS,EAAA,UAAU,GAAG,SAAS,EAAG,CAAA,EACrC,CAAA,EACF,CAAA,GACF;AAAA,EAEJ,EAAA,CAAA;AAEJ,GAEeC,KAAAC,EAAKnE,EAAY;"}
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 Home2Icon from '../../assets/line-icons/icons/home2';\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 onNodeAssignAsHomework,\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: nodeDataMilestoneId,\n homework_id: homeworkId,\n } = nodeData;\n\n const milestoneId = userMilestoneId || nodeDataMilestoneId || '';\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 can_assign_as_homework: canAssignAsHw,\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, milestoneId);\n\n return;\n }\n }, [canReview, onNodeReview, userNodeId, nodeData, milestoneId]);\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, milestoneId, 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 milestoneId,\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, 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, milestoneId);\n }, [canReview, onNodeView, nodeData, milestoneId, onNodeReview, userNodeId, homeworkId]);\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, milestoneId);\n\n return;\n case 'student-card-reattempt':\n case 'teacher-card-redo':\n onNodeReattempt?.(nodeData, milestoneId);\n\n return;\n\n case 'teacher-card-assign-as-hw':\n onNodeAssignAsHomework?.(nodeData, milestoneId);\n\n return;\n\n default:\n throw new Error(`No callback function for ${optionId}`);\n }\n },\n [\n nodeData,\n onNodeAssignAsHomework,\n onNodeReattempt,\n onNodeUnassign,\n onStudentViewSheet,\n onTeacherCardClick,\n milestoneId,\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 id: 'teacher-card-assign-as-hw',\n label: 'Assign as HW',\n icon: Home2Icon,\n disabled: !canAssignAsHw,\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 $width={144}\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","onNodeAssignAsHomework","header","isInQueue","renderAs","shouldOpenOnRight","studentId","subHeader","userMilestoneId","userType","isHomeWork","nodeType","state","permissions","userNodeId","nodeDataMilestoneId","homeworkId","milestoneId","teacherContainerRef","useRef","studentContainerRef","teacherMenuVisible","onTeacherMenuClick","useContextMenuClickHandler","studentMenuVisible","onStudentMenuClick","canStart","canResume","canReview","canUnassign","canReset","canAssignAsHw","isStudent","onStudentViewSheet","useCallback","onStudentCardClick","onTeacherCardClick","handleOnMenuOptionClick","optionId","teacherOptions","Eye2Icon","Styled.StyledMinus2Icon","RedoIcon","Home2Icon","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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"}
@@ -3,36 +3,36 @@ import { h as le } from "../../../node_modules/humanize-plus/dist/humanize.js";
3
3
  import { memo as Se, useMemo as me, useState as u, useCallback as Te, useEffect as p } from "react";
4
4
  import { ILLUSTRATIONS as ce } from "../../../assets/illustrations/illustrations.js";
5
5
  import { EVENTS as e } from "../../communication/pub-sub/constants.js";
6
- import { useInClassActionListener as de } from "../../communication/pub-sub/hooks.js";
6
+ import { useInClassActionListener as _e } from "../../communication/pub-sub/hooks.js";
7
7
  import { invalidateHomeworks as f } from "../../homework/hw-card-list/api/get-homeworks.js";
8
- import _e from "../../ui/separator/separator.js";
9
- import { invalidateMilestoneResources as Ne } from "./api/get-milestone-resources.js";
10
- import { useGetAllMilestonesdata as Ae, invalidateMilestonesData as Me } from "./api/get-milestones.js";
11
- import { invalidateTestHelpData as De } from "./api/get-tests-list.js";
12
- import Ie from "./filter-milestones.js";
13
- import Le from "./milestone-list/milestone-list.js";
14
- import Re from "./milestone-list/milestone-loader/milestone-loader.js";
8
+ import de from "../../ui/separator/separator.js";
9
+ import { invalidateMilestoneResources as Ae } from "./api/get-milestone-resources.js";
10
+ import { useGetAllMilestonesdata as Ne, invalidateMilestonesData as De } from "./api/get-milestones.js";
11
+ import { invalidateTestHelpData as Me } from "./api/get-tests-list.js";
12
+ import Re from "./filter-milestones.js";
13
+ import Ie from "./milestone-list/milestone-list.js";
14
+ import Le from "./milestone-list/milestone-loader/milestone-loader.js";
15
15
  import { ContentWrapper as Oe, LoaderWrapper as Ce } from "./styled.js";
16
- const ue = (d) => {
17
- Me(d);
16
+ const ue = (_) => {
17
+ De(_);
18
18
  }, pe = Se(
19
- ({ studentName: d, studentId: l, studentClassroomId: h, ...v }) => {
19
+ ({ studentName: _, studentId: l, studentClassroomId: h, ...v }) => {
20
20
  const {
21
21
  milestoneType: s,
22
- isStudentPresent: A,
22
+ isStudentPresent: N,
23
23
  isClassOngoing: P,
24
- userType: _,
24
+ userType: d,
25
25
  canCreatePlan: U,
26
26
  teacherName: G,
27
27
  parentName: g,
28
- courseStream: N,
29
- activeMilestoneId: w,
30
- activeTabId: F,
31
- onExpandPastMilestones: V,
32
- onAddOutcome: x,
33
- onChapterClick: b,
34
- onEdit: y,
35
- onCreateMilestoneTest: H,
28
+ courseStream: A,
29
+ activeMilestoneId: V,
30
+ activeTabId: w,
31
+ onExpandPastMilestones: F,
32
+ onAddOutcome: H,
33
+ onChapterClick: x,
34
+ onEdit: b,
35
+ onCreateMilestoneTest: y,
36
36
  onDraftPublish: k,
37
37
  onAddChapter: K,
38
38
  onCreatePlan: W,
@@ -51,31 +51,31 @@ const ue = (d) => {
51
51
  onNodeAssignAsHomework: oe
52
52
  } = v, n = me(
53
53
  () => ({
54
- milestone_state_group: s === "ACTIVE" ? _ === "TEACHER" ? "LIVE" : "STUDENT_LIVE" : s,
55
- course_stream: N,
54
+ milestone_state_group: s === "ACTIVE" ? d === "TEACHER" ? "LIVE" : "STUDENT_LIVE" : s,
55
+ course_stream: A,
56
56
  student_id: l
57
57
  }),
58
- [s, N, l, _]
58
+ [s, A, l, d]
59
59
  ), {
60
60
  data: o,
61
61
  getAll: m,
62
- isStale: M,
62
+ isStale: D,
63
63
  isProcessing: S
64
- } = Ae(n), [D, I] = u(), [L, R] = u(!1), se = Te(
64
+ } = Ne(n), [M, R] = u(), [I, L] = u(!1), se = Te(
65
65
  (T) => {
66
- const { searchText: i, selectedBoard: E, selectedGrade: r } = T || {};
67
- (i || E || r) && R(!0);
66
+ const { searchText: E, selectedBoard: i, selectedGrade: r } = T || {};
67
+ (E || i || r) && L(!0);
68
68
  const c = o == null ? void 0 : o.filter((t) => {
69
- const { milestone_name: ie, board: Ee, grade: re } = t || {};
70
- return (i ? ie.toLowerCase().includes(i.toLowerCase()) : !0) && (E ? Ee === E : !0) && (r ? re === r : !0);
69
+ const { milestone_name: Ee, board: ie, grade: re } = t || {};
70
+ return (E ? Ee.toLowerCase().includes(E.toLowerCase()) : !0) && (i ? ie === i : !0) && (r ? re === r : !0);
71
71
  });
72
- I(c);
72
+ R(c);
73
73
  },
74
74
  [o]
75
75
  ), ne = () => {
76
- R(!1), I(void 0);
76
+ L(!1), R(void 0);
77
77
  };
78
- if (de(
78
+ if (_e(
79
79
  {
80
80
  studentClassroomId: h,
81
81
  actions: [
@@ -98,67 +98,68 @@ const ue = (d) => {
98
98
  [e.GOAL_DELETED],
99
99
  [e.GOAL_OUTCOME_ADDED],
100
100
  [e.PAST_MILESTONE_OUTCOME_ADDED],
101
- [e.MILESTONE_TEST_ASSIGNED]
101
+ [e.MILESTONE_TEST_ASSIGNED],
102
+ [e.SHEET_MARKED_AS_REVIEWED]
102
103
  ],
103
104
  callback: (T) => {
104
105
  var r, c;
105
- const i = (r = T.find(
106
- (t) => t.eventName === e.MILESTONE_RESOURCE_ASSIGNED || t.eventName === e.MILESTONE_RESOURCE_UNASSIGNED || t.eventName === e.MILESTONE_RESOURCE_RESET
107
- )) == null ? void 0 : r.eventPayload, E = (c = T.find(
106
+ const E = (r = T.find(
107
+ (t) => t.eventName === e.MILESTONE_RESOURCE_ASSIGNED || t.eventName === e.MILESTONE_RESOURCE_UNASSIGNED || t.eventName === e.MILESTONE_RESOURCE_RESET || t.eventName === e.SHEET_MARKED_AS_REVIEWED
108
+ )) == null ? void 0 : r.eventPayload, i = (c = T.find(
108
109
  (t) => t.eventName === e.MILESTONE_TEST_ASSIGNED || t.eventName === e.MILESTONE_RESOURCE_RESET
109
110
  )) == null ? void 0 : c.eventPayload;
110
- if (i) {
111
- const { milestoneId: t } = i || {};
112
- f(l), Ne(t);
113
- }
114
111
  if (E) {
115
- const { milestoneId: t } = E;
116
- f(l), De(t);
112
+ const { milestoneId: t } = E || {};
113
+ f(l), Ae(t);
114
+ }
115
+ if (i) {
116
+ const { milestoneId: t } = i;
117
+ f(l), Me(t);
117
118
  }
118
119
  ue(n);
119
120
  }
120
121
  },
121
- (s === "ACTIVE" || s === "INACTIVE") && A
122
+ (s === "ACTIVE" || s === "INACTIVE") && N
122
123
  ), p(() => {
123
124
  m(n);
124
125
  }, [m, n]), p(() => {
125
- !S && M && m(n);
126
- }, [m, n, M, S]), S && !o)
127
- return /* @__PURE__ */ a(Re, { numMilestones: 2 });
126
+ !S && D && m(n);
127
+ }, [m, n, D, S]), S && !o)
128
+ return /* @__PURE__ */ a(Le, { numMilestones: 2 });
128
129
  const O = s === "ACTIVE" && o && o.length > 6;
129
130
  return /* @__PURE__ */ C(Oe, { $disablePointerEvents: S, children: [
130
131
  S && /* @__PURE__ */ a(Ce, { children: /* @__PURE__ */ a("img", { src: ce.LOADER_1, alt: "loading" }) }),
131
132
  O && /* @__PURE__ */ C(ae, { children: [
132
133
  /* @__PURE__ */ a(
133
- Ie,
134
+ Re,
134
135
  {
135
- filteredMilestones: D,
136
+ filteredMilestones: M,
136
137
  milestones: o,
137
138
  handleFilterMilestones: se,
138
139
  handleClearFilter: ne
139
140
  }
140
141
  ),
141
- /* @__PURE__ */ a(_e, { heightX: 1.5 })
142
+ /* @__PURE__ */ a(de, { heightX: 1.5 })
142
143
  ] }),
143
144
  /* @__PURE__ */ a(
144
- Le,
145
+ Ie,
145
146
  {
146
147
  showFilters: !!O,
147
148
  canCreatePlan: U,
148
149
  isClassOngoing: P,
149
- isFiltersAdded: L,
150
- isStudentPresent: A,
150
+ isFiltersAdded: I,
151
+ isStudentPresent: N,
151
152
  milestoneType: s,
152
- milestones: L ? D : o,
153
+ milestones: I ? M : o,
153
154
  onAddChapter: K,
154
- onAddOutcome: x,
155
- onChapterClick: b,
155
+ onAddOutcome: H,
156
+ onChapterClick: x,
156
157
  onCreatePlan: W,
157
158
  onDelete: j,
158
159
  onDraftPublish: k,
159
- onEdit: y,
160
- onExpandPastMilestones: V,
161
- onCreateMilestoneTest: H,
160
+ onEdit: b,
161
+ onExpandPastMilestones: F,
162
+ onCreateMilestoneTest: y,
162
163
  onAssignResources: X,
163
164
  onTestPreview: Y,
164
165
  onTestReview: Z,
@@ -170,15 +171,15 @@ const ue = (d) => {
170
171
  onNodeReset: J,
171
172
  onNodeUnassign: Q,
172
173
  onNodeAssignAsHomework: oe,
173
- activeMilestoneId: w,
174
- activeTabId: F,
174
+ activeMilestoneId: V,
175
+ activeTabId: w,
175
176
  onWidgetTabSelection: te,
176
177
  studentId: l,
177
- studentName: le.titleCase(d),
178
+ studentName: le.titleCase(_),
178
179
  teacherName: G,
179
180
  parentName: g,
180
- userType: _,
181
- courseStream: N
181
+ userType: d,
182
+ courseStream: A
182
183
  }
183
184
  )
184
185
  ] });
@@ -1 +1 @@
1
- {"version":3,"file":"milestone-list-container.js","sources":["../../../../src/features/milestone/milestone-list-container/milestone-list-container.tsx"],"sourcesContent":["import type {\n IMilestoneContainerProps,\n IMilestoneListQueryParams,\n} from './milestone-list-container-types';\nimport type { IMilestoneData } from './milestone-list/milestone-list-types';\n\nimport { titleCase } from 'humanize-plus';\nimport React, { memo, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../assets/illustrations/illustrations';\nimport { EVENTS } from '../../communication/pub-sub/constants';\nimport { useInClassActionListener } from '../../communication/pub-sub/hooks';\nimport { invalidateHomeworks } from '../../homework/hw-card-list/api/get-homeworks';\nimport Separator from '../../ui/separator/separator';\nimport { invalidateMilestoneResources } from './api/get-milestone-resources';\nimport { useGetAllMilestonesdata, invalidateMilestonesData } from './api/get-milestones';\nimport { invalidateTestHelpData } from './api/get-tests-list';\nimport FilterMilestones from './filter-milestones';\nimport MilestoneList from './milestone-list/milestone-list';\nimport MilestoneLoader from './milestone-list/milestone-loader/milestone-loader';\nimport * as Styled from './styled';\n\nconst invalidateAllMilestones = (queryParams: IMilestoneListQueryParams) => {\n invalidateMilestonesData(queryParams);\n};\n\nconst MilestoneListContainer: React.FC<IMilestoneContainerProps> = memo(\n ({ studentName, studentId, studentClassroomId, ...restMilestoneListContainerProps }) => {\n const {\n milestoneType,\n isStudentPresent,\n isClassOngoing,\n userType,\n canCreatePlan,\n teacherName,\n parentName,\n courseStream,\n activeMilestoneId,\n activeTabId,\n onExpandPastMilestones,\n onAddOutcome,\n onChapterClick,\n onEdit,\n onCreateMilestoneTest,\n onDraftPublish,\n onAddChapter,\n onCreatePlan,\n onDelete,\n onAssignResources,\n onNodeAttempt,\n onNodeView,\n onNodeReview,\n onNodeReattempt,\n onNodeReset,\n onNodeUnassign,\n onTestPreview,\n onTestReview,\n onTestStart,\n onWidgetTabSelection,\n onNodeAssignAsHomework,\n } = restMilestoneListContainerProps;\n\n const queryParams: IMilestoneListQueryParams = useMemo(\n () =>\n ({\n milestone_state_group:\n milestoneType === 'ACTIVE'\n ? userType === 'TEACHER'\n ? 'LIVE'\n : 'STUDENT_LIVE'\n : milestoneType,\n course_stream: courseStream,\n student_id: studentId,\n }) as const,\n [milestoneType, courseStream, studentId, userType],\n );\n\n const {\n data: milestoneData,\n getAll: getMilestoneData,\n isStale: isMilestoneDataStale,\n isProcessing: isMilestoneProcessing,\n } = useGetAllMilestonesdata(queryParams);\n\n const [filteredMilestones, setFilteredMilestones] = useState<IMilestoneData[] | undefined>();\n const [isFiltersAdded, setIsFiltersAdded] = useState<boolean>(false);\n\n const handleFilterMilestones = useCallback(\n (data: { searchText?: string; selectedBoard?: string; selectedGrade?: string }) => {\n const { searchText, selectedBoard, selectedGrade } = data || {};\n\n if (searchText || selectedBoard || selectedGrade) {\n setIsFiltersAdded(true);\n }\n\n const filteredData = milestoneData?.filter(item => {\n const { milestone_name: milestoneName, board, grade } = item || {};\n const matchesSearchText = searchText\n ? milestoneName.toLowerCase().includes(searchText.toLowerCase())\n : true;\n const matchesCurriculum = selectedBoard ? board === selectedBoard : true;\n const matchesGrade = selectedGrade ? grade === selectedGrade : true;\n\n return matchesSearchText && matchesCurriculum && matchesGrade;\n });\n\n setFilteredMilestones(filteredData);\n },\n [milestoneData],\n );\n\n const handleClearFilter = () => {\n setIsFiltersAdded(false);\n setFilteredMilestones(undefined);\n };\n\n useInClassActionListener(\n {\n studentClassroomId,\n actions: [\n [EVENTS.CHAPTER_UPDATED],\n [EVENTS.LESSONS_MARKED_AS_FAMILIAR],\n [EVENTS.LESSONS_MARKED_AS_IRRELEVANT],\n [EVENTS.LESSONS_PROGRESS_RESET],\n [EVENTS.UNLOCK_SHEETS],\n [EVENTS.EXTRA_PRACTICE_ASSIGNED],\n [EVENTS.MILESTONE_DATE_UPDATED],\n [EVENTS.MILESTONE_DELETED],\n [EVENTS.MILESTONE_NAME_UPDATED],\n [EVENTS.MILESTONE_EDITED],\n [EVENTS.MILESTONE_RESOURCE_ASSIGNED],\n [EVENTS.MILESTONE_RESOURCE_UNASSIGNED],\n [EVENTS.MILESTONE_RESOURCE_RESET],\n [EVENTS.SHEET_UNASSIGNED],\n [EVENTS.GOAL_CREATED],\n [EVENTS.GOAL_EDITED],\n [EVENTS.GOAL_DELETED],\n [EVENTS.GOAL_OUTCOME_ADDED],\n [EVENTS.PAST_MILESTONE_OUTCOME_ADDED],\n [EVENTS.MILESTONE_TEST_ASSIGNED],\n ],\n callback: messages => {\n const milestoneResourceEventPayload = messages.find(\n message =>\n message.eventName === EVENTS.MILESTONE_RESOURCE_ASSIGNED ||\n message.eventName === EVENTS.MILESTONE_RESOURCE_UNASSIGNED ||\n message.eventName === EVENTS.MILESTONE_RESOURCE_RESET,\n )?.eventPayload;\n const milestoneTestEventPayload = messages.find(\n message =>\n message.eventName === EVENTS.MILESTONE_TEST_ASSIGNED ||\n message.eventName === EVENTS.MILESTONE_RESOURCE_RESET,\n )?.eventPayload;\n\n if (milestoneResourceEventPayload) {\n const { milestoneId: resourceMilestoneId } =\n (milestoneResourceEventPayload as { milestoneId: string }) || {};\n\n invalidateHomeworks(studentId);\n invalidateMilestoneResources(resourceMilestoneId);\n }\n\n if (milestoneTestEventPayload) {\n const { milestoneId } = milestoneTestEventPayload as { milestoneId: string };\n\n invalidateHomeworks(studentId);\n invalidateTestHelpData(milestoneId);\n }\n\n invalidateAllMilestones(queryParams);\n },\n },\n (milestoneType === 'ACTIVE' || milestoneType === 'INACTIVE') && isStudentPresent,\n );\n\n useEffect(() => {\n getMilestoneData(queryParams);\n }, [getMilestoneData, queryParams]);\n\n useEffect(() => {\n if (!isMilestoneProcessing && isMilestoneDataStale) {\n getMilestoneData(queryParams);\n }\n }, [getMilestoneData, queryParams, isMilestoneDataStale, isMilestoneProcessing]);\n\n if (isMilestoneProcessing && !milestoneData) {\n return <MilestoneLoader numMilestones={2} />;\n }\n\n const showFilters = milestoneType === 'ACTIVE' && milestoneData && milestoneData.length > 6;\n\n return (\n <Styled.ContentWrapper $disablePointerEvents={isMilestoneProcessing}>\n {isMilestoneProcessing && (\n <Styled.LoaderWrapper>\n <img src={ILLUSTRATIONS.LOADER_1} alt=\"loading\" />\n </Styled.LoaderWrapper>\n )}\n {showFilters && (\n <>\n <FilterMilestones\n filteredMilestones={filteredMilestones}\n milestones={milestoneData}\n handleFilterMilestones={handleFilterMilestones}\n handleClearFilter={handleClearFilter}\n />\n <Separator heightX={1.5} />\n </>\n )}\n\n <MilestoneList\n showFilters={!!showFilters}\n canCreatePlan={canCreatePlan}\n isClassOngoing={isClassOngoing}\n isFiltersAdded={isFiltersAdded}\n isStudentPresent={isStudentPresent}\n milestoneType={milestoneType}\n milestones={isFiltersAdded ? filteredMilestones : milestoneData}\n onAddChapter={onAddChapter}\n onAddOutcome={onAddOutcome}\n onChapterClick={onChapterClick}\n onCreatePlan={onCreatePlan}\n onDelete={onDelete}\n onDraftPublish={onDraftPublish}\n onEdit={onEdit}\n onExpandPastMilestones={onExpandPastMilestones}\n onCreateMilestoneTest={onCreateMilestoneTest}\n onAssignResources={onAssignResources}\n onTestPreview={onTestPreview}\n onTestReview={onTestReview}\n onTestStart={onTestStart}\n onNodeAttempt={onNodeAttempt}\n onNodeView={onNodeView}\n onNodeReview={onNodeReview}\n onNodeReattempt={onNodeReattempt}\n onNodeReset={onNodeReset}\n onNodeUnassign={onNodeUnassign}\n onNodeAssignAsHomework={onNodeAssignAsHomework}\n activeMilestoneId={activeMilestoneId}\n activeTabId={activeTabId}\n onWidgetTabSelection={onWidgetTabSelection}\n studentId={studentId}\n studentName={titleCase(studentName)}\n teacherName={teacherName}\n parentName={parentName}\n userType={userType}\n courseStream={courseStream}\n />\n </Styled.ContentWrapper>\n );\n },\n);\n\nexport default MilestoneListContainer;\n"],"names":["invalidateAllMilestones","queryParams","invalidateMilestonesData","MilestoneListContainer","memo","studentName","studentId","studentClassroomId","restMilestoneListContainerProps","milestoneType","isStudentPresent","isClassOngoing","userType","canCreatePlan","teacherName","parentName","courseStream","activeMilestoneId","activeTabId","onExpandPastMilestones","onAddOutcome","onChapterClick","onEdit","onCreateMilestoneTest","onDraftPublish","onAddChapter","onCreatePlan","onDelete","onAssignResources","onNodeAttempt","onNodeView","onNodeReview","onNodeReattempt","onNodeReset","onNodeUnassign","onTestPreview","onTestReview","onTestStart","onWidgetTabSelection","onNodeAssignAsHomework","useMemo","milestoneData","getMilestoneData","isMilestoneDataStale","isMilestoneProcessing","useGetAllMilestonesdata","filteredMilestones","setFilteredMilestones","useState","isFiltersAdded","setIsFiltersAdded","handleFilterMilestones","useCallback","data","searchText","selectedBoard","selectedGrade","filteredData","item","milestoneName","board","grade","handleClearFilter","useInClassActionListener","EVENTS","messages","milestoneResourceEventPayload","_a","message","milestoneTestEventPayload","_b","resourceMilestoneId","invalidateHomeworks","invalidateMilestoneResources","milestoneId","invalidateTestHelpData","useEffect","jsx","MilestoneLoader","showFilters","jsxs","Styled.ContentWrapper","Styled.LoaderWrapper","ILLUSTRATIONS","Fragment","FilterMilestones","Separator","MilestoneList","titleCase","MilestoneListContainer$1"],"mappings":"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"}
1
+ {"version":3,"file":"milestone-list-container.js","sources":["../../../../src/features/milestone/milestone-list-container/milestone-list-container.tsx"],"sourcesContent":["import type {\n IMilestoneContainerProps,\n IMilestoneListQueryParams,\n} from './milestone-list-container-types';\nimport type { IMilestoneData } from './milestone-list/milestone-list-types';\n\nimport { titleCase } from 'humanize-plus';\nimport React, { memo, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../assets/illustrations/illustrations';\nimport { EVENTS } from '../../communication/pub-sub/constants';\nimport { useInClassActionListener } from '../../communication/pub-sub/hooks';\nimport { invalidateHomeworks } from '../../homework/hw-card-list/api/get-homeworks';\nimport Separator from '../../ui/separator/separator';\nimport { invalidateMilestoneResources } from './api/get-milestone-resources';\nimport { useGetAllMilestonesdata, invalidateMilestonesData } from './api/get-milestones';\nimport { invalidateTestHelpData } from './api/get-tests-list';\nimport FilterMilestones from './filter-milestones';\nimport MilestoneList from './milestone-list/milestone-list';\nimport MilestoneLoader from './milestone-list/milestone-loader/milestone-loader';\nimport * as Styled from './styled';\n\nconst invalidateAllMilestones = (queryParams: IMilestoneListQueryParams) => {\n invalidateMilestonesData(queryParams);\n};\n\nconst MilestoneListContainer: React.FC<IMilestoneContainerProps> = memo(\n ({ studentName, studentId, studentClassroomId, ...restMilestoneListContainerProps }) => {\n const {\n milestoneType,\n isStudentPresent,\n isClassOngoing,\n userType,\n canCreatePlan,\n teacherName,\n parentName,\n courseStream,\n activeMilestoneId,\n activeTabId,\n onExpandPastMilestones,\n onAddOutcome,\n onChapterClick,\n onEdit,\n onCreateMilestoneTest,\n onDraftPublish,\n onAddChapter,\n onCreatePlan,\n onDelete,\n onAssignResources,\n onNodeAttempt,\n onNodeView,\n onNodeReview,\n onNodeReattempt,\n onNodeReset,\n onNodeUnassign,\n onTestPreview,\n onTestReview,\n onTestStart,\n onWidgetTabSelection,\n onNodeAssignAsHomework,\n } = restMilestoneListContainerProps;\n\n const queryParams: IMilestoneListQueryParams = useMemo(\n () =>\n ({\n milestone_state_group:\n milestoneType === 'ACTIVE'\n ? userType === 'TEACHER'\n ? 'LIVE'\n : 'STUDENT_LIVE'\n : milestoneType,\n course_stream: courseStream,\n student_id: studentId,\n }) as const,\n [milestoneType, courseStream, studentId, userType],\n );\n\n const {\n data: milestoneData,\n getAll: getMilestoneData,\n isStale: isMilestoneDataStale,\n isProcessing: isMilestoneProcessing,\n } = useGetAllMilestonesdata(queryParams);\n\n const [filteredMilestones, setFilteredMilestones] = useState<IMilestoneData[] | undefined>();\n const [isFiltersAdded, setIsFiltersAdded] = useState<boolean>(false);\n\n const handleFilterMilestones = useCallback(\n (data: { searchText?: string; selectedBoard?: string; selectedGrade?: string }) => {\n const { searchText, selectedBoard, selectedGrade } = data || {};\n\n if (searchText || selectedBoard || selectedGrade) {\n setIsFiltersAdded(true);\n }\n\n const filteredData = milestoneData?.filter(item => {\n const { milestone_name: milestoneName, board, grade } = item || {};\n const matchesSearchText = searchText\n ? milestoneName.toLowerCase().includes(searchText.toLowerCase())\n : true;\n const matchesCurriculum = selectedBoard ? board === selectedBoard : true;\n const matchesGrade = selectedGrade ? grade === selectedGrade : true;\n\n return matchesSearchText && matchesCurriculum && matchesGrade;\n });\n\n setFilteredMilestones(filteredData);\n },\n [milestoneData],\n );\n\n const handleClearFilter = () => {\n setIsFiltersAdded(false);\n setFilteredMilestones(undefined);\n };\n\n useInClassActionListener(\n {\n studentClassroomId,\n actions: [\n [EVENTS.CHAPTER_UPDATED],\n [EVENTS.LESSONS_MARKED_AS_FAMILIAR],\n [EVENTS.LESSONS_MARKED_AS_IRRELEVANT],\n [EVENTS.LESSONS_PROGRESS_RESET],\n [EVENTS.UNLOCK_SHEETS],\n [EVENTS.EXTRA_PRACTICE_ASSIGNED],\n [EVENTS.MILESTONE_DATE_UPDATED],\n [EVENTS.MILESTONE_DELETED],\n [EVENTS.MILESTONE_NAME_UPDATED],\n [EVENTS.MILESTONE_EDITED],\n [EVENTS.MILESTONE_RESOURCE_ASSIGNED],\n [EVENTS.MILESTONE_RESOURCE_UNASSIGNED],\n [EVENTS.MILESTONE_RESOURCE_RESET],\n [EVENTS.SHEET_UNASSIGNED],\n [EVENTS.GOAL_CREATED],\n [EVENTS.GOAL_EDITED],\n [EVENTS.GOAL_DELETED],\n [EVENTS.GOAL_OUTCOME_ADDED],\n [EVENTS.PAST_MILESTONE_OUTCOME_ADDED],\n [EVENTS.MILESTONE_TEST_ASSIGNED],\n [EVENTS.SHEET_MARKED_AS_REVIEWED],\n ],\n callback: messages => {\n const milestoneResourceEventPayload = messages.find(\n message =>\n message.eventName === EVENTS.MILESTONE_RESOURCE_ASSIGNED ||\n message.eventName === EVENTS.MILESTONE_RESOURCE_UNASSIGNED ||\n message.eventName === EVENTS.MILESTONE_RESOURCE_RESET ||\n message.eventName === EVENTS.SHEET_MARKED_AS_REVIEWED,\n )?.eventPayload;\n const milestoneTestEventPayload = messages.find(\n message =>\n message.eventName === EVENTS.MILESTONE_TEST_ASSIGNED ||\n message.eventName === EVENTS.MILESTONE_RESOURCE_RESET,\n )?.eventPayload;\n\n if (milestoneResourceEventPayload) {\n const { milestoneId: resourceMilestoneId } =\n (milestoneResourceEventPayload as { milestoneId: string }) || {};\n\n invalidateHomeworks(studentId);\n invalidateMilestoneResources(resourceMilestoneId);\n }\n\n if (milestoneTestEventPayload) {\n const { milestoneId } = milestoneTestEventPayload as { milestoneId: string };\n\n invalidateHomeworks(studentId);\n invalidateTestHelpData(milestoneId);\n }\n\n invalidateAllMilestones(queryParams);\n },\n },\n (milestoneType === 'ACTIVE' || milestoneType === 'INACTIVE') && isStudentPresent,\n );\n\n useEffect(() => {\n getMilestoneData(queryParams);\n }, [getMilestoneData, queryParams]);\n\n useEffect(() => {\n if (!isMilestoneProcessing && isMilestoneDataStale) {\n getMilestoneData(queryParams);\n }\n }, [getMilestoneData, queryParams, isMilestoneDataStale, isMilestoneProcessing]);\n\n if (isMilestoneProcessing && !milestoneData) {\n return <MilestoneLoader numMilestones={2} />;\n }\n\n const showFilters = milestoneType === 'ACTIVE' && milestoneData && milestoneData.length > 6;\n\n return (\n <Styled.ContentWrapper $disablePointerEvents={isMilestoneProcessing}>\n {isMilestoneProcessing && (\n <Styled.LoaderWrapper>\n <img src={ILLUSTRATIONS.LOADER_1} alt=\"loading\" />\n </Styled.LoaderWrapper>\n )}\n {showFilters && (\n <>\n <FilterMilestones\n filteredMilestones={filteredMilestones}\n milestones={milestoneData}\n handleFilterMilestones={handleFilterMilestones}\n handleClearFilter={handleClearFilter}\n />\n <Separator heightX={1.5} />\n </>\n )}\n\n <MilestoneList\n showFilters={!!showFilters}\n canCreatePlan={canCreatePlan}\n isClassOngoing={isClassOngoing}\n isFiltersAdded={isFiltersAdded}\n isStudentPresent={isStudentPresent}\n milestoneType={milestoneType}\n milestones={isFiltersAdded ? filteredMilestones : milestoneData}\n onAddChapter={onAddChapter}\n onAddOutcome={onAddOutcome}\n onChapterClick={onChapterClick}\n onCreatePlan={onCreatePlan}\n onDelete={onDelete}\n onDraftPublish={onDraftPublish}\n onEdit={onEdit}\n onExpandPastMilestones={onExpandPastMilestones}\n onCreateMilestoneTest={onCreateMilestoneTest}\n onAssignResources={onAssignResources}\n onTestPreview={onTestPreview}\n onTestReview={onTestReview}\n onTestStart={onTestStart}\n onNodeAttempt={onNodeAttempt}\n onNodeView={onNodeView}\n onNodeReview={onNodeReview}\n onNodeReattempt={onNodeReattempt}\n onNodeReset={onNodeReset}\n onNodeUnassign={onNodeUnassign}\n onNodeAssignAsHomework={onNodeAssignAsHomework}\n activeMilestoneId={activeMilestoneId}\n activeTabId={activeTabId}\n onWidgetTabSelection={onWidgetTabSelection}\n studentId={studentId}\n studentName={titleCase(studentName)}\n teacherName={teacherName}\n parentName={parentName}\n userType={userType}\n courseStream={courseStream}\n />\n </Styled.ContentWrapper>\n );\n },\n);\n\nexport default MilestoneListContainer;\n"],"names":["invalidateAllMilestones","queryParams","invalidateMilestonesData","MilestoneListContainer","memo","studentName","studentId","studentClassroomId","restMilestoneListContainerProps","milestoneType","isStudentPresent","isClassOngoing","userType","canCreatePlan","teacherName","parentName","courseStream","activeMilestoneId","activeTabId","onExpandPastMilestones","onAddOutcome","onChapterClick","onEdit","onCreateMilestoneTest","onDraftPublish","onAddChapter","onCreatePlan","onDelete","onAssignResources","onNodeAttempt","onNodeView","onNodeReview","onNodeReattempt","onNodeReset","onNodeUnassign","onTestPreview","onTestReview","onTestStart","onWidgetTabSelection","onNodeAssignAsHomework","useMemo","milestoneData","getMilestoneData","isMilestoneDataStale","isMilestoneProcessing","useGetAllMilestonesdata","filteredMilestones","setFilteredMilestones","useState","isFiltersAdded","setIsFiltersAdded","handleFilterMilestones","useCallback","data","searchText","selectedBoard","selectedGrade","filteredData","item","milestoneName","board","grade","handleClearFilter","useInClassActionListener","EVENTS","messages","milestoneResourceEventPayload","_a","message","milestoneTestEventPayload","_b","resourceMilestoneId","invalidateHomeworks","invalidateMilestoneResources","milestoneId","invalidateTestHelpData","useEffect","jsx","MilestoneLoader","showFilters","jsxs","Styled.ContentWrapper","Styled.LoaderWrapper","ILLUSTRATIONS","Fragment","FilterMilestones","Separator","MilestoneList","titleCase","MilestoneListContainer$1"],"mappings":"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"}
@@ -1,17 +1,17 @@
1
- import { jsxs as u, jsx as e, Fragment as x } from "react/jsx-runtime";
2
- import { memo as L, useCallback as l, useEffect as X } from "react";
3
- import { IMAGES as D } from "../../../../assets/images/images.js";
4
- import j from "../../../ui/arrow-tooltip/arrow-tooltip.js";
1
+ import { jsxs as u, jsx as e, Fragment as X } from "react/jsx-runtime";
2
+ import { memo as D, useCallback as l, useEffect as j } from "react";
3
+ import { IMAGES as G } from "../../../../assets/images/images.js";
4
+ import R from "../../../ui/arrow-tooltip/arrow-tooltip.js";
5
5
  import S from "../../../ui/buttons/button/button.js";
6
6
  import T from "../../../ui/layout/flex-view.js";
7
- import G from "../../../ui/loader/app-loader/app-loader.js";
7
+ import W from "../../../ui/loader/app-loader/app-loader.js";
8
8
  import _ from "../../../ui/separator/separator.js";
9
9
  import N from "../../../ui/text/text.js";
10
10
  import { MILESTONE_WIDGET_MIN_HEIGHT as v } from "../../constants.js";
11
- import { useGetTestHelpData as R } from "../../milestone-list-container/api/get-tests-list.js";
12
- import { TESTS_CREATION_ANALYTICS_EVENTS as W } from "../tests-creation/tests-creation-analytics-events.js";
13
- import F from "./test-list-view.js";
14
- const oe = L((c) => {
11
+ import { useGetTestHelpData as F } from "../../milestone-list-container/api/get-tests-list.js";
12
+ import { TESTS_CREATION_ANALYTICS_EVENTS as U } from "../tests-creation/tests-creation-analytics-events.js";
13
+ import V from "./test-list-view.js";
14
+ const ne = D((c) => {
15
15
  const {
16
16
  isChaptersAvailable: g,
17
17
  isDraftMilestone: E,
@@ -33,12 +33,12 @@ const oe = L((c) => {
33
33
  isProcessed: f,
34
34
  isStale: w,
35
35
  isProcessing: C
36
- } = R(), y = !I || !g || !d || d && E, M = d && !g ? "Chapters need to be assigned" : E ? "Allowed after plan is published" : "Plan is completed", h = l(() => {
36
+ } = F(), y = !I || !g || !d || d && E, M = d && !g ? "Chapters need to be assigned" : E ? "Allowed after plan is published" : "Plan is completed", h = l(() => {
37
37
  A(t, void 0, {
38
38
  studentId: m
39
39
  });
40
40
  }, [A, m, t]);
41
- X(() => {
41
+ j(() => {
42
42
  !C && (!f && !p || w) && h();
43
43
  }, [h, f, C, p, w]);
44
44
  const $ = l(() => {
@@ -57,9 +57,9 @@ const oe = L((c) => {
57
57
  },
58
58
  [i, t]
59
59
  ), H = l(
60
- (a) => {
60
+ (a, x, L) => {
61
61
  if (typeof n == "function") {
62
- n == null || n(a);
62
+ n == null || n(a, x, L);
63
63
  return;
64
64
  }
65
65
  throw new Error("No callback provided. If provided it must be a function");
@@ -99,7 +99,7 @@ const oe = L((c) => {
99
99
  ]
100
100
  }
101
101
  ) : f ? r != null && r.length ? /* @__PURE__ */ e(
102
- F,
102
+ V,
103
103
  {
104
104
  ...c,
105
105
  onNodeAttempt: H,
@@ -123,11 +123,11 @@ const oe = L((c) => {
123
123
  $background: "WHITE",
124
124
  $height: v,
125
125
  children: [
126
- /* @__PURE__ */ e("img", { src: D.EMPTY_MIX_TESTS, alt: "empty_mix_tests" }),
126
+ /* @__PURE__ */ e("img", { src: G.EMPTY_MIX_TESTS, alt: "empty_mix_tests" }),
127
127
  /* @__PURE__ */ e(_, { heightX: 2 }),
128
- b === "TEACHER" ? /* @__PURE__ */ u(x, { children: [
128
+ b === "TEACHER" ? /* @__PURE__ */ u(X, { children: [
129
129
  /* @__PURE__ */ e(
130
- j,
130
+ R,
131
131
  {
132
132
  renderAs: "primary",
133
133
  position: "bottom",
@@ -143,7 +143,7 @@ const oe = L((c) => {
143
143
  label: "Create a Test",
144
144
  onClick: $,
145
145
  disabled: y,
146
- analyticsLabel: W.CUSTOM_TEST_CREATION_STARTED,
146
+ analyticsLabel: U.CUSTOM_TEST_CREATION_STARTED,
147
147
  analyticsProps: {
148
148
  milestone_id: t
149
149
  }
@@ -162,11 +162,11 @@ const oe = L((c) => {
162
162
  $alignItems: "center",
163
163
  $justifyContent: "center",
164
164
  $background: "WHITE",
165
- children: /* @__PURE__ */ e(G, { height: "100%" })
165
+ children: /* @__PURE__ */ e(W, { height: "100%" })
166
166
  }
167
167
  );
168
168
  });
169
169
  export {
170
- oe as default
170
+ ne as default
171
171
  };
172
172
  //# sourceMappingURL=test-list-container.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-list-container.js","sources":["../../../../../src/features/milestone/milestone-tests/test-list-v2/test-list-container.tsx"],"sourcesContent":["import type { INodeDataProps } from '../../../chapters-v2/comps/node-card/node-card-types';\nimport type { ITestsListProps } from './types';\n\nimport { memo, useCallback, useEffect, type FC } from 'react';\n\nimport { IMAGES } from '../../../../assets/images/images';\nimport ArrowTooltip from '../../../ui/arrow-tooltip/arrow-tooltip';\nimport Button from '../../../ui/buttons/button/button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport AppLoader from '../../../ui/loader/app-loader/app-loader';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport { MILESTONE_WIDGET_MIN_HEIGHT } from '../../constants';\nimport { useGetTestHelpData } from '../../milestone-list-container/api/get-tests-list';\nimport { TESTS_CREATION_ANALYTICS_EVENTS } from '../tests-creation/tests-creation-analytics-events';\nimport TestSheetsList from './test-list-view';\n\nconst MilestoneTestsList: FC<ITestsListProps> = memo(props => {\n const {\n isChaptersAvailable,\n isDraftMilestone,\n isMilestoneActive,\n userType,\n studentId,\n userMilestoneId,\n canUpdatePlan,\n } = props;\n const {\n onCreateMilestoneTest,\n onTestPreview,\n onTestStart,\n onTestReview,\n onNodeAssignAsHomework,\n } = props;\n\n const {\n get: getTestHelpData,\n data,\n isProcessingFailed,\n isProcessed,\n isStale,\n isProcessing,\n } = useGetTestHelpData();\n\n const isTestSheetCreationDisabled =\n !canUpdatePlan ||\n !isChaptersAvailable ||\n !isMilestoneActive ||\n (isMilestoneActive && isDraftMilestone);\n const testCreationCtaTooltipText =\n isMilestoneActive && !isChaptersAvailable\n ? 'Chapters need to be assigned'\n : isDraftMilestone\n ? 'Allowed after plan is published'\n : 'Plan is completed';\n\n const handleOnTryAgain = useCallback(() => {\n getTestHelpData(userMilestoneId, undefined, {\n studentId,\n });\n }, [getTestHelpData, studentId, userMilestoneId]);\n\n useEffect(() => {\n if (!isProcessing && ((!isProcessed && !isProcessingFailed) || isStale)) {\n handleOnTryAgain();\n }\n }, [handleOnTryAgain, isProcessed, isProcessing, isProcessingFailed, isStale]);\n\n const handleOnCreateMilestoneTest = useCallback(() => {\n if (typeof onCreateMilestoneTest === 'function') {\n onCreateMilestoneTest?.(userMilestoneId, (data?.length || 0) + 1);\n\n return;\n }\n\n throw new Error('No callback provided. If provided it must be a function');\n }, [onCreateMilestoneTest, userMilestoneId, data]);\n\n const handleOnTestPreview = useCallback(\n (sheetData: INodeDataProps) => {\n if (typeof onTestPreview === 'function') {\n onTestPreview?.(sheetData, userMilestoneId);\n\n return;\n }\n\n throw new Error('No callback provided. If provided it must be a function');\n },\n [onTestPreview, userMilestoneId],\n );\n\n const handleOnTestStart = useCallback(\n (sheetData: INodeDataProps) => {\n if (typeof onTestStart === 'function') {\n onTestStart?.(sheetData);\n\n return;\n }\n\n throw new Error('No callback provided. If provided it must be a function');\n },\n [onTestStart],\n );\n\n const handleOnTestReview = useCallback(\n (sheetData: INodeDataProps) => {\n if (typeof onTestReview === 'function') {\n onTestReview?.(sheetData, userMilestoneId);\n\n return;\n }\n\n throw new Error('No callback provided. If provided it must be a function');\n },\n [onTestReview, userMilestoneId],\n );\n\n if (isProcessingFailed) {\n return (\n <FlexView\n $flexGapX={1.5}\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $height=\"100%\"\n $background=\"WHITE\"\n >\n <Text $renderAs=\"h6\">Oops! Something went wrong. Please try again later.</Text>\n <Button\n widthX={14}\n size=\"small\"\n shape=\"square\"\n renderAs=\"primary\"\n label=\"Try again\"\n onClick={handleOnTryAgain}\n />\n </FlexView>\n );\n }\n\n if (isProcessed) {\n if (data?.length) {\n return (\n <TestSheetsList\n {...props}\n onNodeAttempt={handleOnTestStart}\n onNodeView={handleOnTestPreview}\n onNodeReview={handleOnTestReview}\n onNodeAssignAsHomework={onNodeAssignAsHomework}\n milestoneId={userMilestoneId}\n sheets={data}\n userType={userType}\n studentId={studentId}\n onCreateNewTest={handleOnCreateMilestoneTest}\n canUpdatedPlan={canUpdatePlan}\n isMilestoneActive={isMilestoneActive}\n />\n );\n }\n\n return (\n <FlexView\n $gapX={6.75}\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $background=\"WHITE\"\n $height={MILESTONE_WIDGET_MIN_HEIGHT}\n >\n <img src={IMAGES.EMPTY_MIX_TESTS} alt=\"empty_mix_tests\" />\n <Separator heightX={2} />\n {userType === 'TEACHER' ? (\n <>\n <ArrowTooltip\n renderAs=\"primary\"\n position=\"bottom\"\n hidden={!isTestSheetCreationDisabled}\n tooltipItem={testCreationCtaTooltipText}\n >\n <Button\n widthX={10}\n renderAs=\"primary\"\n shape=\"square\"\n size=\"small\"\n label=\"Create a Test\"\n onClick={handleOnCreateMilestoneTest}\n disabled={isTestSheetCreationDisabled}\n analyticsLabel={TESTS_CREATION_ANALYTICS_EVENTS.CUSTOM_TEST_CREATION_STARTED}\n analyticsProps={{\n milestone_id: userMilestoneId,\n }}\n />\n </ArrowTooltip>\n <Separator heightX={2} />\n </>\n ) : (\n <Text $renderAs=\"ab2-bold\" $color=\"BLACK_T_87\">\n Wait for the teacher to create a test\n </Text>\n )}\n </FlexView>\n );\n }\n\n return (\n <FlexView\n $height={MILESTONE_WIDGET_MIN_HEIGHT}\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $background=\"WHITE\"\n >\n <AppLoader height=\"100%\" />\n </FlexView>\n );\n});\n\nexport default MilestoneTestsList;\n"],"names":["MilestoneTestsList","memo","props","isChaptersAvailable","isDraftMilestone","isMilestoneActive","userType","studentId","userMilestoneId","canUpdatePlan","onCreateMilestoneTest","onTestPreview","onTestStart","onTestReview","onNodeAssignAsHomework","getTestHelpData","data","isProcessingFailed","isProcessed","isStale","isProcessing","useGetTestHelpData","isTestSheetCreationDisabled","testCreationCtaTooltipText","handleOnTryAgain","useCallback","useEffect","handleOnCreateMilestoneTest","handleOnTestPreview","sheetData","handleOnTestStart","handleOnTestReview","jsxs","FlexView","jsx","Text","Button","TestSheetsList","MILESTONE_WIDGET_MIN_HEIGHT","IMAGES","Separator","Fragment","ArrowTooltip","TESTS_CREATION_ANALYTICS_EVENTS","AppLoader"],"mappings":"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"}
1
+ {"version":3,"file":"test-list-container.js","sources":["../../../../../src/features/milestone/milestone-tests/test-list-v2/test-list-container.tsx"],"sourcesContent":["import type { INodeDataProps } from '../../../chapters-v2/comps/node-card/node-card-types';\nimport type { ITestsListProps } from './types';\n\nimport { memo, useCallback, useEffect, type FC } from 'react';\n\nimport { IMAGES } from '../../../../assets/images/images';\nimport ArrowTooltip from '../../../ui/arrow-tooltip/arrow-tooltip';\nimport Button from '../../../ui/buttons/button/button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport AppLoader from '../../../ui/loader/app-loader/app-loader';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport { MILESTONE_WIDGET_MIN_HEIGHT } from '../../constants';\nimport { useGetTestHelpData } from '../../milestone-list-container/api/get-tests-list';\nimport { TESTS_CREATION_ANALYTICS_EVENTS } from '../tests-creation/tests-creation-analytics-events';\nimport TestSheetsList from './test-list-view';\n\nconst MilestoneTestsList: FC<ITestsListProps> = memo(props => {\n const {\n isChaptersAvailable,\n isDraftMilestone,\n isMilestoneActive,\n userType,\n studentId,\n userMilestoneId,\n canUpdatePlan,\n } = props;\n const {\n onCreateMilestoneTest,\n onTestPreview,\n onTestStart,\n onTestReview,\n onNodeAssignAsHomework,\n } = props;\n\n const {\n get: getTestHelpData,\n data,\n isProcessingFailed,\n isProcessed,\n isStale,\n isProcessing,\n } = useGetTestHelpData();\n\n const isTestSheetCreationDisabled =\n !canUpdatePlan ||\n !isChaptersAvailable ||\n !isMilestoneActive ||\n (isMilestoneActive && isDraftMilestone);\n const testCreationCtaTooltipText =\n isMilestoneActive && !isChaptersAvailable\n ? 'Chapters need to be assigned'\n : isDraftMilestone\n ? 'Allowed after plan is published'\n : 'Plan is completed';\n\n const handleOnTryAgain = useCallback(() => {\n getTestHelpData(userMilestoneId, undefined, {\n studentId,\n });\n }, [getTestHelpData, studentId, userMilestoneId]);\n\n useEffect(() => {\n if (!isProcessing && ((!isProcessed && !isProcessingFailed) || isStale)) {\n handleOnTryAgain();\n }\n }, [handleOnTryAgain, isProcessed, isProcessing, isProcessingFailed, isStale]);\n\n const handleOnCreateMilestoneTest = useCallback(() => {\n if (typeof onCreateMilestoneTest === 'function') {\n onCreateMilestoneTest?.(userMilestoneId, (data?.length || 0) + 1);\n\n return;\n }\n\n throw new Error('No callback provided. If provided it must be a function');\n }, [onCreateMilestoneTest, userMilestoneId, data]);\n\n const handleOnTestPreview = useCallback(\n (sheetData: INodeDataProps) => {\n if (typeof onTestPreview === 'function') {\n onTestPreview?.(sheetData, userMilestoneId);\n\n return;\n }\n\n throw new Error('No callback provided. If provided it must be a function');\n },\n [onTestPreview, userMilestoneId],\n );\n\n const handleOnTestStart = useCallback(\n (sheetData: INodeDataProps, milestoneId?: string, hwId?: string) => {\n if (typeof onTestStart === 'function') {\n onTestStart?.(sheetData, milestoneId, hwId);\n\n return;\n }\n\n throw new Error('No callback provided. If provided it must be a function');\n },\n [onTestStart],\n );\n\n const handleOnTestReview = useCallback(\n (sheetData: INodeDataProps) => {\n if (typeof onTestReview === 'function') {\n onTestReview?.(sheetData, userMilestoneId);\n\n return;\n }\n\n throw new Error('No callback provided. If provided it must be a function');\n },\n [onTestReview, userMilestoneId],\n );\n\n if (isProcessingFailed) {\n return (\n <FlexView\n $flexGapX={1.5}\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $height=\"100%\"\n $background=\"WHITE\"\n >\n <Text $renderAs=\"h6\">Oops! Something went wrong. Please try again later.</Text>\n <Button\n widthX={14}\n size=\"small\"\n shape=\"square\"\n renderAs=\"primary\"\n label=\"Try again\"\n onClick={handleOnTryAgain}\n />\n </FlexView>\n );\n }\n\n if (isProcessed) {\n if (data?.length) {\n return (\n <TestSheetsList\n {...props}\n onNodeAttempt={handleOnTestStart}\n onNodeView={handleOnTestPreview}\n onNodeReview={handleOnTestReview}\n onNodeAssignAsHomework={onNodeAssignAsHomework}\n milestoneId={userMilestoneId}\n sheets={data}\n userType={userType}\n studentId={studentId}\n onCreateNewTest={handleOnCreateMilestoneTest}\n canUpdatedPlan={canUpdatePlan}\n isMilestoneActive={isMilestoneActive}\n />\n );\n }\n\n return (\n <FlexView\n $gapX={6.75}\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $background=\"WHITE\"\n $height={MILESTONE_WIDGET_MIN_HEIGHT}\n >\n <img src={IMAGES.EMPTY_MIX_TESTS} alt=\"empty_mix_tests\" />\n <Separator heightX={2} />\n {userType === 'TEACHER' ? (\n <>\n <ArrowTooltip\n renderAs=\"primary\"\n position=\"bottom\"\n hidden={!isTestSheetCreationDisabled}\n tooltipItem={testCreationCtaTooltipText}\n >\n <Button\n widthX={10}\n renderAs=\"primary\"\n shape=\"square\"\n size=\"small\"\n label=\"Create a Test\"\n onClick={handleOnCreateMilestoneTest}\n disabled={isTestSheetCreationDisabled}\n analyticsLabel={TESTS_CREATION_ANALYTICS_EVENTS.CUSTOM_TEST_CREATION_STARTED}\n analyticsProps={{\n milestone_id: userMilestoneId,\n }}\n />\n </ArrowTooltip>\n <Separator heightX={2} />\n </>\n ) : (\n <Text $renderAs=\"ab2-bold\" $color=\"BLACK_T_87\">\n Wait for the teacher to create a test\n </Text>\n )}\n </FlexView>\n );\n }\n\n return (\n <FlexView\n $height={MILESTONE_WIDGET_MIN_HEIGHT}\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $background=\"WHITE\"\n >\n <AppLoader height=\"100%\" />\n </FlexView>\n );\n});\n\nexport default MilestoneTestsList;\n"],"names":["MilestoneTestsList","memo","props","isChaptersAvailable","isDraftMilestone","isMilestoneActive","userType","studentId","userMilestoneId","canUpdatePlan","onCreateMilestoneTest","onTestPreview","onTestStart","onTestReview","onNodeAssignAsHomework","getTestHelpData","data","isProcessingFailed","isProcessed","isStale","isProcessing","useGetTestHelpData","isTestSheetCreationDisabled","testCreationCtaTooltipText","handleOnTryAgain","useCallback","useEffect","handleOnCreateMilestoneTest","handleOnTestPreview","sheetData","handleOnTestStart","milestoneId","hwId","handleOnTestReview","jsxs","FlexView","jsx","Text","Button","TestSheetsList","MILESTONE_WIDGET_MIN_HEIGHT","IMAGES","Separator","Fragment","ArrowTooltip","TESTS_CREATION_ANALYTICS_EVENTS","AppLoader"],"mappings":";;;;;;;;;;;;;AAiBM,MAAAA,KAA0CC,EAAK,CAASC,MAAA;AACtD,QAAA;AAAA,IACJ,qBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,eAAAC;AAAA,EACE,IAAAP,GACE;AAAA,IACJ,uBAAAQ;AAAA,IACA,eAAAC;AAAA,IACA,aAAAC;AAAA,IACA,cAAAC;AAAA,IACA,wBAAAC;AAAA,EACE,IAAAZ,GAEE;AAAA,IACJ,KAAKa;AAAA,IACL,MAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,SAAAC;AAAA,IACA,cAAAC;AAAA,MACEC,EAAmB,GAEjBC,IACJ,CAACb,KACD,CAACN,KACD,CAACE,KACAA,KAAqBD,GAClBmB,IACJlB,KAAqB,CAACF,IAClB,iCACAC,IACE,oCACA,qBAEFoB,IAAmBC,EAAY,MAAM;AACzC,IAAAV,EAAgBP,GAAiB,QAAW;AAAA,MAC1C,WAAAD;AAAA,IAAA,CACD;AAAA,EACA,GAAA,CAACQ,GAAiBR,GAAWC,CAAe,CAAC;AAEhD,EAAAkB,EAAU,MAAM;AACd,IAAI,CAACN,MAAkB,CAACF,KAAe,CAACD,KAAuBE,MAC5CK;EACnB,GACC,CAACA,GAAkBN,GAAaE,GAAcH,GAAoBE,CAAO,CAAC;AAEvE,QAAAQ,IAA8BF,EAAY,MAAM;AAChD,QAAA,OAAOf,KAA0B,YAAY;AAC/C,MAAAA,KAAA,QAAAA,EAAwBF,KAAkBQ,KAAA,gBAAAA,EAAM,WAAU,KAAK;AAE/D;AAAA,IACF;AAEM,UAAA,IAAI,MAAM,yDAAyD;AAAA,EACxE,GAAA,CAACN,GAAuBF,GAAiBQ,CAAI,CAAC,GAE3CY,IAAsBH;AAAA,IAC1B,CAACI,MAA8B;AACzB,UAAA,OAAOlB,KAAkB,YAAY;AACvC,QAAAA,KAAA,QAAAA,EAAgBkB,GAAWrB;AAE3B;AAAA,MACF;AAEM,YAAA,IAAI,MAAM,yDAAyD;AAAA,IAC3E;AAAA,IACA,CAACG,GAAeH,CAAe;AAAA,EAAA,GAG3BsB,IAAoBL;AAAA,IACxB,CAACI,GAA2BE,GAAsBC,MAAkB;AAC9D,UAAA,OAAOpB,KAAgB,YAAY;AACvB,QAAAA,KAAA,QAAAA,EAAAiB,GAAWE,GAAaC;AAEtC;AAAA,MACF;AAEM,YAAA,IAAI,MAAM,yDAAyD;AAAA,IAC3E;AAAA,IACA,CAACpB,CAAW;AAAA,EAAA,GAGRqB,IAAqBR;AAAA,IACzB,CAACI,MAA8B;AACzB,UAAA,OAAOhB,KAAiB,YAAY;AACtC,QAAAA,KAAA,QAAAA,EAAegB,GAAWrB;AAE1B;AAAA,MACF;AAEM,YAAA,IAAI,MAAM,yDAAyD;AAAA,IAC3E;AAAA,IACA,CAACK,GAAcL,CAAe;AAAA,EAAA;AAGhC,SAAIS,IAEA,gBAAAiB;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,MACX,aAAY;AAAA,MACZ,iBAAgB;AAAA,MAChB,SAAQ;AAAA,MACR,aAAY;AAAA,MAEZ,UAAA;AAAA,QAAC,gBAAAC,EAAAC,GAAA,EAAK,WAAU,MAAK,UAAmD,uDAAA;AAAA,QACxE,gBAAAD;AAAA,UAACE;AAAA,UAAA;AAAA,YACC,QAAQ;AAAA,YACR,MAAK;AAAA,YACL,OAAM;AAAA,YACN,UAAS;AAAA,YACT,OAAM;AAAA,YACN,SAASd;AAAA,UAAA;AAAA,QACX;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,IAKFN,IACEF,KAAA,QAAAA,EAAM,SAEN,gBAAAoB;AAAA,IAACG;AAAA,IAAA;AAAA,MACE,GAAGrC;AAAA,MACJ,eAAe4B;AAAA,MACf,YAAYF;AAAA,MACZ,cAAcK;AAAA,MACd,wBAAAnB;AAAA,MACA,aAAaN;AAAA,MACb,QAAQQ;AAAA,MACR,UAAAV;AAAA,MACA,WAAAC;AAAA,MACA,iBAAiBoB;AAAA,MACjB,gBAAgBlB;AAAA,MAChB,mBAAAJ;AAAA,IAAA;AAAA,EAAA,IAMJ,gBAAA6B;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,MACP,aAAY;AAAA,MACZ,iBAAgB;AAAA,MAChB,aAAY;AAAA,MACZ,SAASK;AAAA,MAET,UAAA;AAAA,QAAA,gBAAAJ,EAAC,OAAI,EAAA,KAAKK,EAAO,iBAAiB,KAAI,mBAAkB;AAAA,QACxD,gBAAAL,EAACM,GAAU,EAAA,SAAS,EAAG,CAAA;AAAA,QACtBpC,MAAa,YAEV,gBAAA4B,EAAAS,GAAA,EAAA,UAAA;AAAA,UAAA,gBAAAP;AAAA,YAACQ;AAAA,YAAA;AAAA,cACC,UAAS;AAAA,cACT,UAAS;AAAA,cACT,QAAQ,CAACtB;AAAA,cACT,aAAaC;AAAA,cAEb,UAAA,gBAAAa;AAAA,gBAACE;AAAA,gBAAA;AAAA,kBACC,QAAQ;AAAA,kBACR,UAAS;AAAA,kBACT,OAAM;AAAA,kBACN,MAAK;AAAA,kBACL,OAAM;AAAA,kBACN,SAASX;AAAA,kBACT,UAAUL;AAAA,kBACV,gBAAgBuB,EAAgC;AAAA,kBAChD,gBAAgB;AAAA,oBACd,cAAcrC;AAAA,kBAChB;AAAA,gBAAA;AAAA,cACF;AAAA,YAAA;AAAA,UACF;AAAA,UACA,gBAAA4B,EAACM,GAAU,EAAA,SAAS,EAAG,CAAA;AAAA,QAAA,EAAA,CACzB,IAEC,gBAAAN,EAAAC,GAAA,EAAK,WAAU,YAAW,QAAO,cAAa,UAE/C,yCAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,IAON,gBAAAD;AAAA,IAACD;AAAA,IAAA;AAAA,MACC,SAASK;AAAA,MACT,aAAY;AAAA,MACZ,iBAAgB;AAAA,MAChB,aAAY;AAAA,MAEZ,UAAA,gBAAAJ,EAACU,GAAU,EAAA,QAAO,OAAO,CAAA;AAAA,IAAA;AAAA,EAAA;AAG/B,CAAC;"}
package/dist/index.d.ts CHANGED
@@ -401,6 +401,7 @@ export declare const EVENTS: {
401
401
  UNLOCK_SHEETS: "UNLOCK_SHEETS";
402
402
  EXTRA_PRACTICE_ASSIGNED: "EXTRA_PRACTICE_ASSIGNED";
403
403
  CHANGE_LOCATION: "CHANGE_LOCATION";
404
+ SHEET_MARKED_AS_REVIEWED: "SHEET_MARKED_AS_REVIEWED";
404
405
  SHEET_STARTED: "SHEET_STARTED";
405
406
  SHEET_UNASSIGNED: "SHEET_UNASSIGNED";
406
407
  SHEET_REATTEMPTED: "SHEET_REATTEMPTED";
@@ -2352,7 +2353,7 @@ export declare const Info2Icon: React_2.FC<React_2.SVGProps<SVGSVGElement>>;
2352
2353
  export declare const InfoIcon: React.FC<React.SVGProps<SVGSVGElement>>;
2353
2354
 
2354
2355
  declare interface INodeCardCallbacks {
2355
- onNodeAttempt?: (nodeData: INodeDataProps, homeworkId?: string) => void;
2356
+ onNodeAttempt?: (nodeData: INodeDataProps, milestoneId?: string, homeworkId?: string) => void;
2356
2357
  onNodeView?: (nodeData: INodeDataProps, milestoneId?: string) => void;
2357
2358
  onNodeReview?: (nodeData: INodeDataProps, milestoneId?: string, homeworkId?: string) => void;
2358
2359
  onNodeReattempt?: (nodeData: INodeDataProps, milestoneId?: string) => void;
@@ -3270,7 +3271,7 @@ declare interface ITestsListProps {
3270
3271
  onNodeReattempt?: (sheetData: INodeDataProps, milestoneId?: string) => void;
3271
3272
  onNodeAssignAsHomework?: (sheetData: INodeDataProps, milestoneId?: string) => void;
3272
3273
  onTestPreview?: (sheetData: INodeDataProps, milestoneId: string) => void;
3273
- onTestStart?: (sheetData: INodeDataProps) => void;
3274
+ onTestStart?: (sheetData: INodeDataProps, milestoneId?: string, homeworkId?: string) => void;
3274
3275
  onTestReview?: (sheetData: INodeDataProps, milestoneId: string) => void;
3275
3276
  }
3276
3277
 
@@ -4871,6 +4872,12 @@ export declare type TInclassMessage = {
4871
4872
  eventPayload: {
4872
4873
  worksheetId: string;
4873
4874
  };
4875
+ } | {
4876
+ eventName: typeof EVENTS.SHEET_MARKED_AS_REVIEWED;
4877
+ eventPayload: {
4878
+ studentId: string;
4879
+ milestoneId?: string;
4880
+ };
4874
4881
  } | {
4875
4882
  eventName: typeof EVENTS.HOMEWORK_UNASSIGN;
4876
4883
  eventPayload: {
@@ -4937,6 +4944,7 @@ export declare type TInclassMessage = {
4937
4944
  eventName: typeof EVENTS.SHEET_STARTED;
4938
4945
  eventPayload: {
4939
4946
  sheetIds: string[];
4947
+ milestoneId?: string;
4940
4948
  };
4941
4949
  } | {
4942
4950
  eventName: typeof EVENTS.MILESTONE_NAME_UPDATED;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuemath/leap",
3
- "version": "3.0.16",
3
+ "version": "3.0.17-as1",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"