@cuemath/leap 2.8.22 → 2.8.23

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 (95) hide show
  1. package/dist/assets/images/images.js +0 -12
  2. package/dist/assets/images/images.js.map +1 -1
  3. package/dist/features/chapters/chapter/chapter.js +43 -45
  4. package/dist/features/chapters/chapter/chapter.js.map +1 -1
  5. package/dist/features/chapters/chapter/comps/core-lessons/core-lessons.js +21 -23
  6. package/dist/features/chapters/chapter/comps/core-lessons/core-lessons.js.map +1 -1
  7. package/dist/features/milestone/constants.js +18 -53
  8. package/dist/features/milestone/constants.js.map +1 -1
  9. package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step-styled.js +4 -16
  10. package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step-styled.js.map +1 -1
  11. package/dist/features/milestone/create/milestone-create-constants.js.map +1 -1
  12. package/dist/features/milestone/create/milestone-create-container.js +47 -56
  13. package/dist/features/milestone/create/milestone-create-container.js.map +1 -1
  14. package/dist/features/milestone/create/milestone-create-helpers.js +113 -132
  15. package/dist/features/milestone/create/milestone-create-helpers.js.map +1 -1
  16. package/dist/features/milestone/create/milestone-create-hooks.js +90 -92
  17. package/dist/features/milestone/create/milestone-create-hooks.js.map +1 -1
  18. package/dist/features/milestone/create/milestone-create-styled.js +20 -34
  19. package/dist/features/milestone/create/milestone-create-styled.js.map +1 -1
  20. package/dist/features/milestone/create/milestone-create.js +53 -72
  21. package/dist/features/milestone/create/milestone-create.js.map +1 -1
  22. package/dist/features/milestone/create/submit-modal/use-submit-milestone.js +46 -53
  23. package/dist/features/milestone/create/submit-modal/use-submit-milestone.js.map +1 -1
  24. package/dist/features/milestone/create/utils/index.js.map +1 -1
  25. package/dist/features/milestone/edit/comps/delete-milestone/styled.js +8 -11
  26. package/dist/features/milestone/edit/comps/delete-milestone/styled.js.map +1 -1
  27. package/dist/features/milestone/edit/comps/edit-milestone-modal/edit-milestone.js +82 -79
  28. package/dist/features/milestone/edit/comps/edit-milestone-modal/edit-milestone.js.map +1 -1
  29. package/dist/features/milestone/edit/comps/edit-milestone-modal/index.js +112 -136
  30. package/dist/features/milestone/edit/comps/edit-milestone-modal/index.js.map +1 -1
  31. package/dist/features/milestone/{drafts/goal-edit → edit/goal-drafts}/goal-draft-edit-container.js +22 -24
  32. package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-container.js.map +1 -0
  33. package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-helpers.js +17 -0
  34. package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-helpers.js.map +1 -0
  35. package/dist/features/milestone/edit/goal-edit-helpers.js +5 -6
  36. package/dist/features/milestone/edit/goal-edit-helpers.js.map +1 -1
  37. package/dist/features/milestone/edit/milestone-edit-helpers.js +16 -17
  38. package/dist/features/milestone/edit/milestone-edit-helpers.js.map +1 -1
  39. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js +46 -48
  40. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js.map +1 -1
  41. package/dist/features/milestone/milestone-list-container/milestone-list-container.js +58 -60
  42. package/dist/features/milestone/milestone-list-container/milestone-list-container.js.map +1 -1
  43. package/dist/features/milestone/outcome/comps/past-milestone/past-milestone-container.js +39 -41
  44. package/dist/features/milestone/outcome/comps/past-milestone/past-milestone-container.js.map +1 -1
  45. package/dist/index.d.ts +7 -125
  46. package/dist/index.js +244 -258
  47. package/dist/index.js.map +1 -1
  48. package/package.json +1 -1
  49. package/dist/constants/urls.js +0 -5
  50. package/dist/constants/urls.js.map +0 -1
  51. package/dist/features/milestone/drafts/create/draft-create-container.js +0 -54
  52. package/dist/features/milestone/drafts/create/draft-create-container.js.map +0 -1
  53. package/dist/features/milestone/drafts/edit/draft-edit-container.js +0 -77
  54. package/dist/features/milestone/drafts/edit/draft-edit-container.js.map +0 -1
  55. package/dist/features/milestone/drafts/edit/draft-edit-helpers.js +0 -69
  56. package/dist/features/milestone/drafts/edit/draft-edit-helpers.js.map +0 -1
  57. package/dist/features/milestone/drafts/goal-edit/goal-draft-edit-container.js.map +0 -1
  58. package/dist/features/milestone/drafts/review/draft-review-container.js +0 -76
  59. package/dist/features/milestone/drafts/review/draft-review-container.js.map +0 -1
  60. package/dist/features/milestone/edit/comps/delete-milestone/add-remove-nudge.js +0 -48
  61. package/dist/features/milestone/edit/comps/delete-milestone/add-remove-nudge.js.map +0 -1
  62. package/dist/features/milestone/edit/comps/edit-milestone-modal/edit-milestone-modal-styled.js +0 -23
  63. package/dist/features/milestone/edit/comps/edit-milestone-modal/edit-milestone-modal-styled.js.map +0 -1
  64. package/dist/features/milestone/edit/comps/edit-milestone-modal/share-screen.js +0 -68
  65. package/dist/features/milestone/edit/comps/edit-milestone-modal/share-screen.js.map +0 -1
  66. package/dist/features/milestone/help-modals/index.js +0 -22
  67. package/dist/features/milestone/help-modals/index.js.map +0 -1
  68. package/dist/features/milestone/help-modals/milestone-lesson.js +0 -17
  69. package/dist/features/milestone/help-modals/milestone-lesson.js.map +0 -1
  70. package/dist/features/milestone/help-modals/milestone-list.js +0 -17
  71. package/dist/features/milestone/help-modals/milestone-list.js.map +0 -1
  72. package/dist/features/milestone/help-modals/utils.js +0 -20
  73. package/dist/features/milestone/help-modals/utils.js.map +0 -1
  74. package/dist/features/milestone/intro-modal/index.js +0 -24
  75. package/dist/features/milestone/intro-modal/index.js.map +0 -1
  76. package/dist/features/notifications/api/notification.js +0 -13
  77. package/dist/features/notifications/api/notification.js.map +0 -1
  78. package/dist/features/notifications/use-student-journey.js +0 -20
  79. package/dist/features/notifications/use-student-journey.js.map +0 -1
  80. package/dist/features/sheets/constants/lessons.js +0 -28
  81. package/dist/features/sheets/constants/lessons.js.map +0 -1
  82. package/dist/features/ui/modals/info-modal/index.js +0 -117
  83. package/dist/features/ui/modals/info-modal/index.js.map +0 -1
  84. package/dist/static/goal_creation_helper.d45e4d58.png +0 -0
  85. package/dist/static/help_banner1.ddb0ef0f.png +0 -0
  86. package/dist/static/help_banner2.40979ed0.png +0 -0
  87. package/dist/static/help_banner3.532099c7.png +0 -0
  88. package/dist/static/help_banner4.90a6fd4d.png +0 -0
  89. package/dist/static/help_banner5.2a9efb39.png +0 -0
  90. package/dist/static/help_banner6.94fe9589.png +0 -0
  91. package/dist/static/milestone_intro_slide1.1537493e.png +0 -0
  92. package/dist/static/milestone_intro_slide2.b791c159.png +0 -0
  93. package/dist/static/milestone_intro_slide3.f7d63a11.png +0 -0
  94. package/dist/static/milestone_intro_slide4.f8da4e46.png +0 -0
  95. package/dist/static/milestone_intro_slide5.ea5d12d2.png +0 -0
@@ -1,144 +1,142 @@
1
- import { useState as P, useMemo as N, useRef as B, useCallback as b } from "react";
2
- import j from "../../notifications/use-student-journey.js";
1
+ import { useState as P, useMemo as w, useRef as B, useCallback as N } from "react";
3
2
  import { TEST_TYPE_TO_TEST_NAME as v } from "../constants.js";
4
- import { checkIfCommittedFieldIsUpdated as y } from "../edit/goal-edit-helpers.js";
5
- import { GOAL_EDIT_FLOWS as p, BRANCHING_FIELDS as k } from "./milestone-create-constants.js";
6
- import F, { CHAPTERS_SELECTION_FORM_TREE as H, ADD_CUSTOM_CHAPTERS as W, SET_COMPLETION_DATE as J } from "./milestone-create-form-tree.js";
3
+ import { checkIfCommittedFieldIsUpdated as k } from "../edit/goal-edit-helpers.js";
4
+ import { GOAL_EDIT_FLOWS as p, BRANCHING_FIELDS as F } from "./milestone-create-constants.js";
5
+ import W, { CHAPTERS_SELECTION_FORM_TREE as j, ADD_CUSTOM_CHAPTERS as H, SET_COMPLETION_DATE as y } from "./milestone-create-form-tree.js";
7
6
  import { appendSchoolDataToFormState as V, generateFormStateWithPrefilledSchoolData as Y, getCurrenStep as h, clearNextFields as q } from "./milestone-create-helpers.js";
8
- const a = (d, {
9
- schoolData: o,
10
- board: e,
11
- grade: u,
7
+ const $ = (l, {
8
+ schoolData: c,
9
+ board: t,
10
+ grade: r,
12
11
  currentCountryCode: T,
13
- flow: r
12
+ flow: d
14
13
  }) => {
15
- const [l, i] = P(() => d && p.includes(r) ? V(d, o, e, u) : {
14
+ const [m, o] = P(() => l && p.includes(d) ? V(l, c, t, r) : {
16
15
  ...Y(
17
- o,
18
- e,
19
- u,
16
+ c,
17
+ t,
18
+ r,
20
19
  T
21
20
  )
22
21
  });
23
- return { formDataState: l, setFormData: i };
24
- }, g = (d, o) => j(d === "TEACHER" ? o : null), D = ({
25
- flow: d,
26
- formDataState: o,
27
- isGoalCreation: e
22
+ return { formDataState: m, setFormData: o };
23
+ }, x = ({
24
+ flow: l,
25
+ formDataState: c,
26
+ isGoalCreation: t
28
27
  }) => {
29
- const { testType: u } = o;
30
- return N(() => {
31
- if (p.includes(d) && u) {
32
- const r = {
33
- ...H,
28
+ const { testType: r } = c;
29
+ return w(() => {
30
+ if (p.includes(l) && r) {
31
+ const d = {
32
+ ...j,
34
33
  isRootNode: !0,
35
- title: v[u]
36
- }, l = Object.assign({}, W), i = Object.assign({}, J);
37
- return e || (l.buttonLabel = "Add to learning plan", r.buttonLabel = "Update"), d === "EDIT" && (i.buttonLabel = "Update goal"), (!e || u === "no-test") && (r.next = [l, i]), r;
34
+ title: v[r]
35
+ }, m = Object.assign({}, H), o = Object.assign({}, y);
36
+ return t || (m.buttonLabel = "Add to learning plan", d.buttonLabel = "Update"), l === "EDIT" && (o.buttonLabel = "Update goal"), (!t || r === "no-test") && (d.next = [m, o]), d;
38
37
  }
39
- return F;
40
- }, [d, u, e]);
41
- }, ee = ({
42
- flow: d,
43
- updatedFormTree: o,
44
- formData: e,
45
- formDataState: u,
38
+ return W;
39
+ }, [l, r, t]);
40
+ }, a = ({
41
+ flow: l,
42
+ updatedFormTree: c,
43
+ formData: t,
44
+ formDataState: r,
46
45
  setFormData: T,
47
- handleExit: r
46
+ handleExit: d
48
47
  }) => {
49
- const l = B(u), i = (e == null ? void 0 : e.currentFlow) ?? d, s = N(
50
- () => h(o, e, i),
51
- [o, e, i]
52
- ), O = s == null ? void 0 : s.name, A = !!(s != null && s.isRootNode), E = b(
53
- (t) => {
54
- T((n) => {
55
- const S = n.testType;
56
- if (p.includes(i)) {
57
- const I = {
58
- ...n.committed,
59
- ...t.committed
48
+ const m = B(r), o = (t == null ? void 0 : t.currentFlow) ?? l, i = w(
49
+ () => h(c, t, o),
50
+ [c, t, o]
51
+ ), O = i == null ? void 0 : i.name, b = !!(i != null && i.isRootNode), E = N(
52
+ (e) => {
53
+ T((s) => {
54
+ const S = s.testType;
55
+ if (p.includes(o)) {
56
+ const A = {
57
+ ...s.committed,
58
+ ...e.committed
60
59
  }, C = [];
61
- if (Object.entries((t == null ? void 0 : t.committed) || {}).forEach((R) => {
62
- const c = R[0], M = !!R[1], U = t[c] ?? n[c];
63
- if (y({
64
- field: c,
65
- isFieldCommited: M,
66
- prevFormData: n,
67
- newValueOfField: U,
68
- formDataStateRef: l.current
60
+ if (Object.entries((e == null ? void 0 : e.committed) || {}).forEach((R) => {
61
+ const n = R[0], U = !!R[1], M = e[n] ?? s[n];
62
+ if (k({
63
+ field: n,
64
+ isFieldCommited: U,
65
+ prevFormData: s,
66
+ newValueOfField: M,
67
+ formDataStateRef: m.current
69
68
  })) {
70
69
  let _ = [];
71
- S && S === "no-test" && (_ = _.concat(["board"])), _.includes(c) || C.push(c);
70
+ S && S === "no-test" && (_ = _.concat(["board"])), _.includes(n) || C.push(n);
72
71
  }
73
- }), C.length > 0 && C.some((c) => k.includes(c))) {
74
- const c = q(
75
- o,
76
- n,
72
+ }), C.length > 0 && C.some((n) => F.includes(n))) {
73
+ const n = q(
74
+ c,
75
+ s,
77
76
  O,
78
- A,
77
+ b,
79
78
  []
80
79
  );
81
- if (c)
80
+ if (n)
82
81
  return {
83
- ...c,
84
- ...t,
82
+ ...n,
83
+ ...e,
85
84
  committed: {
86
- ...c.committed,
87
- ...t.committed
85
+ ...n.committed,
86
+ ...e.committed
88
87
  },
89
88
  reviewed: {
90
- ...I
89
+ ...A
91
90
  },
92
91
  currentFlow: "CREATE"
93
92
  };
94
93
  }
95
94
  return {
96
- ...n,
97
- ...t,
95
+ ...s,
96
+ ...e,
98
97
  committed: {
99
- ...n.committed,
100
- ...t.committed
98
+ ...s.committed,
99
+ ...e.committed
101
100
  },
102
- reviewed: I
101
+ reviewed: A
103
102
  };
104
103
  }
105
- const { committed: m, reviewed: f, ...L } = n;
104
+ const { committed: u, reviewed: f, ...L } = s;
106
105
  return {
107
106
  ...L,
108
- ...t,
107
+ ...e,
109
108
  committed: {
110
- ...m,
111
- ...t.committed
109
+ ...u,
110
+ ...e.committed
112
111
  },
113
112
  reviewed: {}
114
113
  };
115
114
  });
116
115
  },
117
- [T, i, o, O, A]
118
- ), w = b(() => {
119
- if (s) {
120
- const { reset: t, rollback: n, isRootNode: S } = s;
116
+ [T, o, c, O, b]
117
+ ), I = N(() => {
118
+ if (i) {
119
+ const { reset: e, rollback: s, isRootNode: S } = i;
121
120
  if (S) {
122
- r == null || r();
121
+ d == null || d();
123
122
  return;
124
123
  }
125
- const m = {
124
+ const u = {
126
125
  committed: {},
127
126
  reviewed: {}
128
127
  };
129
- p.includes(i) ? n.forEach((f) => {
130
- m.reviewed[f] = void 0;
131
- }) : t.forEach((f) => (m[f] = void 0, !0)), n.forEach((f) => {
132
- m.committed[f] = void 0;
133
- }), E(m);
128
+ p.includes(o) ? s.forEach((f) => {
129
+ u.reviewed[f] = void 0;
130
+ }) : e.forEach((f) => (u[f] = void 0, !0)), s.forEach((f) => {
131
+ u.committed[f] = void 0;
132
+ }), E(u);
134
133
  }
135
- }, [s, i, E, r]);
136
- return { currentStep: s, updateFormData: E, handleBack: w };
134
+ }, [i, o, E, d]);
135
+ return { currentStep: i, updateFormData: E, handleBack: I };
137
136
  };
138
137
  export {
139
- a as useFormDataPrefiller,
140
- ee as useFormTreeTraversal,
141
- D as useMilestoneFormTree,
142
- g as useMilestoneInfoTransitionsControl
138
+ $ as useFormDataPrefiller,
139
+ a as useFormTreeTraversal,
140
+ x as useMilestoneFormTree
143
141
  };
144
142
  //# sourceMappingURL=milestone-create-hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"milestone-create-hooks.js","sources":["../../../../src/features/milestone/create/milestone-create-hooks.ts"],"sourcesContent":["import type IStudentSchool from '../../../types/models/school';\nimport type { IStudentJourneyData } from '../../notifications/types';\nimport type { TUserTypes } from '../../ui/types';\nimport type {\n IFormStep,\n IFormStepProps,\n IMileStoneFormFields,\n IMilestoneConfig,\n IMilestoneFormData,\n TMilesonteFormStateField,\n TMilestoneFormFlow,\n} from './milestone-create-types';\n\nimport { useCallback, useMemo, useRef, useState } from 'react';\n\nimport useStudentJourneys from '../../notifications/use-student-journey';\nimport { TEST_TYPE_TO_TEST_NAME } from '../constants';\nimport { checkIfCommittedFieldIsUpdated } from '../edit/goal-edit-helpers';\nimport { BRANCHING_FIELDS, GOAL_EDIT_FLOWS } from './milestone-create-constants';\nimport FORM_TREE, {\n ADD_CUSTOM_CHAPTERS,\n CHAPTERS_SELECTION_FORM_TREE,\n SET_COMPLETION_DATE,\n} from './milestone-create-form-tree';\nimport {\n appendSchoolDataToFormState,\n clearNextFields,\n generateFormStateWithPrefilledSchoolData,\n getCurrenStep,\n} from './milestone-create-helpers';\n\n//TODO: right now it is for only one step, but should be for all steps in future if needed\nconst useFormDataPrefiller = (\n formDataProp: IMilestoneFormData | undefined,\n {\n schoolData,\n board,\n grade,\n currentCountryCode,\n flow,\n }: {\n grade: string;\n schoolData: IStudentSchool | undefined;\n board: string | undefined;\n config: IMilestoneConfig;\n journeysToInclude: IStudentJourneyData[];\n flow: TMilestoneFormFlow;\n currentCountryCode?: string;\n },\n) => {\n const [formDataState, setFormData] = useState<IMilestoneFormData>(() => {\n if (formDataProp && GOAL_EDIT_FLOWS.includes(flow)) {\n return appendSchoolDataToFormState(formDataProp, schoolData, board, grade);\n }\n\n const formStateWithPrefilledSchoolData = generateFormStateWithPrefilledSchoolData(\n schoolData,\n board,\n grade,\n currentCountryCode,\n );\n\n return {\n ...formStateWithPrefilledSchoolData,\n };\n });\n\n return { formDataState, setFormData };\n};\n\nconst useMilestoneInfoTransitionsControl = (userType: TUserTypes, studentId: string | null) => {\n const journeysToInclude = useStudentJourneys(userType === 'TEACHER' ? studentId : null);\n\n return journeysToInclude;\n};\n\n/**\n * Based on the flow returns the correct modified tree\n */\nconst useMilestoneFormTree = ({\n flow,\n formDataState,\n isGoalCreation,\n}: {\n isFirstMilestoneCreated: boolean;\n flow: TMilestoneFormFlow;\n formDataState: IMilestoneFormData;\n isGoalCreation?: boolean;\n}) => {\n const { testType } = formDataState;\n\n const updatedFormTree: IFormStep = useMemo(() => {\n if (GOAL_EDIT_FLOWS.includes(flow) && testType) {\n const formTreeInfo = {\n ...CHAPTERS_SELECTION_FORM_TREE,\n isRootNode: true,\n title: TEST_TYPE_TO_TEST_NAME[testType],\n };\n\n //* Creating a shallow copy as we need to change only first level element.\n const addCustomChapter = Object.assign({}, ADD_CUSTOM_CHAPTERS);\n const setCompletionDate = Object.assign({}, SET_COMPLETION_DATE);\n\n //* To compensate existing milestones chapter addition.\n if (!isGoalCreation) {\n addCustomChapter.buttonLabel = 'Add to learning plan';\n formTreeInfo.buttonLabel = 'Update';\n }\n\n if (flow === 'EDIT') {\n setCompletionDate.buttonLabel = 'Update goal';\n }\n\n if (!isGoalCreation || testType === 'no-test') {\n formTreeInfo.next = [addCustomChapter, setCompletionDate];\n }\n\n return formTreeInfo;\n }\n\n return FORM_TREE;\n }, [flow, testType, isGoalCreation]);\n\n return updatedFormTree;\n};\n\n/**\n * This hook holds the logic to run the traversal of the tree during different flows.\n * While most of the logic is same for all flows, DRAFT_EDIT and DRAFT_REVIEW flows require extra logic where a user can navigate back and forth steps without clearing data.\n * Internally, this hook uses a currentFlow variable which is initially set to the flow but changes to CREATE flow, when certain BRANCHING_FIELDS are edited.\n * BRANCHING_FIELDS are fields on edition of which the flow might change and hence the prefilled data, needs to be cleared.\n * @returns `currentStep` - the current step the tree should be at\n * @returns `updateFormData` - the method to update form data\n * @returns `handleBack` - the method to handle back navigation\n */\nconst useFormTreeTraversal = ({\n flow,\n updatedFormTree,\n formData,\n formDataState,\n setFormData,\n handleExit,\n}: {\n flow: TMilestoneFormFlow;\n updatedFormTree: IFormStep;\n formData: IMilestoneFormData;\n formDataState: IMilestoneFormData;\n setFormData: React.Dispatch<React.SetStateAction<IMilestoneFormData>>;\n handleExit?: () => void;\n}) => {\n const formDataStateRef = useRef(formDataState);\n const currentFlow = formData?.currentFlow ?? flow;\n\n const currentStep = useMemo(\n () => getCurrenStep(updatedFormTree, formData, currentFlow),\n [updatedFormTree, formData, currentFlow],\n );\n\n const currentStepName = currentStep?.name;\n const isCurrentStepRoot = Boolean(currentStep?.isRootNode);\n\n const updateFormData = useCallback<IFormStepProps['onFormDataChange']>(\n changedFormData => {\n setFormData(prevFormData => {\n const currentTestType = prevFormData.testType;\n\n if (GOAL_EDIT_FLOWS.includes(currentFlow)) {\n const updatedReviewed = {\n ...prevFormData.committed,\n ...changedFormData.committed,\n };\n const updatedFields: TMilesonteFormStateField[] = [];\n\n Object.entries(changedFormData?.committed || {}).forEach(entry => {\n const field = entry[0] as keyof IMileStoneFormFields;\n const isFieldCommited = Boolean(entry[1]);\n const newValueOfField = changedFormData[field] ?? prevFormData[field];\n\n const isFieldUpdatedAndCommitted = checkIfCommittedFieldIsUpdated({\n field,\n isFieldCommited,\n prevFormData,\n newValueOfField,\n formDataStateRef: formDataStateRef.current,\n });\n\n if (isFieldUpdatedAndCommitted) {\n let exceptedFields: TMilesonteFormStateField[] = [];\n\n if (currentTestType && currentTestType === 'no-test') {\n exceptedFields = exceptedFields.concat(['board']);\n }\n\n if (!exceptedFields.includes(field)) {\n updatedFields.push(field);\n }\n }\n });\n\n if (updatedFields.length > 0) {\n const isBranchingFieldUpdated = updatedFields.some(field => {\n return BRANCHING_FIELDS.includes(field);\n });\n\n if (isBranchingFieldUpdated) {\n const updatedTree = clearNextFields(\n updatedFormTree,\n prevFormData,\n currentStepName,\n isCurrentStepRoot,\n [],\n );\n\n if (updatedTree)\n return {\n ...updatedTree,\n ...changedFormData,\n committed: {\n ...updatedTree.committed,\n ...changedFormData.committed,\n },\n reviewed: {\n ...updatedReviewed,\n },\n currentFlow: 'CREATE',\n };\n }\n }\n\n return {\n ...prevFormData,\n ...changedFormData,\n committed: {\n ...prevFormData.committed,\n ...changedFormData.committed,\n },\n reviewed: updatedReviewed,\n };\n }\n\n const { committed: prevFormCommitted, reviewed, ...fieldsData } = prevFormData;\n\n return {\n ...fieldsData,\n ...changedFormData,\n committed: {\n ...prevFormCommitted,\n ...changedFormData.committed,\n },\n reviewed: {},\n };\n });\n },\n [setFormData, currentFlow, updatedFormTree, currentStepName, isCurrentStepRoot],\n );\n\n const handleBack = useCallback(() => {\n if (currentStep) {\n const { reset, rollback, isRootNode } = currentStep;\n\n if (isRootNode) {\n handleExit?.();\n\n return;\n }\n\n const data: IMilestoneFormData = {\n committed: {},\n reviewed: {},\n };\n\n if (!GOAL_EDIT_FLOWS.includes(currentFlow)) {\n reset.forEach(field => {\n data[field] = undefined;\n\n return true;\n });\n } else {\n rollback.forEach(field => {\n data.reviewed[field] = undefined;\n });\n }\n rollback.forEach(field => {\n data.committed[field] = undefined;\n });\n\n updateFormData(data);\n }\n }, [currentStep, currentFlow, updateFormData, handleExit]);\n\n return { currentStep, updateFormData, handleBack };\n};\n\nexport {\n useFormDataPrefiller,\n useFormTreeTraversal,\n useMilestoneFormTree,\n useMilestoneInfoTransitionsControl,\n};\n"],"names":["useFormDataPrefiller","formDataProp","schoolData","board","grade","currentCountryCode","flow","formDataState","setFormData","useState","GOAL_EDIT_FLOWS","appendSchoolDataToFormState","generateFormStateWithPrefilledSchoolData","useMilestoneInfoTransitionsControl","userType","studentId","useStudentJourneys","useMilestoneFormTree","isGoalCreation","testType","useMemo","formTreeInfo","CHAPTERS_SELECTION_FORM_TREE","TEST_TYPE_TO_TEST_NAME","addCustomChapter","ADD_CUSTOM_CHAPTERS","setCompletionDate","SET_COMPLETION_DATE","FORM_TREE","useFormTreeTraversal","updatedFormTree","formData","handleExit","formDataStateRef","useRef","currentFlow","currentStep","getCurrenStep","currentStepName","isCurrentStepRoot","updateFormData","useCallback","changedFormData","prevFormData","currentTestType","updatedReviewed","updatedFields","entry","field","isFieldCommited","newValueOfField","checkIfCommittedFieldIsUpdated","exceptedFields","BRANCHING_FIELDS","updatedTree","clearNextFields","prevFormCommitted","reviewed","fieldsData","handleBack","reset","rollback","isRootNode","data"],"mappings":"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"}
1
+ {"version":3,"file":"milestone-create-hooks.js","sources":["../../../../src/features/milestone/create/milestone-create-hooks.ts"],"sourcesContent":["import type IStudentSchool from '../../../types/models/school';\nimport type {\n IFormStep,\n IFormStepProps,\n IMileStoneFormFields,\n IMilestoneConfig,\n IMilestoneFormData,\n TMilestoneFormStateField,\n TMilestoneFormFlow,\n} from './milestone-create-types';\n\nimport { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { TEST_TYPE_TO_TEST_NAME } from '../constants';\nimport { checkIfCommittedFieldIsUpdated } from '../edit/goal-edit-helpers';\nimport { BRANCHING_FIELDS, GOAL_EDIT_FLOWS } from './milestone-create-constants';\nimport FORM_TREE, {\n ADD_CUSTOM_CHAPTERS,\n CHAPTERS_SELECTION_FORM_TREE,\n SET_COMPLETION_DATE,\n} from './milestone-create-form-tree';\nimport {\n appendSchoolDataToFormState,\n clearNextFields,\n generateFormStateWithPrefilledSchoolData,\n getCurrenStep,\n} from './milestone-create-helpers';\n\n//TODO: right now it is for only one step, but should be for all steps in future if needed\nconst useFormDataPrefiller = (\n formDataProp: IMilestoneFormData | undefined,\n {\n schoolData,\n board,\n grade,\n currentCountryCode,\n flow,\n }: {\n grade: string;\n schoolData: IStudentSchool | undefined;\n board: string | undefined;\n config: IMilestoneConfig;\n flow: TMilestoneFormFlow;\n currentCountryCode?: string;\n },\n) => {\n const [formDataState, setFormData] = useState<IMilestoneFormData>(() => {\n if (formDataProp && GOAL_EDIT_FLOWS.includes(flow)) {\n return appendSchoolDataToFormState(formDataProp, schoolData, board, grade);\n }\n\n const formStateWithPrefilledSchoolData = generateFormStateWithPrefilledSchoolData(\n schoolData,\n board,\n grade,\n currentCountryCode,\n );\n\n return {\n ...formStateWithPrefilledSchoolData,\n };\n });\n\n return { formDataState, setFormData };\n};\n\n/**\n * Based on the flow returns the correct modified tree\n */\nconst useMilestoneFormTree = ({\n flow,\n formDataState,\n isGoalCreation,\n}: {\n flow: TMilestoneFormFlow;\n formDataState: IMilestoneFormData;\n isGoalCreation?: boolean;\n}) => {\n const { testType } = formDataState;\n\n const updatedFormTree: IFormStep = useMemo(() => {\n if (GOAL_EDIT_FLOWS.includes(flow) && testType) {\n const formTreeInfo = {\n ...CHAPTERS_SELECTION_FORM_TREE,\n isRootNode: true,\n title: TEST_TYPE_TO_TEST_NAME[testType],\n };\n\n //* Creating a shallow copy as we need to change only first level element.\n const addCustomChapter = Object.assign({}, ADD_CUSTOM_CHAPTERS);\n const setCompletionDate = Object.assign({}, SET_COMPLETION_DATE);\n\n //* To compensate existing milestones chapter addition.\n if (!isGoalCreation) {\n addCustomChapter.buttonLabel = 'Add to learning plan';\n formTreeInfo.buttonLabel = 'Update';\n }\n\n if (flow === 'EDIT') {\n setCompletionDate.buttonLabel = 'Update goal';\n }\n\n if (!isGoalCreation || testType === 'no-test') {\n formTreeInfo.next = [addCustomChapter, setCompletionDate];\n }\n\n return formTreeInfo;\n }\n\n return FORM_TREE;\n }, [flow, testType, isGoalCreation]);\n\n return updatedFormTree;\n};\n\n/**\n * This hook holds the logic to run the traversal of the tree during different flows.\n * While most of the logic is same for all flows, DRAFT_EDIT and DRAFT_REVIEW flows require extra logic where a user can navigate back and forth steps without clearing data.\n * Internally, this hook uses a currentFlow variable which is initially set to the flow but changes to CREATE flow, when certain BRANCHING_FIELDS are edited.\n * BRANCHING_FIELDS are fields on edition of which the flow might change and hence the prefilled data, needs to be cleared.\n * @returns `currentStep` - the current step the tree should be at\n * @returns `updateFormData` - the method to update form data\n * @returns `handleBack` - the method to handle back navigation\n */\nconst useFormTreeTraversal = ({\n flow,\n updatedFormTree,\n formData,\n formDataState,\n setFormData,\n handleExit,\n}: {\n flow: TMilestoneFormFlow;\n updatedFormTree: IFormStep;\n formData: IMilestoneFormData;\n formDataState: IMilestoneFormData;\n setFormData: React.Dispatch<React.SetStateAction<IMilestoneFormData>>;\n handleExit?: () => void;\n}) => {\n const formDataStateRef = useRef(formDataState);\n const currentFlow = formData?.currentFlow ?? flow;\n\n const currentStep = useMemo(\n () => getCurrenStep(updatedFormTree, formData, currentFlow),\n [updatedFormTree, formData, currentFlow],\n );\n\n const currentStepName = currentStep?.name;\n const isCurrentStepRoot = Boolean(currentStep?.isRootNode);\n\n const updateFormData = useCallback<IFormStepProps['onFormDataChange']>(\n changedFormData => {\n setFormData(prevFormData => {\n const currentTestType = prevFormData.testType;\n\n if (GOAL_EDIT_FLOWS.includes(currentFlow)) {\n const updatedReviewed = {\n ...prevFormData.committed,\n ...changedFormData.committed,\n };\n const updatedFields: TMilestoneFormStateField[] = [];\n\n Object.entries(changedFormData?.committed || {}).forEach(entry => {\n const field = entry[0] as keyof IMileStoneFormFields;\n const isFieldCommited = Boolean(entry[1]);\n const newValueOfField = changedFormData[field] ?? prevFormData[field];\n\n const isFieldUpdatedAndCommitted = checkIfCommittedFieldIsUpdated({\n field,\n isFieldCommited,\n prevFormData,\n newValueOfField,\n formDataStateRef: formDataStateRef.current,\n });\n\n if (isFieldUpdatedAndCommitted) {\n let exceptedFields: TMilestoneFormStateField[] = [];\n\n if (currentTestType && currentTestType === 'no-test') {\n exceptedFields = exceptedFields.concat(['board']);\n }\n\n if (!exceptedFields.includes(field)) {\n updatedFields.push(field);\n }\n }\n });\n\n if (updatedFields.length > 0) {\n const isBranchingFieldUpdated = updatedFields.some(field => {\n return BRANCHING_FIELDS.includes(field);\n });\n\n if (isBranchingFieldUpdated) {\n const updatedTree = clearNextFields(\n updatedFormTree,\n prevFormData,\n currentStepName,\n isCurrentStepRoot,\n [],\n );\n\n if (updatedTree)\n return {\n ...updatedTree,\n ...changedFormData,\n committed: {\n ...updatedTree.committed,\n ...changedFormData.committed,\n },\n reviewed: {\n ...updatedReviewed,\n },\n currentFlow: 'CREATE',\n };\n }\n }\n\n return {\n ...prevFormData,\n ...changedFormData,\n committed: {\n ...prevFormData.committed,\n ...changedFormData.committed,\n },\n reviewed: updatedReviewed,\n };\n }\n\n const { committed: prevFormCommitted, reviewed, ...fieldsData } = prevFormData;\n\n return {\n ...fieldsData,\n ...changedFormData,\n committed: {\n ...prevFormCommitted,\n ...changedFormData.committed,\n },\n reviewed: {},\n };\n });\n },\n [setFormData, currentFlow, updatedFormTree, currentStepName, isCurrentStepRoot],\n );\n\n const handleBack = useCallback(() => {\n if (currentStep) {\n const { reset, rollback, isRootNode } = currentStep;\n\n if (isRootNode) {\n handleExit?.();\n\n return;\n }\n\n const data: IMilestoneFormData = {\n committed: {},\n reviewed: {},\n };\n\n if (!GOAL_EDIT_FLOWS.includes(currentFlow)) {\n reset.forEach(field => {\n data[field] = undefined;\n\n return true;\n });\n } else {\n rollback.forEach(field => {\n data.reviewed[field] = undefined;\n });\n }\n rollback.forEach(field => {\n data.committed[field] = undefined;\n });\n\n updateFormData(data);\n }\n }, [currentStep, currentFlow, updateFormData, handleExit]);\n\n return { currentStep, updateFormData, handleBack };\n};\n\nexport { useFormDataPrefiller, useFormTreeTraversal, useMilestoneFormTree };\n"],"names":["useFormDataPrefiller","formDataProp","schoolData","board","grade","currentCountryCode","flow","formDataState","setFormData","useState","GOAL_EDIT_FLOWS","appendSchoolDataToFormState","generateFormStateWithPrefilledSchoolData","useMilestoneFormTree","isGoalCreation","testType","useMemo","formTreeInfo","CHAPTERS_SELECTION_FORM_TREE","TEST_TYPE_TO_TEST_NAME","addCustomChapter","ADD_CUSTOM_CHAPTERS","setCompletionDate","SET_COMPLETION_DATE","FORM_TREE","useFormTreeTraversal","updatedFormTree","formData","handleExit","formDataStateRef","useRef","currentFlow","currentStep","getCurrenStep","currentStepName","isCurrentStepRoot","updateFormData","useCallback","changedFormData","prevFormData","currentTestType","updatedReviewed","updatedFields","entry","field","isFieldCommited","newValueOfField","checkIfCommittedFieldIsUpdated","exceptedFields","BRANCHING_FIELDS","updatedTree","clearNextFields","prevFormCommitted","reviewed","fieldsData","handleBack","reset","rollback","isRootNode","data"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import r from "styled-components";
2
2
  import n from "../../ui/layout/flex-view.js";
3
- const d = r.div(
4
- ({ $height: o, $viewMode: t, $minHeight: e }) => `
3
+ const l = r.div(
4
+ ({ $height: o, $viewMode: e, $minHeight: t }) => `
5
5
  display: flex;
6
6
  flex-direction: column;
7
7
  height: ${o ? typeof o == "number" ? `${o}px` : `${o}` : "auto"};
8
- min-height: ${e || "auto"};
9
- ${t ? `
8
+ min-height: ${t || "auto"};
9
+ ${e ? `
10
10
  cursor: not-allowed;
11
11
  border: 2px solid black;
12
12
  border-radius: 8px;
@@ -16,8 +16,8 @@ const d = r.div(
16
16
  }
17
17
  ` : ""}
18
18
  `
19
- ), l = r.div(
20
- ({ theme: o, $viewMode: t }) => `
19
+ ), d = r.div(
20
+ ({ theme: o, $viewMode: e }) => `
21
21
  position: relative;
22
22
  display: flex;
23
23
  flex-direction: column;
@@ -25,7 +25,7 @@ const d = r.div(
25
25
  margin-bottom: ${o.layout.gutter * 0.5}px;
26
26
  border: 1px solid ${o.colors.GREY_1};
27
27
  border-radius: ${o.layout.gutter * 0.75}px;
28
- ${t ? `
28
+ ${e ? `
29
29
  pointer-events: none;
30
30
  // opacity: 0.85;
31
31
  ` : ""}
@@ -45,34 +45,25 @@ const d = r.div(
45
45
  position: fixed;
46
46
  bottom: 24px;
47
47
  right: 24px;
48
- `);
49
- r.div(({ theme: o }) => {
50
- const { gutter: t } = o.layout;
51
- return `
52
- position: absolute;
53
- top: ${t * 2}px;
54
- left: ${t * 1.5}px;
55
- `;
56
- });
57
- const x = r.img(({ theme: o, $backgroundColor: t }) => {
48
+ `), x = r.img(({ theme: o, $backgroundColor: e }) => {
58
49
  const {
59
- layout: { gutter: e },
50
+ layout: { gutter: t },
60
51
  colors: i
61
52
  } = o;
62
53
  return `
63
- width: ${e * 6}px;
64
- height: ${e * 6}px;
65
- background: ${i[t]};
66
- border-radius: ${e * 0.5}px;
54
+ width: ${t * 6}px;
55
+ height: ${t * 6}px;
56
+ background: ${i[e]};
57
+ border-radius: ${t * 0.5}px;
67
58
  `;
68
- }), f = r(n)(({ theme: o, $viewMode: t }) => {
59
+ }), f = r(n)(({ theme: o, $viewMode: e }) => {
69
60
  const {
70
- layout: { gutter: e }
61
+ layout: { gutter: t }
71
62
  } = o;
72
63
  return `
73
64
  position:relative;
74
- min-height:${e * 2.75}px;
75
- ${t ? `
65
+ min-height:${t * 2.75}px;
66
+ ${e ? `
76
67
  pointer-events: none;
77
68
  opacity: 0.85;
78
69
  ` : ""}
@@ -81,20 +72,15 @@ const x = r.img(({ theme: o, $backgroundColor: t }) => {
81
72
  position: absolute;
82
73
  left: 50%;
83
74
  transform: translateX(-50%);
84
- `, b = r(n)`
85
- border-radius: 0 0 8px 8px;
86
- margin: auto;
87
- width: 328px;
88
75
  `;
89
76
  export {
90
- l as BodyContainer,
91
- d as Container,
77
+ d as BodyContainer,
78
+ l as Container,
92
79
  a as ContentContainer,
93
80
  c as FooterWrapper,
94
81
  u as HeaderContainer,
95
82
  f as HeaderWrapper,
96
83
  x as RadioCardIcon,
97
- $ as StepperWrapper,
98
- b as SyncIndicator
84
+ $ as StepperWrapper
99
85
  };
100
86
  //# sourceMappingURL=milestone-create-styled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"milestone-create-styled.js","sources":["../../../../src/features/milestone/create/milestone-create-styled.tsx"],"sourcesContent":["import type { TColorNames } from '../../ui/types';\n\nimport styled from 'styled-components';\n\nimport FlexView from '../../ui/layout/flex-view';\n\ninterface ContainerProps {\n $height?: string | number;\n $minHeight?: string;\n $viewMode: boolean;\n}\n\nconst Container = styled.div<ContainerProps>(\n ({ $height, $viewMode, $minHeight }) => `\n display: flex;\n flex-direction: column;\n height: ${$height ? (typeof $height === 'number' ? `${$height}px` : `${$height}`) : 'auto'};\n min-height: ${$minHeight ? $minHeight : 'auto'};\n ${\n $viewMode\n ? `\n cursor: not-allowed;\n border: 2px solid black;\n border-radius: 8px;\n transform: scale3d(.9943, .9900, 1);\n & ${ContentContainer} {\n pointer-events: auto;\n }\n `\n : ``\n }\n`,\n);\n\nconst BodyContainer = styled.div<{ $viewMode?: boolean }>(\n ({ theme, $viewMode }) => `\n position: relative;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n margin-bottom: ${theme.layout.gutter * 0.5}px;\n border: 1px solid ${theme.colors.GREY_1};\n border-radius: ${theme.layout.gutter * 0.75}px;\n ${\n $viewMode\n ? `\n pointer-events: none;\n // opacity: 0.85;\n `\n : ``\n }\n`,\n);\n\ninterface IContentContainer {\n $overflowHidden?: boolean;\n}\n\nconst ContentContainer = styled.div<IContentContainer>(({ $overflowHidden }) => {\n return `\n flex-grow: 1;\n overflow-y: auto;\n\n ${$overflowHidden && 'overflow: hidden'};\n `;\n});\n\nconst HeaderContainer = styled(FlexView)(({ theme }) => {\n return `\n position: sticky;\n top: 0;\n z-index: 2;\n border-bottom: 1px solid ${theme.colors.WHITE_5};\n `;\n});\n\nconst FooterWrapper = styled(FlexView)(() => {\n return `\n align-self: flex-end;\n position: fixed;\n bottom: 24px;\n right: 24px;\n `;\n});\n\nconst BackButtonWrapper = styled.div(({ theme }) => {\n const { gutter } = theme.layout;\n\n return `\n position: absolute;\n top: ${gutter * 2}px;\n left: ${gutter * 1.5}px;\n `;\n});\n\ninterface IRadioCardIconProps {\n $backgroundColor: TColorNames;\n}\n\nconst RadioCardIcon = styled.img<IRadioCardIconProps>(({ theme, $backgroundColor }) => {\n const {\n layout: { gutter },\n colors,\n } = theme;\n\n return `\n width: ${gutter * 6}px;\n height: ${gutter * 6}px;\n background: ${colors[$backgroundColor]};\n border-radius: ${gutter * 0.5}px;\n `;\n});\n\nconst HeaderWrapper = styled(FlexView)<{ $viewMode?: boolean }>(({ theme, $viewMode }) => {\n const {\n layout: { gutter },\n } = theme;\n\n return `\n position:relative;\n min-height:${gutter * 2.75}px;\n ${\n $viewMode\n ? `\n pointer-events: none;\n opacity: 0.85;\n `\n : ``\n }\n`;\n});\n\nconst StepperWrapper = styled.div`\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n`;\n\nconst SyncIndicator = styled(FlexView)`\n border-radius: 0 0 8px 8px;\n margin: auto;\n width: 328px;\n`;\n\nexport {\n Container,\n BodyContainer,\n ContentContainer,\n HeaderContainer,\n FooterWrapper,\n BackButtonWrapper,\n RadioCardIcon,\n StepperWrapper,\n HeaderWrapper,\n SyncIndicator,\n};\n"],"names":["Container","styled","$height","$viewMode","$minHeight","ContentContainer","BodyContainer","theme","$overflowHidden","HeaderContainer","FlexView","FooterWrapper","gutter","RadioCardIcon","$backgroundColor","colors","HeaderWrapper","StepperWrapper","SyncIndicator"],"mappings":";;AAYA,MAAMA,IAAYC,EAAO;AAAA,EACvB,CAAC,EAAE,SAAAC,GAAS,WAAAC,GAAW,YAAAC,EAAiB,MAAA;AAAA;AAAA;AAAA,YAG9BF,IAAW,OAAOA,KAAY,WAAW,GAAGA,CAAO,OAAO,GAAGA,CAAO,KAAM,MAAM;AAAA,gBAC5EE,KAA0B,MAAM;AAAA,IAE5CD,IACI;AAAA;AAAA;AAAA;AAAA;AAAA,YAKIE,CAAgB;AAAA;AAAA;AAAA,UAIpB,EACN;AAAA;AAEF,GAEMC,IAAgBL,EAAO;AAAA,EAC3B,CAAC,EAAE,OAAAM,GAAO,WAAAJ,EAAA,MAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,mBAKTI,EAAM,OAAO,SAAS,GAAG;AAAA,sBACtBA,EAAM,OAAO,MAAM;AAAA,mBACtBA,EAAM,OAAO,SAAS,IAAI;AAAA,IAEzCJ,IACI;AAAA;AAAA;AAAA,UAIA,EACN;AAAA;AAEF,GAMME,IAAmBJ,EAAO,IAAuB,CAAC,EAAE,iBAAAO,QACjD;AAAA;AAAA;AAAA;AAAA,MAIHA,KAAmB,kBAAkB;AAAA,GAE1C,GAEKC,IAAkBR,EAAOS,CAAQ,EAAE,CAAC,EAAE,OAAAH,QACnC;AAAA;AAAA;AAAA;AAAA,+BAIsBA,EAAM,OAAO,OAAO;AAAA,GAElD,GAEKI,IAAgBV,EAAOS,CAAQ,EAAE,MAC9B;AAAA;AAAA;AAAA;AAAA;AAAA,KAMR;AAEyBT,EAAO,IAAI,CAAC,EAAE,OAAAM,QAAY;AAC5C,QAAA,EAAE,QAAAK,EAAO,IAAIL,EAAM;AAElB,SAAA;AAAA;AAAA,WAEEK,IAAS,CAAC;AAAA,YACTA,IAAS,GAAG;AAAA;AAExB,CAAC;AAMD,MAAMC,IAAgBZ,EAAO,IAAyB,CAAC,EAAE,OAAAM,GAAO,kBAAAO,QAAuB;AAC/E,QAAA;AAAA,IACJ,QAAQ,EAAE,QAAAF,EAAO;AAAA,IACjB,QAAAG;AAAA,EACE,IAAAR;AAEG,SAAA;AAAA,aACIK,IAAS,CAAC;AAAA,cACTA,IAAS,CAAC;AAAA,kBACNG,EAAOD,CAAgB,CAAC;AAAA,qBACrBF,IAAS,GAAG;AAAA;AAEjC,CAAC,GAEKI,IAAgBf,EAAOS,CAAQ,EAA2B,CAAC,EAAE,OAAAH,GAAO,WAAAJ,QAAgB;AAClF,QAAA;AAAA,IACJ,QAAQ,EAAE,QAAAS,EAAO;AAAA,EACf,IAAAL;AAEG,SAAA;AAAA;AAAA,iBAEQK,IAAS,IAAI;AAAA,MAExBT,IACI;AAAA;AAAA;AAAA,YAIA,EACN;AAAA;AAEJ,CAAC,GAEKc,IAAiBhB,EAAO;AAAA;AAAA;AAAA;AAAA,GAMxBiB,IAAgBjB,EAAOS,CAAQ;AAAA;AAAA;AAAA;AAAA;"}
1
+ {"version":3,"file":"milestone-create-styled.js","sources":["../../../../src/features/milestone/create/milestone-create-styled.tsx"],"sourcesContent":["import type { TColorNames } from '../../ui/types';\n\nimport styled from 'styled-components';\n\nimport FlexView from '../../ui/layout/flex-view';\n\ninterface ContainerProps {\n $height?: string | number;\n $minHeight?: string;\n $viewMode: boolean;\n}\n\nconst Container = styled.div<ContainerProps>(\n ({ $height, $viewMode, $minHeight }) => `\n display: flex;\n flex-direction: column;\n height: ${$height ? (typeof $height === 'number' ? `${$height}px` : `${$height}`) : 'auto'};\n min-height: ${$minHeight ? $minHeight : 'auto'};\n ${\n $viewMode\n ? `\n cursor: not-allowed;\n border: 2px solid black;\n border-radius: 8px;\n transform: scale3d(.9943, .9900, 1);\n & ${ContentContainer} {\n pointer-events: auto;\n }\n `\n : ``\n }\n`,\n);\n\nconst BodyContainer = styled.div<{ $viewMode?: boolean }>(\n ({ theme, $viewMode }) => `\n position: relative;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n margin-bottom: ${theme.layout.gutter * 0.5}px;\n border: 1px solid ${theme.colors.GREY_1};\n border-radius: ${theme.layout.gutter * 0.75}px;\n ${\n $viewMode\n ? `\n pointer-events: none;\n // opacity: 0.85;\n `\n : ``\n }\n`,\n);\n\ninterface IContentContainer {\n $overflowHidden?: boolean;\n}\n\nconst ContentContainer = styled.div<IContentContainer>(({ $overflowHidden }) => {\n return `\n flex-grow: 1;\n overflow-y: auto;\n\n ${$overflowHidden && 'overflow: hidden'};\n `;\n});\n\nconst HeaderContainer = styled(FlexView)(({ theme }) => {\n return `\n position: sticky;\n top: 0;\n z-index: 2;\n border-bottom: 1px solid ${theme.colors.WHITE_5};\n `;\n});\n\nconst FooterWrapper = styled(FlexView)(() => {\n return `\n align-self: flex-end;\n position: fixed;\n bottom: 24px;\n right: 24px;\n `;\n});\n\ninterface IRadioCardIconProps {\n $backgroundColor: TColorNames;\n}\n\nconst RadioCardIcon = styled.img<IRadioCardIconProps>(({ theme, $backgroundColor }) => {\n const {\n layout: { gutter },\n colors,\n } = theme;\n\n return `\n width: ${gutter * 6}px;\n height: ${gutter * 6}px;\n background: ${colors[$backgroundColor]};\n border-radius: ${gutter * 0.5}px;\n `;\n});\n\nconst HeaderWrapper = styled(FlexView)<{ $viewMode?: boolean }>(({ theme, $viewMode }) => {\n const {\n layout: { gutter },\n } = theme;\n\n return `\n position:relative;\n min-height:${gutter * 2.75}px;\n ${\n $viewMode\n ? `\n pointer-events: none;\n opacity: 0.85;\n `\n : ``\n }\n`;\n});\n\nconst StepperWrapper = styled.div`\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n`;\n\nexport {\n Container,\n BodyContainer,\n ContentContainer,\n HeaderContainer,\n FooterWrapper,\n RadioCardIcon,\n StepperWrapper,\n HeaderWrapper,\n};\n"],"names":["Container","styled","$height","$viewMode","$minHeight","ContentContainer","BodyContainer","theme","$overflowHidden","HeaderContainer","FlexView","FooterWrapper","RadioCardIcon","$backgroundColor","gutter","colors","HeaderWrapper","StepperWrapper"],"mappings":";;AAYA,MAAMA,IAAYC,EAAO;AAAA,EACvB,CAAC,EAAE,SAAAC,GAAS,WAAAC,GAAW,YAAAC,EAAiB,MAAA;AAAA;AAAA;AAAA,YAG9BF,IAAW,OAAOA,KAAY,WAAW,GAAGA,CAAO,OAAO,GAAGA,CAAO,KAAM,MAAM;AAAA,gBAC5EE,KAA0B,MAAM;AAAA,IAE5CD,IACI;AAAA;AAAA;AAAA;AAAA;AAAA,YAKIE,CAAgB;AAAA;AAAA;AAAA,UAIpB,EACN;AAAA;AAEF,GAEMC,IAAgBL,EAAO;AAAA,EAC3B,CAAC,EAAE,OAAAM,GAAO,WAAAJ,EAAA,MAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,mBAKTI,EAAM,OAAO,SAAS,GAAG;AAAA,sBACtBA,EAAM,OAAO,MAAM;AAAA,mBACtBA,EAAM,OAAO,SAAS,IAAI;AAAA,IAEzCJ,IACI;AAAA;AAAA;AAAA,UAIA,EACN;AAAA;AAEF,GAMME,IAAmBJ,EAAO,IAAuB,CAAC,EAAE,iBAAAO,QACjD;AAAA;AAAA;AAAA;AAAA,MAIHA,KAAmB,kBAAkB;AAAA,GAE1C,GAEKC,IAAkBR,EAAOS,CAAQ,EAAE,CAAC,EAAE,OAAAH,QACnC;AAAA;AAAA;AAAA;AAAA,+BAIsBA,EAAM,OAAO,OAAO;AAAA,GAElD,GAEKI,IAAgBV,EAAOS,CAAQ,EAAE,MAC9B;AAAA;AAAA;AAAA;AAAA;AAAA,KAMR,GAMKE,IAAgBX,EAAO,IAAyB,CAAC,EAAE,OAAAM,GAAO,kBAAAM,QAAuB;AAC/E,QAAA;AAAA,IACJ,QAAQ,EAAE,QAAAC,EAAO;AAAA,IACjB,QAAAC;AAAA,EACE,IAAAR;AAEG,SAAA;AAAA,aACIO,IAAS,CAAC;AAAA,cACTA,IAAS,CAAC;AAAA,kBACNC,EAAOF,CAAgB,CAAC;AAAA,qBACrBC,IAAS,GAAG;AAAA;AAEjC,CAAC,GAEKE,IAAgBf,EAAOS,CAAQ,EAA2B,CAAC,EAAE,OAAAH,GAAO,WAAAJ,QAAgB;AAClF,QAAA;AAAA,IACJ,QAAQ,EAAE,QAAAW,EAAO;AAAA,EACf,IAAAP;AAEG,SAAA;AAAA;AAAA,iBAEQO,IAAS,IAAI;AAAA,MAExBX,IACI;AAAA;AAAA;AAAA,YAIA,EACN;AAAA;AAEJ,CAAC,GAEKc,IAAiBhB,EAAO;AAAA;AAAA;AAAA;AAAA;"}
@@ -1,93 +1,74 @@
1
- import { jsx as r, jsxs as I } from "react/jsx-runtime";
2
- import { memo as V, useMemo as Y, useEffect as H } from "react";
3
- import K from "../../ui/text/text.js";
4
- import N from "./milestone-create-components-map.js";
5
- import O from "./milestone-create-context.js";
6
- import { useFormDataPrefiller as R, useMilestoneFormTree as U, useFormTreeTraversal as W } from "./milestone-create-hooks.js";
7
- import { Container as _, SyncIndicator as q, BodyContainer as z } from "./milestone-create-styled.js";
8
- const re = V(
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import { memo as H, useMemo as R, useEffect as q } from "react";
3
+ import y from "./milestone-create-components-map.js";
4
+ import z from "./milestone-create-context.js";
5
+ import { useFormDataPrefiller as A, useMilestoneFormTree as I, useFormTreeTraversal as J } from "./milestone-create-hooks.js";
6
+ import { Container as K, BodyContainer as L } from "./milestone-create-styled.js";
7
+ const Y = H(
9
8
  ({
10
- studentName: $,
11
- studentId: v,
9
+ studentName: M,
10
+ studentId: l,
12
11
  height: x,
13
- minHeight: M,
14
- formData: m,
15
- config: c,
12
+ minHeight: S,
13
+ formData: n,
14
+ config: a,
16
15
  onChapterExitWarning: h,
17
16
  onFormDataChange: e,
18
- onPreSubmit: S,
19
- onExit: T,
20
- userType: C,
21
- board: b,
22
- schoolData: w,
23
- grade: y,
24
- journeysToInclude: D = [],
25
- isFirstMilestoneCreated: E = !0,
17
+ onPreSubmit: $,
18
+ onExit: C,
19
+ board: F,
20
+ schoolData: P,
21
+ grade: T,
26
22
  flow: t,
27
- milestoneId: j,
23
+ milestoneId: b,
28
24
  currentCountryCode: B,
29
- isGoalCreation: a,
30
- courseStream: F,
31
- classRatio: L,
25
+ isGoalCreation: c,
26
+ courseStream: D,
27
+ classRatio: E,
32
28
  enrollmentType: d
33
29
  }) => {
34
- const { formDataState: i, setFormData: P } = R(m, {
35
- schoolData: w,
36
- board: b,
37
- grade: y,
38
- config: c,
39
- journeysToInclude: D,
30
+ const { formDataState: i, setFormData: V } = A(n, {
31
+ schoolData: P,
32
+ board: F,
33
+ grade: T,
34
+ config: a,
40
35
  flow: t,
41
36
  currentCountryCode: B
42
- }), g = U({
43
- isFirstMilestoneCreated: E,
37
+ }), j = I({
44
38
  flow: t,
45
39
  formDataState: i,
46
- isGoalCreation: a
47
- }), o = e ? i : m, n = e ? "edit" : "view", u = n === "view", { currentStep: s, updateFormData: k, handleBack: p } = W({
40
+ isGoalCreation: c
41
+ }), o = e ? i : n, m = e ? "edit" : "view", u = m === "view", { currentStep: s, updateFormData: k, handleBack: p } = J({
48
42
  flow: t,
49
- updatedFormTree: g,
43
+ updatedFormTree: j,
50
44
  formData: o,
51
45
  formDataState: i,
52
- setFormData: P,
53
- handleExit: T
54
- }), { name: l } = s || {}, f = l ? N[l] : void 0, A = Y(() => ({ handleBack: p, mode: n, flow: t }), [p, n, t]);
55
- return H(() => {
46
+ setFormData: V,
47
+ handleExit: C
48
+ }), { name: v } = s || {}, f = v ? y[v] : void 0, w = R(() => ({ handleBack: p, mode: m, flow: t }), [p, m, t]);
49
+ return q(() => {
56
50
  e && e(o);
57
- }, [o, e]), /* @__PURE__ */ r(O.Provider, { value: A, children: /* @__PURE__ */ I(_, { $height: x, $minHeight: M, $viewMode: u, children: [
58
- C === "STUDENT" && /* @__PURE__ */ r(
59
- q,
60
- {
61
- $gutter: 16,
62
- $flexDirection: "row",
63
- $alignItems: "center",
64
- $background: "BLACK",
65
- $justifyContent: "center",
66
- children: /* @__PURE__ */ r(K, { $color: "YELLOW_4", $renderAs: "eyebrow2", children: "You are viewing your teacher’s screen" })
67
- }
68
- ),
69
- /* @__PURE__ */ r(z, { $viewMode: u, children: f && s && d ? /* @__PURE__ */ r(
70
- f,
71
- {
72
- studentName: $,
73
- currentStep: s,
74
- isGoalCreation: a,
75
- config: c,
76
- formData: o,
77
- onFormDataChange: k,
78
- onChapterExitWarning: h,
79
- studentId: v,
80
- onPreSubmit: S,
81
- milestoneId: j,
82
- courseStream: F,
83
- classRatio: L || 0,
84
- enrollmentType: d
85
- }
86
- ) : void 0 })
87
- ] }) });
51
+ }, [o, e]), /* @__PURE__ */ r(z.Provider, { value: w, children: /* @__PURE__ */ r(K, { $height: x, $minHeight: S, $viewMode: u, children: /* @__PURE__ */ r(L, { $viewMode: u, children: f && s && d ? /* @__PURE__ */ r(
52
+ f,
53
+ {
54
+ studentName: M,
55
+ currentStep: s,
56
+ isGoalCreation: c,
57
+ config: a,
58
+ formData: o,
59
+ onFormDataChange: k,
60
+ onChapterExitWarning: h,
61
+ studentId: l,
62
+ onPreSubmit: $,
63
+ milestoneId: b,
64
+ courseStream: D,
65
+ classRatio: E || 0,
66
+ enrollmentType: d
67
+ }
68
+ ) : void 0 }) }) });
88
69
  }
89
70
  );
90
71
  export {
91
- re as default
72
+ Y as default
92
73
  };
93
74
  //# sourceMappingURL=milestone-create.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"milestone-create.js","sources":["../../../../src/features/milestone/create/milestone-create.tsx"],"sourcesContent":["import type { MileStoneJourneyMode } from './milestone-create-context';\nimport type { IMileStoneCreateProps, IMilestoneFormData } from './milestone-create-types';\n\nimport React, { memo, useEffect, useMemo } from 'react';\n\nimport Text from '../../ui/text/text';\nimport ComponentsMap from './milestone-create-components-map';\nimport MilestoneCreateContext from './milestone-create-context';\nimport {\n useFormDataPrefiller,\n useFormTreeTraversal,\n useMilestoneFormTree,\n} from './milestone-create-hooks';\nimport { BodyContainer, Container, SyncIndicator } from './milestone-create-styled';\n\nconst MilestoneCreate: React.FC<IMileStoneCreateProps> = memo(\n ({\n studentName,\n studentId,\n height,\n minHeight,\n formData: formDataProp,\n config,\n onChapterExitWarning,\n onFormDataChange,\n onPreSubmit: handlePreSubmit,\n onExit: handleExit,\n userType,\n board,\n schoolData,\n grade,\n journeysToInclude = [],\n isFirstMilestoneCreated = true,\n flow,\n milestoneId,\n currentCountryCode,\n isGoalCreation,\n courseStream,\n classRatio,\n enrollmentType,\n }) => {\n const { formDataState, setFormData } = useFormDataPrefiller(formDataProp, {\n schoolData,\n board,\n grade,\n config,\n journeysToInclude,\n flow,\n currentCountryCode,\n });\n\n const updatedFormTree = useMilestoneFormTree({\n isFirstMilestoneCreated,\n flow,\n formDataState,\n isGoalCreation,\n });\n\n const formData = (onFormDataChange ? formDataState : formDataProp) as IMilestoneFormData; //TODO: make better\n\n const mode: MileStoneJourneyMode = onFormDataChange ? 'edit' : 'view';\n const isViewMode = mode === 'view';\n\n const { currentStep, updateFormData, handleBack } = useFormTreeTraversal({\n flow,\n updatedFormTree,\n formData,\n formDataState,\n setFormData,\n handleExit,\n });\n\n const { name } = currentStep || {};\n const StepComponent = name ? ComponentsMap[name] : undefined;\n\n const contextValue = useMemo(() => ({ handleBack, mode, flow }), [handleBack, mode, flow]);\n\n useEffect(() => {\n if (onFormDataChange) {\n onFormDataChange(formData);\n }\n }, [formData, onFormDataChange]);\n\n return (\n <MilestoneCreateContext.Provider value={contextValue}>\n <Container $height={height} $minHeight={minHeight} $viewMode={isViewMode}>\n {userType === 'STUDENT' && (\n <SyncIndicator\n $gutter={16}\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $background=\"BLACK\"\n $justifyContent=\"center\"\n >\n <Text $color=\"YELLOW_4\" $renderAs=\"eyebrow2\">\n You are viewing your teacher’s screen\n </Text>\n </SyncIndicator>\n )}\n\n <BodyContainer $viewMode={isViewMode}>\n {StepComponent && currentStep && enrollmentType ? (\n <StepComponent\n studentName={studentName}\n currentStep={currentStep}\n isGoalCreation={isGoalCreation}\n config={config}\n formData={formData}\n onFormDataChange={updateFormData}\n onChapterExitWarning={onChapterExitWarning}\n studentId={studentId}\n onPreSubmit={handlePreSubmit}\n milestoneId={milestoneId}\n courseStream={courseStream}\n classRatio={classRatio || 0}\n enrollmentType={enrollmentType}\n />\n ) : undefined}\n </BodyContainer>\n </Container>\n </MilestoneCreateContext.Provider>\n );\n },\n);\n\nexport default MilestoneCreate;\n"],"names":["MilestoneCreate","memo","studentName","studentId","height","minHeight","formDataProp","config","onChapterExitWarning","onFormDataChange","handlePreSubmit","handleExit","userType","board","schoolData","grade","journeysToInclude","isFirstMilestoneCreated","flow","milestoneId","currentCountryCode","isGoalCreation","courseStream","classRatio","enrollmentType","formDataState","setFormData","useFormDataPrefiller","updatedFormTree","useMilestoneFormTree","formData","mode","isViewMode","currentStep","updateFormData","handleBack","useFormTreeTraversal","name","StepComponent","ComponentsMap","contextValue","useMemo","useEffect","jsx","MilestoneCreateContext","jsxs","Container","SyncIndicator","Text","BodyContainer"],"mappings":";;;;;;;AAeA,MAAMA,KAAmDC;AAAA,EACvD,CAAC;AAAA,IACC,aAAAC;AAAA,IACA,WAAAC;AAAA,IACA,QAAAC;AAAA,IACA,WAAAC;AAAA,IACA,UAAUC;AAAA,IACV,QAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,aAAaC;AAAA,IACb,QAAQC;AAAA,IACR,UAAAC;AAAA,IACA,OAAAC;AAAA,IACA,YAAAC;AAAA,IACA,OAAAC;AAAA,IACA,mBAAAC,IAAoB,CAAC;AAAA,IACrB,yBAAAC,IAA0B;AAAA,IAC1B,MAAAC;AAAA,IACA,aAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,YAAAC;AAAA,IACA,gBAAAC;AAAA,EAAA,MACI;AACJ,UAAM,EAAE,eAAAC,GAAe,aAAAC,MAAgBC,EAAqBrB,GAAc;AAAA,MACxE,YAAAQ;AAAA,MACA,OAAAD;AAAA,MACA,OAAAE;AAAA,MACA,QAAAR;AAAA,MACA,mBAAAS;AAAA,MACA,MAAAE;AAAA,MACA,oBAAAE;AAAA,IAAA,CACD,GAEKQ,IAAkBC,EAAqB;AAAA,MAC3C,yBAAAZ;AAAA,MACA,MAAAC;AAAA,MACA,eAAAO;AAAA,MACA,gBAAAJ;AAAA,IAAA,CACD,GAEKS,IAAYrB,IAAmBgB,IAAgBnB,GAE/CyB,IAA6BtB,IAAmB,SAAS,QACzDuB,IAAaD,MAAS,QAEtB,EAAE,aAAAE,GAAa,gBAAAC,GAAgB,YAAAC,EAAA,IAAeC,EAAqB;AAAA,MACvE,MAAAlB;AAAA,MACA,iBAAAU;AAAA,MACA,UAAAE;AAAA,MACA,eAAAL;AAAA,MACA,aAAAC;AAAA,MACA,YAAAf;AAAA,IAAA,CACD,GAEK,EAAE,MAAA0B,EAAA,IAASJ,KAAe,IAC1BK,IAAgBD,IAAOE,EAAcF,CAAI,IAAI,QAE7CG,IAAeC,EAAQ,OAAO,EAAE,YAAAN,GAAY,MAAAJ,GAAM,MAAAb,EAAK,IAAI,CAACiB,GAAYJ,GAAMb,CAAI,CAAC;AAEzF,WAAAwB,EAAU,MAAM;AACd,MAAIjC,KACFA,EAAiBqB,CAAQ;AAAA,IAC3B,GACC,CAACA,GAAUrB,CAAgB,CAAC,GAG5B,gBAAAkC,EAAAC,EAAuB,UAAvB,EAAgC,OAAOJ,GACtC,UAAC,gBAAAK,EAAAC,GAAA,EAAU,SAAS1C,GAAQ,YAAYC,GAAW,WAAW2B,GAC3D,UAAA;AAAA,MAAApB,MAAa,aACZ,gBAAA+B;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,SAAS;AAAA,UACT,gBAAe;AAAA,UACf,aAAY;AAAA,UACZ,aAAY;AAAA,UACZ,iBAAgB;AAAA,UAEhB,4BAACC,GAAK,EAAA,QAAO,YAAW,WAAU,YAAW,UAE7C,yCAAA;AAAA,QAAA;AAAA,MACF;AAAA,wBAGDC,GAAc,EAAA,WAAWjB,GACvB,UAAAM,KAAiBL,KAAeT,IAC/B,gBAAAmB;AAAA,QAACL;AAAA,QAAA;AAAA,UACC,aAAApC;AAAA,UACA,aAAA+B;AAAA,UACA,gBAAAZ;AAAA,UACA,QAAAd;AAAA,UACA,UAAAuB;AAAA,UACA,kBAAkBI;AAAA,UAClB,sBAAA1B;AAAA,UACA,WAAAL;AAAA,UACA,aAAaO;AAAA,UACb,aAAAS;AAAA,UACA,cAAAG;AAAA,UACA,YAAYC,KAAc;AAAA,UAC1B,gBAAAC;AAAA,QAAA;AAAA,MAAA,IAEA,OACN,CAAA;AAAA,IAAA,EACF,CAAA,EACF,CAAA;AAAA,EAEJ;AACF;"}
1
+ {"version":3,"file":"milestone-create.js","sources":["../../../../src/features/milestone/create/milestone-create.tsx"],"sourcesContent":["import type { MileStoneJourneyMode } from './milestone-create-context';\nimport type { IMileStoneCreateProps, IMilestoneFormData } from './milestone-create-types';\n\nimport React, { memo, useEffect, useMemo } from 'react';\n\nimport ComponentsMap from './milestone-create-components-map';\nimport MilestoneCreateContext from './milestone-create-context';\nimport {\n useFormDataPrefiller,\n useFormTreeTraversal,\n useMilestoneFormTree,\n} from './milestone-create-hooks';\nimport { BodyContainer, Container } from './milestone-create-styled';\n\nconst MilestoneCreate: React.FC<IMileStoneCreateProps> = memo(\n ({\n studentName,\n studentId,\n height,\n minHeight,\n formData: formDataProp,\n config,\n onChapterExitWarning,\n onFormDataChange,\n onPreSubmit: handlePreSubmit,\n onExit: handleExit,\n board,\n schoolData,\n grade,\n flow,\n milestoneId,\n currentCountryCode,\n isGoalCreation,\n courseStream,\n classRatio,\n enrollmentType,\n }) => {\n const { formDataState, setFormData } = useFormDataPrefiller(formDataProp, {\n schoolData,\n board,\n grade,\n config,\n flow,\n currentCountryCode,\n });\n\n const updatedFormTree = useMilestoneFormTree({\n flow,\n formDataState,\n isGoalCreation,\n });\n\n const formData = (onFormDataChange ? formDataState : formDataProp) as IMilestoneFormData; //TODO: make better\n\n const mode: MileStoneJourneyMode = onFormDataChange ? 'edit' : 'view';\n const isViewMode = mode === 'view';\n\n const { currentStep, updateFormData, handleBack } = useFormTreeTraversal({\n flow,\n updatedFormTree,\n formData,\n formDataState,\n setFormData,\n handleExit,\n });\n\n const { name } = currentStep || {};\n const StepComponent = name ? ComponentsMap[name] : undefined;\n\n const contextValue = useMemo(() => ({ handleBack, mode, flow }), [handleBack, mode, flow]);\n\n useEffect(() => {\n if (onFormDataChange) {\n onFormDataChange(formData);\n }\n }, [formData, onFormDataChange]);\n\n return (\n <MilestoneCreateContext.Provider value={contextValue}>\n <Container $height={height} $minHeight={minHeight} $viewMode={isViewMode}>\n <BodyContainer $viewMode={isViewMode}>\n {StepComponent && currentStep && enrollmentType ? (\n <StepComponent\n studentName={studentName}\n currentStep={currentStep}\n isGoalCreation={isGoalCreation}\n config={config}\n formData={formData}\n onFormDataChange={updateFormData}\n onChapterExitWarning={onChapterExitWarning}\n studentId={studentId}\n onPreSubmit={handlePreSubmit}\n milestoneId={milestoneId}\n courseStream={courseStream}\n classRatio={classRatio || 0}\n enrollmentType={enrollmentType}\n />\n ) : undefined}\n </BodyContainer>\n </Container>\n </MilestoneCreateContext.Provider>\n );\n },\n);\n\nexport default MilestoneCreate;\n"],"names":["MilestoneCreate","memo","studentName","studentId","height","minHeight","formDataProp","config","onChapterExitWarning","onFormDataChange","handlePreSubmit","handleExit","board","schoolData","grade","flow","milestoneId","currentCountryCode","isGoalCreation","courseStream","classRatio","enrollmentType","formDataState","setFormData","useFormDataPrefiller","updatedFormTree","useMilestoneFormTree","formData","mode","isViewMode","currentStep","updateFormData","handleBack","useFormTreeTraversal","name","StepComponent","ComponentsMap","contextValue","useMemo","useEffect","jsx","MilestoneCreateContext","Container","BodyContainer"],"mappings":";;;;;;AAcA,MAAMA,IAAmDC;AAAA,EACvD,CAAC;AAAA,IACC,aAAAC;AAAA,IACA,WAAAC;AAAA,IACA,QAAAC;AAAA,IACA,WAAAC;AAAA,IACA,UAAUC;AAAA,IACV,QAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,aAAaC;AAAA,IACb,QAAQC;AAAA,IACR,OAAAC;AAAA,IACA,YAAAC;AAAA,IACA,OAAAC;AAAA,IACA,MAAAC;AAAA,IACA,aAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,YAAAC;AAAA,IACA,gBAAAC;AAAA,EAAA,MACI;AACJ,UAAM,EAAE,eAAAC,GAAe,aAAAC,MAAgBC,EAAqBlB,GAAc;AAAA,MACxE,YAAAO;AAAA,MACA,OAAAD;AAAA,MACA,OAAAE;AAAA,MACA,QAAAP;AAAA,MACA,MAAAQ;AAAA,MACA,oBAAAE;AAAA,IAAA,CACD,GAEKQ,IAAkBC,EAAqB;AAAA,MAC3C,MAAAX;AAAA,MACA,eAAAO;AAAA,MACA,gBAAAJ;AAAA,IAAA,CACD,GAEKS,IAAYlB,IAAmBa,IAAgBhB,GAE/CsB,IAA6BnB,IAAmB,SAAS,QACzDoB,IAAaD,MAAS,QAEtB,EAAE,aAAAE,GAAa,gBAAAC,GAAgB,YAAAC,EAAA,IAAeC,EAAqB;AAAA,MACvE,MAAAlB;AAAA,MACA,iBAAAU;AAAA,MACA,UAAAE;AAAA,MACA,eAAAL;AAAA,MACA,aAAAC;AAAA,MACA,YAAAZ;AAAA,IAAA,CACD,GAEK,EAAE,MAAAuB,EAAA,IAASJ,KAAe,IAC1BK,IAAgBD,IAAOE,EAAcF,CAAI,IAAI,QAE7CG,IAAeC,EAAQ,OAAO,EAAE,YAAAN,GAAY,MAAAJ,GAAM,MAAAb,EAAK,IAAI,CAACiB,GAAYJ,GAAMb,CAAI,CAAC;AAEzF,WAAAwB,EAAU,MAAM;AACd,MAAI9B,KACFA,EAAiBkB,CAAQ;AAAA,IAC3B,GACC,CAACA,GAAUlB,CAAgB,CAAC,GAG7B,gBAAA+B,EAACC,EAAuB,UAAvB,EAAgC,OAAOJ,GACtC,UAAA,gBAAAG,EAACE,KAAU,SAAStC,GAAQ,YAAYC,GAAW,WAAWwB,GAC5D,UAAC,gBAAAW,EAAAG,GAAA,EAAc,WAAWd,GACvB,UAAAM,KAAiBL,KAAeT,IAC/B,gBAAAmB;AAAA,MAACL;AAAA,MAAA;AAAA,QACC,aAAAjC;AAAA,QACA,aAAA4B;AAAA,QACA,gBAAAZ;AAAA,QACA,QAAAX;AAAA,QACA,UAAAoB;AAAA,QACA,kBAAkBI;AAAA,QAClB,sBAAAvB;AAAA,QACA,WAAAL;AAAA,QACA,aAAaO;AAAA,QACb,aAAAM;AAAA,QACA,cAAAG;AAAA,QACA,YAAYC,KAAc;AAAA,QAC1B,gBAAAC;AAAA,MAAA;AAAA,IACF,IACE,OACN,CAAA,EACF,CAAA,EACF,CAAA;AAAA,EAEJ;AACF;"}