@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.
Files changed (127) hide show
  1. package/dist/features/homework/homework-card.js +122 -121
  2. package/dist/features/homework/homework-card.js.map +1 -1
  3. package/dist/features/milestone/create/comps/add-custom-chapter/add-custom-chapter.js +66 -61
  4. package/dist/features/milestone/create/comps/add-custom-chapter/add-custom-chapter.js.map +1 -1
  5. package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js +56 -55
  6. package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js.map +1 -1
  7. package/dist/features/milestone/create/comps/add-custom-chapter/search-chapter/search-chapters.js +32 -25
  8. package/dist/features/milestone/create/comps/add-custom-chapter/search-chapter/search-chapters.js.map +1 -1
  9. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapter-item.js +16 -15
  10. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapter-item.js.map +1 -1
  11. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapters.js +17 -10
  12. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapters.js.map +1 -1
  13. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/tags-render.js +6 -6
  14. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/tags-render.js.map +1 -1
  15. package/dist/features/milestone/create/comps/body-layout/body-layout.js +30 -29
  16. package/dist/features/milestone/create/comps/body-layout/body-layout.js.map +1 -1
  17. package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js +77 -74
  18. package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js.map +1 -1
  19. package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.js +82 -79
  20. package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.js.map +1 -1
  21. package/dist/features/milestone/create/milestone-create-styled.js +8 -8
  22. package/dist/features/milestone/create/milestone-create-styled.js.map +1 -1
  23. package/dist/features/milestone/create/milestone-create.js +48 -46
  24. package/dist/features/milestone/create/milestone-create.js.map +1 -1
  25. package/dist/features/milestone/edit/goal-draft-edit-sync.js +26 -0
  26. package/dist/features/milestone/edit/goal-draft-edit-sync.js.map +1 -0
  27. package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-container.js +72 -66
  28. package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-container.js.map +1 -1
  29. package/dist/features/milestone/edit/hooks/use-milestone-edit-sync.js +82 -0
  30. package/dist/features/milestone/edit/hooks/use-milestone-edit-sync.js.map +1 -0
  31. package/dist/features/milestone/milestone-list-container/hooks/use-milestone-list-sync.js +49 -0
  32. package/dist/features/milestone/milestone-list-container/hooks/use-milestone-list-sync.js.map +1 -0
  33. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js +109 -105
  34. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js.map +1 -1
  35. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js +2 -2
  36. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js.map +1 -1
  37. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs-styled.js +21 -16
  38. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs-styled.js.map +1 -1
  39. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js +106 -98
  40. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js.map +1 -1
  41. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js +136 -117
  42. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js.map +1 -1
  43. package/dist/features/milestone/milestone-list-container/milestone-list-container.js +96 -92
  44. package/dist/features/milestone/milestone-list-container/milestone-list-container.js.map +1 -1
  45. package/dist/features/milestone/milestone-list-container/milestone-list-sync.js +25 -0
  46. package/dist/features/milestone/milestone-list-container/milestone-list-sync.js.map +1 -0
  47. package/dist/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.js +78 -81
  48. package/dist/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.js.map +1 -1
  49. package/dist/features/milestone/milestone-resources/resources-assign/comps/filter-item/filter-item.js +28 -25
  50. package/dist/features/milestone/milestone-resources/resources-assign/comps/filter-item/filter-item.js.map +1 -1
  51. package/dist/features/milestone/milestone-resources/resources-assign/comps/resource-item/resource-item.js +39 -33
  52. package/dist/features/milestone/milestone-resources/resources-assign/comps/resource-item/resource-item.js.map +1 -1
  53. package/dist/features/milestone/milestone-resources/resources-assign/hooks/use-resource-assign-sync.js +50 -0
  54. package/dist/features/milestone/milestone-resources/resources-assign/hooks/use-resource-assign-sync.js.map +1 -0
  55. package/dist/features/milestone/milestone-resources/resources-assign/resource-assign-sync.js +25 -0
  56. package/dist/features/milestone/milestone-resources/resources-assign/resource-assign-sync.js.map +1 -0
  57. package/dist/features/milestone/milestone-resources/resources-assign/resource-items/resource-items.js +43 -53
  58. package/dist/features/milestone/milestone-resources/resources-assign/resource-items/resource-items.js.map +1 -1
  59. package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js +218 -174
  60. package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js.map +1 -1
  61. package/dist/features/milestone/milestone-resources/resources-assign/store/resource-assign-store.js +198 -0
  62. package/dist/features/milestone/milestone-resources/resources-assign/store/resource-assign-store.js.map +1 -0
  63. package/dist/features/milestone/milestone-resources/resources-list/resources-list.js +69 -67
  64. package/dist/features/milestone/milestone-resources/resources-list/resources-list.js.map +1 -1
  65. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js +46 -45
  66. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js.map +1 -1
  67. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js +34 -32
  68. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js.map +1 -1
  69. package/dist/features/milestone/milestone-tests/tests-creation/hooks/use-tests-creation-sync.js +52 -0
  70. package/dist/features/milestone/milestone-tests/tests-creation/hooks/use-tests-creation-sync.js.map +1 -0
  71. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/chapter-selection/chapter-selection.js +51 -41
  72. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/chapter-selection/chapter-selection.js.map +1 -1
  73. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/difficulty-and-duration-selection.js +85 -71
  74. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/difficulty-and-duration-selection.js.map +1 -1
  75. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview-styled.js +5 -5
  76. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview-styled.js.map +1 -1
  77. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js +36 -26
  78. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js.map +1 -1
  79. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-sync.js +25 -0
  80. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-sync.js.map +1 -0
  81. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-types.js +5 -0
  82. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-types.js.map +1 -0
  83. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation.js +150 -89
  84. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation.js.map +1 -1
  85. package/dist/features/sheet-v2/resource-list/resource-list.js +26 -24
  86. package/dist/features/sheet-v2/resource-list/resource-list.js.map +1 -1
  87. package/dist/features/trial-session/comps/learning-plan/index.js +218 -91
  88. package/dist/features/trial-session/comps/learning-plan/index.js.map +1 -1
  89. package/dist/features/trial-session/comps/learning-plan/learning-plan-styled.js +7 -6
  90. package/dist/features/trial-session/comps/learning-plan/learning-plan-styled.js.map +1 -1
  91. package/dist/features/trial-session/hooks/use-learning-plan-scroll-sync.js +75 -0
  92. package/dist/features/trial-session/hooks/use-learning-plan-scroll-sync.js.map +1 -0
  93. package/dist/features/trial-session/hooks/use-trial-session-navigation.js +125 -115
  94. package/dist/features/trial-session/hooks/use-trial-session-navigation.js.map +1 -1
  95. package/dist/features/trial-session/trial-session-types.js +3 -2
  96. package/dist/features/trial-session/trial-session-types.js.map +1 -1
  97. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js +69 -54
  98. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js.map +1 -1
  99. package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
  100. package/dist/features/worksheet/worksheet/worksheet.js +44 -33
  101. package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
  102. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js +25 -22
  103. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
  104. package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js +48 -44
  105. package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js.map +1 -1
  106. package/dist/features/worksheet/worksheet-preview/worksheet-preview.js +2 -2
  107. package/dist/features/worksheet/worksheet-preview/worksheet-preview.js.map +1 -1
  108. package/dist/index.d.ts +138 -2
  109. package/dist/node_modules/decode-uri-component/index.js.map +1 -0
  110. package/dist/node_modules/query-string/base.js +1 -1
  111. package/dist/node_modules/uuid/dist/esm-browser/native.js +7 -0
  112. package/dist/node_modules/uuid/dist/esm-browser/native.js.map +1 -0
  113. package/dist/node_modules/uuid/dist/esm-browser/rng.js +3 -2
  114. package/dist/node_modules/uuid/dist/esm-browser/rng.js.map +1 -1
  115. package/dist/node_modules/uuid/dist/esm-browser/stringify.js +6 -10
  116. package/dist/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -1
  117. package/dist/node_modules/uuid/dist/esm-browser/v4.js +12 -9
  118. package/dist/node_modules/uuid/dist/esm-browser/v4.js.map +1 -1
  119. package/package.json +1 -1
  120. package/dist/features/trial-session/comps/learning-plan/use-learning-plan-scroll-sync.js +0 -37
  121. package/dist/features/trial-session/comps/learning-plan/use-learning-plan-scroll-sync.js.map +0 -1
  122. package/dist/node_modules/query-string/node_modules/decode-uri-component/index.js.map +0 -1
  123. package/dist/node_modules/uuid/dist/esm-browser/regex.js +0 -5
  124. package/dist/node_modules/uuid/dist/esm-browser/regex.js.map +0 -1
  125. package/dist/node_modules/uuid/dist/esm-browser/validate.js +0 -8
  126. package/dist/node_modules/uuid/dist/esm-browser/validate.js.map +0 -1
  127. /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 s } from "react/jsx-runtime";
2
- import { h as A } from "../../../../node_modules/humanize-plus/dist/humanize.js";
3
- import { memo as R, useEffect as c, useMemo as S } from "react";
4
- import { useGetMileStoneConfig as W } from "../../create/api/milestone-config.js";
5
- import j from "../../create/milestone-create.js";
6
- import { useMilestoneGet as z } from "../comps/edit-milestone-modal/api/get-milestone.js";
7
- import H from "../comps/milestone-edit-loader/milestone-edit-loader.js";
8
- import { transformGoalData as L } from "../goal-edit-helpers.js";
9
- const N = R(
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: d,
12
- studentId: l,
13
- height: E,
14
- onFormDataChange: C,
15
- onPreSubmit: h,
16
- onExit: p,
17
- onChapterExitWarning: u,
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: D,
21
- grade: G,
22
- milestoneId: t,
23
- currentCountryCode: a,
24
- courseStream: r,
25
- classRatio: x,
26
- enrollmentType: n,
27
- onDeleteGoal: F
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: f,
31
- data: i,
32
- isProcessing: _,
33
- isProcessingFailed: M
34
- } = W();
35
- c(() => {
36
- f("", void 0);
37
- }, [f]);
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: m,
41
+ get: d,
40
42
  data: o,
41
- isProcessing: w,
42
- isProcessingFailed: b
43
- } = z(t), g = S(
44
- () => o && i && L({
43
+ isProcessing: N,
44
+ isProcessingFailed: R
45
+ } = L(n), r = C(
46
+ () => o && t && k({
45
47
  currentMilestoneData: o,
46
- config: i,
47
- courseStream: r,
48
- enrollmentType: n,
49
- currentCountryCode: a
48
+ config: t,
49
+ courseStream: s,
50
+ enrollmentType: a,
51
+ currentCountryCode: g
50
52
  }),
51
- [i, a, n, o, r]
52
- ), { can_delete: v } = (o == null ? void 0 : o.permissions) || {};
53
- return c(() => {
54
- e === "TEACHER" && m(t, {
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
- }, [m, t, e]), _ || w ? /* @__PURE__ */ s(H, {}) : b || M ? /* @__PURE__ */ s("p", { children: "Error" }) : i && g ? /* @__PURE__ */ s(
59
- j,
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: D,
64
- studentId: l,
65
- studentName: A.titleCase(d),
66
- height: E,
67
- formData: g,
68
- config: i,
69
- onFormDataChange: C,
70
- onPreSubmit: h,
71
- onExit: p,
72
- onChapterExitWarning: u,
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: G,
75
- milestoneId: t,
79
+ grade: M,
80
+ milestoneId: n,
76
81
  isGoalCreation: !0,
77
- courseStream: (o == null ? void 0 : o.course_stream) || r,
78
- classRatio: x,
79
- enrollmentType: n,
80
- canDeleteGoal: v,
81
- onDeleteGoal: F
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
- ), V = N;
91
+ ), $ = q;
86
92
  export {
87
- V as default
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 && convertedData ? (\n <MilestoneCreate\n flow=\"DRAFT_EDIT\"\n board={board}\n schoolData={schoolData}\n studentId={studentId}\n studentName={titleCase(studentName)}\n height={height}\n formData={convertedData}\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 />\n ) : null;\n },\n);\n\nexport default GoalDraftEditContainer;\n"],"names":["GoalDraftEditContainer","memo","studentName","studentId","height","handleFormDataChange","handlePreSubmit","handleExit","handleChapterExitWarning","userType","board","schoolData","grade","milestoneId","currentCountryCode","courseStream","classRatio","enrollmentType","onDeleteGoal","getConfig","configData","isConfigProcessing","isConfigProcessingFailed","useGetMileStoneConfig","useEffect","getMilestone","currentMilestoneData","isMilestoneProcessing","isMilestoneProcessingFailed","useMilestoneGet","convertedData","useMemo","transformGoalData","canDeleteGoal","jsx","MilestoneEditLoader","MilestoneCreate","titleCase","GoalDraftEditContainer$1"],"mappings":";;;;;;;;AAUA,MAAMA,IAA2DC;AAAA,EAC/D,SAAgC;AAAA,IAC9B,aAAAC;AAAA,IACA,WAAAC;AAAA,IACA,QAAAC;AAAA,IACA,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,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,EAAgBhB,CAAW,GAEzBiB,IAAgBC;AAAA,MACpB,MACEL,KACAN,KACAY,EAAkB;AAAA,QAChB,sBAAAN;AAAA,QACA,QAAQN;AAAA,QACR,cAAAL;AAAA,QACA,gBAAAE;AAAA,QACA,oBAAAH;AAAA,MAAA,CACD;AAAA,MACH,CAACM,GAAYN,GAAoBG,GAAgBS,GAAsBX,CAAY;AAAA,IAAA,GAE/E,EAAE,YAAYkB,EAAA,KAAkBP,KAAA,gBAAAA,EAAsB,gBAAe,CAAA;AAU3E,WARAF,EAAU,MAAM;AACd,MAAIf,MAAa,aACfgB,EAAaZ,GAAa;AAAA,QACxB,aAAa;AAAA,QACb,2BAA2B;AAAA,MAAA,CAC5B;AAAA,IACF,GAAA,CAACY,GAAcZ,GAAaJ,CAAQ,CAAC,GAEpCY,KAAsBM,IAA8B,gBAAAO,EAACC,GAAoB,CAAA,CAAA,IAEzEP,KAA+BN,IAC1B,gBAAAY,EAAC,OAAE,UAAK,QAAA,CAAA,IAGVd,KAAcU,IACnB,gBAAAI;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAA1B;AAAA,QACA,YAAAC;AAAA,QACA,WAAAR;AAAA,QACA,aAAakC,YAAUnC,CAAW;AAAA,QAClC,QAAAE;AAAA,QACA,UAAU0B;AAAA,QACV,QAAQV;AAAA,QACR,kBAAkBf;AAAA,QAClB,aAAaC;AAAA,QACb,QAAQC;AAAA,QACR,sBAAsBC;AAAA,QACtB,UAAAC;AAAA,QACA,OAAAG;AAAA,QACA,aAAAC;AAAA,QACA,gBAAgB;AAAA,QAChB,eAAca,KAAA,gBAAAA,EAAsB,kBAAiBX;AAAA,QACrD,YAAAC;AAAA,QACA,gBAAAC;AAAA,QACA,eAAAgB;AAAA,QACA,cAAAf;AAAA,MAAA;AAAA,IAEA,IAAA;AAAA,EACN;AACF,GAEAoB,IAAetC;"}
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;"}