@cuemath/leap 3.5.52-as1 → 3.5.53-j1
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/homework/homework-card.js +122 -121
- package/dist/features/homework/homework-card.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/add-custom-chapter.js +66 -61
- package/dist/features/milestone/create/comps/add-custom-chapter/add-custom-chapter.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js +56 -55
- package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/search-chapter/search-chapters.js +32 -25
- package/dist/features/milestone/create/comps/add-custom-chapter/search-chapter/search-chapters.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapter-item.js +16 -15
- package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapter-item.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapters.js +17 -10
- package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapters.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/tags-render.js +6 -6
- package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/tags-render.js.map +1 -1
- package/dist/features/milestone/create/comps/body-layout/body-layout.js +30 -29
- package/dist/features/milestone/create/comps/body-layout/body-layout.js.map +1 -1
- package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js +77 -74
- package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js.map +1 -1
- package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.js +82 -79
- package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.js.map +1 -1
- package/dist/features/milestone/create/milestone-create-styled.js +8 -8
- package/dist/features/milestone/create/milestone-create-styled.js.map +1 -1
- package/dist/features/milestone/create/milestone-create.js +48 -46
- package/dist/features/milestone/create/milestone-create.js.map +1 -1
- package/dist/features/milestone/edit/goal-draft-edit-sync.js +26 -0
- package/dist/features/milestone/edit/goal-draft-edit-sync.js.map +1 -0
- package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-container.js +72 -66
- package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-container.js.map +1 -1
- package/dist/features/milestone/edit/hooks/use-milestone-edit-sync.js +82 -0
- package/dist/features/milestone/edit/hooks/use-milestone-edit-sync.js.map +1 -0
- package/dist/features/milestone/milestone-list-container/hooks/use-milestone-list-sync.js +49 -0
- package/dist/features/milestone/milestone-list-container/hooks/use-milestone-list-sync.js.map +1 -0
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js +109 -105
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js +2 -2
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs-styled.js +21 -16
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs-styled.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js +106 -98
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js +136 -117
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list-container.js +96 -92
- package/dist/features/milestone/milestone-list-container/milestone-list-container.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list-sync.js +25 -0
- package/dist/features/milestone/milestone-list-container/milestone-list-sync.js.map +1 -0
- package/dist/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.js +78 -81
- package/dist/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-assign/comps/filter-item/filter-item.js +28 -25
- package/dist/features/milestone/milestone-resources/resources-assign/comps/filter-item/filter-item.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-assign/comps/resource-item/resource-item.js +39 -33
- package/dist/features/milestone/milestone-resources/resources-assign/comps/resource-item/resource-item.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-assign/hooks/use-resource-assign-sync.js +50 -0
- package/dist/features/milestone/milestone-resources/resources-assign/hooks/use-resource-assign-sync.js.map +1 -0
- package/dist/features/milestone/milestone-resources/resources-assign/resource-assign-sync.js +25 -0
- package/dist/features/milestone/milestone-resources/resources-assign/resource-assign-sync.js.map +1 -0
- package/dist/features/milestone/milestone-resources/resources-assign/resource-items/resource-items.js +43 -53
- package/dist/features/milestone/milestone-resources/resources-assign/resource-items/resource-items.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js +218 -174
- package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-assign/store/resource-assign-store.js +198 -0
- package/dist/features/milestone/milestone-resources/resources-assign/store/resource-assign-store.js.map +1 -0
- package/dist/features/milestone/milestone-resources/resources-list/resources-list.js +69 -67
- package/dist/features/milestone/milestone-resources/resources-list/resources-list.js.map +1 -1
- package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js +46 -45
- package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js.map +1 -1
- package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js +34 -32
- package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-creation/hooks/use-tests-creation-sync.js +52 -0
- package/dist/features/milestone/milestone-tests/tests-creation/hooks/use-tests-creation-sync.js.map +1 -0
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/chapter-selection/chapter-selection.js +51 -41
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/chapter-selection/chapter-selection.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/difficulty-and-duration-selection.js +85 -71
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/difficulty-and-duration-selection.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview-styled.js +5 -5
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview-styled.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js +36 -26
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-sync.js +25 -0
- package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-sync.js.map +1 -0
- package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-types.js +5 -0
- package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-types.js.map +1 -0
- package/dist/features/milestone/milestone-tests/tests-creation/tests-creation.js +150 -89
- package/dist/features/milestone/milestone-tests/tests-creation/tests-creation.js.map +1 -1
- package/dist/features/sheet-v2/resource-list/resource-list.js +26 -24
- package/dist/features/sheet-v2/resource-list/resource-list.js.map +1 -1
- package/dist/features/trial-session/comps/learning-plan/index.js +218 -91
- package/dist/features/trial-session/comps/learning-plan/index.js.map +1 -1
- package/dist/features/trial-session/comps/learning-plan/learning-plan-styled.js +7 -6
- package/dist/features/trial-session/comps/learning-plan/learning-plan-styled.js.map +1 -1
- package/dist/features/trial-session/hooks/use-learning-plan-scroll-sync.js +75 -0
- package/dist/features/trial-session/hooks/use-learning-plan-scroll-sync.js.map +1 -0
- package/dist/features/trial-session/hooks/use-trial-session-navigation.js +125 -115
- package/dist/features/trial-session/hooks/use-trial-session-navigation.js.map +1 -1
- package/dist/features/trial-session/trial-session-types.js +3 -2
- package/dist/features/trial-session/trial-session-types.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js +69 -54
- package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet.js +44 -33
- package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js +25 -22
- package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js +48 -44
- package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/worksheet-preview.js +2 -2
- package/dist/features/worksheet/worksheet-preview/worksheet-preview.js.map +1 -1
- package/dist/index.d.ts +138 -2
- package/dist/node_modules/decode-uri-component/index.js.map +1 -0
- package/dist/node_modules/query-string/base.js +1 -1
- package/dist/node_modules/uuid/dist/esm-browser/native.js +7 -0
- package/dist/node_modules/uuid/dist/esm-browser/native.js.map +1 -0
- package/dist/node_modules/uuid/dist/esm-browser/rng.js +3 -2
- package/dist/node_modules/uuid/dist/esm-browser/rng.js.map +1 -1
- package/dist/node_modules/uuid/dist/esm-browser/stringify.js +6 -10
- package/dist/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -1
- package/dist/node_modules/uuid/dist/esm-browser/v4.js +12 -9
- package/dist/node_modules/uuid/dist/esm-browser/v4.js.map +1 -1
- package/package.json +1 -1
- package/dist/features/trial-session/comps/learning-plan/use-learning-plan-scroll-sync.js +0 -37
- package/dist/features/trial-session/comps/learning-plan/use-learning-plan-scroll-sync.js.map +0 -1
- package/dist/node_modules/query-string/node_modules/decode-uri-component/index.js.map +0 -1
- package/dist/node_modules/uuid/dist/esm-browser/regex.js +0 -5
- package/dist/node_modules/uuid/dist/esm-browser/regex.js.map +0 -1
- package/dist/node_modules/uuid/dist/esm-browser/validate.js +0 -8
- package/dist/node_modules/uuid/dist/esm-browser/validate.js.map +0 -1
- /package/dist/node_modules/{query-string/node_modules/decode-uri-component → decode-uri-component}/index.js +0 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as c } from "react/jsx-runtime";
|
|
2
|
+
import { memo as m, useEffect as f } from "react";
|
|
3
|
+
import { useMilestoneEditSync as l } from "./hooks/use-milestone-edit-sync.js";
|
|
4
|
+
import d from "./goal-drafts/goal-draft-edit-container.js";
|
|
5
|
+
const S = m(function(a) {
|
|
6
|
+
const { channelId: e, userType: t, ...n } = a, o = t === "TEACHER", { syncedFormData: s, setSyncFormData: i, closeChannel: r } = l({
|
|
7
|
+
channelId: e,
|
|
8
|
+
isTeacher: o
|
|
9
|
+
});
|
|
10
|
+
return f(() => () => {
|
|
11
|
+
r();
|
|
12
|
+
}, [r]), /* @__PURE__ */ c(
|
|
13
|
+
d,
|
|
14
|
+
{
|
|
15
|
+
...n,
|
|
16
|
+
userType: t,
|
|
17
|
+
formData: s,
|
|
18
|
+
onFormDataChange: o ? i : void 0,
|
|
19
|
+
isTrialSession: !0
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
});
|
|
23
|
+
export {
|
|
24
|
+
S as default
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=goal-draft-edit-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goal-draft-edit-sync.js","sources":["../../../../src/features/milestone/edit/goal-draft-edit-sync.tsx"],"sourcesContent":["import { memo, useEffect, type FC } from 'react';\n\nimport type { TUserTypes } from '../../ui/types';\nimport type { IMilestoneFormData } from '../create/milestone-create-types';\nimport { useMilestoneEditSync } from './hooks/use-milestone-edit-sync';\nimport GoalDraftEdit from './goal-drafts/goal-draft-edit-container';\nimport type { IMileStoneEditContainerProps } from './milestone-edit-types';\n\ninterface IGoalDraftEditSync\n extends Omit<IMileStoneEditContainerProps, 'formData' | 'onFormDataChange'> {\n channelId: string;\n userType: TUserTypes;\n}\n\nconst GoalDraftEditSync: FC<IGoalDraftEditSync> = memo(function GoalDraftEditSync(props) {\n const { channelId, userType, ...goalDraftEditProps } = props;\n\n const isTeacher = userType === 'TEACHER';\n\n const { syncedFormData, setSyncFormData, closeChannel } = useMilestoneEditSync({\n channelId,\n isTeacher,\n });\n\n useEffect(() => {\n return () => {\n closeChannel();\n };\n }, [closeChannel]);\n\n return (\n <GoalDraftEdit\n {...goalDraftEditProps}\n userType={userType}\n formData={syncedFormData as IMilestoneFormData}\n onFormDataChange={isTeacher ? setSyncFormData : undefined}\n isTrialSession\n />\n );\n});\n\nexport default GoalDraftEditSync;\n"],"names":["GoalDraftEditSync","memo","props","channelId","userType","goalDraftEditProps","isTeacher","syncedFormData","setSyncFormData","closeChannel","useMilestoneEditSync","useEffect","jsx","GoalDraftEdit"],"mappings":";;;;AAcA,MAAMA,IAA4CC,EAAK,SAA2BC,GAAO;AACvF,QAAM,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,MAAuBH,GAEjDI,IAAYF,MAAa,WAEzB,EAAE,gBAAAG,GAAgB,iBAAAC,GAAiB,cAAAC,EAAA,IAAiBC,EAAqB;AAAA,IAC7E,WAAAP;AAAA,IACA,WAAAG;AAAA,EAAA,CACD;AAED,SAAAK,EAAU,MACD,MAAM;AACE,IAAAF;EAAA,GAEd,CAACA,CAAY,CAAC,GAGf,gBAAAG;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGR;AAAA,MACJ,UAAAD;AAAA,MACA,UAAUG;AAAA,MACV,kBAAkBD,IAAYE,IAAkB;AAAA,MAChD,gBAAc;AAAA,IAAA;AAAA,EAAA;AAGpB,CAAC;"}
|
|
@@ -1,89 +1,95 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { h as
|
|
3
|
-
import { memo as
|
|
4
|
-
import { useGetMileStoneConfig as
|
|
5
|
-
import
|
|
6
|
-
import { useMilestoneGet as
|
|
7
|
-
import
|
|
8
|
-
import { transformGoalData as
|
|
9
|
-
const
|
|
1
|
+
import { jsx as m } from "react/jsx-runtime";
|
|
2
|
+
import { h as W } from "../../../../node_modules/humanize-plus/dist/humanize.js";
|
|
3
|
+
import { memo as j, useEffect as l, useMemo as C } from "react";
|
|
4
|
+
import { useGetMileStoneConfig as z } from "../../create/api/milestone-config.js";
|
|
5
|
+
import H from "../../create/milestone-create.js";
|
|
6
|
+
import { useMilestoneGet as L } from "../comps/edit-milestone-modal/api/get-milestone.js";
|
|
7
|
+
import S from "../comps/milestone-edit-loader/milestone-edit-loader.js";
|
|
8
|
+
import { transformGoalData as k } from "../goal-edit-helpers.js";
|
|
9
|
+
const q = j(
|
|
10
10
|
function({
|
|
11
|
-
studentName:
|
|
12
|
-
studentId:
|
|
13
|
-
height:
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
studentName: h,
|
|
12
|
+
studentId: u,
|
|
13
|
+
height: D,
|
|
14
|
+
formData: i,
|
|
15
|
+
onFormDataChange: G,
|
|
16
|
+
onPreSubmit: p,
|
|
17
|
+
onExit: x,
|
|
18
|
+
onChapterExitWarning: F,
|
|
18
19
|
userType: e,
|
|
19
20
|
board: P,
|
|
20
|
-
schoolData:
|
|
21
|
-
grade:
|
|
22
|
-
milestoneId:
|
|
23
|
-
currentCountryCode:
|
|
24
|
-
courseStream:
|
|
25
|
-
classRatio:
|
|
26
|
-
enrollmentType:
|
|
27
|
-
onDeleteGoal:
|
|
21
|
+
schoolData: _,
|
|
22
|
+
grade: M,
|
|
23
|
+
milestoneId: n,
|
|
24
|
+
currentCountryCode: g,
|
|
25
|
+
courseStream: s,
|
|
26
|
+
classRatio: w,
|
|
27
|
+
enrollmentType: a,
|
|
28
|
+
onDeleteGoal: b,
|
|
29
|
+
isTrialSession: f
|
|
28
30
|
}) {
|
|
29
31
|
const {
|
|
30
|
-
get:
|
|
31
|
-
data:
|
|
32
|
-
isProcessing:
|
|
33
|
-
isProcessingFailed:
|
|
34
|
-
} =
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}, [
|
|
32
|
+
get: c,
|
|
33
|
+
data: t,
|
|
34
|
+
isProcessing: v,
|
|
35
|
+
isProcessingFailed: A
|
|
36
|
+
} = z();
|
|
37
|
+
l(() => {
|
|
38
|
+
c("", void 0);
|
|
39
|
+
}, [c]);
|
|
38
40
|
const {
|
|
39
|
-
get:
|
|
41
|
+
get: d,
|
|
40
42
|
data: o,
|
|
41
|
-
isProcessing:
|
|
42
|
-
isProcessingFailed:
|
|
43
|
-
} =
|
|
44
|
-
() => o &&
|
|
43
|
+
isProcessing: N,
|
|
44
|
+
isProcessingFailed: R
|
|
45
|
+
} = L(n), r = C(
|
|
46
|
+
() => o && t && k({
|
|
45
47
|
currentMilestoneData: o,
|
|
46
|
-
config:
|
|
47
|
-
courseStream:
|
|
48
|
-
enrollmentType:
|
|
49
|
-
currentCountryCode:
|
|
48
|
+
config: t,
|
|
49
|
+
courseStream: s,
|
|
50
|
+
enrollmentType: a,
|
|
51
|
+
currentCountryCode: g
|
|
50
52
|
}),
|
|
51
|
-
[
|
|
52
|
-
),
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
[t, g, a, o, s]
|
|
54
|
+
), E = C(() => !i || !r ? i || r : {
|
|
55
|
+
...r,
|
|
56
|
+
...i
|
|
57
|
+
}, [i, r]), { can_delete: U } = (o == null ? void 0 : o.permissions) || {};
|
|
58
|
+
return l(() => {
|
|
59
|
+
(e === "TEACHER" || f && e === "STUDENT") && d(n, {
|
|
55
60
|
with_sheets: !0,
|
|
56
61
|
with_recommended_chapters: !0
|
|
57
62
|
});
|
|
58
|
-
}, [
|
|
59
|
-
|
|
63
|
+
}, [d, f, n, e]), v || N ? /* @__PURE__ */ m(S, {}) : R || A ? /* @__PURE__ */ m("p", { children: "Error" }) : t && E ? /* @__PURE__ */ m(
|
|
64
|
+
H,
|
|
60
65
|
{
|
|
61
66
|
flow: "DRAFT_EDIT",
|
|
62
67
|
board: P,
|
|
63
|
-
schoolData:
|
|
64
|
-
studentId:
|
|
65
|
-
studentName:
|
|
66
|
-
height:
|
|
67
|
-
formData:
|
|
68
|
-
config:
|
|
69
|
-
onFormDataChange:
|
|
70
|
-
onPreSubmit:
|
|
71
|
-
onExit:
|
|
72
|
-
onChapterExitWarning:
|
|
68
|
+
schoolData: _,
|
|
69
|
+
studentId: u,
|
|
70
|
+
studentName: W.titleCase(h),
|
|
71
|
+
height: D,
|
|
72
|
+
formData: E,
|
|
73
|
+
config: t,
|
|
74
|
+
onFormDataChange: G,
|
|
75
|
+
onPreSubmit: p,
|
|
76
|
+
onExit: x,
|
|
77
|
+
onChapterExitWarning: F,
|
|
73
78
|
userType: e,
|
|
74
|
-
grade:
|
|
75
|
-
milestoneId:
|
|
79
|
+
grade: M,
|
|
80
|
+
milestoneId: n,
|
|
76
81
|
isGoalCreation: !0,
|
|
77
|
-
courseStream: (o == null ? void 0 : o.course_stream) ||
|
|
78
|
-
classRatio:
|
|
79
|
-
enrollmentType:
|
|
80
|
-
canDeleteGoal:
|
|
81
|
-
onDeleteGoal:
|
|
82
|
+
courseStream: (o == null ? void 0 : o.course_stream) || s,
|
|
83
|
+
classRatio: w,
|
|
84
|
+
enrollmentType: a,
|
|
85
|
+
canDeleteGoal: U,
|
|
86
|
+
onDeleteGoal: b,
|
|
87
|
+
isTrialSession: f
|
|
82
88
|
}
|
|
83
89
|
) : null;
|
|
84
90
|
}
|
|
85
|
-
),
|
|
91
|
+
), $ = q;
|
|
86
92
|
export {
|
|
87
|
-
|
|
93
|
+
$ as default
|
|
88
94
|
};
|
|
89
95
|
//# sourceMappingURL=goal-draft-edit-container.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goal-draft-edit-container.js","sources":["../../../../../src/features/milestone/edit/goal-drafts/goal-draft-edit-container.tsx"],"sourcesContent":["import { titleCase } from 'humanize-plus';\nimport { memo, useEffect, useMemo, type FC } from 'react';\n\nimport { useGetMileStoneConfig } from '../../create/api/milestone-config';\nimport MilestoneCreate from '../../create/milestone-create';\nimport { useMilestoneGet } from '../comps/edit-milestone-modal/api/get-milestone';\nimport MilestoneEditLoader from '../comps/milestone-edit-loader/milestone-edit-loader';\nimport { transformGoalData } from '../goal-edit-helpers';\nimport type { IMileStoneEditContainerProps } from '../milestone-edit-types';\n\nconst GoalDraftEditContainer: FC<IMileStoneEditContainerProps> = memo(\n function GoalDraftEditContainer({\n studentName,\n studentId,\n height,\n onFormDataChange: handleFormDataChange,\n onPreSubmit: handlePreSubmit,\n onExit: handleExit,\n onChapterExitWarning: handleChapterExitWarning,\n userType,\n board,\n schoolData,\n grade,\n milestoneId,\n currentCountryCode,\n courseStream,\n classRatio,\n enrollmentType,\n onDeleteGoal,\n }) {\n const {\n get: getConfig,\n data: configData,\n isProcessing: isConfigProcessing,\n isProcessingFailed: isConfigProcessingFailed,\n } = useGetMileStoneConfig();\n\n useEffect(() => {\n getConfig('', undefined);\n }, [getConfig]);\n\n const {\n get: getMilestone,\n data: currentMilestoneData,\n isProcessing: isMilestoneProcessing,\n isProcessingFailed: isMilestoneProcessingFailed,\n } = useMilestoneGet(milestoneId);\n\n const convertedData = useMemo(\n () =>\n currentMilestoneData &&\n configData &&\n transformGoalData({\n currentMilestoneData,\n config: configData,\n courseStream,\n enrollmentType,\n currentCountryCode,\n }),\n [configData, currentCountryCode, enrollmentType, currentMilestoneData, courseStream],\n );\n const { can_delete: canDeleteGoal } = currentMilestoneData?.permissions || {};\n\n useEffect(() => {\n if (userType === 'TEACHER')\n getMilestone(milestoneId, {\n with_sheets: true,\n with_recommended_chapters: true,\n });\n }, [getMilestone, milestoneId, userType]);\n\n if (isConfigProcessing || isMilestoneProcessing) return <MilestoneEditLoader />;\n\n if (isMilestoneProcessingFailed || isConfigProcessingFailed) {\n return <p>Error</p>;\n }\n\n return configData &&
|
|
1
|
+
{"version":3,"file":"goal-draft-edit-container.js","sources":["../../../../../src/features/milestone/edit/goal-drafts/goal-draft-edit-container.tsx"],"sourcesContent":["import { titleCase } from 'humanize-plus';\nimport { memo, useEffect, useMemo, type FC } from 'react';\n\nimport { useGetMileStoneConfig } from '../../create/api/milestone-config';\nimport MilestoneCreate from '../../create/milestone-create';\nimport { useMilestoneGet } from '../comps/edit-milestone-modal/api/get-milestone';\nimport MilestoneEditLoader from '../comps/milestone-edit-loader/milestone-edit-loader';\nimport { transformGoalData } from '../goal-edit-helpers';\nimport type { IMileStoneEditContainerProps } from '../milestone-edit-types';\n\nconst GoalDraftEditContainer: FC<IMileStoneEditContainerProps> = memo(\n function GoalDraftEditContainer({\n studentName,\n studentId,\n height,\n formData: formDataProp,\n onFormDataChange: handleFormDataChange,\n onPreSubmit: handlePreSubmit,\n onExit: handleExit,\n onChapterExitWarning: handleChapterExitWarning,\n userType,\n board,\n schoolData,\n grade,\n milestoneId,\n currentCountryCode,\n courseStream,\n classRatio,\n enrollmentType,\n onDeleteGoal,\n isTrialSession,\n }) {\n const {\n get: getConfig,\n data: configData,\n isProcessing: isConfigProcessing,\n isProcessingFailed: isConfigProcessingFailed,\n } = useGetMileStoneConfig();\n\n useEffect(() => {\n getConfig('', undefined);\n }, [getConfig]);\n\n const {\n get: getMilestone,\n data: currentMilestoneData,\n isProcessing: isMilestoneProcessing,\n isProcessingFailed: isMilestoneProcessingFailed,\n } = useMilestoneGet(milestoneId);\n\n const convertedData = useMemo(\n () =>\n currentMilestoneData &&\n configData &&\n transformGoalData({\n currentMilestoneData,\n config: configData,\n courseStream,\n enrollmentType,\n currentCountryCode,\n }),\n [configData, currentCountryCode, enrollmentType, currentMilestoneData, courseStream],\n );\n\n const formDataToUse = useMemo(() => {\n if (!formDataProp || !convertedData) return formDataProp || convertedData;\n\n return {\n ...convertedData,\n ...formDataProp,\n };\n }, [formDataProp, convertedData]);\n\n const { can_delete: canDeleteGoal } = currentMilestoneData?.permissions || {};\n\n useEffect(() => {\n if (userType === 'TEACHER' || (isTrialSession && userType === 'STUDENT'))\n getMilestone(milestoneId, {\n with_sheets: true,\n with_recommended_chapters: true,\n });\n }, [getMilestone, isTrialSession, milestoneId, userType]);\n\n if (isConfigProcessing || isMilestoneProcessing) return <MilestoneEditLoader />;\n\n if (isMilestoneProcessingFailed || isConfigProcessingFailed) {\n return <p>Error</p>;\n }\n\n return configData && formDataToUse ? (\n <MilestoneCreate\n flow=\"DRAFT_EDIT\"\n board={board}\n schoolData={schoolData}\n studentId={studentId}\n studentName={titleCase(studentName)}\n height={height}\n formData={formDataToUse}\n config={configData}\n onFormDataChange={handleFormDataChange}\n onPreSubmit={handlePreSubmit}\n onExit={handleExit}\n onChapterExitWarning={handleChapterExitWarning}\n userType={userType}\n grade={grade}\n milestoneId={milestoneId}\n isGoalCreation={true}\n courseStream={currentMilestoneData?.course_stream || courseStream}\n classRatio={classRatio}\n enrollmentType={enrollmentType}\n canDeleteGoal={canDeleteGoal}\n onDeleteGoal={onDeleteGoal}\n isTrialSession={isTrialSession}\n />\n ) : null;\n },\n);\n\nexport default GoalDraftEditContainer;\n"],"names":["GoalDraftEditContainer","memo","studentName","studentId","height","formDataProp","handleFormDataChange","handlePreSubmit","handleExit","handleChapterExitWarning","userType","board","schoolData","grade","milestoneId","currentCountryCode","courseStream","classRatio","enrollmentType","onDeleteGoal","isTrialSession","getConfig","configData","isConfigProcessing","isConfigProcessingFailed","useGetMileStoneConfig","useEffect","getMilestone","currentMilestoneData","isMilestoneProcessing","isMilestoneProcessingFailed","useMilestoneGet","convertedData","useMemo","transformGoalData","formDataToUse","canDeleteGoal","jsx","MilestoneEditLoader","MilestoneCreate","titleCase","GoalDraftEdit"],"mappings":";;;;;;;;AAUA,MAAMA,IAA2DC;AAAA,EAC/D,SAAgC;AAAA,IAC9B,aAAAC;AAAA,IACA,WAAAC;AAAA,IACA,QAAAC;AAAA,IACA,UAAUC;AAAA,IACV,kBAAkBC;AAAA,IAClB,aAAaC;AAAA,IACb,QAAQC;AAAA,IACR,sBAAsBC;AAAA,IACtB,UAAAC;AAAA,IACA,OAAAC;AAAA,IACA,YAAAC;AAAA,IACA,OAAAC;AAAA,IACA,aAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,YAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,gBAAAC;AAAA,EAAA,GACC;AACK,UAAA;AAAA,MACJ,KAAKC;AAAA,MACL,MAAMC;AAAA,MACN,cAAcC;AAAA,MACd,oBAAoBC;AAAA,QAClBC,EAAsB;AAE1B,IAAAC,EAAU,MAAM;AACd,MAAAL,EAAU,IAAI,MAAS;AAAA,IAAA,GACtB,CAACA,CAAS,CAAC;AAER,UAAA;AAAA,MACJ,KAAKM;AAAA,MACL,MAAMC;AAAA,MACN,cAAcC;AAAA,MACd,oBAAoBC;AAAA,IAAA,IAClBC,EAAgBjB,CAAW,GAEzBkB,IAAgBC;AAAA,MACpB,MACEL,KACAN,KACAY,EAAkB;AAAA,QAChB,sBAAAN;AAAA,QACA,QAAQN;AAAA,QACR,cAAAN;AAAA,QACA,gBAAAE;AAAA,QACA,oBAAAH;AAAA,MAAA,CACD;AAAA,MACH,CAACO,GAAYP,GAAoBG,GAAgBU,GAAsBZ,CAAY;AAAA,IAAA,GAG/EmB,IAAgBF,EAAQ,MACxB,CAAC5B,KAAgB,CAAC2B,IAAsB3B,KAAgB2B,IAErD;AAAA,MACL,GAAGA;AAAA,MACH,GAAG3B;AAAA,IAAA,GAEJ,CAACA,GAAc2B,CAAa,CAAC,GAE1B,EAAE,YAAYI,EAAA,KAAkBR,KAAA,gBAAAA,EAAsB,gBAAe,CAAA;AAU3E,WARAF,EAAU,MAAM;AACV,OAAAhB,MAAa,aAAcU,KAAkBV,MAAa,cAC5DiB,EAAab,GAAa;AAAA,QACxB,aAAa;AAAA,QACb,2BAA2B;AAAA,MAAA,CAC5B;AAAA,OACF,CAACa,GAAcP,GAAgBN,GAAaJ,CAAQ,CAAC,GAEpDa,KAAsBM,IAA8B,gBAAAQ,EAACC,GAAoB,CAAA,CAAA,IAEzER,KAA+BN,IAC1B,gBAAAa,EAAC,OAAE,UAAK,QAAA,CAAA,IAGVf,KAAca,IACnB,gBAAAE;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAA5B;AAAA,QACA,YAAAC;AAAA,QACA,WAAAT;AAAA,QACA,aAAaqC,YAAUtC,CAAW;AAAA,QAClC,QAAAE;AAAA,QACA,UAAU+B;AAAA,QACV,QAAQb;AAAA,QACR,kBAAkBhB;AAAA,QAClB,aAAaC;AAAA,QACb,QAAQC;AAAA,QACR,sBAAsBC;AAAA,QACtB,UAAAC;AAAA,QACA,OAAAG;AAAA,QACA,aAAAC;AAAA,QACA,gBAAgB;AAAA,QAChB,eAAcc,KAAA,gBAAAA,EAAsB,kBAAiBZ;AAAA,QACrD,YAAAC;AAAA,QACA,gBAAAC;AAAA,QACA,eAAAkB;AAAA,QACA,cAAAjB;AAAA,QACA,gBAAAC;AAAA,MAAA;AAAA,IAEA,IAAA;AAAA,EACN;AACF,GAEAqB,IAAezC;"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { useRef as b, useMemo as p, useCallback as g, useEffect as M } from "react";
|
|
2
|
+
import { useMessageBrokerChannel as N } from "@cuemath/cue-message-broker";
|
|
3
|
+
const R = ({
|
|
4
|
+
channelId: d,
|
|
5
|
+
isTeacher: a
|
|
6
|
+
}) => {
|
|
7
|
+
const r = b(void 0), C = p(
|
|
8
|
+
() => ({
|
|
9
|
+
channelId: d,
|
|
10
|
+
ttl: 1
|
|
11
|
+
}),
|
|
12
|
+
[d]
|
|
13
|
+
), { channelStatus: m, setChannelMetadata: i, channelMetadata: o, channel: s } = N({
|
|
14
|
+
channelOptions: C,
|
|
15
|
+
metadataRequired: !0,
|
|
16
|
+
enabled: d !== void 0
|
|
17
|
+
}), h = p(() => {
|
|
18
|
+
if (!a)
|
|
19
|
+
return o ?? void 0;
|
|
20
|
+
}, [a, o]), _ = g(
|
|
21
|
+
(t) => {
|
|
22
|
+
var c, l, u;
|
|
23
|
+
if (!a || !i) return;
|
|
24
|
+
const S = (c = t.primaryChaptersList) == null ? void 0 : c.map((e) => ({
|
|
25
|
+
id: e.id,
|
|
26
|
+
name: e.name,
|
|
27
|
+
added: e.added,
|
|
28
|
+
isFamiliarWith: e.isFamiliarWith,
|
|
29
|
+
search_and_added: e.search_and_added,
|
|
30
|
+
chapter_tags: e.chapter_tags,
|
|
31
|
+
image_url: e.image_url,
|
|
32
|
+
program_id: e.program_id
|
|
33
|
+
})), y = (l = t.selectedChaptersList) == null ? void 0 : l.map((e) => ({
|
|
34
|
+
id: e.id,
|
|
35
|
+
name: e.name,
|
|
36
|
+
added: e.added,
|
|
37
|
+
chapter_tags: e.chapter_tags,
|
|
38
|
+
image_url: e.image_url
|
|
39
|
+
})), F = (u = t.searchedChaptersList) == null ? void 0 : u.map((e) => ({
|
|
40
|
+
id: e.id,
|
|
41
|
+
name: e.name,
|
|
42
|
+
added: e.added,
|
|
43
|
+
chapter_tags: e.chapter_tags,
|
|
44
|
+
image_url: e.image_url
|
|
45
|
+
})), n = {
|
|
46
|
+
testType: t.testType,
|
|
47
|
+
grade: t.grade,
|
|
48
|
+
board: t.board,
|
|
49
|
+
testName: t.testName,
|
|
50
|
+
academicEventId: t.academicEventId,
|
|
51
|
+
milestoneEndDate: t.milestoneEndDate,
|
|
52
|
+
milestoneEndDateIsTentative: t.milestoneEndDateIsTentative,
|
|
53
|
+
primaryChaptersList: S,
|
|
54
|
+
selectedChaptersList: y,
|
|
55
|
+
searchedChaptersList: F,
|
|
56
|
+
searchChapterFields: t.searchChapterFields,
|
|
57
|
+
addCustomChapters: t.addCustomChapters,
|
|
58
|
+
chapterSubStages: t.chapterSubStages,
|
|
59
|
+
committed: t.committed,
|
|
60
|
+
updated: t.updated,
|
|
61
|
+
reviewed: t.reviewed
|
|
62
|
+
}, L = JSON.stringify(n), E = JSON.stringify(r.current);
|
|
63
|
+
L !== E && (r.current = n, i(n));
|
|
64
|
+
},
|
|
65
|
+
[a, i]
|
|
66
|
+
), v = g(() => {
|
|
67
|
+
s && (s.removeChannelMetadata(), setTimeout(() => {
|
|
68
|
+
s.destroyChannel();
|
|
69
|
+
}, 500));
|
|
70
|
+
}, [s]);
|
|
71
|
+
return M(() => {
|
|
72
|
+
!m && s && s.init();
|
|
73
|
+
}, [s, m]), {
|
|
74
|
+
syncedFormData: h,
|
|
75
|
+
setSyncFormData: _,
|
|
76
|
+
closeChannel: v
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
export {
|
|
80
|
+
R as useMilestoneEditSync
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=use-milestone-edit-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-milestone-edit-sync.js","sources":["../../../../../src/features/milestone/edit/hooks/use-milestone-edit-sync.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { useMessageBrokerChannel } from '@cuemath/cue-message-broker';\n\nimport type { IMilestoneFormData } from '../../create/milestone-create-types';\nimport type { IChapter } from '../../create/comps/chapter-item/chapter-item-types';\n\ninterface IUseMilestoneEditSyncParams {\n channelId: string;\n isTeacher: boolean;\n}\n\ninterface IUseMilestoneEditSync {\n syncedFormData: Partial<IMilestoneFormData> | undefined;\n setSyncFormData: (formData: IMilestoneFormData) => void;\n closeChannel: () => void;\n}\n\nexport const useMilestoneEditSync = ({\n channelId,\n isTeacher,\n}: IUseMilestoneEditSyncParams): IUseMilestoneEditSync => {\n const prevFormDataRef = useRef<Partial<IMilestoneFormData> | undefined>(undefined);\n\n const channelOptions = useMemo(\n () => ({\n channelId,\n ttl: 1,\n }),\n [channelId],\n );\n\n const { channelStatus, setChannelMetadata, channelMetadata, channel } = useMessageBrokerChannel<\n never,\n Partial<IMilestoneFormData>\n >({\n channelOptions,\n metadataRequired: true,\n enabled: channelId !== undefined,\n });\n\n const syncedFormData = useMemo(() => {\n if (isTeacher) return undefined;\n\n return channelMetadata ?? undefined;\n }, [isTeacher, channelMetadata]);\n\n const setSyncFormData = useCallback(\n (formData: IMilestoneFormData) => {\n if (!isTeacher || !setChannelMetadata) return;\n\n // Optimize chapter lists to include essential rendering data\n const optimizePrimaryChaptersList = formData.primaryChaptersList?.map(chapter => ({\n id: chapter.id,\n name: chapter.name,\n added: chapter.added,\n isFamiliarWith: chapter.isFamiliarWith,\n search_and_added: chapter.search_and_added,\n chapter_tags: chapter.chapter_tags,\n image_url: chapter.image_url,\n program_id: chapter.program_id,\n }));\n\n const optimizeSelectedChaptersList = formData.selectedChaptersList?.map(chapter => ({\n id: chapter.id,\n name: chapter.name,\n added: chapter.added,\n chapter_tags: chapter.chapter_tags,\n image_url: chapter.image_url,\n }));\n\n const optimizeSearchedChaptersList = formData.searchedChaptersList?.map(chapter => ({\n id: chapter.id,\n name: chapter.name,\n added: chapter.added,\n chapter_tags: chapter.chapter_tags,\n image_url: chapter.image_url,\n }));\n\n const syncFormData: Partial<IMilestoneFormData> = {\n testType: formData.testType,\n grade: formData.grade,\n board: formData.board,\n testName: formData.testName,\n academicEventId: formData.academicEventId,\n milestoneEndDate: formData.milestoneEndDate,\n milestoneEndDateIsTentative: formData.milestoneEndDateIsTentative,\n primaryChaptersList: optimizePrimaryChaptersList as IChapter[],\n selectedChaptersList: optimizeSelectedChaptersList as IChapter[],\n searchedChaptersList: optimizeSearchedChaptersList as IChapter[],\n searchChapterFields: formData.searchChapterFields,\n addCustomChapters: formData.addCustomChapters,\n chapterSubStages: formData.chapterSubStages,\n committed: formData.committed,\n updated: formData.updated,\n reviewed: formData.reviewed,\n };\n\n const currentFormDataString = JSON.stringify(syncFormData);\n const prevFormDataString = JSON.stringify(prevFormDataRef.current);\n\n if (currentFormDataString === prevFormDataString) return;\n\n prevFormDataRef.current = syncFormData;\n setChannelMetadata(syncFormData);\n },\n [isTeacher, setChannelMetadata],\n );\n\n const closeChannel = useCallback(() => {\n if (channel) {\n channel.removeChannelMetadata();\n setTimeout(() => {\n channel.destroyChannel();\n }, 500);\n }\n }, [channel]);\n\n useEffect(() => {\n if (!channelStatus && channel) {\n channel.init();\n }\n }, [channel, channelStatus]);\n\n return {\n syncedFormData,\n setSyncFormData,\n closeChannel,\n };\n};\n"],"names":["useMilestoneEditSync","channelId","isTeacher","prevFormDataRef","useRef","channelOptions","useMemo","channelStatus","setChannelMetadata","channelMetadata","channel","useMessageBrokerChannel","syncedFormData","setSyncFormData","useCallback","formData","optimizePrimaryChaptersList","_a","chapter","optimizeSelectedChaptersList","_b","optimizeSearchedChaptersList","_c","syncFormData","currentFormDataString","prevFormDataString","closeChannel","useEffect"],"mappings":";;AAkBO,MAAMA,IAAuB,CAAC;AAAA,EACnC,WAAAC;AAAA,EACA,WAAAC;AACF,MAA0D;AAClD,QAAAC,IAAkBC,EAAgD,MAAS,GAE3EC,IAAiBC;AAAA,IACrB,OAAO;AAAA,MACL,WAAAL;AAAA,MACA,KAAK;AAAA,IAAA;AAAA,IAEP,CAACA,CAAS;AAAA,EAAA,GAGN,EAAE,eAAAM,GAAe,oBAAAC,GAAoB,iBAAAC,GAAiB,SAAAC,EAAA,IAAYC,EAGtE;AAAA,IACA,gBAAAN;AAAA,IACA,kBAAkB;AAAA,IAClB,SAASJ,MAAc;AAAA,EAAA,CACxB,GAEKW,IAAiBN,EAAQ,MAAM;AACnC,QAAI,CAAAJ;AAEJ,aAAOO,KAAmB;AAAA,EAAA,GACzB,CAACP,GAAWO,CAAe,CAAC,GAEzBI,IAAkBC;AAAA,IACtB,CAACC,MAAiC;;AAC5B,UAAA,CAACb,KAAa,CAACM,EAAoB;AAGvC,YAAMQ,KAA8BC,IAAAF,EAAS,wBAAT,gBAAAE,EAA8B,IAAI,CAAYC,OAAA;AAAA,QAChF,IAAIA,EAAQ;AAAA,QACZ,MAAMA,EAAQ;AAAA,QACd,OAAOA,EAAQ;AAAA,QACf,gBAAgBA,EAAQ;AAAA,QACxB,kBAAkBA,EAAQ;AAAA,QAC1B,cAAcA,EAAQ;AAAA,QACtB,WAAWA,EAAQ;AAAA,QACnB,YAAYA,EAAQ;AAAA,MACpB,KAEIC,KAA+BC,IAAAL,EAAS,yBAAT,gBAAAK,EAA+B,IAAI,CAAYF,OAAA;AAAA,QAClF,IAAIA,EAAQ;AAAA,QACZ,MAAMA,EAAQ;AAAA,QACd,OAAOA,EAAQ;AAAA,QACf,cAAcA,EAAQ;AAAA,QACtB,WAAWA,EAAQ;AAAA,MACnB,KAEIG,KAA+BC,IAAAP,EAAS,yBAAT,gBAAAO,EAA+B,IAAI,CAAYJ,OAAA;AAAA,QAClF,IAAIA,EAAQ;AAAA,QACZ,MAAMA,EAAQ;AAAA,QACd,OAAOA,EAAQ;AAAA,QACf,cAAcA,EAAQ;AAAA,QACtB,WAAWA,EAAQ;AAAA,MACnB,KAEIK,IAA4C;AAAA,QAChD,UAAUR,EAAS;AAAA,QACnB,OAAOA,EAAS;AAAA,QAChB,OAAOA,EAAS;AAAA,QAChB,UAAUA,EAAS;AAAA,QACnB,iBAAiBA,EAAS;AAAA,QAC1B,kBAAkBA,EAAS;AAAA,QAC3B,6BAA6BA,EAAS;AAAA,QACtC,qBAAqBC;AAAA,QACrB,sBAAsBG;AAAA,QACtB,sBAAsBE;AAAA,QACtB,qBAAqBN,EAAS;AAAA,QAC9B,mBAAmBA,EAAS;AAAA,QAC5B,kBAAkBA,EAAS;AAAA,QAC3B,WAAWA,EAAS;AAAA,QACpB,SAASA,EAAS;AAAA,QAClB,UAAUA,EAAS;AAAA,MAAA,GAGfS,IAAwB,KAAK,UAAUD,CAAY,GACnDE,IAAqB,KAAK,UAAUtB,EAAgB,OAAO;AAEjE,MAAIqB,MAA0BC,MAE9BtB,EAAgB,UAAUoB,GAC1Bf,EAAmBe,CAAY;AAAA,IACjC;AAAA,IACA,CAACrB,GAAWM,CAAkB;AAAA,EAAA,GAG1BkB,IAAeZ,EAAY,MAAM;AACrC,IAAIJ,MACFA,EAAQ,sBAAsB,GAC9B,WAAW,MAAM;AACf,MAAAA,EAAQ,eAAe;AAAA,OACtB,GAAG;AAAA,EACR,GACC,CAACA,CAAO,CAAC;AAEZ,SAAAiB,EAAU,MAAM;AACV,IAAA,CAACpB,KAAiBG,KACpBA,EAAQ,KAAK;AAAA,EACf,GACC,CAACA,GAASH,CAAa,CAAC,GAEpB;AAAA,IACL,gBAAAK;AAAA,IACA,iBAAAC;AAAA,IACA,cAAAa;AAAA,EAAA;AAEJ;"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { useRef as C, useMemo as l, useCallback as S, useEffect as g } from "react";
|
|
2
|
+
import { useMessageBrokerChannel as h } from "@cuemath/cue-message-broker";
|
|
3
|
+
const b = ({
|
|
4
|
+
channelId: n,
|
|
5
|
+
isTeacher: e
|
|
6
|
+
}) => {
|
|
7
|
+
const r = C(void 0), f = l(
|
|
8
|
+
() => ({
|
|
9
|
+
channelId: n,
|
|
10
|
+
ttl: 1
|
|
11
|
+
}),
|
|
12
|
+
[n]
|
|
13
|
+
), { channelStatus: c, setChannelMetadata: a, channelMetadata: s, channel: t } = h({
|
|
14
|
+
channelOptions: f,
|
|
15
|
+
metadataRequired: !0,
|
|
16
|
+
enabled: n !== void 0
|
|
17
|
+
}), d = l(() => {
|
|
18
|
+
if (!(e || !s))
|
|
19
|
+
return s;
|
|
20
|
+
}, [e, s]), M = S(
|
|
21
|
+
(i, p) => {
|
|
22
|
+
if (!e || !a) return;
|
|
23
|
+
const u = r.current || {}, o = {
|
|
24
|
+
...u,
|
|
25
|
+
[i]: {
|
|
26
|
+
...u[i],
|
|
27
|
+
...p
|
|
28
|
+
}
|
|
29
|
+
}, v = JSON.stringify(o), y = JSON.stringify(r.current);
|
|
30
|
+
v !== y && (r.current = o, a(o));
|
|
31
|
+
},
|
|
32
|
+
[e, a]
|
|
33
|
+
), m = S(() => {
|
|
34
|
+
t && (t.removeChannelMetadata(), setTimeout(() => {
|
|
35
|
+
t.destroyChannel();
|
|
36
|
+
}, 500));
|
|
37
|
+
}, [t]);
|
|
38
|
+
return g(() => {
|
|
39
|
+
!c && t && t.init();
|
|
40
|
+
}, [t, c]), {
|
|
41
|
+
syncedState: d,
|
|
42
|
+
setSyncState: M,
|
|
43
|
+
closeChannel: m
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
export {
|
|
47
|
+
b as useMilestoneListSync
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=use-milestone-list-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-milestone-list-sync.js","sources":["../../../../../src/features/milestone/milestone-list-container/hooks/use-milestone-list-sync.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { useMessageBrokerChannel } from '@cuemath/cue-message-broker';\n\nimport type { IMilestoneState } from '../../../trial-session/trial-session-types';\n\ninterface IUseMilestoneListSyncParams {\n channelId: string;\n isTeacher: boolean;\n}\n\ninterface IUseMilestoneListSync {\n syncedState: IMilestoneState | undefined;\n setSyncState: (milestoneId: string, state: IMilestoneState[string]) => void;\n closeChannel: () => void;\n}\n\nexport const useMilestoneListSync = ({\n channelId,\n isTeacher,\n}: IUseMilestoneListSyncParams): IUseMilestoneListSync => {\n const prevStateRef = useRef<IMilestoneState | undefined>(undefined);\n\n const channelOptions = useMemo(\n () => ({\n channelId,\n ttl: 1,\n }),\n [channelId],\n );\n\n const { channelStatus, setChannelMetadata, channelMetadata, channel } = useMessageBrokerChannel<\n never,\n IMilestoneState\n >({\n channelOptions,\n metadataRequired: true,\n enabled: channelId !== undefined,\n });\n\n const syncedState = useMemo(() => {\n if (isTeacher || !channelMetadata) return undefined;\n\n return channelMetadata;\n }, [isTeacher, channelMetadata]);\n\n const setSyncState = useCallback(\n (milestoneId: string, state: IMilestoneState[string]) => {\n if (!isTeacher || !setChannelMetadata) return;\n\n // Merge with existing milestone state\n const currentMilestoneState: IMilestoneState = prevStateRef.current || {};\n\n const updatedMilestoneState: IMilestoneState = {\n ...currentMilestoneState,\n [milestoneId]: {\n ...currentMilestoneState[milestoneId],\n ...state,\n },\n };\n\n const currentStateString = JSON.stringify(updatedMilestoneState);\n const prevStateString = JSON.stringify(prevStateRef.current);\n\n if (currentStateString === prevStateString) return;\n\n prevStateRef.current = updatedMilestoneState;\n setChannelMetadata(updatedMilestoneState);\n },\n [isTeacher, setChannelMetadata],\n );\n\n const closeChannel = useCallback(() => {\n if (channel) {\n channel.removeChannelMetadata();\n setTimeout(() => {\n channel.destroyChannel();\n }, 500);\n }\n }, [channel]);\n\n useEffect(() => {\n if (!channelStatus && channel) {\n channel.init();\n }\n }, [channel, channelStatus]);\n\n return {\n syncedState,\n setSyncState,\n closeChannel,\n };\n};\n"],"names":["useMilestoneListSync","channelId","isTeacher","prevStateRef","useRef","channelOptions","useMemo","channelStatus","setChannelMetadata","channelMetadata","channel","useMessageBrokerChannel","syncedState","setSyncState","useCallback","milestoneId","state","currentMilestoneState","updatedMilestoneState","currentStateString","prevStateString","closeChannel","useEffect"],"mappings":";;AAiBO,MAAMA,IAAuB,CAAC;AAAA,EACnC,WAAAC;AAAA,EACA,WAAAC;AACF,MAA0D;AAClD,QAAAC,IAAeC,EAAoC,MAAS,GAE5DC,IAAiBC;AAAA,IACrB,OAAO;AAAA,MACL,WAAAL;AAAA,MACA,KAAK;AAAA,IAAA;AAAA,IAEP,CAACA,CAAS;AAAA,EAAA,GAGN,EAAE,eAAAM,GAAe,oBAAAC,GAAoB,iBAAAC,GAAiB,SAAAC,EAAA,IAAYC,EAGtE;AAAA,IACA,gBAAAN;AAAA,IACA,kBAAkB;AAAA,IAClB,SAASJ,MAAc;AAAA,EAAA,CACxB,GAEKW,IAAcN,EAAQ,MAAM;AAC5B,QAAA,EAAAJ,KAAa,CAACO;AAEX,aAAAA;AAAA,EAAA,GACN,CAACP,GAAWO,CAAe,CAAC,GAEzBI,IAAeC;AAAA,IACnB,CAACC,GAAqBC,MAAmC;AACnD,UAAA,CAACd,KAAa,CAACM,EAAoB;AAGjC,YAAAS,IAAyCd,EAAa,WAAW,IAEjEe,IAAyC;AAAA,QAC7C,GAAGD;AAAA,QACH,CAACF,CAAW,GAAG;AAAA,UACb,GAAGE,EAAsBF,CAAW;AAAA,UACpC,GAAGC;AAAA,QACL;AAAA,MAAA,GAGIG,IAAqB,KAAK,UAAUD,CAAqB,GACzDE,IAAkB,KAAK,UAAUjB,EAAa,OAAO;AAE3D,MAAIgB,MAAuBC,MAE3BjB,EAAa,UAAUe,GACvBV,EAAmBU,CAAqB;AAAA,IAC1C;AAAA,IACA,CAAChB,GAAWM,CAAkB;AAAA,EAAA,GAG1Ba,IAAeP,EAAY,MAAM;AACrC,IAAIJ,MACFA,EAAQ,sBAAsB,GAC9B,WAAW,MAAM;AACf,MAAAA,EAAQ,eAAe;AAAA,OACtB,GAAG;AAAA,EACR,GACC,CAACA,CAAO,CAAC;AAEZ,SAAAY,EAAU,MAAM;AACV,IAAA,CAACf,KAAiBG,KACpBA,EAAQ,KAAK;AAAA,EACf,GACC,CAACA,GAASH,CAAa,CAAC,GAEpB;AAAA,IACL,aAAAK;AAAA,IACA,cAAAC;AAAA,IACA,cAAAQ;AAAA,EAAA;AAEJ;"}
|