@cuemath/leap 2.8.61-as10 → 2.8.61-as12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/line-icons/icons/recap.js +3 -3
- package/dist/assets/line-icons/icons/recap.js.map +1 -1
- package/dist/assets/lottie/lottie.js +9 -1
- package/dist/assets/lottie/lottie.js.map +1 -1
- package/dist/features/chapters-v2/comps/node-card/student-actions/student-actions.js +78 -71
- package/dist/features/chapters-v2/comps/node-card/student-actions/student-actions.js.map +1 -1
- package/dist/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.js +82 -75
- package/dist/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.js.map +1 -1
- package/dist/features/chapters-v2/utils/node-card-utils.js +68 -46
- package/dist/features/chapters-v2/utils/node-card-utils.js.map +1 -1
- package/dist/features/homework/homework-card.js +146 -138
- package/dist/features/homework/homework-card.js.map +1 -1
- package/dist/features/homework/hw-card-list/hw-card-list-styled.js +24 -11
- package/dist/features/homework/hw-card-list/hw-card-list-styled.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.js +381 -379
- package/dist/index.js.map +1 -1
- package/dist/static/competitive-arena.b9c40801.json +1 -0
- package/dist/static/learn.71b13323.json +1 -0
- package/dist/static/practice.158dd488.json +1 -0
- package/dist/static/project.eb665827.json +1 -0
- package/dist/static/puzzle.b298c7e4.json +1 -0
- package/dist/static/recap.0dd2c1e2.json +1 -0
- package/dist/static/test.803d6036.json +1 -0
- package/dist/static/video.b41451e2.json +1 -0
- package/package.json +1 -1
@@ -1,125 +1,132 @@
|
|
1
|
-
import { jsxs as
|
2
|
-
import { memo as
|
3
|
-
import
|
4
|
-
import
|
5
|
-
import
|
1
|
+
import { jsxs as r, jsx as e } from "react/jsx-runtime";
|
2
|
+
import { memo as U, useState as Y, useRef as q, useCallback as f } from "react";
|
3
|
+
import J from "../../../../../assets/line-icons/icons/check2.js";
|
4
|
+
import Q from "../../../../../assets/line-icons/icons/eye2.js";
|
5
|
+
import V from "../../../../../assets/line-icons/icons/home2.js";
|
6
6
|
import k from "../../../../../assets/line-icons/icons/more-vertical.js";
|
7
|
-
import
|
8
|
-
import
|
9
|
-
import
|
10
|
-
import
|
11
|
-
import
|
12
|
-
import {
|
13
|
-
import {
|
14
|
-
import {
|
15
|
-
import
|
16
|
-
import
|
17
|
-
import se from "../node-card-
|
18
|
-
import
|
19
|
-
|
7
|
+
import Z from "../../../../ui/arrow-tooltip/arrow-tooltip.js";
|
8
|
+
import D from "../../../../ui/hooks/use-context-menu-click-handler.js";
|
9
|
+
import ee from "../../../../ui/layout/flex-view.js";
|
10
|
+
import te from "../../../../ui/lottie-animation/lottie-animation.js";
|
11
|
+
import re from "../../../../ui/text/text.js";
|
12
|
+
import { BLOCK_TYPE as oe } from "../../../constants/block-constants.js";
|
13
|
+
import { NODE_CARD_STATES as u, TEACHER_MENU_LABELS as ie } from "../../../constants/node-constants.js";
|
14
|
+
import { getNodeTypeBasedBgImage as ne } from "../../../utils/index.js";
|
15
|
+
import { getNodeCardBasedIcon as ce } from "../../../utils/node-card-utils.js";
|
16
|
+
import ae from "../border-path-animation.js";
|
17
|
+
import { NodeCardContainer as se, NodeCardInfoWrapper as le, IconWrapper as de, StyledImportantIcon as me, NodeKebabMenuWrapper as O, NodeCardContentWrapper as pe, NodeCardTitle as he, NodeMenuOptionsWrapper as fe } from "../node-card-styled.js";
|
18
|
+
import ue from "../node-card-tags.js";
|
19
|
+
import $e from "../node-menu-options/node-menu-options.js";
|
20
|
+
const { ASSIGN_AS_HW: Ce, REVIEW: _e, VIEW: Ie, MARK_AS_DONE: ge } = ie, Pe = U(
|
20
21
|
({
|
21
|
-
nodeData:
|
22
|
+
nodeData: t,
|
22
23
|
imageHue: T,
|
23
|
-
blockType:
|
24
|
+
blockType: L,
|
24
25
|
isSkipped: $,
|
25
|
-
onNodeAttemptLocationChange:
|
26
|
-
onNodeMarkAsDone:
|
26
|
+
onNodeAttemptLocationChange: o,
|
27
|
+
onNodeMarkAsDone: i,
|
27
28
|
onNodeView: n,
|
28
29
|
onNodeReview: c
|
29
30
|
}) => {
|
30
|
-
const l =
|
31
|
-
accuracy:
|
32
|
-
attempt_location:
|
31
|
+
const [w, C] = Y(!1), l = q(null), { menuVisible: x, onMenuClick: _ } = D(l), {
|
32
|
+
accuracy: y,
|
33
|
+
attempt_location: A,
|
33
34
|
node_type: d,
|
34
35
|
card_header: W,
|
35
|
-
title:
|
36
|
+
title: B,
|
36
37
|
state: a,
|
37
|
-
is_optional:
|
38
|
-
sheet_statement:
|
39
|
-
permissions:
|
40
|
-
} =
|
38
|
+
is_optional: I,
|
39
|
+
sheet_statement: g,
|
40
|
+
permissions: M
|
41
|
+
} = t, {
|
41
42
|
can_change_attempt_location: H,
|
42
|
-
can_mark_familiar:
|
43
|
+
can_mark_familiar: G,
|
43
44
|
can_review: m
|
44
|
-
} =
|
45
|
-
(
|
46
|
-
switch (
|
45
|
+
} = M, p = L === oe.GOAL, s = a === u.LOCKED, K = a === u.NOT_STARTED, R = a === u.IN_PROGRESS, b = A === "INCLASS", j = !g || !p, E = !I && (R || K), P = ne(d), { icon: X, lottie: v } = ce(d), h = f(
|
46
|
+
(S) => {
|
47
|
+
switch (S) {
|
47
48
|
case "node-card-view":
|
48
|
-
m ? c == null || c(
|
49
|
+
m ? c == null || c(t) : n == null || n(t);
|
49
50
|
return;
|
50
51
|
case "node-card-assign-as-hw":
|
51
|
-
|
52
|
+
o == null || o(t);
|
52
53
|
return;
|
53
54
|
case "node-card-mark-as-done":
|
54
|
-
|
55
|
+
i == null || i(t);
|
55
56
|
return;
|
56
57
|
default:
|
57
|
-
throw new Error(`No callback function for ${
|
58
|
+
throw new Error(`No callback function for ${S}`);
|
58
59
|
}
|
59
60
|
},
|
60
61
|
[
|
61
62
|
m,
|
62
|
-
|
63
|
-
i,
|
63
|
+
t,
|
64
64
|
o,
|
65
|
+
i,
|
65
66
|
c,
|
66
67
|
n
|
67
68
|
]
|
68
|
-
),
|
69
|
+
), F = f(() => {
|
70
|
+
C(!0);
|
71
|
+
}, []), z = f(() => {
|
72
|
+
C(!1);
|
73
|
+
}, []), N = [
|
69
74
|
{
|
70
75
|
id: "node-card-view",
|
71
|
-
label: m ?
|
72
|
-
icon:
|
76
|
+
label: m ? _e : Ie,
|
77
|
+
icon: Q,
|
73
78
|
disabled: !1,
|
74
79
|
onClick: h
|
75
80
|
},
|
76
81
|
{
|
77
82
|
id: "node-card-assign-as-hw",
|
78
|
-
label:
|
79
|
-
icon:
|
80
|
-
disabled: !H || !
|
83
|
+
label: Ce,
|
84
|
+
icon: V,
|
85
|
+
disabled: !H || !b,
|
81
86
|
onClick: h
|
82
87
|
},
|
83
88
|
{
|
84
89
|
id: "node-card-mark-as-done",
|
85
|
-
label:
|
86
|
-
icon:
|
87
|
-
disabled: !
|
90
|
+
label: ge,
|
91
|
+
icon: J,
|
92
|
+
disabled: !G,
|
88
93
|
onClick: h
|
89
94
|
}
|
90
95
|
];
|
91
|
-
return /* @__PURE__ */
|
92
|
-
|
96
|
+
return /* @__PURE__ */ r(
|
97
|
+
se,
|
93
98
|
{
|
94
|
-
$showOutline: !
|
99
|
+
$showOutline: !E,
|
95
100
|
$isSheetLocked: s,
|
96
101
|
$background: `${T}_2`,
|
97
102
|
$disabled: !!$,
|
103
|
+
onMouseEnter: F,
|
104
|
+
onMouseLeave: z,
|
98
105
|
children: [
|
99
|
-
/* @__PURE__ */
|
100
|
-
|
106
|
+
/* @__PURE__ */ r(
|
107
|
+
Z,
|
101
108
|
{
|
102
109
|
renderAs: "primary",
|
103
|
-
tooltipItem:
|
110
|
+
tooltipItem: g,
|
104
111
|
position: "bottom",
|
105
112
|
zIndex: 5,
|
106
|
-
hidden:
|
113
|
+
hidden: j,
|
107
114
|
parentWidth: "100%",
|
108
115
|
widthX: 11.25,
|
109
116
|
children: [
|
110
|
-
/* @__PURE__ */
|
111
|
-
|
117
|
+
/* @__PURE__ */ r(
|
118
|
+
le,
|
112
119
|
{
|
113
120
|
$flexDirection: "row",
|
114
121
|
$alignItems: "center",
|
115
122
|
$width: "100%",
|
116
123
|
$heightX: 3.5,
|
117
|
-
$bgImage:
|
124
|
+
$bgImage: P,
|
118
125
|
$gutterX: 0.78125,
|
119
126
|
$flexGap: 8.5,
|
120
127
|
children: [
|
121
|
-
/* @__PURE__ */
|
122
|
-
|
128
|
+
/* @__PURE__ */ r(
|
129
|
+
de,
|
123
130
|
{
|
124
131
|
$width: 31,
|
125
132
|
$height: 31,
|
@@ -129,24 +136,24 @@ const { ASSIGN_AS_HW: de, REVIEW: me, VIEW: pe, MARK_AS_DONE: he } = V, Be = P(
|
|
129
136
|
$justifyContent: "center",
|
130
137
|
$opacity: s ? 0.5 : 1,
|
131
138
|
children: [
|
132
|
-
|
133
|
-
!
|
139
|
+
w ? /* @__PURE__ */ e(te, { src: v }) : /* @__PURE__ */ e(X, { width: 20, height: 20 }),
|
140
|
+
!I && /* @__PURE__ */ e(me, {})
|
134
141
|
]
|
135
142
|
}
|
136
143
|
),
|
137
|
-
/* @__PURE__ */
|
144
|
+
/* @__PURE__ */ r(re, { $renderAs: "ac4-black", $color: "BLACK", $opacity: s ? 0.5 : 1, children: [
|
138
145
|
W,
|
139
146
|
" ",
|
140
|
-
|
147
|
+
b && ". CW"
|
141
148
|
] }),
|
142
|
-
/* @__PURE__ */ e(
|
143
|
-
|
149
|
+
/* @__PURE__ */ e(ee, { className: "context-menu", children: p && /* @__PURE__ */ e(O, { ref: l, onClick: _, children: /* @__PURE__ */ e(k, { width: 16, height: 16 }) }) }),
|
150
|
+
E && !$ && /* @__PURE__ */ e(ae, {})
|
144
151
|
]
|
145
152
|
}
|
146
153
|
),
|
147
|
-
/* @__PURE__ */ e(
|
148
|
-
!p && /* @__PURE__ */
|
149
|
-
|
154
|
+
/* @__PURE__ */ e(ue, { nodeType: d, state: a, accuracy: y }),
|
155
|
+
!p && /* @__PURE__ */ r(
|
156
|
+
pe,
|
150
157
|
{
|
151
158
|
$flexDirection: "row",
|
152
159
|
$alignItems: "center",
|
@@ -156,28 +163,28 @@ const { ASSIGN_AS_HW: de, REVIEW: me, VIEW: pe, MARK_AS_DONE: he } = V, Be = P(
|
|
156
163
|
$justifyContent: "space-between",
|
157
164
|
children: [
|
158
165
|
/* @__PURE__ */ e(
|
159
|
-
|
166
|
+
he,
|
160
167
|
{
|
161
168
|
$renderAs: "ab3",
|
162
169
|
$color: "BLACK_1",
|
163
170
|
$opacity: s ? 0.5 : 1,
|
164
|
-
children:
|
171
|
+
children: B
|
165
172
|
}
|
166
173
|
),
|
167
|
-
/* @__PURE__ */ e(
|
174
|
+
/* @__PURE__ */ e(O, { ref: l, onClick: _, children: /* @__PURE__ */ e(k, { width: 16, height: 16 }) })
|
168
175
|
]
|
169
176
|
}
|
170
177
|
)
|
171
178
|
]
|
172
179
|
}
|
173
180
|
),
|
174
|
-
/* @__PURE__ */ e(
|
181
|
+
/* @__PURE__ */ e(fe, { $visible: x, children: /* @__PURE__ */ e($e, { options: N }) })
|
175
182
|
]
|
176
183
|
}
|
177
184
|
);
|
178
185
|
}
|
179
186
|
);
|
180
187
|
export {
|
181
|
-
|
188
|
+
Pe as default
|
182
189
|
};
|
183
190
|
//# sourceMappingURL=teacher-actions.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"teacher-actions.js","sources":["../../../../../../src/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.tsx"],"sourcesContent":["import type { INodeCardProps } from '../node-card-types';\nimport type { INodeMenuOption } from '../node-menu-options/node-menu-options-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useRef } from 'react';\n\nimport Check2Icon from '../../../../../assets/line-icons/icons/check2';\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 ArrowTooltip from '../../../../ui/arrow-tooltip/arrow-tooltip';\nimport useContextMenuClickHandler from '../../../../ui/hooks/use-context-menu-click-handler';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport Text from '../../../../ui/text/text';\nimport { BLOCK_TYPE } from '../../../constants/block-constants';\nimport { NODE_CARD_STATES, TEACHER_MENU_LABELS } from '../../../constants/node-constants';\nimport { getNodeTypeBasedBgImage } from '../../../utils';\nimport { getNodeCardBasedIcon } from '../../../utils/node-card-utils';\nimport BorderPathAnimation from '../border-path-animation';\nimport * as Styled from '../node-card-styled';\nimport NodeCardTags from '../node-card-tags';\nimport NodeMenuOptions from '../node-menu-options/node-menu-options';\n\nconst { ASSIGN_AS_HW, REVIEW, VIEW, MARK_AS_DONE } = TEACHER_MENU_LABELS;\n\nconst TeacherActions: FC<Omit<INodeCardProps, 'userType'>> = memo(\n ({\n nodeData,\n imageHue,\n blockType,\n isSkipped,\n onNodeAttemptLocationChange,\n onNodeMarkAsDone,\n onNodeView,\n onNodeReview,\n }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n\n const { menuVisible, onMenuClick } = useContextMenuClickHandler(containerRef);\n\n const {\n accuracy,\n attempt_location: attemptLocation,\n node_type: nodeType,\n card_header: cardHeader,\n title,\n state,\n is_optional: isOptional,\n sheet_statement: sheetStatement,\n permissions,\n } = nodeData;\n\n const {\n can_change_attempt_location: canChangeAttemptLocation,\n can_mark_familiar: canMarkFamiliar,\n can_review: canReview,\n } = permissions;\n\n const isGoalBlock = blockType === BLOCK_TYPE.GOAL;\n const sheetLocked = state === NODE_CARD_STATES.LOCKED;\n const sheetNotStarted = state === NODE_CARD_STATES.NOT_STARTED;\n const sheetInProgress = state === NODE_CARD_STATES.IN_PROGRESS;\n const inClassSheet = attemptLocation === 'INCLASS';\n const tooltipHidden = !sheetStatement || !isGoalBlock;\n\n const showCardAnimation = !isOptional && (sheetInProgress || sheetNotStarted);\n\n const nodeBgImage = getNodeTypeBasedBgImage(nodeType);\n const NodeCardIcon = getNodeCardBasedIcon(nodeType);\n\n const handleOnMenuOptionClick = useCallback(\n (optionId: string) => {\n switch (optionId) {\n case 'node-card-view':\n if (canReview) {\n onNodeReview?.(nodeData);\n } else {\n onNodeView?.(nodeData);\n }\n\n return;\n\n case 'node-card-assign-as-hw':\n onNodeAttemptLocationChange?.(nodeData);\n\n return;\n\n case 'node-card-mark-as-done':\n onNodeMarkAsDone?.(nodeData);\n\n return;\n default:\n throw new Error(`No callback function for ${optionId}`);\n }\n },\n [\n canReview,\n nodeData,\n onNodeAttemptLocationChange,\n onNodeMarkAsDone,\n onNodeReview,\n onNodeView,\n ],\n );\n\n const menuOptions: INodeMenuOption[] = [\n {\n id: 'node-card-view',\n label: canReview ? REVIEW : VIEW,\n icon: Eye2Icon,\n disabled: false,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'node-card-assign-as-hw',\n label: ASSIGN_AS_HW,\n icon: Home2Icon,\n disabled: !canChangeAttemptLocation || !inClassSheet,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'node-card-mark-as-done',\n label: MARK_AS_DONE,\n icon: Check2Icon,\n disabled: !canMarkFamiliar,\n onClick: handleOnMenuOptionClick,\n },\n ];\n\n return (\n <Styled.NodeCardContainer\n $showOutline={!showCardAnimation}\n $isSheetLocked={sheetLocked}\n $background={`${imageHue}_2`}\n $disabled={Boolean(isSkipped)}\n >\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem={sheetStatement}\n position=\"bottom\"\n zIndex={5}\n hidden={tooltipHidden}\n parentWidth=\"100%\"\n widthX={11.25}\n >\n <Styled.NodeCardInfoWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $width=\"100%\"\n $heightX={3.5}\n $bgImage={nodeBgImage}\n $gutterX={0.78125}\n $flexGap={8.5}\n >\n <Styled.IconWrapper\n $width={31}\n $height={31}\n $background=\"WHITE_1\"\n $position=\"relative\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $opacity={sheetLocked ? 0.5 : 1}\n >\n {NodeCardIcon && <NodeCardIcon width={20} height={20} />}\n {!isOptional && <Styled.StyledImportantIcon />}\n </Styled.IconWrapper>\n\n <Text $renderAs=\"ac4-black\" $color=\"BLACK\" $opacity={sheetLocked ? 0.5 : 1}>\n {cardHeader} {inClassSheet && `. CW`}\n </Text>\n\n <FlexView className=\"context-menu\">\n {isGoalBlock && (\n <Styled.NodeKebabMenuWrapper ref={containerRef} onClick={onMenuClick}>\n <MoreVerticalIcon width={16} height={16} />\n </Styled.NodeKebabMenuWrapper>\n )}\n </FlexView>\n\n {showCardAnimation && !isSkipped && <BorderPathAnimation />}\n </Styled.NodeCardInfoWrapper>\n\n <NodeCardTags nodeType={nodeType} state={state} accuracy={accuracy} />\n\n {!isGoalBlock && (\n <Styled.NodeCardContentWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $background=\"WHITE_1\"\n $flexGap={8}\n $heightX={4}\n $justifyContent=\"space-between\"\n >\n <Styled.NodeCardTitle\n $renderAs=\"ab3\"\n $color=\"BLACK_1\"\n $opacity={sheetLocked ? 0.5 : 1}\n >\n {title}\n </Styled.NodeCardTitle>\n\n <Styled.NodeKebabMenuWrapper ref={containerRef} onClick={onMenuClick}>\n <MoreVerticalIcon width={16} height={16} />\n </Styled.NodeKebabMenuWrapper>\n </Styled.NodeCardContentWrapper>\n )}\n </ArrowTooltip>\n\n <Styled.NodeMenuOptionsWrapper $visible={menuVisible}>\n <NodeMenuOptions options={menuOptions} />\n </Styled.NodeMenuOptionsWrapper>\n </Styled.NodeCardContainer>\n );\n },\n);\n\nexport default TeacherActions;\n"],"names":["ASSIGN_AS_HW","REVIEW","VIEW","MARK_AS_DONE","TEACHER_MENU_LABELS","TeacherActions","memo","nodeData","imageHue","blockType","isSkipped","onNodeAttemptLocationChange","onNodeMarkAsDone","onNodeView","onNodeReview","containerRef","useRef","menuVisible","onMenuClick","useContextMenuClickHandler","accuracy","attemptLocation","nodeType","cardHeader","title","state","isOptional","sheetStatement","permissions","canChangeAttemptLocation","canMarkFamiliar","canReview","isGoalBlock","BLOCK_TYPE","sheetLocked","NODE_CARD_STATES","sheetNotStarted","sheetInProgress","inClassSheet","tooltipHidden","showCardAnimation","nodeBgImage","getNodeTypeBasedBgImage","NodeCardIcon","getNodeCardBasedIcon","handleOnMenuOptionClick","useCallback","optionId","menuOptions","Eye2Icon","Home2Icon","Check2Icon","jsxs","Styled.NodeCardContainer","ArrowTooltip","Styled.NodeCardInfoWrapper","Styled.IconWrapper","jsx","Styled.StyledImportantIcon","Text","FlexView","Styled.NodeKebabMenuWrapper","MoreVerticalIcon","BorderPathAnimation","NodeCardTags","Styled.NodeCardContentWrapper","Styled.NodeCardTitle","Styled.NodeMenuOptionsWrapper","NodeMenuOptions"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"teacher-actions.js","sources":["../../../../../../src/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.tsx"],"sourcesContent":["import type { INodeCardProps } from '../node-card-types';\nimport type { INodeMenuOption } from '../node-menu-options/node-menu-options-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useRef, useState } from 'react';\n\nimport Check2Icon from '../../../../../assets/line-icons/icons/check2';\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 ArrowTooltip from '../../../../ui/arrow-tooltip/arrow-tooltip';\nimport useContextMenuClickHandler from '../../../../ui/hooks/use-context-menu-click-handler';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport LottieAnimation from '../../../../ui/lottie-animation/lottie-animation';\nimport Text from '../../../../ui/text/text';\nimport { BLOCK_TYPE } from '../../../constants/block-constants';\nimport { NODE_CARD_STATES, TEACHER_MENU_LABELS } from '../../../constants/node-constants';\nimport { getNodeTypeBasedBgImage } from '../../../utils';\nimport { getNodeCardBasedIcon } from '../../../utils/node-card-utils';\nimport BorderPathAnimation from '../border-path-animation';\nimport * as Styled from '../node-card-styled';\nimport NodeCardTags from '../node-card-tags';\nimport NodeMenuOptions from '../node-menu-options/node-menu-options';\n\nconst { ASSIGN_AS_HW, REVIEW, VIEW, MARK_AS_DONE } = TEACHER_MENU_LABELS;\n\nconst TeacherActions: FC<Omit<INodeCardProps, 'userType'>> = memo(\n ({\n nodeData,\n imageHue,\n blockType,\n isSkipped,\n onNodeAttemptLocationChange,\n onNodeMarkAsDone,\n onNodeView,\n onNodeReview,\n }) => {\n const [renderLottie, setRenderLottie] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const { menuVisible, onMenuClick } = useContextMenuClickHandler(containerRef);\n\n const {\n accuracy,\n attempt_location: attemptLocation,\n node_type: nodeType,\n card_header: cardHeader,\n title,\n state,\n is_optional: isOptional,\n sheet_statement: sheetStatement,\n permissions,\n } = nodeData;\n\n const {\n can_change_attempt_location: canChangeAttemptLocation,\n can_mark_familiar: canMarkFamiliar,\n can_review: canReview,\n } = permissions;\n\n const isGoalBlock = blockType === BLOCK_TYPE.GOAL;\n const sheetLocked = state === NODE_CARD_STATES.LOCKED;\n const sheetNotStarted = state === NODE_CARD_STATES.NOT_STARTED;\n const sheetInProgress = state === NODE_CARD_STATES.IN_PROGRESS;\n const inClassSheet = attemptLocation === 'INCLASS';\n const tooltipHidden = !sheetStatement || !isGoalBlock;\n\n const showCardAnimation = !isOptional && (sheetInProgress || sheetNotStarted);\n\n const nodeBgImage = getNodeTypeBasedBgImage(nodeType);\n const { icon: NodeCardIcon, lottie: nodeCardLottie } = getNodeCardBasedIcon(nodeType);\n\n const handleOnMenuOptionClick = useCallback(\n (optionId: string) => {\n switch (optionId) {\n case 'node-card-view':\n if (canReview) {\n onNodeReview?.(nodeData);\n } else {\n onNodeView?.(nodeData);\n }\n\n return;\n\n case 'node-card-assign-as-hw':\n onNodeAttemptLocationChange?.(nodeData);\n\n return;\n\n case 'node-card-mark-as-done':\n onNodeMarkAsDone?.(nodeData);\n\n return;\n default:\n throw new Error(`No callback function for ${optionId}`);\n }\n },\n [\n canReview,\n nodeData,\n onNodeAttemptLocationChange,\n onNodeMarkAsDone,\n onNodeReview,\n onNodeView,\n ],\n );\n\n const handleOnMouseEnter = useCallback(() => {\n setRenderLottie(true);\n }, []);\n\n const handleOnMouseLeave = useCallback(() => {\n setRenderLottie(false);\n }, []);\n\n const menuOptions: INodeMenuOption[] = [\n {\n id: 'node-card-view',\n label: canReview ? REVIEW : VIEW,\n icon: Eye2Icon,\n disabled: false,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'node-card-assign-as-hw',\n label: ASSIGN_AS_HW,\n icon: Home2Icon,\n disabled: !canChangeAttemptLocation || !inClassSheet,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'node-card-mark-as-done',\n label: MARK_AS_DONE,\n icon: Check2Icon,\n disabled: !canMarkFamiliar,\n onClick: handleOnMenuOptionClick,\n },\n ];\n\n return (\n <Styled.NodeCardContainer\n $showOutline={!showCardAnimation}\n $isSheetLocked={sheetLocked}\n $background={`${imageHue}_2`}\n $disabled={Boolean(isSkipped)}\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\n >\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem={sheetStatement}\n position=\"bottom\"\n zIndex={5}\n hidden={tooltipHidden}\n parentWidth=\"100%\"\n widthX={11.25}\n >\n <Styled.NodeCardInfoWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $width=\"100%\"\n $heightX={3.5}\n $bgImage={nodeBgImage}\n $gutterX={0.78125}\n $flexGap={8.5}\n >\n <Styled.IconWrapper\n $width={31}\n $height={31}\n $background=\"WHITE_1\"\n $position=\"relative\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $opacity={sheetLocked ? 0.5 : 1}\n >\n {renderLottie ? (\n <LottieAnimation src={nodeCardLottie} />\n ) : (\n <NodeCardIcon width={20} height={20} />\n )}\n {!isOptional && <Styled.StyledImportantIcon />}\n </Styled.IconWrapper>\n\n <Text $renderAs=\"ac4-black\" $color=\"BLACK\" $opacity={sheetLocked ? 0.5 : 1}>\n {cardHeader} {inClassSheet && `. CW`}\n </Text>\n\n <FlexView className=\"context-menu\">\n {isGoalBlock && (\n <Styled.NodeKebabMenuWrapper ref={containerRef} onClick={onMenuClick}>\n <MoreVerticalIcon width={16} height={16} />\n </Styled.NodeKebabMenuWrapper>\n )}\n </FlexView>\n\n {showCardAnimation && !isSkipped && <BorderPathAnimation />}\n </Styled.NodeCardInfoWrapper>\n\n <NodeCardTags nodeType={nodeType} state={state} accuracy={accuracy} />\n\n {!isGoalBlock && (\n <Styled.NodeCardContentWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $background=\"WHITE_1\"\n $flexGap={8}\n $heightX={4}\n $justifyContent=\"space-between\"\n >\n <Styled.NodeCardTitle\n $renderAs=\"ab3\"\n $color=\"BLACK_1\"\n $opacity={sheetLocked ? 0.5 : 1}\n >\n {title}\n </Styled.NodeCardTitle>\n\n <Styled.NodeKebabMenuWrapper ref={containerRef} onClick={onMenuClick}>\n <MoreVerticalIcon width={16} height={16} />\n </Styled.NodeKebabMenuWrapper>\n </Styled.NodeCardContentWrapper>\n )}\n </ArrowTooltip>\n\n <Styled.NodeMenuOptionsWrapper $visible={menuVisible}>\n <NodeMenuOptions options={menuOptions} />\n </Styled.NodeMenuOptionsWrapper>\n </Styled.NodeCardContainer>\n );\n },\n);\n\nexport default TeacherActions;\n"],"names":["ASSIGN_AS_HW","REVIEW","VIEW","MARK_AS_DONE","TEACHER_MENU_LABELS","TeacherActions","memo","nodeData","imageHue","blockType","isSkipped","onNodeAttemptLocationChange","onNodeMarkAsDone","onNodeView","onNodeReview","renderLottie","setRenderLottie","useState","containerRef","useRef","menuVisible","onMenuClick","useContextMenuClickHandler","accuracy","attemptLocation","nodeType","cardHeader","title","state","isOptional","sheetStatement","permissions","canChangeAttemptLocation","canMarkFamiliar","canReview","isGoalBlock","BLOCK_TYPE","sheetLocked","NODE_CARD_STATES","sheetNotStarted","sheetInProgress","inClassSheet","tooltipHidden","showCardAnimation","nodeBgImage","getNodeTypeBasedBgImage","NodeCardIcon","nodeCardLottie","getNodeCardBasedIcon","handleOnMenuOptionClick","useCallback","optionId","handleOnMouseEnter","handleOnMouseLeave","menuOptions","Eye2Icon","Home2Icon","Check2Icon","jsxs","Styled.NodeCardContainer","ArrowTooltip","Styled.NodeCardInfoWrapper","Styled.IconWrapper","jsx","LottieAnimation","Styled.StyledImportantIcon","Text","FlexView","Styled.NodeKebabMenuWrapper","MoreVerticalIcon","BorderPathAnimation","NodeCardTags","Styled.NodeCardContentWrapper","Styled.NodeCardTitle","Styled.NodeMenuOptionsWrapper","NodeMenuOptions"],"mappings":"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"}
|
@@ -1,44 +1,45 @@
|
|
1
|
-
import { jsx as
|
1
|
+
import { jsx as e, jsxs as l } from "react/jsx-runtime";
|
2
2
|
import u from "../../../assets/line-icons/icons/alarm.js";
|
3
|
-
import
|
4
|
-
import
|
5
|
-
import
|
6
|
-
import
|
7
|
-
import
|
3
|
+
import I from "../../../assets/line-icons/icons/bulb2.js";
|
4
|
+
import T from "../../../assets/line-icons/icons/check2.js";
|
5
|
+
import d from "../../../assets/line-icons/icons/dart.js";
|
6
|
+
import f from "../../../assets/line-icons/icons/exclamation.js";
|
7
|
+
import R from "../../../assets/line-icons/icons/lock2.js";
|
8
8
|
import p from "../../../assets/line-icons/icons/play2.js";
|
9
|
-
import
|
10
|
-
import
|
11
|
-
import
|
12
|
-
import
|
9
|
+
import A from "../../../assets/line-icons/icons/puzzle.js";
|
10
|
+
import S from "../../../assets/line-icons/icons/recap.js";
|
11
|
+
import $ from "../../../assets/line-icons/icons/status.js";
|
12
|
+
import D from "../../../assets/line-icons/icons/testtube.js";
|
13
|
+
import { LOTTIE as t } from "../../../assets/lottie/lottie.js";
|
13
14
|
import h from "../../ui/layout/flex-view.js";
|
14
|
-
import
|
15
|
-
import { InProgressIconWrapper as
|
16
|
-
import
|
17
|
-
const
|
18
|
-
if (!
|
15
|
+
import s from "../../ui/text/text.js";
|
16
|
+
import { InProgressIconWrapper as a } from "../comps/node-card/node-card-styled.js";
|
17
|
+
import E from "../comps/tag/tag.js";
|
18
|
+
const C = 60 * 60 * 24, P = ["NOT_STARTED", "IN_PROGRESS"], g = (r) => {
|
19
|
+
if (!r)
|
19
20
|
return { isOverdue: !1, daysText: "" };
|
20
|
-
const
|
21
|
-
return { isOverdue: o, daysText:
|
22
|
-
},
|
23
|
-
const { isOverdue:
|
24
|
-
if (
|
21
|
+
const c = Math.floor(Date.now() / 1e3), i = r - c, n = Math.ceil(i / C), o = n < 0, m = n > 0 ? `${Math.abs(n)}D` : "";
|
22
|
+
return { isOverdue: o, daysText: m };
|
23
|
+
}, j = (r, c, i) => {
|
24
|
+
const { isOverdue: n, daysText: o } = g(i);
|
25
|
+
if (n && P.includes(r))
|
25
26
|
return {
|
26
|
-
icon: /* @__PURE__ */
|
27
|
+
icon: /* @__PURE__ */ e(h, { $background: "RED", $borderRadius: 16, $gapX: 0.24, $gutterX: 0.5, children: /* @__PURE__ */ e(s, { $renderAs: "ac4-black", $color: "WHITE", children: "OVERDUE" }) }),
|
27
28
|
top: -10,
|
28
29
|
right: -10
|
29
30
|
};
|
30
|
-
switch (
|
31
|
+
switch (r) {
|
31
32
|
case "NOT_STARTED":
|
32
33
|
return {
|
33
|
-
icon: /* @__PURE__ */
|
34
|
-
|
34
|
+
icon: /* @__PURE__ */ e(
|
35
|
+
a,
|
35
36
|
{
|
36
37
|
$flexDirection: "row",
|
37
38
|
$alignItems: "center",
|
38
39
|
$justifyContent: "center",
|
39
40
|
$gutterX: 0.5,
|
40
41
|
$borderRadius: 16,
|
41
|
-
children: o && /* @__PURE__ */
|
42
|
+
children: o && /* @__PURE__ */ e(s, { $renderAs: "ub3-bold", $color: "WHITE", children: o })
|
42
43
|
}
|
43
44
|
),
|
44
45
|
top: 0,
|
@@ -46,14 +47,14 @@ const D = 60 * 60 * 24, g = ["NOT_STARTED", "IN_PROGRESS"], C = (e) => {
|
|
46
47
|
};
|
47
48
|
case "LOCKED":
|
48
49
|
return {
|
49
|
-
icon: /* @__PURE__ */
|
50
|
+
icon: /* @__PURE__ */ e(R, { width: 32, height: 32 }),
|
50
51
|
top: -12,
|
51
52
|
right: -12
|
52
53
|
};
|
53
54
|
case "IN_PROGRESS":
|
54
55
|
return {
|
55
|
-
icon: /* @__PURE__ */
|
56
|
-
|
56
|
+
icon: /* @__PURE__ */ l(
|
57
|
+
a,
|
57
58
|
{
|
58
59
|
$flexDirection: "row",
|
59
60
|
$alignItems: "center",
|
@@ -61,19 +62,19 @@ const D = 60 * 60 * 24, g = ["NOT_STARTED", "IN_PROGRESS"], C = (e) => {
|
|
61
62
|
$gutterX: o ? 0.25 : 0,
|
62
63
|
$borderRadius: 16,
|
63
64
|
children: [
|
64
|
-
o && /* @__PURE__ */
|
65
|
-
/* @__PURE__ */
|
65
|
+
o && /* @__PURE__ */ e(s, { $renderAs: "ub3-bold", $color: "WHITE", children: o }),
|
66
|
+
/* @__PURE__ */ e($, {})
|
66
67
|
]
|
67
68
|
}
|
68
69
|
)
|
69
70
|
};
|
70
71
|
case "COMPLETED":
|
71
72
|
return {
|
72
|
-
icon: /* @__PURE__ */
|
73
|
-
|
73
|
+
icon: /* @__PURE__ */ e(
|
74
|
+
E,
|
74
75
|
{
|
75
|
-
Icon:
|
76
|
-
label: typeof
|
76
|
+
Icon: T,
|
77
|
+
label: typeof c == "number" ? `${c}%` : void 0
|
77
78
|
}
|
78
79
|
),
|
79
80
|
top: -10,
|
@@ -81,7 +82,7 @@ const D = 60 * 60 * 24, g = ["NOT_STARTED", "IN_PROGRESS"], C = (e) => {
|
|
81
82
|
};
|
82
83
|
case "WAIT_FOR_REVIEW":
|
83
84
|
return {
|
84
|
-
icon: /* @__PURE__ */
|
85
|
+
icon: /* @__PURE__ */ e(E, { Icon: f }),
|
85
86
|
top: -10,
|
86
87
|
right: -10
|
87
88
|
};
|
@@ -90,33 +91,54 @@ const D = 60 * 60 * 24, g = ["NOT_STARTED", "IN_PROGRESS"], C = (e) => {
|
|
90
91
|
icon: void 0
|
91
92
|
};
|
92
93
|
}
|
93
|
-
},
|
94
|
-
switch (
|
94
|
+
}, k = (r) => {
|
95
|
+
switch (r) {
|
95
96
|
case "LEARNING":
|
96
|
-
return
|
97
|
+
return {
|
98
|
+
lottie: t.LEARN,
|
99
|
+
icon: I
|
100
|
+
};
|
97
101
|
case "RECAP":
|
98
|
-
return
|
102
|
+
return {
|
103
|
+
lottie: t.RECAP,
|
104
|
+
icon: S
|
105
|
+
};
|
99
106
|
case "DYNAMIC":
|
100
107
|
case "ASSESSMENT":
|
101
108
|
case "CHAPTER_ASSESSMENT":
|
102
|
-
return
|
109
|
+
return {
|
110
|
+
lottie: t.TEST,
|
111
|
+
icon: u
|
112
|
+
};
|
103
113
|
case "PRACTICE":
|
104
114
|
case "EXTRA_PRACTICE":
|
105
115
|
case "TARGET_PRACTICE":
|
106
116
|
case "MASTERY":
|
107
|
-
return
|
117
|
+
return {
|
118
|
+
lottie: t.PRACTICE,
|
119
|
+
icon: d
|
120
|
+
};
|
108
121
|
case "PUZZLE_EASY":
|
109
122
|
case "PUZZLE_MEDIUM":
|
110
123
|
case "PUZZLE_HARD":
|
111
|
-
return
|
124
|
+
return {
|
125
|
+
lottie: t.PUZZLE,
|
126
|
+
icon: A
|
127
|
+
};
|
112
128
|
case "VIDEO":
|
113
|
-
return
|
129
|
+
return {
|
130
|
+
lottie: t.VIDEO,
|
131
|
+
icon: p
|
132
|
+
};
|
114
133
|
default:
|
115
|
-
return
|
134
|
+
return {
|
135
|
+
lottie: t.PROJECT,
|
136
|
+
icon: D
|
137
|
+
};
|
116
138
|
}
|
117
139
|
};
|
118
140
|
export {
|
119
|
-
|
120
|
-
|
141
|
+
k as getNodeCardBasedIcon,
|
142
|
+
j as getNodeStateBasedTagInfo
|
121
143
|
};
|
122
144
|
//# sourceMappingURL=node-card-utils.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"node-card-utils.js","sources":["../../../../src/features/chapters-v2/utils/node-card-utils.tsx"],"sourcesContent":["import type { INodeDataProps } from '../comps/node-card/node-card-types';\n\nimport AlarmIcon from '../../../assets/line-icons/icons/alarm';\nimport Bulb2Icon from '../../../assets/line-icons/icons/bulb2';\nimport Check2Icon from '../../../assets/line-icons/icons/check2';\nimport DartIcon from '../../../assets/line-icons/icons/dart';\nimport ExclamationIcon from '../../../assets/line-icons/icons/exclamation';\nimport Lock2Icon from '../../../assets/line-icons/icons/lock2';\nimport Play2Icon from '../../../assets/line-icons/icons/play2';\nimport PuzzleIcon from '../../../assets/line-icons/icons/puzzle';\nimport RecapIcon from '../../../assets/line-icons/icons/recap';\nimport StatusIcon from '../../../assets/line-icons/icons/status';\nimport TestTubeIcon from '../../../assets/line-icons/icons/testtube';\nimport FlexView from '../..//ui/layout/flex-view';\nimport Text from '../../ui/text/text';\nimport { InProgressIconWrapper } from '../comps/node-card/node-card-styled';\nimport Tag from '../comps/tag/tag';\n\ninterface DueDateInfo {\n isOverdue: boolean;\n daysText: string;\n}\n\nconst SECONDS_PER_DAY = 60 * 60 * 24;\nconst OVERDUE_TAG_STATES: INodeDataProps['state'][] = ['NOT_STARTED', 'IN_PROGRESS'];\n\nconst calculateDueDateInfo = (dueDateTs?: number | null): DueDateInfo => {\n if (!dueDateTs) {\n return { isOverdue: false, daysText: '' };\n }\n\n const currentTimestamp = Math.floor(Date.now() / 1000);\n const differenceInSeconds = dueDateTs - currentTimestamp;\n const differenceInDays = Math.ceil(differenceInSeconds / SECONDS_PER_DAY);\n\n const isOverdue = differenceInDays < 0;\n\n const daysText = differenceInDays > 0 ? `${Math.abs(differenceInDays)}D` : '';\n\n return { isOverdue, daysText };\n};\n\nconst getNodeStateBasedTagInfo = (\n nodeState: INodeDataProps['state'],\n accuracy?: number | null,\n dueDateTs?: number | null,\n) => {\n const { isOverdue, daysText } = calculateDueDateInfo(dueDateTs);\n\n if (isOverdue && OVERDUE_TAG_STATES.includes(nodeState)) {\n return {\n icon: (\n <FlexView $background=\"RED\" $borderRadius={16} $gapX={0.24} $gutterX={0.5}>\n <Text $renderAs=\"ac4-black\" $color=\"WHITE\">\n OVERDUE\n </Text>\n </FlexView>\n ),\n top: -10,\n right: -10,\n };\n }\n\n switch (nodeState) {\n case 'NOT_STARTED':\n return {\n icon: (\n <InProgressIconWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $gutterX={0.5}\n $borderRadius={16}\n >\n {daysText && (\n <Text $renderAs=\"ub3-bold\" $color=\"WHITE\">\n {daysText}\n </Text>\n )}\n </InProgressIconWrapper>\n ),\n top: 0,\n right: 0,\n };\n case 'LOCKED':\n return {\n icon: <Lock2Icon width={32} height={32} />,\n top: -12,\n right: -12,\n };\n case 'IN_PROGRESS':\n return {\n icon: (\n <InProgressIconWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $gutterX={daysText ? 0.25 : 0}\n $borderRadius={16}\n >\n {daysText && (\n <Text $renderAs=\"ub3-bold\" $color=\"WHITE\">\n {daysText}\n </Text>\n )}\n <StatusIcon />\n </InProgressIconWrapper>\n ),\n };\n case 'COMPLETED':\n return {\n icon: (\n <Tag\n Icon={Check2Icon}\n label={typeof accuracy === 'number' ? `${accuracy}%` : undefined}\n />\n ),\n top: -10,\n right: -10,\n };\n case 'WAIT_FOR_REVIEW':\n return {\n icon: <Tag Icon={ExclamationIcon} />,\n top: -10,\n right: -10,\n };\n\n default:\n return {\n icon: undefined,\n };\n }\n};\n\nconst getNodeCardBasedIcon = (nodeType: INodeDataProps['node_type']) => {\n switch (nodeType) {\n case 'LEARNING':\n return Bulb2Icon;\n case 'RECAP':\n return RecapIcon;\n case 'DYNAMIC':\n case 'ASSESSMENT':\n case 'CHAPTER_ASSESSMENT':\n return AlarmIcon;\n case 'PRACTICE':\n case 'EXTRA_PRACTICE':\n case 'TARGET_PRACTICE':\n case 'MASTERY':\n return DartIcon;\n case 'PUZZLE_EASY':\n case 'PUZZLE_MEDIUM':\n case 'PUZZLE_HARD':\n return PuzzleIcon;\n case 'VIDEO':\n return Play2Icon;\n
|
1
|
+
{"version":3,"file":"node-card-utils.js","sources":["../../../../src/features/chapters-v2/utils/node-card-utils.tsx"],"sourcesContent":["import type { INodeDataProps } from '../comps/node-card/node-card-types';\n\nimport AlarmIcon from '../../../assets/line-icons/icons/alarm';\nimport Bulb2Icon from '../../../assets/line-icons/icons/bulb2';\nimport Check2Icon from '../../../assets/line-icons/icons/check2';\nimport DartIcon from '../../../assets/line-icons/icons/dart';\nimport ExclamationIcon from '../../../assets/line-icons/icons/exclamation';\nimport Lock2Icon from '../../../assets/line-icons/icons/lock2';\nimport Play2Icon from '../../../assets/line-icons/icons/play2';\nimport PuzzleIcon from '../../../assets/line-icons/icons/puzzle';\nimport RecapIcon from '../../../assets/line-icons/icons/recap';\nimport StatusIcon from '../../../assets/line-icons/icons/status';\nimport TestTubeIcon from '../../../assets/line-icons/icons/testtube';\nimport { LOTTIE } from '../../../assets/lottie/lottie';\nimport FlexView from '../..//ui/layout/flex-view';\nimport Text from '../../ui/text/text';\nimport { InProgressIconWrapper } from '../comps/node-card/node-card-styled';\nimport Tag from '../comps/tag/tag';\n\ninterface DueDateInfo {\n isOverdue: boolean;\n daysText: string;\n}\n\nconst SECONDS_PER_DAY = 60 * 60 * 24;\nconst OVERDUE_TAG_STATES: INodeDataProps['state'][] = ['NOT_STARTED', 'IN_PROGRESS'];\n\nconst calculateDueDateInfo = (dueDateTs?: number | null): DueDateInfo => {\n if (!dueDateTs) {\n return { isOverdue: false, daysText: '' };\n }\n\n const currentTimestamp = Math.floor(Date.now() / 1000);\n const differenceInSeconds = dueDateTs - currentTimestamp;\n const differenceInDays = Math.ceil(differenceInSeconds / SECONDS_PER_DAY);\n\n const isOverdue = differenceInDays < 0;\n\n const daysText = differenceInDays > 0 ? `${Math.abs(differenceInDays)}D` : '';\n\n return { isOverdue, daysText };\n};\n\nconst getNodeStateBasedTagInfo = (\n nodeState: INodeDataProps['state'],\n accuracy?: number | null,\n dueDateTs?: number | null,\n) => {\n const { isOverdue, daysText } = calculateDueDateInfo(dueDateTs);\n\n if (isOverdue && OVERDUE_TAG_STATES.includes(nodeState)) {\n return {\n icon: (\n <FlexView $background=\"RED\" $borderRadius={16} $gapX={0.24} $gutterX={0.5}>\n <Text $renderAs=\"ac4-black\" $color=\"WHITE\">\n OVERDUE\n </Text>\n </FlexView>\n ),\n top: -10,\n right: -10,\n };\n }\n\n switch (nodeState) {\n case 'NOT_STARTED':\n return {\n icon: (\n <InProgressIconWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $gutterX={0.5}\n $borderRadius={16}\n >\n {daysText && (\n <Text $renderAs=\"ub3-bold\" $color=\"WHITE\">\n {daysText}\n </Text>\n )}\n </InProgressIconWrapper>\n ),\n top: 0,\n right: 0,\n };\n case 'LOCKED':\n return {\n icon: <Lock2Icon width={32} height={32} />,\n top: -12,\n right: -12,\n };\n case 'IN_PROGRESS':\n return {\n icon: (\n <InProgressIconWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $gutterX={daysText ? 0.25 : 0}\n $borderRadius={16}\n >\n {daysText && (\n <Text $renderAs=\"ub3-bold\" $color=\"WHITE\">\n {daysText}\n </Text>\n )}\n <StatusIcon />\n </InProgressIconWrapper>\n ),\n };\n case 'COMPLETED':\n return {\n icon: (\n <Tag\n Icon={Check2Icon}\n label={typeof accuracy === 'number' ? `${accuracy}%` : undefined}\n />\n ),\n top: -10,\n right: -10,\n };\n case 'WAIT_FOR_REVIEW':\n return {\n icon: <Tag Icon={ExclamationIcon} />,\n top: -10,\n right: -10,\n };\n\n default:\n return {\n icon: undefined,\n };\n }\n};\n\nconst getNodeCardBasedIcon = (nodeType: INodeDataProps['node_type']) => {\n switch (nodeType) {\n case 'LEARNING':\n return {\n lottie: LOTTIE.LEARN,\n icon: Bulb2Icon,\n };\n case 'RECAP':\n return {\n lottie: LOTTIE.RECAP,\n icon: RecapIcon,\n };\n case 'DYNAMIC':\n case 'ASSESSMENT':\n case 'CHAPTER_ASSESSMENT':\n return {\n lottie: LOTTIE.TEST,\n icon: AlarmIcon,\n };\n case 'PRACTICE':\n case 'EXTRA_PRACTICE':\n case 'TARGET_PRACTICE':\n case 'MASTERY':\n return {\n lottie: LOTTIE.PRACTICE,\n icon: DartIcon,\n };\n case 'PUZZLE_EASY':\n case 'PUZZLE_MEDIUM':\n case 'PUZZLE_HARD':\n return {\n lottie: LOTTIE.PUZZLE,\n icon: PuzzleIcon,\n };\n case 'VIDEO':\n return {\n lottie: LOTTIE.VIDEO,\n icon: Play2Icon,\n };\n default:\n return {\n lottie: LOTTIE.PROJECT,\n icon: TestTubeIcon,\n };\n }\n};\n\nexport { getNodeStateBasedTagInfo, getNodeCardBasedIcon };\n"],"names":["SECONDS_PER_DAY","OVERDUE_TAG_STATES","calculateDueDateInfo","dueDateTs","currentTimestamp","differenceInSeconds","differenceInDays","isOverdue","daysText","getNodeStateBasedTagInfo","nodeState","accuracy","jsx","FlexView","Text","InProgressIconWrapper","Lock2Icon","jsxs","StatusIcon","Tag","Check2Icon","ExclamationIcon","getNodeCardBasedIcon","nodeType","LOTTIE","Bulb2Icon","RecapIcon","AlarmIcon","DartIcon","PuzzleIcon","Play2Icon","TestTubeIcon"],"mappings":"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"}
|