@cuemath/leap 3.0.7-hg2 → 3.0.7
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-v2/comps/node-card/node-menu-options/node-menu-option.js +15 -17
- package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-option.js.map +1 -1
- package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-options.js +3 -3
- package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-options.js.map +1 -1
- package/dist/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.js +112 -98
- package/dist/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.js.map +1 -1
- package/dist/features/chapters-v2/constants/node-constants.js +2 -1
- package/dist/features/chapters-v2/constants/node-constants.js.map +1 -1
- package/dist/features/homework/card-menu-options.js +13 -13
- package/dist/features/homework/card-menu-options.js.map +1 -1
- package/dist/features/homework/homework-card.js +82 -74
- package/dist/features/homework/homework-card.js.map +1 -1
- package/dist/features/homework/styles.js +30 -30
- package/dist/features/homework/styles.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list-container.js +68 -68
- package/dist/features/milestone/milestone-list-container/milestone-list-container.js.map +1 -1
- package/dist/features/ui/lottie-animation/lottie-animation.js +51 -56
- package/dist/features/ui/lottie-animation/lottie-animation.js.map +1 -1
- package/package.json +2 -2
- package/dist/features/homework/card-menu-option.js +0 -28
- package/dist/features/homework/card-menu-option.js.map +0 -1
@@ -1,31 +1,31 @@
|
|
1
|
-
import { jsx as
|
2
|
-
import { h as
|
3
|
-
import { memo as le, useMemo as Se, useState as
|
4
|
-
import { ILLUSTRATIONS as
|
1
|
+
import { jsx as a, jsxs as C, Fragment as re } from "react/jsx-runtime";
|
2
|
+
import { h as ae } from "../../../node_modules/humanize-plus/dist/humanize.js";
|
3
|
+
import { memo as le, useMemo as Se, useState as u, useCallback as me, useEffect as p } from "react";
|
4
|
+
import { ILLUSTRATIONS as Te } from "../../../assets/illustrations/illustrations.js";
|
5
5
|
import { EVENTS as e } from "../../communication/pub-sub/constants.js";
|
6
|
-
import { useInClassActionListener as
|
6
|
+
import { useInClassActionListener as ce } from "../../communication/pub-sub/hooks.js";
|
7
7
|
import { invalidateHomeworks as f } from "../../homework/hw-card-list/api/get-homeworks.js";
|
8
8
|
import de from "../../ui/separator/separator.js";
|
9
|
-
import { invalidateMilestoneResources as
|
10
|
-
import { useGetAllMilestonesdata as
|
11
|
-
import { invalidateTestHelpData as
|
12
|
-
import
|
9
|
+
import { invalidateMilestoneResources as _e } from "./api/get-milestone-resources.js";
|
10
|
+
import { useGetAllMilestonesdata as Ne, invalidateMilestonesData as Ae } from "./api/get-milestones.js";
|
11
|
+
import { invalidateTestHelpData as Me } from "./api/get-tests-list.js";
|
12
|
+
import De from "./filter-milestones.js";
|
13
13
|
import Ie from "./milestone-list/milestone-list.js";
|
14
14
|
import Le from "./milestone-list/milestone-loader/milestone-loader.js";
|
15
|
-
import { ContentWrapper as
|
16
|
-
const
|
17
|
-
|
18
|
-
},
|
19
|
-
({ studentName: d, studentId: l, studentClassroomId: h, ...
|
15
|
+
import { ContentWrapper as Re, LoaderWrapper as Oe } from "./styled.js";
|
16
|
+
const Ce = (d) => {
|
17
|
+
Ae(d);
|
18
|
+
}, ue = le(
|
19
|
+
({ studentName: d, studentId: l, studentClassroomId: h, ...v }) => {
|
20
20
|
const {
|
21
21
|
milestoneType: s,
|
22
|
-
isStudentPresent:
|
23
|
-
isClassOngoing:
|
24
|
-
userType:
|
25
|
-
canCreatePlan:
|
26
|
-
teacherName:
|
22
|
+
isStudentPresent: A,
|
23
|
+
isClassOngoing: P,
|
24
|
+
userType: _,
|
25
|
+
canCreatePlan: U,
|
26
|
+
teacherName: G,
|
27
27
|
parentName: g,
|
28
|
-
courseStream:
|
28
|
+
courseStream: N,
|
29
29
|
activeMilestoneId: F,
|
30
30
|
activeTabId: w,
|
31
31
|
onExpandPastMilestones: V,
|
@@ -48,33 +48,33 @@ const ue = (d) => {
|
|
48
48
|
onTestReview: Z,
|
49
49
|
onTestStart: ee,
|
50
50
|
onWidgetTabSelection: te
|
51
|
-
} =
|
51
|
+
} = v, n = Se(
|
52
52
|
() => ({
|
53
|
-
milestone_state_group: s === "ACTIVE" ?
|
54
|
-
course_stream:
|
53
|
+
milestone_state_group: s === "ACTIVE" ? _ === "TEACHER" ? "LIVE" : "STUDENT_LIVE" : s,
|
54
|
+
course_stream: N,
|
55
55
|
student_id: l
|
56
56
|
}),
|
57
|
-
[s,
|
57
|
+
[s, N, l, _]
|
58
58
|
), {
|
59
59
|
data: o,
|
60
60
|
getAll: m,
|
61
|
-
isStale:
|
61
|
+
isStale: M,
|
62
62
|
isProcessing: S
|
63
|
-
} =
|
64
|
-
(
|
65
|
-
const { searchText: i, selectedBoard:
|
66
|
-
(i ||
|
67
|
-
const
|
68
|
-
const { milestone_name: ne, board: ie, grade:
|
69
|
-
return (i ? ne.toLowerCase().includes(i.toLowerCase()) : !0) && (
|
63
|
+
} = Ne(n), [D, I] = u(), [L, R] = u(!1), oe = me(
|
64
|
+
(T) => {
|
65
|
+
const { searchText: i, selectedBoard: E, selectedGrade: r } = T || {};
|
66
|
+
(i || E || r) && R(!0);
|
67
|
+
const c = o == null ? void 0 : o.filter((t) => {
|
68
|
+
const { milestone_name: ne, board: ie, grade: Ee } = t || {};
|
69
|
+
return (i ? ne.toLowerCase().includes(i.toLowerCase()) : !0) && (E ? ie === E : !0) && (r ? Ee === r : !0);
|
70
70
|
});
|
71
|
-
I(
|
71
|
+
I(c);
|
72
72
|
},
|
73
73
|
[o]
|
74
74
|
), se = () => {
|
75
|
-
|
75
|
+
R(!1), I(void 0);
|
76
76
|
};
|
77
|
-
if (
|
77
|
+
if (ce(
|
78
78
|
{
|
79
79
|
studentClassroomId: h,
|
80
80
|
actions: [
|
@@ -99,56 +99,56 @@ const ue = (d) => {
|
|
99
99
|
[e.PAST_MILESTONE_OUTCOME_ADDED],
|
100
100
|
[e.MILESTONE_TEST_ASSIGNED]
|
101
101
|
],
|
102
|
-
callback: (
|
103
|
-
var
|
104
|
-
const i = (
|
105
|
-
(t) => t.eventName === e.MILESTONE_RESOURCE_ASSIGNED || t.eventName === e.MILESTONE_RESOURCE_UNASSIGNED
|
106
|
-
)) == null ? void 0 :
|
107
|
-
(t) => t.eventName === e.MILESTONE_TEST_ASSIGNED
|
108
|
-
)) == null ? void 0 :
|
102
|
+
callback: (T) => {
|
103
|
+
var r, c;
|
104
|
+
const i = (r = T.find(
|
105
|
+
(t) => t.eventName === e.MILESTONE_RESOURCE_ASSIGNED || t.eventName === e.MILESTONE_RESOURCE_UNASSIGNED || t.eventName === e.MILESTONE_RESOURCE_RESET
|
106
|
+
)) == null ? void 0 : r.eventPayload, E = (c = T.find(
|
107
|
+
(t) => t.eventName === e.MILESTONE_TEST_ASSIGNED || t.eventName === e.MILESTONE_RESOURCE_RESET
|
108
|
+
)) == null ? void 0 : c.eventPayload;
|
109
109
|
if (i) {
|
110
110
|
const { milestoneId: t } = i || {};
|
111
|
-
f(l),
|
111
|
+
f(l), _e(t);
|
112
112
|
}
|
113
|
-
if (
|
114
|
-
const { milestoneId: t } =
|
115
|
-
f(l),
|
113
|
+
if (E) {
|
114
|
+
const { milestoneId: t } = E;
|
115
|
+
f(l), Me(t);
|
116
116
|
}
|
117
|
-
|
117
|
+
Ce(n);
|
118
118
|
}
|
119
119
|
},
|
120
|
-
(s === "ACTIVE" || s === "INACTIVE") &&
|
120
|
+
(s === "ACTIVE" || s === "INACTIVE") && A
|
121
121
|
), p(() => {
|
122
122
|
m(n);
|
123
123
|
}, [m, n]), p(() => {
|
124
|
-
!S &&
|
125
|
-
}, [m, n,
|
126
|
-
return /* @__PURE__ */
|
124
|
+
!S && M && m(n);
|
125
|
+
}, [m, n, M, S]), S && !o)
|
126
|
+
return /* @__PURE__ */ a(Le, { numMilestones: 2 });
|
127
127
|
const O = s === "ACTIVE" && o && o.length > 6;
|
128
|
-
return /* @__PURE__ */
|
129
|
-
S && /* @__PURE__ */
|
130
|
-
O && /* @__PURE__ */
|
131
|
-
/* @__PURE__ */
|
132
|
-
|
128
|
+
return /* @__PURE__ */ C(Re, { $disablePointerEvents: S, children: [
|
129
|
+
S && /* @__PURE__ */ a(Oe, { children: /* @__PURE__ */ a("img", { src: Te.LOADER_1, alt: "loading" }) }),
|
130
|
+
O && /* @__PURE__ */ C(re, { children: [
|
131
|
+
/* @__PURE__ */ a(
|
132
|
+
De,
|
133
133
|
{
|
134
|
-
filteredMilestones:
|
134
|
+
filteredMilestones: D,
|
135
135
|
milestones: o,
|
136
136
|
handleFilterMilestones: oe,
|
137
137
|
handleClearFilter: se
|
138
138
|
}
|
139
139
|
),
|
140
|
-
/* @__PURE__ */
|
140
|
+
/* @__PURE__ */ a(de, { heightX: 1.5 })
|
141
141
|
] }),
|
142
|
-
/* @__PURE__ */
|
142
|
+
/* @__PURE__ */ a(
|
143
143
|
Ie,
|
144
144
|
{
|
145
145
|
showFilters: !!O,
|
146
|
-
canCreatePlan:
|
147
|
-
isClassOngoing:
|
146
|
+
canCreatePlan: U,
|
147
|
+
isClassOngoing: P,
|
148
148
|
isFiltersAdded: L,
|
149
|
-
isStudentPresent:
|
149
|
+
isStudentPresent: A,
|
150
150
|
milestoneType: s,
|
151
|
-
milestones: L ?
|
151
|
+
milestones: L ? D : o,
|
152
152
|
onAddChapter: K,
|
153
153
|
onAddOutcome: x,
|
154
154
|
onChapterClick: b,
|
@@ -172,16 +172,16 @@ const ue = (d) => {
|
|
172
172
|
activeTabId: w,
|
173
173
|
onWidgetTabSelection: te,
|
174
174
|
studentId: l,
|
175
|
-
studentName:
|
176
|
-
teacherName:
|
175
|
+
studentName: ae.titleCase(d),
|
176
|
+
teacherName: G,
|
177
177
|
parentName: g,
|
178
|
-
userType:
|
179
|
-
courseStream:
|
178
|
+
userType: _,
|
179
|
+
courseStream: N
|
180
180
|
}
|
181
181
|
)
|
182
182
|
] });
|
183
183
|
}
|
184
|
-
), je =
|
184
|
+
), je = ue;
|
185
185
|
export {
|
186
186
|
je as default
|
187
187
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"milestone-list-container.js","sources":["../../../../src/features/milestone/milestone-list-container/milestone-list-container.tsx"],"sourcesContent":["import type {\n IMilestoneContainerProps,\n IMilestoneListQueryParams,\n} from './milestone-list-container-types';\nimport type { IMilestoneData } from './milestone-list/milestone-list-types';\n\nimport { titleCase } from 'humanize-plus';\nimport React, { memo, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../assets/illustrations/illustrations';\nimport { EVENTS } from '../../communication/pub-sub/constants';\nimport { useInClassActionListener } from '../../communication/pub-sub/hooks';\nimport { invalidateHomeworks } from '../../homework/hw-card-list/api/get-homeworks';\nimport Separator from '../../ui/separator/separator';\nimport { invalidateMilestoneResources } from './api/get-milestone-resources';\nimport { useGetAllMilestonesdata, invalidateMilestonesData } from './api/get-milestones';\nimport { invalidateTestHelpData } from './api/get-tests-list';\nimport FilterMilestones from './filter-milestones';\nimport MilestoneList from './milestone-list/milestone-list';\nimport MilestoneLoader from './milestone-list/milestone-loader/milestone-loader';\nimport * as Styled from './styled';\n\nconst invalidateAllMilestones = (queryParams: IMilestoneListQueryParams) => {\n invalidateMilestonesData(queryParams);\n};\n\nconst MilestoneListContainer: React.FC<IMilestoneContainerProps> = memo(\n ({ studentName, studentId, studentClassroomId, ...restMilestoneListContainerProps }) => {\n const {\n milestoneType,\n isStudentPresent,\n isClassOngoing,\n userType,\n canCreatePlan,\n teacherName,\n parentName,\n courseStream,\n activeMilestoneId,\n activeTabId,\n onExpandPastMilestones,\n onAddOutcome,\n onChapterClick,\n onEdit,\n onCreateMilestoneTest,\n onDraftPublish,\n onAddChapter,\n onCreatePlan,\n onDelete,\n onAssignResources,\n onNodeAttempt,\n onNodeView,\n onNodeReview,\n onNodeReattempt,\n onNodeReset,\n onNodeUnassign,\n onTestPreview,\n onTestReview,\n onTestStart,\n onWidgetTabSelection,\n } = restMilestoneListContainerProps;\n\n const queryParams: IMilestoneListQueryParams = useMemo(\n () =>\n ({\n milestone_state_group:\n milestoneType === 'ACTIVE'\n ? userType === 'TEACHER'\n ? 'LIVE'\n : 'STUDENT_LIVE'\n : milestoneType,\n course_stream: courseStream,\n student_id: studentId,\n }) as const,\n [milestoneType, courseStream, studentId, userType],\n );\n\n const {\n data: milestoneData,\n getAll: getMilestoneData,\n isStale: isMilestoneDataStale,\n isProcessing: isMilestoneProcessing,\n } = useGetAllMilestonesdata(queryParams);\n\n const [filteredMilestones, setFilteredMilestones] = useState<IMilestoneData[] | undefined>();\n const [isFiltersAdded, setIsFiltersAdded] = useState<boolean>(false);\n\n const handleFilterMilestones = useCallback(\n (data: { searchText?: string; selectedBoard?: string; selectedGrade?: string }) => {\n const { searchText, selectedBoard, selectedGrade } = data || {};\n\n if (searchText || selectedBoard || selectedGrade) {\n setIsFiltersAdded(true);\n }\n\n const filteredData = milestoneData?.filter(item => {\n const { milestone_name: milestoneName, board, grade } = item || {};\n const matchesSearchText = searchText\n ? milestoneName.toLowerCase().includes(searchText.toLowerCase())\n : true;\n const matchesCurriculum = selectedBoard ? board === selectedBoard : true;\n const matchesGrade = selectedGrade ? grade === selectedGrade : true;\n\n return matchesSearchText && matchesCurriculum && matchesGrade;\n });\n\n setFilteredMilestones(filteredData);\n },\n [milestoneData],\n );\n\n const handleClearFilter = () => {\n setIsFiltersAdded(false);\n setFilteredMilestones(undefined);\n };\n\n useInClassActionListener(\n {\n studentClassroomId,\n actions: [\n [EVENTS.CHAPTER_UPDATED],\n [EVENTS.LESSONS_MARKED_AS_FAMILIAR],\n [EVENTS.LESSONS_MARKED_AS_IRRELEVANT],\n [EVENTS.LESSONS_PROGRESS_RESET],\n [EVENTS.UNLOCK_SHEETS],\n [EVENTS.EXTRA_PRACTICE_ASSIGNED],\n [EVENTS.MILESTONE_DATE_UPDATED],\n [EVENTS.MILESTONE_DELETED],\n [EVENTS.MILESTONE_NAME_UPDATED],\n [EVENTS.MILESTONE_EDITED],\n [EVENTS.MILESTONE_RESOURCE_ASSIGNED],\n [EVENTS.MILESTONE_RESOURCE_UNASSIGNED],\n [EVENTS.MILESTONE_RESOURCE_RESET],\n [EVENTS.SHEET_UNASSIGNED],\n [EVENTS.GOAL_CREATED],\n [EVENTS.GOAL_EDITED],\n [EVENTS.GOAL_DELETED],\n [EVENTS.GOAL_OUTCOME_ADDED],\n [EVENTS.PAST_MILESTONE_OUTCOME_ADDED],\n [EVENTS.MILESTONE_TEST_ASSIGNED],\n ],\n callback: messages => {\n const milestoneResourceEventPayload = messages.find(\n message =>\n message.eventName === EVENTS.MILESTONE_RESOURCE_ASSIGNED ||\n message.eventName === EVENTS.MILESTONE_RESOURCE_UNASSIGNED,\n )?.eventPayload;\n const milestoneTestEventPayload = messages.find(\n message => message.eventName === EVENTS.MILESTONE_TEST_ASSIGNED,\n )?.eventPayload;\n\n if (milestoneResourceEventPayload) {\n const { milestoneId: resourceMilestoneId } =\n (milestoneResourceEventPayload as { milestoneId: string }) || {};\n\n invalidateHomeworks(studentId);\n invalidateMilestoneResources(resourceMilestoneId);\n }\n\n if (milestoneTestEventPayload) {\n const { milestoneId } = milestoneTestEventPayload as { milestoneId: string };\n\n invalidateHomeworks(studentId);\n invalidateTestHelpData(milestoneId);\n }\n\n invalidateAllMilestones(queryParams);\n },\n },\n (milestoneType === 'ACTIVE' || milestoneType === 'INACTIVE') && isStudentPresent,\n );\n\n useEffect(() => {\n getMilestoneData(queryParams);\n }, [getMilestoneData, queryParams]);\n\n useEffect(() => {\n if (!isMilestoneProcessing && isMilestoneDataStale) {\n getMilestoneData(queryParams);\n }\n }, [getMilestoneData, queryParams, isMilestoneDataStale, isMilestoneProcessing]);\n\n if (isMilestoneProcessing && !milestoneData) {\n return <MilestoneLoader numMilestones={2} />;\n }\n\n const showFilters = milestoneType === 'ACTIVE' && milestoneData && milestoneData.length > 6;\n\n return (\n <Styled.ContentWrapper $disablePointerEvents={isMilestoneProcessing}>\n {isMilestoneProcessing && (\n <Styled.LoaderWrapper>\n <img src={ILLUSTRATIONS.LOADER_1} alt=\"loading\" />\n </Styled.LoaderWrapper>\n )}\n {showFilters && (\n <>\n <FilterMilestones\n filteredMilestones={filteredMilestones}\n milestones={milestoneData}\n handleFilterMilestones={handleFilterMilestones}\n handleClearFilter={handleClearFilter}\n />\n <Separator heightX={1.5} />\n </>\n )}\n\n <MilestoneList\n showFilters={!!showFilters}\n canCreatePlan={canCreatePlan}\n isClassOngoing={isClassOngoing}\n isFiltersAdded={isFiltersAdded}\n isStudentPresent={isStudentPresent}\n milestoneType={milestoneType}\n milestones={isFiltersAdded ? filteredMilestones : milestoneData}\n onAddChapter={onAddChapter}\n onAddOutcome={onAddOutcome}\n onChapterClick={onChapterClick}\n onCreatePlan={onCreatePlan}\n onDelete={onDelete}\n onDraftPublish={onDraftPublish}\n onEdit={onEdit}\n onExpandPastMilestones={onExpandPastMilestones}\n onCreateMilestoneTest={onCreateMilestoneTest}\n onAssignResources={onAssignResources}\n onTestPreview={onTestPreview}\n onTestReview={onTestReview}\n onTestStart={onTestStart}\n onNodeAttempt={onNodeAttempt}\n onNodeView={onNodeView}\n onNodeReview={onNodeReview}\n onNodeReattempt={onNodeReattempt}\n onNodeReset={onNodeReset}\n onNodeUnassign={onNodeUnassign}\n activeMilestoneId={activeMilestoneId}\n activeTabId={activeTabId}\n onWidgetTabSelection={onWidgetTabSelection}\n studentId={studentId}\n studentName={titleCase(studentName)}\n teacherName={teacherName}\n parentName={parentName}\n userType={userType}\n courseStream={courseStream}\n />\n </Styled.ContentWrapper>\n );\n },\n);\n\nexport default MilestoneListContainer;\n"],"names":["invalidateAllMilestones","queryParams","invalidateMilestonesData","MilestoneListContainer","memo","studentName","studentId","studentClassroomId","restMilestoneListContainerProps","milestoneType","isStudentPresent","isClassOngoing","userType","canCreatePlan","teacherName","parentName","courseStream","activeMilestoneId","activeTabId","onExpandPastMilestones","onAddOutcome","onChapterClick","onEdit","onCreateMilestoneTest","onDraftPublish","onAddChapter","onCreatePlan","onDelete","onAssignResources","onNodeAttempt","onNodeView","onNodeReview","onNodeReattempt","onNodeReset","onNodeUnassign","onTestPreview","onTestReview","onTestStart","onWidgetTabSelection","useMemo","milestoneData","getMilestoneData","isMilestoneDataStale","isMilestoneProcessing","useGetAllMilestonesdata","filteredMilestones","setFilteredMilestones","useState","isFiltersAdded","setIsFiltersAdded","handleFilterMilestones","useCallback","data","searchText","selectedBoard","selectedGrade","filteredData","item","milestoneName","board","grade","handleClearFilter","useInClassActionListener","EVENTS","messages","milestoneResourceEventPayload","_a","message","milestoneTestEventPayload","_b","resourceMilestoneId","invalidateHomeworks","invalidateMilestoneResources","milestoneId","invalidateTestHelpData","useEffect","jsx","MilestoneLoader","showFilters","jsxs","Styled.ContentWrapper","Styled.LoaderWrapper","ILLUSTRATIONS","Fragment","FilterMilestones","Separator","MilestoneList","titleCase","MilestoneListContainer$1"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"milestone-list-container.js","sources":["../../../../src/features/milestone/milestone-list-container/milestone-list-container.tsx"],"sourcesContent":["import type {\n IMilestoneContainerProps,\n IMilestoneListQueryParams,\n} from './milestone-list-container-types';\nimport type { IMilestoneData } from './milestone-list/milestone-list-types';\n\nimport { titleCase } from 'humanize-plus';\nimport React, { memo, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../assets/illustrations/illustrations';\nimport { EVENTS } from '../../communication/pub-sub/constants';\nimport { useInClassActionListener } from '../../communication/pub-sub/hooks';\nimport { invalidateHomeworks } from '../../homework/hw-card-list/api/get-homeworks';\nimport Separator from '../../ui/separator/separator';\nimport { invalidateMilestoneResources } from './api/get-milestone-resources';\nimport { useGetAllMilestonesdata, invalidateMilestonesData } from './api/get-milestones';\nimport { invalidateTestHelpData } from './api/get-tests-list';\nimport FilterMilestones from './filter-milestones';\nimport MilestoneList from './milestone-list/milestone-list';\nimport MilestoneLoader from './milestone-list/milestone-loader/milestone-loader';\nimport * as Styled from './styled';\n\nconst invalidateAllMilestones = (queryParams: IMilestoneListQueryParams) => {\n invalidateMilestonesData(queryParams);\n};\n\nconst MilestoneListContainer: React.FC<IMilestoneContainerProps> = memo(\n ({ studentName, studentId, studentClassroomId, ...restMilestoneListContainerProps }) => {\n const {\n milestoneType,\n isStudentPresent,\n isClassOngoing,\n userType,\n canCreatePlan,\n teacherName,\n parentName,\n courseStream,\n activeMilestoneId,\n activeTabId,\n onExpandPastMilestones,\n onAddOutcome,\n onChapterClick,\n onEdit,\n onCreateMilestoneTest,\n onDraftPublish,\n onAddChapter,\n onCreatePlan,\n onDelete,\n onAssignResources,\n onNodeAttempt,\n onNodeView,\n onNodeReview,\n onNodeReattempt,\n onNodeReset,\n onNodeUnassign,\n onTestPreview,\n onTestReview,\n onTestStart,\n onWidgetTabSelection,\n } = restMilestoneListContainerProps;\n\n const queryParams: IMilestoneListQueryParams = useMemo(\n () =>\n ({\n milestone_state_group:\n milestoneType === 'ACTIVE'\n ? userType === 'TEACHER'\n ? 'LIVE'\n : 'STUDENT_LIVE'\n : milestoneType,\n course_stream: courseStream,\n student_id: studentId,\n }) as const,\n [milestoneType, courseStream, studentId, userType],\n );\n\n const {\n data: milestoneData,\n getAll: getMilestoneData,\n isStale: isMilestoneDataStale,\n isProcessing: isMilestoneProcessing,\n } = useGetAllMilestonesdata(queryParams);\n\n const [filteredMilestones, setFilteredMilestones] = useState<IMilestoneData[] | undefined>();\n const [isFiltersAdded, setIsFiltersAdded] = useState<boolean>(false);\n\n const handleFilterMilestones = useCallback(\n (data: { searchText?: string; selectedBoard?: string; selectedGrade?: string }) => {\n const { searchText, selectedBoard, selectedGrade } = data || {};\n\n if (searchText || selectedBoard || selectedGrade) {\n setIsFiltersAdded(true);\n }\n\n const filteredData = milestoneData?.filter(item => {\n const { milestone_name: milestoneName, board, grade } = item || {};\n const matchesSearchText = searchText\n ? milestoneName.toLowerCase().includes(searchText.toLowerCase())\n : true;\n const matchesCurriculum = selectedBoard ? board === selectedBoard : true;\n const matchesGrade = selectedGrade ? grade === selectedGrade : true;\n\n return matchesSearchText && matchesCurriculum && matchesGrade;\n });\n\n setFilteredMilestones(filteredData);\n },\n [milestoneData],\n );\n\n const handleClearFilter = () => {\n setIsFiltersAdded(false);\n setFilteredMilestones(undefined);\n };\n\n useInClassActionListener(\n {\n studentClassroomId,\n actions: [\n [EVENTS.CHAPTER_UPDATED],\n [EVENTS.LESSONS_MARKED_AS_FAMILIAR],\n [EVENTS.LESSONS_MARKED_AS_IRRELEVANT],\n [EVENTS.LESSONS_PROGRESS_RESET],\n [EVENTS.UNLOCK_SHEETS],\n [EVENTS.EXTRA_PRACTICE_ASSIGNED],\n [EVENTS.MILESTONE_DATE_UPDATED],\n [EVENTS.MILESTONE_DELETED],\n [EVENTS.MILESTONE_NAME_UPDATED],\n [EVENTS.MILESTONE_EDITED],\n [EVENTS.MILESTONE_RESOURCE_ASSIGNED],\n [EVENTS.MILESTONE_RESOURCE_UNASSIGNED],\n [EVENTS.MILESTONE_RESOURCE_RESET],\n [EVENTS.SHEET_UNASSIGNED],\n [EVENTS.GOAL_CREATED],\n [EVENTS.GOAL_EDITED],\n [EVENTS.GOAL_DELETED],\n [EVENTS.GOAL_OUTCOME_ADDED],\n [EVENTS.PAST_MILESTONE_OUTCOME_ADDED],\n [EVENTS.MILESTONE_TEST_ASSIGNED],\n ],\n callback: messages => {\n const milestoneResourceEventPayload = messages.find(\n message =>\n message.eventName === EVENTS.MILESTONE_RESOURCE_ASSIGNED ||\n message.eventName === EVENTS.MILESTONE_RESOURCE_UNASSIGNED ||\n message.eventName === EVENTS.MILESTONE_RESOURCE_RESET,\n )?.eventPayload;\n const milestoneTestEventPayload = messages.find(\n message =>\n message.eventName === EVENTS.MILESTONE_TEST_ASSIGNED ||\n message.eventName === EVENTS.MILESTONE_RESOURCE_RESET,\n )?.eventPayload;\n\n if (milestoneResourceEventPayload) {\n const { milestoneId: resourceMilestoneId } =\n (milestoneResourceEventPayload as { milestoneId: string }) || {};\n\n invalidateHomeworks(studentId);\n invalidateMilestoneResources(resourceMilestoneId);\n }\n\n if (milestoneTestEventPayload) {\n const { milestoneId } = milestoneTestEventPayload as { milestoneId: string };\n\n invalidateHomeworks(studentId);\n invalidateTestHelpData(milestoneId);\n }\n\n invalidateAllMilestones(queryParams);\n },\n },\n (milestoneType === 'ACTIVE' || milestoneType === 'INACTIVE') && isStudentPresent,\n );\n\n useEffect(() => {\n getMilestoneData(queryParams);\n }, [getMilestoneData, queryParams]);\n\n useEffect(() => {\n if (!isMilestoneProcessing && isMilestoneDataStale) {\n getMilestoneData(queryParams);\n }\n }, [getMilestoneData, queryParams, isMilestoneDataStale, isMilestoneProcessing]);\n\n if (isMilestoneProcessing && !milestoneData) {\n return <MilestoneLoader numMilestones={2} />;\n }\n\n const showFilters = milestoneType === 'ACTIVE' && milestoneData && milestoneData.length > 6;\n\n return (\n <Styled.ContentWrapper $disablePointerEvents={isMilestoneProcessing}>\n {isMilestoneProcessing && (\n <Styled.LoaderWrapper>\n <img src={ILLUSTRATIONS.LOADER_1} alt=\"loading\" />\n </Styled.LoaderWrapper>\n )}\n {showFilters && (\n <>\n <FilterMilestones\n filteredMilestones={filteredMilestones}\n milestones={milestoneData}\n handleFilterMilestones={handleFilterMilestones}\n handleClearFilter={handleClearFilter}\n />\n <Separator heightX={1.5} />\n </>\n )}\n\n <MilestoneList\n showFilters={!!showFilters}\n canCreatePlan={canCreatePlan}\n isClassOngoing={isClassOngoing}\n isFiltersAdded={isFiltersAdded}\n isStudentPresent={isStudentPresent}\n milestoneType={milestoneType}\n milestones={isFiltersAdded ? filteredMilestones : milestoneData}\n onAddChapter={onAddChapter}\n onAddOutcome={onAddOutcome}\n onChapterClick={onChapterClick}\n onCreatePlan={onCreatePlan}\n onDelete={onDelete}\n onDraftPublish={onDraftPublish}\n onEdit={onEdit}\n onExpandPastMilestones={onExpandPastMilestones}\n onCreateMilestoneTest={onCreateMilestoneTest}\n onAssignResources={onAssignResources}\n onTestPreview={onTestPreview}\n onTestReview={onTestReview}\n onTestStart={onTestStart}\n onNodeAttempt={onNodeAttempt}\n onNodeView={onNodeView}\n onNodeReview={onNodeReview}\n onNodeReattempt={onNodeReattempt}\n onNodeReset={onNodeReset}\n onNodeUnassign={onNodeUnassign}\n activeMilestoneId={activeMilestoneId}\n activeTabId={activeTabId}\n onWidgetTabSelection={onWidgetTabSelection}\n studentId={studentId}\n studentName={titleCase(studentName)}\n teacherName={teacherName}\n parentName={parentName}\n userType={userType}\n courseStream={courseStream}\n />\n </Styled.ContentWrapper>\n );\n },\n);\n\nexport default MilestoneListContainer;\n"],"names":["invalidateAllMilestones","queryParams","invalidateMilestonesData","MilestoneListContainer","memo","studentName","studentId","studentClassroomId","restMilestoneListContainerProps","milestoneType","isStudentPresent","isClassOngoing","userType","canCreatePlan","teacherName","parentName","courseStream","activeMilestoneId","activeTabId","onExpandPastMilestones","onAddOutcome","onChapterClick","onEdit","onCreateMilestoneTest","onDraftPublish","onAddChapter","onCreatePlan","onDelete","onAssignResources","onNodeAttempt","onNodeView","onNodeReview","onNodeReattempt","onNodeReset","onNodeUnassign","onTestPreview","onTestReview","onTestStart","onWidgetTabSelection","useMemo","milestoneData","getMilestoneData","isMilestoneDataStale","isMilestoneProcessing","useGetAllMilestonesdata","filteredMilestones","setFilteredMilestones","useState","isFiltersAdded","setIsFiltersAdded","handleFilterMilestones","useCallback","data","searchText","selectedBoard","selectedGrade","filteredData","item","milestoneName","board","grade","handleClearFilter","useInClassActionListener","EVENTS","messages","milestoneResourceEventPayload","_a","message","milestoneTestEventPayload","_b","resourceMilestoneId","invalidateHomeworks","invalidateMilestoneResources","milestoneId","invalidateTestHelpData","useEffect","jsx","MilestoneLoader","showFilters","jsxs","Styled.ContentWrapper","Styled.LoaderWrapper","ILLUSTRATIONS","Fragment","FilterMilestones","Separator","MilestoneList","titleCase","MilestoneListContainer$1"],"mappings":"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"}
|
@@ -1,79 +1,74 @@
|
|
1
1
|
import { jsx as E } from "react/jsx-runtime";
|
2
2
|
import g from "lottie-web";
|
3
|
-
import { memo as
|
4
|
-
import
|
5
|
-
import { fetchLottie as
|
6
|
-
const
|
3
|
+
import { memo as y, forwardRef as b, useRef as m, useMemo as A, useImperativeHandle as I, useEffect as $ } from "react";
|
4
|
+
import x from "../layout/flex-view.js";
|
5
|
+
import { fetchLottie as O } from "./helper.js";
|
6
|
+
const S = b((v, L) => {
|
7
7
|
const {
|
8
8
|
src: l,
|
9
|
-
width:
|
10
|
-
height:
|
11
|
-
settings:
|
12
|
-
eventListener:
|
13
|
-
onRender:
|
9
|
+
width: h = "100%",
|
10
|
+
height: w = "100%",
|
11
|
+
settings: o,
|
12
|
+
eventListener: i,
|
13
|
+
onRender: c,
|
14
14
|
animateOnIntersect: s
|
15
|
-
} =
|
15
|
+
} = v, a = m(null), e = m(null), u = m(null), f = A(
|
16
16
|
() => ({
|
17
|
-
...
|
18
|
-
renderer: window.ReactNativeWebView ? "
|
17
|
+
...o,
|
18
|
+
renderer: window.ReactNativeWebView ? "svg" : (o == null ? void 0 : o.renderer) ?? "svg"
|
19
19
|
}),
|
20
|
-
[
|
20
|
+
[o]
|
21
21
|
);
|
22
|
-
return
|
23
|
-
|
22
|
+
return I(
|
23
|
+
L,
|
24
24
|
() => ({
|
25
|
-
playSegments: (t,
|
26
|
-
var
|
27
|
-
return (
|
25
|
+
playSegments: (t, r) => {
|
26
|
+
var n;
|
27
|
+
return (n = e.current) == null ? void 0 : n.playSegments(t, r);
|
28
28
|
},
|
29
|
-
addEventListener: (t,
|
30
|
-
var
|
31
|
-
return (
|
29
|
+
addEventListener: (t, r) => {
|
30
|
+
var n;
|
31
|
+
return (n = e.current) == null ? void 0 : n.addEventListener(t, r);
|
32
32
|
},
|
33
|
-
removeEventListener: (t,
|
34
|
-
var
|
35
|
-
return (
|
33
|
+
removeEventListener: (t, r) => {
|
34
|
+
var n;
|
35
|
+
return (n = e.current) == null ? void 0 : n.removeEventListener(t, r);
|
36
36
|
},
|
37
37
|
play: () => {
|
38
38
|
var t;
|
39
|
-
return (t =
|
39
|
+
return (t = e.current) == null ? void 0 : t.play();
|
40
40
|
},
|
41
41
|
stop: () => {
|
42
42
|
var t;
|
43
|
-
return (t =
|
43
|
+
return (t = e.current) == null ? void 0 : t.stop();
|
44
44
|
}
|
45
45
|
}),
|
46
46
|
[]
|
47
|
-
),
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
var e;
|
72
|
-
t = !0, r.current && (n && r.current.removeEventListener(n.name, n.callback), s && ((e = u.current) == null || e.disconnect()), r.current.destroy());
|
73
|
-
};
|
74
|
-
}, [l, n, a, s, d]), /* @__PURE__ */ E(S, { ref: c, $width: w, $height: y });
|
75
|
-
}), D = b(k);
|
47
|
+
), $(() => ((async () => {
|
48
|
+
try {
|
49
|
+
const r = await O(l);
|
50
|
+
a.current && (e.current = g.loadAnimation({
|
51
|
+
container: a.current,
|
52
|
+
animationData: r,
|
53
|
+
loop: !0,
|
54
|
+
autoplay: !0,
|
55
|
+
...f
|
56
|
+
}), s && (u.current = new IntersectionObserver(
|
57
|
+
([n]) => {
|
58
|
+
var d, p;
|
59
|
+
n && n.isIntersecting ? (d = e.current) == null || d.play() : (p = e.current) == null || p.pause();
|
60
|
+
},
|
61
|
+
{ threshold: 0 }
|
62
|
+
), a.current && u.current.observe(a.current)), c == null || c(), i && e.current.addEventListener(i.name, i.callback));
|
63
|
+
} catch (r) {
|
64
|
+
throw Error(`Error loading Lottie animation: ${r}`);
|
65
|
+
}
|
66
|
+
})(), () => {
|
67
|
+
var r;
|
68
|
+
e.current && (i && e.current.removeEventListener(i.name, i.callback), s && ((r = u.current) == null || r.disconnect()), e.current.destroy());
|
69
|
+
}), [l, i, c, s, f]), /* @__PURE__ */ E(x, { ref: a, $width: h, $height: w });
|
70
|
+
}), F = y(S);
|
76
71
|
export {
|
77
|
-
|
72
|
+
F as default
|
78
73
|
};
|
79
74
|
//# sourceMappingURL=lottie-animation.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"lottie-animation.js","sources":["../../../../src/features/ui/lottie-animation/lottie-animation.tsx"],"sourcesContent":["import type { ILottieAnimationProps, ILottieAnimationRef } from './types';\nimport type { AnimationEventName, AnimationItem, AnimationSegment, RendererType } from 'lottie-web';\n\nimport lottie from 'lottie-web';\nimport { forwardRef, memo, useEffect, useImperativeHandle, useMemo, useRef } from 'react';\n\nimport FlexView from '../layout/flex-view';\nimport { fetchLottie } from './helper';\n\nconst LottieAnimation = forwardRef<ILottieAnimationRef, ILottieAnimationProps>((props, ref) => {\n const {\n src,\n width = '100%',\n height = '100%',\n settings,\n eventListener,\n onRender,\n animateOnIntersect,\n } = props;\n\n const container = useRef<HTMLDivElement>(null);\n const animationInstance = useRef<AnimationItem | null>(null);\n const intersectionObserver = useRef<IntersectionObserver | null>(null);\n const newSettings = useMemo(\n () => ({\n ...settings,\n renderer: (window.ReactNativeWebView ? '
|
1
|
+
{"version":3,"file":"lottie-animation.js","sources":["../../../../src/features/ui/lottie-animation/lottie-animation.tsx"],"sourcesContent":["import type { ILottieAnimationProps, ILottieAnimationRef } from './types';\nimport type { AnimationEventName, AnimationItem, AnimationSegment, RendererType } from 'lottie-web';\n\nimport lottie from 'lottie-web';\nimport { forwardRef, memo, useEffect, useImperativeHandle, useMemo, useRef } from 'react';\n\nimport FlexView from '../layout/flex-view';\nimport { fetchLottie } from './helper';\n\nconst LottieAnimation = forwardRef<ILottieAnimationRef, ILottieAnimationProps>((props, ref) => {\n const {\n src,\n width = '100%',\n height = '100%',\n settings,\n eventListener,\n onRender,\n animateOnIntersect,\n } = props;\n\n const container = useRef<HTMLDivElement>(null);\n const animationInstance = useRef<AnimationItem | null>(null);\n const intersectionObserver = useRef<IntersectionObserver | null>(null);\n const newSettings = useMemo(\n () => ({\n ...settings,\n renderer: (window.ReactNativeWebView ? 'svg' : settings?.renderer ?? 'svg') as RendererType,\n }),\n [settings],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n playSegments: (segments: AnimationSegment, forceFlag?: boolean) =>\n animationInstance.current?.playSegments(segments, forceFlag),\n addEventListener: (eventName: string, callback: () => void) =>\n animationInstance.current?.addEventListener(eventName as AnimationEventName, callback),\n removeEventListener: (eventName: string, callback: () => void) =>\n animationInstance.current?.removeEventListener(eventName as AnimationEventName, callback),\n play: () => animationInstance.current?.play(),\n stop: () => animationInstance.current?.stop(),\n }),\n [],\n );\n\n useEffect(() => {\n const loadAnimation = async () => {\n try {\n const animationData = await fetchLottie(src);\n\n if (container.current) {\n animationInstance.current = lottie.loadAnimation({\n container: container.current,\n animationData,\n loop: true,\n autoplay: true,\n ...newSettings,\n });\n\n if (animateOnIntersect) {\n intersectionObserver.current = new IntersectionObserver(\n ([entry]) => {\n if (entry && entry.isIntersecting) {\n animationInstance.current?.play();\n } else {\n animationInstance.current?.pause();\n }\n },\n { threshold: 0 },\n );\n\n if (container.current) {\n intersectionObserver.current.observe(container.current);\n }\n }\n\n onRender?.();\n if (eventListener) {\n animationInstance.current.addEventListener(eventListener.name, eventListener.callback);\n }\n }\n } catch (error) {\n throw Error(`Error loading Lottie animation: ${error}`);\n }\n };\n\n loadAnimation();\n\n return () => {\n if (animationInstance.current) {\n if (eventListener) {\n animationInstance.current.removeEventListener(eventListener.name, eventListener.callback);\n }\n\n if (animateOnIntersect) {\n intersectionObserver.current?.disconnect();\n }\n animationInstance.current.destroy();\n }\n };\n }, [src, eventListener, onRender, animateOnIntersect, newSettings]);\n\n return <FlexView ref={container} $width={width} $height={height} />;\n});\n\nexport default memo(LottieAnimation);\n"],"names":["LottieAnimation","forwardRef","props","ref","src","width","height","settings","eventListener","onRender","animateOnIntersect","container","useRef","animationInstance","intersectionObserver","newSettings","useMemo","useImperativeHandle","segments","forceFlag","_a","eventName","callback","useEffect","animationData","fetchLottie","lottie","entry","_b","error","FlexView","LottieAnimation$1","memo"],"mappings":";;;;;AASA,MAAMA,IAAkBC,EAAuD,CAACC,GAAOC,MAAQ;AACvF,QAAA;AAAA,IACJ,KAAAC;AAAA,IACA,OAAAC,IAAQ;AAAA,IACR,QAAAC,IAAS;AAAA,IACT,UAAAC;AAAA,IACA,eAAAC;AAAA,IACA,UAAAC;AAAA,IACA,oBAAAC;AAAA,EACE,IAAAR,GAEES,IAAYC,EAAuB,IAAI,GACvCC,IAAoBD,EAA6B,IAAI,GACrDE,IAAuBF,EAAoC,IAAI,GAC/DG,IAAcC;AAAA,IAClB,OAAO;AAAA,MACL,GAAGT;AAAA,MACH,UAAW,OAAO,qBAAqB,SAAQA,KAAA,gBAAAA,EAAU,aAAY;AAAA,IAAA;AAAA,IAEvE,CAACA,CAAQ;AAAA,EAAA;AAGX,SAAAU;AAAA,IACEd;AAAA,IACA,OAAO;AAAA,MACL,cAAc,CAACe,GAA4BC,MACzC;;AAAA,gBAAAC,IAAAP,EAAkB,YAAlB,gBAAAO,EAA2B,aAAaF,GAAUC;AAAA;AAAA,MACpD,kBAAkB,CAACE,GAAmBC,MACpC;;AAAA,gBAAAF,IAAAP,EAAkB,YAAlB,gBAAAO,EAA2B,iBAAiBC,GAAiCC;AAAA;AAAA,MAC/E,qBAAqB,CAACD,GAAmBC,MACvC;;AAAA,gBAAAF,IAAAP,EAAkB,YAAlB,gBAAAO,EAA2B,oBAAoBC,GAAiCC;AAAA;AAAA,MAClF,MAAM,MAAM;;AAAA,gBAAAF,IAAAP,EAAkB,YAAlB,gBAAAO,EAA2B;AAAA;AAAA,MACvC,MAAM,MAAM;;AAAA,gBAAAA,IAAAP,EAAkB,YAAlB,gBAAAO,EAA2B;AAAA;AAAA,IAAK;AAAA,IAE9C,CAAC;AAAA,EAAA,GAGHG,EAAU,QACc,YAAY;AAC5B,QAAA;AACI,YAAAC,IAAgB,MAAMC,EAAYrB,CAAG;AAE3C,MAAIO,EAAU,YACME,EAAA,UAAUa,EAAO,cAAc;AAAA,QAC/C,WAAWf,EAAU;AAAA,QACrB,eAAAa;AAAA,QACA,MAAM;AAAA,QACN,UAAU;AAAA,QACV,GAAGT;AAAA,MAAA,CACJ,GAEGL,MACFI,EAAqB,UAAU,IAAI;AAAA,QACjC,CAAC,CAACa,CAAK,MAAM;;AACP,UAAAA,KAASA,EAAM,kBACjBP,IAAAP,EAAkB,YAAlB,QAAAO,EAA2B,UAE3BQ,IAAAf,EAAkB,YAAlB,QAAAe,EAA2B;AAAA,QAE/B;AAAA,QACA,EAAE,WAAW,EAAE;AAAA,MAAA,GAGbjB,EAAU,WACSG,EAAA,QAAQ,QAAQH,EAAU,OAAO,IAI/CF,KAAA,QAAAA,KACPD,KACFK,EAAkB,QAAQ,iBAAiBL,EAAc,MAAMA,EAAc,QAAQ;AAAA,aAGlFqB,GAAO;AACR,YAAA,MAAM,mCAAmCA,CAAK,EAAE;AAAA,IACxD;AAAA,EAAA,MAKK,MAAM;;AACX,IAAIhB,EAAkB,YAChBL,KACFK,EAAkB,QAAQ,oBAAoBL,EAAc,MAAMA,EAAc,QAAQ,GAGtFE,OACFU,IAAAN,EAAqB,YAArB,QAAAM,EAA8B,eAEhCP,EAAkB,QAAQ;EAC5B,IAED,CAACT,GAAKI,GAAeC,GAAUC,GAAoBK,CAAW,CAAC,qBAE1De,GAAS,EAAA,KAAKnB,GAAW,QAAQN,GAAO,SAASC,EAAQ,CAAA;AACnE,CAAC,GAEcyB,IAAAC,EAAKhC,CAAe;"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@cuemath/leap",
|
3
|
-
"version": "3.0.7
|
3
|
+
"version": "3.0.7",
|
4
4
|
"type": "module",
|
5
5
|
"files": [
|
6
6
|
"dist"
|
@@ -94,5 +94,5 @@
|
|
94
94
|
"vite-plugin-svgr": "3.2.0",
|
95
95
|
"vite-tsconfig-paths": "^4.2.2"
|
96
96
|
},
|
97
|
-
"packageManager": "yarn@
|
97
|
+
"packageManager": "yarn@4.4.1"
|
98
98
|
}
|
@@ -1,28 +0,0 @@
|
|
1
|
-
import { jsx as i, jsxs as c } from "react/jsx-runtime";
|
2
|
-
import { memo as d, useCallback as p } from "react";
|
3
|
-
import s from "../ui/buttons/clickable/clickable.js";
|
4
|
-
import { CardOptionWrapper as m, OptionText as $ } from "./styles.js";
|
5
|
-
const C = d((l) => {
|
6
|
-
const { icon: t, label: n, id: e, onClick: r, disabled: o } = l, a = p(() => o ? null : r(e), [o, e, r]);
|
7
|
-
return /* @__PURE__ */ i(s, { onClick: a, label: e, children: /* @__PURE__ */ c(
|
8
|
-
m,
|
9
|
-
{
|
10
|
-
$flexDirection: "row",
|
11
|
-
$alignItems: "center",
|
12
|
-
$flexGap: 8,
|
13
|
-
$gapX: 0.5,
|
14
|
-
$gutterX: 1,
|
15
|
-
$opacity: o ? 0.5 : 1,
|
16
|
-
$disabled: o,
|
17
|
-
children: [
|
18
|
-
/* @__PURE__ */ i(t, { width: 20, height: 20 }),
|
19
|
-
/* @__PURE__ */ i($, { $renderAs: "ub3", $color: "WHITE", children: n })
|
20
|
-
]
|
21
|
-
},
|
22
|
-
e
|
23
|
-
) }, e);
|
24
|
-
});
|
25
|
-
export {
|
26
|
-
C as default
|
27
|
-
};
|
28
|
-
//# sourceMappingURL=card-menu-option.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"card-menu-option.js","sources":["../../../src/features/homework/card-menu-option.tsx"],"sourcesContent":["import type { ICardMenuOption } from './card-menu-options';\n\nimport { memo, useCallback } from 'react';\n\nimport Clickable from '../ui/buttons/clickable/clickable';\nimport * as Styled from './styles';\n\nconst CardMenuOption = memo((option: ICardMenuOption) => {\n const { icon: OptionIcon, label, id, onClick, disabled } = option;\n\n const handleClick = useCallback(() => (!disabled ? onClick(id) : null), [disabled, id, onClick]);\n\n return (\n <Clickable onClick={handleClick} label={id} key={id}>\n <Styled.CardOptionWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $flexGap={8}\n $gapX={0.5}\n $gutterX={1}\n $opacity={disabled ? 0.5 : 1}\n $disabled={disabled}\n key={id}\n >\n <OptionIcon width={20} height={20} />\n <Styled.OptionText $renderAs=\"ub3\" $color=\"WHITE\">\n {label}\n </Styled.OptionText>\n </Styled.CardOptionWrapper>\n </Clickable>\n );\n});\n\nexport default CardMenuOption;\n"],"names":["CardMenuOption","memo","option","OptionIcon","label","id","onClick","disabled","handleClick","useCallback","jsx","Clickable","jsxs","Styled.CardOptionWrapper","Styled.OptionText"],"mappings":";;;;AAOM,MAAAA,IAAiBC,EAAK,CAACC,MAA4B;AACvD,QAAM,EAAE,MAAMC,GAAY,OAAAC,GAAO,IAAAC,GAAI,SAAAC,GAAS,UAAAC,EAAa,IAAAL,GAErDM,IAAcC,EAAY,MAAQF,IAAyB,OAAdD,EAAQD,CAAE,GAAW,CAACE,GAAUF,GAAIC,CAAO,CAAC;AAE/F,SACG,gBAAAI,EAAAC,GAAA,EAAU,SAASH,GAAa,OAAOH,GACtC,UAAA,gBAAAO;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,gBAAe;AAAA,MACf,aAAY;AAAA,MACZ,UAAU;AAAA,MACV,OAAO;AAAA,MACP,UAAU;AAAA,MACV,UAAUN,IAAW,MAAM;AAAA,MAC3B,WAAWA;AAAA,MAGX,UAAA;AAAA,QAAA,gBAAAG,EAACP,GAAW,EAAA,OAAO,IAAI,QAAQ,IAAI;AAAA,QACnC,gBAAAO,EAACI,GAAA,EAAkB,WAAU,OAAM,QAAO,SACvC,UACHV,GAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IALKC;AAAA,EAAA,KATwCA,CAgBjD;AAEJ,CAAC;"}
|