@cuemath/leap 2.9.9-as6 → 2.9.10

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 (307) hide show
  1. package/dist/assets/illustrations/illustrations.js +0 -9
  2. package/dist/assets/illustrations/illustrations.js.map +1 -1
  3. package/dist/assets/line-icons/icons/bin2.js +8 -7
  4. package/dist/assets/line-icons/icons/bin2.js.map +1 -1
  5. package/dist/assets/line-icons/icons/chevron-left.js.map +1 -1
  6. package/dist/assets/lottie/lottie.js +1 -9
  7. package/dist/assets/lottie/lottie.js.map +1 -1
  8. package/dist/constants/api.js +2 -3
  9. package/dist/constants/api.js.map +1 -1
  10. package/dist/features/analytics-events/platform-events-student.js +3 -3
  11. package/dist/features/analytics-events/platform-events-student.js.map +1 -1
  12. package/dist/features/analytics-events/whitelist-events.js +11 -13
  13. package/dist/features/analytics-events/whitelist-events.js.map +1 -1
  14. package/dist/features/chapters/chapters-list/chapter-item/chapter-item-styled.js +33 -99
  15. package/dist/features/chapters/chapters-list/chapter-item/chapter-item-styled.js.map +1 -1
  16. package/dist/features/chapters/chapters-list/chapter-item/chapter-item.js +49 -92
  17. package/dist/features/chapters/chapters-list/chapter-item/chapter-item.js.map +1 -1
  18. package/dist/features/chapters/chapters-list/chapters-list-styled.js +5 -5
  19. package/dist/features/chapters/chapters-list/chapters-list-styled.js.map +1 -1
  20. package/dist/features/chapters/chapters-list/chapters-list.js +70 -64
  21. package/dist/features/chapters/chapters-list/chapters-list.js.map +1 -1
  22. package/dist/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.js +104 -74
  23. package/dist/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.js.map +1 -1
  24. package/dist/features/circle-games/sign-up/comp/circular-steps/circular-steps-styled.js +4 -4
  25. package/dist/features/circle-games/sign-up/comp/circular-steps/circular-steps-styled.js.map +1 -1
  26. package/dist/features/circle-games/sign-up/constants.js +7 -7
  27. package/dist/features/circle-games/sign-up/constants.js.map +1 -1
  28. package/dist/features/communication/pub-sub/constants.js +6 -12
  29. package/dist/features/communication/pub-sub/constants.js.map +1 -1
  30. package/dist/features/journey/comps/coachmark/coachmark-styled.js +8 -26
  31. package/dist/features/journey/comps/coachmark/coachmark-styled.js.map +1 -1
  32. package/dist/features/journey/comps/coachmark/coachmark.js +24 -24
  33. package/dist/features/journey/comps/coachmark/coachmark.js.map +1 -1
  34. package/dist/features/journey/journey-id/journey-id-student.js +1 -1
  35. package/dist/features/journey/journey-id/journey-id-student.js.map +1 -1
  36. package/dist/features/journey/use-journey/journey-context-provider.js +28 -36
  37. package/dist/features/journey/use-journey/journey-context-provider.js.map +1 -1
  38. package/dist/features/journey/use-journey/journey-styled.js +5 -10
  39. package/dist/features/journey/use-journey/journey-styled.js.map +1 -1
  40. package/dist/features/milestone/create/api/goal-submit.js +1 -1
  41. package/dist/features/milestone/create/api/goal-submit.js.map +1 -1
  42. package/dist/features/milestone/create/comps/chapter-item/chapter-item.js +49 -42
  43. package/dist/features/milestone/create/comps/chapter-item/chapter-item.js.map +1 -1
  44. package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step-styled.js +4 -12
  45. package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step-styled.js.map +1 -1
  46. package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js +105 -128
  47. package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js.map +1 -1
  48. package/dist/features/milestone/create/comps/milestone-progress-v2/milestone-progress-v2.js +92 -0
  49. package/dist/features/milestone/create/comps/milestone-progress-v2/milestone-progress-v2.js.map +1 -0
  50. package/dist/features/milestone/create/comps/milestone-progress-v2/styled.js +25 -0
  51. package/dist/features/milestone/create/comps/milestone-progress-v2/styled.js.map +1 -0
  52. package/dist/features/milestone/create/comps/sheets-list/sheets-list-styled.js +20 -14
  53. package/dist/features/milestone/create/comps/sheets-list/sheets-list-styled.js.map +1 -1
  54. package/dist/features/milestone/create/comps/sheets-list/sheets-list.js +50 -26
  55. package/dist/features/milestone/create/comps/sheets-list/sheets-list.js.map +1 -1
  56. package/dist/features/milestone/create/milestone-create.js +43 -49
  57. package/dist/features/milestone/create/milestone-create.js.map +1 -1
  58. package/dist/features/milestone/create/utils/index.js +38 -33
  59. package/dist/features/milestone/create/utils/index.js.map +1 -1
  60. package/dist/features/milestone/edit/comps/edit-milestone-modal/api/get-milestone.js +1 -1
  61. package/dist/features/milestone/edit/comps/edit-milestone-modal/api/get-milestone.js.map +1 -1
  62. package/dist/features/milestone/edit/comps/edit-milestone-modal/api/patch-goal-plan.js +1 -1
  63. package/dist/features/milestone/edit/comps/edit-milestone-modal/api/patch-goal-plan.js.map +1 -1
  64. package/dist/features/milestone/edit/comps/edit-milestone-modal/index.js +53 -51
  65. package/dist/features/milestone/edit/comps/edit-milestone-modal/index.js.map +1 -1
  66. package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-container.js +40 -42
  67. package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-container.js.map +1 -1
  68. package/dist/features/milestone/edit/goal-edit-container.js +62 -64
  69. package/dist/features/milestone/edit/goal-edit-container.js.map +1 -1
  70. package/dist/features/milestone/edit/goal-edit-helpers.js +53 -50
  71. package/dist/features/milestone/edit/goal-edit-helpers.js.map +1 -1
  72. package/dist/features/milestone/edit/milestone-edit-container.js +52 -54
  73. package/dist/features/milestone/edit/milestone-edit-container.js.map +1 -1
  74. package/dist/features/milestone/milestone-list-container/api/get-milestone-resources.js +1 -1
  75. package/dist/features/milestone/milestone-list-container/api/get-milestone-resources.js.map +1 -1
  76. package/dist/features/milestone/milestone-list-container/api/get-milestones.js +17 -9
  77. package/dist/features/milestone/milestone-list-container/api/get-milestones.js.map +1 -1
  78. package/dist/features/milestone/milestone-list-container/api/get-tests-list.js +1 -1
  79. package/dist/features/milestone/milestone-list-container/api/get-tests-list.js.map +1 -1
  80. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js +105 -138
  81. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js.map +1 -1
  82. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/context-menu-helper/menu-element-styled.js +13 -0
  83. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/context-menu-helper/menu-element-styled.js.map +1 -0
  84. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/context-menu-helper/menu-element.js +38 -0
  85. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/context-menu-helper/menu-element.js.map +1 -0
  86. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js +123 -107
  87. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js.map +1 -1
  88. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-info.js +176 -157
  89. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-info.js.map +1 -1
  90. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs-styled.js +10 -24
  91. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs-styled.js.map +1 -1
  92. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js +86 -80
  93. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js.map +1 -1
  94. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-utils.js +22 -10
  95. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-utils.js.map +1 -1
  96. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget-status.js +53 -0
  97. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget-status.js.map +1 -0
  98. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget-styled.js +37 -70
  99. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget-styled.js.map +1 -1
  100. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js +176 -114
  101. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js.map +1 -1
  102. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/outcome/outcome-info.js +25 -0
  103. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/outcome/outcome-info.js.map +1 -0
  104. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/outcome/outcome-rank.js +16 -29
  105. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/outcome/outcome-rank.js.map +1 -1
  106. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/outcome/outcome-styled.js +25 -17
  107. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/outcome/outcome-styled.js.map +1 -1
  108. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/outcome/outcome.js +35 -23
  109. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/outcome/outcome.js.map +1 -1
  110. package/dist/features/milestone/milestone-list-container/milestone-list-container.js +113 -110
  111. package/dist/features/milestone/milestone-list-container/milestone-list-container.js.map +1 -1
  112. package/dist/features/milestone/milestone-resources/resources-assign/api/goal-resource-assign.js +1 -1
  113. package/dist/features/milestone/milestone-resources/resources-assign/api/goal-resource-assign.js.map +1 -1
  114. package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js +8 -8
  115. package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js.map +1 -1
  116. package/dist/features/milestone/milestone-resources/resources-list/resources-list-styled.js +1 -1
  117. package/dist/features/milestone/milestone-resources/resources-list/resources-list-styled.js.map +1 -1
  118. package/dist/features/milestone/milestone-resources/resources-list/resources-list.js +113 -116
  119. package/dist/features/milestone/milestone-resources/resources-list/resources-list.js.map +1 -1
  120. package/dist/features/milestone/milestone-tests/tests-creation/api/test-sheet-assign.js +5 -5
  121. package/dist/features/milestone/milestone-tests/tests-creation/api/test-sheet-assign.js.map +1 -1
  122. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/chapter-selection/chapter-item/chapter-item.js.map +1 -1
  123. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation.js +50 -46
  124. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation.js.map +1 -1
  125. package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item-cta.js +71 -0
  126. package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item-cta.js.map +1 -0
  127. package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item-styled.js +31 -0
  128. package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item-styled.js.map +1 -0
  129. package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item-utils.js +38 -0
  130. package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item-utils.js.map +1 -0
  131. package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item.js +79 -0
  132. package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item.js.map +1 -0
  133. package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheets-list-styled.js +18 -0
  134. package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheets-list-styled.js.map +1 -0
  135. package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheets-list.js +51 -0
  136. package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheets-list.js.map +1 -0
  137. package/dist/features/milestone/milestone-tests/tests-list/tests-list-styled.js +11 -0
  138. package/dist/features/milestone/milestone-tests/tests-list/tests-list-styled.js.map +1 -0
  139. package/dist/features/milestone/milestone-tests/tests-list/tests-list.js +135 -0
  140. package/dist/features/milestone/milestone-tests/tests-list/tests-list.js.map +1 -0
  141. package/dist/features/sheets/resources-list/resource-item/styled.js +1 -1
  142. package/dist/features/sheets/resources-list/resource-item/styled.js.map +1 -1
  143. package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/teacher-actions/teacher-actions-constant.js +3 -4
  144. package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/teacher-actions/teacher-actions-constant.js.map +1 -1
  145. package/dist/features/trial-session/comps/learning-plan/index.js.map +1 -1
  146. package/dist/features/ui/arrow-tooltip/arrow-tooltip.js +29 -30
  147. package/dist/features/ui/arrow-tooltip/arrow-tooltip.js.map +1 -1
  148. package/dist/features/ui/constants/z-index.js +1 -1
  149. package/dist/features/ui/constants/z-index.js.map +1 -1
  150. package/dist/features/ui/context-menu/context-menu-styled.js +14 -28
  151. package/dist/features/ui/context-menu/context-menu-styled.js.map +1 -1
  152. package/dist/features/ui/context-menu/context-menu.js +15 -30
  153. package/dist/features/ui/context-menu/context-menu.js.map +1 -1
  154. package/dist/features/ui/lottie-animation/lottie-animation.js +13 -19
  155. package/dist/features/ui/lottie-animation/lottie-animation.js.map +1 -1
  156. package/dist/features/ui/theme/button.js +107 -22
  157. package/dist/features/ui/theme/button.js.map +1 -1
  158. package/dist/features/worksheet/worksheet/hooks/use-create-imperative-handle.js +96 -78
  159. package/dist/features/worksheet/worksheet/hooks/use-create-imperative-handle.js.map +1 -1
  160. package/dist/features/worksheet/worksheet/worksheet-question/learnosity-question.js +79 -47
  161. package/dist/features/worksheet/worksheet/worksheet-question/learnosity-question.js.map +1 -1
  162. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js +150 -147
  163. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js.map +1 -1
  164. package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
  165. package/dist/features/worksheet/worksheet/worksheet.js +325 -300
  166. package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
  167. package/dist/index.d.ts +46 -351
  168. package/dist/index.js +471 -503
  169. package/dist/index.js.map +1 -1
  170. package/package.json +1 -1
  171. package/dist/assets/line-icons/icons/alarm.js +0 -41
  172. package/dist/assets/line-icons/icons/alarm.js.map +0 -1
  173. package/dist/assets/line-icons/icons/dart.js +0 -23
  174. package/dist/assets/line-icons/icons/dart.js.map +0 -1
  175. package/dist/assets/line-icons/icons/exclamation.js +0 -26
  176. package/dist/assets/line-icons/icons/exclamation.js.map +0 -1
  177. package/dist/assets/line-icons/icons/home2.js +0 -25
  178. package/dist/assets/line-icons/icons/home2.js.map +0 -1
  179. package/dist/assets/line-icons/icons/important.js +0 -23
  180. package/dist/assets/line-icons/icons/important.js.map +0 -1
  181. package/dist/assets/line-icons/icons/puzzle.js +0 -25
  182. package/dist/assets/line-icons/icons/puzzle.js.map +0 -1
  183. package/dist/assets/line-icons/icons/recap.js +0 -32
  184. package/dist/assets/line-icons/icons/recap.js.map +0 -1
  185. package/dist/assets/line-icons/icons/skip-colored.js +0 -43
  186. package/dist/assets/line-icons/icons/skip-colored.js.map +0 -1
  187. package/dist/assets/line-icons/icons/status.js +0 -41
  188. package/dist/assets/line-icons/icons/status.js.map +0 -1
  189. package/dist/assets/line-icons/icons/testtube.js +0 -33
  190. package/dist/assets/line-icons/icons/testtube.js.map +0 -1
  191. package/dist/features/chapters-v2/api/chapter.js +0 -10
  192. package/dist/features/chapters-v2/api/chapter.js.map +0 -1
  193. package/dist/features/chapters-v2/chapter-details/block-sections/block-section-view.js +0 -112
  194. package/dist/features/chapters-v2/chapter-details/block-sections/block-section-view.js.map +0 -1
  195. package/dist/features/chapters-v2/chapter-details/block-sections/block-sections-styled.js +0 -35
  196. package/dist/features/chapters-v2/chapter-details/block-sections/block-sections-styled.js.map +0 -1
  197. package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js +0 -83
  198. package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js.map +0 -1
  199. package/dist/features/chapters-v2/chapter-details/chapter-banner/chapter-banner-styled.js +0 -90
  200. package/dist/features/chapters-v2/chapter-details/chapter-banner/chapter-banner-styled.js.map +0 -1
  201. package/dist/features/chapters-v2/chapter-details/chapter-banner/chapter-banner.js +0 -98
  202. package/dist/features/chapters-v2/chapter-details/chapter-banner/chapter-banner.js.map +0 -1
  203. package/dist/features/chapters-v2/chapter-details/chapter-details-styled.js +0 -51
  204. package/dist/features/chapters-v2/chapter-details/chapter-details-styled.js.map +0 -1
  205. package/dist/features/chapters-v2/chapter-details/chapter-details.js +0 -129
  206. package/dist/features/chapters-v2/chapter-details/chapter-details.js.map +0 -1
  207. package/dist/features/chapters-v2/comps/node-card/border-path-animation.js +0 -13
  208. package/dist/features/chapters-v2/comps/node-card/border-path-animation.js.map +0 -1
  209. package/dist/features/chapters-v2/comps/node-card/node-card-styled.js +0 -159
  210. package/dist/features/chapters-v2/comps/node-card/node-card-styled.js.map +0 -1
  211. package/dist/features/chapters-v2/comps/node-card/node-card-tags.js +0 -16
  212. package/dist/features/chapters-v2/comps/node-card/node-card-tags.js.map +0 -1
  213. package/dist/features/chapters-v2/comps/node-card/node-card.js +0 -12
  214. package/dist/features/chapters-v2/comps/node-card/node-card.js.map +0 -1
  215. package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-option.js +0 -30
  216. package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-option.js.map +0 -1
  217. package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-options-styled.js +0 -32
  218. package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-options-styled.js.map +0 -1
  219. package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-options.js +0 -9
  220. package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-options.js.map +0 -1
  221. package/dist/features/chapters-v2/comps/node-card/student-actions/student-actions.js +0 -189
  222. package/dist/features/chapters-v2/comps/node-card/student-actions/student-actions.js.map +0 -1
  223. package/dist/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.js +0 -194
  224. package/dist/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.js.map +0 -1
  225. package/dist/features/chapters-v2/comps/tag/tag-styled.js +0 -13
  226. package/dist/features/chapters-v2/comps/tag/tag-styled.js.map +0 -1
  227. package/dist/features/chapters-v2/comps/tag/tag.js +0 -28
  228. package/dist/features/chapters-v2/comps/tag/tag.js.map +0 -1
  229. package/dist/features/chapters-v2/constants/block-constants.js +0 -20
  230. package/dist/features/chapters-v2/constants/block-constants.js.map +0 -1
  231. package/dist/features/chapters-v2/constants/node-constants.js +0 -14
  232. package/dist/features/chapters-v2/constants/node-constants.js.map +0 -1
  233. package/dist/features/chapters-v2/utils/index.js +0 -38
  234. package/dist/features/chapters-v2/utils/index.js.map +0 -1
  235. package/dist/features/chapters-v2/utils/node-card-utils.js +0 -177
  236. package/dist/features/chapters-v2/utils/node-card-utils.js.map +0 -1
  237. package/dist/features/homework/card-menu-option.js +0 -28
  238. package/dist/features/homework/card-menu-option.js.map +0 -1
  239. package/dist/features/homework/card-menu-options.js +0 -22
  240. package/dist/features/homework/card-menu-options.js.map +0 -1
  241. package/dist/features/homework/card-title.js +0 -16
  242. package/dist/features/homework/card-title.js.map +0 -1
  243. package/dist/features/homework/homework-analytics-events.js +0 -10
  244. package/dist/features/homework/homework-analytics-events.js.map +0 -1
  245. package/dist/features/homework/homework-card-view.js +0 -143
  246. package/dist/features/homework/homework-card-view.js.map +0 -1
  247. package/dist/features/homework/homework-card.js +0 -245
  248. package/dist/features/homework/homework-card.js.map +0 -1
  249. package/dist/features/homework/hw-card-list/api/get-homeworks.js +0 -10
  250. package/dist/features/homework/hw-card-list/api/get-homeworks.js.map +0 -1
  251. package/dist/features/homework/hw-card-list/hw-card-list-styled.js +0 -63
  252. package/dist/features/homework/hw-card-list/hw-card-list-styled.js.map +0 -1
  253. package/dist/features/homework/hw-card-list/hw-card-list-view.js +0 -157
  254. package/dist/features/homework/hw-card-list/hw-card-list-view.js.map +0 -1
  255. package/dist/features/homework/hw-card-list/hw-card-list.js +0 -67
  256. package/dist/features/homework/hw-card-list/hw-card-list.js.map +0 -1
  257. package/dist/features/homework/node-progress.js +0 -29
  258. package/dist/features/homework/node-progress.js.map +0 -1
  259. package/dist/features/homework/styles.js +0 -130
  260. package/dist/features/homework/styles.js.map +0 -1
  261. package/dist/features/homework/utils.js +0 -48
  262. package/dist/features/homework/utils.js.map +0 -1
  263. package/dist/features/journey/hooks/use-chapter-journey.js +0 -194
  264. package/dist/features/journey/hooks/use-chapter-journey.js.map +0 -1
  265. package/dist/features/journey/hooks/use-home-page-journey.js +0 -279
  266. package/dist/features/journey/hooks/use-home-page-journey.js.map +0 -1
  267. package/dist/features/journey/journey-id/journey-id-teacher.js +0 -5
  268. package/dist/features/journey/journey-id/journey-id-teacher.js.map +0 -1
  269. package/dist/features/journey/mocks/chapter-page-journey-mock-data.js +0 -587
  270. package/dist/features/journey/mocks/chapter-page-journey-mock-data.js.map +0 -1
  271. package/dist/features/journey/mocks/home-page-homwworks-mock.js +0 -268
  272. package/dist/features/journey/mocks/home-page-homwworks-mock.js.map +0 -1
  273. package/dist/features/journey/mocks/recent-chapters-mock.js +0 -531
  274. package/dist/features/journey/mocks/recent-chapters-mock.js.map +0 -1
  275. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js +0 -165
  276. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js.map +0 -1
  277. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view-styled.js +0 -25
  278. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view-styled.js.map +0 -1
  279. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js +0 -87
  280. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js.map +0 -1
  281. package/dist/features/recent-chapters/api/get-recent-chapters.js +0 -9
  282. package/dist/features/recent-chapters/api/get-recent-chapters.js.map +0 -1
  283. package/dist/features/recent-chapters/recent-chapters-styled.js +0 -16
  284. package/dist/features/recent-chapters/recent-chapters-styled.js.map +0 -1
  285. package/dist/features/recent-chapters/recent-chapters.js +0 -39
  286. package/dist/features/recent-chapters/recent-chapters.js.map +0 -1
  287. package/dist/features/sheet-v2/resource-list/resource-list.js +0 -45
  288. package/dist/features/sheet-v2/resource-list/resource-list.js.map +0 -1
  289. package/dist/node_modules/date-fns/differenceInDays.js +0 -17
  290. package/dist/node_modules/date-fns/differenceInDays.js.map +0 -1
  291. package/dist/static/chapter-header-bg-2.c8d96894.svg +0 -1
  292. package/dist/static/competitive-arena.b9c40801.json +0 -1
  293. package/dist/static/learn.71b13323.json +0 -1
  294. package/dist/static/node-custom-test-bg.d3b757be.svg +0 -1
  295. package/dist/static/node-learn-bg.b61f815c.svg +0 -1
  296. package/dist/static/node-practice-bg.16cbaf2a.svg +0 -1
  297. package/dist/static/node-project-bg.e6a33e28.svg +0 -1
  298. package/dist/static/node-puzzle-bg.3422135c.svg +0 -1
  299. package/dist/static/node-recap-bg.546154e4.svg +0 -1
  300. package/dist/static/node-test-prep-bg.42c0b9c4.svg +0 -1
  301. package/dist/static/node-video-bg.3df3f73a.svg +0 -1
  302. package/dist/static/practice.158dd488.json +0 -1
  303. package/dist/static/project.eb665827.json +0 -1
  304. package/dist/static/puzzle.b298c7e4.json +0 -1
  305. package/dist/static/recap.0dd2c1e2.json +0 -1
  306. package/dist/static/test.803d6036.json +0 -1
  307. package/dist/static/video.b41451e2.json +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"button.js","sources":["../../../../src/features/ui/theme/button.ts"],"sourcesContent":["import type {\n IButtonSizeConfig,\n TButtonSizes,\n IButtonVariantConfig,\n TButtonVariants,\n} from '../types';\n\ninterface IGetButtonConfig {\n (gutter: number): {\n sizes: Record<TButtonSizes, IButtonSizeConfig>;\n variants: Record<TButtonVariants, IButtonVariantConfig>;\n };\n}\n\nconst getButtonConfig: IGetButtonConfig = (gutter: number) => {\n const sizes: Record<TButtonSizes, IButtonSizeConfig> = {\n xsmall: {\n height: gutter * 2,\n paddingHorizontal: gutter * (1 + 0.375),\n textVariant: 'ub3-bold',\n borderWidth: 1,\n iconSize: gutter,\n iconPadding: gutter * 0.25,\n loaderSize: gutter * 1.25,\n },\n small: {\n height: gutter * 2.5,\n paddingHorizontal: gutter * (1 + 0.625),\n textVariant: 'ub2-bold',\n borderWidth: 1,\n iconSize: gutter * 1.25,\n iconPadding: gutter * 0.375,\n loaderSize: gutter * 1.5,\n },\n regular: {\n height: gutter * 3,\n paddingHorizontal: gutter * (1 + 0.875),\n textVariant: 'ub1-bold',\n borderWidth: 1,\n iconSize: gutter * 1.5,\n iconPadding: gutter * 0.5,\n loaderSize: gutter * 1.75,\n },\n medium: {\n height: gutter * 3.5,\n paddingHorizontal: gutter * (1 + 1.125),\n textVariant: 'ub1-bold',\n borderWidth: 1.5,\n iconSize: gutter * 1.5,\n iconPadding: gutter * 0.5,\n loaderSize: gutter * 2,\n },\n large: {\n height: gutter * 4,\n paddingHorizontal: gutter * (1 + 1.375),\n textVariant: 'ub1-bold',\n borderWidth: 2,\n iconSize: gutter * 1.5,\n iconPadding: gutter * 0.5,\n loaderSize: gutter * 2.25,\n },\n };\n\n const variants: Record<TButtonVariants, IButtonVariantConfig> = {\n 'primary': {\n backgroundColorName: {\n inactive: 'YELLOW_4',\n active: 'BLACK',\n disabled: 'GREY_3',\n },\n colorName: {\n inactive: 'BLACK',\n active: 'WHITE',\n disabled: 'BLACK',\n },\n borderColorName: {\n inactive: 'BLACK',\n active: 'BLACK',\n disabled: 'GREY_3',\n },\n },\n 'secondary': {\n backgroundColorName: {\n inactive: 'WHITE',\n active: 'BLACK',\n disabled: 'GREY_3',\n },\n colorName: {\n inactive: 'BLACK',\n active: 'WHITE',\n disabled: 'BLACK',\n },\n borderColorName: {\n inactive: 'BLACK',\n active: 'BLACK',\n disabled: 'GREY_3',\n },\n },\n 'tertiary': {\n backgroundColorName: {\n inactive: 'RED',\n active: 'BLACK',\n disabled: 'GREY_3',\n },\n colorName: {\n inactive: 'WHITE',\n active: 'WHITE',\n disabled: 'BLACK',\n },\n borderColorName: {\n inactive: 'BLACK',\n active: 'BLACK',\n disabled: 'GREY_3',\n },\n },\n 'secondary-gray': {\n backgroundColorName: {\n inactive: 'WHITE',\n active: 'WHITE_4',\n disabled: 'GREY_3',\n },\n colorName: {\n inactive: 'BLACK',\n active: 'BLACK',\n disabled: 'BLACK',\n },\n borderColorName: {\n inactive: 'BLACK',\n active: 'BLACK',\n disabled: 'GREY_3',\n },\n },\n };\n\n return { sizes, variants };\n};\n\nexport default getButtonConfig;\n"],"names":["getButtonConfig","gutter"],"mappings":"AAcM,MAAAA,IAAoC,CAACC,OAwHlC,EAAE,OAvH8C;AAAA,EACrD,QAAQ;AAAA,IACN,QAAQA,IAAS;AAAA,IACjB,mBAAmBA,IAAU;AAAA,IAC7B,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAUA;AAAA,IACV,aAAaA,IAAS;AAAA,IACtB,YAAYA,IAAS;AAAA,EACvB;AAAA,EACA,OAAO;AAAA,IACL,QAAQA,IAAS;AAAA,IACjB,mBAAmBA,IAAU;AAAA,IAC7B,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAUA,IAAS;AAAA,IACnB,aAAaA,IAAS;AAAA,IACtB,YAAYA,IAAS;AAAA,EACvB;AAAA,EACA,SAAS;AAAA,IACP,QAAQA,IAAS;AAAA,IACjB,mBAAmBA,IAAU;AAAA,IAC7B,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAUA,IAAS;AAAA,IACnB,aAAaA,IAAS;AAAA,IACtB,YAAYA,IAAS;AAAA,EACvB;AAAA,EACA,QAAQ;AAAA,IACN,QAAQA,IAAS;AAAA,IACjB,mBAAmBA,IAAU;AAAA,IAC7B,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAUA,IAAS;AAAA,IACnB,aAAaA,IAAS;AAAA,IACtB,YAAYA,IAAS;AAAA,EACvB;AAAA,EACA,OAAO;AAAA,IACL,QAAQA,IAAS;AAAA,IACjB,mBAAmBA,IAAU;AAAA,IAC7B,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAUA,IAAS;AAAA,IACnB,aAAaA,IAAS;AAAA,IACtB,YAAYA,IAAS;AAAA,EACvB;AAAA,GA0Ec,UAvEgD;AAAA,EAC9D,SAAW;AAAA,IACT,qBAAqB;AAAA,MACnB,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ;AAAA,IACA,WAAW;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ;AAAA,IACA,iBAAiB;AAAA,MACf,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX,qBAAqB;AAAA,MACnB,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ;AAAA,IACA,WAAW;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ;AAAA,IACA,iBAAiB;AAAA,MACf,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA,UAAY;AAAA,IACV,qBAAqB;AAAA,MACnB,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ;AAAA,IACA,WAAW;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ;AAAA,IACA,iBAAiB;AAAA,MACf,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA,kBAAkB;AAAA,IAChB,qBAAqB;AAAA,MACnB,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ;AAAA,IACA,WAAW;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ;AAAA,IACA,iBAAiB;AAAA,MACf,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ;AAAA,EACF;AAAA;"}
1
+ {"version":3,"file":"button.js","sources":["../../../../src/features/ui/theme/button.ts"],"sourcesContent":["import type {\n IButtonSizeConfig,\n TButtonSizes,\n IButtonVariantConfig,\n TButtonVariants,\n} from '../types';\n\ninterface IGetButtonConfig {\n (gutter: number): {\n sizes: Record<TButtonSizes, IButtonSizeConfig>;\n variants: Record<TButtonVariants, IButtonVariantConfig>;\n };\n}\n\nconst getButtonConfig: IGetButtonConfig = (gutter: number) => {\n const sizes: Record<TButtonSizes, IButtonSizeConfig> = {\n xsmall: {\n height: gutter * 2,\n paddingHorizontal: gutter * (1 + 0.375),\n textVariant: 'ub3-bold',\n borderWidth: 1,\n iconSize: gutter,\n iconPadding: gutter * 0.25,\n loaderSize: gutter * 1.25,\n },\n small: {\n height: gutter * 2.5,\n paddingHorizontal: gutter * (1 + 0.625),\n textVariant: 'ub2-bold',\n borderWidth: 1,\n iconSize: gutter * 1.25,\n iconPadding: gutter * 0.375,\n loaderSize: gutter * 1.5,\n },\n regular: {\n height: gutter * 3,\n paddingHorizontal: gutter * (1 + 0.875),\n textVariant: 'ub1-bold',\n borderWidth: 1,\n iconSize: gutter * 1.5,\n iconPadding: gutter * 0.5,\n loaderSize: gutter * 1.75,\n },\n medium: {\n height: gutter * 3.5,\n paddingHorizontal: gutter * (1 + 1.125),\n textVariant: 'ub1-bold',\n borderWidth: 1.5,\n iconSize: gutter * 1.5,\n iconPadding: gutter * 0.5,\n loaderSize: gutter * 2,\n },\n large: {\n height: gutter * 4,\n paddingHorizontal: gutter * (1 + 1.375),\n textVariant: 'ub1-bold',\n borderWidth: 2,\n iconSize: gutter * 1.5,\n iconPadding: gutter * 0.5,\n loaderSize: gutter * 2.25,\n },\n };\n\n const variants: Record<TButtonVariants, IButtonVariantConfig> = {\n primary: {\n backgroundColorName: {\n inactive: 'YELLOW_4',\n active: 'BLACK',\n disabled: 'GREY_3',\n },\n colorName: {\n inactive: 'BLACK',\n active: 'WHITE',\n disabled: 'BLACK',\n },\n borderColorName: {\n inactive: 'BLACK',\n active: 'BLACK',\n disabled: 'GREY_3',\n },\n },\n secondary: {\n backgroundColorName: {\n inactive: 'WHITE',\n active: 'BLACK',\n disabled: 'GREY_3',\n },\n colorName: {\n inactive: 'BLACK',\n active: 'WHITE',\n disabled: 'BLACK',\n },\n borderColorName: {\n inactive: 'BLACK',\n active: 'BLACK',\n disabled: 'GREY_3',\n },\n },\n tertiary: {\n backgroundColorName: {\n inactive: 'WHITE',\n active: 'RED',\n disabled: 'GREY_3',\n },\n colorName: {\n inactive: 'RED',\n active: 'WHITE',\n disabled: 'BLACK',\n },\n borderColorName: {\n inactive: 'RED',\n active: 'RED',\n disabled: 'GREY_3',\n },\n },\n // 'yellow': {\n // backgroundColorName: {\n // inactive: 'YELLOW_4',\n // active: 'BLACK_4',\n // disabled: 'BLACK_T_35',\n // },\n // borderColorName: {\n // inactive: 'BLACK_4',\n // active: 'BLACK_4',\n // disabled: 'BLACK_T_35',\n // },\n // colorName: {\n // inactive: 'BLACK_4',\n // active: 'WHITE_4',\n // disabled: 'BLACK_T_35',\n // },\n // },\n // 'yellow-dark': {\n // backgroundColorName: {\n // inactive: 'YELLOW_4',\n // active: 'WHITE_4',\n // disabled: 'WHITE_T_40',\n // },\n // borderColorName: {\n // inactive: 'BLACK_4',\n // active: 'BLACK_4',\n // disabled: 'WHITE_T_40',\n // },\n // colorName: {\n // inactive: 'BLACK_4',\n // active: 'BLACK_4',\n // disabled: 'WHITE_T_40',\n // },\n // },\n // 'white': {\n // backgroundColorName: {\n // inactive: 'WHITE_1',\n // active: 'BLACK_T_35',\n // disabled: 'BLACK_T_35',\n // },\n // borderColorName: {\n // inactive: 'BLACK_4',\n // active: 'BLACK_4',\n // disabled: 'BLACK_T_35',\n // },\n // colorName: {\n // inactive: 'BLACK_4',\n // active: 'BLACK_4',\n // disabled: 'BLACK_T_35',\n // },\n // },\n // 'white-dark': {\n // backgroundColorName: {\n // inactive: 'WHITE_4',\n // active: 'WHITE_T_70',\n // disabled: 'WHITE_T_40',\n // },\n // borderColorName: {\n // inactive: 'BLACK_4',\n // active: 'BLACK_4',\n // disabled: 'WHITE_T_40',\n // },\n // colorName: {\n // inactive: 'BLACK_4',\n // active: 'BLACK_4',\n // disabled: 'WHITE_T_40',\n // },\n // },\n // 'black': {\n // backgroundColorName: {\n // inactive: 'BLACK_4',\n // active: 'BLACK_T_60',\n // disabled: 'BLACK_T_35',\n // },\n // borderColorName: {\n // inactive: 'BLACK_4',\n // active: 'BLACK_4',\n // disabled: 'BLACK_T_35',\n // },\n // colorName: {\n // inactive: 'WHITE_4',\n // active: 'WHITE_4',\n // disabled: 'BLACK_T_35',\n // },\n // },\n // 'black-dark': {\n // backgroundColorName: {\n // inactive: 'BLACK_4',\n // active: 'WHITE_T_40',\n // disabled: 'WHITE_T_40',\n // },\n // borderColorName: {\n // inactive: 'WHITE_4',\n // active: 'WHITE_4',\n // disabled: 'WHITE_T_40',\n // },\n // colorName: {\n // inactive: 'WHITE_4',\n // active: 'WHITE_4',\n // disabled: 'WHITE_T_40',\n // },\n // },\n };\n\n return { sizes, variants };\n};\n\nexport default getButtonConfig;\n"],"names":["getButtonConfig","gutter"],"mappings":"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"}
@@ -1,63 +1,63 @@
1
- import { useCallback as W, useImperativeHandle as J } from "react";
2
- import K from "../../../hooks/use-audio-player.js";
3
- import { TEACHER_VALIDATION_AUDIO_LIST as X } from "../constants.js";
4
- import { getQuestionMetadata as S, isConceptIntroWidget as Y } from "../worksheet-helpers.js";
5
- import { QUESTIONS_RATING as Z, QUESTION_TAGS as x } from "../worksheet-types.js";
6
- const u = (z, {
7
- behavior: F,
8
- questions: d,
9
- setResponses: A,
10
- onResponseChange: P,
11
- onBulkResponsesChange: i,
12
- getTimeSpentOnQuestion: w
1
+ import { useCallback as D, useImperativeHandle as K } from "react";
2
+ import X from "../../../hooks/use-audio-player.js";
3
+ import { TEACHER_VALIDATION_AUDIO_LIST as Y } from "../constants.js";
4
+ import { getQuestionMetadata as Q, isConceptIntroWidget as Z } from "../worksheet-helpers.js";
5
+ import { QUESTIONS_RATING as v, QUESTION_TAGS as x } from "../worksheet-types.js";
6
+ const h = (F, {
7
+ behavior: J,
8
+ questions: r,
9
+ setResponses: S,
10
+ onResponseChange: L,
11
+ onBulkResponsesChange: d,
12
+ getTimeSpentOnQuestion: W
13
13
  }) => {
14
- const { navigationMode: L } = F, H = K(X), V = W(
15
- (_, a, Q) => {
16
- H("VALIDATE");
17
- const c = w(_);
18
- A((t) => {
19
- var M, $;
20
- const m = d.findIndex((E) => E.response_id === _), r = d[m], f = {
21
- ...S(d, _),
14
+ const { navigationMode: w } = J, M = X(Y), H = D(
15
+ (_, a, T) => {
16
+ M("VALIDATE");
17
+ const c = W(_);
18
+ S((t) => {
19
+ var $, j;
20
+ const m = r.findIndex((E) => E.response_id === _), i = r[m], f = {
21
+ ...Q(r, _),
22
22
  ...t[_],
23
23
  validatedByTeacher: !0,
24
- rating: a ? Z[a] : void 0,
24
+ rating: a ? v[a] : void 0,
25
25
  timeSpent: c
26
26
  };
27
- if (L === "ADAPTIVE") {
28
- if ((M = t[_]) != null && M.validatedByTeacher)
27
+ if (w === "ADAPTIVE") {
28
+ if (($ = t[_]) != null && $.validatedByTeacher)
29
29
  return t;
30
- const E = r.item_tags_map[x.TRIAL_TOPIC], O = r.item_tags_map[x.QUESTION_CODE], y = O && O.length < 3 ? `${O}${a}` : "Q", I = d.findIndex((T, U) => U <= m ? !1 : y !== "Q" ? T.item_tags_map[x.TRIAL_TOPIC] === E && T.item_tags_map[x.QUESTION_CODE] === y : T.item_tags_map[x.TRIAL_TOPIC] !== E), N = {
30
+ const E = i.item_tags_map[x.TRIAL_TOPIC], O = i.item_tags_map[x.QUESTION_CODE], y = O && O.length < 3 ? `${O}${a}` : "Q", I = r.findIndex((A, U) => U <= m ? !1 : y !== "Q" ? A.item_tags_map[x.TRIAL_TOPIC] === E && A.item_tags_map[x.QUESTION_CODE] === y : A.item_tags_map[x.TRIAL_TOPIC] !== E), N = {
31
31
  [_]: f,
32
- ...d.reduce(
33
- (T, U, j) => (j <= m || I > -1 && j >= I || (T[U.response_id] = {
34
- ...S(d, U.response_id),
32
+ ...r.reduce(
33
+ (A, U, z) => (z <= m || I > -1 && z >= I || (A[U.response_id] = {
34
+ ...Q(r, U.response_id),
35
35
  ...t[U.response_id],
36
36
  assignStatus: "skipped"
37
- }), T),
37
+ }), A),
38
38
  {}
39
39
  )
40
- }, D = ($ = d[I]) == null ? void 0 : $.response_id;
41
- return D ? i == null || i({
40
+ }, P = (j = r[I]) == null ? void 0 : j.response_id;
41
+ return P ? d == null || d({
42
42
  ...N,
43
- [D]: {
44
- ...t[D],
45
- ...S(d, D),
43
+ [P]: {
44
+ ...t[P],
45
+ ...Q(r, P),
46
46
  assignStatus: void 0
47
47
  }
48
- }) : i == null || i(N), {
48
+ }) : d == null || d(N), {
49
49
  ...t,
50
50
  ...N
51
51
  };
52
52
  }
53
- if (Q) {
54
- const { item_reference: E } = r, O = {
53
+ if (T) {
54
+ const { item_reference: E } = i, O = {
55
55
  [_]: f,
56
- ...d.reduce(
56
+ ...r.reduce(
57
57
  (y, I) => {
58
58
  var N;
59
- return I.response_id !== r.response_id && I.item_reference === E && !((N = t[I.response_id]) != null && N.validatedByTeacher) && (y[I.response_id] = {
60
- ...S(d, I.response_id),
59
+ return I.response_id !== i.response_id && I.item_reference === E && !((N = t[I.response_id]) != null && N.validatedByTeacher) && (y[I.response_id] = {
60
+ ...Q(r, I.response_id),
61
61
  ...t[I.response_id],
62
62
  assignStatus: "skipped"
63
63
  }), y;
@@ -65,7 +65,7 @@ const u = (z, {
65
65
  {}
66
66
  )
67
67
  };
68
- return i == null || i({
68
+ return d == null || d({
69
69
  ...t,
70
70
  ...O
71
71
  }), {
@@ -73,13 +73,13 @@ const u = (z, {
73
73
  ...O
74
74
  };
75
75
  }
76
- return L === "CURRENT" && r.item_number === 0 ? i == null || i({
76
+ return w === "CURRENT" && i.item_number === 0 ? d == null || d({
77
77
  ...t,
78
78
  [_]: f
79
- }) : P == null || P({
79
+ }) : L == null || L({
80
80
  responseId: _,
81
81
  response: f,
82
- question: r,
82
+ question: i,
83
83
  isNewAttempt: !1
84
84
  }), {
85
85
  ...t,
@@ -88,79 +88,97 @@ const u = (z, {
88
88
  });
89
89
  },
90
90
  [
91
+ W,
91
92
  w,
92
- L,
93
- i,
94
- P,
95
- H,
96
93
  d,
97
- A
94
+ L,
95
+ M,
96
+ r,
97
+ S
98
98
  ]
99
- ), b = W(
99
+ ), V = D(
100
100
  (_) => {
101
- A((a) => {
102
- const Q = d.filter(
101
+ S((a) => {
102
+ const T = r.filter(
103
103
  (t) => {
104
104
  var m;
105
105
  return _.startsWith("advanced-") ? (m = t.item_type) == null ? void 0 : m.startsWith("advanced-") : t.item_type === _;
106
106
  }
107
107
  ), c = {};
108
- return Q.length > 0 ? (Q.forEach((t) => {
108
+ return T.length > 0 ? (T.forEach((t) => {
109
109
  c[t.response_id] = {
110
- ...S(d, t.response_id),
110
+ ...Q(r, t.response_id),
111
111
  ...a[t.response_id],
112
112
  assignStatus: "assigned"
113
113
  };
114
- }), i == null || i(c), {
114
+ }), d == null || d(c), {
115
115
  ...a,
116
116
  ...c
117
117
  }) : a;
118
118
  });
119
119
  },
120
- [i, d, A]
121
- ), G = W(
120
+ [d, r, S]
121
+ ), b = D(
122
122
  (_) => {
123
- A((a) => {
124
- const Q = d.filter(
123
+ S((a) => {
124
+ const T = r.filter(
125
125
  (m) => {
126
- var r;
127
- return _.startsWith("advanced-") ? (r = m.item_type) == null ? void 0 : r.startsWith("advanced-") : m.item_type === _;
126
+ var i;
127
+ return _.startsWith("advanced-") ? (i = m.item_type) == null ? void 0 : i.startsWith("advanced-") : m.item_type === _;
128
128
  }
129
129
  ), c = {}, t = [];
130
- return Q.length > 0 ? (Q.forEach((r) => {
131
- const f = a[r.response_id];
132
- f != null && f.validatedByTeacher ? t.push(r) : c[r.response_id] = {
133
- ...S(d, r.response_id),
130
+ return T.length > 0 ? (T.forEach((i) => {
131
+ const f = a[i.response_id];
132
+ f != null && f.validatedByTeacher ? t.push(i) : c[i.response_id] = {
133
+ ...Q(r, i.response_id),
134
134
  ...f,
135
135
  assignStatus: "skipped"
136
136
  };
137
137
  }), t.some(
138
- ({ instructor_stimulus: r }) => !(r === "SystemIntro" || Y(r))
139
- ) || t.forEach((r) => {
140
- c[r.response_id] = {
141
- ...S(d, r.response_id),
142
- ...a[r.response_id],
138
+ ({ instructor_stimulus: i }) => !(i === "SystemIntro" || Z(i))
139
+ ) || t.forEach((i) => {
140
+ c[i.response_id] = {
141
+ ...Q(r, i.response_id),
142
+ ...a[i.response_id],
143
143
  assignStatus: "skipped"
144
144
  };
145
- }), i == null || i(c), {
145
+ }), d == null || d(c), {
146
146
  ...a,
147
147
  ...c
148
148
  }) : a;
149
149
  });
150
150
  },
151
- [i, d, A]
151
+ [d, r, S]
152
+ ), G = D(
153
+ (_, a, T) => {
154
+ const c = a === "SIMULATION" ? "simState" : void 0;
155
+ c && S((t) => {
156
+ if (!r.find((f) => f.response_id === _)) return t;
157
+ const i = {
158
+ ...Q(r, _),
159
+ ...t[_],
160
+ [c]: T
161
+ };
162
+ return {
163
+ ...t,
164
+ [_]: i
165
+ };
166
+ });
167
+ },
168
+ [r, S]
152
169
  );
153
- J(
154
- z,
170
+ K(
171
+ F,
155
172
  () => ({
156
- validateQuestion: V,
157
- assignOptionalItems: b,
158
- skipOptionalItems: G
173
+ validateQuestion: H,
174
+ assignOptionalItems: V,
175
+ skipOptionalItems: b,
176
+ updateMediaState: G
159
177
  }),
160
- [b, G, V]
178
+ [V, b, G, H]
161
179
  );
162
180
  };
163
181
  export {
164
- u as default
182
+ h as default
165
183
  };
166
184
  //# sourceMappingURL=use-create-imperative-handle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-create-imperative-handle.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-create-imperative-handle.ts"],"sourcesContent":["import type { Dispatch, ForwardedRef, SetStateAction } from 'react';\n\nimport { useCallback, useImperativeHandle } from 'react';\n\nimport useAudioPlayer from '../../../hooks/use-audio-player';\nimport { TEACHER_VALIDATION_AUDIO_LIST } from '../constants';\nimport { getQuestionMetadata, isConceptIntroWidget } from '../worksheet-helpers';\nimport {\n QUESTION_TAGS,\n QUESTIONS_RATING,\n type IWorksheetBehavior,\n type IWorksheetProps,\n type IWorksheetQuestion,\n type IWorksheetRef,\n type IWorksheetResponse,\n} from '../worksheet-types';\n\ninterface IUseCreateImperativeHandle {\n (\n ref: ForwardedRef<IWorksheetRef>,\n options: {\n behavior: IWorksheetBehavior;\n questions: IWorksheetQuestion[];\n setResponses: Dispatch<SetStateAction<Record<string, IWorksheetResponse>>>;\n onResponseChange: IWorksheetProps['onResponseChange'];\n onBulkResponsesChange: IWorksheetProps['onBulkResponsesChange'];\n getTimeSpentOnQuestion: (questionId: string) => number;\n },\n ): void;\n}\n\nconst useCreateImperativeHandle: IUseCreateImperativeHandle = (\n ref,\n {\n behavior,\n questions,\n setResponses,\n onResponseChange,\n onBulkResponsesChange,\n getTimeSpentOnQuestion,\n },\n) => {\n const { navigationMode } = behavior;\n const playNotifSound = useAudioPlayer(TEACHER_VALIDATION_AUDIO_LIST);\n const validateQuestion = useCallback<IWorksheetRef['validateQuestion']>(\n (questionId, rating, skipRemainingQuestions) => {\n playNotifSound('VALIDATE');\n const timeSpentOnQuestion = getTimeSpentOnQuestion(questionId);\n\n setResponses(prevResponses => {\n const questionIndex = questions.findIndex(q => q.response_id === questionId);\n const question = questions[questionIndex]!;\n\n const newResponse = {\n ...getQuestionMetadata(questions, questionId),\n ...prevResponses[questionId],\n validatedByTeacher: true,\n rating: rating ? QUESTIONS_RATING[rating] : undefined,\n timeSpent: timeSpentOnQuestion,\n };\n\n if (navigationMode === 'ADAPTIVE') {\n if (prevResponses[questionId]?.validatedByTeacher) {\n return prevResponses;\n }\n\n const topicName = question.item_tags_map[QUESTION_TAGS.TRIAL_TOPIC];\n const questionCode = question.item_tags_map[QUESTION_TAGS.QUESTION_CODE];\n const nextQuestionCode =\n questionCode && questionCode.length < 3 ? `${questionCode}${rating}` : 'Q';\n const nextQuestionIndex = questions.findIndex((q, qIndex) => {\n if (qIndex <= questionIndex) return false;\n\n if (nextQuestionCode !== 'Q') {\n return (\n q.item_tags_map[QUESTION_TAGS.TRIAL_TOPIC] === topicName &&\n q.item_tags_map[QUESTION_TAGS.QUESTION_CODE] === nextQuestionCode\n );\n }\n\n return q.item_tags_map[QUESTION_TAGS.TRIAL_TOPIC] !== topicName;\n });\n\n const newResponses = {\n [questionId]: newResponse,\n ...questions.reduce(\n (acc, q, qIndex) => {\n if (qIndex <= questionIndex) return acc;\n\n if (nextQuestionIndex > -1 && qIndex >= nextQuestionIndex) return acc;\n\n acc[q.response_id] = {\n ...getQuestionMetadata(questions, q.response_id),\n ...prevResponses[q.response_id],\n assignStatus: 'skipped',\n };\n\n return acc;\n },\n {} as Record<string, IWorksheetResponse>,\n ),\n };\n const nextQuestionResponseId = questions[nextQuestionIndex]?.response_id;\n\n if (nextQuestionResponseId) {\n onBulkResponsesChange?.({\n ...newResponses,\n [nextQuestionResponseId]: {\n ...prevResponses[nextQuestionResponseId],\n ...getQuestionMetadata(questions, nextQuestionResponseId),\n assignStatus: undefined,\n },\n });\n } else {\n onBulkResponsesChange?.(newResponses);\n }\n\n return {\n ...prevResponses,\n ...newResponses,\n };\n }\n\n if (skipRemainingQuestions) {\n const { item_reference } = question;\n const newResponses = {\n [questionId]: newResponse,\n ...questions.reduce(\n (acc, q) => {\n if (\n q.response_id !== question.response_id &&\n q.item_reference === item_reference &&\n !prevResponses[q.response_id]?.validatedByTeacher\n ) {\n acc[q.response_id] = {\n ...getQuestionMetadata(questions, q.response_id),\n ...prevResponses[q.response_id],\n assignStatus: 'skipped',\n };\n }\n\n return acc;\n },\n {} as Record<string, IWorksheetResponse>,\n ),\n };\n\n onBulkResponsesChange?.({\n ...prevResponses,\n ...newResponses,\n });\n\n return {\n ...prevResponses,\n ...newResponses,\n };\n }\n\n if (navigationMode === 'CURRENT' && question.item_number === 0) {\n onBulkResponsesChange?.({\n ...prevResponses,\n [questionId]: newResponse,\n });\n } else {\n onResponseChange?.({\n responseId: questionId,\n response: newResponse,\n question,\n isNewAttempt: false,\n });\n }\n\n return {\n ...prevResponses,\n [questionId]: newResponse,\n };\n });\n },\n [\n getTimeSpentOnQuestion,\n navigationMode,\n onBulkResponsesChange,\n onResponseChange,\n playNotifSound,\n questions,\n setResponses,\n ],\n );\n\n const assignOptionalItems = useCallback<IWorksheetRef['assignOptionalItems']>(\n itemType => {\n setResponses(prevResponses => {\n const optionalQuestions = questions.filter(q =>\n itemType.startsWith('advanced-')\n ? q.item_type?.startsWith('advanced-')\n : q.item_type === itemType,\n );\n const assignedResponses: Record<string, IWorksheetResponse> = {};\n\n if (optionalQuestions.length > 0) {\n optionalQuestions.forEach(question => {\n assignedResponses[question.response_id] = {\n ...getQuestionMetadata(questions, question.response_id),\n ...prevResponses[question.response_id],\n assignStatus: 'assigned',\n };\n });\n\n onBulkResponsesChange?.(assignedResponses);\n\n return {\n ...prevResponses,\n ...assignedResponses,\n };\n }\n\n return prevResponses;\n });\n },\n [onBulkResponsesChange, questions, setResponses],\n );\n\n const skipOptionalItems = useCallback<IWorksheetRef['skipOptionalItems']>(\n itemType => {\n setResponses(prevResponses => {\n const optionalQuestions = questions.filter(q =>\n itemType.startsWith('advanced-')\n ? q.item_type?.startsWith('advanced-')\n : q.item_type === itemType,\n );\n const skippedResponses: Record<string, IWorksheetResponse> = {};\n const unskippedQuestions: IWorksheetQuestion[] = [];\n\n if (optionalQuestions.length > 0) {\n optionalQuestions.forEach(question => {\n const prevResponse = prevResponses[question.response_id];\n\n if (!prevResponse?.validatedByTeacher) {\n skippedResponses[question.response_id] = {\n ...getQuestionMetadata(questions, question.response_id),\n ...prevResponse,\n assignStatus: 'skipped',\n };\n } else {\n unskippedQuestions.push(question);\n }\n });\n\n const nonIntroUnskippedQuestionsPresent = unskippedQuestions.some(\n ({ instructor_stimulus }) =>\n !(instructor_stimulus === 'SystemIntro' || isConceptIntroWidget(instructor_stimulus)),\n );\n\n if (!nonIntroUnskippedQuestionsPresent) {\n unskippedQuestions.forEach(question => {\n skippedResponses[question.response_id] = {\n ...getQuestionMetadata(questions, question.response_id),\n ...prevResponses[question.response_id],\n assignStatus: 'skipped',\n };\n });\n }\n\n onBulkResponsesChange?.(skippedResponses);\n\n return {\n ...prevResponses,\n ...skippedResponses,\n };\n }\n\n return prevResponses;\n });\n },\n [onBulkResponsesChange, questions, setResponses],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n validateQuestion,\n assignOptionalItems,\n skipOptionalItems,\n }),\n [assignOptionalItems, skipOptionalItems, validateQuestion],\n );\n};\n\nexport default useCreateImperativeHandle;\n"],"names":["useCreateImperativeHandle","ref","behavior","questions","setResponses","onResponseChange","onBulkResponsesChange","getTimeSpentOnQuestion","navigationMode","playNotifSound","useAudioPlayer","TEACHER_VALIDATION_AUDIO_LIST","validateQuestion","useCallback","questionId","rating","skipRemainingQuestions","timeSpentOnQuestion","prevResponses","questionIndex","q","question","newResponse","getQuestionMetadata","QUESTIONS_RATING","_a","topicName","QUESTION_TAGS","questionCode","nextQuestionCode","nextQuestionIndex","qIndex","newResponses","acc","nextQuestionResponseId","_b","item_reference","assignOptionalItems","itemType","optionalQuestions","assignedResponses","skipOptionalItems","skippedResponses","unskippedQuestions","prevResponse","instructor_stimulus","isConceptIntroWidget","useImperativeHandle"],"mappings":"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"}
1
+ {"version":3,"file":"use-create-imperative-handle.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-create-imperative-handle.ts"],"sourcesContent":["import type { Dispatch, ForwardedRef, SetStateAction } from 'react';\n\nimport { useCallback, useImperativeHandle } from 'react';\n\nimport useAudioPlayer from '../../../hooks/use-audio-player';\nimport { TEACHER_VALIDATION_AUDIO_LIST } from '../constants';\nimport { getQuestionMetadata, isConceptIntroWidget } from '../worksheet-helpers';\nimport {\n QUESTION_TAGS,\n QUESTIONS_RATING,\n type IWorksheetBehavior,\n type IWorksheetProps,\n type IWorksheetQuestion,\n type IWorksheetRef,\n type IWorksheetResponse,\n} from '../worksheet-types';\n\ninterface IUseCreateImperativeHandle {\n (\n ref: ForwardedRef<IWorksheetRef>,\n options: {\n behavior: IWorksheetBehavior;\n questions: IWorksheetQuestion[];\n setResponses: Dispatch<SetStateAction<Record<string, IWorksheetResponse>>>;\n onResponseChange: IWorksheetProps['onResponseChange'];\n onBulkResponsesChange: IWorksheetProps['onBulkResponsesChange'];\n getTimeSpentOnQuestion: (questionId: string) => number;\n },\n ): void;\n}\n\nconst useCreateImperativeHandle: IUseCreateImperativeHandle = (\n ref,\n {\n behavior,\n questions,\n setResponses,\n onResponseChange,\n onBulkResponsesChange,\n getTimeSpentOnQuestion,\n },\n) => {\n const { navigationMode } = behavior;\n const playNotifSound = useAudioPlayer(TEACHER_VALIDATION_AUDIO_LIST);\n const validateQuestion = useCallback<IWorksheetRef['validateQuestion']>(\n (questionId, rating, skipRemainingQuestions) => {\n playNotifSound('VALIDATE');\n const timeSpentOnQuestion = getTimeSpentOnQuestion(questionId);\n\n setResponses(prevResponses => {\n const questionIndex = questions.findIndex(q => q.response_id === questionId);\n const question = questions[questionIndex]!;\n\n const newResponse = {\n ...getQuestionMetadata(questions, questionId),\n ...prevResponses[questionId],\n validatedByTeacher: true,\n rating: rating ? QUESTIONS_RATING[rating] : undefined,\n timeSpent: timeSpentOnQuestion,\n };\n\n if (navigationMode === 'ADAPTIVE') {\n if (prevResponses[questionId]?.validatedByTeacher) {\n return prevResponses;\n }\n\n const topicName = question.item_tags_map[QUESTION_TAGS.TRIAL_TOPIC];\n const questionCode = question.item_tags_map[QUESTION_TAGS.QUESTION_CODE];\n const nextQuestionCode =\n questionCode && questionCode.length < 3 ? `${questionCode}${rating}` : 'Q';\n const nextQuestionIndex = questions.findIndex((q, qIndex) => {\n if (qIndex <= questionIndex) return false;\n\n if (nextQuestionCode !== 'Q') {\n return (\n q.item_tags_map[QUESTION_TAGS.TRIAL_TOPIC] === topicName &&\n q.item_tags_map[QUESTION_TAGS.QUESTION_CODE] === nextQuestionCode\n );\n }\n\n return q.item_tags_map[QUESTION_TAGS.TRIAL_TOPIC] !== topicName;\n });\n\n const newResponses = {\n [questionId]: newResponse,\n ...questions.reduce(\n (acc, q, qIndex) => {\n if (qIndex <= questionIndex) return acc;\n\n if (nextQuestionIndex > -1 && qIndex >= nextQuestionIndex) return acc;\n\n acc[q.response_id] = {\n ...getQuestionMetadata(questions, q.response_id),\n ...prevResponses[q.response_id],\n assignStatus: 'skipped',\n };\n\n return acc;\n },\n {} as Record<string, IWorksheetResponse>,\n ),\n };\n const nextQuestionResponseId = questions[nextQuestionIndex]?.response_id;\n\n if (nextQuestionResponseId) {\n onBulkResponsesChange?.({\n ...newResponses,\n [nextQuestionResponseId]: {\n ...prevResponses[nextQuestionResponseId],\n ...getQuestionMetadata(questions, nextQuestionResponseId),\n assignStatus: undefined,\n },\n });\n } else {\n onBulkResponsesChange?.(newResponses);\n }\n\n return {\n ...prevResponses,\n ...newResponses,\n };\n }\n\n if (skipRemainingQuestions) {\n const { item_reference } = question;\n const newResponses = {\n [questionId]: newResponse,\n ...questions.reduce(\n (acc, q) => {\n if (\n q.response_id !== question.response_id &&\n q.item_reference === item_reference &&\n !prevResponses[q.response_id]?.validatedByTeacher\n ) {\n acc[q.response_id] = {\n ...getQuestionMetadata(questions, q.response_id),\n ...prevResponses[q.response_id],\n assignStatus: 'skipped',\n };\n }\n\n return acc;\n },\n {} as Record<string, IWorksheetResponse>,\n ),\n };\n\n onBulkResponsesChange?.({\n ...prevResponses,\n ...newResponses,\n });\n\n return {\n ...prevResponses,\n ...newResponses,\n };\n }\n\n if (navigationMode === 'CURRENT' && question.item_number === 0) {\n onBulkResponsesChange?.({\n ...prevResponses,\n [questionId]: newResponse,\n });\n } else {\n onResponseChange?.({\n responseId: questionId,\n response: newResponse,\n question,\n isNewAttempt: false,\n });\n }\n\n return {\n ...prevResponses,\n [questionId]: newResponse,\n };\n });\n },\n [\n getTimeSpentOnQuestion,\n navigationMode,\n onBulkResponsesChange,\n onResponseChange,\n playNotifSound,\n questions,\n setResponses,\n ],\n );\n\n const assignOptionalItems = useCallback<IWorksheetRef['assignOptionalItems']>(\n itemType => {\n setResponses(prevResponses => {\n const optionalQuestions = questions.filter(q =>\n itemType.startsWith('advanced-')\n ? q.item_type?.startsWith('advanced-')\n : q.item_type === itemType,\n );\n const assignedResponses: Record<string, IWorksheetResponse> = {};\n\n if (optionalQuestions.length > 0) {\n optionalQuestions.forEach(question => {\n assignedResponses[question.response_id] = {\n ...getQuestionMetadata(questions, question.response_id),\n ...prevResponses[question.response_id],\n assignStatus: 'assigned',\n };\n });\n\n onBulkResponsesChange?.(assignedResponses);\n\n return {\n ...prevResponses,\n ...assignedResponses,\n };\n }\n\n return prevResponses;\n });\n },\n [onBulkResponsesChange, questions, setResponses],\n );\n\n const skipOptionalItems = useCallback<IWorksheetRef['skipOptionalItems']>(\n itemType => {\n setResponses(prevResponses => {\n const optionalQuestions = questions.filter(q =>\n itemType.startsWith('advanced-')\n ? q.item_type?.startsWith('advanced-')\n : q.item_type === itemType,\n );\n const skippedResponses: Record<string, IWorksheetResponse> = {};\n const unskippedQuestions: IWorksheetQuestion[] = [];\n\n if (optionalQuestions.length > 0) {\n optionalQuestions.forEach(question => {\n const prevResponse = prevResponses[question.response_id];\n\n if (!prevResponse?.validatedByTeacher) {\n skippedResponses[question.response_id] = {\n ...getQuestionMetadata(questions, question.response_id),\n ...prevResponse,\n assignStatus: 'skipped',\n };\n } else {\n unskippedQuestions.push(question);\n }\n });\n\n const nonIntroUnskippedQuestionsPresent = unskippedQuestions.some(\n ({ instructor_stimulus }) =>\n !(instructor_stimulus === 'SystemIntro' || isConceptIntroWidget(instructor_stimulus)),\n );\n\n if (!nonIntroUnskippedQuestionsPresent) {\n unskippedQuestions.forEach(question => {\n skippedResponses[question.response_id] = {\n ...getQuestionMetadata(questions, question.response_id),\n ...prevResponses[question.response_id],\n assignStatus: 'skipped',\n };\n });\n }\n\n onBulkResponsesChange?.(skippedResponses);\n\n return {\n ...prevResponses,\n ...skippedResponses,\n };\n }\n\n return prevResponses;\n });\n },\n [onBulkResponsesChange, questions, setResponses],\n );\n\n const updateMediaState = useCallback<IWorksheetRef['updateMediaState']>(\n (responseId, mediaType, mediaState) => {\n const key = mediaType === 'SIMULATION' ? 'simState' : undefined;\n\n if (!key) return;\n\n setResponses(prevResponses => {\n const question = questions.find(q => q.response_id === responseId);\n\n if (!question) return prevResponses;\n\n const newResponse = {\n ...getQuestionMetadata(questions, responseId),\n ...prevResponses[responseId],\n [key]: mediaState,\n };\n\n return {\n ...prevResponses,\n [responseId]: newResponse,\n };\n });\n },\n [questions, setResponses],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n validateQuestion,\n assignOptionalItems,\n skipOptionalItems,\n updateMediaState,\n }),\n [assignOptionalItems, skipOptionalItems, updateMediaState, validateQuestion],\n );\n};\n\nexport default useCreateImperativeHandle;\n"],"names":["useCreateImperativeHandle","ref","behavior","questions","setResponses","onResponseChange","onBulkResponsesChange","getTimeSpentOnQuestion","navigationMode","playNotifSound","useAudioPlayer","TEACHER_VALIDATION_AUDIO_LIST","validateQuestion","useCallback","questionId","rating","skipRemainingQuestions","timeSpentOnQuestion","prevResponses","questionIndex","q","question","newResponse","getQuestionMetadata","QUESTIONS_RATING","_a","topicName","QUESTION_TAGS","questionCode","nextQuestionCode","nextQuestionIndex","qIndex","newResponses","acc","nextQuestionResponseId","_b","item_reference","assignOptionalItems","itemType","optionalQuestions","assignedResponses","skipOptionalItems","skippedResponses","unskippedQuestions","prevResponse","instructor_stimulus","isConceptIntroWidget","updateMediaState","responseId","mediaType","mediaState","key","useImperativeHandle"],"mappings":"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"}
@@ -1,71 +1,103 @@
1
- import { jsx as Q } from "react/jsx-runtime";
2
- import { memo as A, useRef as l, useCallback as C, useEffect as f } from "react";
3
- import b from "../hooks/use-learnosity-append.js";
4
- import { LearnosityQuestionContainer as _ } from "./worksheet-question-styled.js";
5
- const g = A(
1
+ import { jsx as S } from "react/jsx-runtime";
2
+ import { memo as g, useRef as I, useCallback as M, useEffect as m } from "react";
3
+ import Q from "../hooks/use-learnosity-append.js";
4
+ import { LearnosityQuestionContainer as $ } from "./worksheet-question-styled.js";
5
+ const D = g(
6
6
  ({
7
7
  signedRequest: R,
8
- appended: s,
9
- canRender: m,
10
- canForceAppend: u,
11
- question: t,
12
- response: r,
13
- learnosity: d,
14
- isConceptIntro: $
8
+ appended: o,
9
+ canRender: E,
10
+ canForceAppend: a,
11
+ question: n,
12
+ response: s,
13
+ learnosity: w,
14
+ isConceptIntro: h,
15
+ simState: u,
16
+ onMediaStateChange: _
15
17
  }) => {
16
- const o = l(null), e = l(r), { forceAppend: p } = b(R), a = C(
17
- (n) => {
18
+ const c = I(null), t = I(s), { forceAppend: p } = Q(R), d = M(
19
+ (e) => {
20
+ const { source: r, data: i } = e, { type: l } = i ?? {};
21
+ l === "SIM_IS_READY" ? r.postMessage(
22
+ {
23
+ type: "SIMULATION_CONFIG",
24
+ payload: {
25
+ userRole: a ? "teacher" : "student",
26
+ simulationState: u
27
+ }
28
+ },
29
+ "*"
30
+ ) : l === "SIM_STATE_UPDATE" && _(n, "SIMULATION", e.data.payload);
31
+ },
32
+ [a, u, _, n]
33
+ ), y = M(
34
+ (e) => {
18
35
  window.requestAnimationFrame(() => {
19
- var h, w, y;
20
- const i = document.createElement("div");
21
- i.classList.add("learnosity-response"), i.classList.add(`question-${t.response_id}`), (w = (h = o.current) == null ? void 0 : h.children[0]) == null || w.querySelectorAll("svg path").forEach((c) => {
22
- c.id = `${c.id} + temp`;
23
- }), (y = o.current) == null || y.append(i), p({
24
- question: t,
25
- response: n,
26
- callback: (c) => {
27
- var E, L;
28
- c || ((L = (E = o.current) == null ? void 0 : E.children[0]) == null || L.remove(), e.current && e.current !== n ? a(e.current) : e.current = void 0);
36
+ var i, l, T;
37
+ const r = document.createElement("div");
38
+ r.classList.add("learnosity-response"), r.classList.add(`question-${n.response_id}`), (l = (i = c.current) == null ? void 0 : i.children[0]) == null || l.querySelectorAll("svg path").forEach((f) => {
39
+ f.id = `${f.id} + temp`;
40
+ }), (T = c.current) == null || T.append(r), p({
41
+ question: n,
42
+ response: e,
43
+ callback: (f) => {
44
+ var v, A;
45
+ f || ((A = (v = c.current) == null ? void 0 : v.children[0]) == null || A.remove(), t.current && t.current !== e ? y(t.current) : t.current = void 0);
29
46
  }
30
47
  });
31
48
  });
32
49
  },
33
- [p, t]
34
- ), v = l(!1);
35
- return f(() => {
36
- let n;
37
- return m && (v.current || (n = window.requestAnimationFrame(() => {
38
- const i = e.current ?? r;
39
- v.current = !0, d.appendQuestion({
40
- questions: [t],
41
- ...i ? {
50
+ [p, n]
51
+ ), L = I(!1);
52
+ return m(() => {
53
+ let e;
54
+ return E && (L.current || (e = window.requestAnimationFrame(() => {
55
+ const r = t.current ?? s;
56
+ L.current = !0, w.appendQuestion({
57
+ questions: [n],
58
+ ...r ? {
42
59
  responses: {
43
- [t.response_id]: {
60
+ [n.response_id]: {
44
61
  // Learnosity is mutating the response object, so we need to clone it
45
- ...i
62
+ ...r
46
63
  }
47
64
  }
48
65
  } : {}
49
66
  });
50
67
  }))), () => {
51
- n && window.cancelAnimationFrame(n);
68
+ e && window.cancelAnimationFrame(e);
52
69
  };
53
- }, [m, d, t, r]), f(() => {
54
- s && (e.current = void 0);
55
- }, [s]), f(() => {
56
- s && r && u && r !== e.current && (e.current ? e.current = r : (e.current = r, a(r)));
57
- }, [s, u, r, a]), /* @__PURE__ */ Q(
58
- _,
70
+ }, [E, w, n, s]), m(() => {
71
+ var e;
72
+ return o && (t.current = void 0, (e = c.current) != null && e.querySelector("iframe") && window.addEventListener("message", d)), () => {
73
+ window.removeEventListener("message", d);
74
+ };
75
+ }, [o, d]), m(() => {
76
+ var e, r;
77
+ if (u && o) {
78
+ const i = (e = c.current) == null ? void 0 : e.querySelector("iframe");
79
+ i && ((r = i.contentWindow) == null || r.postMessage(
80
+ {
81
+ type: "SIM_STATE_UPDATE",
82
+ payload: u
83
+ },
84
+ "*"
85
+ ));
86
+ }
87
+ }, [o, a, u]), m(() => {
88
+ o && s && a && s !== t.current && (t.current ? t.current = s : (t.current = s, y(s)));
89
+ }, [o, a, s, y]), /* @__PURE__ */ S(
90
+ $,
59
91
  {
60
- ref: o,
61
- $isConceptIntro: $,
62
- $isTeacher: u,
63
- children: /* @__PURE__ */ Q("div", { className: `learnosity-response question-${t.response_id}` })
92
+ ref: c,
93
+ $isConceptIntro: h,
94
+ $isTeacher: a,
95
+ children: /* @__PURE__ */ S("div", { className: `learnosity-response question-${n.response_id}` })
64
96
  }
65
97
  );
66
98
  }
67
99
  );
68
100
  export {
69
- g as default
101
+ D as default
70
102
  };
71
103
  //# sourceMappingURL=learnosity-question.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"learnosity-question.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-question/learnosity-question.tsx"],"sourcesContent":["import type { ILearnosityQuestionResponse } from '../worksheet-types';\nimport type { ILearnosityQuestionProps } from './worksheet-question-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useEffect, useRef } from 'react';\n\nimport useLearnosityAppend from '../hooks/use-learnosity-append';\nimport * as Styled from './worksheet-question-styled';\n\nconst LearnosityQuestion: FC<ILearnosityQuestionProps> = memo(\n ({\n signedRequest,\n appended,\n canRender,\n canForceAppend,\n question,\n response,\n learnosity,\n isConceptIntro,\n }) => {\n const containerElementRef = useRef<HTMLDivElement>(null);\n const latestQuestionResponseRef = useRef<ILearnosityQuestionResponse | undefined>(response);\n const { forceAppend } = useLearnosityAppend(signedRequest);\n\n const updateResponse = useCallback(\n (newResponse: ILearnosityQuestionResponse) => {\n window.requestAnimationFrame(() => {\n const questionElement = document.createElement('div');\n\n questionElement.classList.add('learnosity-response');\n questionElement.classList.add(`question-${question.response_id}`);\n // Drawing questions looks for already appended path elements with id, if present it will not append the path, to overcome this issue we are adding temp to the id\n containerElementRef.current?.children[0]?.querySelectorAll('svg path').forEach(path => {\n path.id = `${path.id} + temp`;\n });\n\n containerElementRef.current?.append(questionElement);\n forceAppend({\n question,\n response: newResponse,\n callback: error => {\n if (error) return;\n\n containerElementRef.current?.children[0]?.remove();\n\n if (\n latestQuestionResponseRef.current &&\n latestQuestionResponseRef.current !== newResponse\n )\n updateResponse(latestQuestionResponseRef.current);\n else latestQuestionResponseRef.current = undefined;\n },\n });\n });\n },\n [forceAppend, question],\n );\n\n const appendQuestionCalledRef = useRef(false);\n\n useEffect(() => {\n let requestId: number;\n\n if (canRender) {\n if (!appendQuestionCalledRef.current) {\n requestId = window.requestAnimationFrame(() => {\n const appenndableResponse = latestQuestionResponseRef.current ?? response;\n\n appendQuestionCalledRef.current = true;\n learnosity.appendQuestion({\n questions: [question],\n ...(appenndableResponse\n ? {\n responses: {\n [question.response_id]: {\n // Learnosity is mutating the response object, so we need to clone it\n ...appenndableResponse,\n },\n },\n }\n : {}),\n });\n });\n }\n }\n\n return () => {\n if (requestId) window.cancelAnimationFrame(requestId);\n };\n }, [canRender, learnosity, question, response]);\n\n useEffect(() => {\n if (appended) {\n latestQuestionResponseRef.current = undefined;\n }\n }, [appended]);\n\n useEffect(() => {\n if (appended && response && canForceAppend) {\n if (response !== latestQuestionResponseRef.current) {\n if (!latestQuestionResponseRef.current) {\n latestQuestionResponseRef.current = response;\n updateResponse(response);\n } else {\n latestQuestionResponseRef.current = response;\n }\n }\n }\n }, [appended, canForceAppend, response, updateResponse]);\n\n return (\n <Styled.LearnosityQuestionContainer\n ref={containerElementRef}\n $isConceptIntro={isConceptIntro}\n $isTeacher={canForceAppend}\n >\n <div className={`learnosity-response question-${question.response_id}`} />\n </Styled.LearnosityQuestionContainer>\n );\n },\n);\n\nexport default LearnosityQuestion;\n"],"names":["LearnosityQuestion","memo","signedRequest","appended","canRender","canForceAppend","question","response","learnosity","isConceptIntro","containerElementRef","useRef","latestQuestionResponseRef","forceAppend","useLearnosityAppend","updateResponse","useCallback","newResponse","questionElement","_b","_a","path","_c","error","appendQuestionCalledRef","useEffect","requestId","appenndableResponse","jsx","Styled.LearnosityQuestionContainer"],"mappings":";;;;AASA,MAAMA,IAAmDC;AAAA,EACvD,CAAC;AAAA,IACC,eAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,YAAAC;AAAA,IACA,gBAAAC;AAAA,EAAA,MACI;AACE,UAAAC,IAAsBC,EAAuB,IAAI,GACjDC,IAA4BD,EAAgDJ,CAAQ,GACpF,EAAE,aAAAM,EAAA,IAAgBC,EAAoBZ,CAAa,GAEnDa,IAAiBC;AAAA,MACrB,CAACC,MAA6C;AAC5C,eAAO,sBAAsB,MAAM;;AAC3B,gBAAAC,IAAkB,SAAS,cAAc,KAAK;AAEpC,UAAAA,EAAA,UAAU,IAAI,qBAAqB,GACnDA,EAAgB,UAAU,IAAI,YAAYZ,EAAS,WAAW,EAAE,IAE5Ca,KAAAC,IAAAV,EAAA,YAAA,gBAAAU,EAAS,SAAS,OAAlB,QAAAD,EAAsB,iBAAiB,YAAY,QAAQ,CAAQE,MAAA;AAChF,YAAAA,EAAA,KAAK,GAAGA,EAAK,EAAE;AAAA,UAAA,KAGFC,IAAAZ,EAAA,YAAA,QAAAY,EAAS,OAAOJ,IACxBL,EAAA;AAAA,YACV,UAAAP;AAAA,YACA,UAAUW;AAAA,YACV,UAAU,CAASM,MAAA;;AACjB,cAAIA,OAEJJ,KAAAC,IAAAV,EAAoB,YAApB,gBAAAU,EAA6B,SAAS,OAAtC,QAAAD,EAA0C,UAGxCP,EAA0B,WAC1BA,EAA0B,YAAYK,IAEtCF,EAAeH,EAA0B,OAAO,MACnB,UAAU;AAAA,YAC3C;AAAA,UAAA,CACD;AAAA,QAAA,CACF;AAAA,MACH;AAAA,MACA,CAACC,GAAaP,CAAQ;AAAA,IAAA,GAGlBkB,IAA0Bb,EAAO,EAAK;AAE5C,WAAAc,EAAU,MAAM;AACV,UAAAC;AAEJ,aAAItB,MACGoB,EAAwB,YACfE,IAAA,OAAO,sBAAsB,MAAM;AACvC,cAAAC,IAAsBf,EAA0B,WAAWL;AAEjE,QAAAiB,EAAwB,UAAU,IAClChB,EAAW,eAAe;AAAA,UACxB,WAAW,CAACF,CAAQ;AAAA,UACpB,GAAIqB,IACA;AAAA,YACE,WAAW;AAAA,cACT,CAACrB,EAAS,WAAW,GAAG;AAAA;AAAA,gBAEtB,GAAGqB;AAAA,cACL;AAAA,YACF;AAAA,UAAA,IAEF,CAAC;AAAA,QAAA,CACN;AAAA,MAAA,CACF,KAIE,MAAM;AACP,QAAAD,KAAkB,OAAA,qBAAqBA,CAAS;AAAA,MAAA;AAAA,OAErD,CAACtB,GAAWI,GAAYF,GAAUC,CAAQ,CAAC,GAE9CkB,EAAU,MAAM;AACd,MAAItB,MACFS,EAA0B,UAAU;AAAA,IACtC,GACC,CAACT,CAAQ,CAAC,GAEbsB,EAAU,MAAM;AACV,MAAAtB,KAAYI,KAAYF,KACtBE,MAAaK,EAA0B,YACpCA,EAA0B,UAI7BA,EAA0B,UAAUL,KAHpCK,EAA0B,UAAUL,GACpCQ,EAAeR,CAAQ;AAAA,OAM5B,CAACJ,GAAUE,GAAgBE,GAAUQ,CAAc,CAAC,GAGrD,gBAAAa;AAAA,MAACC;AAAAA,MAAA;AAAA,QACC,KAAKnB;AAAA,QACL,iBAAiBD;AAAA,QACjB,YAAYJ;AAAA,QAEZ,4BAAC,OAAI,EAAA,WAAW,gCAAgCC,EAAS,WAAW,IAAI;AAAA,MAAA;AAAA,IAAA;AAAA,EAG9E;AACF;"}
1
+ {"version":3,"file":"learnosity-question.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-question/learnosity-question.tsx"],"sourcesContent":["import type { ILearnosityQuestionResponse } from '../worksheet-types';\nimport type { ILearnosityQuestionProps } from './worksheet-question-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useEffect, useRef } from 'react';\n\nimport useLearnosityAppend from '../hooks/use-learnosity-append';\nimport * as Styled from './worksheet-question-styled';\n\nconst LearnosityQuestion: FC<ILearnosityQuestionProps> = memo(\n ({\n signedRequest,\n appended,\n canRender,\n canForceAppend,\n question,\n response,\n learnosity,\n isConceptIntro,\n simState,\n onMediaStateChange,\n }) => {\n const containerElementRef = useRef<HTMLDivElement>(null);\n const latestQuestionResponseRef = useRef<ILearnosityQuestionResponse | undefined>(response);\n const { forceAppend } = useLearnosityAppend(signedRequest);\n\n const handleSimIframeMessage = useCallback(\n (event: MessageEvent) => {\n const { source, data } = event;\n const { type } = data ?? ({} as { type: string });\n\n if (type === 'SIM_IS_READY') {\n (source as Window).postMessage(\n {\n type: 'SIMULATION_CONFIG',\n payload: {\n userRole: canForceAppend ? 'teacher' : 'student',\n simulationState: simState,\n },\n },\n '*',\n );\n } else if (type === 'SIM_STATE_UPDATE') {\n onMediaStateChange(question, 'SIMULATION', event.data.payload);\n }\n },\n [canForceAppend, simState, onMediaStateChange, question],\n );\n\n const updateResponse = useCallback(\n (newResponse: ILearnosityQuestionResponse) => {\n window.requestAnimationFrame(() => {\n const questionElement = document.createElement('div');\n\n questionElement.classList.add('learnosity-response');\n questionElement.classList.add(`question-${question.response_id}`);\n // Drawing questions looks for already appended path elements with id, if present it will not append the path, to overcome this issue we are adding temp to the id\n containerElementRef.current?.children[0]?.querySelectorAll('svg path').forEach(path => {\n path.id = `${path.id} + temp`;\n });\n\n containerElementRef.current?.append(questionElement);\n forceAppend({\n question,\n response: newResponse,\n callback: error => {\n if (error) return;\n\n containerElementRef.current?.children[0]?.remove();\n\n if (\n latestQuestionResponseRef.current &&\n latestQuestionResponseRef.current !== newResponse\n )\n updateResponse(latestQuestionResponseRef.current);\n else latestQuestionResponseRef.current = undefined;\n },\n });\n });\n },\n [forceAppend, question],\n );\n\n const appendQuestionCalledRef = useRef(false);\n\n useEffect(() => {\n let requestId: number;\n\n if (canRender) {\n if (!appendQuestionCalledRef.current) {\n requestId = window.requestAnimationFrame(() => {\n const appenndableResponse = latestQuestionResponseRef.current ?? response;\n\n appendQuestionCalledRef.current = true;\n learnosity.appendQuestion({\n questions: [question],\n ...(appenndableResponse\n ? {\n responses: {\n [question.response_id]: {\n // Learnosity is mutating the response object, so we need to clone it\n ...appenndableResponse,\n },\n },\n }\n : {}),\n });\n });\n }\n }\n\n return () => {\n if (requestId) window.cancelAnimationFrame(requestId);\n };\n }, [canRender, learnosity, question, response]);\n\n useEffect(() => {\n if (appended) {\n latestQuestionResponseRef.current = undefined;\n\n if (containerElementRef.current?.querySelector('iframe')) {\n window.addEventListener('message', handleSimIframeMessage);\n }\n }\n\n return () => {\n window.removeEventListener('message', handleSimIframeMessage);\n };\n }, [appended, handleSimIframeMessage]);\n\n useEffect(() => {\n if (simState && appended) {\n const simIframe = containerElementRef.current?.querySelector('iframe');\n\n if (simIframe) {\n simIframe.contentWindow?.postMessage(\n {\n type: 'SIM_STATE_UPDATE',\n payload: simState,\n },\n '*',\n );\n }\n }\n }, [appended, canForceAppend, simState]);\n\n useEffect(() => {\n if (appended && response && canForceAppend) {\n if (response !== latestQuestionResponseRef.current) {\n if (!latestQuestionResponseRef.current) {\n latestQuestionResponseRef.current = response;\n updateResponse(response);\n } else {\n latestQuestionResponseRef.current = response;\n }\n }\n }\n }, [appended, canForceAppend, response, updateResponse]);\n\n return (\n <Styled.LearnosityQuestionContainer\n ref={containerElementRef}\n $isConceptIntro={isConceptIntro}\n $isTeacher={canForceAppend}\n >\n <div className={`learnosity-response question-${question.response_id}`} />\n </Styled.LearnosityQuestionContainer>\n );\n },\n);\n\nexport default LearnosityQuestion;\n"],"names":["LearnosityQuestion","memo","signedRequest","appended","canRender","canForceAppend","question","response","learnosity","isConceptIntro","simState","onMediaStateChange","containerElementRef","useRef","latestQuestionResponseRef","forceAppend","useLearnosityAppend","handleSimIframeMessage","useCallback","event","source","data","type","updateResponse","newResponse","questionElement","_b","_a","path","_c","error","appendQuestionCalledRef","useEffect","requestId","appenndableResponse","simIframe","jsx","Styled.LearnosityQuestionContainer"],"mappings":"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"}