@cuemath/leap 2.8.35-beta-0.2 → 2.8.35-beta-0.3
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.
@@ -1,124 +1,127 @@
|
|
1
|
-
import { jsx as s, jsxs as
|
2
|
-
import { h as
|
3
|
-
import { memo as
|
4
|
-
import
|
5
|
-
import
|
6
|
-
import { useUIContext as
|
7
|
-
import
|
8
|
-
import
|
9
|
-
import
|
10
|
-
import
|
11
|
-
import { useGetSearchResource as
|
12
|
-
import { usePostMilestoneResource as
|
13
|
-
import { usePostLPARResource as
|
14
|
-
import { RESOURCE_ASSIGN_ANALYTICS_EVENTS as
|
15
|
-
import
|
16
|
-
import { SearchContainer as
|
17
|
-
import { checkIfFiltersAreAdded as
|
18
|
-
const
|
1
|
+
import { jsx as s, jsxs as f } from "react/jsx-runtime";
|
2
|
+
import { h as ee } from "../../../../node_modules/humanize-plus/dist/humanize.js";
|
3
|
+
import { memo as re, useState as l, useCallback as d, useEffect as I } from "react";
|
4
|
+
import se from "../../../../assets/line-icons/icons/back2.js";
|
5
|
+
import te from "../../../ui/buttons/button/button.js";
|
6
|
+
import { useUIContext as oe } from "../../../ui/context/context.js";
|
7
|
+
import ne from "../../../ui/inputs/searchable-input/searchable-input.js";
|
8
|
+
import m from "../../../ui/layout/flex-view.js";
|
9
|
+
import ie from "../../../ui/text/text.js";
|
10
|
+
import ae from "./added-resource-and-filters.js";
|
11
|
+
import { useGetSearchResource as ce } from "./api/get-resource.js";
|
12
|
+
import { usePostMilestoneResource as le } from "./api/goal-resource-assign.js";
|
13
|
+
import { usePostLPARResource as de } from "./api/lpar-resource-assign.js";
|
14
|
+
import { RESOURCE_ASSIGN_ANALYTICS_EVENTS as me } from "./resource-assign-analytics-events.js";
|
15
|
+
import ue from "./resource-items/resource-items.js";
|
16
|
+
import { SearchContainer as pe, HeaderWrapper as he, LoaderWrapper as ge } from "./resources-assign-styled.js";
|
17
|
+
import { checkIfFiltersAreAdded as k } from "./utils.js";
|
18
|
+
const fe = re((U) => {
|
19
19
|
const {
|
20
|
-
studentId:
|
21
|
-
stream:
|
22
|
-
onResourceAssign:
|
23
|
-
onError:
|
24
|
-
onExitResourceAssign:
|
25
|
-
onViewResource:
|
26
|
-
userMilestoneId:
|
27
|
-
programId:
|
28
|
-
} =
|
29
|
-
stream:
|
30
|
-
page:
|
20
|
+
studentId: R,
|
21
|
+
stream: D,
|
22
|
+
onResourceAssign: E,
|
23
|
+
onError: $,
|
24
|
+
onExitResourceAssign: F,
|
25
|
+
onViewResource: C,
|
26
|
+
userMilestoneId: u,
|
27
|
+
programId: p
|
28
|
+
} = U, { onEvent: P } = oe(), [h, L] = l(1), [g, N] = l(""), [n, y] = l({
|
29
|
+
stream: D,
|
30
|
+
page: h,
|
31
31
|
per_page: 50,
|
32
|
-
user_id:
|
33
|
-
user_milestone_id:
|
34
|
-
program_id:
|
35
|
-
}), [
|
32
|
+
user_id: R,
|
33
|
+
user_milestone_id: u,
|
34
|
+
program_id: p
|
35
|
+
}), [A, V] = l([]), [t, x] = l([]), b = d(
|
36
36
|
(e) => {
|
37
37
|
if (e)
|
38
|
-
|
38
|
+
$(e);
|
39
39
|
else {
|
40
|
-
const r = `${
|
41
|
-
|
40
|
+
const r = `${ee.pluralize(t.length, "Resource")} ${t.length > 1 ? "have" : "has"} been assigned`;
|
41
|
+
E(r);
|
42
42
|
}
|
43
43
|
},
|
44
|
-
[
|
44
|
+
[$, E, t]
|
45
45
|
), {
|
46
|
-
get:
|
46
|
+
get: S,
|
47
47
|
data: i,
|
48
|
-
isProcessing:
|
49
|
-
isProcessingFailed:
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
48
|
+
isProcessing: _,
|
49
|
+
isProcessingFailed: j,
|
50
|
+
isStale: O
|
51
|
+
} = ce(), { post: T, isProcessing: z } = le({
|
52
|
+
onComplete: b
|
53
|
+
}), { post: w, isProcessing: G } = de({
|
54
|
+
onComplete: b
|
55
|
+
}), H = (e) => {
|
56
|
+
y((r) => ({ ...r, ...e }));
|
57
|
+
}, v = d(
|
57
58
|
(e, r) => {
|
58
59
|
if (e === "select") {
|
59
|
-
const o =
|
60
|
-
o &&
|
60
|
+
const o = A.find((c) => c.node_id === r);
|
61
|
+
o && x((c) => [...c, o]);
|
61
62
|
} else
|
62
|
-
|
63
|
-
(o) => o.filter((
|
63
|
+
x(
|
64
|
+
(o) => o.filter((c) => c.node_id !== r)
|
64
65
|
);
|
65
66
|
},
|
66
|
-
[
|
67
|
-
),
|
68
|
-
|
67
|
+
[A]
|
68
|
+
), M = (e) => {
|
69
|
+
S("ep-dummy-id", {
|
69
70
|
...n,
|
70
71
|
page: e
|
71
|
-
}),
|
72
|
-
},
|
73
|
-
|
74
|
-
},
|
72
|
+
}), L(e);
|
73
|
+
}, Q = (e) => {
|
74
|
+
N(e);
|
75
|
+
}, W = d(
|
75
76
|
(e) => {
|
76
|
-
|
77
|
-
search_term:
|
78
|
-
}),
|
77
|
+
P(me.RESOURCE_SEARCH_INPUT_VALUE, {
|
78
|
+
search_term: g
|
79
|
+
}), y((r) => ({
|
79
80
|
...r,
|
80
|
-
search_term: e ? "" :
|
81
|
+
search_term: e ? "" : g
|
81
82
|
}));
|
82
83
|
},
|
83
|
-
[
|
84
|
-
),
|
85
|
-
(
|
86
|
-
}, [n,
|
87
|
-
|
84
|
+
[g, P]
|
85
|
+
), a = d(() => {
|
86
|
+
(k(n) || n.stream) && S("ep-dummy-id", n);
|
87
|
+
}, [n, S]), X = d(() => {
|
88
|
+
u ? T(
|
88
89
|
{
|
89
90
|
node_ids: t.map((e) => e.node_id)
|
90
91
|
},
|
91
|
-
{ userMilestoneId:
|
92
|
-
) :
|
92
|
+
{ userMilestoneId: u }
|
93
|
+
) : p && w(
|
93
94
|
{
|
94
95
|
nodes: t.map(({ node_id: e }) => ({
|
95
96
|
id: e,
|
96
97
|
attempt_location: "ANY"
|
97
98
|
})),
|
98
|
-
program_id:
|
99
|
+
program_id: p
|
99
100
|
},
|
100
|
-
{ studentId:
|
101
|
+
{ studentId: R }
|
101
102
|
);
|
102
103
|
}, [
|
103
|
-
|
104
|
-
m,
|
105
|
-
t,
|
106
|
-
b,
|
104
|
+
T,
|
107
105
|
u,
|
108
|
-
|
106
|
+
t,
|
107
|
+
w,
|
108
|
+
p,
|
109
|
+
R
|
109
110
|
]);
|
110
|
-
if (
|
111
|
-
|
112
|
-
}, [
|
113
|
-
|
114
|
-
|
111
|
+
if (I(() => {
|
112
|
+
a();
|
113
|
+
}, [a]), I(() => {
|
114
|
+
!_ && O && a();
|
115
|
+
}, [a, _, O]), I(() => {
|
116
|
+
i && V((e) => {
|
117
|
+
const r = h !== 1 ? [...e, ...i.results] : i.results;
|
115
118
|
return Array.from(new Map(r.map((o) => [o.id, o])).values());
|
116
119
|
});
|
117
|
-
}, [i,
|
118
|
-
return /* @__PURE__ */ s(
|
119
|
-
/* @__PURE__ */ s(
|
120
|
+
}, [i, h]), j)
|
121
|
+
return /* @__PURE__ */ s(m, { $height: "100%", $alignItems: "center", $justifyContent: "center", children: /* @__PURE__ */ f(m, { $flexGapX: 1.5, $alignItems: "center", $justifyContent: "center", children: [
|
122
|
+
/* @__PURE__ */ s(ie, { $renderAs: "h6", children: "Oops! Something went wrong. Please try again later." }),
|
120
123
|
/* @__PURE__ */ s(
|
121
|
-
|
124
|
+
te,
|
122
125
|
{
|
123
126
|
widthX: 14,
|
124
127
|
size: "small",
|
@@ -126,71 +129,71 @@ const ge = ee((v) => {
|
|
126
129
|
renderAs: "primary",
|
127
130
|
label: "Try again",
|
128
131
|
analyticsLabel: "resource_get_api_failed",
|
129
|
-
onClick:
|
132
|
+
onClick: a
|
130
133
|
}
|
131
134
|
)
|
132
135
|
] }) });
|
133
|
-
const { filters:
|
134
|
-
return /* @__PURE__ */
|
135
|
-
/* @__PURE__ */
|
136
|
+
const { filters: B, total_pages: Y = 0 } = i || {}, { boards: q = [], grades: J = [], node_types: K = [] } = B || {}, Z = k(n);
|
137
|
+
return /* @__PURE__ */ f(m, { $flexDirection: "row", $height: "100vh", children: [
|
138
|
+
/* @__PURE__ */ f(pe, { $width: "60%", children: [
|
136
139
|
/* @__PURE__ */ s(
|
137
|
-
|
140
|
+
he,
|
138
141
|
{
|
139
142
|
$heightX: 4,
|
140
143
|
$background: "WHITE_3",
|
141
144
|
$alignItems: "center",
|
142
145
|
$justifyContent: "center",
|
143
146
|
children: /* @__PURE__ */ s(
|
144
|
-
|
147
|
+
ne,
|
145
148
|
{
|
146
|
-
value:
|
147
|
-
onSearchTextChange:
|
149
|
+
value: g,
|
150
|
+
onSearchTextChange: Q,
|
148
151
|
renderAs: "primary",
|
149
152
|
width: "99%",
|
150
153
|
size: "regular",
|
151
154
|
label: "Type topic name...",
|
152
|
-
onEnter:
|
155
|
+
onEnter: W,
|
153
156
|
searchOnClear: !0,
|
154
|
-
onPrefixElementClick:
|
155
|
-
prefixElement: /* @__PURE__ */ s(
|
157
|
+
onPrefixElementClick: F,
|
158
|
+
prefixElement: /* @__PURE__ */ s(se, {})
|
156
159
|
}
|
157
160
|
)
|
158
161
|
}
|
159
162
|
),
|
160
|
-
/* @__PURE__ */
|
161
|
-
|
163
|
+
/* @__PURE__ */ f(m, { $height: "calc(100vh - 64px)", $position: "relative", children: [
|
164
|
+
_ && /* @__PURE__ */ s(ge, {}),
|
162
165
|
/* @__PURE__ */ s(
|
163
|
-
|
166
|
+
ue,
|
164
167
|
{
|
165
|
-
resourceItems:
|
168
|
+
resourceItems: A,
|
166
169
|
selectedResource: t,
|
167
|
-
pageNumber:
|
168
|
-
totalPages:
|
169
|
-
assigningInProgress:
|
170
|
-
isFilterAdded:
|
171
|
-
onResourceAdditionOrDeletion:
|
172
|
-
onResourceAssign:
|
173
|
-
onViewResource:
|
174
|
-
onPageNumberUpdate:
|
170
|
+
pageNumber: h,
|
171
|
+
totalPages: Y,
|
172
|
+
assigningInProgress: z || G,
|
173
|
+
isFilterAdded: Z,
|
174
|
+
onResourceAdditionOrDeletion: v,
|
175
|
+
onResourceAssign: X,
|
176
|
+
onViewResource: C,
|
177
|
+
onPageNumberUpdate: M
|
175
178
|
}
|
176
179
|
)
|
177
180
|
] })
|
178
181
|
] }),
|
179
|
-
/* @__PURE__ */ s(
|
180
|
-
|
182
|
+
/* @__PURE__ */ s(m, { $width: "40%", children: /* @__PURE__ */ s(
|
183
|
+
ae,
|
181
184
|
{
|
182
|
-
boards:
|
183
|
-
grades:
|
184
|
-
nodeTypes:
|
185
|
+
boards: q,
|
186
|
+
grades: J,
|
187
|
+
nodeTypes: K,
|
185
188
|
selectedResources: t,
|
186
|
-
onResourceDeSelection:
|
187
|
-
onFilterUpdate:
|
188
|
-
onViewResource:
|
189
|
+
onResourceDeSelection: v,
|
190
|
+
onFilterUpdate: H,
|
191
|
+
onViewResource: C
|
189
192
|
}
|
190
193
|
) })
|
191
194
|
] });
|
192
|
-
}),
|
195
|
+
}), Ue = fe;
|
193
196
|
export {
|
194
|
-
|
197
|
+
Ue as default
|
195
198
|
};
|
196
199
|
//# sourceMappingURL=resources-assign.js.map
|
package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"resources-assign.js","sources":["../../../../../src/features/milestone/milestone-resources/resources-assign/resources-assign.tsx"],"sourcesContent":["import type { IExtraPracticeQuery } from './api/get-resource';\nimport type { IResourceItemStep } from './comps/resource-item/resource-item-types';\nimport type { IEPResourceAssign, IResourceData } from './resources-assign-type';\nimport type { FC } from 'react';\n\nimport { pluralize } from 'humanize-plus';\nimport { memo, useCallback, useEffect, useState } from 'react';\n\nimport Back2Icon from '../../../../assets/line-icons/icons/back2';\nimport Button from '../../../ui/buttons/button/button';\nimport { useUIContext } from '../../../ui/context/context';\nimport SearchableInput from '../../../ui/inputs/searchable-input/searchable-input';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Text from '../../../ui/text/text';\nimport AddedResourceAndFilters from './added-resource-and-filters';\nimport { useGetSearchResource } from './api/get-resource';\nimport { usePostMilestoneResource } from './api/goal-resource-assign';\nimport { usePostLPARResource } from './api/lpar-resource-assign';\nimport { RESOURCE_ASSIGN_ANALYTICS_EVENTS } from './resource-assign-analytics-events';\nimport ResourceItems from './resource-items/resource-items';\nimport * as Styled from './resources-assign-styled';\nimport { checkIfFiltersAreAdded } from './utils';\n\nconst EPResourceAssign: FC<IEPResourceAssign> = memo(props => {\n const {\n studentId,\n stream,\n onResourceAssign,\n onError,\n onExitResourceAssign,\n onViewResource,\n userMilestoneId,\n programId,\n } = props;\n\n const { onEvent: trackEvent } = useUIContext();\n\n const [pageNumber, setPageNumber] = useState(1);\n const [searchValue, setSearchValue] = useState('');\n const [searchQuery, setSearchQuery] = useState<IExtraPracticeQuery>({\n stream: stream,\n page: pageNumber,\n per_page: 50,\n user_id: studentId,\n user_milestone_id: userMilestoneId,\n program_id: programId,\n });\n const [resourceItems, setResourceItems] = useState<IResourceData['results']>([]);\n const [selectedResourceItems, setSelectedResource] = useState<IResourceData['results']>([]);\n\n const handleOnResourceAssignComplete = useCallback(\n (errorMessage: string | null) => {\n if (errorMessage) {\n onError(errorMessage);\n } else {\n const toastMessage = `${pluralize(selectedResourceItems.length, 'Resource')} ${\n selectedResourceItems.length > 1 ? 'have' : 'has'\n } been assigned`;\n\n onResourceAssign(toastMessage);\n }\n },\n [onError, onResourceAssign, selectedResourceItems],\n );\n\n const {\n get: getSearchResource,\n data: resourceSearchData,\n isProcessing,\n isProcessingFailed,\n } = useGetSearchResource();\n\n const { post: postAssignGoalResource, isProcessing: goalResourceAssignInProgress } =\n usePostMilestoneResource({\n onComplete: handleOnResourceAssignComplete,\n });\n const { post: postAssignLPARResource, isProcessing: lparResourceAssignInProgress } =\n usePostLPARResource({\n onComplete: handleOnResourceAssignComplete,\n });\n\n const handleOnSearchQueryChange = (updatedQuery: Omit<IExtraPracticeQuery, 'stream'>) => {\n setSearchQuery(prev => ({ ...prev, ...updatedQuery }));\n };\n\n const handleOnResourceAdditionOrDeletion = useCallback(\n (step: IResourceItemStep, resourceNodeId: string) => {\n if (step === 'select') {\n const resourceItem = resourceItems.find(resource => resource.node_id === resourceNodeId);\n\n if (resourceItem) {\n setSelectedResource(prev => {\n return [...prev, resourceItem];\n });\n }\n } else {\n setSelectedResource(prev =>\n prev.filter(prevResource => prevResource.node_id !== resourceNodeId),\n );\n }\n },\n [resourceItems],\n );\n\n const handleScrollPagination = (newPageNumber: number) => {\n getSearchResource('ep-dummy-id', {\n ...searchQuery,\n page: newPageNumber,\n });\n setPageNumber(newPageNumber);\n };\n\n const handleSearchTextChange = (value: string) => {\n setSearchValue(value);\n };\n\n const handleSearch = useCallback(\n (searchOnClear?: boolean) => {\n trackEvent(RESOURCE_ASSIGN_ANALYTICS_EVENTS.RESOURCE_SEARCH_INPUT_VALUE, {\n search_term: searchValue,\n });\n\n setSearchQuery(prev => ({\n ...prev,\n search_term: searchOnClear ? '' : searchValue,\n }));\n },\n [searchValue, trackEvent],\n );\n\n const fetchResource = useCallback(() => {\n if (checkIfFiltersAreAdded(searchQuery) || searchQuery.stream) {\n getSearchResource('ep-dummy-id', searchQuery);\n }\n }, [searchQuery, getSearchResource]);\n\n const handleOnResourceAssign = useCallback(() => {\n if (userMilestoneId) {\n postAssignGoalResource(\n {\n node_ids: selectedResourceItems.map(resource => resource.node_id),\n },\n { userMilestoneId },\n );\n } else if (programId) {\n postAssignLPARResource(\n {\n nodes: selectedResourceItems.map(({ node_id: nodeId }) => ({\n id: nodeId,\n attempt_location: 'ANY',\n })),\n program_id: programId,\n },\n { studentId },\n );\n }\n }, [\n postAssignGoalResource,\n userMilestoneId,\n selectedResourceItems,\n postAssignLPARResource,\n programId,\n studentId,\n ]);\n\n useEffect(() => {\n fetchResource();\n }, [fetchResource]);\n\n useEffect(() => {\n if (resourceSearchData) {\n setResourceItems(prev => {\n const updatedData =\n pageNumber !== 1 ? [...prev, ...resourceSearchData.results] : resourceSearchData.results;\n\n return Array.from(new Map(updatedData.map(item => [item.id, item])).values());\n });\n }\n }, [resourceSearchData, pageNumber]);\n\n if (isProcessingFailed) {\n return (\n <FlexView $height=\"100%\" $alignItems=\"center\" $justifyContent=\"center\">\n <FlexView $flexGapX={1.5} $alignItems=\"center\" $justifyContent=\"center\">\n <Text $renderAs=\"h6\">Oops! Something went wrong. Please try again later.</Text>\n <Button\n widthX={14}\n size=\"small\"\n shape=\"square\"\n renderAs=\"primary\"\n label=\"Try again\"\n analyticsLabel=\"resource_get_api_failed\"\n onClick={fetchResource}\n />\n </FlexView>\n </FlexView>\n );\n }\n\n const { filters, total_pages: totalPages = 0 } = resourceSearchData || {};\n const { boards = [], grades = [], node_types: nodeTypes = [] } = filters || {};\n const isFilterAdded = checkIfFiltersAreAdded(searchQuery);\n\n return (\n <FlexView $flexDirection=\"row\" $height=\"100vh\">\n <Styled.SearchContainer $width=\"60%\">\n <Styled.HeaderWrapper\n $heightX={4}\n $background=\"WHITE_3\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n >\n <SearchableInput\n value={searchValue}\n onSearchTextChange={handleSearchTextChange}\n renderAs=\"primary\"\n width=\"99%\"\n size=\"regular\"\n label=\"Type topic name...\"\n onEnter={handleSearch}\n searchOnClear\n onPrefixElementClick={onExitResourceAssign}\n prefixElement={<Back2Icon />}\n />\n </Styled.HeaderWrapper>\n\n <FlexView $height=\"calc(100vh - 64px)\" $position=\"relative\">\n {isProcessing && <Styled.LoaderWrapper />}\n\n <ResourceItems\n resourceItems={resourceItems}\n selectedResource={selectedResourceItems}\n pageNumber={pageNumber}\n totalPages={totalPages}\n assigningInProgress={goalResourceAssignInProgress || lparResourceAssignInProgress}\n isFilterAdded={isFilterAdded}\n onResourceAdditionOrDeletion={handleOnResourceAdditionOrDeletion}\n onResourceAssign={handleOnResourceAssign}\n onViewResource={onViewResource}\n onPageNumberUpdate={handleScrollPagination}\n />\n </FlexView>\n </Styled.SearchContainer>\n\n <FlexView $width=\"40%\">\n <AddedResourceAndFilters\n boards={boards}\n grades={grades}\n nodeTypes={nodeTypes}\n selectedResources={selectedResourceItems}\n onResourceDeSelection={handleOnResourceAdditionOrDeletion}\n onFilterUpdate={handleOnSearchQueryChange}\n onViewResource={onViewResource}\n />\n </FlexView>\n </FlexView>\n );\n});\n\nexport default EPResourceAssign;\n"],"names":["EPResourceAssign","memo","props","studentId","stream","onResourceAssign","onError","onExitResourceAssign","onViewResource","userMilestoneId","programId","trackEvent","useUIContext","pageNumber","setPageNumber","useState","searchValue","setSearchValue","searchQuery","setSearchQuery","resourceItems","setResourceItems","selectedResourceItems","setSelectedResource","handleOnResourceAssignComplete","useCallback","errorMessage","toastMessage","pluralize","getSearchResource","resourceSearchData","isProcessing","isProcessingFailed","useGetSearchResource","postAssignGoalResource","goalResourceAssignInProgress","usePostMilestoneResource","postAssignLPARResource","lparResourceAssignInProgress","usePostLPARResource","handleOnSearchQueryChange","updatedQuery","prev","handleOnResourceAdditionOrDeletion","step","resourceNodeId","resourceItem","resource","prevResource","handleScrollPagination","newPageNumber","handleSearchTextChange","value","handleSearch","searchOnClear","RESOURCE_ASSIGN_ANALYTICS_EVENTS","fetchResource","checkIfFiltersAreAdded","handleOnResourceAssign","nodeId","useEffect","updatedData","item","jsx","FlexView","jsxs","Text","Button","filters","totalPages","boards","grades","nodeTypes","isFilterAdded","Styled.SearchContainer","Styled.HeaderWrapper","SearchableInput","Back2Icon","Styled.LoaderWrapper","ResourceItems","AddedResourceAndFilters","EPResourceAssign$1"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"resources-assign.js","sources":["../../../../../src/features/milestone/milestone-resources/resources-assign/resources-assign.tsx"],"sourcesContent":["import type { IExtraPracticeQuery } from './api/get-resource';\nimport type { IResourceItemStep } from './comps/resource-item/resource-item-types';\nimport type { IEPResourceAssign, IResourceData } from './resources-assign-type';\nimport type { FC } from 'react';\n\nimport { pluralize } from 'humanize-plus';\nimport { memo, useCallback, useEffect, useState } from 'react';\n\nimport Back2Icon from '../../../../assets/line-icons/icons/back2';\nimport Button from '../../../ui/buttons/button/button';\nimport { useUIContext } from '../../../ui/context/context';\nimport SearchableInput from '../../../ui/inputs/searchable-input/searchable-input';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Text from '../../../ui/text/text';\nimport AddedResourceAndFilters from './added-resource-and-filters';\nimport { useGetSearchResource } from './api/get-resource';\nimport { usePostMilestoneResource } from './api/goal-resource-assign';\nimport { usePostLPARResource } from './api/lpar-resource-assign';\nimport { RESOURCE_ASSIGN_ANALYTICS_EVENTS } from './resource-assign-analytics-events';\nimport ResourceItems from './resource-items/resource-items';\nimport * as Styled from './resources-assign-styled';\nimport { checkIfFiltersAreAdded } from './utils';\n\nconst EPResourceAssign: FC<IEPResourceAssign> = memo(props => {\n const {\n studentId,\n stream,\n onResourceAssign,\n onError,\n onExitResourceAssign,\n onViewResource,\n userMilestoneId,\n programId,\n } = props;\n\n const { onEvent: trackEvent } = useUIContext();\n\n const [pageNumber, setPageNumber] = useState(1);\n const [searchValue, setSearchValue] = useState('');\n const [searchQuery, setSearchQuery] = useState<IExtraPracticeQuery>({\n stream: stream,\n page: pageNumber,\n per_page: 50,\n user_id: studentId,\n user_milestone_id: userMilestoneId,\n program_id: programId,\n });\n const [resourceItems, setResourceItems] = useState<IResourceData['results']>([]);\n const [selectedResourceItems, setSelectedResource] = useState<IResourceData['results']>([]);\n\n const handleOnResourceAssignComplete = useCallback(\n (errorMessage: string | null) => {\n if (errorMessage) {\n onError(errorMessage);\n } else {\n const toastMessage = `${pluralize(selectedResourceItems.length, 'Resource')} ${\n selectedResourceItems.length > 1 ? 'have' : 'has'\n } been assigned`;\n\n onResourceAssign(toastMessage);\n }\n },\n [onError, onResourceAssign, selectedResourceItems],\n );\n\n const {\n get: getSearchResource,\n data: resourceSearchData,\n isProcessing,\n isProcessingFailed,\n isStale: isResourceSearchStale,\n } = useGetSearchResource();\n\n const { post: postAssignGoalResource, isProcessing: goalResourceAssignInProgress } =\n usePostMilestoneResource({\n onComplete: handleOnResourceAssignComplete,\n });\n const { post: postAssignLPARResource, isProcessing: lparResourceAssignInProgress } =\n usePostLPARResource({\n onComplete: handleOnResourceAssignComplete,\n });\n\n const handleOnSearchQueryChange = (updatedQuery: Omit<IExtraPracticeQuery, 'stream'>) => {\n setSearchQuery(prev => ({ ...prev, ...updatedQuery }));\n };\n\n const handleOnResourceAdditionOrDeletion = useCallback(\n (step: IResourceItemStep, resourceNodeId: string) => {\n if (step === 'select') {\n const resourceItem = resourceItems.find(resource => resource.node_id === resourceNodeId);\n\n if (resourceItem) {\n setSelectedResource(prev => {\n return [...prev, resourceItem];\n });\n }\n } else {\n setSelectedResource(prev =>\n prev.filter(prevResource => prevResource.node_id !== resourceNodeId),\n );\n }\n },\n [resourceItems],\n );\n\n const handleScrollPagination = (newPageNumber: number) => {\n getSearchResource('ep-dummy-id', {\n ...searchQuery,\n page: newPageNumber,\n });\n setPageNumber(newPageNumber);\n };\n\n const handleSearchTextChange = (value: string) => {\n setSearchValue(value);\n };\n\n const handleSearch = useCallback(\n (searchOnClear?: boolean) => {\n trackEvent(RESOURCE_ASSIGN_ANALYTICS_EVENTS.RESOURCE_SEARCH_INPUT_VALUE, {\n search_term: searchValue,\n });\n\n setSearchQuery(prev => ({\n ...prev,\n search_term: searchOnClear ? '' : searchValue,\n }));\n },\n [searchValue, trackEvent],\n );\n\n const fetchResource = useCallback(() => {\n if (checkIfFiltersAreAdded(searchQuery) || searchQuery.stream) {\n getSearchResource('ep-dummy-id', searchQuery);\n }\n }, [searchQuery, getSearchResource]);\n\n const handleOnResourceAssign = useCallback(() => {\n if (userMilestoneId) {\n postAssignGoalResource(\n {\n node_ids: selectedResourceItems.map(resource => resource.node_id),\n },\n { userMilestoneId },\n );\n } else if (programId) {\n postAssignLPARResource(\n {\n nodes: selectedResourceItems.map(({ node_id: nodeId }) => ({\n id: nodeId,\n attempt_location: 'ANY',\n })),\n program_id: programId,\n },\n { studentId },\n );\n }\n }, [\n postAssignGoalResource,\n userMilestoneId,\n selectedResourceItems,\n postAssignLPARResource,\n programId,\n studentId,\n ]);\n\n useEffect(() => {\n fetchResource();\n }, [fetchResource]);\n\n useEffect(() => {\n if (!isProcessing && isResourceSearchStale) {\n fetchResource();\n }\n }, [fetchResource, isProcessing, isResourceSearchStale]);\n\n useEffect(() => {\n if (resourceSearchData) {\n setResourceItems(prev => {\n const updatedData =\n pageNumber !== 1 ? [...prev, ...resourceSearchData.results] : resourceSearchData.results;\n\n return Array.from(new Map(updatedData.map(item => [item.id, item])).values());\n });\n }\n }, [resourceSearchData, pageNumber]);\n\n if (isProcessingFailed) {\n return (\n <FlexView $height=\"100%\" $alignItems=\"center\" $justifyContent=\"center\">\n <FlexView $flexGapX={1.5} $alignItems=\"center\" $justifyContent=\"center\">\n <Text $renderAs=\"h6\">Oops! Something went wrong. Please try again later.</Text>\n <Button\n widthX={14}\n size=\"small\"\n shape=\"square\"\n renderAs=\"primary\"\n label=\"Try again\"\n analyticsLabel=\"resource_get_api_failed\"\n onClick={fetchResource}\n />\n </FlexView>\n </FlexView>\n );\n }\n\n const { filters, total_pages: totalPages = 0 } = resourceSearchData || {};\n const { boards = [], grades = [], node_types: nodeTypes = [] } = filters || {};\n const isFilterAdded = checkIfFiltersAreAdded(searchQuery);\n\n return (\n <FlexView $flexDirection=\"row\" $height=\"100vh\">\n <Styled.SearchContainer $width=\"60%\">\n <Styled.HeaderWrapper\n $heightX={4}\n $background=\"WHITE_3\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n >\n <SearchableInput\n value={searchValue}\n onSearchTextChange={handleSearchTextChange}\n renderAs=\"primary\"\n width=\"99%\"\n size=\"regular\"\n label=\"Type topic name...\"\n onEnter={handleSearch}\n searchOnClear\n onPrefixElementClick={onExitResourceAssign}\n prefixElement={<Back2Icon />}\n />\n </Styled.HeaderWrapper>\n\n <FlexView $height=\"calc(100vh - 64px)\" $position=\"relative\">\n {isProcessing && <Styled.LoaderWrapper />}\n\n <ResourceItems\n resourceItems={resourceItems}\n selectedResource={selectedResourceItems}\n pageNumber={pageNumber}\n totalPages={totalPages}\n assigningInProgress={goalResourceAssignInProgress || lparResourceAssignInProgress}\n isFilterAdded={isFilterAdded}\n onResourceAdditionOrDeletion={handleOnResourceAdditionOrDeletion}\n onResourceAssign={handleOnResourceAssign}\n onViewResource={onViewResource}\n onPageNumberUpdate={handleScrollPagination}\n />\n </FlexView>\n </Styled.SearchContainer>\n\n <FlexView $width=\"40%\">\n <AddedResourceAndFilters\n boards={boards}\n grades={grades}\n nodeTypes={nodeTypes}\n selectedResources={selectedResourceItems}\n onResourceDeSelection={handleOnResourceAdditionOrDeletion}\n onFilterUpdate={handleOnSearchQueryChange}\n onViewResource={onViewResource}\n />\n </FlexView>\n </FlexView>\n );\n});\n\nexport default EPResourceAssign;\n"],"names":["EPResourceAssign","memo","props","studentId","stream","onResourceAssign","onError","onExitResourceAssign","onViewResource","userMilestoneId","programId","trackEvent","useUIContext","pageNumber","setPageNumber","useState","searchValue","setSearchValue","searchQuery","setSearchQuery","resourceItems","setResourceItems","selectedResourceItems","setSelectedResource","handleOnResourceAssignComplete","useCallback","errorMessage","toastMessage","pluralize","getSearchResource","resourceSearchData","isProcessing","isProcessingFailed","isResourceSearchStale","useGetSearchResource","postAssignGoalResource","goalResourceAssignInProgress","usePostMilestoneResource","postAssignLPARResource","lparResourceAssignInProgress","usePostLPARResource","handleOnSearchQueryChange","updatedQuery","prev","handleOnResourceAdditionOrDeletion","step","resourceNodeId","resourceItem","resource","prevResource","handleScrollPagination","newPageNumber","handleSearchTextChange","value","handleSearch","searchOnClear","RESOURCE_ASSIGN_ANALYTICS_EVENTS","fetchResource","checkIfFiltersAreAdded","handleOnResourceAssign","nodeId","useEffect","updatedData","item","jsx","FlexView","jsxs","Text","Button","filters","totalPages","boards","grades","nodeTypes","isFilterAdded","Styled.SearchContainer","Styled.HeaderWrapper","SearchableInput","Back2Icon","Styled.LoaderWrapper","ResourceItems","AddedResourceAndFilters","EPResourceAssign$1"],"mappings":"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"}
|