@cuemath/leap 3.3.37-m → 3.3.37

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 (224) hide show
  1. package/dist/assets/gif/gif.js +4 -1
  2. package/dist/assets/gif/gif.js.map +1 -1
  3. package/dist/assets/illustrations/illustrations.js +1 -1
  4. package/dist/assets/illustrations/illustrations.js.map +1 -1
  5. package/dist/assets/line-icons/icons/chevron-right.js.map +1 -1
  6. package/dist/features/auth/comps/animated-avatar-message/animated-avatar-message.js +1 -1
  7. package/dist/features/auth/comps/animated-avatar-message/animated-avatar-message.js.map +1 -1
  8. package/dist/features/auth/comps/otp-input/otp-input.js +35 -29
  9. package/dist/features/auth/comps/otp-input/otp-input.js.map +1 -1
  10. package/dist/features/auth/pla-signup/pla-analytics-events.js +13 -3
  11. package/dist/features/auth/pla-signup/pla-analytics-events.js.map +1 -1
  12. package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js +43 -34
  13. package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js.map +1 -1
  14. package/dist/features/chapters-v2/chapter-details/chapter-details.js +140 -101
  15. package/dist/features/chapters-v2/chapter-details/chapter-details.js.map +1 -1
  16. package/dist/features/chapters-v2/utils/index.js +20 -16
  17. package/dist/features/chapters-v2/utils/index.js.map +1 -1
  18. package/dist/features/circle-games/game-launcher/api/get-content-for-today/get-circle-home-api.js +6 -6
  19. package/dist/features/circle-games/game-launcher/api/get-content-for-today/get-circle-home-api.js.map +1 -1
  20. package/dist/features/circle-games/game-launcher/dal/use-get-circle-home-details-dal/use-get-circle-home-details-dal.js +20 -21
  21. package/dist/features/circle-games/game-launcher/dal/use-get-circle-home-details-dal/use-get-circle-home-details-dal.js.map +1 -1
  22. package/dist/features/circle-games/games/web-view/web-view-types.js.map +1 -1
  23. package/dist/features/circle-games/sign-up/sign-up.js +6 -6
  24. package/dist/features/circle-games/sign-up/sign-up.js.map +1 -1
  25. package/dist/features/homework/hw-card-list/hw-card-list-view.js +17 -17
  26. package/dist/features/journey/hooks/use-chapter-page-journey/use-download-block-journey.js +86 -0
  27. package/dist/features/journey/hooks/use-chapter-page-journey/use-download-block-journey.js.map +1 -0
  28. package/dist/features/journey/hooks/use-chapter-page-journey/use-download-node-journey.js +140 -0
  29. package/dist/features/journey/hooks/use-chapter-page-journey/use-download-node-journey.js.map +1 -0
  30. package/dist/features/journey/journey-id/journey-id-student.js +1 -1
  31. package/dist/features/journey/journey-id/journey-id-student.js.map +1 -1
  32. package/dist/features/journey/journey-id/journey-id-teacher.js +2 -2
  33. package/dist/features/journey/journey-id/journey-id-teacher.js.map +1 -1
  34. package/dist/features/journey/mocks/chapter-page-journey-mock-data.js +400 -0
  35. package/dist/features/journey/mocks/chapter-page-journey-mock-data.js.map +1 -1
  36. package/dist/features/milestone/constants.js +28 -15
  37. package/dist/features/milestone/constants.js.map +1 -1
  38. package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.js +6 -6
  39. package/dist/features/milestone/create/comps/sheets-list/sheets-list-styled.js +2 -2
  40. package/dist/features/milestone/create/comps/test-type-step/test-type-utils.js +23 -16
  41. package/dist/features/milestone/create/comps/test-type-step/test-type-utils.js.map +1 -1
  42. package/dist/features/milestone/create/milestone-create-helpers.js +13 -7
  43. package/dist/features/milestone/create/milestone-create-helpers.js.map +1 -1
  44. package/dist/features/parent-dashboard/api/cancel-subscription.js +9 -0
  45. package/dist/features/parent-dashboard/api/cancel-subscription.js.map +1 -0
  46. package/dist/features/parent-dashboard/comps/billing-information/billing-information-styled.js +20 -0
  47. package/dist/features/parent-dashboard/comps/billing-information/billing-information-styled.js.map +1 -0
  48. package/dist/features/parent-dashboard/comps/billing-information/billing-information.js +74 -0
  49. package/dist/features/parent-dashboard/comps/billing-information/billing-information.js.map +1 -0
  50. package/dist/features/{trial-session/comps/pla → parent-dashboard/comps}/next-steps/next-steps-constants.js +1 -1
  51. package/dist/features/parent-dashboard/comps/next-steps/next-steps-constants.js.map +1 -0
  52. package/dist/features/{trial-session/comps/pla → parent-dashboard/comps}/next-steps/next-steps-styled.js +1 -1
  53. package/dist/features/parent-dashboard/comps/next-steps/next-steps-styled.js.map +1 -0
  54. package/dist/features/{trial-session/comps/pla → parent-dashboard/comps}/next-steps/next-steps.js +5 -5
  55. package/dist/features/parent-dashboard/comps/next-steps/next-steps.js.map +1 -0
  56. package/dist/features/parent-dashboard/comps/pla-first-session-introduction/pla-first-session-introduction.js +28 -22
  57. package/dist/features/parent-dashboard/comps/pla-first-session-introduction/pla-first-session-introduction.js.map +1 -1
  58. package/dist/features/parent-dashboard/comps/session-status/hooks/use-countdown.js +34 -0
  59. package/dist/features/parent-dashboard/comps/session-status/hooks/use-countdown.js.map +1 -0
  60. package/dist/features/parent-dashboard/comps/session-status/hooks/use-session-status-config.js +137 -0
  61. package/dist/features/parent-dashboard/comps/session-status/hooks/use-session-status-config.js.map +1 -0
  62. package/dist/features/parent-dashboard/comps/session-status/session-status-constants.js +20 -0
  63. package/dist/features/parent-dashboard/comps/session-status/session-status-constants.js.map +1 -0
  64. package/dist/features/parent-dashboard/comps/session-status/session-status-helpers.js +19 -0
  65. package/dist/features/parent-dashboard/comps/session-status/session-status-helpers.js.map +1 -0
  66. package/dist/features/{trial-session/comps/pla → parent-dashboard/comps}/session-status/session-status-styled.js +2 -2
  67. package/dist/features/parent-dashboard/comps/session-status/session-status-styled.js.map +1 -0
  68. package/dist/features/parent-dashboard/comps/session-status/session-status.js +124 -0
  69. package/dist/features/parent-dashboard/comps/session-status/session-status.js.map +1 -0
  70. package/dist/features/{trial-session/comps/pla → parent-dashboard/comps}/session-summary/session-summary-constants.js +18 -12
  71. package/dist/features/parent-dashboard/comps/session-summary/session-summary-constants.js.map +1 -0
  72. package/dist/features/parent-dashboard/comps/session-summary/session-summary.js +54 -0
  73. package/dist/features/parent-dashboard/comps/session-summary/session-summary.js.map +1 -0
  74. package/dist/features/{trial-session/comps/pla → parent-dashboard/comps}/session-summary/summary-card/summary-card-styled.js +1 -1
  75. package/dist/features/parent-dashboard/comps/session-summary/summary-card/summary-card-styled.js.map +1 -0
  76. package/dist/features/parent-dashboard/comps/session-summary/summary-card/summary-card.js +72 -0
  77. package/dist/features/parent-dashboard/comps/session-summary/summary-card/summary-card.js.map +1 -0
  78. package/dist/features/parent-dashboard/comps/upcoming-sessions/upcoming-sessions-constants.js.map +1 -0
  79. package/dist/features/{trial-session/comps/pla → parent-dashboard/comps}/upcoming-sessions/upcoming-sessions-styled.js +1 -1
  80. package/dist/features/parent-dashboard/comps/upcoming-sessions/upcoming-sessions-styled.js.map +1 -0
  81. package/dist/features/parent-dashboard/comps/upcoming-sessions/upcoming-sessions-types.js.map +1 -0
  82. package/dist/features/{trial-session/comps/pla → parent-dashboard/comps}/upcoming-sessions/upcoming-sessions.js +14 -14
  83. package/dist/features/parent-dashboard/comps/upcoming-sessions/upcoming-sessions.js.map +1 -0
  84. package/dist/features/parent-dashboard/hooks/use-fetch-parent-home.js +1 -1
  85. package/dist/features/parent-dashboard/hooks/use-fetch-parent-home.js.map +1 -1
  86. package/dist/features/parent-dashboard/hooks/use-parent-home-data.js +48 -46
  87. package/dist/features/parent-dashboard/hooks/use-parent-home-data.js.map +1 -1
  88. package/dist/features/parent-dashboard/modals/cancel-subscription/cancel-subscription-constants.js +21 -0
  89. package/dist/features/parent-dashboard/modals/cancel-subscription/cancel-subscription-constants.js.map +1 -0
  90. package/dist/features/parent-dashboard/modals/cancel-subscription/cancel-subscription.js +85 -0
  91. package/dist/features/parent-dashboard/modals/cancel-subscription/cancel-subscription.js.map +1 -0
  92. package/dist/features/parent-dashboard/modals/cancellation-confirmation/cancellation-confirmation.js +23 -0
  93. package/dist/features/parent-dashboard/modals/cancellation-confirmation/cancellation-confirmation.js.map +1 -0
  94. package/dist/features/parent-dashboard/modals/cancellation-reason/cancellation-reason-constant.js +55 -0
  95. package/dist/features/parent-dashboard/modals/cancellation-reason/cancellation-reason-constant.js.map +1 -0
  96. package/dist/features/parent-dashboard/modals/cancellation-reason/cancellation-reason-styled.js +71 -0
  97. package/dist/features/parent-dashboard/modals/cancellation-reason/cancellation-reason-styled.js.map +1 -0
  98. package/dist/features/parent-dashboard/modals/cancellation-reason/cancellation-reason.js +119 -0
  99. package/dist/features/parent-dashboard/modals/cancellation-reason/cancellation-reason.js.map +1 -0
  100. package/dist/features/parent-dashboard/modals/hooks/use-pla-model-handlers.js +58 -0
  101. package/dist/features/parent-dashboard/modals/hooks/use-pla-model-handlers.js.map +1 -0
  102. package/dist/features/parent-dashboard/modals/student-profile-summary/student-profile-summary.js +16 -17
  103. package/dist/features/parent-dashboard/modals/student-profile-summary/student-profile-summary.js.map +1 -1
  104. package/dist/features/parent-dashboard/modals/trial-report/trial-report-styled.js +4 -8
  105. package/dist/features/parent-dashboard/modals/trial-report/trial-report-styled.js.map +1 -1
  106. package/dist/features/parent-dashboard/modals/tutor-change/tutor-change-styled.js +3 -3
  107. package/dist/features/parent-dashboard/modals/tutor-change/tutor-change-styled.js.map +1 -1
  108. package/dist/features/parent-dashboard/modals/view-payment-method/view-payment-method.js +76 -0
  109. package/dist/features/parent-dashboard/modals/view-payment-method/view-payment-method.js.map +1 -0
  110. package/dist/features/parent-dashboard/parent-dashboard-constants.js +45 -4
  111. package/dist/features/parent-dashboard/parent-dashboard-constants.js.map +1 -1
  112. package/dist/features/parent-dashboard/parent-dashboard-types.js +3 -3
  113. package/dist/features/parent-dashboard/parent-dashboard-types.js.map +1 -1
  114. package/dist/features/parent-dashboard/parent-dashboard-view.js +197 -174
  115. package/dist/features/parent-dashboard/parent-dashboard-view.js.map +1 -1
  116. package/dist/features/stickers/sticker-selector/sticker-selector.js +57 -58
  117. package/dist/features/stickers/sticker-selector/sticker-selector.js.map +1 -1
  118. package/dist/features/stickers/stickers-effects/stickers-effects-helper.js.map +1 -1
  119. package/dist/features/stickers/stickers-effects/stickers-effects-styled.js +17 -32
  120. package/dist/features/stickers/stickers-effects/stickers-effects-styled.js.map +1 -1
  121. package/dist/features/stickers/stickers-effects/stickers-effects.js +56 -40
  122. package/dist/features/stickers/stickers-effects/stickers-effects.js.map +1 -1
  123. package/dist/features/student-details/class-details/class-details-utils.js +6 -6
  124. package/dist/features/trial-session/api/teacher-availability.js +9 -0
  125. package/dist/features/trial-session/api/teacher-availability.js.map +1 -0
  126. package/dist/features/trial-session/comps/class-preference/class-preference.js +74 -58
  127. package/dist/features/trial-session/comps/class-preference/class-preference.js.map +1 -1
  128. package/dist/features/trial-session/comps/class-preference/helpers.js +28 -0
  129. package/dist/features/trial-session/comps/class-preference/helpers.js.map +1 -0
  130. package/dist/features/trial-session/comps/learning-plan/index.js +47 -45
  131. package/dist/features/trial-session/comps/learning-plan/index.js.map +1 -1
  132. package/dist/features/trial-session/comps/navigation-bar/index.js +41 -40
  133. package/dist/features/trial-session/comps/navigation-bar/index.js.map +1 -1
  134. package/dist/features/trial-session/comps/school-goals/school-goals.js +59 -57
  135. package/dist/features/trial-session/comps/school-goals/school-goals.js.map +1 -1
  136. package/dist/features/trial-session/comps/session-report/session-report.js +15 -15
  137. package/dist/features/trial-session/comps/session-report/session-report.js.map +1 -1
  138. package/dist/features/trial-session/comps/student-enrichment/student-enrichment.js +41 -40
  139. package/dist/features/trial-session/comps/student-enrichment/student-enrichment.js.map +1 -1
  140. package/dist/features/trial-session/comps/student-feedback/student-feedback-constants.js +5 -0
  141. package/dist/features/trial-session/comps/student-feedback/student-feedback-constants.js.map +1 -1
  142. package/dist/features/trial-session/comps/student-feedback/student-feedback.js +96 -51
  143. package/dist/features/trial-session/comps/student-feedback/student-feedback.js.map +1 -1
  144. package/dist/features/trial-session/comps/student-profile/student-profile.js +70 -63
  145. package/dist/features/trial-session/comps/student-profile/student-profile.js.map +1 -1
  146. package/dist/features/trial-session/comps/teacher-intro/teacher-profile/teacher-profile.js +43 -44
  147. package/dist/features/trial-session/comps/teacher-intro/teacher-profile/teacher-profile.js.map +1 -1
  148. package/dist/features/trial-session/comps/test-prep/test-prep.js +41 -40
  149. package/dist/features/trial-session/comps/test-prep/test-prep.js.map +1 -1
  150. package/dist/features/trial-session/comps/trial-circle-game/trial-circle-game.js +60 -61
  151. package/dist/features/trial-session/comps/trial-circle-game/trial-circle-game.js.map +1 -1
  152. package/dist/features/trial-session/helper.js +76 -61
  153. package/dist/features/trial-session/helper.js.map +1 -1
  154. package/dist/features/trial-session/hooks/use-slide-config-update.js +49 -0
  155. package/dist/features/trial-session/hooks/use-slide-config-update.js.map +1 -0
  156. package/dist/features/trial-session/hooks/use-trial-session-navigation.js +174 -144
  157. package/dist/features/trial-session/hooks/use-trial-session-navigation.js.map +1 -1
  158. package/dist/features/trial-session/trial-session-types.js.map +1 -1
  159. package/dist/features/trial-session/trial-session-view.js +99 -110
  160. package/dist/features/trial-session/trial-session-view.js.map +1 -1
  161. package/dist/features/ui/accordion/accordion-items/accordion-items.js +13 -13
  162. package/dist/features/ui/accordion/accordion-items/accordion-items.js.map +1 -1
  163. package/dist/features/ui/modals/modal-styled.js +45 -13
  164. package/dist/features/ui/modals/modal-styled.js.map +1 -1
  165. package/dist/features/ui/modals/modal.js +31 -31
  166. package/dist/features/ui/modals/modal.js.map +1 -1
  167. package/dist/features/utils/utils.js +1 -1
  168. package/dist/features/utils/utils.js.map +1 -1
  169. package/dist/index.d.ts +95 -144
  170. package/dist/index.js +292 -301
  171. package/dist/index.js.map +1 -1
  172. package/dist/static/learning-session-grid-bg-mobile.8d2b7258.gif +0 -0
  173. package/dist/static/way-forward-grid-bg-mobile.374043d7.gif +0 -0
  174. package/dist/static/your-goals-grid-bg-mobile.62557024.gif +0 -0
  175. package/package.json +2 -3
  176. package/dist/features/parent-dashboard/modals/student-profile-summary/student-profile-summary-styled.js +0 -12
  177. package/dist/features/parent-dashboard/modals/student-profile-summary/student-profile-summary-styled.js.map +0 -1
  178. package/dist/features/stickers/sticker-selector/hooks/use-handle-sticker-send.js +0 -32
  179. package/dist/features/stickers/sticker-selector/hooks/use-handle-sticker-send.js.map +0 -1
  180. package/dist/features/stickers/sticker-selector/hooks/use-stickers-journey/use-stickers-journey.js +0 -72
  181. package/dist/features/stickers/sticker-selector/hooks/use-stickers-journey/use-stickers-journey.js.map +0 -1
  182. package/dist/features/stickers/stickers-effects/comps/sticker-with-fallback.js +0 -34
  183. package/dist/features/stickers/stickers-effects/comps/sticker-with-fallback.js.map +0 -1
  184. package/dist/features/stickers/stickers-effects/constants.js +0 -26
  185. package/dist/features/stickers/stickers-effects/constants.js.map +0 -1
  186. package/dist/features/stickers/stickers-effects/context/sticker-provider.js +0 -28
  187. package/dist/features/stickers/stickers-effects/context/sticker-provider.js.map +0 -1
  188. package/dist/features/stickers/stickers-effects/hooks/use-stickers.js +0 -12
  189. package/dist/features/stickers/stickers-effects/hooks/use-stickers.js.map +0 -1
  190. package/dist/features/stickers/stickers-effects/stickers-effects-types.js +0 -6
  191. package/dist/features/stickers/stickers-effects/stickers-effects-types.js.map +0 -1
  192. package/dist/features/trial-session/comps/pla/next-steps/next-steps-constants.js.map +0 -1
  193. package/dist/features/trial-session/comps/pla/next-steps/next-steps-styled.js.map +0 -1
  194. package/dist/features/trial-session/comps/pla/next-steps/next-steps.js.map +0 -1
  195. package/dist/features/trial-session/comps/pla/session-status/hooks/use-session-countdown.js +0 -29
  196. package/dist/features/trial-session/comps/pla/session-status/hooks/use-session-countdown.js.map +0 -1
  197. package/dist/features/trial-session/comps/pla/session-status/hooks/use-session-status-config.js +0 -132
  198. package/dist/features/trial-session/comps/pla/session-status/hooks/use-session-status-config.js.map +0 -1
  199. package/dist/features/trial-session/comps/pla/session-status/session-status-constants.js +0 -11
  200. package/dist/features/trial-session/comps/pla/session-status/session-status-constants.js.map +0 -1
  201. package/dist/features/trial-session/comps/pla/session-status/session-status-helpers.js +0 -19
  202. package/dist/features/trial-session/comps/pla/session-status/session-status-helpers.js.map +0 -1
  203. package/dist/features/trial-session/comps/pla/session-status/session-status-styled.js.map +0 -1
  204. package/dist/features/trial-session/comps/pla/session-status/session-status.js +0 -127
  205. package/dist/features/trial-session/comps/pla/session-status/session-status.js.map +0 -1
  206. package/dist/features/trial-session/comps/pla/session-summary/session-summary-constants.js.map +0 -1
  207. package/dist/features/trial-session/comps/pla/session-summary/session-summary.js +0 -53
  208. package/dist/features/trial-session/comps/pla/session-summary/session-summary.js.map +0 -1
  209. package/dist/features/trial-session/comps/pla/session-summary/summary-card/summary-card-styled.js.map +0 -1
  210. package/dist/features/trial-session/comps/pla/session-summary/summary-card/summary-card.js +0 -56
  211. package/dist/features/trial-session/comps/pla/session-summary/summary-card/summary-card.js.map +0 -1
  212. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions-constants.js.map +0 -1
  213. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions-styled.js.map +0 -1
  214. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions-types.js.map +0 -1
  215. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions.js.map +0 -1
  216. package/dist/node_modules/date-fns/_lib/getRoundingMethod.js +0 -10
  217. package/dist/node_modules/date-fns/_lib/getRoundingMethod.js.map +0 -1
  218. package/dist/node_modules/date-fns/differenceInMilliseconds.js +0 -9
  219. package/dist/node_modules/date-fns/differenceInMilliseconds.js.map +0 -1
  220. package/dist/node_modules/date-fns/differenceInSeconds.js +0 -11
  221. package/dist/node_modules/date-fns/differenceInSeconds.js.map +0 -1
  222. package/dist/static/trophy.a8ea85ef.json +0 -6813
  223. /package/dist/features/{trial-session/comps/pla → parent-dashboard/comps}/upcoming-sessions/upcoming-sessions-constants.js +0 -0
  224. /package/dist/features/{trial-session/comps/pla → parent-dashboard/comps}/upcoming-sessions/upcoming-sessions-types.js +0 -0
@@ -1,44 +1,57 @@
1
- const S = 31536e3, T = 31536e6, _ = 480, E = {
1
+ const S = 31536e3, T = 31536e6, A = 480, E = {
2
2
  SAT_DEMO: "SAT-DEMO",
3
3
  SAT_MATH: "SAT-MATH",
4
4
  SAT_ENGLISH: "SAT-ENGLISH",
5
5
  SAT_TESTS: "SAT-TESTS"
6
- }, o = {
6
+ }, _ = {
7
7
  MATH: "MATH",
8
8
  CODING: "CODING",
9
9
  SCIENCE: "SCIENCE",
10
10
  ELA: "ELA",
11
11
  ELP: "ELP",
12
12
  ...E
13
- }, A = {
13
+ }, I = {
14
+ ONLINE: "ONLINE",
15
+ PLUS: "PLUS",
16
+ REGULAR: "REGULAR",
17
+ HYBRID: "HYBRID",
18
+ HYBRID_PLUS: "HYBRID_PLUS",
19
+ ARMY: "ARMY",
20
+ CLASS_K5: "CLASS_K5",
21
+ OLYMPIAD: "OLYMPIAD",
22
+ HIGH: "HIGH",
23
+ GROUP_CLASS: "GROUP_CLASS",
24
+ CUECENTER: "CUECENTER"
25
+ }, O = {
14
26
  SCHOOL_SUCCESS: "SCHOOL_SUCCESS",
15
27
  TEST_PREP: "TEST_PREP",
16
28
  ENRICHMENT: "ENRICHMENT"
17
- }, e = {
29
+ }, o = {
18
30
  LEVEL: "Level",
19
31
  FOCUS: "Focus",
20
32
  BEHAVIOR: "Behaviors",
21
33
  OBJECTIVES: "Objectives",
22
34
  POSITION: "Position",
23
35
  COURSE: "Course"
24
- }, O = {
36
+ }, N = {
25
37
  "no-test": "School Success goals",
26
38
  "non-standardized": "Test Prep goals",
27
39
  standardized: "Enrichment goals"
28
- }, s = {
40
+ }, C = {
29
41
  CHAPTER_EXIT_WARNING: "Going back will clear your currently selected chapters. Do you wish to proceed?",
30
42
  GOAL_CHANGE_WARNING: "Choosing a different goal will clear your currently selected chapters. Do you wish to proceed?"
31
- }, N = 60, I = 88;
43
+ }, R = 60, L = 88;
32
44
  export {
33
- o as COURSE_STREAMS,
34
- A as GOAL_CATEGORY,
35
- I as GOAL_FOOTER_HEIGHT,
36
- N as GOAL_HEADER_HEIGHT,
37
- _ as MILESTONE_WIDGET_MIN_HEIGHT,
45
+ _ as COURSE_STREAMS,
46
+ I as ENROLLMENT_TYPES,
47
+ O as GOAL_CATEGORY,
48
+ L as GOAL_FOOTER_HEIGHT,
49
+ R as GOAL_HEADER_HEIGHT,
50
+ A as MILESTONE_WIDGET_MIN_HEIGHT,
38
51
  T as ONE_YEAR_TIMESTAMP_IN_MILLISECONDS,
39
52
  S as ONE_YEAR_TIMESTAMP_IN_SECONDS,
40
- e as PREFERENCE_CATEGORY,
41
- O as TEST_TYPE_TO_TEST_NAME,
42
- s as WARNING_MESSAGES
53
+ o as PREFERENCE_CATEGORY,
54
+ N as TEST_TYPE_TO_TEST_NAME,
55
+ C as WARNING_MESSAGES
43
56
  };
44
57
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../src/features/milestone/constants.ts"],"sourcesContent":["const ONE_YEAR_TIMESTAMP_IN_SECONDS = 365 * 24 * 60 * 60;\nconst ONE_YEAR_TIMESTAMP_IN_MILLISECONDS = ONE_YEAR_TIMESTAMP_IN_SECONDS * 1000;\n\nconst MILESTONE_WIDGET_MIN_HEIGHT = 480;\n\nconst SAT_COURSES = {\n SAT_DEMO: 'SAT-DEMO',\n SAT_MATH: 'SAT-MATH',\n SAT_ENGLISH: 'SAT-ENGLISH',\n SAT_TESTS: 'SAT-TESTS',\n} as const;\n\nconst COURSE_STREAMS = {\n MATH: 'MATH',\n CODING: 'CODING',\n SCIENCE: 'SCIENCE',\n ELA: 'ELA',\n ELP: 'ELP',\n ...SAT_COURSES,\n} as const;\n\nconst ENROLLMENT_TYPES = {\n ONLINE: 'ONLINE',\n PLUS: 'PLUS',\n REGULAR: 'REGULAR',\n HYBRID: 'HYBRID',\n HYBRID_PLUS: 'HYBRID_PLUS',\n ARMY: 'ARMY',\n CLASS_K5: 'CLASS_K5',\n OLYMPIAD: 'OLYMPIAD',\n HIGH: 'HIGH',\n GROUP_CLASS: 'GROUP_CLASS',\n CUECENTER: 'CUECENTER',\n} as const;\n\nconst GOAL_CATEGORY = {\n SCHOOL_SUCCESS: 'SCHOOL_SUCCESS',\n TEST_PREP: 'TEST_PREP',\n ENRICHMENT: 'ENRICHMENT',\n} as const;\n\nconst PREFERENCE_CATEGORY = {\n LEVEL: 'Level',\n FOCUS: 'Focus',\n BEHAVIOR: 'Behaviors',\n OBJECTIVES: 'Objectives',\n POSITION: 'Position',\n COURSE: 'Course',\n} as const;\n\nconst TEST_TYPE_TO_TEST_NAME = {\n 'no-test': 'School Success goals',\n 'non-standardized': 'Test Prep goals',\n 'standardized': 'Enrichment goals',\n};\n\nconst WARNING_MESSAGES = {\n CHAPTER_EXIT_WARNING:\n 'Going back will clear your currently selected chapters. Do you wish to proceed?',\n GOAL_CHANGE_WARNING:\n 'Choosing a different goal will clear your currently selected chapters. Do you wish to proceed?',\n};\n\nconst GOAL_HEADER_HEIGHT = 60;\nconst GOAL_FOOTER_HEIGHT = 88;\n\nexport {\n ONE_YEAR_TIMESTAMP_IN_SECONDS,\n ONE_YEAR_TIMESTAMP_IN_MILLISECONDS,\n MILESTONE_WIDGET_MIN_HEIGHT,\n COURSE_STREAMS,\n GOAL_CATEGORY,\n GOAL_HEADER_HEIGHT,\n GOAL_FOOTER_HEIGHT,\n WARNING_MESSAGES,\n TEST_TYPE_TO_TEST_NAME,\n PREFERENCE_CATEGORY,\n ENROLLMENT_TYPES,\n};\n"],"names":["ONE_YEAR_TIMESTAMP_IN_SECONDS","ONE_YEAR_TIMESTAMP_IN_MILLISECONDS","MILESTONE_WIDGET_MIN_HEIGHT","SAT_COURSES","COURSE_STREAMS","GOAL_CATEGORY","PREFERENCE_CATEGORY","TEST_TYPE_TO_TEST_NAME","WARNING_MESSAGES","GOAL_HEADER_HEIGHT","GOAL_FOOTER_HEIGHT"],"mappings":"AAAM,MAAAA,IAAgC,SAChCC,IAAqC,SAErCC,IAA8B,KAE9BC,IAAc;AAAA,EAClB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,aAAa;AAAA,EACb,WAAW;AACb,GAEMC,IAAiB;AAAA,EACrB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,KAAK;AAAA,EACL,KAAK;AAAA,EACL,GAAGD;AACL,GAgBME,IAAgB;AAAA,EACpB,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,YAAY;AACd,GAEMC,IAAsB;AAAA,EAC1B,OAAO;AAAA,EACP,OAAO;AAAA,EACP,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,QAAQ;AACV,GAEMC,IAAyB;AAAA,EAC7B,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,cAAgB;AAClB,GAEMC,IAAmB;AAAA,EACvB,sBACE;AAAA,EACF,qBACE;AACJ,GAEMC,IAAqB,IACrBC,IAAqB;"}
1
+ {"version":3,"file":"constants.js","sources":["../../../src/features/milestone/constants.ts"],"sourcesContent":["const ONE_YEAR_TIMESTAMP_IN_SECONDS = 365 * 24 * 60 * 60;\nconst ONE_YEAR_TIMESTAMP_IN_MILLISECONDS = ONE_YEAR_TIMESTAMP_IN_SECONDS * 1000;\n\nconst MILESTONE_WIDGET_MIN_HEIGHT = 480;\n\nconst SAT_COURSES = {\n SAT_DEMO: 'SAT-DEMO',\n SAT_MATH: 'SAT-MATH',\n SAT_ENGLISH: 'SAT-ENGLISH',\n SAT_TESTS: 'SAT-TESTS',\n} as const;\n\nconst COURSE_STREAMS = {\n MATH: 'MATH',\n CODING: 'CODING',\n SCIENCE: 'SCIENCE',\n ELA: 'ELA',\n ELP: 'ELP',\n ...SAT_COURSES,\n} as const;\n\nconst ENROLLMENT_TYPES = {\n ONLINE: 'ONLINE',\n PLUS: 'PLUS',\n REGULAR: 'REGULAR',\n HYBRID: 'HYBRID',\n HYBRID_PLUS: 'HYBRID_PLUS',\n ARMY: 'ARMY',\n CLASS_K5: 'CLASS_K5',\n OLYMPIAD: 'OLYMPIAD',\n HIGH: 'HIGH',\n GROUP_CLASS: 'GROUP_CLASS',\n CUECENTER: 'CUECENTER',\n} as const;\n\nconst GOAL_CATEGORY = {\n SCHOOL_SUCCESS: 'SCHOOL_SUCCESS',\n TEST_PREP: 'TEST_PREP',\n ENRICHMENT: 'ENRICHMENT',\n} as const;\n\nconst PREFERENCE_CATEGORY = {\n LEVEL: 'Level',\n FOCUS: 'Focus',\n BEHAVIOR: 'Behaviors',\n OBJECTIVES: 'Objectives',\n POSITION: 'Position',\n COURSE: 'Course',\n} as const;\n\nconst TEST_TYPE_TO_TEST_NAME = {\n 'no-test': 'School Success goals',\n 'non-standardized': 'Test Prep goals',\n 'standardized': 'Enrichment goals',\n};\n\nconst WARNING_MESSAGES = {\n CHAPTER_EXIT_WARNING:\n 'Going back will clear your currently selected chapters. Do you wish to proceed?',\n GOAL_CHANGE_WARNING:\n 'Choosing a different goal will clear your currently selected chapters. Do you wish to proceed?',\n};\n\nconst GOAL_HEADER_HEIGHT = 60;\nconst GOAL_FOOTER_HEIGHT = 88;\n\nexport {\n ONE_YEAR_TIMESTAMP_IN_SECONDS,\n ONE_YEAR_TIMESTAMP_IN_MILLISECONDS,\n MILESTONE_WIDGET_MIN_HEIGHT,\n COURSE_STREAMS,\n GOAL_CATEGORY,\n GOAL_HEADER_HEIGHT,\n GOAL_FOOTER_HEIGHT,\n WARNING_MESSAGES,\n TEST_TYPE_TO_TEST_NAME,\n PREFERENCE_CATEGORY,\n ENROLLMENT_TYPES,\n};\n"],"names":["ONE_YEAR_TIMESTAMP_IN_SECONDS","ONE_YEAR_TIMESTAMP_IN_MILLISECONDS","MILESTONE_WIDGET_MIN_HEIGHT","SAT_COURSES","COURSE_STREAMS","ENROLLMENT_TYPES","GOAL_CATEGORY","PREFERENCE_CATEGORY","TEST_TYPE_TO_TEST_NAME","WARNING_MESSAGES","GOAL_HEADER_HEIGHT","GOAL_FOOTER_HEIGHT"],"mappings":"AAAM,MAAAA,IAAgC,SAChCC,IAAqC,SAErCC,IAA8B,KAE9BC,IAAc;AAAA,EAClB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,aAAa;AAAA,EACb,WAAW;AACb,GAEMC,IAAiB;AAAA,EACrB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,KAAK;AAAA,EACL,KAAK;AAAA,EACL,GAAGD;AACL,GAEME,IAAmB;AAAA,EACvB,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AAAA,EACN,UAAU;AAAA,EACV,UAAU;AAAA,EACV,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AACb,GAEMC,IAAgB;AAAA,EACpB,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,YAAY;AACd,GAEMC,IAAsB;AAAA,EAC1B,OAAO;AAAA,EACP,OAAO;AAAA,EACP,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,QAAQ;AACV,GAEMC,IAAyB;AAAA,EAC7B,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,cAAgB;AAClB,GAEMC,IAAmB;AAAA,EACvB,sBACE;AAAA,EACF,qBACE;AACJ,GAEMC,IAAqB,IACrBC,IAAqB;"}
@@ -12,10 +12,10 @@ import ee from "../body-layout/body-layout.js";
12
12
  import { ButtonWrapper as C } from "./goal-completion-date-selector-styled.js";
13
13
  import te from "./goal-completion-date-selector-view.js";
14
14
  import { lastDayOfMonth as v } from "../../../../../node_modules/date-fns/lastDayOfMonth.js";
15
- import { eachMonthOfInterval as oe } from "../../../../../node_modules/date-fns/eachMonthOfInterval.js";
16
- import { addMonths as se } from "../../../../../node_modules/date-fns/addMonths.js";
15
+ import { addDays as oe } from "../../../../../node_modules/date-fns/addDays.js";
16
+ import { eachMonthOfInterval as se } from "../../../../../node_modules/date-fns/eachMonthOfInterval.js";
17
+ import { addMonths as re } from "../../../../../node_modules/date-fns/addMonths.js";
17
18
  import { formatDate as c } from "../../../../../node_modules/date-fns/format.js";
18
- import { addDays as re } from "../../../../../node_modules/date-fns/addDays.js";
19
19
  const be = q(
20
20
  ({
21
21
  formData: D,
@@ -55,10 +55,10 @@ const be = q(
55
55
  flow: r ?? "CREATE",
56
56
  courseStream: O
57
57
  }), { testType: L, milestoneEndDate: t, committed: N } = D, { milestoneEndDate: w } = N, { title: j } = G, k = r === "EDIT" ? "Update goal" : "Create goal", T = /* @__PURE__ */ new Date(), n = c(T.setDate(T.getDate() + 1), "yyyy-MM-dd"), i = c(Date.now() + Q, "yyyy-MM-dd"), R = z(() => {
58
- const e = /* @__PURE__ */ new Date(), o = v(e) ? re(e, 1) : e;
59
- return oe({
58
+ const e = /* @__PURE__ */ new Date(), o = v(e) ? oe(e, 1) : e;
59
+ return se({
60
60
  start: o,
61
- end: se(o, 11)
61
+ end: re(o, 11)
62
62
  }).map((b) => {
63
63
  const x = v(b);
64
64
  return {
@@ -2,7 +2,7 @@ import t from "styled-components";
2
2
  import p from "../../../../../assets/line-icons/icons/chevron-right.js";
3
3
  import l from "../../../../ui/layout/flex-view.js";
4
4
  import x from "../../../../ui/text/text.js";
5
- const c = t(l)(({ theme: o }) => {
5
+ const a = t(l)(({ theme: o }) => {
6
6
  const { layout: r, colors: e } = o, { BLACK_T_38: i } = e;
7
7
  return `
8
8
  max-height: ${r.gutter * 15.75}px;
@@ -26,6 +26,6 @@ const w = t(x)(() => `
26
26
  `);
27
27
  export {
28
28
  w as StyledText,
29
- c as Wrapper
29
+ a as Wrapper
30
30
  };
31
31
  //# sourceMappingURL=sheets-list-styled.js.map
@@ -1,20 +1,27 @@
1
- import { jsx as n } from "react/jsx-runtime";
1
+ import { jsx as o } from "react/jsx-runtime";
2
2
  import { ILLUSTRATIONS as i } from "../../../../../assets/illustrations/illustrations.js";
3
- import { GOAL_CATEGORY as m } from "../../../constants.js";
3
+ import { ENROLLMENT_TYPES as E, GOAL_CATEGORY as m } from "../../../constants.js";
4
4
  import s from "./category-component.js";
5
- const { SCHOOL_SUCCESS: E, TEST_PREP: C, ENRICHMENT: g } = m, p = (e, t) => !(e.available_enrollment_types.length > 0 && t && !e.available_enrollment_types.includes(t) || e.available_enrollment_types.length === 0 && t && e.blocked_enrollment_types.includes(t)), R = (e, t, c, a) => {
6
- const { goal_curriculum_map: l } = t, o = l.filter((r) => r.course_stream !== c ? !1 : p(r, a)), d = o.some(
7
- (r) => r.goal_category === "SCHOOL_SUCCESS"
8
- ), u = o.some(
9
- (r) => r.goal_category === "TEST_PREP"
10
- ), _ = o.some(
11
- (r) => r.goal_category === "ENRICHMENT"
5
+ const { SCHOOL_SUCCESS: C, TEST_PREP: f, ENRICHMENT: g } = m, { ONLINE: p, CUECENTER: L } = E, S = (e, r) => {
6
+ if (r === p) {
7
+ if (e.available_enrollment_types.length > 0 && r && e.available_enrollment_types.includes(L))
8
+ return !1;
9
+ } else if (e.available_enrollment_types.length > 0 && r && !e.available_enrollment_types.includes(r))
10
+ return !1;
11
+ return !(e.available_enrollment_types.length === 0 && r && e.blocked_enrollment_types.includes(r));
12
+ }, P = (e, r, l, c) => {
13
+ const { goal_curriculum_map: a } = r, n = a.filter((t) => t.course_stream !== l ? !1 : S(t, c)), d = n.some(
14
+ (t) => t.goal_category === "SCHOOL_SUCCESS"
15
+ ), u = n.some(
16
+ (t) => t.goal_category === "TEST_PREP"
17
+ ), _ = n.some(
18
+ (t) => t.goal_category === "ENRICHMENT"
12
19
  );
13
20
  return [
14
21
  {
15
22
  id: "no-test",
16
23
  visible: d,
17
- children: /* @__PURE__ */ n(
24
+ children: /* @__PURE__ */ o(
18
25
  s,
19
26
  {
20
27
  title: "school success",
@@ -28,7 +35,7 @@ const { SCHOOL_SUCCESS: E, TEST_PREP: C, ENRICHMENT: g } = m, p = (e, t) => !(e.
28
35
  {
29
36
  id: "non-standardized",
30
37
  visible: u,
31
- children: /* @__PURE__ */ n(
38
+ children: /* @__PURE__ */ o(
32
39
  s,
33
40
  {
34
41
  title: "test prep",
@@ -42,7 +49,7 @@ const { SCHOOL_SUCCESS: E, TEST_PREP: C, ENRICHMENT: g } = m, p = (e, t) => !(e.
42
49
  {
43
50
  id: "standardized",
44
51
  visible: _,
45
- children: /* @__PURE__ */ n(
52
+ children: /* @__PURE__ */ o(
46
53
  s,
47
54
  {
48
55
  title: "enrichment",
@@ -54,10 +61,10 @@ const { SCHOOL_SUCCESS: E, TEST_PREP: C, ENRICHMENT: g } = m, p = (e, t) => !(e.
54
61
  )
55
62
  }
56
63
  ];
57
- }, O = (e) => e === "no-test" ? E : e === "non-standardized" ? C : g;
64
+ }, U = (e) => e === "no-test" ? C : e === "non-standardized" ? f : g;
58
65
  export {
59
- p as checkEnrollmentAvailable,
60
- R as getGoalCategories,
61
- O as getTestTypeBasedCategory
66
+ S as checkEnrollmentAvailable,
67
+ P as getGoalCategories,
68
+ U as getTestTypeBasedCategory
62
69
  };
63
70
  //# sourceMappingURL=test-type-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-type-utils.js","sources":["../../../../../../src/features/milestone/create/comps/test-type-step/test-type-utils.tsx"],"sourcesContent":["import type { ISelectionCardOption } from '../../../../ui/selection-cards/selection-cards-types';\nimport type { TTestType } from '../../../types';\nimport type {\n IGoalCurriculumMap,\n IMileStoneFormFields,\n IMilestoneConfig,\n TCourseStream,\n TEnrollmentTypes,\n TGoalCategory,\n} from '../../milestone-create-types';\n\nimport { ILLUSTRATIONS } from '../../../../../assets/illustrations/illustrations';\nimport { GOAL_CATEGORY } from '../../../constants';\nimport CategoryComponent from './category-component';\n\nconst { SCHOOL_SUCCESS, TEST_PREP, ENRICHMENT } = GOAL_CATEGORY;\n\nconst checkEnrollmentAvailable = (\n goalData: IGoalCurriculumMap,\n enrollmentType?: TEnrollmentTypes,\n): boolean => {\n if (\n goalData.available_enrollment_types.length > 0 &&\n enrollmentType &&\n !goalData.available_enrollment_types.includes(enrollmentType)\n )\n return false;\n\n if (\n goalData.available_enrollment_types.length === 0 &&\n enrollmentType &&\n goalData.blocked_enrollment_types.includes(enrollmentType)\n )\n return false;\n\n return true;\n};\n\ninterface IGetGoalCategories {\n (\n selectedType: TTestType,\n config: IMilestoneConfig,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n ): ISelectionCardOption<NonNullable<TTestType>>[];\n}\n\nconst getGoalCategories: IGetGoalCategories = (\n selectedType,\n milestoneConfig,\n courseStream,\n enrollmentType,\n) => {\n const { goal_curriculum_map: goalCurriculumMap } = milestoneConfig;\n const filteredGoalCurriculumMap = goalCurriculumMap.filter(item => {\n if (item.course_stream !== courseStream) return false;\n\n return checkEnrollmentAvailable(item, enrollmentType);\n });\n const canCreateSchoolSuccess = filteredGoalCurriculumMap.some(\n goal => goal.goal_category === 'SCHOOL_SUCCESS',\n );\n const canCreateTestPrep = filteredGoalCurriculumMap.some(\n goal => goal.goal_category === 'TEST_PREP',\n );\n const canCreateEnrichment = filteredGoalCurriculumMap.some(\n goal => goal.goal_category === 'ENRICHMENT',\n );\n\n const categories: ISelectionCardOption<NonNullable<TTestType>>[] = [\n {\n id: 'no-test',\n visible: canCreateSchoolSuccess,\n children: (\n <CategoryComponent\n title=\"school success\"\n description=\"Build academic foundations and excel in school studies\"\n iconUrl={ILLUSTRATIONS.GRADUATE_PINK_FILLED_BG}\n backgroundColor=\"PURPLE_1\"\n selected={selectedType === 'no-test'}\n />\n ),\n },\n {\n id: 'non-standardized',\n visible: canCreateTestPrep,\n children: (\n <CategoryComponent\n title=\"test prep\"\n description=\"Prepare for standardized tests and competitive exams\"\n iconUrl={ILLUSTRATIONS.TROPHY_BLUE_FILLED}\n backgroundColor=\"BLUE_1\"\n selected={selectedType === 'non-standardized'}\n />\n ),\n },\n {\n id: 'standardized',\n visible: canCreateEnrichment,\n children: (\n <CategoryComponent\n title=\"enrichment\"\n description=\"Expand learning beyond the regular school curriculum\"\n iconUrl={ILLUSTRATIONS.STAR_ORANGE_FILLED}\n backgroundColor=\"ORANGE_1\"\n selected={selectedType === 'standardized'}\n />\n ),\n },\n ];\n\n return categories;\n};\n\ninterface IGetTestTypeBasedCategory {\n (testType: IMileStoneFormFields['testType']): TGoalCategory;\n}\n\nconst getTestTypeBasedCategory: IGetTestTypeBasedCategory = testType => {\n if (testType === 'no-test') return SCHOOL_SUCCESS;\n\n if (testType === 'non-standardized') return TEST_PREP;\n\n return ENRICHMENT;\n};\n\nexport { checkEnrollmentAvailable, getGoalCategories, getTestTypeBasedCategory };\n"],"names":["SCHOOL_SUCCESS","TEST_PREP","ENRICHMENT","GOAL_CATEGORY","checkEnrollmentAvailable","goalData","enrollmentType","getGoalCategories","selectedType","milestoneConfig","courseStream","goalCurriculumMap","filteredGoalCurriculumMap","item","canCreateSchoolSuccess","goal","canCreateTestPrep","canCreateEnrichment","jsx","CategoryComponent","ILLUSTRATIONS","getTestTypeBasedCategory","testType"],"mappings":";;;;AAeA,MAAM,EAAE,gBAAAA,GAAgB,WAAAC,GAAW,YAAAC,EAAA,IAAeC,GAE5CC,IAA2B,CAC/BC,GACAC,MAGE,EAAAD,EAAS,2BAA2B,SAAS,KAC7CC,KACA,CAACD,EAAS,2BAA2B,SAASC,CAAc,KAK5DD,EAAS,2BAA2B,WAAW,KAC/CC,KACAD,EAAS,yBAAyB,SAASC,CAAc,IAgBvDC,IAAwC,CAC5CC,GACAC,GACAC,GACAJ,MACG;AACG,QAAA,EAAE,qBAAqBK,EAAsB,IAAAF,GAC7CG,IAA4BD,EAAkB,OAAO,CAAQE,MAC7DA,EAAK,kBAAkBH,IAAqB,KAEzCN,EAAyBS,GAAMP,CAAc,CACrD,GACKQ,IAAyBF,EAA0B;AAAA,IACvD,CAAAG,MAAQA,EAAK,kBAAkB;AAAA,EAAA,GAE3BC,IAAoBJ,EAA0B;AAAA,IAClD,CAAAG,MAAQA,EAAK,kBAAkB;AAAA,EAAA,GAE3BE,IAAsBL,EAA0B;AAAA,IACpD,CAAAG,MAAQA,EAAK,kBAAkB;AAAA,EAAA;AA6C1B,SA1C4D;AAAA,IACjE;AAAA,MACE,IAAI;AAAA,MACJ,SAASD;AAAA,MACT,UACE,gBAAAI;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,aAAY;AAAA,UACZ,SAASC,EAAc;AAAA,UACvB,iBAAgB;AAAA,UAChB,UAAUZ,MAAiB;AAAA,QAAA;AAAA,MAC7B;AAAA,IAEJ;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,SAASQ;AAAA,MACT,UACE,gBAAAE;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,aAAY;AAAA,UACZ,SAASC,EAAc;AAAA,UACvB,iBAAgB;AAAA,UAChB,UAAUZ,MAAiB;AAAA,QAAA;AAAA,MAC7B;AAAA,IAEJ;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,SAASS;AAAA,MACT,UACE,gBAAAC;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,aAAY;AAAA,UACZ,SAASC,EAAc;AAAA,UACvB,iBAAgB;AAAA,UAChB,UAAUZ,MAAiB;AAAA,QAAA;AAAA,MAC7B;AAAA,IAEJ;AAAA,EAAA;AAIJ,GAMMa,IAAsD,CAAYC,MAClEA,MAAa,YAAkBtB,IAE/BsB,MAAa,qBAA2BrB,IAErCC;"}
1
+ {"version":3,"file":"test-type-utils.js","sources":["../../../../../../src/features/milestone/create/comps/test-type-step/test-type-utils.tsx"],"sourcesContent":["import type { ISelectionCardOption } from '../../../../ui/selection-cards/selection-cards-types';\nimport type { TTestType } from '../../../types';\nimport type {\n IGoalCurriculumMap,\n IMileStoneFormFields,\n IMilestoneConfig,\n TCourseStream,\n TEnrollmentTypes,\n TGoalCategory,\n} from '../../milestone-create-types';\n\nimport { ILLUSTRATIONS } from '../../../../../assets/illustrations/illustrations';\nimport { ENROLLMENT_TYPES, GOAL_CATEGORY } from '../../../constants';\nimport CategoryComponent from './category-component';\n\nconst { SCHOOL_SUCCESS, TEST_PREP, ENRICHMENT } = GOAL_CATEGORY;\nconst { ONLINE, CUECENTER } = ENROLLMENT_TYPES;\n\nconst checkEnrollmentAvailable = (\n goalData: IGoalCurriculumMap,\n enrollmentType?: TEnrollmentTypes,\n): boolean => {\n if (enrollmentType === ONLINE) {\n if (\n goalData.available_enrollment_types.length > 0 &&\n enrollmentType &&\n goalData.available_enrollment_types.includes(CUECENTER)\n )\n return false;\n } else if (\n goalData.available_enrollment_types.length > 0 &&\n enrollmentType &&\n !goalData.available_enrollment_types.includes(enrollmentType)\n )\n return false;\n\n if (\n goalData.available_enrollment_types.length === 0 &&\n enrollmentType &&\n goalData.blocked_enrollment_types.includes(enrollmentType)\n )\n return false;\n\n return true;\n};\n\ninterface IGetGoalCategories {\n (\n selectedType: TTestType,\n config: IMilestoneConfig,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n ): ISelectionCardOption<NonNullable<TTestType>>[];\n}\n\nconst getGoalCategories: IGetGoalCategories = (\n selectedType,\n milestoneConfig,\n courseStream,\n enrollmentType,\n) => {\n const { goal_curriculum_map: goalCurriculumMap } = milestoneConfig;\n const filteredGoalCurriculumMap = goalCurriculumMap.filter(item => {\n if (item.course_stream !== courseStream) return false;\n\n return checkEnrollmentAvailable(item, enrollmentType);\n });\n const canCreateSchoolSuccess = filteredGoalCurriculumMap.some(\n goal => goal.goal_category === 'SCHOOL_SUCCESS',\n );\n const canCreateTestPrep = filteredGoalCurriculumMap.some(\n goal => goal.goal_category === 'TEST_PREP',\n );\n const canCreateEnrichment = filteredGoalCurriculumMap.some(\n goal => goal.goal_category === 'ENRICHMENT',\n );\n\n const categories: ISelectionCardOption<NonNullable<TTestType>>[] = [\n {\n id: 'no-test',\n visible: canCreateSchoolSuccess,\n children: (\n <CategoryComponent\n title=\"school success\"\n description=\"Build academic foundations and excel in school studies\"\n iconUrl={ILLUSTRATIONS.GRADUATE_PINK_FILLED_BG}\n backgroundColor=\"PURPLE_1\"\n selected={selectedType === 'no-test'}\n />\n ),\n },\n {\n id: 'non-standardized',\n visible: canCreateTestPrep,\n children: (\n <CategoryComponent\n title=\"test prep\"\n description=\"Prepare for standardized tests and competitive exams\"\n iconUrl={ILLUSTRATIONS.TROPHY_BLUE_FILLED}\n backgroundColor=\"BLUE_1\"\n selected={selectedType === 'non-standardized'}\n />\n ),\n },\n {\n id: 'standardized',\n visible: canCreateEnrichment,\n children: (\n <CategoryComponent\n title=\"enrichment\"\n description=\"Expand learning beyond the regular school curriculum\"\n iconUrl={ILLUSTRATIONS.STAR_ORANGE_FILLED}\n backgroundColor=\"ORANGE_1\"\n selected={selectedType === 'standardized'}\n />\n ),\n },\n ];\n\n return categories;\n};\n\ninterface IGetTestTypeBasedCategory {\n (testType: IMileStoneFormFields['testType']): TGoalCategory;\n}\n\nconst getTestTypeBasedCategory: IGetTestTypeBasedCategory = testType => {\n if (testType === 'no-test') return SCHOOL_SUCCESS;\n\n if (testType === 'non-standardized') return TEST_PREP;\n\n return ENRICHMENT;\n};\n\nexport { checkEnrollmentAvailable, getGoalCategories, getTestTypeBasedCategory };\n"],"names":["SCHOOL_SUCCESS","TEST_PREP","ENRICHMENT","GOAL_CATEGORY","ONLINE","CUECENTER","ENROLLMENT_TYPES","checkEnrollmentAvailable","goalData","enrollmentType","getGoalCategories","selectedType","milestoneConfig","courseStream","goalCurriculumMap","filteredGoalCurriculumMap","item","canCreateSchoolSuccess","goal","canCreateTestPrep","canCreateEnrichment","jsx","CategoryComponent","ILLUSTRATIONS","getTestTypeBasedCategory","testType"],"mappings":";;;;AAeA,MAAM,EAAE,gBAAAA,GAAgB,WAAAC,GAAW,YAAAC,EAAA,IAAeC,GAC5C,EAAE,QAAAC,GAAQ,WAAAC,EAAc,IAAAC,GAExBC,IAA2B,CAC/BC,GACAC,MACY;AACZ,MAAIA,MAAmBL;AAEnB,QAAAI,EAAS,2BAA2B,SAAS,KAC7CC,KACAD,EAAS,2BAA2B,SAASH,CAAS;AAE/C,aAAA;AAAA,aAETG,EAAS,2BAA2B,SAAS,KAC7CC,KACA,CAACD,EAAS,2BAA2B,SAASC,CAAc;AAErD,WAAA;AAGP,SAAA,EAAAD,EAAS,2BAA2B,WAAW,KAC/CC,KACAD,EAAS,yBAAyB,SAASC,CAAc;AAK7D,GAWMC,IAAwC,CAC5CC,GACAC,GACAC,GACAJ,MACG;AACG,QAAA,EAAE,qBAAqBK,EAAsB,IAAAF,GAC7CG,IAA4BD,EAAkB,OAAO,CAAQE,MAC7DA,EAAK,kBAAkBH,IAAqB,KAEzCN,EAAyBS,GAAMP,CAAc,CACrD,GACKQ,IAAyBF,EAA0B;AAAA,IACvD,CAAAG,MAAQA,EAAK,kBAAkB;AAAA,EAAA,GAE3BC,IAAoBJ,EAA0B;AAAA,IAClD,CAAAG,MAAQA,EAAK,kBAAkB;AAAA,EAAA,GAE3BE,IAAsBL,EAA0B;AAAA,IACpD,CAAAG,MAAQA,EAAK,kBAAkB;AAAA,EAAA;AA6C1B,SA1C4D;AAAA,IACjE;AAAA,MACE,IAAI;AAAA,MACJ,SAASD;AAAA,MACT,UACE,gBAAAI;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,aAAY;AAAA,UACZ,SAASC,EAAc;AAAA,UACvB,iBAAgB;AAAA,UAChB,UAAUZ,MAAiB;AAAA,QAAA;AAAA,MAC7B;AAAA,IAEJ;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,SAASQ;AAAA,MACT,UACE,gBAAAE;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,aAAY;AAAA,UACZ,SAASC,EAAc;AAAA,UACvB,iBAAgB;AAAA,UAChB,UAAUZ,MAAiB;AAAA,QAAA;AAAA,MAC7B;AAAA,IAEJ;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,SAASS;AAAA,MACT,UACE,gBAAAC;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,aAAY;AAAA,UACZ,SAASC,EAAc;AAAA,UACvB,iBAAgB;AAAA,UAChB,UAAUZ,MAAiB;AAAA,QAAA;AAAA,MAC7B;AAAA,IAEJ;AAAA,EAAA;AAIJ,GAMMa,IAAsD,CAAYC,MAClEA,MAAa,YAAkBzB,IAE/ByB,MAAa,qBAA2BxB,IAErCC;"}
@@ -64,7 +64,7 @@ const F = (t, r) => {
64
64
  id: l,
65
65
  label: n
66
66
  }), r;
67
- }, []), O = (t) => {
67
+ }, []), k = (t) => {
68
68
  const {
69
69
  currentGoalData: r,
70
70
  enrollmentType: e,
@@ -120,7 +120,7 @@ const F = (t, r) => {
120
120
  id: a,
121
121
  label: _
122
122
  })).sort((a, _) => a.label.toUpperCase() > _.label.toUpperCase() ? 1 : -1);
123
- }, k = (t) => t.grades.reduce((r, e) => (e === "-1" || e === "0" ? r.push({
123
+ }, O = (t) => t.grades.reduce((r, e) => (e === "-1" || e === "0" ? r.push({
124
124
  id: e,
125
125
  label: e === "-1" ? "Pre-K" : "KG"
126
126
  }) : r.push({
@@ -132,14 +132,20 @@ const F = (t, r) => {
132
132
  return !(n.course_stream !== i || n.preference_category !== u || n.preference_grades.length > 0 && !n.preference_grades.includes(s) || !n.is_live);
133
133
  };
134
134
  return e == null ? void 0 : e.filter(l).map(
135
- ({ preference_code: n, preference_name: s, preference_description: i }) => ({
135
+ ({
136
+ preference_code: n,
137
+ preference_name: s,
138
+ preference_description: i,
139
+ lottie_key: u
140
+ }) => ({
136
141
  id: n,
137
142
  label: s,
138
- description: i
143
+ description: i,
144
+ lottie: u
139
145
  })
140
146
  );
141
147
  }, W = (t, r, e, l, n) => {
142
- const { goal_curriculum_map: s } = t, i = k(t), u = ({ id: c }) => s.filter((d) => d.course_stream === e && d.is_live).some((d) => {
148
+ const { goal_curriculum_map: s } = t, i = O(t), u = ({ id: c }) => s.filter((d) => d.course_stream === e && d.is_live).some((d) => {
143
149
  const {
144
150
  available_grades: m,
145
151
  goal_category: a,
@@ -212,7 +218,7 @@ const F = (t, r) => {
212
218
  }, Y = (t, r, e, l, n, s, i, u, c) => {
213
219
  const { goal_curriculum_map: d } = t, m = r === "no-test", a = A(r);
214
220
  return d.find((f) => {
215
- const o = O({
221
+ const o = k({
216
222
  currentGoalData: f,
217
223
  grade: e,
218
224
  currentCountryCode: i,
@@ -248,7 +254,7 @@ export {
248
254
  $ as getDefaultBoard,
249
255
  q as getGoalsFromConfig,
250
256
  W as getGradesBasedOnGoalAvailability,
251
- k as getGradesFromConfig,
257
+ O as getGradesFromConfig,
252
258
  j as getMajorsFromConfigBasedOnBoardAndGrade,
253
259
  M as getPreferencesFromConfig,
254
260
  I as getRegionCodeBasedOnCountryCode,
@@ -1 +1 @@
1
- {"version":3,"file":"milestone-create-helpers.js","sources":["../../../../src/features/milestone/create/milestone-create-helpers.ts"],"sourcesContent":["import type IStudentSchool from '../../../types/models/school';\nimport type { ISectionOption } from '../../ui/section-list/section-list-types';\nimport type { TTestType } from '../types';\nimport type {\n ICurriculumStandards,\n IFormStep,\n IGoalCurriculumMap,\n IMileStoneFormFields,\n IMilestoneConfig,\n IMilestoneFormData,\n IPreferencesCurriculumMap,\n TCourseStream,\n TCurriculumStandardOption,\n TEnrollmentTypes,\n TFormStepNames,\n TGoalCategory,\n TMilestoneFormFlow,\n TPreferenceCategory,\n} from './milestone-create-types';\n\nimport { COUNTRY_MAP } from '../../../constants/country';\nimport {\n getIfGoalCurriculumStandardIsAccessible,\n getStudentEnrollmentSupported,\n} from './comps/chapters-selection-step/utils';\nimport {\n checkEnrollmentAvailable,\n getTestTypeBasedCategory,\n} from './comps/test-type-step/test-type-utils';\nimport { GOAL_EDIT_FLOWS } from './milestone-create-constants';\n\ninterface IGetCurrenStep {\n (\n formStep: IFormStep,\n milestoneFormData: IMilestoneFormData,\n flow: TMilestoneFormFlow,\n ): IFormStep | undefined;\n}\n\ninterface IClearNextFields {\n (\n formStep: IFormStep,\n milestoneFormData: IMilestoneFormData,\n currentStepName: TFormStepNames | undefined,\n shouldStartClearing: boolean,\n fieldsToClear: (keyof IMileStoneFormFields)[],\n ): IMilestoneFormData | undefined;\n}\n\n/**\n * Impure method that Removes specified fields from an object.\n *\n * @param obj The object from which fields are to be removed.\n * @param fieldsList An array of field names to be removed.\n */\nconst clearFields = (obj: Record<string, unknown>, fieldsList: string[]) => {\n fieldsList.forEach(field => {\n obj[field] = undefined;\n });\n};\n\nconst clearNextFields: IClearNextFields = (\n formStep,\n milestoneFormData,\n currentStepName,\n startClearing,\n fieldsToClear = [],\n) => {\n const { isLeafNode, next, reset } = formStep;\n const updatedFormData = { ...milestoneFormData };\n\n if (isLeafNode) {\n clearFields(updatedFormData, [...reset, ...fieldsToClear]);\n\n return updatedFormData;\n }\n\n if (next) {\n let shouldStartClearing = startClearing;\n let nextStep: IFormStep | undefined;\n\n next.every(step => {\n let conditionFulfilled = false;\n\n if (step.when !== undefined) {\n conditionFulfilled = step.when.every(([field, value]) => updatedFormData[field] === value);\n } else conditionFulfilled = true;\n\n if (conditionFulfilled) {\n if (shouldStartClearing) {\n step?.reset?.forEach(field => {\n fieldsToClear.push(field);\n });\n } else if (currentStepName === step?.name) {\n shouldStartClearing = true;\n }\n\n nextStep = step;\n\n return false;\n }\n\n return true;\n });\n if (nextStep) {\n return clearNextFields(\n nextStep,\n updatedFormData,\n currentStepName,\n shouldStartClearing,\n fieldsToClear,\n );\n }\n }\n\n return undefined;\n};\n\nconst getCurrenStep: IGetCurrenStep = (formStep, milestoneFormData, flow) => {\n const { isLeafNode, required, next } = formStep;\n\n if (isLeafNode) {\n return formStep;\n }\n\n const requiredFieldsFilled = required.every(field => milestoneFormData[field] !== undefined);\n\n if (GOAL_EDIT_FLOWS.includes(flow)) {\n const requiredFieldsReviewed = required.every(\n field => milestoneFormData.reviewed[field] === true,\n );\n\n if (!requiredFieldsFilled || !requiredFieldsReviewed) {\n return {\n ...formStep,\n next: undefined,\n };\n }\n } else {\n const requiredFieldsCommitted = required.every(\n field => milestoneFormData.committed[field] === true,\n );\n\n if (!requiredFieldsFilled || !requiredFieldsCommitted) {\n return {\n ...formStep,\n next: undefined,\n };\n }\n }\n\n if (next) {\n let nextStep: IFormStep | undefined;\n\n next.every(step => {\n if (step.when === undefined) {\n nextStep = step;\n\n return false;\n }\n\n const conditionFulfilled = step.when.every(\n ([field, value]) => milestoneFormData[field] === value,\n );\n\n if (conditionFulfilled) {\n nextStep = step;\n\n return false;\n }\n\n return true;\n });\n\n if (nextStep) {\n return getCurrenStep(nextStep, milestoneFormData, flow);\n }\n }\n\n return undefined;\n};\n\ntype TOptions = {\n id: string;\n label: string;\n description?: string;\n};\n\ninterface IGetSchoolTestsFromConfig {\n (config: IMilestoneConfig): TOptions[];\n}\n\nconst getSchoolTestsFromConfig: IGetSchoolTestsFromConfig = config => {\n return config.academic_events.reduce<TOptions[]>((acc, event) => {\n const { id, event_name: eventName, event_type: eventType } = event;\n\n if (eventType === 'SCHOOL_TEST') {\n acc.push({\n id,\n label: eventName,\n });\n }\n\n return acc;\n }, []);\n};\n\ninterface IGetCountriesFromConfig {\n (config: IMilestoneConfig): TOptions[];\n}\n\nconst computeCanIncludeCurrentGoal = (props: {\n currentGoalData: IGoalCurriculumMap;\n enrollmentType: TEnrollmentTypes;\n currentCountryCode?: string;\n grade?: string;\n selectedCategory?: string;\n isTeacherTrainingAccount?: boolean;\n}) => {\n const {\n currentGoalData,\n enrollmentType,\n currentCountryCode,\n grade,\n selectedCategory,\n isTeacherTrainingAccount,\n } = props;\n\n const {\n blocked_countries: blockedCountries,\n available_countries: availableCountries,\n available_grades: availableGrades,\n goal_category: goalCategory,\n available_enrollment_types: availableEnrollmentTypes,\n blocked_enrollment_types: blockedEnrollmentTypes,\n } = currentGoalData;\n\n const isStudentEnrollmentTypeSupported = getStudentEnrollmentSupported(\n blockedEnrollmentTypes,\n availableEnrollmentTypes,\n enrollmentType,\n );\n const isStudentRegionBlocked = blockedCountries.some(\n blockedCountry => blockedCountry === currentCountryCode,\n );\n const isStudentRegionAvailable =\n availableCountries.length > 0\n ? availableCountries.some(availableCountry => availableCountry === currentCountryCode)\n : true;\n\n const isCurrentGradeAvailable = availableGrades.some(gradeInfo => gradeInfo === grade);\n const isGoalCategoryAvailable = selectedCategory === goalCategory;\n\n if (isTeacherTrainingAccount) return isGoalCategoryAvailable && isCurrentGradeAvailable;\n\n return (\n isStudentEnrollmentTypeSupported &&\n !isStudentRegionBlocked &&\n isStudentRegionAvailable &&\n isCurrentGradeAvailable &&\n isGoalCategoryAvailable\n );\n};\n\ninterface IGetCurriculumStandardsFromConfig {\n (\n config: IMilestoneConfig,\n options: {\n grade: string;\n countryCode: string;\n goalCategory: TGoalCategory;\n courseStream: TCourseStream;\n enrollmentType: TEnrollmentTypes;\n classRatio?: number;\n flow?: TMilestoneFormFlow | null;\n isTeacherTrainingAccount?: boolean;\n },\n ): TCurriculumStandardOption[];\n}\n\nconst getCurriculumStandardsFromConfig: IGetCurriculumStandardsFromConfig = (\n config,\n {\n grade,\n countryCode,\n goalCategory,\n courseStream,\n classRatio,\n enrollmentType,\n flow,\n isTeacherTrainingAccount,\n },\n) => {\n const { goal_curriculum_map: goals, curriculum_standards: curriculumStandards } = config;\n // check if atleast one goal present for the curriculum standard\n\n const filteredGoalCurriculumMap = goals.filter(item => {\n const isSameCourseStream = item.course_stream === courseStream;\n\n if (flow === 'CREATE') {\n return isSameCourseStream && item.is_live;\n }\n\n return isSameCourseStream;\n });\n\n const hasGoalForCurriculumStandards = (standard: ICurriculumStandards) =>\n filteredGoalCurriculumMap.some(goal => {\n // check goal category\n if (goal.goal_category !== goalCategory) return false;\n\n // check grade availability\n if (!goal.available_grades.includes(grade)) return false;\n\n // check goal curriculum standard\n // if goal_curriculum_standard is undefined then it's available for all standard\n if (goal.goal_curriculum_standard && goal.goal_curriculum_standard !== standard.code)\n return false;\n\n if (goalCategory === 'SCHOOL_SUCCESS' && !goal.goal_curriculum_standard) return false;\n\n if (isTeacherTrainingAccount) return true;\n\n if (\n classRatio &&\n goal.available_class_ratios.length > 0 &&\n !goal.available_class_ratios.includes(classRatio)\n )\n return false;\n\n // check country availability\n if (goal.available_countries.length > 0 && !goal.available_countries.includes(countryCode))\n return false;\n\n if (goal.available_countries.length === 0 && goal.blocked_countries.includes(countryCode))\n return false;\n\n return checkEnrollmentAvailable(goal, enrollmentType);\n });\n\n return curriculumStandards\n .filter(hasGoalForCurriculumStandards)\n .map(\n ({\n code,\n name,\n default_in_countries: defaultInCountries,\n recommended_in_countries: recommendedInCountries,\n }) => ({\n id: code,\n label: name,\n isDefault: defaultInCountries.includes(countryCode),\n isRecommended: recommendedInCountries.includes(countryCode),\n }),\n )\n .sort((a, b) => (a.label.toUpperCase() > b.label.toUpperCase() ? 1 : -1));\n};\n\ninterface IGetGoalsFromConfig {\n (\n config: IMilestoneConfig,\n options: {\n grade: string;\n countryCode: string;\n goalCategory: TGoalCategory;\n curriculumStandard?: string;\n courseStream: TCourseStream;\n enrollmentType: TEnrollmentTypes;\n },\n ): TOptions[];\n}\n\nconst getGoalsFromConfig: IGetGoalsFromConfig = (config, options) => {\n const { goal_curriculum_map: goals } = config;\n const { grade, countryCode, goalCategory, curriculumStandard, courseStream, enrollmentType } =\n options;\n const filteredGoalCurriculumMap = goals.filter(item => item.course_stream === courseStream);\n\n const isEligibleGoal = (goal: IGoalCurriculumMap) => {\n if (goal.goal_category !== goalCategory) return false;\n\n if (curriculumStandard && goal.goal_curriculum_standard !== curriculumStandard) return false;\n\n if (goal.available_countries.length > 0 && !goal.available_countries.includes(countryCode))\n return false;\n\n if (goal.available_countries.length === 0 && goal.blocked_countries.includes(countryCode))\n return false;\n\n if (!goal.available_grades.includes(grade)) return false;\n\n if (!goal.is_live) return false;\n\n return checkEnrollmentAvailable(goal, enrollmentType);\n };\n\n return filteredGoalCurriculumMap\n ?.filter(isEligibleGoal)\n .map(({ goal_code: id, goal_name: label }) => ({\n id,\n label,\n }))\n .sort((a, b) => (a.label.toUpperCase() > b.label.toUpperCase() ? 1 : -1));\n};\n\nconst getGradesFromConfig: IGetCountriesFromConfig = config => {\n return config.grades.reduce<TOptions[]>((acc, grade) => {\n if (grade === '-1' || grade === '0') {\n acc.push({\n id: grade,\n label: grade === '-1' ? `Pre-K` : `KG`,\n });\n } else {\n acc.push({\n id: grade,\n label: `Grade ${grade}`,\n });\n }\n\n return acc;\n }, []);\n};\n\ninterface IGetPreferencesFromConfig {\n (\n config: IMilestoneConfig,\n options: {\n grade: string;\n preferenceCategory: TPreferenceCategory;\n courseStream: TCourseStream;\n },\n ): TOptions[];\n}\n\nconst getPreferencesFromConfig: IGetPreferencesFromConfig = (config, options) => {\n const { preference_config: preferenceConfig } = config;\n\n const isEligiblePreferences = (preference: IPreferencesCurriculumMap) => {\n const { grade, courseStream, preferenceCategory } = options;\n\n if (preference.course_stream !== courseStream) return false;\n\n if (preference.preference_category !== preferenceCategory) return false;\n\n if (preference.preference_grades.length > 0 && !preference.preference_grades.includes(grade))\n return false;\n\n if (!preference.is_live) return false;\n\n return true;\n };\n\n return preferenceConfig\n ?.filter(isEligiblePreferences)\n .map(\n ({ preference_code: id, preference_name: label, preference_description: description }) => ({\n id,\n label,\n description,\n }),\n );\n};\n\ninterface IGetGradeBasedOnGoalAvailability {\n (\n config: IMilestoneConfig,\n selectedGoalCategory: string,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n isTeacherTrainingAccount?: boolean,\n ): TOptions[];\n}\n\n//* Grades where goals are available for selected goal category.\nconst getGradesBasedOnGoalAvailability: IGetGradeBasedOnGoalAvailability = (\n config,\n selectedGoalCategory,\n courseStream,\n enrollmentType,\n isTeacherTrainingAccount,\n) => {\n const { goal_curriculum_map: goals } = config;\n\n const grades = getGradesFromConfig(config);\n\n const gradeAvailableGoals = ({ id }: TOptions) => {\n return goals\n .filter(item => item.course_stream === courseStream && item.is_live)\n .some((goalData: IGoalCurriculumMap) => {\n const {\n available_grades: availableGrades,\n goal_category: goalCategory,\n available_enrollment_types: availableEnrollmentTypes,\n blocked_enrollment_types: blockedEnrollmentTypes,\n } = goalData;\n\n const isGoalCategoryAndGradeAvailable =\n goalCategory === selectedGoalCategory && availableGrades.includes(id);\n\n if (isTeacherTrainingAccount) return isGoalCategoryAndGradeAvailable;\n\n // check enrollment type availability\n if (\n availableEnrollmentTypes.length > 0 &&\n !availableEnrollmentTypes.includes(enrollmentType)\n )\n return false;\n\n if (\n availableEnrollmentTypes.length === 0 &&\n blockedEnrollmentTypes.includes(enrollmentType)\n )\n return false;\n\n //* Check for grade availability only for selected goal category\n return isGoalCategoryAndGradeAvailable;\n });\n };\n\n return grades.filter(gradeAvailableGoals);\n};\n\ninterface IGetMajorsFromConfigBasedOnBoardAndGrade {\n (\n config: IMilestoneConfig,\n boardCode: string,\n grade: string,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n isTeacherTrainingAccount?: boolean,\n ): TOptions[];\n}\n\nconst getMajorsFromConfigBasedOnBoardAndGrade: IGetMajorsFromConfigBasedOnBoardAndGrade = (\n config,\n boardCode,\n grade,\n courseStream,\n enrollmentType,\n isTeacherTrainingAccount,\n) => {\n //* We have US courses for grade 7 & above\n if (grade === 'KG' || Number(grade) < 7) return [];\n\n const { goal_curriculum_map: goalCurriculumMap } = config;\n const filterOnCourseStreamAndEnrollmentType = (goalData: IGoalCurriculumMap) => {\n if (goalData.course_stream !== courseStream && goalData.is_live) return false;\n\n return isTeacherTrainingAccount || checkEnrollmentAvailable(goalData, enrollmentType);\n };\n\n const majorsWithLabelId = goalCurriculumMap\n .filter(filterOnCourseStreamAndEnrollmentType)\n .reduce<TOptions[]>((acc, goalData) => {\n const {\n available_grades: availableGrades,\n goal_curriculum_standard: goalCurriculumStandard,\n program_name: programName,\n program_code: programCode,\n } = goalData;\n\n const isGradeAvailable = availableGrades.some(availableGrade => availableGrade === grade);\n const isBoardAvailable = goalCurriculumStandard === boardCode;\n\n if (isGradeAvailable && isBoardAvailable) {\n acc.push({\n id: programCode,\n label: programName,\n });\n }\n\n return acc;\n }, []);\n\n return majorsWithLabelId;\n};\n\nconst getRegionCodeBasedOnCountryCode = (countryCode: string) => {\n const regionCode = COUNTRY_MAP.find(countryInfo => countryInfo.country_code === countryCode)\n ?.region_code;\n\n return regionCode;\n};\n\nconst generateFormStateWithPrefilledSchoolData = (\n schoolData: IStudentSchool | undefined,\n board: string | undefined,\n grade: string | undefined,\n currentCountryCode: string | undefined,\n): IMilestoneFormData => {\n if (schoolData && grade) {\n const { country_code: countryCode, place_id: placeId } = schoolData;\n\n return {\n committed: {},\n reviewed: {},\n grade: grade,\n schoolInfo: {\n countryCode: countryCode,\n stateCode: '',\n id: placeId,\n },\n region: countryCode,\n board: board ?? undefined,\n };\n }\n\n const regionCode = currentCountryCode\n ? getRegionCodeBasedOnCountryCode(currentCountryCode)\n : undefined;\n\n if (grade) {\n return {\n committed: {},\n reviewed: {},\n grade: grade,\n region: regionCode,\n board: board ?? undefined,\n };\n }\n\n return {\n committed: {},\n reviewed: {},\n };\n};\n\nconst appendSchoolDataToFormState = (\n formData: IMilestoneFormData,\n schoolData: IStudentSchool | undefined,\n board: string | undefined,\n grade: string | undefined,\n): IMilestoneFormData => {\n if (schoolData && grade) {\n const { country_code: countryCode, place_id: placeId } = schoolData;\n\n return {\n ...formData,\n grade: grade,\n schoolInfo: {\n countryCode: countryCode,\n stateCode: '',\n id: placeId,\n },\n board: formData.board ?? board ?? undefined,\n };\n }\n\n return formData;\n};\n\nconst appendPrimaryGoalCategoryToFormState = (\n config: IMilestoneConfig,\n testType: TTestType,\n grade: string | undefined,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n board?: string | undefined,\n country?: string | undefined,\n flow?: TMilestoneFormFlow | null,\n isTeacherTrainingAccount?: boolean,\n) => {\n const { goal_curriculum_map: goalCurriculumMap } = config;\n const isSchoolSuccessCategory = testType === 'no-test';\n const selectedGoalCategory = getTestTypeBasedCategory(testType);\n\n //TODO: This needs to compensate the course selection for US curriculum grade 8 & above\n const primaryGoalCurriculum = goalCurriculumMap.find(goalInfo => {\n const isCurrentGoalAvailable = computeCanIncludeCurrentGoal({\n currentGoalData: goalInfo,\n grade,\n currentCountryCode: country,\n selectedCategory: selectedGoalCategory,\n enrollmentType,\n isTeacherTrainingAccount,\n });\n\n const { goal_curriculum_standard: goalCurriculumStandard, is_live: isLive } = goalInfo;\n\n const currentBoardAvailable = getIfGoalCurriculumStandardIsAccessible({\n goalCurriculumStandard,\n referenceStandard: board,\n });\n\n const isSameCourse = goalInfo.course_stream === courseStream;\n const canIncludeCurrentGoal = flow === 'CREATE' ? isLive : true;\n\n const isEligiblePrimaryGoal = canIncludeCurrentGoal && isSameCourse && isCurrentGoalAvailable;\n\n if (isTeacherTrainingAccount)\n return isEligiblePrimaryGoal && (isSchoolSuccessCategory ? currentBoardAvailable : true);\n\n if (isSchoolSuccessCategory) {\n return isEligiblePrimaryGoal && currentBoardAvailable;\n }\n\n return isEligiblePrimaryGoal;\n });\n\n return primaryGoalCurriculum;\n};\n\nconst getDefaultBoard = (data: ISectionOption<TCurriculumStandardOption>[]) => {\n let recommendedBoards: TCurriculumStandardOption[] = [];\n let otherBoards: TCurriculumStandardOption[] = [];\n\n // Iterate through the data categories\n for (const category of data) {\n if (category.title === 'recommended') {\n recommendedBoards = category.data;\n } else if (category.title === 'others') {\n otherBoards = category.data;\n }\n }\n\n // 1. Check if any recommended board has isDefault: true\n const defaultBoard = recommendedBoards.find(board => board.isDefault && board.isRecommended);\n\n if (defaultBoard) {\n return defaultBoard.id;\n }\n\n // 2. If no default, return the first recommended board\n if (recommendedBoards.length > 0) {\n return recommendedBoards[0]?.id;\n }\n\n // 3. If no recommended, return the first board from others\n if (otherBoards.length > 0) {\n return otherBoards[0]?.id;\n }\n\n // 4. Return null if no boards are found\n return undefined;\n};\n\nexport {\n appendSchoolDataToFormState,\n appendPrimaryGoalCategoryToFormState,\n clearNextFields,\n generateFormStateWithPrefilledSchoolData,\n getCurrenStep,\n getGradesFromConfig,\n getCurriculumStandardsFromConfig,\n getGoalsFromConfig,\n getGradesBasedOnGoalAvailability,\n getMajorsFromConfigBasedOnBoardAndGrade,\n getSchoolTestsFromConfig,\n getRegionCodeBasedOnCountryCode,\n getDefaultBoard,\n getPreferencesFromConfig,\n};\n"],"names":["clearFields","obj","fieldsList","field","clearNextFields","formStep","milestoneFormData","currentStepName","startClearing","fieldsToClear","isLeafNode","next","reset","updatedFormData","shouldStartClearing","nextStep","step","conditionFulfilled","value","_a","getCurrenStep","flow","required","requiredFieldsFilled","GOAL_EDIT_FLOWS","requiredFieldsReviewed","requiredFieldsCommitted","getSchoolTestsFromConfig","config","acc","event","id","eventName","eventType","computeCanIncludeCurrentGoal","props","currentGoalData","enrollmentType","currentCountryCode","grade","selectedCategory","isTeacherTrainingAccount","blockedCountries","availableCountries","availableGrades","goalCategory","availableEnrollmentTypes","blockedEnrollmentTypes","isStudentEnrollmentTypeSupported","getStudentEnrollmentSupported","isStudentRegionBlocked","blockedCountry","isStudentRegionAvailable","availableCountry","isCurrentGradeAvailable","gradeInfo","isGoalCategoryAvailable","getCurriculumStandardsFromConfig","countryCode","courseStream","classRatio","goals","curriculumStandards","filteredGoalCurriculumMap","item","isSameCourseStream","hasGoalForCurriculumStandards","standard","goal","checkEnrollmentAvailable","code","name","defaultInCountries","recommendedInCountries","a","b","getGoalsFromConfig","options","curriculumStandard","isEligibleGoal","label","getGradesFromConfig","getPreferencesFromConfig","preferenceConfig","isEligiblePreferences","preference","preferenceCategory","description","getGradesBasedOnGoalAvailability","selectedGoalCategory","grades","gradeAvailableGoals","goalData","isGoalCategoryAndGradeAvailable","getMajorsFromConfigBasedOnBoardAndGrade","boardCode","goalCurriculumMap","filterOnCourseStreamAndEnrollmentType","goalCurriculumStandard","programName","programCode","availableGrade","getRegionCodeBasedOnCountryCode","COUNTRY_MAP","countryInfo","generateFormStateWithPrefilledSchoolData","schoolData","board","placeId","regionCode","appendSchoolDataToFormState","formData","appendPrimaryGoalCategoryToFormState","testType","country","isSchoolSuccessCategory","getTestTypeBasedCategory","goalInfo","isCurrentGoalAvailable","isLive","currentBoardAvailable","getIfGoalCurriculumStandardIsAccessible","isSameCourse","isEligiblePrimaryGoal","getDefaultBoard","data","recommendedBoards","otherBoards","category","defaultBoard","_b"],"mappings":"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"}
1
+ {"version":3,"file":"milestone-create-helpers.js","sources":["../../../../src/features/milestone/create/milestone-create-helpers.ts"],"sourcesContent":["import type { LOTTIE } from '../../../assets/lottie/lottie';\nimport type IStudentSchool from '../../../types/models/school';\nimport type { ISectionOption } from '../../ui/section-list/section-list-types';\nimport type { TTestType } from '../types';\nimport type {\n ICurriculumStandards,\n IFormStep,\n IGoalCurriculumMap,\n IMileStoneFormFields,\n IMilestoneConfig,\n IMilestoneFormData,\n IPreferencesCurriculumMap,\n TCourseStream,\n TCurriculumStandardOption,\n TEnrollmentTypes,\n TFormStepNames,\n TGoalCategory,\n TMilestoneFormFlow,\n TPreferenceCategory,\n} from './milestone-create-types';\n\nimport { COUNTRY_MAP } from '../../../constants/country';\nimport {\n getIfGoalCurriculumStandardIsAccessible,\n getStudentEnrollmentSupported,\n} from './comps/chapters-selection-step/utils';\nimport {\n checkEnrollmentAvailable,\n getTestTypeBasedCategory,\n} from './comps/test-type-step/test-type-utils';\nimport { GOAL_EDIT_FLOWS } from './milestone-create-constants';\n\ninterface IGetCurrenStep {\n (\n formStep: IFormStep,\n milestoneFormData: IMilestoneFormData,\n flow: TMilestoneFormFlow,\n ): IFormStep | undefined;\n}\n\ninterface IClearNextFields {\n (\n formStep: IFormStep,\n milestoneFormData: IMilestoneFormData,\n currentStepName: TFormStepNames | undefined,\n shouldStartClearing: boolean,\n fieldsToClear: (keyof IMileStoneFormFields)[],\n ): IMilestoneFormData | undefined;\n}\n\n/**\n * Impure method that Removes specified fields from an object.\n *\n * @param obj The object from which fields are to be removed.\n * @param fieldsList An array of field names to be removed.\n */\nconst clearFields = (obj: Record<string, unknown>, fieldsList: string[]) => {\n fieldsList.forEach(field => {\n obj[field] = undefined;\n });\n};\n\nconst clearNextFields: IClearNextFields = (\n formStep,\n milestoneFormData,\n currentStepName,\n startClearing,\n fieldsToClear = [],\n) => {\n const { isLeafNode, next, reset } = formStep;\n const updatedFormData = { ...milestoneFormData };\n\n if (isLeafNode) {\n clearFields(updatedFormData, [...reset, ...fieldsToClear]);\n\n return updatedFormData;\n }\n\n if (next) {\n let shouldStartClearing = startClearing;\n let nextStep: IFormStep | undefined;\n\n next.every(step => {\n let conditionFulfilled = false;\n\n if (step.when !== undefined) {\n conditionFulfilled = step.when.every(([field, value]) => updatedFormData[field] === value);\n } else conditionFulfilled = true;\n\n if (conditionFulfilled) {\n if (shouldStartClearing) {\n step?.reset?.forEach(field => {\n fieldsToClear.push(field);\n });\n } else if (currentStepName === step?.name) {\n shouldStartClearing = true;\n }\n\n nextStep = step;\n\n return false;\n }\n\n return true;\n });\n if (nextStep) {\n return clearNextFields(\n nextStep,\n updatedFormData,\n currentStepName,\n shouldStartClearing,\n fieldsToClear,\n );\n }\n }\n\n return undefined;\n};\n\nconst getCurrenStep: IGetCurrenStep = (formStep, milestoneFormData, flow) => {\n const { isLeafNode, required, next } = formStep;\n\n if (isLeafNode) {\n return formStep;\n }\n\n const requiredFieldsFilled = required.every(field => milestoneFormData[field] !== undefined);\n\n if (GOAL_EDIT_FLOWS.includes(flow)) {\n const requiredFieldsReviewed = required.every(\n field => milestoneFormData.reviewed[field] === true,\n );\n\n if (!requiredFieldsFilled || !requiredFieldsReviewed) {\n return {\n ...formStep,\n next: undefined,\n };\n }\n } else {\n const requiredFieldsCommitted = required.every(\n field => milestoneFormData.committed[field] === true,\n );\n\n if (!requiredFieldsFilled || !requiredFieldsCommitted) {\n return {\n ...formStep,\n next: undefined,\n };\n }\n }\n\n if (next) {\n let nextStep: IFormStep | undefined;\n\n next.every(step => {\n if (step.when === undefined) {\n nextStep = step;\n\n return false;\n }\n\n const conditionFulfilled = step.when.every(\n ([field, value]) => milestoneFormData[field] === value,\n );\n\n if (conditionFulfilled) {\n nextStep = step;\n\n return false;\n }\n\n return true;\n });\n\n if (nextStep) {\n return getCurrenStep(nextStep, milestoneFormData, flow);\n }\n }\n\n return undefined;\n};\n\ntype TOptions = {\n id: string;\n label: string;\n description?: string;\n lottie?: keyof typeof LOTTIE;\n};\n\ninterface IGetSchoolTestsFromConfig {\n (config: IMilestoneConfig): TOptions[];\n}\n\nconst getSchoolTestsFromConfig: IGetSchoolTestsFromConfig = config => {\n return config.academic_events.reduce<TOptions[]>((acc, event) => {\n const { id, event_name: eventName, event_type: eventType } = event;\n\n if (eventType === 'SCHOOL_TEST') {\n acc.push({\n id,\n label: eventName,\n });\n }\n\n return acc;\n }, []);\n};\n\ninterface IGetCountriesFromConfig {\n (config: IMilestoneConfig): TOptions[];\n}\n\nconst computeCanIncludeCurrentGoal = (props: {\n currentGoalData: IGoalCurriculumMap;\n enrollmentType: TEnrollmentTypes;\n currentCountryCode?: string;\n grade?: string;\n selectedCategory?: string;\n isTeacherTrainingAccount?: boolean;\n}) => {\n const {\n currentGoalData,\n enrollmentType,\n currentCountryCode,\n grade,\n selectedCategory,\n isTeacherTrainingAccount,\n } = props;\n\n const {\n blocked_countries: blockedCountries,\n available_countries: availableCountries,\n available_grades: availableGrades,\n goal_category: goalCategory,\n available_enrollment_types: availableEnrollmentTypes,\n blocked_enrollment_types: blockedEnrollmentTypes,\n } = currentGoalData;\n\n const isStudentEnrollmentTypeSupported = getStudentEnrollmentSupported(\n blockedEnrollmentTypes,\n availableEnrollmentTypes,\n enrollmentType,\n );\n const isStudentRegionBlocked = blockedCountries.some(\n blockedCountry => blockedCountry === currentCountryCode,\n );\n const isStudentRegionAvailable =\n availableCountries.length > 0\n ? availableCountries.some(availableCountry => availableCountry === currentCountryCode)\n : true;\n\n const isCurrentGradeAvailable = availableGrades.some(gradeInfo => gradeInfo === grade);\n const isGoalCategoryAvailable = selectedCategory === goalCategory;\n\n if (isTeacherTrainingAccount) return isGoalCategoryAvailable && isCurrentGradeAvailable;\n\n return (\n isStudentEnrollmentTypeSupported &&\n !isStudentRegionBlocked &&\n isStudentRegionAvailable &&\n isCurrentGradeAvailable &&\n isGoalCategoryAvailable\n );\n};\n\ninterface IGetCurriculumStandardsFromConfig {\n (\n config: IMilestoneConfig,\n options: {\n grade: string;\n countryCode: string;\n goalCategory: TGoalCategory;\n courseStream: TCourseStream;\n enrollmentType: TEnrollmentTypes;\n classRatio?: number;\n flow?: TMilestoneFormFlow | null;\n isTeacherTrainingAccount?: boolean;\n },\n ): TCurriculumStandardOption[];\n}\n\nconst getCurriculumStandardsFromConfig: IGetCurriculumStandardsFromConfig = (\n config,\n {\n grade,\n countryCode,\n goalCategory,\n courseStream,\n classRatio,\n enrollmentType,\n flow,\n isTeacherTrainingAccount,\n },\n) => {\n const { goal_curriculum_map: goals, curriculum_standards: curriculumStandards } = config;\n // check if atleast one goal present for the curriculum standard\n\n const filteredGoalCurriculumMap = goals.filter(item => {\n const isSameCourseStream = item.course_stream === courseStream;\n\n if (flow === 'CREATE') {\n return isSameCourseStream && item.is_live;\n }\n\n return isSameCourseStream;\n });\n\n const hasGoalForCurriculumStandards = (standard: ICurriculumStandards) =>\n filteredGoalCurriculumMap.some(goal => {\n // check goal category\n if (goal.goal_category !== goalCategory) return false;\n\n // check grade availability\n if (!goal.available_grades.includes(grade)) return false;\n\n // check goal curriculum standard\n // if goal_curriculum_standard is undefined then it's available for all standard\n if (goal.goal_curriculum_standard && goal.goal_curriculum_standard !== standard.code)\n return false;\n\n if (goalCategory === 'SCHOOL_SUCCESS' && !goal.goal_curriculum_standard) return false;\n\n if (isTeacherTrainingAccount) return true;\n\n if (\n classRatio &&\n goal.available_class_ratios.length > 0 &&\n !goal.available_class_ratios.includes(classRatio)\n )\n return false;\n\n // check country availability\n if (goal.available_countries.length > 0 && !goal.available_countries.includes(countryCode))\n return false;\n\n if (goal.available_countries.length === 0 && goal.blocked_countries.includes(countryCode))\n return false;\n\n return checkEnrollmentAvailable(goal, enrollmentType);\n });\n\n return curriculumStandards\n .filter(hasGoalForCurriculumStandards)\n .map(\n ({\n code,\n name,\n default_in_countries: defaultInCountries,\n recommended_in_countries: recommendedInCountries,\n }) => ({\n id: code,\n label: name,\n isDefault: defaultInCountries.includes(countryCode),\n isRecommended: recommendedInCountries.includes(countryCode),\n }),\n )\n .sort((a, b) => (a.label.toUpperCase() > b.label.toUpperCase() ? 1 : -1));\n};\n\ninterface IGetGoalsFromConfig {\n (\n config: IMilestoneConfig,\n options: {\n grade: string;\n countryCode: string;\n goalCategory: TGoalCategory;\n curriculumStandard?: string;\n courseStream: TCourseStream;\n enrollmentType: TEnrollmentTypes;\n },\n ): TOptions[];\n}\n\nconst getGoalsFromConfig: IGetGoalsFromConfig = (config, options) => {\n const { goal_curriculum_map: goals } = config;\n const { grade, countryCode, goalCategory, curriculumStandard, courseStream, enrollmentType } =\n options;\n const filteredGoalCurriculumMap = goals.filter(item => item.course_stream === courseStream);\n\n const isEligibleGoal = (goal: IGoalCurriculumMap) => {\n if (goal.goal_category !== goalCategory) return false;\n\n if (curriculumStandard && goal.goal_curriculum_standard !== curriculumStandard) return false;\n\n if (goal.available_countries.length > 0 && !goal.available_countries.includes(countryCode))\n return false;\n\n if (goal.available_countries.length === 0 && goal.blocked_countries.includes(countryCode))\n return false;\n\n if (!goal.available_grades.includes(grade)) return false;\n\n if (!goal.is_live) return false;\n\n return checkEnrollmentAvailable(goal, enrollmentType);\n };\n\n return filteredGoalCurriculumMap\n ?.filter(isEligibleGoal)\n .map(({ goal_code: id, goal_name: label }) => ({\n id,\n label,\n }))\n .sort((a, b) => (a.label.toUpperCase() > b.label.toUpperCase() ? 1 : -1));\n};\n\nconst getGradesFromConfig: IGetCountriesFromConfig = config => {\n return config.grades.reduce<TOptions[]>((acc, grade) => {\n if (grade === '-1' || grade === '0') {\n acc.push({\n id: grade,\n label: grade === '-1' ? `Pre-K` : `KG`,\n });\n } else {\n acc.push({\n id: grade,\n label: `Grade ${grade}`,\n });\n }\n\n return acc;\n }, []);\n};\n\ninterface IGetPreferencesFromConfig {\n (\n config: IMilestoneConfig,\n options: {\n grade: string;\n preferenceCategory: TPreferenceCategory;\n courseStream: TCourseStream;\n },\n ): TOptions[];\n}\n\nconst getPreferencesFromConfig: IGetPreferencesFromConfig = (config, options) => {\n const { preference_config: preferenceConfig } = config;\n\n const isEligiblePreferences = (preference: IPreferencesCurriculumMap) => {\n const { grade, courseStream, preferenceCategory } = options;\n\n if (preference.course_stream !== courseStream) return false;\n\n if (preference.preference_category !== preferenceCategory) return false;\n\n if (preference.preference_grades.length > 0 && !preference.preference_grades.includes(grade))\n return false;\n\n if (!preference.is_live) return false;\n\n return true;\n };\n\n return preferenceConfig\n ?.filter(isEligiblePreferences)\n .map(\n ({\n preference_code: id,\n preference_name: label,\n preference_description: description,\n lottie_key: lottie,\n }) => ({\n id,\n label,\n description,\n lottie: lottie as keyof typeof LOTTIE,\n }),\n );\n};\n\ninterface IGetGradeBasedOnGoalAvailability {\n (\n config: IMilestoneConfig,\n selectedGoalCategory: string,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n isTeacherTrainingAccount?: boolean,\n ): TOptions[];\n}\n\n//* Grades where goals are available for selected goal category.\nconst getGradesBasedOnGoalAvailability: IGetGradeBasedOnGoalAvailability = (\n config,\n selectedGoalCategory,\n courseStream,\n enrollmentType,\n isTeacherTrainingAccount,\n) => {\n const { goal_curriculum_map: goals } = config;\n\n const grades = getGradesFromConfig(config);\n\n const gradeAvailableGoals = ({ id }: TOptions) => {\n return goals\n .filter(item => item.course_stream === courseStream && item.is_live)\n .some((goalData: IGoalCurriculumMap) => {\n const {\n available_grades: availableGrades,\n goal_category: goalCategory,\n available_enrollment_types: availableEnrollmentTypes,\n blocked_enrollment_types: blockedEnrollmentTypes,\n } = goalData;\n\n const isGoalCategoryAndGradeAvailable =\n goalCategory === selectedGoalCategory && availableGrades.includes(id);\n\n if (isTeacherTrainingAccount) return isGoalCategoryAndGradeAvailable;\n\n // check enrollment type availability\n if (\n availableEnrollmentTypes.length > 0 &&\n !availableEnrollmentTypes.includes(enrollmentType)\n )\n return false;\n\n if (\n availableEnrollmentTypes.length === 0 &&\n blockedEnrollmentTypes.includes(enrollmentType)\n )\n return false;\n\n //* Check for grade availability only for selected goal category\n return isGoalCategoryAndGradeAvailable;\n });\n };\n\n return grades.filter(gradeAvailableGoals);\n};\n\ninterface IGetMajorsFromConfigBasedOnBoardAndGrade {\n (\n config: IMilestoneConfig,\n boardCode: string,\n grade: string,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n isTeacherTrainingAccount?: boolean,\n ): TOptions[];\n}\n\nconst getMajorsFromConfigBasedOnBoardAndGrade: IGetMajorsFromConfigBasedOnBoardAndGrade = (\n config,\n boardCode,\n grade,\n courseStream,\n enrollmentType,\n isTeacherTrainingAccount,\n) => {\n //* We have US courses for grade 7 & above\n if (grade === 'KG' || Number(grade) < 7) return [];\n\n const { goal_curriculum_map: goalCurriculumMap } = config;\n const filterOnCourseStreamAndEnrollmentType = (goalData: IGoalCurriculumMap) => {\n if (goalData.course_stream !== courseStream && goalData.is_live) return false;\n\n return isTeacherTrainingAccount || checkEnrollmentAvailable(goalData, enrollmentType);\n };\n\n const majorsWithLabelId = goalCurriculumMap\n .filter(filterOnCourseStreamAndEnrollmentType)\n .reduce<TOptions[]>((acc, goalData) => {\n const {\n available_grades: availableGrades,\n goal_curriculum_standard: goalCurriculumStandard,\n program_name: programName,\n program_code: programCode,\n } = goalData;\n\n const isGradeAvailable = availableGrades.some(availableGrade => availableGrade === grade);\n const isBoardAvailable = goalCurriculumStandard === boardCode;\n\n if (isGradeAvailable && isBoardAvailable) {\n acc.push({\n id: programCode,\n label: programName,\n });\n }\n\n return acc;\n }, []);\n\n return majorsWithLabelId;\n};\n\nconst getRegionCodeBasedOnCountryCode = (countryCode: string) => {\n const regionCode = COUNTRY_MAP.find(countryInfo => countryInfo.country_code === countryCode)\n ?.region_code;\n\n return regionCode;\n};\n\nconst generateFormStateWithPrefilledSchoolData = (\n schoolData: IStudentSchool | undefined,\n board: string | undefined,\n grade: string | undefined,\n currentCountryCode: string | undefined,\n): IMilestoneFormData => {\n if (schoolData && grade) {\n const { country_code: countryCode, place_id: placeId } = schoolData;\n\n return {\n committed: {},\n reviewed: {},\n grade: grade,\n schoolInfo: {\n countryCode: countryCode,\n stateCode: '',\n id: placeId,\n },\n region: countryCode,\n board: board ?? undefined,\n };\n }\n\n const regionCode = currentCountryCode\n ? getRegionCodeBasedOnCountryCode(currentCountryCode)\n : undefined;\n\n if (grade) {\n return {\n committed: {},\n reviewed: {},\n grade: grade,\n region: regionCode,\n board: board ?? undefined,\n };\n }\n\n return {\n committed: {},\n reviewed: {},\n };\n};\n\nconst appendSchoolDataToFormState = (\n formData: IMilestoneFormData,\n schoolData: IStudentSchool | undefined,\n board: string | undefined,\n grade: string | undefined,\n): IMilestoneFormData => {\n if (schoolData && grade) {\n const { country_code: countryCode, place_id: placeId } = schoolData;\n\n return {\n ...formData,\n grade: grade,\n schoolInfo: {\n countryCode: countryCode,\n stateCode: '',\n id: placeId,\n },\n board: formData.board ?? board ?? undefined,\n };\n }\n\n return formData;\n};\n\nconst appendPrimaryGoalCategoryToFormState = (\n config: IMilestoneConfig,\n testType: TTestType,\n grade: string | undefined,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n board?: string | undefined,\n country?: string | undefined,\n flow?: TMilestoneFormFlow | null,\n isTeacherTrainingAccount?: boolean,\n) => {\n const { goal_curriculum_map: goalCurriculumMap } = config;\n const isSchoolSuccessCategory = testType === 'no-test';\n const selectedGoalCategory = getTestTypeBasedCategory(testType);\n\n //TODO: This needs to compensate the course selection for US curriculum grade 8 & above\n const primaryGoalCurriculum = goalCurriculumMap.find(goalInfo => {\n const isCurrentGoalAvailable = computeCanIncludeCurrentGoal({\n currentGoalData: goalInfo,\n grade,\n currentCountryCode: country,\n selectedCategory: selectedGoalCategory,\n enrollmentType,\n isTeacherTrainingAccount,\n });\n\n const { goal_curriculum_standard: goalCurriculumStandard, is_live: isLive } = goalInfo;\n\n const currentBoardAvailable = getIfGoalCurriculumStandardIsAccessible({\n goalCurriculumStandard,\n referenceStandard: board,\n });\n\n const isSameCourse = goalInfo.course_stream === courseStream;\n const canIncludeCurrentGoal = flow === 'CREATE' ? isLive : true;\n\n const isEligiblePrimaryGoal = canIncludeCurrentGoal && isSameCourse && isCurrentGoalAvailable;\n\n if (isTeacherTrainingAccount)\n return isEligiblePrimaryGoal && (isSchoolSuccessCategory ? currentBoardAvailable : true);\n\n if (isSchoolSuccessCategory) {\n return isEligiblePrimaryGoal && currentBoardAvailable;\n }\n\n return isEligiblePrimaryGoal;\n });\n\n return primaryGoalCurriculum;\n};\n\nconst getDefaultBoard = (data: ISectionOption<TCurriculumStandardOption>[]) => {\n let recommendedBoards: TCurriculumStandardOption[] = [];\n let otherBoards: TCurriculumStandardOption[] = [];\n\n // Iterate through the data categories\n for (const category of data) {\n if (category.title === 'recommended') {\n recommendedBoards = category.data;\n } else if (category.title === 'others') {\n otherBoards = category.data;\n }\n }\n\n // 1. Check if any recommended board has isDefault: true\n const defaultBoard = recommendedBoards.find(board => board.isDefault && board.isRecommended);\n\n if (defaultBoard) {\n return defaultBoard.id;\n }\n\n // 2. If no default, return the first recommended board\n if (recommendedBoards.length > 0) {\n return recommendedBoards[0]?.id;\n }\n\n // 3. If no recommended, return the first board from others\n if (otherBoards.length > 0) {\n return otherBoards[0]?.id;\n }\n\n // 4. Return null if no boards are found\n return undefined;\n};\n\nexport {\n appendSchoolDataToFormState,\n appendPrimaryGoalCategoryToFormState,\n clearNextFields,\n generateFormStateWithPrefilledSchoolData,\n getCurrenStep,\n getGradesFromConfig,\n getCurriculumStandardsFromConfig,\n getGoalsFromConfig,\n getGradesBasedOnGoalAvailability,\n getMajorsFromConfigBasedOnBoardAndGrade,\n getSchoolTestsFromConfig,\n getRegionCodeBasedOnCountryCode,\n getDefaultBoard,\n getPreferencesFromConfig,\n};\n"],"names":["clearFields","obj","fieldsList","field","clearNextFields","formStep","milestoneFormData","currentStepName","startClearing","fieldsToClear","isLeafNode","next","reset","updatedFormData","shouldStartClearing","nextStep","step","conditionFulfilled","value","_a","getCurrenStep","flow","required","requiredFieldsFilled","GOAL_EDIT_FLOWS","requiredFieldsReviewed","requiredFieldsCommitted","getSchoolTestsFromConfig","config","acc","event","id","eventName","eventType","computeCanIncludeCurrentGoal","props","currentGoalData","enrollmentType","currentCountryCode","grade","selectedCategory","isTeacherTrainingAccount","blockedCountries","availableCountries","availableGrades","goalCategory","availableEnrollmentTypes","blockedEnrollmentTypes","isStudentEnrollmentTypeSupported","getStudentEnrollmentSupported","isStudentRegionBlocked","blockedCountry","isStudentRegionAvailable","availableCountry","isCurrentGradeAvailable","gradeInfo","isGoalCategoryAvailable","getCurriculumStandardsFromConfig","countryCode","courseStream","classRatio","goals","curriculumStandards","filteredGoalCurriculumMap","item","isSameCourseStream","hasGoalForCurriculumStandards","standard","goal","checkEnrollmentAvailable","code","name","defaultInCountries","recommendedInCountries","a","b","getGoalsFromConfig","options","curriculumStandard","isEligibleGoal","label","getGradesFromConfig","getPreferencesFromConfig","preferenceConfig","isEligiblePreferences","preference","preferenceCategory","description","lottie","getGradesBasedOnGoalAvailability","selectedGoalCategory","grades","gradeAvailableGoals","goalData","isGoalCategoryAndGradeAvailable","getMajorsFromConfigBasedOnBoardAndGrade","boardCode","goalCurriculumMap","filterOnCourseStreamAndEnrollmentType","goalCurriculumStandard","programName","programCode","availableGrade","getRegionCodeBasedOnCountryCode","COUNTRY_MAP","countryInfo","generateFormStateWithPrefilledSchoolData","schoolData","board","placeId","regionCode","appendSchoolDataToFormState","formData","appendPrimaryGoalCategoryToFormState","testType","country","isSchoolSuccessCategory","getTestTypeBasedCategory","goalInfo","isCurrentGoalAvailable","isLive","currentBoardAvailable","getIfGoalCurriculumStandardIsAccessible","isSameCourse","isEligiblePrimaryGoal","getDefaultBoard","data","recommendedBoards","otherBoards","category","defaultBoard","_b"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { createPatchAPI as c } from "@cuemath/rest-api";
2
+ import { BASE_URL_V1 as e } from "../../../constants/api.js";
3
+ const { usePatch: s } = c({
4
+ getURL: (t) => `${e}/students/${t}/cancel-subscription`
5
+ });
6
+ export {
7
+ s as useCancelSubscriptionPatch
8
+ };
9
+ //# sourceMappingURL=cancel-subscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancel-subscription.js","sources":["../../../../src/features/parent-dashboard/api/cancel-subscription.ts"],"sourcesContent":["import { createPatchAPI } from '@cuemath/rest-api';\n\nimport { BASE_URL_V1 } from '../../../constants/api';\n\nconst { usePatch: useCancelSubscriptionPatch } = createPatchAPI({\n getURL: studentId => `${BASE_URL_V1}/students/${studentId}/cancel-subscription`,\n});\n\nexport { useCancelSubscriptionPatch };\n"],"names":["useCancelSubscriptionPatch","createPatchAPI","studentId","BASE_URL_V1"],"mappings":";;AAIA,MAAM,EAAE,UAAUA,EAA2B,IAAIC,EAAe;AAAA,EAC9D,QAAQ,CAAAC,MAAa,GAAGC,CAAW,aAAaD,CAAS;AAC3D,CAAC;"}
@@ -0,0 +1,20 @@
1
+ import o from "styled-components";
2
+ import t from "../../../../assets/line-icons/icons/more-vertical.js";
3
+ import e from "../../../ui/layout/flex-view.js";
4
+ const l = o(t)(
5
+ ({ theme: r }) => `
6
+ cursor: pointer;
7
+ path {
8
+ stroke: ${r.colors.WHITE};
9
+ }
10
+ `
11
+ );
12
+ o(e)`
13
+ top: 0;
14
+ right: 32px;
15
+ z-index: 100;
16
+ `;
17
+ export {
18
+ l as StyledVerticalMenu
19
+ };
20
+ //# sourceMappingURL=billing-information-styled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing-information-styled.js","sources":["../../../../../src/features/parent-dashboard/comps/billing-information/billing-information-styled.ts"],"sourcesContent":["import styled from 'styled-components';\n\nimport MoreVerticalIcon from '../../../../assets/line-icons/icons/more-vertical';\nimport FlexView from '../../../ui/layout/flex-view';\n\nconst StyledVerticalMenu = styled(MoreVerticalIcon)(\n ({ theme }) => `\n cursor: pointer;\n path {\n stroke: ${theme.colors.WHITE};\n }\n `,\n);\n\nconst DropdownMenu = styled(FlexView)`\n top: 0;\n right: 32px;\n z-index: 100;\n`;\n\nexport { StyledVerticalMenu, DropdownMenu };\n"],"names":["StyledVerticalMenu","styled","MoreVerticalIcon","theme","FlexView"],"mappings":";;;AAKM,MAAAA,IAAqBC,EAAOC,CAAgB;AAAA,EAChD,CAAC,EAAE,OAAAC,EAAA,MAAY;AAAA;AAAA;AAAA,gBAGDA,EAAM,OAAO,KAAK;AAAA;AAAA;AAGlC;AAEqBF,EAAOG,CAAQ;AAAA;AAAA;AAAA;AAAA;"}
@@ -0,0 +1,74 @@
1
+ import { jsxs as o, jsx as e } from "react/jsx-runtime";
2
+ import { memo as s } from "react";
3
+ import { useTheme as p } from "styled-components";
4
+ import l from "../../../ui/buttons/clickable/clickable.js";
5
+ import b from "../../../ui/context-menu/context-menu.js";
6
+ import t from "../../../ui/layout/flex-view.js";
7
+ import f from "../../../ui/separator/separator.js";
8
+ import n from "../../../ui/text/text.js";
9
+ import { EDeviceType as h } from "../../../ui/theme/constants.js";
10
+ import { StyledVerticalMenu as C } from "./billing-information-styled.js";
11
+ const M = s(
12
+ ({ billingDetails: c, onViewPaymentMethod: i, onCancelSubscription: d }) => {
13
+ const { amount: m, cycle_frequency: a, next_due_date: u } = c, { device: $ } = p(), r = $ <= h.MOBILE;
14
+ return /* @__PURE__ */ o(t, { children: [
15
+ /* @__PURE__ */ e(n, { $renderAs: "ah4-bold", $renderOnMobileAs: "ab1-bold", $color: "WHITE", children: "Billing Information" }),
16
+ /* @__PURE__ */ e(f, { height: 20 }),
17
+ /* @__PURE__ */ o(
18
+ t,
19
+ {
20
+ $flexDirection: "row",
21
+ $justifyContent: "space-between",
22
+ $alignItems: "center",
23
+ $gap: r ? 16 : 24,
24
+ $gutter: r ? 16 : 24,
25
+ $background: "BLACK_2",
26
+ $borderColor: r ? "WHITE" : "BLACK_5",
27
+ onClick: r ? i : void 0,
28
+ children: [
29
+ /* @__PURE__ */ o(t, { $flexGap: 12, children: [
30
+ /* @__PURE__ */ o(n, { $renderAs: "ac3-black", $renderOnMobileAs: "ac4-black", $color: "PURPLE_4", children: [
31
+ a,
32
+ " PLAN"
33
+ ] }),
34
+ /* @__PURE__ */ o(n, { $renderAs: r ? "ub3" : "ub2", $color: "WHITE", children: [
35
+ "$",
36
+ m,
37
+ " payment due on ",
38
+ u
39
+ ] })
40
+ ] }),
41
+ r ? null : /* @__PURE__ */ e(
42
+ b,
43
+ {
44
+ menuWidth: 180,
45
+ targetElement: /* @__PURE__ */ e(C, { height: 24, width: 24 }),
46
+ menuElement: /* @__PURE__ */ o(
47
+ t,
48
+ {
49
+ $position: "absolute",
50
+ $background: "BLACK_4",
51
+ $borderColor: "BLACK_5",
52
+ $gapX: 1,
53
+ $gutterX: 1,
54
+ $flexGap: 12,
55
+ children: [
56
+ /* @__PURE__ */ e(l, { onClick: i, label: "View Payment Method", children: /* @__PURE__ */ e(n, { $renderAs: "ub3", $cursor: "pointer", $color: "WHITE", children: "View Payment Method" }) }),
57
+ /* @__PURE__ */ e(l, { onClick: d, label: "Cancel Subscription", children: /* @__PURE__ */ e(n, { $renderAs: "ub3", $cursor: "pointer", $color: "ORANGE_5", children: "Cancel Subscription" }) })
58
+ ]
59
+ }
60
+ ),
61
+ menuOffset: -24,
62
+ menuZIndex: 1
63
+ }
64
+ )
65
+ ]
66
+ }
67
+ )
68
+ ] });
69
+ }
70
+ );
71
+ export {
72
+ M as default
73
+ };
74
+ //# sourceMappingURL=billing-information.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing-information.js","sources":["../../../../../src/features/parent-dashboard/comps/billing-information/billing-information.tsx"],"sourcesContent":["import type { FC } from 'react';\n\nimport { memo } from 'react';\nimport { useTheme } from 'styled-components';\n\nimport Clickable from '../../../ui/buttons/clickable/clickable';\nimport ContextMenu from '../../../ui/context-menu/context-menu';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport { EDeviceType } from '../../../ui/theme/constants';\nimport * as Styled from './billing-information-styled';\nimport { type IBillingInformationProps } from './billing-information-types';\n\nconst BillingInformation: FC<IBillingInformationProps> = memo(\n ({ billingDetails, onViewPaymentMethod, onCancelSubscription }) => {\n const { amount, cycle_frequency: cycleFrequency, next_due_date: nextDueDate } = billingDetails;\n\n const { device } = useTheme();\n const isMobile = device <= EDeviceType.MOBILE;\n\n return (\n <FlexView>\n <Text $renderAs=\"ah4-bold\" $renderOnMobileAs=\"ab1-bold\" $color=\"WHITE\">\n Billing Information\n </Text>\n <Separator height={20} />\n <FlexView\n $flexDirection=\"row\"\n $justifyContent=\"space-between\"\n $alignItems=\"center\"\n $gap={isMobile ? 16 : 24}\n $gutter={isMobile ? 16 : 24}\n $background=\"BLACK_2\"\n $borderColor={isMobile ? 'WHITE' : 'BLACK_5'}\n onClick={isMobile ? onViewPaymentMethod : undefined}\n >\n <FlexView $flexGap={12}>\n <Text $renderAs=\"ac3-black\" $renderOnMobileAs=\"ac4-black\" $color=\"PURPLE_4\">\n {cycleFrequency} PLAN\n </Text>\n <Text $renderAs={isMobile ? 'ub3' : 'ub2'} $color=\"WHITE\">\n ${amount} payment due on {nextDueDate}\n </Text>\n </FlexView>\n\n {isMobile ? null : (\n <ContextMenu\n menuWidth={180}\n targetElement={<Styled.StyledVerticalMenu height={24} width={24} />}\n menuElement={\n <FlexView\n $position=\"absolute\"\n $background=\"BLACK_4\"\n $borderColor=\"BLACK_5\"\n $gapX={1}\n $gutterX={1}\n $flexGap={12}\n >\n <Clickable onClick={onViewPaymentMethod} label=\"View Payment Method\">\n <Text $renderAs=\"ub3\" $cursor=\"pointer\" $color=\"WHITE\">\n View Payment Method\n </Text>\n </Clickable>\n <Clickable onClick={onCancelSubscription} label=\"Cancel Subscription\">\n <Text $renderAs=\"ub3\" $cursor=\"pointer\" $color=\"ORANGE_5\">\n Cancel Subscription\n </Text>\n </Clickable>\n </FlexView>\n }\n menuOffset={-24}\n menuZIndex={1}\n />\n )}\n </FlexView>\n </FlexView>\n );\n },\n);\n\nexport default BillingInformation;\n"],"names":["BillingInformation","memo","billingDetails","onViewPaymentMethod","onCancelSubscription","amount","cycleFrequency","nextDueDate","device","useTheme","isMobile","EDeviceType","FlexView","jsx","Text","Separator","jsxs","ContextMenu","Styled.StyledVerticalMenu","Clickable"],"mappings":";;;;;;;;;;AAcA,MAAMA,IAAmDC;AAAA,EACvD,CAAC,EAAE,gBAAAC,GAAgB,qBAAAC,GAAqB,sBAAAC,QAA2B;AACjE,UAAM,EAAE,QAAAC,GAAQ,iBAAiBC,GAAgB,eAAeC,EAAgB,IAAAL,GAE1E,EAAE,QAAAM,MAAWC,KACbC,IAAWF,KAAUG,EAAY;AAEvC,6BACGC,GACC,EAAA,UAAA;AAAA,MAAA,gBAAAC,EAACC,KAAK,WAAU,YAAW,mBAAkB,YAAW,QAAO,SAAQ,UAEvE,sBAAA,CAAA;AAAA,MACA,gBAAAD,EAACE,GAAU,EAAA,QAAQ,GAAI,CAAA;AAAA,MACvB,gBAAAC;AAAA,QAACJ;AAAA,QAAA;AAAA,UACC,gBAAe;AAAA,UACf,iBAAgB;AAAA,UAChB,aAAY;AAAA,UACZ,MAAMF,IAAW,KAAK;AAAA,UACtB,SAASA,IAAW,KAAK;AAAA,UACzB,aAAY;AAAA,UACZ,cAAcA,IAAW,UAAU;AAAA,UACnC,SAASA,IAAWP,IAAsB;AAAA,UAE1C,UAAA;AAAA,YAAC,gBAAAa,EAAAJ,GAAA,EAAS,UAAU,IAClB,UAAA;AAAA,cAAA,gBAAAI,EAACF,KAAK,WAAU,aAAY,mBAAkB,aAAY,QAAO,YAC9D,UAAA;AAAA,gBAAAR;AAAA,gBAAe;AAAA,cAAA,GAClB;AAAA,gCACCQ,GAAK,EAAA,WAAWJ,IAAW,QAAQ,OAAO,QAAO,SAAQ,UAAA;AAAA,gBAAA;AAAA,gBACtDL;AAAA,gBAAO;AAAA,gBAAiBE;AAAA,cAAA,GAC5B;AAAA,YAAA,GACF;AAAA,YAECG,IAAW,OACV,gBAAAG;AAAA,cAACI;AAAA,cAAA;AAAA,gBACC,WAAW;AAAA,gBACX,iCAAgBC,GAAA,EAA0B,QAAQ,IAAI,OAAO,IAAI;AAAA,gBACjE,aACE,gBAAAF;AAAA,kBAACJ;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,aAAY;AAAA,oBACZ,cAAa;AAAA,oBACb,OAAO;AAAA,oBACP,UAAU;AAAA,oBACV,UAAU;AAAA,oBAEV,UAAA;AAAA,sBAAA,gBAAAC,EAACM,GAAU,EAAA,SAAShB,GAAqB,OAAM,uBAC7C,UAAC,gBAAAU,EAAAC,GAAA,EAAK,WAAU,OAAM,SAAQ,WAAU,QAAO,SAAQ,gCAEvD,CAAA,GACF;AAAA,sBACC,gBAAAD,EAAAM,GAAA,EAAU,SAASf,GAAsB,OAAM,uBAC9C,UAAA,gBAAAS,EAACC,GAAK,EAAA,WAAU,OAAM,SAAQ,WAAU,QAAO,YAAW,gCAE1D,CAAA,GACF;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACF;AAAA,gBAEF,YAAY;AAAA,gBACZ,YAAY;AAAA,cAAA;AAAA,YACd;AAAA,UAAA;AAAA,QAAA;AAAA,MAEJ;AAAA,IACF,EAAA,CAAA;AAAA,EAEJ;AACF;"}
@@ -1,4 +1,4 @@
1
- import { ILLUSTRATIONS as e } from "../../../../../assets/illustrations/illustrations.js";
1
+ import { ILLUSTRATIONS as e } from "../../../../assets/illustrations/illustrations.js";
2
2
  const t = [
3
3
  {
4
4
  title: "Personalized Sessions",
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next-steps-constants.js","sources":["../../../../../src/features/parent-dashboard/comps/next-steps/next-steps-constants.ts"],"sourcesContent":["import type { INextStep } from './next-steps-types';\n\nimport { ILLUSTRATIONS } from '../../../../assets/illustrations/illustrations';\n\nexport const nextStepsData: INextStep[] = [\n {\n title: 'Personalized Sessions',\n description: `Your tutor will align sessions to your child's school curriculum and focus areas.`,\n image: ILLUSTRATIONS.KNOWLEDGE_BLUE,\n textColor: 'BLUE_4',\n },\n {\n title: 'Regular Practice',\n description: `Your child will get homework assignments and daily practice through our app.`,\n image: ILLUSTRATIONS.BOOK_CHECKED_ORANGE,\n textColor: 'ORANGE_4',\n },\n {\n title: 'Parent-tutor Conference',\n description: `We'll schedule a conference after 8 sessions to review progress & adjust approach.`,\n image: ILLUSTRATIONS.HANDSHAKE,\n textColor: 'YELLOW_4',\n },\n];\n"],"names":["nextStepsData","ILLUSTRATIONS"],"mappings":";AAIO,MAAMA,IAA6B;AAAA,EACxC;AAAA,IACE,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAOC,EAAc;AAAA,IACrB,WAAW;AAAA,EACb;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAOA,EAAc;AAAA,IACrB,WAAW;AAAA,EACb;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAOA,EAAc;AAAA,IACrB,WAAW;AAAA,EACb;AACF;"}
@@ -1,5 +1,5 @@
1
1
  import i from "styled-components";
2
- import d from "../../../../ui/layout/flex-view.js";
2
+ import d from "../../../ui/layout/flex-view.js";
3
3
  const t = i(d)(
4
4
  ({ theme: o }) => `
5
5
  border-bottom: 1px solid ${o.colors.BLACK_5};