@cuemath/leap 2.8.62-aa0 → 2.8.62-aa1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/student-actions/student-actions.js +35 -36
- package/dist/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/student-actions/student-actions.js.map +1 -1
- package/dist/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/teacher-actions/teacher-actions.js +17 -18
- package/dist/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/teacher-actions/teacher-actions.js.map +1 -1
- package/dist/features/sheets/lessons-list/lesson-item/lesson-item-cta-info.js +48 -49
- package/dist/features/sheets/lessons-list/lesson-item/lesson-item-cta-info.js.map +1 -1
- package/dist/features/sheets/resources-list/resource-item/resource-item.js +90 -91
- package/dist/features/sheets/resources-list/resource-item/resource-item.js.map +1 -1
- package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/student-actions/student-actions.js +53 -54
- package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/student-actions/student-actions.js.map +1 -1
- package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/teacher-actions/teacher-actions.js +41 -42
- package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/teacher-actions/teacher-actions.js.map +1 -1
- package/dist/features/sheets/utils/is-v3-worksheet.js +5 -10
- package/dist/features/sheets/utils/is-v3-worksheet.js.map +1 -1
- package/dist/index.d.ts +8 -12
- package/dist/index.js +73 -75
- package/package.json +1 -1
@@ -1,96 +1,95 @@
|
|
1
|
-
import { jsxs as
|
2
|
-
import { memo as
|
3
|
-
import
|
4
|
-
import
|
5
|
-
import
|
6
|
-
import
|
7
|
-
import
|
8
|
-
import { useUIContext as
|
9
|
-
import
|
10
|
-
import
|
11
|
-
import
|
1
|
+
import { jsxs as $, jsx as e } from "react/jsx-runtime";
|
2
|
+
import { memo as z, useRef as J, useState as Q, useMemo as Z, useCallback as d, useLayoutEffect as ee } from "react";
|
3
|
+
import te from "../../../../assets/line-icons/icons/minus2.js";
|
4
|
+
import oe from "../../../../assets/line-icons/icons/plus2.js";
|
5
|
+
import re from "../../../../assets/line-icons/icons/redo.js";
|
6
|
+
import A from "../../../ui/arrow-tooltip/arrow-tooltip.js";
|
7
|
+
import ne from "../../../ui/context-menu/context-menu.js";
|
8
|
+
import { useUIContext as ie } from "../../../ui/context/context.js";
|
9
|
+
import ce from "../../../ui/layout/flex-view.js";
|
10
|
+
import se from "../../comps/sheet-button/index.js";
|
11
|
+
import ae from "../../lessons-list/lesson-item/context-menu-helper/target-element.js";
|
12
12
|
import { SHEETS_ANALYTICS_EVENTS as v } from "../../sheets-analytics-events.js";
|
13
|
-
import { TEACHER_MENU_OPTIONS as
|
14
|
-
import { isV3Worksheet as h } from "../../utils/is-v3-worksheet.js";
|
13
|
+
import { TEACHER_MENU_OPTIONS as ue } from "../../sheets-list/sheet-item/reward-n-actions/teacher-actions/teacher-actions-constant.js";
|
15
14
|
import le from "./context-menu-helper/menu-element.js";
|
16
|
-
import { ResourceItemCard as
|
17
|
-
import { getResourceItemCtaState as
|
18
|
-
const { UNASSIGN: x, REDO: N } =
|
15
|
+
import { ResourceItemCard as me, ResourceItemTitle as pe, IconButtonWrapper as fe } from "./styled.js";
|
16
|
+
import { getResourceItemCtaState as de, getResourceItemCtaInfo as he, getResourceItemBackgroundColor as _e } from "./utils.js";
|
17
|
+
const { UNASSIGN: x, REDO: N } = ue, Oe = z(
|
19
18
|
({
|
20
19
|
sheet: t,
|
21
|
-
userType:
|
22
|
-
isMilestoneWidget:
|
23
|
-
userMilestoneId:
|
20
|
+
userType: k,
|
21
|
+
isMilestoneWidget: h,
|
22
|
+
userMilestoneId: _,
|
24
23
|
onUnlock: i,
|
25
24
|
onUnAssignSheet: u,
|
26
|
-
onReset:
|
27
|
-
onPreview:
|
25
|
+
onReset: l,
|
26
|
+
onPreview: m,
|
28
27
|
onReview: p,
|
29
28
|
onStart: f
|
30
29
|
}) => {
|
31
|
-
const { onClick: c } =
|
32
|
-
accuracy:
|
33
|
-
permissions:
|
34
|
-
title:
|
35
|
-
sheet_statement:
|
36
|
-
state:
|
30
|
+
const { onClick: c } = ie(), r = J(null), [O, D] = Q(!1), {
|
31
|
+
accuracy: w,
|
32
|
+
permissions: M,
|
33
|
+
title: b,
|
34
|
+
sheet_statement: X,
|
35
|
+
state: C,
|
37
36
|
node_id: o,
|
38
37
|
user_node_id: s,
|
39
|
-
node_sub_group:
|
40
|
-
node_type:
|
38
|
+
node_sub_group: j,
|
39
|
+
node_type: E
|
41
40
|
} = t, {
|
42
|
-
can_start:
|
43
|
-
can_resume:
|
44
|
-
can_unlock:
|
45
|
-
can_review:
|
46
|
-
can_teacher_review:
|
47
|
-
can_unassign:
|
48
|
-
can_reset:
|
49
|
-
} =
|
41
|
+
can_start: y,
|
42
|
+
can_resume: I,
|
43
|
+
can_unlock: S,
|
44
|
+
can_review: G,
|
45
|
+
can_teacher_review: H,
|
46
|
+
can_unassign: L,
|
47
|
+
can_reset: B
|
48
|
+
} = M, U = typeof w == "number" ? `${w}%` : void 0, n = k === "STUDENT", g = n ? G : H, P = de(C), { label: V, Icon: F } = he(j) || {}, a = Z(
|
50
49
|
() => ({
|
51
50
|
node_id: o,
|
52
|
-
node_type:
|
51
|
+
node_type: E
|
53
52
|
}),
|
54
|
-
[o,
|
53
|
+
[o, E]
|
55
54
|
), K = d(() => {
|
56
55
|
c({
|
57
56
|
analyticsLabel: v.RESOURCE_ASSIGNED,
|
58
57
|
props: a
|
59
58
|
}), i == null || i(o);
|
60
|
-
}, [i, o, c, a]),
|
61
|
-
if (n && (
|
59
|
+
}, [i, o, c, a]), W = d(() => {
|
60
|
+
if (n && (y || I)) {
|
62
61
|
if (typeof f == "function") {
|
63
|
-
f(o,
|
62
|
+
f(o, s);
|
64
63
|
return;
|
65
64
|
}
|
66
65
|
throw new Error("No callback is available");
|
67
66
|
}
|
68
|
-
if (
|
67
|
+
if (g) {
|
69
68
|
if (typeof p != "function")
|
70
69
|
throw new Error("onReview must be a function");
|
71
70
|
if (!s)
|
72
71
|
throw new Error("user node id must be present to review the sheet");
|
73
|
-
p(s,
|
72
|
+
p(s, _);
|
74
73
|
return;
|
75
74
|
}
|
76
|
-
if (typeof
|
75
|
+
if (typeof m != "function")
|
77
76
|
throw new Error("onPreview must be a function");
|
78
|
-
|
77
|
+
m(t);
|
79
78
|
}, [
|
80
|
-
S,
|
81
|
-
R,
|
82
79
|
I,
|
80
|
+
g,
|
81
|
+
y,
|
83
82
|
n,
|
84
83
|
o,
|
85
84
|
t,
|
86
|
-
|
85
|
+
_,
|
87
86
|
s,
|
88
87
|
f,
|
89
88
|
p,
|
90
|
-
|
91
|
-
]),
|
92
|
-
(
|
93
|
-
switch (
|
89
|
+
m
|
90
|
+
]), R = d(
|
91
|
+
(q) => {
|
92
|
+
switch (q) {
|
94
93
|
case x:
|
95
94
|
if (typeof u != "function")
|
96
95
|
throw new Error("onUnassignSheet must be a function");
|
@@ -100,91 +99,91 @@ const { UNASSIGN: x, REDO: N } = me, Me = J(
|
|
100
99
|
}), u(t);
|
101
100
|
return;
|
102
101
|
case N:
|
103
|
-
if (typeof
|
102
|
+
if (typeof l != "function")
|
104
103
|
throw new Error("onReset must be a function");
|
105
|
-
|
104
|
+
l(t);
|
106
105
|
return;
|
107
106
|
}
|
108
107
|
},
|
109
|
-
[t, u,
|
108
|
+
[t, u, l, a, c]
|
110
109
|
);
|
111
|
-
|
112
|
-
r.current && r.current.scrollHeight > r.current.clientHeight &&
|
110
|
+
ee(() => {
|
111
|
+
r.current && r.current.scrollHeight > r.current.clientHeight && D(!0);
|
113
112
|
}, [r]);
|
114
|
-
const
|
113
|
+
const Y = [
|
115
114
|
{
|
116
115
|
id: "supplementary_resources_unassign",
|
117
116
|
label: "Unassign",
|
118
|
-
icon: /* @__PURE__ */ e(
|
117
|
+
icon: /* @__PURE__ */ e(te, { width: 20, height: 20 }),
|
119
118
|
option: x,
|
120
|
-
visible:
|
121
|
-
onClick:
|
119
|
+
visible: L,
|
120
|
+
onClick: R
|
122
121
|
},
|
123
122
|
{
|
124
123
|
id: "supplementary_resources_redo",
|
125
124
|
label: "Redo",
|
126
|
-
icon: /* @__PURE__ */ e(
|
125
|
+
icon: /* @__PURE__ */ e(re, {}),
|
127
126
|
option: N,
|
128
|
-
visible:
|
129
|
-
onClick:
|
127
|
+
visible: B,
|
128
|
+
onClick: R
|
130
129
|
}
|
131
|
-
],
|
132
|
-
|
130
|
+
], T = _e(
|
131
|
+
C,
|
133
132
|
n,
|
134
|
-
|
135
|
-
!!
|
133
|
+
S,
|
134
|
+
!!h
|
136
135
|
);
|
137
|
-
return /* @__PURE__ */
|
138
|
-
|
136
|
+
return /* @__PURE__ */ $(
|
137
|
+
me,
|
139
138
|
{
|
140
139
|
$gapX: 1,
|
141
140
|
$gutterX: 1,
|
142
141
|
$flexGapX: 1.25,
|
143
|
-
$background:
|
142
|
+
$background: T,
|
144
143
|
$justifyContent: "space-between",
|
145
144
|
$heightX: 8,
|
146
|
-
$isMilestoneWidget:
|
145
|
+
$isMilestoneWidget: h,
|
147
146
|
children: [
|
148
147
|
/* @__PURE__ */ e(
|
149
|
-
|
148
|
+
A,
|
150
149
|
{
|
151
150
|
renderAs: "primary",
|
152
151
|
position: "bottom",
|
153
|
-
tooltipItem:
|
154
|
-
hidden: !
|
152
|
+
tooltipItem: b,
|
153
|
+
hidden: !O,
|
155
154
|
widthX: 21.75,
|
156
|
-
children: /* @__PURE__ */ e(
|
155
|
+
children: /* @__PURE__ */ e(pe, { ref: r, $renderAs: "ab2", $color: "BLACK_T_87", children: b })
|
157
156
|
}
|
158
157
|
),
|
159
|
-
/* @__PURE__ */
|
160
|
-
/* @__PURE__ */ e(
|
161
|
-
|
158
|
+
/* @__PURE__ */ $(ce, { $flexDirection: "row", $justifyContent: "space-between", $alignItems: "center", children: [
|
159
|
+
/* @__PURE__ */ e(A, { position: "bottom", tooltipItem: X, renderAs: "secondary", children: /* @__PURE__ */ e(
|
160
|
+
se,
|
162
161
|
{
|
163
162
|
renderAs: "primary",
|
164
|
-
label:
|
163
|
+
label: V ?? "",
|
165
164
|
Icon: F,
|
166
|
-
backgroundColor:
|
165
|
+
backgroundColor: T,
|
167
166
|
state: P,
|
168
167
|
hoverActive: !1,
|
169
|
-
onClick:
|
170
|
-
accuracy:
|
168
|
+
onClick: W,
|
169
|
+
accuracy: U,
|
171
170
|
widthX: 8.5
|
172
171
|
}
|
173
172
|
) }),
|
174
|
-
!n && (
|
175
|
-
|
173
|
+
!n && (S ? /* @__PURE__ */ e(
|
174
|
+
fe,
|
176
175
|
{
|
177
176
|
$flexDirection: "row",
|
178
177
|
$alignItems: "center",
|
179
178
|
$justifyContent: "center",
|
180
179
|
onClick: K,
|
181
|
-
children: /* @__PURE__ */ e(
|
180
|
+
children: /* @__PURE__ */ e(oe, {})
|
182
181
|
}
|
183
182
|
) : /* @__PURE__ */ e(
|
184
|
-
|
183
|
+
ne,
|
185
184
|
{
|
186
|
-
targetElement: /* @__PURE__ */ e(
|
187
|
-
menuElement: /* @__PURE__ */ e(le, { menuOptions:
|
185
|
+
targetElement: /* @__PURE__ */ e(ae, { invertHover: !0 }),
|
186
|
+
menuElement: /* @__PURE__ */ e(le, { menuOptions: Y })
|
188
187
|
}
|
189
188
|
))
|
190
189
|
] })
|
@@ -194,6 +193,6 @@ const { UNASSIGN: x, REDO: N } = me, Me = J(
|
|
194
193
|
}
|
195
194
|
);
|
196
195
|
export {
|
197
|
-
|
196
|
+
Oe as default
|
198
197
|
};
|
199
198
|
//# sourceMappingURL=resource-item.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"resource-item.js","sources":["../../../../../src/features/sheets/resources-list/resource-item/resource-item.tsx"],"sourcesContent":["import type { IMenuOptionsProps } from './context-menu-helper/menu-element-types';\nimport type { IResourceItemProps } from './types';\nimport type { FC } from 'react';\n\nimport { useCallback, useLayoutEffect, useRef, memo, useState, useMemo } from 'react';\n\nimport Minus2Icon from '../../../../assets/line-icons/icons/minus2';\nimport Plus2Icon from '../../../../assets/line-icons/icons/plus2';\nimport RedoIcon from '../../../../assets/line-icons/icons/redo';\nimport ArrowTooltip from '../../../ui/arrow-tooltip/arrow-tooltip';\nimport ContextMenu from '../../../ui/context-menu/context-menu';\nimport { useUIContext } from '../../../ui/context/context';\nimport FlexView from '../../../ui/layout/flex-view';\nimport SheetButton from '../../comps/sheet-button';\nimport ContextMenuTargetElement from '../../lessons-list/lesson-item/context-menu-helper/target-element';\nimport { SHEETS_ANALYTICS_EVENTS } from '../../sheets-analytics-events';\nimport { TEACHER_MENU_OPTIONS } from '../../sheets-list/sheet-item/reward-n-actions/teacher-actions/teacher-actions-constant';\nimport { isV3Worksheet } from '../../utils/is-v3-worksheet';\nimport ContextMenuElement from './context-menu-helper/menu-element';\nimport * as Styled from './styled';\nimport {\n getResourceItemBackgroundColor,\n getResourceItemCtaInfo,\n getResourceItemCtaState,\n} from './utils';\n\nconst { UNASSIGN, REDO } = TEACHER_MENU_OPTIONS;\n\nconst ResourceItem: FC<IResourceItemProps> = memo(\n ({\n sheet,\n userType,\n isMilestoneWidget,\n userMilestoneId,\n onUnlock,\n onUnAssignSheet,\n onReset,\n onPreview,\n onReview,\n onStart,\n }) => {\n const { onClick: trackClick } = useUIContext();\n const titleTextRef = useRef<HTMLDivElement>(null);\n const [showTitleTooltip, setShowTitleTooltip] = useState(false);\n\n const {\n accuracy,\n permissions,\n title,\n sheet_statement: sheetStatement,\n state: sheetState,\n node_id: nodeId,\n user_node_id: userNodeId,\n node_sub_group: nodeSubGroup,\n node_type: nodeType,\n } = sheet;\n const {\n can_start: canStart,\n can_resume: canResume,\n can_unlock: canUnlock,\n can_review: canReview,\n can_teacher_review: canTeacherReview,\n can_unassign: canUnassign,\n can_reset: canReset,\n } = permissions;\n\n const sheetAccuracy = typeof accuracy === 'number' ? `${accuracy}%` : undefined;\n const isStudent = userType === 'STUDENT';\n const canReviewSheet = isStudent ? canReview : canTeacherReview;\n\n const ctaState = getResourceItemCtaState(sheetState);\n const { label, Icon } = getResourceItemCtaInfo(nodeSubGroup) || {};\n\n const analyticsProps = useMemo(\n () => ({\n node_id: nodeId,\n node_type: nodeType,\n }),\n [nodeId, nodeType],\n );\n\n const handleAssignSheet = useCallback(() => {\n trackClick({\n analyticsLabel: SHEETS_ANALYTICS_EVENTS.RESOURCE_ASSIGNED,\n props: analyticsProps,\n });\n\n onUnlock?.(nodeId);\n }, [onUnlock, nodeId, trackClick, analyticsProps]);\n\n const handleOnClick = useCallback(() => {\n if (isStudent && (canStart || canResume)) {\n if (typeof onStart === 'function') {\n onStart(nodeId, isV3Worksheet(sheet), userNodeId);\n\n return;\n }\n\n throw new Error('No callback is available');\n }\n\n if (canReviewSheet) {\n if (typeof onReview !== 'function') {\n throw new Error('onReview must be a function');\n }\n\n if (!userNodeId) {\n throw new Error('user node id must be present to review the sheet');\n }\n\n onReview(userNodeId, isV3Worksheet(sheet, 'review'), userMilestoneId);\n\n return;\n }\n\n if (typeof onPreview !== 'function') {\n throw new Error('onPreview must be a function');\n }\n\n onPreview(sheet, isV3Worksheet(sheet));\n }, [\n canResume,\n canReviewSheet,\n canStart,\n isStudent,\n nodeId,\n sheet,\n userMilestoneId,\n userNodeId,\n onStart,\n onReview,\n onPreview,\n ]);\n\n const handleMenuOptionClick = useCallback(\n (selectedOption: string) => {\n switch (selectedOption) {\n case UNASSIGN:\n if (typeof onUnAssignSheet !== 'function') {\n throw new Error('onUnassignSheet must be a function');\n }\n\n trackClick({\n analyticsLabel: SHEETS_ANALYTICS_EVENTS.RESOURCE_UNASSIGNED,\n props: analyticsProps,\n });\n\n onUnAssignSheet(sheet);\n\n return;\n\n case REDO:\n if (typeof onReset !== 'function') {\n throw new Error('onReset must be a function');\n }\n\n onReset(sheet);\n\n return;\n }\n },\n [sheet, onUnAssignSheet, onReset, analyticsProps, trackClick],\n );\n\n useLayoutEffect(() => {\n if (\n titleTextRef.current &&\n titleTextRef.current.scrollHeight > titleTextRef.current.clientHeight\n ) {\n setShowTitleTooltip(true);\n }\n }, [titleTextRef]);\n\n const menuOptions: IMenuOptionsProps[] = [\n {\n id: 'supplementary_resources_unassign',\n label: 'Unassign',\n icon: <Minus2Icon width={20} height={20} />,\n option: UNASSIGN,\n visible: canUnassign,\n onClick: handleMenuOptionClick,\n },\n {\n id: 'supplementary_resources_redo',\n label: 'Redo',\n icon: <RedoIcon />,\n option: REDO,\n visible: canReset,\n onClick: handleMenuOptionClick,\n },\n ];\n\n const backgroundColor = getResourceItemBackgroundColor(\n sheetState,\n isStudent,\n canUnlock,\n !!isMilestoneWidget,\n );\n\n return (\n <Styled.ResourceItemCard\n $gapX={1}\n $gutterX={1}\n $flexGapX={1.25}\n $background={backgroundColor}\n $justifyContent=\"space-between\"\n $heightX={8}\n $isMilestoneWidget={isMilestoneWidget}\n >\n <ArrowTooltip\n renderAs=\"primary\"\n position=\"bottom\"\n tooltipItem={title}\n hidden={!showTitleTooltip}\n widthX={21.75}\n >\n <Styled.ResourceItemTitle ref={titleTextRef} $renderAs=\"ab2\" $color=\"BLACK_T_87\">\n {title}\n </Styled.ResourceItemTitle>\n </ArrowTooltip>\n\n <FlexView $flexDirection=\"row\" $justifyContent=\"space-between\" $alignItems=\"center\">\n <ArrowTooltip position=\"bottom\" tooltipItem={sheetStatement} renderAs=\"secondary\">\n <SheetButton\n renderAs=\"primary\"\n label={label ?? ''}\n Icon={Icon}\n backgroundColor={backgroundColor}\n state={ctaState}\n hoverActive={false}\n onClick={handleOnClick}\n accuracy={sheetAccuracy}\n widthX={8.5}\n />\n </ArrowTooltip>\n\n {!isStudent &&\n (canUnlock ? (\n <Styled.IconButtonWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n onClick={handleAssignSheet}\n >\n <Plus2Icon />\n </Styled.IconButtonWrapper>\n ) : (\n <ContextMenu\n targetElement={<ContextMenuTargetElement invertHover />}\n menuElement={<ContextMenuElement menuOptions={menuOptions} />}\n />\n ))}\n </FlexView>\n </Styled.ResourceItemCard>\n );\n },\n);\n\nexport default ResourceItem;\n"],"names":["UNASSIGN","REDO","TEACHER_MENU_OPTIONS","ResourceItem","memo","sheet","userType","isMilestoneWidget","userMilestoneId","onUnlock","onUnAssignSheet","onReset","onPreview","onReview","onStart","trackClick","useUIContext","titleTextRef","useRef","showTitleTooltip","setShowTitleTooltip","useState","accuracy","permissions","title","sheetStatement","sheetState","nodeId","userNodeId","nodeSubGroup","nodeType","canStart","canResume","canUnlock","canReview","canTeacherReview","canUnassign","canReset","sheetAccuracy","isStudent","canReviewSheet","ctaState","getResourceItemCtaState","label","Icon","getResourceItemCtaInfo","analyticsProps","useMemo","handleAssignSheet","useCallback","SHEETS_ANALYTICS_EVENTS","handleOnClick","isV3Worksheet","handleMenuOptionClick","selectedOption","useLayoutEffect","menuOptions","jsx","Minus2Icon","RedoIcon","backgroundColor","getResourceItemBackgroundColor","jsxs","Styled.ResourceItemCard","ArrowTooltip","Styled.ResourceItemTitle","FlexView","SheetButton","Styled.IconButtonWrapper","Plus2Icon","ContextMenu","ContextMenuTargetElement","ContextMenuElement"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"resource-item.js","sources":["../../../../../src/features/sheets/resources-list/resource-item/resource-item.tsx"],"sourcesContent":["import type { IMenuOptionsProps } from './context-menu-helper/menu-element-types';\nimport type { IResourceItemProps } from './types';\nimport type { FC } from 'react';\n\nimport { useCallback, useLayoutEffect, useRef, memo, useState, useMemo } from 'react';\n\nimport Minus2Icon from '../../../../assets/line-icons/icons/minus2';\nimport Plus2Icon from '../../../../assets/line-icons/icons/plus2';\nimport RedoIcon from '../../../../assets/line-icons/icons/redo';\nimport ArrowTooltip from '../../../ui/arrow-tooltip/arrow-tooltip';\nimport ContextMenu from '../../../ui/context-menu/context-menu';\nimport { useUIContext } from '../../../ui/context/context';\nimport FlexView from '../../../ui/layout/flex-view';\nimport SheetButton from '../../comps/sheet-button';\nimport ContextMenuTargetElement from '../../lessons-list/lesson-item/context-menu-helper/target-element';\nimport { SHEETS_ANALYTICS_EVENTS } from '../../sheets-analytics-events';\nimport { TEACHER_MENU_OPTIONS } from '../../sheets-list/sheet-item/reward-n-actions/teacher-actions/teacher-actions-constant';\nimport ContextMenuElement from './context-menu-helper/menu-element';\nimport * as Styled from './styled';\nimport {\n getResourceItemBackgroundColor,\n getResourceItemCtaInfo,\n getResourceItemCtaState,\n} from './utils';\n\nconst { UNASSIGN, REDO } = TEACHER_MENU_OPTIONS;\n\nconst ResourceItem: FC<IResourceItemProps> = memo(\n ({\n sheet,\n userType,\n isMilestoneWidget,\n userMilestoneId,\n onUnlock,\n onUnAssignSheet,\n onReset,\n onPreview,\n onReview,\n onStart,\n }) => {\n const { onClick: trackClick } = useUIContext();\n const titleTextRef = useRef<HTMLDivElement>(null);\n const [showTitleTooltip, setShowTitleTooltip] = useState(false);\n\n const {\n accuracy,\n permissions,\n title,\n sheet_statement: sheetStatement,\n state: sheetState,\n node_id: nodeId,\n user_node_id: userNodeId,\n node_sub_group: nodeSubGroup,\n node_type: nodeType,\n } = sheet;\n const {\n can_start: canStart,\n can_resume: canResume,\n can_unlock: canUnlock,\n can_review: canReview,\n can_teacher_review: canTeacherReview,\n can_unassign: canUnassign,\n can_reset: canReset,\n } = permissions;\n\n const sheetAccuracy = typeof accuracy === 'number' ? `${accuracy}%` : undefined;\n const isStudent = userType === 'STUDENT';\n const canReviewSheet = isStudent ? canReview : canTeacherReview;\n\n const ctaState = getResourceItemCtaState(sheetState);\n const { label, Icon } = getResourceItemCtaInfo(nodeSubGroup) || {};\n\n const analyticsProps = useMemo(\n () => ({\n node_id: nodeId,\n node_type: nodeType,\n }),\n [nodeId, nodeType],\n );\n\n const handleAssignSheet = useCallback(() => {\n trackClick({\n analyticsLabel: SHEETS_ANALYTICS_EVENTS.RESOURCE_ASSIGNED,\n props: analyticsProps,\n });\n\n onUnlock?.(nodeId);\n }, [onUnlock, nodeId, trackClick, analyticsProps]);\n\n const handleOnClick = useCallback(() => {\n if (isStudent && (canStart || canResume)) {\n if (typeof onStart === 'function') {\n onStart(nodeId, userNodeId);\n\n return;\n }\n\n throw new Error('No callback is available');\n }\n\n if (canReviewSheet) {\n if (typeof onReview !== 'function') {\n throw new Error('onReview must be a function');\n }\n\n if (!userNodeId) {\n throw new Error('user node id must be present to review the sheet');\n }\n\n onReview(userNodeId, userMilestoneId);\n\n return;\n }\n\n if (typeof onPreview !== 'function') {\n throw new Error('onPreview must be a function');\n }\n\n onPreview(sheet);\n }, [\n canResume,\n canReviewSheet,\n canStart,\n isStudent,\n nodeId,\n sheet,\n userMilestoneId,\n userNodeId,\n onStart,\n onReview,\n onPreview,\n ]);\n\n const handleMenuOptionClick = useCallback(\n (selectedOption: string) => {\n switch (selectedOption) {\n case UNASSIGN:\n if (typeof onUnAssignSheet !== 'function') {\n throw new Error('onUnassignSheet must be a function');\n }\n\n trackClick({\n analyticsLabel: SHEETS_ANALYTICS_EVENTS.RESOURCE_UNASSIGNED,\n props: analyticsProps,\n });\n\n onUnAssignSheet(sheet);\n\n return;\n\n case REDO:\n if (typeof onReset !== 'function') {\n throw new Error('onReset must be a function');\n }\n\n onReset(sheet);\n\n return;\n }\n },\n [sheet, onUnAssignSheet, onReset, analyticsProps, trackClick],\n );\n\n useLayoutEffect(() => {\n if (\n titleTextRef.current &&\n titleTextRef.current.scrollHeight > titleTextRef.current.clientHeight\n ) {\n setShowTitleTooltip(true);\n }\n }, [titleTextRef]);\n\n const menuOptions: IMenuOptionsProps[] = [\n {\n id: 'supplementary_resources_unassign',\n label: 'Unassign',\n icon: <Minus2Icon width={20} height={20} />,\n option: UNASSIGN,\n visible: canUnassign,\n onClick: handleMenuOptionClick,\n },\n {\n id: 'supplementary_resources_redo',\n label: 'Redo',\n icon: <RedoIcon />,\n option: REDO,\n visible: canReset,\n onClick: handleMenuOptionClick,\n },\n ];\n\n const backgroundColor = getResourceItemBackgroundColor(\n sheetState,\n isStudent,\n canUnlock,\n !!isMilestoneWidget,\n );\n\n return (\n <Styled.ResourceItemCard\n $gapX={1}\n $gutterX={1}\n $flexGapX={1.25}\n $background={backgroundColor}\n $justifyContent=\"space-between\"\n $heightX={8}\n $isMilestoneWidget={isMilestoneWidget}\n >\n <ArrowTooltip\n renderAs=\"primary\"\n position=\"bottom\"\n tooltipItem={title}\n hidden={!showTitleTooltip}\n widthX={21.75}\n >\n <Styled.ResourceItemTitle ref={titleTextRef} $renderAs=\"ab2\" $color=\"BLACK_T_87\">\n {title}\n </Styled.ResourceItemTitle>\n </ArrowTooltip>\n\n <FlexView $flexDirection=\"row\" $justifyContent=\"space-between\" $alignItems=\"center\">\n <ArrowTooltip position=\"bottom\" tooltipItem={sheetStatement} renderAs=\"secondary\">\n <SheetButton\n renderAs=\"primary\"\n label={label ?? ''}\n Icon={Icon}\n backgroundColor={backgroundColor}\n state={ctaState}\n hoverActive={false}\n onClick={handleOnClick}\n accuracy={sheetAccuracy}\n widthX={8.5}\n />\n </ArrowTooltip>\n\n {!isStudent &&\n (canUnlock ? (\n <Styled.IconButtonWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n onClick={handleAssignSheet}\n >\n <Plus2Icon />\n </Styled.IconButtonWrapper>\n ) : (\n <ContextMenu\n targetElement={<ContextMenuTargetElement invertHover />}\n menuElement={<ContextMenuElement menuOptions={menuOptions} />}\n />\n ))}\n </FlexView>\n </Styled.ResourceItemCard>\n );\n },\n);\n\nexport default ResourceItem;\n"],"names":["UNASSIGN","REDO","TEACHER_MENU_OPTIONS","ResourceItem","memo","sheet","userType","isMilestoneWidget","userMilestoneId","onUnlock","onUnAssignSheet","onReset","onPreview","onReview","onStart","trackClick","useUIContext","titleTextRef","useRef","showTitleTooltip","setShowTitleTooltip","useState","accuracy","permissions","title","sheetStatement","sheetState","nodeId","userNodeId","nodeSubGroup","nodeType","canStart","canResume","canUnlock","canReview","canTeacherReview","canUnassign","canReset","sheetAccuracy","isStudent","canReviewSheet","ctaState","getResourceItemCtaState","label","Icon","getResourceItemCtaInfo","analyticsProps","useMemo","handleAssignSheet","useCallback","SHEETS_ANALYTICS_EVENTS","handleOnClick","handleMenuOptionClick","selectedOption","useLayoutEffect","menuOptions","jsx","Minus2Icon","RedoIcon","backgroundColor","getResourceItemBackgroundColor","jsxs","Styled.ResourceItemCard","ArrowTooltip","Styled.ResourceItemTitle","FlexView","SheetButton","Styled.IconButtonWrapper","Plus2Icon","ContextMenu","ContextMenuTargetElement","ContextMenuElement"],"mappings":"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"}
|
@@ -1,111 +1,110 @@
|
|
1
|
-
import { jsxs as
|
2
|
-
import { useMemo as
|
3
|
-
import
|
4
|
-
import
|
5
|
-
import { useUIContext as
|
6
|
-
import { NODE_TYPE as
|
7
|
-
import
|
8
|
-
import Y from "../context-menu-helper/
|
9
|
-
import
|
10
|
-
|
11
|
-
|
12
|
-
sheet: m,
|
1
|
+
import { jsxs as q, Fragment as A, jsx as s } from "react/jsx-runtime";
|
2
|
+
import { useMemo as y, useCallback as I } from "react";
|
3
|
+
import g from "../../../../../ui/buttons/button/button.js";
|
4
|
+
import j from "../../../../../ui/context-menu/context-menu.js";
|
5
|
+
import { useUIContext as U } from "../../../../../ui/context/context.js";
|
6
|
+
import { NODE_TYPE as V } from "../../../../constants/sheet.js";
|
7
|
+
import W from "../context-menu-helper/menu-element/menu-element.js";
|
8
|
+
import Y from "../context-menu-helper/target-element/target-element.js";
|
9
|
+
import { MENU_OPTIONS as E } from "./student-actions-constant.js";
|
10
|
+
const K = ({
|
11
|
+
sheet: v,
|
13
12
|
isDefocused: o,
|
14
|
-
isLastSheet:
|
15
|
-
...
|
13
|
+
isLastSheet: C,
|
14
|
+
...N
|
16
15
|
}) => {
|
17
|
-
const { teacherId:
|
16
|
+
const { teacherId: _, milestoneId: a, section: m, onStart: d, onResume: c, onReattempt: u, onReview: p } = N, { permissions: x, node_id: l, user_node_id: e, node_type: M } = v, {
|
18
17
|
can_start: r,
|
19
|
-
can_resume:
|
20
|
-
can_review:
|
21
|
-
can_reattempt:
|
22
|
-
is_review_disabled:
|
23
|
-
} =
|
18
|
+
can_resume: f,
|
19
|
+
can_review: h,
|
20
|
+
can_reattempt: w,
|
21
|
+
is_review_disabled: R
|
22
|
+
} = x, t = M === V.DYNAMIC ? e : l, { onEvent: b } = U(), i = y(() => {
|
24
23
|
const n = {
|
25
|
-
teacher_id:
|
26
|
-
node_id:
|
24
|
+
teacher_id: _,
|
25
|
+
node_id: l,
|
27
26
|
user_node_id: e
|
28
27
|
};
|
29
|
-
return
|
30
|
-
}, [
|
28
|
+
return a && (n.milestone_id = a), m && (n.section = m), n;
|
29
|
+
}, [a, l, m, _, e]), T = I(() => {
|
31
30
|
if (!t)
|
32
31
|
throw new Error("No required id is present to open the sheet.");
|
33
|
-
if (r && typeof
|
34
|
-
|
32
|
+
if (r && typeof d == "function") {
|
33
|
+
d(t, e);
|
35
34
|
return;
|
36
35
|
}
|
37
|
-
if (
|
38
|
-
|
36
|
+
if (f && typeof c == "function") {
|
37
|
+
c(t, e);
|
39
38
|
return;
|
40
39
|
}
|
41
40
|
throw new Error("No callback provided. If provided it must be a function");
|
42
|
-
}, [
|
41
|
+
}, [f, r, t, c, d, e]), S = I(
|
43
42
|
(n) => {
|
44
|
-
if (
|
43
|
+
if (b("clicked", {
|
45
44
|
...i,
|
46
45
|
cta: n
|
47
|
-
}), n ===
|
46
|
+
}), n === E.REVIEW) {
|
48
47
|
if (!e)
|
49
48
|
throw new Error("No required id is present to open the sheet.");
|
50
|
-
if (typeof
|
49
|
+
if (typeof p != "function")
|
51
50
|
throw new Error("onReview must be a function");
|
52
|
-
|
51
|
+
p(e);
|
53
52
|
return;
|
54
53
|
}
|
55
54
|
if (!t)
|
56
55
|
throw new Error("No required id is present to open the sheet.");
|
57
|
-
if (typeof
|
56
|
+
if (typeof u != "function")
|
58
57
|
throw new Error("onReattempt must be a function");
|
59
|
-
|
58
|
+
u(t, e);
|
60
59
|
},
|
61
|
-
[i, t,
|
62
|
-
),
|
60
|
+
[i, t, u, p, b, e]
|
61
|
+
), k = r || f, O = !o && w || h, P = y(
|
63
62
|
() => [
|
64
63
|
{
|
65
|
-
show:
|
66
|
-
label:
|
67
|
-
disable:
|
64
|
+
show: h,
|
65
|
+
label: E.REVIEW,
|
66
|
+
disable: R
|
68
67
|
},
|
69
68
|
{
|
70
|
-
show: !o &&
|
71
|
-
label:
|
69
|
+
show: !o && w,
|
70
|
+
label: E.REATTEMPT
|
72
71
|
}
|
73
72
|
],
|
74
|
-
[
|
73
|
+
[w, h, o, R]
|
75
74
|
);
|
76
|
-
return /* @__PURE__ */ A
|
77
|
-
|
78
|
-
|
75
|
+
return /* @__PURE__ */ q(A, { children: [
|
76
|
+
k && /* @__PURE__ */ s(
|
77
|
+
g,
|
79
78
|
{
|
80
79
|
label: r ? "Start" : "Resume",
|
81
80
|
widthX: 7,
|
82
81
|
renderAs: "primary",
|
83
82
|
size: "xsmall",
|
84
|
-
onClick:
|
83
|
+
onClick: T,
|
85
84
|
disabled: o,
|
86
85
|
analyticsProps: i,
|
87
86
|
shape: "square"
|
88
87
|
}
|
89
88
|
),
|
90
|
-
|
91
|
-
|
89
|
+
O && /* @__PURE__ */ s(
|
90
|
+
j,
|
92
91
|
{
|
93
|
-
targetElement: /* @__PURE__ */ s(
|
92
|
+
targetElement: /* @__PURE__ */ s(Y, { analyticsLabel: "Sheet menu", analyticsProps: i }),
|
94
93
|
menuElement: /* @__PURE__ */ s(
|
95
|
-
|
94
|
+
W,
|
96
95
|
{
|
97
|
-
options:
|
96
|
+
options: P,
|
98
97
|
handleOnMenuOptionSelection: S
|
99
98
|
}
|
100
99
|
),
|
101
100
|
menuOffset: 10,
|
102
101
|
menuZIndex: 1,
|
103
|
-
placeTop:
|
102
|
+
placeTop: C
|
104
103
|
}
|
105
104
|
)
|
106
105
|
] });
|
107
106
|
};
|
108
107
|
export {
|
109
|
-
|
108
|
+
K as default
|
110
109
|
};
|
111
110
|
//# sourceMappingURL=student-actions.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"student-actions.js","sources":["../../../../../../../src/features/sheets/sheets-list/sheet-item/reward-n-actions/student-actions/student-actions.tsx"],"sourcesContent":["import type { IRewardNActionsProps, TTrackEventPayloadProps } from '../reward-n-actions-types';\nimport type { FC } from 'react';\n\nimport { useCallback, useMemo } from 'react';\n\nimport Button from '../../../../../ui/buttons/button/button';\nimport ContextMenu from '../../../../../ui/context-menu/context-menu';\nimport { useUIContext } from '../../../../../ui/context/context';\nimport { NODE_TYPE } from '../../../../constants/sheet';\nimport
|
1
|
+
{"version":3,"file":"student-actions.js","sources":["../../../../../../../src/features/sheets/sheets-list/sheet-item/reward-n-actions/student-actions/student-actions.tsx"],"sourcesContent":["import type { IRewardNActionsProps, TTrackEventPayloadProps } from '../reward-n-actions-types';\nimport type { FC } from 'react';\n\nimport { useCallback, useMemo } from 'react';\n\nimport Button from '../../../../../ui/buttons/button/button';\nimport ContextMenu from '../../../../../ui/context-menu/context-menu';\nimport { useUIContext } from '../../../../../ui/context/context';\nimport { NODE_TYPE } from '../../../../constants/sheet';\nimport MenuElement from '../context-menu-helper/menu-element/menu-element';\nimport TargetElement from '../context-menu-helper/target-element/target-element';\nimport { MENU_OPTIONS } from './student-actions-constant';\n\nconst StudentActions: FC<IRewardNActionsProps> = ({\n sheet,\n isDefocused,\n isLastSheet,\n ...restStudentActionProps\n}) => {\n const { teacherId, milestoneId, section, onStart, onResume, onReattempt, onReview } =\n restStudentActionProps;\n const { permissions, node_id: nodeId, user_node_id: userNodeId, node_type: nodeType } = sheet;\n\n const {\n can_start: canStart,\n can_resume: canResume,\n can_review: canReview,\n can_reattempt: canReattempt,\n is_review_disabled: isReviewHidden,\n } = permissions;\n\n const id = nodeType === NODE_TYPE.DYNAMIC ? userNodeId : nodeId;\n\n const { onEvent: trackEvent } = useUIContext();\n\n const analyticsProps = useMemo(() => {\n const payload: TTrackEventPayloadProps = {\n teacher_id: teacherId,\n node_id: nodeId,\n user_node_id: userNodeId,\n };\n\n if (milestoneId) {\n payload.milestone_id = milestoneId;\n }\n\n if (section) {\n payload.section = section;\n }\n\n return payload;\n }, [milestoneId, nodeId, section, teacherId, userNodeId]);\n\n const handleOnPrimaryCtaClick = useCallback(() => {\n if (!id) {\n throw new Error('No required id is present to open the sheet.');\n }\n\n if (canStart && typeof onStart === 'function') {\n onStart(id, userNodeId);\n\n return;\n }\n\n if (canResume && typeof onResume === 'function') {\n onResume(id, userNodeId);\n\n return;\n }\n\n throw new Error('No callback provided. If provided it must be a function');\n }, [canResume, canStart, id, onResume, onStart, userNodeId]);\n\n const handleOnMenuOptionSelection = useCallback(\n (selectedOption: string) => {\n trackEvent('clicked', {\n ...analyticsProps,\n cta: selectedOption,\n });\n if (selectedOption === MENU_OPTIONS.REVIEW) {\n if (!userNodeId) {\n throw new Error('No required id is present to open the sheet.');\n }\n\n if (typeof onReview !== 'function') {\n throw new Error('onReview must be a function');\n }\n\n onReview(userNodeId);\n\n return;\n }\n\n if (!id) {\n throw new Error('No required id is present to open the sheet.');\n }\n\n if (typeof onReattempt !== 'function') {\n throw new Error('onReattempt must be a function');\n }\n\n onReattempt(id, userNodeId);\n\n return;\n },\n [analyticsProps, id, onReattempt, onReview, trackEvent, userNodeId],\n );\n\n const renderPrimaryCta = canStart || canResume;\n const renderContextMenu = (!isDefocused && canReattempt) || canReview;\n\n const options = useMemo(\n () => [\n {\n show: canReview,\n label: MENU_OPTIONS.REVIEW,\n disable: isReviewHidden,\n },\n {\n show: !isDefocused && canReattempt,\n label: MENU_OPTIONS.REATTEMPT,\n },\n ],\n [canReattempt, canReview, isDefocused, isReviewHidden],\n );\n\n return (\n <>\n {renderPrimaryCta && (\n <Button\n label={canStart ? 'Start' : 'Resume'}\n widthX={7}\n renderAs=\"primary\"\n size=\"xsmall\"\n onClick={handleOnPrimaryCtaClick}\n disabled={isDefocused}\n analyticsProps={analyticsProps}\n shape=\"square\"\n />\n )}\n\n {renderContextMenu && (\n <ContextMenu\n targetElement={\n <TargetElement analyticsLabel=\"Sheet menu\" analyticsProps={analyticsProps} />\n }\n menuElement={\n <MenuElement\n options={options}\n handleOnMenuOptionSelection={handleOnMenuOptionSelection}\n />\n }\n menuOffset={10}\n menuZIndex={1}\n placeTop={isLastSheet}\n />\n )}\n </>\n );\n};\n\nexport default StudentActions;\n"],"names":["StudentActions","sheet","isDefocused","isLastSheet","restStudentActionProps","teacherId","milestoneId","section","onStart","onResume","onReattempt","onReview","permissions","nodeId","userNodeId","nodeType","canStart","canResume","canReview","canReattempt","isReviewHidden","id","NODE_TYPE","trackEvent","useUIContext","analyticsProps","useMemo","payload","handleOnPrimaryCtaClick","useCallback","handleOnMenuOptionSelection","selectedOption","MENU_OPTIONS","renderPrimaryCta","renderContextMenu","options","jsxs","Fragment","jsx","Button","ContextMenu","TargetElement","MenuElement"],"mappings":"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"}
|