@cuemath/leap 2.8.63-akm-5 → 2.9.0-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 +45 -46
- 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 +25 -26
- package/dist/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/teacher-actions/teacher-actions.js.map +1 -1
- package/dist/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.js +50 -58
- package/dist/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.js.map +1 -1
- package/dist/features/cue-canvas/cue-canvas-provider.js +9 -8
- package/dist/features/cue-canvas/cue-canvas-provider.js.map +1 -1
- package/dist/features/sheets/lessons-list/lesson-item/lesson-item-cta-info.js +59 -60
- 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 +89 -90
- 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 +60 -61
- 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 +63 -64
- 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 +4 -14
- package/dist/features/sheets/utils/is-v3-worksheet.js.map +1 -1
- package/dist/index.d.ts +10 -13
- package/dist/index.js +425 -425
- package/dist/index.js.map +1 -1
- package/dist/library/polypad.js +24965 -0
- package/dist/library/polypad.js.map +1 -0
- package/package.json +4 -2
@@ -1,20 +1,19 @@
|
|
1
|
-
import { jsx as
|
2
|
-
import { memo as
|
1
|
+
import { jsx as m } from "react/jsx-runtime";
|
2
|
+
import { memo as G, useMemo as O, useCallback as $, Fragment as M } from "react";
|
3
3
|
import B from "../../../../assets/line-icons/icons/bulb2.js";
|
4
4
|
import F from "../../../../assets/line-icons/icons/practice.js";
|
5
|
-
import { IS_CHAPTER_COMPLETED_STATES as
|
5
|
+
import { IS_CHAPTER_COMPLETED_STATES as A } from "../../../milestone/create/milestone-create-constants.js";
|
6
6
|
import H from "../../../ui/arrow-tooltip/arrow-tooltip.js";
|
7
|
-
import
|
8
|
-
import
|
9
|
-
import { NODE_TYPE as
|
10
|
-
|
11
|
-
|
12
|
-
if (n === P || b.some((d) => d === n))
|
7
|
+
import V from "../../../ui/layout/flex-view.js";
|
8
|
+
import j from "../../comps/sheet-button/index.js";
|
9
|
+
import { NODE_TYPE as K, SHEET_STATE as U } from "../../constants/sheet.js";
|
10
|
+
const { TARGET_PRACTICE: I, PRACTICE: b, LEARNING: X } = K, { COMPLETED: y, IN_PROGRESS: Y } = U, q = (n, o, i) => {
|
11
|
+
if (n === y || A.some((f) => f === n))
|
13
12
|
return {
|
14
13
|
state: "completed",
|
15
14
|
renderAs: "secondary_black"
|
16
15
|
};
|
17
|
-
if ((o ===
|
16
|
+
if ((o === b || o === I) && i === "PENDING_TARGET_PRACTICE")
|
18
17
|
return {
|
19
18
|
state: "overdue",
|
20
19
|
renderAs: "tertiary"
|
@@ -24,85 +23,85 @@ const { TARGET_PRACTICE: v, PRACTICE: y, LEARNING: X } = U, { COMPLETED: P, IN_P
|
|
24
23
|
state: "in_progress",
|
25
24
|
renderAs: "primary"
|
26
25
|
};
|
27
|
-
},
|
28
|
-
({ sheetsListData: n, userType: o, isLessonDisabled:
|
29
|
-
const { lessonTagType:
|
30
|
-
(
|
31
|
-
const { permissions: E, node_id:
|
32
|
-
can_start:
|
33
|
-
can_resume:
|
34
|
-
can_reattempt:
|
35
|
-
can_review:
|
36
|
-
can_teacher_review:
|
37
|
-
} = E,
|
38
|
-
if (
|
39
|
-
if (
|
40
|
-
if (
|
41
|
-
|
26
|
+
}, ae = G(
|
27
|
+
({ sheetsListData: n, userType: o, isLessonDisabled: i, ...T }) => {
|
28
|
+
const { lessonTagType: f, onStart: d, onResume: p, onReattempt: u, onReview: l, onPreview: _ } = T, r = O(() => o === "STUDENT", [o]), v = $(
|
29
|
+
(s) => {
|
30
|
+
const { permissions: E, node_id: t, user_node_id: e } = s, {
|
31
|
+
can_start: a,
|
32
|
+
can_resume: c,
|
33
|
+
can_reattempt: w,
|
34
|
+
can_review: C,
|
35
|
+
can_teacher_review: h
|
36
|
+
} = E, R = r ? C : h;
|
37
|
+
if (r) {
|
38
|
+
if (a || c) {
|
39
|
+
if (a && typeof d == "function") {
|
40
|
+
d(t, e);
|
42
41
|
return;
|
43
42
|
}
|
44
|
-
if (
|
45
|
-
|
43
|
+
if (c && typeof p == "function") {
|
44
|
+
p(t, e);
|
46
45
|
return;
|
47
46
|
}
|
48
47
|
throw new Error("No callback is available");
|
49
|
-
} else if (
|
50
|
-
if (typeof
|
48
|
+
} else if (w) {
|
49
|
+
if (typeof u != "function")
|
51
50
|
throw new Error("canReattempt must be a function");
|
52
|
-
|
51
|
+
u(t, e);
|
53
52
|
return;
|
54
53
|
}
|
55
54
|
}
|
56
|
-
if (
|
57
|
-
if (typeof
|
55
|
+
if (R) {
|
56
|
+
if (typeof l != "function")
|
58
57
|
throw new Error("onReview must be a function");
|
59
|
-
if (!
|
58
|
+
if (!e)
|
60
59
|
throw new Error("user node id must be present to review the sheet");
|
61
|
-
|
60
|
+
l(e);
|
62
61
|
return;
|
63
62
|
}
|
64
|
-
if (typeof
|
63
|
+
if (typeof _ != "function")
|
65
64
|
throw new Error("onPreview must be a function");
|
66
|
-
|
65
|
+
_(s);
|
67
66
|
},
|
68
|
-
[
|
67
|
+
[r, l, d, _, u, p]
|
69
68
|
);
|
70
|
-
return /* @__PURE__ */
|
69
|
+
return /* @__PURE__ */ m(V, { $flexDirection: "row", $flexGapX: 1, $alignItems: "center", children: n.map((s, E) => {
|
71
70
|
const {
|
72
|
-
node_type:
|
73
|
-
state:
|
74
|
-
permissions:
|
75
|
-
sheet_statement:
|
76
|
-
} =
|
77
|
-
can_start:
|
78
|
-
can_resume:
|
79
|
-
can_reattempt:
|
80
|
-
can_review:
|
81
|
-
} =
|
82
|
-
return /* @__PURE__ */
|
71
|
+
node_type: t,
|
72
|
+
state: e,
|
73
|
+
permissions: a,
|
74
|
+
sheet_statement: c
|
75
|
+
} = s, {
|
76
|
+
can_start: w,
|
77
|
+
can_resume: C,
|
78
|
+
can_reattempt: h,
|
79
|
+
can_review: R
|
80
|
+
} = a, S = t === I ? b : t, P = t === X, N = e === "LOCKED", D = q(e, t, f), { state: g, renderAs: L } = D || {}, k = !(e === y || A.some((x) => x === e)) && !(w || C || R || h);
|
81
|
+
return /* @__PURE__ */ m(M, { children: /* @__PURE__ */ m(
|
83
82
|
H,
|
84
83
|
{
|
85
84
|
renderAs: "secondary",
|
86
85
|
position: "bottom",
|
87
|
-
tooltipItem:
|
86
|
+
tooltipItem: c,
|
88
87
|
textVariant: "ab3",
|
89
|
-
children: /* @__PURE__ */
|
90
|
-
|
88
|
+
children: /* @__PURE__ */ m(
|
89
|
+
j,
|
91
90
|
{
|
92
|
-
renderAs: L ?? (
|
93
|
-
label:
|
94
|
-
Icon:
|
95
|
-
onClick: () =>
|
96
|
-
disabled:
|
97
|
-
state:
|
91
|
+
renderAs: L ?? (i || !r && N ? "secondary_grey" : "primary"),
|
92
|
+
label: S,
|
93
|
+
Icon: P ? B : F,
|
94
|
+
onClick: () => v(s),
|
95
|
+
disabled: r && (i || k),
|
96
|
+
state: g
|
98
97
|
}
|
99
98
|
)
|
100
99
|
}
|
101
|
-
) }, `${
|
100
|
+
) }, `${S}__lesson_button__${E}`);
|
102
101
|
}) });
|
103
102
|
}
|
104
103
|
);
|
105
104
|
export {
|
106
|
-
|
105
|
+
ae as default
|
107
106
|
};
|
108
107
|
//# sourceMappingURL=lesson-item-cta-info.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"lesson-item-cta-info.js","sources":["../../../../../src/features/sheets/lessons-list/lesson-item/lesson-item-cta-info.tsx"],"sourcesContent":["import type { TSheetButtonVariant } from '../../comps/sheet-button/types';\nimport type { ISheetDataProps } from '../../sheets-list/sheet-item/sheet-item-types';\nimport type { IGetLessonCtaInfo, ILessonItemCtaInfoProps } from './lesson-item-types';\nimport type { FC } from 'react';\n\nimport { Fragment, memo, useCallback, useMemo } from 'react';\n\nimport Bulb2Icon from '../../../../assets/line-icons/icons/bulb2';\nimport PracticeIcon from '../../../../assets/line-icons/icons/practice';\nimport { IS_CHAPTER_COMPLETED_STATES } from '../../../milestone/create/milestone-create-constants';\nimport ArrowTooltip from '../../../ui/arrow-tooltip/arrow-tooltip';\nimport FlexView from '../../../ui/layout/flex-view';\nimport SheetButton from '../../comps/sheet-button';\nimport { NODE_TYPE, SHEET_STATE } from '../../constants/sheet';\
|
1
|
+
{"version":3,"file":"lesson-item-cta-info.js","sources":["../../../../../src/features/sheets/lessons-list/lesson-item/lesson-item-cta-info.tsx"],"sourcesContent":["import type { TSheetButtonVariant } from '../../comps/sheet-button/types';\nimport type { ISheetDataProps } from '../../sheets-list/sheet-item/sheet-item-types';\nimport type { IGetLessonCtaInfo, ILessonItemCtaInfoProps } from './lesson-item-types';\nimport type { FC } from 'react';\n\nimport { Fragment, memo, useCallback, useMemo } from 'react';\n\nimport Bulb2Icon from '../../../../assets/line-icons/icons/bulb2';\nimport PracticeIcon from '../../../../assets/line-icons/icons/practice';\nimport { IS_CHAPTER_COMPLETED_STATES } from '../../../milestone/create/milestone-create-constants';\nimport ArrowTooltip from '../../../ui/arrow-tooltip/arrow-tooltip';\nimport FlexView from '../../../ui/layout/flex-view';\nimport SheetButton from '../../comps/sheet-button';\nimport { NODE_TYPE, SHEET_STATE } from '../../constants/sheet';\n\nconst { TARGET_PRACTICE, PRACTICE, LEARNING } = NODE_TYPE;\nconst { COMPLETED, IN_PROGRESS } = SHEET_STATE;\n\nconst getLessonCtaInfo: IGetLessonCtaInfo = (state, nodeType, lessonTagType) => {\n const isSheetCompleted =\n state === COMPLETED || IS_CHAPTER_COMPLETED_STATES.some(sheetState => sheetState === state);\n\n if (isSheetCompleted) {\n return {\n state: 'completed',\n renderAs: 'secondary_black',\n };\n }\n\n if (\n (nodeType === PRACTICE || nodeType === TARGET_PRACTICE) &&\n lessonTagType === 'PENDING_TARGET_PRACTICE'\n ) {\n return {\n state: 'overdue',\n renderAs: 'tertiary',\n };\n }\n\n if (state === IN_PROGRESS) {\n return {\n state: 'in_progress',\n renderAs: 'primary',\n };\n }\n\n return undefined;\n};\n\nconst LessonItemCtaInfo: FC<ILessonItemCtaInfoProps> = memo(\n ({ sheetsListData, userType, isLessonDisabled, ...restLessonItemCtaInfoProps }) => {\n const { lessonTagType, onStart, onResume, onReattempt, onReview, onPreview } =\n restLessonItemCtaInfoProps;\n\n const isStudent = useMemo(() => userType === 'STUDENT', [userType]);\n\n const handleOnClick = useCallback(\n (sheetInfo: ISheetDataProps) => {\n const { permissions, node_id: nodeId, user_node_id: userNodeId } = sheetInfo;\n const {\n can_start: canStart,\n can_resume: canResume,\n can_reattempt: canReattempt,\n can_review: canReview,\n can_teacher_review: canTeacherReview,\n } = permissions;\n const canReviewSheet = isStudent ? canReview : canTeacherReview;\n\n if (isStudent) {\n //* Student actions\n\n if (canStart || canResume) {\n if (canStart && typeof onStart === 'function') {\n onStart(nodeId, userNodeId);\n\n return;\n }\n\n if (canResume && typeof onResume === 'function') {\n onResume(nodeId, userNodeId);\n\n return;\n }\n\n throw new Error('No callback is available');\n } else if (canReattempt) {\n if (typeof onReattempt !== 'function') {\n throw new Error('canReattempt must be a function');\n }\n\n onReattempt(nodeId, userNodeId);\n\n return;\n }\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);\n\n return;\n }\n\n if (typeof onPreview !== 'function') {\n throw new Error('onPreview must be a function');\n }\n\n onPreview(sheetInfo);\n\n return;\n },\n [isStudent, onReview, onStart, onPreview, onReattempt, onResume],\n );\n\n return (\n <FlexView $flexDirection=\"row\" $flexGapX={1} $alignItems=\"center\">\n {sheetsListData.map((sheet, idx) => {\n const {\n node_type: nodeType,\n state,\n permissions,\n sheet_statement: sheetStatement,\n } = sheet;\n const {\n can_start: canStart,\n can_resume: canResume,\n can_reattempt: canReattempt,\n can_review: canReview,\n } = permissions;\n const sheetType = nodeType === TARGET_PRACTICE ? PRACTICE : nodeType;\n const isLearningNodeType = nodeType === LEARNING;\n const isSheetLocked = state === 'LOCKED';\n\n const lessonCtaInfo = getLessonCtaInfo(state, nodeType, lessonTagType);\n const { state: lessonCtaState, renderAs } = lessonCtaInfo || {};\n\n const isSheetCompleted =\n state === COMPLETED ||\n IS_CHAPTER_COMPLETED_STATES.some(sheetState => sheetState === state);\n const sheetPermissionDisability =\n !isSheetCompleted && !(canStart || canResume || canReview || canReattempt);\n const disableCta = isStudent && (isLessonDisabled || sheetPermissionDisability);\n const sheetCtaDefaultRenderAs: TSheetButtonVariant =\n isLessonDisabled || (!isStudent && isSheetLocked) ? 'secondary_grey' : 'primary';\n\n return (\n <Fragment key={`${sheetType}__lesson_button__${idx}`}>\n <ArrowTooltip\n renderAs=\"secondary\"\n position=\"bottom\"\n tooltipItem={sheetStatement}\n textVariant=\"ab3\"\n >\n <SheetButton\n renderAs={renderAs ?? sheetCtaDefaultRenderAs}\n label={sheetType}\n Icon={isLearningNodeType ? Bulb2Icon : PracticeIcon}\n onClick={() => handleOnClick(sheet)}\n disabled={disableCta}\n state={lessonCtaState}\n />\n </ArrowTooltip>\n </Fragment>\n );\n })}\n </FlexView>\n );\n },\n);\n\nexport default LessonItemCtaInfo;\n"],"names":["TARGET_PRACTICE","PRACTICE","LEARNING","NODE_TYPE","COMPLETED","IN_PROGRESS","SHEET_STATE","getLessonCtaInfo","state","nodeType","lessonTagType","IS_CHAPTER_COMPLETED_STATES","sheetState","LessonItemCtaInfo","memo","sheetsListData","userType","isLessonDisabled","restLessonItemCtaInfoProps","onStart","onResume","onReattempt","onReview","onPreview","isStudent","useMemo","handleOnClick","useCallback","sheetInfo","permissions","nodeId","userNodeId","canStart","canResume","canReattempt","canReview","canTeacherReview","canReviewSheet","jsx","FlexView","sheet","idx","sheetStatement","sheetType","isLearningNodeType","isSheetLocked","lessonCtaInfo","lessonCtaState","renderAs","sheetPermissionDisability","Fragment","ArrowTooltip","SheetButton","Bulb2Icon","PracticeIcon"],"mappings":"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"}
|
@@ -1,85 +1,84 @@
|
|
1
|
-
import { jsxs as
|
2
|
-
import { memo as
|
3
|
-
import
|
4
|
-
import
|
5
|
-
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
6
|
import A from "../../../ui/arrow-tooltip/arrow-tooltip.js";
|
7
|
-
import
|
8
|
-
import { useUIContext as
|
9
|
-
import
|
10
|
-
import
|
11
|
-
import
|
12
|
-
import { SHEETS_ANALYTICS_EVENTS as
|
13
|
-
import { TEACHER_MENU_OPTIONS as
|
14
|
-
import { isV3Worksheet as h } from "../../utils/is-v3-worksheet.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
|
+
import { SHEETS_ANALYTICS_EVENTS as v } from "../../sheets-analytics-events.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:
|
20
|
+
userType: k,
|
21
|
+
isMilestoneWidget: h,
|
23
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
|
-
analyticsLabel:
|
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,
|
@@ -87,104 +86,104 @@ const { UNASSIGN: x, REDO: N } = me, Me = J(
|
|
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");
|
97
96
|
c({
|
98
|
-
analyticsLabel:
|
97
|
+
analyticsLabel: v.RESOURCE_UNASSIGNED,
|
99
98
|
props: a
|
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(A, { position: "bottom", tooltipItem:
|
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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"}
|