@cuemath/leap 2.8.60-ag3 → 2.8.60-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.
Files changed (57) hide show
  1. package/dist/constants/api.js +2 -3
  2. package/dist/constants/api.js.map +1 -1
  3. package/dist/features/analytics-events/whitelist-events.js +7 -9
  4. package/dist/features/analytics-events/whitelist-events.js.map +1 -1
  5. package/dist/features/chapters/chapters-list/chapter-item/chapter-item-styled.js +4 -5
  6. package/dist/features/chapters/chapters-list/chapter-item/chapter-item-styled.js.map +1 -1
  7. package/dist/features/chapters/chapters-list/chapter-item/chapter-item.js +1 -2
  8. package/dist/features/chapters/chapters-list/chapter-item/chapter-item.js.map +1 -1
  9. package/dist/features/chapters-v2/chapter-details/block-sections/block-section-view.js +7 -7
  10. package/dist/features/chapters-v2/chapter-details/block-sections/block-section-view.js.map +1 -1
  11. package/dist/features/chapters-v2/comps/node-card/node-card-tags.js +6 -6
  12. package/dist/features/chapters-v2/comps/node-card/node-card-tags.js.map +1 -1
  13. package/dist/features/chapters-v2/comps/node-card/student-actions/student-actions.js +2 -2
  14. package/dist/features/chapters-v2/comps/node-card/student-actions/student-actions.js.map +1 -1
  15. package/dist/features/chapters-v2/utils/node-card-utils.js +18 -18
  16. package/dist/features/chapters-v2/utils/node-card-utils.js.map +1 -1
  17. package/dist/features/homework/card-menu-options.js +22 -44
  18. package/dist/features/homework/card-menu-options.js.map +1 -1
  19. package/dist/features/homework/homework-card.js +157 -211
  20. package/dist/features/homework/homework-card.js.map +1 -1
  21. package/dist/features/homework/styles.js +30 -37
  22. package/dist/features/homework/styles.js.map +1 -1
  23. package/dist/features/milestone/create/api/goal-submit.js +1 -1
  24. package/dist/features/milestone/create/api/goal-submit.js.map +1 -1
  25. package/dist/features/milestone/edit/comps/edit-milestone-modal/api/patch-goal-plan.js +1 -1
  26. package/dist/features/milestone/edit/comps/edit-milestone-modal/api/patch-goal-plan.js.map +1 -1
  27. package/dist/features/milestone/milestone-list-container/api/get-milestone-resources.js +1 -1
  28. package/dist/features/milestone/milestone-list-container/api/get-milestone-resources.js.map +1 -1
  29. package/dist/features/milestone/milestone-list-container/api/get-tests-list.js +1 -1
  30. package/dist/features/milestone/milestone-list-container/api/get-tests-list.js.map +1 -1
  31. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js +81 -127
  32. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js.map +1 -1
  33. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-item.js +41 -0
  34. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-item.js.map +1 -0
  35. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view-styled.js +10 -16
  36. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view-styled.js.map +1 -1
  37. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js +46 -77
  38. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js.map +1 -1
  39. package/dist/features/recent-chapters/recent-chapters.js +31 -28
  40. package/dist/features/recent-chapters/recent-chapters.js.map +1 -1
  41. package/dist/features/sheet-v2/resource-list/resource-item.js +51 -0
  42. package/dist/features/sheet-v2/resource-list/resource-item.js.map +1 -0
  43. package/dist/features/sheet-v2/resource-list/resource-list.js +21 -40
  44. package/dist/features/sheet-v2/resource-list/resource-list.js.map +1 -1
  45. package/dist/features/sheets/resources-list/resource-item/resource-item.js.map +1 -1
  46. package/dist/features/sheets/resources-list/resource-item/styled.js +0 -1
  47. package/dist/features/sheets/resources-list/resource-item/styled.js.map +1 -1
  48. package/dist/features/sheets/sheets-analytics-events.js +2 -6
  49. package/dist/features/sheets/sheets-analytics-events.js.map +1 -1
  50. package/dist/index.d.ts +9 -12
  51. package/dist/index.js +326 -328
  52. package/dist/index.js.map +1 -1
  53. package/package.json +1 -1
  54. package/dist/features/homework/hw-card-list/hw-card-list.js +0 -444
  55. package/dist/features/homework/hw-card-list/hw-card-list.js.map +0 -1
  56. package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item-utils.js +0 -10
  57. package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item-utils.js.map +0 -1
@@ -1,256 +1,202 @@
1
- import { jsxs as n, jsx as e } from "react/jsx-runtime";
2
- import { memo as N, useRef as T, useState as ee, useLayoutEffect as re, useCallback as _ } from "react";
3
- import W from "../../assets/line-icons/icons/eye2.js";
4
- import te from "../../assets/line-icons/icons/more-vertical.js";
5
- import ie from "../../assets/line-icons/icons/redo.js";
6
- import ne from "../chapters-v2/comps/node-card/node-card-tags.js";
7
- import { getNodeTypeBasedBgImage as oe } from "../chapters-v2/utils/index.js";
8
- import { getNodeCardBasedIcon as ce } from "../chapters-v2/utils/node-card-utils.js";
9
- import A from "../ui/arrow-tooltip/arrow-tooltip.js";
10
- import ae from "../ui/buttons/clickable/clickable.js";
11
- import M from "../ui/hooks/use-context-menu-click-handler.js";
12
- import d from "../ui/layout/flex-view.js";
13
- import le from "../ui/text/text.js";
14
- import O from "./card-menu-options.js";
15
- import { CardContainer as se, CardWrapper as ue, IconWrapper as de, BannerImageWrapper as he, BannerImage as me, HeaderText as fe, SubHeaderText as pe, CardMenuOptionsWrapper as B, MenuWrapper as we, CardKebabMenuWrapper as be, StyledMinus2Icon as ge } from "./styles.js";
16
- const $e = ({
17
- header: v,
1
+ import { jsx as e, jsxs as a } from "react/jsx-runtime";
2
+ import { useRef as y, useState as q, useLayoutEffect as J, useCallback as x } from "react";
3
+ import Q from "../../assets/line-icons/icons/eye2.js";
4
+ import U from "../../assets/line-icons/icons/more-vertical.js";
5
+ import Y from "../../assets/line-icons/icons/redo.js";
6
+ import Z from "../chapters-v2/comps/node-card/node-card-tags.js";
7
+ import { getNodeTypeBasedBgImage as D } from "../chapters-v2/utils/index.js";
8
+ import { getNodeCardBasedIcon as N } from "../chapters-v2/utils/node-card-utils.js";
9
+ import E from "../ui/arrow-tooltip/arrow-tooltip.js";
10
+ import ee from "../ui/buttons/clickable/clickable.js";
11
+ import re from "../ui/hooks/use-context-menu-click-handler.js";
12
+ import u from "../ui/layout/flex-view.js";
13
+ import te from "../ui/text/text.js";
14
+ import ie from "./card-menu-options.js";
15
+ import { CardContainer as ne, CardWrapper as ce, IconWrapper as oe, BannerImageWrapper as ae, BannerImage as se, HeaderText as le, SubHeaderText as ue, CardKebabMenuWrapper as he, CardMenuOptionsWrapper as me, StyledMinus2Icon as fe } from "./styles.js";
16
+ const He = ({
17
+ header: d,
18
18
  nodeData: r,
19
- subHeader: j,
20
- userType: G,
19
+ subHeader: I,
20
+ userType: H,
21
21
  userMilestoneId: t,
22
- onNodeUnassign: c,
23
- onNodeReattempt: a,
24
- onNodeView: h,
25
- onNodeReview: i,
26
- onNodeAttempt: m
22
+ onNodeUnassign: h,
23
+ onNodeReset: m,
24
+ onNodeView: i,
25
+ onNodeReview: n,
26
+ onNodeAttempt: f
27
27
  }) => {
28
28
  const {
29
- node_type: f,
30
- state: K,
31
- accuracy: L,
32
- due_date_ts: z,
33
- image_url: y,
34
- image_hue: F,
35
- card_header: P = "",
36
- permissions: p,
37
- user_node_id: l
38
- } = r, q = oe(f), x = ce(f), w = T(null), b = T(null), o = T(null), { menuVisible: S, onMenuClick: J } = M(w), { menuVisible: E, onMenuClick: I } = M(b), [Q, Y] = ee(!1), {
39
- can_start: R,
40
- can_resume: H,
41
- can_review: g,
42
- can_teacher_review: V,
43
- can_unassign: Z,
44
- can_reset: $
45
- } = p, s = G === "STUDENT";
46
- re(() => {
47
- o.current && o.current.scrollHeight > o.current.clientHeight && Y(!0);
29
+ node_type: c,
30
+ state: X,
31
+ accuracy: S,
32
+ due_date_ts: W,
33
+ image_url: w,
34
+ image_hue: A = "ORANGE",
35
+ card_header: O = "",
36
+ permissions: B,
37
+ user_node_id: s
38
+ } = r, R = c && D(c), $ = c && N(c), b = y(null), { menuVisible: j, onMenuClick: G } = re(b), o = y(null), [K, L] = q(!1), {
39
+ can_start: g,
40
+ can_resume: C,
41
+ can_review: T,
42
+ can_teacher_review: _,
43
+ can_unassign: M,
44
+ can_reset: P
45
+ } = B || {}, v = H === "STUDENT";
46
+ J(() => {
47
+ o.current && o.current.scrollHeight > o.current.clientHeight && L(!0);
48
48
  }, [o]);
49
- const C = _(() => {
50
- if (console.log("calles onStudentView view", p), R || H) {
51
- if (console.log("calles onStudentView canStart || canResume"), typeof m != "function")
49
+ const z = x(() => {
50
+ if (g || C) {
51
+ if (typeof f != "function")
52
52
  throw new Error("onNodeAttempt must be a function");
53
- m(r);
53
+ f(r);
54
54
  return;
55
55
  }
56
- if ($) {
57
- console.log("calles onStudentView canReset"), I();
58
- return;
59
- }
60
- if (g) {
61
- if (console.log("calles onStudentView canReview"), typeof i != "function")
56
+ if (T) {
57
+ if (typeof n != "function")
62
58
  throw new Error("onReview must be a function");
63
- if (!l)
59
+ if (!s)
64
60
  throw new Error("user node id must be present to review the sheet");
65
- i(r, t);
61
+ n(r, t);
66
62
  return;
67
63
  }
64
+ if (typeof i != "function")
65
+ throw new Error("onPreview must be a function");
66
+ i(r, t);
68
67
  }, [
69
- p,
70
- R,
71
- H,
72
- $,
68
+ C,
69
+ T,
73
70
  g,
74
- m,
71
+ t,
75
72
  r,
76
- I,
73
+ f,
74
+ n,
77
75
  i,
78
- l,
79
- t
80
- ]), k = _(() => {
81
- if (V) {
82
- if (typeof i != "function")
76
+ s
77
+ ]), F = x(() => {
78
+ if (_) {
79
+ if (typeof n != "function")
83
80
  throw new Error("onReview must be a function");
84
- if (!l)
81
+ if (!s)
85
82
  throw new Error("user node id must be present to review the sheet");
86
- i(r, t);
83
+ n(r, t);
87
84
  return;
88
85
  }
89
- if (typeof h != "function")
86
+ if (typeof i != "function")
90
87
  throw new Error("onPreview must be a function");
91
- h(r, t);
92
- }, [V, t, r, i, h, l]), u = _(
93
- (X) => {
94
- switch (X) {
95
- case "teacher-card-view":
96
- k();
97
- return;
98
- case "student-card-click":
99
- C();
100
- return;
101
- case "card-unassign":
102
- c == null || c(r, t);
103
- return;
104
- case "card-reattempt":
105
- a == null || a(r, t);
106
- return;
107
- default:
108
- throw new Error(`No callback function for ${X}`);
109
- }
110
- },
111
- [r, a, c, C, k, t]
112
- ), U = [
88
+ i(r, t);
89
+ }, [_, t, r, n, i, s]), p = (l) => {
90
+ switch (l) {
91
+ case "card-view":
92
+ F();
93
+ return;
94
+ case "card-unassign":
95
+ r && (h == null || h(r, t));
96
+ return;
97
+ case "card-reset":
98
+ r && (m == null || m(r, t));
99
+ return;
100
+ default:
101
+ throw new Error(`No callback function for ${l}`);
102
+ }
103
+ }, k = [
113
104
  {
114
- id: "teacher-card-view",
105
+ id: "card-view",
115
106
  label: "View",
116
- icon: W,
117
- disabled: !0,
118
- onClick: u
107
+ icon: Q,
108
+ visible: !0,
109
+ onClick: p
119
110
  },
120
111
  {
121
112
  id: "card-unassign",
122
113
  label: "Unassign",
123
- icon: ge,
124
- disabled: !!Z,
125
- onClick: u
126
- }
127
- ], D = [
128
- {
129
- id: "student-card-click",
130
- label: "Review",
131
- icon: W,
132
- disabled: !!g,
133
- onClick: u
114
+ icon: fe,
115
+ visible: !!M,
116
+ onClick: p
134
117
  },
135
118
  {
136
- id: "card-reattempt",
137
- label: "Reattempt",
138
- icon: ie,
139
- disabled: !!$,
140
- onClick: u
119
+ id: "card-reset",
120
+ label: "Reset",
121
+ icon: Y,
122
+ visible: !!P,
123
+ onClick: p
141
124
  }
142
- ];
143
- return console.log(!s), /* @__PURE__ */ n(d, { $position: "relative", children: [
144
- /* @__PURE__ */ n(ae, { onClick: s ? C : k, label: "homework-card", children: [
145
- /* @__PURE__ */ n(
146
- se,
125
+ ], V = !!k.find((l) => l.visible);
126
+ return /* @__PURE__ */ e(ee, { onClick: v ? z : void 0, label: "homework-card", children: /* @__PURE__ */ a(ne, { $widthX: 12.5, $position: "relative", $background: `${A}_2`, children: [
127
+ /* @__PURE__ */ a(
128
+ ce,
129
+ {
130
+ $flexDirection: "row",
131
+ $alignItems: "center",
132
+ $width: "100%",
133
+ $heightX: 3.5,
134
+ $bgImage: R || "",
135
+ $gutterX: 0.78125,
136
+ $flexGap: 8.5,
137
+ $position: "relative",
138
+ children: [
139
+ /* @__PURE__ */ e(
140
+ oe,
141
+ {
142
+ $width: 31,
143
+ $height: 31,
144
+ $borderRadiusX: 2,
145
+ $background: "WHITE_1",
146
+ $position: "relative",
147
+ $alignItems: "center",
148
+ $justifyContent: "center",
149
+ children: $ && /* @__PURE__ */ e($, { width: 20, height: 20 })
150
+ }
151
+ ),
152
+ /* @__PURE__ */ e(te, { $renderAs: "ac4-black", children: O }),
153
+ !!w && /* @__PURE__ */ e(ae, { children: /* @__PURE__ */ e(se, { src: w, alt: "Chapter image" }) })
154
+ ]
155
+ }
156
+ ),
157
+ /* @__PURE__ */ e(Z, { nodeType: c, state: X, accuracy: S, dueDateTs: W }),
158
+ /* @__PURE__ */ a(u, { $gutterX: 0.75, $gapX: 1, $flexRowGapX: 0.5, $background: "WHITE", children: [
159
+ /* @__PURE__ */ e(
160
+ E,
161
+ {
162
+ renderAs: "primary",
163
+ position: "bottom",
164
+ tooltipItem: d || "",
165
+ hidden: !K,
166
+ widthX: 21.75,
167
+ children: /* @__PURE__ */ e(u, { $heightX: 2.5, children: /* @__PURE__ */ e(le, { ref: o, $renderAs: "ab3", children: d }) })
168
+ }
169
+ ),
170
+ /* @__PURE__ */ a(
171
+ u,
147
172
  {
148
- ref: b,
149
- $widthX: 12.5,
150
- $position: "relative",
151
- $background: `${F || "ORANGE"}_2`,
173
+ $flexDirection: "row",
174
+ $heightX: 1.25,
175
+ $alignItems: "center",
176
+ $justifyContent: "space-between",
152
177
  children: [
153
- /* @__PURE__ */ n(
154
- ue,
155
- {
156
- $flexDirection: "row",
157
- $alignItems: "center",
158
- $width: "100%",
159
- $heightX: 3.5,
160
- $bgImage: q,
161
- $gutterX: 0.78125,
162
- $flexGap: 8.5,
163
- $position: "relative",
164
- children: [
165
- /* @__PURE__ */ e(
166
- de,
167
- {
168
- $width: 31,
169
- $height: 31,
170
- $borderRadiusX: 2,
171
- $background: "WHITE_1",
172
- $position: "relative",
173
- $alignItems: "center",
174
- $justifyContent: "center",
175
- children: x && /* @__PURE__ */ e(x, { width: 20, height: 20 })
176
- }
177
- ),
178
- /* @__PURE__ */ e(le, { $renderAs: "ac4-black", children: P }),
179
- !!y && /* @__PURE__ */ e(he, { children: /* @__PURE__ */ e(me, { src: y, alt: "Chapter image" }) })
180
- ]
181
- }
182
- ),
183
- /* @__PURE__ */ e(
184
- ne,
185
- {
186
- nodeType: f,
187
- state: K,
188
- accuracy: L,
189
- dueDateTs: z
190
- }
191
- ),
192
- /* @__PURE__ */ n(d, { $gutterX: 0.75, $gapX: 1, $flexRowGapX: 0.5, $background: "WHITE", children: [
178
+ /* @__PURE__ */ e(ue, { $renderAs: "ub3", $color: "BLACK_T_60", children: I }),
179
+ !v && r && V && /* @__PURE__ */ a(u, { $position: "relative", $width: "fit-content", children: [
193
180
  /* @__PURE__ */ e(
194
- A,
181
+ E,
195
182
  {
196
183
  renderAs: "primary",
184
+ tooltipItem: "Review",
197
185
  position: "bottom",
198
- tooltipItem: v,
199
- hidden: !Q,
200
- widthX: 21.75,
201
- children: /* @__PURE__ */ e(d, { $heightX: 2.5, children: /* @__PURE__ */ e(fe, { ref: o, $renderAs: "ab3", children: v }) })
186
+ zIndex: 5,
187
+ parentWidth: "100%",
188
+ children: /* @__PURE__ */ e(he, { ref: b, onClick: G, children: /* @__PURE__ */ e(U, { width: 16, height: 16 }) })
202
189
  }
203
190
  ),
204
- /* @__PURE__ */ e(
205
- d,
206
- {
207
- $flexDirection: "row",
208
- $heightX: 1.25,
209
- $alignItems: "center",
210
- $justifyContent: "space-between",
211
- children: /* @__PURE__ */ e(pe, { $renderAs: "ub3", $color: "BLACK_T_60", children: j })
212
- }
213
- )
191
+ /* @__PURE__ */ e(me, { $visible: j, children: /* @__PURE__ */ e(ie, { options: k }) })
214
192
  ] })
215
193
  ]
216
194
  }
217
- ),
218
- s && /* @__PURE__ */ e(B, { $visible: E, children: /* @__PURE__ */ e(
219
- O,
220
- {
221
- $width: 200,
222
- options: D,
223
- triggerRef: b,
224
- visible: E
225
- }
226
- ) })
227
- ] }),
228
- !s && /* @__PURE__ */ n(we, { $position: "absolute", $width: "fit-content", children: [
229
- /* @__PURE__ */ e(
230
- A,
231
- {
232
- isAnimated: !0,
233
- renderAs: "primary",
234
- tooltipItem: "Review",
235
- position: "bottom",
236
- zIndex: 5,
237
- parentWidth: "100%",
238
- children: /* @__PURE__ */ e(be, { ref: w, onClick: J, children: /* @__PURE__ */ e(te, { width: 16, height: 16 }) })
239
- }
240
- ),
241
- /* @__PURE__ */ e(B, { $visible: S, children: /* @__PURE__ */ e(
242
- O,
243
- {
244
- $width: "fit-content",
245
- options: U,
246
- triggerRef: w,
247
- visible: S
248
- }
249
- ) })
195
+ )
250
196
  ] })
251
- ] });
252
- }, Ae = N($e);
197
+ ] }) });
198
+ };
253
199
  export {
254
- Ae as default
200
+ He as default
255
201
  };
256
202
  //# 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, useLayoutEffect, useRef, useState } 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 NodeCardTags from '../chapters-v2/comps/node-card/node-card-tags';\nimport { getNodeTypeBasedBgImage } from '../chapters-v2/utils';\nimport { getNodeCardBasedIcon } from '../chapters-v2/utils/node-card-utils';\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 Text from '../ui/text/text';\nimport CardMenuOptions from './card-menu-options';\nimport * as Styled from './styles';\n\ninterface IHomeworkCardProps extends INodeCardCallbacks {\n header: string;\n nodeData: INodeDataProps;\n subHeader: string;\n userType: TUserTypes;\n userMilestoneId?: string;\n}\n\nconst HomeworkCard = ({\n header,\n nodeData,\n subHeader,\n userType,\n userMilestoneId,\n onNodeUnassign,\n onNodeReattempt,\n onNodeView,\n onNodeReview,\n onNodeAttempt,\n}: IHomeworkCardProps) => {\n const {\n node_type: nodeType,\n state,\n accuracy,\n due_date_ts: dueDateTs,\n image_url: imageUrl,\n image_hue: imageHue,\n card_header: cardHeader = '',\n permissions,\n user_node_id: userNodeId,\n } = nodeData;\n\n const bgImage = getNodeTypeBasedBgImage(nodeType);\n const NodeCardIcon = getNodeCardBasedIcon(nodeType);\n const teacherContainerRef = useRef<HTMLDivElement>(null);\n const studentContainerRef = useRef<HTMLDivElement>(null);\n const titleTextRef = useRef<HTMLDivElement>(null);\n const { menuVisible: teacherMenuVisible, onMenuClick: onTeacherMenuClick } =\n useContextMenuClickHandler(teacherContainerRef);\n const { menuVisible: studentMenuVisible, onMenuClick: onStudentMenuClick } =\n useContextMenuClickHandler(studentContainerRef);\n const [showTitleTooltip, setShowTitleTooltip] = useState(false);\n\n const {\n can_start: canStart,\n can_resume: canResume,\n can_review: canReview,\n can_teacher_review: canTeacherReview,\n can_unassign: canUnassign,\n can_reset: canReset,\n } = permissions;\n const isStudent = userType === 'STUDENT';\n\n useLayoutEffect(() => {\n if (\n titleTextRef.current &&\n titleTextRef.current.scrollHeight > titleTextRef.current.clientHeight\n ) {\n setShowTitleTooltip(true);\n }\n }, [titleTextRef]);\n\n const onStudentView = useCallback(() => {\n console.log('calles onStudentView view', permissions);\n if (canStart || canResume) {\n console.log('calles onStudentView canStart || canResume');\n\n if (typeof onNodeAttempt !== 'function') {\n throw new Error('onNodeAttempt must be a function');\n }\n\n onNodeAttempt(nodeData);\n\n return;\n }\n\n if (canReset) {\n console.log('calles onStudentView canReset');\n\n onStudentMenuClick();\n\n return;\n }\n\n if (canReview) {\n console.log('calles onStudentView 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 }, [\n permissions,\n canStart,\n canResume,\n canReset,\n canReview,\n onNodeAttempt,\n nodeData,\n onStudentMenuClick,\n onNodeReview,\n userNodeId,\n userMilestoneId,\n ]);\n\n const onTeacherView = useCallback(() => {\n if (canTeacherReview) {\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\n onNodeReview(nodeData, userMilestoneId);\n\n return;\n }\n\n if (typeof onNodeView !== 'function') {\n throw new Error('onPreview must be a function');\n }\n\n onNodeView(nodeData, userMilestoneId);\n }, [canTeacherReview, userMilestoneId, nodeData, onNodeReview, onNodeView, userNodeId]);\n\n const handleOnMenuOptionClick = useCallback(\n (optionId: string) => {\n switch (optionId) {\n case 'teacher-card-view':\n onTeacherView();\n\n return;\n\n case 'student-card-click':\n onStudentView();\n\n return;\n case 'card-unassign':\n onNodeUnassign?.(nodeData, userMilestoneId);\n\n return;\n case 'card-reattempt':\n onNodeReattempt?.(nodeData, userMilestoneId);\n\n return;\n\n default:\n throw new Error(`No callback function for ${optionId}`);\n }\n },\n [nodeData, onNodeReattempt, onNodeUnassign, onStudentView, onTeacherView, userMilestoneId],\n );\n\n const teacherOptions = [\n {\n id: 'teacher-card-view',\n label: 'View',\n icon: Eye2Icon,\n disabled: true,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'card-unassign',\n label: 'Unassign',\n icon: Styled.StyledMinus2Icon,\n disabled: !!canUnassign,\n onClick: handleOnMenuOptionClick,\n },\n ];\n\n const studentOptions = [\n {\n id: 'student-card-click',\n label: 'Review',\n icon: Eye2Icon,\n disabled: !!canReview,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'card-reattempt',\n label: 'Reattempt',\n icon: RedoIcon,\n disabled: !!canReset,\n onClick: handleOnMenuOptionClick,\n },\n ];\n\n console.log(!isStudent);\n\n return (\n <FlexView $position=\"relative\">\n <Clickable onClick={isStudent ? onStudentView : onTeacherView} label=\"homework-card\">\n <Styled.CardContainer\n ref={studentContainerRef}\n $widthX={12.5}\n $position=\"relative\"\n $background={`${imageHue || 'ORANGE'}_2`}\n >\n <Styled.CardWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $width=\"100%\"\n $heightX={3.5}\n $bgImage={bgImage}\n $gutterX={0.78125}\n $flexGap={8.5}\n $position=\"relative\"\n >\n <Styled.IconWrapper\n $width={31}\n $height={31}\n $borderRadiusX={2}\n $background=\"WHITE_1\"\n $position=\"relative\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n >\n {NodeCardIcon && <NodeCardIcon width={20} height={20} />}\n </Styled.IconWrapper>\n <Text $renderAs=\"ac4-black\">{cardHeader}</Text>\n {!!imageUrl && (\n <Styled.BannerImageWrapper>\n <Styled.BannerImage src={imageUrl} alt=\"Chapter image\" />\n </Styled.BannerImageWrapper>\n )}\n </Styled.CardWrapper>\n <NodeCardTags\n nodeType={nodeType}\n state={state}\n accuracy={accuracy}\n dueDateTs={dueDateTs}\n />\n <FlexView $gutterX={0.75} $gapX={1} $flexRowGapX={0.5} $background=\"WHITE\">\n <ArrowTooltip\n renderAs=\"primary\"\n position=\"bottom\"\n tooltipItem={header}\n hidden={!showTitleTooltip}\n widthX={21.75}\n >\n <FlexView $heightX={2.5}>\n <Styled.HeaderText ref={titleTextRef} $renderAs=\"ab3\">\n {header}\n </Styled.HeaderText>\n </FlexView>\n </ArrowTooltip>\n <FlexView\n $flexDirection=\"row\"\n $heightX={1.25}\n $alignItems=\"center\"\n $justifyContent=\"space-between\"\n >\n <Styled.SubHeaderText $renderAs=\"ub3\" $color=\"BLACK_T_60\">\n {subHeader}\n </Styled.SubHeaderText>\n </FlexView>\n </FlexView>\n </Styled.CardContainer>\n {isStudent && (\n <Styled.CardMenuOptionsWrapper $visible={studentMenuVisible}>\n <CardMenuOptions\n $width={200}\n options={studentOptions}\n triggerRef={studentContainerRef}\n visible={studentMenuVisible}\n />\n </Styled.CardMenuOptionsWrapper>\n )}\n </Clickable>\n {!isStudent && (\n <Styled.MenuWrapper $position=\"absolute\" $width=\"fit-content\">\n <ArrowTooltip\n isAnimated\n renderAs=\"primary\"\n tooltipItem=\"Review\"\n position=\"bottom\"\n zIndex={5}\n parentWidth=\"100%\"\n >\n <Styled.CardKebabMenuWrapper ref={teacherContainerRef} onClick={onTeacherMenuClick}>\n <MoreVerticalIcon width={16} height={16} />\n </Styled.CardKebabMenuWrapper>\n </ArrowTooltip>\n <Styled.CardMenuOptionsWrapper $visible={teacherMenuVisible}>\n <CardMenuOptions\n $width={'fit-content'}\n options={teacherOptions}\n triggerRef={teacherContainerRef}\n visible={teacherMenuVisible}\n />\n </Styled.CardMenuOptionsWrapper>\n </Styled.MenuWrapper>\n )}\n </FlexView>\n );\n};\n\nexport default memo(HomeworkCard);\n"],"names":["HomeworkCard","header","nodeData","subHeader","userType","userMilestoneId","onNodeUnassign","onNodeReattempt","onNodeView","onNodeReview","onNodeAttempt","nodeType","state","accuracy","dueDateTs","imageUrl","imageHue","cardHeader","permissions","userNodeId","bgImage","getNodeTypeBasedBgImage","NodeCardIcon","getNodeCardBasedIcon","teacherContainerRef","useRef","studentContainerRef","titleTextRef","teacherMenuVisible","onTeacherMenuClick","useContextMenuClickHandler","studentMenuVisible","onStudentMenuClick","showTitleTooltip","setShowTitleTooltip","useState","canStart","canResume","canReview","canTeacherReview","canUnassign","canReset","isStudent","useLayoutEffect","onStudentView","useCallback","onTeacherView","handleOnMenuOptionClick","optionId","teacherOptions","Eye2Icon","Styled.StyledMinus2Icon","studentOptions","RedoIcon","jsxs","FlexView","Clickable","Styled.CardContainer","Styled.CardWrapper","jsx","Styled.IconWrapper","Text","Styled.BannerImageWrapper","Styled.BannerImage","NodeCardTags","ArrowTooltip","Styled.HeaderText","Styled.SubHeaderText","Styled.CardMenuOptionsWrapper","CardMenuOptions","Styled.MenuWrapper","Styled.CardKebabMenuWrapper","MoreVerticalIcon","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 { ICardMenuOption } from './card-menu-options';\n\nimport { useCallback, useLayoutEffect, useRef, useState } 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 NodeCardTags from '../chapters-v2/comps/node-card/node-card-tags';\nimport { getNodeTypeBasedBgImage } from '../chapters-v2/utils';\nimport { getNodeCardBasedIcon } from '../chapters-v2/utils/node-card-utils';\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 Text from '../ui/text/text';\nimport CardMenuOptions from './card-menu-options';\nimport * as Styled from './styles';\n\ninterface IHomeworkCardProps extends INodeCardCallbacks {\n header: string;\n nodeData: INodeDataProps;\n subHeader: string;\n userType: 'TEACHER' | 'STUDENT';\n userMilestoneId?: string;\n}\n\nconst HomeworkCard = ({\n header,\n nodeData,\n subHeader,\n userType,\n userMilestoneId,\n onNodeUnassign,\n onNodeReset,\n onNodeView,\n onNodeReview,\n onNodeAttempt,\n}: IHomeworkCardProps) => {\n const {\n node_type: nodeType,\n state,\n accuracy,\n due_date_ts: dueDateTs,\n image_url: imageUrl,\n image_hue: imageHue = 'ORANGE',\n card_header: cardHeader = '',\n permissions,\n user_node_id: userNodeId,\n } = nodeData;\n\n const bgImage = nodeType && getNodeTypeBasedBgImage(nodeType);\n const NodeCardIcon = nodeType && getNodeCardBasedIcon(nodeType);\n const containerRef = useRef<HTMLDivElement>(null);\n const { menuVisible, onMenuClick } = useContextMenuClickHandler(containerRef);\n const titleTextRef = useRef<HTMLDivElement>(null);\n const [showTitleTooltip, setShowTitleTooltip] = useState(false);\n\n const {\n can_start: canStart,\n can_resume: canResume,\n can_review: canReview,\n can_teacher_review: canTeacherReview,\n can_unassign: canUnassign,\n can_reset: canReset,\n } = permissions || {};\n const isStudent = userType === 'STUDENT';\n\n useLayoutEffect(() => {\n if (\n titleTextRef.current &&\n titleTextRef.current.scrollHeight > titleTextRef.current.clientHeight\n ) {\n setShowTitleTooltip(true);\n }\n }, [titleTextRef]);\n\n const onStudentView = useCallback(() => {\n if (canStart || canResume) {\n if (typeof onNodeAttempt !== 'function') {\n throw new Error('onNodeAttempt must be a function');\n }\n\n onNodeAttempt(nodeData);\n\n return;\n }\n\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\n if (typeof onNodeView !== 'function') {\n throw new Error('onPreview must be a function');\n }\n\n onNodeView(nodeData, userMilestoneId);\n }, [\n canResume,\n canReview,\n canStart,\n userMilestoneId,\n nodeData,\n onNodeAttempt,\n onNodeReview,\n onNodeView,\n userNodeId,\n ]);\n\n const onTeacherView = useCallback(() => {\n if (canTeacherReview) {\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\n onNodeReview(nodeData, userMilestoneId);\n\n return;\n }\n\n if (typeof onNodeView !== 'function') {\n throw new Error('onPreview must be a function');\n }\n\n onNodeView(nodeData, userMilestoneId);\n }, [canTeacherReview, userMilestoneId, nodeData, onNodeReview, onNodeView, userNodeId]);\n\n const handleOnMenuOptionClick = (optionId: string) => {\n switch (optionId) {\n case 'card-view':\n onTeacherView();\n\n return;\n case 'card-unassign':\n nodeData && onNodeUnassign?.(nodeData, userMilestoneId);\n\n return;\n case 'card-reset':\n nodeData && onNodeReset?.(nodeData, userMilestoneId);\n\n return;\n\n default:\n throw new Error(`No callback function for ${optionId}`);\n }\n };\n\n const menuOptions: ICardMenuOption[] = [\n {\n id: 'card-view',\n label: 'View',\n icon: Eye2Icon,\n visible: true,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'card-unassign',\n label: 'Unassign',\n icon: Styled.StyledMinus2Icon,\n visible: !!canUnassign,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'card-reset',\n label: 'Reset',\n icon: RedoIcon,\n visible: !!canReset,\n onClick: handleOnMenuOptionClick,\n },\n ];\n\n const canShowMenuOptions = !!menuOptions.find(option => option.visible);\n\n return (\n <Clickable onClick={isStudent ? onStudentView : undefined} label=\"homework-card\">\n <Styled.CardContainer $widthX={12.5} $position=\"relative\" $background={`${imageHue}_2`}>\n <Styled.CardWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $width=\"100%\"\n $heightX={3.5}\n $bgImage={bgImage || ''}\n $gutterX={0.78125}\n $flexGap={8.5}\n $position=\"relative\"\n >\n <Styled.IconWrapper\n $width={31}\n $height={31}\n $borderRadiusX={2}\n $background=\"WHITE_1\"\n $position=\"relative\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n >\n {NodeCardIcon && <NodeCardIcon width={20} height={20} />}\n </Styled.IconWrapper>\n <Text $renderAs=\"ac4-black\">{cardHeader}</Text>\n {!!imageUrl && (\n <Styled.BannerImageWrapper>\n <Styled.BannerImage src={imageUrl} alt=\"Chapter image\" />\n </Styled.BannerImageWrapper>\n )}\n </Styled.CardWrapper>\n <NodeCardTags nodeType={nodeType} state={state} accuracy={accuracy} dueDateTs={dueDateTs} />\n <FlexView $gutterX={0.75} $gapX={1} $flexRowGapX={0.5} $background=\"WHITE\">\n <ArrowTooltip\n renderAs=\"primary\"\n position=\"bottom\"\n tooltipItem={header || ''}\n hidden={!showTitleTooltip}\n widthX={21.75}\n >\n <FlexView $heightX={2.5}>\n <Styled.HeaderText ref={titleTextRef} $renderAs=\"ab3\">\n {header}\n </Styled.HeaderText>\n </FlexView>\n </ArrowTooltip>\n <FlexView\n $flexDirection=\"row\"\n $heightX={1.25}\n $alignItems=\"center\"\n $justifyContent=\"space-between\"\n >\n <Styled.SubHeaderText $renderAs=\"ub3\" $color=\"BLACK_T_60\">\n {subHeader}\n </Styled.SubHeaderText>\n {!isStudent && nodeData && canShowMenuOptions && (\n <FlexView $position=\"relative\" $width=\"fit-content\">\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem=\"Review\"\n position=\"bottom\"\n zIndex={5}\n parentWidth=\"100%\"\n >\n <Styled.CardKebabMenuWrapper ref={containerRef} onClick={onMenuClick}>\n <MoreVerticalIcon width={16} height={16} />\n </Styled.CardKebabMenuWrapper>\n </ArrowTooltip>\n <Styled.CardMenuOptionsWrapper $visible={menuVisible}>\n <CardMenuOptions options={menuOptions} />\n </Styled.CardMenuOptionsWrapper>\n </FlexView>\n )}\n </FlexView>\n </FlexView>\n </Styled.CardContainer>\n </Clickable>\n );\n};\n\nexport default HomeworkCard;\n"],"names":["HomeworkCard","header","nodeData","subHeader","userType","userMilestoneId","onNodeUnassign","onNodeReset","onNodeView","onNodeReview","onNodeAttempt","nodeType","state","accuracy","dueDateTs","imageUrl","imageHue","cardHeader","permissions","userNodeId","bgImage","getNodeTypeBasedBgImage","NodeCardIcon","getNodeCardBasedIcon","containerRef","useRef","menuVisible","onMenuClick","useContextMenuClickHandler","titleTextRef","showTitleTooltip","setShowTitleTooltip","useState","canStart","canResume","canReview","canTeacherReview","canUnassign","canReset","isStudent","useLayoutEffect","onStudentView","useCallback","onTeacherView","handleOnMenuOptionClick","optionId","menuOptions","Eye2Icon","Styled.StyledMinus2Icon","RedoIcon","canShowMenuOptions","option","Clickable","jsxs","Styled.CardContainer","Styled.CardWrapper","jsx","Styled.IconWrapper","Text","Styled.BannerImageWrapper","Styled.BannerImage","NodeCardTags","FlexView","ArrowTooltip","Styled.HeaderText","Styled.SubHeaderText","Styled.CardKebabMenuWrapper","MoreVerticalIcon","Styled.CardMenuOptionsWrapper","CardMenuOptions"],"mappings":";;;;;;;;;;;;;;;AA8BA,MAAMA,KAAe,CAAC;AAAA,EACpB,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,cAAAC;AAAA,EACA,eAAAC;AACF,MAA0B;AAClB,QAAA;AAAA,IACJ,WAAWC;AAAA,IACX,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,aAAaC;AAAA,IACb,WAAWC;AAAA,IACX,WAAWC,IAAW;AAAA,IACtB,aAAaC,IAAa;AAAA,IAC1B,aAAAC;AAAA,IACA,cAAcC;AAAA,EACZ,IAAAjB,GAEEkB,IAAUT,KAAYU,EAAwBV,CAAQ,GACtDW,IAAeX,KAAYY,EAAqBZ,CAAQ,GACxDa,IAAeC,EAAuB,IAAI,GAC1C,EAAE,aAAAC,GAAa,aAAAC,EAAY,IAAIC,GAA2BJ,CAAY,GACtEK,IAAeJ,EAAuB,IAAI,GAC1C,CAACK,GAAkBC,CAAmB,IAAIC,EAAS,EAAK,GAExD;AAAA,IACJ,WAAWC;AAAA,IACX,YAAYC;AAAA,IACZ,YAAYC;AAAA,IACZ,oBAAoBC;AAAA,IACpB,cAAcC;AAAA,IACd,WAAWC;AAAA,EAAA,IACTpB,KAAe,CAAA,GACbqB,IAAYnC,MAAa;AAE/B,EAAAoC,EAAgB,MAAM;AACpB,IACEX,EAAa,WACbA,EAAa,QAAQ,eAAeA,EAAa,QAAQ,gBAEzDE,EAAoB,EAAI;AAAA,EAC1B,GACC,CAACF,CAAY,CAAC;AAEX,QAAAY,IAAgBC,EAAY,MAAM;AACtC,QAAIT,KAAYC,GAAW;AACrB,UAAA,OAAOxB,KAAkB;AACrB,cAAA,IAAI,MAAM,kCAAkC;AAGpD,MAAAA,EAAcR,CAAQ;AAEtB;AAAA,IACF;AAEA,QAAIiC,GAAW;AACT,UAAA,OAAO1B,KAAiB;AACpB,cAAA,IAAI,MAAM,6BAA6B;AAG/C,UAAI,CAACU;AACG,cAAA,IAAI,MAAM,kDAAkD;AAEpE,MAAAV,EAAaP,GAAUG,CAAe;AAEtC;AAAA,IACF;AAEI,QAAA,OAAOG,KAAe;AAClB,YAAA,IAAI,MAAM,8BAA8B;AAGhD,IAAAA,EAAWN,GAAUG,CAAe;AAAA,EAAA,GACnC;AAAA,IACD6B;AAAA,IACAC;AAAA,IACAF;AAAA,IACA5B;AAAA,IACAH;AAAA,IACAQ;AAAA,IACAD;AAAA,IACAD;AAAA,IACAW;AAAA,EAAA,CACD,GAEKwB,IAAgBD,EAAY,MAAM;AACtC,QAAIN,GAAkB;AAChB,UAAA,OAAO3B,KAAiB;AACpB,cAAA,IAAI,MAAM,6BAA6B;AAG/C,UAAI,CAACU;AACG,cAAA,IAAI,MAAM,kDAAkD;AAGpE,MAAAV,EAAaP,GAAUG,CAAe;AAEtC;AAAA,IACF;AAEI,QAAA,OAAOG,KAAe;AAClB,YAAA,IAAI,MAAM,8BAA8B;AAGhD,IAAAA,EAAWN,GAAUG,CAAe;AAAA,EAAA,GACnC,CAAC+B,GAAkB/B,GAAiBH,GAAUO,GAAcD,GAAYW,CAAU,CAAC,GAEhFyB,IAA0B,CAACC,MAAqB;AACpD,YAAQA,GAAU;AAAA,MAChB,KAAK;AACW,QAAAF;AAEd;AAAA,MACF,KAAK;AACS,QAAAzC,MAAAI,KAAA,QAAAA,EAAiBJ,GAAUG;AAEvC;AAAA,MACF,KAAK;AACS,QAAAH,MAAAK,KAAA,QAAAA,EAAcL,GAAUG;AAEpC;AAAA,MAEF;AACE,cAAM,IAAI,MAAM,4BAA4BwC,CAAQ,EAAE;AAAA,IAC1D;AAAA,EAAA,GAGIC,IAAiC;AAAA,IACrC;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAMC;AAAA,MACN,SAAS;AAAA,MACT,SAASH;AAAA,IACX;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAMI;AAAAA,MACN,SAAS,CAAC,CAACX;AAAA,MACX,SAASO;AAAA,IACX;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAMK;AAAA,MACN,SAAS,CAAC,CAACX;AAAA,MACX,SAASM;AAAA,IACX;AAAA,EAAA,GAGIM,IAAqB,CAAC,CAACJ,EAAY,KAAK,CAAAK,MAAUA,EAAO,OAAO;AAEtE,2BACGC,IAAU,EAAA,SAASb,IAAYE,IAAgB,QAAW,OAAM,iBAC/D,UAAA,gBAAAY,EAACC,IAAA,EAAqB,SAAS,MAAM,WAAU,YAAW,aAAa,GAAGtC,CAAQ,MAChF,UAAA;AAAA,IAAA,gBAAAqC;AAAA,MAACE;AAAAA,MAAA;AAAA,QACC,gBAAe;AAAA,QACf,aAAY;AAAA,QACZ,QAAO;AAAA,QACP,UAAU;AAAA,QACV,UAAUnC,KAAW;AAAA,QACrB,UAAU;AAAA,QACV,UAAU;AAAA,QACV,WAAU;AAAA,QAEV,UAAA;AAAA,UAAA,gBAAAoC;AAAA,YAACC;AAAAA,YAAA;AAAA,cACC,QAAQ;AAAA,cACR,SAAS;AAAA,cACT,gBAAgB;AAAA,cAChB,aAAY;AAAA,cACZ,WAAU;AAAA,cACV,aAAY;AAAA,cACZ,iBAAgB;AAAA,cAEf,eAAiB,gBAAAD,EAAAlC,GAAA,EAAa,OAAO,IAAI,QAAQ,IAAI;AAAA,YAAA;AAAA,UACxD;AAAA,UACC,gBAAAkC,EAAAE,IAAA,EAAK,WAAU,aAAa,UAAWzC,GAAA;AAAA,UACvC,CAAC,CAACF,KACD,gBAAAyC,EAACG,IAAA,EACC,UAAC,gBAAAH,EAAAI,IAAA,EAAmB,KAAK7C,GAAU,KAAI,iBAAgB,EACzD,CAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAEJ;AAAA,IACC,gBAAAyC,EAAAK,GAAA,EAAa,UAAAlD,GAAoB,OAAAC,GAAc,UAAAC,GAAoB,WAAAC,GAAsB;AAAA,IAC1F,gBAAAuC,EAACS,KAAS,UAAU,MAAM,OAAO,GAAG,cAAc,KAAK,aAAY,SACjE,UAAA;AAAA,MAAA,gBAAAN;AAAA,QAACO;AAAA,QAAA;AAAA,UACC,UAAS;AAAA,UACT,UAAS;AAAA,UACT,aAAa9D,KAAU;AAAA,UACvB,QAAQ,CAAC6B;AAAA,UACT,QAAQ;AAAA,UAER,UAAC,gBAAA0B,EAAAM,GAAA,EAAS,UAAU,KAClB,UAAC,gBAAAN,EAAAQ,IAAA,EAAkB,KAAKnC,GAAc,WAAU,OAC7C,YACH,CAAA,GACF;AAAA,QAAA;AAAA,MACF;AAAA,MACA,gBAAAwB;AAAA,QAACS;AAAA,QAAA;AAAA,UACC,gBAAe;AAAA,UACf,UAAU;AAAA,UACV,aAAY;AAAA,UACZ,iBAAgB;AAAA,UAEhB,UAAA;AAAA,YAAA,gBAAAN,EAACS,IAAA,EAAqB,WAAU,OAAM,QAAO,cAC1C,UACH9D,GAAA;AAAA,YACC,CAACoC,KAAarC,KAAYgD,uBACxBY,GAAS,EAAA,WAAU,YAAW,QAAO,eACpC,UAAA;AAAA,cAAA,gBAAAN;AAAA,gBAACO;AAAA,gBAAA;AAAA,kBACC,UAAS;AAAA,kBACT,aAAY;AAAA,kBACZ,UAAS;AAAA,kBACT,QAAQ;AAAA,kBACR,aAAY;AAAA,kBAEZ,UAAC,gBAAAP,EAAAU,IAAA,EAA4B,KAAK1C,GAAc,SAASG,GACvD,UAAA,gBAAA6B,EAACW,GAAiB,EAAA,OAAO,IAAI,QAAQ,GAAI,CAAA,GAC3C;AAAA,gBAAA;AAAA,cACF;AAAA,cACA,gBAAAX,EAACY,IAAA,EAA8B,UAAU1C,GACvC,UAAC,gBAAA8B,EAAAa,IAAA,EAAgB,SAASvB,EAAA,CAAa,EACzC,CAAA;AAAA,YAAA,GACF;AAAA,UAAA;AAAA,QAAA;AAAA,MAEJ;AAAA,IAAA,GACF;AAAA,EAAA,EACF,CAAA,EACF,CAAA;AAEJ;"}
@@ -1,8 +1,8 @@
1
1
  import r from "styled-components";
2
2
  import i from "../../assets/line-icons/icons/minus2.js";
3
- import e from "../ui/layout/flex-view.js";
3
+ import t from "../ui/layout/flex-view.js";
4
4
  import n from "../ui/text/text.js";
5
- const l = r(e)(({ theme: o }) => `
5
+ const l = r(t)(({ theme: o }) => `
6
6
  cursor: pointer;
7
7
  width: fit-content;
8
8
 
@@ -16,9 +16,9 @@ const l = r(e)(({ theme: o }) => `
16
16
  -webkit-box-orient: vertical;
17
17
  overflow: hidden;
18
18
  text-overflow: ellipsis;
19
- `, u = r(e)(({
19
+ `, u = r(t)(({
20
20
  theme: o,
21
- $visible: t
21
+ $visible: e
22
22
  }) => `
23
23
  cursor: pointer;
24
24
  position: absolute;
@@ -26,40 +26,40 @@ const l = r(e)(({ theme: o }) => `
26
26
  top: calc(100% + 4px);
27
27
  left: 0;
28
28
  transform-origin: top;
29
- transform: scaleY(${t ? 1 : 0});
30
- opacity: ${t ? 1 : 0};
29
+ transform: scaleY(${e ? 1 : 0});
30
+ opacity: ${e ? 1 : 0};
31
31
  transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out;
32
32
 
33
33
  &:hover {
34
34
  border-radius: 50%;
35
35
  background: ${o.colors.WHITE_5};
36
36
  }
37
- `), x = r(e)`
37
+ `), x = r(t)`
38
38
  border: 1px solid ${({ theme: o }) => o.colors.BLACK_T_15};
39
39
 
40
40
  &:hover {
41
41
  border: 1px solid ${({ theme: o }) => o.colors.BLACK};
42
42
  }
43
- `, b = r(e)(({ $bgImage: o }) => o ? `
44
- background-image: url(${o});
45
- background-repeat: no-repeat;
46
- background-size: cover;
47
- background-position: center;
48
- overflow: hidden;
49
- ` : "overflow: hidden;"), f = r(e)`
43
+ `, b = r(t)(({ $bgImage: o }) => `
44
+ background-image: url(${o});
45
+ background-repeat: no-repeat;
46
+ background-size: cover;
47
+ background-position: center;
48
+ overflow: hidden;
49
+ `), w = r(t)`
50
50
  display: flex;
51
51
  align-items: center;
52
52
  justify-content: center;
53
- `, w = r(e)`
53
+ `, f = r(t)`
54
54
  position: absolute;
55
55
  right: -18px;
56
56
  top: -4px;
57
57
  `, g = r.img(({ theme: o }) => {
58
- const { gutter: t } = o.layout;
58
+ const { gutter: e } = o.layout;
59
59
  return `
60
60
  border: 1px solid ${o.colors.BLACK_T_15};
61
- width: ${t * 4}px;
62
- height: ${t * 4}px;
61
+ width: ${e * 4}px;
62
+ height: ${e * 4}px;
63
63
  border-radius: 50%;
64
64
  `;
65
65
  }), h = r(i)`
@@ -72,49 +72,42 @@ const l = r(e)(({ theme: o }) => `
72
72
  -webkit-box-orient: vertical;
73
73
  overflow: hidden;
74
74
  text-overflow: ellipsis;
75
- `, v = r(e)`
75
+ `, k = r(t)`
76
76
  box-shadow: 0px 6px 12px 0px rgba(0, 0, 0, 0.4);
77
+ width: 180px;
77
78
  position: relative;
78
79
  left: 0;
79
80
  top: 0;
80
- `, k = r(e)(({
81
+ `, v = r(t)(({
81
82
  theme: o,
82
- $disabled: t
83
+ $disabled: e
83
84
  }) => `
84
- cursor: ${t ? "not-allowed" : "pointer"};
85
+ cursor: ${e ? "not-allowed" : "pointer"};
85
86
 
86
87
  &:hover {
87
- background: ${t ? "transparent" : o.colors.BLACK};
88
+ background: ${e ? "transparent" : o.colors.BLACK};
88
89
  };
89
90
 
90
91
  path {
91
92
  fill: ${o.colors.WHITE_1};
92
93
  }
93
- `), C = r(n)`
94
+ `), $ = r(n)`
94
95
  white-space: nowrap;
95
96
  overflow: hidden;
96
97
  text-overflow: ellipsis;
97
- `, W = r(e)`
98
- position: absolute;
99
- z-index: 6;
100
- top: calc(100% - 32px);
101
- right: 8px;
102
- transform-origin: top;
103
- transform: scaleY(1);
104
98
  `;
105
99
  export {
106
100
  g as BannerImage,
107
- w as BannerImageWrapper,
101
+ f as BannerImageWrapper,
108
102
  x as CardContainer,
109
103
  l as CardKebabMenuWrapper,
110
104
  u as CardMenuOptionsWrapper,
111
- k as CardOptionWrapper,
112
- v as CardOptions,
105
+ v as CardOptionWrapper,
106
+ k as CardOptions,
113
107
  b as CardWrapper,
114
108
  m as HeaderText,
115
- f as IconWrapper,
116
- W as MenuWrapper,
117
- C as OptionText,
109
+ w as IconWrapper,
110
+ $ as OptionText,
118
111
  h as StyledMinus2Icon,
119
112
  d as SubHeaderText
120
113
  };