@cuemath/leap 3.5.55-as4 → 3.5.55

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 (31) hide show
  1. package/dist/features/homework/homework-card-view.js +39 -38
  2. package/dist/features/homework/homework-card-view.js.map +1 -1
  3. package/dist/features/homework/homework-card.js +50 -48
  4. package/dist/features/homework/homework-card.js.map +1 -1
  5. package/dist/features/homework/hw-card-list/hw-card-list-types.js.map +1 -1
  6. package/dist/features/homework/hw-card-list/hw-card-list-view.js +81 -78
  7. package/dist/features/homework/hw-card-list/hw-card-list-view.js.map +1 -1
  8. package/dist/features/homework/hw-card-list/hw-card-list.js +80 -64
  9. package/dist/features/homework/hw-card-list/hw-card-list.js.map +1 -1
  10. package/dist/features/homework/utils.js +31 -22
  11. package/dist/features/homework/utils.js.map +1 -1
  12. package/dist/features/journey/hooks/use-mathfit-assigned-journey/use-mathfit-assigned-student-journey.js +80 -0
  13. package/dist/features/journey/hooks/use-mathfit-assigned-journey/use-mathfit-assigned-student-journey.js.map +1 -0
  14. package/dist/features/journey/journey-id/journey-id-student.js +2 -2
  15. package/dist/features/journey/journey-id/journey-id-student.js.map +1 -1
  16. package/dist/features/math-fit/math-fit/math-fit.js +15 -15
  17. package/dist/features/math-fit/math-fit/math-fit.js.map +1 -1
  18. package/dist/features/math-fit/math-fit-overview/math-fit-overview.js +15 -15
  19. package/dist/features/math-fit/math-fit-overview/math-fit-overview.js.map +1 -1
  20. package/dist/features/math-fit/math-fit-report/math-fit-report.js +10 -10
  21. package/dist/features/math-fit/math-fit-report/math-fit-report.js.map +1 -1
  22. package/dist/features/timeline/daily-timeline/daily-timeline.js +15 -15
  23. package/dist/features/timeline/daily-timeline/daily-timeline.js.map +1 -1
  24. package/dist/features/timeline/monthly-timeline/monthly-report/monthly-report.js +13 -13
  25. package/dist/features/timeline/monthly-timeline/monthly-report/monthly-report.js.map +1 -1
  26. package/dist/features/timeline/monthly-timeline/monthly-timeline.js +1 -1
  27. package/dist/features/timeline/monthly-timeline/monthly-timeline.js.map +1 -1
  28. package/dist/features/timeline/monthly-timeline/ptm-report/ptm-report.js +7 -7
  29. package/dist/features/timeline/monthly-timeline/ptm-report/ptm-report.js.map +1 -1
  30. package/dist/index.d.ts +3 -1
  31. package/package.json +1 -1
@@ -1,19 +1,19 @@
1
1
  import { jsx as e, jsxs as s } from "react/jsx-runtime";
2
- import { memo as M, useMemo as U, useState as F, useRef as b, useCallback as w, useLayoutEffect as G } from "react";
3
- import j from "../../assets/line-icons/icons/closed-eye.js";
2
+ import { memo as U, useMemo as F, useState as G, useRef as b, useCallback as w, useLayoutEffect as j } from "react";
3
+ import K from "../../assets/line-icons/icons/closed-eye.js";
4
4
  import y from "../chapters-v2/comps/node-card/node-card-tags.js";
5
- import { getNodeTypeBasedBgImage as K } from "../chapters-v2/utils/index.js";
6
- import { getNodeCardBasedIcon as V } from "../chapters-v2/utils/node-card-utils.js";
7
- import Z from "../math-fit/math-fit-card/math-fit-card.js";
8
- import Y from "../puzzles/comps/puzzle-card.js";
5
+ import { getNodeTypeBasedBgImage as V } from "../chapters-v2/utils/index.js";
6
+ import { getNodeCardBasedIcon as Z } from "../chapters-v2/utils/node-card-utils.js";
7
+ import Y from "../math-fit/math-fit-card/math-fit-card.js";
8
+ import q from "../puzzles/comps/puzzle-card.js";
9
9
  import u from "../ui/arrow-tooltip/arrow-tooltip.js";
10
10
  import c from "../ui/layout/flex-view.js";
11
- import q from "../ui/lottie-animation/lottie-animation.js";
12
- import J from "./card-title.js";
13
- import { EHWCardListEntityType as Q } from "./hw-card-list/hw-card-list-types.js";
11
+ import J from "../ui/lottie-animation/lottie-animation.js";
12
+ import Q from "./card-title.js";
13
+ import { EHWCardListEntityType as ee } from "./hw-card-list/hw-card-list-types.js";
14
14
  import A from "./node-progress.js";
15
- import { PuzzleCardWrapper as ee, CardWrapper as re, IconWrapper as te, BannerImageWrapper as oe, BannerImage as ie, HeaderText as ne, SubHeaderText as de } from "./styles.js";
16
- const ae = { renderer: "canvas", autoplay: !1 }, le = ({
15
+ import { PuzzleCardWrapper as re, CardWrapper as te, IconWrapper as oe, BannerImageWrapper as ie, BannerImage as ne, HeaderText as de, SubHeaderText as ae } from "./styles.js";
16
+ const le = { renderer: "canvas", autoplay: !1 }, se = ({
17
17
  header: E,
18
18
  isInQueue: k,
19
19
  nodeData: i,
@@ -24,27 +24,28 @@ const ae = { renderer: "canvas", autoplay: !1 }, le = ({
24
24
  puzzleHWCardRef: x,
25
25
  entityType: N,
26
26
  state: r,
27
- score: O
27
+ score: O,
28
+ mathFitCardRef: v
28
29
  }) => {
29
30
  const {
30
31
  node_type: t,
31
32
  accuracy: I,
32
33
  due_date_ts: o,
33
- image_url: g,
34
+ image_url: f,
34
35
  image_hue: a,
35
36
  card_header: z = "",
36
37
  unlocked_on_ts: m,
37
38
  course_type: D,
38
39
  title: H
39
- } = i, L = t === "PUZZLE_CARD", f = N === Q.MATHFIT_TEST, $ = n === "STUDENT" && r === "LOCKED", _ = r === "LOCKED" || n === "TEACHER" && r !== "COMPLETED" && r !== "EXPIRED", S = U(() => r === "LOCKED" ? f ? "Take test after class" : "Not available to student" : "Sheet is not completed yet", [r, f]), [v, X] = F(!1), p = b(null), R = K(t), T = b(null), { lottie: B } = V(t), P = w(() => {
40
+ } = i, L = t === "PUZZLE_CARD", g = N === ee.MATHFIT_TEST, $ = n === "STUDENT" && r === "LOCKED", _ = r === "LOCKED" || n === "TEACHER" && r !== "COMPLETED" && r !== "EXPIRED", S = F(() => r === "LOCKED" ? g ? "Take test after class" : "Not available to student" : "Sheet is not completed yet", [r, g]), [X, R] = G(!1), p = b(null), B = V(t), T = b(null), { lottie: P } = Z(t), W = w(() => {
40
41
  var l;
41
42
  (l = T.current) == null || l.play();
42
- }, []), W = w(() => {
43
+ }, []), M = w(() => {
43
44
  var l;
44
45
  (l = T.current) == null || l.stop();
45
46
  }, []);
46
- return G(() => {
47
- p.current && p.current.scrollHeight > p.current.clientHeight && X(!0);
47
+ return j(() => {
48
+ p.current && p.current.scrollHeight > p.current.clientHeight && R(!0);
48
49
  }, []), L ? /* @__PURE__ */ e(
49
50
  u,
50
51
  {
@@ -53,7 +54,7 @@ const ae = { renderer: "canvas", autoplay: !1 }, le = ({
53
54
  position: "bottom",
54
55
  hidden: !$,
55
56
  children: /* @__PURE__ */ e("div", { ref: x, children: /* @__PURE__ */ s(
56
- ee,
57
+ re,
57
58
  {
58
59
  ref: h,
59
60
  $position: "relative",
@@ -61,10 +62,10 @@ const ae = { renderer: "canvas", autoplay: !1 }, le = ({
61
62
  $disabled: $,
62
63
  children: [
63
64
  /* @__PURE__ */ e(
64
- Y,
65
+ q,
65
66
  {
66
67
  imageHue: a,
67
- imageUrl: g ?? "",
68
+ imageUrl: f ?? "",
68
69
  title: H,
69
70
  width: 126,
70
71
  height: 159,
@@ -94,15 +95,15 @@ const ae = { renderer: "canvas", autoplay: !1 }, le = ({
94
95
  }
95
96
  ) })
96
97
  }
97
- ) : f ? /* @__PURE__ */ e(
98
+ ) : g ? /* @__PURE__ */ e(
98
99
  u,
99
100
  {
100
101
  renderAs: "primary",
101
102
  tooltipItem: S,
102
103
  position: "bottom",
103
104
  hidden: !_,
104
- children: /* @__PURE__ */ e(
105
- Z,
105
+ children: /* @__PURE__ */ e("div", { ref: v, children: /* @__PURE__ */ e(
106
+ Y,
106
107
  {
107
108
  score: O,
108
109
  dueDateTs: i.due_date_ts,
@@ -115,7 +116,7 @@ const ae = { renderer: "canvas", autoplay: !1 }, le = ({
115
116
  isMilestone: d,
116
117
  studentContainerRef: h
117
118
  }
118
- )
119
+ ) })
119
120
  }
120
121
  ) : /* @__PURE__ */ s(
121
122
  c,
@@ -124,23 +125,23 @@ const ae = { renderer: "canvas", autoplay: !1 }, le = ({
124
125
  $widthX: 12.38,
125
126
  $position: "relative",
126
127
  $background: `${a || "ORANGE"}_2`,
127
- onMouseEnter: P,
128
- onMouseLeave: W,
128
+ onMouseEnter: W,
129
+ onMouseLeave: M,
129
130
  children: [
130
131
  /* @__PURE__ */ s(
131
- re,
132
+ te,
132
133
  {
133
134
  $flexDirection: "row",
134
135
  $alignItems: "center",
135
136
  $width: "100%",
136
137
  $heightX: 3.5,
137
- $bgImage: R,
138
+ $bgImage: B,
138
139
  $gutterX: 0.78125,
139
140
  $flexGap: 8.5,
140
141
  $position: "relative",
141
142
  children: [
142
143
  /* @__PURE__ */ e(
143
- te,
144
+ oe,
144
145
  {
145
146
  $width: 31,
146
147
  $height: 31,
@@ -149,10 +150,10 @@ const ae = { renderer: "canvas", autoplay: !1 }, le = ({
149
150
  $position: "relative",
150
151
  $alignItems: "center",
151
152
  $justifyContent: "center",
152
- children: /* @__PURE__ */ e(q, { src: B, ref: T, settings: ae })
153
+ children: /* @__PURE__ */ e(J, { src: P, ref: T, settings: le })
153
154
  }
154
155
  ),
155
- /* @__PURE__ */ e(J, { cardHeader: z, nodeType: t, courseType: D }),
156
+ /* @__PURE__ */ e(Q, { cardHeader: z, nodeType: t, courseType: D }),
156
157
  k && /* @__PURE__ */ e(
157
158
  u,
158
159
  {
@@ -160,10 +161,10 @@ const ae = { renderer: "canvas", autoplay: !1 }, le = ({
160
161
  tooltipItem: "Not visible to student",
161
162
  position: "bottom",
162
163
  zIndex: 6,
163
- children: /* @__PURE__ */ e(j, {})
164
+ children: /* @__PURE__ */ e(K, {})
164
165
  }
165
166
  ),
166
- !!g && /* @__PURE__ */ e(oe, { children: /* @__PURE__ */ e(ie, { src: g, alt: "Chapter image" }) })
167
+ !!f && /* @__PURE__ */ e(ie, { children: /* @__PURE__ */ e(ne, { src: f, alt: "Chapter image" }) })
167
168
  ]
168
169
  }
169
170
  ),
@@ -194,10 +195,10 @@ const ae = { renderer: "canvas", autoplay: !1 }, le = ({
194
195
  position: "bottom",
195
196
  tooltipItem: E,
196
197
  width: 300,
197
- hidden: !v,
198
+ hidden: !X,
198
199
  parentWidth: "auto",
199
200
  zIndex: 6,
200
- children: /* @__PURE__ */ e(c, { $heightX: 2.5, children: /* @__PURE__ */ e(ne, { ref: p, $renderAs: "ab3", children: E }) })
201
+ children: /* @__PURE__ */ e(c, { $heightX: 2.5, children: /* @__PURE__ */ e(de, { ref: p, $renderAs: "ab3", children: E }) })
201
202
  }
202
203
  ),
203
204
  /* @__PURE__ */ s(
@@ -208,7 +209,7 @@ const ae = { renderer: "canvas", autoplay: !1 }, le = ({
208
209
  $alignItems: "center",
209
210
  $justifyContent: "space-between",
210
211
  children: [
211
- /* @__PURE__ */ e(de, { $renderAs: "ub3", $color: "BLACK_T_60", children: C }),
212
+ /* @__PURE__ */ e(ae, { $renderAs: "ub3", $color: "BLACK_T_60", children: C }),
212
213
  /* @__PURE__ */ e(c, { $width: 32 })
213
214
  ]
214
215
  }
@@ -217,8 +218,8 @@ const ae = { renderer: "canvas", autoplay: !1 }, le = ({
217
218
  ]
218
219
  }
219
220
  );
220
- }, we = M(le);
221
+ }, ye = U(se);
221
222
  export {
222
- we as default
223
+ ye as default
223
224
  };
224
225
  //# sourceMappingURL=homework-card-view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"homework-card-view.js","sources":["../../../src/features/homework/homework-card-view.tsx"],"sourcesContent":["import { memo, useCallback, useLayoutEffect, useMemo, useRef, useState, type FC } from 'react';\n\nimport ClosedEyeIcon from '../../assets/line-icons/icons/closed-eye';\nimport NodeCardTags from '../chapters-v2/comps/node-card/node-card-tags';\nimport type { INodeDataProps, TSheetStates } from '../chapters-v2/comps/node-card/node-card-types';\nimport { getNodeTypeBasedBgImage } from '../chapters-v2/utils';\nimport { getNodeCardBasedIcon } from '../chapters-v2/utils/node-card-utils';\nimport MathFitCard from '../math-fit/math-fit-card/math-fit-card';\nimport PuzzleCard from '../puzzles/comps/puzzle-card';\nimport ArrowTooltip from '../ui/arrow-tooltip/arrow-tooltip';\nimport FlexView from '../ui/layout/flex-view';\nimport LottieAnimation from '../ui/lottie-animation/lottie-animation';\nimport type { ILottieAnimationRef } from '../ui/lottie-animation/types';\nimport type { TUserTypes } from '../ui/types';\nimport CardTitle from './card-title';\nimport { EHWCardListEntityType } from './hw-card-list/hw-card-list-types';\nimport NodeProgress from './node-progress';\nimport * as Styled from './styles';\n\nconst renderSettings = { renderer: 'canvas', autoplay: false };\n\ninterface IHomeworkCardViewProps {\n header: string;\n isInQueue?: boolean;\n nodeData: INodeDataProps;\n studentContainerRef: React.RefObject<HTMLDivElement>;\n subHeader: string;\n userType: TUserTypes;\n isMilestone?: boolean;\n puzzleHWCardRef?: React.RefObject<HTMLDivElement>;\n entityType?: EHWCardListEntityType;\n state: TSheetStates;\n score: number | null;\n}\n\nconst HomeworkView: FC<IHomeworkCardViewProps> = ({\n header,\n isInQueue,\n nodeData,\n studentContainerRef,\n subHeader,\n userType,\n isMilestone = false,\n puzzleHWCardRef,\n entityType,\n state,\n score,\n}) => {\n const {\n node_type: nodeType,\n accuracy,\n due_date_ts: dueDateTs,\n image_url: imageUrl,\n image_hue: imageHue,\n card_header: cardHeader = '',\n unlocked_on_ts: unlockedOnTs,\n course_type: courseType,\n title,\n } = nodeData;\n const isPuzzleCard = nodeType === 'PUZZLE_CARD';\n const isMathFitCard = entityType === EHWCardListEntityType.MATHFIT_TEST;\n const isPuzzleDisabled = userType === 'STUDENT' && state === 'LOCKED';\n const isMathFitDisabled =\n state === 'LOCKED' || (userType === 'TEACHER' && state !== 'COMPLETED' && state !== 'EXPIRED');\n\n const tooltipText = useMemo(() => {\n if (state === 'LOCKED') {\n if (isMathFitCard) return 'Take test after class';\n\n return 'Not available to student';\n }\n\n return 'Sheet is not completed yet';\n }, [state, isMathFitCard]);\n\n const [showTitleTooltip, setShowTitleTooltip] = useState(false);\n const titleTextRef = useRef<HTMLDivElement>(null);\n const bgImage = getNodeTypeBasedBgImage(nodeType);\n const animationRef = useRef<ILottieAnimationRef | null>(null);\n const { lottie: nodeCardLottie } = getNodeCardBasedIcon(nodeType);\n\n const handleOnMouseEnter = useCallback(() => {\n animationRef.current?.play();\n }, []);\n\n const handleOnMouseLeave = useCallback(() => {\n animationRef.current?.stop();\n }, []);\n\n useLayoutEffect(() => {\n if (\n titleTextRef.current &&\n titleTextRef.current.scrollHeight > titleTextRef.current.clientHeight\n ) {\n setShowTitleTooltip(true);\n }\n }, []);\n\n if (isPuzzleCard) {\n return (\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem=\"Solve puzzle after class\"\n position=\"bottom\"\n hidden={!isPuzzleDisabled}\n >\n <div ref={puzzleHWCardRef}>\n <Styled.PuzzleCardWrapper\n ref={studentContainerRef}\n $position=\"relative\"\n $background={`${imageHue}_2`}\n $disabled={isPuzzleDisabled}\n >\n <PuzzleCard\n imageHue={imageHue}\n imageUrl={imageUrl ?? ''}\n title={title}\n width={126}\n height={159}\n disabled={isPuzzleDisabled}\n />\n\n <NodeCardTags\n nodeType={nodeType}\n state={state}\n accuracy={accuracy}\n dueDateTs={dueDateTs}\n isStudent={userType === 'STUDENT'}\n isMilestone={isMilestone}\n />\n {!isMilestone && dueDateTs && unlockedOnTs && (\n <NodeProgress\n dueDate={dueDateTs * 1000}\n unlockedOn={unlockedOnTs * 1000}\n progressBg={`${imageHue || 'ORANGE'}_5`}\n />\n )}\n </Styled.PuzzleCardWrapper>\n </div>\n </ArrowTooltip>\n );\n }\n\n // MathFit Assessment Card\n if (isMathFitCard) {\n return (\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem={tooltipText}\n position=\"bottom\"\n hidden={!isMathFitDisabled}\n >\n <MathFitCard\n score={score}\n dueDateTs={nodeData.due_date_ts}\n nodeType=\"DYNAMIC\"\n state={state}\n subHeader={subHeader}\n unlockedOnTs={nodeData?.unlocked_on_ts}\n userType={userType}\n isMathFitDisabled={isMathFitDisabled}\n isMilestone={isMilestone}\n studentContainerRef={studentContainerRef}\n />\n </ArrowTooltip>\n );\n }\n\n return (\n <FlexView\n ref={studentContainerRef}\n $widthX={12.38}\n $position=\"relative\"\n $background={`${imageHue || 'ORANGE'}_2`}\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\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 <LottieAnimation src={nodeCardLottie} ref={animationRef} settings={renderSettings} />\n </Styled.IconWrapper>\n <CardTitle cardHeader={cardHeader} nodeType={nodeType} courseType={courseType} />\n {isInQueue && (\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem=\"Not visible to student\"\n position=\"bottom\"\n zIndex={6}\n >\n <ClosedEyeIcon />\n </ArrowTooltip>\n )}\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 isStudent={userType === 'STUDENT'}\n isMilestone={isMilestone}\n />\n {!isMilestone && dueDateTs && unlockedOnTs && (\n <NodeProgress\n dueDate={dueDateTs * 1000}\n unlockedOn={unlockedOnTs * 1000}\n progressBg={`${imageHue || 'ORANGE'}_4`}\n />\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 width={300}\n hidden={!showTitleTooltip}\n parentWidth=\"auto\"\n zIndex={6}\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 $width={32} />\n </FlexView>\n </FlexView>\n </FlexView>\n );\n};\n\nexport default memo(HomeworkView);\n"],"names":["renderSettings","HomeworkView","header","isInQueue","nodeData","studentContainerRef","subHeader","userType","isMilestone","puzzleHWCardRef","entityType","state","score","nodeType","accuracy","dueDateTs","imageUrl","imageHue","cardHeader","unlockedOnTs","courseType","title","isPuzzleCard","isMathFitCard","EHWCardListEntityType","isPuzzleDisabled","isMathFitDisabled","tooltipText","useMemo","showTitleTooltip","setShowTitleTooltip","useState","titleTextRef","useRef","bgImage","getNodeTypeBasedBgImage","animationRef","nodeCardLottie","getNodeCardBasedIcon","handleOnMouseEnter","useCallback","_a","handleOnMouseLeave","useLayoutEffect","jsx","ArrowTooltip","jsxs","Styled.PuzzleCardWrapper","PuzzleCard","NodeCardTags","NodeProgress","MathFitCard","FlexView","Styled.CardWrapper","Styled.IconWrapper","LottieAnimation","CardTitle","ClosedEyeIcon","Styled.BannerImageWrapper","Styled.BannerImage","Styled.HeaderText","Styled.SubHeaderText","HomeworkCardView","memo"],"mappings":"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"}
1
+ {"version":3,"file":"homework-card-view.js","sources":["../../../src/features/homework/homework-card-view.tsx"],"sourcesContent":["import { memo, useCallback, useLayoutEffect, useMemo, useRef, useState, type FC } from 'react';\n\nimport ClosedEyeIcon from '../../assets/line-icons/icons/closed-eye';\nimport NodeCardTags from '../chapters-v2/comps/node-card/node-card-tags';\nimport type { INodeDataProps, TSheetStates } from '../chapters-v2/comps/node-card/node-card-types';\nimport { getNodeTypeBasedBgImage } from '../chapters-v2/utils';\nimport { getNodeCardBasedIcon } from '../chapters-v2/utils/node-card-utils';\nimport MathFitCard from '../math-fit/math-fit-card/math-fit-card';\nimport PuzzleCard from '../puzzles/comps/puzzle-card';\nimport ArrowTooltip from '../ui/arrow-tooltip/arrow-tooltip';\nimport FlexView from '../ui/layout/flex-view';\nimport LottieAnimation from '../ui/lottie-animation/lottie-animation';\nimport type { ILottieAnimationRef } from '../ui/lottie-animation/types';\nimport type { TUserTypes } from '../ui/types';\nimport CardTitle from './card-title';\nimport { EHWCardListEntityType } from './hw-card-list/hw-card-list-types';\nimport NodeProgress from './node-progress';\nimport * as Styled from './styles';\n\nconst renderSettings = { renderer: 'canvas', autoplay: false };\n\ninterface IHomeworkCardViewProps {\n header: string;\n isInQueue?: boolean;\n nodeData: INodeDataProps;\n studentContainerRef: React.RefObject<HTMLDivElement>;\n subHeader: string;\n userType: TUserTypes;\n isMilestone?: boolean;\n puzzleHWCardRef?: React.RefObject<HTMLDivElement>;\n mathFitCardRef?: React.RefObject<HTMLDivElement>;\n entityType?: EHWCardListEntityType;\n state: TSheetStates;\n score: number | null;\n}\n\nconst HomeworkView: FC<IHomeworkCardViewProps> = ({\n header,\n isInQueue,\n nodeData,\n studentContainerRef,\n subHeader,\n userType,\n isMilestone = false,\n puzzleHWCardRef,\n entityType,\n state,\n score,\n mathFitCardRef,\n}) => {\n const {\n node_type: nodeType,\n accuracy,\n due_date_ts: dueDateTs,\n image_url: imageUrl,\n image_hue: imageHue,\n card_header: cardHeader = '',\n unlocked_on_ts: unlockedOnTs,\n course_type: courseType,\n title,\n } = nodeData;\n const isPuzzleCard = nodeType === 'PUZZLE_CARD';\n const isMathFitCard = entityType === EHWCardListEntityType.MATHFIT_TEST;\n const isPuzzleDisabled = userType === 'STUDENT' && state === 'LOCKED';\n const isMathFitDisabled =\n state === 'LOCKED' || (userType === 'TEACHER' && state !== 'COMPLETED' && state !== 'EXPIRED');\n\n const tooltipText = useMemo(() => {\n if (state === 'LOCKED') {\n if (isMathFitCard) return 'Take test after class';\n\n return 'Not available to student';\n }\n\n return 'Sheet is not completed yet';\n }, [state, isMathFitCard]);\n\n const [showTitleTooltip, setShowTitleTooltip] = useState(false);\n const titleTextRef = useRef<HTMLDivElement>(null);\n const bgImage = getNodeTypeBasedBgImage(nodeType);\n const animationRef = useRef<ILottieAnimationRef | null>(null);\n const { lottie: nodeCardLottie } = getNodeCardBasedIcon(nodeType);\n\n const handleOnMouseEnter = useCallback(() => {\n animationRef.current?.play();\n }, []);\n\n const handleOnMouseLeave = useCallback(() => {\n animationRef.current?.stop();\n }, []);\n\n useLayoutEffect(() => {\n if (\n titleTextRef.current &&\n titleTextRef.current.scrollHeight > titleTextRef.current.clientHeight\n ) {\n setShowTitleTooltip(true);\n }\n }, []);\n\n if (isPuzzleCard) {\n return (\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem=\"Solve puzzle after class\"\n position=\"bottom\"\n hidden={!isPuzzleDisabled}\n >\n <div ref={puzzleHWCardRef}>\n <Styled.PuzzleCardWrapper\n ref={studentContainerRef}\n $position=\"relative\"\n $background={`${imageHue}_2`}\n $disabled={isPuzzleDisabled}\n >\n <PuzzleCard\n imageHue={imageHue}\n imageUrl={imageUrl ?? ''}\n title={title}\n width={126}\n height={159}\n disabled={isPuzzleDisabled}\n />\n\n <NodeCardTags\n nodeType={nodeType}\n state={state}\n accuracy={accuracy}\n dueDateTs={dueDateTs}\n isStudent={userType === 'STUDENT'}\n isMilestone={isMilestone}\n />\n {!isMilestone && dueDateTs && unlockedOnTs && (\n <NodeProgress\n dueDate={dueDateTs * 1000}\n unlockedOn={unlockedOnTs * 1000}\n progressBg={`${imageHue || 'ORANGE'}_5`}\n />\n )}\n </Styled.PuzzleCardWrapper>\n </div>\n </ArrowTooltip>\n );\n }\n\n // MathFit Assessment Card\n if (isMathFitCard) {\n return (\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem={tooltipText}\n position=\"bottom\"\n hidden={!isMathFitDisabled}\n >\n <div ref={mathFitCardRef}>\n <MathFitCard\n score={score}\n dueDateTs={nodeData.due_date_ts}\n nodeType=\"DYNAMIC\"\n state={state}\n subHeader={subHeader}\n unlockedOnTs={nodeData?.unlocked_on_ts}\n userType={userType}\n isMathFitDisabled={isMathFitDisabled}\n isMilestone={isMilestone}\n studentContainerRef={studentContainerRef}\n />\n </div>\n </ArrowTooltip>\n );\n }\n\n return (\n <FlexView\n ref={studentContainerRef}\n $widthX={12.38}\n $position=\"relative\"\n $background={`${imageHue || 'ORANGE'}_2`}\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\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 <LottieAnimation src={nodeCardLottie} ref={animationRef} settings={renderSettings} />\n </Styled.IconWrapper>\n <CardTitle cardHeader={cardHeader} nodeType={nodeType} courseType={courseType} />\n {isInQueue && (\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem=\"Not visible to student\"\n position=\"bottom\"\n zIndex={6}\n >\n <ClosedEyeIcon />\n </ArrowTooltip>\n )}\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 isStudent={userType === 'STUDENT'}\n isMilestone={isMilestone}\n />\n {!isMilestone && dueDateTs && unlockedOnTs && (\n <NodeProgress\n dueDate={dueDateTs * 1000}\n unlockedOn={unlockedOnTs * 1000}\n progressBg={`${imageHue || 'ORANGE'}_4`}\n />\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 width={300}\n hidden={!showTitleTooltip}\n parentWidth=\"auto\"\n zIndex={6}\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 $width={32} />\n </FlexView>\n </FlexView>\n </FlexView>\n );\n};\n\nexport default memo(HomeworkView);\n"],"names":["renderSettings","HomeworkView","header","isInQueue","nodeData","studentContainerRef","subHeader","userType","isMilestone","puzzleHWCardRef","entityType","state","score","mathFitCardRef","nodeType","accuracy","dueDateTs","imageUrl","imageHue","cardHeader","unlockedOnTs","courseType","title","isPuzzleCard","isMathFitCard","EHWCardListEntityType","isPuzzleDisabled","isMathFitDisabled","tooltipText","useMemo","showTitleTooltip","setShowTitleTooltip","useState","titleTextRef","useRef","bgImage","getNodeTypeBasedBgImage","animationRef","nodeCardLottie","getNodeCardBasedIcon","handleOnMouseEnter","useCallback","_a","handleOnMouseLeave","useLayoutEffect","jsx","ArrowTooltip","jsxs","Styled.PuzzleCardWrapper","PuzzleCard","NodeCardTags","NodeProgress","MathFitCard","FlexView","Styled.CardWrapper","Styled.IconWrapper","LottieAnimation","CardTitle","ClosedEyeIcon","Styled.BannerImageWrapper","Styled.BannerImage","Styled.HeaderText","Styled.SubHeaderText","HomeworkCardView","memo"],"mappings":"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"}
@@ -1,20 +1,20 @@
1
1
  import { jsxs as I, jsx as t } from "react/jsx-runtime";
2
- import { memo as le, useRef as j, useCallback as T, useMemo as ue } from "react";
2
+ import { memo as ue, useRef as j, useCallback as T, useMemo as fe } from "react";
3
3
  import z from "../../assets/line-icons/icons/eye2.js";
4
- import fe from "../../assets/line-icons/icons/home2.js";
5
- import de from "../../assets/line-icons/icons/more-vertical.js";
4
+ import de from "../../assets/line-icons/icons/home2.js";
5
+ import he from "../../assets/line-icons/icons/more-vertical.js";
6
6
  import B from "../../assets/line-icons/icons/redo.js";
7
7
  import { ECardType as K } from "../chapters-v2/comps/node-card/node-card-types.js";
8
8
  import Z from "../ui/arrow-tooltip/arrow-tooltip.js";
9
- import he from "../ui/buttons/clickable/clickable.js";
9
+ import me from "../ui/buttons/clickable/clickable.js";
10
10
  import A from "../ui/hooks/use-context-menu-click-handler.js";
11
- import me from "../ui/layout/flex-view.js";
11
+ import pe from "../ui/layout/flex-view.js";
12
12
  import Y from "./card-menu-options.js";
13
- import pe from "./homework-card-view.js";
14
- import { EHWCardListEntityType as be } from "./hw-card-list/hw-card-list-types.js";
15
- import { CardContainer as we, MenuWrapper as Ce, CardKebabMenuWrapper as Ee, BlurContainer as Me, BlurFlexView as Te, StyledMinus2Icon as _e } from "./styles.js";
16
- import { getCardAnalyticProps as ye } from "./utils.js";
17
- const $e = ({
13
+ import be from "./homework-card-view.js";
14
+ import { EHWCardListEntityType as we } from "./hw-card-list/hw-card-list-types.js";
15
+ import { CardContainer as Ce, MenuWrapper as Ee, CardKebabMenuWrapper as Me, BlurContainer as Te, BlurFlexView as _e, StyledMinus2Icon as ye } from "./styles.js";
16
+ import { getCardAnalyticProps as $e } from "./utils.js";
17
+ const ke = ({
18
18
  // callbacks
19
19
  nodeData: e,
20
20
  onNodeAttempt: _,
@@ -30,28 +30,29 @@ const $e = ({
30
30
  homeworkId: i,
31
31
  isInQueue: g,
32
32
  puzzleHWCardRef: G,
33
+ mathFitCardRef: J,
33
34
  renderAs: S,
34
- score: J,
35
- shouldOpenOnRight: Q,
35
+ score: Q,
36
+ shouldOpenOnRight: U,
36
37
  state: h,
37
38
  studentId: O,
38
- subHeader: U,
39
- userMilestoneId: D,
39
+ subHeader: D,
40
+ userMilestoneId: N,
40
41
  userType: V
41
42
  }) => {
42
43
  const c = S === "homework", {
43
44
  node_type: w,
44
- permissions: N,
45
+ permissions: ee,
45
46
  user_node_id: u,
46
- user_milestone_id: ee
47
- } = e, r = D || ee || "", F = w === "PUZZLE_CARD", n = v === be.MATHFIT_TEST, W = h === "LOCKED", $ = j(null), k = j(null), { menuVisible: H, onMenuClick: re } = A($), { menuVisible: te, onMenuClick: L } = A(k), {
47
+ user_milestone_id: re
48
+ } = e, r = N || re || "", F = w === "PUZZLE_CARD", n = v === we.MATHFIT_TEST, W = h === "LOCKED", $ = j(null), k = j(null), { menuVisible: H, onMenuClick: te } = A($), { menuVisible: ie, onMenuClick: L } = A(k), {
48
49
  can_start: C,
49
50
  can_resume: E,
50
51
  can_review: f,
51
- can_unassign: ie,
52
+ can_unassign: ne,
52
53
  can_reset: x,
53
- can_assign_as_homework: ne
54
- } = N, o = V === "STUDENT", M = T(() => {
54
+ can_assign_as_homework: ce
55
+ } = ee, o = V === "STUDENT", M = T(() => {
55
56
  if (f) {
56
57
  if (typeof s != "function")
57
58
  throw new Error("onReview must be a function");
@@ -60,7 +61,7 @@ const $e = ({
60
61
  s(e, r);
61
62
  return;
62
63
  }
63
- }, [f, s, u, e, r]), ce = T(() => {
64
+ }, [f, s, u, e, r]), oe = T(() => {
64
65
  if (n && l) {
65
66
  if (typeof a != "function")
66
67
  throw new Error("onCardClick must be a function for MathFit cards");
@@ -153,7 +154,7 @@ const $e = ({
153
154
  M,
154
155
  R
155
156
  ]
156
- ), oe = [
157
+ ), se = [
157
158
  {
158
159
  id: "teacher-card-view",
159
160
  label: f ? "Review" : "View",
@@ -164,8 +165,8 @@ const $e = ({
164
165
  {
165
166
  id: "teacher-card-unassign",
166
167
  label: "Unassign",
167
- icon: _e,
168
- disabled: c ? w === "MASTERY" : !ie,
168
+ icon: ye,
169
+ disabled: c ? w === "MASTERY" : !ne,
169
170
  onClick: d
170
171
  },
171
172
  {
@@ -178,11 +179,11 @@ const $e = ({
178
179
  {
179
180
  id: "teacher-card-assign-as-hw",
180
181
  label: "Assign as HW",
181
- icon: fe,
182
- disabled: !ne,
182
+ icon: de,
183
+ disabled: !ce,
183
184
  onClick: d
184
185
  }
185
- ], se = [
186
+ ], ae = [
186
187
  {
187
188
  id: "student-card-view",
188
189
  label: "Review",
@@ -197,8 +198,8 @@ const $e = ({
197
198
  disabled: !x,
198
199
  onClick: d
199
200
  }
200
- ], P = ue(
201
- () => ye({
201
+ ], P = fe(
202
+ () => $e({
202
203
  canResume: E,
203
204
  canStart: C,
204
205
  homeworkId: i,
@@ -220,18 +221,18 @@ const $e = ({
220
221
  O,
221
222
  u
222
223
  ]
223
- ), ae = o && F && W || !o && n && h !== "COMPLETED" && h !== "EXPIRED" || n && W;
224
- return /* @__PURE__ */ I(we, { $position: "relative", $width: "fit-content", children: [
224
+ ), le = o && F && W || !o && n && h !== "COMPLETED" && h !== "EXPIRED" || n && W;
225
+ return /* @__PURE__ */ I(Ce, { $position: "relative", $width: "fit-content", children: [
225
226
  /* @__PURE__ */ t(
226
- he,
227
+ me,
227
228
  {
228
- onClick: o ? ce : R,
229
+ onClick: o ? oe : R,
229
230
  label: "homework-card",
230
231
  analyticsLabel: P.analyticsLabel,
231
232
  analyticsProps: P.analyticsProps,
232
- disabled: ae,
233
+ disabled: le,
233
234
  children: /* @__PURE__ */ t(
234
- pe,
235
+ be,
235
236
  {
236
237
  entityType: v,
237
238
  header: q,
@@ -239,10 +240,11 @@ const $e = ({
239
240
  isMilestone: S === "milestone",
240
241
  nodeData: e,
241
242
  puzzleHWCardRef: G,
242
- score: J,
243
+ mathFitCardRef: J,
244
+ score: Q,
243
245
  state: h,
244
246
  studentContainerRef: k,
245
- subHeader: U,
247
+ subHeader: D,
246
248
  userType: V
247
249
  }
248
250
  )
@@ -252,13 +254,13 @@ const $e = ({
252
254
  Y,
253
255
  {
254
256
  $width: 200,
255
- options: se,
257
+ options: ae,
256
258
  triggerRef: k,
257
- visible: te,
259
+ visible: ie,
258
260
  shouldOpenOnRight: !1
259
261
  }
260
262
  ),
261
- !o && !F && !n && /* @__PURE__ */ I(Ce, { $position: "absolute", $width: "fit-content", $borderRadiusX: 2, children: [
263
+ !o && !F && !n && /* @__PURE__ */ I(Ee, { $position: "absolute", $width: "fit-content", $borderRadiusX: 2, children: [
262
264
  /* @__PURE__ */ t(
263
265
  Z,
264
266
  {
@@ -269,13 +271,13 @@ const $e = ({
269
271
  parentWidth: "100%",
270
272
  hidden: H || h !== "WAIT_FOR_REVIEW" && c,
271
273
  children: /* @__PURE__ */ t(
272
- Ee,
274
+ Me,
273
275
  {
274
276
  $alignItems: "center",
275
277
  $justifyContent: "center",
276
278
  ref: $,
277
- onClick: re,
278
- children: /* @__PURE__ */ t(de, { width: 16, height: 16 })
279
+ onClick: te,
280
+ children: /* @__PURE__ */ t(he, { width: 16, height: 16 })
279
281
  }
280
282
  )
281
283
  }
@@ -283,18 +285,18 @@ const $e = ({
283
285
  /* @__PURE__ */ t(
284
286
  Y,
285
287
  {
286
- options: oe,
288
+ options: se,
287
289
  triggerRef: $,
288
290
  visible: H,
289
- shouldOpenOnRight: Q,
291
+ shouldOpenOnRight: U,
290
292
  $width: 144
291
293
  }
292
294
  )
293
295
  ] }),
294
- g && /* @__PURE__ */ t(Me, { $background: "WHITE_5", children: /* @__PURE__ */ t(Te, { $heightX: 1, $widthX: 6, children: /* @__PURE__ */ t(Z, { renderAs: "primary", tooltipItem: "Not visible to student", position: "bottom", children: /* @__PURE__ */ t(me, { $heightX: 1, $widthX: 6 }) }) }) })
296
+ g && /* @__PURE__ */ t(Te, { $background: "WHITE_5", children: /* @__PURE__ */ t(_e, { $heightX: 1, $widthX: 6, children: /* @__PURE__ */ t(Z, { renderAs: "primary", tooltipItem: "Not visible to student", position: "bottom", children: /* @__PURE__ */ t(pe, { $heightX: 1, $widthX: 6 }) }) }) })
295
297
  ] });
296
- }, ze = le($e);
298
+ }, Be = ue(ke);
297
299
  export {
298
- ze as default
300
+ Be as default
299
301
  };
300
302
  //# sourceMappingURL=homework-card.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"homework-card.js","sources":["../../../src/features/homework/homework-card.tsx"],"sourcesContent":["import { memo, useCallback, useMemo, useRef, type FC } 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 {\n ECardType,\n type INodeCardCallbacks,\n type INodeDataProps,\n type TSheetStates,\n} from '../chapters-v2/comps/node-card/node-card-types';\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 type { TUserTypes } from '../ui/types';\nimport CardMenuOptions from './card-menu-options';\nimport HomeworkView from './homework-card-view';\nimport { EHWCardListEntityType } from './hw-card-list/hw-card-list-types';\nimport * as Styled from './styles';\nimport { getCardAnalyticProps } from './utils';\n\ninterface IHomeworkCardProps extends INodeCardCallbacks {\n entityId?: string;\n entityType?: EHWCardListEntityType;\n header: string;\n homeworkId?: string;\n isInQueue?: boolean;\n nodeData: INodeDataProps;\n puzzleHWCardRef?: React.RefObject<HTMLDivElement>;\n renderAs: 'homework' | 'milestone';\n score: number | null;\n shouldOpenOnRight: boolean;\n state: TSheetStates;\n studentId: string;\n subHeader: string;\n userMilestoneId?: string;\n userType: TUserTypes;\n}\n\nconst HomeworkCard: FC<IHomeworkCardProps> = ({\n // callbacks\n nodeData,\n onNodeAttempt,\n onNodeReattempt,\n onNodeReview,\n onNodeUnassign,\n onNodeView,\n onNodeAssignAsHomework,\n onCardClick,\n\n entityId,\n entityType,\n header,\n homeworkId,\n isInQueue,\n puzzleHWCardRef,\n renderAs,\n score,\n shouldOpenOnRight,\n state,\n studentId,\n subHeader,\n userMilestoneId,\n userType,\n}) => {\n const isHomeWork = renderAs === 'homework';\n const {\n node_type: nodeType,\n permissions,\n user_node_id: userNodeId,\n user_milestone_id: nodeDataMilestoneId,\n } = nodeData;\n\n const milestoneId = userMilestoneId || nodeDataMilestoneId || '';\n const isPuzzleCard = nodeType === 'PUZZLE_CARD';\n const isMathFitCard = entityType === EHWCardListEntityType.MATHFIT_TEST;\n const isSheetLocked = state === 'LOCKED';\n\n const teacherContainerRef = useRef<HTMLDivElement>(null) as React.RefObject<HTMLDivElement>;\n const studentContainerRef = useRef<HTMLDivElement>(null) as React.RefObject<HTMLDivElement>;\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 // Handle MathFit card clicks\n if (isMathFitCard && entityId) {\n if (typeof onCardClick !== 'function') {\n throw new Error('onCardClick must be a function for MathFit cards');\n }\n\n onCardClick({ entityId, type: ECardType.MATHFIT });\n\n return;\n }\n\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 canResume,\n canStart,\n entityId,\n homeworkId,\n isHomeWork,\n isMathFitCard,\n milestoneId,\n nodeData,\n onCardClick,\n onNodeAttempt,\n onStudentMenuClick,\n onStudentViewSheet,\n ]);\n\n const onTeacherCardClick = useCallback(() => {\n // Handle MathFit card clicks\n if (isMathFitCard && entityId) {\n if (typeof onCardClick !== 'function') {\n throw new Error('onCardClick must be a function for MathFit cards');\n }\n\n onCardClick({ entityId, type: ECardType.MATHFIT });\n\n return;\n }\n\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 }, [\n canReview,\n entityId,\n homeworkId,\n isMathFitCard,\n milestoneId,\n nodeData,\n onCardClick,\n onNodeReview,\n onNodeView,\n userNodeId,\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, milestoneId, homeworkId);\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 homeworkId,\n milestoneId,\n nodeData,\n onNodeAssignAsHomework,\n onNodeReattempt,\n onNodeUnassign,\n onStudentViewSheet,\n onTeacherCardClick,\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 canResume,\n canStart,\n homeworkId,\n isHomeWork,\n isStudent,\n milestoneId,\n nodeType,\n studentId,\n userNodeId,\n ],\n );\n\n const isClickableDisabled =\n (isStudent && isPuzzleCard && isSheetLocked) ||\n (!isStudent && isMathFitCard && state !== 'COMPLETED' && state !== 'EXPIRED') ||\n (isMathFitCard && isSheetLocked);\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 disabled={isClickableDisabled}\n >\n <HomeworkView\n entityType={entityType}\n header={header}\n isInQueue={isInQueue}\n isMilestone={renderAs === 'milestone'}\n nodeData={nodeData}\n puzzleHWCardRef={puzzleHWCardRef}\n score={score}\n state={state}\n studentContainerRef={studentContainerRef}\n subHeader={subHeader}\n userType={userType}\n />\n </Clickable>\n {isStudent && !isHomeWork && !isMathFitCard && (\n <CardMenuOptions\n $width={200}\n options={studentOptions}\n triggerRef={studentContainerRef}\n visible={studentMenuVisible}\n shouldOpenOnRight={false}\n />\n )}\n {!isStudent && !isPuzzleCard && !isMathFitCard && (\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","onCardClick","entityId","entityType","header","homeworkId","isInQueue","puzzleHWCardRef","renderAs","score","shouldOpenOnRight","state","studentId","subHeader","userMilestoneId","userType","isHomeWork","nodeType","permissions","userNodeId","nodeDataMilestoneId","milestoneId","isPuzzleCard","isMathFitCard","EHWCardListEntityType","isSheetLocked","teacherContainerRef","useRef","studentContainerRef","teacherMenuVisible","onTeacherMenuClick","useContextMenuClickHandler","studentMenuVisible","onStudentMenuClick","canStart","canResume","canReview","canUnassign","canReset","canAssignAsHw","isStudent","onStudentViewSheet","useCallback","onStudentCardClick","ECardType","onTeacherCardClick","handleOnMenuOptionClick","optionId","teacherOptions","Eye2Icon","Styled.StyledMinus2Icon","RedoIcon","Home2Icon","studentOptions","analyticsLabel","useMemo","getCardAnalyticProps","isClickableDisabled","Styled.CardContainer","jsx","Clickable","HomeworkView","CardMenuOptions","jsxs","Styled.MenuWrapper","ArrowTooltip","Styled.CardKebabMenuWrapper","MoreVerticalIcon","Styled.BlurContainer","Styled.BlurFlexView","FlexView","HomeworkCard$1","memo"],"mappings":"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"}
1
+ {"version":3,"file":"homework-card.js","sources":["../../../src/features/homework/homework-card.tsx"],"sourcesContent":["import { memo, useCallback, useMemo, useRef, type FC } 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 {\n ECardType,\n type INodeCardCallbacks,\n type INodeDataProps,\n type TSheetStates,\n} from '../chapters-v2/comps/node-card/node-card-types';\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 type { TUserTypes } from '../ui/types';\nimport CardMenuOptions from './card-menu-options';\nimport HomeworkView from './homework-card-view';\nimport { EHWCardListEntityType } from './hw-card-list/hw-card-list-types';\nimport * as Styled from './styles';\nimport { getCardAnalyticProps } from './utils';\n\ninterface IHomeworkCardProps extends INodeCardCallbacks {\n entityId?: string;\n entityType?: EHWCardListEntityType;\n header: string;\n homeworkId?: string;\n isInQueue?: boolean;\n nodeData: INodeDataProps;\n puzzleHWCardRef?: React.RefObject<HTMLDivElement>;\n mathFitCardRef?: React.RefObject<HTMLDivElement>;\n renderAs: 'homework' | 'milestone';\n score: number | null;\n shouldOpenOnRight: boolean;\n state: TSheetStates;\n studentId: string;\n subHeader: string;\n userMilestoneId?: string;\n userType: TUserTypes;\n}\n\nconst HomeworkCard: FC<IHomeworkCardProps> = ({\n // callbacks\n nodeData,\n onNodeAttempt,\n onNodeReattempt,\n onNodeReview,\n onNodeUnassign,\n onNodeView,\n onNodeAssignAsHomework,\n onCardClick,\n\n entityId,\n entityType,\n header,\n homeworkId,\n isInQueue,\n puzzleHWCardRef,\n mathFitCardRef,\n renderAs,\n score,\n shouldOpenOnRight,\n state,\n studentId,\n subHeader,\n userMilestoneId,\n userType,\n}) => {\n const isHomeWork = renderAs === 'homework';\n const {\n node_type: nodeType,\n permissions,\n user_node_id: userNodeId,\n user_milestone_id: nodeDataMilestoneId,\n } = nodeData;\n\n const milestoneId = userMilestoneId || nodeDataMilestoneId || '';\n const isPuzzleCard = nodeType === 'PUZZLE_CARD';\n const isMathFitCard = entityType === EHWCardListEntityType.MATHFIT_TEST;\n const isSheetLocked = state === 'LOCKED';\n\n const teacherContainerRef = useRef<HTMLDivElement>(null) as React.RefObject<HTMLDivElement>;\n const studentContainerRef = useRef<HTMLDivElement>(null) as React.RefObject<HTMLDivElement>;\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 // Handle MathFit card clicks\n if (isMathFitCard && entityId) {\n if (typeof onCardClick !== 'function') {\n throw new Error('onCardClick must be a function for MathFit cards');\n }\n\n onCardClick({ entityId, type: ECardType.MATHFIT });\n\n return;\n }\n\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 canResume,\n canStart,\n entityId,\n homeworkId,\n isHomeWork,\n isMathFitCard,\n milestoneId,\n nodeData,\n onCardClick,\n onNodeAttempt,\n onStudentMenuClick,\n onStudentViewSheet,\n ]);\n\n const onTeacherCardClick = useCallback(() => {\n // Handle MathFit card clicks\n if (isMathFitCard && entityId) {\n if (typeof onCardClick !== 'function') {\n throw new Error('onCardClick must be a function for MathFit cards');\n }\n\n onCardClick({ entityId, type: ECardType.MATHFIT });\n\n return;\n }\n\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 }, [\n canReview,\n entityId,\n homeworkId,\n isMathFitCard,\n milestoneId,\n nodeData,\n onCardClick,\n onNodeReview,\n onNodeView,\n userNodeId,\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, milestoneId, homeworkId);\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 homeworkId,\n milestoneId,\n nodeData,\n onNodeAssignAsHomework,\n onNodeReattempt,\n onNodeUnassign,\n onStudentViewSheet,\n onTeacherCardClick,\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 canResume,\n canStart,\n homeworkId,\n isHomeWork,\n isStudent,\n milestoneId,\n nodeType,\n studentId,\n userNodeId,\n ],\n );\n\n const isClickableDisabled =\n (isStudent && isPuzzleCard && isSheetLocked) ||\n (!isStudent && isMathFitCard && state !== 'COMPLETED' && state !== 'EXPIRED') ||\n (isMathFitCard && isSheetLocked);\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 disabled={isClickableDisabled}\n >\n <HomeworkView\n entityType={entityType}\n header={header}\n isInQueue={isInQueue}\n isMilestone={renderAs === 'milestone'}\n nodeData={nodeData}\n puzzleHWCardRef={puzzleHWCardRef}\n mathFitCardRef={mathFitCardRef}\n score={score}\n state={state}\n studentContainerRef={studentContainerRef}\n subHeader={subHeader}\n userType={userType}\n />\n </Clickable>\n {isStudent && !isHomeWork && !isMathFitCard && (\n <CardMenuOptions\n $width={200}\n options={studentOptions}\n triggerRef={studentContainerRef}\n visible={studentMenuVisible}\n shouldOpenOnRight={false}\n />\n )}\n {!isStudent && !isPuzzleCard && !isMathFitCard && (\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","onCardClick","entityId","entityType","header","homeworkId","isInQueue","puzzleHWCardRef","mathFitCardRef","renderAs","score","shouldOpenOnRight","state","studentId","subHeader","userMilestoneId","userType","isHomeWork","nodeType","permissions","userNodeId","nodeDataMilestoneId","milestoneId","isPuzzleCard","isMathFitCard","EHWCardListEntityType","isSheetLocked","teacherContainerRef","useRef","studentContainerRef","teacherMenuVisible","onTeacherMenuClick","useContextMenuClickHandler","studentMenuVisible","onStudentMenuClick","canStart","canResume","canReview","canUnassign","canReset","canAssignAsHw","isStudent","onStudentViewSheet","useCallback","onStudentCardClick","ECardType","onTeacherCardClick","handleOnMenuOptionClick","optionId","teacherOptions","Eye2Icon","Styled.StyledMinus2Icon","RedoIcon","Home2Icon","studentOptions","analyticsLabel","useMemo","getCardAnalyticProps","isClickableDisabled","Styled.CardContainer","jsx","Clickable","HomeworkView","CardMenuOptions","jsxs","Styled.MenuWrapper","ArrowTooltip","Styled.CardKebabMenuWrapper","MoreVerticalIcon","Styled.BlurContainer","Styled.BlurFlexView","FlexView","HomeworkCard$1","memo"],"mappings":";;;;;;;;;;;;;;;;AA0CA,MAAMA,KAAuC,CAAC;AAAA;AAAA,EAE5C,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,aAAAC;AAAA,EAEA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,UAAAC;AACF,MAAM;AACJ,QAAMC,IAAaR,MAAa,YAC1B;AAAA,IACJ,WAAWS;AAAA,IACX,aAAAC;AAAA,IACA,cAAcC;AAAA,IACd,mBAAmBC;AAAA,EACjB,IAAA3B,GAEE4B,IAAcP,KAAmBM,MAAuB,IACxDE,IAAeL,MAAa,eAC5BM,IAAgBrB,MAAesB,GAAsB,cACrDC,IAAgBd,MAAU,UAE1Be,IAAsBC,EAAuB,IAAI,GACjDC,IAAsBD,EAAuB,IAAI,GACjD,EAAE,aAAaE,GAAoB,aAAaC,OACpDC,EAA2BL,CAAmB,GAC1C,EAAE,aAAaM,IAAoB,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,IAAArB,IACEsB,IAAYzB,MAAa,WAEzB0B,IAAqBC,EAAY,MAAM;AAC3C,QAAIN,GAAW;AACT,UAAA,OAAOxC,KAAiB;AACpB,cAAA,IAAI,MAAM,6BAA6B;AAG/C,UAAI,CAACuB;AACG,cAAA,IAAI,MAAM,kDAAkD;AAEpE,MAAAvB,EAAaH,GAAU4B,CAAW;AAElC;AAAA,IACF;AAAA,EAAA,GACC,CAACe,GAAWxC,GAAcuB,GAAY1B,GAAU4B,CAAW,CAAC,GAEzDsB,KAAqBD,EAAY,MAAM;AAE3C,QAAInB,KAAiBtB,GAAU;AACzB,UAAA,OAAOD,KAAgB;AACnB,cAAA,IAAI,MAAM,kDAAkD;AAGpE,MAAAA,EAAY,EAAE,UAAAC,GAAU,MAAM2C,EAAU,QAAS,CAAA;AAEjD;AAAA,IACF;AAEA,QAAIV,KAAYC,GAAW;AACrB,UAAA,OAAOzC,KAAkB;AACrB,cAAA,IAAI,MAAM,kCAAkC;AAGtC,MAAAA,EAAAD,GAAU4B,GAAajB,CAAU;AAE/C;AAAA,IACF;AAEA,QAAI,CAACY,GAAY;AACI,MAAAiB;AAEnB;AAAA,IACF;AACmB,IAAAQ;EAAA,GAClB;AAAA,IACDN;AAAA,IACAD;AAAA,IACAjC;AAAA,IACAG;AAAA,IACAY;AAAA,IACAO;AAAA,IACAF;AAAA,IACA5B;AAAA,IACAO;AAAA,IACAN;AAAA,IACAuC;AAAA,IACAQ;AAAA,EAAA,CACD,GAEKI,IAAqBH,EAAY,MAAM;AAE3C,QAAInB,KAAiBtB,GAAU;AACzB,UAAA,OAAOD,KAAgB;AACnB,cAAA,IAAI,MAAM,kDAAkD;AAGpE,MAAAA,EAAY,EAAE,UAAAC,GAAU,MAAM2C,EAAU,QAAS,CAAA;AAEjD;AAAA,IACF;AAEA,QAAIR,GAAW;AACT,UAAA,OAAOxC,KAAiB;AACpB,cAAA,IAAI,MAAM,iCAAiC;AAGnD,UAAI,CAACuB;AACG,cAAA,IAAI,MAAM,kDAAkD;AAEvD,MAAAvB,EAAAH,GAAU4B,GAAajB,CAAU;AAE9C;AAAA,IACF;AAEI,QAAA,OAAON,KAAe;AAClB,YAAA,IAAI,MAAM,+BAA+B;AAGjD,IAAAA,EAAWL,GAAU4B,CAAW;AAAA,EAAA,GAC/B;AAAA,IACDe;AAAA,IACAnC;AAAA,IACAG;AAAA,IACAmB;AAAA,IACAF;AAAA,IACA5B;AAAA,IACAO;AAAA,IACAJ;AAAA,IACAE;AAAA,IACAqB;AAAA,EAAA,CACD,GAEK2B,IAA0BJ;AAAA,IAC9B,CAACK,MAAqB;AACpB,cAAQA,GAAU;AAAA,QAChB,KAAK;AACgB,UAAAF;AAEnB;AAAA,QACF,KAAK;AACgB,UAAAJ;AAEnB;AAAA,QACF,KAAK;AACc,UAAA5C,KAAA,QAAAA,EAAAJ,GAAU4B,GAAajB;AAExC;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AACH,UAAAT,KAAA,QAAAA,EAAkBF,GAAU4B;AAE5B;AAAA,QAEF,KAAK;AACH,UAAAtB,KAAA,QAAAA,EAAyBN,GAAU4B;AAEnC;AAAA,QAEF;AACE,gBAAM,IAAI,MAAM,4BAA4B0B,CAAQ,EAAE;AAAA,MAC1D;AAAA,IACF;AAAA,IACA;AAAA,MACE3C;AAAA,MACAiB;AAAA,MACA5B;AAAA,MACAM;AAAA,MACAJ;AAAA,MACAE;AAAA,MACA4C;AAAA,MACAI;AAAA,IACF;AAAA,EAAA,GAGIG,KAAiB;AAAA,IACrB;AAAA,MACE,IAAI;AAAA,MACJ,OAAOZ,IAAY,WAAW;AAAA,MAC9B,MAAMa;AAAA,MACN,UAAU;AAAA,MACV,SAASH;AAAA,IACX;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAMI;AAAAA,MACN,UAAUlC,IAAaC,MAAa,YAAY,CAACoB;AAAA,MACjD,SAASS;AAAA,IACX;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAMK;AAAA,MACN,UAAU,CAACb;AAAA,MACX,SAASQ;AAAA,IACX;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAMM;AAAA,MACN,UAAU,CAACb;AAAA,MACX,SAASO;AAAA,IACX;AAAA,EAAA,GAGIO,KAAiB;AAAA,IACrB;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAMJ;AAAA,MACN,UAAU,CAACb;AAAA,MACX,SAASU;AAAA,IACX;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAMK;AAAA,MACN,UAAU,CAACb;AAAA,MACX,SAASQ;AAAA,IACX;AAAA,EAAA,GAGIQ,IAAiBC;AAAA,IACrB,MACEC,GAAqB;AAAA,MACnB,WAAArB;AAAA,MACA,UAAAD;AAAA,MACA,YAAA9B;AAAA,MACA,YAAAY;AAAA,MACA,WAAAwB;AAAA,MACA,aAAAnB;AAAA,MACA,UAAAJ;AAAA,MACA,WAAAL;AAAA,MACA,YAAAO;AAAA,IAAA,CACD;AAAA,IACH;AAAA,MACEgB;AAAA,MACAD;AAAA,MACA9B;AAAA,MACAY;AAAA,MACAwB;AAAA,MACAnB;AAAA,MACAJ;AAAA,MACAL;AAAA,MACAO;AAAA,IACF;AAAA,EAAA,GAGIsC,KACHjB,KAAalB,KAAgBG,KAC7B,CAACe,KAAajB,KAAiBZ,MAAU,eAAeA,MAAU,aAClEY,KAAiBE;AAEpB,2BACGiC,IAAA,EAAqB,WAAU,YAAW,QAAO,eAChD,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,SAASpB,IAAYG,KAAqBE;AAAA,QAC1C,OAAM;AAAA,QACN,gBAAgBS,EAAe;AAAA,QAC/B,gBAAgBA,EAAe;AAAA,QAC/B,UAAUG;AAAA,QAEV,UAAA,gBAAAE;AAAA,UAACE;AAAAA,UAAA;AAAA,YACC,YAAA3D;AAAA,YACA,QAAAC;AAAA,YACA,WAAAE;AAAA,YACA,aAAaG,MAAa;AAAA,YAC1B,UAAAf;AAAA,YACA,iBAAAa;AAAA,YACA,gBAAAC;AAAA,YACA,OAAAE;AAAA,YACA,OAAAE;AAAA,YACA,qBAAAiB;AAAA,YACA,WAAAf;AAAA,YACA,UAAAE;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IACF;AAAA,IACCyB,KAAa,CAACxB,KAAc,CAACO,KAC5B,gBAAAoC;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,QAAQ;AAAA,QACR,SAAST;AAAA,QACT,YAAYzB;AAAA,QACZ,SAASI;AAAA,QACT,mBAAmB;AAAA,MAAA;AAAA,IACrB;AAAA,IAED,CAACQ,KAAa,CAAClB,KAAgB,CAACC,KAC/B,gBAAAwC,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,QAAQpC,KAAuBlB,MAAU,qBAAqBK;AAAA,UAE9D,UAAA,gBAAA2C;AAAA,YAACO;AAAAA,YAAA;AAAA,cACC,aAAY;AAAA,cACZ,iBAAgB;AAAA,cAChB,KAAKxC;AAAA,cACL,SAASI;AAAA,cAET,UAAC,gBAAA6B,EAAAQ,IAAA,EAAiB,OAAO,IAAI,QAAQ,IAAI;AAAA,YAAA;AAAA,UAC3C;AAAA,QAAA;AAAA,MACF;AAAA,MACA,gBAAAR;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,SAASd;AAAA,UACT,YAAYtB;AAAA,UACZ,SAASG;AAAA,UACT,mBAAAnB;AAAA,UACA,QAAQ;AAAA,QAAA;AAAA,MACV;AAAA,IAAA,GACF;AAAA,IAEDL,KACC,gBAAAsD,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,GAAKhF,EAAY;"}
@@ -1 +1 @@
1
- {"version":3,"file":"hw-card-list-types.js","sources":["../../../../src/features/homework/hw-card-list/hw-card-list-types.tsx"],"sourcesContent":["import type {\n INodeCardCallbacks,\n INodeDataProps,\n} from '../../chapters-v2/comps/node-card/node-card-types';\nimport type { IHomepageStartJourneyProps } from '../../journey/hooks/use-home-page-journey/homepage-journey-types';\nimport type { TUserTypes } from '../../ui/types';\nimport type { IHomeworkDetails } from './api/get-homeworks';\n\nexport enum EHWCardListEntityType {\n MATHFIT_TEST = 'MATHFIT_TEST',\n USER_NODE = 'USER_NODE',\n}\n\nexport interface IHWCardListProps extends INodeCardCallbacks {\n userType: TUserTypes;\n studentId: string;\n stream: string;\n onTestPreview?: (sheetData: INodeDataProps, milestoneId?: string) => void;\n onTestStart?: (sheetData: INodeDataProps, homeworkId?: string) => void;\n onTestReview?: (sheetData: INodeDataProps, milestoneId?: string) => void;\n homeworkRef?: React.RefObject<HTMLDivElement>;\n startHomePageJourney?: ({ studentId, stream, userType }: IHomepageStartJourneyProps) => void;\n canStartJourney?: boolean;\n canStartPuzzleAssignedJourney?: boolean;\n}\n\nexport interface IHwCardListView extends INodeCardCallbacks {\n userType: TUserTypes;\n studentId: string;\n isHwProcessing: boolean;\n hwDetails?: IHomeworkDetails;\n onTestPreview?: (sheetData: INodeDataProps, milestoneId?: string) => void;\n onTestStart?: (sheetData: INodeDataProps, homeworkId?: string) => void;\n onTestReview?: (sheetData: INodeDataProps, milestoneId?: string) => void;\n puzzleHWCardRef?: React.RefObject<HTMLDivElement>;\n}\n\nexport interface IUseScrollButtonsProps {\n totalCount: number;\n}\n\nexport interface IUseScrollButtonsReturn {\n scrollRef: React.RefObject<HTMLDivElement | null>;\n showLeftButton: boolean;\n showRightButton: boolean;\n handleMouseEnter: () => void;\n handleMouseLeave: () => void;\n handleScrollLeft: () => void;\n handleScrollRight: () => void;\n}\n"],"names":["EHWCardListEntityType"],"mappings":"AAQY,IAAAA,sBAAAA,OACVA,EAAA,eAAe,gBACfA,EAAA,YAAY,aAFFA,IAAAA,KAAA,CAAA,CAAA;"}
1
+ {"version":3,"file":"hw-card-list-types.js","sources":["../../../../src/features/homework/hw-card-list/hw-card-list-types.tsx"],"sourcesContent":["import type {\n INodeCardCallbacks,\n INodeDataProps,\n} from '../../chapters-v2/comps/node-card/node-card-types';\nimport type { IHomepageStartJourneyProps } from '../../journey/hooks/use-home-page-journey/homepage-journey-types';\nimport type { TUserTypes } from '../../ui/types';\nimport type { IHomeworkDetails } from './api/get-homeworks';\n\nexport enum EHWCardListEntityType {\n MATHFIT_TEST = 'MATHFIT_TEST',\n USER_NODE = 'USER_NODE',\n}\n\nexport interface IHWCardListProps extends INodeCardCallbacks {\n userType: TUserTypes;\n studentId: string;\n stream: string;\n onTestPreview?: (sheetData: INodeDataProps, milestoneId?: string) => void;\n onTestStart?: (sheetData: INodeDataProps, homeworkId?: string) => void;\n onTestReview?: (sheetData: INodeDataProps, milestoneId?: string) => void;\n homeworkRef?: React.RefObject<HTMLDivElement>;\n startHomePageJourney?: ({ studentId, stream, userType }: IHomepageStartJourneyProps) => void;\n canStartJourney?: boolean;\n canStartPuzzleAssignedJourney?: boolean;\n canStartMathFitJourney?: boolean;\n}\n\nexport interface IHwCardListView extends INodeCardCallbacks {\n userType: TUserTypes;\n studentId: string;\n isHwProcessing: boolean;\n hwDetails?: IHomeworkDetails;\n onTestPreview?: (sheetData: INodeDataProps, milestoneId?: string) => void;\n onTestStart?: (sheetData: INodeDataProps, homeworkId?: string) => void;\n onTestReview?: (sheetData: INodeDataProps, milestoneId?: string) => void;\n puzzleHWCardRef?: React.RefObject<HTMLDivElement>;\n mathFitCardRef?: React.RefObject<HTMLDivElement>;\n}\n\nexport interface IUseScrollButtonsProps {\n totalCount: number;\n}\n\nexport interface IUseScrollButtonsReturn {\n scrollRef: React.RefObject<HTMLDivElement | null>;\n showLeftButton: boolean;\n showRightButton: boolean;\n handleMouseEnter: () => void;\n handleMouseLeave: () => void;\n handleScrollLeft: () => void;\n handleScrollRight: () => void;\n}\n"],"names":["EHWCardListEntityType"],"mappings":"AAQY,IAAAA,sBAAAA,OACVA,EAAA,eAAe,gBACfA,EAAA,YAAY,aAFFA,IAAAA,KAAA,CAAA,CAAA;"}